{"version":3,"file":"static/js/main.24e79b03.js","mappings":"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","sources":["../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Prefixer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/react/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@emotion/weak-memoize/dist/weak-memoize.browser.esm.js","../node_modules/@emotion/react/isolated-hoist-non-react-statics-do-not-use-this-in-your-code/dist/emotion-react-isolated-hoist-non-react-statics-do-not-use-this-in-your-code.browser.esm.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.browser.esm.js","../node_modules/@emotion/react/dist/emotion-element-a8309070.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/axios/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/utils.js","../node_modules/classnames/index.js","../node_modules/create-react-class/factory.js","../node_modules/create-react-class/index.js","../node_modules/cross-fetch/dist/browser-ponyfill.js","../node_modules/file-saver/src/FileSaver.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/invariant/browser.js","../node_modules/moment/moment.js","../node_modules/object-assign/index.js","../node_modules/p-cancelable/index.js","../node_modules/prop-types-extra/lib/all.js","../node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-notification-system-redux/lib/actions.js","../node_modules/react-notification-system-redux/lib/const.js","../node_modules/react-notification-system-redux/lib/notifications.js","../node_modules/react-notification-system-redux/lib/reducer.js","../node_modules/react-notification-system-redux/node_modules/react-notification-system/dist/NotificationContainer.js","../node_modules/react-notification-system-redux/node_modules/react-notification-system/dist/NotificationItem.js","../node_modules/react-notification-system-redux/node_modules/react-notification-system/dist/NotificationSystem.js","../node_modules/react-notification-system-redux/node_modules/react-notification-system/dist/constants.js","../node_modules/react-notification-system-redux/node_modules/react-notification-system/dist/helpers.js","../node_modules/react-notification-system-redux/node_modules/react-notification-system/dist/styles.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/index.js","../../../dist/react-responsive.js","../node_modules/react-router/node_modules/isarray/index.js","../node_modules/react-router/node_modules/path-to-regexp/index.js","../node_modules/react-spinners/BeatLoader.js","../node_modules/react-spinners/helpers/colors.js","../node_modules/react-spinners/helpers/index.js","../node_modules/react-spinners/helpers/proptypes.js","../node_modules/react-spinners/helpers/unitConverter.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/redux/es/redux.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/symbol-observable/es/index.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/tiny-emitter/index.js","../node_modules/warning/warning.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../node_modules/redux-thunk/es/index.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/history/esm/history.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/react-router/modules/createNameContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/Prompt.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/withRouter.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/@okta/lib/idx/types/api.ts","../node_modules/@okta/lib/util/console.ts","../node_modules/@okta/lib/util/object.ts","../node_modules/@okta/lib/util/misc.ts","../node_modules/@okta/lib/util/url.ts","../node_modules/@okta/lib/errors/CustomError.ts","../node_modules/@okta/lib/errors/AuthSdkError.ts","../node_modules/@okta/lib/oidc/util/oauth.ts","../node_modules/@okta/lib/oidc/util/oauthMeta.ts","../node_modules/js-cookie/dist/js.cookie.mjs","../node_modules/@okta/lib/oidc/types/Token.ts","../node_modules/@okta/lib/idx/transactionMeta.ts","../node_modules/@okta/lib/util/types.ts","../node_modules/@okta/lib/constants.ts","../node_modules/@okta/lib/errors/AuthApiError.ts","../node_modules/@okta/lib/errors/OAuthError.ts","../node_modules/@okta/lib/http/request.ts","../node_modules/@okta/lib/idx/interact.ts","../node_modules/@okta/lib/idx/idxState/v1/actionParser.ts","../node_modules/@okta/lib/idx/idxState/v1/generateIdxAction.ts","../node_modules/jsonpath-plus/dist/index-browser-esm.js","../node_modules/@okta/lib/idx/idxState/v1/idxResponseParser.ts","../node_modules/@okta/lib/util/jsonpath.ts","../node_modules/@okta/lib/idx/idxState/v1/remediationParser.ts","../node_modules/@okta/lib/idx/idxState/v1/parsers.ts","../node_modules/@okta/lib/idx/idxState/v1/makeIdxState.ts","../node_modules/@okta/lib/idx/idxState/index.ts","../node_modules/@okta/lib/idx/types/idx-js.ts","../node_modules/@okta/lib/idx/introspect.ts","../node_modules/@okta/lib/errors/index.ts","../node_modules/@okta/lib/idx/remediators/util.ts","../node_modules/@okta/lib/idx/authenticator/util.ts","../node_modules/@okta/lib/idx/remediators/Base/Remediator.ts","../node_modules/@okta/lib/idx/remediators/GenericRemediator/util.ts","../node_modules/@okta/lib/idx/remediators/GenericRemediator/GenericRemediator.ts","../node_modules/@okta/lib/idx/util.ts","../node_modules/@okta/lib/idx/remediate.ts","../node_modules/@okta/lib/idx/run.ts","../node_modules/@okta/lib/idx/authenticate.ts","../node_modules/@okta/lib/idx/authenticator/Authenticator.ts","../node_modules/@okta/lib/idx/authenticator/VerificationCodeAuthenticator.ts","../node_modules/@okta/lib/idx/authenticator/OktaVerifyTotp.ts","../node_modules/@okta/lib/idx/authenticator/OktaPassword.ts","../node_modules/@okta/lib/idx/authenticator/SecurityQuestionEnrollment.ts","../node_modules/@okta/lib/idx/authenticator/SecurityQuestionVerification.ts","../node_modules/@okta/lib/idx/authenticator/WebauthnEnrollment.ts","../node_modules/@okta/lib/idx/authenticator/WebauthnVerification.ts","../node_modules/@okta/lib/idx/remediators/Base/VerifyAuthenticator.ts","../node_modules/@okta/lib/idx/authenticator/getAuthenticator.ts","../node_modules/@okta/lib/idx/remediators/EnrollAuthenticator.ts","../node_modules/@okta/lib/idx/remediators/EnrollPoll.ts","../node_modules/@okta/lib/idx/remediators/SelectEnrollmentChannel.ts","../node_modules/@okta/lib/idx/remediators/EnrollmentChannelData.ts","../node_modules/@okta/lib/idx/remediators/ChallengeAuthenticator.ts","../node_modules/@okta/lib/idx/remediators/ChallengePoll.ts","../node_modules/@okta/lib/idx/remediators/ResetAuthenticator.ts","../node_modules/@okta/lib/idx/remediators/EnrollProfile.ts","../node_modules/@okta/lib/idx/remediators/Identify.ts","../node_modules/@okta/lib/idx/remediators/ReEnrollAuthenticator.ts","../node_modules/@okta/lib/idx/remediators/ReEnrollAuthenticatorWarning.ts","../node_modules/@okta/lib/idx/remediators/RedirectIdp.ts","../node_modules/@okta/lib/idx/remediators/Base/SelectAuthenticator.ts","../node_modules/@okta/lib/idx/remediators/SelectAuthenticatorAuthenticate.ts","../node_modules/@okta/lib/idx/remediators/SelectAuthenticatorEnroll.ts","../node_modules/@okta/lib/idx/remediators/SelectAuthenticatorUnlockAccount.ts","../node_modules/@okta/lib/idx/remediators/SelectEnrollProfile.ts","../node_modules/@okta/lib/idx/remediators/Base/AuthenticatorData.ts","../node_modules/@okta/lib/idx/remediators/AuthenticatorVerificationData.ts","../node_modules/@okta/lib/idx/remediators/AuthenticatorEnrollmentData.ts","../node_modules/@okta/lib/idx/remediators/Skip.ts","../node_modules/@okta/lib/idx/flow/AuthenticationFlow.ts","../node_modules/@okta/lib/idx/flow/PasswordRecoveryFlow.ts","../node_modules/@okta/lib/idx/flow/RegistrationFlow.ts","../node_modules/@okta/lib/idx/flow/AccountUnlockFlow.ts","../node_modules/@okta/lib/idx/flow/FlowSpecification.ts","../node_modules/@okta/lib/idx/cancel.ts","../node_modules/@okta/lib/oidc/util/urlParams.ts","../node_modules/@okta/lib/idx/emailVerify.ts","../node_modules/@okta/lib/idx/proceed.ts","../node_modules/@okta/lib/idx/poll.ts","../node_modules/@okta/lib/idx/startTransaction.ts","../node_modules/@okta/lib/idx/register.ts","../node_modules/@okta/lib/idx/recoverPassword.ts","../node_modules/@okta/lib/idx/handleInteractionCodeRedirect.ts","../node_modules/@okta/lib/idx/unlockAccount.ts","../node_modules/@okta/lib/oidc/util/errors.ts","../node_modules/@okta/lib/oidc/util/loginRedirect.ts","../node_modules/@okta/lib/idx/factory/api.ts","../node_modules/@okta/lib/crypto/browser.ts","../node_modules/@okta/lib/features.ts","../node_modules/@okta/lib/http/OktaUserAgent.ts","../node_modules/@okta/lib/http/headers.ts","../node_modules/@okta/lib/crypto/base64.ts","../node_modules/@okta/lib/crypto/oidcHash.ts","../node_modules/@okta/lib/crypto/verifyToken.ts","../node_modules/@okta/lib/util/PromiseQueue.ts","../node_modules/@okta/lib/oidc/util/pkce.ts","../node_modules/@okta/lib/oidc/decodeToken.ts","../node_modules/@okta/lib/oidc/util/defaultTokenParams.ts","../node_modules/@okta/lib/oidc/endpoints/token.ts","../node_modules/@okta/lib/oidc/endpoints/well-known.ts","../node_modules/@okta/lib/oidc/verifyToken.ts","../node_modules/@okta/lib/oidc/util/validateClaims.ts","../node_modules/@okta/lib/oidc/handleOAuthResponse.ts","../node_modules/@okta/lib/oidc/exchangeCodeForTokens.ts","../node_modules/@okta/lib/oidc/util/browser.ts","../node_modules/@okta/lib/oidc/util/prepareTokenParams.ts","../node_modules/@okta/lib/oidc/endpoints/authorize.ts","../node_modules/@okta/lib/oidc/getToken.ts","../node_modules/@okta/lib/oidc/getWithoutPrompt.ts","../node_modules/@okta/lib/oidc/getWithPopup.ts","../node_modules/@okta/lib/oidc/getWithRedirect.ts","../node_modules/@okta/lib/oidc/parseFromUrl.ts","../node_modules/@okta/lib/oidc/renewTokensWithRefresh.ts","../node_modules/@okta/lib/oidc/util/refreshToken.ts","../node_modules/@okta/lib/oidc/renewToken.ts","../node_modules/@okta/lib/oidc/renewTokens.ts","../node_modules/@okta/lib/oidc/revokeToken.ts","../node_modules/@okta/lib/oidc/introspect.ts","../node_modules/@okta/lib/oidc/util/prepareEnrollAuthenticatorParams.ts","../node_modules/@okta/lib/oidc/util/defaultEnrollAuthenticatorParams.ts","../node_modules/@okta/lib/oidc/enrollAuthenticator.ts","../node_modules/@okta/lib/oidc/util/enrollAuthenticatorMeta.ts","../node_modules/@okta/lib/oidc/factory/api.ts","../node_modules/@okta/lib/oidc/getUserInfo.ts","../node_modules/@okta/lib/oidc/util/validateToken.ts","../node_modules/@okta/lib/clock.ts","../node_modules/@okta/lib/oidc/types/TokenManager.ts","../node_modules/@okta/lib/oidc/TokenManager.ts","../node_modules/@okta/lib/browser/browserStorage.ts","../node_modules/@okta/lib/oidc/mixin/index.ts","../node_modules/@okta/lib/oidc/mixin/browser.ts","../node_modules/@okta/lib/core/AuthStateManager.ts","../node_modules/@okta/lib/services/AutoRenewService.ts","../node_modules/broadcast-channel/dist/esbrowser/util.js","../node_modules/broadcast-channel/dist/esbrowser/methods/native.js","../node_modules/oblivious-set/src/index.ts","../node_modules/broadcast-channel/dist/esbrowser/options.js","../node_modules/broadcast-channel/dist/esbrowser/methods/indexed-db.js","../node_modules/broadcast-channel/dist/esbrowser/methods/localstorage.js","../node_modules/broadcast-channel/dist/esbrowser/methods/simulate.js","../node_modules/broadcast-channel/dist/esbrowser/method-chooser.js","../node_modules/broadcast-channel/dist/esbrowser/broadcast-channel.js","../node_modules/unload/dist/es/index.js","../node_modules/unload/dist/es/node.js","../node_modules/unload/dist/es/browser.js","../node_modules/broadcast-channel/dist/esbrowser/leader-election-util.js","../node_modules/broadcast-channel/dist/esbrowser/leader-election-web-lock.js","../node_modules/broadcast-channel/dist/esbrowser/leader-election.js","../node_modules/@okta/lib/services/SyncStorageService.ts","../node_modules/@okta/lib/services/LeaderElectionService.ts","../node_modules/@okta/lib/services/RenewOnTabActivationService.ts","../node_modules/@okta/lib/core/ServiceManager/browser.ts","../node_modules/@okta/lib/session/api.ts","../node_modules/@okta/lib/session/mixin.ts","../node_modules/@okta/lib/session/factory.ts","../node_modules/@okta/lib/core/factory.ts","../node_modules/@okta/lib/base/factory.ts","../node_modules/@okta/lib/storage/mixin.ts","../node_modules/@okta/lib/http/mixin.ts","../node_modules/@okta/lib/core/mixin.ts","../node_modules/@okta/lib/idx/webauthn.ts","../node_modules/@okta/lib/storage/options/browser.ts","../node_modules/@okta/lib/storage/options/StorageOptionsConstructor.ts","../node_modules/@okta/lib/base/options.ts","../node_modules/@okta/lib/fetch/fetchRequest.ts","../node_modules/@okta/lib/oidc/options/browser.ts","../node_modules/@okta/lib/oidc/options/OAuthOptionsConstructor.ts","../node_modules/@okta/lib/http/options.ts","../node_modules/@okta/lib/storage/SavedObject.ts","../node_modules/@okta/lib/storage/BaseStorageManager.ts","../node_modules/@okta/lib/core/storage.ts","../node_modules/@okta/lib/oidc/storage.ts","../node_modules/@okta/lib/oidc/types/Transaction.ts","../node_modules/@okta/lib/oidc/util/sharedStorage.ts","../node_modules/@okta/lib/oidc/TransactionManager.ts","../node_modules/@okta/lib/myaccount/transactions/Base.ts","../node_modules/@okta/lib/myaccount/request.ts","../node_modules/@okta/lib/myaccount/transactions/ProfileTransaction.ts","../node_modules/@okta/lib/myaccount/transactions/ProfileSchemaTransaction.ts","../node_modules/@okta/lib/myaccount/types.ts","../node_modules/@okta/lib/myaccount/profileApi.ts","../node_modules/@okta/lib/myaccount/transactions/EmailStatusTransaction.ts","../node_modules/@okta/lib/myaccount/transactions/EmailChallengeTransaction.ts","../node_modules/@okta/lib/myaccount/transactions/EmailTransaction.ts","../node_modules/@okta/lib/myaccount/emailApi.ts","../node_modules/@okta/lib/myaccount/transactions/PhoneTransaction.ts","../node_modules/@okta/lib/myaccount/phoneApi.ts","../node_modules/@okta/lib/myaccount/transactions/PasswordTransaction.ts","../node_modules/@okta/lib/myaccount/passwordApi.ts","../node_modules/@okta/lib/authn/util/stateToken.ts","../node_modules/@okta/lib/authn/api.ts","../node_modules/@okta/lib/authn/util/link2fn.ts","../node_modules/@okta/lib/errors/AuthPollStopError.ts","../node_modules/@okta/lib/authn/util/poll.ts","../node_modules/@okta/lib/authn/util/flattenEmbedded.ts","../node_modules/@okta/lib/authn/util/links2fns.ts","../node_modules/@okta/lib/authn/AuthnTransactionImpl.ts","../node_modules/@okta/lib/authn/factory.ts","../node_modules/@okta/lib/browser/fingerprint.ts","../node_modules/@okta/lib/exports/default.ts","../node_modules/@okta/lib/idx/options.ts","../node_modules/@okta/lib/core/options.ts","../node_modules/@okta/lib/idx/storage.ts","../node_modules/@okta/lib/idx/IdxTransactionManager.ts","../node_modules/@okta/lib/idx/factory/OktaAuthIdx.ts","../node_modules/@okta/lib/idx/mixin.ts","../node_modules/@okta/lib/myaccount/mixin.ts","../node_modules/@okta/lib/authn/mixin.ts","../node_modules/compare-versions/index.mjs","../node_modules/@okta/src/OktaError.tsx","../node_modules/@okta/src/Security.tsx","../node_modules/@okta/src/withOktaAuth.tsx","../node_modules/@okta/src/LoginCallback.tsx","../node_modules/@okta/src/SecureRoute.tsx","apis/approvalsApi.js","actions/index.js","actions/profile/profile.action.js","components/HeaderBs.js","components/SideBarBs.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","components/NotificationListBs.js","components/MiddleHeaderBs.js","components/HeaderFilterBs.js","components/Home.js","components/StatsRedirect.js","components/About.js","components/analytics/AnalyticsHeader.js","actions/clickAnalytics.js","../node_modules/chart.js/dist/chunks/helpers.segment.mjs","../node_modules/chart.js/dist/chart.mjs","../node_modules/chart.js/auto/auto.mjs","../node_modules/react-chartjs-2/src/utils.ts","../node_modules/react-chartjs-2/src/chart.tsx","../node_modules/react-chartjs-2/src/typedCharts.tsx","components/analytics/desktopAnalytics/AppClicksBarGraph.js","actions/activityAnalytics.js","components/analytics/desktopAnalytics/ActivityBarGraph.js","actions/analytics/isiAnywhere/averageTimeToApprove.js","components/analytics/allPlatformAnalytics/AvgCompletionGraph.js","actions/analytics/isiAnywhere/mostActiveList.js","components/analytics/desktopAnalytics/ActiveUsersList.js","actions/analytics/isiAnywhere/uniqueUserCounts.js","../node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.esm.js","components/analytics/desktopAnalytics/UniqueUsersCount.js","components/analytics/AnalyticsHome.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useIsomorphicEffect.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useResizeObserver.js","../node_modules/@restart/ui/esm/Button.js","../node_modules/@restart/ui/esm/Anchor.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/react-bootstrap/esm/TransitionWrapper.js","../node_modules/react-bootstrap/esm/safeFindDOMNode.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/dom-helpers/esm/camelize.js","../node_modules/react-bootstrap/esm/createWithBsPrefix.js","../node_modules/react-bootstrap/esm/Alert.js","../node_modules/react-bootstrap/esm/Button.js","../node_modules/react-bootstrap/esm/Feedback.js","../node_modules/react-bootstrap/esm/FormContext.js","../node_modules/react-bootstrap/esm/FormCheckInput.js","../node_modules/react-bootstrap/esm/FormCheckLabel.js","../node_modules/react-bootstrap/esm/FormCheck.js","../node_modules/react-bootstrap/esm/FormControl.js","../node_modules/react-bootstrap/esm/FormFloating.js","../node_modules/react-bootstrap/esm/FormGroup.js","../node_modules/react-bootstrap/esm/Col.js","../node_modules/react-bootstrap/esm/FormLabel.js","../node_modules/react-bootstrap/esm/FormRange.js","../node_modules/react-bootstrap/esm/FormSelect.js","../node_modules/react-bootstrap/esm/FormText.js","../node_modules/react-bootstrap/esm/Switch.js","../node_modules/react-bootstrap/esm/FloatingLabel.js","../node_modules/react-bootstrap/esm/Form.js","../node_modules/react-bootstrap/esm/InputGroupContext.js","../node_modules/react-bootstrap/esm/InputGroup.js","../node_modules/dom-helpers/esm/scrollbarSize.js","../node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/dom-helpers/esm/activeElement.js","../node_modules/dom-helpers/esm/contains.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/@restart/ui/esm/DataKey.js","../node_modules/@restart/ui/esm/ModalManager.js","../node_modules/@restart/ui/esm/getScrollbarWidth.js","../node_modules/@restart/ui/esm/useWaitForDOMRef.js","../node_modules/@restart/ui/esm/Modal.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/usePrevious.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-bootstrap/esm/BootstrapModalManager.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/react-bootstrap/esm/ModalBody.js","../node_modules/react-bootstrap/esm/ModalContext.js","../node_modules/react-bootstrap/esm/ModalDialog.js","../node_modules/react-bootstrap/esm/ModalFooter.js","../node_modules/react-bootstrap/esm/AbstractModalHeader.js","../node_modules/react-bootstrap/esm/ModalHeader.js","../node_modules/react-bootstrap/esm/ModalTitle.js","../node_modules/react-bootstrap/esm/Modal.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","components/shared/SearchInput.jsx","components/admin/user-exception/UserExceptionGrid.js","../node_modules/react-bootstrap/esm/Container.js","../node_modules/react-bootstrap/esm/Row.js","../node_modules/react-bootstrap/esm/PageItem.js","../node_modules/react-bootstrap/esm/Pagination.js","components/shared/Pagination.jsx","styles/index.js","actions/admin/userException.action.js","components/admin/user-exception/UserException.js","components/admin/AdminHeader.js","components/admin/application/application.grid.js","actions/admin/application.action.js","../node_modules/react-bootstrap/esm/CardImg.js","../node_modules/react-bootstrap/esm/CardHeaderContext.js","../node_modules/react-bootstrap/esm/CardHeader.js","../node_modules/react-bootstrap/esm/Card.js","components/admin/application/application.js","components/shared/ToastNotification.js","../node_modules/@react-aria/ssr/dist/packages/@react-aria/ssr/src/SSRProvider.tsx","../node_modules/@restart/ui/esm/TabContext.js","../node_modules/@restart/ui/esm/SelectableContext.js","../node_modules/@restart/ui/esm/NoopTransition.js","../node_modules/@restart/ui/esm/TabPanel.js","../node_modules/@restart/ui/esm/Tabs.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/@restart/ui/esm/NavContext.js","../node_modules/@restart/ui/esm/NavItem.js","../node_modules/@restart/ui/esm/Nav.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../node_modules/react-bootstrap/esm/NavItem.js","../node_modules/react-bootstrap/esm/NavLink.js","../node_modules/react-bootstrap/esm/Nav.js","../node_modules/react-bootstrap/esm/TabContent.js","../node_modules/react-bootstrap/esm/getTabTransitionComponent.js","../node_modules/react-bootstrap/esm/TabPane.js","../node_modules/react-bootstrap/esm/ElementChildren.js","../node_modules/react-bootstrap/esm/Tabs.js","../node_modules/react-bootstrap/esm/TabContainer.js","../node_modules/react-bootstrap/esm/Tab.js","utils/common.js","actions/admin/zoom-logging.action.js","components/admin/zoom-logging/ZoomCleanLogGrid.js","components/admin/zoom-logging/ZoomLogging.js","components/admin/index.js","components/App.js","reducers/admin/userException.reducer.js","reducers/profile/profile.reducer.js","reducers/admin/application.reducer.js","reducers/admin/zoom-logging.reducer.js","reducers/index.js","reducers/approvalsListReducer.js","reducers/userReducer.js","reducers/intPortalReducers/appsListReducer.js","reducers/analyticsReducers/desktopClicksAnalytics.js","reducers/analyticsReducers/desktopActivityAnalytics.js","reducers/analyticsReducers/attaAnalytics.js","reducers/analyticsReducers/mostActiverUsersAnalytics.js","reducers/analyticsReducers/uniqueUserCountsAnaltyics.js","index.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;","function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","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\nfunction _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}\n\nmodule.exports = _asyncToGenerator;","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;","function _iterableToArrayLimit(arr, i) {\n  if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_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;","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;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\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\nmodule.exports = _objectWithoutProperties;","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;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\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 = require(\"regenerator-runtime\");\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  tag.setAttribute('data-s', '');\n  return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n  function StyleSheet(options) {\n    var _this = this;\n\n    this._insertTag = function (tag) {\n      var before;\n\n      if (_this.tags.length === 0) {\n        before = _this.prepend ? _this.container.firstChild : _this.before;\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n\n      _this.container.insertBefore(tag, before);\n\n      _this.tags.push(tag);\n    };\n\n    this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.prepend = options.prepend;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.hydrate = function hydrate(nodes) {\n    nodes.forEach(this._insertTag);\n  };\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      this._insertTag(createStyleElement(this));\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (process.env.NODE_ENV !== 'production') {\n      var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n      if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n        // this would only cause problem in speedy mode\n        // but we don't want enabling speedy to affect the observable behavior\n        // so we report this error at all times\n        console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n      }\n      this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n    }\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-ms-input-placeholder|-moz-read-write|-moz-read-only){/.test(rule)) {\n          console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n\n    if (process.env.NODE_ENV !== 'production') {\n      this._alreadyInsertedOrderInsensitiveRule = false;\n    }\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3)\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} value\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string} type\n * @param {string[]} props\n * @param {object[]} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {string} type\n */\nexport function copy (value, root, type) {\n\treturn node(value, root.root, root.parent, type, root.props, root.children, 0)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\treturn delimiter(type === 34 || type === 39 ? type : character)\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\n","import {IMPORT, COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT} from './Enum.js'\nimport {hash, charat, strlen, indexof, replace} from './Utility.js'\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {string}\n */\nexport function prefix (value, length) {\n\tswitch (hash(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599: case 4855:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t\treturn WEBKIT + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn WEBKIT + value + MOZ + value + MS + value + value\n\t\t// flex, flex-direction\n\t\tcase 6828: case 4268:\n\t\t\treturn WEBKIT + value + MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn WEBKIT + value + MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif (strlen(value) - 1 - length > 6)\n\t\t\t\tswitch (charat(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (charat(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// (s)ticky?\n\t\t\tif (charat(value, length + 1) !== 115)\n\t\t\t\tbreak\n\t\t// display: (flex|inline-flex)\n\t\tcase 6444:\n\t\t\tswitch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n\t\t\t\t// stic(k)y\n\t\t\t\tcase 107:\n\t\t\t\t\treturn replace(value, ':', ':' + WEBKIT) + value\n\t\t\t\t// (inline-)?fl(e)x\n\t\t\t\tcase 101:\n\t\t\t\t\treturn replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value\n\t\t\t}\n\t\t\tbreak\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch (charat(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t}\n\n\t\t\treturn WEBKIT + value + MS + value + value\n\t}\n\n\treturn value\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, trim, from, sizeof, strlen, substr, append, replace} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// \" ' [ (\n\t\t\tcase 34: case 39: case 91: case 40:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset:\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// d m s\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, length, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, identifier, position, stringify, COMMENT, rulesheet, middleware, prefixer, serialize, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar last = function last(arr) {\n  return arr.length ? arr[arr.length - 1] : null;\n};\n\nvar toRules = function toRules(parsed, points) {\n  // pretend we've started with a comma\n  var index = -1;\n  var character = 44;\n\n  do {\n    switch (token(character)) {\n      case 0:\n        // &\\f\n        if (character === 38 && peek() === 12) {\n          // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n          // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n          // and when it should just concatenate the outer and inner selectors\n          // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n          points[index] = 1;\n        }\n\n        parsed[index] += identifier(position - 1);\n        break;\n\n      case 2:\n        parsed[index] += delimit(character);\n        break;\n\n      case 4:\n        // comma\n        if (character === 44) {\n          // colon\n          parsed[++index] = peek() === 58 ? '&\\f' : '';\n          points[index] = parsed[index].length;\n          break;\n        }\n\n      // fallthrough\n\n      default:\n        parsed[index] += from(character);\n    }\n  } while (character = next());\n\n  return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n  return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n  if (element.type !== 'rule' || !element.parent || // .length indicates if this rule contains pseudo or not\n  !element.length) {\n    return;\n  }\n\n  var value = element.value,\n      parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n  while (parent.type !== 'rule') {\n    parent = parent.parent;\n    if (!parent) return;\n  } // short-circuit for the simplest case\n\n\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58\n  /* colon */\n  && !fixedElements.get(parent)) {\n    return;\n  } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n  // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n  if (isImplicitRule) {\n    return;\n  }\n\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel(element) {\n  if (element.type === 'decl') {\n    var value = element.value;\n\n    if ( // charcode for l\n    value.charCodeAt(0) === 108 && // charcode for b\n    value.charCodeAt(2) === 98) {\n      // this ignores label\n      element[\"return\"] = '';\n      element.value = '';\n    }\n  }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n  return !!element && element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n  return function (element, index, children) {\n    if (element.type !== 'rule') return;\n    var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n    if (unsafePseudoClasses && cache.compat !== true) {\n      var prevElement = index > 0 ? children[index - 1] : null;\n\n      if (prevElement && isIgnoringComment(last(prevElement.children))) {\n        return;\n      }\n\n      unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n        console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n      });\n    }\n  };\n};\n\nvar isImportRule = function isImportRule(element) {\n  return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n  for (var i = index - 1; i >= 0; i--) {\n    if (!isImportRule(children[i])) {\n      return true;\n    }\n  }\n\n  return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n  element.type = '';\n  element.value = '';\n  element[\"return\"] = '';\n  element.children = '';\n  element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n  if (!isImportRule(element)) {\n    return;\n  }\n\n  if (element.parent) {\n    console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n    nullifyElement(element);\n  } else if (isPrependedWithRegularRules(index, children)) {\n    console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n    nullifyElement(element);\n  }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n  var key = options.key;\n\n  if (process.env.NODE_ENV !== 'production' && !key) {\n    throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n  }\n\n  if ( key === 'css') {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n    // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n    // note this very very intentionally targets all style elements regardless of the key to ensure\n    // that creating a cache works inside of render of a React component\n\n    Array.prototype.forEach.call(ssrStyles, function (node) {\n      // we want to only move elements which have a space in the data-emotion attribute value\n      // because that indicates that it is an Emotion 11 server-side rendered style elements\n      // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n      // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n      // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n      // will not result in the Emotion 10 styles being destroyed\n      var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n      if (dataEmotionAttribute.indexOf(' ') === -1) {\n        return;\n      }\n      document.head.appendChild(node);\n      node.setAttribute('data-s', '');\n    });\n  }\n\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {}; // $FlowFixMe\n\n  var container;\n  var nodesToHydrate = [];\n\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n    // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n    document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n      var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n      for (var i = 1; i < attrib.length; i++) {\n        inserted[attrib[i]] = true;\n      }\n\n      nodesToHydrate.push(node);\n    });\n  }\n\n  var _insert;\n\n  var omnipresentPlugins = [compat, removeLabel];\n\n  if (process.env.NODE_ENV !== 'production') {\n    omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n      get compat() {\n        return cache.compat;\n      }\n\n    }), incorrectImportAlarm);\n  }\n\n  {\n    var currentSheet;\n    var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n      if (!element.root) {\n        if (element[\"return\"]) {\n          currentSheet.insert(element[\"return\"]);\n        } else if (element.value && element.type !== COMMENT) {\n          // insert empty rule in non-production environments\n          // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n          currentSheet.insert(element.value + \"{}\");\n        }\n      }\n    } : rulesheet(function (rule) {\n      currentSheet.insert(rule);\n    })];\n    var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n    var stylis = function stylis(styles) {\n      return serialize(compile(styles), serializer);\n    };\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      currentSheet = sheet;\n\n      if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n        currentSheet = {\n          insert: function insert(rule) {\n            sheet.insert(rule + serialized.map);\n          }\n        };\n      }\n\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\n  return cache;\n};\n\nexport default createCache;\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (!element.return)\n\t\tswitch (element.type) {\n\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length)\n\t\t\t\tbreak\n\t\t\tcase KEYFRAMES:\n\t\t\t\treturn serialize([copy(replace(element.value, '@', '@' + WEBKIT), element, '')], callback)\n\t\t\tcase RULESET:\n\t\t\t\tif (element.length)\n\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\treturn serialize([copy(replace(value, /:(read-\\w+)/, ':' + MOZ + '$1'), element, '')], callback)\n\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\tcopy(replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1'), element, ''),\n\t\t\t\t\t\t\t\t\tcopy(replace(value, /:(plac\\w+)/, ':' + MOZ + '$1'), element, ''),\n\t\t\t\t\t\t\t\t\tcopy(replace(value, /:(plac\\w+)/, MS + 'input-$1'), element, '')\n\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn ''\n\t\t\t\t\t})\n\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","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}","var weakMemoize = function weakMemoize(func) {\n  // $FlowFixMe flow doesn't include all non-primitive types as allowed for weakmaps\n  var cache = new WeakMap();\n  return function (arg) {\n    if (cache.has(arg)) {\n      // $FlowFixMe\n      return cache.get(arg);\n    }\n\n    var ret = func(arg);\n    cache.set(arg, ret);\n    return ret;\n  };\n};\n\nexport default weakMemoize;\n","import hoistNonReactStatics$1 from 'hoist-non-react-statics';\n\n// this file isolates this package that is not tree-shakeable\n// and if this module doesn't actually contain any logic of its own\n// then Rollup just use 'hoist-non-react-statics' directly in other chunks\n\nvar hoistNonReactStatics = (function (targetComponent, sourceComponent) {\n  return hoistNonReactStatics$1(targetComponent, sourceComponent);\n});\n\nexport default hoistNonReactStatics;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className] + \";\");\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false ) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(attr|counters?|url|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n  var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g;\n  var hyphenatedCache = {};\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result);\n        } else if (process.env.NODE_ENV !== 'production') {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (process.env.NODE_ENV !== 'production') {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n  return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n          throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings);\n  } else {\n    if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i]);\n\n    if (stringMode) {\n      if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (process.env.NODE_ENV !== 'production') {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\nexport { serializeStyles };\n","function memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;\n","import { createContext, forwardRef, useContext, createElement } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../isolated-hoist-non-react-statics-do-not-use-this-in-your-code/dist/emotion-react-isolated-hoist-non-react-statics-do-not-use-this-in-your-code.browser.esm.js';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n  key: 'css'\n}) : null);\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n  // $FlowFixMe\n  return /*#__PURE__*/forwardRef(function (props, ref) {\n    // the cache will never be null in the browser\n    var cache = useContext(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\n\nvar ThemeContext = /* #__PURE__ */createContext({});\nvar useTheme = function useTheme() {\n  return useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n  if (typeof theme === 'function') {\n    var mergedTheme = theme(outerTheme);\n\n    if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n      throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n    }\n\n    return mergedTheme;\n  }\n\n  if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n    throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n  }\n\n  return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n  return weakMemoize(function (theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n  var theme = useContext(ThemeContext);\n\n  if (props.theme !== theme) {\n    theme = createCacheWithTheme(theme)(props.theme);\n  }\n\n  return /*#__PURE__*/createElement(ThemeContext.Provider, {\n    value: theme\n  }, props.children);\n};\nfunction withTheme(Component) {\n  var componentName = Component.displayName || Component.name || 'Component';\n\n  var render = function render(props, ref) {\n    var theme = useContext(ThemeContext);\n    return /*#__PURE__*/createElement(Component, _extends({\n      theme: theme,\n      ref: ref\n    }, props));\n  }; // $FlowFixMe\n\n\n  var WithTheme = /*#__PURE__*/forwardRef(render);\n  WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n  return hoistNonReactStatics(WithTheme, Component);\n}\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n  if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n  }\n\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[typePropName] = type;\n\n  if (process.env.NODE_ENV !== 'production') {\n    var error = new Error();\n\n    if (error.stack) {\n      // chrome\n      var match = error.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z0-9$]+) /);\n\n      if (!match) {\n        // safari and firefox\n        match = error.stack.match(/.*\\n([A-Z][A-Za-z0-9$]+)@/);\n      }\n\n      if (match) {\n        newProps[labelPropName] = sanitizeIdentifier(match[1]);\n      }\n    }\n  }\n\n  return newProps;\n};\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var type = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles, undefined, typeof cssProp === 'function' || Array.isArray(cssProp) ? useContext(ThemeContext) : undefined);\n\n  if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  var rules = insertStyles(cache, serialized, typeof type === 'string');\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  var ele = /*#__PURE__*/createElement(type, newProps);\n\n  return ele;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, useTheme as u, withEmotionCache as w };\n","import { createElement, useContext, useRef, useLayoutEffect } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-a8309070.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-a8309070.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../isolated-hoist-non-react-statics-do-not-use-this-in-your-code/dist/emotion-react-isolated-hoist-non-react-statics-do-not-use-this-in-your-code.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.4.0\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.cjs.js\": \"./dist/emotion-react.browser.cjs.js\",\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"isolated-hoist-non-react-statics-do-not-use-this-in-your-code\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.js\",\n\t\t\"macro.d.ts\",\n\t\t\"macro.js.flow\"\n\t],\n\tsideEffects: false,\n\tauthor: \"mitchellhamilton <mitchell@mitchellhamilton.me>\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.13.10\",\n\t\t\"@emotion/cache\": \"^11.4.0\",\n\t\t\"@emotion/serialize\": \"^1.0.2\",\n\t\t\"@emotion/sheet\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.0.0\",\n\t\t\"@emotion/weak-memoize\": \"^0.2.5\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\t\"@babel/core\": \"^7.0.0\",\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@babel/core\": {\n\t\t\toptional: true\n\t\t},\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@babel/core\": \"^7.13.10\",\n\t\t\"@emotion/css\": \"11.1.3\",\n\t\t\"@emotion/css-prettifier\": \"1.0.0\",\n\t\t\"@emotion/server\": \"11.4.0\",\n\t\t\"@emotion/styled\": \"11.3.0\",\n\t\t\"@types/react\": \"^16.9.11\",\n\t\tdtslint: \"^0.3.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./isolated-hoist-non-react-statics-do-not-use-this-in-your-code.js\"\n\t\t],\n\t\tumdName: \"emotionReact\"\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n  var serialized = serializeStyles([styles], undefined, typeof styles === 'function' || Array.isArray(styles) ? useContext(ThemeContext) : undefined);\n  // but it is based on a constant that will never change at runtime\n  // it's effectively like having two implementations and switching them out\n  // so it's not actually breaking anything\n\n\n  var sheetRef = useRef();\n  useLayoutEffect(function () {\n    var key = cache.key + \"-global\";\n    var sheet = new StyleSheet({\n      key: key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    });\n    var rehydrating = false; // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n\n    if (node !== null) {\n      rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n      node.setAttribute('data-emotion', key);\n      sheet.hydrate([node]);\n    }\n\n    sheetRef.current = [sheet, rehydrating];\n    return function () {\n      sheet.flush();\n    };\n  }, [cache]);\n  useLayoutEffect(function () {\n    var sheetRefCurrent = sheetRef.current;\n    var sheet = sheetRefCurrent[0],\n        rehydrating = sheetRefCurrent[1];\n\n    if (rehydrating) {\n      sheetRefCurrent[1] = false;\n      return;\n    }\n\n    if (serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(cache, serialized.next, true);\n    }\n\n    if (sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n              console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.');\n            }\n\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  var hasRendered = false;\n\n  var css = function css() {\n    if (hasRendered && process.env.NODE_ENV !== 'production') {\n      throw new Error('css can only be used during render');\n    }\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var serialized = serializeStyles(args, cache.registered);\n\n    {\n      insertStyles(cache, serialized, false);\n    }\n\n    return cache.key + \"-\" + serialized.name;\n  };\n\n  var cx = function cx() {\n    if (hasRendered && process.env.NODE_ENV !== 'production') {\n      throw new Error('cx can only be used during render');\n    }\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return merge(cache.registered, css, classnames(args));\n  };\n\n  var content = {\n    css: css,\n    cx: cx,\n    theme: useContext(ThemeContext)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n\n  return ele;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  var isBrowser = \"object\" !== 'undefined'; // #1727 for some reason Jest evaluates modules twice if some consuming module gets mocked with jest.mock\n\n  var isJest = typeof jest !== 'undefined';\n\n  if (isBrowser && !isJest) {\n    var globalContext = isBrowser ? window : global;\n    var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n    if (globalContext[globalKey]) {\n      console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n    }\n\n    globalContext[globalKey] = true;\n  }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    var requestData = config.data;\n    var requestHeaders = config.headers;\n    var responseType = config.responseType;\n\n    if (utils.isFormData(requestData)) {\n      delete requestHeaders['Content-Type']; // Let the browser set it\n    }\n\n    var request = new XMLHttpRequest();\n\n    // HTTP basic authentication\n    if (config.auth) {\n      var username = config.auth.username || '';\n      var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n    }\n\n    var fullPath = buildFullPath(config.baseURL, config.url);\n    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    function onloadend() {\n      if (!request) {\n        return;\n      }\n      // Prepare the response\n      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n      var responseData = !responseType || responseType === 'text' ||  responseType === 'json' ?\n        request.responseText : request.response;\n      var response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config: config,\n        request: request\n      };\n\n      settle(resolve, reject, response);\n\n      // Clean up request\n      request = null;\n    }\n\n    if ('onloadend' in request) {\n      // Use onloadend if available\n      request.onloadend = onloadend;\n    } else {\n      // Listen for ready state to emulate onloadend\n      request.onreadystatechange = function handleLoad() {\n        if (!request || request.readyState !== 4) {\n          return;\n        }\n\n        // The request errored out and we didn't get a response, this will be\n        // handled by onerror instead\n        // With one exception: request that using file: protocol, most browsers\n        // will return status as 0 even though it's a successful request\n        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n          return;\n        }\n        // readystate handler is calling before onerror or ontimeout handlers,\n        // so we should call onloadend on the next 'tick'\n        setTimeout(onloadend);\n      };\n    }\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(createError('Network Error', config, null, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n      if (config.timeoutErrorMessage) {\n        timeoutErrorMessage = config.timeoutErrorMessage;\n      }\n      reject(createError(\n        timeoutErrorMessage,\n        config,\n        config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (utils.isStandardBrowserEnv()) {\n      // Add xsrf header\n      var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n        cookies.read(config.xsrfCookieName) :\n        undefined;\n\n      if (xsrfValue) {\n        requestHeaders[config.xsrfHeaderName] = xsrfValue;\n      }\n    }\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n          // Remove Content-Type if data is undefined\n          delete requestHeaders[key];\n        } else {\n          // Otherwise add header to the request\n          request.setRequestHeader(key, val);\n        }\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(config.withCredentials)) {\n      request.withCredentials = !!config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (responseType && responseType !== 'json') {\n      request.responseType = config.responseType;\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', config.onDownloadProgress);\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', config.onUploadProgress);\n    }\n\n    if (config.cancelToken) {\n      // Handle cancellation\n      config.cancelToken.promise.then(function onCanceled(cancel) {\n        if (!request) {\n          return;\n        }\n\n        request.abort();\n        reject(cancel);\n        // Clean up request\n        request = null;\n      });\n    }\n\n    if (!requestData) {\n      requestData = null;\n    }\n\n    // Send the request\n    request.send(requestData);\n  });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  var context = new Axios(defaultConfig);\n  var instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context);\n\n  // Copy context to instance\n  utils.extend(instance, context);\n\n  return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n  return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n  this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n  return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n  if (typeof executor !== 'function') {\n    throw new TypeError('executor must be a function.');\n  }\n\n  var resolvePromise;\n  this.promise = new Promise(function promiseExecutor(resolve) {\n    resolvePromise = resolve;\n  });\n\n  var token = this;\n  executor(function cancel(message) {\n    if (token.reason) {\n      // Cancellation has already been requested\n      return;\n    }\n\n    token.reason = new Cancel(message);\n    resolvePromise(token.reason);\n  });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n  if (this.reason) {\n    throw this.reason;\n  }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n  var cancel;\n  var token = new CancelToken(function executor(c) {\n    cancel = c;\n  });\n  return {\n    token: token,\n    cancel: cancel\n  };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n  this.defaults = instanceConfig;\n  this.interceptors = {\n    request: new InterceptorManager(),\n    response: new InterceptorManager()\n  };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n  /*eslint no-param-reassign:0*/\n  // Allow for axios('example/url'[, config]) a la fetch API\n  if (typeof config === 'string') {\n    config = arguments[1] || {};\n    config.url = arguments[0];\n  } else {\n    config = config || {};\n  }\n\n  config = mergeConfig(this.defaults, config);\n\n  // Set config.method\n  if (config.method) {\n    config.method = config.method.toLowerCase();\n  } else if (this.defaults.method) {\n    config.method = this.defaults.method.toLowerCase();\n  } else {\n    config.method = 'get';\n  }\n\n  var transitional = config.transitional;\n\n  if (transitional !== undefined) {\n    validator.assertOptions(transitional, {\n      silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n      forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n      clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n    }, false);\n  }\n\n  // filter out skipped interceptors\n  var requestInterceptorChain = [];\n  var synchronousRequestInterceptors = true;\n  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n    if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n      return;\n    }\n\n    synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n    requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  var responseInterceptorChain = [];\n  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n    responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  var promise;\n\n  if (!synchronousRequestInterceptors) {\n    var chain = [dispatchRequest, undefined];\n\n    Array.prototype.unshift.apply(chain, requestInterceptorChain);\n    chain = chain.concat(responseInterceptorChain);\n\n    promise = Promise.resolve(config);\n    while (chain.length) {\n      promise = promise.then(chain.shift(), chain.shift());\n    }\n\n    return promise;\n  }\n\n\n  var newConfig = config;\n  while (requestInterceptorChain.length) {\n    var onFulfilled = requestInterceptorChain.shift();\n    var onRejected = requestInterceptorChain.shift();\n    try {\n      newConfig = onFulfilled(newConfig);\n    } catch (error) {\n      onRejected(error);\n      break;\n    }\n  }\n\n  try {\n    promise = dispatchRequest(newConfig);\n  } catch (error) {\n    return Promise.reject(error);\n  }\n\n  while (responseInterceptorChain.length) {\n    promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n  }\n\n  return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n  config = mergeConfig(this.defaults, config);\n  return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method: method,\n      url: url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, data, config) {\n    return this.request(mergeConfig(config || {}, {\n      method: method,\n      url: url,\n      data: data\n    }));\n  };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n  this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n  this.handlers.push({\n    fulfilled: fulfilled,\n    rejected: rejected,\n    synchronous: options ? options.synchronous : false,\n    runWhen: options ? options.runWhen : null\n  });\n  return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n  if (this.handlers[id]) {\n    this.handlers[id] = null;\n  }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n  utils.forEach(this.handlers, function forEachHandler(h) {\n    if (h !== null) {\n      fn(h);\n    }\n  });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n  if (baseURL && !isAbsoluteURL(requestedURL)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n  var error = new Error(message);\n  return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  // Ensure headers exist\n  config.headers = config.headers || {};\n\n  // Transform request data\n  config.data = transformData.call(\n    config,\n    config.data,\n    config.headers,\n    config.transformRequest\n  );\n\n  // Flatten headers\n  config.headers = utils.merge(\n    config.headers.common || {},\n    config.headers[config.method] || {},\n    config.headers\n  );\n\n  utils.forEach(\n    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n    function cleanHeaderConfig(method) {\n      delete config.headers[method];\n    }\n  );\n\n  var adapter = config.adapter || defaults.adapter;\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData.call(\n      config,\n      response.data,\n      response.headers,\n      config.transformResponse\n    );\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData.call(\n          config,\n          reason.response.data,\n          reason.response.headers,\n          config.transformResponse\n        );\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n  error.config = config;\n  if (code) {\n    error.code = code;\n  }\n\n  error.request = request;\n  error.response = response;\n  error.isAxiosError = true;\n\n  error.toJSON = function toJSON() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: this.config,\n      code: this.code\n    };\n  };\n  return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  var config = {};\n\n  var valueFromConfig2Keys = ['url', 'method', 'data'];\n  var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n  var defaultToConfig2Keys = [\n    'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n    'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n    'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n    'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n    'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n  ];\n  var directMergeKeys = ['validateStatus'];\n\n  function getMergedValue(target, source) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge(target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  function mergeDeepProperties(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(config1[prop], config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  }\n\n  utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(undefined, config2[prop]);\n    }\n  });\n\n  utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n  utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n    if (!utils.isUndefined(config2[prop])) {\n      config[prop] = getMergedValue(undefined, config2[prop]);\n    } else if (!utils.isUndefined(config1[prop])) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  });\n\n  utils.forEach(directMergeKeys, function merge(prop) {\n    if (prop in config2) {\n      config[prop] = getMergedValue(config1[prop], config2[prop]);\n    } else if (prop in config1) {\n      config[prop] = getMergedValue(undefined, config1[prop]);\n    }\n  });\n\n  var axiosKeys = valueFromConfig2Keys\n    .concat(mergeDeepPropertiesKeys)\n    .concat(defaultToConfig2Keys)\n    .concat(directMergeKeys);\n\n  var otherKeys = Object\n    .keys(config1)\n    .concat(Object.keys(config2))\n    .filter(function filterAxiosKeys(key) {\n      return axiosKeys.indexOf(key) === -1;\n    });\n\n  utils.forEach(otherKeys, mergeDeepProperties);\n\n  return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(createError(\n      'Request failed with status code ' + response.status,\n      response.config,\n      null,\n      response.request,\n      response\n    ));\n  }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n  var context = this || defaults;\n  /*eslint no-param-reassign:0*/\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(context, data, headers);\n  });\n\n  return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n  'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n    headers['Content-Type'] = value;\n  }\n}\n\nfunction getDefaultAdapter() {\n  var adapter;\n  if (typeof XMLHttpRequest !== 'undefined') {\n    // For browsers use XHR adapter\n    adapter = require('./adapters/xhr');\n  } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n    // For node use HTTP adapter\n    adapter = require('./adapters/http');\n  }\n  return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n  transitional: {\n    silentJSONParsing: true,\n    forcedJSONParsing: true,\n    clarifyTimeoutError: false\n  },\n\n  adapter: getDefaultAdapter(),\n\n  transformRequest: [function transformRequest(data, headers) {\n    normalizeHeaderName(headers, 'Accept');\n    normalizeHeaderName(headers, 'Content-Type');\n\n    if (utils.isFormData(data) ||\n      utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n      return data.toString();\n    }\n    if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n      setContentTypeIfUnset(headers, 'application/json');\n      return stringifySafely(data);\n    }\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    var transitional = this.transitional;\n    var silentJSONParsing = transitional && transitional.silentJSONParsing;\n    var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n    var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n    if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n      try {\n        return JSON.parse(data);\n      } catch (e) {\n        if (strictJSONParsing) {\n          if (e.name === 'SyntaxError') {\n            throw enhanceError(e, this, 'E_JSON_PARSE');\n          }\n          throw e;\n        }\n      }\n    }\n\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  }\n};\n\ndefaults.headers = {\n  common: {\n    'Accept': 'application/json, text/plain, */*'\n  }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n  defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n  return function wrap() {\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n    return fn.apply(thisArg, args);\n  };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n\n  var serializedParams;\n  if (paramsSerializer) {\n    serializedParams = paramsSerializer(params);\n  } else if (utils.isURLSearchParams(params)) {\n    serializedParams = params.toString();\n  } else {\n    var parts = [];\n\n    utils.forEach(params, function serialize(val, key) {\n      if (val === null || typeof val === 'undefined') {\n        return;\n      }\n\n      if (utils.isArray(val)) {\n        key = key + '[]';\n      } else {\n        val = [val];\n      }\n\n      utils.forEach(val, function parseValue(v) {\n        if (utils.isDate(v)) {\n          v = v.toISOString();\n        } else if (utils.isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encode(key) + '=' + encode(v));\n      });\n    });\n\n    serializedParams = parts.join('&');\n  }\n\n  if (serializedParams) {\n    var hashmarkIndex = url.indexOf('#');\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs support document.cookie\n    (function standardBrowserEnv() {\n      return {\n        write: function write(name, value, expires, path, domain, secure) {\n          var cookie = [];\n          cookie.push(name + '=' + encodeURIComponent(value));\n\n          if (utils.isNumber(expires)) {\n            cookie.push('expires=' + new Date(expires).toGMTString());\n          }\n\n          if (utils.isString(path)) {\n            cookie.push('path=' + path);\n          }\n\n          if (utils.isString(domain)) {\n            cookie.push('domain=' + domain);\n          }\n\n          if (secure === true) {\n            cookie.push('secure');\n          }\n\n          document.cookie = cookie.join('; ');\n        },\n\n        read: function read(name) {\n          var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n          return (match ? decodeURIComponent(match[3]) : null);\n        },\n\n        remove: function remove(name) {\n          this.write(name, '', Date.now() - 86400000);\n        }\n      };\n    })() :\n\n  // Non standard browser env (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return {\n        write: function write() {},\n        read: function read() { return null; },\n        remove: function remove() {}\n      };\n    })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n  return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs have full support of the APIs needed to test\n  // whether the request URL is of the same origin as current location.\n    (function standardBrowserEnv() {\n      var msie = /(msie|trident)/i.test(navigator.userAgent);\n      var urlParsingNode = document.createElement('a');\n      var originURL;\n\n      /**\n    * Parse a URL to discover it's components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n      function resolveURL(url) {\n        var href = url;\n\n        if (msie) {\n        // IE needs attribute set twice to normalize properties\n          urlParsingNode.setAttribute('href', href);\n          href = urlParsingNode.href;\n        }\n\n        urlParsingNode.setAttribute('href', href);\n\n        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n        return {\n          href: urlParsingNode.href,\n          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n          host: urlParsingNode.host,\n          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n          hostname: urlParsingNode.hostname,\n          port: urlParsingNode.port,\n          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n            urlParsingNode.pathname :\n            '/' + urlParsingNode.pathname\n        };\n      }\n\n      originURL = resolveURL(window.location.href);\n\n      /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n      return function isURLSameOrigin(requestURL) {\n        var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n        return (parsed.protocol === originURL.protocol &&\n            parsed.host === originURL.host);\n      };\n    })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n    (function nonStandardBrowserEnv() {\n      return function isURLSameOrigin() {\n        return true;\n      };\n    })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n  utils.forEach(headers, function processHeader(value, name) {\n    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n      headers[normalizedName] = value;\n      delete headers[name];\n    }\n  });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n  var parsed = {};\n  var key;\n  var val;\n  var i;\n\n  if (!headers) { return parsed; }\n\n  utils.forEach(headers.split('\\n'), function parser(line) {\n    i = line.indexOf(':');\n    key = utils.trim(line.substr(0, i)).toLowerCase();\n    val = utils.trim(line.substr(i + 1));\n\n    if (key) {\n      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n        return;\n      }\n      if (key === 'set-cookie') {\n        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    }\n  });\n\n  return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n  var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n  var destVer = version.split('.');\n  for (var i = 0; i < 3; i++) {\n    if (pkgVersionArr[i] > destVer[i]) {\n      return true;\n    } else if (pkgVersionArr[i] < destVer[i]) {\n      return false;\n    }\n  }\n  return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  var isDeprecated = version && isOlderVersion(version);\n\n  function formatMessage(opt, desc) {\n    return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n  }\n\n  // eslint-disable-next-line func-names\n  return function(value, opt, opts) {\n    if (validator === false) {\n      throw new Error(formatMessage(opt, ' has been removed in ' + version));\n    }\n\n    if (isDeprecated && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new TypeError('options must be an object');\n  }\n  var keys = Object.keys(options);\n  var i = keys.length;\n  while (i-- > 0) {\n    var opt = keys[i];\n    var validator = schema[opt];\n    if (validator) {\n      var value = options[opt];\n      var result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new TypeError('option ' + opt + ' must be ' + result);\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw Error('Unknown option ' + opt);\n    }\n  }\n}\n\nmodule.exports = {\n  isOlderVersion: isOlderVersion,\n  assertOptions: assertOptions,\n  validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n  return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n  return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n  if (toString.call(val) !== '[object Object]') {\n    return false;\n  }\n\n  var prototype = Object.getPrototypeOf(val);\n  return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n  return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n  return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n  return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n                                           navigator.product === 'NativeScript' ||\n                                           navigator.product === 'NS')) {\n    return false;\n  }\n  return (\n    typeof window !== 'undefined' &&\n    typeof document !== 'undefined'\n  );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (isPlainObject(result[key]) && isPlainObject(val)) {\n      result[key] = merge(result[key], val);\n    } else if (isPlainObject(val)) {\n      result[key] = merge({}, val);\n    } else if (isArray(val)) {\n      result[key] = val.slice();\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isPlainObject: isPlainObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  extend: extend,\n  trim: trim,\n  stripBOM: stripBOM\n};\n","/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\n// -- Inlined from fbjs --\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n  Object.freeze(emptyObject);\n}\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n  validateFormat = function validateFormat(format) {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  };\n}\n\nfunction _invariant(condition, format, a, b, c, d, e, f) {\n  validateFormat(format);\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        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\nvar warning = function(){};\n\nif (process.env.NODE_ENV !== 'production') {\n  var printWarning = function printWarning(format) {\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    var argIndex = 0;\n    var message = 'Warning: ' + format.replace(/%s/g, function () {\n      return args[argIndex++];\n    });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n\n  warning = function warning(condition, format) {\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n\n    if (format.indexOf('Failed Composite propType: ') === 0) {\n      return; // Ignore CompositeComponent proptype check.\n    }\n\n    if (!condition) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n        args[_key2 - 2] = arguments[_key2];\n      }\n\n      printWarning.apply(undefined, [format].concat(args));\n    }\n  };\n}\n\n// /-- Inlined from fbjs --\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n  return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n  ReactPropTypeLocationNames = {\n    prop: 'prop',\n    context: 'context',\n    childContext: 'child context'\n  };\n} else {\n  ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n  /**\n   * Policies that describe methods in `ReactClassInterface`.\n   */\n\n  var injectedMixins = [];\n\n  /**\n   * Composite components are higher-level components that compose other composite\n   * or host components.\n   *\n   * To create a new type of `ReactClass`, pass a specification of\n   * your new class to `React.createClass`. The only requirement of your class\n   * specification is that you implement a `render` method.\n   *\n   *   var MyComponent = React.createClass({\n   *     render: function() {\n   *       return <div>Hello World</div>;\n   *     }\n   *   });\n   *\n   * The class specification supports a specific protocol of methods that have\n   * special meaning (e.g. `render`). See `ReactClassInterface` for\n   * more the comprehensive protocol. Any other properties and methods in the\n   * class specification will be available on the prototype.\n   *\n   * @interface ReactClassInterface\n   * @internal\n   */\n  var ReactClassInterface = {\n    /**\n     * An array of Mixin objects to include when defining your component.\n     *\n     * @type {array}\n     * @optional\n     */\n    mixins: 'DEFINE_MANY',\n\n    /**\n     * An object containing properties and methods that should be defined on\n     * the component's constructor instead of its prototype (static methods).\n     *\n     * @type {object}\n     * @optional\n     */\n    statics: 'DEFINE_MANY',\n\n    /**\n     * Definition of prop types for this component.\n     *\n     * @type {object}\n     * @optional\n     */\n    propTypes: 'DEFINE_MANY',\n\n    /**\n     * Definition of context types for this component.\n     *\n     * @type {object}\n     * @optional\n     */\n    contextTypes: 'DEFINE_MANY',\n\n    /**\n     * Definition of context types this component sets for its children.\n     *\n     * @type {object}\n     * @optional\n     */\n    childContextTypes: 'DEFINE_MANY',\n\n    // ==== Definition methods ====\n\n    /**\n     * Invoked when the component is mounted. Values in the mapping will be set on\n     * `this.props` if that prop is not specified (i.e. using an `in` check).\n     *\n     * This method is invoked before `getInitialState` and therefore cannot rely\n     * on `this.state` or use `this.setState`.\n     *\n     * @return {object}\n     * @optional\n     */\n    getDefaultProps: 'DEFINE_MANY_MERGED',\n\n    /**\n     * Invoked once before the component is mounted. The return value will be used\n     * as the initial value of `this.state`.\n     *\n     *   getInitialState: function() {\n     *     return {\n     *       isOn: false,\n     *       fooBaz: new BazFoo()\n     *     }\n     *   }\n     *\n     * @return {object}\n     * @optional\n     */\n    getInitialState: 'DEFINE_MANY_MERGED',\n\n    /**\n     * @return {object}\n     * @optional\n     */\n    getChildContext: 'DEFINE_MANY_MERGED',\n\n    /**\n     * Uses props from `this.props` and state from `this.state` to render the\n     * structure of the component.\n     *\n     * No guarantees are made about when or how often this method is invoked, so\n     * it must not have side effects.\n     *\n     *   render: function() {\n     *     var name = this.props.name;\n     *     return <div>Hello, {name}!</div>;\n     *   }\n     *\n     * @return {ReactComponent}\n     * @required\n     */\n    render: 'DEFINE_ONCE',\n\n    // ==== Delegate methods ====\n\n    /**\n     * Invoked when the component is initially created and about to be mounted.\n     * This may have side effects, but any external subscriptions or data created\n     * by this method must be cleaned up in `componentWillUnmount`.\n     *\n     * @optional\n     */\n    componentWillMount: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component has been mounted and has a DOM representation.\n     * However, there is no guarantee that the DOM node is in the document.\n     *\n     * Use this as an opportunity to operate on the DOM when the component has\n     * been mounted (initialized and rendered) for the first time.\n     *\n     * @param {DOMElement} rootNode DOM element representing the component.\n     * @optional\n     */\n    componentDidMount: 'DEFINE_MANY',\n\n    /**\n     * Invoked before the component receives new props.\n     *\n     * Use this as an opportunity to react to a prop transition by updating the\n     * state using `this.setState`. Current props are accessed via `this.props`.\n     *\n     *   componentWillReceiveProps: function(nextProps, nextContext) {\n     *     this.setState({\n     *       likesIncreasing: nextProps.likeCount > this.props.likeCount\n     *     });\n     *   }\n     *\n     * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n     * transition may cause a state change, but the opposite is not true. If you\n     * need it, you are probably looking for `componentWillUpdate`.\n     *\n     * @param {object} nextProps\n     * @optional\n     */\n    componentWillReceiveProps: 'DEFINE_MANY',\n\n    /**\n     * Invoked while deciding if the component should be updated as a result of\n     * receiving new props, state and/or context.\n     *\n     * Use this as an opportunity to `return false` when you're certain that the\n     * transition to the new props/state/context will not require a component\n     * update.\n     *\n     *   shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n     *     return !equal(nextProps, this.props) ||\n     *       !equal(nextState, this.state) ||\n     *       !equal(nextContext, this.context);\n     *   }\n     *\n     * @param {object} nextProps\n     * @param {?object} nextState\n     * @param {?object} nextContext\n     * @return {boolean} True if the component should update.\n     * @optional\n     */\n    shouldComponentUpdate: 'DEFINE_ONCE',\n\n    /**\n     * Invoked when the component is about to update due to a transition from\n     * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n     * and `nextContext`.\n     *\n     * Use this as an opportunity to perform preparation before an update occurs.\n     *\n     * NOTE: You **cannot** use `this.setState()` in this method.\n     *\n     * @param {object} nextProps\n     * @param {?object} nextState\n     * @param {?object} nextContext\n     * @param {ReactReconcileTransaction} transaction\n     * @optional\n     */\n    componentWillUpdate: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component's DOM representation has been updated.\n     *\n     * Use this as an opportunity to operate on the DOM when the component has\n     * been updated.\n     *\n     * @param {object} prevProps\n     * @param {?object} prevState\n     * @param {?object} prevContext\n     * @param {DOMElement} rootNode DOM element representing the component.\n     * @optional\n     */\n    componentDidUpdate: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component is about to be removed from its parent and have\n     * its DOM representation destroyed.\n     *\n     * Use this as an opportunity to deallocate any external resources.\n     *\n     * NOTE: There is no `componentDidUnmount` since your component will have been\n     * destroyed by that point.\n     *\n     * @optional\n     */\n    componentWillUnmount: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillMount`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillReceiveProps`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillUpdate`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n    // ==== Advanced methods ====\n\n    /**\n     * Updates the component's currently mounted DOM representation.\n     *\n     * By default, this implements React's rendering and reconciliation algorithm.\n     * Sophisticated clients may wish to override this.\n     *\n     * @param {ReactReconcileTransaction} transaction\n     * @internal\n     * @overridable\n     */\n    updateComponent: 'OVERRIDE_BASE'\n  };\n\n  /**\n   * Similar to ReactClassInterface but for static methods.\n   */\n  var ReactClassStaticInterface = {\n    /**\n     * This method is invoked after a component is instantiated and when it\n     * receives new props. Return an object to update state in response to\n     * prop changes. Return null to indicate no change to state.\n     *\n     * If an object is returned, its keys will be merged into the existing state.\n     *\n     * @return {object || null}\n     * @optional\n     */\n    getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n  };\n\n  /**\n   * Mapping from class specification keys to special processing functions.\n   *\n   * Although these are declared like instance properties in the specification\n   * when defining classes using `React.createClass`, they are actually static\n   * and are accessible on the constructor instead of the prototype. Despite\n   * being static, they must be defined outside of the \"statics\" key under\n   * which all other static methods are defined.\n   */\n  var RESERVED_SPEC_KEYS = {\n    displayName: function(Constructor, displayName) {\n      Constructor.displayName = displayName;\n    },\n    mixins: function(Constructor, mixins) {\n      if (mixins) {\n        for (var i = 0; i < mixins.length; i++) {\n          mixSpecIntoComponent(Constructor, mixins[i]);\n        }\n      }\n    },\n    childContextTypes: function(Constructor, childContextTypes) {\n      if (process.env.NODE_ENV !== 'production') {\n        validateTypeDef(Constructor, childContextTypes, 'childContext');\n      }\n      Constructor.childContextTypes = _assign(\n        {},\n        Constructor.childContextTypes,\n        childContextTypes\n      );\n    },\n    contextTypes: function(Constructor, contextTypes) {\n      if (process.env.NODE_ENV !== 'production') {\n        validateTypeDef(Constructor, contextTypes, 'context');\n      }\n      Constructor.contextTypes = _assign(\n        {},\n        Constructor.contextTypes,\n        contextTypes\n      );\n    },\n    /**\n     * Special case getDefaultProps which should move into statics but requires\n     * automatic merging.\n     */\n    getDefaultProps: function(Constructor, getDefaultProps) {\n      if (Constructor.getDefaultProps) {\n        Constructor.getDefaultProps = createMergedResultFunction(\n          Constructor.getDefaultProps,\n          getDefaultProps\n        );\n      } else {\n        Constructor.getDefaultProps = getDefaultProps;\n      }\n    },\n    propTypes: function(Constructor, propTypes) {\n      if (process.env.NODE_ENV !== 'production') {\n        validateTypeDef(Constructor, propTypes, 'prop');\n      }\n      Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n    },\n    statics: function(Constructor, statics) {\n      mixStaticSpecIntoComponent(Constructor, statics);\n    },\n    autobind: function() {}\n  };\n\n  function validateTypeDef(Constructor, typeDef, location) {\n    for (var propName in typeDef) {\n      if (typeDef.hasOwnProperty(propName)) {\n        // use a warning instead of an _invariant so components\n        // don't show up in prod but only in __DEV__\n        if (process.env.NODE_ENV !== 'production') {\n          warning(\n            typeof typeDef[propName] === 'function',\n            '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n              'React.PropTypes.',\n            Constructor.displayName || 'ReactClass',\n            ReactPropTypeLocationNames[location],\n            propName\n          );\n        }\n      }\n    }\n  }\n\n  function validateMethodOverride(isAlreadyDefined, name) {\n    var specPolicy = ReactClassInterface.hasOwnProperty(name)\n      ? ReactClassInterface[name]\n      : null;\n\n    // Disallow overriding of base class methods unless explicitly allowed.\n    if (ReactClassMixin.hasOwnProperty(name)) {\n      _invariant(\n        specPolicy === 'OVERRIDE_BASE',\n        'ReactClassInterface: You are attempting to override ' +\n          '`%s` from your class specification. Ensure that your method names ' +\n          'do not overlap with React methods.',\n        name\n      );\n    }\n\n    // Disallow defining methods more than once unless explicitly allowed.\n    if (isAlreadyDefined) {\n      _invariant(\n        specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n        'ReactClassInterface: You are attempting to define ' +\n          '`%s` on your component more than once. This conflict may be due ' +\n          'to a mixin.',\n        name\n      );\n    }\n  }\n\n  /**\n   * Mixin helper which handles policy validation and reserved\n   * specification keys when building React classes.\n   */\n  function mixSpecIntoComponent(Constructor, spec) {\n    if (!spec) {\n      if (process.env.NODE_ENV !== 'production') {\n        var typeofSpec = typeof spec;\n        var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n        if (process.env.NODE_ENV !== 'production') {\n          warning(\n            isMixinValid,\n            \"%s: You're attempting to include a mixin that is either null \" +\n              'or not an object. Check the mixins included by the component, ' +\n              'as well as any mixins they include themselves. ' +\n              'Expected object but got %s.',\n            Constructor.displayName || 'ReactClass',\n            spec === null ? null : typeofSpec\n          );\n        }\n      }\n\n      return;\n    }\n\n    _invariant(\n      typeof spec !== 'function',\n      \"ReactClass: You're attempting to \" +\n        'use a component class or function as a mixin. Instead, just use a ' +\n        'regular object.'\n    );\n    _invariant(\n      !isValidElement(spec),\n      \"ReactClass: You're attempting to \" +\n        'use a component as a mixin. Instead, just use a regular object.'\n    );\n\n    var proto = Constructor.prototype;\n    var autoBindPairs = proto.__reactAutoBindPairs;\n\n    // By handling mixins before any other properties, we ensure the same\n    // chaining order is applied to methods with DEFINE_MANY policy, whether\n    // mixins are listed before or after these methods in the spec.\n    if (spec.hasOwnProperty(MIXINS_KEY)) {\n      RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n    }\n\n    for (var name in spec) {\n      if (!spec.hasOwnProperty(name)) {\n        continue;\n      }\n\n      if (name === MIXINS_KEY) {\n        // We have already handled mixins in a special case above.\n        continue;\n      }\n\n      var property = spec[name];\n      var isAlreadyDefined = proto.hasOwnProperty(name);\n      validateMethodOverride(isAlreadyDefined, name);\n\n      if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n        RESERVED_SPEC_KEYS[name](Constructor, property);\n      } else {\n        // Setup methods on prototype:\n        // The following member methods should not be automatically bound:\n        // 1. Expected ReactClass methods (in the \"interface\").\n        // 2. Overridden methods (that were mixed in).\n        var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n        var isFunction = typeof property === 'function';\n        var shouldAutoBind =\n          isFunction &&\n          !isReactClassMethod &&\n          !isAlreadyDefined &&\n          spec.autobind !== false;\n\n        if (shouldAutoBind) {\n          autoBindPairs.push(name, property);\n          proto[name] = property;\n        } else {\n          if (isAlreadyDefined) {\n            var specPolicy = ReactClassInterface[name];\n\n            // These cases should already be caught by validateMethodOverride.\n            _invariant(\n              isReactClassMethod &&\n                (specPolicy === 'DEFINE_MANY_MERGED' ||\n                  specPolicy === 'DEFINE_MANY'),\n              'ReactClass: Unexpected spec policy %s for key %s ' +\n                'when mixing in component specs.',\n              specPolicy,\n              name\n            );\n\n            // For methods which are defined more than once, call the existing\n            // methods before calling the new property, merging if appropriate.\n            if (specPolicy === 'DEFINE_MANY_MERGED') {\n              proto[name] = createMergedResultFunction(proto[name], property);\n            } else if (specPolicy === 'DEFINE_MANY') {\n              proto[name] = createChainedFunction(proto[name], property);\n            }\n          } else {\n            proto[name] = property;\n            if (process.env.NODE_ENV !== 'production') {\n              // Add verbose displayName to the function, which helps when looking\n              // at profiling tools.\n              if (typeof property === 'function' && spec.displayName) {\n                proto[name].displayName = spec.displayName + '_' + name;\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n\n  function mixStaticSpecIntoComponent(Constructor, statics) {\n    if (!statics) {\n      return;\n    }\n\n    for (var name in statics) {\n      var property = statics[name];\n      if (!statics.hasOwnProperty(name)) {\n        continue;\n      }\n\n      var isReserved = name in RESERVED_SPEC_KEYS;\n      _invariant(\n        !isReserved,\n        'ReactClass: You are attempting to define a reserved ' +\n          'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n          'as an instance property instead; it will still be accessible on the ' +\n          'constructor.',\n        name\n      );\n\n      var isAlreadyDefined = name in Constructor;\n      if (isAlreadyDefined) {\n        var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n          ? ReactClassStaticInterface[name]\n          : null;\n\n        _invariant(\n          specPolicy === 'DEFINE_MANY_MERGED',\n          'ReactClass: You are attempting to define ' +\n            '`%s` on your component more than once. This conflict may be ' +\n            'due to a mixin.',\n          name\n        );\n\n        Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n        return;\n      }\n\n      Constructor[name] = property;\n    }\n  }\n\n  /**\n   * Merge two objects, but throw if both contain the same key.\n   *\n   * @param {object} one The first object, which is mutated.\n   * @param {object} two The second object\n   * @return {object} one after it has been mutated to contain everything in two.\n   */\n  function mergeIntoWithNoDuplicateKeys(one, two) {\n    _invariant(\n      one && two && typeof one === 'object' && typeof two === 'object',\n      'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n    );\n\n    for (var key in two) {\n      if (two.hasOwnProperty(key)) {\n        _invariant(\n          one[key] === undefined,\n          'mergeIntoWithNoDuplicateKeys(): ' +\n            'Tried to merge two objects with the same key: `%s`. This conflict ' +\n            'may be due to a mixin; in particular, this may be caused by two ' +\n            'getInitialState() or getDefaultProps() methods returning objects ' +\n            'with clashing keys.',\n          key\n        );\n        one[key] = two[key];\n      }\n    }\n    return one;\n  }\n\n  /**\n   * Creates a function that invokes two functions and merges their return values.\n   *\n   * @param {function} one Function to invoke first.\n   * @param {function} two Function to invoke second.\n   * @return {function} Function that invokes the two argument functions.\n   * @private\n   */\n  function createMergedResultFunction(one, two) {\n    return function mergedResult() {\n      var a = one.apply(this, arguments);\n      var b = two.apply(this, arguments);\n      if (a == null) {\n        return b;\n      } else if (b == null) {\n        return a;\n      }\n      var c = {};\n      mergeIntoWithNoDuplicateKeys(c, a);\n      mergeIntoWithNoDuplicateKeys(c, b);\n      return c;\n    };\n  }\n\n  /**\n   * Creates a function that invokes two functions and ignores their return vales.\n   *\n   * @param {function} one Function to invoke first.\n   * @param {function} two Function to invoke second.\n   * @return {function} Function that invokes the two argument functions.\n   * @private\n   */\n  function createChainedFunction(one, two) {\n    return function chainedFunction() {\n      one.apply(this, arguments);\n      two.apply(this, arguments);\n    };\n  }\n\n  /**\n   * Binds a method to the component.\n   *\n   * @param {object} component Component whose method is going to be bound.\n   * @param {function} method Method to be bound.\n   * @return {function} The bound method.\n   */\n  function bindAutoBindMethod(component, method) {\n    var boundMethod = method.bind(component);\n    if (process.env.NODE_ENV !== 'production') {\n      boundMethod.__reactBoundContext = component;\n      boundMethod.__reactBoundMethod = method;\n      boundMethod.__reactBoundArguments = null;\n      var componentName = component.constructor.displayName;\n      var _bind = boundMethod.bind;\n      boundMethod.bind = function(newThis) {\n        for (\n          var _len = arguments.length,\n            args = Array(_len > 1 ? _len - 1 : 0),\n            _key = 1;\n          _key < _len;\n          _key++\n        ) {\n          args[_key - 1] = arguments[_key];\n        }\n\n        // User is trying to bind() an autobound method; we effectively will\n        // ignore the value of \"this\" that the user is trying to use, so\n        // let's warn.\n        if (newThis !== component && newThis !== null) {\n          if (process.env.NODE_ENV !== 'production') {\n            warning(\n              false,\n              'bind(): React component methods may only be bound to the ' +\n                'component instance. See %s',\n              componentName\n            );\n          }\n        } else if (!args.length) {\n          if (process.env.NODE_ENV !== 'production') {\n            warning(\n              false,\n              'bind(): You are binding a component method to the component. ' +\n                'React does this for you automatically in a high-performance ' +\n                'way, so you can safely remove this call. See %s',\n              componentName\n            );\n          }\n          return boundMethod;\n        }\n        var reboundMethod = _bind.apply(boundMethod, arguments);\n        reboundMethod.__reactBoundContext = component;\n        reboundMethod.__reactBoundMethod = method;\n        reboundMethod.__reactBoundArguments = args;\n        return reboundMethod;\n      };\n    }\n    return boundMethod;\n  }\n\n  /**\n   * Binds all auto-bound methods in a component.\n   *\n   * @param {object} component Component whose method is going to be bound.\n   */\n  function bindAutoBindMethods(component) {\n    var pairs = component.__reactAutoBindPairs;\n    for (var i = 0; i < pairs.length; i += 2) {\n      var autoBindKey = pairs[i];\n      var method = pairs[i + 1];\n      component[autoBindKey] = bindAutoBindMethod(component, method);\n    }\n  }\n\n  var IsMountedPreMixin = {\n    componentDidMount: function() {\n      this.__isMounted = true;\n    }\n  };\n\n  var IsMountedPostMixin = {\n    componentWillUnmount: function() {\n      this.__isMounted = false;\n    }\n  };\n\n  /**\n   * Add more to the ReactClass base class. These are all legacy features and\n   * therefore not already part of the modern ReactComponent.\n   */\n  var ReactClassMixin = {\n    /**\n     * TODO: This will be deprecated because state should always keep a consistent\n     * type signature and the only use case for this, is to avoid that.\n     */\n    replaceState: function(newState, callback) {\n      this.updater.enqueueReplaceState(this, newState, callback);\n    },\n\n    /**\n     * Checks whether or not this composite component is mounted.\n     * @return {boolean} True if mounted, false otherwise.\n     * @protected\n     * @final\n     */\n    isMounted: function() {\n      if (process.env.NODE_ENV !== 'production') {\n        warning(\n          this.__didWarnIsMounted,\n          '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n            'subscriptions and pending requests in componentWillUnmount to ' +\n            'prevent memory leaks.',\n          (this.constructor && this.constructor.displayName) ||\n            this.name ||\n            'Component'\n        );\n        this.__didWarnIsMounted = true;\n      }\n      return !!this.__isMounted;\n    }\n  };\n\n  var ReactClassComponent = function() {};\n  _assign(\n    ReactClassComponent.prototype,\n    ReactComponent.prototype,\n    ReactClassMixin\n  );\n\n  /**\n   * Creates a composite component class given a class specification.\n   * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n   *\n   * @param {object} spec Class specification (which must define `render`).\n   * @return {function} Component constructor function.\n   * @public\n   */\n  function createClass(spec) {\n    // To keep our warnings more understandable, we'll use a little hack here to\n    // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n    // unnecessarily identify a class without displayName as 'Constructor'.\n    var Constructor = identity(function(props, context, updater) {\n      // This constructor gets overridden by mocks. The argument is used\n      // by mocks to assert on what gets mounted.\n\n      if (process.env.NODE_ENV !== 'production') {\n        warning(\n          this instanceof Constructor,\n          'Something is calling a React component directly. Use a factory or ' +\n            'JSX instead. See: https://fb.me/react-legacyfactory'\n        );\n      }\n\n      // Wire up auto-binding\n      if (this.__reactAutoBindPairs.length) {\n        bindAutoBindMethods(this);\n      }\n\n      this.props = props;\n      this.context = context;\n      this.refs = emptyObject;\n      this.updater = updater || ReactNoopUpdateQueue;\n\n      this.state = null;\n\n      // ReactClasses doesn't have constructors. Instead, they use the\n      // getInitialState and componentWillMount methods for initialization.\n\n      var initialState = this.getInitialState ? this.getInitialState() : null;\n      if (process.env.NODE_ENV !== 'production') {\n        // We allow auto-mocks to proceed as if they're returning null.\n        if (\n          initialState === undefined &&\n          this.getInitialState._isMockFunction\n        ) {\n          // This is probably bad practice. Consider warning here and\n          // deprecating this convenience.\n          initialState = null;\n        }\n      }\n      _invariant(\n        typeof initialState === 'object' && !Array.isArray(initialState),\n        '%s.getInitialState(): must return an object or null',\n        Constructor.displayName || 'ReactCompositeComponent'\n      );\n\n      this.state = initialState;\n    });\n    Constructor.prototype = new ReactClassComponent();\n    Constructor.prototype.constructor = Constructor;\n    Constructor.prototype.__reactAutoBindPairs = [];\n\n    injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n    mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n    mixSpecIntoComponent(Constructor, spec);\n    mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n    // Initialize the defaultProps property after all mixins have been merged.\n    if (Constructor.getDefaultProps) {\n      Constructor.defaultProps = Constructor.getDefaultProps();\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      // This is a tag to indicate that the use of these method names is ok,\n      // since it's used with createClass. If it's not, then it's likely a\n      // mistake so we'll warn you to use the static property, property\n      // initializer or constructor respectively.\n      if (Constructor.getDefaultProps) {\n        Constructor.getDefaultProps.isReactClassApproved = {};\n      }\n      if (Constructor.prototype.getInitialState) {\n        Constructor.prototype.getInitialState.isReactClassApproved = {};\n      }\n    }\n\n    _invariant(\n      Constructor.prototype.render,\n      'createClass(...): Class specification must implement a `render` method.'\n    );\n\n    if (process.env.NODE_ENV !== 'production') {\n      warning(\n        !Constructor.prototype.componentShouldUpdate,\n        '%s has a method called ' +\n          'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n          'The name is phrased as a question because the function is ' +\n          'expected to return a value.',\n        spec.displayName || 'A component'\n      );\n      warning(\n        !Constructor.prototype.componentWillRecieveProps,\n        '%s has a method called ' +\n          'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n        spec.displayName || 'A component'\n      );\n      warning(\n        !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n        '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n          'Did you mean UNSAFE_componentWillReceiveProps()?',\n        spec.displayName || 'A component'\n      );\n    }\n\n    // Reduce time spent doing lookups by setting these on the prototype.\n    for (var methodName in ReactClassInterface) {\n      if (!Constructor.prototype[methodName]) {\n        Constructor.prototype[methodName] = null;\n      }\n    }\n\n    return Constructor;\n  }\n\n  return createClass;\n}\n\nmodule.exports = factory;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n  throw Error(\n    'create-react-class could not find the React object. If you are using script tags, ' +\n      'make sure that React is being loaded before create-react-class.'\n  );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n  React.Component,\n  React.isValidElement,\n  ReactNoopUpdateQueue\n);\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n  var support = {\n    searchParams: 'URLSearchParams' in self,\n    iterable: 'Symbol' in self && 'iterator' in Symbol,\n    blob:\n      'FileReader' in self &&\n      'Blob' in self &&\n      (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 = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ];\n\n    var isArrayBufferView =\n      ArrayBuffer.isView ||\n      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    if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n      throw new TypeError('Invalid character in header field name')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value);\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift();\n        return {done: value === undefined, value: value}\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    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      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    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      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);\n        // IE 10-11 can't handle a DataView body.\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        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      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  }\n\n  // HTTP methods whose capitalization should be normalized\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      this.url = input.url;\n      this.credentials = input.credentials;\n      if (!options.headers) {\n        this.headers = new Headers(input.headers);\n      }\n      this.method = input.method;\n      this.mode = input.mode;\n      this.signal = input.signal;\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    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers);\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    this._initBody(body);\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, {body: this._bodyInit})\n  };\n\n  function decode(body) {\n    var form = new FormData();\n    body\n      .trim()\n      .split('&')\n      .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();\n    // 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    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      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    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, {status: 0, statusText: ''});\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, {status: status, headers: {location: url}})\n  };\n\n  exports.DOMException = self.DOMException;\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    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\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source  : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n  ? window : typeof self === 'object' && self.self === self\n  ? self : typeof global === 'object' && global.global === global\n  ? global\n  : this\n\nfunction bom (blob, opts) {\n  if (typeof opts === 'undefined') opts = { autoBom: false }\n  else if (typeof opts !== 'object') {\n    console.warn('Deprecated: Expected third argument to be a object')\n    opts = { autoBom: !opts }\n  }\n\n  // prepend BOM for UTF-8 XML and text/* types (including HTML)\n  // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n  if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n    return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type })\n  }\n  return blob\n}\n\nfunction download (url, name, opts) {\n  var xhr = new XMLHttpRequest()\n  xhr.open('GET', url)\n  xhr.responseType = 'blob'\n  xhr.onload = function () {\n    saveAs(xhr.response, name, opts)\n  }\n  xhr.onerror = function () {\n    console.error('could not download file')\n  }\n  xhr.send()\n}\n\nfunction corsEnabled (url) {\n  var xhr = new XMLHttpRequest()\n  // use sync to avoid popup blocker\n  xhr.open('HEAD', url, false)\n  try {\n    xhr.send()\n  } catch (e) {}\n  return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click (node) {\n  try {\n    node.dispatchEvent(new MouseEvent('click'))\n  } catch (e) {\n    var evt = document.createEvent('MouseEvents')\n    evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n                          20, false, false, false, false, 0, null)\n    node.dispatchEvent(evt)\n  }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = _global.saveAs || (\n  // probably in some web worker\n  (typeof window !== 'object' || window !== _global)\n    ? function saveAs () { /* noop */ }\n\n  // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n  : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n  ? function saveAs (blob, name, opts) {\n    var URL = _global.URL || _global.webkitURL\n    var a = document.createElement('a')\n    name = name || blob.name || 'download'\n\n    a.download = name\n    a.rel = 'noopener' // tabnabbing\n\n    // TODO: detect chrome extensions & packaged apps\n    // a.target = '_blank'\n\n    if (typeof blob === 'string') {\n      // Support regular links\n      a.href = blob\n      if (a.origin !== location.origin) {\n        corsEnabled(a.href)\n          ? download(blob, name, opts)\n          : click(a, a.target = '_blank')\n      } else {\n        click(a)\n      }\n    } else {\n      // Support blobs\n      a.href = URL.createObjectURL(blob)\n      setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s\n      setTimeout(function () { click(a) }, 0)\n    }\n  }\n\n  // Use msSaveOrOpenBlob as a second approach\n  : 'msSaveOrOpenBlob' in navigator\n  ? function saveAs (blob, name, opts) {\n    name = name || blob.name || 'download'\n\n    if (typeof blob === 'string') {\n      if (corsEnabled(blob)) {\n        download(blob, name, opts)\n      } else {\n        var a = document.createElement('a')\n        a.href = blob\n        a.target = '_blank'\n        setTimeout(function () { click(a) })\n      }\n    } else {\n      navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n    }\n  }\n\n  // Fallback to using FileReader and a popup\n  : function saveAs (blob, name, opts, popup) {\n    // Open a popup immediately do go around popup blocker\n    // Mostly only available on user interaction and the fileReader is async so...\n    popup = popup || open('', '_blank')\n    if (popup) {\n      popup.document.title =\n      popup.document.body.innerText = 'downloading...'\n    }\n\n    if (typeof blob === 'string') return download(blob, name, opts)\n\n    var force = blob.type === 'application/octet-stream'\n    var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n    var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n    if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n      // Safari doesn't allow downloading of blob URLs\n      var reader = new FileReader()\n      reader.onloadend = function () {\n        var url = reader.result\n        url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n        if (popup) popup.location.href = url\n        else location = url\n        popup = null // reverse-tabnabbing #460\n      }\n      reader.readAsDataURL(blob)\n    } else {\n      var URL = _global.URL || _global.webkitURL\n      var url = URL.createObjectURL(blob)\n      if (popup) popup.location = url\n      else location.href = url\n      popup = null // reverse-tabnabbing #460\n      setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s\n    }\n  }\n)\n\n_global.saveAs = saveAs.saveAs = saveAs\n\nif (typeof module !== 'undefined') {\n  module.exports = saveAs;\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/**\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","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        var flags = null,\n            parsedParts = false,\n            isNowValid = m._d && !isNaN(m._d.getTime());\n        if (isNowValid) {\n            flags = getParsingFlags(m);\n            parsedParts = some.call(flags.parsedDateParts, function (i) {\n                return i != null;\n            });\n            isNowValid =\n                flags.overflow < 0 &&\n                !flags.empty &&\n                !flags.invalidEra &&\n                !flags.invalidMonth &&\n                !flags.invalidWeekday &&\n                !flags.weekdayMismatch &&\n                !flags.nullInput &&\n                !flags.invalidFormat &&\n                !flags.userInvalidated &&\n                (!flags.meridiem || (flags.meridiem && parsedParts));\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n        }\n        if (Object.isFrozen == null || !Object.isFrozen(m)) {\n            m._isValid = isNowValid;\n        } else {\n            return isNowValid;\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {\n        D: 'date',\n        dates: 'date',\n        date: 'date',\n        d: 'day',\n        days: 'day',\n        day: 'day',\n        e: 'weekday',\n        weekdays: 'weekday',\n        weekday: 'weekday',\n        E: 'isoWeekday',\n        isoweekdays: 'isoWeekday',\n        isoweekday: 'isoWeekday',\n        DDD: 'dayOfYear',\n        dayofyears: 'dayOfYear',\n        dayofyear: 'dayOfYear',\n        h: 'hour',\n        hours: 'hour',\n        hour: 'hour',\n        ms: 'millisecond',\n        milliseconds: 'millisecond',\n        millisecond: 'millisecond',\n        m: 'minute',\n        minutes: 'minute',\n        minute: 'minute',\n        M: 'month',\n        months: 'month',\n        month: 'month',\n        Q: 'quarter',\n        quarters: 'quarter',\n        quarter: 'quarter',\n        s: 'second',\n        seconds: 'second',\n        second: 'second',\n        gg: 'weekYear',\n        weekyears: 'weekYear',\n        weekyear: 'weekYear',\n        GG: 'isoWeekYear',\n        isoweekyears: 'isoWeekYear',\n        isoweekyear: 'isoWeekYear',\n        w: 'week',\n        weeks: 'week',\n        week: 'week',\n        W: 'isoWeek',\n        isoweeks: 'isoWeek',\n        isoweek: 'isoWeek',\n        y: 'year',\n        years: 'year',\n        year: 'year',\n    };\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {\n        date: 9,\n        day: 11,\n        weekday: 11,\n        isoWeekday: 11,\n        dayOfYear: 4,\n        hour: 13,\n        millisecond: 16,\n        minute: 14,\n        month: 8,\n        quarter: 7,\n        second: 15,\n        weekYear: 1,\n        isoWeekYear: 1,\n        week: 5,\n        isoWeek: 5,\n        year: 1,\n    };\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        match1to2NoLeadingZero = /^[1-9]\\d?/, //         1-99\n        match1to2HasZero = /^([1-9]\\d|\\d)/, //           0-99\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        if (!mom.isValid()) {\n            return NaN;\n        }\n\n        var d = mom._d,\n            isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n            case 'Seconds':\n                return isUTC ? d.getUTCSeconds() : d.getSeconds();\n            case 'Minutes':\n                return isUTC ? d.getUTCMinutes() : d.getMinutes();\n            case 'Hours':\n                return isUTC ? d.getUTCHours() : d.getHours();\n            case 'Date':\n                return isUTC ? d.getUTCDate() : d.getDate();\n            case 'Day':\n                return isUTC ? d.getUTCDay() : d.getDay();\n            case 'Month':\n                return isUTC ? d.getUTCMonth() : d.getMonth();\n            case 'FullYear':\n                return isUTC ? d.getUTCFullYear() : d.getFullYear();\n            default:\n                return NaN; // Just in case\n        }\n    }\n\n    function set$1(mom, unit, value) {\n        var d, isUTC, year, month, date;\n\n        if (!mom.isValid() || isNaN(value)) {\n            return;\n        }\n\n        d = mom._d;\n        isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return void (isUTC\n                    ? d.setUTCMilliseconds(value)\n                    : d.setMilliseconds(value));\n            case 'Seconds':\n                return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n            case 'Minutes':\n                return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n            case 'Hours':\n                return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n            case 'Date':\n                return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n            // case 'Day': // Not real\n            //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n            // case 'Month': // Not used because we need to pass two variables\n            //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n            case 'FullYear':\n                break; // See below ...\n            default:\n                return; // Just in case\n        }\n\n        year = value;\n        month = mom.month();\n        date = mom.date();\n        date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n        void (isUTC\n            ? d.setUTCFullYear(year, month, date)\n            : d.setFullYear(year, month, date));\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // PARSING\n\n    addRegexToken('M', match1to2, match1to2NoLeadingZero);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        var month = value,\n            date = mom.date();\n\n        date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n        void (mom._isUTC\n            ? mom._d.setUTCMonth(month, date)\n            : mom._d.setMonth(month, date));\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            shortP,\n            longP;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortP = regexEscape(this.monthsShort(mom, ''));\n            longP = regexEscape(this.months(mom, ''));\n            shortPieces.push(shortP);\n            longPieces.push(longP);\n            mixedPieces.push(longP);\n            mixedPieces.push(shortP);\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // PARSING\n\n    addRegexToken('w', match1to2, match1to2NoLeadingZero);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2, match1to2NoLeadingZero);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n              ? weekdays[m.day()]\n              : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n              ? this._weekdaysShort[m.day()]\n              : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n              ? this._weekdaysMin[m.day()]\n              : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        var day = get(this, 'Day');\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2, match1to2HasZero);\n    addRegexToken('h', match1to2, match1to2NoLeadingZero);\n    addRegexToken('k', match1to2, match1to2NoLeadingZero);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        // Ensure name is available and function returns boolean\n        return !!(name && name.match('^[^/\\\\\\\\]*$'));\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                      ? DATE\n                      : a[HOUR] < 0 ||\n                          a[HOUR] > 24 ||\n                          (a[HOUR] === 24 &&\n                              (a[MINUTE] !== 0 ||\n                                  a[SECOND] !== 0 ||\n                                  a[MILLISECOND] !== 0))\n                        ? HOUR\n                        : a[MINUTE] < 0 || a[MINUTE] > 59\n                          ? MINUTE\n                          : a[SECOND] < 0 || a[SECOND] > 59\n                            ? SECOND\n                            : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                              ? MILLISECOND\n                              : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n              ? 'lastWeek'\n              : diff < 0\n                ? 'lastDay'\n                : diff < 1\n                  ? 'sameDay'\n                  : diff < 2\n                    ? 'nextDay'\n                    : diff < 7\n                      ? 'nextWeek'\n                      : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            erasName,\n            erasAbbr,\n            erasNarrow,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            erasName = regexEscape(eras[i].name);\n            erasAbbr = regexEscape(eras[i].abbr);\n            erasNarrow = regexEscape(eras[i].narrow);\n\n            namePieces.push(erasName);\n            abbrPieces.push(erasAbbr);\n            narrowPieces.push(erasNarrow);\n            mixedPieces.push(erasName);\n            mixedPieces.push(erasAbbr);\n            mixedPieces.push(erasNarrow);\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday() + this.localeData()._week.dow,\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // PARSING\n\n    addRegexToken('D', match1to2, match1to2NoLeadingZero);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // PARSING\n\n    addRegexToken('m', match1to2, match1to2HasZero);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // PARSING\n\n    addRegexToken('s', match1to2, match1to2HasZero);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y'),\n        valueOf$1 = asMilliseconds;\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.30.1';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nclass CancelError extends Error {\n\tconstructor(reason) {\n\t\tsuper(reason || 'Promise was canceled');\n\t\tthis.name = 'CancelError';\n\t}\n\n\tget isCanceled() {\n\t\treturn true;\n\t}\n}\n\nclass PCancelable {\n\tstatic fn(userFn) {\n\t\treturn (...arguments_) => {\n\t\t\treturn new PCancelable((resolve, reject, onCancel) => {\n\t\t\t\targuments_.push(onCancel);\n\t\t\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\t\t\tuserFn(...arguments_).then(resolve, reject);\n\t\t\t});\n\t\t};\n\t}\n\n\tconstructor(executor) {\n\t\tthis._cancelHandlers = [];\n\t\tthis._isPending = true;\n\t\tthis._isCanceled = false;\n\t\tthis._rejectOnCancel = true;\n\n\t\tthis._promise = new Promise((resolve, reject) => {\n\t\t\tthis._reject = reject;\n\n\t\t\tconst onResolve = value => {\n\t\t\t\tif (!this._isCanceled || !onCancel.shouldReject) {\n\t\t\t\t\tthis._isPending = false;\n\t\t\t\t\tresolve(value);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst onReject = error => {\n\t\t\t\tthis._isPending = false;\n\t\t\t\treject(error);\n\t\t\t};\n\n\t\t\tconst onCancel = handler => {\n\t\t\t\tif (!this._isPending) {\n\t\t\t\t\tthrow new Error('The `onCancel` handler was attached after the promise settled.');\n\t\t\t\t}\n\n\t\t\t\tthis._cancelHandlers.push(handler);\n\t\t\t};\n\n\t\t\tObject.defineProperties(onCancel, {\n\t\t\t\tshouldReject: {\n\t\t\t\t\tget: () => this._rejectOnCancel,\n\t\t\t\t\tset: boolean => {\n\t\t\t\t\t\tthis._rejectOnCancel = boolean;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn executor(onResolve, onReject, onCancel);\n\t\t});\n\t}\n\n\tthen(onFulfilled, onRejected) {\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\treturn this._promise.then(onFulfilled, onRejected);\n\t}\n\n\tcatch(onRejected) {\n\t\treturn this._promise.catch(onRejected);\n\t}\n\n\tfinally(onFinally) {\n\t\treturn this._promise.finally(onFinally);\n\t}\n\n\tcancel(reason) {\n\t\tif (!this._isPending || this._isCanceled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isCanceled = true;\n\n\t\tif (this._cancelHandlers.length > 0) {\n\t\t\ttry {\n\t\t\t\tfor (const handler of this._cancelHandlers) {\n\t\t\t\t\thandler();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis._reject(error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this._rejectOnCancel) {\n\t\t\tthis._reject(new CancelError(reason));\n\t\t}\n\t}\n\n\tget isCanceled() {\n\t\treturn this._isCanceled;\n\t}\n}\n\nObject.setPrototypeOf(PCancelable.prototype, Promise.prototype);\n\nmodule.exports = PCancelable;\nmodule.exports.CancelError = CancelError;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction all() {\n  for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n    validators[_key] = arguments[_key];\n  }\n\n  function allPropTypes() {\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    var error = null;\n\n    validators.forEach(function (validator) {\n      if (error != null) {\n        return;\n      }\n\n      var result = validator.apply(undefined, args);\n      if (result != null) {\n        error = result;\n      }\n    });\n\n    return error;\n  }\n\n  return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n  function checkType(isRequired, props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      if (isRequired) {\n        return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n      }\n\n      return null;\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n      args[_key - 6] = arguments[_key];\n    }\n\n    return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n  }\n\n  var chainedCheckType = checkType.bind(null, false);\n  chainedCheckType.isRequired = checkType.bind(null, true);\n\n  return chainedCheckType;\n}\nmodule.exports = exports['default'];","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/** @license React v17.0.1\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(y(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,wa=60108,xa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60121,Ga=60128,Ha=60129,Ia=60130,Ja=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;sa=E(\"react.element\");ta=E(\"react.portal\");ua=E(\"react.fragment\");wa=E(\"react.strict_mode\");xa=E(\"react.profiler\");ya=E(\"react.provider\");za=E(\"react.context\");Aa=E(\"react.forward_ref\");Ba=E(\"react.suspense\");Ca=E(\"react.suspense_list\");Da=E(\"react.memo\");Ea=E(\"react.lazy\");Fa=E(\"react.block\");E(\"react.scope\");Ga=E(\"react.opaque.id\");Ha=E(\"react.debug_trace_mode\");Ia=E(\"react.offscreen\");Ja=E(\"react.legacy_hidden\")}\nvar Ka=\"function\"===typeof Symbol&&Symbol.iterator;function La(a){if(null===a||\"object\"!==typeof a)return null;a=Ka&&a[Ka]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var Ma;function Na(a){if(void 0===Ma)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);Ma=b&&b[1]||\"\"}return\"\\n\"+Ma+a}var Oa=!1;\nfunction Pa(a,b){if(!a||Oa)return\"\";Oa=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(y(91));return m({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(y(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(a,b,c,d,e){return a(b,c,d,e)}function Ib(){}var Jb=Gb,Kb=!1,Lb=!1;function Mb(){if(null!==zb||null!==Ab)Ib(),Fb()}\nfunction Nb(a,b,c){if(Lb)return a(b,c);Lb=!0;try{return Jb(a,b,c)}finally{Lb=!1,Mb()}}\nfunction Ob(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(y(231,b,typeof c));return c}var Pb=!1;if(fa)try{var Qb={};Object.defineProperty(Qb,\"passive\",{get:function(){Pb=!0}});window.addEventListener(\"test\",Qb,Qb);window.removeEventListener(\"test\",Qb,Qb)}catch(a){Pb=!1}function Rb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(n){this.onError(n)}}var Sb=!1,Tb=null,Ub=!1,Vb=null,Wb={onError:function(a){Sb=!0;Tb=a}};function Xb(a,b,c,d,e,f,g,h,k){Sb=!1;Tb=null;Rb.apply(Wb,arguments)}\nfunction Yb(a,b,c,d,e,f,g,h,k){Xb.apply(this,arguments);if(Sb){if(Sb){var l=Tb;Sb=!1;Tb=null}else throw Error(y(198));Ub||(Ub=!0,Vb=l)}}function Zb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function $b(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function ac(a){if(Zb(a)!==a)throw Error(y(188));}\nfunction bc(a){var b=a.alternate;if(!b){b=Zb(a);if(null===b)throw Error(y(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return ac(e),a;if(f===d)return ac(e),b;f=f.sibling}throw Error(y(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(y(189));}}if(c.alternate!==d)throw Error(y(190));}if(3!==c.tag)throw Error(y(188));return c.stateNode.current===c?a:b}function cc(a){a=bc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}var ec,fc,gc,hc,ic=!1,jc=[],kc=null,lc=null,mc=null,nc=new Map,oc=new Map,pc=[],qc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction rc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}function sc(a,b){switch(a){case \"focusin\":case \"focusout\":kc=null;break;case \"dragenter\":case \"dragleave\":lc=null;break;case \"mouseover\":case \"mouseout\":mc=null;break;case \"pointerover\":case \"pointerout\":nc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":oc.delete(b.pointerId)}}\nfunction tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=rc(b,c,d,e,f),null!==b&&(b=Cb(b),null!==b&&fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction uc(a,b,c,d,e){switch(b){case \"focusin\":return kc=tc(kc,a,b,c,d,e),!0;case \"dragenter\":return lc=tc(lc,a,b,c,d,e),!0;case \"mouseover\":return mc=tc(mc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;nc.set(f,tc(nc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,oc.set(f,tc(oc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction vc(a){var b=wc(a.target);if(null!==b){var c=Zb(b);if(null!==c)if(b=c.tag,13===b){if(b=$b(c),null!==b){a.blockedOn=b;hc(a.lanePriority,function(){r.unstable_runWithPriority(a.priority,function(){gc(c)})});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c)return b=Cb(c),null!==b&&fc(b),a.blockedOn=c,!1;b.shift()}return!0}function zc(a,b,c){xc(a)&&c.delete(b)}\nfunction Ac(){for(ic=!1;0<jc.length;){var a=jc[0];if(null!==a.blockedOn){a=Cb(a.blockedOn);null!==a&&ec(a);break}for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&jc.shift()}null!==kc&&xc(kc)&&(kc=null);null!==lc&&xc(lc)&&(lc=null);null!==mc&&xc(mc)&&(mc=null);nc.forEach(zc);oc.forEach(zc)}\nfunction Bc(a,b){a.blockedOn===b&&(a.blockedOn=null,ic||(ic=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Ac)))}\nfunction Cc(a){function b(b){return Bc(b,a)}if(0<jc.length){Bc(jc[0],a);for(var c=1;c<jc.length;c++){var d=jc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==kc&&Bc(kc,a);null!==lc&&Bc(lc,a);null!==mc&&Bc(mc,a);nc.forEach(b);oc.forEach(b);for(c=0;c<pc.length;c++)d=pc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<pc.length&&(c=pc[0],null===c.blockedOn);)vc(c),null===c.blockedOn&&pc.shift()}\nfunction Dc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ec={animationend:Dc(\"Animation\",\"AnimationEnd\"),animationiteration:Dc(\"Animation\",\"AnimationIteration\"),animationstart:Dc(\"Animation\",\"AnimationStart\"),transitionend:Dc(\"Transition\",\"TransitionEnd\")},Fc={},Gc={};\nfa&&(Gc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ec.animationend.animation,delete Ec.animationiteration.animation,delete Ec.animationstart.animation),\"TransitionEvent\"in window||delete Ec.transitionend.transition);function Hc(a){if(Fc[a])return Fc[a];if(!Ec[a])return a;var b=Ec[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Gc)return Fc[a]=b[c];return a}\nvar Ic=Hc(\"animationend\"),Jc=Hc(\"animationiteration\"),Kc=Hc(\"animationstart\"),Lc=Hc(\"transitionend\"),Mc=new Map,Nc=new Map,Oc=[\"abort\",\"abort\",Ic,\"animationEnd\",Jc,\"animationIteration\",Kc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Lc,\"transitionEnd\",\"waiting\",\"waiting\"];function Pc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Nc.set(d,b);Mc.set(d,e);da(e,[d])}}var Qc=r.unstable_now;Qc();var F=8;\nfunction Rc(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function Sc(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function Tc(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(y(358,a));}}\nfunction Uc(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=Rc(k),e=F):(h&=f,0!==h&&(d=Rc(h),e=F))}else f=c&~g,0!==f?(d=Rc(f),e=F):0!==h&&(d=Rc(h),e=F);if(0===d)return 0;d=31-Vc(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){Rc(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-Vc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction Wc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Xc(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=Yc(24&~b),0===a?Xc(10,b):a;case 10:return a=Yc(192&~b),0===a?Xc(8,b):a;case 8:return a=Yc(3584&~b),0===a&&(a=Yc(4186112&~b),0===a&&(a=512)),a;case 2:return b=Yc(805306368&~b),0===b&&(b=268435456),b}throw Error(y(358,a));}function Yc(a){return a&-a}function Zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0<jc.length&&-1<qc.indexOf(a))a=rc(null,a,b,c,d),jc.push(a);else{var f=yc(a,b,c,d);if(null===f)e&&sc(a,d);else{if(e){if(-1<qc.indexOf(a)){a=rc(f,a,b,c,d);jc.push(a);return}if(uc(f,a,b,c,d))return;sc(a,d)}jd(a,b,d,null,c)}}}}\nfunction yc(a,b,c,d){var e=xb(d);e=wc(e);if(null!==e){var f=Zb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=$b(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}jd(a,b,d,e,c);return null}var kd=null,ld=null,md=null;\nfunction nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}function od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}m(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=m({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=m({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=m({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=m({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=m({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=m({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=m({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=m({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=m({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=m({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=m({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=m({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=fa&&\"CompositionEvent\"in window,be=null;fa&&\"documentMode\"in document&&(be=document.documentMode);var ce=fa&&\"TextEvent\"in window&&!be,de=fa&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(fa){var xe;if(fa){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));a=re;if(Kb)a(b);else{Kb=!0;try{Gb(a,b)}finally{Kb=!1,Mb()}}}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge,Ie=Object.prototype.hasOwnProperty;\nfunction Je(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!Ie.call(b,c[d])||!He(a[c[d]],b[c[d]]))return!1;return!0}function Ke(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Le(a,b){var c=Ke(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Pc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Pc(Oc,2);for(var Ve=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),We=0;We<Ve.length;We++)Nc.set(Ve[We],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Xe=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Ye=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Yb(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}}}if(Ub)throw a=Vb,Ub=!1,Vb=null,a;}\nfunction G(a,b){var c=$e(b),d=a+\"__bubble\";c.has(d)||(af(b,a,2,!1),c.add(d))}var bf=\"_reactListening\"+Math.random().toString(36).slice(2);function cf(a){a[bf]||(a[bf]=!0,ba.forEach(function(b){Ye.has(b)||df(b,!1,a,null);df(b,!0,a,null)}))}\nfunction df(a,b,c,d){var e=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,f=c;\"selectionchange\"===a&&9!==c.nodeType&&(f=c.ownerDocument);if(null!==d&&!b&&Ye.has(a)){if(\"scroll\"!==a)return;e|=2;f=d}var g=$e(f),h=a+\"__\"+(b?\"capture\":\"bubble\");g.has(h)||(b&&(e|=4),af(f,a,e,b),g.add(h))}\nfunction af(a,b,c,d){var e=Nc.get(b);switch(void 0===e?2:e){case 0:e=gd;break;case 1:e=id;break;default:e=hd}c=e.bind(null,b,c,a);e=void 0;!Pb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction jd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Nb(function(){var d=f,e=xb(c),g=[];\na:{var h=Mc.get(a);if(void 0!==h){var k=td,x=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":x=\"focus\";k=Fd;break;case \"focusout\":x=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case Ic:case Jc:case Kc:k=Hd;break;case Lc:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var w=0!==(b&4),z=!w&&\"scroll\"===a,u=w?null!==h?h+\"Capture\":null:h;w=[];for(var t=d,q;null!==\nt;){q=t;var v=q.stateNode;5===q.tag&&null!==v&&(q=v,null!==u&&(v=Ob(t,u),null!=v&&w.push(ef(t,v,q))));if(z)break;t=t.return}0<w.length&&(h=new k(h,x,null,c,e),g.push({event:h,listeners:w}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(x=c.relatedTarget||c.fromElement)&&(wc(x)||x[ff]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(x=c.relatedTarget||c.toElement,k=d,x=x?wc(x):null,null!==\nx&&(z=Zb(x),x!==z||5!==x.tag&&6!==x.tag))x=null}else k=null,x=d;if(k!==x){w=Bd;v=\"onMouseLeave\";u=\"onMouseEnter\";t=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)w=Td,v=\"onPointerLeave\",u=\"onPointerEnter\",t=\"pointer\";z=null==k?h:ue(k);q=null==x?h:ue(x);h=new w(v,t+\"leave\",k,c,e);h.target=z;h.relatedTarget=q;v=null;wc(e)===d&&(w=new w(u,t+\"enter\",x,c,e),w.target=q,w.relatedTarget=z,v=w);z=v;if(k&&x)b:{w=k;u=x;t=0;for(q=w;q;q=gf(q))t++;q=0;for(v=u;v;v=gf(v))q++;for(;0<t-q;)w=gf(w),t--;for(;0<q-t;)u=\ngf(u),q--;for(;t--;){if(w===u||null!==u&&w===u.alternate)break b;w=gf(w);u=gf(u)}w=null}else w=null;null!==k&&hf(g,h,k,w,!1);null!==x&&null!==z&&hf(g,z,x,w,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var J=ve;else if(me(h))if(we)J=Fe;else{J=De;var K=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(J=Ee);if(J&&(J=J(a,d))){ne(g,J,c,e);break a}K&&K(a,h,d);\"focusout\"===a&&(K=h._wrapperState)&&\nK.controlled&&\"number\"===h.type&&bb(h,\"number\",h.value)}K=d?ue(d):window;switch(a){case \"focusin\":if(me(K)||\"true\"===K.contentEditable)Qe=K,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var Q;if(ae)b:{switch(a){case \"compositionstart\":var L=\"onCompositionStart\";break b;case \"compositionend\":L=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":L=\"onCompositionUpdate\";break b}L=void 0}else ie?ge(a,c)&&(L=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(L=\"onCompositionStart\");L&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==L?\"onCompositionEnd\"===L&&ie&&(Q=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),K=oe(d,L),0<K.length&&(L=new Ld(L,a,null,c,e),g.push({event:L,listeners:K}),Q?L.data=Q:(Q=he(c),null!==Q&&(L.data=Q))));if(Q=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),0<d.length&&(e=new Ld(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=Q)}se(g,b)})}function ef(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Ob(a,c),null!=f&&d.unshift(ef(a,f,e)),f=Ob(a,b),null!=f&&d.push(ef(a,f,e)));a=a.return}return d}function gf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction hf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Ob(c,f),null!=k&&g.unshift(ef(c,k,h))):e||(k=Ob(c,f),null!=k&&g.push(ef(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function jf(){}var kf=null,lf=null;function mf(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction nf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var of=\"function\"===typeof setTimeout?setTimeout:void 0,pf=\"function\"===typeof clearTimeout?clearTimeout:void 0;function qf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}\nfunction rf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function sf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var tf=0;function uf(a){return{$$typeof:Ga,toString:a,valueOf:a}}var vf=Math.random().toString(36).slice(2),wf=\"__reactFiber$\"+vf,xf=\"__reactProps$\"+vf,ff=\"__reactContainer$\"+vf,yf=\"__reactEvents$\"+vf;\nfunction wc(a){var b=a[wf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[ff]||c[wf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=sf(a);null!==a;){if(c=a[wf])return c;a=sf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[wf]||a[ff];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(y(33));}function Db(a){return a[xf]||null}\nfunction $e(a){var b=a[yf];void 0===b&&(b=a[yf]=new Set);return b}var zf=[],Af=-1;function Bf(a){return{current:a}}function H(a){0>Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});ag=null}catch(c){throw null!==ag&&(ag=ag.slice(a+1)),Of(Uf,ig),c;}finally{cg=!1}}}var kg=ra.ReactCurrentBatchConfig;function lg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var mg=Bf(null),ng=null,og=null,pg=null;function qg(){pg=og=ng=null}\nfunction rg(a){var b=mg.current;H(mg);a.type._context._currentValue=b}function sg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);a=a.return}}function tg(a,b){ng=a;pg=og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(ug=!0),a.firstContext=null)}\nfunction vg(a,b){if(pg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)pg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===og){if(null===ng)throw Error(y(308));og=b;ng.dependencies={lanes:0,firstContext:b,responders:null}}else og=og.next=b}return a._currentValue}var wg=!1;function xg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction yg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function zg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Ag(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Bg(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction Cg(a,b,c,d){var e=a.updateQueue;wg=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var n=a.alternate;if(null!==n){n=n.updateQueue;var A=n.lastBaseUpdate;A!==g&&(null===A?n.firstBaseUpdate=l:A.next=l,n.lastBaseUpdate=k)}}if(null!==f){A=e.baseState;g=0;n=l=k=null;do{h=f.lane;var p=f.eventTime;if((d&h)===h){null!==n&&(n=n.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var C=a,x=f;h=b;p=c;switch(x.tag){case 1:C=x.payload;if(\"function\"===typeof C){A=C.call(p,A,h);break a}A=C;break a;case 3:C.flags=C.flags&-4097|64;case 0:C=x.payload;h=\"function\"===typeof C?C.call(p,A,h):C;if(null===h||void 0===h)break a;A=m({},A,h);break a;case 2:wg=!0}}null!==f.callback&&(a.flags|=32,h=e.effects,null===h?e.effects=[f]:h.push(f))}else p={eventTime:p,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===n?(l=n=p,k=A):n=n.next=p,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===n&&(k=A);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=n;Dg|=g;a.lanes=g;a.memoizedState=A}}function Eg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(y(191,e));e.call(d)}}}var Fg=(new aa.Component).refs;\nfunction Gg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Kg={isMounted:function(a){return(a=a._reactInternals)?Zb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Hg(),d=Ig(a),e=zg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Ag(a,e);Jg(a,d,c)}};function Lg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Je(c,d)||!Je(e,f):!0}\nfunction Mg(a,b,c){var d=!1,e=Cf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=vg(f):(e=Ff(b)?Df:M.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Ef(a,e):Cf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Kg;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ng(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Kg.enqueueReplaceState(b,b.state,null)}\nfunction Og(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Fg;xg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=vg(f):(f=Ff(b)?Df:M.current,e.context=Ef(a,f));Cg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Gg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Kg.enqueueReplaceState(e,e.state,null),Cg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Pg=Array.isArray;\nfunction Qg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(y(309));var d=c.stateNode}if(!d)throw Error(y(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Fg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(y(284));if(!c._owner)throw Error(y(290,a));}return a}\nfunction Rg(a,b){if(\"textarea\"!==a.type)throw Error(y(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}\nfunction Sg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Tg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Ug(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Qg(a,b,c),d.return=a,d;d=Vg(c.type,c.key,c.props,null,a.mode,d);d.ref=Qg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=\nWg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function n(a,b,c,d,f){if(null===b||7!==b.tag)return b=Xg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function A(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Ug(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=Vg(b.type,b.key,b.props,null,a.mode,c),c.ref=Qg(a,null,b),c.return=a,c;case ta:return b=Wg(b,a.mode,c),b.return=a,b}if(Pg(b)||La(b))return b=Xg(b,\na.mode,c,null),b.return=a,b;Rg(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?c.type===ua?n(a,b,c.props.children,d,e):k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null}if(Pg(c)||La(c))return null!==e?null:n(a,b,c,d,null);Rg(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||\nnull,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,d.type===ua?n(b,a,d.props.children,e,d.key):k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Pg(d)||La(d))return a=a.get(c)||null,n(b,a,d,e,null);Rg(b,d)}return null}function x(e,g,h,k){for(var l=null,t=null,u=g,z=g=0,q=null;null!==u&&z<h.length;z++){u.index>z?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;z<h.length;z++)u=A(e,h[z],k),null!==u&&(g=f(u,g,z),null===t?l=u:t.sibling=u,t=u);return l}for(u=d(e,u);z<h.length;z++)q=C(u,e,z,h[z],k),null!==q&&(a&&null!==q.alternate&&u.delete(null===q.key?z:q.key),g=f(q,g,z),null===t?l=q:t.sibling=q,t=q);a&&u.forEach(function(a){return b(e,a)});return l}function w(e,g,h,k){var l=La(h);if(\"function\"!==typeof l)throw Error(y(150));h=l.call(h);if(null==\nh)throw Error(y(151));for(var t=l=null,u=g,z=g=0,q=null,n=h.next();null!==u&&!n.done;z++,n=h.next()){u.index>z?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;a<th.length;a++)th[a]._workInProgressVersionPrimary=null;th.length=0}var vh=ra.ReactCurrentDispatcher,wh=ra.ReactCurrentBatchConfig,xh=0,R=null,S=null,T=null,yh=!1,zh=!1;function Ah(){throw Error(y(321));}function Bh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Ch(a,b,c,d,e,f){xh=f;R=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;vh.current=null===a||null===a.memoizedState?Dh:Eh;a=c(d,e);if(zh){f=0;do{zh=!1;if(!(25>f))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0<h;){var k=31-Vc(h),v=1<<k;d[k]|=a;h&=~v}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=p.getSnapshot,c=p.setSnapshot;try{c(a(b._source));var d=Ig(w);e.mutableReadLanes|=d&e.pendingLanes}catch(q){c(function(){throw q;})}})},[b,d]);He(C,c)&&He(x,b)&&He(A,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:n},a.dispatch=l=Oh.bind(null,R,a),k.queue=a,k.baseQueue=null,n=Mh(e,b,c),k.memoizedState=k.baseState=n);return n}\nfunction Ph(a,b,c){var d=Ih();return Nh(d,a,b,c)}function Qh(a){var b=Hh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:a};a=a.dispatch=Oh.bind(null,R,a);return[b.memoizedState,a]}\nfunction Rh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=R.updateQueue;null===b?(b={lastEffect:null},R.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function Sh(a){var b=Hh();a={current:a};return b.memoizedState=a}function Th(){return Ih().memoizedState}function Uh(a,b,c,d){var e=Hh();R.flags|=a;e.memoizedState=Rh(1|b,c,void 0,void 0===d?null:d)}\nfunction Vh(a,b,c,d){var e=Ih();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Bh(d,g.deps)){Rh(b,c,f,d);return}}R.flags|=a;e.memoizedState=Rh(1|b,c,f,d)}function Wh(a,b){return Uh(516,4,a,b)}function Xh(a,b){return Vh(516,4,a,b)}function Yh(a,b){return Vh(4,2,a,b)}function Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}\nfunction $h(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,2,Zh.bind(null,b,a),c)}function ai(){}function bi(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function ci(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction di(a,b){var c=eg();gg(98>c?98:c,function(){a(!0)});gg(97<c?97:c,function(){var c=wh.transition;wh.transition=1;try{a(!1),b()}finally{wh.transition=c}})}\nfunction Oh(a,b,c){var d=Hg(),e=Ig(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===R||null!==g&&g===R)zh=yh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(He(k,h))return}catch(l){}finally{}Jg(a,e,d)}}\nvar Gh={readContext:vg,useCallback:Ah,useContext:Ah,useEffect:Ah,useImperativeHandle:Ah,useLayoutEffect:Ah,useMemo:Ah,useReducer:Ah,useRef:Ah,useState:Ah,useDebugValue:Ah,useDeferredValue:Ah,useTransition:Ah,useMutableSource:Ah,useOpaqueIdentifier:Ah,unstable_isNewReconciler:!1},Dh={readContext:vg,useCallback:function(a,b){Hh().memoizedState=[a,void 0===b?null:b];return a},useContext:vg,useEffect:Wh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Uh(4,2,Zh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return Uh(4,2,a,b)},useMemo:function(a,b){var c=Hh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Hh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Oh.bind(null,R,a);return[d.memoizedState,a]},useRef:Sh,useState:Qh,useDebugValue:ai,useDeferredValue:function(a){var b=Qh(a),c=b[0],d=b[1];Wh(function(){var b=wh.transition;\nwh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(!1),b=a[0];a=di.bind(null,a[1]);Sh(a);return[a,b]},useMutableSource:function(a,b,c){var d=Hh();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Nh(d,a,b,c)},useOpaqueIdentifier:function(){if(lh){var a=!1,b=uf(function(){a||(a=!0,c(\"r:\"+(tf++).toString(36)));throw Error(y(355));}),c=Qh(b)[1];0===(R.mode&2)&&(R.flags|=516,Rh(5,function(){c(\"r:\"+(tf++).toString(36))},\nvoid 0,null));return b}b=\"r:\"+(tf++).toString(36);Qh(b);return b},unstable_isNewReconciler:!1},Eh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Kh,useRef:Th,useState:function(){return Kh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Kh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Kh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Kh(Jh)[0]},unstable_isNewReconciler:!1},Fh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Lh,useRef:Th,useState:function(){return Lh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Lh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Lh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Lh(Jh)[0]},unstable_isNewReconciler:!1},ei=ra.ReactCurrentOwner,ug=!1;function fi(a,b,c,d){b.child=null===a?Zg(b,null,c,d):Yg(b,a.child,c,d)}function gi(a,b,c,d,e){c=c.render;var f=b.ref;tg(b,e);d=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,d,e);return b.child}\nfunction ii(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!ji(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ki(a,b,g,d,e,f);a=Vg(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Je,c(e,d)&&a.ref===b.ref))return hi(a,b,f);b.flags|=1;a=Tg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ki(a,b,c,d,e,f){if(null!==a&&Je(a.memoizedProps,d)&&a.ref===b.ref)if(ug=!1,0!==(f&e))0!==(a.flags&16384)&&(ug=!0);else return b.lanes=a.lanes,hi(a,b,f);return li(a,b,c,d,f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},ni(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},ni(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},ni(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,ni(b,d);fi(a,b,e,c);return b.child}\nfunction oi(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=128}function li(a,b,c,d,e){var f=Ff(c)?Df:M.current;f=Ef(b,f);tg(b,e);c=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,c,e);return b.child}\nfunction pi(a,b,c,d,e){if(Ff(c)){var f=!0;Jf(b)}else f=!1;tg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Mg(b,c,d),Og(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=vg(l):(l=Ff(c)?Df:M.current,l=Ef(b,l));var n=c.getDerivedStateFromProps,A=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;A||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ng(b,g,d,l);wg=!1;var p=b.memoizedState;g.state=p;Cg(b,d,g,e);k=b.memoizedState;h!==d||p!==k||N.current||wg?(\"function\"===typeof n&&(Gg(b,c,n,d),k=b.memoizedState),(h=wg||Lg(b,c,h,d,p,k,l))?(A||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:lg(b.type,h);g.props=l;A=b.pendingProps;p=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=vg(k):(k=Ff(c)?Df:M.current,k=Ef(b,k));var C=c.getDerivedStateFromProps;(n=\"function\"===typeof C||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==A||p!==k)&&Ng(b,g,d,k);wg=!1;p=b.memoizedState;g.state=p;Cg(b,d,g,e);var x=b.memoizedState;h!==A||p!==x||N.current||wg?(\"function\"===typeof C&&(Gg(b,c,C,d),x=b.memoizedState),(l=wg||Lg(b,c,l,d,p,x,k))?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),d=!1)}return qi(a,b,c,d,f,e)}\nfunction qi(a,b,c,d,e,f){oi(a,b);var g=0!==(b.flags&64);if(!d&&!g)return e&&Kf(b,c,!1),hi(a,b,f);d=b.stateNode;ei.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Yg(b,a.child,null,f),b.child=Yg(b,null,h,f)):fi(a,b,h,f);b.memoizedState=d.state;e&&Kf(b,c,!0);return b.child}function ri(a){var b=a.stateNode;b.pendingContext?Hf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Hf(a,b.context,!1);eh(a,b.containerInfo)}\nvar si={dehydrated:null,retryLane:0};\nfunction ti(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g;(g=0!==(b.flags&64))||(g=null!==a&&null===a.memoizedState?!1:0!==(e&2));g?(f=!0,b.flags&=-65):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);I(P,e&1);if(null===a){void 0!==d.fallback&&ph(b);a=d.children;e=d.fallback;if(f)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},b.memoizedState=si,a;if(\"number\"===typeof d.unstable_expectedLoadTime)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},\nb.memoizedState=si,b.lanes=33554432,a;c=vi({mode:\"visible\",children:a},b.mode,c,null);c.return=b;return b.child=c}if(null!==a.memoizedState){if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:\n{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}function ui(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=vi(b,e,0,null);c=Xg(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction xi(a,b,c,d){var e=a.child;a=e.sibling;c=Tg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction wi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Tg(g,h);null!==a?d=Tg(a,d):(d=Xg(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);sg(a.return,b)}\nfunction zi(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ai(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;fi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=64;else{if(null!==a&&0!==(a.flags&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&yi(a,c);else if(19===a.tag)yi(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ih(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);zi(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ih(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}zi(b,!0,c,null,f,b.lastEffect);break;case \"together\":zi(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction hi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Dg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(y(153));if(null!==b.child){a=b.child;c=Tg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Tg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Bi,Ci,Di,Ei;\nBi=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Ci=function(){};\nDi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;dh(ah.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"option\":e=eb(a,e);d=eb(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=jf)}vb(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Ga?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ei=function(a,b,c,d){c!==d&&(b.flags|=4)};function Fi(a,b){if(!lh)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction Gi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ff(b.type)&&Gf(),null;case 3:fh();H(N);H(M);uh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)rh(b)?b.flags|=4:d.hydrate||(b.flags|=256);Ci(b);return null;case 5:hh(b);var e=dh(ch.current);c=b.type;if(null!==a&&null!=b.stateNode)Di(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=128);else{if(!d){if(null===\nb.stateNode)throw Error(y(166));return null}a=dh(ah.current);if(rh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[wf]=b;d[xf]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<Xe.length;a++)G(Xe[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Za(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":hb(d,f),G(\"invalid\",d)}vb(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Va(d);cb(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\njf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===kb.html&&(a=lb(c));a===kb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<Xe.length;e++)G(Xe[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);G(\"invalid\",a);break;case \"option\":e=eb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":hb(a,d);e=\ngb(a,d);G(\"invalid\",a);break;default:e=d}vb(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?tb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&ob(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&pb(a,k):\"number\"===typeof k&&pb(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Va(a);cb(a,d,!1);\nbreak;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=jf)}mf(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=128)}return null;case 6:if(a&&null!=b.stateNode)Ei(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(y(166));\nc=dh(ch.current);dh(ah.current);rh(b)?(d=b.stateNode,c=b.memoizedProps,d[wf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[wf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(0!==(b.flags&64))return b.lanes=c,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&rh(b):c=null!==a.memoizedState;if(d&&!c&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1))0===V&&(V=3);else{if(0===V||3===V)V=\n4;null===U||0===(Dg&134217727)&&0===(Hi&134217727)||Ii(U,W)}if(d||c)b.flags|=4;return null;case 4:return fh(),Ci(b),null===a&&cf(b.stateNode.containerInfo),null;case 10:return rg(b),null;case 17:return Ff(b.type)&&Gf(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&64);g=d.rendering;if(null===g)if(f)Fi(d,!1);else{if(0!==V||null!==a&&0!==(a.flags&64))for(a=b.child;null!==a;){g=ih(a);if(null!==g){b.flags|=64;Fi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);\nnull===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,\nf.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;I(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&O()>Ji&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;e<f.length;e+=\n2){var g=f[e],h=f[e+1];\"style\"===g?tb(c,h):\"dangerouslySetInnerHTML\"===g?ob(c,h):\"children\"===g?pb(c,h):qa(c,g,h,b)}switch(a){case \"input\":ab(c,d);break;case \"textarea\":ib(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?fb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?fb(c,!!d.multiple,d.defaultValue,!0):fb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(y(162));b.stateNode.nodeValue=\nb.memoizedProps;return;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Cc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(jj=O(),aj(b.child,!0));kj(b);return;case 19:kj(b);return;case 17:return;case 23:case 24:aj(b,null!==b.memoizedState);return}throw Error(y(163));}function kj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ui);b.forEach(function(b){var d=lj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction mj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var nj=Math.ceil,oj=ra.ReactCurrentDispatcher,pj=ra.ReactCurrentOwner,X=0,U=null,Y=null,W=0,qj=0,rj=Bf(0),V=0,sj=null,tj=0,Dg=0,Hi=0,uj=0,vj=null,jj=0,Ji=Infinity;function wj(){Ji=O()+500}var Z=null,Qi=!1,Ri=null,Ti=null,xj=!1,yj=null,zj=90,Aj=[],Bj=[],Cj=null,Dj=0,Ej=null,Fj=-1,Gj=0,Hj=0,Ij=null,Jj=!1;function Hg(){return 0!==(X&48)?O():-1!==Fj?Fj:Fj=O()}\nfunction Ig(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===eg()?1:2;0===Gj&&(Gj=tj);if(0!==kg.transition){0!==Hj&&(Hj=null!==vj?vj.pendingLanes:0);a=Gj;var b=4186112&~Hj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=eg();0!==(X&4)&&98===a?a=Xc(12,Gj):(a=Sc(a),a=Xc(a,Gj));return a}\nfunction Jg(a,b,c){if(50<Dj)throw Dj=0,Ej=null,Error(y(185));a=Kj(a,b);if(null===a)return null;$c(a,b,c);a===U&&(Hi|=b,4===V&&Ii(a,W));var d=eg();1===b?0!==(X&8)&&0===(X&48)?Lj(a):(Mj(a,c),0===X&&(wj(),ig())):(0===(X&4)||98!==d&&99!==d||(null===Cj?Cj=new Set([a]):Cj.add(a)),Mj(a,c));vj=a}function Kj(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}\nfunction Mj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-Vc(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;Rc(k);var n=F;f[h]=10<=n?l+250:6<=n?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=Uc(a,a===U?W:0);b=F;if(0===d)null!==c&&(c!==Zf&&Pf(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==Zf&&Pf(c)}15===b?(c=Lj.bind(null,a),null===ag?(ag=[c],bg=Of(Uf,jg)):ag.push(c),\nc=Zf):14===b?c=hg(99,Lj.bind(null,a)):(c=Tc(b),c=hg(c,Nj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Nj(a){Fj=-1;Hj=Gj=0;if(0!==(X&48))throw Error(y(327));var b=a.callbackNode;if(Oj()&&a.callbackNode!==b)return null;var c=Uc(a,a===U?W:0);if(0===c)return null;var d=c;var e=X;X|=16;var f=Pj();if(U!==a||W!==d)wj(),Qj(a,d);do try{Rj();break}catch(h){Sj(a,h)}while(1);qg();oj.current=f;X=e;null!==Y?d=0:(U=null,W=0,d=V);if(0!==(tj&Hi))Qj(a,0);else if(0!==d){2===d&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),c=Wc(a),0!==c&&(d=Tj(a,c)));if(1===d)throw b=sj,Qj(a,0),Ii(a,c),Mj(a,O()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(y(345));case 2:Uj(a);break;case 3:Ii(a,c);if((c&62914560)===c&&(d=jj+500-O(),10<d)){if(0!==Uc(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Hg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=of(Uj.bind(null,a),d);break}Uj(a);break;case 4:Ii(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-Vc(c);f=1<<g;g=d[g];g>e&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10<c){a.timeoutHandle=of(Uj.bind(null,a),c);break}Uj(a);break;case 5:Uj(a);break;default:throw Error(y(329));}}Mj(a,O());return a.callbackNode===b?Nj.bind(null,a):null}function Ii(a,b){b&=~uj;b&=~Hi;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-Vc(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Lj(a){if(0!==(X&48))throw Error(y(327));Oj();if(a===U&&0!==(a.expiredLanes&W)){var b=W;var c=Tj(a,b);0!==(tj&Hi)&&(b=Uc(a,b),c=Tj(a,b))}else b=Uc(a,0),c=Tj(a,b);0!==a.tag&&2===c&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),b=Wc(a),0!==b&&(c=Tj(a,b)));if(1===c)throw c=sj,Qj(a,0),Ii(a,b),Mj(a,O()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;Uj(a);Mj(a,O());return null}\nfunction Vj(){if(null!==Cj){var a=Cj;Cj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Mj(a,O())})}ig()}function Wj(a,b){var c=X;X|=1;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function Xj(a,b){var c=X;X&=-2;X|=8;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function ni(a,b){I(rj,qj);qj|=b;tj|=b}function Ki(){qj=rj.current;H(rj)}\nfunction Qj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,pf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Gf();break;case 3:fh();H(N);H(M);uh();break;case 5:hh(d);break;case 4:fh();break;case 13:H(P);break;case 19:H(P);break;case 10:rg(d);break;case 23:case 24:Ki()}c=c.return}U=a;Y=Tg(a.current,null);W=qj=tj=b;V=0;sj=null;uj=Hi=Dg=0}\nfunction Sj(a,b){do{var c=Y;try{qg();vh.current=Gh;if(yh){for(var d=R.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}yh=!1}xh=0;T=S=R=null;zh=!1;pj.current=null;if(null===c||null===c.return){V=1;sj=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=W;h.flags|=2048;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var n=h.alternate;n?(h.updateQueue=n.updateQueue,h.memoizedState=n.memoizedState,h.lanes=n.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var A=0!==(P.current&1),p=g;do{var C;if(C=13===p.tag){var x=p.memoizedState;if(null!==x)C=null!==x.dehydrated?!0:!1;else{var w=p.memoizedProps;C=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:A?!1:!0}}if(C){var z=p.updateQueue;if(null===z){var u=new Set;u.add(l);p.updateQueue=u}else z.add(l);if(0===(p.mode&2)){p.flags|=64;h.flags|=16384;h.flags&=-2981;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var t=zg(-1,1);t.tag=2;Ag(h,t)}h.lanes|=1;break a}k=\nvoid 0;h=b;var q=f.pingCache;null===q?(q=f.pingCache=new Oi,k=new Set,q.set(l,k)):(k=q.get(l),void 0===k&&(k=new Set,q.set(l,k)));if(!k.has(h)){k.add(h);var v=Yj.bind(null,f,l,h);l.then(v,v)}p.flags|=4096;p.lanes=b;break a}p=p.return}while(null!==p);k=Error((Ra(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Li(b);if(null!==c){c.flags&=2047;Y=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=2048)}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===V&&(V=5)}function Uj(a){var b=eg();gg(99,dk.bind(null,a,b));return null}\nfunction dk(a,b){do Oj();while(null!==yj);if(0!==(X&48))throw Error(y(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(y(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-Vc(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nCj&&0===(d&24)&&Cj.has(a)&&Cj.delete(a);a===U&&(Y=U=null,W=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=X;X|=32;pj.current=null;kf=fd;g=Ne();if(Oe(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(va){h=null;\nbreak a}var n=0,A=-1,p=-1,C=0,x=0,w=g,z=null;b:for(;;){for(var u;;){w!==h||0!==f&&3!==w.nodeType||(A=n+f);w!==k||0!==l&&3!==w.nodeType||(p=n+l);3===w.nodeType&&(n+=w.nodeValue.length);if(null===(u=w.firstChild))break;z=w;w=u}for(;;){if(w===g)break b;z===h&&++C===f&&(A=n);z===k&&++x===l&&(p=n);if(null!==(u=w.nextSibling))break;w=z;z=w.parentNode}w=u}h=-1===A||-1===p?null:{start:A,end:p}}else h=null;h=h||{start:0,end:0}}else h=null;lf={focusedElem:g,selectionRange:h};fd=!1;Ij=null;Jj=!1;Z=d;do try{ek()}catch(va){if(null===\nZ)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Ij=null;Z=d;do try{for(g=a;null!==Z;){var t=Z.flags;t&16&&pb(Z.stateNode,\"\");if(t&128){var q=Z.alternate;if(null!==q){var v=q.ref;null!==v&&(\"function\"===typeof v?v(null):v.current=null)}}switch(t&1038){case 2:fj(Z);Z.flags&=-3;break;case 6:fj(Z);Z.flags&=-3;ij(Z.alternate,Z);break;case 1024:Z.flags&=-1025;break;case 1028:Z.flags&=-1025;ij(Z.alternate,Z);break;case 4:ij(Z.alternate,Z);break;case 8:h=Z;cj(g,h);var J=h.alternate;dj(h);null!==\nJ&&dj(J)}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);v=lf;q=Ne();t=v.focusedElem;g=v.selectionRange;if(q!==t&&t&&t.ownerDocument&&Me(t.ownerDocument.documentElement,t)){null!==g&&Oe(t)&&(q=g.start,v=g.end,void 0===v&&(v=q),\"selectionStart\"in t?(t.selectionStart=q,t.selectionEnd=Math.min(v,t.value.length)):(v=(q=t.ownerDocument||document)&&q.defaultView||window,v.getSelection&&(v=v.getSelection(),h=t.textContent.length,J=Math.min(g.start,h),g=void 0===\ng.end?J:Math.min(g.end,h),!v.extend&&J>g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;t<q.length;t++)v=q[t],v.element.scrollLeft=v.left,v.element.scrollTop=v.top}fd=!!kf;lf=kf=null;a.current=c;Z=d;do try{for(t=a;null!==Z;){var K=Z.flags;K&36&&Yi(t,Z.alternate,Z);if(K&128){q=void 0;var Q=Z.ref;if(null!==Q){var L=Z.stateNode;switch(Z.tag){case 5:q=L;break;default:q=L}\"function\"===typeof Q?Q(q):Q.current=q}}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Z=null;$f();X=e}else a.current=c;if(xj)xj=!1,yj=a,zj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(K=Z,K.sibling=null,K.stateNode=null),Z=b;d=a.pendingLanes;0===d&&(Ti=null);1===d?a===Ej?Dj++:(Dj=0,Ej=a):Dj=0;c=c.stateNode;if(Mf&&\"function\"===typeof Mf.onCommitFiberRoot)try{Mf.onCommitFiberRoot(Lf,c,void 0,64===(c.current.flags&64))}catch(va){}Mj(a,O());if(Qi)throw Qi=!1,a=Ri,Ri=null,a;if(0!==(X&8))return null;ig();return null}\nfunction ek(){for(;null!==Z;){var a=Z.alternate;Jj||null===Ij||(0!==(Z.flags&8)?dc(Z,Ij)&&(Jj=!0):13===Z.tag&&mj(a,Z)&&dc(Z,Ij)&&(Jj=!0));var b=Z.flags;0!==(b&256)&&Xi(a,Z);0===(b&512)||xj||(xj=!0,hg(97,function(){Oj();return null}));Z=Z.nextEffect}}function Oj(){if(90!==zj){var a=97<zj?97:zj;zj=90;return gg(a,fk)}return!1}function $i(a,b){Aj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}function Zi(a,b){Bj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}\nfunction fk(){if(null===yj)return!1;var a=yj;yj=null;if(0!==(X&48))throw Error(y(331));var b=X;X|=32;var c=Bj;Bj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}c=Aj;Aj=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;X=b;ig();return!0}function gk(a,b,c){b=Mi(c,b);b=Pi(a,b,1);Ag(a,b);b=Hg();a=Kj(a,1);null!==a&&($c(a,1,b),Mj(a,b))}\nfunction Wi(a,b){if(3===a.tag)gk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){gk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d))){a=Mi(b,a);var e=Si(c,a,1);Ag(c,e);e=Hg();c=Kj(c,1);if(null!==c)$c(c,1,e),Mj(c,e);else if(\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d)))try{d.componentDidCatch(b,a)}catch(f){}break}}c=c.return}}\nfunction Yj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Hg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(W&c)===c&&(4===V||3===V&&(W&62914560)===W&&500>O()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],th.push(f);c=Zg(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|1024,c=c.sibling}else fi(a,b,d,c),sh();b=b.child}return b;case 5:return gh(b),null===a&&\nph(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,nf(d,e)?g=null:null!==f&&nf(d,f)&&(b.flags|=16),oi(a,b),fi(a,b,g,c),b.child;case 6:return null===a&&ph(b),null;case 13:return ti(a,b,c);case 4:return eh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Yg(b,null,d,c):fi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),gi(a,b,d,e,c);case 7:return fi(a,b,b.pendingProps,c),b.child;case 8:return fi(a,b,b.pendingProps.children,\nc),b.child;case 12:return fi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(mg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=He(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!N.current){b=hi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=\nk.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=zg(-1,c&-c),l.tag=2,Ag(h,l));h.lanes|=c;l=h.alternate;null!==l&&(l.lanes|=c);sg(h.return,c);k.lanes|=c;break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}fi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,tg(b,c),e=vg(e,\nf.unstable_observedBits),d=d(e),b.flags|=1,fi(a,b,d,c),b.child;case 14:return e=b.type,f=lg(e,b.pendingProps),f=lg(e.type,f),ii(a,b,e,f,d,c);case 15:return ki(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Ff(d)?(a=!0,Jf(b)):a=!1,tg(b,c),Mg(b,d,e),Og(b,d,e,c),qi(null,b,d,!0,a,c);case 19:return Ai(a,b,c);case 23:return mi(a,b,c);case 24:return mi(a,b,c)}throw Error(y(156,b.tag));\n};function ik(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function nh(a,b,c,d){return new ik(a,b,c,d)}function ji(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction hk(a){if(\"function\"===typeof a)return ji(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Tg(a,b){var c=a.alternate;null===c?(c=nh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Vg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ji(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return Xg(c.children,e,f,b);case Ha:g=8;e|=16;break;case wa:g=8;e|=1;break;case xa:return a=nh(12,c,b,e|8),a.elementType=xa,a.type=xa,a.lanes=f,a;case Ba:return a=nh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=nh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ia:return vi(c,e,f,b);case Ja:return a=nh(24,c,b,e),a.elementType=Ja,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a;case Fa:g=22;break a}throw Error(y(130,null==a?a:typeof a,\"\"));}b=nh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Xg(a,b,c,d){a=nh(7,a,d,b);a.lanes=c;return a}function vi(a,b,c,d){a=nh(23,a,d,b);a.elementType=Ia;a.lanes=c;return a}function Ug(a,b,c){a=nh(6,a,null,b);a.lanes=c;return a}\nfunction Wg(a,b,c){b=nh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction jk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=0;this.eventTimes=Zc(0);this.expirationTimes=Zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Zc(0);this.mutableSourceEagerHydrationData=null}\nfunction kk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction lk(a,b,c,d){var e=b.current,f=Hg(),g=Ig(e);a:if(c){c=c._reactInternals;b:{if(Zb(c)!==c||1!==c.tag)throw Error(y(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(Ff(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(y(171));}if(1===c.tag){var k=c.type;if(Ff(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=zg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Ag(e,b);Jg(e,g,f);return g}function mk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function nk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ok(a,b){nk(a,b);(a=a.alternate)&&nk(a,b)}function pk(){return null}\nfunction qk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new jk(a,b,null!=c&&!0===c.hydrate);b=nh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;xg(b);a[ff]=c.current;cf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}this._internalRoot=c}\nqk.prototype.render=function(a){lk(a,this._internalRoot,null,null)};qk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;lk(null,a,null,function(){b[ff]=null})};function rk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}\nfunction sk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new qk(a,0,b?{hydrate:!0}:void 0)}\nfunction tk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=mk(g);h.call(a)}}lk(b,g,a,e)}else{f=c._reactRootContainer=sk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=mk(g);k.call(a)}}Xj(function(){lk(b,g,a,e)})}return mk(g)}ec=function(a){if(13===a.tag){var b=Hg();Jg(a,4,b);ok(a,4)}};fc=function(a){if(13===a.tag){var b=Hg();Jg(a,67108864,b);ok(a,67108864)}};\ngc=function(a){if(13===a.tag){var b=Hg(),c=Ig(a);Jg(a,c,b);ok(a,c)}};hc=function(a,b){return b()};\nyb=function(a,b,c){switch(b){case \"input\":ab(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(y(90));Wa(d);ab(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Wj;\nHb=function(a,b,c,d,e){var f=X;X|=4;try{return gg(98,a.bind(null,b,c,d,e))}finally{X=f,0===X&&(wj(),ig())}};Ib=function(){0===(X&49)&&(Vj(),Oj())};Jb=function(a,b){var c=X;X|=2;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}};function uk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rk(b))throw Error(y(200));return kk(a,b,null,c)}var vk={Events:[Cb,ue,Db,Eb,Fb,Oj,{current:!1}]},wk={findFiberByHostInstance:wc,bundleType:0,version:\"17.0.1\",rendererPackageName:\"react-dom\"};\nvar xk={bundleType:wk.bundleType,version:wk.version,rendererPackageName:wk.rendererPackageName,rendererConfig:wk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=cc(a);return null===a?null:a.stateNode},findFiberByHostInstance:wk.findFiberByHostInstance||\npk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var yk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!yk.isDisabled&&yk.supportsFiber)try{Lf=yk.inject(xk),Mf=yk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=vk;exports.createPortal=uk;\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(y(188));throw Error(y(268,Object.keys(a)));}a=cc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a,b){var c=X;if(0!==(c&48))return a(b);X|=1;try{if(a)return gg(99,a.bind(null,b))}finally{X=c,ig()}};exports.hydrate=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!0,c)};\nexports.render=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!rk(a))throw Error(y(40));return a._reactRootContainer?(Xj(function(){tk(null,null,a,!1,function(){a._reactRootContainer=null;a[ff]=null})}),!0):!1};exports.unstable_batchedUpdates=Wj;exports.unstable_createPortal=function(a,b){return uk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!rk(c))throw Error(y(200));if(null==a||void 0===a._reactInternals)throw Error(y(38));return tk(a,b,c,!1,d)};exports.version=\"17.0.1\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\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\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){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)};exports.typeOf=z;\n","'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}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.show = show;\nexports.success = success;\nexports.error = error;\nexports.warning = warning;\nexports.info = info;\nexports.hide = hide;\nexports.removeAll = removeAll;\n\nvar _const = require('./const');\n\n//Example opts\n// {\n//   title: 'Hey, it\\'s good to see you!',\n//   message: 'Now you can see how easy it is to use notifications in React!',\n//   position: 'tr',\n//   autoDismiss: 0,\n//   action: {\n//     label: 'Awesome!',\n//     callback: function() {\n//       console.log('Clicked');\n//     }\n//   }\n// }\n\nfunction show() {\n  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'success';\n\n  return _extends({\n    type: _const.RNS_SHOW_NOTIFICATION\n  }, opts, {\n    uid: opts.uid || Date.now(),\n    level: level\n  });\n}\n\nfunction success(opts) {\n  return show(opts, 'success');\n}\n\nfunction error(opts) {\n  return show(opts, 'error');\n}\n\nfunction warning(opts) {\n  return show(opts, 'warning');\n}\n\nfunction info(opts) {\n  return show(opts, 'info');\n}\n\nfunction hide(uid) {\n  return {\n    type: _const.RNS_HIDE_NOTIFICATION,\n    uid: uid\n  };\n}\n\nfunction removeAll() {\n  return { type: _const.RNS_REMOVE_ALL_NOTIFICATIONS };\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar RNS_SHOW_NOTIFICATION = exports.RNS_SHOW_NOTIFICATION = 'RNS_SHOW_NOTIFICATION';\nvar RNS_HIDE_NOTIFICATION = exports.RNS_HIDE_NOTIFICATION = 'RNS_HIDE_NOTIFICATION';\nvar RNS_REMOVE_ALL_NOTIFICATIONS = exports.RNS_REMOVE_ALL_NOTIFICATIONS = 'RNS_REMOVE_ALL_NOTIFICATIONS';","'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactRedux = require('react-redux');\n\nvar _actions = require('./actions');\n\nvar actions = _interopRequireWildcard(_actions);\n\nvar _reducer = require('./reducer');\n\nvar _reducer2 = _interopRequireDefault(_reducer);\n\nvar _reactNotificationSystem = require('react-notification-system');\n\nvar _reactNotificationSystem2 = _interopRequireDefault(_reactNotificationSystem);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Notifications = function (_React$Component) {\n  _inherits(Notifications, _React$Component);\n\n  function Notifications(props) {\n    _classCallCheck(this, Notifications);\n\n    var _this = _possibleConstructorReturn(this, (Notifications.__proto__ || Object.getPrototypeOf(Notifications)).call(this, props));\n\n    _this.notifyRef = _react2['default'].createRef();\n    return _this;\n  }\n\n  _createClass(Notifications, [{\n    key: 'system',\n    value: function () {\n      function system() {\n        return this.notifyRef.current;\n      }\n\n      return system;\n    }()\n  }, {\n    key: 'componentDidUpdate',\n    value: function () {\n      function componentDidUpdate(prevProps) {\n        var _this2 = this;\n\n        var _props = this.props,\n            notifications = _props.notifications,\n            store = _props.store;\n\n        var notificationIds = notifications.map(function (notification) {\n          return notification.uid;\n        });\n        var systemNotifications = this.system().state.notifications || [];\n\n        if (notifications.length > 0) {\n          // Get all active notifications from react-notification-system\n          /// and remove all where uid is not found in the reducer\n          systemNotifications.forEach(function (notification) {\n            if (notificationIds.indexOf(notification.uid) < 0) {\n              _this2.system().removeNotification(notification.uid);\n            }\n          });\n\n          notifications.forEach(function (notification) {\n            _this2.system().addNotification(_extends({}, notification, {\n              onRemove: function () {\n                function onRemove() {\n                  store.dispatch(actions.hide(notification.uid));\n                  notification.onRemove && notification.onRemove();\n                }\n\n                return onRemove;\n              }()\n            }));\n          });\n        }\n\n        if (prevProps.notifications !== notifications && notifications.length === 0) {\n          this.system().clearNotifications();\n        }\n      }\n\n      return componentDidUpdate;\n    }()\n  }, {\n    key: 'shouldComponentUpdate',\n    value: function () {\n      function shouldComponentUpdate(nextProps) {\n        return this.props !== nextProps;\n      }\n\n      return shouldComponentUpdate;\n    }()\n  }, {\n    key: 'render',\n    value: function () {\n      function render() {\n        var _props2 = this.props,\n            notifications = _props2.notifications,\n            store = _props2.store,\n            rest = _objectWithoutProperties(_props2, ['notifications', 'store']);\n\n        return _react2['default'].createElement(_reactNotificationSystem2['default'], _extends({ ref: this.notifyRef }, rest));\n      }\n\n      return render;\n    }()\n  }]);\n\n  return Notifications;\n}(_react2['default'].Component);\n\nNotifications.propTypes = {\n  notifications: _propTypes2['default'].array,\n  store: _propTypes2['default'].shape({\n    dispatch: _propTypes2['default'].func.isRequired\n  }).isRequired\n};\n\nvar NotificationsWithContext = function NotificationsWithContext(props) {\n  var Context = props.context || _reactRedux.ReactReduxContext;\n\n  if (Context == null) {\n    throw 'Please upgrade to react-redux v6';\n  }\n\n  return _react2['default'].createElement(\n    Context.Consumer,\n    null,\n    function (otherProps) {\n      var store = otherProps.store;\n\n      return _react2['default'].createElement(Notifications, _extends({ store: store }, props));\n    }\n  );\n};\n\nNotificationsWithContext.propTypes = {\n  context: _propTypes2['default'].object\n};\n\n// Tie actions to Notifications component instance\nObject.keys(actions).forEach(function (key) {\n  NotificationsWithContext[key] = actions[key];\n});\n\nNotificationsWithContext.reducer = _reducer2['default'];\n\nmodule.exports = NotificationsWithContext;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports['default'] = Notifications;\n\nvar _const = require('./const');\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction Notifications() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  switch (action.type) {\n    case _const.RNS_SHOW_NOTIFICATION:\n      var type = action.type,\n          rest = _objectWithoutProperties(action, ['type']);\n\n      return [].concat(_toConsumableArray(state), [_extends({}, rest, { uid: action.uid })]);\n    case _const.RNS_HIDE_NOTIFICATION:\n      return state.filter(function (notification) {\n        return notification.uid !== action.uid;\n      });\n    case _const.RNS_REMOVE_ALL_NOTIFICATIONS:\n      return [];\n  }\n  return state;\n}","var React = require('react');\nvar createReactClass = require('create-react-class');\nvar PropTypes = require('prop-types');\nvar NotificationItem = require('./NotificationItem');\nvar Constants = require('./constants');\n\nvar NotificationContainer = createReactClass({\n\n  propTypes: {\n    position: PropTypes.string.isRequired,\n    notifications: PropTypes.array.isRequired,\n    getStyles: PropTypes.object\n  },\n\n  _style: {},\n\n  componentWillMount: function() {\n    // Fix position if width is overrided\n    this._style = this.props.getStyles.container(this.props.position);\n\n    if (this.props.getStyles.overrideWidth && (this.props.position === Constants.positions.tc || this.props.position === Constants.positions.bc)) {\n      this._style.marginLeft = -(this.props.getStyles.overrideWidth / 2);\n    }\n  },\n\n  render: function() {\n    var self = this;\n    var notifications;\n\n    if ([Constants.positions.bl, Constants.positions.br, Constants.positions.bc].indexOf(this.props.position) > -1) {\n      this.props.notifications.reverse();\n    }\n\n    notifications = this.props.notifications.map(function(notification) {\n      return (\n        React.createElement(NotificationItem, {\n          ref:  'notification-' + notification.uid, \n          key:  notification.uid, \n          notification:  notification, \n          getStyles:  self.props.getStyles, \n          onRemove:  self.props.onRemove, \n          noAnimation:  self.props.noAnimation, \n          allowHTML:  self.props.allowHTML, \n          children:  self.props.children}\n        )\n      );\n    });\n\n    return (\n      React.createElement(\"div\", {className:  'notifications-' + this.props.position, style:  this._style}, \n         notifications \n      )\n    );\n  }\n});\n\n\nmodule.exports = NotificationContainer;\n","var React = require('react');\nvar createReactClass = require('create-react-class');\nvar PropTypes = require('prop-types');\nvar ReactDOM = require('react-dom');\nvar Constants = require('./constants');\nvar Helpers = require('./helpers');\nvar merge = require('object-assign');\n\n/* From Modernizr */\nvar whichTransitionEvent = function() {\n  var el = document.createElement('fakeelement');\n  var transition;\n  var transitions = {\n    transition: 'transitionend',\n    OTransition: 'oTransitionEnd',\n    MozTransition: 'transitionend',\n    WebkitTransition: 'webkitTransitionEnd'\n  };\n\n  Object.keys(transitions).forEach(function(transitionKey) {\n    if (el.style[transitionKey] !== undefined) {\n      transition = transitions[transitionKey];\n    }\n  });\n\n  return transition;\n};\n\nvar NotificationItem = createReactClass({\n  propTypes: {\n    notification: PropTypes.object,\n    getStyles: PropTypes.object,\n    onRemove: PropTypes.func,\n    allowHTML: PropTypes.bool,\n    noAnimation: PropTypes.bool,\n    children: PropTypes.oneOfType([\n      PropTypes.string,\n      PropTypes.element\n    ])\n  },\n\n  getDefaultProps: function() {\n    return {\n      noAnimation: false,\n      onRemove: function() {},\n      allowHTML: false\n    };\n  },\n\n  getInitialState: function() {\n    return {\n      visible: undefined,\n      removed: false\n    };\n  },\n\n  componentWillMount: function() {\n    var getStyles = this.props.getStyles;\n    var level = this.props.notification.level;\n    var dismissible = this.props.notification.dismissible;\n\n    this._noAnimation = this.props.noAnimation;\n\n    this._styles = {\n      notification: getStyles.byElement('notification')(level),\n      title: getStyles.byElement('title')(level),\n      dismiss: getStyles.byElement('dismiss')(level),\n      messageWrapper: getStyles.byElement('messageWrapper')(level),\n      actionWrapper: getStyles.byElement('actionWrapper')(level),\n      action: getStyles.byElement('action')(level)\n    };\n\n    if (!dismissible || dismissible === 'none' || dismissible === 'button') {\n      this._styles.notification.cursor = 'default';\n    }\n  },\n\n  _styles: {},\n\n  _notificationTimer: null,\n\n  _height: 0,\n\n  _noAnimation: null,\n\n  _isMounted: false,\n\n  _removeCount: 0,\n\n  _getCssPropertyByPosition: function() {\n    var position = this.props.notification.position;\n    var css = {};\n\n    switch (position) {\n    case Constants.positions.tl:\n    case Constants.positions.bl:\n      css = {\n        property: 'left',\n        value: -200\n      };\n      break;\n\n    case Constants.positions.tr:\n    case Constants.positions.br:\n      css = {\n        property: 'right',\n        value: -200\n      };\n      break;\n\n    case Constants.positions.tc:\n      css = {\n        property: 'top',\n        value: -100\n      };\n      break;\n\n    case Constants.positions.bc:\n      css = {\n        property: 'bottom',\n        value: -100\n      };\n      break;\n\n    default:\n    }\n\n    return css;\n  },\n\n  _defaultAction: function(event) {\n    var notification = this.props.notification;\n\n    event.preventDefault();\n    this._hideNotification();\n    if (typeof notification.action.callback === 'function') {\n      notification.action.callback();\n    }\n  },\n\n  _hideNotification: function() {\n    if (this._notificationTimer) {\n      this._notificationTimer.clear();\n    }\n\n    if (this._isMounted) {\n      this.setState({\n        visible: false,\n        removed: true\n      });\n    }\n\n    if (this._noAnimation) {\n      this._removeNotification();\n    }\n  },\n\n  _removeNotification: function() {\n    this.props.onRemove(this.props.notification.uid);\n  },\n\n  _dismiss: function() {\n    if (!this.props.notification.dismissible) {\n      return;\n    }\n\n    this._hideNotification();\n  },\n\n  _showNotification: function() {\n    var self = this;\n    setTimeout(function() {\n      if (self._isMounted) {\n        self.setState({\n          visible: true\n        });\n      }\n    }, 50);\n  },\n\n  _onTransitionEnd: function() {\n    if (this._removeCount > 0) return;\n    if (this.state.removed) {\n      this._removeCount += 1;\n      this._removeNotification();\n    }\n  },\n\n  componentDidMount: function() {\n    var self = this;\n    var transitionEvent = whichTransitionEvent();\n    var notification = this.props.notification;\n    var element = ReactDOM.findDOMNode(this);\n\n    this._height = element.offsetHeight;\n\n    this._isMounted = true;\n\n    // Watch for transition end\n    if (!this._noAnimation) {\n      if (transitionEvent) {\n        element.addEventListener(transitionEvent, this._onTransitionEnd);\n      } else {\n        this._noAnimation = true;\n      }\n    }\n\n\n    if (notification.autoDismiss) {\n      this._notificationTimer = new Helpers.Timer(function() {\n        self._hideNotification();\n      }, notification.autoDismiss * 1000);\n    }\n\n    this._showNotification();\n  },\n\n  _handleMouseEnter: function() {\n    var notification = this.props.notification;\n    if (notification.autoDismiss) {\n      this._notificationTimer.pause();\n    }\n  },\n\n  _handleMouseLeave: function() {\n    var notification = this.props.notification;\n    if (notification.autoDismiss) {\n      this._notificationTimer.resume();\n    }\n  },\n\n  _handleNotificationClick: function() {\n    var dismissible = this.props.notification.dismissible;\n    if (dismissible === 'both' || dismissible === 'click' || dismissible === true) {\n      this._dismiss();\n    }\n  },\n\n  componentWillUnmount: function() {\n    var element = ReactDOM.findDOMNode(this);\n    var transitionEvent = whichTransitionEvent();\n    element.removeEventListener(transitionEvent, this._onTransitionEnd);\n    this._isMounted = false;\n  },\n\n  _allowHTML: function(string) {\n    return { __html: string };\n  },\n\n  render: function() {\n    var notification = this.props.notification;\n    var className = 'notification notification-' + notification.level;\n    var notificationStyle = merge({}, this._styles.notification);\n    var cssByPos = this._getCssPropertyByPosition();\n    var dismiss = null;\n    var actionButton = null;\n    var title = null;\n    var message = null;\n\n    if (this.state.visible) {\n      className += ' notification-visible';\n    } else if (this.state.visible === false) {\n      className += ' notification-hidden';\n    }\n\n    if (notification.dismissible === 'none') {\n      className += ' notification-not-dismissible';\n    }\n\n    if (this.props.getStyles.overrideStyle) {\n      if (!this.state.visible && !this.state.removed) {\n        notificationStyle[cssByPos.property] = cssByPos.value;\n      }\n\n      if (this.state.visible && !this.state.removed) {\n        notificationStyle.height = this._height;\n        notificationStyle[cssByPos.property] = 0;\n      }\n\n      if (this.state.removed) {\n        notificationStyle.overlay = 'hidden';\n        notificationStyle.height = 0;\n        notificationStyle.marginTop = 0;\n        notificationStyle.paddingTop = 0;\n        notificationStyle.paddingBottom = 0;\n      }\n      notificationStyle.opacity = this.state.visible ? this._styles.notification.isVisible.opacity : this._styles.notification.isHidden.opacity;\n    }\n\n    if (notification.title) {\n      title = React.createElement(\"h4\", {className: \"notification-title\", style:  this._styles.title},  notification.title);\n    }\n\n    if (notification.message) {\n      if (this.props.allowHTML) {\n        message = (\n          React.createElement(\"div\", {className: \"notification-message\", style:  this._styles.messageWrapper, dangerouslySetInnerHTML:  this._allowHTML(notification.message) })\n        );\n      } else {\n        message = (\n          React.createElement(\"div\", {className: \"notification-message\", style:  this._styles.messageWrapper},  notification.message)\n        );\n      }\n    }\n    if (notification.dismissible === 'both' || notification.dismissible === 'button' || notification.dismissible === true) {\n      dismiss = React.createElement(\"span\", {className: \"notification-dismiss\", onClick:  this._dismiss, style:  this._styles.dismiss}, \"×\");\n    }\n\n    if (notification.action) {\n      actionButton = (\n        React.createElement(\"div\", {className: \"notification-action-wrapper\", style:  this._styles.actionWrapper}, \n          React.createElement(\"button\", {className: \"notification-action-button\", \n            onClick:  this._defaultAction, \n            style:  this._styles.action}, \n             notification.action.label\n          )\n        )\n      );\n    }\n\n    if (notification.children) {\n      actionButton = notification.children;\n    }\n\n    return (\n      React.createElement(\"div\", {className:  className, onClick:  this._handleNotificationClick, onMouseEnter:  this._handleMouseEnter, onMouseLeave:  this._handleMouseLeave, style:  notificationStyle }, \n         title, \n         message, \n         dismiss, \n         actionButton \n      )\n    );\n  }\n\n});\n\nmodule.exports = NotificationItem;\n","var React = require('react');\nvar createReactClass = require('create-react-class');\nvar PropTypes = require('prop-types');\nvar merge = require('object-assign');\nvar NotificationContainer = require('./NotificationContainer');\nvar Constants = require('./constants');\nvar Styles = require('./styles');\n\nvar NotificationSystem = createReactClass({\n\n  uid: 3400,\n\n  _isMounted: false,\n\n  _getStyles: {\n    overrideStyle: {},\n\n    overrideWidth: null,\n\n    setOverrideStyle: function(style) {\n      this.overrideStyle = style;\n    },\n\n    wrapper: function() {\n      if (!this.overrideStyle) return {};\n      return merge({}, Styles.Wrapper, this.overrideStyle.Wrapper);\n    },\n\n    container: function(position) {\n      var override = this.overrideStyle.Containers || {};\n      if (!this.overrideStyle) return {};\n\n      this.overrideWidth = Styles.Containers.DefaultStyle.width;\n\n      if (override.DefaultStyle && override.DefaultStyle.width) {\n        this.overrideWidth = override.DefaultStyle.width;\n      }\n\n      if (override[position] && override[position].width) {\n        this.overrideWidth = override[position].width;\n      }\n\n      return merge({}, Styles.Containers.DefaultStyle, Styles.Containers[position], override.DefaultStyle, override[position]);\n    },\n\n    elements: {\n      notification: 'NotificationItem',\n      title: 'Title',\n      messageWrapper: 'MessageWrapper',\n      dismiss: 'Dismiss',\n      action: 'Action',\n      actionWrapper: 'ActionWrapper'\n    },\n\n    byElement: function(element) {\n      var self = this;\n      return function(level) {\n        var _element = self.elements[element];\n        var override = self.overrideStyle[_element] || {};\n        if (!self.overrideStyle) return {};\n        return merge({}, Styles[_element].DefaultStyle, Styles[_element][level], override.DefaultStyle, override[level]);\n      };\n    }\n  },\n\n  _didNotificationRemoved: function(uid) {\n    var notification;\n    var notifications = this.state.notifications.filter(function(toCheck) {\n      if (toCheck.uid === uid) {\n        notification = toCheck;\n        return false;\n      }\n      return true;\n    });\n\n    if (this._isMounted) {\n      this.setState({ notifications: notifications });\n    }\n\n    if (notification && notification.onRemove) {\n      notification.onRemove(notification);\n    }\n  },\n\n  getInitialState: function() {\n    return {\n      notifications: []\n    };\n  },\n\n  propTypes: {\n    style: PropTypes.oneOfType([\n      PropTypes.bool,\n      PropTypes.object\n    ]),\n    noAnimation: PropTypes.bool,\n    allowHTML: PropTypes.bool\n  },\n\n  getDefaultProps: function() {\n    return {\n      style: {},\n      noAnimation: false,\n      allowHTML: false\n    };\n  },\n\n  addNotification: function(notification) {\n    var _notification = merge({}, Constants.notification, notification);\n    var notifications = this.state.notifications;\n    var i;\n\n    if (!_notification.level) {\n      throw new Error('notification level is required.');\n    }\n\n    if (Object.keys(Constants.levels).indexOf(_notification.level) === -1) {\n      throw new Error('\\'' + _notification.level + '\\' is not a valid level.');\n    }\n\n    // eslint-disable-next-line\n    if (isNaN(_notification.autoDismiss)) {\n      throw new Error('\\'autoDismiss\\' must be a number.');\n    }\n\n    if (Object.keys(Constants.positions).indexOf(_notification.position) === -1) {\n      throw new Error('\\'' + _notification.position + '\\' is not a valid position.');\n    }\n\n    // Some preparations\n    _notification.position = _notification.position.toLowerCase();\n    _notification.level = _notification.level.toLowerCase();\n    _notification.autoDismiss = parseInt(_notification.autoDismiss, 10);\n\n    _notification.uid = _notification.uid || this.uid;\n    _notification.ref = 'notification-' + _notification.uid;\n    this.uid += 1;\n\n    // do not add if the notification already exists based on supplied uid\n    for (i = 0; i < notifications.length; i += 1) {\n      if (notifications[i].uid === _notification.uid) {\n        return false;\n      }\n    }\n\n    notifications.push(_notification);\n\n    if (typeof _notification.onAdd === 'function') {\n      notification.onAdd(_notification);\n    }\n\n    this.setState({\n      notifications: notifications\n    });\n\n    return _notification;\n  },\n\n  getNotificationRef: function(notification) {\n    var self = this;\n    var foundNotification = null;\n\n    Object.keys(this.refs).forEach(function(container) {\n      if (container.indexOf('container') > -1) {\n        Object.keys(self.refs[container].refs).forEach(function(_notification) {\n          var uid = notification.uid ? notification.uid : notification;\n          if (_notification === 'notification-' + uid) {\n            // NOTE: Stop iterating further and return the found notification.\n            // Since UIDs are uniques and there won't be another notification found.\n            foundNotification = self.refs[container].refs[_notification];\n          }\n        });\n      }\n    });\n\n    return foundNotification;\n  },\n\n  removeNotification: function(notification) {\n    var foundNotification = this.getNotificationRef(notification);\n    return foundNotification && foundNotification._hideNotification();\n  },\n\n  editNotification: function(notification, newNotification) {\n    var foundNotification = null;\n    // NOTE: Find state notification to update by using\n    // `setState` and forcing React to re-render the component.\n    var uid = notification.uid ? notification.uid : notification;\n\n    var newNotifications = this.state.notifications.filter(function(stateNotification) {\n      if (uid === stateNotification.uid) {\n        foundNotification = stateNotification;\n        return false;\n      }\n\n      return true;\n    });\n\n\n    if (!foundNotification) {\n      return;\n    }\n\n    newNotifications.push(merge(\n      {},\n      foundNotification,\n      newNotification\n    ));\n\n    this.setState({\n      notifications: newNotifications\n    });\n  },\n\n  clearNotifications: function() {\n    var self = this;\n    Object.keys(this.refs).forEach(function(container) {\n      if (container.indexOf('container') > -1) {\n        Object.keys(self.refs[container].refs).forEach(function(_notification) {\n          self.refs[container].refs[_notification]._hideNotification();\n        });\n      }\n    });\n  },\n\n  componentDidMount: function() {\n    this._getStyles.setOverrideStyle(this.props.style);\n    this._isMounted = true;\n  },\n\n  componentWillUnmount: function() {\n    this._isMounted = false;\n  },\n\n  render: function() {\n    var self = this;\n    var containers = null;\n    var notifications = this.state.notifications;\n\n    if (notifications.length) {\n      containers = Object.keys(Constants.positions).map(function(position) {\n        var _notifications = notifications.filter(function(notification) {\n          return position === notification.position;\n        });\n\n        if (!_notifications.length) {\n          return null;\n        }\n\n        return (\n          React.createElement(NotificationContainer, {\n            ref:  'container-' + position, \n            key:  position, \n            position:  position, \n            notifications:  _notifications, \n            getStyles:  self._getStyles, \n            onRemove:  self._didNotificationRemoved, \n            noAnimation:  self.props.noAnimation, \n            allowHTML:  self.props.allowHTML}\n          )\n        );\n      });\n    }\n\n\n    return (\n      React.createElement(\"div\", {className: \"notifications-wrapper\", style:  this._getStyles.wrapper() }, \n         containers \n      )\n    );\n  }\n});\n\nmodule.exports = NotificationSystem;\n","var CONSTANTS = {\n\n  // Positions\n  positions: {\n    tl: 'tl',\n    tr: 'tr',\n    tc: 'tc',\n    bl: 'bl',\n    br: 'br',\n    bc: 'bc'\n  },\n\n  // Levels\n  levels: {\n    success: 'success',\n    error: 'error',\n    warning: 'warning',\n    info: 'info'\n  },\n\n  // Notification defaults\n  notification: {\n    title: null,\n    message: null,\n    level: null,\n    position: 'tr',\n    autoDismiss: 5,\n    dismissible: 'both',\n    action: null\n  }\n};\n\n\nmodule.exports = CONSTANTS;\n","var Helpers = {\n  Timer: function(callback, delay) {\n    var timerId;\n    var start;\n    var remaining = delay;\n\n    this.pause = function() {\n      clearTimeout(timerId);\n      remaining -= new Date() - start;\n    };\n\n    this.resume = function() {\n      start = new Date();\n      clearTimeout(timerId);\n      timerId = setTimeout(callback, remaining);\n    };\n\n    this.clear = function() {\n      clearTimeout(timerId);\n    };\n\n    this.resume();\n  }\n};\n\nmodule.exports = Helpers;\n","// Used for calculations\nvar defaultWidth = 320;\nvar defaultColors = {\n  success: {\n    rgb: '94, 164, 0',\n    hex: '#5ea400'\n  },\n  error: {\n    rgb: '236, 61, 61',\n    hex: '#ec3d3d'\n  },\n  warning: {\n    rgb: '235, 173, 23',\n    hex: '#ebad1a'\n  },\n  info: {\n    rgb: '54, 156, 199',\n    hex: '#369cc7'\n  }\n};\nvar defaultShadowOpacity = '0.9';\n\nvar STYLES = {\n\n  Wrapper: {},\n  Containers: {\n    DefaultStyle: {\n      fontFamily: 'inherit',\n      position: 'fixed',\n      width: defaultWidth,\n      padding: '0 10px 10px 10px',\n      zIndex: 9998,\n      WebkitBoxSizing: 'border-box',\n      MozBoxSizing: 'border-box',\n      boxSizing: 'border-box',\n      height: 'auto'\n    },\n\n    tl: {\n      top: '0px',\n      bottom: 'auto',\n      left: '0px',\n      right: 'auto'\n    },\n\n    tr: {\n      top: '0px',\n      bottom: 'auto',\n      left: 'auto',\n      right: '0px'\n    },\n\n    tc: {\n      top: '0px',\n      bottom: 'auto',\n      margin: '0 auto',\n      left: '50%',\n      marginLeft: -(defaultWidth / 2)\n    },\n\n    bl: {\n      top: 'auto',\n      bottom: '0px',\n      left: '0px',\n      right: 'auto'\n    },\n\n    br: {\n      top: 'auto',\n      bottom: '0px',\n      left: 'auto',\n      right: '0px'\n    },\n\n    bc: {\n      top: 'auto',\n      bottom: '0px',\n      margin: '0 auto',\n      left: '50%',\n      marginLeft: -(defaultWidth / 2)\n    }\n\n  },\n\n  NotificationItem: {\n    DefaultStyle: {\n      position: 'relative',\n      width: '100%',\n      cursor: 'pointer',\n      borderRadius: '2px',\n      fontSize: '13px',\n      margin: '10px 0 0',\n      padding: '10px',\n      display: 'block',\n      WebkitBoxSizing: 'border-box',\n      MozBoxSizing: 'border-box',\n      boxSizing: 'border-box',\n      opacity: 0,\n      transition: '0.3s ease-in-out',\n      WebkitTransform: 'translate3d(0, 0, 0)',\n      transform: 'translate3d(0, 0, 0)',\n      willChange: 'transform, opacity',\n\n      isHidden: {\n        opacity: 0\n      },\n\n      isVisible: {\n        opacity: 1\n      }\n    },\n\n    success: {\n      borderTop: '2px solid ' + defaultColors.success.hex,\n      backgroundColor: '#f0f5ea',\n      color: '#4b583a',\n      WebkitBoxShadow: '0 0 1px rgba(' + defaultColors.success.rgb + ',' + defaultShadowOpacity + ')',\n      MozBoxShadow: '0 0 1px rgba(' + defaultColors.success.rgb + ',' + defaultShadowOpacity + ')',\n      boxShadow: '0 0 1px rgba(' + defaultColors.success.rgb + ',' + defaultShadowOpacity + ')'\n    },\n\n    error: {\n      borderTop: '2px solid ' + defaultColors.error.hex,\n      backgroundColor: '#f4e9e9',\n      color: '#412f2f',\n      WebkitBoxShadow: '0 0 1px rgba(' + defaultColors.error.rgb + ',' + defaultShadowOpacity + ')',\n      MozBoxShadow: '0 0 1px rgba(' + defaultColors.error.rgb + ',' + defaultShadowOpacity + ')',\n      boxShadow: '0 0 1px rgba(' + defaultColors.error.rgb + ',' + defaultShadowOpacity + ')'\n    },\n\n    warning: {\n      borderTop: '2px solid ' + defaultColors.warning.hex,\n      backgroundColor: '#f9f6f0',\n      color: '#5a5343',\n      WebkitBoxShadow: '0 0 1px rgba(' + defaultColors.warning.rgb + ',' + defaultShadowOpacity + ')',\n      MozBoxShadow: '0 0 1px rgba(' + defaultColors.warning.rgb + ',' + defaultShadowOpacity + ')',\n      boxShadow: '0 0 1px rgba(' + defaultColors.warning.rgb + ',' + defaultShadowOpacity + ')'\n    },\n\n    info: {\n      borderTop: '2px solid ' + defaultColors.info.hex,\n      backgroundColor: '#e8f0f4',\n      color: '#41555d',\n      WebkitBoxShadow: '0 0 1px rgba(' + defaultColors.info.rgb + ',' + defaultShadowOpacity + ')',\n      MozBoxShadow: '0 0 1px rgba(' + defaultColors.info.rgb + ',' + defaultShadowOpacity + ')',\n      boxShadow: '0 0 1px rgba(' + defaultColors.info.rgb + ',' + defaultShadowOpacity + ')'\n    }\n  },\n\n  Title: {\n    DefaultStyle: {\n      fontSize: '14px',\n      margin: '0 0 5px 0',\n      padding: 0,\n      fontWeight: 'bold'\n    },\n\n    success: {\n      color: defaultColors.success.hex\n    },\n\n    error: {\n      color: defaultColors.error.hex\n    },\n\n    warning: {\n      color: defaultColors.warning.hex\n    },\n\n    info: {\n      color: defaultColors.info.hex\n    }\n\n  },\n\n  MessageWrapper: {\n    DefaultStyle: {\n      margin: 0,\n      padding: 0\n    }\n  },\n\n  Dismiss: {\n    DefaultStyle: {\n      cursor: 'pointer',\n      fontFamily: 'Arial',\n      fontSize: '17px',\n      position: 'absolute',\n      top: '4px',\n      right: '5px',\n      lineHeight: '15px',\n      backgroundColor: '#dededf',\n      color: '#ffffff',\n      borderRadius: '50%',\n      width: '14px',\n      height: '14px',\n      fontWeight: 'bold',\n      textAlign: 'center'\n    },\n\n    success: {\n      color: '#f0f5ea',\n      backgroundColor: '#b0ca92'\n    },\n\n    error: {\n      color: '#f4e9e9',\n      backgroundColor: '#e4bebe'\n    },\n\n    warning: {\n      color: '#f9f6f0',\n      backgroundColor: '#e1cfac'\n    },\n\n    info: {\n      color: '#e8f0f4',\n      backgroundColor: '#a4becb'\n    }\n  },\n\n  Action: {\n    DefaultStyle: {\n      background: '#ffffff',\n      borderRadius: '2px',\n      padding: '6px 20px',\n      fontWeight: 'bold',\n      margin: '10px 0 0 0',\n      border: 0\n    },\n\n    success: {\n      backgroundColor: defaultColors.success.hex,\n      color: '#ffffff'\n    },\n\n    error: {\n      backgroundColor: defaultColors.error.hex,\n      color: '#ffffff'\n    },\n\n    warning: {\n      backgroundColor: defaultColors.warning.hex,\n      color: '#ffffff'\n    },\n\n    info: {\n      backgroundColor: defaultColors.info.hex,\n      color: '#ffffff'\n    }\n  },\n\n  ActionWrapper: {\n    DefaultStyle: {\n      margin: 0,\n      padding: 0\n    }\n  }\n};\n\nmodule.exports = STYLES;\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n  ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n  callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n  return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n  return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nvar nullListeners = {\n  notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n  var batch = getBatch();\n  var first = null;\n  var last = null;\n  return {\n    clear: function clear() {\n      first = null;\n      last = null;\n    },\n    notify: function notify() {\n      batch(function () {\n        var listener = first;\n\n        while (listener) {\n          listener.callback();\n          listener = listener.next;\n        }\n      });\n    },\n    get: function get() {\n      var listeners = [];\n      var listener = first;\n\n      while (listener) {\n        listeners.push(listener);\n        listener = listener.next;\n      }\n\n      return listeners;\n    },\n    subscribe: function subscribe(callback) {\n      var isSubscribed = true;\n      var listener = last = {\n        callback: callback,\n        next: null,\n        prev: last\n      };\n\n      if (listener.prev) {\n        listener.prev.next = listener;\n      } else {\n        first = listener;\n      }\n\n      return function unsubscribe() {\n        if (!isSubscribed || first === null) return;\n        isSubscribed = false;\n\n        if (listener.next) {\n          listener.next.prev = listener.prev;\n        } else {\n          last = listener.prev;\n        }\n\n        if (listener.prev) {\n          listener.prev.next = listener.next;\n        } else {\n          first = listener.next;\n        }\n      };\n    }\n  };\n}\n\nvar Subscription = /*#__PURE__*/function () {\n  function Subscription(store, parentSub) {\n    this.store = store;\n    this.parentSub = parentSub;\n    this.unsubscribe = null;\n    this.listeners = nullListeners;\n    this.handleChangeWrapper = this.handleChangeWrapper.bind(this);\n  }\n\n  var _proto = Subscription.prototype;\n\n  _proto.addNestedSub = function addNestedSub(listener) {\n    this.trySubscribe();\n    return this.listeners.subscribe(listener);\n  };\n\n  _proto.notifyNestedSubs = function notifyNestedSubs() {\n    this.listeners.notify();\n  };\n\n  _proto.handleChangeWrapper = function handleChangeWrapper() {\n    if (this.onStateChange) {\n      this.onStateChange();\n    }\n  };\n\n  _proto.isSubscribed = function isSubscribed() {\n    return Boolean(this.unsubscribe);\n  };\n\n  _proto.trySubscribe = function trySubscribe() {\n    if (!this.unsubscribe) {\n      this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper);\n      this.listeners = createListenerCollection();\n    }\n  };\n\n  _proto.tryUnsubscribe = function tryUnsubscribe() {\n    if (this.unsubscribe) {\n      this.unsubscribe();\n      this.unsubscribe = null;\n      this.listeners.clear();\n      this.listeners = nullListeners;\n    }\n  };\n\n  return Subscription;\n}();\n\nexport { Subscription as default };","import React, { useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport Subscription from '../utils/Subscription';\n\nfunction Provider(_ref) {\n  var store = _ref.store,\n      context = _ref.context,\n      children = _ref.children;\n  var contextValue = useMemo(function () {\n    var subscription = new Subscription(store);\n    subscription.onStateChange = subscription.notifyNestedSubs;\n    return {\n      store: store,\n      subscription: subscription\n    };\n  }, [store]);\n  var previousState = useMemo(function () {\n    return store.getState();\n  }, [store]);\n  useEffect(function () {\n    var subscription = contextValue.subscription;\n    subscription.trySubscribe();\n\n    if (previousState !== store.getState()) {\n      subscription.notifyNestedSubs();\n    }\n\n    return function () {\n      subscription.tryUnsubscribe();\n      subscription.onStateChange = null;\n    };\n  }, [contextValue, previousState]);\n  var Context = context || ReactReduxContext;\n  return /*#__PURE__*/React.createElement(Context.Provider, {\n    value: contextValue\n  }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  Provider.propTypes = {\n    store: PropTypes.shape({\n      subscribe: PropTypes.func.isRequired,\n      dispatch: PropTypes.func.isRequired,\n      getState: PropTypes.func.isRequired\n    }),\n    context: PropTypes.object,\n    children: PropTypes.any\n  };\n}\n\nexport default Provider;","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n  try {\n    return JSON.stringify(Comp);\n  } catch (err) {\n    return String(Comp);\n  }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n  var updateCount = state[1];\n  return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n  useIsomorphicLayoutEffect(function () {\n    return effectFunc.apply(void 0, effectArgs);\n  }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n  // We want to capture the wrapper props and child props we used for later comparisons\n  lastWrapperProps.current = wrapperProps;\n  lastChildProps.current = actualChildProps;\n  renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n  if (childPropsFromStoreUpdate.current) {\n    childPropsFromStoreUpdate.current = null;\n    notifyNestedSubs();\n  }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n  // If we're not subscribed to the store, nothing to do here\n  if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n  var didUnsubscribe = false;\n  var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n  var checkForUpdates = function checkForUpdates() {\n    if (didUnsubscribe) {\n      // Don't run stale listeners.\n      // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n      return;\n    }\n\n    var latestStoreState = store.getState();\n    var newChildProps, error;\n\n    try {\n      // Actually run the selector with the most recent store state and wrapper props\n      // to determine what the child props should be\n      newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n    } catch (e) {\n      error = e;\n      lastThrownError = e;\n    }\n\n    if (!error) {\n      lastThrownError = null;\n    } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n    if (newChildProps === lastChildProps.current) {\n      if (!renderIsScheduled.current) {\n        notifyNestedSubs();\n      }\n    } else {\n      // Save references to the new child props.  Note that we track the \"child props from store update\"\n      // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n      // been processed.  If this went into useState/useReducer, we couldn't clear out the value without\n      // forcing another re-render, which we don't want.\n      lastChildProps.current = newChildProps;\n      childPropsFromStoreUpdate.current = newChildProps;\n      renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n      forceComponentUpdateDispatch({\n        type: 'STORE_UPDATED',\n        payload: {\n          error: error\n        }\n      });\n    }\n  }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n  subscription.onStateChange = checkForUpdates;\n  subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n  // changed since we began.\n\n  checkForUpdates();\n\n  var unsubscribeWrapper = function unsubscribeWrapper() {\n    didUnsubscribe = true;\n    subscription.tryUnsubscribe();\n    subscription.onStateChange = null;\n\n    if (lastThrownError) {\n      // It's possible that we caught an error due to a bad mapState function, but the\n      // parent re-rendered without this component and we're about to unmount.\n      // This shouldn't happen as long as we do top-down subscriptions correctly, but\n      // if we ever do those wrong, this throw will surface the error in our tests.\n      // In that case, throw the error from here so it doesn't get lost.\n      throw lastThrownError;\n    }\n  };\n\n  return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n  return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\n  selectorFactory is a func that is responsible for returning the selector function used to\n  compute new props from state, props, and dispatch. For example:\n     export default connectAdvanced((dispatch, options) => (state, props) => ({\n      thing: state.things[props.thingId],\n      saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n    }))(YourComponent)\n   Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n  outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n  the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n   Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n  props. Do not use connectAdvanced directly without memoizing results between calls to your\n  selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n  if (_ref === void 0) {\n    _ref = {};\n  }\n\n  var _ref2 = _ref,\n      _ref2$getDisplayName = _ref2.getDisplayName,\n      getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n    return \"ConnectAdvanced(\" + name + \")\";\n  } : _ref2$getDisplayName,\n      _ref2$methodName = _ref2.methodName,\n      methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n      _ref2$renderCountProp = _ref2.renderCountProp,\n      renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n      _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n      shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n      _ref2$storeKey = _ref2.storeKey,\n      storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n      _ref2$withRef = _ref2.withRef,\n      withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n      _ref2$forwardRef = _ref2.forwardRef,\n      forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n      _ref2$context = _ref2.context,\n      context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n      connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (renderCountProp !== undefined) {\n      throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n    }\n\n    if (withRef) {\n      throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n    }\n\n    var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n    if (storeKey !== 'store') {\n      throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n    }\n  }\n\n  var Context = context;\n  return function wrapWithConnect(WrappedComponent) {\n    if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n      throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n    }\n\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n    var displayName = getDisplayName(wrappedComponentName);\n\n    var selectorFactoryOptions = _extends({}, connectOptions, {\n      getDisplayName: getDisplayName,\n      methodName: methodName,\n      renderCountProp: renderCountProp,\n      shouldHandleStateChanges: shouldHandleStateChanges,\n      storeKey: storeKey,\n      displayName: displayName,\n      wrappedComponentName: wrappedComponentName,\n      WrappedComponent: WrappedComponent\n    });\n\n    var pure = connectOptions.pure;\n\n    function createChildSelector(store) {\n      return selectorFactory(store.dispatch, selectorFactoryOptions);\n    } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n    // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n    // that just executes the given callback immediately.\n\n\n    var usePureOnlyMemo = pure ? useMemo : function (callback) {\n      return callback();\n    };\n\n    function ConnectFunction(props) {\n      var _useMemo = useMemo(function () {\n        // Distinguish between actual \"data\" props that were passed to the wrapper component,\n        // and values needed to control behavior (forwarded refs, alternate context instances).\n        // To maintain the wrapperProps object reference, memoize this destructuring.\n        var reactReduxForwardedRef = props.reactReduxForwardedRef,\n            wrapperProps = _objectWithoutPropertiesLoose(props, [\"reactReduxForwardedRef\"]);\n\n        return [props.context, reactReduxForwardedRef, wrapperProps];\n      }, [props]),\n          propsContext = _useMemo[0],\n          reactReduxForwardedRef = _useMemo[1],\n          wrapperProps = _useMemo[2];\n\n      var ContextToUse = useMemo(function () {\n        // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n        // Memoize the check that determines which context instance we should use.\n        return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n      }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n      var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n      // We'll check to see if it _looks_ like a Redux store first.\n      // This allows us to pass through a `store` prop that is just a plain value.\n\n      var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n      var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n      if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n        throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n      } // Based on the previous check, one of these must be true\n\n\n      var store = didStoreComeFromProps ? props.store : contextValue.store;\n      var childPropsSelector = useMemo(function () {\n        // The child props selector needs the store reference as an input.\n        // Re-create this selector whenever the store changes.\n        return createChildSelector(store);\n      }, [store]);\n\n      var _useMemo2 = useMemo(function () {\n        if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n        var subscription = new Subscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n\n        var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n        return [subscription, notifyNestedSubs];\n      }, [store, didStoreComeFromProps, contextValue]),\n          subscription = _useMemo2[0],\n          notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n      // and memoize that value to avoid unnecessary context updates.\n\n\n      var overriddenContextValue = useMemo(function () {\n        if (didStoreComeFromProps) {\n          // This component is directly subscribed to a store from props.\n          // We don't want descendants reading from this store - pass down whatever\n          // the existing context value is from the nearest connected ancestor.\n          return contextValue;\n        } // Otherwise, put this component's subscription instance into context, so that\n        // connected descendants won't update until after this component is done\n\n\n        return _extends({}, contextValue, {\n          subscription: subscription\n        });\n      }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n      // causes a change to the calculated child component props (or we caught an error in mapState)\n\n      var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n          _useReducer$ = _useReducer[0],\n          previousStateUpdateResult = _useReducer$[0],\n          forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n      if (previousStateUpdateResult && previousStateUpdateResult.error) {\n        throw previousStateUpdateResult.error;\n      } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n      var lastChildProps = useRef();\n      var lastWrapperProps = useRef(wrapperProps);\n      var childPropsFromStoreUpdate = useRef();\n      var renderIsScheduled = useRef(false);\n      var actualChildProps = usePureOnlyMemo(function () {\n        // Tricky logic here:\n        // - This render may have been triggered by a Redux store update that produced new child props\n        // - However, we may have gotten new wrapper props after that\n        // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n        // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n        // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n        if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n          return childPropsFromStoreUpdate.current;\n        } // TODO We're reading the store directly in render() here. Bad idea?\n        // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n        // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n        // to determine what the child props should be.\n\n\n        return childPropsSelector(store.getState(), wrapperProps);\n      }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n      // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n      // just useEffect instead to avoid the warning, since neither will run anyway.\n\n      useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n      useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n      // We memoize the elements for the rendered child component as an optimization.\n\n      var renderedWrappedComponent = useMemo(function () {\n        return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n          ref: reactReduxForwardedRef\n        }));\n      }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n      // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n      var renderedChild = useMemo(function () {\n        if (shouldHandleStateChanges) {\n          // If this component is subscribed to store updates, we need to pass its own\n          // subscription instance down to our descendants. That means rendering the same\n          // Context instance, and putting a different value into the context.\n          return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n            value: overriddenContextValue\n          }, renderedWrappedComponent);\n        }\n\n        return renderedWrappedComponent;\n      }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n      return renderedChild;\n    } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n    var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n    Connect.WrappedComponent = WrappedComponent;\n    Connect.displayName = displayName;\n\n    if (forwardRef) {\n      var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n        return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n          reactReduxForwardedRef: ref\n        }));\n      });\n      forwarded.displayName = displayName;\n      forwarded.WrappedComponent = WrappedComponent;\n      return hoistStatics(forwarded, WrappedComponent);\n    }\n\n    return hoistStatics(Connect, WrappedComponent);\n  };\n}","function is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nexport default function shallowEqual(objA, objB) {\n  if (is(objA, objB)) return true;\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return false;\n\n  for (var i = 0; i < keysA.length; i++) {\n    if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n  return function initConstantSelector(dispatch, options) {\n    var constant = getConstant(dispatch, options);\n\n    function constantSelector() {\n      return constant;\n    }\n\n    constantSelector.dependsOnOwnProps = false;\n    return constantSelector;\n  };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n  return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n//  * Detects whether the mapToProps function being called depends on props, which\n//    is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n//  * On first call, handles mapToProps if returns another function, and treats that\n//    new function as the true mapToProps for subsequent calls.\n//\n//  * On first call, verifies the first result is a plain object, in order to warn\n//    the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n  return function initProxySelector(dispatch, _ref) {\n    var displayName = _ref.displayName;\n\n    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n    }; // allow detectFactoryAndVerify to get ownProps\n\n\n    proxy.dependsOnOwnProps = true;\n\n    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n      proxy.mapToProps = mapToProps;\n      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n      var props = proxy(stateOrDispatch, ownProps);\n\n      if (typeof props === 'function') {\n        proxy.mapToProps = props;\n        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n        props = proxy(stateOrDispatch, ownProps);\n      }\n\n      if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n      return props;\n    };\n\n    return proxy;\n  };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n  return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n  return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n    return {\n      dispatch: dispatch\n    };\n  }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n    return bindActionCreators(mapDispatchToProps, dispatch);\n  }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n  return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n  return !mapStateToProps ? wrapMapToPropsConstant(function () {\n    return {};\n  }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n  return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n  return function initMergePropsProxy(dispatch, _ref) {\n    var displayName = _ref.displayName,\n        pure = _ref.pure,\n        areMergedPropsEqual = _ref.areMergedPropsEqual;\n    var hasRunOnce = false;\n    var mergedProps;\n    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n      if (hasRunOnce) {\n        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n      } else {\n        hasRunOnce = true;\n        mergedProps = nextMergedProps;\n        if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n      }\n\n      return mergedProps;\n    };\n  };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n  return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n  return !mergeProps ? function () {\n    return defaultMergeProps;\n  } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n  return function impureFinalPropsSelector(state, ownProps) {\n    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n  };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n  var areStatesEqual = _ref.areStatesEqual,\n      areOwnPropsEqual = _ref.areOwnPropsEqual,\n      areStatePropsEqual = _ref.areStatePropsEqual;\n  var hasRunAtLeastOnce = false;\n  var state;\n  var ownProps;\n  var stateProps;\n  var dispatchProps;\n  var mergedProps;\n\n  function handleFirstCall(firstState, firstOwnProps) {\n    state = firstState;\n    ownProps = firstOwnProps;\n    stateProps = mapStateToProps(state, ownProps);\n    dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    hasRunAtLeastOnce = true;\n    return mergedProps;\n  }\n\n  function handleNewPropsAndNewState() {\n    stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewProps() {\n    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewState() {\n    var nextStateProps = mapStateToProps(state, ownProps);\n    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n    stateProps = nextStateProps;\n    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleSubsequentCalls(nextState, nextOwnProps) {\n    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n    var stateChanged = !areStatesEqual(nextState, state);\n    state = nextState;\n    ownProps = nextOwnProps;\n    if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n    if (propsChanged) return handleNewProps();\n    if (stateChanged) return handleNewState();\n    return mergedProps;\n  }\n\n  return function pureFinalPropsSelector(nextState, nextOwnProps) {\n    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n  };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n  var initMapStateToProps = _ref2.initMapStateToProps,\n      initMapDispatchToProps = _ref2.initMapDispatchToProps,\n      initMergeProps = _ref2.initMergeProps,\n      options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n  var mapStateToProps = initMapStateToProps(dispatch, options);\n  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n  var mergeProps = initMergeProps(dispatch, options);\n\n  if (process.env.NODE_ENV !== 'production') {\n    verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n  }\n\n  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n  connect is a facade over connectAdvanced. It turns its args into a compatible\n  selectorFactory, which has the signature:\n\n    (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n  \n  connect passes its args to connectAdvanced as options, which will in turn pass them to\n  selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n  selectorFactory returns a final props selector from its mapStateToProps,\n  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n  mergePropsFactories, and pure args.\n\n  The resulting final props selector is called by the Connect component instance whenever\n  it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n  for (var i = factories.length - 1; i >= 0; i--) {\n    var result = factories[i](arg);\n    if (result) return result;\n  }\n\n  return function (dispatch, options) {\n    throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n  };\n}\n\nfunction strictEqual(a, b) {\n  return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$connectHOC = _ref.connectHOC,\n      connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n      mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n      mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n      _ref$mergePropsFactor = _ref.mergePropsFactories,\n      mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n      _ref$selectorFactory = _ref.selectorFactory,\n      selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n  return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n    if (_ref2 === void 0) {\n      _ref2 = {};\n    }\n\n    var _ref3 = _ref2,\n        _ref3$pure = _ref3.pure,\n        pure = _ref3$pure === void 0 ? true : _ref3$pure,\n        _ref3$areStatesEqual = _ref3.areStatesEqual,\n        areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n        _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n        areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n        _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n        areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n        _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n        areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n        extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n    var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n    return connectHOC(selectorFactory, _extends({\n      // used in error messages\n      methodName: 'connect',\n      // used to compute Connect's displayName from the wrapped component's displayName.\n      getDisplayName: function getDisplayName(name) {\n        return \"Connect(\" + name + \")\";\n      },\n      // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n      shouldHandleStateChanges: Boolean(mapStateToProps),\n      // passed through to selectorFactory\n      initMapStateToProps: initMapStateToProps,\n      initMapDispatchToProps: initMapDispatchToProps,\n      initMergeProps: initMergeProps,\n      pure: pure,\n      areStatesEqual: areStatesEqual,\n      areOwnPropsEqual: areOwnPropsEqual,\n      areStatePropsEqual: areStatePropsEqual,\n      areMergedPropsEqual: areMergedPropsEqual\n    }, extraOptions));\n  };\n}\nexport default /*#__PURE__*/createConnect();","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\n * hook that you should usually not need to call directly.\n *\n * @returns {any} the value of the `ReactReduxContext`\n *\n * @example\n *\n * import React from 'react'\n * import { useReduxContext } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n *   const { store } = useReduxContext()\n *   return <div>{store.getState()}</div>\n * }\n */\n\nexport function useReduxContext() {\n  var contextValue = useContext(ReactReduxContext);\n\n  if (process.env.NODE_ENV !== 'production' && !contextValue) {\n    throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n  }\n\n  return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\n * Hook factory, which creates a `useStore` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useStore` hook bound to the specified context.\n */\n\nexport function createStoreHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useStore() {\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store;\n\n    return store;\n  };\n}\n/**\n * A hook to access the redux store.\n *\n * @returns {any} the redux store\n *\n * @example\n *\n * import React from 'react'\n * import { useStore } from 'react-redux'\n *\n * export const ExampleComponent = () => {\n *   const store = useStore()\n *   return <div>{store.getState()}</div>\n * }\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useDispatch` hook bound to the specified context.\n */\n\nexport function createDispatchHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n  return function useDispatch() {\n    var store = useStore();\n    return store.dispatch;\n  };\n}\n/**\n * A hook to access the redux `dispatch` function.\n *\n * @returns {any|function} redux store's `dispatch` function\n *\n * @example\n *\n * import React, { useCallback } from 'react'\n * import { useDispatch } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n *   const dispatch = useDispatch()\n *   const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\n *   return (\n *     <div>\n *       <span>{value}</span>\n *       <button onClick={increaseCounter}>Increase counter</button>\n *     </div>\n *   )\n * }\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n  return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n  var _useReducer = useReducer(function (s) {\n    return s + 1;\n  }, 0),\n      forceRender = _useReducer[1];\n\n  var subscription = useMemo(function () {\n    return new Subscription(store, contextSub);\n  }, [store, contextSub]);\n  var latestSubscriptionCallbackError = useRef();\n  var latestSelector = useRef();\n  var latestStoreState = useRef();\n  var latestSelectedState = useRef();\n  var storeState = store.getState();\n  var selectedState;\n\n  try {\n    if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n      selectedState = selector(storeState);\n    } else {\n      selectedState = latestSelectedState.current;\n    }\n  } catch (err) {\n    if (latestSubscriptionCallbackError.current) {\n      err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n    }\n\n    throw err;\n  }\n\n  useIsomorphicLayoutEffect(function () {\n    latestSelector.current = selector;\n    latestStoreState.current = storeState;\n    latestSelectedState.current = selectedState;\n    latestSubscriptionCallbackError.current = undefined;\n  });\n  useIsomorphicLayoutEffect(function () {\n    function checkForUpdates() {\n      try {\n        var newSelectedState = latestSelector.current(store.getState());\n\n        if (equalityFn(newSelectedState, latestSelectedState.current)) {\n          return;\n        }\n\n        latestSelectedState.current = newSelectedState;\n      } catch (err) {\n        // we ignore all errors here, since when the component\n        // is re-rendered, the selectors are called again, and\n        // will throw again, if neither props nor store state\n        // changed\n        latestSubscriptionCallbackError.current = err;\n      }\n\n      forceRender();\n    }\n\n    subscription.onStateChange = checkForUpdates;\n    subscription.trySubscribe();\n    checkForUpdates();\n    return function () {\n      return subscription.tryUnsubscribe();\n    };\n  }, [store, subscription]);\n  return selectedState;\n}\n/**\n * Hook factory, which creates a `useSelector` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useSelector` hook bound to the specified context.\n */\n\n\nexport function createSelectorHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useSelector(selector, equalityFn) {\n    if (equalityFn === void 0) {\n      equalityFn = refEquality;\n    }\n\n    if (process.env.NODE_ENV !== 'production' && !selector) {\n      throw new Error(\"You must pass a selector to useSelector\");\n    }\n\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store,\n        contextSub = _useReduxContext.subscription;\n\n    var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n    useDebugValue(selectedState);\n    return selectedState;\n  };\n}\n/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n *   const counter = useSelector(state => state.counter)\n *   return <div>{counter}</div>\n * }\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch, createDispatchHook } from './hooks/useDispatch';\nimport { useSelector, createSelectorHook } from './hooks/useSelector';\nimport { useStore, createStoreHook } from './hooks/useStore';\nimport { setBatch } from './utils/batch';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport shallowEqual from './utils/shallowEqual';\nsetBatch(batch);\nexport { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual };",null,"module.exports = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n  // \"/*\"            => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n  '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = []\n  var key = 0\n  var index = 0\n  var path = ''\n  var defaultDelimiter = options && options.delimiter || '/'\n  var res\n\n  while ((res = PATH_REGEXP.exec(str)) != null) {\n    var m = res[0]\n    var escaped = res[1]\n    var offset = res.index\n    path += str.slice(index, offset)\n    index = offset + m.length\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1]\n      continue\n    }\n\n    var next = str[index]\n    var prefix = res[2]\n    var name = res[3]\n    var capture = res[4]\n    var group = res[5]\n    var modifier = res[6]\n    var asterisk = res[7]\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path)\n      path = ''\n    }\n\n    var partial = prefix != null && next != null && next !== prefix\n    var repeat = modifier === '+' || modifier === '*'\n    var optional = modifier === '?' || modifier === '*'\n    var delimiter = res[2] || defaultDelimiter\n    var pattern = capture || group\n\n    tokens.push({\n      name: name || key++,\n      prefix: prefix || '',\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      asterisk: !!asterisk,\n      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n    })\n  }\n\n  // Match any characters still remaining.\n  if (index < str.length) {\n    path += str.substr(index)\n  }\n\n  // If the path exists, push it onto the end.\n  if (path) {\n    tokens.push(path)\n  }\n\n  return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n  return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n  return encodeURI(str).replace(/[?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length)\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n    }\n  }\n\n  return function (obj, opts) {\n    var path = ''\n    var data = obj || {}\n    var options = opts || {}\n    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i]\n\n      if (typeof token === 'string') {\n        path += token\n\n        continue\n      }\n\n      var value = data[token.name]\n      var segment\n\n      if (value == null) {\n        if (token.optional) {\n          // Prepend partial segment prefixes.\n          if (token.partial) {\n            path += token.prefix\n          }\n\n          continue\n        } else {\n          throw new TypeError('Expected \"' + token.name + '\" to be defined')\n        }\n      }\n\n      if (isarray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) {\n            continue\n          } else {\n            throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n          }\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j])\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment\n        }\n\n        continue\n      }\n\n      segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n      if (!matches[i].test(segment)) {\n        throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n      }\n\n      path += token.prefix + segment\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {!RegExp} re\n * @param  {Array}   keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys\n  return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {!Array}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g)\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        asterisk: false,\n        pattern: null\n      })\n    }\n  }\n\n  return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array}   keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = []\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source)\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n  return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {!Array}  keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}          tokens\n * @param  {(Array|Object)=} keys\n * @param  {Object=}         options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  var strict = options.strict\n  var end = options.end !== false\n  var route = ''\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i]\n\n    if (typeof token === 'string') {\n      route += escapeString(token)\n    } else {\n      var prefix = escapeString(token.prefix)\n      var capture = '(?:' + token.pattern + ')'\n\n      keys.push(token)\n\n      if (token.repeat) {\n        capture += '(?:' + prefix + capture + ')*'\n      }\n\n      if (token.optional) {\n        if (!token.partial) {\n          capture = '(?:' + prefix + '(' + capture + '))?'\n        } else {\n          capture = prefix + '(' + capture + ')?'\n        }\n      } else {\n        capture = prefix + '(' + capture + ')'\n      }\n\n      route += capture\n    }\n  }\n\n  var delimiter = escapeString(options.delimiter || '/')\n  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n  }\n\n  if (end) {\n    route += '$'\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {(Array|Object)=}       keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, /** @type {!Array} */ (keys))\n  }\n\n  if (isarray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","\"use strict\";\nvar __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n    return cooked;\n};\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar react_1 = require(\"@emotion/react\");\nvar helpers_1 = require(\"./helpers\");\nvar beat = react_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n  50% {transform: scale(0.75);opacity: 0.2}\\n  100% {transform: scale(1);opacity: 1}\\n\"], [\"\\n  50% {transform: scale(0.75);opacity: 0.2}\\n  100% {transform: scale(1);opacity: 1}\\n\"])));\nvar Loader = /** @class */ (function (_super) {\n    __extends(Loader, _super);\n    function Loader() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.style = function (i) {\n            var _a = _this.props, color = _a.color, size = _a.size, margin = _a.margin, speedMultiplier = _a.speedMultiplier;\n            return react_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n      display: inline-block;\\n      background-color: \", \";\\n      width: \", \";\\n      height: \", \";\\n      margin: \", \";\\n      border-radius: 100%;\\n      animation: \", \" \", \"s \", \"\\n        infinite linear;\\n      animation-fill-mode: both;\\n    \"], [\"\\n      display: inline-block;\\n      background-color: \", \";\\n      width: \", \";\\n      height: \", \";\\n      margin: \", \";\\n      border-radius: 100%;\\n      animation: \", \" \", \"s \", \"\\n        infinite linear;\\n      animation-fill-mode: both;\\n    \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size), helpers_1.cssValue(margin), beat, 0.7 / speedMultiplier, i % 2 ? \"0s\" : 0.35 / speedMultiplier + \"s\");\n        };\n        return _this;\n    }\n    Loader.prototype.render = function () {\n        var _a = this.props, loading = _a.loading, css = _a.css;\n        return loading ? (react_1.jsx(\"span\", { css: [css] },\n            react_1.jsx(\"span\", { css: this.style(1) }),\n            react_1.jsx(\"span\", { css: this.style(2) }),\n            react_1.jsx(\"span\", { css: this.style(3) }))) : null;\n    };\n    Loader.defaultProps = helpers_1.sizeMarginDefaults(15);\n    return Loader;\n}(React.PureComponent));\nexports.default = Loader;\nvar templateObject_1, templateObject_2;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateRgba = void 0;\nvar BasicColors;\n(function (BasicColors) {\n    BasicColors[\"maroon\"] = \"#800000\";\n    BasicColors[\"red\"] = \"#FF0000\";\n    BasicColors[\"orange\"] = \"#FFA500\";\n    BasicColors[\"yellow\"] = \"#FFFF00\";\n    BasicColors[\"olive\"] = \"#808000\";\n    BasicColors[\"green\"] = \"#008000\";\n    BasicColors[\"purple\"] = \"#800080\";\n    BasicColors[\"fuchsia\"] = \"#FF00FF\";\n    BasicColors[\"lime\"] = \"#00FF00\";\n    BasicColors[\"teal\"] = \"#008080\";\n    BasicColors[\"aqua\"] = \"#00FFFF\";\n    BasicColors[\"blue\"] = \"#0000FF\";\n    BasicColors[\"navy\"] = \"#000080\";\n    BasicColors[\"black\"] = \"#000000\";\n    BasicColors[\"gray\"] = \"#808080\";\n    BasicColors[\"silver\"] = \"#C0C0C0\";\n    BasicColors[\"white\"] = \"#FFFFFF\";\n})(BasicColors || (BasicColors = {}));\nvar calculateRgba = function (color, opacity) {\n    if (Object.keys(BasicColors).includes(color)) {\n        color = BasicColors[color];\n    }\n    if (color[0] === \"#\") {\n        color = color.slice(1);\n    }\n    if (color.length === 3) {\n        var res_1 = \"\";\n        color.split(\"\").forEach(function (c) {\n            res_1 += c;\n            res_1 += c;\n        });\n        color = res_1;\n    }\n    var rgbValues = (color.match(/.{2}/g) || [])\n        .map(function (hex) { return parseInt(hex, 16); })\n        .join(\", \");\n    return \"rgba(\" + rgbValues + \", \" + opacity + \")\";\n};\nexports.calculateRgba = calculateRgba;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./proptypes\"), exports);\n__exportStar(require(\"./colors\"), exports);\n__exportStar(require(\"./unitConverter\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.heightWidthRadiusDefaults = exports.heightWidthDefaults = exports.sizeMarginDefaults = exports.sizeDefaults = void 0;\n/*\n * DefaultProps object for different loaders\n */\nvar commonValues = {\n    loading: true,\n    color: \"#000000\",\n    css: \"\",\n    speedMultiplier: 1\n};\nfunction sizeDefaults(sizeValue) {\n    return Object.assign({}, commonValues, { size: sizeValue });\n}\nexports.sizeDefaults = sizeDefaults;\nfunction sizeMarginDefaults(sizeValue) {\n    return Object.assign({}, sizeDefaults(sizeValue), {\n        margin: 2\n    });\n}\nexports.sizeMarginDefaults = sizeMarginDefaults;\nfunction heightWidthDefaults(height, width) {\n    return Object.assign({}, commonValues, {\n        height: height,\n        width: width\n    });\n}\nexports.heightWidthDefaults = heightWidthDefaults;\nfunction heightWidthRadiusDefaults(height, width, radius) {\n    if (radius === void 0) { radius = 2; }\n    return Object.assign({}, heightWidthDefaults(height, width), {\n        radius: radius,\n        margin: 2\n    });\n}\nexports.heightWidthRadiusDefaults = heightWidthRadiusDefaults;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cssValue = exports.parseLengthAndUnit = void 0;\nvar cssUnit = {\n    cm: true,\n    mm: true,\n    in: true,\n    px: true,\n    pt: true,\n    pc: true,\n    em: true,\n    ex: true,\n    ch: true,\n    rem: true,\n    vw: true,\n    vh: true,\n    vmin: true,\n    vmax: true,\n    \"%\": true\n};\n/**\n * If size is a number, append px to the value as default unit.\n * If size is a string, validate against list of valid units.\n * If unit is valid, return size as is.\n * If unit is invalid, console warn issue, replace with px as the unit.\n *\n * @param {(number | string)} size\n * @return {LengthObject} LengthObject\n */\nfunction parseLengthAndUnit(size) {\n    if (typeof size === \"number\") {\n        return {\n            value: size,\n            unit: \"px\"\n        };\n    }\n    var value;\n    var valueString = (size.match(/^[0-9.]*/) || \"\").toString();\n    if (valueString.includes(\".\")) {\n        value = parseFloat(valueString);\n    }\n    else {\n        value = parseInt(valueString, 10);\n    }\n    var unit = (size.match(/[^0-9]*$/) || \"\").toString();\n    if (cssUnit[unit]) {\n        return {\n            value: value,\n            unit: unit\n        };\n    }\n    console.warn(\"React Spinners: \" + size + \" is not a valid css value. Defaulting to \" + value + \"px.\");\n    return {\n        value: value,\n        unit: \"px\"\n    };\n}\nexports.parseLengthAndUnit = parseLengthAndUnit;\n/**\n * Take value as an input and return valid css value\n *\n * @param {(number | string)} value\n * @return {string} valid css value\n */\nfunction cssValue(value) {\n    var lengthWithunit = parseLengthAndUnit(value);\n    return \"\" + lengthWithunit.value + lengthWithunit.unit;\n}\nexports.cssValue = cssValue;\n","/** @license React v17.0.1\n * react-jsx-runtime.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';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/** @license React v17.0.1\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n  return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n  INIT: \"@@redux/INIT\" + randomString(),\n  REPLACE: \"@@redux/REPLACE\" + randomString(),\n  PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n    return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n  }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n  if (typeof obj !== 'object' || obj === null) return false;\n  var proto = obj;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n    throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function.');\n  }\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error('Expected the enhancer to be a function.');\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error('Expected the reducer to be a function.');\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n  /**\n   * This makes a shallow copy of currentListeners so we can use\n   * nextListeners as a temporary list while dispatching.\n   *\n   * This prevents any bugs around consumers calling\n   * subscribe/unsubscribe in the middle of a dispatch.\n   */\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n\n\n  function getState() {\n    if (isDispatching) {\n      throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n    }\n\n    return currentState;\n  }\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n\n\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error('Expected the listener to be a function.');\n    }\n\n    if (isDispatching) {\n      throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.');\n    }\n\n    var isSubscribed = true;\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      if (isDispatching) {\n        throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.');\n      }\n\n      isSubscribed = false;\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n      currentListeners = null;\n    };\n  }\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n\n\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n    }\n\n    if (isDispatching) {\n      throw new Error('Reducers may not dispatch actions.');\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n\n\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error('Expected the nextReducer to be a function.');\n    }\n\n    currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n    // Any reducers that existed in both the new and old rootReducer\n    // will receive the previous state. This effectively populates\n    // the new state tree with any relevant data from the old one.\n\n    dispatch({\n      type: ActionTypes.REPLACE\n    });\n  }\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n\n\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object' || observer === null) {\n          throw new TypeError('Expected the observer to be an object.');\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return {\n          unsubscribe: unsubscribe\n        };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  } // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n\n\n  dispatch({\n    type: ActionTypes.INIT\n  });\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n\n\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n  } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n  var actionType = action && action.type;\n  var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n  return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n  if (action && action.type === ActionTypes.REPLACE) return;\n\n  if (unexpectedKeys.length > 0) {\n    return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, {\n      type: ActionTypes.INIT\n    });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n    }\n\n    if (typeof reducer(undefined, {\n      type: ActionTypes.PROBE_UNKNOWN_ACTION()\n    }) === 'undefined') {\n      throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n    }\n  });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n      }\n    }\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n\n  var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n  // keys multiple times.\n\n  var unexpectedKeyCache;\n\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n\n  var shapeAssertionError;\n\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination(state, action) {\n    if (state === void 0) {\n      state = {};\n    }\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n\n    var hasChanged = false;\n    var nextState = {};\n\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n\n      if (typeof nextStateForKey === 'undefined') {\n        var errorMessage = getUndefinedStateErrorMessage(_key, action);\n        throw new Error(errorMessage);\n      }\n\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n\n    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n    return hasChanged ? nextState : state;\n  };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(this, arguments));\n  };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n  }\n\n  var boundActionCreators = {};\n\n  for (var key in actionCreators) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n\n  return boundActionCreators;\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 ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n  }\n\n  if (enumerableOnly) keys = keys.filter(function (sym) {\n    return Object.getOwnPropertyDescriptor(object, sym).enumerable;\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(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(source).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(void 0, arguments));\n    };\n  });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function () {\n      var store = createStore.apply(void 0, arguments);\n\n      var _dispatch = function dispatch() {\n        throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n      };\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch() {\n          return _dispatch.apply(void 0, arguments);\n        }\n      };\n      var chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(void 0, chain)(store.dispatch);\n      return _objectSpread2({}, store, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n  warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\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  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 = Gp.constructor = GeneratorFunctionPrototype;\n  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  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  Gp[iteratorSymbol] = function() {\n    return this;\n  };\n\n  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, 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  Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","/** @license React v0.20.1\n * scheduler.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';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n  root = self;\n} else if (typeof window !== 'undefined') {\n  root = window;\n} else if (typeof global !== 'undefined') {\n  root = global;\n} else if (typeof module !== 'undefined') {\n  root = module;\n} else {\n  root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","function E () {\n  // Keep this empty so it's easier to inherit from\n  // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n  on: function (name, callback, ctx) {\n    var e = this.e || (this.e = {});\n\n    (e[name] || (e[name] = [])).push({\n      fn: callback,\n      ctx: ctx\n    });\n\n    return this;\n  },\n\n  once: function (name, callback, ctx) {\n    var self = this;\n    function listener () {\n      self.off(name, listener);\n      callback.apply(ctx, arguments);\n    };\n\n    listener._ = callback\n    return this.on(name, listener, ctx);\n  },\n\n  emit: function (name) {\n    var data = [].slice.call(arguments, 1);\n    var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n    var i = 0;\n    var len = evtArr.length;\n\n    for (i; i < len; i++) {\n      evtArr[i].fn.apply(evtArr[i].ctx, data);\n    }\n\n    return this;\n  },\n\n  off: function (name, callback) {\n    var e = this.e || (this.e = {});\n    var evts = e[name];\n    var liveEvents = [];\n\n    if (evts && callback) {\n      for (var i = 0, len = evts.length; i < len; i++) {\n        if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n          liveEvents.push(evts[i]);\n      }\n    }\n\n    // Remove event from queue to prevent memory leak\n    // Suggested by https://github.com/lazd\n    // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n    (liveEvents.length)\n      ? e[name] = liveEvents\n      : delete e[name];\n\n    return this;\n  }\n};\n\nmodule.exports = E;\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\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n  var printWarning = function printWarning(format, args) {\n    var len = arguments.length;\n    args = new Array(len > 1 ? len - 1 : 0);\n    for (var key = 1; key < len; key++) {\n      args[key - 1] = arguments[key];\n    }\n    var argIndex = 0;\n    var message = 'Warning: ' +\n      format.replace(/%s/g, function() {\n        return args[argIndex++];\n      });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  }\n\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n          '`warning(condition, format, ...args)` requires a warning ' +\n          'message argument'\n      );\n    }\n    if (!condition) {\n      printWarning.apply(null, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n","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}","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}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","function createThunkMiddleware(extraArgument) {\n  return function (_ref) {\n    var dispatch = _ref.dispatch,\n        getState = _ref.getState;\n    return function (next) {\n      return function (action) {\n        if (typeof action === 'function') {\n          return action(dispatch, getState, extraArgument);\n        }\n\n        return next(action);\n      };\n    };\n  };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","export default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}","function isAbsolute(pathname) {\n  return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n  for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n    list[i] = list[k];\n  }\n\n  list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n  if (from === undefined) from = '';\n\n  var toParts = (to && to.split('/')) || [];\n  var fromParts = (from && from.split('/')) || [];\n\n  var isToAbs = to && isAbsolute(to);\n  var isFromAbs = from && isAbsolute(from);\n  var mustEndAbs = isToAbs || isFromAbs;\n\n  if (to && isAbsolute(to)) {\n    // to is absolute\n    fromParts = toParts;\n  } else if (toParts.length) {\n    // to is relative, drop the filename\n    fromParts.pop();\n    fromParts = fromParts.concat(toParts);\n  }\n\n  if (!fromParts.length) return '/';\n\n  var hasTrailingSlash;\n  if (fromParts.length) {\n    var last = fromParts[fromParts.length - 1];\n    hasTrailingSlash = last === '.' || last === '..' || last === '';\n  } else {\n    hasTrailingSlash = false;\n  }\n\n  var up = 0;\n  for (var i = fromParts.length; i >= 0; i--) {\n    var part = fromParts[i];\n\n    if (part === '.') {\n      spliceOne(fromParts, i);\n    } else if (part === '..') {\n      spliceOne(fromParts, i);\n      up++;\n    } else if (up) {\n      spliceOne(fromParts, i);\n      up--;\n    }\n  }\n\n  if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n  if (\n    mustEndAbs &&\n    fromParts[0] !== '' &&\n    (!fromParts[0] || !isAbsolute(fromParts[0]))\n  )\n    fromParts.unshift('');\n\n  var result = fromParts.join('/');\n\n  if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n  return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n  return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n  // Test for strict equality first.\n  if (a === b) return true;\n\n  // Otherwise, if either of them == null they are not equal.\n  if (a == null || b == null) return false;\n\n  if (Array.isArray(a)) {\n    return (\n      Array.isArray(b) &&\n      a.length === b.length &&\n      a.every(function(item, index) {\n        return valueEqual(item, b[index]);\n      })\n    );\n  }\n\n  if (typeof a === 'object' || typeof b === 'object') {\n    var aValue = valueOf(a);\n    var bValue = valueOf(b);\n\n    if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n    return Object.keys(Object.assign({}, a, b)).every(function(key) {\n      return valueEqual(a[key], b[key]);\n    });\n  }\n\n  return false;\n}\n\nexport default valueEqual;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    if (isProduction) {\n        throw new Error(prefix);\n    }\n    throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n  return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n  return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n  return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\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}\nfunction createPath(location) {\n  var pathname = location.pathname,\n      search = location.search,\n      hash = location.hash;\n  var path = pathname || '/';\n  if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n  if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n  return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n  var location;\n\n  if (typeof path === 'string') {\n    // Two-arg form: push(path, state)\n    location = parsePath(path);\n    location.state = state;\n  } else {\n    // One-arg form: push(location)\n    location = _extends({}, path);\n    if (location.pathname === undefined) location.pathname = '';\n\n    if (location.search) {\n      if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n    } else {\n      location.search = '';\n    }\n\n    if (location.hash) {\n      if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n    } else {\n      location.hash = '';\n    }\n\n    if (state !== undefined && location.state === undefined) location.state = state;\n  }\n\n  try {\n    location.pathname = decodeURI(location.pathname);\n  } catch (e) {\n    if (e instanceof URIError) {\n      throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n    } else {\n      throw e;\n    }\n  }\n\n  if (key) location.key = key;\n\n  if (currentLocation) {\n    // Resolve incomplete/relative pathname relative to current location.\n    if (!location.pathname) {\n      location.pathname = currentLocation.pathname;\n    } else if (location.pathname.charAt(0) !== '/') {\n      location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n    }\n  } else {\n    // When there is no prior location and pathname is empty, set it to /\n    if (!location.pathname) {\n      location.pathname = '/';\n    }\n  }\n\n  return location;\n}\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n  var prompt = null;\n\n  function setPrompt(nextPrompt) {\n    process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n    prompt = nextPrompt;\n    return function () {\n      if (prompt === nextPrompt) prompt = null;\n    };\n  }\n\n  function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n    // TODO: If another transition starts while we're still confirming\n    // the previous one, we may end up in a weird state. Figure out the\n    // best way to handle this.\n    if (prompt != null) {\n      var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n      if (typeof result === 'string') {\n        if (typeof getUserConfirmation === 'function') {\n          getUserConfirmation(result, callback);\n        } else {\n          process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n          callback(true);\n        }\n      } else {\n        // Return false from a transition hook to cancel the transition.\n        callback(result !== false);\n      }\n    } else {\n      callback(true);\n    }\n  }\n\n  var listeners = [];\n\n  function appendListener(fn) {\n    var isActive = true;\n\n    function listener() {\n      if (isActive) fn.apply(void 0, arguments);\n    }\n\n    listeners.push(listener);\n    return function () {\n      isActive = false;\n      listeners = listeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function notifyListeners() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    listeners.forEach(function (listener) {\n      return listener.apply(void 0, args);\n    });\n  }\n\n  return {\n    setPrompt: setPrompt,\n    confirmTransitionTo: confirmTransitionTo,\n    appendListener: appendListener,\n    notifyListeners: notifyListeners\n  };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n  callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n  var ua = window.navigator.userAgent;\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n  return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n  return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n  return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n  try {\n    return window.history.state || {};\n  } catch (e) {\n    // IE 11 sometimes throws when accessing window.history.state\n    // See https://github.com/ReactTraining/history/pull/289\n    return {};\n  }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canUseHistory = supportsHistory();\n  var needsHashChangeListener = !supportsPopStateOnHashChange();\n  var _props = props,\n      _props$forceRefresh = _props.forceRefresh,\n      forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n  function getDOMLocation(historyState) {\n    var _ref = historyState || {},\n        key = _ref.key,\n        state = _ref.state;\n\n    var _window$location = window.location,\n        pathname = _window$location.pathname,\n        search = _window$location.search,\n        hash = _window$location.hash;\n    var path = pathname + search + hash;\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path, state, key);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function handlePopState(event) {\n    // Ignore extraneous popstate events in WebKit.\n    if (isExtraneousPopstateEvent(event)) return;\n    handlePop(getDOMLocation(event.state));\n  }\n\n  function handleHashChange() {\n    handlePop(getDOMLocation(getHistoryState()));\n  }\n\n  var forceNextPop = false;\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of keys we've seen in sessionStorage.\n    // Instead, we just default to 0 for keys we don't know.\n\n    var toIndex = allKeys.indexOf(toLocation.key);\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allKeys.indexOf(fromLocation.key);\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  }\n\n  var initialLocation = getDOMLocation(getHistoryState());\n  var allKeys = [initialLocation.key]; // Public interface\n\n  function createHref(location) {\n    return basename + createPath(location);\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.pushState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.href = href;\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          var nextKeys = allKeys.slice(0, prevIndex + 1);\n          nextKeys.push(location.key);\n          allKeys = nextKeys;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n        window.location.href = href;\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.replaceState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.replace(href);\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n        window.location.replace(href);\n      }\n    });\n  }\n\n  function go(n) {\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n  hashbang: {\n    encodePath: function encodePath(path) {\n      return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n    },\n    decodePath: function decodePath(path) {\n      return path.charAt(0) === '!' ? path.substr(1) : path;\n    }\n  },\n  noslash: {\n    encodePath: stripLeadingSlash,\n    decodePath: addLeadingSlash\n  },\n  slash: {\n    encodePath: addLeadingSlash,\n    decodePath: addLeadingSlash\n  }\n};\n\nfunction stripHash(url) {\n  var hashIndex = url.indexOf('#');\n  return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  var href = window.location.href;\n  var hashIndex = href.indexOf('#');\n  return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n  window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n  window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n  var _props = props,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$hashType = _props.hashType,\n      hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n  var _HashPathCoders$hashT = HashPathCoders[hashType],\n      encodePath = _HashPathCoders$hashT.encodePath,\n      decodePath = _HashPathCoders$hashT.decodePath;\n\n  function getDOMLocation() {\n    var path = decodePath(getHashPath());\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  var forceNextPop = false;\n  var ignorePath = null;\n\n  function locationsAreEqual$$1(a, b) {\n    return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n  }\n\n  function handleHashChange() {\n    var path = getHashPath();\n    var encodedPath = encodePath(path);\n\n    if (path !== encodedPath) {\n      // Ensure we always have a properly-encoded hash.\n      replaceHashPath(encodedPath);\n    } else {\n      var location = getDOMLocation();\n      var prevLocation = history.location;\n      if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n      if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n      ignorePath = null;\n      handlePop(location);\n    }\n  }\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of paths we've seen in sessionStorage.\n    // Instead, we just default to 0 for paths we don't know.\n\n    var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  } // Ensure the hash is encoded properly before doing anything else.\n\n\n  var path = getHashPath();\n  var encodedPath = encodePath(path);\n  if (path !== encodedPath) replaceHashPath(encodedPath);\n  var initialLocation = getDOMLocation();\n  var allPaths = [createPath(initialLocation)]; // Public interface\n\n  function createHref(location) {\n    var baseTag = document.querySelector('base');\n    var href = '';\n\n    if (baseTag && baseTag.getAttribute('href')) {\n      href = stripHash(window.location.href);\n    }\n\n    return href + '#' + encodePath(basename + createPath(location));\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a PUSH, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        pushHashPath(encodedPath);\n        var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n        var nextPaths = allPaths.slice(0, prevIndex + 1);\n        nextPaths.push(path);\n        allPaths = nextPaths;\n        setState({\n          action: action,\n          location: location\n        });\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n        setState();\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        replaceHashPath(encodedPath);\n      }\n\n      var prevIndex = allPaths.indexOf(createPath(history.location));\n      if (prevIndex !== -1) allPaths[prevIndex] = path;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(HashChangeEvent$1, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(HashChangeEvent$1, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n  return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  var _props = props,\n      getUserConfirmation = _props.getUserConfirmation,\n      _props$initialEntries = _props.initialEntries,\n      initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n      _props$initialIndex = _props.initialIndex,\n      initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = history.entries.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var index = clamp(initialIndex, 0, initialEntries.length - 1);\n  var entries = initialEntries.map(function (entry) {\n    return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n  }); // Public interface\n\n  var createHref = createPath;\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var prevIndex = history.index;\n      var nextIndex = prevIndex + 1;\n      var nextEntries = history.entries.slice(0);\n\n      if (nextEntries.length > nextIndex) {\n        nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n      } else {\n        nextEntries.push(location);\n      }\n\n      setState({\n        action: action,\n        location: location,\n        index: nextIndex,\n        entries: nextEntries\n      });\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      history.entries[history.index] = location;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n    var action = 'POP';\n    var location = history.entries[nextIndex];\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (ok) {\n        setState({\n          action: action,\n          location: location,\n          index: nextIndex\n        });\n      } else {\n        // Mimic the behavior of DOM histories by\n        // causing a render after a cancelled POP.\n        setState();\n      }\n    });\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function canGo(n) {\n    var nextIndex = history.index + n;\n    return nextIndex >= 0 && nextIndex < history.entries.length;\n  }\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    return transitionManager.setPrompt(prompt);\n  }\n\n  function listen(listener) {\n    return transitionManager.appendListener(listener);\n  }\n\n  var history = {\n    length: entries.length,\n    action: 'POP',\n    location: entries[index],\n    index: index,\n    entries: entries,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    canGo: canGo,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n  var key = '__global_unique_id__';\n  return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nfunction createEventEmitter(value) {\n  var handlers = [];\n  return {\n    on: function on(handler) {\n      handlers.push(handler);\n    },\n    off: function off(handler) {\n      handlers = handlers.filter(function (h) {\n        return h !== handler;\n      });\n    },\n    get: function get() {\n      return value;\n    },\n    set: function set(newValue, changedBits) {\n      value = newValue;\n      handlers.forEach(function (handler) {\n        return handler(value, changedBits);\n      });\n    }\n  };\n}\n\nfunction onlyChild(children) {\n  return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n  var _Provider$childContex, _Consumer$contextType;\n\n  var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n  var Provider = /*#__PURE__*/function (_Component) {\n    _inheritsLoose(Provider, _Component);\n\n    function Provider() {\n      var _this;\n\n      _this = _Component.apply(this, arguments) || this;\n      _this.emitter = createEventEmitter(_this.props.value);\n      return _this;\n    }\n\n    var _proto = Provider.prototype;\n\n    _proto.getChildContext = function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n    };\n\n    _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      if (this.props.value !== nextProps.value) {\n        var oldValue = this.props.value;\n        var newValue = nextProps.value;\n        var changedBits;\n\n        if (objectIs(oldValue, newValue)) {\n          changedBits = 0;\n        } else {\n          changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n          if (process.env.NODE_ENV !== 'production') {\n            warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n          }\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    };\n\n    _proto.render = function render() {\n      return this.props.children;\n    };\n\n    return Provider;\n  }(Component);\n\n  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n  var Consumer = /*#__PURE__*/function (_Component2) {\n    _inheritsLoose(Consumer, _Component2);\n\n    function Consumer() {\n      var _this2;\n\n      _this2 = _Component2.apply(this, arguments) || this;\n      _this2.state = {\n        value: _this2.getValue()\n      };\n\n      _this2.onUpdate = function (newValue, changedBits) {\n        var observedBits = _this2.observedBits | 0;\n\n        if ((observedBits & changedBits) !== 0) {\n          _this2.setState({\n            value: _this2.getValue()\n          });\n        }\n      };\n\n      return _this2;\n    }\n\n    var _proto2 = Consumer.prototype;\n\n    _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var observedBits = nextProps.observedBits;\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n    };\n\n    _proto2.componentDidMount = function componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n\n      var observedBits = this.props.observedBits;\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n    };\n\n    _proto2.componentWillUnmount = function componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    };\n\n    _proto2.getValue = function getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    };\n\n    _proto2.render = function render() {\n      return onlyChild(this.props.children)(this.state.value);\n    };\n\n    return Consumer;\n  }(Component);\n\n  Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n  return {\n    Provider: Provider,\n    Consumer: Consumer\n  };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n  const context = createContext();\n  context.displayName = name;\n\n  return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n  const context = createContext();\n  context.displayName = name;\n\n  return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n  static computeRootMatch(pathname) {\n    return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n  }\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      location: props.history.location\n    };\n\n    // This is a bit of a hack. We have to start listening for location\n    // changes here in the constructor in case there are any <Redirect>s\n    // on the initial render. If there are, they will replace/push when\n    // they mount and since cDM fires in children before parents, we may\n    // get a new location before the <Router> is mounted.\n    this._isMounted = false;\n    this._pendingLocation = null;\n\n    if (!props.staticContext) {\n      this.unlisten = props.history.listen(location => {\n        if (this._isMounted) {\n          this.setState({ location });\n        } else {\n          this._pendingLocation = location;\n        }\n      });\n    }\n  }\n\n  componentDidMount() {\n    this._isMounted = true;\n\n    if (this._pendingLocation) {\n      this.setState({ location: this._pendingLocation });\n    }\n  }\n\n  componentWillUnmount() {\n    if (this.unlisten) this.unlisten();\n  }\n\n  render() {\n    return (\n      <RouterContext.Provider\n        value={{\n          history: this.props.history,\n          location: this.state.location,\n          match: Router.computeRootMatch(this.state.location.pathname),\n          staticContext: this.props.staticContext\n        }}\n      >\n        <HistoryContext.Provider\n          children={this.props.children || null}\n          value={this.props.history}\n        />\n      </RouterContext.Provider>\n    );\n  }\n}\n\nif (__DEV__) {\n  Router.propTypes = {\n    children: PropTypes.node,\n    history: PropTypes.object.isRequired,\n    staticContext: PropTypes.object\n  };\n\n  Router.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      prevProps.history === this.props.history,\n      \"You cannot change <Router history>\"\n    );\n  };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  MemoryRouter.propTypes = {\n    initialEntries: PropTypes.array,\n    initialIndex: PropTypes.number,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number,\n    children: PropTypes.node\n  };\n\n  MemoryRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n    );\n  };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n  componentDidMount() {\n    if (this.props.onMount) this.props.onMount.call(this, this);\n  }\n\n  componentDidUpdate(prevProps) {\n    if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n  }\n\n  componentWillUnmount() {\n    if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n  }\n\n  render() {\n    return null;\n  }\n}\n\nexport default Lifecycle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\nfunction Prompt({ message, when = true }) {\n  return (\n    <RouterContext.Consumer>\n      {context => {\n        invariant(context, \"You should not use <Prompt> outside a <Router>\");\n\n        if (!when || context.staticContext) return null;\n\n        const method = context.history.block;\n\n        return (\n          <Lifecycle\n            onMount={self => {\n              self.release = method(message);\n            }}\n            onUpdate={(self, prevProps) => {\n              if (prevProps.message !== message) {\n                self.release();\n                self.release = method(message);\n              }\n            }}\n            onUnmount={self => {\n              self.release();\n            }}\n            message={message}\n          />\n        );\n      }}\n    </RouterContext.Consumer>\n  );\n}\n\nif (__DEV__) {\n  const messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n\n  Prompt.propTypes = {\n    when: PropTypes.bool,\n    message: messageType.isRequired\n  };\n}\n\nexport default Prompt;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n  if (cache[path]) return cache[path];\n\n  const generator = pathToRegexp.compile(path);\n\n  if (cacheCount < cacheLimit) {\n    cache[path] = generator;\n    cacheCount++;\n  }\n\n  return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n  return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n  return (\n    <RouterContext.Consumer>\n      {context => {\n        invariant(context, \"You should not use <Redirect> outside a <Router>\");\n\n        const { history, staticContext } = context;\n\n        const method = push ? history.push : history.replace;\n        const location = createLocation(\n          computedMatch\n            ? typeof to === \"string\"\n              ? generatePath(to, computedMatch.params)\n              : {\n                  ...to,\n                  pathname: generatePath(to.pathname, computedMatch.params)\n                }\n            : to\n        );\n\n        // When rendering in a static context,\n        // set the new location immediately.\n        if (staticContext) {\n          method(location);\n          return null;\n        }\n\n        return (\n          <Lifecycle\n            onMount={() => {\n              method(location);\n            }}\n            onUpdate={(self, prevProps) => {\n              const prevLocation = createLocation(prevProps.to);\n              if (\n                !locationsAreEqual(prevLocation, {\n                  ...location,\n                  key: prevLocation.key\n                })\n              ) {\n                method(location);\n              }\n            }}\n            to={to}\n          />\n        );\n      }}\n    </RouterContext.Consumer>\n  );\n}\n\nif (__DEV__) {\n  Redirect.propTypes = {\n    push: PropTypes.bool,\n    from: PropTypes.string,\n    to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n  };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n  const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n  const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n  if (pathCache[path]) return pathCache[path];\n\n  const keys = [];\n  const regexp = pathToRegexp(path, keys, options);\n  const result = { regexp, keys };\n\n  if (cacheCount < cacheLimit) {\n    pathCache[path] = result;\n    cacheCount++;\n  }\n\n  return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n  if (typeof options === \"string\" || Array.isArray(options)) {\n    options = { path: options };\n  }\n\n  const { path, exact = false, strict = false, sensitive = false } = options;\n\n  const paths = [].concat(path);\n\n  return paths.reduce((matched, path) => {\n    if (!path && path !== \"\") return null;\n    if (matched) return matched;\n\n    const { regexp, keys } = compilePath(path, {\n      end: exact,\n      strict,\n      sensitive\n    });\n    const match = regexp.exec(pathname);\n\n    if (!match) return null;\n\n    const [url, ...values] = match;\n    const isExact = pathname === url;\n\n    if (exact && !isExact) return null;\n\n    return {\n      path, // the path used to match\n      url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n      isExact, // whether or not we matched exactly\n      params: keys.reduce((memo, key, index) => {\n        memo[key.name] = values[index];\n        return memo;\n      }, {})\n    };\n  }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n  return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n  const value = children(props);\n\n  warning(\n    value !== undefined,\n    \"You returned `undefined` from the `children` function of \" +\n      `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n      \"should have returned a React element or `null`\"\n  );\n\n  return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n  render() {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Route> outside a <Router>\");\n\n          const location = this.props.location || context.location;\n          const match = this.props.computedMatch\n            ? this.props.computedMatch // <Switch> already computed the match for us\n            : this.props.path\n            ? matchPath(location.pathname, this.props)\n            : context.match;\n\n          const props = { ...context, location, match };\n\n          let { children, component, render } = this.props;\n\n          // Preact uses an empty array as children by\n          // default, so use null if that's the case.\n          if (Array.isArray(children) && children.length === 0) {\n            children = null;\n          }\n\n          return (\n            <RouterContext.Provider value={props}>\n              {props.match\n                ? children\n                  ? typeof children === \"function\"\n                    ? __DEV__\n                      ? evalChildrenDev(children, props, this.props.path)\n                      : children(props)\n                    : children\n                  : component\n                  ? React.createElement(component, props)\n                  : render\n                  ? render(props)\n                  : null\n                : typeof children === \"function\"\n                ? __DEV__\n                  ? evalChildrenDev(children, props, this.props.path)\n                  : children(props)\n                : null}\n            </RouterContext.Provider>\n          );\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n}\n\nif (__DEV__) {\n  Route.propTypes = {\n    children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n    component: (props, propName) => {\n      if (props[propName] && !isValidElementType(props[propName])) {\n        return new Error(\n          `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n        );\n      }\n    },\n    exact: PropTypes.bool,\n    location: PropTypes.object,\n    path: PropTypes.oneOfType([\n      PropTypes.string,\n      PropTypes.arrayOf(PropTypes.string)\n    ]),\n    render: PropTypes.func,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool\n  };\n\n  Route.prototype.componentDidMount = function() {\n    warning(\n      !(\n        this.props.children &&\n        !isEmptyChildren(this.props.children) &&\n        this.props.component\n      ),\n      \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n    );\n\n    warning(\n      !(\n        this.props.children &&\n        !isEmptyChildren(this.props.children) &&\n        this.props.render\n      ),\n      \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n    );\n\n    warning(\n      !(this.props.component && this.props.render),\n      \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n    );\n  };\n\n  Route.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      !(this.props.location && !prevProps.location),\n      '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n    );\n\n    warning(\n      !(!this.props.location && prevProps.location),\n      '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n    );\n  };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n  if (!basename) return location;\n\n  return {\n    ...location,\n    pathname: addLeadingSlash(basename) + location.pathname\n  };\n}\n\nfunction stripBasename(basename, location) {\n  if (!basename) return location;\n\n  const base = addLeadingSlash(basename);\n\n  if (location.pathname.indexOf(base) !== 0) return location;\n\n  return {\n    ...location,\n    pathname: location.pathname.substr(base.length)\n  };\n}\n\nfunction createURL(location) {\n  return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n  return () => {\n    invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n  };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n  navigateTo(location, action) {\n    const { basename = \"\", context = {} } = this.props;\n    context.action = action;\n    context.location = addBasename(basename, createLocation(location));\n    context.url = createURL(context.location);\n  }\n\n  handlePush = location => this.navigateTo(location, \"PUSH\");\n  handleReplace = location => this.navigateTo(location, \"REPLACE\");\n  handleListen = () => noop;\n  handleBlock = () => noop;\n\n  render() {\n    const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n    const history = {\n      createHref: path => addLeadingSlash(basename + createURL(path)),\n      action: \"POP\",\n      location: stripBasename(basename, createLocation(location)),\n      push: this.handlePush,\n      replace: this.handleReplace,\n      go: staticHandler(\"go\"),\n      goBack: staticHandler(\"goBack\"),\n      goForward: staticHandler(\"goForward\"),\n      listen: this.handleListen,\n      block: this.handleBlock\n    };\n\n    return <Router {...rest} history={history} staticContext={context} />;\n  }\n}\n\nif (__DEV__) {\n  StaticRouter.propTypes = {\n    basename: PropTypes.string,\n    context: PropTypes.object,\n    location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n  };\n\n  StaticRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n    );\n  };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n  render() {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n          const location = this.props.location || context.location;\n\n          let element, match;\n\n          // We use React.Children.forEach instead of React.Children.toArray().find()\n          // here because toArray adds keys to all child elements and we do not want\n          // to trigger an unmount/remount for two <Route>s that render the same\n          // component at different URLs.\n          React.Children.forEach(this.props.children, child => {\n            if (match == null && React.isValidElement(child)) {\n              element = child;\n\n              const path = child.props.path || child.props.from;\n\n              match = path\n                ? matchPath(location.pathname, { ...child.props, path })\n                : context.match;\n            }\n          });\n\n          return match\n            ? React.cloneElement(element, { location, computedMatch: match })\n            : null;\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n}\n\nif (__DEV__) {\n  Switch.propTypes = {\n    children: PropTypes.node,\n    location: PropTypes.object\n  };\n\n  Switch.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      !(this.props.location && !prevProps.location),\n      '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n    );\n\n    warning(\n      !(!this.props.location && prevProps.location),\n      '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n    );\n  };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n  const displayName = `withRouter(${Component.displayName || Component.name})`;\n  const C = props => {\n    const { wrappedComponentRef, ...remainingProps } = props;\n\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(\n            context,\n            `You should not use <${displayName} /> outside a <Router>`\n          );\n          return (\n            <Component\n              {...remainingProps}\n              {...context}\n              ref={wrappedComponentRef}\n            />\n          );\n        }}\n      </RouterContext.Consumer>\n    );\n  };\n\n  C.displayName = displayName;\n  C.WrappedComponent = Component;\n\n  if (__DEV__) {\n    C.propTypes = {\n      wrappedComponentRef: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.func,\n        PropTypes.object\n      ])\n    };\n  }\n\n  return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useHistory()\"\n    );\n  }\n\n  return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useLocation()\"\n    );\n  }\n\n  return useContext(Context).location;\n}\n\nexport function useParams() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useParams()\"\n    );\n  }\n\n  const match = useContext(Context).match;\n  return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useRouteMatch()\"\n    );\n  }\n\n  const location = useLocation();\n  const match = useContext(Context).match;\n\n  return path ? matchPath(location.pathname, path) : match;\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  BrowserRouter.propTypes = {\n    basename: PropTypes.string,\n    children: PropTypes.node,\n    forceRefresh: PropTypes.bool,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number\n  };\n\n  BrowserRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n    );\n  };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  HashRouter.propTypes = {\n    basename: PropTypes.string,\n    children: PropTypes.node,\n    getUserConfirmation: PropTypes.func,\n    hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n  };\n\n  HashRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<HashRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n    );\n  };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n  typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n  return typeof to === \"string\"\n    ? createLocation(to, null, null, currentLocation)\n    : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n  resolveToLocation,\n  normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n  (\n    {\n      innerRef, // TODO: deprecate\n      navigate,\n      onClick,\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    const { target } = rest;\n\n    let props = {\n      ...rest,\n      onClick: event => {\n        try {\n          if (onClick) onClick(event);\n        } catch (ex) {\n          event.preventDefault();\n          throw ex;\n        }\n\n        if (\n          !event.defaultPrevented && // onClick prevented default\n          event.button === 0 && // ignore everything but left clicks\n          (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n          !isModifiedEvent(event) // ignore clicks with modifier keys\n        ) {\n          event.preventDefault();\n          navigate();\n        }\n      }\n    };\n\n    // React 15 compat\n    if (forwardRefShim !== forwardRef) {\n      props.ref = forwardedRef || innerRef;\n    } else {\n      props.ref = innerRef;\n    }\n\n    /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n    return <a {...props} />;\n  }\n);\n\nif (__DEV__) {\n  LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n  (\n    {\n      component = LinkAnchor,\n      replace,\n      to,\n      innerRef, // TODO: deprecate\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Link> outside a <Router>\");\n\n          const { history } = context;\n\n          const location = normalizeToLocation(\n            resolveToLocation(to, context.location),\n            context.location\n          );\n\n          const href = location ? history.createHref(location) : \"\";\n          const props = {\n            ...rest,\n            href,\n            navigate() {\n              const location = resolveToLocation(to, context.location);\n              const method = replace ? history.replace : history.push;\n\n              method(location);\n            }\n          };\n\n          // React 15 compat\n          if (forwardRefShim !== forwardRef) {\n            props.ref = forwardedRef || innerRef;\n          } else {\n            props.innerRef = innerRef;\n          }\n\n          return React.createElement(component, props);\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n);\n\nif (__DEV__) {\n  const toType = PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.object,\n    PropTypes.func\n  ]);\n  const refType = PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.func,\n    PropTypes.shape({ current: PropTypes.any })\n  ]);\n\n  Link.displayName = \"Link\";\n\n  Link.propTypes = {\n    innerRef: refType,\n    onClick: PropTypes.func,\n    replace: PropTypes.bool,\n    target: PropTypes.string,\n    to: toType.isRequired\n  };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n  resolveToLocation,\n  normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n  return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n  (\n    {\n      \"aria-current\": ariaCurrent = \"page\",\n      activeClassName = \"active\",\n      activeStyle,\n      className: classNameProp,\n      exact,\n      isActive: isActiveProp,\n      location: locationProp,\n      sensitive,\n      strict,\n      style: styleProp,\n      to,\n      innerRef, // TODO: deprecate\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n          const currentLocation = locationProp || context.location;\n          const toLocation = normalizeToLocation(\n            resolveToLocation(to, currentLocation),\n            currentLocation\n          );\n          const { pathname: path } = toLocation;\n          // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n          const escapedPath =\n            path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n          const match = escapedPath\n            ? matchPath(currentLocation.pathname, {\n                path: escapedPath,\n                exact,\n                sensitive,\n                strict\n              })\n            : null;\n          const isActive = !!(isActiveProp\n            ? isActiveProp(match, currentLocation)\n            : match);\n\n          const className = isActive\n            ? joinClassnames(classNameProp, activeClassName)\n            : classNameProp;\n          const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n          const props = {\n            \"aria-current\": (isActive && ariaCurrent) || null,\n            className,\n            style,\n            to: toLocation,\n            ...rest\n          };\n\n          // React 15 compat\n          if (forwardRefShim !== forwardRef) {\n            props.ref = forwardedRef || innerRef;\n          } else {\n            props.innerRef = innerRef;\n          }\n\n          return <Link {...props} />;\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n);\n\nif (__DEV__) {\n  NavLink.displayName = \"NavLink\";\n\n  const ariaCurrentType = PropTypes.oneOf([\n    \"page\",\n    \"step\",\n    \"location\",\n    \"date\",\n    \"time\",\n    \"true\"\n  ]);\n\n  NavLink.propTypes = {\n    ...Link.propTypes,\n    \"aria-current\": ariaCurrentType,\n    activeClassName: PropTypes.string,\n    activeStyle: PropTypes.object,\n    className: PropTypes.string,\n    exact: PropTypes.bool,\n    isActive: PropTypes.func,\n    location: PropTypes.object,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool,\n    style: PropTypes.object\n  };\n}\n\nexport default NavLink;\n","/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { APIError } from '../../errors/types';\nimport {\n  OktaAuthOAuthInterface,\n  MinimalOktaOAuthInterface,\n  Tokens,\n  TransactionManagerConstructor,\n  TransactionManagerInterface\n} from '../../oidc/types';\nimport { FlowIdentifier } from './FlowIdentifier';\nimport {\n  IdxActions,\n  IdxAuthenticator,\n  IdxContext,\n  IdxForm,\n  IdxMessage,\n  IdxOption,\n  IdxRemediation,\n  IdxResponse,\n  RawIdxResponse,\n  IdxActionParams,\n  IdpConfig,\n  IdxToPersist,\n  ChallengeData,\n  ActivationData,\n} from './idx-js';\nimport {\n  AccountUnlockOptions,\n  AuthenticationOptions,\n  CancelOptions,\n  InteractOptions,\n  IntrospectOptions,\n  OktaAuthIdxOptions,\n  PasswordRecoveryOptions,\n  ProceedOptions,\n  RegistrationOptions,\n  StartOptions,\n  IdxTransactionMetaOptions\n} from './options';\nimport { IdxTransactionMeta } from './meta';\nimport { IdxStorageManagerInterface, SavedIdxResponse } from './storage';\nimport type {\n  WebauthnEnrollValues,\n  WebauthnVerificationValues\n} from '../authenticator';\nimport { OktaAuthConstructor } from '../../base/types';\n\nexport enum IdxStatus {\n  SUCCESS = 'SUCCESS',\n  PENDING = 'PENDING',\n  FAILURE = 'FAILURE',\n  TERMINAL = 'TERMINAL',\n  CANCELED = 'CANCELED',\n}\n\nexport enum AuthenticatorKey {\n  OKTA_PASSWORD = 'okta_password',\n  OKTA_EMAIL = 'okta_email',\n  PHONE_NUMBER = 'phone_number',\n  GOOGLE_AUTHENTICATOR = 'google_otp',\n  SECURITY_QUESTION = 'security_question',\n  OKTA_VERIFY = 'okta_verify',\n  WEBAUTHN = 'webauthn',\n}\n\nexport type Input = {\n  name: string;\n  key?: string;\n  type?: string;\n  label?: string;\n  value?: string | {form: IdxForm} | Input[];\n  minLength?: number;\n  maxLength?: number;\n  secret?: boolean;\n  required?: boolean;\n  options?: IdxOption[];\n  mutable?: boolean;\n  visible?: boolean;\n  customLabel?: boolean\n}\n\n\nexport interface IdxPollOptions {\n  required?: boolean;\n  refresh?: number;\n}\n\nexport type NextStep = {\n  name: string;\n  authenticator?: IdxAuthenticator;\n  canSkip?: boolean;\n  canResend?: boolean;\n  inputs?: Input[];\n  poll?: IdxPollOptions;\n  authenticatorEnrollments?: IdxAuthenticator[];\n  // eslint-disable-next-line no-use-before-define\n  action?: (params?: IdxActionParams) => Promise<IdxTransaction>;\n  idp?: IdpConfig;\n  href?: string;\n  relatesTo?: {\n    type?: string;\n    value: IdxAuthenticator;\n  };\n  refresh?: number;\n}\n\nexport enum IdxFeature {\n  PASSWORD_RECOVERY = 'recover-password',\n  REGISTRATION = 'enroll-profile',\n  SOCIAL_IDP = 'redirect-idp',\n  ACCOUNT_UNLOCK = 'unlock-account',\n}\n\n\nexport interface IdxTransaction {\n  status: IdxStatus;\n  tokens?: Tokens;\n  nextStep?: NextStep;\n  messages?: IdxMessage[];\n  error?: APIError | IdxResponse;\n  meta?: IdxTransactionMeta;\n  enabledFeatures?: IdxFeature[];\n  availableSteps?: NextStep[];\n  requestDidSucceed?: boolean;\n  stepUp?: boolean;\n  \n  // from idx-js, used by signin widget\n  proceed: (remediationName: string, params: unknown) => Promise<IdxResponse>;\n  neededToProceed: IdxRemediation[];\n  rawIdxState: RawIdxResponse;\n  interactionCode?: string;\n  actions: IdxActions;\n  context: IdxContext;\n}\n\n\nexport type Authenticator = {\n  id?: string;\n  key?: string;\n  methodType?: string;\n  phoneNumber?: string;\n  channel?: string;\n};\n\nexport function isAuthenticator(obj: any): obj is Authenticator {\n  return obj && (obj.key || obj.id);\n}\n\nexport interface RemediationResponse {\n  idxResponse: IdxResponse;\n  nextStep?: NextStep;\n  messages?: IdxMessage[];\n  terminal?: boolean;\n  canceled?: boolean;\n}\n\nexport interface InteractResponse {\n  state?: string;\n  interactionHandle: string;\n  meta: IdxTransactionMeta;\n}\n\nexport interface EmailVerifyCallbackResponse {\n  state: string;\n  otp: string;\n}\n\nexport interface MinimalIdxAPI {\n  // lowest level api\n  makeIdxResponse: (rawIdxResponse: RawIdxResponse, toPersist: IdxToPersist, requestDidSucceed: boolean) => IdxResponse;\n\n  // flow control\n  start: (options?: StartOptions) => Promise<IdxTransaction>;\n  canProceed(options?: ProceedOptions): boolean;\n  proceed: (options?: ProceedOptions) => Promise<IdxTransaction>;\n\n  // call `start` instead of `startTransaction`. `startTransaction` will be removed in next major version (7.0)\n  startTransaction: (options?: StartOptions) => Promise<IdxTransaction>;\n\n  // transaction meta\n  getSavedTransactionMeta: (options?: IdxTransactionMetaOptions) => IdxTransactionMeta | undefined;\n  createTransactionMeta: (options?: IdxTransactionMetaOptions) => Promise<IdxTransactionMeta>;\n  getTransactionMeta: (options?: IdxTransactionMetaOptions) => Promise<IdxTransactionMeta>;\n  saveTransactionMeta: (meta: unknown) => void;\n  clearTransactionMeta: () => void;\n  isTransactionMetaValid: (meta: unknown) => boolean;\n}\n\nexport interface IdxAPI {\n  // lowest level api\n  interact: (options?: InteractOptions) => Promise<InteractResponse>;\n  introspect: (options?: IntrospectOptions) => Promise<IdxResponse>;\n  makeIdxResponse: (rawIdxResponse: RawIdxResponse, toPersist: IdxToPersist, requestDidSucceed: boolean) => IdxResponse;\n\n  // flow entrypoints\n  authenticate: (options?: AuthenticationOptions) => Promise<IdxTransaction>;\n  register: (options?: RegistrationOptions) => Promise<IdxTransaction>;\n  recoverPassword: (options?: PasswordRecoveryOptions) => Promise<IdxTransaction>;\n  unlockAccount: (options?: AccountUnlockOptions) => Promise<IdxTransaction>;\n  poll: (options?: IdxPollOptions) => Promise<IdxTransaction>;\n\n  // flow control\n  start: (options?: StartOptions) => Promise<IdxTransaction>;\n  canProceed(options?: ProceedOptions): boolean;\n  proceed: (options?: ProceedOptions) => Promise<IdxTransaction>;\n  cancel: (options?: CancelOptions) => Promise<IdxTransaction>;\n  getFlow(): FlowIdentifier | undefined;\n  setFlow(flow: FlowIdentifier): void;\n\n  // call `start` instead of `startTransaction`. `startTransaction` will be removed in next major version (7.0)\n  startTransaction: (options?: StartOptions) => Promise<IdxTransaction>;\n\n  // redirect callbacks\n  isInteractionRequired: (hashOrSearch?: string) => boolean;\n  isInteractionRequiredError: (error: Error) => boolean; \n  handleInteractionCodeRedirect: (url: string) => Promise<void>;\n  isEmailVerifyCallback: (search: string) => boolean;\n  parseEmailVerifyCallback: (search: string) => EmailVerifyCallbackResponse;\n  handleEmailVerifyCallback: (search: string) => Promise<IdxTransaction | undefined>;\n  isEmailVerifyCallbackError: (error: Error) => boolean;\n\n  // transaction meta\n  getSavedTransactionMeta: (options?: IdxTransactionMetaOptions) => IdxTransactionMeta | undefined;\n  createTransactionMeta: (options?: IdxTransactionMetaOptions) => Promise<IdxTransactionMeta>;\n  getTransactionMeta: (options?: IdxTransactionMetaOptions) => Promise<IdxTransactionMeta>;\n  saveTransactionMeta: (meta: unknown) => void;\n  clearTransactionMeta: () => void;\n  isTransactionMetaValid: (meta: unknown) => boolean;\n}\n\nexport interface IdxTransactionManagerInterface extends TransactionManagerInterface {\n  saveIdxResponse(data: SavedIdxResponse): void;\n  loadIdxResponse(options?: IntrospectOptions): SavedIdxResponse | null;\n  clearIdxResponse(): void;\n}\n\nexport type IdxTransactionManagerConstructor = TransactionManagerConstructor<IdxTransactionManagerInterface>;\n\nexport interface WebauthnAPI {\n  getAssertion(credential: PublicKeyCredential): WebauthnVerificationValues;\n  getAttestation(credential: PublicKeyCredential): WebauthnEnrollValues;\n  buildCredentialRequestOptions(\n    challengeData: ChallengeData, authenticatorEnrollments: IdxAuthenticator[]\n  ): CredentialRequestOptions;\n  buildCredentialCreationOptions(\n    activationData: ActivationData, authenticatorEnrollments: IdxAuthenticator[]\n  ): CredentialCreationOptions;\n}\n\nexport interface OktaAuthIdxInterface\n<\n  M extends IdxTransactionMeta = IdxTransactionMeta,\n  S extends IdxStorageManagerInterface<M> = IdxStorageManagerInterface<M>,\n  O extends OktaAuthIdxOptions = OktaAuthIdxOptions,\n  TM extends IdxTransactionManagerInterface = IdxTransactionManagerInterface\n>\n  extends OktaAuthOAuthInterface<M, S, O, TM>\n{\n  idx: IdxAPI;\n}\n\nexport interface MinimalOktaAuthIdxInterface\n<\n  M extends IdxTransactionMeta = IdxTransactionMeta,\n  S extends IdxStorageManagerInterface<M> = IdxStorageManagerInterface<M>,\n  O extends OktaAuthIdxOptions = OktaAuthIdxOptions,\n  TM extends IdxTransactionManagerInterface = IdxTransactionManagerInterface\n>\n  extends MinimalOktaOAuthInterface<M, S, O, TM>\n{\n  idx: MinimalIdxAPI;\n}\n\nexport interface OktaAuthIdxConstructor\n<\n  I extends MinimalOktaAuthIdxInterface = OktaAuthIdxInterface\n>\n extends OktaAuthConstructor<I>\n{\n  new(...args: any[]): I;\n  webauthn: WebauthnAPI;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n/* global window */\n\nexport function getNativeConsole() {\n  if (typeof window !== 'undefined') {\n    return window.console;\n  } else if (typeof console !== 'undefined') {\n    return console;\n  } else {\n    return undefined;\n  }\n}\n\nexport function getConsole() {\n  var nativeConsole = getNativeConsole();\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  if (nativeConsole && nativeConsole.log) {\n    return nativeConsole;\n  }\n  return {\n    log: function() {},\n    warn: function() {},\n    group: function() {},\n    groupEnd: function() {}\n  };\n}\n\nexport function warn(text) {\n  /* eslint-disable no-console */\n  getConsole().warn('[okta-auth-sdk] WARN: ' + text);\n  /* eslint-enable */\n}\n\nexport function deprecate(text) {\n  /* eslint-disable no-console */\n  getConsole().warn('[okta-auth-sdk] DEPRECATION: ' + text);\n  /* eslint-enable */\n}\n\nexport function deprecateWrap(text, fn) {\n  return function() {\n    deprecate(text);\n    return fn.apply(null, arguments);\n  };\n}\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport function bind(fn, ctx) {\n  var additionalArgs = Array.prototype.slice.call(arguments, 2);\n  return function() {\n    var args = Array.prototype.slice.call(arguments);\n    args = additionalArgs.concat(args);\n    return fn.apply(ctx, args);\n  };\n}\n\n// TODO: replace all references with `Object.assign` then remove this function\nexport function extend() {\n  // First object will be modified!\n  var obj1 = arguments[0];\n  // Properties from other objects will be copied over\n  var objArray = [].slice.call(arguments, 1);\n  objArray.forEach(function(obj) {\n    for (var prop in obj) {\n      // copy over all properties with defined values\n      if (Object.prototype.hasOwnProperty.call(obj, prop) && obj[prop] !== undefined) {\n        obj1[prop] = obj[prop];\n      }\n    }\n  });\n  return obj1; // return the modified object\n}\n\nexport function removeNils(obj) {\n  var cleaned = {};\n  for (var prop in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n      var value = obj[prop];\n      if (value !== null && value !== undefined) {\n        cleaned[prop] = value;\n      }\n    }\n  }\n  return cleaned;\n}\n\nexport function clone(obj) {\n  if (obj) {\n    var str = JSON.stringify(obj);\n    if (str) {\n      return JSON.parse(str);\n    }\n  }\n  return obj;\n}\n\n// Analogous to _.omit\nexport function omit(obj, ...props: any[]) {\n  // var props = Array.prototype.slice.call(arguments, 1);\n  var newobj = {};\n  for (var p in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, p) && props.indexOf(p) == -1) {\n      newobj[p] = obj[p];\n    }\n  }\n  return clone(newobj);\n}\n\nexport function find(collection, searchParams) {\n  var c = collection.length;\n  while (c--) {\n    var item = collection[c];\n    var found = true;\n    for (var prop in searchParams) {\n      if (!Object.prototype.hasOwnProperty.call(searchParams, prop)) {\n        continue;\n      }\n      if (item[prop] !== searchParams[prop]) {\n        found = false;\n        break;\n      }\n    }\n    if (found) {\n      return item;\n    }\n  }\n}\n\nexport function getLink(obj, linkName, altName?) {\n  if (!obj || !obj._links) {\n    return;\n  }\n\n  var link = clone(obj._links[linkName]);\n\n  // If a link has a name and we have an altName, return if they match\n  if (link && link.name && altName) {\n    if (link.name === altName) {\n      return link;\n    }\n  } else {\n    return link;\n  }\n}\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport function isoToUTCString(str) {\n  var parts = str.match(/\\d+/g),\n      isoTime = Date.UTC(parts[0], parts[1] - 1, parts[2], parts[3], parts[4], parts[5]),\n      isoDate = new Date(isoTime);\n\n  return isoDate.toUTCString();\n}\n\nexport function genRandomString(length) {\n  var randomCharset = 'abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n  var random = '';\n  for (var c = 0, cl = randomCharset.length; c < length; ++c) {\n    random += randomCharset[Math.floor(Math.random() * cl)];\n  }\n  return random;\n}\n\nexport function delay(ms) {\n  return new Promise(function(resolve) {\n    setTimeout(resolve, ms);\n  });\n}\n\nexport function split2(str, delim) {\n  const parts = str.split(delim);\n  return [\n    parts[0], \n    parts.splice(1, parts.length).join(delim),\n  ];\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport function isAbsoluteUrl(url) {\n  return /^[a-z][a-z0-9+.-]*:/i.test(url);\n}\n\nexport function toAbsoluteUrl(url = '', baseUrl) {\n  if (isAbsoluteUrl(url)) {\n    return url;\n  }\n  baseUrl = removeTrailingSlash(baseUrl);\n  return url[0] === '/' ? `${baseUrl}${url}` : `${baseUrl}/${url}`;\n}\n\nexport function toRelativeUrl(url = '', baseUrl) {\n  if (isAbsoluteUrl(url)) {\n    url = url.substring(baseUrl.length);\n  }\n\n  return url[0] === '/' ? url : `/${url}`;\n}\n\nexport function toQueryString(obj) {\n  var str = [];\n  if (obj !== null) {\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key) &&\n          obj[key] !== undefined &&\n          obj[key] !== null) {\n        str.push(key + '=' + encodeURIComponent(obj[key]) as never);\n      }\n    }\n  }\n  if (str.length) {\n    return '?' + str.join('&');\n  } else {\n    return '';\n  }\n}\n\nexport function removeTrailingSlash(path) {\n  if (!path) {\n    return;\n  }\n  // Remove any whitespace before or after string\n  var trimmed = path.replace(/^\\s+|\\s+$/gm,'');\n  // Remove trailing slash(es)\n  trimmed = trimmed.replace(/\\/+$/, '');\n\n  return trimmed;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport default class CustomError extends Error {\n  constructor(message: string) {\n    // https://stackoverflow.com/questions/41102060/typescript-extending-error-class\n    super(message); // 'Error' breaks prototype chain here\n    Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain\n  }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport CustomError from './CustomError';\nimport { APIError, FieldError } from './types';\n\nexport default class AuthSdkError extends CustomError implements APIError {\n  errorSummary: string;\n  errorCode: string;\n  errorLink: string;\n  errorId: string;\n  errorCauses: Array<FieldError>;\n  xhr?: XMLHttpRequest;\n\n  constructor(msg: string, xhr?: XMLHttpRequest) {\n    super(msg);\n    this.name = 'AuthSdkError';\n    this.errorCode = 'INTERNAL';\n    this.errorSummary = msg;\n    this.errorLink = 'INTERNAL';\n    this.errorId = 'INTERNAL';\n    this.errorCauses = [];\n    if (xhr) {\n      this.xhr = xhr;\n    }\n  }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n/* eslint-disable complexity, max-statements */\nimport { genRandomString, removeTrailingSlash } from '../../util';\nimport AuthSdkError from '../../errors/AuthSdkError';\nimport { OktaAuthOAuthInterface, CustomUrls } from '../types';\n\nexport function generateState() {\n  return genRandomString(64);\n}\n\nexport function generateNonce() {\n  return genRandomString(64);\n}\n\nfunction getIssuer(sdk: OktaAuthOAuthInterface, options: CustomUrls = {}) {\n  const issuer = removeTrailingSlash(options.issuer) || sdk.options.issuer;\n  return issuer;\n}\n\nexport function getOAuthBaseUrl(sdk: OktaAuthOAuthInterface, options: CustomUrls = {}) {\n  const issuer = getIssuer(sdk, options);\n  const baseUrl = issuer.indexOf('/oauth2') > 0 ? issuer : issuer + '/oauth2';\n  return baseUrl;\n}\n\nexport function getOAuthDomain(sdk: OktaAuthOAuthInterface, options: CustomUrls = {}) {\n  const issuer = getIssuer(sdk, options);\n  const domain = issuer.split('/oauth2')[0];\n  return domain;\n}\n\nexport function getOAuthUrls(sdk: OktaAuthOAuthInterface, options?: CustomUrls): CustomUrls {\n  if (arguments.length > 2) {\n    throw new AuthSdkError('As of version 3.0, \"getOAuthUrls\" takes only a single set of options');\n  }\n  options = options || {};\n\n  // Get user-supplied arguments\n  var authorizeUrl = removeTrailingSlash(options.authorizeUrl) || sdk.options.authorizeUrl;\n  var issuer = getIssuer(sdk, options);\n  var userinfoUrl = removeTrailingSlash(options.userinfoUrl) || sdk.options.userinfoUrl;\n  var tokenUrl = removeTrailingSlash(options.tokenUrl) || sdk.options.tokenUrl;\n  var logoutUrl = removeTrailingSlash(options.logoutUrl) || sdk.options.logoutUrl;\n  var revokeUrl = removeTrailingSlash(options.revokeUrl) || sdk.options.revokeUrl;\n\n  var baseUrl = getOAuthBaseUrl(sdk, options);\n\n  authorizeUrl = authorizeUrl || baseUrl + '/v1/authorize';\n  userinfoUrl = userinfoUrl || baseUrl + '/v1/userinfo';\n  tokenUrl = tokenUrl || baseUrl + '/v1/token';\n  revokeUrl = revokeUrl || baseUrl + '/v1/revoke';\n  logoutUrl = logoutUrl || baseUrl + '/v1/logout';\n\n  return {\n    issuer: issuer,\n    authorizeUrl: authorizeUrl,\n    userinfoUrl: userinfoUrl,\n    tokenUrl: tokenUrl,\n    revokeUrl: revokeUrl,\n    logoutUrl: logoutUrl\n  };\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { OAuthTransactionMeta, OktaAuthOAuthInterface, PKCETransactionMeta, TokenParams } from '../types';\nimport { getOAuthUrls } from './oauth';\n\nexport function createOAuthMeta(\n  sdk: OktaAuthOAuthInterface, \n  tokenParams: TokenParams\n): OAuthTransactionMeta | PKCETransactionMeta {\n  const issuer = sdk.options.issuer!;\n  const urls = getOAuthUrls(sdk, tokenParams);\n  const oauthMeta: OAuthTransactionMeta = {\n    issuer,\n    urls,\n    clientId: tokenParams.clientId!,\n    redirectUri: tokenParams.redirectUri!,\n    responseType: tokenParams.responseType!,\n    responseMode: tokenParams.responseMode!,\n    scopes: tokenParams.scopes!,\n    state: tokenParams.state!,\n    nonce: tokenParams.nonce!,\n    ignoreSignature: tokenParams.ignoreSignature!,\n    acrValues: tokenParams.acrValues,\n  };\n\n  if (tokenParams.pkce === false) {\n    // Implicit flow or authorization_code without PKCE\n    return oauthMeta;\n  }\n\n  const pkceMeta: PKCETransactionMeta = {\n    ...oauthMeta,\n    codeVerifier: tokenParams.codeVerifier!,\n    codeChallengeMethod: tokenParams.codeChallengeMethod!,\n    codeChallenge: tokenParams.codeChallenge!,\n  };\n\n  return pkceMeta;\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      target[key] = source[key];\n    }\n  }\n  return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n  read: function (value) {\n    if (value[0] === '\"') {\n      value = value.slice(1, -1);\n    }\n    return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n  },\n  write: function (value) {\n    return encodeURIComponent(value).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    )\n  }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n  function set (name, value, attributes) {\n    if (typeof document === 'undefined') {\n      return\n    }\n\n    attributes = assign({}, defaultAttributes, attributes);\n\n    if (typeof attributes.expires === 'number') {\n      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n    }\n    if (attributes.expires) {\n      attributes.expires = attributes.expires.toUTCString();\n    }\n\n    name = encodeURIComponent(name)\n      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n      .replace(/[()]/g, escape);\n\n    var stringifiedAttributes = '';\n    for (var attributeName in attributes) {\n      if (!attributes[attributeName]) {\n        continue\n      }\n\n      stringifiedAttributes += '; ' + attributeName;\n\n      if (attributes[attributeName] === true) {\n        continue\n      }\n\n      // Considers RFC 6265 section 5.2:\n      // ...\n      // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n      //     character:\n      // Consume the characters of the unparsed-attributes up to,\n      // not including, the first %x3B (\";\") character.\n      // ...\n      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n    }\n\n    return (document.cookie =\n      name + '=' + converter.write(value, name) + stringifiedAttributes)\n  }\n\n  function get (name) {\n    if (typeof document === 'undefined' || (arguments.length && !name)) {\n      return\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    var cookies = document.cookie ? document.cookie.split('; ') : [];\n    var jar = {};\n    for (var i = 0; i < cookies.length; i++) {\n      var parts = cookies[i].split('=');\n      var value = parts.slice(1).join('=');\n\n      try {\n        var found = decodeURIComponent(parts[0]);\n        jar[found] = converter.read(value, found);\n\n        if (name === found) {\n          break\n        }\n      } catch (e) {}\n    }\n\n    return name ? jar[name] : jar\n  }\n\n  return Object.create(\n    {\n      set,\n      get,\n      remove: function (name, attributes) {\n        set(\n          name,\n          '',\n          assign({}, attributes, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function (attributes) {\n        return init(this.converter, assign({}, this.attributes, attributes))\n      },\n      withConverter: function (converter) {\n        return init(assign({}, this.converter, converter), this.attributes)\n      }\n    },\n    {\n      attributes: { value: Object.freeze(defaultAttributes) },\n      converter: { value: Object.freeze(converter) }\n    }\n  )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { UserClaims } from './UserClaims';\n\nexport interface AbstractToken {\n  expiresAt: number;\n  authorizeUrl: string;\n  scopes: string[];\n  pendingRemove?: boolean;\n}\n\nexport interface AccessToken extends AbstractToken {\n  accessToken: string;\n  claims: UserClaims;\n  tokenType: string;\n  userinfoUrl: string;\n}\n\nexport interface RefreshToken extends AbstractToken {\n  refreshToken: string;\n  tokenUrl: string;\n  issuer: string;\n}\n\nexport interface IDToken extends AbstractToken {\n  idToken: string;\n  claims: UserClaims;\n  issuer: string;\n  clientId: string;\n}\n\nexport type Token = AccessToken | IDToken | RefreshToken;\nexport type RevocableToken = AccessToken | RefreshToken;\n\nexport type TokenType = 'accessToken' | 'idToken' | 'refreshToken';\nexport enum TokenKind {\n  ACCESS = 'accessToken',\n  ID = 'idToken',\n  REFRESH = 'refreshToken',\n}\n\nexport function isToken(obj: any): obj is Token {\n  if (obj &&\n      (obj.accessToken || obj.idToken || obj.refreshToken) &&\n      Array.isArray(obj.scopes)) {\n    return true;\n  }\n  return false;\n}\n\nexport function isAccessToken(obj: any): obj is AccessToken {\n  return obj && obj.accessToken;\n}\n\nexport function isIDToken(obj: any): obj is IDToken {\n  return obj && obj.idToken;\n}\n\nexport function isRefreshToken(obj: any): obj is RefreshToken {\n  return obj && obj.refreshToken;\n}\n\nexport interface Tokens {\n  accessToken?: AccessToken;\n  idToken?: IDToken;\n  refreshToken?: RefreshToken;\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { OktaAuthIdxInterface, IdxTransactionMeta, IdxTransactionMetaOptions } from './types';\nimport { removeNils, warn } from '../util';\nimport { createOAuthMeta, PKCETransactionMeta } from '../oidc';\n\n// Calculate new values\nexport async function createTransactionMeta(\n  authClient: OktaAuthIdxInterface,\n  options: IdxTransactionMetaOptions = {}\n): Promise<IdxTransactionMeta> {\n  const tokenParams = await authClient.token.prepareTokenParams(options);\n  const pkceMeta = createOAuthMeta(authClient, tokenParams) as PKCETransactionMeta;\n  let {\n    flow = 'default',\n    withCredentials = true,\n    activationToken = undefined,\n    recoveryToken = undefined,\n    maxAge = undefined,\n    acrValues = undefined,\n  } = { ...authClient.options, ...options }; // local options override SDK options\n\n  const meta: IdxTransactionMeta = {\n    ...pkceMeta,\n    flow,\n    withCredentials,\n    activationToken,\n    recoveryToken,\n    maxAge,\n    acrValues\n  };\n  return meta;\n}\n\nexport function hasSavedInteractionHandle(\n  authClient: OktaAuthIdxInterface,\n  options?: IdxTransactionMetaOptions\n): boolean {\n  const savedMeta = getSavedTransactionMeta(authClient, options);\n  if (savedMeta?.interactionHandle) {\n    return true;\n  }\n  return false;\n}\n\n// Returns the saved transaction meta, if it exists and is valid\nexport function getSavedTransactionMeta(\n  authClient: OktaAuthIdxInterface,\n  options?: IdxTransactionMetaOptions\n): IdxTransactionMeta | undefined {\n  options = removeNils(options);\n  options = { ...authClient.options, ...options }; // local options override SDK options\n  let savedMeta;\n  try {\n    savedMeta = authClient.transactionManager.load(options) as IdxTransactionMeta;\n  } catch (e) {\n    // ignore errors here\n  }\n\n  if (!savedMeta) {\n    return;\n  }\n\n  if (isTransactionMetaValid(savedMeta, options)) {\n    return savedMeta;\n  }\n\n  // existing meta is not valid for this configuration\n  // this is common when changing configuration in local development environment\n  // in a production environment, this may indicate that two apps are sharing a storage key\n  warn('Saved transaction meta does not match the current configuration. ' + \n    'This may indicate that two apps are sharing a storage key.');\n\n}\n\nexport async function getTransactionMeta(\n  authClient: OktaAuthIdxInterface,\n  options?: IdxTransactionMetaOptions\n): Promise<IdxTransactionMeta> {\n  options = removeNils(options);\n  options = { ...authClient.options, ...options }; // local options override SDK options\n  // Load existing transaction meta from storage\n  const validExistingMeta = getSavedTransactionMeta(authClient, options);\n  if (validExistingMeta) {\n    return validExistingMeta;\n  }\n  // No existing? Create new transaction meta.\n  return createTransactionMeta(authClient, options);\n}\n\nexport function saveTransactionMeta (authClient: OktaAuthIdxInterface, meta): void {\n  authClient.transactionManager.save(meta, { muteWarning: true });\n}\n\nexport function clearTransactionMeta (authClient: OktaAuthIdxInterface): void {\n  authClient.transactionManager.clear();\n}\n\nexport function isTransactionMetaValid (meta, options: IdxTransactionMetaOptions  = {}): boolean {\n  // Validate against certain options. If these exist in options, they must match in meta\n  const keys = [\n    'issuer',\n    'clientId',\n    'redirectUri',\n    'state',\n    'codeChallenge',\n    'codeChallengeMethod',\n    'activationToken',\n    'recoveryToken'\n  ];\n  if (isTransactionMetaValidForOptions(meta, options, keys) === false) {\n    return false;\n  }\n\n  // Validate configured flow\n  const { flow } = options;\n  if (isTransactionMetaValidForFlow(meta, flow) === false) {\n    return false;\n  }\n\n  return true;\n}\n\nexport function isTransactionMetaValidForFlow(meta, flow) {\n  // Specific flows should not share transaction data\n  const shouldValidateFlow = flow && flow !== 'default' && flow !== 'proceed';\n  if (shouldValidateFlow) {\n    if (flow !== meta.flow) {\n      // The flow has changed; abandon the old transaction\n      return false;\n    }\n  }\n  return true;\n}\n\nexport function isTransactionMetaValidForOptions(meta, options, keys) {\n  // returns false if values in meta do not match options\n  // if the option does not have a value for a specific key, it is ignored\n  const mismatch = keys.some(key => {\n    const value = options[key];\n    if (value && value !== meta[key]) {\n      return true;\n    }\n  });\n  return !mismatch;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport function isString(obj: any): obj is string {\n  return Object.prototype.toString.call(obj) === '[object String]';\n}\n\nexport function isObject(obj: any): obj is object {\n  return Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexport function isNumber(obj: any): obj is number {\n  return Object.prototype.toString.call(obj) === '[object Number]';\n}\n\nexport function isFunction(fn: any): fn is (...any: any[]) => any {\n  return !!fn && {}.toString.call(fn) === '[object Function]';\n}\n\nexport function isPromise(obj) {\n  return obj && obj.finally && (typeof obj.finally === 'function');\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport const STATE_TOKEN_KEY_NAME = 'oktaStateToken';\nexport const DEFAULT_POLLING_DELAY = 500;\nexport const DEFAULT_MAX_CLOCK_SKEW = 300;\nexport const DEFAULT_CACHE_DURATION = 86400;\nexport const TOKEN_STORAGE_NAME = 'okta-token-storage';\nexport const CACHE_STORAGE_NAME = 'okta-cache-storage';\nexport const PKCE_STORAGE_NAME = 'okta-pkce-storage';\nexport const TRANSACTION_STORAGE_NAME = 'okta-transaction-storage';\nexport const SHARED_TRANSACTION_STORAGE_NAME = 'okta-shared-transaction-storage';\nexport const ORIGINAL_URI_STORAGE_NAME = 'okta-original-uri-storage';\nexport const IDX_RESPONSE_STORAGE_NAME = 'okta-idx-response-storage';\nexport const ACCESS_TOKEN_STORAGE_KEY = 'accessToken';\nexport const ID_TOKEN_STORAGE_KEY =  'idToken';\nexport const REFRESH_TOKEN_STORAGE_KEY =  'refreshToken';\nexport const REFERRER_PATH_STORAGE_KEY = 'referrerPath';\n\n// Code verifier: Random URL-safe string with a minimum length of 43 characters.\n// Code challenge: Base64 URL-encoded SHA-256 hash of the code verifier.\nexport const MIN_VERIFIER_LENGTH = 43;\nexport const MAX_VERIFIER_LENGTH = 128;\nexport const DEFAULT_CODE_CHALLENGE_METHOD = 'S256';\n\nexport const IDX_API_VERSION = '1.0.0';","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport CustomError from './CustomError';\nimport { HttpResponse } from '../http/types';\nimport { APIError, FieldError } from './types';\n\nexport default class AuthApiError extends CustomError implements APIError {\n  errorSummary: string;\n  errorCode?: string;\n  errorLink?: string;\n  errorId?: string;\n  errorCauses?: Array<FieldError>;\n  xhr?: HttpResponse;\n  meta?: Record<string, string | number>;\n\n  constructor(err: APIError, xhr?: HttpResponse, meta?: Record<string, string | number>) {\n    const message = err.errorSummary;\n    super(message);\n\n    this.name = 'AuthApiError';\n    this.errorSummary = err.errorSummary;\n    this.errorCode = err.errorCode;\n    this.errorLink = err.errorLink;\n    this.errorId = err.errorId;\n    this.errorCauses = err.errorCauses;\n\n    if (xhr) {\n      this.xhr = xhr;\n    }\n\n    if (meta) {\n      this.meta = meta;\n    }\n  }\n}\n","/* eslint-disable camelcase */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport CustomError from './CustomError';\n\nexport default class OAuthError extends CustomError {\n  errorCode: string;\n  errorSummary: string;\n\n  // for widget / idx-js backward compatibility\n  error: string;\n  error_description: string;\n\n  constructor(errorCode: string, summary: string) {\n    super(summary);\n\n    this.name = 'OAuthError';\n    this.errorCode = errorCode;\n    this.errorSummary = summary;\n\n    // for widget / idx-js backward compatibility\n    this.error = errorCode;\n    this.error_description = summary;\n  }\n}\n\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n/* eslint-disable complexity */\nimport { isString, clone, isAbsoluteUrl, removeNils } from '../util';\nimport { STATE_TOKEN_KEY_NAME, DEFAULT_CACHE_DURATION } from '../constants';\nimport {\n  OktaAuthHttpInterface,\n  RequestOptions,\n  FetchOptions,\n  RequestData,\n  HttpResponse\n} from './types';\nimport { AuthApiError, OAuthError, AuthSdkError, APIError } from '../errors';\n\ntype InsufficientAuthenticationError = {\n  error: string;\n  // eslint-disable-next-line camelcase\n  error_description: string;\n  // eslint-disable-next-line camelcase\n  max_age: string;\n  // eslint-disable-next-line camelcase\n  acr_values: string;\n};\n\nconst parseInsufficientAuthenticationError = (\n  header: string\n): InsufficientAuthenticationError => {\n  if (!header) {\n    throw new AuthSdkError('Missing header string');\n  }\n\n  return header\n    .split(',')\n    .map(part => part.trim())\n    .map(part => part.split('='))\n    .reduce((acc, curr) => {\n      // unwrap quotes from value\n      acc[curr[0]] = curr[1].replace(/^\"(.*)\"$/, '$1');\n      return acc;\n    }, {}) as InsufficientAuthenticationError;\n};\n\nconst formatError = (sdk: OktaAuthHttpInterface, error: HttpResponse | Error): AuthApiError | OAuthError => {\n  if (error instanceof Error) {\n    // fetch() can throw exceptions\n    // see https://developer.mozilla.org/en-US/docs/Web/API/fetch#exceptions\n    return new AuthApiError({\n      errorSummary: error.message,\n    });\n  }\n\n  let resp: HttpResponse = error;\n  let err: AuthApiError | OAuthError;\n  let serverErr: Record<string, any> = {};\n  if (resp.responseText && isString(resp.responseText)) {\n    try {\n      serverErr = JSON.parse(resp.responseText);\n    } catch (e) {\n      serverErr = {\n        errorSummary: 'Unknown error'\n      };\n    }\n  }\n\n  if (resp.status >= 500) {\n    serverErr.errorSummary = 'Unknown error';\n  }\n\n  if (sdk.options.transformErrorXHR) {\n    resp = sdk.options.transformErrorXHR(clone(resp));\n  }\n\n  if (serverErr.error && serverErr.error_description) {\n    err = new OAuthError(serverErr.error, serverErr.error_description);\n  } else {\n    err = new AuthApiError(serverErr as APIError, resp);\n  }\n\n  if (resp?.status === 403 && !!resp?.headers?.['www-authenticate']) {\n    const { \n      error, \n      // eslint-disable-next-line camelcase\n      error_description,\n      // eslint-disable-next-line camelcase\n      max_age,\n      // eslint-disable-next-line camelcase\n      acr_values \n    } = parseInsufficientAuthenticationError(resp?.headers?.['www-authenticate']);\n    if (error === 'insufficient_authentication_context') {\n      err = new AuthApiError(\n        { \n          errorSummary: error,\n          // eslint-disable-next-line camelcase\n          errorCauses: [{ errorSummary: error_description }]\n        }, \n        resp, \n        {\n          // eslint-disable-next-line camelcase\n          max_age: +max_age,\n          // eslint-disable-next-line camelcase\n          ...(acr_values && { acr_values })\n        }\n      );\n    }\n  }\n\n  return err;\n};\n\nexport function httpRequest(sdk: OktaAuthHttpInterface, options: RequestOptions): Promise<any> {\n  options = options || {};\n\n  if (sdk.options.httpRequestInterceptors) {\n    for (const interceptor of sdk.options.httpRequestInterceptors) {\n      interceptor(options);\n    }\n  }\n\n  var url = options.url,\n      method = options.method,\n      args = options.args,\n      saveAuthnState = options.saveAuthnState,\n      accessToken = options.accessToken,\n      withCredentials = options.withCredentials === true, // default value is false\n      storageUtil = sdk.options.storageUtil,\n      storage = storageUtil!.storage,\n      httpCache = sdk.storageManager.getHttpCache(sdk.options.cookies);\n\n  if (options.cacheResponse) {\n    var cacheContents = httpCache.getStorage();\n    var cachedResponse = cacheContents[url as string];\n    if (cachedResponse && Date.now()/1000 < cachedResponse.expiresAt) {\n      return Promise.resolve(cachedResponse.response);\n    }\n  }\n\n  var oktaUserAgentHeader = sdk._oktaUserAgent.getHttpHeader();\n  var headers: HeadersInit = {\n    'Accept': 'application/json',\n    'Content-Type': 'application/json',\n    ...oktaUserAgentHeader\n  };\n  Object.assign(headers, sdk.options.headers, options.headers);\n  headers = removeNils(headers) as HeadersInit;\n\n  if (accessToken && isString(accessToken)) {\n    headers['Authorization'] = 'Bearer ' + accessToken;\n  }\n\n  var ajaxOptions: FetchOptions = {\n    headers,\n    data: args || undefined,\n    withCredentials\n  };\n\n  var err, res;\n  return sdk.options.httpRequestClient!(method!, url!, ajaxOptions)\n    .then(function(resp) {\n      res = resp.responseText;\n      if (res && isString(res)) {\n        res = JSON.parse(res);\n        if (res && typeof res === 'object' && !res.headers) {\n          if (Array.isArray(res)) {\n            res.forEach(item => {\n              item.headers = resp.headers;\n            });\n          } else {\n            res.headers = resp.headers;\n          }\n        }\n      }\n\n      if (saveAuthnState) {\n        if (!res.stateToken) {\n          storage.delete(STATE_TOKEN_KEY_NAME);\n        }\n      }\n\n      if (res && res.stateToken && res.expiresAt) {\n        storage.set(STATE_TOKEN_KEY_NAME, res.stateToken, res.expiresAt, sdk.options.cookies!);\n      }\n\n      if (res && options.cacheResponse) {\n        httpCache.updateStorage(url!, {\n          expiresAt: Math.floor(Date.now()/1000) + DEFAULT_CACHE_DURATION,\n          response: res\n        });\n      }\n      \n      return res;\n    })\n    .catch(function(resp) {\n      err = formatError(sdk, resp);\n\n      if (err.errorCode === 'E0000011') {\n        storage.delete(STATE_TOKEN_KEY_NAME);\n      }\n\n      throw err;\n    });\n}\n\nexport function get(sdk: OktaAuthHttpInterface, url: string, options?: RequestOptions) {\n  url = isAbsoluteUrl(url) ? url : sdk.getIssuerOrigin() + url;\n  var getOptions = {\n    url: url,\n    method: 'GET'\n  };\n  Object.assign(getOptions, options);\n  return httpRequest(sdk, getOptions);\n}\n\nexport function post(sdk: OktaAuthHttpInterface, url: string, args?: RequestData, options?: RequestOptions) {\n  url = isAbsoluteUrl(url) ? url : sdk.getIssuerOrigin() + url;\n  var postOptions = {\n    url: url,\n    method: 'POST',\n    args: args,\n    saveAuthnState: true\n  };\n  Object.assign(postOptions, options);\n  return httpRequest(sdk, postOptions);\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n/* eslint complexity:[0,8] */\nimport { OktaAuthIdxInterface, IdxTransactionMeta, InteractOptions, InteractResponse } from './types';\nimport { getSavedTransactionMeta, saveTransactionMeta, createTransactionMeta } from './transactionMeta';\nimport { getOAuthBaseUrl } from '../oidc';\nimport { removeNils } from '../util';\nimport { httpRequest } from '../http';\n\n\n/* eslint-disable camelcase */\nexport interface InteractParams {\n  client_id: string;\n  scope: string;\n  redirect_uri: string;\n  code_challenge: string;\n  code_challenge_method: string;\n  state: string;\n  activation_token?: string;\n  recovery_token?: string;\n  client_secret?: string;\n  max_age?: string | number;\n  acr_values?: string;\n  nonce?: string;\n}\n/* eslint-enable camelcase */\n\nfunction getResponse(meta: IdxTransactionMeta): InteractResponse {\n  return {\n    meta,\n    interactionHandle: meta.interactionHandle!,\n    state: meta.state\n  };\n}\n\n// Begin or resume a transaction. Returns an interaction handle\nexport async function interact (\n  authClient: OktaAuthIdxInterface, \n  options: InteractOptions = {}\n): Promise<InteractResponse> {\n  options = removeNils(options);\n\n  let meta = getSavedTransactionMeta(authClient, options);\n  // If meta exists, it has been validated against all options\n\n  if (meta?.interactionHandle) {\n    return getResponse(meta); // Saved transaction, return meta\n  }\n\n  // Create new meta, respecting previous meta if it has been set and is not overridden\n  meta = await createTransactionMeta(authClient, { ...meta, ...options });\n  const baseUrl = getOAuthBaseUrl(authClient);\n  let {\n    clientId,\n    redirectUri,\n    state,\n    scopes,\n    withCredentials,\n    codeChallenge,\n    codeChallengeMethod,\n    activationToken,\n    recoveryToken,\n    maxAge,\n    acrValues,\n    nonce\n  } = meta as IdxTransactionMeta;\n  const clientSecret = options.clientSecret || authClient.options.clientSecret;\n  withCredentials = withCredentials ?? true;\n\n  /* eslint-disable camelcase */\n  const url = `${baseUrl}/v1/interact`;\n  const params = {\n    client_id: clientId,\n    scope: scopes!.join(' '),\n    redirect_uri: redirectUri,\n    code_challenge: codeChallenge,\n    code_challenge_method: codeChallengeMethod,\n    state,\n    ...(activationToken && { activation_token: activationToken }),\n    ...(recoveryToken && { recovery_token: recoveryToken }),\n    // X-Device-Token header need to pair with `client_secret`\n    // eslint-disable-next-line max-len\n    // https://oktawiki.atlassian.net/wiki/spaces/eng/pages/2445902453/Support+Device+Binding+in+interact#Scenario-1%3A-Non-User-Agent-with-Confidential-Client-(top-priority)\n    ...(clientSecret && { client_secret: clientSecret }),\n    ...(maxAge && { max_age: maxAge }),\n    ...(acrValues && { acr_values: acrValues }),\n    ...(nonce && { nonce }),\n  } as InteractParams;\n  /* eslint-enable camelcase */\n\n  const headers = {\n    'Content-Type': 'application/x-www-form-urlencoded',\n  };\n\n  const resp = await httpRequest(authClient, {\n    method: 'POST',\n    url,\n    headers,\n    withCredentials,\n    args: params\n  });\n  const interactionHandle = resp.interaction_handle;\n\n  const newMeta = {\n    ...meta,\n    interactionHandle,\n    \n    // Options which can be passed into interact() should be saved in the meta\n    withCredentials,\n    state,\n    scopes,\n    recoveryToken,\n    activationToken\n  };\n  // Save transaction meta so it can be resumed\n  saveTransactionMeta(authClient, newMeta);\n\n  return getResponse(newMeta);\n}\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nconst isFieldMutable = function isFieldMutable(field) {\n  // mutable defaults to true, annoyingly\n  return ( field.mutable !== false );\n};\n\nconst divideSingleActionParamsByMutability = function divideSingleActionParamsByMutability( action ) {\n  const defaultParamsForAction = {}; // mutable and present\n  const neededParamsForAction = []; // mutable values\n  const immutableParamsForAction = {}; // immutable\n  // TODO: remove assumption that form names are unique, neededParams being an array is a temp fix\n  // not all actions have value (e.g. redirect)\n  // making sure they are not empty and instead hold the remediation object\n  if (!action.value) {\n    neededParamsForAction.push(action);\n    return { defaultParamsForAction, neededParamsForAction, immutableParamsForAction };\n  }\n\n  for ( let field of action.value ) {\n\n    if ( isFieldMutable( field ) ) {\n\n      neededParamsForAction.push(field);\n\n      if ( field.value ?? false ) {\n        defaultParamsForAction[field.name] = field.value;\n      }\n\n    } else {\n      immutableParamsForAction[field.name] = field.value ?? '';\n    }\n  }\n  return { defaultParamsForAction, neededParamsForAction, immutableParamsForAction };\n};\n\nexport const divideActionParamsByMutability = function divideActionParamsByMutability( actionList ) {\n  // TODO: when removing form name is unique assumption, this may all be redundant\n  actionList = Array.isArray(actionList) ? actionList : [ actionList ];\n  const neededParams = [];\n  const defaultParams = {};\n  const immutableParams = {};\n\n  for ( let action of actionList ) {\n    const { \n      defaultParamsForAction, \n      neededParamsForAction, \n      immutableParamsForAction \n    } = divideSingleActionParamsByMutability(action);\n    neededParams.push(neededParamsForAction);\n    defaultParams[action.name] = defaultParamsForAction;\n    immutableParams[action.name] = immutableParamsForAction;\n  }\n\n  return { defaultParams, neededParams, immutableParams };\n};\n\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint-disable max-len, complexity */\nimport { httpRequest } from '../../../http';\nimport { OktaAuthIdxInterface } from '../../types';    // auth-js/types\nimport { IdxActionFunction, IdxActionParams, IdxResponse, IdxToPersist } from '../../types/idx-js';\nimport { divideActionParamsByMutability } from './actionParser';\nimport AuthApiError from '../../../errors/AuthApiError';\n\nconst generateDirectFetch = function generateDirectFetch(authClient: OktaAuthIdxInterface, { \n  actionDefinition, \n  defaultParamsForAction = {}, \n  immutableParamsForAction = {}, \n  toPersist = {} as IdxToPersist\n}): IdxActionFunction {\n  const target = actionDefinition.href;\n  return async function(params: IdxActionParams = {}): Promise<IdxResponse> {\n    const headers = {\n      'Content-Type': 'application/json',\n      'Accept': actionDefinition.accepts || 'application/ion+json',\n    };\n    const body = JSON.stringify({\n      ...defaultParamsForAction,\n      ...params,\n      ...immutableParamsForAction\n    });\n\n    try {\n      const response = await httpRequest(authClient, {\n        url: target,\n        method: actionDefinition.method,\n        headers,\n        args: body,\n        withCredentials: toPersist?.withCredentials ?? true\n      });\n\n      return authClient.idx.makeIdxResponse({ ...response }, toPersist, true);\n    }\n    catch (err) {\n      if (!(err instanceof AuthApiError) || !err?.xhr) {\n        throw err;\n      }\n\n      const response = err.xhr;\n      const payload = response.responseJSON || JSON.parse(response.responseText);\n      const wwwAuthHeader = response.headers['WWW-Authenticate'] || response.headers['www-authenticate'];\n\n      const idxResponse = authClient.idx.makeIdxResponse({ ...payload }, toPersist, false);\n      if (response.status === 401 && wwwAuthHeader === 'Oktadevicejwt realm=\"Okta Device\"') {\n        // Okta server responds 401 status code with WWW-Authenticate header and new remediation\n        // so that the iOS/MacOS credential SSO extension (Okta Verify) can intercept\n        // the response reaches here when Okta Verify is not installed\n        // set `stepUp` to true if flow should be continued without showing any errors\n        idxResponse.stepUp = true;\n      }\n\n      return idxResponse;\n    }\n  };\n};\n\n// TODO: Resolve in M2: Either build the final polling solution or remove this code\n// const generatePollingFetch = function generatePollingFetch( { actionDefinition, defaultParamsForAction = {}, immutableParamsForAction = {} } ) {\n//   // TODO: Discussions ongoing about when/how to terminate polling: OKTA-246581\n//   const target = actionDefinition.href;\n//   return async function(params) {\n//     return fetch(target, {\n//       method: actionDefinition.method,\n//       headers: {\n//         'content-type': actionDefinition.accepts,\n//       },\n//       body: JSON.stringify({ ...defaultParamsForAction, ...params, ...immutableParamsForAction })\n//     })\n//       .then( response => response.ok ? response.json() : response.json().then( err => Promise.reject(err)) )\n//       .then( idxResponse => makeIdxState(authClient, idxResponse) );\n//   };\n// };\n\nconst generateIdxAction = function generateIdxAction( authClient: OktaAuthIdxInterface, actionDefinition, toPersist ): IdxActionFunction {\n  // TODO: leaving this here to see where the polling is EXPECTED to drop into the code, but removing any accidental trigger of incomplete code\n  // const generator =  actionDefinition.refresh ? generatePollingFetch : generateDirectFetch;\n  const generator = generateDirectFetch;\n  const { defaultParams, neededParams, immutableParams } = divideActionParamsByMutability( actionDefinition );\n\n  const action = generator(authClient, {\n    actionDefinition,\n    defaultParamsForAction: defaultParams[actionDefinition.name],\n    immutableParamsForAction: immutableParams[actionDefinition.name],\n    toPersist\n  });\n  action.neededParams = neededParams;\n  return action;\n};\n\nexport default generateIdxAction;\n","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\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 _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  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\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 _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 _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}\n\nfunction _isNativeFunction(fn) {\n  return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _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}\n\nfunction _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\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return _assertThisInitialized(self);\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 _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n  var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n  if (!it) {\n    if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n\n      var F = function () {};\n\n      return {\n        s: F,\n        n: function () {\n          if (i >= o.length) return {\n            done: true\n          };\n          return {\n            done: false,\n            value: o[i++]\n          };\n        },\n        e: function (e) {\n          throw e;\n        },\n        f: F\n      };\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var normalCompletion = true,\n      didErr = false,\n      err;\n  return {\n    s: function () {\n      it = it.call(o);\n    },\n    n: function () {\n      var step = it.next();\n      normalCompletion = step.done;\n      return step;\n    },\n    e: function (e) {\n      didErr = true;\n      err = e;\n    },\n    f: function () {\n      try {\n        if (!normalCompletion && it.return != null) it.return();\n      } finally {\n        if (didErr) throw err;\n      }\n    }\n  };\n}\n\nvar hasOwnProp = Object.prototype.hasOwnProperty;\n/**\n* @typedef {null|boolean|number|string|PlainObject|GenericArray} JSONObject\n*/\n\n/**\n * Copies array and then pushes item into it.\n * @param {GenericArray} arr Array to copy and into which to push\n * @param {any} item Array item to add (to end)\n * @returns {GenericArray} Copy of the original array\n */\n\nfunction push(arr, item) {\n  arr = arr.slice();\n  arr.push(item);\n  return arr;\n}\n/**\n * Copies array and then unshifts item into it.\n * @param {any} item Array item to add (to beginning)\n * @param {GenericArray} arr Array to copy and into which to unshift\n * @returns {GenericArray} Copy of the original array\n */\n\n\nfunction unshift(item, arr) {\n  arr = arr.slice();\n  arr.unshift(item);\n  return arr;\n}\n/**\n * Caught when JSONPath is used without `new` but rethrown if with `new`\n * @extends Error\n */\n\n\nvar NewError = /*#__PURE__*/function (_Error) {\n  _inherits(NewError, _Error);\n\n  var _super = _createSuper(NewError);\n\n  /**\n   * @param {any} value The evaluated scalar value\n   */\n  function NewError(value) {\n    var _this;\n\n    _classCallCheck(this, NewError);\n\n    _this = _super.call(this, 'JSONPath should not be called with \"new\" (it prevents return ' + 'of (unwrapped) scalar values)');\n    _this.avoidNew = true;\n    _this.value = value;\n    _this.name = 'NewError';\n    return _this;\n  }\n\n  return NewError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n/**\n* @typedef {PlainObject} ReturnObject\n* @property {string} path\n* @property {JSONObject} value\n* @property {PlainObject|GenericArray} parent\n* @property {string} parentProperty\n*/\n\n/**\n* @callback JSONPathCallback\n* @param {string|PlainObject} preferredOutput\n* @param {\"value\"|\"property\"} type\n* @param {ReturnObject} fullRetObj\n* @returns {void}\n*/\n\n/**\n* @callback OtherTypeCallback\n* @param {JSONObject} val\n* @param {string} path\n* @param {PlainObject|GenericArray} parent\n* @param {string} parentPropName\n* @returns {boolean}\n*/\n\n/* eslint-disable max-len -- Can make multiline type after https://github.com/syavorsky/comment-parser/issues/109 */\n\n/**\n * @typedef {PlainObject} JSONPathOptions\n * @property {JSON} json\n * @property {string|string[]} path\n * @property {\"value\"|\"path\"|\"pointer\"|\"parent\"|\"parentProperty\"|\"all\"} [resultType=\"value\"]\n * @property {boolean} [flatten=false]\n * @property {boolean} [wrap=true]\n * @property {PlainObject} [sandbox={}]\n * @property {boolean} [preventEval=false]\n * @property {PlainObject|GenericArray|null} [parent=null]\n * @property {string|null} [parentProperty=null]\n * @property {JSONPathCallback} [callback]\n * @property {OtherTypeCallback} [otherTypeCallback] Defaults to\n *   function which throws on encountering `@other`\n * @property {boolean} [autostart=true]\n */\n\n/* eslint-enable max-len -- Can make multiline type after https://github.com/syavorsky/comment-parser/issues/109 */\n\n/**\n * @param {string|JSONPathOptions} opts If a string, will be treated as `expr`\n * @param {string} [expr] JSON path to evaluate\n * @param {JSON} [obj] JSON object to evaluate against\n * @param {JSONPathCallback} [callback] Passed 3 arguments: 1) desired payload\n *     per `resultType`, 2) `\"value\"|\"property\"`, 3) Full returned object with\n *     all payloads\n * @param {OtherTypeCallback} [otherTypeCallback] If `@other()` is at the end\n *   of one's query, this will be invoked with the value of the item, its\n *   path, its parent, and its parent's property name, and it should return\n *   a boolean indicating whether the supplied value belongs to the \"other\"\n *   type or not (or it may handle transformations and return `false`).\n * @returns {JSONPath}\n * @class\n */\n\n\nfunction JSONPath(opts, expr, obj, callback, otherTypeCallback) {\n  // eslint-disable-next-line no-restricted-syntax\n  if (!(this instanceof JSONPath)) {\n    try {\n      return new JSONPath(opts, expr, obj, callback, otherTypeCallback);\n    } catch (e) {\n      if (!e.avoidNew) {\n        throw e;\n      }\n\n      return e.value;\n    }\n  }\n\n  if (typeof opts === 'string') {\n    otherTypeCallback = callback;\n    callback = obj;\n    obj = expr;\n    expr = opts;\n    opts = null;\n  }\n\n  var optObj = opts && _typeof(opts) === 'object';\n  opts = opts || {};\n  this.json = opts.json || obj;\n  this.path = opts.path || expr;\n  this.resultType = opts.resultType || 'value';\n  this.flatten = opts.flatten || false;\n  this.wrap = hasOwnProp.call(opts, 'wrap') ? opts.wrap : true;\n  this.sandbox = opts.sandbox || {};\n  this.preventEval = opts.preventEval || false;\n  this.parent = opts.parent || null;\n  this.parentProperty = opts.parentProperty || null;\n  this.callback = opts.callback || callback || null;\n\n  this.otherTypeCallback = opts.otherTypeCallback || otherTypeCallback || function () {\n    throw new TypeError('You must supply an otherTypeCallback callback option ' + 'with the @other() operator.');\n  };\n\n  if (opts.autostart !== false) {\n    var args = {\n      path: optObj ? opts.path : expr\n    };\n\n    if (!optObj) {\n      args.json = obj;\n    } else if ('json' in opts) {\n      args.json = opts.json;\n    }\n\n    var ret = this.evaluate(args);\n\n    if (!ret || _typeof(ret) !== 'object') {\n      throw new NewError(ret);\n    }\n\n    return ret;\n  }\n} // PUBLIC METHODS\n\n\nJSONPath.prototype.evaluate = function (expr, json, callback, otherTypeCallback) {\n  var _this2 = this;\n\n  var currParent = this.parent,\n      currParentProperty = this.parentProperty;\n  var flatten = this.flatten,\n      wrap = this.wrap;\n  this.currResultType = this.resultType;\n  this.currPreventEval = this.preventEval;\n  this.currSandbox = this.sandbox;\n  callback = callback || this.callback;\n  this.currOtherTypeCallback = otherTypeCallback || this.otherTypeCallback;\n  json = json || this.json;\n  expr = expr || this.path;\n\n  if (expr && _typeof(expr) === 'object' && !Array.isArray(expr)) {\n    if (!expr.path && expr.path !== '') {\n      throw new TypeError('You must supply a \"path\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n    }\n\n    if (!hasOwnProp.call(expr, 'json')) {\n      throw new TypeError('You must supply a \"json\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n    }\n\n    var _expr = expr;\n    json = _expr.json;\n    flatten = hasOwnProp.call(expr, 'flatten') ? expr.flatten : flatten;\n    this.currResultType = hasOwnProp.call(expr, 'resultType') ? expr.resultType : this.currResultType;\n    this.currSandbox = hasOwnProp.call(expr, 'sandbox') ? expr.sandbox : this.currSandbox;\n    wrap = hasOwnProp.call(expr, 'wrap') ? expr.wrap : wrap;\n    this.currPreventEval = hasOwnProp.call(expr, 'preventEval') ? expr.preventEval : this.currPreventEval;\n    callback = hasOwnProp.call(expr, 'callback') ? expr.callback : callback;\n    this.currOtherTypeCallback = hasOwnProp.call(expr, 'otherTypeCallback') ? expr.otherTypeCallback : this.currOtherTypeCallback;\n    currParent = hasOwnProp.call(expr, 'parent') ? expr.parent : currParent;\n    currParentProperty = hasOwnProp.call(expr, 'parentProperty') ? expr.parentProperty : currParentProperty;\n    expr = expr.path;\n  }\n\n  currParent = currParent || null;\n  currParentProperty = currParentProperty || null;\n\n  if (Array.isArray(expr)) {\n    expr = JSONPath.toPathString(expr);\n  }\n\n  if (!expr && expr !== '' || !json) {\n    return undefined;\n  }\n\n  var exprList = JSONPath.toPathArray(expr);\n\n  if (exprList[0] === '$' && exprList.length > 1) {\n    exprList.shift();\n  }\n\n  this._hasParentSelector = null;\n\n  var result = this._trace(exprList, json, ['$'], currParent, currParentProperty, callback).filter(function (ea) {\n    return ea && !ea.isParentSelector;\n  });\n\n  if (!result.length) {\n    return wrap ? [] : undefined;\n  }\n\n  if (!wrap && result.length === 1 && !result[0].hasArrExpr) {\n    return this._getPreferredOutput(result[0]);\n  }\n\n  return result.reduce(function (rslt, ea) {\n    var valOrPath = _this2._getPreferredOutput(ea);\n\n    if (flatten && Array.isArray(valOrPath)) {\n      rslt = rslt.concat(valOrPath);\n    } else {\n      rslt.push(valOrPath);\n    }\n\n    return rslt;\n  }, []);\n}; // PRIVATE METHODS\n\n\nJSONPath.prototype._getPreferredOutput = function (ea) {\n  var resultType = this.currResultType;\n\n  switch (resultType) {\n    case 'all':\n      {\n        var path = Array.isArray(ea.path) ? ea.path : JSONPath.toPathArray(ea.path);\n        ea.pointer = JSONPath.toPointer(path);\n        ea.path = typeof ea.path === 'string' ? ea.path : JSONPath.toPathString(ea.path);\n        return ea;\n      }\n\n    case 'value':\n    case 'parent':\n    case 'parentProperty':\n      return ea[resultType];\n\n    case 'path':\n      return JSONPath.toPathString(ea[resultType]);\n\n    case 'pointer':\n      return JSONPath.toPointer(ea.path);\n\n    default:\n      throw new TypeError('Unknown result type');\n  }\n};\n\nJSONPath.prototype._handleCallback = function (fullRetObj, callback, type) {\n  if (callback) {\n    var preferredOutput = this._getPreferredOutput(fullRetObj);\n\n    fullRetObj.path = typeof fullRetObj.path === 'string' ? fullRetObj.path : JSONPath.toPathString(fullRetObj.path); // eslint-disable-next-line node/callback-return\n\n    callback(preferredOutput, type, fullRetObj);\n  }\n};\n/**\n *\n * @param {string} expr\n * @param {JSONObject} val\n * @param {string} path\n * @param {PlainObject|GenericArray} parent\n * @param {string} parentPropName\n * @param {JSONPathCallback} callback\n * @param {boolean} hasArrExpr\n * @param {boolean} literalPriority\n * @returns {ReturnObject|ReturnObject[]}\n */\n\n\nJSONPath.prototype._trace = function (expr, val, path, parent, parentPropName, callback, hasArrExpr, literalPriority) {\n  var _this3 = this;\n\n  // No expr to follow? return path and value as the result of\n  //  this trace branch\n  var retObj;\n\n  if (!expr.length) {\n    retObj = {\n      path: path,\n      value: val,\n      parent: parent,\n      parentProperty: parentPropName,\n      hasArrExpr: hasArrExpr\n    };\n\n    this._handleCallback(retObj, callback, 'value');\n\n    return retObj;\n  }\n\n  var loc = expr[0],\n      x = expr.slice(1); // We need to gather the return value of recursive trace calls in order to\n  // do the parent sel computation.\n\n  var ret = [];\n  /**\n   *\n   * @param {ReturnObject|ReturnObject[]} elems\n   * @returns {void}\n   */\n\n  function addRet(elems) {\n    if (Array.isArray(elems)) {\n      // This was causing excessive stack size in Node (with or\n      //  without Babel) against our performance test:\n      //  `ret.push(...elems);`\n      elems.forEach(function (t) {\n        ret.push(t);\n      });\n    } else {\n      ret.push(elems);\n    }\n  }\n\n  if ((typeof loc !== 'string' || literalPriority) && val && hasOwnProp.call(val, loc)) {\n    // simple case--directly follow property\n    addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr)); // eslint-disable-next-line unicorn/prefer-switch -- Part of larger `if`\n  } else if (loc === '*') {\n    // all child properties\n    this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {\n      addRet(_this3._trace(unshift(m, _x), v, p, par, pr, cb, true, true));\n    });\n  } else if (loc === '..') {\n    // all descendent parent properties\n    // Check remaining expression with val's immediate children\n    addRet(this._trace(x, val, path, parent, parentPropName, callback, hasArrExpr));\n\n    this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {\n      // We don't join m and x here because we only want parents,\n      //   not scalar values\n      if (_typeof(v[m]) === 'object') {\n        // Keep going with recursive descent on val's\n        //   object children\n        addRet(_this3._trace(unshift(l, _x), v[m], push(p, m), v, m, cb, true));\n      }\n    }); // The parent sel computation is handled in the frame above using the\n    // ancestor object of val\n\n  } else if (loc === '^') {\n    // This is not a final endpoint, so we do not invoke the callback here\n    this._hasParentSelector = true;\n    return {\n      path: path.slice(0, -1),\n      expr: x,\n      isParentSelector: true\n    };\n  } else if (loc === '~') {\n    // property name\n    retObj = {\n      path: push(path, loc),\n      value: parentPropName,\n      parent: parent,\n      parentProperty: null\n    };\n\n    this._handleCallback(retObj, callback, 'property');\n\n    return retObj;\n  } else if (loc === '$') {\n    // root only\n    addRet(this._trace(x, val, path, null, null, callback, hasArrExpr));\n  } else if (/^(\\x2D?[0-9]*):(\\x2D?[0-9]*):?([0-9]*)$/.test(loc)) {\n    // [start:end:step]  Python slice syntax\n    addRet(this._slice(loc, x, val, path, parent, parentPropName, callback));\n  } else if (loc.indexOf('?(') === 0) {\n    // [?(expr)] (filtering)\n    if (this.currPreventEval) {\n      throw new Error('Eval [?(expr)] prevented in JSONPath expression.');\n    }\n\n    this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {\n      if (_this3._eval(l.replace(/^\\?\\(((?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?)\\)$/, '$1'), v[m], m, p, par, pr)) {\n        addRet(_this3._trace(unshift(m, _x), v, p, par, pr, cb, true));\n      }\n    });\n  } else if (loc[0] === '(') {\n    // [(expr)] (dynamic property/index)\n    if (this.currPreventEval) {\n      throw new Error('Eval [(expr)] prevented in JSONPath expression.');\n    } // As this will resolve to a property name (but we don't know it\n    //  yet), property and parent information is relative to the\n    //  parent of the property to which this expression will resolve\n\n\n    addRet(this._trace(unshift(this._eval(loc, val, path[path.length - 1], path.slice(0, -1), parent, parentPropName), x), val, path, parent, parentPropName, callback, hasArrExpr));\n  } else if (loc[0] === '@') {\n    // value type: @boolean(), etc.\n    var addType = false;\n    var valueType = loc.slice(1, -2);\n\n    switch (valueType) {\n      case 'scalar':\n        if (!val || !['object', 'function'].includes(_typeof(val))) {\n          addType = true;\n        }\n\n        break;\n\n      case 'boolean':\n      case 'string':\n      case 'undefined':\n      case 'function':\n        // eslint-disable-next-line valid-typeof\n        if (_typeof(val) === valueType) {\n          addType = true;\n        }\n\n        break;\n\n      case 'integer':\n        if (Number.isFinite(val) && !(val % 1)) {\n          addType = true;\n        }\n\n        break;\n\n      case 'number':\n        if (Number.isFinite(val)) {\n          addType = true;\n        }\n\n        break;\n\n      case 'nonFinite':\n        if (typeof val === 'number' && !Number.isFinite(val)) {\n          addType = true;\n        }\n\n        break;\n\n      case 'object':\n        // eslint-disable-next-line valid-typeof\n        if (val && _typeof(val) === valueType) {\n          addType = true;\n        }\n\n        break;\n\n      case 'array':\n        if (Array.isArray(val)) {\n          addType = true;\n        }\n\n        break;\n\n      case 'other':\n        addType = this.currOtherTypeCallback(val, path, parent, parentPropName);\n        break;\n\n      case 'null':\n        if (val === null) {\n          addType = true;\n        }\n\n        break;\n\n      /* c8 ignore next 2 */\n\n      default:\n        throw new TypeError('Unknown value type ' + valueType);\n    }\n\n    if (addType) {\n      retObj = {\n        path: path,\n        value: val,\n        parent: parent,\n        parentProperty: parentPropName\n      };\n\n      this._handleCallback(retObj, callback, 'value');\n\n      return retObj;\n    } // `-escaped property\n\n  } else if (loc[0] === '`' && val && hasOwnProp.call(val, loc.slice(1))) {\n    var locProp = loc.slice(1);\n    addRet(this._trace(x, val[locProp], push(path, locProp), val, locProp, callback, hasArrExpr, true));\n  } else if (loc.includes(',')) {\n    // [name1,name2,...]\n    var parts = loc.split(',');\n\n    var _iterator = _createForOfIteratorHelper(parts),\n        _step;\n\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var part = _step.value;\n        addRet(this._trace(unshift(part, x), val, path, parent, parentPropName, callback, true));\n      } // simple case--directly follow property\n\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n  } else if (!literalPriority && val && hasOwnProp.call(val, loc)) {\n    addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr, true));\n  } // We check the resulting values for parent selections. For parent\n  // selections we discard the value object and continue the trace with the\n  // current val object\n\n\n  if (this._hasParentSelector) {\n    for (var t = 0; t < ret.length; t++) {\n      var rett = ret[t];\n\n      if (rett && rett.isParentSelector) {\n        var tmp = this._trace(rett.expr, val, rett.path, parent, parentPropName, callback, hasArrExpr);\n\n        if (Array.isArray(tmp)) {\n          ret[t] = tmp[0];\n          var tl = tmp.length;\n\n          for (var tt = 1; tt < tl; tt++) {\n            t++;\n            ret.splice(t, 0, tmp[tt]);\n          }\n        } else {\n          ret[t] = tmp;\n        }\n      }\n    }\n  }\n\n  return ret;\n};\n\nJSONPath.prototype._walk = function (loc, expr, val, path, parent, parentPropName, callback, f) {\n  if (Array.isArray(val)) {\n    var n = val.length;\n\n    for (var i = 0; i < n; i++) {\n      f(i, loc, expr, val, path, parent, parentPropName, callback);\n    }\n  } else if (val && _typeof(val) === 'object') {\n    Object.keys(val).forEach(function (m) {\n      f(m, loc, expr, val, path, parent, parentPropName, callback);\n    });\n  }\n};\n\nJSONPath.prototype._slice = function (loc, expr, val, path, parent, parentPropName, callback) {\n  if (!Array.isArray(val)) {\n    return undefined;\n  }\n\n  var len = val.length,\n      parts = loc.split(':'),\n      step = parts[2] && Number.parseInt(parts[2]) || 1;\n  var start = parts[0] && Number.parseInt(parts[0]) || 0,\n      end = parts[1] && Number.parseInt(parts[1]) || len;\n  start = start < 0 ? Math.max(0, start + len) : Math.min(len, start);\n  end = end < 0 ? Math.max(0, end + len) : Math.min(len, end);\n  var ret = [];\n\n  for (var i = start; i < end; i += step) {\n    var tmp = this._trace(unshift(i, expr), val, path, parent, parentPropName, callback, true); // Should only be possible to be an array here since first part of\n    //   ``unshift(i, expr)` passed in above would not be empty, nor `~`,\n    //     nor begin with `@` (as could return objects)\n    // This was causing excessive stack size in Node (with or\n    //  without Babel) against our performance test: `ret.push(...tmp);`\n\n\n    tmp.forEach(function (t) {\n      ret.push(t);\n    });\n  }\n\n  return ret;\n};\n\nJSONPath.prototype._eval = function (code, _v, _vname, path, parent, parentPropName) {\n  if (code.includes('@parentProperty')) {\n    this.currSandbox._$_parentProperty = parentPropName;\n    code = code.replace(/@parentProperty/g, '_$_parentProperty');\n  }\n\n  if (code.includes('@parent')) {\n    this.currSandbox._$_parent = parent;\n    code = code.replace(/@parent/g, '_$_parent');\n  }\n\n  if (code.includes('@property')) {\n    this.currSandbox._$_property = _vname;\n    code = code.replace(/@property/g, '_$_property');\n  }\n\n  if (code.includes('@path')) {\n    this.currSandbox._$_path = JSONPath.toPathString(path.concat([_vname]));\n    code = code.replace(/@path/g, '_$_path');\n  }\n\n  if (code.includes('@root')) {\n    this.currSandbox._$_root = this.json;\n    code = code.replace(/@root/g, '_$_root');\n  }\n\n  if (/@([\\t-\\r \\)\\.\\[\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF])/.test(code)) {\n    this.currSandbox._$_v = _v;\n    code = code.replace(/@([\\t-\\r \\)\\.\\[\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF])/g, '_$_v$1');\n  }\n\n  try {\n    return this.vm.runInNewContext(code, this.currSandbox);\n  } catch (e) {\n    // eslint-disable-next-line no-console\n    console.log(e);\n    throw new Error('jsonPath: ' + e.message + ': ' + code);\n  }\n}; // PUBLIC CLASS PROPERTIES AND METHODS\n// Could store the cache object itself\n\n\nJSONPath.cache = {};\n/**\n * @param {string[]} pathArr Array to convert\n * @returns {string} The path string\n */\n\nJSONPath.toPathString = function (pathArr) {\n  var x = pathArr,\n      n = x.length;\n  var p = '$';\n\n  for (var i = 1; i < n; i++) {\n    if (!/^(~|\\^|@(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?\\(\\))$/.test(x[i])) {\n      p += /^[\\*0-9]+$/.test(x[i]) ? '[' + x[i] + ']' : \"['\" + x[i] + \"']\";\n    }\n  }\n\n  return p;\n};\n/**\n * @param {string} pointer JSON Path\n * @returns {string} JSON Pointer\n */\n\n\nJSONPath.toPointer = function (pointer) {\n  var x = pointer,\n      n = x.length;\n  var p = '';\n\n  for (var i = 1; i < n; i++) {\n    if (!/^(~|\\^|@(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?\\(\\))$/.test(x[i])) {\n      p += '/' + x[i].toString().replace(/~/g, '~0').replace(/\\//g, '~1');\n    }\n  }\n\n  return p;\n};\n/**\n * @param {string} expr Expression to convert\n * @returns {string[]}\n */\n\n\nJSONPath.toPathArray = function (expr) {\n  var cache = JSONPath.cache;\n\n  if (cache[expr]) {\n    return cache[expr].concat();\n  }\n\n  var subx = [];\n  var normalized = expr // Properties\n  .replace(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\\(\\)/g, ';$&;') // Parenthetical evaluations (filtering and otherwise), directly\n  //   within brackets or single quotes\n  .replace(/['\\[](\\??\\((?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?\\))['\\]]/g, function ($0, $1) {\n    return '[#' + (subx.push($1) - 1) + ']';\n  }) // Escape periods and tildes within properties\n  .replace(/\\[[\"']((?:(?!['\\]])[\\s\\S])*)[\"']\\]/g, function ($0, prop) {\n    return \"['\" + prop.replace(/\\./g, '%@%').replace(/~/g, '%%@@%%') + \"']\";\n  }) // Properties operator\n  .replace(/~/g, ';~;') // Split by property boundaries\n  .replace(/[\"']?\\.[\"']?(?!(?:(?!\\[)[\\s\\S])*\\])|\\[[\"']?/g, ';') // Reinsert periods within properties\n  .replace(/%@%/g, '.') // Reinsert tildes within properties\n  .replace(/%%@@%%/g, '~') // Parent\n  .replace(/(?:;)?(\\^+)(?:;)?/g, function ($0, ups) {\n    return ';' + ups.split('').join(';') + ';';\n  }) // Descendents\n  .replace(/;;;|;;/g, ';..;') // Remove trailing\n  .replace(/;$|'?\\]|'$/g, '');\n  var exprList = normalized.split(';').map(function (exp) {\n    var match = exp.match(/#([0-9]+)/);\n    return !match || !match[1] ? exp : subx[match[1]];\n  });\n  cache[expr] = exprList;\n  return cache[expr].concat();\n};\n\n/**\n* @callback ConditionCallback\n* @param {any} item\n* @returns {boolean}\n*/\n\n/**\n * Copy items out of one array into another.\n * @param {GenericArray} source Array with items to copy\n * @param {GenericArray} target Array to which to copy\n * @param {ConditionCallback} conditionCb Callback passed the current item;\n *     will move item if evaluates to `true`\n * @returns {void}\n */\n\nvar moveToAnotherArray = function moveToAnotherArray(source, target, conditionCb) {\n  var il = source.length;\n\n  for (var i = 0; i < il; i++) {\n    var item = source[i];\n\n    if (conditionCb(item)) {\n      target.push(source.splice(i--, 1)[0]);\n    }\n  }\n};\n\nJSONPath.prototype.vm = {\n  /**\n   * @param {string} expr Expression to evaluate\n   * @param {PlainObject} context Object whose items will be added\n   *   to evaluation\n   * @returns {any} Result of evaluated code\n   */\n  runInNewContext: function runInNewContext(expr, context) {\n    var keys = Object.keys(context);\n    var funcs = [];\n    moveToAnotherArray(keys, funcs, function (key) {\n      return typeof context[key] === 'function';\n    });\n    var values = keys.map(function (vr, i) {\n      return context[vr];\n    });\n    var funcString = funcs.reduce(function (s, func) {\n      var fString = context[func].toString();\n\n      if (!/function/.test(fString)) {\n        fString = 'function ' + fString;\n      }\n\n      return 'var ' + func + '=' + fString + ';' + s;\n    }, '');\n    expr = funcString + expr; // Mitigate http://perfectionkills.com/global-eval-what-are-the-options/#new_function\n\n    if (!/([\"'])use strict\\1/.test(expr) && !keys.includes('arguments')) {\n      expr = 'var arguments = undefined;' + expr;\n    } // Remove last semi so `return` will be inserted before\n    //  the previous one instead, allowing for the return\n    //  of a bare ending expression\n\n\n    expr = expr.replace(/;[\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]*$/, ''); // Insert `return`\n\n    var lastStatementEnd = expr.lastIndexOf(';');\n    var code = lastStatementEnd > -1 ? expr.slice(0, lastStatementEnd + 1) + ' return ' + expr.slice(lastStatementEnd + 1) : ' return ' + expr; // eslint-disable-next-line no-new-func\n\n    return _construct(Function, _toConsumableArray(keys).concat([code])).apply(void 0, _toConsumableArray(values));\n  }\n};\n\nexport { JSONPath };\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint-disable max-len */\n\nimport { OktaAuthIdxInterface, IdxResponse, IdxRemediation, IdxContext } from '../../types';    // auth-js/types\nimport { IdxActions } from '../../types/idx-js';\nimport { generateRemediationFunctions } from './remediationParser';\nimport generateIdxAction from './generateIdxAction';\nimport { jsonpath } from '../../../util/jsonpath';\nimport { AuthSdkError } from '../../../errors';\n\nconst SKIP_FIELDS = {\n  'remediation': true, // remediations are put into proceed/neededToProceed\n  'context': true, // the API response of 'context' isn't externally useful.  We ignore it and put all non-action (contextual) info into idxState.context\n};\n\nexport const parseNonRemediations = function parseNonRemediations( authClient: OktaAuthIdxInterface, idxResponse: IdxResponse, toPersist = {} ) {\n  const actions = {};\n  const context = {} as IdxContext;\n\n  Object.keys(idxResponse)\n    .filter( field => !SKIP_FIELDS[field])\n    .forEach( field => {\n      const fieldIsObject = typeof idxResponse[field] === 'object' && !!idxResponse[field];\n\n      if ( !fieldIsObject ) {\n        // simple fields are contextual info\n        context[field] = idxResponse[field];\n        return;\n      }\n\n      if ( idxResponse[field].rel ) {\n        // top level actions\n        actions[idxResponse[field].name] = generateIdxAction(authClient, idxResponse[field], toPersist);\n        return;\n      }\n\n      const { value: fieldValue, type, ...info} = idxResponse[field];\n      context[field] = { type, ...info}; // add the non-action parts as context\n\n      if ( type !== 'object' ) {\n        // only object values hold actions\n        context[field].value = fieldValue;\n        return;\n      }\n\n      // We are an object field containing an object value\n      context[field].value = {};\n      Object.entries<IdxRemediation>(fieldValue)\n        .forEach( ([subField, value]) => {\n          if (value.rel) { // is [field].value[subField] an action?\n            // add any \"action\" value subfields to actions\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            actions[`${field}-${subField.name || subField}`] = generateIdxAction(authClient, value, toPersist);\n          } else {\n            // add non-action value subfields to context\n            context[field].value[subField] = value;\n          }\n        });\n    });\n\n  return { context, actions };\n};\n\nconst expandRelatesTo = (idxResponse, value) => {\n  Object.keys(value).forEach(k => {\n    if (k === 'relatesTo') {\n      const query = Array.isArray(value[k]) ? value[k][0] : value[k];\n      if (typeof query === 'string') {\n        const result = jsonpath({ path: query, json: idxResponse })[0];\n        if (result) {\n          value[k] = result;\n          return;\n        } else {\n          throw new AuthSdkError(`Cannot resolve relatesTo: ${query}`);\n        }\n      }\n    }\n    if (Array.isArray(value[k])) {\n      value[k].forEach(innerValue => expandRelatesTo(idxResponse, innerValue));\n    }\n  });\n};\n\nconst convertRemediationAction = (authClient: OktaAuthIdxInterface, remediation, toPersist) => {\n  // Only remediation that has `rel` field (indicator for form submission) can have http action\n  if (remediation.rel) {\n    const remediationActions = generateRemediationFunctions( authClient, [remediation], toPersist );\n    const actionFn = remediationActions[remediation.name];\n    return {\n      ...remediation,\n      action: actionFn,\n    };\n  }\n\n  return remediation;\n};\n\nexport const parseIdxResponse = function parseIdxResponse( authClient: OktaAuthIdxInterface, idxResponse, toPersist = {} ): {\n  remediations: IdxRemediation[];\n  context: IdxContext;\n  actions: IdxActions;\n} {\n  const remediationData = idxResponse.remediation?.value || [];\n\n  remediationData.forEach(\n    remediation => {\n      // TODO: remove once IDX is fixed - OKTA-659181\n      if (remediation.name === 'launch-authenticator' &&\n        remediation?.relatesTo?.[0] === 'authenticatorChallenge' &&\n        !idxResponse?.authenticatorChallenge\n      ) {\n        delete remediation.relatesTo;\n        return;\n      }\n\n      return expandRelatesTo(idxResponse, remediation);\n    }\n  );\n\n  const remediations = remediationData.map(remediation => convertRemediationAction( authClient, remediation, toPersist ));\n\n  const { context, actions } = parseNonRemediations( authClient, idxResponse, toPersist );\n\n  return {\n    remediations,\n    context,\n    actions,\n  };\n};\n","import { JSONPath, JSONPathOptions } from 'jsonpath-plus';\n\nexport function jsonpath(options: JSONPathOptions): any {\n  // eslint-disable-next-line new-cap\n  return JSONPath({\n    // Disable javascript evaluation by default\n\tpreventEval: true, ...options, });\n}\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { OktaAuthIdxInterface, IdxRemediation } from '../../types';    // auth-js/types\nimport generateIdxAction from './generateIdxAction';\n\nexport const generateRemediationFunctions = function generateRemediationFunctions(\n  authClient: OktaAuthIdxInterface,\n  remediationValue: IdxRemediation[],\n  toPersist = {}\n) {\n  return remediationValue.reduce((obj, remediation) => ({\n    ...obj,\n    [remediation.name]: generateIdxAction(authClient, remediation, toPersist)\n  }), {});\n};\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { makeIdxState } from './makeIdxState';\n\nexport default {\n  makeIdxState,\n};\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { IdxResponse, IdxToPersist, IdxActionParams } from '../../types/idx-js';\nimport { OktaAuthIdxInterface, RawIdxResponse } from '../../types';    // auth-js/types\nimport { parseIdxResponse } from './idxResponseParser';\n\nexport function makeIdxState( \n  authClient: OktaAuthIdxInterface,\n  idxResponse: RawIdxResponse,\n  toPersist: IdxToPersist,\n  requestDidSucceed: boolean\n): IdxResponse {\n  const rawIdxResponse =  idxResponse;\n  const { remediations, context, actions } = parseIdxResponse( authClient, idxResponse, toPersist );\n  const neededToProceed = [...remediations];\n\n  const proceed: IdxResponse['proceed'] = async function( remediationChoice, paramsFromUser = {} ) {\n    /*\n    remediationChoice is the name attribute on each form\n    name should remain unique for items inside the remediation that are considered forms(identify, select-factor)\n    name can be duplicate for items like redirect where its not considered a form(redirect)\n    when names are not unique its a redirect to a href, so widget wont POST to idx-js layer.\n    */\n    const remediationChoiceObject = remediations.find((remediation) => remediation.name === remediationChoice);\n    if ( !remediationChoiceObject ) {\n      return Promise.reject(`Unknown remediation choice: [${remediationChoice}]`);\n    }\n\n    const actionFn = remediationChoiceObject.action;\n    if (typeof actionFn !== 'function') {\n      return Promise.reject(`Current remediation cannot make form submit action: [${remediationChoice}]`);\n    }\n\n    return remediationChoiceObject.action!(paramsFromUser as IdxActionParams);\n  };\n\n  const findCode = item => item.name === 'interaction_code';\n  const interactionCode = rawIdxResponse.successWithInteractionCode?.value?.find( findCode )?.value as string;\n\n  return {\n    proceed,\n    neededToProceed,\n    actions,\n    context,\n    rawIdxState: rawIdxResponse,\n    interactionCode,\n    toPersist,\n    requestDidSucceed,\n  };\n}\n","import { OktaAuthIdxInterface } from '../types';    // auth-js/types\nimport { IdxResponse, IdxToPersist, RawIdxResponse } from '../types/idx-js';      // idx/types\nimport { IDX_API_VERSION } from '../../constants';\nimport v1 from './v1/parsers';\n\n\nexport const parsersForVersion = function parsersForVersion( version ) {\n  switch (version) {\n    case '1.0.0':\n      return v1;\n    case undefined:\n    case null:\n      throw new Error('Api version is required');\n    default:\n      throw new Error(`Unknown api version: ${version}.  Use an exact semver version.`);\n  }\n};\n\nexport function validateVersionConfig(version) {\n  if ( !version ) {\n    throw new Error('version is required');\n  }\n\n  const cleanVersion = (version ?? '').replace(/[^0-9a-zA-Z._-]/, '');\n  if ( cleanVersion !== version || !version ) {\n    throw new Error('invalid version supplied - version is required and uses semver syntax');\n  }\n\n  parsersForVersion(version); // will throw for invalid version\n}\n\nexport function makeIdxState ( \n  authClient: OktaAuthIdxInterface,\n  rawIdxResponse: RawIdxResponse,\n  toPersist: IdxToPersist,\n  requestDidSucceed: boolean,\n): IdxResponse {\n  const version = rawIdxResponse?.version ?? IDX_API_VERSION;\n  validateVersionConfig(version);\n  \n  const { makeIdxState } = parsersForVersion(version);\n  return makeIdxState(authClient, rawIdxResponse, toPersist, requestDidSucceed);\n}\n","/* eslint-disable no-use-before-define */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Input } from './api';\n\n\n// TODO: remove when idx-js provides type information\n\nexport interface ChallengeData {\n  challenge: string; \n  userVerification: string; \n  extensions?: {\n    appid: string;\n  };\n}\nexport interface ActivationData {\n  challenge: string;\n  rp: {\n    name: string;\n  };\n  user: {\n    id: string;\n    name: string;\n    displayName: string;\n  };\n  pubKeyCredParams: {\n    type: string;\n    alg: number;\n  }[];\n  attestation?: string;\n  authenticatorSelection?: {\n    userVerification?: string;\n    authenticatorAttachment?: string;\n    requireResidentKey?: boolean;\n    residentKey?: string;\n  };\n  excludeCredentials?: {\n    id: string;\n    type: string;\n  }[];\n}\nexport interface IdxAuthenticatorMethod {\n  type: string;\n}\nexport interface IdxAuthenticator {\n  displayName: string;\n  id: string;\n  key: string;\n  methods: IdxAuthenticatorMethod[];\n  type: string;\n  settings?: {\n    complexity?: unknown;\n    age?: unknown;\n  };\n  contextualData?: {\n    enrolledQuestion?: {\n      question: string;\n      questionKey: string;\n    };\n    qrcode?: { \n      href: string; \n      method: string; \n      type: string; \n    };\n    sharedSecret?: string;\n    questions?: {\n      questionKey: string;\n      question: string;\n    }[];\n    questionKeys?: string[];\n    selectedChannel?: string;\n    activationData?: ActivationData;\n    challengeData?: ChallengeData;\n  };\n  credentialId?: string;\n  enrollmentId?: string;\n  profile?: Record<string, unknown>;\n  resend?: Record<string, unknown>;\n  poll?: Record<string, unknown>;\n  recover?: Record<string, unknown>;\n  deviceKnown?: boolean;\n  nickname?: string;\n}\n\nexport interface IdxForm {\n  value: IdxRemediationValue[];\n}\n\nexport interface IdxOption {\n  value: string | {form: IdxForm} | Input[];\n  label: string;\n  relatesTo?: IdxAuthenticator;\n}\n\nexport interface IdpConfig {\n  id: string;\n  name: string;\n}\n\nexport interface IdxRemediationValueForm {\n  form: IdxForm;\n}\n\nexport interface IdxRemediationValue {\n  name: string;\n  type?: string;\n  required?: boolean;\n  secret?: boolean;\n  visible?: boolean;\n  mutable?: boolean;\n  value?: string | IdxRemediationValueForm;\n  label?: string;\n  form?: IdxForm;\n  options?: IdxOption[];\n  messages?: IdxMessages;\n  minLength?: number;\n  maxLength?: number;\n  relatesTo?: {\n    type?: string;\n    value: IdxAuthenticator;\n  };\n}\n\nexport interface IdxRemediation {\n  name: string;\n  label?: string;\n  value?: IdxRemediationValue[];\n  relatesTo?: {\n    type?: string;\n    value: IdxAuthenticator;\n  };\n  idp?: IdpConfig;\n  href?: string;\n  method?: string;\n  type?: string;\n  accepts?: string;\n  produces?: string;\n  refresh?: number;\n  rel?: string[];\n  action?: (payload?: IdxActionParams) => Promise<IdxResponse>;\n}\n\nexport interface IdxContext {\n  version: string;\n  stateHandle: string;\n  expiresAt: string;\n  intent: string;\n  currentAuthenticator: {\n    type: string;\n    value: IdxAuthenticator;\n  };\n  currentAuthenticatorEnrollment: {\n    type: string;\n    value: IdxAuthenticator;\n  };\n  authenticators: {\n    type: string;\n    value: IdxAuthenticator[];\n  };\n  authenticatorEnrollments: {\n    type: string;\n    value: IdxAuthenticator[];\n  };\n  enrollmentAuthenticator: {\n    type: string;\n    value: IdxAuthenticator;\n  };\n  user?: {\n    type: string;\n    value: Record<string, unknown>;\n  };\n  uiDisplay?: IdxContextUIDisplay\n  app: {\n    type: string;\n    value: Record<string, unknown>;\n  };\n  messages?: IdxMessages;\n  success?: IdxRemediation;\n  failure?: IdxRemediation;\n}\n\nexport interface IdxContextUIDisplay {\n  type: string;\n  value: {\n    label?: string;\n    buttonLabel?: string;\n  }\n}\n\nexport interface IdxMessage {\n  message: string;\n  class: string;\n  i18n: {\n    key: string;\n    params?: unknown[];\n  };\n}\n\nexport interface IdxMessages {\n  type: 'array';\n  value: IdxMessage[];\n}\n\n// JSON response from the server\nexport interface RawIdxResponse {\n  version: string;\n  stateHandle: string;\n  intent?: string;\n  expiresAt?: string;\n  remediation?: {\n    type: 'array';\n    value: IdxRemediation[];\n  };\n  messages?: IdxMessages;\n  success?: boolean;\n  successWithInteractionCode?: IdxRemediation;\n  currentAuthenticator?: {\n    type: string;\n    value: IdxAuthenticator;\n  };\n  currentAuthenticatorEnrollment?: {\n    type: string;\n    value: IdxAuthenticator;\n  };\n}\n\nexport function isRawIdxResponse(obj: any): obj is RawIdxResponse {\n  return obj && obj.version;\n}\n\nexport interface IdxActionParams {\n  [key: string]: string | boolean | number | object;\n}\n\nexport interface IdxActions {\n  [key: string]: (params?: IdxActionParams) => Promise<IdxResponse>;\n}\n\nexport interface IdxToPersist {\n  interactionHandle?: string;\n  withCredentials?: boolean;\n}\n\nexport interface IdxActionFunction {\n  (params: IdxActionParams): Promise<IdxResponse>;\n  neededParams?: Array<Array<IdxRemediationValue>>;\n}\n\nexport interface IdxResponse {\n  proceed: (remediationName: string, params: unknown) => Promise<IdxResponse>;\n  neededToProceed: IdxRemediation[];\n  rawIdxState: RawIdxResponse;\n  interactionCode?: string;\n  actions: IdxActions;\n  toPersist: IdxToPersist;\n  context?: IdxContext;\n  requestDidSucceed?: boolean;\n  stepUp?: boolean;\n}\n\nexport function isIdxResponse(obj: any): obj is IdxResponse {\n  return obj && isRawIdxResponse(obj.rawIdxState);\n}\n","/* eslint-disable complexity */\n/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { makeIdxState, validateVersionConfig } from './idxState';\nimport { IntrospectOptions, OktaAuthIdxInterface } from './types';\nimport { IdxResponse, isRawIdxResponse } from './types/idx-js';\nimport { getOAuthDomain } from '../oidc';\nimport { IDX_API_VERSION } from '../constants';\nimport { httpRequest } from '../http';\nimport { isAuthApiError } from '../errors';\n\nexport async function introspect (\n  authClient: OktaAuthIdxInterface, \n  options: IntrospectOptions = {}\n): Promise<IdxResponse> {\n  let rawIdxResponse;\n  let requestDidSucceed;\n\n  // try load from storage first\n  const savedIdxResponse = authClient.transactionManager.loadIdxResponse(options);\n  if (savedIdxResponse) {\n    rawIdxResponse = savedIdxResponse.rawIdxResponse;\n    requestDidSucceed = savedIdxResponse.requestDidSucceed;\n  }\n\n  // call idx.introspect if no existing idx response available in storage\n  if (!rawIdxResponse) {\n    const version = options.version || IDX_API_VERSION;\n    const domain = getOAuthDomain(authClient);\n    const { interactionHandle, stateHandle } = options;\n    const withCredentials = options.withCredentials ?? true;\n    try {\n      requestDidSucceed = true;\n      validateVersionConfig(version);\n      const url = `${domain}/idp/idx/introspect`;\n      const body = stateHandle ? { stateToken: stateHandle } : { interactionHandle };\n      const headers = {\n        'Content-Type': `application/ion+json; okta-version=${version}`, // Server wants this version info\n        Accept: `application/ion+json; okta-version=${version}`,\n      };\n      rawIdxResponse = await httpRequest(authClient, {\n        method: 'POST',\n        url,\n        headers,\n        withCredentials,\n        args: body\n      });\n    } catch (err) {\n      if (isAuthApiError(err) && err.xhr && isRawIdxResponse(err.xhr.responseJSON)) {\n        rawIdxResponse = err.xhr.responseJSON;\n        requestDidSucceed = false;\n      } else {\n        throw err;\n      }\n    }\n  }\n\n  const { withCredentials } = options;\n  return makeIdxState(authClient, rawIdxResponse, { withCredentials }, requestDidSucceed);\n}\n","\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthApiError from './AuthApiError';\nimport AuthPollStopError from './AuthPollStopError';\nimport AuthSdkError from './AuthSdkError';\nimport OAuthError from './OAuthError';\n\nfunction isAuthApiError(obj: any): obj is AuthApiError {\n  return (obj instanceof AuthApiError);\n}\n\nfunction isOAuthError(obj: any): obj is OAuthError {\n  return (obj instanceof OAuthError);\n}\n\nexport {\n  isAuthApiError,\n  isOAuthError,\n  AuthApiError,\n  AuthPollStopError,\n  AuthSdkError,\n  OAuthError\n};\n\nexport * from './types';\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { IdxRemediation, IdxRemediationValue } from '../types/idx-js';\n\nexport function getAllValues(idxRemediation: IdxRemediation) {\n  return idxRemediation.value?.map(r => r.name);\n}\n\nexport function getRequiredValues(idxRemediation: IdxRemediation) {\n  return idxRemediation.value?.reduce((required, cur) => {\n    if (cur.required) {\n      required.push(cur.name as never);\n    }\n    return required;\n  }, []);\n}\n\nexport function titleCase(str: string) {\n  return str.charAt(0).toUpperCase() + str.substring(1);\n}\n\nexport function getAuthenticatorFromRemediation(\n  remediation: IdxRemediation\n): IdxRemediationValue {\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  return remediation.value!.find(({ name }) => name === 'authenticator') as IdxRemediationValue;\n}\n","import { Authenticator, isAuthenticator } from '../types';\n\nexport function formatAuthenticator(incoming: unknown): Authenticator {\n  let authenticator: Authenticator;\n  if  (isAuthenticator(incoming)) {\n    authenticator = incoming;\n  } else if (typeof incoming === 'string') {\n    authenticator = {\n      key: incoming\n    };\n  } else {\n    throw new Error('Invalid format for authenticator');\n  }\n  return authenticator;\n}\n\n// Returns true if the authenticators are equivalent\nexport function compareAuthenticators(auth1, auth2) {\n  if (!auth1 || !auth2) {\n    return false;\n  }\n  // by id\n  if (auth1.id && auth2.id) {\n    return (auth1.id === auth2.id);\n  }\n  // by key\n  if (auth1.key && auth2.key) {\n    return (auth1.key === auth2.key);\n  }\n  return false;\n}\n\n// Find matched authenticator in provided order\nexport function findMatchedOption(authenticators, options) {\n  let option;\n  for (let authenticator of authenticators) {\n    option = options\n      .find(({ relatesTo }) => relatesTo.key && relatesTo.key === authenticator.key);\n    if (option) {\n      break;\n    }\n  }\n  return option;\n}","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable complexity */\nimport { OktaAuthIdxInterface, NextStep, IdxMessage, Authenticator, Input, RemediateOptions } from '../../types';\nimport { IdxAuthenticator, IdxRemediation, IdxContext } from '../../types/idx-js';\nimport { getAllValues, getRequiredValues, titleCase, getAuthenticatorFromRemediation } from '../util';\nimport { formatAuthenticator, compareAuthenticators } from '../../authenticator/util';\n\n// A map from IDX data values (server spec) to RemediationValues (client spec)\nexport type IdxToRemediationValueMap = Record<string, string[]>;\n\nexport interface RemediationValues {\n  stateHandle?: string;\n  authenticators?: (Authenticator | string)[];\n  authenticator?: string | Authenticator;\n  authenticatorsData?: Authenticator[];\n  resend?: boolean;\n}\n\nexport interface RemediatorConstructor {\n  remediationName: string;\n  new<T extends RemediationValues>(\n    remediation: IdxRemediation, \n    values?: T, \n    options?: RemediateOptions\n  ): any;\n}\n\n// Base class - DO NOT expose static remediationName\nexport class Remediator<T extends RemediationValues = RemediationValues> {\n  static remediationName: string;\n\n  remediation: IdxRemediation;\n  values: T;\n  options: RemediateOptions;\n  map?: IdxToRemediationValueMap;\n\n  constructor(\n    remediation: IdxRemediation, \n    values: T = {} as T, \n    options: RemediateOptions = {}\n  ) {\n    // assign fields to the instance\n    this.values = { ...values };\n    this.options = { ...options };\n    this.formatAuthenticators();\n    this.remediation = remediation;\n  }\n\n  private formatAuthenticators() {\n    this.values.authenticators = (this.values.authenticators || []) as Authenticator[];\n\n    // ensure authenticators are in the correct format\n    this.values.authenticators = this.values.authenticators.map(authenticator => {\n      return formatAuthenticator(authenticator);\n    });\n\n    // add authenticator (if any) to \"authenticators\"\n    if (this.values.authenticator) {\n      const authenticator = formatAuthenticator(this.values.authenticator);\n      const hasAuthenticatorInList = this.values.authenticators.some(existing => {\n        return compareAuthenticators(authenticator, existing);\n      });\n      if (!hasAuthenticatorInList) {\n        this.values.authenticators.push(authenticator);\n      }\n    }\n\n    // save non-key meta to \"authenticatorsData\" field\n    // authenticators will be removed after selection to avoid select-authenticator loop\n    this.values.authenticatorsData = this.values.authenticators.reduce((acc, authenticator) => {\n      if (typeof authenticator === 'object' && Object.keys(authenticator).length > 1) {\n        // save authenticator meta into authenticator data\n        acc.push(authenticator);\n      }\n      return acc;\n    }, this.values.authenticatorsData || []);\n  }\n\n  getName(): string {\n    return this.remediation.name;\n  }\n\n  // Override this method to provide custom check\n  /* eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars */\n  canRemediate(context?: IdxContext): boolean {\n    const required = getRequiredValues(this.remediation);\n    const needed = required!.find((key) => !this.hasData(key));\n    if (needed) {\n      return false; // missing data for a required field\n    }\n    return true; // all required fields have available data\n  }\n\n  // returns an object for the entire remediation form, or just a part\n  getData(key?: string) {\n    if (!key) {\n      let allValues = getAllValues(this.remediation);\n      let res = allValues!.reduce((data, key) => {\n        data[key] = this.getData(key); // recursive\n        return data;\n      }, {});\n      return res;\n    }\n\n    // Map value by \"map${Property}\" function in each subClass\n    if (typeof this[`map${titleCase(key)}`] === 'function') {\n      const val = this[`map${titleCase(key)}`](\n        this.remediation.value!.find(({name}) => name === key)\n      );\n      if (val) {\n        return val;\n      }\n    }\n\n    // If a map is defined for this key, return the first aliased property that returns a truthy value\n    if (this.map && this.map[key]) {\n      const entry = this.map[key];\n      for (let i = 0; i < entry.length; i++) {\n        let val = this.values[entry[i]];\n        if (val) {\n          return val;\n        }\n      }\n    }\n\n    // fallback: return the value by key\n    return this.values[key];\n  }\n\n  hasData(\n    key: string // idx name\n  ): boolean \n  {\n    // no attempt to format, we want simple true/false\n    return !!this.getData(key);\n  }\n\n  getNextStep(_authClient: OktaAuthIdxInterface, _context?: IdxContext): NextStep {\n    const name = this.getName();\n    const inputs = this.getInputs();\n    const authenticator = this.getAuthenticator();\n    // TODO: remove type field in the next major version change\n    // https://oktainc.atlassian.net/browse/OKTA-431749\n    const type = authenticator?.type;\n    return { \n      name, \n      inputs, \n      ...(type && { type }),\n      ...(authenticator && { authenticator }),\n    };\n  }\n\n  // Get inputs for the next step\n  getInputs(): Input[] {\n    const inputs: Input[] = [];\n    const inputsFromRemediation = this.remediation.value || [];\n    inputsFromRemediation.forEach(inputFromRemediation => {\n      let input;\n      let { name, type, visible, messages } = inputFromRemediation;\n      if (visible === false) {\n        return; // Filter out invisible inputs, like stateHandle\n      }\n      if (typeof this[`getInput${titleCase(name)}`] === 'function') {\n        input = this[`getInput${titleCase(name)}`](inputFromRemediation);\n      } else if (type !== 'object') {\n        // handle general primitive types\n        let alias;\n        const aliases = (this.map ? this.map[name] : null) || [];\n        if (aliases.length === 1) {\n          alias = aliases[0];\n        } else {\n          // try find key from values\n          alias = aliases.find(name => Object.keys(this.values).includes(name));\n        }\n        if (alias) {\n          input = { ...inputFromRemediation, name: alias };\n        }\n      }\n      if (!input) {\n        input = inputFromRemediation;\n      }\n      if (Array.isArray(input)) {\n        input.forEach(i => inputs.push(i));\n      } else {\n        // guarantees field-level messages are passed back\n        if (messages) {\n          input.messages = messages;\n        }\n        inputs.push(input);\n      }\n    });\n    return inputs;\n  }\n\n  static getMessages(remediation: IdxRemediation): IdxMessage[] | undefined {\n    if (!remediation.value) {\n      return;\n    }\n    return remediation.value[0]?.form?.value.reduce((messages: IdxMessage[], field) => {\n      if (field.messages) {\n        messages = [...messages, ...field.messages.value];\n      }\n      return messages;\n    }, []);\n  }\n\n  // Prepare values for the next remediation\n  // In general, remove used values from inputs for the current remediation\n  // Override this method if special cases need be handled\n  getValuesAfterProceed(): T {\n    const inputsFromRemediation = this.remediation.value || []; // \"raw\" inputs from server response\n    const inputsFromRemediator = this.getInputs(); // \"aliased\" inputs from SDK remediator\n    const inputs = [\n      ...inputsFromRemediation,\n      ...inputsFromRemediator\n    ];\n    // scrub all values related to this remediation\n    for (const input of inputs) {\n      delete this.values[input.name];\n    }\n    return this.values;\n  }\n\n  protected getAuthenticator(): IdxAuthenticator | undefined {\n    // relatesTo value may be an authenticator or an authenticatorEnrollment\n    const relatesTo = this.remediation.relatesTo?.value;\n    if (!relatesTo) {\n      return;\n    }\n\n    const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n    if (!authenticatorFromRemediation) {\n      // Hopefully value is an authenticator\n      return relatesTo;\n    }\n\n    // If relatesTo is an authenticatorEnrollment, the id is actually the enrollmentId\n    // Let's get the correct authenticator id from the form value\n    const id = authenticatorFromRemediation.form!.value\n      .find(({ name }) => name === 'id')!.value as string;\n    const enrollmentId = authenticatorFromRemediation.form!.value\n      .find(({ name }) => name === 'enrollmentId')?.value as string;\n\n    return {\n      ...relatesTo,\n      id,\n      enrollmentId\n    };\n  }\n}\n","/* eslint-disable complexity */\nimport { AuthSdkError } from '../../../errors';\nimport { Input } from '../../types';\n\nexport function unwrapFormValue(remediation): Input { \n  if (Array.isArray(remediation)) {\n    return remediation\n      .map(item => {\n        if (typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean') {\n          return item;\n        }\n        return unwrapFormValue(item);\n      }) as any;\n  }\n\n  const res = {};\n  for (const [key, value] of Object.entries(remediation)) {\n    if (value === null || typeof value === 'undefined') {\n      continue;\n    }\n\n    if (typeof value === 'object') {\n      const formKeys = Object.keys(value as object);\n      // detect patterns like:\n      // value -> form -> value | form -> value\n      if (['value', 'form'].includes(key) \n        && formKeys.length === 1 \n        && ['value', 'form'].includes(formKeys[0])\n      ) {\n        // unwrap nested form\n        const unwrappedForm = unwrapFormValue(value);\n        Object.entries(unwrappedForm).forEach(([key, value]) => {\n          res[key] = value;\n        });\n      } else {\n        // dfs\n        res[key] = unwrapFormValue(value);\n      }\n    } else {\n      // handle primitive value\n      res[key] = value;\n    }\n  }\n\n  return res as Input;\n}\n\n// only check if value is required for now\n// TODO: support SDK layer type based input validation\nexport function hasValidInputValue(input, values) {\n  const fn = (input, values, requiredTracker) => {\n    const { name, value, type, options, required } = input;\n    const isRequired = required || requiredTracker;\n\n    // handle nested value - all required fields should be avaiable in values \n    if (Array.isArray(value)) {\n      return value.reduce((acc, item) => {\n        return acc && fn(item, values[name], isRequired); // recursive call\n      }, true);\n    }\n\n    // handle options field\n    // 1. object type options - check if each object field is required and value can be found from the selectedOption\n    // 2. primitive options - required field is avaiable from top level\n    // 3. unknown format - pass to backend for validation\n    if (options) {\n      // object type options\n      if (type === 'object') {\n        const selectedOption = values[name];\n        if (!selectedOption) {\n          return false;\n        }\n        if (!selectedOption.id) {\n          // unknown option format, pass to backend for validation\n          return true;\n        }\n        const optionSchema = options.find((option) => {\n          const idSchema = option.value.find(({ name }) => name === 'id' );\n          return idSchema.value === selectedOption.id;\n        });\n        if (!optionSchema) {\n          return false;\n        }\n        return optionSchema.value\n          .filter(({ required }) => !!required)\n          .reduce((acc, { name }) => {\n            return acc && !!selectedOption[name];\n          }, true);\n      }\n\n      // primitive options, not required - always valid\n      if (required === false) {\n        return true;\n      }\n\n      // primitive options, required - check if value is available\n      if (required === true) {\n        return !!values[name];\n      }\n\n      // unknown options, throw\n      throw new AuthSdkError(`Unknown options type, ${JSON.stringify(input)}`);\n    }\n\n    // base case\n    if (!isRequired) {\n      return true;\n    }\n      \n    return !!(values && values[name]);\n  };\n\n  return fn(input, values, false);\n}\n","import { OktaAuthIdxInterface, IdxContext, NextStep, Input } from '../../types';\nimport { Remediator } from '../Base/Remediator';\nimport { unwrapFormValue } from './util';\n\nexport class GenericRemediator extends Remediator {\n  canRemediate(): boolean {\n    // only handle remediations that are able to submit form (xhr)\n    if (typeof this.remediation.action !== 'function') {\n      return false;\n    }\n\n    // DO NOT REMOVE - bring it back when enable client side validation for GenericRemediator - OKTA-512003\n    // const inputs = this.getInputs();\n    // const res = inputs.reduce((acc, input) => {\n    //   return acc && hasValidInputValue(input, this.values);\n    // }, true);\n    // return res;\n\n    if (this.remediation.name === 'poll' || this.remediation.name.endsWith('-poll')) {\n      return true;\n    }\n\n    if (this.options.step) {\n      return true;\n    }\n    \n    // disable auto proceed for unknown remediations\n    return false;\n  }\n\n  getData() {\n    const data = this.getInputs().reduce((acc, { name }) => {\n      acc[name] = this.values[name];\n      return acc;\n    }, {});\n    return data;\n  }\n\n  getNextStep(authClient: OktaAuthIdxInterface, _context?: IdxContext): NextStep {\n    const name = this.getName();\n    const inputs = this.getInputs();\n    \n    /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n    // excludes transformed fields\n    const { \n      // http metas have been transformed to action\n      href, \n      method, \n      rel, \n      accepts, \n      produces, \n      // value has been transform to inputs\n      value,\n      // will be transformed to a function that resolves IdxTransaction\n      action,\n      ...rest \n    } = this.remediation;\n    /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n\n    // step to handle form submission\n    if (action) {\n      return { \n        ...rest,\n        ...(!!inputs.length && { inputs }),\n        action: async (params?) => {\n          return authClient.idx.proceed({\n            step: name,\n            ...params\n          });\n        }\n      };\n    }\n\n    // return whole remediation data for other steps, eg \"redirect-idp\"\n    return { ...this.remediation } as NextStep;\n    \n  }\n\n  getInputs(): Input[] {\n    return (this.remediation.value || [])\n      .filter(({ name }) => name !== 'stateHandle')\n      .map(unwrapFormValue)\n      .map(input => {\n        // use string as default input type\n        input.type = input.type || 'string';\n        return input;\n      });\n  }\n\n}\n","import { warn, split2 } from '../util';\nimport { RemediationValues, Remediator, RemediatorConstructor } from './remediators';\nimport { GenericRemediator } from './remediators/GenericRemediator';\nimport {\n  OktaAuthIdxInterface,\n  IdxFeature,\n  NextStep,\n  RemediateOptions,\n  RemediationResponse,\n  RunOptions,\n  FlowIdentifier,\n  FlowSpecification\n} from './types';\nimport { IdxMessage, IdxRemediation, IdxRemediationValue, IdxResponse } from './types/idx-js';\n\ntype GetFlowSpecification = (\n  oktaAuth: OktaAuthIdxInterface,\n  flow: FlowIdentifier\n) => FlowSpecification;\n\nconst ctx: {\n  remediators: Record<string, RemediatorConstructor>,\n  getFlowSpecification: GetFlowSpecification,\n} = {\n  // default values to be used by minimal IDX API\n  remediators: {},\n  getFlowSpecification: function(_oktaAuth: OktaAuthIdxInterface, _flow: FlowIdentifier = 'default') {\n    return {\n      remediators: {}\n    } as FlowSpecification;\n  }\n};\n\n// should be set in createIdxAPI() factory\nexport function setRemediatorsCtx(newCtx: Partial<typeof ctx>) {\n  Object.assign(ctx, newCtx);\n}\n\nexport function getFlowSpecification(oktaAuth: OktaAuthIdxInterface, flow: FlowIdentifier = 'default') {\n  return ctx.getFlowSpecification(oktaAuth, flow);\n}\n\nexport function isTerminalResponse(idxResponse: IdxResponse) {\n  const { neededToProceed, interactionCode } = idxResponse;\n  return !neededToProceed.length && !interactionCode;\n}\n\nexport function canSkipFn(idxResponse: IdxResponse) {\n  return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nexport function canResendFn(idxResponse: IdxResponse) {\n  return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nexport function getMessagesFromIdxRemediationValue(\n  value?: IdxRemediationValue[]\n): IdxMessage[] | undefined {\n  if (!value || !Array.isArray(value)) {\n    return;\n  }\n  return value.reduce((messages, value) => {\n    if (value.messages) {\n      messages = [...messages, ...value.messages.value] as never;\n    }\n    if (value.form) {\n      const messagesFromForm = getMessagesFromIdxRemediationValue(value.form.value) || [];\n      messages = [...messages, ...messagesFromForm] as never;\n    } \n    if (value.options) {\n      let optionValues = [];\n      value.options.forEach(option => {\n        if (!option.value || typeof option.value === 'string') {\n          return;\n        }\n        optionValues = [...optionValues, option.value] as never;\n      });\n      const messagesFromOptions = getMessagesFromIdxRemediationValue(optionValues) || [];\n      messages = [...messages, ...messagesFromOptions] as never;\n    }\n    return messages;\n  }, []);\n}\n\nexport function getMessagesFromResponse(idxResponse: IdxResponse, options: RunOptions): IdxMessage[] {\n  let messages: IdxMessage[] = [];\n  const { rawIdxState, neededToProceed } = idxResponse;\n\n  // Handle global messages\n  const globalMessages = rawIdxState.messages?.value.map(message => message);\n  if (globalMessages) {\n    messages = [...messages, ...globalMessages] as never;\n  }\n\n  // Handle field messages for current flow\n  // Preserve existing logic for general cases, remove in the next major version\n  // Follow ion response format for top level messages when useGenericRemediator is true\n  if (!options.useGenericRemediator) {\n    for (let remediation of neededToProceed) {\n      const fieldMessages = getMessagesFromIdxRemediationValue(remediation.value);\n      if (fieldMessages) {\n        messages = [...messages, ...fieldMessages] as never;\n      }\n    }\n  }\n\n  // API may return identical error on same field, filter by i18n key\n  const seen = {};\n  messages = messages.reduce((filtered, message) => {\n    const key = message.i18n?.key;\n    if (key && seen[key] && message.message === seen[key].message) {\n      return filtered;\n    }\n    seen[key] = message;\n    filtered = [...filtered, message] as never;\n    return filtered;\n  }, []);\n\n  return messages;\n}\n\n\nexport function getEnabledFeatures(idxResponse: IdxResponse): IdxFeature[] {\n  const res = [];\n  const { actions, neededToProceed } = idxResponse;\n\n  if (actions['currentAuthenticator-recover']) {\n    res.push(IdxFeature.PASSWORD_RECOVERY as never);\n  }\n\n  if (neededToProceed.some(({ name }) => name === 'select-enroll-profile')) {\n    res.push(IdxFeature.REGISTRATION as never);\n  }\n\n  if (neededToProceed.some(({ name }) => name === 'redirect-idp')) {\n    res.push(IdxFeature.SOCIAL_IDP as never);\n  }\n\n  if (neededToProceed.some(({ name }) => name === 'unlock-account')) {\n    res.push(IdxFeature.ACCOUNT_UNLOCK as never);\n  }\n\n  return res;\n}\n\nexport function getAvailableSteps(\n  authClient: OktaAuthIdxInterface, \n  idxResponse: IdxResponse, \n  useGenericRemediator?: boolean\n): NextStep[] {\n  const res: NextStep[] = [];\n\n  const remediatorMap: Record<string, RemediatorConstructor> = Object.values(ctx.remediators)\n    .reduce((map, remediatorClass) => {\n      // Only add concrete subclasses to the map\n      if (remediatorClass.remediationName) {\n        map[remediatorClass.remediationName] = remediatorClass;\n      }\n      return map;\n    }, {});\n\n  for (let remediation of idxResponse.neededToProceed) {\n    const T = getRemediatorClass(remediation, { useGenericRemediator, remediators: remediatorMap });\n    if (T) {\n      const remediator: Remediator = new T(remediation);\n      res.push (remediator.getNextStep(authClient, idxResponse.context) as never);\n    }\n  }\n\n  for (const [name] of Object.entries((idxResponse.actions || {}))) {\n    let stepObj = {\n      name, \n      action: async (params?) => {\n        return authClient.idx.proceed({ \n          actions: [{ name, params }] \n        });\n      }\n    };\n    if (name.startsWith('currentAuthenticator')) {\n      const [part1, part2] = split2(name, '-');\n      const actionObj = idxResponse.rawIdxState[part1].value[part2];\n      /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n      const {\n        href, \n        method, \n        rel, \n        accepts, \n        produces, \n        ...rest\n      } = actionObj;\n      /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n      const value = actionObj.value?.filter(item => item.name !== 'stateHandle');\n      stepObj = { \n        ...rest,  \n        ...(value && { value }),\n        ...stepObj,\n      };\n    }\n    res.push(stepObj);\n  }\n\n  return res;\n}\n\nexport function filterValuesForRemediation(\n  idxResponse: IdxResponse,\n  remediationName: string,\n  values: RemediationValues\n): RemediationValues {\n  const remediations = idxResponse.neededToProceed || [];\n  const remediation = remediations.find(r => r.name === remediationName);\n  if (!remediation) {\n    // step was specified, but remediation was not found. This is unexpected!\n    warn(`filterValuesForRemediation: \"${remediationName}\" did not match any remediations`);\n    return values;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  const valuesForRemediation = remediation.value!.reduce((res, entry) => {\n    const { name, value } = entry;\n    if (name === 'stateHandle') {\n      res[name] = value; // use the stateHandle value in the remediation\n    } else {\n      res[name] = values[name]; // use the value provided by the caller\n    }\n    return res;\n  }, {});\n  return valuesForRemediation;\n}\n\nfunction getRemediatorClass(remediation: IdxRemediation, options: RemediateOptions) {\n  const { useGenericRemediator, remediators } = options;\n  \n  if (!remediation) {\n    return undefined;\n  }\n\n  if (useGenericRemediator) {\n    return GenericRemediator;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  return remediators![remediation.name];\n}\n\n// Return first match idxRemediation in allowed remediators\n// eslint-disable-next-line complexity\nexport function getRemediator(\n  idxResponse: IdxResponse,\n  values: RemediationValues,\n  options: RemediateOptions,\n): Remediator | undefined {\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  const remediators = options.remediators!;\n  const useGenericRemediator = options.useGenericRemediator;\n  const {neededToProceed: idxRemediations, context} = idxResponse;\n\n  let remediator: Remediator;\n  // remediation name specified by caller - fast-track remediator lookup \n  if (options.step) {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    const remediation = idxRemediations.find(({ name }) => name === options.step)!;\n    if (remediation) {\n      const T = getRemediatorClass(remediation, options);\n      return T ? new T(remediation, values, options) : undefined;\n    } else {\n      // step was specified, but remediation was not found. This is unexpected!\n      warn(`step \"${options.step}\" did not match any remediations`);\n      return;\n    }\n  }\n\n  const remediatorCandidates: Remediator[] = [];\n  if (useGenericRemediator) {\n    // always pick the first remediation for when use GenericRemediator\n    remediatorCandidates.push(new GenericRemediator(idxRemediations[0], values, options));\n  } else {\n    for (let remediation of idxRemediations) {\n      const isRemeditionInFlow = Object.keys(remediators as object).includes(remediation.name);\n      if (!isRemeditionInFlow) {\n        continue;\n      }\n\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      const T = getRemediatorClass(remediation, options)!;\n      remediator = new T(remediation, values, options);\n      if (remediator.canRemediate(context)) {\n        // found the remediator\n        return remediator;\n      }\n      // remediator cannot handle the current values\n      // maybe return for next step\n      remediatorCandidates.push(remediator);  \n    }\n  }\n  \n  return remediatorCandidates[0];\n}\n\n\nexport function getNextStep(\n  authClient: OktaAuthIdxInterface, remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n  const nextStep = remediator.getNextStep(authClient, idxResponse.context);\n  const canSkip = canSkipFn(idxResponse);\n  const canResend = canResendFn(idxResponse);\n  return {\n    ...nextStep,\n    ...(canSkip && {canSkip}),\n    ...(canResend && {canResend}),\n  };\n}\n\nexport function handleFailedResponse(\n  authClient: OktaAuthIdxInterface,\n  idxResponse: IdxResponse,\n  options = {}\n): RemediationResponse {\n  const terminal = isTerminalResponse(idxResponse);\n  const messages = getMessagesFromResponse(idxResponse, options);\n  if (terminal) {\n    return { idxResponse, terminal, messages };\n  } else {\n    const remediator = getRemediator(idxResponse, {}, options);\n    const nextStep = remediator && getNextStep(authClient, remediator, idxResponse);\n    return {\n      idxResponse,\n      messages,\n      ...(nextStep && { nextStep }),\n    };\n  }\n  \n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable max-statements, max-depth, complexity */\nimport { AuthSdkError } from '../errors';\nimport { RemediationValues } from './remediators';\nimport { OktaAuthIdxInterface, RemediateOptions, RemediationResponse } from './types';\nimport { \n  IdxResponse,\n  IdxActionParams, \n} from './types/idx-js';\nimport {\n  isTerminalResponse,\n  filterValuesForRemediation,\n  getRemediator,\n  getNextStep,\n  handleFailedResponse\n} from './util';\n\nexport interface RemediateActionWithOptionalParams {\n  name: string;\n  params?: IdxActionParams;\n}\n\nexport type RemediateAction = string | RemediateActionWithOptionalParams;\n\n\nfunction getActionFromValues(values: RemediationValues, idxResponse: IdxResponse): string | undefined {\n  // Currently support resend actions only\n  return Object.keys(idxResponse.actions).find(action => !!values.resend && action.includes('-resend'));\n}\n\nfunction removeActionFromValues(values: RemediationValues): RemediationValues {\n  // Currently support resend actions only\n  return {\n    ...values,\n    resend: undefined\n  };\n}\n\nfunction removeActionFromOptions(options: RemediateOptions, actionName: string): RemediateOptions {\n  let actions = options.actions || [];\n  actions = actions.filter(entry => {\n    if (typeof entry === 'string') {\n      return entry !== actionName;\n    }\n    return entry.name !== actionName;\n  });\n\n  return { ...options, actions };\n}\n\n// This function is called recursively until it reaches success or cannot be remediated\nexport async function remediate(\n  authClient: OktaAuthIdxInterface,\n  idxResponse: IdxResponse,\n  values: RemediationValues,\n  options: RemediateOptions\n): Promise<RemediationResponse> {\n  let { neededToProceed, interactionCode } = idxResponse;\n  const { flow } = options;\n\n  // If the response contains an interaction code, there is no need to remediate\n  if (interactionCode) {\n    return { idxResponse };\n  }\n\n  const remediator = getRemediator(idxResponse, values, options);\n\n  // Try actions in idxResponse first\n  const actionFromValues = getActionFromValues(values, idxResponse);\n  const actionFromOptions = options.actions || [];\n  const actions = [\n    ...actionFromOptions,\n    ...(actionFromValues && [actionFromValues] || []),\n  ];\n  if (actions) {\n    for (let action of actions) {\n      // Action can either be specified as a string, or as an object with name and optional params\n      let params: IdxActionParams = {};\n      if (typeof action !== 'string') {\n        params = action.params || {};\n        action = action.name;\n      }\n      let valuesWithoutExecutedAction = removeActionFromValues(values);\n      let optionsWithoutExecutedAction = removeActionFromOptions(options, action);\n\n      if (typeof idxResponse.actions[action] === 'function') {\n        idxResponse = await idxResponse.actions[action](params);\n        if (idxResponse.requestDidSucceed === false) {\n          return handleFailedResponse(authClient, idxResponse, options);\n        }\n        if (action === 'cancel') {\n          return { idxResponse, canceled: true };\n        }\n        return remediate(\n          authClient, \n          idxResponse, \n          valuesWithoutExecutedAction, \n          optionsWithoutExecutedAction\n        ); // recursive call\n      }\n\n      // search for action in remediation list\n      const remediationAction = neededToProceed.find(({ name }) => name === action);\n      if (remediationAction) {\n        idxResponse = await idxResponse.proceed(action, params);\n        if (idxResponse.requestDidSucceed === false) {\n          return handleFailedResponse(authClient, idxResponse, options);\n        }\n        return remediate(authClient, idxResponse, values, optionsWithoutExecutedAction); // recursive call\n      }\n    }\n  }\n\n  // Do not attempt to remediate if response is in terminal state\n  const terminal = isTerminalResponse(idxResponse);\n  if (terminal) {\n    return { idxResponse, terminal };\n  }\n\n  if (!remediator) {\n    // With options.step, remediator is not required\n    if (options.step) {\n      values = filterValuesForRemediation(idxResponse, options.step, values); // include only requested values\n      idxResponse = await idxResponse.proceed(options.step, values);\n      if (idxResponse.requestDidSucceed === false) {\n        return handleFailedResponse(authClient, idxResponse, options);\n      }\n      return { idxResponse };\n    }\n\n    // With default flow, remediator is not required\n    if (flow === 'default') {\n      return { idxResponse };\n    }\n    throw new AuthSdkError(`\n      No remediation can match current flow, check policy settings in your org.\n      Remediations: [${neededToProceed.reduce((acc, curr) => acc ? acc + ' ,' + curr.name : curr.name, '')}]\n    `);\n  }\n\n  // Return next step to the caller\n  if (!remediator.canRemediate()) {\n    const nextStep = getNextStep(authClient, remediator, idxResponse);\n    return {\n      idxResponse,\n      nextStep,\n    };\n  }\n\n  const name = remediator.getName();\n  const data = remediator.getData();\n\n  idxResponse = await idxResponse.proceed(name, data);\n  if (idxResponse.requestDidSucceed === false) {\n    return handleFailedResponse(authClient, idxResponse, options);\n  }\n  // We may want to trim the values bag for the next remediation\n  // Let the remediator decide what the values should be (default to current values)\n  values = remediator.getValuesAfterProceed();\n  options = { ...options, step: undefined }; // do not re-use the step\n\n  // generic remediator should not auto proceed in pending status\n  // return nextStep directly\n  if (options.useGenericRemediator && !idxResponse.interactionCode && !isTerminalResponse(idxResponse)) {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    const gr = getRemediator(idxResponse, values, options)!;\n    const nextStep = getNextStep(authClient, gr, idxResponse);\n    return {\n      idxResponse,\n      nextStep,\n    };\n  }\n  \n  return remediate(authClient, idxResponse, values, options); // recursive call\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable max-statements, complexity, max-depth */\nimport { interact } from './interact';\nimport { introspect } from './introspect';\nimport { remediate } from './remediate';\nimport { RemediationValues } from './remediators/Base/Remediator';\nimport { \n  OktaAuthIdxInterface,\n  IdxStatus,\n  IdxTransaction,\n  IdxFeature,\n  NextStep,\n  RunOptions,\n  IdxTransactionMeta,\n} from './types';\nimport { IdxMessage, IdxResponse } from './types/idx-js';\nimport { getSavedTransactionMeta, saveTransactionMeta } from './transactionMeta';\nimport {\n  getAvailableSteps,\n  getEnabledFeatures,\n  getMessagesFromResponse,\n  isTerminalResponse,\n  getFlowSpecification\n} from './util';\nimport { Tokens } from '../oidc/types';\nimport { APIError } from '../errors/types';\ndeclare interface RunData {\n  options: RunOptions;\n  values: RemediationValues;\n  status?: IdxStatus;\n  tokens?: Tokens;\n  nextStep?: NextStep;\n  messages?: IdxMessage[];\n  error?: APIError | IdxResponse;\n  meta?: IdxTransactionMeta;\n  enabledFeatures?: IdxFeature[];\n  availableSteps?: NextStep[];\n  idxResponse?: IdxResponse;\n  canceled?: boolean;\n  interactionCode?: string;\n  shouldSaveResponse?: boolean;\n  shouldClearTransaction?: boolean;\n  clearSharedStorage?: boolean;\n  terminal?: boolean;\n}\n\nfunction initializeValues(options: RunOptions) {\n  // remove known options, everything else is assumed to be a value\n  const knownOptions = [\n    'flow', \n    'remediators', \n    'actions', \n    'withCredentials', \n    'step',\n    'useGenericRemediator',\n    'exchangeCodeForTokens',\n  ];\n  const values = { ...options };\n  knownOptions.forEach(option => {\n    delete values[option];\n  });\n  return values;\n}\n\nfunction initializeData(authClient: OktaAuthIdxInterface, data: RunData): RunData {\n  let { options } = data;\n  options = {\n    ...authClient.options.idx,\n    ...options\n  };\n  let {\n    flow,\n    withCredentials,\n    remediators,\n    actions,\n  } = options;\n\n  const status = IdxStatus.PENDING;\n\n  // certain options can be set by the flow specification\n  flow = flow || authClient.idx.getFlow?.() || 'default';\n  if (flow) {\n    authClient.idx.setFlow?.(flow);\n    const flowSpec = getFlowSpecification(authClient, flow);\n    // Favor option values over flow spec\n    withCredentials = (typeof withCredentials !== 'undefined') ? withCredentials : flowSpec.withCredentials;\n    remediators = remediators || flowSpec.remediators;\n    actions = actions || flowSpec.actions;\n  }\n\n  return { \n    ...data,\n    options: { \n      ...options, \n      flow, \n      withCredentials, \n      remediators, \n      actions,\n    },\n    status\n  };\n}\n\nasync function getDataFromIntrospect(authClient: OktaAuthIdxInterface, data: RunData): Promise<RunData> {\n  const { options } = data;\n  const {\n    stateHandle,\n    withCredentials,\n    version,\n    state,\n    scopes,\n    recoveryToken,\n    activationToken,\n    maxAge,\n    acrValues,\n    nonce,\n  } = options;\n\n  let idxResponse;\n  let meta = getSavedTransactionMeta(authClient, { state, recoveryToken, activationToken }); // may be undefined\n\n  if (stateHandle) {\n    idxResponse = await introspect(authClient, { withCredentials, version, stateHandle });\n  } else {\n    let interactionHandle = meta?.interactionHandle; // may be undefined\n    if (!interactionHandle) {\n      // start a new transaction\n      authClient.transactionManager.clear();\n      const interactResponse = await interact(authClient, {\n        withCredentials,\n        state,\n        scopes,\n        activationToken,\n        recoveryToken,\n        maxAge,\n        acrValues,\n        nonce,\n      }); \n      interactionHandle = interactResponse.interactionHandle;\n      meta = interactResponse.meta;\n    }\n  \n    // Introspect to get idx response\n    idxResponse = await introspect(authClient, { withCredentials, version, interactionHandle });\n  }\n  return { ...data, idxResponse, meta };\n}\n\nasync function getDataFromRemediate(authClient: OktaAuthIdxInterface, data: RunData): Promise<RunData> {\n  let {\n    idxResponse,\n    options,\n    values\n  } = data;\n\n  const {\n    autoRemediate,\n    remediators,\n    actions,\n    flow,\n    step,\n    useGenericRemediator,\n  } = options;\n  \n  const shouldRemediate = (autoRemediate !== false && (remediators || actions || step));\n  if (!shouldRemediate) {\n    return data;\n  }\n\n  values = { \n    ...values, \n    stateHandle: idxResponse!.rawIdxState.stateHandle \n  };\n\n  // Can we handle the remediations?\n  const { \n    idxResponse: idxResponseFromRemediation, \n    nextStep,\n    canceled,\n  } = await remediate(\n    authClient,\n    idxResponse!, \n    values, \n    {\n      remediators,\n      actions,\n      flow,\n      step,\n      useGenericRemediator,\n    }\n  );\n  idxResponse = idxResponseFromRemediation;\n\n  return { ...data, idxResponse, nextStep, canceled };\n}\n\nasync function getTokens(authClient: OktaAuthIdxInterface, data: RunData): Promise<Tokens> {\n  let { meta, idxResponse } = data;\n  const { interactionCode } = idxResponse as IdxResponse;\n  const {\n    clientId,\n    codeVerifier,\n    ignoreSignature,\n    redirectUri,\n    urls,\n    scopes,\n  } = meta as IdxTransactionMeta;\n  const tokenResponse = await authClient.token.exchangeCodeForTokens({\n    interactionCode,\n    clientId,\n    codeVerifier,\n    ignoreSignature,\n    redirectUri,\n    scopes\n  }, urls);\n  return tokenResponse.tokens;\n}\n\nasync function finalizeData(authClient: OktaAuthIdxInterface, data: RunData): Promise<RunData> {\n  let {\n    options,\n    idxResponse,\n    canceled,\n    status,\n  } = data;\n  const { exchangeCodeForTokens } = options;\n  let shouldSaveResponse = false;\n  let shouldClearTransaction = false;\n  let clearSharedStorage = true;\n  let interactionCode;\n  let tokens;\n  let enabledFeatures;\n  let availableSteps;\n  let messages;\n  let terminal;\n\n  if (idxResponse) {\n    shouldSaveResponse = !!(idxResponse.requestDidSucceed || idxResponse.stepUp);\n    enabledFeatures = getEnabledFeatures(idxResponse);\n    availableSteps = getAvailableSteps(authClient, idxResponse, options.useGenericRemediator);\n    messages = getMessagesFromResponse(idxResponse, options);\n    terminal = isTerminalResponse(idxResponse);\n  }\n\n  if (terminal) {\n    status = IdxStatus.TERMINAL;\n\n    // In most cases a terminal response should not clear transaction data. The user should cancel or skip to continue.\n    // A terminal \"success\" is a non-error response with no further actions available.\n    // In these narrow cases, saved transaction data should be cleared.\n    // One example of a terminal success is when the email verify flow is continued in another tab\n    const hasActions = Object.keys(idxResponse!.actions).length > 0;\n    const hasErrors = !!messages.find(msg => msg.class === 'ERROR');\n    const isTerminalSuccess = !hasActions && !hasErrors && idxResponse!.requestDidSucceed === true;\n    if (isTerminalSuccess) {\n      shouldClearTransaction = true;\n    } else {\n      // save response if there are actions available (ignore messages)\n      shouldSaveResponse = !!hasActions;\n    }\n    // leave shared storage intact so the transaction can be continued in another tab\n    clearSharedStorage = false;\n  } else if (canceled) {\n    status = IdxStatus.CANCELED;\n    shouldClearTransaction = true;\n  } else if (idxResponse?.interactionCode) { \n    interactionCode = idxResponse.interactionCode;\n    if (exchangeCodeForTokens === false) {\n      status = IdxStatus.SUCCESS;\n      shouldClearTransaction = false;\n    } else {\n      tokens = await getTokens(authClient, data);\n      status = IdxStatus.SUCCESS;\n      shouldClearTransaction = true;\n    }\n  }\n  return {\n    ...data,\n    status,\n    interactionCode,\n    tokens,\n    shouldSaveResponse,\n    shouldClearTransaction,\n    clearSharedStorage,\n    enabledFeatures,\n    availableSteps,\n    messages,\n    terminal\n  };\n}\n\nexport async function run(\n  authClient: OktaAuthIdxInterface, \n  options: RunOptions = {},\n): Promise<IdxTransaction> {\n  let data: RunData = {\n    options,\n    values: initializeValues(options)\n  };\n\n  data = initializeData(authClient, data);\n  data = await getDataFromIntrospect(authClient, data);\n  data = await getDataFromRemediate(authClient, data);\n  data = await finalizeData(authClient, data);\n\n  const {\n    idxResponse,\n    meta,\n    shouldSaveResponse,\n    shouldClearTransaction,\n    clearSharedStorage,\n    status,\n    enabledFeatures,\n    availableSteps,\n    tokens,\n    nextStep,\n    messages,\n    error,\n    interactionCode\n  } = data;\n\n  if (shouldClearTransaction) {\n    authClient.transactionManager.clear({ clearSharedStorage });\n  }\n  else {\n    // ensures state is saved to sessionStorage\n    saveTransactionMeta(authClient, { ...meta });\n\n    if (shouldSaveResponse) {\n      // Save intermediate idx response in storage to reduce introspect call\n      const { rawIdxState: rawIdxResponse, requestDidSucceed } = idxResponse!;\n      authClient.transactionManager.saveIdxResponse({\n        rawIdxResponse,\n        requestDidSucceed,\n        stateHandle: idxResponse!.context?.stateHandle,\n        interactionHandle: meta?.interactionHandle\n      });\n    }\n  }\n  \n  // copy all fields from idxResponse which are needed by the widget\n  const { actions, context, neededToProceed, proceed, rawIdxState, requestDidSucceed, stepUp } = idxResponse || {};\n  return {\n    status: status!,\n    ...(meta && { meta }),\n    ...(enabledFeatures && { enabledFeatures }),\n    ...(availableSteps && { availableSteps }),\n    ...(tokens && { tokens }),\n    ...(nextStep && { nextStep }),\n    ...(messages && messages.length && { messages }),\n    ...(error && { error }),\n    ...(stepUp && { stepUp }),\n    interactionCode, // if options.exchangeCodeForTokens is false\n\n    // from idx-js\n    actions: actions!,\n    context: context!,\n    neededToProceed: neededToProceed!,\n    proceed: proceed!,\n    rawIdxState: rawIdxState!,\n    requestDidSucceed\n  };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { \n  OktaAuthIdxInterface,\n  IdxTransaction,\n  AuthenticatorKey,\n  AuthenticationOptions\n} from './types';\nimport { run } from './run';\n\nexport async function authenticate(\n  authClient: OktaAuthIdxInterface, options: AuthenticationOptions = {}\n): Promise<IdxTransaction> {\n  if (options.password && !options.authenticator) {\n    options.authenticator = AuthenticatorKey.OKTA_PASSWORD;\n  }\n  return run(authClient, { \n    ...options, \n    flow: 'authenticate'\n  });\n}\n","import { IdxAuthenticator, IdxRemediationValue } from '../types/idx-js';\n\n\nexport interface Credentials {\n  [key: string]: string | boolean | number | undefined;\n}\n\nexport abstract class Authenticator<Values> {\n  meta: IdxAuthenticator;\n\n  constructor(authenticator: IdxAuthenticator) {\n    this.meta = authenticator;\n  }\n\n  abstract canVerify(values: Values): boolean;\n\n  abstract mapCredentials(values: Values): Credentials | undefined;\n\n  abstract getInputs(idxRemediationValue: IdxRemediationValue): any; // TODO: add type\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface VerificationCodeValues {\n  verificationCode?: string;\n  otp?: string;\n  credentials?: Credentials;\n}\n\ninterface VerificationCodeCredentials extends Credentials {\n  passcode: string;\n}\n\n// general authenticator to handle \"verificationCode\" input\n// it can be used for \"email\", \"phone\", \"google authenticator\"\n// a new authenticator class should be created if special cases need to be handled\nexport class VerificationCodeAuthenticator extends Authenticator<VerificationCodeValues> {\n  canVerify(values: VerificationCodeValues) {\n    return !!(values.credentials ||values.verificationCode || values.otp);\n  }\n\n  mapCredentials(values): VerificationCodeCredentials | Credentials | undefined {\n    const { credentials, verificationCode, otp } = values;\n    if (!credentials && !verificationCode && !otp) {\n      return;\n    }\n    return credentials || { passcode: verificationCode || otp };\n  }\n\n  getInputs(idxRemediationValue) {\n    return {\n      ...idxRemediationValue.form?.value[0],\n      name: 'verificationCode',\n      type: 'string',\n      required: idxRemediationValue.required\n    };\n  }\n}\n","import { Credentials } from './Authenticator';\nimport { VerificationCodeAuthenticator } from './VerificationCodeAuthenticator';\n\ninterface TotpCredentials extends Credentials {\n  totp: string;\n}\n\nexport class OktaVerifyTotp extends VerificationCodeAuthenticator {\n  mapCredentials(values): TotpCredentials | undefined {\n    const { verificationCode } = values;\n    if (!verificationCode) {\n      return;\n    }\n    return { totp: verificationCode };\n  }\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface OktaPasswordInputValues {\n  password?: string;\n  passcode?: string;\n  credentials?: Credentials;\n  // for ResetAuthenticator\n  revokeSessions?: boolean;\n}\n\nexport class OktaPassword extends Authenticator<OktaPasswordInputValues> {\n  canVerify(values: OktaPasswordInputValues) {\n    return !!(values.credentials || values.password || values.passcode);\n  }\n\n  mapCredentials(values: OktaPasswordInputValues): Credentials | undefined {\n    const { credentials, password, passcode, revokeSessions } = values;\n    if (!credentials && !password && !passcode) {\n      return;\n    }\n    return credentials || {\n      passcode: passcode || password,\n      revokeSessions,\n    };\n  }\n\n  getInputs(idxRemediationValue) {\n    const inputs = [{\n      ...idxRemediationValue.form?.value[0],\n      name: 'password',\n      type: 'string',\n      required: idxRemediationValue.required,\n    }];\n    const revokeSessions = idxRemediationValue.form?.value.find(\n      input => input.name === 'revokeSessions'\n    );\n    if (revokeSessions) {\n      inputs.push({\n        name: 'revokeSessions',\n        type: 'boolean',\n        label: 'Sign me out of all other devices',\n        required: false,\n      });\n    }\n    return inputs;\n  }\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface SecurityQuestionEnrollValues {\n  questionKey?: string;\n  question?: string;\n  answer?: string;\n  credentials?: Credentials;\n}\n\nexport class SecurityQuestionEnrollment extends Authenticator<SecurityQuestionEnrollValues> {\n  canVerify(values: SecurityQuestionEnrollValues) {\n    const { credentials } = values;\n    if (credentials && credentials.questionKey && credentials.answer) {\n      return true;\n    }\n    const { questionKey, question, answer } = values;\n    return !!(questionKey && answer) || !!(question && answer);\n  }\n\n  mapCredentials(values: SecurityQuestionEnrollValues): Credentials | undefined {\n    const { questionKey, question, answer } = values;\n    if (!answer || (!questionKey && !question)) {\n      return;\n    }\n    return {\n      questionKey: question ? 'custom' : questionKey,\n      question,\n      answer\n    };\n  }\n\n  getInputs() {\n    return [\n      { name: 'questionKey', type: 'string', required: true },\n      { name: 'question', type: 'string', label: 'Create a security question' },\n      { name: 'answer', type: 'string', label: 'Answer', required: true },\n    ];\n  }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { Authenticator, Credentials } from './Authenticator';\n\nexport interface SecurityQuestionVerificationValues {\n  answer?: string;\n  credentials?: Credentials;\n}\n\nexport class SecurityQuestionVerification extends Authenticator<SecurityQuestionVerificationValues> {\n  canVerify(values: SecurityQuestionVerificationValues) {\n    const { credentials } = values;\n    if (credentials && credentials.answer) {\n      return true;\n    }\n    const { answer } = values;\n    return !!answer;\n  }\n\n  mapCredentials(values: SecurityQuestionVerificationValues): Credentials | undefined {\n    const { answer } = values;\n    if (!answer) {\n      return;\n    }\n    return {\n      questionKey: this.meta.contextualData!.enrolledQuestion!.questionKey,\n      answer\n    };\n  }\n\n  getInputs() {\n    return [\n      { name: 'answer', type: 'string', label: 'Answer', required: true }\n    ];\n  }\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface WebauthnEnrollValues {\n  clientData?: string;\n  attestation?: string;\n  credentials?: Credentials;\n}\n\nexport class WebauthnEnrollment extends Authenticator<WebauthnEnrollValues> {\n  canVerify(values: WebauthnEnrollValues) {\n    const { credentials } = values;\n    const obj = credentials || values;\n    const { clientData, attestation } = obj;\n    return !!(clientData && attestation);\n  }\n\n  mapCredentials(values: WebauthnEnrollValues): Credentials | undefined {\n    const { credentials, clientData, attestation } = values;\n    if (!credentials && !clientData && !attestation) {\n      return;\n    }\n    return credentials || ({\n      clientData,\n      attestation\n    });\n  }\n\n  getInputs() {\n    return [\n      { name: 'clientData', type: 'string', required: true, visible: false, label: 'Client Data' },\n      { name: 'attestation', type: 'string', required: true, visible: false, label: 'Attestation' },\n    ];\n  }\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface WebauthnVerificationValues {\n  clientData?: string;\n  authenticatorData?: string;\n  signatureData?: string;\n  credentials?: Credentials;\n}\n\nexport class WebauthnVerification extends Authenticator<WebauthnVerificationValues> {\n  canVerify(values: WebauthnVerificationValues) {\n    const { credentials } = values;\n    const obj = credentials || values;\n    const { clientData, authenticatorData, signatureData } = obj;\n    return !!(clientData && authenticatorData && signatureData);\n  }\n\n  mapCredentials(values: WebauthnVerificationValues): Credentials | undefined {\n    const { credentials, authenticatorData, clientData, signatureData } = values;\n    if (!credentials && !authenticatorData && !clientData && !signatureData) {\n      return;\n    }\n    return credentials || ({\n      authenticatorData,\n      clientData,\n      signatureData\n    });\n  }\n\n  getInputs() {\n    return [\n      { name: 'authenticatorData', type: 'string', label: 'Authenticator Data', required: true, visible: false },\n      { name: 'clientData', type: 'string', label: 'Client Data', required: true, visible: false },\n      { name: 'signatureData', type: 'string', label: 'Signature Data', required: true, visible: false },\n    ];\n  }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticator, Authenticator, AuthenticatorValues } from '../../authenticator';\nimport { IdxRemediation, IdxContext } from '../../types/idx-js';\nimport { OktaAuthIdxInterface, NextStep } from '../../types';\n\nexport type VerifyAuthenticatorValues = AuthenticatorValues & RemediationValues;\n\n// Base class - DO NOT expose static remediationName\nexport class VerifyAuthenticator<T extends VerifyAuthenticatorValues = VerifyAuthenticatorValues>\n  extends Remediator<T> {\n\n  authenticator: Authenticator<VerifyAuthenticatorValues>;\n\n  constructor(remediation: IdxRemediation, values: T = {} as T) {\n    super(remediation, values);\n    this.authenticator = getAuthenticator(remediation);\n  }\n\n  getNextStep(authClient: OktaAuthIdxInterface, context?: IdxContext): NextStep {\n    const nextStep = super.getNextStep(authClient, context);\n    const authenticatorEnrollments = context?.authenticatorEnrollments?.value;\n\n    return {\n      ...nextStep,\n      authenticatorEnrollments\n    };\n  }\n\n  canRemediate() {\n    return this.authenticator.canVerify(this.values);\n  }\n\n  mapCredentials() {\n    return this.authenticator.mapCredentials(this.values);\n  }\n\n  getInputCredentials(input) {\n    return this.authenticator.getInputs(input);\n  }\n\n  getValuesAfterProceed(): T {\n    this.values = super.getValuesAfterProceed();\n    let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'credentials');\n    return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {} as T);\n  }\n}\n","import { OktaVerifyTotp } from './OktaVerifyTotp';\nimport { Authenticator } from './Authenticator';\nimport { VerificationCodeAuthenticator } from './VerificationCodeAuthenticator';\nimport { OktaPassword } from './OktaPassword';\nimport { SecurityQuestionEnrollment } from './SecurityQuestionEnrollment';\nimport { SecurityQuestionVerification } from './SecurityQuestionVerification';\nimport { WebauthnEnrollment } from './WebauthnEnrollment';\nimport { WebauthnVerification } from './WebauthnVerification';\nimport { IdxAuthenticator, IdxRemediation } from '../types/idx-js';\nimport { AuthenticatorKey } from '../types';\n\n/* eslint complexity:[0,8] */\nexport function getAuthenticator(remediation: IdxRemediation): Authenticator<any> {\n  const relatesTo = remediation.relatesTo;\n  const value = relatesTo?.value || {} as IdxAuthenticator;\n  switch (value.key) {\n    case AuthenticatorKey.OKTA_PASSWORD:\n      return new OktaPassword(value);\n    case AuthenticatorKey.SECURITY_QUESTION:\n      if (value.contextualData?.enrolledQuestion) {\n        return new SecurityQuestionVerification(value);\n      } else {\n        return new SecurityQuestionEnrollment(value);\n      }\n    case AuthenticatorKey.OKTA_VERIFY:\n      return new OktaVerifyTotp(value);\n    case AuthenticatorKey.WEBAUTHN:\n      if (value.contextualData?.challengeData) {\n        return new WebauthnVerification(value);\n      } else {\n        return new WebauthnEnrollment(value);\n      }\n    default:\n      return new VerificationCodeAuthenticator(value);\n  }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { VerifyAuthenticator, VerifyAuthenticatorValues } from './Base/VerifyAuthenticator';\n\nexport type EnrollAuthenticatorValues = VerifyAuthenticatorValues;\n\nexport class EnrollAuthenticator extends VerifyAuthenticator<EnrollAuthenticatorValues> {\n  static remediationName = 'enroll-authenticator';\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { NextStep, OktaAuthIdxInterface } from '../types';\nimport { IdxContext } from '../types/idx-js';\n\nexport interface EnrollPollValues extends RemediationValues {\n  startPolling?: boolean;\n}\n\nexport class EnrollPoll extends Remediator<EnrollPollValues> {\n  static remediationName = 'enroll-poll';\n\n  canRemediate() {\n    return !!this.values.startPolling || this.options.step === 'enroll-poll';\n  }\n\n  getNextStep(authClient: OktaAuthIdxInterface, context?: IdxContext): NextStep {\n    const common = super.getNextStep(authClient, context);\n    let authenticator = this.getAuthenticator();\n    if (!authenticator && context?.currentAuthenticator) {\n      authenticator = context.currentAuthenticator.value;\n    }\n    return {\n      ...common,\n      authenticator,\n      poll: {\n        required: true,\n        refresh: this.remediation.refresh\n      },\n    };\n  }\n\n  getValuesAfterProceed(): EnrollPollValues {\n    let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'startPolling');\n    return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n  }\n}\n","/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { IdxRemediationValueForm, IdxContext } from '../types/idx-js';\nimport { Authenticator, OktaAuthIdxInterface } from '../types/api';\n\n\nexport type SelectEnrollmentChannelValues = RemediationValues & {\n  channel?: string;\n};\n\nexport class SelectEnrollmentChannel extends Remediator<SelectEnrollmentChannelValues> {\n  static remediationName = 'select-enrollment-channel';\n\n  canRemediate() {\n    if (this.values.channel) {\n      return true;\n    }\n\n    if (this.values.authenticator) {\n      const { id, channel } = this.values.authenticator as Authenticator;\n      if (!!id && !!channel) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  getNextStep(authClient: OktaAuthIdxInterface, context: IdxContext) {\n    const common = super.getNextStep(authClient, context);\n    const authenticator = context.currentAuthenticator.value;\n    return {\n      ...common,\n      authenticator,\n    };\n  }\n\n  getData() {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    const remediationValue = this.remediation!.value![0].value as IdxRemediationValueForm;\n    return {\n      authenticator: {\n        id: remediationValue.form.value[0].value,\n        channel: (this.values.authenticator as Authenticator)?.channel || this.values.channel,\n      },\n      stateHandle: this.values.stateHandle,\n\n    };\n  }\n\n  getValuesAfterProceed(): SelectEnrollmentChannelValues {\n    this.values = super.getValuesAfterProceed();\n    delete this.values.authenticators;    // required to prevent infinite loops from auto-remediating via values\n    const filterKey = this.values.channel ? 'channel' : 'authenticator';\n    let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== filterKey);\n    return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n  }\n}\n","/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { IdxContext } from '../types/idx-js';\nimport { OktaAuthIdxInterface } from '../types';\n\n\nexport type EnrollmentChannelDataValues = RemediationValues & {\n  email?: string;\n  phoneNumber?: string;\n};\n\nexport class EnrollmentChannelData extends Remediator<EnrollmentChannelDataValues> {\n  static remediationName = 'enrollment-channel-data';\n\n  getInputEmail() {\n    return [\n      { name: 'email', type: 'string', required: true, label: 'Email' },\n    ];\n  }\n\n  getInputPhoneNumber() {\n    return [\n      { name: 'phoneNumber', type: 'string', required: true, label: 'Phone Number' },\n    ];\n  }\n\n  canRemediate() {\n    return Boolean(this.values.email || this.values.phoneNumber);\n  }\n\n  getNextStep(authClient: OktaAuthIdxInterface, context: IdxContext) {\n    const common = super.getNextStep(authClient, context);\n    const authenticator = context.currentAuthenticator.value;\n    return {\n      ...common,\n      authenticator,\n    };\n  }\n\n  getData() {\n    return {\n      stateHandle: this.values.stateHandle,\n      email: this.values.email,\n      phoneNumber: this.values.phoneNumber\n    };\n  }\n\n  getValuesAfterProceed(): EnrollmentChannelDataValues {\n    let trimmedValues = Object.keys(this.values).filter(valueKey => !['email', 'phoneNumber'].includes(valueKey));\n    return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n  }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { VerifyAuthenticator, VerifyAuthenticatorValues } from './Base/VerifyAuthenticator';\n\nexport type ChallengeAuthenticatorValues = VerifyAuthenticatorValues;\n\nexport class ChallengeAuthenticator extends VerifyAuthenticator<ChallengeAuthenticatorValues> {\n  static remediationName = 'challenge-authenticator';\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { EnrollPoll } from './EnrollPoll';\n\nexport class ChallengePoll extends EnrollPoll{\n  static remediationName = 'challenge-poll';\n\n  canRemediate() {\n    return !!this.values.startPolling || this.options.step === 'challenge-poll';\n  }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { VerifyAuthenticator, VerifyAuthenticatorValues } from './Base/VerifyAuthenticator';\n\nexport type ResetAuthenticatorValues = VerifyAuthenticatorValues;\n\nexport class ResetAuthenticator extends VerifyAuthenticator<ResetAuthenticatorValues> {\n  static remediationName = 'reset-authenticator';\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { IdxRemediation, IdxRemediationValue, IdxAuthenticator } from '../types/idx-js';\nimport { RemediateOptions } from '../types';\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { Authenticator, Credentials, OktaPassword } from '../authenticator';\n\nexport interface EnrollProfileValues extends RemediationValues {\n  firstName?: string;\n  lastName?: string;\n  email?: string;\n  credentials?: Credentials;\n  password?: string;\n  passcode?: string;\n}\n\nexport class EnrollProfile extends Remediator<EnrollProfileValues> {\n  static remediationName = 'enroll-profile';\n\n  authenticator: Authenticator<any> | null = null;\n\n  constructor(\n    remediation: IdxRemediation,\n    values: EnrollProfileValues = {},\n    options: RemediateOptions = {}\n  ) {\n    super(remediation, values, options);\n\n    // credentials are only required when Profile Enrollment policy requires them\n    // if credentials are included in the remediation, they are considered required\n    // otherwise it will be omitted\n    const credentials = this.getCredentialsFromRemediation();\n    if (credentials) {\n      this.authenticator = this.authenticator = new OktaPassword({} as IdxAuthenticator);\n    }\n  }\n\n  canRemediate() {\n    // ensure credentials can be verified, if required\n    if (this.authenticator && !this.authenticator.canVerify(this.values)) {\n      return false;\n    }\n\n    const userProfileFromValues = this.getData().userProfile;\n    if (!userProfileFromValues) {\n      return false;\n    }\n    // eslint-disable-next-line max-len\n    const userProfileFromRemediation = this.remediation.value!.find(({ name }) => name === 'userProfile') as IdxRemediationValue;\n    return userProfileFromRemediation.form!.value.reduce((canRemediate, curr) => {\n      if (curr.required) {\n        canRemediate = canRemediate && !!userProfileFromValues[curr.name];\n      }\n      return canRemediate;\n    }, true);\n  }\n\n  getCredentialsFromRemediation () {\n    return this.remediation.value!.find(({ name }) => name === 'credentials');\n  }\n\n  mapUserProfile({form: { value: profileAttributes }}) {\n    const attributeNames = profileAttributes.map(({name}) => name);\n    const data = attributeNames.reduce((attributeValues, attributeName) => (\n      this.values[attributeName] ? {\n      ...attributeValues,\n      [attributeName]: this.values[attributeName]\n    } : attributeValues), {});\n    if (Object.keys(data).length === 0) {\n      return;\n    }\n    return data;\n  }\n\n  mapCredentials() {\n    const val = this.authenticator && this.authenticator.mapCredentials(this.values);\n    if (!val) {\n      return;\n    }\n    return val;\n  }\n\n  getInputUserProfile(input) {\n    return [...input.form.value];\n  }\n\n  getInputCredentials(input) {\n    return [...input.form.value];\n  }\n\n  getErrorMessages(errorRemediation) {\n    return errorRemediation.value[0].form.value.reduce((errors, field) => {\n      if (field.messages) {\n        errors.push(field.messages.value[0].message);\n      }\n      return errors;\n    }, []);\n  }\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Credentials } from '../authenticator';\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\nexport interface IdentifyValues extends RemediationValues {\n  username?: string;\n  password?: string;\n  credentials?: Credentials;\n  rememberMe?: boolean;\n}\n\nexport class Identify extends Remediator<IdentifyValues> {\n  static remediationName = 'identify';\n\n  map = {\n    'identifier': ['username']\n  };\n\n  canRemediate(): boolean {\n    const { identifier } = this.getData();\n    return !!identifier;\n  }\n\n  mapCredentials() {\n    const { credentials, password } = this.values;\n    if (!credentials && !password) {\n      return;\n    }\n    return credentials || { passcode: password };\n  }\n\n  getInputCredentials(input) {\n    return {\n      ...input.form.value[0],\n      name: 'password',\n      required: input.required\n    };\n  }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\nexport interface ReEnrollAuthenticatorValues extends RemediationValues {\n  newPassword?: string;\n}\n\nexport class ReEnrollAuthenticator extends Remediator<ReEnrollAuthenticatorValues> {\n  static remediationName = 'reenroll-authenticator';\n\n  mapCredentials() {\n    const { newPassword } = this.values;\n    if (!newPassword) {\n      return;\n    }\n    return { \n      passcode: newPassword,\n    };\n  }\n\n  getInputCredentials(input) {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    const challengeType = this.getAuthenticator()!.type;\n    const name = challengeType === 'password' ? 'newPassword' : 'verificationCode';\n    return {\n      ...input.form.value[0],\n      name\n    };\n  }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { ReEnrollAuthenticator } from './ReEnrollAuthenticator';\n\nexport class ReEnrollAuthenticatorWarning extends ReEnrollAuthenticator {\n  static remediationName = 'reenroll-authenticator-warning';\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator } from './Base/Remediator';\n\nexport class RedirectIdp extends Remediator {\n  static remediationName = 'redirect-idp';\n\n  canRemediate() {\n    return false;\n  }\n\n  getNextStep() {\n    const { name, type, idp, href } = this.remediation;\n    return {\n      name,\n      type,\n      idp,\n      href\n    };\n  }\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticatorFromRemediation } from '../util';\nimport { IdxRemediationValue, IdxContext, IdxOption } from '../../types/idx-js';\nimport { Authenticator, isAuthenticator } from '../../types/api';\nimport { compareAuthenticators, findMatchedOption} from '../../authenticator/util';\n\nexport type SelectAuthenticatorValues = RemediationValues & {\n  authenticator?: string | Authenticator;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class SelectAuthenticator<T extends SelectAuthenticatorValues = SelectAuthenticatorValues>\n  extends Remediator<T> {\n  selectedAuthenticator?: Authenticator;\n  selectedOption?: any;\n\n  // Find matched authenticator in provided order\n  findMatchedOption(authenticators, options) {\n    let option: IdxOption | undefined;\n    for (let authenticator of authenticators) {\n      option = options\n        .find(({ relatesTo }) => relatesTo.key && relatesTo.key === authenticator.key);\n      if (option) {\n        break;\n      }\n    }\n    return option;\n  }\n\n  /* eslint complexity:[0,9] */\n  canRemediate(context?: IdxContext) {\n    const { authenticators, authenticator } = this.values;\n    const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n    const { options } = authenticatorFromRemediation;\n    // Let users select authenticator if no input is provided\n    if (!authenticators || !authenticators.length) {\n      return false;\n    }\n\n    // Authenticator is explicitly specified by id\n    if (isAuthenticator(authenticator) && authenticator.id) {\n      return true;\n    }\n\n    // Proceed with provided authenticators\n    const matchedOption = this.findMatchedOption(authenticators, options!);\n    if (matchedOption) {\n      // Don't select current authenticator (OKTA-612939)\n      const isCurrentAuthenticator = context?.currentAuthenticator\n        && context?.currentAuthenticator.value.id === matchedOption.relatesTo?.id;\n      const isCurrentAuthenticatorEnrollment = context?.currentAuthenticatorEnrollment\n        && context?.currentAuthenticatorEnrollment.value.id === matchedOption.relatesTo?.id;\n      return !isCurrentAuthenticator && !isCurrentAuthenticatorEnrollment;\n    }\n    \n    return false;\n  }\n\n  mapAuthenticator(remediationValue: IdxRemediationValue) {\n    const { authenticators, authenticator } = this.values;\n\n    // Authenticator is explicitly specified by id\n    if (isAuthenticator(authenticator) && authenticator.id) {\n      this.selectedAuthenticator = authenticator; // track the selected authenticator\n      return authenticator;\n    }\n\n    const { options } = remediationValue;\n    const selectedOption = findMatchedOption(authenticators, options);\n    this.selectedAuthenticator = selectedOption.relatesTo; // track the selected authenticator\n    this.selectedOption = selectedOption;\n    return {\n      id: selectedOption?.value.form.value.find(({ name }) => name === 'id').value\n    };\n  }\n\n  getInputAuthenticator(remediation) {\n    const options = remediation.options.map(({ label, relatesTo }) => {\n      return {\n        label,\n        value: relatesTo.key\n      };\n    });\n    return { name: 'authenticator', type: 'string', options };\n  }\n\n  getValuesAfterProceed(): T {\n    this.values = super.getValuesAfterProceed();\n    // remove used authenticators\n    const authenticators = (this.values.authenticators as Authenticator[])\n      .filter(authenticator => {\n        return compareAuthenticators(authenticator, this.selectedAuthenticator) !== true;\n      });\n    return { ...this.values, authenticators };\n  }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { SelectAuthenticator, SelectAuthenticatorValues } from './Base/SelectAuthenticator';\nimport { getAuthenticatorFromRemediation } from './util';\nimport { IdxRemediation } from '../types/idx-js';\nimport { AuthenticatorKey, Authenticator, RemediateOptions } from '../types';\n\nexport type SelectAuthenticatorAuthenticateValues = SelectAuthenticatorValues & {\n  password?: string;\n};\n\nexport class SelectAuthenticatorAuthenticate extends SelectAuthenticator<SelectAuthenticatorAuthenticateValues> {\n  static remediationName = 'select-authenticator-authenticate';\n\n  constructor(\n    remediation: IdxRemediation, \n    values: SelectAuthenticatorValues = {}, \n    options: RemediateOptions = {}\n  ) {\n    super(remediation, values, options);\n\n    // Preset password authenticator to trigger recover action\n    const isRecoveryFlow = this.options.flow === 'recoverPassword';\n    const hasPasswordInOptions = getAuthenticatorFromRemediation(remediation)\n      .options?.some(({ relatesTo }) => relatesTo?.key === AuthenticatorKey.OKTA_PASSWORD);\n    if (hasPasswordInOptions && (isRecoveryFlow || this.values.password)) {\n      this.values.authenticators = [\n        ...this.values.authenticators || [],\n        { key: AuthenticatorKey.OKTA_PASSWORD }\n      ] as Authenticator[];\n    }\n  }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { SelectAuthenticator, SelectAuthenticatorValues } from './Base/SelectAuthenticator';\n\nexport type SelectAuthenticatorEnrollValues = SelectAuthenticatorValues;\n\nexport class SelectAuthenticatorEnroll extends SelectAuthenticator<SelectAuthenticatorEnrollValues> {\n  static remediationName = 'select-authenticator-enroll';\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { SelectAuthenticator, SelectAuthenticatorValues } from './Base/SelectAuthenticator';\nimport { Authenticator } from '../types';\nimport { IdxRemediationValue } from '../types/idx-js';\n\n\nexport type SelectAuthenticatorUnlockAccountValues = SelectAuthenticatorValues & {\n  identifier?: string;\n  methodType?: string;\n};\n\nexport class SelectAuthenticatorUnlockAccount extends SelectAuthenticator<SelectAuthenticatorUnlockAccountValues> {\n  static remediationName = 'select-authenticator-unlock-account';\n  authenticator?: Authenticator;\n\n  map = {\n    identifier: ['username']\n  };\n\n  canRemediate() {\n    const identifier = this.getData('identifier');\n    return !!identifier && super.canRemediate();\n  }\n\n  mapAuthenticator(remediationValue: IdxRemediationValue) {\n    const authenticatorMap = super.mapAuthenticator(remediationValue);\n    const methodTypeOption = this.selectedOption?.value.form.value.find(({ name }) => name === 'methodType');\n\n    // defaults to 'manually defined' value\n    // 2nd: option may have pre-defined value, like stateHandle\n    // 3rd: if only a single OV option is available, default to that option\n    const methodTypeValue = this.values.methodType ||\n      methodTypeOption?.value as string || methodTypeOption?.options?.[0]?.value as string;\n\n    if (methodTypeValue) {\n      return {\n        ...authenticatorMap,\n        methodType: methodTypeValue\n      };\n    }\n\n    return authenticatorMap;\n  }\n\n  getInputUsername () {\n    return { name: 'username', type: 'string' };\n  }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface SelectEnrollProfileValues extends RemediationValues {}\n\nexport class SelectEnrollProfile extends Remediator<SelectEnrollProfileValues> {\n  static remediationName = 'select-enroll-profile';\n\n  canRemediate() {\n    return true;\n  }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { IdxRemediationValue, IdxRemediation, IdxAuthenticator } from '../../types/idx-js';\nimport { isAuthenticator } from '../../types/api';\nimport { compareAuthenticators } from '../../authenticator/util';\n\nexport type AuthenticatorDataValues = RemediationValues & {\n  methodType?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class AuthenticatorData<T extends AuthenticatorDataValues = AuthenticatorDataValues> extends Remediator<T> {\n  authenticator: IdxAuthenticator;\n\n  constructor(remediation: IdxRemediation, values: T = {} as T) {\n    super(remediation, values);\n\n    // set before other data calculation\n    this.authenticator = this.getAuthenticator()!;\n\n    this.formatAuthenticatorData();\n  }\n\n  protected formatAuthenticatorData() {\n    const authenticatorData = this.getAuthenticatorData();\n    if (authenticatorData) {\n      this.values.authenticatorsData = this.values.authenticatorsData!.map(data => {\n        if (compareAuthenticators(this.authenticator, data)) {\n          return this.mapAuthenticatorDataFromValues(data);\n        }\n        return data;\n      });\n    } else {\n      const data = this.mapAuthenticatorDataFromValues();\n      if (data) {\n        this.values.authenticatorsData!.push(data);\n      }\n    }\n  }\n\n  protected getAuthenticatorData() {\n    return this.values.authenticatorsData!\n      .find((data) => compareAuthenticators(this.authenticator, data));\n  }\n\n  canRemediate() {\n    return this.values.authenticatorsData!\n      .some(data => compareAuthenticators(this.authenticator, data));\n  }\n\n  protected mapAuthenticatorDataFromValues(authenticatorData?) {\n    // add methodType to authenticatorData if it exists in values\n    let { methodType, authenticator } = this.values;\n    if (!methodType && isAuthenticator(authenticator)) {\n     methodType = authenticator?.methodType;\n    }\n    \n    const { id, enrollmentId } = this.authenticator;\n    const data = { \n      id,\n      enrollmentId,\n      ...(authenticatorData && authenticatorData),\n      ...(methodType && { methodType }) \n    };\n\n    return data.methodType ? data : null;\n  }\n\n  protected getAuthenticatorFromRemediation(): IdxRemediationValue {\n    const authenticator = this.remediation.value!\n      .find(({ name }) => name === 'authenticator') as IdxRemediationValue;\n    return authenticator;\n  }\n\n  getValuesAfterProceed(): T {\n    this.values = super.getValuesAfterProceed();\n    // remove used authenticatorData\n    const authenticatorsData = this.values.authenticatorsData!\n      .filter(data => compareAuthenticators(this.authenticator, data) !== true);\n    return { ...this.values, authenticatorsData };\n  }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\n\nexport type AuthenticatorVerificationDataValues = AuthenticatorDataValues;\n\nexport class AuthenticatorVerificationData extends AuthenticatorData<AuthenticatorVerificationDataValues> {\n  static remediationName = 'authenticator-verification-data';\n\n  mapAuthenticator() {\n    return this.getAuthenticatorData();\n  }\n\n  getInputAuthenticator() {\n    const authenticator = this.getAuthenticatorFromRemediation();\n    const methodType = authenticator.form!.value.find(({ name }) => name === 'methodType');\n    // if has methodType in form, let user select the methodType\n    if (methodType && methodType.options) {\n      return { \n        name: 'methodType', \n        type: 'string', \n        required: true, \n        options: methodType.options \n      };\n    }\n    // no methodType, then return form values\n    const inputs = [...authenticator.form!.value];\n    return inputs;\n  }\n\n  getValuesAfterProceed(): AuthenticatorVerificationDataValues {\n    this.values = super.getValuesAfterProceed();\n    let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'authenticator');\n    return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n  }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\nimport { getAuthenticatorFromRemediation } from './util';\n\nexport type AuthenticatorEnrollmentDataValues =  AuthenticatorDataValues & {\n  phoneNumber?: string;\n  resend?: boolean; // resend is not a remediator value - revise when IdxResponse structure is updated\n}\nexport class AuthenticatorEnrollmentData extends AuthenticatorData<AuthenticatorEnrollmentDataValues> {\n  static remediationName = 'authenticator-enrollment-data';\n\n  mapAuthenticator() {\n    const authenticatorData = this.getAuthenticatorData();\n    const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation)!;\n    return { \n      id: authenticatorFromRemediation.form!.value\n        .find(({ name }) => name === 'id')!.value,\n      methodType: authenticatorData!.methodType,\n      phoneNumber: authenticatorData!.phoneNumber,\n    };\n  }\n\n  getInputAuthenticator(remediation) {\n    return [\n      { name: 'methodType', type: 'string' }, \n      { name: 'phoneNumber', label: 'Phone Number', type: 'string' }\n    ].map(item => {\n      const value = remediation.form.value.find(val => val.name === item.name);\n      return { ...value, ...item };\n    });\n  }\n\n  protected mapAuthenticatorDataFromValues(data?) {\n    // get mapped authenticator from base class\n    data = super.mapAuthenticatorDataFromValues(data);\n    // add phoneNumber to authenticator if it exists in values\n    const { phoneNumber } = this.values;\n    if (!data && !phoneNumber) {\n      return;\n    }\n\n    return { \n      ...(data && data), \n      ...(phoneNumber && { phoneNumber }) \n    };\n  }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\nexport interface SkipValues extends RemediationValues {\n  skip?: boolean;\n}\n\nexport class Skip extends Remediator<SkipValues> {\n  static remediationName = 'skip';\n\n  canRemediate() {\n    return !!this.values.skip || this.options.step === 'skip';\n  }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { RemediationFlow } from './RemediationFlow';\nimport { \n  Identify,\n  SelectAuthenticatorAuthenticate,\n  ChallengeAuthenticator,\n  ReEnrollAuthenticator,\n  ReEnrollAuthenticatorWarning,\n  RedirectIdp,\n  AuthenticatorEnrollmentData,\n  SelectAuthenticatorEnroll,\n  EnrollAuthenticator,\n  AuthenticatorVerificationData,\n  EnrollPoll,\n  ChallengePoll,\n  SelectEnrollmentChannel,\n  EnrollmentChannelData,\n  Skip\n} from '../remediators';\n\nexport const AuthenticationFlow: RemediationFlow = {\n  'identify': Identify,\n  'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n  'select-authenticator-enroll': SelectAuthenticatorEnroll,\n  'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n  'authenticator-verification-data': AuthenticatorVerificationData,\n  'enroll-authenticator': EnrollAuthenticator,\n  'challenge-authenticator': ChallengeAuthenticator,\n  'challenge-poll': ChallengePoll,\n  'reenroll-authenticator': ReEnrollAuthenticator,\n  'reenroll-authenticator-warning': ReEnrollAuthenticatorWarning,\n  'enroll-poll': EnrollPoll,\n  'select-enrollment-channel': SelectEnrollmentChannel,\n  'enrollment-channel-data': EnrollmentChannelData,\n  'redirect-idp': RedirectIdp,\n  'skip': Skip,\n};\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { RemediationFlow } from './RemediationFlow';\nimport {\n  Identify,\n  SelectAuthenticatorAuthenticate,\n  ChallengeAuthenticator,\n  AuthenticatorVerificationData,\n  ResetAuthenticator,\n  ReEnrollAuthenticator,\n  ReEnrollAuthenticatorWarning,\n  SelectAuthenticatorEnroll,\n  AuthenticatorEnrollmentData,\n  EnrollPoll\n} from '../remediators';\n\nexport const PasswordRecoveryFlow: RemediationFlow = {\n  'identify': Identify,\n  'identify-recovery': Identify,\n  'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n  'select-authenticator-enroll': SelectAuthenticatorEnroll,\n  'challenge-authenticator': ChallengeAuthenticator,\n  'authenticator-verification-data': AuthenticatorVerificationData,\n  'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n  'reset-authenticator': ResetAuthenticator,\n  'reenroll-authenticator': ReEnrollAuthenticator,\n  'reenroll-authenticator-warning': ReEnrollAuthenticatorWarning,\n  'enroll-poll': EnrollPoll,\n};\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { RemediationFlow } from './RemediationFlow';\nimport { \n  SelectEnrollProfile,\n  EnrollPoll,\n  SelectEnrollmentChannel,\n  EnrollmentChannelData,\n  EnrollProfile,\n  SelectAuthenticatorEnroll,\n  EnrollAuthenticator,\n  AuthenticatorEnrollmentData,\n  Skip,\n} from '../remediators';\n\nexport const RegistrationFlow: RemediationFlow = {\n  'select-enroll-profile': SelectEnrollProfile,\n  'enroll-profile': EnrollProfile,\n  'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n  'select-authenticator-enroll': SelectAuthenticatorEnroll,\n  'enroll-poll': EnrollPoll,\n  'select-enrollment-channel': SelectEnrollmentChannel,\n  'enrollment-channel-data': EnrollmentChannelData,\n  'enroll-authenticator': EnrollAuthenticator,\n  'skip': Skip,\n};\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { RemediationFlow } from './RemediationFlow';\nimport {\n  Identify,\n  SelectAuthenticatorUnlockAccount,\n  SelectAuthenticatorAuthenticate,\n  ChallengeAuthenticator,\n  ChallengePoll,\n  AuthenticatorVerificationData,\n  ReEnrollAuthenticatorWarning\n} from '../remediators';\n\nexport const AccountUnlockFlow: RemediationFlow = {\n  'identify': Identify,\n  // NOTE: unlock-account is purposely not included. Handled as action\n  // because it's a rememdiation which requires no input\n  // 'unlock-account': UnlockAccount,\n  'select-authenticator-unlock-account': SelectAuthenticatorUnlockAccount,\n  'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n  'challenge-authenticator': ChallengeAuthenticator,\n  'challenge-poll': ChallengePoll,\n  'authenticator-verification-data': AuthenticatorVerificationData,\n  'reenroll-authenticator-warning': ReEnrollAuthenticatorWarning,\n};\n","import { OktaAuthIdxInterface, FlowIdentifier, FlowSpecification } from '../types';\nimport { AuthenticationFlow } from './AuthenticationFlow';\nimport { PasswordRecoveryFlow } from './PasswordRecoveryFlow';\nimport { RegistrationFlow } from './RegistrationFlow';\nimport { AccountUnlockFlow } from './AccountUnlockFlow';\n\n// eslint-disable-next-line complexity\nexport function getFlowSpecification(\n  oktaAuth: OktaAuthIdxInterface,\n  flow: FlowIdentifier = 'default'\n): FlowSpecification {\n  let remediators, actions, withCredentials = true;\n  switch (flow) {\n    case 'register':\n    case 'signup':\n    case 'enrollProfile':\n      remediators = RegistrationFlow;\n      withCredentials = false;\n      break;\n    case 'recoverPassword':\n    case 'resetPassword':\n      remediators = PasswordRecoveryFlow;\n      actions = [\n        'currentAuthenticator-recover', \n        'currentAuthenticatorEnrollment-recover'\n      ];\n      withCredentials = false;\n      break;\n    case 'unlockAccount':\n      remediators = AccountUnlockFlow;\n      withCredentials = false;\n      actions = [\n        'unlock-account'\n      ];\n      break;\n    case 'authenticate':\n    case 'login':\n    case 'signin':\n      remediators = AuthenticationFlow;\n      break;\n    default:\n      // default case has no flow monitor\n      remediators = AuthenticationFlow;\n      break;\n  }\n  return { flow, remediators, actions, withCredentials };\n}\n","/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { OktaAuthIdxInterface, CancelOptions, IdxTransactionMeta } from './types';\nimport { run } from './run';\nimport { getFlowSpecification } from './flow';\n\nexport async function cancel (authClient: OktaAuthIdxInterface, options?: CancelOptions) {\n  const meta = authClient.transactionManager.load() as IdxTransactionMeta;\n  const flowSpec = getFlowSpecification(authClient, meta.flow);\n  return run(authClient, {\n    ...options,\n    ...flowSpec,\n    actions: ['cancel']\n  });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n/* eslint-disable complexity, max-statements */\n\nexport function urlParamsToObject(hashOrSearch: string) {\n  // Predefine regexs for parsing hash\n  var plus2space = /\\+/g;\n  var paramSplit = /([^&=]+)=?([^&]*)/g;\n  var fragment = hashOrSearch || '';\n\n  // Some hash based routers will automatically add a / character after the hash\n  if (fragment.charAt(0) === '#' && fragment.charAt(1) === '/') {\n    fragment = fragment.substring(2);\n  }\n\n  // Remove the leading # or ?\n  if (fragment.charAt(0) === '#' || fragment.charAt(0) === '?') {\n    fragment = fragment.substring(1);\n  }\n\n\n  var obj = {};\n\n  // Loop until we have no more params\n  var param;\n  while (true) { // eslint-disable-line no-constant-condition\n    param = paramSplit.exec(fragment);\n    if (!param) { break; }\n\n    var key = param[1];\n    var value = param[2];\n\n    // id_token should remain base64url encoded\n    if (key === 'id_token' || key === 'access_token' || key === 'code') {\n      obj[key] = value;\n    } else {\n      obj[key] = decodeURIComponent(value.replace(plus2space, ' '));\n    }\n  }\n  return obj;\n}\n","\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { OktaAuthIdxInterface } from './types';\n\nimport CustomError from '../errors/CustomError';\nimport { urlParamsToObject  } from '../oidc/util/urlParams';\nimport { EmailVerifyCallbackResponse } from './types/api';\n\nexport class EmailVerifyCallbackError extends CustomError {\n  state: string;\n  otp: string;\n\n  constructor(state: string, otp: string) {\n    super(`Enter the OTP code in the originating client: ${otp}`);\n    this.name = 'EmailVerifyCallbackError';\n    this.state = state;\n    this.otp = otp;\n  }\n}\n\nexport function isEmailVerifyCallbackError(error: Error) {\n  return (error.name === 'EmailVerifyCallbackError');\n}\n\n// Check if state && otp have been passed back in the url\nexport function isEmailVerifyCallback (urlPath: string): boolean {\n  return /(otp=)/i.test(urlPath) && /(state=)/i.test(urlPath);\n}\n\n// Parse state and otp from a urlPath (should be either a search or fragment from the URL)\nexport function parseEmailVerifyCallback(urlPath: string): EmailVerifyCallbackResponse {\n  return urlParamsToObject(urlPath) as EmailVerifyCallbackResponse;\n}\n\nexport async function handleEmailVerifyCallback(authClient: OktaAuthIdxInterface, search: string) {\n  if (isEmailVerifyCallback(search)) {\n    const { state, otp } = parseEmailVerifyCallback(search);\n    if (authClient.idx.canProceed({ state })) {\n      // same browser / device\n      return await authClient.idx.proceed({ state, otp });\n    } else {\n      // different browser or device\n      throw new EmailVerifyCallbackError(state, otp);\n    }\n  }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { \n  OktaAuthIdxInterface,\n  IdxTransaction,\n  ProceedOptions,\n} from './types';\nimport { run } from './run';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { AuthSdkError } from '../errors';\n\nexport function canProceed(authClient: OktaAuthIdxInterface, options: ProceedOptions = {}): boolean {\n  const meta = getSavedTransactionMeta(authClient, options);\n  return !!(meta || options.stateHandle);\n}\n\nexport async function proceed(\n  authClient: OktaAuthIdxInterface,\n  options: ProceedOptions = {}\n): Promise<IdxTransaction> {\n\n  if (!canProceed(authClient, options)) {\n    throw new AuthSdkError('Unable to proceed: saved transaction could not be loaded');\n  }\n\n  let { flow, state } = options;\n  if (!flow) {\n    const meta = getSavedTransactionMeta(authClient, { state });\n    flow = meta?.flow;\n  }\n\n  return run(authClient, { \n    ...options, \n    flow\n  });\n}\n","/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { proceed } from './proceed';\n\nimport { \n  IdxPollOptions,\n  IdxTransaction,\n  OktaAuthIdxInterface,\n} from './types';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { warn } from '../util';\n\nexport async function poll(authClient: OktaAuthIdxInterface, options: IdxPollOptions = {}): Promise<IdxTransaction> {\n  let transaction = await proceed(authClient, {\n    startPolling: true\n  });\n\n  const meta = getSavedTransactionMeta(authClient);\n  let availablePollingRemeditaions = meta?.remediations?.find(remediation => remediation.includes('poll'));\n  if (!availablePollingRemeditaions?.length) {\n    warn('No polling remediations available at the current IDX flow stage');\n  }\n\n  if (Number.isInteger(options.refresh)) {\n    return new Promise(function (resolve, reject) {\n      setTimeout(async function () {\n        try {\n          const refresh = transaction.nextStep?.poll?.refresh;\n          if (refresh) {\n            resolve(poll(authClient, {\n              refresh\n            }));\n          } else {\n            resolve(transaction);\n          }\n        } catch (err) {\n          reject(err);\n        }\n      }, options.refresh);\n    });\n  }\n\n  return transaction;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { OktaAuthIdxInterface, IdxTransaction, StartOptions } from './types';\n\nexport async function startTransaction(\n  authClient: OktaAuthIdxInterface, \n  options: StartOptions = {}\n): Promise<IdxTransaction> {\n  // Clear IDX response cache and saved transaction meta (if any)\n  authClient.transactionManager.clear();\n\n  return run(authClient, {\n    exchangeCodeForTokens: false,\n    ...options\n  });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { hasSavedInteractionHandle } from './transactionMeta';\nimport { startTransaction } from './startTransaction';\nimport { AuthSdkError } from '../errors';\nimport { \n  RegistrationOptions, \n  IdxTransaction, \n  OktaAuthIdxInterface, \n  IdxFeature,\n} from './types';\n\nexport async function register(\n  authClient: OktaAuthIdxInterface, options: RegistrationOptions = {}\n): Promise<IdxTransaction> {\n\n  // Only check at the beginning of the transaction\n  if (!hasSavedInteractionHandle(authClient)) {\n    const { enabledFeatures } = await startTransaction(authClient, {\n      ...options,\n      flow: 'register',\n      autoRemediate: false\n    });\n    if (!options.activationToken && enabledFeatures && !enabledFeatures.includes(IdxFeature.REGISTRATION)) {\n      throw new AuthSdkError('Registration is not supported based on your current org configuration.');\n    }\n  }\n\n  return run(authClient, {\n    ...options,\n    flow: 'register'\n  });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { getFlowSpecification } from './flow';\nimport { \n  OktaAuthIdxInterface, \n  PasswordRecoveryOptions, \n  IdxTransaction,\n} from './types';\n\nexport async function recoverPassword(\n  authClient: OktaAuthIdxInterface, options: PasswordRecoveryOptions = {}\n): Promise<IdxTransaction> {\n  const flowSpec = getFlowSpecification(authClient, 'recoverPassword');\n  return run(\n    authClient, \n    { \n      ...options,\n      ...flowSpec,\n    }\n  );\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthSdkError, OAuthError } from '../errors';\nimport { IdxTransactionMeta } from './types/meta';\nimport { OktaAuthIdxInterface } from './types';\n\nexport async function handleInteractionCodeRedirect(\n  authClient: OktaAuthIdxInterface, \n  url: string\n): Promise<void> {\n  const meta = authClient.transactionManager.load() as IdxTransactionMeta;\n  if (!meta) {\n    throw new AuthSdkError('No transaction data was found in storage');\n  }\n\n  const { \n    codeVerifier,\n    state: savedState \n  } = meta;\n  const { \n    searchParams\n  // URL API has been added to the polyfill\n  // eslint-disable-next-line compat/compat\n  } = new URL(url); \n  const state = searchParams.get('state');\n  const interactionCode = searchParams.get('interaction_code');\n\n  // Error handling\n  const error = searchParams.get('error');\n  if (error) {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    throw new OAuthError(error, searchParams.get('error_description')!);\n  }\n  if (state !== savedState) {\n    throw new AuthSdkError('State in redirect uri does not match with transaction state');\n  }\n  if (!interactionCode) {\n    throw new AuthSdkError('Unable to parse interaction_code from the url');\n  }\n  \n  // Save tokens to storage\n  const { tokens } = await authClient.token.exchangeCodeForTokens({ interactionCode, codeVerifier });\n  authClient.tokenManager.setTokens(tokens);\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { hasSavedInteractionHandle } from './transactionMeta';\nimport { startTransaction } from './startTransaction';\nimport { AuthSdkError } from '../errors';\nimport { \n  OktaAuthIdxInterface, \n  AccountUnlockOptions, \n  IdxTransaction,\n  IdxFeature,\n} from './types';\n\nexport async function unlockAccount(\n  authClient: OktaAuthIdxInterface, options: AccountUnlockOptions = {}\n): Promise<IdxTransaction> {\n  options.flow = 'unlockAccount';\n\n  // Only check at the beginning of the transaction\n  if (!hasSavedInteractionHandle(authClient)) {\n    const { enabledFeatures } = await startTransaction(authClient, { ...options, autoRemediate: false });\n    if (enabledFeatures && !enabledFeatures.includes(IdxFeature.ACCOUNT_UNLOCK)) {\n      throw new AuthSdkError(\n        'Self Service Account Unlock is not supported based on your current org configuration.'\n      );\n    }\n  }\n\n  return run(authClient, { ...options });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { OktaAuthOAuthInterface } from '../types';\nimport { OAuthError, AuthApiError, isOAuthError } from '../../errors';\n\nexport function isInteractionRequiredError(error: Error) {\n  if (error.name !== 'OAuthError') {\n    return false;\n  }\n  const oauthError = error as OAuthError;\n  return (oauthError.errorCode === 'interaction_required');\n}\n\nexport function isAuthorizationCodeError(sdk: OktaAuthOAuthInterface, error: Error) {\n  if (error.name !== 'AuthApiError') {\n    return false;\n  }\n  const authApiError = error as AuthApiError;\n  // xhr property doesn't seem to match XMLHttpRequest type\n  const errorResponse = authApiError.xhr as unknown as Record<string, unknown>;\n  const responseJSON = errorResponse?.responseJSON as Record<string, unknown>;\n  return sdk.options.pkce && (responseJSON?.error as string === 'invalid_grant');\n}\n\nexport function isRefreshTokenInvalidError(error: unknown): boolean {\n  // error: {\"error\":\"invalid_grant\",\"error_description\":\"The refresh token is invalid or expired.\"}\n  return isOAuthError(error) &&\n    error.errorCode === 'invalid_grant' &&\n    error.errorSummary === 'The refresh token is invalid or expired.';\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n/* global window */\n/* eslint-disable complexity, max-statements */\nimport { OktaAuthOAuthOptions, OktaAuthOAuthInterface, OAuthResponseType } from '../types';\n\nexport function hasTokensInHash(hash: string): boolean {\n  return /((id|access)_token=)/i.test(hash);\n}\n\n// authorization_code\nexport function hasAuthorizationCode(hashOrSearch: string): boolean {\n  return /(code=)/i.test(hashOrSearch);\n}\n\n// interaction_code\nexport function hasInteractionCode(hashOrSearch: string): boolean {\n  return /(interaction_code=)/i.test(hashOrSearch);\n}\n\nexport function hasErrorInUrl(hashOrSearch: string): boolean {\n  return /(error=)/i.test(hashOrSearch) || /(error_description)/i.test(hashOrSearch);\n}\n\nexport function isRedirectUri(uri: string, sdk: OktaAuthOAuthInterface): boolean {\n  var authParams = sdk.options;\n  if (!uri || !authParams.redirectUri) {\n    return false;\n  }\n  return uri.indexOf(authParams.redirectUri) === 0;\n}\n\nexport function isCodeFlow(options: OktaAuthOAuthOptions) {\n  return options.pkce || options.responseType === 'code' || options.responseMode === 'query';\n}\n\nexport function hasResponseType(responseType: OAuthResponseType, options: OktaAuthOAuthOptions): boolean {\n  let hasResponseType = false;\n  if (Array.isArray(options.responseType) && options.responseType.length) {\n    hasResponseType = options.responseType.indexOf(responseType) >= 0;\n  } else {\n    hasResponseType = options.responseType === responseType;\n  }\n  return hasResponseType;\n}\n\nexport function getHashOrSearch(options: OktaAuthOAuthOptions) {\n  var codeFlow = isCodeFlow(options);\n  var useQuery = codeFlow && options.responseMode !== 'fragment';\n  return useQuery ? window.location.search : window.location.hash;\n}\n\n/**\n * Check if tokens or a code have been passed back into the url, which happens in\n * the OIDC (including social auth IDP) redirect flow.\n */\nexport function isLoginRedirect (sdk: OktaAuthOAuthInterface) {\n  // First check, is this a redirect URI?\n  if (!isRedirectUri(window.location.href, sdk)){\n    return false;\n  }\n\n  // The location contains either a code, token, or an error + error_description\n  var codeFlow = isCodeFlow(sdk.options);\n  var hashOrSearch = getHashOrSearch(sdk.options);\n\n  if (hasErrorInUrl(hashOrSearch)) {\n    return true;\n  }\n\n  if (codeFlow) {\n    var hasCode =  hasAuthorizationCode(hashOrSearch) || hasInteractionCode(hashOrSearch);\n    return hasCode;\n  }\n\n  // implicit flow, will always be hash fragment\n  return hasTokensInHash(window.location.hash);\n}\n\n/**\n * Check if error=interaction_required has been passed back in the url, which happens in\n * the social auth IDP redirect flow.\n */\nexport function isInteractionRequired (sdk: OktaAuthOAuthInterface, hashOrSearch?: string) {\n  if (!hashOrSearch) { // web only\n    // First check, is this a redirect URI?\n    if (!isLoginRedirect(sdk)){\n      return false;\n    }\n  \n    hashOrSearch = getHashOrSearch(sdk.options);\n  }\n  return /(error=interaction_required)/i.test(hashOrSearch);\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { isInteractionRequired, isInteractionRequiredError } from '../../oidc';\nimport { authenticate } from '../authenticate';\nimport { cancel } from '../cancel';\nimport {\n  handleEmailVerifyCallback,\n  isEmailVerifyCallback,\n  isEmailVerifyCallbackError,\n  parseEmailVerifyCallback\n} from '../emailVerify';\nimport { handleInteractionCodeRedirect } from '../handleInteractionCodeRedirect';\nimport { makeIdxState } from '../idxState';\nimport { interact } from '../interact';\nimport { introspect } from '../introspect';\nimport { poll } from '../poll';\nimport { canProceed, proceed } from '../proceed';\nimport { recoverPassword } from '../recoverPassword';\nimport { register } from '../register';\nimport { startTransaction } from '../startTransaction';\nimport {\n  clearTransactionMeta,\n  createTransactionMeta,\n  getSavedTransactionMeta,\n  getTransactionMeta,\n  isTransactionMetaValid,\n  saveTransactionMeta\n} from '../transactionMeta';\nimport { FlowIdentifier, IdxAPI, OktaAuthIdxInterface } from '../types';\nimport { unlockAccount } from '../unlockAccount';\nimport * as remediators from '../remediators';\nimport { getFlowSpecification } from '../flow/FlowSpecification';\nimport { setRemediatorsCtx } from '../util';\n\n// Factory\nexport function createIdxAPI(sdk: OktaAuthIdxInterface): IdxAPI {\n  setRemediatorsCtx({\n    remediators,\n    getFlowSpecification,\n  });\n  const boundStartTransaction = startTransaction.bind(null, sdk);\n  const idx = {\n    interact: interact.bind(null, sdk),\n    introspect: introspect.bind(null, sdk),\n    makeIdxResponse: makeIdxState.bind(null, sdk),\n    \n    authenticate: authenticate.bind(null, sdk),\n    register: register.bind(null, sdk),\n    start: boundStartTransaction,\n    startTransaction: boundStartTransaction, // Use `start` instead. `startTransaction` will be removed in 7.0\n    poll: poll.bind(null, sdk),\n    proceed: proceed.bind(null, sdk),\n    cancel: cancel.bind(null, sdk),\n    recoverPassword: recoverPassword.bind(null, sdk),\n\n    // oauth redirect callback\n    handleInteractionCodeRedirect: handleInteractionCodeRedirect.bind(null, sdk),\n\n    // interaction required callback\n    isInteractionRequired: isInteractionRequired.bind(null, sdk),\n    isInteractionRequiredError,\n\n    // email verify callback\n    handleEmailVerifyCallback: handleEmailVerifyCallback.bind(null, sdk),\n    isEmailVerifyCallback,\n    parseEmailVerifyCallback,\n    isEmailVerifyCallbackError,\n    \n    getSavedTransactionMeta: getSavedTransactionMeta.bind(null, sdk),\n    createTransactionMeta: createTransactionMeta.bind(null, sdk),\n    getTransactionMeta: getTransactionMeta.bind(null, sdk),\n    saveTransactionMeta: saveTransactionMeta.bind(null, sdk),\n    clearTransactionMeta: clearTransactionMeta.bind(null, sdk),\n    isTransactionMetaValid,\n    setFlow: (flow: FlowIdentifier) => {\n      sdk.options.flow = flow;\n    },\n    getFlow: (): FlowIdentifier | undefined => {\n      return sdk.options.flow;\n    },\n    canProceed: canProceed.bind(null, sdk),\n    unlockAccount: unlockAccount.bind(null, sdk),\n  };\n  return idx;\n}\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* global atob, btoa, crypto */\nconst a = function(str) { return atob(str); };\nconst b = function (str) { return btoa(str); };\nconst c = typeof crypto === 'undefined' ? null : crypto;\n\nexport { a as atob, b as btoa, c as webcrypto };\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint-disable node/no-unsupported-features/node-builtins */\n/* global document, window, TextEncoder, navigator */\n\nimport { webcrypto } from './crypto';\n\nconst isWindowsPhone = /windows phone|iemobile|wpdesktop/i;\t\n\nexport function isBrowser() {\n  return typeof document !== 'undefined' && typeof window !== 'undefined';\n}\n\nexport function isIE11OrLess() {\n  if (!isBrowser()) {\n    return false;\n  }\n  const documentMode = (document as any).documentMode;\n  return !!documentMode && documentMode <= 11;\n}\n\nexport function getUserAgent() {\n  return navigator.userAgent;\n}\n\nexport function isFingerprintSupported() {\n  const agent = getUserAgent();\n  return agent && !isWindowsPhone.test(agent);\t\n}\n\nexport function isPopupPostMessageSupported() {\n  if (!isBrowser()) {\n    return false;\n  }\n  const documentMode = (document as any).documentMode;\n  var isIE8or9 = documentMode && documentMode < 10;\n  if (typeof window.postMessage !== 'undefined' && !isIE8or9) {\n    return true;\n  }\n  return false;\n}\n\nexport function isTokenVerifySupported() {\n  return typeof webcrypto !== 'undefined'\n    && webcrypto !== null\n    && typeof webcrypto.subtle !== 'undefined'\n    && typeof Uint8Array !== 'undefined';\n}\n\nexport function hasTextEncoder() {\n  return typeof TextEncoder !== 'undefined';\n}\n\nexport function isPKCESupported() {\n  return isTokenVerifySupported() && hasTextEncoder();\n}\n\nexport function isHTTPS() {\n  if (!isBrowser()) {\n    return false;\n  }\n  return window.location.protocol === 'https:';\n}\n\nexport function isLocalhost() {\n  // eslint-disable-next-line compat/compat\n  return isBrowser() && window.location.hostname === 'localhost';\n}\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n/* global SDK_VERSION */\n\nimport { isBrowser } from '../features';\nexport class OktaUserAgent {\n  environments: string[];\n\n  constructor() {\n    // add base sdk env\n    this.environments = [`okta-auth-js/${SDK_VERSION}`];\n    this.maybeAddNodeEnvironment();\n  }\n\n  addEnvironment(env: string) {\n    this.environments.push(env);\n  }\n\n  getHttpHeader() {\n    return { 'X-Okta-User-Agent-Extended': this.environments.join(' ') };\n  }\n\n  getVersion() {\n    return SDK_VERSION;\n  }\n\n  maybeAddNodeEnvironment() {\n    if (isBrowser() || !process || !process.versions) {\n      return;\n    }\n    const { node: version } = process.versions;\n    this.environments.push(`nodejs/${version}`);\n  }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { OktaAuthHttpInterface } from './types';\n\nexport function setRequestHeader(authClient: OktaAuthHttpInterface, headerName, headerValue) {\n  authClient.options.headers = authClient.options.headers || {};\n  authClient.options.headers[headerName] = headerValue;\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { AuthSdkError } from '../errors';\nimport { atob, btoa } from './webcrypto';\n\n// converts a string to base64 (url/filename safe variant)\nexport function stringToBase64Url(str) {\n  var b64 = btoa(str);\n  return base64ToBase64Url(b64);\n}\n\n// converts a standard base64-encoded string to a \"url/filename safe\" variant\nexport function base64ToBase64Url(b64) {\n  return b64.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\n// converts a \"url/filename safe\" base64 string to a \"standard\" base64 string\nexport function base64UrlToBase64(b64u) {\n  return b64u.replace(/-/g, '+').replace(/_/g, '/');\n}\n\nexport function base64UrlToString(b64u) {\n  var b64 = base64UrlToBase64(b64u);\n  switch (b64.length % 4) {\n    case 0:\n      break;\n    case 2:\n      b64 += '==';\n      break;\n    case 3:\n      b64 += '=';\n      break;\n    default:\n      throw new AuthSdkError('Not a valid Base64Url');\n  }\n  var utf8 = atob(b64);\n  try {\n    return decodeURIComponent(escape(utf8));\n  } catch (e) {\n    return utf8;\n  }\n}\n\nexport function stringToBuffer(str) {\n  var buffer = new Uint8Array(str.length);\n  for (var i = 0; i < str.length; i++) {\n    buffer[i] = str.charCodeAt(i);\n  }\n  return buffer;\n}\n\nexport function base64UrlDecode(str) {\n  return atob(base64UrlToBase64(str));\n}\n\n// Converts base64 string to binary data view\nexport function base64UrlToBuffer(b64u) {\n  return Uint8Array.from(base64UrlDecode(b64u), (c: string) => c.charCodeAt(0));\n}\n\n// Converts an ArrayBuffer object that contains binary data to base64 encoded string\nexport function bufferToBase64Url(bin) {\n  return btoa(new Uint8Array(bin).reduce((s, byte) => s + String.fromCharCode(byte), ''));\n}\n\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* global TextEncoder */\nimport { stringToBase64Url } from './base64';\nimport { webcrypto } from './webcrypto';\n\nexport function getOidcHash(str) {  \n  var buffer = new TextEncoder().encode(str);\n  return webcrypto.subtle.digest('SHA-256', buffer).then(function(arrayBuffer) {\n    var intBuffer = new Uint8Array(arrayBuffer);\n    var firstHalf = intBuffer.slice(0, 16);\n    var hash = String.fromCharCode.apply(null, firstHalf as unknown as number[]);\n    var b64u = stringToBase64Url(hash); // url-safe base64 variant\n    return b64u;\n  });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { clone } from '../util';\nimport { stringToBuffer, base64UrlDecode } from './base64';\nimport { webcrypto } from './webcrypto';\n\nexport function verifyToken(idToken, key) {\n  key = clone(key);\n\n  var format = 'jwk';\n  var algo = {\n    name: 'RSASSA-PKCS1-v1_5',\n    hash: { name: 'SHA-256' }\n  };\n  var extractable = true;\n  var usages = ['verify'];\n\n  // https://connect.microsoft.com/IE/feedback/details/2242108/webcryptoapi-importing-jwk-with-use-field-fails\n  // This is a metadata tag that specifies the intent of how the key should be used.\n  // It's not necessary to properly verify the jwt's signature.\n  delete key.use;\n\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  return webcrypto.subtle.importKey(\n    format,\n    key,\n    algo,\n    extractable,\n    usages\n  )\n  .then(function(cryptoKey) {\n    var jwt = idToken.split('.');\n    var payload = stringToBuffer(jwt[0] + '.' + jwt[1]);\n    var b64Signature = base64UrlDecode(jwt[2]);\n    var signature = stringToBuffer(b64Signature);\n\n    return webcrypto.subtle.verify(\n      algo,\n      cryptoKey,\n      signature,\n      payload\n    );\n  });\n}\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n// Implements a queue for synchronous or asynchronous methods\n// Methods will be wrapped in a promise and execute sequentially\n// This can be used to prevent concurrent calls to a single method or a set of methods\n\nimport { isPromise } from './types';\nimport { warn } from './console';\n\ninterface QueueItem {\n  method: () => void;\n  thisObject: object;\n  args: any[];\n  resolve: (value?: unknown) => void;\n  reject: (reason?: unknown) => void;\n}\n\ninterface PromiseQueueOptions {\n  quiet?: boolean; // if false, concurrrency warnings will not be logged\n}\nexport class PromiseQueue {\n  queue: QueueItem[];\n  running: boolean;\n  options: PromiseQueueOptions;\n\n  constructor(options: PromiseQueueOptions = { quiet: false }) {\n    this.queue = [];\n    this.running = false;\n    this.options = options;\n  }\n\n  // Returns a promise\n  // If the method is synchronous, it will resolve when the method completes\n  // If the method returns a promise, it will resolve (or reject) with the value from the method's promise\n  push(method: (...args: any) => any, thisObject: any, ...args: any[]) {\n    return new Promise((resolve, reject) => {\n      if (this.queue.length > 0) {\n        // There is at least one other pending call.\n        // The PromiseQueue will prevent these methods from running concurrently.\n        if (this.options.quiet !== false) {\n          warn(\n            'Async method is being called but another async method is already running. ' +\n            'The new method will be delayed until the previous method completes.'\n          );\n        }\n      }\n      this.queue.push({\n        method,\n        thisObject,\n        args,\n        resolve,\n        reject\n      });\n      this.run();\n    });\n  }\n\n  run() {\n    if (this.running) {\n      return;\n    }\n    if (this.queue.length === 0) {\n      return;\n    }\n    this.running = true;\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    var queueItem = this.queue.shift()!;\n    var res = queueItem.method.apply(queueItem.thisObject, queueItem.args as never) as unknown;\n    if (isPromise(res)) {\n      (res as Promise<unknown>).then(queueItem.resolve, queueItem.reject).finally(() => {\n        this.running = false;\n        this.run();\n      });\n    } else {\n      queueItem.resolve(res);\n      this.running = false;\n      this.run();\n    }\n  }\n}\n","/*!\n * Copyright (c) 2019-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n /* eslint-disable complexity, max-statements */\nimport { stringToBase64Url, webcrypto } from '../../crypto';\nimport { MIN_VERIFIER_LENGTH, MAX_VERIFIER_LENGTH, DEFAULT_CODE_CHALLENGE_METHOD } from '../../constants';\n\nfunction dec2hex (dec) {\n  return ('0' + dec.toString(16)).substr(-2);\n}\n\nfunction getRandomString(length) {\n  var a = new Uint8Array(Math.ceil(length / 2));\n  webcrypto.getRandomValues(a);\n  var str = Array.from(a, dec2hex).join('');\n  return str.slice(0, length);\n}\n\nfunction generateVerifier(prefix?: string): string {\n  var verifier = prefix || '';\n  if (verifier.length < MIN_VERIFIER_LENGTH) {\n    verifier = verifier + getRandomString(MIN_VERIFIER_LENGTH - verifier.length);\n  }\n  return encodeURIComponent(verifier).slice(0, MAX_VERIFIER_LENGTH);\n}\n\nfunction computeChallenge(str: string): PromiseLike<any> {  \n  var buffer = new TextEncoder().encode(str);\n  return webcrypto.subtle.digest('SHA-256', buffer).then(function(arrayBuffer) {\n    var hash = String.fromCharCode.apply(null, new Uint8Array(arrayBuffer) as unknown as number[]);\n    var b64u = stringToBase64Url(hash); // url-safe base64 variant\n    return b64u;\n  });\n}\n\nexport default {\n  DEFAULT_CODE_CHALLENGE_METHOD,\n  generateVerifier,\n  computeChallenge\n};\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { JWTObject } from './types';\nimport { base64UrlToString } from '../crypto';\n\nexport function decodeToken(token: string): JWTObject {\n  var jwt = token.split('.');\n  var decodedToken: JWTObject;\n\n  try {\n    decodedToken = {\n      header: JSON.parse(base64UrlToString(jwt[0])),\n      payload: JSON.parse(base64UrlToString(jwt[1])),\n      signature: jwt[2]\n    };\n  } catch (e) {\n    throw new AuthSdkError('Malformed token');\n  }\n\n  return decodedToken;\n}\n","\n/* global window */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { generateNonce, generateState } from './oauth';\nimport { OktaAuthOAuthInterface, TokenParams } from '../types';\nimport { isBrowser } from '../../features';\nimport { removeNils } from '../../util';\n\nexport function getDefaultTokenParams(sdk: OktaAuthOAuthInterface): TokenParams {\n  const {\n    pkce,\n    clientId,\n    redirectUri,\n    responseType,\n    responseMode,\n    scopes,\n    acrValues,\n    maxAge,\n    state,\n    ignoreSignature\n  } = sdk.options;\n  const defaultRedirectUri = isBrowser() ? window.location.href : undefined;\n  return removeNils({\n    pkce,\n    clientId,\n    redirectUri: redirectUri || defaultRedirectUri,\n    responseType: responseType || ['token', 'id_token'],\n    responseMode,\n    state: state || generateState(),\n    nonce: generateNonce(),\n    scopes: scopes || ['openid', 'email'],\n    acrValues,\n    maxAge,\n    ignoreSignature\n  });\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthSdkError } from '../../errors';\nimport { CustomUrls, OAuthParams, OAuthResponse, RefreshToken, TokenParams } from '../types';\nimport { removeNils, toQueryString } from '../../util';\nimport { httpRequest, OktaAuthHttpInterface } from '../../http';\n\nfunction validateOptions(options: TokenParams) {\n  // Quick validation\n  if (!options.clientId) {\n    throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to get a token');\n  }\n\n  if (!options.redirectUri) {\n    throw new AuthSdkError('The redirectUri passed to /authorize must also be passed to /token');\n  }\n\n  if (!options.authorizationCode && !options.interactionCode) {\n    throw new AuthSdkError('An authorization code (returned from /authorize) must be passed to /token');\n  }\n\n  if (!options.codeVerifier) {\n    throw new AuthSdkError('The \"codeVerifier\" (generated and saved by your app) must be passed to /token');\n  }\n}\n\nfunction getPostData(sdk, options: TokenParams): string {\n  // Convert Token params to OAuth params, sent to the /token endpoint\n  var params: OAuthParams = removeNils({\n    'client_id': options.clientId,\n    'redirect_uri': options.redirectUri,\n    'grant_type': options.interactionCode ? 'interaction_code' : 'authorization_code',\n    'code_verifier': options.codeVerifier\n  });\n\n  if (options.interactionCode) {\n    params['interaction_code'] = options.interactionCode;\n  } else if (options.authorizationCode) {\n    params.code = options.authorizationCode;\n  }\n\n  const { clientSecret } = sdk.options;\n  if (clientSecret) {\n    params['client_secret'] = clientSecret;\n  }\n\n  // Encode as URL string\n  return toQueryString(params).slice(1);\n}\n\n// exchange authorization code for an access token\nexport function postToTokenEndpoint(sdk, options: TokenParams, urls: CustomUrls): Promise<OAuthResponse> {\n  validateOptions(options);\n  var data = getPostData(sdk, options);\n\n  const headers = {\n    'Content-Type': 'application/x-www-form-urlencoded'\n  };\n\n  return httpRequest(sdk, {\n    url: urls.tokenUrl,\n    method: 'POST',\n    args: data,\n    headers\n  });\n}\n\nexport function postRefreshToken(\n  sdk: OktaAuthHttpInterface,\n  options: TokenParams,\n  refreshToken: RefreshToken\n): Promise<OAuthResponse> {\n  return httpRequest(sdk, {\n    url: refreshToken.tokenUrl,\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/x-www-form-urlencoded',\n    },\n\n    args: Object.entries({\n      client_id: options.clientId, // eslint-disable-line camelcase\n      grant_type: 'refresh_token', // eslint-disable-line camelcase\n      scope: refreshToken.scopes.join(' '),\n      refresh_token: refreshToken.refreshToken, // eslint-disable-line camelcase\n    }).map(function ([name, value]) {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      return name + '=' + encodeURIComponent(value!);\n    }).join('&'),\n  });\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { get } from '../../http';\nimport { find } from '../../util';\nimport { OktaAuthOAuthInterface, WellKnownResponse } from '../types';\nimport AuthSdkError from '../../errors/AuthSdkError';\n\nexport function getWellKnown(sdk: OktaAuthOAuthInterface, issuer?: string): Promise<WellKnownResponse> {\n  var authServerUri = (issuer || sdk.options.issuer);\n  return get(sdk, authServerUri + '/.well-known/openid-configuration', {\n    cacheResponse: true\n  });\n}\n\nexport function getKey(sdk: OktaAuthOAuthInterface, issuer: string, kid: string): Promise<string> {\n  var httpCache = sdk.storageManager.getHttpCache(sdk.options.cookies);\n\n  return getWellKnown(sdk, issuer)\n  .then(function(wellKnown) {\n    var jwksUri = wellKnown['jwks_uri'];\n\n    // Check our kid against the cached version (if it exists and isn't expired)\n    var cacheContents = httpCache.getStorage();\n    var cachedResponse = cacheContents[jwksUri];\n    if (cachedResponse && Date.now()/1000 < cachedResponse.expiresAt) {\n      var cachedKey = find(cachedResponse.response.keys, {\n        kid: kid\n      });\n\n      if (cachedKey) {\n        return cachedKey;\n      }\n    }\n\n    // Remove cache for the key\n    httpCache.clearStorage(jwksUri);\n\n    // Pull the latest keys if the key wasn't in the cache\n    return get(sdk, jwksUri, {\n      cacheResponse: true\n    })\n    .then(function(res) {\n      var key = find(res.keys, {\n        kid: kid\n      });\n\n      if (key) {\n        return key;\n      }\n\n      throw new AuthSdkError('The key id, ' + kid + ', was not found in the server\\'s keys');\n    });\n  });\n}\n","/* eslint-disable max-len */\n/* eslint-disable complexity */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { getWellKnown, getKey } from './endpoints/well-known';\nimport { validateClaims } from './util';\nimport { AuthSdkError } from '../errors';\nimport { IDToken, OktaAuthOAuthInterface, TokenVerifyParams } from '../oidc/types';\nimport { decodeToken } from './decodeToken';\nimport * as sdkCrypto from '../crypto';\n\n// Verify the id token\nexport async function verifyToken(sdk: OktaAuthOAuthInterface, token: IDToken, validationParams: TokenVerifyParams): Promise<IDToken> {\n  if (!token || !token.idToken) {\n    throw new AuthSdkError('Only idTokens may be verified');\n  }\n\n  // Decode the Jwt object (may throw)\n  const jwt = decodeToken(token.idToken);\n\n  // The configured issuer may point to a frontend proxy.\n  // Get the \"real\" issuer from .well-known/openid-configuration\n  const configuredIssuer = validationParams?.issuer || sdk.options.issuer;\n  const { issuer } = await getWellKnown(sdk, configuredIssuer);\n\n  const validationOptions: TokenVerifyParams = Object.assign({\n    // base options, can be overridden by params\n    clientId: sdk.options.clientId,\n    ignoreSignature: sdk.options.ignoreSignature\n  }, validationParams, {\n    // final options, cannot be overridden\n    issuer\n  });\n\n  // Standard claim validation (may throw)\n  validateClaims(sdk, jwt.payload, validationOptions);\n\n  // If the browser doesn't support native crypto or we choose not\n  // to verify the signature, bail early\n  if (validationOptions.ignoreSignature == true || !sdk.features.isTokenVerifySupported()) {\n    return token;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  const key = await getKey(sdk, token.issuer, jwt.header.kid!);\n  const valid = await sdkCrypto.verifyToken(token.idToken, key);\n  if (!valid) {\n    throw new AuthSdkError('The token signature is not valid');\n  }\n  if (validationParams && validationParams.accessToken && token.claims.at_hash) {\n    const hash = await sdkCrypto.getOidcHash(validationParams.accessToken);\n    if (hash !== token.claims.at_hash) {\n      throw new AuthSdkError('Token hash verification failed');\n    }\n  }\n  return token;\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n/* eslint-disable complexity, max-statements */\n\nimport AuthSdkError from '../../errors/AuthSdkError';\nimport { OktaAuthOAuthInterface, TokenVerifyParams, UserClaims } from '../../oidc/types';\n\nexport function validateClaims(sdk: OktaAuthOAuthInterface, claims: UserClaims, validationParams: TokenVerifyParams) {\n  const aud = validationParams.clientId;\n  const iss = validationParams.issuer;\n  const nonce = validationParams.nonce;\n  const acr = validationParams.acrValues;\n\n  if (!claims || !iss || !aud) {\n    throw new AuthSdkError('The jwt, iss, and aud arguments are all required');\n  }\n\n  if (nonce && claims.nonce !== nonce) {\n    throw new AuthSdkError('OAuth flow response nonce doesn\\'t match request nonce');\n  }\n\n  const now = Math.floor(Date.now()/1000);\n\n  if (claims.iss !== iss) {\n    throw new AuthSdkError('The issuer [' + claims.iss + '] ' +\n      'does not match [' + iss + ']');\n  }\n\n  if ((Array.isArray(claims.aud) && claims.aud.indexOf(aud) < 0) ||\n    (!Array.isArray(claims.aud) && claims.aud !== aud))\n  {\n    throw new AuthSdkError('The audience [' + claims.aud + '] ' +\n      'does not match [' + aud + ']');\n  }\n\n  if (acr && claims.acr !== acr) {\n    throw new AuthSdkError('The acr [' + claims.acr + '] ' +\n      'does not match acr_values [' + acr + ']');\n  }\n\n  if (claims.iat! > claims.exp!) {\n    throw new AuthSdkError('The JWT expired before it was issued');\n  }\n\n  if (!sdk.options.ignoreLifetime) {\n    if ((now - sdk.options.maxClockSkew!) > claims.exp!) {\n      throw new AuthSdkError('The JWT expired and is no longer valid');\n    }\n\n    if (claims.iat! > (now + sdk.options.maxClockSkew!)) {\n      throw new AuthSdkError('The JWT was issued in the future');\n    }\n  }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\n/* eslint-disable complexity, max-statements */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { clone } from '../util';\nimport {\n  getOAuthUrls,\n} from './util/oauth';\nimport { AuthSdkError, OAuthError } from '../errors';\nimport {\n  OktaAuthOAuthInterface,\n  TokenVerifyParams,\n  IDToken,\n  OAuthResponse,\n  TokenParams,\n  TokenResponse,\n  CustomUrls,\n  Tokens,\n} from './types';\nimport { verifyToken } from './verifyToken';\nimport { getDefaultTokenParams } from './util';\n\nfunction validateResponse(res: OAuthResponse, oauthParams: TokenParams) {\n  if (res['error'] && res['error_description']) {\n    throw new OAuthError(res['error'], res['error_description']);\n  }\n\n  if (res.state !== oauthParams.state) {\n    throw new AuthSdkError('OAuth flow response state doesn\\'t match request state');\n  }\n}\n\nexport async function handleOAuthResponse(\n  sdk: OktaAuthOAuthInterface,\n  tokenParams: TokenParams,\n  res: OAuthResponse,\n  urls?: CustomUrls\n): Promise<TokenResponse> {\n  const pkce = sdk.options.pkce !== false;\n\n  // The result contains an authorization_code and PKCE is enabled \n  // `exchangeCodeForTokens` will call /token then call `handleOauthResponse` recursively with the result\n  if (pkce && (res.code || res.interaction_code)) {\n    return sdk.token.exchangeCodeForTokens(Object.assign({}, tokenParams, {\n      authorizationCode: res.code,\n      interactionCode: res.interaction_code\n    }), urls);\n  }\n\n  tokenParams = tokenParams || getDefaultTokenParams(sdk);\n  urls = urls || getOAuthUrls(sdk, tokenParams);\n\n  let responseType = tokenParams.responseType || [];\n  if (!Array.isArray(responseType) && responseType !== 'none') {\n    responseType = [responseType];\n  }\n\n  let scopes;\n  if (res.scope) {\n    scopes = res.scope.split(' ');\n  } else {\n    scopes = clone(tokenParams.scopes);\n  }\n  const clientId = tokenParams.clientId || sdk.options.clientId;\n\n  // Handling the result from implicit flow or PKCE token exchange\n  validateResponse(res, tokenParams);\n\n  const tokenDict = {} as Tokens;\n  const expiresIn = res.expires_in;\n  const tokenType = res.token_type;\n  const accessToken = res.access_token;\n  const idToken = res.id_token;\n  const refreshToken = res.refresh_token;\n  const now = Math.floor(Date.now()/1000);\n\n  if (accessToken) {\n    const accessJwt = sdk.token.decode(accessToken);\n    tokenDict.accessToken = {\n      accessToken: accessToken,\n      claims: accessJwt.payload,\n      expiresAt: Number(expiresIn) + now,\n      tokenType: tokenType!,\n      scopes: scopes,\n      authorizeUrl: urls.authorizeUrl!,\n      userinfoUrl: urls.userinfoUrl!\n    };\n  }\n\n  if (refreshToken) {\n    tokenDict.refreshToken = {\n      refreshToken: refreshToken,\n      // should not be used, this is the accessToken expire time\n      // TODO: remove \"expiresAt\" in the next major version OKTA-407224\n      expiresAt: Number(expiresIn) + now, \n      scopes: scopes,\n      tokenUrl: urls.tokenUrl!,\n      authorizeUrl: urls.authorizeUrl!,\n      issuer: urls.issuer!,\n    };\n  }\n\n  if (idToken) {\n    const idJwt = sdk.token.decode(idToken);\n    const idTokenObj: IDToken = {\n      idToken: idToken,\n      claims: idJwt.payload,\n      expiresAt: idJwt.payload.exp! - idJwt.payload.iat! + now, // adjusting expiresAt to be in local time\n      scopes: scopes,\n      authorizeUrl: urls.authorizeUrl!,\n      issuer: urls.issuer!,\n      clientId: clientId!\n    };\n\n    const validationParams: TokenVerifyParams = {\n      clientId: clientId!,\n      issuer: urls.issuer!,\n      nonce: tokenParams.nonce,\n      accessToken: accessToken,\n      acrValues: tokenParams.acrValues\n    };\n\n    if (tokenParams.ignoreSignature !== undefined) {\n      validationParams.ignoreSignature = tokenParams.ignoreSignature;\n    }\n\n    await verifyToken(sdk, idTokenObj, validationParams);\n    tokenDict.idToken = idTokenObj;\n  }\n\n  // Validate received tokens against requested response types \n  if (responseType.indexOf('token') !== -1 && !tokenDict.accessToken) {\n    // eslint-disable-next-line max-len\n    throw new AuthSdkError('Unable to parse OAuth flow response: response type \"token\" was requested but \"access_token\" was not returned.');\n  }\n  if (responseType.indexOf('id_token') !== -1 && !tokenDict.idToken) {\n    // eslint-disable-next-line max-len\n    throw new AuthSdkError('Unable to parse OAuth flow response: response type \"id_token\" was requested but \"id_token\" was not returned.');\n  }\n\n  return {\n    tokens: tokenDict,\n    state: res.state!,\n    code: res.code,\n    responseType\n  };\n  \n}","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable max-len */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { CustomUrls, OAuthResponse, OAuthResponseType, OktaAuthOAuthInterface, TokenParams, TokenResponse } from './types';\nimport { getOAuthUrls, getDefaultTokenParams } from './util';\nimport { clone } from '../util';\nimport { postToTokenEndpoint } from './endpoints/token';\nimport { handleOAuthResponse } from './handleOAuthResponse';\n\n// codeVerifier is required. May pass either an authorizationCode or interactionCode\nexport function exchangeCodeForTokens(sdk: OktaAuthOAuthInterface, tokenParams: TokenParams, urls?: CustomUrls): Promise<TokenResponse> {\n  urls = urls || getOAuthUrls(sdk, tokenParams);\n  // build params using defaults + options\n  tokenParams = Object.assign({}, getDefaultTokenParams(sdk), clone(tokenParams));\n\n  const {\n    authorizationCode,\n    interactionCode,\n    codeVerifier,\n    clientId,\n    redirectUri,\n    scopes,\n    ignoreSignature,\n    state,\n    acrValues\n  } = tokenParams;\n\n  var getTokenOptions = {\n    clientId,\n    redirectUri,\n    authorizationCode,\n    interactionCode,\n    codeVerifier,\n  };\n\n  return postToTokenEndpoint(sdk, getTokenOptions, urls)\n    .then((response: OAuthResponse) => {\n\n      // `handleOAuthResponse` hanadles responses from both `/authorize` and `/token` endpoints\n      // Here we modify the response from `/token` so that it more closely matches a response from `/authorize`\n      // `responseType` is used to validate that the expected tokens were returned\n      const responseType: OAuthResponseType[] = ['token']; // an accessToken will always be returned\n      if (scopes!.indexOf('openid') !== -1) {\n        responseType.push('id_token'); // an idToken will be returned if \"openid\" is in the scopes\n      }\n      const handleResponseOptions: TokenParams = {\n        clientId,\n        redirectUri,\n        scopes,\n        responseType,\n        ignoreSignature,\n        acrValues\n      };\n      return handleOAuthResponse(sdk, handleResponseOptions, response, urls!)\n        .then((response: TokenResponse) => {\n          // For compatibility, \"code\" is returned in the TokenResponse. OKTA-326091\n          response.code = authorizationCode;\n          response.state = state!;\n          return response;\n        });\n    })\n    .finally(() => {\n      sdk.transactionManager.clear();\n    });\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n/* global window, document */\n/* eslint-disable complexity, max-statements */\nimport { AuthSdkError } from '../../errors';\nimport { OktaAuthOAuthInterface } from '../types';\n\nexport function addListener(eventTarget, name, fn) {\n  if (eventTarget.addEventListener) {\n    eventTarget.addEventListener(name, fn);\n  } else {\n    eventTarget.attachEvent('on' + name, fn);\n  }\n}\n\nexport function removeListener(eventTarget, name, fn) {\n  if (eventTarget.removeEventListener) {\n    eventTarget.removeEventListener(name, fn);\n  } else {\n    eventTarget.detachEvent('on' + name, fn);\n  }\n}\n\nexport function loadFrame(src) {\n  var iframe = document.createElement('iframe');\n  iframe.style.display = 'none';\n  iframe.src = src;\n\n  return document.body.appendChild(iframe);\n}\n\nexport function loadPopup(src, options) {\n  var title = options.popupTitle || 'External Identity Provider User Authentication';\n  var appearance = 'toolbar=no, scrollbars=yes, resizable=yes, ' +\n    'top=100, left=500, width=600, height=600';\n  return window.open(src, title, appearance);\n}\n\nexport function addPostMessageListener(sdk: OktaAuthOAuthInterface, timeout, state) {\n  var responseHandler;\n  var timeoutId;\n  var msgReceivedOrTimeout = new Promise(function (resolve, reject) {\n\n    responseHandler = function responseHandler(e) {\n      if (!e.data || e.data.state !== state) {\n        // A message not meant for us\n        return;\n      }\n\n      // Configuration mismatch between saved token and current app instance\n      // This may happen if apps with different issuers are running on the same host url\n      // If they share the same storage key, they may read and write tokens in the same location.\n      // Common when developing against http://localhost\n      if (e.origin !== sdk.getIssuerOrigin()) {\n        return reject(new AuthSdkError('The request does not match client configuration'));\n      }\n      resolve(e.data);\n    };\n\n    addListener(window, 'message', responseHandler);\n\n    timeoutId = setTimeout(function () {\n      reject(new AuthSdkError('OAuth flow timed out'));\n    }, timeout || 120000);\n  });\n\n  return msgReceivedOrTimeout\n    .finally(function () {\n      clearTimeout(timeoutId);\n      removeListener(window, 'message', responseHandler);\n    });\n}\n","/* eslint-disable complexity */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { getWellKnown } from '../endpoints/well-known';\nimport { AuthSdkError } from '../../errors';\nimport { OktaAuthOAuthInterface, TokenParams } from '../types';\nimport { getDefaultTokenParams } from './defaultTokenParams';\nimport { DEFAULT_CODE_CHALLENGE_METHOD } from '../../constants';\nimport PKCE from './pkce';\nimport { OktaAuthBaseInterface } from '../../base/types';\n\nexport function assertPKCESupport(sdk: OktaAuthBaseInterface) {\n  if (!sdk.features.isPKCESupported()) {\n    var errorMessage = 'PKCE requires a modern browser with encryption support running in a secure context.';\n    if (!sdk.features.isHTTPS()) {\n      // eslint-disable-next-line max-len\n      errorMessage += '\\nThe current page is not being served with HTTPS protocol. PKCE requires secure HTTPS protocol.';\n    }\n    if (!sdk.features.hasTextEncoder()) {\n      // eslint-disable-next-line max-len\n      errorMessage += '\\n\"TextEncoder\" is not defined. To use PKCE, you may need to include a polyfill/shim for this browser.';\n    }\n    throw new AuthSdkError(errorMessage);\n  }\n}\n\nexport async function validateCodeChallengeMethod(sdk: OktaAuthOAuthInterface, codeChallengeMethod?: string) {\n  // set default code challenge method, if none provided\n  codeChallengeMethod = codeChallengeMethod || sdk.options.codeChallengeMethod || DEFAULT_CODE_CHALLENGE_METHOD;\n\n  // validate against .well-known/openid-configuration\n  const wellKnownResponse = await getWellKnown(sdk);\n  var methods = wellKnownResponse['code_challenge_methods_supported'] || [];\n  if (methods.indexOf(codeChallengeMethod) === -1) {\n    throw new AuthSdkError('Invalid code_challenge_method');\n  }\n  return codeChallengeMethod;\n}\n\nexport async function preparePKCE(\n  sdk: OktaAuthOAuthInterface, \n  tokenParams: TokenParams\n): Promise<TokenParams> {\n  let {\n    codeVerifier,\n    codeChallenge,\n    codeChallengeMethod\n  } = tokenParams;\n\n  // PKCE calculations can be avoided by passing a codeChallenge\n  codeChallenge = codeChallenge || sdk.options.codeChallenge;\n  if (!codeChallenge) {\n    assertPKCESupport(sdk);\n    codeVerifier = codeVerifier || PKCE.generateVerifier();\n    codeChallenge = await PKCE.computeChallenge(codeVerifier);\n  }\n  codeChallengeMethod = await validateCodeChallengeMethod(sdk, codeChallengeMethod);\n\n  // Clone/copy the params. Set PKCE values\n  tokenParams = {\n    ...tokenParams,\n    responseType: 'code', // responseType is forced\n    codeVerifier,\n    codeChallenge,\n    codeChallengeMethod\n  };\n\n  return tokenParams;\n}\n\n// Prepares params for a call to /authorize or /token\nexport async function prepareTokenParams(\n  sdk: OktaAuthOAuthInterface,\n  tokenParams: TokenParams = {}\n): Promise<TokenParams> {\n  // build params using defaults + options\n  const defaults = getDefaultTokenParams(sdk);\n  tokenParams = { ...defaults, ...tokenParams };\n\n  if (tokenParams.pkce === false) {\n    // Implicit flow or authorization_code without PKCE\n    return tokenParams;\n  }\n\n  return preparePKCE(sdk, tokenParams);\n}","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { isString, removeNils, toQueryString } from '../../util';\nimport { AuthSdkError } from '../../errors';\nimport { OAuthParams, TokenParams } from '../types';\n\nexport function convertTokenParamsToOAuthParams(tokenParams: TokenParams) {\n  // Quick validation\n  if (!tokenParams.clientId) {\n    throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to get a token');\n  }\n\n  if (isString(tokenParams.responseType) && tokenParams.responseType.indexOf(' ') !== -1) {\n    throw new AuthSdkError('Multiple OAuth responseTypes must be defined as an array');\n  }\n\n  // Convert our params to their actual OAuth equivalents\n  var oauthParams: OAuthParams = {\n    'client_id': tokenParams.clientId,\n    'code_challenge': tokenParams.codeChallenge,\n    'code_challenge_method': tokenParams.codeChallengeMethod,\n    'display': tokenParams.display,\n    'idp': tokenParams.idp,\n    'idp_scope': tokenParams.idpScope,\n    'login_hint': tokenParams.loginHint,\n    'max_age': tokenParams.maxAge,\n    'nonce': tokenParams.nonce,\n    'prompt': tokenParams.prompt,\n    'redirect_uri': tokenParams.redirectUri,\n    'response_mode': tokenParams.responseMode,\n    'response_type': tokenParams.responseType,\n    'sessionToken': tokenParams.sessionToken,\n    'state': tokenParams.state,\n    'acr_values': tokenParams.acrValues,\n    'enroll_amr_values': tokenParams.enrollAmrValues,\n  };\n  oauthParams = removeNils(oauthParams) as OAuthParams;\n\n  ['idp_scope', 'response_type', 'enroll_amr_values'].forEach(function (mayBeArray) {\n    if (Array.isArray(oauthParams[mayBeArray])) {\n      oauthParams[mayBeArray] = oauthParams[mayBeArray].join(' ');\n    }\n  });\n\n  if (tokenParams.responseType!.indexOf('id_token') !== -1 &&\n    tokenParams.scopes!.indexOf('openid') === -1) {\n    throw new AuthSdkError('openid scope must be specified in the scopes argument when requesting an id_token');\n  } else if (tokenParams.scopes) {\n    oauthParams.scope = tokenParams.scopes!.join(' ');\n  }\n\n  return oauthParams;\n}\n\nexport function buildAuthorizeParams(tokenParams: TokenParams) {\n  var oauthQueryParams = convertTokenParamsToOAuthParams(tokenParams);\n  return toQueryString({ \n    ...oauthQueryParams, \n    ...(tokenParams.extraParams && { ...tokenParams.extraParams })\n  });\n}\n","\n/* global document */\n/* eslint-disable complexity, max-statements */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport {\n  getOAuthUrls,\n  loadFrame,\n  addPostMessageListener\n} from './util';\n\nimport AuthSdkError from '../errors/AuthSdkError';\n\nimport {\n  OktaAuthOAuthInterface,\n  TokenParams,\n  PopupParams,\n  OAuthResponse,\n} from './types';\n\nimport { prepareTokenParams } from './util/prepareTokenParams';\nimport { buildAuthorizeParams } from './endpoints/authorize';\nimport { handleOAuthResponse } from './handleOAuthResponse';\n/*\n * Retrieve an idToken from an Okta or a third party idp\n *\n * Two main flows:\n *\n *  1) Exchange a sessionToken for a token\n *\n *    Required:\n *      clientId: passed via the OktaAuth constructor or into getToken\n *      sessionToken: 'yourtoken'\n *\n *    Optional:\n *      redirectUri: defaults to window.location.href\n *      scopes: defaults to ['openid', 'email']\n *\n *    Forced:\n *      prompt: 'none'\n *      responseMode: 'okta_post_message'\n *      display: undefined\n *\n *  2) Get a token from an idp\n *\n *    Required:\n *      clientId: passed via the OktaAuth constructor or into getToken\n *\n *    Optional:\n *      redirectUri: defaults to window.location.href\n *      scopes: defaults to ['openid', 'email']\n *      idp: defaults to Okta as an idp\n *      prompt: no default. Pass 'none' to throw an error if user is not signed in\n *\n *    Forced:\n *      display: 'popup'\n *\n *  Only common optional params shown. Any OAuth parameters not explicitly forced are available to override\n *\n * @param {Object} oauthOptions\n * @param {String} [oauthOptions.clientId] ID of this client\n * @param {String} [oauthOptions.redirectUri] URI that the iframe or popup will go to once authenticated\n * @param {String[]} [oauthOptions.scopes] OAuth 2.0 scopes to request (openid must be specified)\n * @param {String} [oauthOptions.idp] ID of an external IdP to use for user authentication\n * @param {String} [oauthOptions.sessionToken] Bootstrap Session Token returned by the Okta Authentication API\n * @param {String} [oauthOptions.prompt] Determines whether the Okta login will be displayed on failure.\n *                                       Use 'none' to prevent this behavior\n *\n * @param {Object} options\n * @param {Integer} [options.timeout] Time in ms before the flow is automatically terminated. Defaults to 120000\n * @param {String} [options.popupTitle] Title dispayed in the popup.\n *                                      Defaults to 'External Identity Provider User Authentication'\n */\nexport function getToken(sdk: OktaAuthOAuthInterface, options: TokenParams & PopupParams) {\n  if (arguments.length > 2) {\n    return Promise.reject(new AuthSdkError('As of version 3.0, \"getToken\" takes only a single set of options'));\n  }\n\n  options = options || {};\n\n  // window object cannot be serialized, save for later use\n  // TODO: move popup related params into a separate options object\n  const popupWindow = options.popupWindow;\n  options.popupWindow = undefined;\n\n  return prepareTokenParams(sdk, options)\n    .then(function (tokenParams: TokenParams) {\n\n      // Start overriding any options that don't make sense\n      var sessionTokenOverrides = {\n        prompt: 'none',\n        responseMode: 'okta_post_message',\n        display: null\n      };\n\n      var idpOverrides = {\n        display: 'popup'\n      };\n\n      if (options.sessionToken) {\n        Object.assign(tokenParams, sessionTokenOverrides);\n      } else if (options.idp) {\n        Object.assign(tokenParams, idpOverrides);\n      }\n\n      // Use the query params to build the authorize url\n      var requestUrl,\n        endpoint,\n        urls;\n\n      // Get authorizeUrl and issuer\n      urls = getOAuthUrls(sdk, tokenParams);\n      endpoint = options.codeVerifier ? urls.tokenUrl : urls.authorizeUrl;\n      requestUrl = endpoint + buildAuthorizeParams(tokenParams);\n\n      // Determine the flow type\n      var flowType;\n      if (tokenParams.sessionToken || tokenParams.display === null) {\n        flowType = 'IFRAME';\n      } else if (tokenParams.display === 'popup') {\n        flowType = 'POPUP';\n      } else {\n        flowType = 'IMPLICIT';\n      }\n\n      // Execute the flow type\n      switch (flowType) {\n        case 'IFRAME':\n          var iframePromise = addPostMessageListener(sdk, options.timeout, tokenParams.state);\n          var iframeEl = loadFrame(requestUrl);\n          return iframePromise\n            .then(function (res) {\n              return handleOAuthResponse(sdk, tokenParams, res as OAuthResponse, urls);\n            })\n            .finally(function () {\n              if (document.body.contains(iframeEl)) {\n                iframeEl.parentElement?.removeChild(iframeEl);\n              }\n            });\n\n        case 'POPUP':\n          var oauthPromise; // resolves with OAuth response\n\n          // Add listener on postMessage before window creation, so\n          // postMessage isn't triggered before we're listening\n          if (tokenParams.responseMode === 'okta_post_message') {\n            if (!sdk.features.isPopupPostMessageSupported()) {\n              throw new AuthSdkError('This browser doesn\\'t have full postMessage support');\n            }\n            oauthPromise = addPostMessageListener(sdk, options.timeout, tokenParams.state);\n          }\n\n          // Redirect for authorization\n          // popupWindown can be null when popup is blocked\n          if (popupWindow) { \n            popupWindow.location.assign(requestUrl);\n          }\n\n          // The popup may be closed without receiving an OAuth response. Setup a poller to monitor the window.\n          var popupPromise = new Promise(function (resolve, reject) {\n            var closePoller = setInterval(function () {\n              if (!popupWindow || popupWindow.closed) {\n                clearInterval(closePoller);\n                reject(new AuthSdkError('Unable to parse OAuth flow response'));\n              }\n            }, 100);\n\n            // Proxy the OAuth promise results\n            oauthPromise\n              .then(function (res) {\n                clearInterval(closePoller);\n                resolve(res);\n              })\n              .catch(function (err) {\n                clearInterval(closePoller);\n                reject(err);\n              });\n          });\n\n          return popupPromise\n            .then(function (res) {\n              return handleOAuthResponse(sdk, tokenParams, res as OAuthResponse, urls);\n            })\n            .finally(function () {\n              if (popupWindow && !popupWindow.closed) {\n                popupWindow.close();\n              }\n            });\n\n        default:\n          throw new AuthSdkError('The full page redirect flow is not supported');\n      }\n    });\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { OktaAuthOAuthInterface, TokenParams, TokenResponse } from './types';\nimport { clone } from '../util';\nimport { getToken } from './getToken';\n\nexport function getWithoutPrompt(sdk: OktaAuthOAuthInterface, options: TokenParams): Promise<TokenResponse> {\n  if (arguments.length > 2) {\n    return Promise.reject(new AuthSdkError('As of version 3.0, \"getWithoutPrompt\" takes only a single set of options'));\n  }\n  \n  options = clone(options) || {};\n  Object.assign(options, {\n    prompt: 'none',\n    responseMode: 'okta_post_message',\n    display: null\n  });\n  return getToken(sdk, options);\n}\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { OktaAuthOAuthInterface, TokenParams, TokenResponse } from './types';\nimport { clone } from '../util';\nimport { getToken } from './getToken';\nimport { loadPopup } from './util';\n\nexport function getWithPopup(sdk: OktaAuthOAuthInterface, options: TokenParams): Promise<TokenResponse> {\n  if (arguments.length > 2) {\n    return Promise.reject(new AuthSdkError('As of version 3.0, \"getWithPopup\" takes only a single set of options'));\n  }\n\n  // some browsers (safari, firefox) block popup if it's initialed from an async process\n  // here we create the popup window immediately after user interaction\n  // then redirect to the /authorize endpoint when the requestUrl is available\n  const popupWindow = loadPopup('/', options);\n  options = clone(options) || {};\n  Object.assign(options, {\n    display: 'popup',\n    responseMode: 'okta_post_message',\n    popupWindow\n  });\n  return getToken(sdk, options);\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { OktaAuthOAuthInterface, TokenParams } from './types';\nimport { clone } from '../util';\nimport { prepareTokenParams, createOAuthMeta } from './util';\nimport { buildAuthorizeParams } from './endpoints/authorize';\n\nexport async function getWithRedirect(sdk: OktaAuthOAuthInterface, options?: TokenParams): Promise<void> {\n  if (arguments.length > 2) {\n    return Promise.reject(new AuthSdkError('As of version 3.0, \"getWithRedirect\" takes only a single set of options'));\n  }\n\n  options = clone(options) || {};\n\n  const tokenParams = await prepareTokenParams(sdk, options);\n  const meta = createOAuthMeta(sdk, tokenParams);\n  const requestUrl = meta.urls.authorizeUrl + buildAuthorizeParams(tokenParams);\n  sdk.transactionManager.save(meta);\n  if (sdk.options.setLocation) {\n    sdk.options.setLocation(requestUrl);\n  } else {\n    window.location.assign(requestUrl);\n  }\n}\n","/* eslint-disable complexity */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { isInteractionRequiredError, urlParamsToObject } from './util';\nimport {\n  ParseFromUrlOptions,\n  TokenResponse,\n  CustomUrls,\n  TransactionMeta,\n  OAuthResponse\n} from './types';\nimport { isString } from '../util';\nimport { handleOAuthResponse } from './handleOAuthResponse';\n\nfunction removeHash(sdk) {\n  var nativeHistory = sdk.token.parseFromUrl._getHistory();\n  var nativeDoc = sdk.token.parseFromUrl._getDocument();\n  var nativeLoc = sdk.token.parseFromUrl._getLocation();\n  if (nativeHistory && nativeHistory.replaceState) {\n    nativeHistory.replaceState(null, nativeDoc.title, nativeLoc.pathname + nativeLoc.search);\n  } else {\n    nativeLoc.hash = '';\n  }\n}\n\nfunction removeSearch(sdk) {\n  var nativeHistory = sdk.token.parseFromUrl._getHistory();\n  var nativeDoc = sdk.token.parseFromUrl._getDocument();\n  var nativeLoc = sdk.token.parseFromUrl._getLocation();\n  if (nativeHistory && nativeHistory.replaceState) {\n    nativeHistory.replaceState(null, nativeDoc.title, nativeLoc.pathname + nativeLoc.hash);\n  } else {\n    nativeLoc.search = '';\n  }\n}\n\nexport function getResponseMode(sdk): 'query' | 'fragment' {\n  // https://openid.net/specs/openid-connect-core-1_0.html#Authentication\n  var defaultResponseMode = sdk.options.pkce ? 'query' : 'fragment';\n  var responseMode = sdk.options.responseMode || defaultResponseMode;\n  return responseMode;\n}\n\nexport function parseOAuthResponseFromUrl(sdk, options: string | ParseFromUrlOptions): OAuthResponse {\n  options = options || {};\n  if (isString(options)) {\n    options = { url: options } as ParseFromUrlOptions;\n  } else {\n    options = options as ParseFromUrlOptions;\n  }\n\n  var url = options.url;\n  var responseMode = options.responseMode || getResponseMode(sdk);\n  var nativeLoc = sdk.token.parseFromUrl._getLocation();\n  var paramStr;\n\n  if (responseMode === 'query') {\n    paramStr = url ? url.substring(url.indexOf('?')) : nativeLoc.search;\n  } else {\n    paramStr = url ? url.substring(url.indexOf('#')) : nativeLoc.hash;\n  }\n\n  if (!paramStr) {\n    throw new AuthSdkError('Unable to parse a token from the url');\n  }\n\n  return urlParamsToObject(paramStr);\n}\n\nexport function cleanOAuthResponseFromUrl(sdk, options: ParseFromUrlOptions) {\n  // Clean hash or search from the url\n  const responseMode = options.responseMode || getResponseMode(sdk);\n  responseMode === 'query' ? removeSearch(sdk) : removeHash(sdk);\n}\n\nexport async function parseFromUrl(sdk, options?: string | ParseFromUrlOptions): Promise<TokenResponse> {\n  options = options || {};\n  if (isString(options)) {\n    options = { url: options } as ParseFromUrlOptions;\n  } else {\n    options = options as ParseFromUrlOptions;\n  }\n\n  const res: OAuthResponse = parseOAuthResponseFromUrl(sdk, options);\n  const state = res.state;\n  const oauthParams: TransactionMeta = sdk.transactionManager.load({\n    state\n  });\n  if (!oauthParams) {\n    if (sdk.options.pkce) {\n      // eslint-disable-next-line max-len\n      throw new AuthSdkError('Could not load PKCE codeVerifier from storage. This may indicate the auth flow has already completed or multiple auth flows are executing concurrently.', undefined);\n    }\n    throw new AuthSdkError('Unable to retrieve OAuth redirect params from storage');\n  }\n  const urls: CustomUrls = oauthParams.urls as CustomUrls;\n  delete oauthParams.urls;\n\n  if (!options.url) {\n    // Clean hash or search from the url\n    cleanOAuthResponseFromUrl(sdk, options);\n  }\n\n  return handleOAuthResponse(sdk, oauthParams, res, urls)\n    .catch(err => {\n      if (!isInteractionRequiredError(err)) {\n        sdk.transactionManager.clear({\n          state\n        });\n      }\n      throw err;\n    })\n    .then(res => {\n      sdk.transactionManager.clear({\n        state\n      });\n      return res;\n    });\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { getOAuthUrls } from './util/oauth';\nimport { isSameRefreshToken } from './util/refreshToken';\nimport { OktaAuthOAuthInterface, TokenParams, RefreshToken, Tokens } from './types';\nimport { handleOAuthResponse } from './handleOAuthResponse';\nimport { postRefreshToken } from './endpoints/token';\nimport { isRefreshTokenInvalidError } from './util/errors';\n\nexport async function renewTokensWithRefresh(\n  sdk: OktaAuthOAuthInterface,\n  tokenParams: TokenParams,\n  refreshTokenObject: RefreshToken\n): Promise<Tokens> {\n  const { clientId } = sdk.options;\n  if (!clientId) {\n    throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to renew tokens');\n  }\n\n  try {\n    const renewTokenParams: TokenParams = Object.assign({}, tokenParams, {\n      clientId,\n    });\n    const tokenResponse = await postRefreshToken(sdk, renewTokenParams, refreshTokenObject);\n    const urls = getOAuthUrls(sdk, tokenParams);\n    const { tokens } = await handleOAuthResponse(sdk, renewTokenParams, tokenResponse, urls);\n\n    // Support rotating refresh tokens\n    const { refreshToken } = tokens;\n    if (refreshToken && !isSameRefreshToken(refreshToken, refreshTokenObject)) {\n      sdk.tokenManager.updateRefreshToken(refreshToken);\n    }\n\n    return tokens;\n  }\n  catch (err) {\n    if (isRefreshTokenInvalidError(err)) {\n      // if the refresh token is invalid, remove it from storage\n      sdk.tokenManager.removeRefreshToken();\n    }\n    throw err;\n  }\n}\n","import { RefreshToken } from '../types';\nimport { isAuthApiError } from '../../errors';\n\nexport function isSameRefreshToken(a: RefreshToken, b: RefreshToken) {\n  return (a.refreshToken === b.refreshToken);\n}\n\nexport function isRefreshTokenError(err: Error) {\n  if (!isAuthApiError(err)) {\n    return false;\n  }\n\n  if (!err.xhr || !err.xhr.responseJSON) {\n    return false;\n  }\n\n  const { responseJSON } = err.xhr;\n  if (responseJSON.error === 'invalid_grant') {\n    return true;\n  }\n\n  return false;\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { OktaAuthOAuthInterface, Token, Tokens, isAccessToken, AccessToken, IDToken, isIDToken } from './types';\nimport { getWithoutPrompt } from './getWithoutPrompt';\nimport { renewTokensWithRefresh } from './renewTokensWithRefresh';\n\nfunction throwInvalidTokenError() {\n  throw new AuthSdkError(\n    'Renew must be passed a token with an array of scopes and an accessToken or idToken'\n  );\n}\n\n// Multiple tokens may have come back. Return only the token which was requested.\nfunction getSingleToken(originalToken: Token, tokens: Tokens) {\n  if (isIDToken(originalToken)) {\n    return tokens.idToken;\n  }\n  if (isAccessToken(originalToken)) {\n    return tokens.accessToken;\n  }\n  throwInvalidTokenError();\n}\n\n// If we have a refresh token, renew using that, otherwise getWithoutPrompt\nexport async function renewToken(sdk: OktaAuthOAuthInterface, token: Token): Promise<Token | undefined> {\n  if (!isIDToken(token) && !isAccessToken(token)) {\n    throwInvalidTokenError();\n  }\n\n  let tokens = sdk.tokenManager.getTokensSync();\n  if (tokens.refreshToken) {\n    tokens = await renewTokensWithRefresh(sdk, {\n      scopes: token.scopes,\n    }, tokens.refreshToken);\n    return getSingleToken(token, tokens);\n  }\n\n  var responseType;\n  if (sdk.options.pkce) {\n    responseType = 'code';\n  } else if (isAccessToken(token)) {\n    responseType = 'token';\n  } else {\n    responseType = 'id_token';\n  }\n\n  const { scopes, authorizeUrl, userinfoUrl, issuer } = token as (AccessToken & IDToken);\n  return getWithoutPrompt(sdk, {\n    responseType,\n    scopes,\n    authorizeUrl,\n    userinfoUrl,\n    issuer\n  })\n    .then(function (res) {\n      return getSingleToken(token, res.tokens);\n    });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { RenewTokensParams, Tokens } from './types';\nimport { getWithoutPrompt } from './getWithoutPrompt';\nimport { renewTokensWithRefresh } from './renewTokensWithRefresh';\nimport { getDefaultTokenParams } from './util';\n\n// If we have a refresh token, renew using that, otherwise getWithoutPrompt\n// eslint-disable-next-line complexity\nexport async function renewTokens(sdk, options?: RenewTokensParams): Promise<Tokens> {\n  const tokens = options?.tokens ?? sdk.tokenManager.getTokensSync();\n  if (tokens.refreshToken) {\n    return renewTokensWithRefresh(sdk, options || {}, tokens.refreshToken);\n  }\n\n  if (!tokens.accessToken && !tokens.idToken) {\n    throw new AuthSdkError('renewTokens() was called but there is no existing token');\n  }\n\n  const accessToken = tokens.accessToken || {};\n  const idToken = tokens.idToken || {};\n  const scopes = accessToken.scopes || idToken.scopes;\n  if (!scopes) {\n    throw new AuthSdkError('renewTokens: invalid tokens: could not read scopes');\n  }\n  const authorizeUrl = accessToken.authorizeUrl || idToken.authorizeUrl;\n  if (!authorizeUrl) {\n    throw new AuthSdkError('renewTokens: invalid tokens: could not read authorizeUrl');\n  }\n  const userinfoUrl = accessToken.userinfoUrl || sdk.options.userinfoUrl;\n  const issuer = idToken.issuer || sdk.options.issuer;\n\n  // Get tokens using the SSO cookie\n  options = Object.assign({\n    scopes,\n    authorizeUrl,\n    userinfoUrl,\n    issuer\n  }, options);\n\n  if (sdk.options.pkce) {\n    options.responseType = 'code';\n  } else {\n    const { responseType } = getDefaultTokenParams(sdk);\n    options.responseType = responseType;\n  }\n\n  return getWithoutPrompt(sdk, options)\n    .then(res => res.tokens);\n    \n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n/* eslint complexity:[0,8] */\nimport { post } from '../http';\nimport { toQueryString } from '../util';\nimport {\n  getOAuthUrls,\n} from './util/oauth';\nimport { btoa } from '../crypto';\nimport AuthSdkError from '../errors/AuthSdkError';\nimport {\n  OktaAuthOAuthInterface,\n  RevocableToken,\n  AccessToken,\n  RefreshToken\n} from './types';\n\n// refresh tokens have precedence to be revoked if no token is specified\nexport async function revokeToken(sdk: OktaAuthOAuthInterface, token: RevocableToken): Promise<any> {\n  let accessToken = '';\n  let refreshToken = '';\n  if (token) { \n      accessToken = (token as AccessToken).accessToken;\n      refreshToken = (token as RefreshToken).refreshToken;  \n  }\n  if(!accessToken && !refreshToken) { \n    throw new AuthSdkError('A valid access or refresh token object is required');\n  }\n  var clientId = sdk.options.clientId;\n  var clientSecret = sdk.options.clientSecret;\n  if (!clientId) {\n    throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to revoke a token');\n  }\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  var revokeUrl = getOAuthUrls(sdk).revokeUrl!;\n  var args = toQueryString({\n    // eslint-disable-next-line camelcase\n    token_type_hint: refreshToken ? 'refresh_token' : 'access_token', \n    token: refreshToken || accessToken,\n  }).slice(1);\n  var creds = clientSecret ? btoa(`${clientId}:${clientSecret}`) : btoa(clientId);\n  return post(sdk, revokeUrl, args, {\n    headers: {\n      'Content-Type': 'application/x-www-form-urlencoded',\n      'Authorization': 'Basic ' + creds\n    }\n  });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { AuthSdkError } from '../errors';\nimport { getWellKnown } from './endpoints/well-known';\nimport { post } from '../http';\nimport { toQueryString } from '../util';\nimport { btoa } from '../crypto';\nimport { Token, TokenKind } from './types';\n\nconst hintMap = {\n  accessToken: 'access_token',\n  idToken: 'id_token',\n  refreshToken: 'refresh_token'\n};\n\n/* eslint complexity: [2, 9] */\nexport async function oidcIntrospect (sdk, kind: TokenKind, token?: Token) {\n  let issuer: string;\n  let clientId: string = sdk.options.clientId;\n  let clientSecret: string | undefined = sdk.options.clientSecret;\n\n  if (!token) {\n    token = sdk.tokenManager.getTokens()[kind];\n  }\n\n  if (!token) {\n    throw new AuthSdkError(`unable to find ${kind} in storage or fn params`);\n  }\n\n  if (kind !== TokenKind.ACCESS) {\n    issuer = (token as any)?.issuer;\n  }\n  else {\n    issuer = (token as any)?.claims?.iss;\n  }\n  issuer = issuer || sdk.options.issuer;\n\n  if (!clientId) {\n    throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to introspect a token');\n  }\n  if (!issuer) {\n    throw new AuthSdkError('Unable to find issuer');\n  }\n\n  const { introspection_endpoint: introspectUrl }  = await getWellKnown(sdk, issuer);\n  const authHeader = clientSecret ? btoa(`${clientId}:${clientSecret}`) : btoa(clientId);\n  const args = toQueryString({\n    // eslint-disable-next-line camelcase\n    token_type_hint: hintMap[kind],\n    token: token[kind]    // extract raw token string from token object\n  }).slice(1);\n  return post(sdk, introspectUrl, args, {\n    headers: {\n      'Content-Type': 'application/x-www-form-urlencoded',\n      'Authorization': 'Basic ' + authHeader\n    }\n  });\n}\n","/* eslint-disable complexity */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../../errors';\nimport { OktaAuthOAuthInterface, EnrollAuthenticatorOptions } from '../types';\nimport { getDefaultEnrollAuthenticatorParams } from './defaultEnrollAuthenticatorParams';\n\nfunction prepareParams(\n  params: EnrollAuthenticatorOptions\n): EnrollAuthenticatorOptions {\n  params = {\n    ...params,\n    // forced params:\n    responseType: 'none',\n    prompt: 'enroll_authenticator',\n    maxAge: 0,\n  };\n\n  if (!params.enrollAmrValues) {\n    throw new AuthSdkError('enroll_amr_values must be specified');\n  }\n  if (!params.acrValues) {\n    // `acr_values` is required and should equal 'urn:okta:2fa:any:ifpossible'\n    // But this can be changed in future\n    throw new AuthSdkError('acr_values must be specified');\n  }\n\n  // `scope`, `nonce` must be omitted\n  delete params.scopes;\n  delete params.nonce;\n\n  return params;\n}\n\n// Prepares params for a call to /authorize\nexport function prepareEnrollAuthenticatorParams(\n  sdk: OktaAuthOAuthInterface,\n  options: EnrollAuthenticatorOptions\n): EnrollAuthenticatorOptions {\n  return prepareParams({\n    ...getDefaultEnrollAuthenticatorParams(sdk),\n    ...options\n  });\n}\n","\n/* global window */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { generateState } from './oauth';\nimport { OktaAuthOAuthInterface, TokenParams } from '../types';\nimport { isBrowser } from '../../features';\nimport { removeNils } from '../../util';\n\nexport function getDefaultEnrollAuthenticatorParams(sdk: OktaAuthOAuthInterface): TokenParams {\n  const {\n    clientId,\n    redirectUri,\n    responseMode,\n    state,\n  } = sdk.options;\n  const defaultRedirectUri = isBrowser() ? window.location.href : undefined;\n  return removeNils({\n    clientId,\n    redirectUri: redirectUri || defaultRedirectUri,\n    responseMode,\n    state: state || generateState(),\n    responseType: 'none',\n    prompt: 'enroll_authenticator',\n  });\n}","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { OktaAuthOAuthInterface, EnrollAuthenticatorOptions } from './types';\nimport { clone } from '../util';\nimport { prepareEnrollAuthenticatorParams, createEnrollAuthenticatorMeta } from './util';\nimport { buildAuthorizeParams } from './endpoints/authorize';\n\nexport function enrollAuthenticator(\n  sdk: OktaAuthOAuthInterface, \n  options: EnrollAuthenticatorOptions\n): void {\n  options = clone(options) || {};\n\n  const params = prepareEnrollAuthenticatorParams(sdk, options);\n  const meta = createEnrollAuthenticatorMeta(sdk, params);\n  const requestUrl = meta.urls.authorizeUrl + buildAuthorizeParams(params);\n  sdk.transactionManager.save(meta);\n  if (sdk.options.setLocation) {\n    sdk.options.setLocation(requestUrl);\n  } else {\n    window.location.assign(requestUrl);\n  }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { OAuthTransactionMeta, OktaAuthOAuthInterface, EnrollAuthenticatorOptions } from '../types';\nimport { getOAuthUrls } from './oauth';\n\nexport function createEnrollAuthenticatorMeta(\n  sdk: OktaAuthOAuthInterface, \n  params: EnrollAuthenticatorOptions\n): OAuthTransactionMeta {\n  const issuer = sdk.options.issuer!;\n  const urls = getOAuthUrls(sdk, params);\n  const oauthMeta: OAuthTransactionMeta = {\n    issuer,\n    urls,\n    clientId: params.clientId!,\n    redirectUri: params.redirectUri!,\n    responseType: params.responseType!,\n    responseMode: params.responseMode!,\n    state: params.state!,\n    acrValues: params.acrValues,\n    enrollAmrValues: params.enrollAmrValues,\n  };\n\n  return oauthMeta;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { PromiseQueue } from '../../util';\nimport { decodeToken } from '../decodeToken';\nimport { exchangeCodeForTokens } from '../exchangeCodeForTokens';\nimport { getUserInfo } from '../getUserInfo';\nimport { getWithoutPrompt } from '../getWithoutPrompt';\nimport { getWithPopup } from '../getWithPopup';\nimport { getWithRedirect } from '../getWithRedirect';\nimport { parseFromUrl } from '../parseFromUrl';\nimport { renewToken } from '../renewToken';\nimport { renewTokens } from '../renewTokens';\nimport { renewTokensWithRefresh } from '../renewTokensWithRefresh';\nimport { revokeToken } from '../revokeToken';\nimport { oidcIntrospect } from '../introspect';\nimport {\n  AccessToken,\n  CustomUserClaims,\n  GetWithRedirectFunction,\n  IDToken,\n  OktaAuthOAuthInterface,\n  ParseFromUrlInterface,\n  TokenAPI,\n  UserClaims,\n  Endpoints,\n} from '../types';\nimport { isLoginRedirect, prepareTokenParams } from '../util';\nimport { verifyToken } from '../verifyToken';\nimport { enrollAuthenticator } from '../enrollAuthenticator';\n\n// Factory\nexport function createTokenAPI(sdk: OktaAuthOAuthInterface, queue: PromiseQueue): TokenAPI {\n  const useQueue = (method) => {\n    return PromiseQueue.prototype.push.bind(queue, method, null);\n  };\n\n  const getWithRedirectFn = useQueue(getWithRedirect.bind(null, sdk)) as GetWithRedirectFunction;\n\n  // eslint-disable-next-line max-len\n  const parseFromUrlFn = useQueue(parseFromUrl.bind(null, sdk)) as ParseFromUrlInterface;\n  const parseFromUrlApi: ParseFromUrlInterface = Object.assign(parseFromUrlFn, {\n    // This is exposed so we can mock getting window.history in our tests\n    _getHistory: function() {\n      return window.history;\n    },\n\n    // This is exposed so we can mock getting window.location in our tests\n    _getLocation: function() {\n      return window.location;\n    },\n\n    // This is exposed so we can mock getting window.document in our tests\n    _getDocument: function() {\n      return window.document;\n    }\n  });\n\n  const token: TokenAPI ={\n    prepareTokenParams: prepareTokenParams.bind(null, sdk),\n    exchangeCodeForTokens: exchangeCodeForTokens.bind(null, sdk),\n    getWithoutPrompt: getWithoutPrompt.bind(null, sdk),\n    getWithPopup: getWithPopup.bind(null, sdk),\n    getWithRedirect: getWithRedirectFn,\n    parseFromUrl: parseFromUrlApi,\n    decode: decodeToken,\n    revoke: revokeToken.bind(null, sdk),\n    renew: renewToken.bind(null, sdk),\n    renewTokensWithRefresh: renewTokensWithRefresh.bind(null, sdk),\n    renewTokens: renewTokens.bind(null, sdk),\n    getUserInfo: <C extends CustomUserClaims = CustomUserClaims>(\n      accessTokenObject: AccessToken,\n      idTokenObject: IDToken\n    ): Promise<UserClaims<C>> => {\n      return getUserInfo(sdk, accessTokenObject, idTokenObject);\n    },\n    verify: verifyToken.bind(null, sdk),\n    isLoginRedirect: isLoginRedirect.bind(null, sdk),\n    introspect: oidcIntrospect.bind(null, sdk),\n  };\n\n  // Wrap certain async token API methods using PromiseQueue to avoid issues with concurrency\n  // 'getWithRedirect' and 'parseFromUrl' are already wrapped\n  const toWrap = [\n    'getWithoutPrompt',\n    'getWithPopup',\n    'revoke',\n    'renew',\n    'renewTokensWithRefresh',\n    'renewTokens'\n  ];\n  toWrap.forEach(key => {\n    token[key] = useQueue(token[key]);\n  });\n\n  return token;\n}\n\nexport function createEndpoints(sdk: OktaAuthOAuthInterface): Endpoints {\n  return {\n    authorize: {\n      enrollAuthenticator: enrollAuthenticator.bind(null, sdk),\n    }\n  };\n}\n","/* eslint-disable complexity */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { isFunction } from '../util';\nimport { AuthSdkError, OAuthError } from '../errors';\nimport { httpRequest } from '../http';\nimport { AccessToken, IDToken, UserClaims, isAccessToken, isIDToken, CustomUserClaims } from './types';\n\nexport async function getUserInfo<T extends CustomUserClaims = CustomUserClaims>(\n  sdk, accessTokenObject: AccessToken,\n  idTokenObject: IDToken\n): Promise<UserClaims<T>> {\n  // If token objects were not passed, attempt to read from the TokenManager\n  if (!accessTokenObject) {\n    accessTokenObject = (await sdk.tokenManager.getTokens()).accessToken as AccessToken;\n  }\n  if (!idTokenObject) {\n    idTokenObject = (await sdk.tokenManager.getTokens()).idToken as IDToken;\n  }\n\n  if (!accessTokenObject || !isAccessToken(accessTokenObject)) {\n    return Promise.reject(new AuthSdkError('getUserInfo requires an access token object'));\n  }\n\n  if (!idTokenObject || !isIDToken(idTokenObject)) {\n    return Promise.reject(new AuthSdkError('getUserInfo requires an ID token object'));\n  }\n\n  return httpRequest(sdk, {\n    url: accessTokenObject.userinfoUrl,\n    method: 'GET',\n    accessToken: accessTokenObject.accessToken\n  })\n    .then(userInfo => {\n      // Only return the userinfo response if subjects match to mitigate token substitution attacks\n      if (userInfo.sub === idTokenObject.claims.sub) {\n        return userInfo;\n      }\n      return Promise.reject(new AuthSdkError('getUserInfo request was rejected due to token mismatch'));\n    })\n    .catch(function (err) {\n      if (err.xhr && (err.xhr.status === 401 || err.xhr.status === 403)) {\n        var authenticateHeader;\n        if (err.xhr.headers && isFunction(err.xhr.headers.get) && err.xhr.headers.get('WWW-Authenticate')) {\n          authenticateHeader = err.xhr.headers.get('WWW-Authenticate');\n        } else if (isFunction(err.xhr.getResponseHeader)) {\n          authenticateHeader = err.xhr.getResponseHeader('WWW-Authenticate');\n        }\n        if (authenticateHeader) {\n          var errorMatches = authenticateHeader.match(/error=\"(.*?)\"/) || [];\n          var errorDescriptionMatches = authenticateHeader.match(/error_description=\"(.*?)\"/) || [];\n          var error = errorMatches[1];\n          var errorDescription = errorDescriptionMatches[1];\n          if (error && errorDescription) {\n            err = new OAuthError(error, errorDescription);\n          }\n        }\n      }\n      throw err;\n    });\n}\n","/* eslint-disable complexity */\n\nimport { AuthSdkError } from '../../errors';\nimport { isAccessToken, isIDToken, isRefreshToken, Token, TokenType } from '../../oidc/types';\n\nexport function validateToken(token: Token, type?: TokenType) {\n  if (!isIDToken(token) && !isAccessToken(token) && !isRefreshToken(token)) {\n    throw new AuthSdkError(\n      'Token must be an Object with scopes, expiresAt, and one of: an idToken, accessToken, or refreshToken property'\n    );\n  }\n  \n  if (type === 'accessToken' && !isAccessToken(token)) {\n    throw new AuthSdkError('invalid accessToken');\n  } \n  if (type === 'idToken' && !isIDToken(token)) {\n    throw new AuthSdkError('invalid idToken');\n  }\n\n  if (type === 'refreshToken' && !isRefreshToken(token)) {\n    throw new AuthSdkError('invalid refreshToken');\n  }\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport default class SdkClock {\n  localOffset: number;\n\n  constructor(localOffset) {\n    // Calculated local clock offset from server time (in milliseconds). Can be positive or negative.\n    this.localOffset = parseInt(localOffset || 0);\n  }\n\n  // factory method. Create an instance of a clock from current context.\n  static create(/* sdk, options */): SdkClock {\n    // TODO: calculate localOffset\n    var localOffset = 0;\n    return new SdkClock(localOffset);\n  }\n\n  // Return the current time (in seconds)\n  now() {\n    var now = (Date.now() + this.localOffset) / 1000;\n    return now;\n  }\n}\n","/* eslint-disable max-len */\nimport { StorageProvider } from '../../storage/types';\nimport { TokenManagerOptions } from './options';\nimport { AccessToken, IDToken, RefreshToken, Token, Tokens, TokenType } from './Token';\n\nexport interface TokenManagerError {\n  errorSummary: string;\n  errorCode: string;\n  message: string;\n  name: string;\n  tokenKey: string;\n}\n\nexport declare type AccessTokenCallback = (key: string, token: AccessToken) => void;\nexport declare type IDTokenCallback = (key: string, token: IDToken) => void;\nexport declare type RefreshTokenCallback = (key: string, token: RefreshToken) => void;\n\nexport const EVENT_EXPIRED = 'expired';\nexport const EVENT_RENEWED = 'renewed';\nexport const EVENT_ADDED = 'added';\nexport const EVENT_REMOVED = 'removed';\nexport const EVENT_ERROR = 'error';\nexport const EVENT_SET_STORAGE = 'set_storage';\n\nexport declare type TokenManagerErrorEventHandler = (error: TokenManagerError) => void;\nexport declare type TokenManagerEventHandler = (key: string, token: Token) => void;\nexport declare type TokenManagerRenewEventHandler = (key: string, token: Token, oldtoken: Token) => void;\nexport declare type TokenManagerSetStorageEventHandler = (storage: Tokens) => void;\n\nexport declare type TokenManagerAnyEventHandler = TokenManagerErrorEventHandler | TokenManagerRenewEventHandler | TokenManagerSetStorageEventHandler | TokenManagerEventHandler;\nexport declare type TokenManagerAnyEvent = typeof EVENT_RENEWED | typeof EVENT_ERROR | typeof EVENT_SET_STORAGE | typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED;\n\n// only add methods needed internally\nexport interface TokenManagerInterface {\n  on(event: typeof EVENT_RENEWED, handler: TokenManagerRenewEventHandler, context?: object): void;\n  on(event: typeof EVENT_ERROR, handler: TokenManagerErrorEventHandler, context?: object): void;\n  on(event: typeof EVENT_SET_STORAGE, handler: TokenManagerSetStorageEventHandler, context?: object): void;\n  on(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, handler: TokenManagerEventHandler, context?: object): void;\n\n  off(event: typeof EVENT_RENEWED, handler?: TokenManagerRenewEventHandler): void;\n  off(event: typeof EVENT_ERROR, handler?: TokenManagerErrorEventHandler): void;\n  off(event: typeof EVENT_SET_STORAGE, handler?: TokenManagerSetStorageEventHandler): void;\n  off(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, handler?: TokenManagerEventHandler): void;\n\n  clear(): void;\n  setExpireEventTimeout(key: string, token: Token): void;\n  clearExpireEventTimeout(key: string): void;\n  clearExpireEventTimeoutAll(): void;\n  emitAdded(key: string, token: Token): void;\n  emitError(error: Error): void;\n  emitRemoved(key: string, token: Token): void;\n  emitRenewed(key: string, token: Token, oldToken?: Token): void;\n  renew(key: string): Promise<Token | undefined>;\n  remove(key: string): void;\n  hasExpired(token: Token): boolean;\n  getExpireTime(token: Token): number;\n\n  get(key): Promise<Token | undefined>;\n  getSync(key): Token | undefined;\n  getTokens(): Promise<Tokens>;\n  getTokensSync(): Tokens;\n  setTokens({ accessToken, idToken, refreshToken }: Tokens, accessTokenCb?: AccessTokenCallback, idTokenCb?: IDTokenCallback, refreshTokenCb?: RefreshTokenCallback): void;\n  getStorageKeyByType(type: TokenType): string;\n  add(key: any, token: Token): void;\n  updateRefreshToken(token: RefreshToken);\n  removeRefreshToken(): void;\n  clearPendingRemoveTokens(): void;\n\n  getOptions(): TokenManagerOptions;\n  getStorage(): StorageProvider;\n\n  start();\n  stop();\n  isStarted(): boolean;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { removeNils, clone } from '../util';\nimport { AuthSdkError } from '../errors';\nimport { validateToken  } from '../oidc/util';\nimport { isLocalhost, isIE11OrLess } from '../features';\nimport SdkClock from '../clock';\nimport {\n  Token, \n  Tokens, \n  TokenType, \n  TokenManagerOptions, \n  isIDToken, \n  isAccessToken,\n  isRefreshToken,\n  TokenManagerErrorEventHandler,\n  TokenManagerSetStorageEventHandler,\n  TokenManagerRenewEventHandler,\n  TokenManagerEventHandler,\n  TokenManagerInterface,\n  RefreshToken,\n  AccessTokenCallback,\n  IDTokenCallback,\n  RefreshTokenCallback,\n  EVENT_RENEWED,\n  EVENT_ADDED,\n  EVENT_ERROR,\n  EVENT_EXPIRED,\n  EVENT_REMOVED,\n  EVENT_SET_STORAGE,\n  TokenManagerAnyEventHandler,\n  TokenManagerAnyEvent,\n  OktaAuthOAuthInterface\n} from './types';\nimport { REFRESH_TOKEN_STORAGE_KEY, TOKEN_STORAGE_NAME } from '../constants';\nimport { EventEmitter } from '../base/types';\nimport { StorageOptions, StorageProvider, StorageType } from '../storage/types';\n\nconst DEFAULT_OPTIONS = {\n  // TODO: remove in next major version - OKTA-473815\n  autoRenew: true,\n  autoRemove: true,\n  syncStorage: true,\n  // --- //\n  clearPendingRemoveTokens: true,\n  storage: undefined, // will use value from storageManager config\n  expireEarlySeconds: 30,\n  storageKey: TOKEN_STORAGE_NAME\n};\n\ninterface TokenManagerState {\n  expireTimeouts: Record<string, unknown>;\n  renewPromise: Promise<Token | undefined> | null;\n  started?: boolean;\n}\nfunction defaultState(): TokenManagerState {\n  return {\n    expireTimeouts: {},\n    renewPromise: null\n  };\n}\nexport class TokenManager implements TokenManagerInterface {\n  private sdk: OktaAuthOAuthInterface;\n  private clock: SdkClock;\n  private emitter: EventEmitter;\n  private storage: StorageProvider;\n  private state: TokenManagerState;\n  private options: TokenManagerOptions;\n\n  on(event: typeof EVENT_RENEWED, handler: TokenManagerRenewEventHandler, context?: object): void;\n  on(event: typeof EVENT_ERROR, handler: TokenManagerErrorEventHandler, context?: object): void;\n  on(event: typeof EVENT_SET_STORAGE, handler: TokenManagerSetStorageEventHandler, context?: object): void;\n  on(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, \n    handler: TokenManagerEventHandler, context?: object): void;\n  on(event: TokenManagerAnyEvent, handler: TokenManagerAnyEventHandler, context?: object): void {\n    if (context) {\n      this.emitter.on(event, handler, context);\n    } else {\n      this.emitter.on(event, handler);\n    }\n  }\n\n  off(event: typeof EVENT_RENEWED, handler?: TokenManagerRenewEventHandler): void;\n  off(event: typeof EVENT_ERROR, handler?: TokenManagerErrorEventHandler): void;\n  off(event: typeof EVENT_SET_STORAGE, handler?: TokenManagerSetStorageEventHandler): void;\n  off(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, \n    handler?: TokenManagerEventHandler): void;\n  off(event: TokenManagerAnyEvent, handler?: TokenManagerAnyEventHandler): void {\n    if (handler) {\n      this.emitter.off(event, handler);\n    } else {\n      this.emitter.off(event);\n    }\n  }\n\n  // eslint-disable-next-line complexity\n  constructor(sdk: OktaAuthOAuthInterface, options: TokenManagerOptions = {}) {\n    this.sdk = sdk;\n    this.emitter = (sdk as any).emitter;\n    if (!this.emitter) {\n      throw new AuthSdkError('Emitter should be initialized before TokenManager');\n    }\n    \n    options = Object.assign({}, DEFAULT_OPTIONS, removeNils(options));\n    if (!isLocalhost()) {\n      options.expireEarlySeconds = DEFAULT_OPTIONS.expireEarlySeconds;\n    }\n\n    this.options = options;\n\n    const storageOptions: StorageOptions = removeNils({\n      storageKey: options.storageKey,\n      secure: options.secure,\n    });\n    if (typeof options.storage === 'object') {\n      // A custom storage provider must implement getItem(key) and setItem(key, val)\n      storageOptions.storageProvider = options.storage;\n    } else if (options.storage) {\n      storageOptions.storageType = options.storage as StorageType;\n    }\n\n    this.storage = sdk.storageManager.getTokenStorage({...storageOptions, useSeparateCookies: true});\n    this.clock = SdkClock.create(/* sdk, options */);\n    this.state = defaultState();\n  }\n\n  start() {\n    if (this.options.clearPendingRemoveTokens) {\n      this.clearPendingRemoveTokens();\n    }\n    this.setExpireEventTimeoutAll();\n    this.state.started = true;\n  }\n  \n  stop() {\n    this.clearExpireEventTimeoutAll();\n    this.state.started = false;\n  }\n\n  isStarted() {\n    return !!this.state.started;\n  }\n\n  getOptions(): TokenManagerOptions {\n    return clone(this.options);\n  }\n  \n  getExpireTime(token) {\n    const expireEarlySeconds = this.options.expireEarlySeconds || 0;\n    var expireTime = token.expiresAt - expireEarlySeconds;\n    return expireTime;\n  }\n  \n  hasExpired(token) {\n    var expireTime = this.getExpireTime(token);\n    return expireTime <= this.clock.now();\n  }\n  \n  emitExpired(key, token) {\n    this.emitter.emit(EVENT_EXPIRED, key, token);\n  }\n  \n  emitRenewed(key, freshToken, oldToken) {\n    this.emitter.emit(EVENT_RENEWED, key, freshToken, oldToken);\n  }\n  \n  emitAdded(key, token) {\n    this.emitter.emit(EVENT_ADDED, key, token);\n  }\n  \n  emitRemoved(key, token?) {\n    this.emitter.emit(EVENT_REMOVED, key, token);\n  }\n  \n  emitError(error) {\n    this.emitter.emit(EVENT_ERROR, error);\n  }\n  \n  clearExpireEventTimeout(key) {\n    clearTimeout(this.state.expireTimeouts[key] as any);\n    delete this.state.expireTimeouts[key];\n  \n    // Remove the renew promise (if it exists)\n    this.state.renewPromise = null;\n  }\n  \n  clearExpireEventTimeoutAll() {\n    var expireTimeouts = this.state.expireTimeouts;\n    for (var key in expireTimeouts) {\n      if (!Object.prototype.hasOwnProperty.call(expireTimeouts, key)) {\n        continue;\n      }\n      this.clearExpireEventTimeout(key);\n    }\n  }\n  \n  setExpireEventTimeout(key, token) {\n    if (isRefreshToken(token)) {\n      return;\n    }\n\n    var expireTime = this.getExpireTime(token);\n    var expireEventWait = Math.max(expireTime - this.clock.now(), 0) * 1000;\n  \n    // Clear any existing timeout\n    this.clearExpireEventTimeout(key);\n  \n    var expireEventTimeout = setTimeout(() => {\n      this.emitExpired(key, token);\n    }, expireEventWait);\n  \n    // Add a new timeout\n    this.state.expireTimeouts[key] = expireEventTimeout;\n  }\n  \n  setExpireEventTimeoutAll() {\n    var tokenStorage = this.storage.getStorage();\n    for(var key in tokenStorage) {\n      if (!Object.prototype.hasOwnProperty.call(tokenStorage, key)) {\n        continue;\n      }\n      var token = tokenStorage[key];\n      this.setExpireEventTimeout(key, token);\n    }\n  }\n  \n  // reset timeouts to setup autoRenew for tokens from other document context (tabs)\n  resetExpireEventTimeoutAll() {\n    this.clearExpireEventTimeoutAll();\n    this.setExpireEventTimeoutAll();\n  }\n  \n  add(key, token: Token) {\n    var tokenStorage = this.storage.getStorage();\n    validateToken(token);\n    tokenStorage[key] = token;\n    this.storage.setStorage(tokenStorage);\n    this.emitSetStorageEvent();\n    this.emitAdded(key, token);\n    this.setExpireEventTimeout(key, token);\n  }\n  \n  getSync(key): Token | undefined {\n    var tokenStorage = this.storage.getStorage();\n    return tokenStorage[key];\n  }\n  \n  async get(key): Promise<Token | undefined> {\n    return this.getSync(key);\n  }\n  \n  getTokensSync(): Tokens {\n    const tokens = {} as Tokens;\n    const tokenStorage = this.storage.getStorage();\n    Object.keys(tokenStorage).forEach(key => {\n      const token = tokenStorage[key];\n      if (isAccessToken(token)) {\n        tokens.accessToken = token;\n      } else if (isIDToken(token)) {\n        tokens.idToken = token;\n      } else if (isRefreshToken(token)) { \n        tokens.refreshToken = token;\n      }\n    });\n    return tokens;\n  }\n  \n  async getTokens(): Promise<Tokens> {\n    return this.getTokensSync();\n  }\n\n  getStorageKeyByType(type: TokenType): string {\n    const tokenStorage = this.storage.getStorage();\n    const key = Object.keys(tokenStorage).filter(key => {\n      const token = tokenStorage[key];\n      return (isAccessToken(token) && type === 'accessToken') \n        || (isIDToken(token) && type === 'idToken')\n        || (isRefreshToken(token) && type === 'refreshToken');\n    })[0];\n    return key;\n  }\n\n  private getTokenType(token: Token): TokenType {\n    if (isAccessToken(token)) {\n      return 'accessToken';\n    }\n    if (isIDToken(token)) {\n      return 'idToken';\n    }\n    if(isRefreshToken(token)) {\n      return 'refreshToken';\n    }\n    throw new AuthSdkError('Unknown token type');\n  }\n\n  // for synchronization of LocalStorage cross tabs for IE11\n  private emitSetStorageEvent() {\n    if (isIE11OrLess()) {\n      const storage = this.storage.getStorage();\n      this.emitter.emit(EVENT_SET_STORAGE, storage);\n    }\n  }\n\n  // used in `SyncStorageService` for synchronization of LocalStorage cross tabs for IE11\n  public getStorage() {\n    return this.storage;\n  }\n\n  setTokens(\n    tokens: Tokens,\n    // TODO: callbacks can be removed in the next major version OKTA-407224\n    accessTokenCb?: AccessTokenCallback, \n    idTokenCb?: IDTokenCallback,\n    refreshTokenCb?: RefreshTokenCallback\n  ): void {\n    const handleTokenCallback = (key, token) => {\n      const type = this.getTokenType(token);\n      if (type === 'accessToken') {\n        accessTokenCb && accessTokenCb(key, token);\n      } else if (type === 'idToken') {\n        idTokenCb && idTokenCb(key, token);\n      } else if (type === 'refreshToken') {\n        refreshTokenCb && refreshTokenCb(key, token);\n      }\n    };\n    const handleAdded = (key, token) => {\n      this.emitAdded(key, token);\n      this.setExpireEventTimeout(key, token);\n      handleTokenCallback(key, token);\n    };\n    const handleRenewed = (key, token, oldToken) => {\n      this.emitRenewed(key, token, oldToken);\n      this.clearExpireEventTimeout(key);\n      this.setExpireEventTimeout(key, token);\n      handleTokenCallback(key, token);\n    };\n    const handleRemoved = (key, token) => {\n      this.clearExpireEventTimeout(key);\n      this.emitRemoved(key, token);\n      handleTokenCallback(key, token);\n    };\n    \n    const types: TokenType[] = ['idToken', 'accessToken', 'refreshToken'];\n    const existingTokens = this.getTokensSync();\n\n    // valid tokens\n    types.forEach((type) => {\n      const token = tokens[type];\n      if (token) {\n        validateToken(token, type);\n      }\n    });\n  \n    // add token to storage\n    const storage = types.reduce((storage, type) => {\n      const token = tokens[type];\n      if (token) {\n        const storageKey = this.getStorageKeyByType(type) || type;\n        storage[storageKey] = token;\n      }\n      return storage;\n    }, {});\n    this.storage.setStorage(storage);\n    this.emitSetStorageEvent();\n\n    // emit event and start expiration timer\n    types.forEach(type => {\n      const newToken = tokens[type];\n      const existingToken = existingTokens[type];\n      const storageKey = this.getStorageKeyByType(type) || type;\n      if (newToken && existingToken) { // renew\n        // call handleRemoved first, since it clears timers\n        handleRemoved(storageKey, existingToken);\n        handleAdded(storageKey, newToken);\n        handleRenewed(storageKey, newToken, existingToken);\n      } else if (newToken) { // add\n        handleAdded(storageKey, newToken);\n      } else if (existingToken) { //remove\n        handleRemoved(storageKey, existingToken);\n      }\n    });\n  }\n  \n  remove(key) {\n    // Clear any listener for this token\n    this.clearExpireEventTimeout(key);\n  \n    var tokenStorage = this.storage.getStorage();\n    var removedToken = tokenStorage[key];\n    delete tokenStorage[key];\n    this.storage.setStorage(tokenStorage);\n    this.emitSetStorageEvent();\n  \n    this.emitRemoved(key, removedToken);\n  }\n  \n  // TODO: this methods is redundant and can be removed in the next major version OKTA-407224\n  async renewToken(token) {\n    return this.sdk.token?.renew(token);\n  }\n  // TODO: this methods is redundant and can be removed in the next major version OKTA-407224\n  validateToken(token: Token) {\n    return validateToken(token);\n  }\n\n  // TODO: renew method should take no param, change in the next major version OKTA-407224\n  renew(key): Promise<Token | undefined> {\n    // Multiple callers may receive the same promise. They will all resolve or reject from the same request.\n    if (this.state.renewPromise) {\n      return this.state.renewPromise;\n    }\n\n    try {\n      var token = this.getSync(key);\n      let shouldRenew = token !== undefined;\n      // explicitly check if key='accessToken' because token keys are not guaranteed (long story, features dragons)\n      if (!token && key === 'accessToken') {\n        // attempt token renewal if refresh token is present (improves consistency of autoRenew)\n        const refreshKey = this.getStorageKeyByType('refreshToken');\n        const refreshToken = this.getSync(refreshKey);\n        shouldRenew = refreshToken !== undefined;\n      }\n\n      if (!shouldRenew) {\n        throw new AuthSdkError('The tokenManager has no token for the key: ' + key);\n      }\n    }\n    catch (err) {\n      this.emitError(err);\n      return Promise.reject(err);\n    }\n\n    // Remove existing autoRenew timeout\n    this.clearExpireEventTimeout(key);\n  \n    // A refresh token means a replace instead of renewal\n    // Store the renew promise state, to avoid renewing again\n    const renewPromise = this.state.renewPromise = this.sdk.token.renewTokens()\n      .then(tokens => {\n        this.setTokens(tokens);\n\n        // return accessToken in case where access token doesn't exist\n        // but refresh token exists\n        if (!token && key === 'accessToken') {\n          const accessToken = tokens['accessToken'];\n          this.emitRenewed(key, accessToken, null);\n          return accessToken;\n        }\n\n        // resolve token based on the key\n        const tokenType = this.getTokenType(token!);\n        return tokens[tokenType];\n      })\n      .catch(err => {\n        // If renew fails, remove token from storage and emit error\n        this.remove(key);\n        err.tokenKey = key;\n        this.emitError(err);\n        throw err;\n      })\n      .finally(() => {\n        // Remove existing promise key\n        this.state.renewPromise = null;\n      });\n  \n    return renewPromise;\n  }\n  \n  clear() {\n    const tokens = this.getTokensSync();\n    this.clearExpireEventTimeoutAll();\n    this.storage.clearStorage();\n    this.emitSetStorageEvent();\n\n    Object.keys(tokens).forEach(key => {\n      this.emitRemoved(key, tokens[key]);\n    });\n  }\n\n  clearPendingRemoveTokens() {\n    const tokenStorage = this.storage.getStorage();\n    const removedTokens = {};\n    Object.keys(tokenStorage).forEach(key => {\n      if (tokenStorage[key].pendingRemove) {\n        removedTokens[key] = tokenStorage[key];\n        delete tokenStorage[key];\n      }\n    });\n    this.storage.setStorage(tokenStorage);\n    this.emitSetStorageEvent();\n    Object.keys(removedTokens).forEach(key => {\n      this.clearExpireEventTimeout(key);\n      this.emitRemoved(key, removedTokens[key]);\n    });\n  }\n\n  updateRefreshToken(token: RefreshToken) {\n    const key = this.getStorageKeyByType('refreshToken') || REFRESH_TOKEN_STORAGE_KEY;\n\n    // do not emit any event\n    var tokenStorage = this.storage.getStorage();\n    validateToken(token);\n    tokenStorage[key] = token;\n    this.storage.setStorage(tokenStorage);\n    this.emitSetStorageEvent();\n  }\n\n  removeRefreshToken () {\n    const key = this.getStorageKeyByType('refreshToken') || REFRESH_TOKEN_STORAGE_KEY;\n    this.remove(key);\n  }\n\n  addPendingRemoveFlags() {\n    const tokens = this.getTokensSync();\n    Object.keys(tokens).forEach(key => {\n      tokens[key].pendingRemove = true;\n    });\n    this.setTokens(tokens);\n  }\n  \n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport Cookies from 'js-cookie';\nimport AuthSdkError from '../errors/AuthSdkError';\nimport {\n  StorageOptions,\n  CookieOptions,\n  SimpleStorage,\n  StorageType,\n  StorageUtil,\n} from '../storage/types';\nimport { warn } from '../util';\nimport { isIE11OrLess } from '../features';\n\nexport interface CookieStorage extends SimpleStorage {\n  setItem(key: string, value: any, expiresAt?: string | null): void; // can customize expiresAt\n  getItem(key?: string): any; // if no key is passed, all cookies are returned\n  removeItem(key: string); // remove a cookie\n}\n\nexport interface BrowserStorageUtil extends StorageUtil {\n  browserHasLocalStorage(): boolean;\n  browserHasSessionStorage(): boolean;\n  getStorageByType(storageType: StorageType, options: StorageOptions): SimpleStorage;\n  getLocalStorage(): Storage;\n  getSessionStorage(): Storage;\n  getInMemoryStorage(): SimpleStorage;\n  getCookieStorage(options?: StorageOptions): CookieStorage;\n  testStorage(storage: any): boolean;\n  storage: Cookies;\n  inMemoryStore: Record<string, unknown>;\n}\n\n// Building this as an object allows us to mock the functions in our tests\nvar storageUtil: BrowserStorageUtil = {\n\n  // IE11 bug that Microsoft doesn't plan to fix\n  // https://connect.microsoft.com/IE/Feedback/Details/1496040\n  browserHasLocalStorage: function() {\n    try {\n      var storage = this.getLocalStorage();\n      return this.testStorage(storage);\n    } catch (e) {\n      return false;\n    }\n  },\n\n  browserHasSessionStorage: function() {\n    try {\n      var storage = this.getSessionStorage();\n      return this.testStorage(storage);\n    } catch (e) {\n      return false;\n    }\n  },\n\n  testStorageType: function(storageType: StorageType): boolean {\n    var supported = false;\n    switch (storageType) {\n      case 'sessionStorage':\n        supported = this.browserHasSessionStorage();\n        break;\n      case 'localStorage':\n        supported = this.browserHasLocalStorage();\n        break;\n      case 'cookie':\n      case 'memory':\n        supported = true;\n        break;\n      default:\n        supported = false;\n        break;\n    }\n    return supported;\n  },\n\n  getStorageByType: function(storageType: StorageType, options?: StorageOptions): SimpleStorage {\n    let storageProvider;\n    switch (storageType) {\n      case 'sessionStorage':\n        storageProvider = this.getSessionStorage();\n        break;\n      case 'localStorage':\n        storageProvider = this.getLocalStorage();\n        break;\n      case 'cookie':\n        storageProvider = this.getCookieStorage(options);\n        break;\n      case 'memory':\n        storageProvider = this.getInMemoryStorage();\n        break;\n      default:\n        throw new AuthSdkError(`Unrecognized storage option: ${storageType}`);\n        break;\n    }\n    return storageProvider;\n  },\n\n  findStorageType: function(types: StorageType[]) {\n    let curType;\n    let nextType;\n    \n    types = types.slice(); // copy array\n    curType = types.shift();\n    nextType = types.length ? types[0] : null;\n    if (!nextType) {\n      return curType;\n    }\n\n    if (this.testStorageType(curType)) {\n      return curType;\n    }\n\n    // preferred type was unsupported.\n    warn(`This browser doesn't support ${curType}. Switching to ${nextType}.`);\n\n    // fallback to the next type. this is a recursive call\n    return this.findStorageType(types);\n  },\n\n  getLocalStorage: function() {\n    // Workaound for synchronization issue of LocalStorage cross tabs in IE11\n    if (isIE11OrLess() && !window.onstorage) {\n      window.onstorage = function() {};\n    }\n    \n    return localStorage;\n  },\n\n  getSessionStorage: function() {\n    return sessionStorage;\n  },\n\n  // Provides webStorage-like interface for cookies\n  getCookieStorage: function(options): CookieStorage {\n    const secure = options!.secure;\n    const sameSite = options!.sameSite;\n    const sessionCookie = options!.sessionCookie;\n    if (typeof secure === 'undefined' || typeof sameSite === 'undefined') {\n      throw new AuthSdkError('getCookieStorage: \"secure\" and \"sameSite\" options must be provided');\n    }\n    const storage: CookieStorage = {\n      getItem: this.storage.get,\n      setItem: (key, value, expiresAt = '2200-01-01T00:00:00.000Z') => {\n        // By defauilt, cookie shouldn't expire\n        expiresAt = (sessionCookie ? null : expiresAt) as string;\n        this.storage.set(key, value, expiresAt, {\n          secure: secure, \n          sameSite: sameSite,\n        });\n      },\n      removeItem: (key) => {\n        this.storage.delete(key);\n      },\n    };\n\n    if (!options!.useSeparateCookies) {\n      return storage;\n    }\n\n    // Tokens are stored separately because cookies have size limits.\n    // Can only be used when storing an object value. Object properties will be saved to separate cookies.\n    // Each property of the object must also be an object.\n    return {\n      getItem: function(key) {\n        var data = storage.getItem(); // read all cookies\n        var value = {};\n        Object.keys(data).forEach(k => {\n          if (k.indexOf(key!) === 0) { // filter out unrelated cookies\n            value[k.replace(`${key}_`, '')] = JSON.parse(data[k]); // populate with cookie data\n          }\n        });\n        return JSON.stringify(value);\n      },\n      setItem: function(key, value) {\n        var existingValues = JSON.parse(this.getItem(key));\n        value = JSON.parse(value);\n        // Set key-value pairs from input to cookies\n        Object.keys(value).forEach(k => {\n          var storageKey = key + '_' + k;\n          var valueToStore = JSON.stringify(value[k]);\n          storage.setItem(storageKey, valueToStore);\n          delete existingValues[k];\n        });\n        // Delete unmatched keys from existing cookies\n        Object.keys(existingValues).forEach(k => {\n          storage.removeItem(key + '_' + k);\n        });\n      },\n      removeItem: function(key) {\n        var existingValues = JSON.parse(this.getItem(key));\n        Object.keys(existingValues).forEach(k => {\n          storage.removeItem(key + '_' + k);\n        });\n      },\n    };\n  },\n\n  // Provides an in-memory solution\n  inMemoryStore: {}, // override this for a unique memory store per instance\n  getInMemoryStorage: function() {\n    return {\n      getItem: (key) => {\n        return this.inMemoryStore[key];\n      },\n      setItem: (key, value) => {\n        this.inMemoryStore[key] = value;\n      },\n    };\n  },\n\n  testStorage: function(storage) {\n    var key = 'okta-test-storage';\n    try {\n      storage.setItem(key, key);\n      storage.removeItem(key);\n      return true;\n    } catch (e) {\n      return false;\n    }\n  },\n\n  storage: {\n    set: function(name: string, value: string, expiresAt: string, options: CookieOptions): string {\n      const { sameSite, secure } = options;\n      if (typeof secure === 'undefined' || typeof sameSite === 'undefined') {\n        throw new AuthSdkError('storage.set: \"secure\" and \"sameSite\" options must be provided');\n      }\n      var cookieOptions: CookieOptions = {\n        path: options.path || '/',\n        secure,\n        sameSite\n      };\n\n      // eslint-disable-next-line no-extra-boolean-cast\n      if (!!(Date.parse(expiresAt))) {\n        // Expires value can be converted to a Date object.\n        //\n        // If the 'expiresAt' value is not provided, or the value cannot be\n        // parsed as a Date object, the cookie will set as a session cookie.\n        cookieOptions.expires = new Date(expiresAt);\n      }\n\n      Cookies.set(name, value, cookieOptions);\n      return this.get(name);\n    },\n\n    get: function(name?: string): string {\n      // return all cookies when no args is provided\n      if (!arguments.length) {\n        return Cookies.get();\n      }\n      return Cookies.get(name);\n    },\n\n    delete: function(name: string): string {\n      return Cookies.remove(name, { path: '/' });\n    }\n  }\n};\n\nexport default storageUtil;\n","import { httpRequest, RequestOptions } from '../../http';\nimport { OktaAuthConstructor } from '../../base/types';\nimport { \n  PromiseQueue,\n} from '../../util';\nimport { CryptoAPI } from '../../crypto/types';\nimport * as crypto from '../../crypto';\nimport {\n  AccessToken,\n  CustomUserClaims,\n  IDToken,\n  IsAuthenticatedOptions,\n  OAuthResponseType,\n  OAuthStorageManagerInterface,\n  OAuthTransactionMeta,\n  OktaAuthOAuthInterface,\n  OktaAuthOAuthOptions,\n  PkceAPI,\n  PKCETransactionMeta,\n  RefreshToken,\n  SigninWithRedirectOptions,\n  SignoutOptions,\n  SignoutRedirectUrlOptions,\n  TokenAPI,\n  TransactionManagerInterface,\n  TransactionManagerConstructor,\n  UserClaims,\n  Endpoints,\n} from '../types';\nimport PKCE from '../util/pkce';\nimport { createEndpoints, createTokenAPI } from '../factory/api';\nimport { TokenManager } from '../TokenManager';\nimport { getOAuthUrls, isLoginRedirect, hasResponseType } from '../util';\n\nimport { OktaAuthSessionInterface } from '../../session/types';\nimport { provideOriginalUri } from './node';\nexport function mixinOAuth\n<\n  M extends OAuthTransactionMeta = PKCETransactionMeta,\n  S extends OAuthStorageManagerInterface<M> = OAuthStorageManagerInterface<M>,\n  O extends OktaAuthOAuthOptions = OktaAuthOAuthOptions,\n  TM extends TransactionManagerInterface = TransactionManagerInterface,\n  TBase extends OktaAuthConstructor<OktaAuthSessionInterface<S, O>>\n    = OktaAuthConstructor<OktaAuthSessionInterface<S, O>>\n>\n(\n  Base: TBase,\n  TransactionManagerConstructor: TransactionManagerConstructor<TM>,\n): TBase & OktaAuthConstructor<OktaAuthOAuthInterface<M, S, O, TM>>\n{\n  const WithOriginalUri = provideOriginalUri(Base);\n  return class OktaAuthOAuth extends WithOriginalUri\n  implements OktaAuthOAuthInterface<M, S, O, TM>\n  {\n    static crypto: CryptoAPI = crypto;\n    token: TokenAPI;\n    tokenManager: TokenManager;\n    transactionManager: TM;\n    pkce: PkceAPI;\n    endpoints: Endpoints;\n\n    _pending: { handleLogin: boolean };\n    _tokenQueue: PromiseQueue;\n    \n    constructor(...args: any[]) {\n      super(...args);\n\n      this.transactionManager = new TransactionManagerConstructor(Object.assign({\n        storageManager: this.storageManager,\n      }, this.options.transactionManager));\n  \n      this.pkce = {\n        DEFAULT_CODE_CHALLENGE_METHOD: PKCE.DEFAULT_CODE_CHALLENGE_METHOD,\n        generateVerifier: PKCE.generateVerifier,\n        computeChallenge: PKCE.computeChallenge\n      };\n  \n      this._pending = { handleLogin: false };\n\n      this._tokenQueue = new PromiseQueue();\n\n      this.token = createTokenAPI(this, this._tokenQueue);\n\n      // TokenManager\n      this.tokenManager = new TokenManager(this, this.options.tokenManager);\n\n      this.endpoints = createEndpoints(this);\n    }\n\n    // inherited from subclass\n    clearStorage(): void {\n      super.clearStorage();\n      \n      // Clear all local tokens\n      this.tokenManager.clear();\n    }\n\n    // Returns true if both accessToken and idToken are not expired\n    // If `autoRenew` option is set, will attempt to renew expired tokens before returning.\n    // eslint-disable-next-line complexity\n    async isAuthenticated(options: IsAuthenticatedOptions = {}): Promise<boolean> {\n      // TODO: remove dependency on tokenManager options in next major version - OKTA-473815\n      const { autoRenew, autoRemove } = this.tokenManager.getOptions();\n\n      const shouldRenew = options.onExpiredToken ? options.onExpiredToken === 'renew' : autoRenew;\n      const shouldRemove = options.onExpiredToken ? options.onExpiredToken === 'remove' : autoRemove;\n\n      let { accessToken } = this.tokenManager.getTokensSync();\n      if (accessToken && this.tokenManager.hasExpired(accessToken)) {\n        accessToken = undefined;\n        if (shouldRenew) {\n          try {\n            accessToken = await this.tokenManager.renew('accessToken') as AccessToken;\n          } catch {\n            // Renew errors will emit an \"error\" event \n          }\n        } else if (shouldRemove) {\n          this.tokenManager.remove('accessToken');\n        }\n      }\n\n      let { idToken } = this.tokenManager.getTokensSync();\n      if (idToken && this.tokenManager.hasExpired(idToken)) {\n        idToken = undefined;\n        if (shouldRenew) {\n          try {\n            idToken = await this.tokenManager.renew('idToken') as IDToken;\n          } catch {\n            // Renew errors will emit an \"error\" event \n          }\n        } else if (shouldRemove) {\n          this.tokenManager.remove('idToken');\n        }\n      }\n\n      return !!(accessToken && idToken);\n    }\n\n\n    async signInWithRedirect(opts: SigninWithRedirectOptions = {}) {\n      const { originalUri, ...additionalParams } = opts;\n      if(this._pending.handleLogin) { \n        // Don't trigger second round\n        return;\n      }\n\n      this._pending.handleLogin = true;\n      try {\n        // Trigger default signIn redirect flow\n        if (originalUri) {\n          this.setOriginalUri(originalUri);\n        }\n        const params = Object.assign({\n          // TODO: remove this line when default scopes are changed OKTA-343294\n          scopes: this.options.scopes || ['openid', 'email', 'profile']\n        }, additionalParams);\n        await this.token.getWithRedirect(params);\n      } finally {\n        this._pending.handleLogin = false;\n      }\n    }\n\n    async getUser<T extends CustomUserClaims = CustomUserClaims>(): Promise<UserClaims<T>> {\n      const { idToken, accessToken } = this.tokenManager.getTokensSync();\n      return this.token.getUserInfo(accessToken, idToken);\n    }\n  \n    getIdToken(): string | undefined {\n      const { idToken } = this.tokenManager.getTokensSync();\n      return idToken ? idToken.idToken : undefined;\n    }\n  \n    getAccessToken(): string | undefined {\n      const { accessToken } = this.tokenManager.getTokensSync();\n      return accessToken ? accessToken.accessToken : undefined;\n    }\n  \n    getRefreshToken(): string | undefined {\n      const { refreshToken } = this.tokenManager.getTokensSync();\n      return refreshToken ? refreshToken.refreshToken : undefined;\n    }\n\n    async getOrRenewAccessToken(): Promise<string | null> {\n      const { accessToken } = this.tokenManager.getTokensSync();\n      if (accessToken && !this.tokenManager.hasExpired(accessToken)) {\n        return accessToken.accessToken;\n      }\n      try {\n        const key = this.tokenManager.getStorageKeyByType('accessToken');\n        const token = await this.tokenManager.renew(key ?? 'accessToken');\n        return (token as AccessToken)?.accessToken ?? null;\n      }\n      catch (err) {\n        this.emitter.emit('error', err);\n        return null;\n      }\n    }\n  \n    /**\n     * Store parsed tokens from redirect url\n     */\n    async storeTokensFromRedirect(): Promise<void> {\n      const { tokens, responseType } = await this.token.parseFromUrl();\n      if (responseType !== 'none') {\n        this.tokenManager.setTokens(tokens);\n      }\n    }\n  \n    isLoginRedirect(): boolean {\n      return isLoginRedirect(this);\n    }\n\n    isPKCE(): boolean {\n      return !!this.options.pkce;\n    }\n\n    hasResponseType(responseType: OAuthResponseType): boolean {\n      return hasResponseType(responseType, this.options);\n    }\n  \n    isAuthorizationCodeFlow(): boolean {\n      return this.hasResponseType('code');\n    }\n\n    // Escape hatch method to make arbitrary OKTA API call\n    async invokeApiMethod(options: RequestOptions): Promise<unknown> {\n      if (!options.accessToken) {\n        const accessToken = (await this.tokenManager.getTokens()).accessToken as AccessToken;\n        options.accessToken = accessToken?.accessToken;\n      }\n      return httpRequest(this, options);\n    }\n    \n    // Revokes the access token for the application session\n    async revokeAccessToken(accessToken?: AccessToken): Promise<unknown> {\n      if (!accessToken) {\n        accessToken = (await this.tokenManager.getTokens()).accessToken as AccessToken;\n        const accessTokenKey = this.tokenManager.getStorageKeyByType('accessToken');\n        this.tokenManager.remove(accessTokenKey);\n      }\n      // Access token may have been removed. In this case, we will silently succeed.\n      if (!accessToken) {\n        return Promise.resolve(null);\n      }\n      return this.token.revoke(accessToken);\n    }\n\n    // Revokes the refresh token for the application session\n    async revokeRefreshToken(refreshToken?: RefreshToken): Promise<unknown> {\n      if (!refreshToken) {\n        refreshToken = (await this.tokenManager.getTokens()).refreshToken as RefreshToken;\n        const refreshTokenKey = this.tokenManager.getStorageKeyByType('refreshToken');\n        this.tokenManager.remove(refreshTokenKey);\n      }\n      // Refresh token may have been removed. In this case, we will silently succeed.\n      if (!refreshToken) {\n        return Promise.resolve(null);\n      }\n      return this.token.revoke(refreshToken);\n    }\n\n    getSignOutRedirectUrl(options: SignoutRedirectUrlOptions = {}) {\n      let {\n        idToken,\n        postLogoutRedirectUri,\n        state,\n      } = options;\n      if (!idToken) {\n        idToken = this.tokenManager.getTokensSync().idToken as IDToken;\n      }\n      if (!idToken) {\n        return '';\n      }\n      if (postLogoutRedirectUri === undefined) {\n        postLogoutRedirectUri = this.options.postLogoutRedirectUri;\n      }\n\n      const logoutUrl = getOAuthUrls(this).logoutUrl;\n      const idTokenHint = idToken.idToken; // a string\n      let logoutUri = logoutUrl + '?id_token_hint=' + encodeURIComponent(idTokenHint);\n      if (postLogoutRedirectUri) {\n        logoutUri += '&post_logout_redirect_uri=' + encodeURIComponent(postLogoutRedirectUri);\n      } \n      // State allows option parameters to be passed to logout redirect uri\n      if (state) {\n        logoutUri += '&state=' + encodeURIComponent(state);\n      }\n\n      return logoutUri;\n    }\n\n    // Revokes refreshToken or accessToken, clears all local tokens, then redirects to Okta to end the SSO session.\n    // eslint-disable-next-line complexity, max-statements\n    async signOut(options?: SignoutOptions): Promise<boolean> {\n      options = Object.assign({}, options);\n    \n      // postLogoutRedirectUri must be whitelisted in Okta Admin UI\n      const defaultUri = window.location.origin;\n      const currentUri = window.location.href;\n      // Fix for issue/1410 - allow for no postLogoutRedirectUri to be passed, resulting in /logout default behavior\n      //    \"If no Okta session exists, this endpoint has no effect and the browser is redirected immediately to the\n      //    Okta sign-in page or the post_logout_redirect_uri (if specified).\"\n      // - https://developer.okta.com/docs/reference/api/oidc/#logout\n      const postLogoutRedirectUri = options.postLogoutRedirectUri === null ? null :\n        (options.postLogoutRedirectUri\n        || this.options.postLogoutRedirectUri\n        || defaultUri);\n      const state = options?.state;\n      \n    \n      let accessToken = options.accessToken;\n      let refreshToken = options.refreshToken;\n      const revokeAccessToken = options.revokeAccessToken !== false;\n      const revokeRefreshToken = options.revokeRefreshToken !== false;\n    \n      if (revokeRefreshToken && typeof refreshToken === 'undefined') {\n        refreshToken = this.tokenManager.getTokensSync().refreshToken as RefreshToken;\n      }\n\n      if (revokeAccessToken && typeof accessToken === 'undefined') {\n        accessToken = this.tokenManager.getTokensSync().accessToken as AccessToken;\n      }\n    \n      if (!options.idToken) {\n        options.idToken = this.tokenManager.getTokensSync().idToken as IDToken;\n      }\n\n      if (revokeRefreshToken && refreshToken) {\n        await this.revokeRefreshToken(refreshToken);\n      }\n\n      if (revokeAccessToken && accessToken) {\n        await this.revokeAccessToken(accessToken);\n      }\n\n      const logoutUri = this.getSignOutRedirectUrl({ ...options, postLogoutRedirectUri });\n      // No logoutUri? This can happen if the storage was cleared.\n      // Fallback to XHR signOut, then simulate a redirect to the post logout uri\n      if (!logoutUri) {\n        // local tokens are cleared once session is closed\n        const sessionClosed = await this.closeSession();   // can throw if the user cannot be signed out\n        const redirectUri = new URL(postLogoutRedirectUri || defaultUri); // during fallback, redirectUri cannot be null\n        if (state) {\n          redirectUri.searchParams.append('state', state);\n        }\n        if (postLogoutRedirectUri === currentUri) {\n          // window.location.reload(); // force a hard reload if URI is not changing\n          window.location.href = redirectUri.href;\n        } else {\n          window.location.assign(redirectUri.href);\n        }\n        return sessionClosed;\n      } else {\n        if (options.clearTokensBeforeRedirect) {\n          // Clear all local tokens\n          this.tokenManager.clear();\n        } else {\n          this.tokenManager.addPendingRemoveFlags();\n        }\n        // Flow ends with logout redirect\n        window.location.assign(logoutUri);\n        return true;\n      }\n    }\n\n  };\n\n}\n","import { REFERRER_PATH_STORAGE_KEY } from '../../constants';\nimport browserStorage from '../../browser/browserStorage';\nimport { OktaAuthStorageInterface } from '../../storage';\nimport { OktaAuthConstructor } from '../../base';\nimport {\n  OAuthStorageManagerInterface,\n  OAuthTransactionMeta,\n  OktaAuthOAuthOptions,\n  OriginalUriApi,\n  PKCETransactionMeta,\n} from '../types';\n\nexport function provideOriginalUri\n<\n  M extends OAuthTransactionMeta = PKCETransactionMeta,\n  S extends OAuthStorageManagerInterface<M> = OAuthStorageManagerInterface<M>,\n  O extends OktaAuthOAuthOptions = OktaAuthOAuthOptions,\n  TBase extends OktaAuthConstructor<OktaAuthStorageInterface<S, O>>\n    = OktaAuthConstructor<OktaAuthStorageInterface<S, O>> \n>\n(BaseClass: TBase) {\n  return class WithOriginalUri extends BaseClass implements OriginalUriApi {\n    setOriginalUri(originalUri: string, state?: string): void {\n      // always store in session storage\n      const sessionStorage = browserStorage.getSessionStorage();\n      sessionStorage.setItem(REFERRER_PATH_STORAGE_KEY, originalUri);\n  \n      // to support multi-tab flows, set a state in constructor or pass as param\n      state = state || this.options.state;\n      if (state) {\n        const sharedStorage = this.storageManager.getOriginalUriStorage();\n        sharedStorage.setItem(state, originalUri);\n      }\n    }\n  \n    getOriginalUri(state?: string): string | undefined {\n      // Prefer shared storage (if state is available)\n      state = state || this.options.state;\n      if (state) {\n        const sharedStorage = this.storageManager.getOriginalUriStorage();\n        const originalUri = sharedStorage.getItem(state);\n        if (originalUri) {\n          return originalUri;\n        }\n      }\n  \n      // Try to load from session storage\n      const storage = browserStorage.getSessionStorage();\n      return storage ? storage.getItem(REFERRER_PATH_STORAGE_KEY) || undefined : undefined;\n    }\n  \n    removeOriginalUri(state?: string): void {\n      // Remove from sessionStorage\n      const storage = browserStorage.getSessionStorage();\n      storage.removeItem(REFERRER_PATH_STORAGE_KEY);\n  \n      // Also remove from shared storage\n      state = state || this.options.state;\n      if (state) {\n        const sharedStorage = this.storageManager.getOriginalUriStorage();\n        sharedStorage.removeItem && sharedStorage.removeItem(state);\n      }\n    }\n  };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n \n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore \n// Do not use this type in code, so it won't be emitted in the declaration output\nimport PCancelable from 'p-cancelable';\nimport { AuthSdkError } from '../errors';\nimport {\n  EVENT_ADDED,\n  EVENT_REMOVED,\n  OAuthStorageManagerInterface,\n  OAuthTransactionMeta,\n  OktaAuthOAuthInterface\n} from '../oidc';\nimport {\n  AuthState,\n  AuthStateLogOptions,\n  OktaAuthCoreOptions,\n} from './types';\nimport { PromiseQueue, getConsole } from '../util';\n\nexport const INITIAL_AUTH_STATE = null;\nconst DEFAULT_PENDING = {\n  updateAuthStatePromise: null,\n  canceledTimes: 0\n};\nconst EVENT_AUTH_STATE_CHANGE = 'authStateChange';\nconst MAX_PROMISE_CANCEL_TIMES = 10;\n\n// only compare first level of authState\nconst isSameAuthState = (prevState: AuthState | null, state: AuthState) => {\n  // initial state is null\n  if (!prevState) {\n    return false;\n  }\n\n  return prevState.isAuthenticated === state.isAuthenticated \n    && JSON.stringify(prevState.idToken) === JSON.stringify(state.idToken)\n    && JSON.stringify(prevState.accessToken) === JSON.stringify(state.accessToken)\n    && prevState.error === state.error;\n};\n\n\nexport class AuthStateManager\n<\n  M extends OAuthTransactionMeta,\n  S extends OAuthStorageManagerInterface<M>,\n  O extends OktaAuthCoreOptions\n>\n{\n  _sdk: OktaAuthOAuthInterface<M, S, O>;\n  _pending: { \n    updateAuthStatePromise: any;\n    canceledTimes: number; \n  };\n  _authState: AuthState | null;\n  _prevAuthState: AuthState | null;\n  _logOptions: AuthStateLogOptions;\n  _transformQueue: PromiseQueue;\n\n  constructor(sdk: OktaAuthOAuthInterface<M, S, O>) {\n    if (!sdk.emitter) {\n      throw new AuthSdkError('Emitter should be initialized before AuthStateManager');\n    }\n\n    this._sdk = sdk;\n    this._pending = { ...DEFAULT_PENDING };\n    this._authState = INITIAL_AUTH_STATE;\n    this._logOptions = {};\n    this._prevAuthState = null;\n    this._transformQueue = new PromiseQueue({\n      quiet: true\n    });\n\n    // Listen on tokenManager events to start updateState process\n    // \"added\" event is emitted in both add and renew process\n    // Only listen on \"added\" event to update auth state\n    sdk.tokenManager.on(EVENT_ADDED, (key, token) => {\n      this._setLogOptions({ event: EVENT_ADDED, key, token });\n      this.updateAuthState();\n    });\n    sdk.tokenManager.on(EVENT_REMOVED, (key, token) => {\n      this._setLogOptions({ event: EVENT_REMOVED, key, token });\n      this.updateAuthState();\n    });\n  }\n\n  _setLogOptions(options) {\n    this._logOptions = options;\n  }\n\n  getAuthState(): AuthState | null {\n    return this._authState;\n  }\n\n  getPreviousAuthState(): AuthState | null {\n    return this._prevAuthState;\n  }\n\n  async updateAuthState(): Promise<AuthState> {\n    const { transformAuthState, devMode } = this._sdk.options;\n\n    const log = (status) => {\n      const { event, key, token } = this._logOptions;\n      getConsole().group(`OKTA-AUTH-JS:updateAuthState: Event:${event} Status:${status}`);\n      getConsole().log(key, token);\n      getConsole().log('Current authState', this._authState);\n      getConsole().groupEnd();\n      \n      // clear log options after logging\n      this._logOptions = {};\n    };\n\n    const emitAuthStateChange = (authState) => {\n      if (isSameAuthState(this._authState, authState)) {\n        devMode && log('unchanged'); \n        return;\n      }\n      this._prevAuthState = this._authState;\n      this._authState = authState;\n      // emit new authState object\n      this._sdk.emitter.emit(EVENT_AUTH_STATE_CHANGE, { ...authState });\n      devMode && log('emitted');\n    };\n\n    const finalPromise = (origPromise) => {       \n      return this._pending.updateAuthStatePromise.then(() => {\n        const curPromise = this._pending.updateAuthStatePromise;\n        if (curPromise && curPromise !== origPromise) {\n          return finalPromise(curPromise);\n        }\n        return this.getAuthState();\n      });\n    };\n\n    if (this._pending.updateAuthStatePromise) {\n      if (this._pending.canceledTimes >= MAX_PROMISE_CANCEL_TIMES) {\n        // stop canceling then starting a new promise\n        // let existing promise finish to prevent running into loops\n        devMode && log('terminated');\n        return finalPromise(this._pending.updateAuthStatePromise);\n      } else {\n        this._pending.updateAuthStatePromise.cancel();\n      }\n    }\n\n    /* eslint-disable complexity */\n    const cancelablePromise = new PCancelable((resolve, _, onCancel) => {\n      onCancel.shouldReject = false;\n      onCancel(() => {\n        this._pending.updateAuthStatePromise = null;\n        this._pending.canceledTimes = this._pending.canceledTimes + 1;\n        devMode && log('canceled');\n      });\n\n      const emitAndResolve = (authState) => {\n        if (cancelablePromise.isCanceled) {\n          resolve();\n          return;\n        }\n        // emit event and resolve promise \n        emitAuthStateChange(authState);\n        resolve();\n\n        // clear pending states after resolve\n        this._pending = { ...DEFAULT_PENDING };\n      };\n\n      this._sdk.isAuthenticated()\n        .then(() => {\n          if (cancelablePromise.isCanceled) {\n            resolve();\n            return;\n          }\n\n          const { accessToken, idToken, refreshToken } = this._sdk.tokenManager.getTokensSync();\n          const authState = {\n            accessToken,\n            idToken,\n            refreshToken,\n            isAuthenticated: !!(accessToken && idToken)\n          };\n\n          // Enqueue transformAuthState so that it does not run concurrently\n          const promise: Promise<AuthState> = transformAuthState\n            ? this._transformQueue.push(transformAuthState, null, this._sdk, authState) as Promise<AuthState>\n            : Promise.resolve(authState);\n\n          promise\n            .then(authState => emitAndResolve(authState))\n            .catch(error => emitAndResolve({\n              accessToken, \n              idToken, \n              refreshToken,\n              isAuthenticated: false, \n              error\n            }));\n        });\n    });\n    /* eslint-enable complexity */\n    this._pending.updateAuthStatePromise = cancelablePromise;\n\n    return finalPromise(cancelablePromise);\n  }\n\n  subscribe(handler): void {\n    this._sdk.emitter.on(EVENT_AUTH_STATE_CHANGE, handler);\n  }\n\n  unsubscribe(handler?): void {\n    this._sdk.emitter.off(EVENT_AUTH_STATE_CHANGE, handler);\n  }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthSdkError } from '../errors';\nimport { ServiceInterface, ServiceManagerOptions } from '../core/types';\nimport { EVENT_EXPIRED, TokenManagerInterface, isRefreshToken } from '../oidc/types';\nimport { isBrowser } from '../features';\n\nexport class AutoRenewService implements ServiceInterface {\n  private tokenManager: TokenManagerInterface;\n  private options: ServiceManagerOptions;\n  private renewTimeQueue: Array<number>;\n  private started = false;\n\n  constructor(tokenManager: TokenManagerInterface, options: ServiceManagerOptions = {}) {\n    this.tokenManager = tokenManager;\n    this.options = options;\n    this.renewTimeQueue = [];\n    this.onTokenExpiredHandler = this.onTokenExpiredHandler.bind(this);\n  }\n  \n  private shouldThrottleRenew(): boolean {\n    let res = false;\n    this.renewTimeQueue.push(Date.now());\n    if (this.renewTimeQueue.length >= 10) {\n      // get and remove first item from queue\n      const firstTime = this.renewTimeQueue.shift() as number;\n      const lastTime = this.renewTimeQueue[this.renewTimeQueue.length - 1];\n      res = (lastTime - firstTime) < 30 * 1000;\n    }\n    return res;\n  }\n\n  requiresLeadership() {\n    // If tokens sync storage is enabled, handle tokens expiration only in 1 leader tab\n    return !!this.options.syncStorage && isBrowser();\n  }\n\n  private processExpiredTokens() {\n    const tokenStorage = this.tokenManager.getStorage();\n    const tokens = tokenStorage.getStorage();\n    Object.keys(tokens).forEach(key => {\n      const token = tokens[key];\n      if (!isRefreshToken(token) && this.tokenManager.hasExpired(token)) {\n        this.onTokenExpiredHandler(key);\n      }\n    });\n  }\n\n  private onTokenExpiredHandler(key: string) {\n    if (this.options.autoRenew) {\n      if (this.shouldThrottleRenew()) {\n        const error = new AuthSdkError('Too many token renew requests');\n        this.tokenManager.emitError(error);\n      } else {\n        this.tokenManager.renew(key).catch(() => {}); // Renew errors will emit an \"error\" event \n      }\n    } else if (this.options.autoRemove) {\n      this.tokenManager.remove(key);\n    }\n  }\n\n  canStart() {\n    return (!!this.options.autoRenew || !!this.options.autoRemove) && !this.started;\n  }\n\n  async start() {\n    if (this.canStart()) {\n      this.tokenManager.on(EVENT_EXPIRED, this.onTokenExpiredHandler);\n      if (this.tokenManager.isStarted()) {\n        // If token manager has been already started, we could miss token expire events,\n        //  so need to process expired tokens manually.\n        this.processExpiredTokens();\n      }\n      this.started = true;\n    }\n  }\n\n  async stop() {\n    if (this.started) {\n      this.tokenManager.off(EVENT_EXPIRED, this.onTokenExpiredHandler);\n      this.renewTimeQueue = [];\n      this.started = false;\n    }\n  }\n\n  isStarted() {\n    return this.started;\n  }\n}\n","/**\n * returns true if the given object is a promise\n */\nexport function isPromise(obj) {\n  return obj && typeof obj.then === 'function';\n}\nexport var PROMISE_RESOLVED_FALSE = Promise.resolve(false);\nexport var PROMISE_RESOLVED_TRUE = Promise.resolve(true);\nexport var PROMISE_RESOLVED_VOID = Promise.resolve();\nexport function sleep(time, resolveWith) {\n  if (!time) time = 0;\n  return new Promise(function (res) {\n    return setTimeout(function () {\n      return res(resolveWith);\n    }, time);\n  });\n}\nexport function randomInt(min, max) {\n  return Math.floor(Math.random() * (max - min + 1) + min);\n}\n\n/**\n * https://stackoverflow.com/a/8084248\n */\nexport function randomToken() {\n  return Math.random().toString(36).substring(2);\n}\nvar lastMs = 0;\nvar additional = 0;\n\n/**\n * returns the current time in micro-seconds,\n * WARNING: This is a pseudo-function\n * Performance.now is not reliable in webworkers, so we just make sure to never return the same time.\n * This is enough in browsers, and this function will not be used in nodejs.\n * The main reason for this hack is to ensure that BroadcastChannel behaves equal to production when it is used in fast-running unit tests.\n */\nexport function microSeconds() {\n  var ms = new Date().getTime();\n  if (ms === lastMs) {\n    additional++;\n    return ms * 1000 + additional;\n  } else {\n    lastMs = ms;\n    additional = 0;\n    return ms * 1000;\n  }\n}\n\n/**\n * Check if WebLock API is supported.\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Web_Locks_API\n */\nexport function supportsWebLockAPI() {\n  if (typeof navigator !== 'undefined' && typeof navigator.locks !== 'undefined' && typeof navigator.locks.request === 'function') {\n    return true;\n  } else {\n    return false;\n  }\n}","import { microSeconds as micro, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nexport var type = 'native';\nexport function create(channelName) {\n  var state = {\n    messagesCallback: null,\n    bc: new BroadcastChannel(channelName),\n    subFns: [] // subscriberFunctions\n  };\n\n  state.bc.onmessage = function (msg) {\n    if (state.messagesCallback) {\n      state.messagesCallback(msg.data);\n    }\n  };\n  return state;\n}\nexport function close(channelState) {\n  channelState.bc.close();\n  channelState.subFns = [];\n}\nexport function postMessage(channelState, messageJson) {\n  try {\n    channelState.bc.postMessage(messageJson, false);\n    return PROMISE_RESOLVED_VOID;\n  } catch (err) {\n    return Promise.reject(err);\n  }\n}\nexport function onMessage(channelState, fn) {\n  channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n  if ((typeof window !== 'undefined' || typeof self !== 'undefined') && typeof BroadcastChannel === 'function') {\n    if (BroadcastChannel._pubkey) {\n      throw new Error('BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill');\n    }\n    return true;\n  } else {\n    return false;\n  }\n}\nexport function averageResponseTime() {\n  return 150;\n}\nexport var NativeMethod = {\n  create: create,\n  close: close,\n  onMessage: onMessage,\n  postMessage: postMessage,\n  canBeUsed: canBeUsed,\n  type: type,\n  averageResponseTime: averageResponseTime,\n  microSeconds: microSeconds\n};","\n/**\n * this is a set which automatically forgets\n * a given entry when a new entry is set and the ttl\n * of the old one is over\n */\nexport class ObliviousSet<T = any> {\n    public readonly map = new Map();\n\n    /**\n     * Creating calls to setTimeout() is expensive,\n     * so we only do that if there is not timeout already open.\n     */\n    public _to: boolean = false;\n    constructor(\n        public readonly ttl: number\n    ) { }\n\n    has(value: T): boolean {\n        return this.map.has(value);\n    }\n\n    add(value: T): void {\n        this.map.set(value, now());\n\n        /**\n         * When a new value is added,\n         * start the cleanup at the next tick\n         * to not block the cpu for more important stuff\n         * that might happen.\n         */\n        if (!this._to) {\n            this._to = true;\n            setTimeout(() => {\n                this._to = false;\n                removeTooOldValues(this);\n            }, 0);\n        }\n    }\n\n    clear() {\n        this.map.clear();\n    }\n}\n\n\n/**\n * Removes all entries from the set\n * where the TTL has expired\n */\nexport function removeTooOldValues(\n    obliviousSet: ObliviousSet\n) {\n    const olderThen = now() - obliviousSet.ttl;\n    const iterator = obliviousSet.map[Symbol.iterator]();\n\n    /**\n     * Because we can assume the new values are added at the bottom,\n     * we start from the top and stop as soon as we reach a non-too-old value.\n     */\n    while (true) {\n\n        const next = iterator.next().value;\n\n        if (!next) {\n            return; // no more elements\n        }\n        const value = next[0];\n        const time = next[1];\n        if (time < olderThen) {\n            obliviousSet.map.delete(value);\n        } else {\n            // We reached a value that is not old enough\n            return;\n        }\n    }\n}\n\nexport function now(): number {\n    return new Date().getTime();\n}\n\n\n","export function fillOptionsWithDefaults() {\n  var originalOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var options = JSON.parse(JSON.stringify(originalOptions));\n\n  // main\n  if (typeof options.webWorkerSupport === 'undefined') options.webWorkerSupport = true;\n\n  // indexed-db\n  if (!options.idb) options.idb = {};\n  //  after this time the messages get deleted\n  if (!options.idb.ttl) options.idb.ttl = 1000 * 45;\n  if (!options.idb.fallbackInterval) options.idb.fallbackInterval = 150;\n  //  handles abrupt db onclose events.\n  if (originalOptions.idb && typeof originalOptions.idb.onclose === 'function') options.idb.onclose = originalOptions.idb.onclose;\n\n  // localstorage\n  if (!options.localstorage) options.localstorage = {};\n  if (!options.localstorage.removeTimeout) options.localstorage.removeTimeout = 1000 * 60;\n\n  // custom methods\n  if (originalOptions.methods) options.methods = originalOptions.methods;\n\n  // node\n  if (!options.node) options.node = {};\n  if (!options.node.ttl) options.node.ttl = 1000 * 60 * 2; // 2 minutes;\n  /**\n   * On linux use 'ulimit -Hn' to get the limit of open files.\n   * On ubuntu this was 4096 for me, so we use half of that as maxParallelWrites default.\n   */\n  if (!options.node.maxParallelWrites) options.node.maxParallelWrites = 2048;\n  if (typeof options.node.useFastPath === 'undefined') options.node.useFastPath = true;\n  return options;\n}","/**\n * this method uses indexeddb to store the messages\n * There is currently no observerAPI for idb\n * @link https://github.com/w3c/IndexedDB/issues/51\n * \n * When working on this, ensure to use these performance optimizations:\n * @link https://rxdb.info/slow-indexeddb.html\n */\n\nimport { sleep, randomInt, randomToken, microSeconds as micro, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options.js';\nvar DB_PREFIX = 'pubkey.broadcast-channel-0-';\nvar OBJECT_STORE_ID = 'messages';\n\n/**\n * Use relaxed durability for faster performance on all transactions.\n * @link https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes/\n */\nexport var TRANSACTION_SETTINGS = {\n  durability: 'relaxed'\n};\nexport var type = 'idb';\nexport function getIdb() {\n  if (typeof indexedDB !== 'undefined') return indexedDB;\n  if (typeof window !== 'undefined') {\n    if (typeof window.mozIndexedDB !== 'undefined') return window.mozIndexedDB;\n    if (typeof window.webkitIndexedDB !== 'undefined') return window.webkitIndexedDB;\n    if (typeof window.msIndexedDB !== 'undefined') return window.msIndexedDB;\n  }\n  return false;\n}\n\n/**\n * If possible, we should explicitly commit IndexedDB transactions\n * for better performance.\n * @link https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes/\n */\nexport function commitIndexedDBTransaction(tx) {\n  if (tx.commit) {\n    tx.commit();\n  }\n}\nexport function createDatabase(channelName) {\n  var IndexedDB = getIdb();\n\n  // create table\n  var dbName = DB_PREFIX + channelName;\n\n  /**\n   * All IndexedDB databases are opened without version\n   * because it is a bit faster, especially on firefox\n   * @link http://nparashuram.com/IndexedDB/perf/#Open%20Database%20with%20version\n   */\n  var openRequest = IndexedDB.open(dbName);\n  openRequest.onupgradeneeded = function (ev) {\n    var db = ev.target.result;\n    db.createObjectStore(OBJECT_STORE_ID, {\n      keyPath: 'id',\n      autoIncrement: true\n    });\n  };\n  return new Promise(function (res, rej) {\n    openRequest.onerror = function (ev) {\n      return rej(ev);\n    };\n    openRequest.onsuccess = function () {\n      res(openRequest.result);\n    };\n  });\n}\n\n/**\n * writes the new message to the database\n * so other readers can find it\n */\nexport function writeMessage(db, readerUuid, messageJson) {\n  var time = new Date().getTime();\n  var writeObject = {\n    uuid: readerUuid,\n    time: time,\n    data: messageJson\n  };\n  var tx = db.transaction([OBJECT_STORE_ID], 'readwrite', TRANSACTION_SETTINGS);\n  return new Promise(function (res, rej) {\n    tx.oncomplete = function () {\n      return res();\n    };\n    tx.onerror = function (ev) {\n      return rej(ev);\n    };\n    var objectStore = tx.objectStore(OBJECT_STORE_ID);\n    objectStore.add(writeObject);\n    commitIndexedDBTransaction(tx);\n  });\n}\nexport function getAllMessages(db) {\n  var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n  var objectStore = tx.objectStore(OBJECT_STORE_ID);\n  var ret = [];\n  return new Promise(function (res) {\n    objectStore.openCursor().onsuccess = function (ev) {\n      var cursor = ev.target.result;\n      if (cursor) {\n        ret.push(cursor.value);\n        //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n        cursor[\"continue\"]();\n      } else {\n        commitIndexedDBTransaction(tx);\n        res(ret);\n      }\n    };\n  });\n}\nexport function getMessagesHigherThan(db, lastCursorId) {\n  var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n  var objectStore = tx.objectStore(OBJECT_STORE_ID);\n  var ret = [];\n  var keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n\n  /**\n   * Optimization shortcut,\n   * if getAll() can be used, do not use a cursor.\n   * @link https://rxdb.info/slow-indexeddb.html\n   */\n  if (objectStore.getAll) {\n    var getAllRequest = objectStore.getAll(keyRangeValue);\n    return new Promise(function (res, rej) {\n      getAllRequest.onerror = function (err) {\n        return rej(err);\n      };\n      getAllRequest.onsuccess = function (e) {\n        res(e.target.result);\n      };\n    });\n  }\n  function openCursor() {\n    // Occasionally Safari will fail on IDBKeyRange.bound, this\n    // catches that error, having it open the cursor to the first\n    // item. When it gets data it will advance to the desired key.\n    try {\n      keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n      return objectStore.openCursor(keyRangeValue);\n    } catch (e) {\n      return objectStore.openCursor();\n    }\n  }\n  return new Promise(function (res, rej) {\n    var openCursorRequest = openCursor();\n    openCursorRequest.onerror = function (err) {\n      return rej(err);\n    };\n    openCursorRequest.onsuccess = function (ev) {\n      var cursor = ev.target.result;\n      if (cursor) {\n        if (cursor.value.id < lastCursorId + 1) {\n          cursor[\"continue\"](lastCursorId + 1);\n        } else {\n          ret.push(cursor.value);\n          cursor[\"continue\"]();\n        }\n      } else {\n        commitIndexedDBTransaction(tx);\n        res(ret);\n      }\n    };\n  });\n}\nexport function removeMessagesById(channelState, ids) {\n  if (channelState.closed) {\n    return Promise.resolve([]);\n  }\n  var tx = channelState.db.transaction(OBJECT_STORE_ID, 'readwrite', TRANSACTION_SETTINGS);\n  var objectStore = tx.objectStore(OBJECT_STORE_ID);\n  return Promise.all(ids.map(function (id) {\n    var deleteRequest = objectStore[\"delete\"](id);\n    return new Promise(function (res) {\n      deleteRequest.onsuccess = function () {\n        return res();\n      };\n    });\n  }));\n}\nexport function getOldMessages(db, ttl) {\n  var olderThen = new Date().getTime() - ttl;\n  var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n  var objectStore = tx.objectStore(OBJECT_STORE_ID);\n  var ret = [];\n  return new Promise(function (res) {\n    objectStore.openCursor().onsuccess = function (ev) {\n      var cursor = ev.target.result;\n      if (cursor) {\n        var msgObk = cursor.value;\n        if (msgObk.time < olderThen) {\n          ret.push(msgObk);\n          //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n          cursor[\"continue\"]();\n        } else {\n          // no more old messages,\n          commitIndexedDBTransaction(tx);\n          res(ret);\n        }\n      } else {\n        res(ret);\n      }\n    };\n  });\n}\nexport function cleanOldMessages(channelState) {\n  return getOldMessages(channelState.db, channelState.options.idb.ttl).then(function (tooOld) {\n    return removeMessagesById(channelState, tooOld.map(function (msg) {\n      return msg.id;\n    }));\n  });\n}\nexport function create(channelName, options) {\n  options = fillOptionsWithDefaults(options);\n  return createDatabase(channelName).then(function (db) {\n    var state = {\n      closed: false,\n      lastCursorId: 0,\n      channelName: channelName,\n      options: options,\n      uuid: randomToken(),\n      /**\n       * emittedMessagesIds\n       * contains all messages that have been emitted before\n       * @type {ObliviousSet}\n       */\n      eMIs: new ObliviousSet(options.idb.ttl * 2),\n      // ensures we do not read messages in parallel\n      writeBlockPromise: PROMISE_RESOLVED_VOID,\n      messagesCallback: null,\n      readQueuePromises: [],\n      db: db\n    };\n\n    /**\n     * Handle abrupt closes that do not originate from db.close().\n     * This could happen, for example, if the underlying storage is\n     * removed or if the user clears the database in the browser's\n     * history preferences.\n     */\n    db.onclose = function () {\n      state.closed = true;\n      if (options.idb.onclose) options.idb.onclose();\n    };\n\n    /**\n     * if service-workers are used,\n     * we have no 'storage'-event if they post a message,\n     * therefore we also have to set an interval\n     */\n    _readLoop(state);\n    return state;\n  });\n}\nfunction _readLoop(state) {\n  if (state.closed) return;\n  readNewMessages(state).then(function () {\n    return sleep(state.options.idb.fallbackInterval);\n  }).then(function () {\n    return _readLoop(state);\n  });\n}\nfunction _filterMessage(msgObj, state) {\n  if (msgObj.uuid === state.uuid) return false; // send by own\n  if (state.eMIs.has(msgObj.id)) return false; // already emitted\n  if (msgObj.data.time < state.messagesCallbackTime) return false; // older then onMessageCallback\n  return true;\n}\n\n/**\n * reads all new messages from the database and emits them\n */\nfunction readNewMessages(state) {\n  // channel already closed\n  if (state.closed) return PROMISE_RESOLVED_VOID;\n\n  // if no one is listening, we do not need to scan for new messages\n  if (!state.messagesCallback) return PROMISE_RESOLVED_VOID;\n  return getMessagesHigherThan(state.db, state.lastCursorId).then(function (newerMessages) {\n    var useMessages = newerMessages\n    /**\n     * there is a bug in iOS where the msgObj can be undefined sometimes\n     * so we filter them out\n     * @link https://github.com/pubkey/broadcast-channel/issues/19\n     */.filter(function (msgObj) {\n      return !!msgObj;\n    }).map(function (msgObj) {\n      if (msgObj.id > state.lastCursorId) {\n        state.lastCursorId = msgObj.id;\n      }\n      return msgObj;\n    }).filter(function (msgObj) {\n      return _filterMessage(msgObj, state);\n    }).sort(function (msgObjA, msgObjB) {\n      return msgObjA.time - msgObjB.time;\n    }); // sort by time\n    useMessages.forEach(function (msgObj) {\n      if (state.messagesCallback) {\n        state.eMIs.add(msgObj.id);\n        state.messagesCallback(msgObj.data);\n      }\n    });\n    return PROMISE_RESOLVED_VOID;\n  });\n}\nexport function close(channelState) {\n  channelState.closed = true;\n  channelState.db.close();\n}\nexport function postMessage(channelState, messageJson) {\n  channelState.writeBlockPromise = channelState.writeBlockPromise.then(function () {\n    return writeMessage(channelState.db, channelState.uuid, messageJson);\n  }).then(function () {\n    if (randomInt(0, 10) === 0) {\n      /* await (do not await) */\n      cleanOldMessages(channelState);\n    }\n  });\n  return channelState.writeBlockPromise;\n}\nexport function onMessage(channelState, fn, time) {\n  channelState.messagesCallbackTime = time;\n  channelState.messagesCallback = fn;\n  readNewMessages(channelState);\n}\nexport function canBeUsed() {\n  return !!getIdb();\n}\nexport function averageResponseTime(options) {\n  return options.idb.fallbackInterval * 2;\n}\nexport var IndexedDBMethod = {\n  create: create,\n  close: close,\n  onMessage: onMessage,\n  postMessage: postMessage,\n  canBeUsed: canBeUsed,\n  type: type,\n  averageResponseTime: averageResponseTime,\n  microSeconds: microSeconds\n};","/**\n * A localStorage-only method which uses localstorage and its 'storage'-event\n * This does not work inside webworkers because they have no access to localstorage\n * This is basically implemented to support IE9 or your grandmother's toaster.\n * @link https://caniuse.com/#feat=namevalue-storage\n * @link https://caniuse.com/#feat=indexeddb\n */\n\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options.js';\nimport { sleep, randomToken, microSeconds as micro } from '../util.js';\nexport var microSeconds = micro;\nvar KEY_PREFIX = 'pubkey.broadcastChannel-';\nexport var type = 'localstorage';\n\n/**\n * copied from crosstab\n * @link https://github.com/tejacques/crosstab/blob/master/src/crosstab.js#L32\n */\nexport function getLocalStorage() {\n  var localStorage;\n  if (typeof window === 'undefined') return null;\n  try {\n    localStorage = window.localStorage;\n    localStorage = window['ie8-eventlistener/storage'] || window.localStorage;\n  } catch (e) {\n    // New versions of Firefox throw a Security exception\n    // if cookies are disabled. See\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=1028153\n  }\n  return localStorage;\n}\nexport function storageKey(channelName) {\n  return KEY_PREFIX + channelName;\n}\n\n/**\n* writes the new message to the storage\n* and fires the storage-event so other readers can find it\n*/\nexport function postMessage(channelState, messageJson) {\n  return new Promise(function (res) {\n    sleep().then(function () {\n      var key = storageKey(channelState.channelName);\n      var writeObj = {\n        token: randomToken(),\n        time: new Date().getTime(),\n        data: messageJson,\n        uuid: channelState.uuid\n      };\n      var value = JSON.stringify(writeObj);\n      getLocalStorage().setItem(key, value);\n\n      /**\n       * StorageEvent does not fire the 'storage' event\n       * in the window that changes the state of the local storage.\n       * So we fire it manually\n       */\n      var ev = document.createEvent('Event');\n      ev.initEvent('storage', true, true);\n      ev.key = key;\n      ev.newValue = value;\n      window.dispatchEvent(ev);\n      res();\n    });\n  });\n}\nexport function addStorageEventListener(channelName, fn) {\n  var key = storageKey(channelName);\n  var listener = function listener(ev) {\n    if (ev.key === key) {\n      fn(JSON.parse(ev.newValue));\n    }\n  };\n  window.addEventListener('storage', listener);\n  return listener;\n}\nexport function removeStorageEventListener(listener) {\n  window.removeEventListener('storage', listener);\n}\nexport function create(channelName, options) {\n  options = fillOptionsWithDefaults(options);\n  if (!canBeUsed()) {\n    throw new Error('BroadcastChannel: localstorage cannot be used');\n  }\n  var uuid = randomToken();\n\n  /**\n   * eMIs\n   * contains all messages that have been emitted before\n   * @type {ObliviousSet}\n   */\n  var eMIs = new ObliviousSet(options.localstorage.removeTimeout);\n  var state = {\n    channelName: channelName,\n    uuid: uuid,\n    eMIs: eMIs // emittedMessagesIds\n  };\n\n  state.listener = addStorageEventListener(channelName, function (msgObj) {\n    if (!state.messagesCallback) return; // no listener\n    if (msgObj.uuid === uuid) return; // own message\n    if (!msgObj.token || eMIs.has(msgObj.token)) return; // already emitted\n    if (msgObj.data.time && msgObj.data.time < state.messagesCallbackTime) return; // too old\n\n    eMIs.add(msgObj.token);\n    state.messagesCallback(msgObj.data);\n  });\n  return state;\n}\nexport function close(channelState) {\n  removeStorageEventListener(channelState.listener);\n}\nexport function onMessage(channelState, fn, time) {\n  channelState.messagesCallbackTime = time;\n  channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n  var ls = getLocalStorage();\n  if (!ls) return false;\n  try {\n    var key = '__broadcastchannel_check';\n    ls.setItem(key, 'works');\n    ls.removeItem(key);\n  } catch (e) {\n    // Safari 10 in private mode will not allow write access to local\n    // storage and fail with a QuotaExceededError. See\n    // https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API#Private_Browsing_Incognito_modes\n    return false;\n  }\n  return true;\n}\nexport function averageResponseTime() {\n  var defaultTime = 120;\n  var userAgent = navigator.userAgent.toLowerCase();\n  if (userAgent.includes('safari') && !userAgent.includes('chrome')) {\n    // safari is much slower so this time is higher\n    return defaultTime * 2;\n  }\n  return defaultTime;\n}\nexport var LocalstorageMethod = {\n  create: create,\n  close: close,\n  onMessage: onMessage,\n  postMessage: postMessage,\n  canBeUsed: canBeUsed,\n  type: type,\n  averageResponseTime: averageResponseTime,\n  microSeconds: microSeconds\n};","import { microSeconds as micro } from '../util.js';\nexport var microSeconds = micro;\nexport var type = 'simulate';\nvar SIMULATE_CHANNELS = new Set();\nexport function create(channelName) {\n  var state = {\n    name: channelName,\n    messagesCallback: null\n  };\n  SIMULATE_CHANNELS.add(state);\n  return state;\n}\nexport function close(channelState) {\n  SIMULATE_CHANNELS[\"delete\"](channelState);\n}\nexport function postMessage(channelState, messageJson) {\n  return new Promise(function (res) {\n    return setTimeout(function () {\n      var channelArray = Array.from(SIMULATE_CHANNELS);\n      channelArray.filter(function (channel) {\n        return channel.name === channelState.name;\n      }).filter(function (channel) {\n        return channel !== channelState;\n      }).filter(function (channel) {\n        return !!channel.messagesCallback;\n      }).forEach(function (channel) {\n        return channel.messagesCallback(messageJson);\n      });\n      res();\n    }, 5);\n  });\n}\nexport function onMessage(channelState, fn) {\n  channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n  return true;\n}\nexport function averageResponseTime() {\n  return 5;\n}\nexport var SimulateMethod = {\n  create: create,\n  close: close,\n  onMessage: onMessage,\n  postMessage: postMessage,\n  canBeUsed: canBeUsed,\n  type: type,\n  averageResponseTime: averageResponseTime,\n  microSeconds: microSeconds\n};","import { NativeMethod } from './methods/native.js';\nimport { IndexedDBMethod } from './methods/indexed-db.js';\nimport { LocalstorageMethod } from './methods/localstorage.js';\nimport { SimulateMethod } from './methods/simulate.js';\n// the line below will be removed from es5/browser builds\n\n// order is important\nvar METHODS = [NativeMethod,\n// fastest\nIndexedDBMethod, LocalstorageMethod];\nexport function chooseMethod(options) {\n  var chooseMethods = [].concat(options.methods, METHODS).filter(Boolean);\n\n  // the line below will be removed from es5/browser builds\n\n  // directly chosen\n  if (options.type) {\n    if (options.type === 'simulate') {\n      // only use simulate-method if directly chosen\n      return SimulateMethod;\n    }\n    var ret = chooseMethods.find(function (m) {\n      return m.type === options.type;\n    });\n    if (!ret) throw new Error('method-type ' + options.type + ' not found');else return ret;\n  }\n\n  /**\n   * if no webworker support is needed,\n   * remove idb from the list so that localstorage will be chosen\n   */\n  if (!options.webWorkerSupport) {\n    chooseMethods = chooseMethods.filter(function (m) {\n      return m.type !== 'idb';\n    });\n  }\n  var useMethod = chooseMethods.find(function (method) {\n    return method.canBeUsed();\n  });\n  if (!useMethod) {\n    throw new Error(\"No usable method found in \" + JSON.stringify(METHODS.map(function (m) {\n      return m.type;\n    })));\n  } else {\n    return useMethod;\n  }\n}","import { isPromise, PROMISE_RESOLVED_FALSE, PROMISE_RESOLVED_VOID } from './util.js';\nimport { chooseMethod } from './method-chooser.js';\nimport { fillOptionsWithDefaults } from './options.js';\n\n/**\n * Contains all open channels,\n * used in tests to ensure everything is closed.\n */\nexport var OPEN_BROADCAST_CHANNELS = new Set();\nvar lastId = 0;\nexport var BroadcastChannel = function BroadcastChannel(name, options) {\n  // identifier of the channel to debug stuff\n  this.id = lastId++;\n  OPEN_BROADCAST_CHANNELS.add(this);\n  this.name = name;\n  if (ENFORCED_OPTIONS) {\n    options = ENFORCED_OPTIONS;\n  }\n  this.options = fillOptionsWithDefaults(options);\n  this.method = chooseMethod(this.options);\n\n  // isListening\n  this._iL = false;\n\n  /**\n   * _onMessageListener\n   * setting onmessage twice,\n   * will overwrite the first listener\n   */\n  this._onML = null;\n\n  /**\n   * _addEventListeners\n   */\n  this._addEL = {\n    message: [],\n    internal: []\n  };\n\n  /**\n   * Unsent message promises\n   * where the sending is still in progress\n   * @type {Set<Promise>}\n   */\n  this._uMP = new Set();\n\n  /**\n   * _beforeClose\n   * array of promises that will be awaited\n   * before the channel is closed\n   */\n  this._befC = [];\n\n  /**\n   * _preparePromise\n   */\n  this._prepP = null;\n  _prepareChannel(this);\n};\n\n// STATICS\n\n/**\n * used to identify if someone overwrites\n * window.BroadcastChannel with this\n * See methods/native.js\n */\nBroadcastChannel._pubkey = true;\n\n/**\n * clears the tmp-folder if is node\n * @return {Promise<boolean>} true if has run, false if not node\n */\nexport function clearNodeFolder(options) {\n  options = fillOptionsWithDefaults(options);\n  var method = chooseMethod(options);\n  if (method.type === 'node') {\n    return method.clearNodeFolder().then(function () {\n      return true;\n    });\n  } else {\n    return PROMISE_RESOLVED_FALSE;\n  }\n}\n\n/**\n * if set, this method is enforced,\n * no mather what the options are\n */\nvar ENFORCED_OPTIONS;\nexport function enforceOptions(options) {\n  ENFORCED_OPTIONS = options;\n}\n\n// PROTOTYPE\nBroadcastChannel.prototype = {\n  postMessage: function postMessage(msg) {\n    if (this.closed) {\n      throw new Error('BroadcastChannel.postMessage(): ' + 'Cannot post message after channel has closed ' +\n      /**\n       * In the past when this error appeared, it was really hard to debug.\n       * So now we log the msg together with the error so it at least\n       * gives some clue about where in your application this happens.\n       */\n      JSON.stringify(msg));\n    }\n    return _post(this, 'message', msg);\n  },\n  postInternal: function postInternal(msg) {\n    return _post(this, 'internal', msg);\n  },\n  set onmessage(fn) {\n    var time = this.method.microSeconds();\n    var listenObj = {\n      time: time,\n      fn: fn\n    };\n    _removeListenerObject(this, 'message', this._onML);\n    if (fn && typeof fn === 'function') {\n      this._onML = listenObj;\n      _addListenerObject(this, 'message', listenObj);\n    } else {\n      this._onML = null;\n    }\n  },\n  addEventListener: function addEventListener(type, fn) {\n    var time = this.method.microSeconds();\n    var listenObj = {\n      time: time,\n      fn: fn\n    };\n    _addListenerObject(this, type, listenObj);\n  },\n  removeEventListener: function removeEventListener(type, fn) {\n    var obj = this._addEL[type].find(function (obj) {\n      return obj.fn === fn;\n    });\n    _removeListenerObject(this, type, obj);\n  },\n  close: function close() {\n    var _this = this;\n    if (this.closed) {\n      return;\n    }\n    OPEN_BROADCAST_CHANNELS[\"delete\"](this);\n    this.closed = true;\n    var awaitPrepare = this._prepP ? this._prepP : PROMISE_RESOLVED_VOID;\n    this._onML = null;\n    this._addEL.message = [];\n    return awaitPrepare\n    // wait until all current sending are processed\n    .then(function () {\n      return Promise.all(Array.from(_this._uMP));\n    })\n    // run before-close hooks\n    .then(function () {\n      return Promise.all(_this._befC.map(function (fn) {\n        return fn();\n      }));\n    })\n    // close the channel\n    .then(function () {\n      return _this.method.close(_this._state);\n    });\n  },\n  get type() {\n    return this.method.type;\n  },\n  get isClosed() {\n    return this.closed;\n  }\n};\n\n/**\n * Post a message over the channel\n * @returns {Promise} that resolved when the message sending is done\n */\nfunction _post(broadcastChannel, type, msg) {\n  var time = broadcastChannel.method.microSeconds();\n  var msgObj = {\n    time: time,\n    type: type,\n    data: msg\n  };\n  var awaitPrepare = broadcastChannel._prepP ? broadcastChannel._prepP : PROMISE_RESOLVED_VOID;\n  return awaitPrepare.then(function () {\n    var sendPromise = broadcastChannel.method.postMessage(broadcastChannel._state, msgObj);\n\n    // add/remove to unsent messages list\n    broadcastChannel._uMP.add(sendPromise);\n    sendPromise[\"catch\"]().then(function () {\n      return broadcastChannel._uMP[\"delete\"](sendPromise);\n    });\n    return sendPromise;\n  });\n}\nfunction _prepareChannel(channel) {\n  var maybePromise = channel.method.create(channel.name, channel.options);\n  if (isPromise(maybePromise)) {\n    channel._prepP = maybePromise;\n    maybePromise.then(function (s) {\n      // used in tests to simulate slow runtime\n      /*if (channel.options.prepareDelay) {\n           await new Promise(res => setTimeout(res, this.options.prepareDelay));\n      }*/\n      channel._state = s;\n    });\n  } else {\n    channel._state = maybePromise;\n  }\n}\nfunction _hasMessageListeners(channel) {\n  if (channel._addEL.message.length > 0) return true;\n  if (channel._addEL.internal.length > 0) return true;\n  return false;\n}\nfunction _addListenerObject(channel, type, obj) {\n  channel._addEL[type].push(obj);\n  _startListening(channel);\n}\nfunction _removeListenerObject(channel, type, obj) {\n  channel._addEL[type] = channel._addEL[type].filter(function (o) {\n    return o !== obj;\n  });\n  _stopListening(channel);\n}\nfunction _startListening(channel) {\n  if (!channel._iL && _hasMessageListeners(channel)) {\n    // someone is listening, start subscribing\n\n    var listenerFn = function listenerFn(msgObj) {\n      channel._addEL[msgObj.type].forEach(function (listenerObject) {\n        /**\n         * Getting the current time in JavaScript has no good precision.\n         * So instead of only listening to events that happened 'after' the listener\n         * was added, we also listen to events that happened 100ms before it.\n         * This ensures that when another process, like a WebWorker, sends events\n         * we do not miss them out because their timestamp is a bit off compared to the main process.\n         * Not doing this would make messages missing when we send data directly after subscribing and awaiting a response.\n         * @link https://johnresig.com/blog/accuracy-of-javascript-time/\n         */\n        var hundredMsInMicro = 100 * 1000;\n        var minMessageTime = listenerObject.time - hundredMsInMicro;\n        if (msgObj.time >= minMessageTime) {\n          listenerObject.fn(msgObj.data);\n        }\n      });\n    };\n    var time = channel.method.microSeconds();\n    if (channel._prepP) {\n      channel._prepP.then(function () {\n        channel._iL = true;\n        channel.method.onMessage(channel._state, listenerFn, time);\n      });\n    } else {\n      channel._iL = true;\n      channel.method.onMessage(channel._state, listenerFn, time);\n    }\n  }\n}\nfunction _stopListening(channel) {\n  if (channel._iL && !_hasMessageListeners(channel)) {\n    // no one is listening, stop subscribing\n    channel._iL = false;\n    var time = channel.method.microSeconds();\n    channel.method.onMessage(channel._state, null, time);\n  }\n}","import { addBrowser } from './browser.js';\nimport { addNode } from './node.js';\n\n/**\n * Use the code directly to prevent import problems\n * with the detect-node package.\n * @link https://github.com/iliakan/detect-node/blob/master/index.js\n */\nvar isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\nvar USE_METHOD = isNode ? addNode : addBrowser;\nvar LISTENERS = new Set();\nvar startedListening = false;\nfunction startListening() {\n  if (startedListening) {\n    return;\n  }\n  startedListening = true;\n  USE_METHOD(runAll);\n}\nexport function add(fn) {\n  startListening();\n  if (typeof fn !== 'function') {\n    throw new Error('Listener is no function');\n  }\n  LISTENERS.add(fn);\n  var addReturn = {\n    remove: function remove() {\n      return LISTENERS[\"delete\"](fn);\n    },\n    run: function run() {\n      LISTENERS[\"delete\"](fn);\n      return fn();\n    }\n  };\n  return addReturn;\n}\nexport function runAll() {\n  var promises = [];\n  LISTENERS.forEach(function (fn) {\n    promises.push(fn());\n    LISTENERS[\"delete\"](fn);\n  });\n  return Promise.all(promises);\n}\nexport function removeAll() {\n  LISTENERS.clear();\n}\nexport function getSize() {\n  return LISTENERS.size;\n}","export function addNode(fn) {\n  process.on('exit', function () {\n    return fn();\n  });\n\n  /**\n   * on the following events,\n   * the process will not end if there are\n   * event-handlers attached,\n   * therefore we have to call process.exit()\n   */\n  process.on('beforeExit', function () {\n    return fn().then(function () {\n      return process.exit();\n    });\n  });\n  // catches ctrl+c event\n  process.on('SIGINT', function () {\n    return fn().then(function () {\n      return process.exit();\n    });\n  });\n  // catches uncaught exceptions\n  process.on('uncaughtException', function (err) {\n    return fn().then(function () {\n      console.trace(err);\n      process.exit(101);\n    });\n  });\n}","/* global WorkerGlobalScope */\n\nexport function addBrowser(fn) {\n  if (typeof WorkerGlobalScope === 'function' && self instanceof WorkerGlobalScope) {\n    /**\n     * Because killing a worker does directly stop the excution\n     * of the code, our only chance is to overwrite the close function\n     * which could work some times.\n     * @link https://stackoverflow.com/q/72903255/3443137\n     */\n    var oldClose = self.close.bind(self);\n    self.close = function () {\n      fn();\n      return oldClose();\n    };\n  } else {\n    /**\n     * if we are on react-native, there is no window.addEventListener\n     * @link https://github.com/pubkey/unload/issues/6\n     */\n    if (typeof window.addEventListener !== 'function') {\n      return;\n    }\n\n    /**\n     * for normal browser-windows, we use the beforeunload-event\n     */\n    window.addEventListener('beforeunload', function () {\n      fn();\n    }, true);\n\n    /**\n     * for iframes, we have to use the unload-event\n     * @link https://stackoverflow.com/q/47533670/3443137\n     */\n    window.addEventListener('unload', function () {\n      fn();\n    }, true);\n  }\n\n  /**\n   * TODO add fallback for safari-mobile\n   * @link https://stackoverflow.com/a/26193516/3443137\n   */\n}","import { add as unloadAdd } from 'unload';\n\n/**\n * sends and internal message over the broadcast-channel\n */\nexport function sendLeaderMessage(leaderElector, action) {\n  var msgJson = {\n    context: 'leader',\n    action: action,\n    token: leaderElector.token\n  };\n  return leaderElector.broadcastChannel.postInternal(msgJson);\n}\nexport function beLeader(leaderElector) {\n  leaderElector.isLeader = true;\n  leaderElector._hasLeader = true;\n  var unloadFn = unloadAdd(function () {\n    return leaderElector.die();\n  });\n  leaderElector._unl.push(unloadFn);\n  var isLeaderListener = function isLeaderListener(msg) {\n    if (msg.context === 'leader' && msg.action === 'apply') {\n      sendLeaderMessage(leaderElector, 'tell');\n    }\n    if (msg.context === 'leader' && msg.action === 'tell' && !leaderElector._dpLC) {\n      /**\n       * another instance is also leader!\n       * This can happen on rare events\n       * like when the CPU is at 100% for long time\n       * or the tabs are open very long and the browser throttles them.\n       * @link https://github.com/pubkey/broadcast-channel/issues/414\n       * @link https://github.com/pubkey/broadcast-channel/issues/385\n       */\n      leaderElector._dpLC = true;\n      leaderElector._dpL(); // message the lib user so the app can handle the problem\n      sendLeaderMessage(leaderElector, 'tell'); // ensure other leader also knows the problem\n    }\n  };\n\n  leaderElector.broadcastChannel.addEventListener('internal', isLeaderListener);\n  leaderElector._lstns.push(isLeaderListener);\n  return sendLeaderMessage(leaderElector, 'tell');\n}","import { randomToken } from './util.js';\nimport { sendLeaderMessage, beLeader } from './leader-election-util.js';\n\n/**\n * A faster version of the leader elector that uses the WebLock API\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Web_Locks_API\n */\nexport var LeaderElectionWebLock = function LeaderElectionWebLock(broadcastChannel, options) {\n  var _this = this;\n  this.broadcastChannel = broadcastChannel;\n  broadcastChannel._befC.push(function () {\n    return _this.die();\n  });\n  this._options = options;\n  this.isLeader = false;\n  this.isDead = false;\n  this.token = randomToken();\n  this._lstns = [];\n  this._unl = [];\n  this._dpL = function () {}; // onduplicate listener\n  this._dpLC = false; // true when onduplicate called\n\n  this._wKMC = {}; // stuff for cleanup\n\n  // lock name\n  this.lN = 'pubkey-bc||' + broadcastChannel.method.type + '||' + broadcastChannel.name;\n};\nLeaderElectionWebLock.prototype = {\n  hasLeader: function hasLeader() {\n    var _this2 = this;\n    return navigator.locks.query().then(function (locks) {\n      var relevantLocks = locks.held ? locks.held.filter(function (lock) {\n        return lock.name === _this2.lN;\n      }) : [];\n      if (relevantLocks && relevantLocks.length > 0) {\n        return true;\n      } else {\n        return false;\n      }\n    });\n  },\n  awaitLeadership: function awaitLeadership() {\n    var _this3 = this;\n    if (!this._wLMP) {\n      this._wKMC.c = new AbortController();\n      var returnPromise = new Promise(function (res, rej) {\n        _this3._wKMC.res = res;\n        _this3._wKMC.rej = rej;\n      });\n      this._wLMP = new Promise(function (res) {\n        navigator.locks.request(_this3.lN, {\n          signal: _this3._wKMC.c.signal\n        }, function () {\n          // if the lock resolved, we can drop the abort controller\n          _this3._wKMC.c = undefined;\n          beLeader(_this3);\n          res();\n          return returnPromise;\n        })[\"catch\"](function () {});\n      });\n    }\n    return this._wLMP;\n  },\n  set onduplicate(_fn) {\n    // Do nothing because there are no duplicates in the WebLock version\n  },\n  die: function die() {\n    var _this4 = this;\n    this._lstns.forEach(function (listener) {\n      return _this4.broadcastChannel.removeEventListener('internal', listener);\n    });\n    this._lstns = [];\n    this._unl.forEach(function (uFn) {\n      return uFn.remove();\n    });\n    this._unl = [];\n    if (this.isLeader) {\n      this.isLeader = false;\n    }\n    this.isDead = true;\n    if (this._wKMC.res) {\n      this._wKMC.res();\n    }\n    if (this._wKMC.c) {\n      this._wKMC.c.abort('LeaderElectionWebLock.die() called');\n    }\n    return sendLeaderMessage(this, 'death');\n  }\n};","import { sleep, randomToken, PROMISE_RESOLVED_VOID, PROMISE_RESOLVED_TRUE, supportsWebLockAPI } from './util.js';\nimport { sendLeaderMessage, beLeader } from './leader-election-util.js';\nimport { LeaderElectionWebLock } from './leader-election-web-lock.js';\nvar LeaderElection = function LeaderElection(broadcastChannel, options) {\n  var _this = this;\n  this.broadcastChannel = broadcastChannel;\n  this._options = options;\n  this.isLeader = false;\n  this._hasLeader = false;\n  this.isDead = false;\n  this.token = randomToken();\n\n  /**\n   * Apply Queue,\n   * used to ensure we do not run applyOnce()\n   * in parallel.\n   */\n  this._aplQ = PROMISE_RESOLVED_VOID;\n  // amount of unfinished applyOnce() calls\n  this._aplQC = 0;\n\n  // things to clean up\n  this._unl = []; // _unloads\n  this._lstns = []; // _listeners\n  this._dpL = function () {}; // onduplicate listener\n  this._dpLC = false; // true when onduplicate called\n\n  /**\n   * Even when the own instance is not applying,\n   * we still listen to messages to ensure the hasLeader flag\n   * is set correctly.\n   */\n  var hasLeaderListener = function hasLeaderListener(msg) {\n    if (msg.context === 'leader') {\n      if (msg.action === 'death') {\n        _this._hasLeader = false;\n      }\n      if (msg.action === 'tell') {\n        _this._hasLeader = true;\n      }\n    }\n  };\n  this.broadcastChannel.addEventListener('internal', hasLeaderListener);\n  this._lstns.push(hasLeaderListener);\n};\nLeaderElection.prototype = {\n  hasLeader: function hasLeader() {\n    return Promise.resolve(this._hasLeader);\n  },\n  /**\n   * Returns true if the instance is leader,\n   * false if not.\n   * @async\n   */\n  applyOnce: function applyOnce(\n  // true if the applyOnce() call came from the fallbackInterval cycle\n  isFromFallbackInterval) {\n    var _this2 = this;\n    if (this.isLeader) {\n      return sleep(0, true);\n    }\n    if (this.isDead) {\n      return sleep(0, false);\n    }\n\n    /**\n     * Already applying more than once,\n     * -> wait for the apply queue to be finished.\n     */\n    if (this._aplQC > 1) {\n      return this._aplQ;\n    }\n\n    /**\n     * Add a new apply-run\n     */\n    var applyRun = function applyRun() {\n      /**\n       * Optimization shortcuts.\n       * Directly return if a previous run\n       * has already elected a leader.\n       */\n      if (_this2.isLeader) {\n        return PROMISE_RESOLVED_TRUE;\n      }\n      var stopCriteria = false;\n      var stopCriteriaPromiseResolve;\n      /**\n       * Resolves when a stop criteria is reached.\n       * Uses as a performance shortcut so we do not\n       * have to await the responseTime when it is already clear\n       * that the election failed.\n       */\n      var stopCriteriaPromise = new Promise(function (res) {\n        stopCriteriaPromiseResolve = function stopCriteriaPromiseResolve() {\n          stopCriteria = true;\n          res();\n        };\n      });\n      var handleMessage = function handleMessage(msg) {\n        if (msg.context === 'leader' && msg.token != _this2.token) {\n          if (msg.action === 'apply') {\n            // other is applying\n            if (msg.token > _this2.token) {\n              /**\n               * other has higher token\n               * -> stop applying and let other become leader.\n               */\n              stopCriteriaPromiseResolve();\n            }\n          }\n          if (msg.action === 'tell') {\n            // other is already leader\n            stopCriteriaPromiseResolve();\n            _this2._hasLeader = true;\n          }\n        }\n      };\n      _this2.broadcastChannel.addEventListener('internal', handleMessage);\n\n      /**\n       * If the applyOnce() call came from the fallbackInterval,\n       * we can assume that the election runs in the background and\n       * not critical process is waiting for it.\n       * When this is true, we give the other instances\n       * more time to answer to messages in the election cycle.\n       * This makes it less likely to elect duplicate leaders.\n       * But also it takes longer which is not a problem because we anyway\n       * run in the background.\n       */\n      var waitForAnswerTime = isFromFallbackInterval ? _this2._options.responseTime * 4 : _this2._options.responseTime;\n      return sendLeaderMessage(_this2, 'apply') // send out that this one is applying\n      .then(function () {\n        return Promise.race([sleep(waitForAnswerTime), stopCriteriaPromise.then(function () {\n          return Promise.reject(new Error());\n        })]);\n      })\n      // send again in case another instance was just created\n      .then(function () {\n        return sendLeaderMessage(_this2, 'apply');\n      })\n      // let others time to respond\n      .then(function () {\n        return Promise.race([sleep(waitForAnswerTime), stopCriteriaPromise.then(function () {\n          return Promise.reject(new Error());\n        })]);\n      })[\"catch\"](function () {}).then(function () {\n        _this2.broadcastChannel.removeEventListener('internal', handleMessage);\n        if (!stopCriteria) {\n          // no stop criteria -> own is leader\n          return beLeader(_this2).then(function () {\n            return true;\n          });\n        } else {\n          // other is leader\n          return false;\n        }\n      });\n    };\n    this._aplQC = this._aplQC + 1;\n    this._aplQ = this._aplQ.then(function () {\n      return applyRun();\n    }).then(function () {\n      _this2._aplQC = _this2._aplQC - 1;\n    });\n    return this._aplQ.then(function () {\n      return _this2.isLeader;\n    });\n  },\n  awaitLeadership: function awaitLeadership() {\n    if ( /* _awaitLeadershipPromise */\n    !this._aLP) {\n      this._aLP = _awaitLeadershipOnce(this);\n    }\n    return this._aLP;\n  },\n  set onduplicate(fn) {\n    this._dpL = fn;\n  },\n  die: function die() {\n    var _this3 = this;\n    this._lstns.forEach(function (listener) {\n      return _this3.broadcastChannel.removeEventListener('internal', listener);\n    });\n    this._lstns = [];\n    this._unl.forEach(function (uFn) {\n      return uFn.remove();\n    });\n    this._unl = [];\n    if (this.isLeader) {\n      this._hasLeader = false;\n      this.isLeader = false;\n    }\n    this.isDead = true;\n    return sendLeaderMessage(this, 'death');\n  }\n};\n\n/**\n * @param leaderElector {LeaderElector}\n */\nfunction _awaitLeadershipOnce(leaderElector) {\n  if (leaderElector.isLeader) {\n    return PROMISE_RESOLVED_VOID;\n  }\n  return new Promise(function (res) {\n    var resolved = false;\n    function finish() {\n      if (resolved) {\n        return;\n      }\n      resolved = true;\n      leaderElector.broadcastChannel.removeEventListener('internal', whenDeathListener);\n      res(true);\n    }\n\n    // try once now\n    leaderElector.applyOnce().then(function () {\n      if (leaderElector.isLeader) {\n        finish();\n      }\n    });\n\n    /**\n     * Try on fallbackInterval\n     * @recursive\n     */\n    var tryOnFallBack = function tryOnFallBack() {\n      return sleep(leaderElector._options.fallbackInterval).then(function () {\n        if (leaderElector.isDead || resolved) {\n          return;\n        }\n        if (leaderElector.isLeader) {\n          finish();\n        } else {\n          return leaderElector.applyOnce(true).then(function () {\n            if (leaderElector.isLeader) {\n              finish();\n            } else {\n              tryOnFallBack();\n            }\n          });\n        }\n      });\n    };\n    tryOnFallBack();\n\n    // try when other leader dies\n    var whenDeathListener = function whenDeathListener(msg) {\n      if (msg.context === 'leader' && msg.action === 'death') {\n        leaderElector._hasLeader = false;\n        leaderElector.applyOnce().then(function () {\n          if (leaderElector.isLeader) {\n            finish();\n          }\n        });\n      }\n    };\n    leaderElector.broadcastChannel.addEventListener('internal', whenDeathListener);\n    leaderElector._lstns.push(whenDeathListener);\n  });\n}\nfunction fillOptionsWithDefaults(options, channel) {\n  if (!options) options = {};\n  options = JSON.parse(JSON.stringify(options));\n  if (!options.fallbackInterval) {\n    options.fallbackInterval = 3000;\n  }\n  if (!options.responseTime) {\n    options.responseTime = channel.method.averageResponseTime(channel.options);\n  }\n  return options;\n}\nexport function createLeaderElection(channel, options) {\n  if (channel._leaderElector) {\n    throw new Error('BroadcastChannel already has a leader-elector');\n  }\n  options = fillOptionsWithDefaults(options, channel);\n  var elector = supportsWebLockAPI() ? new LeaderElectionWebLock(channel, options) : new LeaderElection(channel, options);\n  channel._befC.push(function () {\n    return elector.die();\n  });\n  channel._leaderElector = elector;\n  return elector;\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { BroadcastChannel } from 'broadcast-channel';\nimport { isBrowser } from '../features';\nimport {\n  ServiceManagerOptions, ServiceInterface\n} from '../core/types';\nimport {\n  Token, Tokens, \n  EVENT_ADDED, EVENT_REMOVED, EVENT_RENEWED, EVENT_SET_STORAGE, TokenManagerInterface\n} from '../oidc/types';\nimport { AuthSdkError } from '../errors';\n\nexport type SyncMessage = {\n  type: string;\n  key?: string;\n  token?: Token;\n  oldToken?: Token;\n  storage?: Tokens;\n};\nexport class SyncStorageService implements ServiceInterface {\n  private tokenManager: TokenManagerInterface;\n  private options: ServiceManagerOptions;\n  private channel?: BroadcastChannel<SyncMessage>;\n  private started = false;\n  private enablePostMessage = true;\n\n  constructor(tokenManager: TokenManagerInterface, options: ServiceManagerOptions = {}) {\n    this.tokenManager = tokenManager;\n    this.options = options;\n    this.onTokenAddedHandler = this.onTokenAddedHandler.bind(this);\n    this.onTokenRemovedHandler = this.onTokenRemovedHandler.bind(this);\n    this.onTokenRenewedHandler = this.onTokenRenewedHandler.bind(this);\n    this.onSetStorageHandler = this.onSetStorageHandler.bind(this);\n    this.onSyncMessageHandler = this.onSyncMessageHandler.bind(this);\n  }\n\n  requiresLeadership() {\n    return false;\n  }\n\n  isStarted() {\n    return this.started;\n  }\n\n  canStart() {\n    return !!this.options.syncStorage && isBrowser() && !this.started;\n  }\n\n  async start() {\n    if (!this.canStart()) {\n      return;\n    }\n    \n    const { syncChannelName } = this.options;\n    try {\n      // BroadcastChannel throws if no supported method can be found\n      this.channel = new BroadcastChannel(syncChannelName as string);\n    } catch (err) {\n      throw new AuthSdkError('SyncStorageService is not supported in current browser.');\n    }\n\n    this.tokenManager.on(EVENT_ADDED, this.onTokenAddedHandler);\n    this.tokenManager.on(EVENT_REMOVED, this.onTokenRemovedHandler);\n    this.tokenManager.on(EVENT_RENEWED, this.onTokenRenewedHandler);\n    this.tokenManager.on(EVENT_SET_STORAGE, this.onSetStorageHandler);\n    this.channel.addEventListener('message', this.onSyncMessageHandler);\n    this.started = true;\n  }\n\n  async stop() {\n    if (this.started) {\n      this.tokenManager.off(EVENT_ADDED, this.onTokenAddedHandler);\n      this.tokenManager.off(EVENT_REMOVED, this.onTokenRemovedHandler);\n      this.tokenManager.off(EVENT_RENEWED, this.onTokenRenewedHandler);\n      this.tokenManager.off(EVENT_SET_STORAGE, this.onSetStorageHandler);\n      this.channel?.removeEventListener('message', this.onSyncMessageHandler);\n      await this.channel?.close();\n      this.channel = undefined;\n      this.started = false;\n    }\n  }\n\n  private onTokenAddedHandler(key: string, token: Token) {\n    if (!this.enablePostMessage) {\n      return;\n    }\n    this.channel?.postMessage({\n      type: EVENT_ADDED,\n      key,\n      token\n    });\n  }\n\n  private onTokenRemovedHandler(key: string, token: Token) {\n    if (!this.enablePostMessage) {\n      return;\n    }\n    this.channel?.postMessage({\n      type: EVENT_REMOVED,\n      key,\n      token\n    });\n  }\n\n  private onTokenRenewedHandler(key: string, token: Token, oldToken?: Token) {\n    if (!this.enablePostMessage) {\n      return;\n    }\n    this.channel?.postMessage({\n      type: EVENT_RENEWED,\n      key,\n      token,\n      oldToken\n    });\n  }\n\n  private onSetStorageHandler(storage: Tokens) {\n    this.channel?.postMessage({\n      type: EVENT_SET_STORAGE,\n      storage\n    });\n  }\n\n  /* eslint-disable complexity */\n  private onSyncMessageHandler(msg: SyncMessage) {\n    // Notes:\n    // 1. Using `enablePostMessage` flag here to prevent sync message loop.\n    //    If this flag is on, tokenManager event handlers do not post sync message.\n    // 2. IE11 has known issue with synchronization of LocalStorage cross tabs.\n    //    One workaround is to set empty event handler for `window.onstorage`.\n    //    But it's not 100% working, sometimes you still get old value from LocalStorage.\n    //    Better approch is to explicitly udpate LocalStorage with `setStorage`.\n\n    this.enablePostMessage = false;\n    switch (msg.type) {\n      case EVENT_SET_STORAGE:\n        this.tokenManager.getStorage().setStorage(msg.storage);\n        break;\n      case EVENT_ADDED:\n        this.tokenManager.emitAdded(msg.key!, msg.token!);\n        this.tokenManager.setExpireEventTimeout(msg.key!, msg.token!);\n        break;\n      case EVENT_REMOVED:\n        this.tokenManager.clearExpireEventTimeout(msg.key!);\n        this.tokenManager.emitRemoved(msg.key!, msg.token!);\n        break;\n      case EVENT_RENEWED:\n        this.tokenManager.emitRenewed(msg.key!, msg.token!, msg.oldToken);\n        break;\n      default:\n        break;\n    }\n    this.enablePostMessage = true;\n  }\n} ","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { ServiceInterface, ServiceManagerOptions } from '../core/types';\nimport {\n  BroadcastChannel,\n  createLeaderElection,\n  LeaderElector\n} from 'broadcast-channel';\nimport { isBrowser } from '../features';\n\ndeclare type OnLeaderHandler = (() => Promise<void>);\ndeclare type ServiceOptions = ServiceManagerOptions & {\n  onLeader?: OnLeaderHandler;\n};\n\nexport class LeaderElectionService implements ServiceInterface {\n  private options: ServiceOptions;\n  private channel?: BroadcastChannel;\n  private elector?: LeaderElector;\n  private started = false;\n\n  constructor(options: ServiceOptions = {}) {\n    this.options = options;\n    this.onLeaderDuplicate = this.onLeaderDuplicate.bind(this);\n    this.onLeader = this.onLeader.bind(this);\n  }\n\n  private onLeaderDuplicate() {\n  }\n\n  private async onLeader() {\n    await this.options.onLeader?.();\n  }\n\n  isLeader() {\n    return !!this.elector?.isLeader;\n  }\n\n  hasLeader() {\n    return !!this.elector?.hasLeader;\n  }\n\n  async start() {\n    if (this.canStart()) {\n      const { electionChannelName } = this.options;\n      this.channel = new BroadcastChannel(electionChannelName as string);\n      this.elector = createLeaderElection(this.channel);\n      this.elector.onduplicate = this.onLeaderDuplicate;\n      this.elector.awaitLeadership().then(this.onLeader);\n      this.started = true;\n    }\n  }\n\n  async stop() {\n    if (this.started) {\n      if (this.elector) {\n        await this.elector.die();\n        this.elector = undefined;\n      }\n      if (this.channel) {\n        // Workaround to fix error `Failed to execute 'postMessage' on 'BroadcastChannel': Channel is closed`\n        (this.channel as any).postInternal = () => Promise.resolve();\n        await this.channel.close();\n        this.channel = undefined;\n      }\n      this.started = false;\n    }\n  }\n\n  requiresLeadership() {\n    return false;\n  }\n\n  isStarted() {\n    return this.started;\n  }\n\n  canStart() {\n    return isBrowser() && !this.started;\n  }\n\n}\n","import { ServiceInterface, ServiceManagerOptions } from '../core/types';\nimport { TokenManagerInterface } from '../oidc/types';\nimport { isBrowser } from '../features';\n\nconst getNow = () => Math.floor(Date.now() / 1000);\n\nexport class RenewOnTabActivationService implements ServiceInterface {\n  private tokenManager: TokenManagerInterface;\n  private started = false;\n  private options: ServiceManagerOptions;\n  private lastHidden = -1;\n  onPageVisbilityChange: () => void;\n\n  constructor(tokenManager: TokenManagerInterface, options: ServiceManagerOptions = {}) {\n    this.tokenManager = tokenManager;\n    this.options = options;\n    // store this context for event handler\n    this.onPageVisbilityChange = this._onPageVisbilityChange.bind(this);\n  }\n\n  // do not use directly, use `onPageVisbilityChange` (with binded this context)\n  /* eslint complexity: [0, 10] */\n  private _onPageVisbilityChange () {\n    if (document.hidden) {\n      this.lastHidden = getNow();\n    }\n    // renew will only attempt if tab was inactive for duration\n    else if (this.lastHidden > 0 && (getNow() - this.lastHidden >= this.options.tabInactivityDuration!)) {\n      const { accessToken, idToken } = this.tokenManager.getTokensSync();\n      if (!!accessToken && this.tokenManager.hasExpired(accessToken)) {\n        const key = this.tokenManager.getStorageKeyByType('accessToken');\n        // Renew errors will emit an \"error\" event\n        this.tokenManager.renew(key).catch(() => {});\n      }\n      else if (!!idToken && this.tokenManager.hasExpired(idToken)) {\n        const key = this.tokenManager.getStorageKeyByType('idToken');\n        // Renew errors will emit an \"error\" event\n        this.tokenManager.renew(key).catch(() => {});\n      }\n    }\n  }\n\n  async start () {\n    if (this.canStart() && !!document) {\n      document.addEventListener('visibilitychange', this.onPageVisbilityChange);\n      this.started = true;\n    }\n  }\n\n  async stop () {\n    if (document) {\n      document.removeEventListener('visibilitychange', this.onPageVisbilityChange);\n      this.started = false;\n    }\n  }\n\n  canStart(): boolean {\n    return isBrowser() &&\n    !!this.options.autoRenew &&\n    !!this.options.renewOnTabActivation &&\n    !this.started;\n  }\n\n  requiresLeadership(): boolean {\n    return false;\n  }\n\n  isStarted(): boolean {\n    return this.started;\n  }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport {\n  OAuthTransactionMeta,\n  OAuthStorageManagerInterface,\n} from '../../oidc';\n\nimport {\n  ServiceManagerInterface,\n  ServiceInterface,\n  ServiceManagerOptions,\n  OktaAuthCoreInterface,\n  OktaAuthCoreOptions\n} from '../types';\nimport { AutoRenewService,\n  SyncStorageService,\n  LeaderElectionService,\n  RenewOnTabActivationService\n} from '../../services';\nimport { removeNils } from '../../util';\n\nconst AUTO_RENEW = 'autoRenew';\nconst SYNC_STORAGE = 'syncStorage';\nconst LEADER_ELECTION = 'leaderElection';\nconst RENEW_ON_TAB_ACTIVATION = 'renewOnTabActivation';\n\nexport class ServiceManager\n<\n  M extends OAuthTransactionMeta,\n  S extends OAuthStorageManagerInterface<M>,\n  O extends OktaAuthCoreOptions\n>\nimplements ServiceManagerInterface \n{\n  private sdk: OktaAuthCoreInterface<M, S, O>;\n  private options: ServiceManagerOptions;\n  private services: Map<string, ServiceInterface>;\n  private started: boolean;\n\n  private static knownServices = [AUTO_RENEW, SYNC_STORAGE, LEADER_ELECTION, RENEW_ON_TAB_ACTIVATION];\n\n  private static defaultOptions: ServiceManagerOptions = {\n    autoRenew: true,\n    autoRemove: true,\n    syncStorage: true,\n    renewOnTabActivation: true,\n    tabInactivityDuration: 1800,    // 30 mins in seconds\n  };\n\n  constructor(sdk: OktaAuthCoreInterface<M, S, O>, options: ServiceManagerOptions = {}) {\n    this.sdk = sdk;\n    this.onLeader = this.onLeader.bind(this);\n\n    // TODO: backwards compatibility, remove in next major version - OKTA-473815\n    const { autoRenew, autoRemove, syncStorage } = sdk.tokenManager.getOptions();\n    options.electionChannelName = options.electionChannelName || options.broadcastChannelName;\n    this.options = Object.assign({}, \n      ServiceManager.defaultOptions,\n      { autoRenew, autoRemove, syncStorage }, \n      {\n        electionChannelName: `${sdk.options.clientId}-election`,\n        syncChannelName: `${sdk.options.clientId}-sync`,\n      },\n      removeNils(options)\n    );\n\n    this.started = false;\n    this.services = new Map();\n\n    ServiceManager.knownServices.forEach(name => {\n      const svc = this.createService(name);\n      if (svc) {\n        this.services.set(name, svc);\n      }\n    });\n  }\n\n  private async onLeader() {\n    if (this.started) {\n      // Start services that requires leadership\n      await this.startServices();\n    }\n  }\n\n  isLeader() {\n    return (this.getService(LEADER_ELECTION) as LeaderElectionService)?.isLeader();\n  }\n\n  isLeaderRequired() {\n    return [...this.services.values()].some(srv => srv.canStart() && srv.requiresLeadership());\n  }\n\n  async start() {\n    if (this.started) {\n      return;     // noop if services have already started\n    }\n    await this.startServices();\n    this.started = true;\n  }\n  \n  async stop() {\n    await this.stopServices();\n    this.started = false;\n  }\n\n  getService(name: string): ServiceInterface | undefined {\n    return this.services.get(name);\n  }\n\n  private async startServices() {\n    for (const [name, srv] of this.services.entries()) {\n      if (this.canStartService(name, srv)) {\n        await srv.start();\n      }\n    }\n  }\n\n  private async stopServices() {\n    for (const srv of this.services.values()) {\n      await srv.stop();\n    }\n  }\n\n  // eslint-disable-next-line complexity\n  private canStartService(name: string, srv: ServiceInterface): boolean {\n    let canStart = srv.canStart() && !srv.isStarted();\n    // only start election if a leader is required\n    if (name === LEADER_ELECTION) {\n      canStart &&= this.isLeaderRequired();\n    } else if (srv.requiresLeadership()) {\n      canStart &&= this.isLeader();\n    }\n    return canStart;\n  }\n\n  private createService(name: string): ServiceInterface {\n    const tokenManager = this.sdk.tokenManager;\n\n    let service: ServiceInterface;\n    switch (name) {\n      case LEADER_ELECTION:\n        service = new LeaderElectionService({...this.options, onLeader: this.onLeader});\n        break;\n      case AUTO_RENEW:\n        service = new AutoRenewService(tokenManager, {...this.options});\n        break;\n      case SYNC_STORAGE:\n        service = new SyncStorageService(tokenManager, {...this.options});\n        break;\n      case RENEW_ON_TAB_ACTIVATION:\n        service = new RenewOnTabActivationService(tokenManager, {...this.options});\n        break;\n      default:\n        throw new Error(`Unknown service ${name}`);\n    }\n    return service;\n  }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n/* global window */\nimport { omit, getLink, toQueryString } from '../util';\nimport { get, post, httpRequest } from '../http';\n\nfunction sessionExists(sdk) {\n  return sdk.session.get()\n    .then(function(res) {\n      if (res.status === 'ACTIVE') {\n        return true;\n      }\n      return false;\n    })\n    .catch(function() {\n      return false;\n    });\n}\n\nfunction getSession(sdk) { \n  return get(sdk, '/api/v1/sessions/me', { withCredentials: true })\n  .then(function(session) {\n    var res = omit(session, '_links');\n\n    res.refresh = function() {\n      return post(sdk, getLink(session, 'refresh').href, {}, { withCredentials: true });\n    };\n\n    res.user = function() {\n      return get(sdk, getLink(session, 'user').href, { withCredentials: true });\n    };\n\n    return res;\n  })\n  .catch(function() {\n    // Return INACTIVE status on failure\n    return {status: 'INACTIVE'};\n  });\n}\n\nfunction closeSession(sdk) {\n  return httpRequest(sdk, {\n    url: sdk.getIssuerOrigin() + '/api/v1/sessions/me',\n    method: 'DELETE',\n    withCredentials: true\n  });\n}\n\nfunction refreshSession(sdk) {\n  return post(sdk, '/api/v1/sessions/me/lifecycle/refresh', {}, { withCredentials: true });\n}\n\nfunction setCookieAndRedirect(sdk, sessionToken, redirectUrl) {\n  redirectUrl = redirectUrl || window.location.href;\n  window.location.assign(sdk.getIssuerOrigin() + '/login/sessionCookieRedirect' +\n    toQueryString({\n      checkAccountSetupComplete: true,\n      token: sessionToken,\n      redirectUrl: redirectUrl\n    }));\n}\n\nexport {\n  sessionExists,\n  getSession,\n  closeSession,\n  refreshSession,\n  setCookieAndRedirect\n};\n","import { OktaAuthHttpInterface, OktaAuthHttpOptions } from '../http/types';\nimport { OktaAuthConstructor } from '../base/types';\nimport { createSessionApi } from './factory';\nimport {\n  OktaAuthSessionInterface, SessionAPI,\n} from './types';\nimport { StorageManagerInterface } from '../storage/types';\n\nexport function mixinSession\n<\n  S extends StorageManagerInterface = StorageManagerInterface,\n  O extends OktaAuthHttpOptions = OktaAuthHttpOptions,\n  TBase extends OktaAuthConstructor<OktaAuthHttpInterface<S, O>>\n    = OktaAuthConstructor<OktaAuthHttpInterface<S, O>>\n>\n(Base: TBase): TBase & OktaAuthConstructor<OktaAuthSessionInterface<S, O>>\n{\n  return class OktaAuthSession extends Base implements OktaAuthSessionInterface<S, O>\n  {\n    session: SessionAPI;\n\n    constructor(...args: any[]) {\n      super(...args);\n\n      this.session = createSessionApi(this);\n    }\n\n    // Ends the current Okta SSO session without redirecting to Okta.\n    closeSession(): Promise<boolean> {\n      return this.session.close() // DELETE /api/v1/sessions/me\n      .then(async () => {\n        // Clear all local tokens\n        this.clearStorage();\n        return true;\n      })\n      .catch(function(e) {\n        if (e.name === 'AuthApiError' && e.errorCode === 'E0000007') {\n          // Session does not exist or has already been closed\n          return false;\n        }\n        throw e;\n      });\n    }\n  };\n}\n","import { SessionAPI } from './types';\nimport { closeSession, getSession, refreshSession, sessionExists, setCookieAndRedirect } from './api';\nimport { OktaAuthBaseInterface } from '../base/types';\n\nexport function createSessionApi(sdk: OktaAuthBaseInterface): SessionAPI {\n  const session = {\n    close: closeSession.bind(null, sdk),\n    exists: sessionExists.bind(null, sdk),\n    get: getSession.bind(null, sdk),\n    refresh: refreshSession.bind(null, sdk),\n    setCookieAndRedirect: setCookieAndRedirect.bind(null, sdk)\n  };\n  return session;\n}\n","import { StorageManagerConstructor } from '../storage/types';\nimport { OktaAuthConstructor, OktaAuthOptionsConstructor } from '../base/types';\n\nimport { OktaAuthCoreInterface, OktaAuthCoreOptions } from './types';\nimport { createOktaAuthBase } from '../base';\nimport { mixinStorage } from '../storage/mixin';\nimport { mixinHttp } from '../http/mixin';\nimport { mixinOAuth } from '../oidc/mixin';\nimport {\n  OAuthStorageManagerInterface,\n  PKCETransactionMeta,\n  TransactionManagerConstructor,\n  TransactionManagerInterface\n} from '../oidc/types';\nimport { mixinCore } from './mixin';\nimport { mixinSession } from '../session/mixin';\n\nexport function createOktaAuthCore<\n  M extends PKCETransactionMeta = PKCETransactionMeta,\n  S extends OAuthStorageManagerInterface<M> = OAuthStorageManagerInterface<M>,\n  O extends OktaAuthCoreOptions = OktaAuthCoreOptions,\n  TM extends TransactionManagerInterface = TransactionManagerInterface\n>(\n  StorageManagerConstructor: StorageManagerConstructor<S>,\n  OptionsConstructor: OktaAuthOptionsConstructor<O>,\n  TransactionManagerConstructor: TransactionManagerConstructor<TM>\n): OktaAuthConstructor<OktaAuthCoreInterface<M, S, O, TM>>\n{\n  const Base = createOktaAuthBase(OptionsConstructor);\n  const WithStorage = mixinStorage<S, O>(Base, StorageManagerConstructor);\n  const WithHttp = mixinHttp<S, O>(WithStorage);\n  const WithSession = mixinSession<S, O>(WithHttp);\n  const WithOAuth = mixinOAuth<M, S, O, TM>(WithSession, TransactionManagerConstructor);\n  const Core = mixinCore<M, S, O, TM>(WithOAuth);\n  return Core;\n}\n","\n\n// Do not use this type in code, so it won't be emitted in the declaration output\nimport { removeNils } from '../util';\n\nimport * as features from '../features';\nimport * as constants from '../constants';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore \n// Do not use this type in code, so it won't be emitted in the declaration output\nimport Emitter from 'tiny-emitter';\n\nimport {\n  EventEmitter,\n  OktaAuthConstructor,\n  OktaAuthBaseInterface,\n  OktaAuthBaseOptions,\n  OktaAuthOptionsConstructor, \n  FeaturesAPI,\n} from './types';\n\nexport function createOktaAuthBase\n<\n  O extends OktaAuthBaseOptions = OktaAuthBaseOptions,\n>\n(\n  OptionsConstructor: OktaAuthOptionsConstructor<O>\n): OktaAuthConstructor<OktaAuthBaseInterface<O>>\n{\n  class OktaAuthBase implements OktaAuthBaseInterface<O>\n  {\n    options: O;\n    emitter: EventEmitter;\n    features: FeaturesAPI;\n    static features: FeaturesAPI = features;\n    static constants = constants;\n    \n    constructor(...args: any[]) {\n      const options = new OptionsConstructor(args.length ? args[0] || {} : {});\n      this.options = removeNils(options) as O; // clear out undefined values\n      this.emitter = new Emitter();\n      this.features = features;\n    }\n  }\n\n  // Hoist feature detection functions to prototype & static type\n  OktaAuthBase.features = OktaAuthBase.prototype.features = features;\n\n  // Also hoist constants for CommonJS users\n  Object.assign(OktaAuthBase, {\n    constants\n  });\n\n  return OktaAuthBase;\n}\n","import { OktaAuthBaseInterface, OktaAuthConstructor } from '../base/types';\nimport {\n  OktaAuthStorageInterface,\n  OktaAuthStorageOptions,\n  StorageManagerConstructor,\n  StorageManagerInterface,\n} from './types';\n\nexport function mixinStorage\n<\n  S extends StorageManagerInterface = StorageManagerInterface,\n  O extends OktaAuthStorageOptions = OktaAuthStorageOptions,\n  TBase extends OktaAuthConstructor<OktaAuthBaseInterface<O>> = OktaAuthConstructor<OktaAuthBaseInterface<O>>\n>\n(\n  Base: TBase, StorageManager: StorageManagerConstructor<S>\n): TBase & OktaAuthConstructor<OktaAuthStorageInterface<S, O>>\n{\n  return class OktaAuthStorage extends Base implements OktaAuthStorageInterface<S, O>\n  {\n    storageManager: S;\n    constructor(...args: any[]) {\n      super(...args);\n      const { storageManager, cookies, storageUtil } = this.options;\n      this.storageManager = new StorageManager(storageManager!, cookies!, storageUtil!);\n    }\n    clearStorage(): void {\n      // override in subclass\n    }\n  };\n}\n","import { OktaAuthStorageInterface, StorageManagerInterface } from '../storage/types';\nimport { OktaAuthConstructor } from '../base/types';\nimport {\n  HttpAPI,\n  OktaAuthHttpInterface,\n  OktaAuthHttpOptions,\n} from './types';\nimport { OktaUserAgent } from './OktaUserAgent';\nimport { setRequestHeader } from './headers';\nimport { toQueryString } from '../util';\nimport { get } from './request';\n\nexport function mixinHttp\n<\n  S extends StorageManagerInterface = StorageManagerInterface,\n  O extends OktaAuthHttpOptions = OktaAuthHttpOptions,\n  TBase extends OktaAuthConstructor<OktaAuthStorageInterface<S, O>>\n    = OktaAuthConstructor<OktaAuthStorageInterface<S, O>>\n>\n(Base: TBase): TBase & OktaAuthConstructor<OktaAuthHttpInterface<S, O>>\n{\n  return class OktaAuthHttp extends Base implements OktaAuthHttpInterface<S, O>\n  {\n    _oktaUserAgent: OktaUserAgent;\n    http: HttpAPI;\n    \n    constructor(...args: any[]) {\n      super(...args);\n\n      this._oktaUserAgent = new OktaUserAgent();\n\n      // HTTP\n      this.http = {\n        setRequestHeader: setRequestHeader.bind(null, this)\n      };\n    }\n\n    setHeaders(headers) {\n      this.options.headers = Object.assign({}, this.options.headers, headers);\n    }\n  \n    getIssuerOrigin(): string {\n      // Infer the URL from the issuer URL, omitting the /oauth2/{authServerId}\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      return this.options.issuer!.split('/oauth2/')[0];\n    }\n  \n    webfinger(opts): Promise<object> {\n      var url = '/.well-known/webfinger' + toQueryString(opts);\n      var options = {\n        headers: {\n          'Accept': 'application/jrd+json'\n        }\n      };\n      return get(this, url, options);\n    }\n  };\n}\n","import { parseOAuthResponseFromUrl } from '../oidc/parseFromUrl';\nimport { OktaAuthConstructor } from '../base/types';\nimport {\n  OAuthStorageManagerInterface,\n  OAuthTransactionMeta,\n  OktaAuthOAuthInterface,\n  PKCETransactionMeta,\n  Tokens,\n  TransactionManagerInterface,\n} from '../oidc/types';\nimport { AuthStateManager } from './AuthStateManager';\nimport { ServiceManager } from './ServiceManager';\nimport { OktaAuthCoreInterface, OktaAuthCoreOptions } from './types';\n\nexport function mixinCore\n<\n  M extends OAuthTransactionMeta = PKCETransactionMeta,\n  S extends OAuthStorageManagerInterface<M> = OAuthStorageManagerInterface<M>,\n  O extends OktaAuthCoreOptions = OktaAuthCoreOptions,\n  TM extends TransactionManagerInterface = TransactionManagerInterface,\n  TBase extends OktaAuthConstructor<OktaAuthOAuthInterface<M, S, O, TM>>\n    = OktaAuthConstructor<OktaAuthOAuthInterface<M, S, O, TM>>\n>\n(Base: TBase): TBase & OktaAuthConstructor<OktaAuthCoreInterface<M, S, O, TM>>\n{\n  return class OktaAuthCore extends Base implements OktaAuthCoreInterface<M, S, O, TM>\n  {\n    authStateManager: AuthStateManager<M, S, O>;\n    serviceManager: ServiceManager<M, S, O>;\n    \n    constructor(...args: any[]) {\n      super(...args);\n\n      // AuthStateManager\n      this.authStateManager = new AuthStateManager<M, S, O>(this);\n\n      // ServiceManager\n      this.serviceManager = new ServiceManager<M, S, O>(this, this.options.services);\n    }\n\n    async start() {\n      await this.serviceManager.start();\n      // TODO: review tokenManager.start\n      this.tokenManager.start();\n      if (!this.token.isLoginRedirect()) {\n        await this.authStateManager.updateAuthState();\n      }\n    }\n  \n    async stop() {\n      // TODO: review tokenManager.stop\n      this.tokenManager.stop();\n      await this.serviceManager.stop();\n    }\n\n    async handleRedirect(originalUri?: string): Promise<void> {\n      await this.handleLoginRedirect(undefined, originalUri);\n    }\n\n    // eslint-disable-next-line complexity\n    async handleLoginRedirect(tokens?: Tokens, originalUri?: string): Promise<void> {\n      let state = this.options.state;\n  \n      // Store tokens and update AuthState by the emitted events\n      if (tokens) {\n        this.tokenManager.setTokens(tokens);\n        originalUri = originalUri || this.getOriginalUri(this.options.state);\n      } else if (this.isLoginRedirect()) {\n        try {\n          // For redirect flow, get state from the URL and use it to retrieve the originalUri\n          const oAuthResponse = await parseOAuthResponseFromUrl(this, {});\n          state = oAuthResponse.state;\n          originalUri = originalUri || this.getOriginalUri(state);\n          await this.storeTokensFromRedirect();\n        } catch(e) {\n          // auth state should be updated\n          await this.authStateManager.updateAuthState();\n          throw e;\n        }\n      } else {\n        return; // nothing to do\n      }\n      \n      // ensure auth state has been updated\n      await this.authStateManager.updateAuthState();\n  \n      // clear originalUri from storage\n      this.removeOriginalUri(state);\n  \n      // Redirect to originalUri\n      const { restoreOriginalUri } = this.options;\n      if (restoreOriginalUri) {\n        await restoreOriginalUri(this, originalUri);\n      } else if (originalUri) {\n        window.location.replace(originalUri);\n      }\n    }\n  };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { base64UrlToBuffer, bufferToBase64Url } from '../crypto/base64';\nimport {\n  ActivationData,\n  ChallengeData,\n  IdxAuthenticator,\n} from './types';\n\n\n// Get known credentials from list of enrolled authenticators\nconst getEnrolledCredentials = (authenticatorEnrollments: IdxAuthenticator[] = []) => {\n  const credentials: PublicKeyCredentialDescriptor[] = [];\n  authenticatorEnrollments.forEach((enrollement) => {\n    if (enrollement.key === 'webauthn') {\n      credentials.push({\n        type: 'public-key',\n        id: base64UrlToBuffer(enrollement.credentialId),\n      });\n    }\n  });\n  return credentials;\n};\n\n// Build options for navigator.credentials.create\n// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/create\nexport const buildCredentialCreationOptions = (\n  activationData: ActivationData, authenticatorEnrollments: IdxAuthenticator[]\n) => {\n  return {\n    publicKey: {\n      rp: activationData.rp,\n      user: {\n        id: base64UrlToBuffer(activationData.user.id),\n        name: activationData.user.name,\n        displayName: activationData.user.displayName\n      },\n      challenge: base64UrlToBuffer(activationData.challenge),\n      pubKeyCredParams: activationData.pubKeyCredParams,\n      attestation: activationData.attestation,\n      authenticatorSelection: activationData.authenticatorSelection,\n      excludeCredentials: getEnrolledCredentials(authenticatorEnrollments),\n    }\n  } as CredentialCreationOptions;\n};\n\n\n// Build options for navigator.credentials.get\n// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/get\nexport const buildCredentialRequestOptions = (\n  challengeData: ChallengeData, authenticatorEnrollments: IdxAuthenticator[]\n) => {\n  return {\n    publicKey: {\n      challenge: base64UrlToBuffer(challengeData.challenge),\n      userVerification: challengeData.userVerification,\n      allowCredentials: getEnrolledCredentials(authenticatorEnrollments),\n    }\n  } as CredentialRequestOptions;\n};\n\n// Build attestation for webauthn enroll\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAttestationResponse\nexport const getAttestation = (credential: PublicKeyCredential) => {\n  const response = credential.response as AuthenticatorAttestationResponse;\n  const id = credential.id;\n  const clientData = bufferToBase64Url(response.clientDataJSON);\n  const attestation = bufferToBase64Url(response.attestationObject);\n  return {\n    id,\n    clientData,\n    attestation\n  };\n};\n\n// Build assertion for webauthn verification\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse\nexport const getAssertion = (credential: PublicKeyCredential) => {\n  const response = credential.response as AuthenticatorAssertionResponse;\n  const id = credential.id;\n  const clientData = bufferToBase64Url(response.clientDataJSON);\n  const authenticatorData = bufferToBase64Url(response.authenticatorData);\n  const signatureData = bufferToBase64Url(response.signature);\n  return {\n    id,\n    clientData,\n    authenticatorData,\n    signatureData\n  };\n};\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint-disable complexity */\nimport { StorageManagerOptions, StorageUtil, OktaAuthStorageOptions } from '../types';\nimport { warn } from '../../util';\n\nimport { default as browserStorage } from '../../browser/browserStorage';\n\nexport function getStorage(): StorageUtil {\n  const storageUtil = Object.assign({}, browserStorage, {\n    inMemoryStore: {} // create unique storage for this instance\n  });\n  return storageUtil;\n}\n\nexport const STORAGE_MANAGER_OPTIONS: StorageManagerOptions = {\n  token: {\n    storageTypes: [\n      'localStorage',\n      'sessionStorage',\n      'cookie'\n    ]\n  },\n  cache: {\n    storageTypes: [\n      'localStorage',\n      'sessionStorage',\n      'cookie'\n    ]\n  },\n  transaction: {\n    storageTypes: [\n      'sessionStorage',\n      'localStorage',\n      'cookie'\n    ]\n  },\n  'shared-transaction': {\n    storageTypes: [\n      'localStorage'\n    ]\n  },\n  'original-uri': {\n    storageTypes: [\n      'localStorage'\n    ]\n  }\n};\n\nexport function getCookieSettings(args: OktaAuthStorageOptions = {}, isHTTPS: boolean) {\n  // Secure cookies will be automatically used on a HTTPS connection\n  // Non-secure cookies will be automatically used on a HTTP connection\n  // secure option can override the automatic behavior\n  var cookieSettings = args.cookies || {};\n  if (typeof cookieSettings.secure === 'undefined') {\n    cookieSettings.secure = isHTTPS;\n  }\n  if (typeof cookieSettings.sameSite === 'undefined') {\n    cookieSettings.sameSite = cookieSettings.secure ? 'none' : 'lax';\n  }\n\n  // If secure=true, but the connection is not HTTPS, set secure=false.\n  if (cookieSettings.secure && !isHTTPS) {\n    // eslint-disable-next-line no-console\n    warn(\n      'The current page is not being served with the HTTPS protocol.\\n' +\n      'For security reasons, we strongly recommend using HTTPS.\\n' +\n      'If you cannot use HTTPS, set \"cookies.secure\" option to false.'\n    );\n    cookieSettings.secure = false;\n  }\n\n  // Chrome >= 80 will block cookies with SameSite=None unless they are also Secure\n  // If sameSite=none, but the connection is not HTTPS, set sameSite=lax.\n  if (cookieSettings.sameSite === 'none' && !cookieSettings.secure) {\n    cookieSettings.sameSite = 'lax';\n  }\n\n  return cookieSettings;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createBaseOptionsConstructor } from '../../base';\nimport { CookieOptions, OktaAuthStorageOptions, StorageManagerOptions, StorageUtil } from '../types';\nimport { getStorage, STORAGE_MANAGER_OPTIONS, getCookieSettings } from './node';\nimport { isHTTPS } from '../../features';\n\nexport function createStorageOptionsConstructor() {\n\n  const BaseOptionsConstructor = createBaseOptionsConstructor();\n  return class StorageOptionsConstructor extends BaseOptionsConstructor implements Required<OktaAuthStorageOptions> {\n    cookies: CookieOptions;\n    storageUtil: StorageUtil;\n    storageManager: StorageManagerOptions;\n    \n    constructor(args: any) {\n      super(args);\n      this.cookies = getCookieSettings(args, isHTTPS())!;\n      this.storageUtil = args.storageUtil || getStorage();\n      this.storageManager = { ...STORAGE_MANAGER_OPTIONS, ...args.storageManager };\n    }\n  };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { OktaAuthBaseOptions } from './types';\n\nexport function createBaseOptionsConstructor() {\n\n  return class BaseOptionsConstructor implements Required<OktaAuthBaseOptions> {\n    devMode: boolean;\n\n    constructor(args: any) {\n      this.devMode = !!args.devMode;\n    }\n  };\n\n}\n","/*!\n * Copyright (c) 2018-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport crossFetch from 'cross-fetch';\nimport { FetchOptions, HttpResponse } from '../http/types';\n\n// content-type = application/json OR application/ion+json\nconst appJsonContentTypeRegex = /application\\/\\w*\\+?json/;\n\nfunction readData(response: Response): Promise<object | string> {\n  if (response.headers.get('Content-Type') &&\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    response.headers.get('Content-Type')!.toLowerCase().indexOf('application/json') >= 0) {\n  return response.json()\n    // JSON parse can fail if response is not a valid object\n    .catch(e => {\n      return {\n        error: e,\n        errorSummary: 'Could not parse server response'\n      };\n    });\n  } else {\n    return response.text();\n  }\n}\n\nfunction formatResult(status: number, data: object | string, response: Response) {\n  const isObject = typeof data === 'object';\n  const headers = {};\n  for (const pair of (response.headers as any).entries()) {\n    headers[pair[0]] = pair[1];\n  }\n  const result: HttpResponse = {\n    responseText: isObject ? JSON.stringify(data) : data as string,\n    status: status,\n    headers\n  };\n  if (isObject) {\n    result.responseType = 'json';\n    result.responseJSON = data as object;\n  }\n  return result;\n}\n\n/* eslint-disable complexity */\nfunction fetchRequest(method: string, url: string, args: FetchOptions) {\n  var body = args.data;\n  var headers = args.headers || {};\n  var contentType = (headers['Content-Type'] || headers['content-type'] || '');\n\n  if (body && typeof body !== 'string') {\n    // JSON encode body (if appropriate)\n    if (appJsonContentTypeRegex.test(contentType)) {\n      body = JSON.stringify(body);\n    }\n    else if (contentType === 'application/x-www-form-urlencoded') {\n      body = Object.entries(body)\n      .map( ([param, value]) => `${param}=${encodeURIComponent(value)}` )\n      .join('&');\n    }\n  }\n\n  var fetch = global.fetch || crossFetch;\n  var fetchPromise = fetch(url, {\n    method: method,\n    headers: args.headers,\n    body: body as string,\n    credentials: args.withCredentials ? 'include' : 'omit'\n  });\n\n  if (!fetchPromise.finally) {\n    fetchPromise = Promise.resolve(fetchPromise);\n  }\n\n  return fetchPromise.then(function(response) {\n    var error = !response.ok;\n    var status = response.status;\n    return readData(response)\n      .then(data => {\n        return formatResult(status, data, response);\n      })\n      .then(result => {\n        if (error || result.responseJSON?.error) {\n          // Throwing result object since error handling is done in http.js\n          throw result;\n        }\n        return result;\n      });\n  });\n}\n\nexport default fetchRequest;\n","export const enableSharedStorage = true;\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { DEFAULT_MAX_CLOCK_SKEW } from '../../constants';\nimport { removeTrailingSlash, toAbsoluteUrl } from '../../util/url';\nimport { isBrowser } from '../../features';\nimport { createHttpOptionsConstructor } from '../../http/options';\nimport {\n  OAuthResponseMode,\n  OAuthResponseType,\n  OktaAuthOAuthInterface,\n  OktaAuthOAuthOptions,\n  SetLocationFunction,\n  TokenManagerOptions,\n  TransactionManagerOptions\n} from '../types';\nimport { enableSharedStorage } from './node';\nimport AuthSdkError from '../../errors/AuthSdkError';\n\nfunction assertValidConfig(args) {\n  args = args || {};\n\n  var scopes = args.scopes;\n  if (scopes && !Array.isArray(scopes)) {\n    throw new AuthSdkError('scopes must be a array of strings. ' +\n      'Required usage: new OktaAuth({scopes: [\"openid\", \"email\"]})');\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  var issuer = args.issuer!;\n  if (!issuer) {\n    throw new AuthSdkError('No issuer passed to constructor. ' + \n      'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com/oauth2/{authServerId}\"})');\n  }\n\n  var isUrlRegex = new RegExp('^http?s?://.+');\n  if (!isUrlRegex.test(issuer)) {\n    throw new AuthSdkError('Issuer must be a valid URL. ' + \n      'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com/oauth2/{authServerId}\"})');\n  }\n\n  if (issuer.indexOf('-admin.okta') !== -1) {\n    throw new AuthSdkError('Issuer URL passed to constructor contains \"-admin\" in subdomain. ' +\n      'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com})');\n  }\n}\n\nexport function createOAuthOptionsConstructor() {\n  const HttpOptionsConstructor = createHttpOptionsConstructor();\n  return class OAuthOptionsConstructor\n    extends HttpOptionsConstructor\n    implements Required<OktaAuthOAuthOptions>\n  {\n    // CustomUrls\n    issuer: string;\n    authorizeUrl: string;\n    userinfoUrl: string;\n    tokenUrl: string;\n    revokeUrl: string;\n    logoutUrl: string;\n    \n    // TokenParams\n    pkce: boolean;\n    clientId: string;\n    redirectUri: string;\n    responseType: OAuthResponseType | OAuthResponseType[];\n    responseMode: OAuthResponseMode;\n    state: string;\n    scopes: string[];\n    ignoreSignature: boolean;\n    codeChallenge: string;\n    codeChallengeMethod: string;\n    acrValues: string;\n    maxAge: string | number;\n\n    // Additional options\n    tokenManager: TokenManagerOptions;\n    postLogoutRedirectUri: string;\n    restoreOriginalUri: (oktaAuth: OktaAuthOAuthInterface, originalUri?: string) => Promise<void>;\n    transactionManager: TransactionManagerOptions;\n\n    // For server-side web applications ONLY!\n    clientSecret: string;\n    setLocation: SetLocationFunction;\n\n    // Workaround for bad client time/clock\n    ignoreLifetime: boolean;\n    maxClockSkew: number;\n\n\n    // eslint-disable-next-line max-statements\n    constructor(options: any) {\n      super(options);\n      \n      assertValidConfig(options);\n      \n      this.issuer = removeTrailingSlash(options.issuer);\n      this.tokenUrl = removeTrailingSlash(options.tokenUrl);\n      this.authorizeUrl = removeTrailingSlash(options.authorizeUrl);\n      this.userinfoUrl = removeTrailingSlash(options.userinfoUrl);\n      this.revokeUrl = removeTrailingSlash(options.revokeUrl);\n      this.logoutUrl = removeTrailingSlash(options.logoutUrl);\n\n      this.pkce = options.pkce === false ? false : true; // PKCE defaults to true\n      this.clientId = options.clientId;\n      this.redirectUri = options.redirectUri;\n      if (isBrowser()) {\n        this.redirectUri = toAbsoluteUrl(options.redirectUri, window.location.origin); // allow relative URIs\n      }\n      this.responseType = options.responseType;\n      this.responseMode = options.responseMode;\n      this.state = options.state;\n      this.scopes = options.scopes;\n      // Give the developer the ability to disable token signature validation.\n      this.ignoreSignature = !!options.ignoreSignature;\n      this.codeChallenge = options.codeChallenge;\n      this.codeChallengeMethod = options.codeChallengeMethod;\n      this.acrValues = options.acrValues;\n      this.maxAge = options.maxAge;\n\n      this.tokenManager = options.tokenManager;\n      this.postLogoutRedirectUri = options.postLogoutRedirectUri;\n      this.restoreOriginalUri = options.restoreOriginalUri;\n      this.transactionManager = { enableSharedStorage, ...options.transactionManager };\n      \n      this.clientSecret = options.clientSecret;\n      this.setLocation = options.setLocation;\n      \n      // As some end user's devices can have their date \n      // and time incorrectly set, allow for the disabling\n      // of the jwt liftetime validation\n      this.ignoreLifetime = !!options.ignoreLifetime;\n\n      // Digital clocks will drift over time, so the server\n      // can misalign with the time reported by the browser.\n      // The maxClockSkew allows relaxing the time-based\n      // validation of tokens (in seconds, not milliseconds).\n      // It currently defaults to 300, because 5 min is the\n      // default maximum tolerance allowed by Kerberos.\n      // (https://technet.microsoft.com/en-us/library/cc976357.aspx)\n      if (!options.maxClockSkew && options.maxClockSkew !== 0) {\n        this.maxClockSkew = DEFAULT_MAX_CLOCK_SKEW;\n      } else {\n        this.maxClockSkew = options.maxClockSkew;\n      }\n\n    }\n  };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createStorageOptionsConstructor } from '../storage';\nimport { HttpRequestClient, OktaAuthHttpOptions, RequestOptions } from './types';\nimport fetchRequest from '../fetch/fetchRequest';\n\nexport function createHttpOptionsConstructor() {\n  const StorageOptionsConstructor = createStorageOptionsConstructor();\n  return class HttpOptionsConstructor extends StorageOptionsConstructor implements Required<OktaAuthHttpOptions> {\n    issuer: string;\n    transformErrorXHR: (xhr: object) => any;\n    headers: object;\n    httpRequestClient: HttpRequestClient;\n    httpRequestInterceptors: ((request: RequestOptions) => void)[];\n    \n    constructor(args: any) {\n      super(args);\n      this.issuer = args.issuer;\n      this.transformErrorXHR = args.transformErrorXHR;\n      this.headers = args.headers;\n      this.httpRequestClient = args.httpRequestClient || fetchRequest;\n      this.httpRequestInterceptors = args.httpRequestInterceptors;\n    }\n  };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport AuthSdkError from '../errors/AuthSdkError';\nimport { StorageProvider, SimpleStorage } from './types';\n\n// formerly known as \"storageBuilder\". Represents an object saved under a key/name.\nexport class SavedObject implements StorageProvider {\n  storageProvider: SimpleStorage;\n  storageName: string;\n\n  constructor(storage: SimpleStorage, storageName: string) {\n    if (!storage) {\n      throw new AuthSdkError('\"storage\" is required');\n    }\n\n    if (typeof storageName !== 'string' || !storageName.length) {\n      throw new AuthSdkError('\"storageName\" is required');\n    }\n\n    this.storageName = storageName;\n    this.storageProvider = storage;\n  }\n\n  //\n  // SimpleStorage interface\n  //\n\n  getItem(key: string) {\n    return this.getStorage()[key];\n  }\n\n  setItem(key: string, value: any) {\n    return this.updateStorage(key, value);\n  }\n\n  removeItem(key: string) {\n    return this.clearStorage(key);\n  }\n\n  //\n  // StorageProvider interface\n  //\n\n  getStorage() {\n    var storageString = this.storageProvider.getItem(this.storageName);\n    storageString = storageString || '{}';\n    try {\n      return JSON.parse(storageString);\n    } catch(e) {\n      throw new AuthSdkError('Unable to parse storage string: ' + this.storageName);\n    }\n  }\n\n  setStorage(obj?: any) {\n    try {\n      var storageString = obj ? JSON.stringify(obj) : '{}';\n      this.storageProvider.setItem(this.storageName, storageString);\n    } catch(e) {\n      throw new AuthSdkError('Unable to set storage: ' + this.storageName);\n    }\n  }\n\n  clearStorage(key?: string) {\n    if (!key) {\n      // clear all\n      if (this.storageProvider.removeItem) {\n        this.storageProvider.removeItem(this.storageName);\n      } else {\n        this.setStorage();\n      }\n      return;\n    }\n\n    var obj = this.getStorage();\n    delete obj[key];\n    this.setStorage(obj);\n  }\n\n  updateStorage(key, value) {\n    var obj = this.getStorage();\n    obj[key] = value;\n    this.setStorage(obj);\n  }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n\nimport {\n  TOKEN_STORAGE_NAME,\n  CACHE_STORAGE_NAME,\n} from '../constants';\nimport {\n  StorageUtil,\n  StorageProvider,\n  StorageOptions,\n  CookieOptions,\n  StorageManagerOptions,\n  SimpleStorage,\n  StorageManagerInterface\n} from './types';\nimport { SavedObject } from './SavedObject';\nimport { isBrowser } from '../features';\nimport { warn } from '../util';\n\nexport function logServerSideMemoryStorageWarning(options: StorageOptions) {\n  if (!isBrowser() && !options.storageProvider && !options.storageKey) {\n    // eslint-disable-next-line max-len\n    warn('Memory storage can only support simple single user use case on server side, please provide custom storageProvider or storageKey if advanced scenarios need to be supported.');\n  }\n}\n\n\nexport class BaseStorageManager implements StorageManagerInterface {\n  storageManagerOptions: StorageManagerOptions;\n  cookieOptions: CookieOptions;\n  storageUtil: StorageUtil;\n\n  constructor(storageManagerOptions: StorageManagerOptions, cookieOptions: CookieOptions, storageUtil: StorageUtil) {\n    this.storageManagerOptions = storageManagerOptions;\n    this.cookieOptions = cookieOptions;\n    this.storageUtil = storageUtil;\n  }\n\n  // combines defaults in order\n  getOptionsForSection(sectionName: string, overrideOptions?: StorageOptions) {\n    return Object.assign({}, this.storageManagerOptions[sectionName], overrideOptions);\n  }\n \n  // generic method to get any available storage provider\n  // eslint-disable-next-line complexity\n  getStorage(options: StorageOptions): SimpleStorage {\n    options = Object.assign({}, this.cookieOptions, options); // set defaults\n\n    if (options.storageProvider) {\n      return options.storageProvider;\n    }\n\n    let { storageType, storageTypes } = options;\n\n    if(storageType === 'sessionStorage') {\n      options.sessionCookie = true;\n    }\n\n    // If both storageType and storageTypes are specified, then storageType will be used first\n    // If storageType cannot be used but it matches an entry in storageTypes, subsequent entries may be used as fallback\n    // if storageType does not match an entry in storageTypes then storageType is used with no fallback.\n    if (storageType && storageTypes) {\n      const idx = storageTypes.indexOf(storageType);\n      if (idx >= 0) {\n        storageTypes = storageTypes.slice(idx);\n        storageType = undefined;\n      }\n    }\n\n    if (!storageType) {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      storageType = this.storageUtil.findStorageType(storageTypes!);\n    }\n    return this.storageUtil.getStorageByType(storageType, options);\n  }\n\n  // access_token, id_token, refresh_token\n  getTokenStorage(options?: StorageOptions): StorageProvider {\n    options = this.getOptionsForSection('token', options);\n    logServerSideMemoryStorageWarning(options);\n    const storage = this.getStorage(options);\n    const storageKey = options.storageKey || TOKEN_STORAGE_NAME;\n    return new SavedObject(storage, storageKey);\n  }\n\n  // caches well-known response, among others\n  getHttpCache(options?: StorageOptions): StorageProvider {\n    options = this.getOptionsForSection('cache', options);\n    const storage = this.getStorage(options);\n    const storageKey = options.storageKey || CACHE_STORAGE_NAME;\n    return new SavedObject(storage, storageKey);\n  }\n\n}\n","import { createOAuthStorageManager } from '../oidc/storage';\nimport { PKCETransactionMeta } from '../oidc/types';\n\nexport function createCoreStorageManager<M extends PKCETransactionMeta = PKCETransactionMeta>() {\n  return createOAuthStorageManager<M>();\n}\n","import {\n  CookieOptions,\n  StorageManagerOptions,\n  StorageOptions,\n  StorageUtil\n} from '../storage/types';\nimport { BaseStorageManager, logServerSideMemoryStorageWarning } from '../storage/BaseStorageManager';\nimport { TransactionStorage, OAuthTransactionMeta, OAuthStorageManagerInterface, PKCETransactionMeta } from './types';\nimport { SavedObject } from '../storage';\nimport { ORIGINAL_URI_STORAGE_NAME, SHARED_TRANSACTION_STORAGE_NAME, TRANSACTION_STORAGE_NAME } from '../constants';\n\n\nexport function createOAuthStorageManager<M extends OAuthTransactionMeta = PKCETransactionMeta>()\n{\n  return class OAuthStorageManager\n    extends BaseStorageManager\n    implements OAuthStorageManagerInterface<M>\n  {\n    constructor(storageManagerOptions: StorageManagerOptions, cookieOptions: CookieOptions, storageUtil: StorageUtil) {\n      super(storageManagerOptions, cookieOptions, storageUtil);\n    }\n\n    getTransactionStorage(options?: StorageOptions): TransactionStorage<M> {\n      options = this.getOptionsForSection('transaction', options);\n      logServerSideMemoryStorageWarning(options);\n      const storage = this.getStorage(options);\n      const storageKey = options.storageKey || TRANSACTION_STORAGE_NAME;\n      return new SavedObject(storage, storageKey);\n    }\n\n    getSharedTansactionStorage(options?: StorageOptions): TransactionStorage<M> {\n      options = this.getOptionsForSection('shared-transaction', options);\n      logServerSideMemoryStorageWarning(options);\n      const storage = this.getStorage(options);\n      const storageKey = options.storageKey || SHARED_TRANSACTION_STORAGE_NAME;\n      return new SavedObject(storage, storageKey);\n    }\n\n    getOriginalUriStorage(options?: StorageOptions): TransactionStorage<M> {\n      options = this.getOptionsForSection('original-uri', options);\n      logServerSideMemoryStorageWarning(options);\n      const storage = this.getStorage(options);\n      const storageKey = options.storageKey || ORIGINAL_URI_STORAGE_NAME;\n      return new SavedObject(storage, storageKey);\n    }\n  };\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { IdxTransactionMeta } from '../../idx/types/meta';\nimport { OAuthTransactionMeta, PKCETransactionMeta } from './meta';\nimport { OAuthStorageManagerInterface } from './storage';\n\nexport interface TransactionManagerOptions\n{\n  storageManager?: OAuthStorageManagerInterface;\n  enableSharedStorage?: boolean; // default true\n  saveNonceCookie?: boolean; // default true\n  saveStateCookie?: boolean; // default true\n  saveParamsCookie?: boolean; // default true\n  saveLastResponse?: boolean; // default true\n}\n\n\nexport type CustomAuthTransactionMeta = Record<string, string | undefined>;\n\nexport type TransactionMeta =\n  IdxTransactionMeta |\n  PKCETransactionMeta |\n  OAuthTransactionMeta |\n  CustomAuthTransactionMeta;\n\n\nfunction isObjectWithProperties(obj) {\n  if (!obj || typeof obj !== 'object' || Object.values(obj).length === 0) {\n    return false;\n  }\n  return true;\n}\n\nexport function isOAuthTransactionMeta(obj: any): obj is OAuthTransactionMeta {\n  if (!isObjectWithProperties(obj)) {\n    return false;\n  }\n  return !!obj.redirectUri || !!obj.responseType;\n}\n\nexport function isPKCETransactionMeta(obj: any): obj is PKCETransactionMeta {\n  if (!isOAuthTransactionMeta(obj)) {\n    return false;\n  }\n  return !!(obj as any).codeVerifier;\n}\n\nexport function isIdxTransactionMeta(obj: any): obj is IdxTransactionMeta {\n  if (!isPKCETransactionMeta(obj)) {\n    return false;\n  }\n  return !!(obj as any).interactionHandle;\n}\n\nexport function isCustomAuthTransactionMeta(obj: any): obj is CustomAuthTransactionMeta {\n  if (!isObjectWithProperties(obj)) {\n    return false;\n  }\n  const isAllStringValues = Object.values(obj).find((value) => (typeof value !== 'string')) === undefined;\n  return isAllStringValues;\n}\n\nexport function isTransactionMeta(obj: any): obj is TransactionMeta {\n  if (isOAuthTransactionMeta(obj) || isCustomAuthTransactionMeta(obj)) {\n    return true;\n  }\n  return false;\n}\n","import { OAuthStorageManagerInterface, OAuthTransactionMeta, isTransactionMeta } from '../types';\n\nconst MAX_ENTRY_LIFETIME = 30 * 60 * 1000; // 30 minutes\n\nexport function pruneSharedStorage<M extends OAuthTransactionMeta>(storageManager: OAuthStorageManagerInterface<M>) {\n  const sharedStorage = storageManager.getSharedTansactionStorage();\n  const entries = sharedStorage.getStorage();\n  Object.keys(entries).forEach(state => {\n    const entry = entries[state];\n    const age = Date.now() - entry.dateCreated;\n    if (age > MAX_ENTRY_LIFETIME) {\n      delete entries[state];\n    }\n  });\n  sharedStorage.setStorage(entries);\n}\n\nexport function saveTransactionToSharedStorage<M extends OAuthTransactionMeta>(\n  storageManager: OAuthStorageManagerInterface<M>, state: string, meta: M\n) {\n  const sharedStorage = storageManager.getSharedTansactionStorage();\n  const entries = sharedStorage.getStorage();\n  entries[state] = {\n    dateCreated: Date.now(),\n    transaction: meta\n  };\n  sharedStorage.setStorage(entries);\n}\n\n\nexport function loadTransactionFromSharedStorage<M extends OAuthTransactionMeta>(\n  storageManager: OAuthStorageManagerInterface<M>, state: string\n) {\n  const sharedStorage = storageManager.getSharedTansactionStorage();\n  const entries = sharedStorage.getStorage();\n  const entry = entries[state];\n  if (entry && entry.transaction && isTransactionMeta(entry.transaction)) {\n    return entry.transaction;\n  }\n  return null;\n}\n\nexport function clearTransactionFromSharedStorage<M extends OAuthTransactionMeta>(\n  storageManager: OAuthStorageManagerInterface<M>, state: string\n) {\n  const sharedStorage = storageManager.getSharedTansactionStorage();\n  const entries = sharedStorage.getStorage();\n  delete entries[state];\n  sharedStorage.setStorage(entries);\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { StorageProvider } from '../storage/types';\nimport {\n  TransactionMeta,\n  isTransactionMeta,\n  TransactionMetaOptions,\n  TransactionManagerOptions,\n  OAuthTransactionMeta,\n  OAuthStorageManagerInterface,\n  ClearTransactionMetaOptions,\n  TransactionManagerInterface,\n  PKCETransactionMeta\n} from './types';\nimport { warn } from '../util';\nimport {\n  clearTransactionFromSharedStorage,\n  loadTransactionFromSharedStorage,\n  pruneSharedStorage,\n  saveTransactionToSharedStorage\n} from './util/sharedStorage';\n\n\nexport function createTransactionManager\n<\n  M extends OAuthTransactionMeta = PKCETransactionMeta,\n  S extends OAuthStorageManagerInterface<M> = OAuthStorageManagerInterface<M>\n>\n()\n{\n  return class TransactionManager implements TransactionManagerInterface\n  {\n    options: TransactionManagerOptions;\n    storageManager: S;\n    enableSharedStorage: boolean;\n    saveLastResponse: boolean;\n\n    constructor(options: TransactionManagerOptions) {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      this.storageManager = options.storageManager! as S;\n      this.enableSharedStorage = options.enableSharedStorage === false ? false : true;\n      this.saveLastResponse = options.saveLastResponse === false ? false : true;\n      this.options = options;\n    }\n\n    // eslint-disable-next-line complexity\n    clear(options: ClearTransactionMetaOptions = {}) {\n      const transactionStorage: StorageProvider = this.storageManager.getTransactionStorage();\n      const meta = transactionStorage.getStorage();\n\n      // Clear primary storage (by default, sessionStorage on browser)\n      transactionStorage.clearStorage();\n\n      // Usually we want to also clear shared storage unless another tab may need it to continue/complete a flow\n      if (this.enableSharedStorage && options.clearSharedStorage !== false) {\n        const state = options.state || meta?.state;\n        if (state) {\n          clearTransactionFromSharedStorage(this.storageManager, state);\n        }\n      }\n    }\n\n    // eslint-disable-next-line complexity\n    save(meta: M, options: TransactionMetaOptions = {}) {\n      // There must be only one transaction executing at a time.\n      // Before saving, check to see if a transaction is already stored.\n      // An existing transaction indicates a concurrency/race/overlap condition\n\n      let storage: StorageProvider = this.storageManager.getTransactionStorage();\n      const obj = storage.getStorage();\n      // oie process may need to update transaction in the middle of process for tracking purpose\n      // false alarm might be caused \n      // TODO: revisit for a better solution, https://oktainc.atlassian.net/browse/OKTA-430919\n      if (isTransactionMeta(obj) && !options.muteWarning) {\n        // eslint-disable-next-line max-len\n        warn('a saved auth transaction exists in storage. This may indicate another auth flow is already in progress.');\n      }\n\n      storage.setStorage(meta);\n\n      // Shared storage allows continuation of transaction in another tab\n      if (this.enableSharedStorage && meta.state) {\n        saveTransactionToSharedStorage(this.storageManager, meta.state, meta);\n      }\n    }\n\n    exists(options: TransactionMetaOptions = {}): boolean {\n      try {\n        const meta = this.load(options);\n        return !!meta;\n      } catch {\n        return false;\n      }\n    }\n\n    // load transaction meta from storage\n    // eslint-disable-next-line complexity,max-statements\n    load(options: TransactionMetaOptions = {}): TransactionMeta | null {\n\n      let meta: TransactionMeta;\n\n      // If state was passed, try loading transaction data from shared storage\n      if (this.enableSharedStorage && options.state) {\n        pruneSharedStorage(this.storageManager); // prune before load\n        meta = loadTransactionFromSharedStorage(this.storageManager, options.state);\n        if (isTransactionMeta(meta)) {\n          return meta;\n        }\n      }\n\n      let storage: StorageProvider = this.storageManager.getTransactionStorage();\n      meta = storage.getStorage();\n      if (isTransactionMeta(meta)) {\n        // if we have meta in the new location, there is no need to go further\n        return meta;\n      }\n\n      return null;\n    }\n\n  };\n}\n","import { OktaAuthHttpInterface } from '../../http/types';\n\nexport type TransactionLink = {\n  href: string;\n  hints?: {\n    allow?: string[];\n  };\n}\n\nexport type TransactionLinks = {\n  self: TransactionLink;\n  [property: string]: TransactionLink;\n}\n\ntype TransactionOptions = {\n  // TODO: move res type to http module\n  res: {\n    headers: Record<string, string>;\n    _links?: Record<string, TransactionLink>;\n    [property: string]: unknown;\n  };\n  accessToken: string;\n};\n\nexport default class BaseTransaction {\n  // Deprecated\n  headers?: Record<string, string>;\n\n  constructor(oktaAuth: OktaAuthHttpInterface, options: TransactionOptions) {\n    const { res } = options;\n    const { headers, ...rest } = res;\n    \n    // assign required fields from res\n    if (headers) {\n      this.headers = headers;\n    }\n\n    // add all rest fields from res\n    Object.keys(rest).forEach(key => {\n      if (key === '_links') {\n        return;\n      }\n      this[key] = rest[key];\n    });\n  }\n}\n\nexport interface TransactionType<T extends BaseTransaction = BaseTransaction> extends Function {\n  new (oktaAuth: OktaAuthHttpInterface, options: TransactionOptions): T;\n  prototype: T;\n}\n","import { \n  default as BaseTransaction,\n  TransactionType,\n  TransactionLinks\n} from './transactions/Base';\nimport { httpRequest } from '../http';\nimport { AuthSdkError } from '../errors';\nimport { MyAccountRequestOptions as RequestOptions } from './types';\nimport { OktaAuthOAuthInterface } from '../oidc/types';\n\ntype SendRequestOptions = RequestOptions & {\n  url: string;\n  method: string;\n}\n\n/* eslint-disable complexity */\nexport async function sendRequest<\n  T extends BaseTransaction = BaseTransaction,\n  N extends 'plural' | 'single' = 'single',\n  NT = N extends 'plural' ? T[] : T\n> (\n  oktaAuth: OktaAuthOAuthInterface, \n  options: SendRequestOptions,\n  TransactionClass: TransactionType<T> = BaseTransaction as TransactionType<T>,\n): Promise<NT> {\n  const {\n    accessToken: accessTokenObj\n  } = oktaAuth.tokenManager.getTokensSync();\n  \n  const accessToken = options.accessToken || accessTokenObj?.accessToken;\n  const issuer = oktaAuth.getIssuerOrigin();\n  const { url, method, payload } = options;\n  const requestUrl = url.startsWith(issuer!) ? url : `${issuer}${url}`;\n\n  if (!accessToken) {\n    throw new AuthSdkError('AccessToken is required to request MyAccount API endpoints.');\n  }\n  \n  const res = await httpRequest(oktaAuth, {\n    headers: { 'Accept': '*/*;okta-version=1.0.0' },\n    accessToken,\n    url: requestUrl,\n    method,\n    ...(payload && { args: payload })\n  });\n\n  let ret: T | T[];\n  if (Array.isArray(res)) {\n    ret = res.map(item => new TransactionClass(oktaAuth, { \n      res: item, \n      accessToken\n    }));\n  } else {\n    ret = new TransactionClass(oktaAuth, { \n      res, \n      accessToken\n    });\n  }\n  return ret as NT;\n}\n/* eslint-enable complexity */\n\nexport type GenerateRequestFnFromLinksOptions = {\n  oktaAuth: OktaAuthOAuthInterface;\n  accessToken: string;\n  methodName: string;\n  links: TransactionLinks;\n}\n\ntype IRequestFnFromLinks<T extends BaseTransaction> = (payload?) => Promise<T>;\n\nexport function generateRequestFnFromLinks<T extends BaseTransaction>(\n  {\n    oktaAuth, \n    accessToken,\n    methodName,\n    links,\n  }: GenerateRequestFnFromLinksOptions,\n  TransactionClass: TransactionType<T> = BaseTransaction as TransactionType<T>,\n): IRequestFnFromLinks<T> {\n  for (const method of ['GET', 'POST', 'PUT', 'DELETE']) {\n    if (method.toLowerCase() === methodName) {\n      const link = links.self;\n      return (async (payload?) => sendRequest<T, 'single'>(oktaAuth, {\n        accessToken,\n        url: link.href,\n        method,\n        payload,\n      }, TransactionClass));\n    }\n  }\n  \n  const link = links[methodName];\n  if (!link) {\n    throw new AuthSdkError(`No link is found with methodName: ${methodName}`);\n  }\n\n  return (async (payload?) => sendRequest<T, 'single'>(oktaAuth, {\n    accessToken,\n    url: link.href,\n    method: link.hints!.allow![0],\n    payload,\n  }, TransactionClass));\n}\n","import BaseTransaction from './Base';\n\nexport default class ProfileTransaction extends BaseTransaction {\n  createdAt: string;\n  modifiedAt: string;\n  profile: Record<string, string>;\n\n  constructor(oktaAuth, options) {\n    super(oktaAuth, options);\n\n    const { createdAt, modifiedAt, profile } = options.res;\n    this.createdAt = createdAt;\n    this.modifiedAt = modifiedAt;\n    this.profile = profile;\n  }\n}\n","import BaseTransaction from './Base';\n\nexport default class ProfileSchemaTransaction extends BaseTransaction {\n  properties: Record<string, object>;\n\n  constructor(oktaAuth, options) {\n    super(oktaAuth, options);\n\n    this.properties = options.res.properties;\n  }\n}\n","import {\n  OAuthStorageManagerInterface,\n  OAuthTransactionMeta,\n  OktaAuthOAuthInterface,\n  OktaAuthOAuthOptions,\n  PKCETransactionMeta\n} from '../oidc/types';\n\nexport type { \n  EmailTransaction, \n  EmailStatusTransaction,\n  EmailChallengeTransaction,\n  PhoneTransaction,\n  ProfileTransaction,\n  ProfileSchemaTransaction,\n  PasswordTransaction,\n  BaseTransaction\n} from './transactions';\n\nexport enum EmailRole {\n  PRIMARY = 'PRIMARY',\n  SECONDARY = 'SECONDARY'\n}\n\nexport enum Status {\n  VERIFIED = 'VERIFIED',\n  UNVERIFIED = 'UNVERIFIED'\n}\n\nexport enum PasswordStatus {\n  NOT_ENROLLED = 'NOT_ENROLLED',\n  ACTIVE = 'ACTIVE'\n}\n\nexport type EmailProfile = {\n  email: string;\n}\n\nexport type AddEmailPayload = {\n  profile: {\n    email: string;\n  };\n  sendEmail: boolean;\n  role: EmailRole;\n}\n\nexport type PhoneProfile = {\n  profile: {\n    phoneNumber: string;\n  };\n}\n\nexport type AddPhonePayload = {\n  profile: {\n    phoneNumber: string;\n  };\n  sendCode: boolean;\n  method: string;\n};\n\nexport type ChallengePhonePayload = {\n  method: string;\n}\n\nexport type VerificationPayload = {\n  verificationCode: string;\n};\n\nexport type EnrollPasswordPayload = {\n  profile: {\n    password: string;\n  }\n}\n\nexport type UpdatePasswordPayload = {\n  profile: {\n    password: string;\n    currentPassword?: string;\n  }\n}\n\nexport type UpdateProfilePayload = {\n  profile: {\n    firstName?: string;\n    lastName?: string;\n    email?: string;\n    login?: string;\n    [property: string]: any;\n  };\n};\n\nexport type MyAccountRequestOptions = {\n  id?: string;\n  emailId?: string;\n  challengeId?: string;\n  payload?: AddEmailPayload \n    | AddPhonePayload \n    | ChallengePhonePayload\n    | VerificationPayload \n    | UpdateProfilePayload\n    | EnrollPasswordPayload\n    | UpdatePasswordPayload;\n  accessToken?: string;\n}\n\nexport type IAPIFunction<T> = (\n  oktaAuth: OktaAuthOAuthInterface, \n  options?: MyAccountRequestOptions\n) => Promise<T>;\n\nexport interface OktaAuthMyAccountInterface\n<\n  M extends OAuthTransactionMeta = PKCETransactionMeta,\n  S extends OAuthStorageManagerInterface<M> = OAuthStorageManagerInterface<M>,\n  O extends OktaAuthOAuthOptions = OktaAuthOAuthOptions\n> \n  extends OktaAuthOAuthInterface<M, S, O>\n{\n  myaccount;\n}\n","import { sendRequest } from './request';\nimport { IAPIFunction } from './types';\nimport {\n  ProfileTransaction,\n  ProfileSchemaTransaction\n} from './transactions';\n\n/**\n * @scope: okta.myAccount.profile.read\n */\nexport const getProfile: IAPIFunction<ProfileTransaction> = async (oktaAuth, options?) => {\n  const transaction = await sendRequest(oktaAuth, {\n    url: '/idp/myaccount/profile',\n    method: 'GET',\n    accessToken: options?.accessToken,\n  }, ProfileTransaction);\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.profile.manage\n */\nexport const updateProfile: IAPIFunction<ProfileTransaction> = async (\n  oktaAuth, \n  options\n) => {\n  const { payload, accessToken } = options!;\n  const transaction = await sendRequest(oktaAuth, {\n    url: '/idp/myaccount/profile',\n    method: 'PUT',\n    payload,\n    accessToken,\n  }, ProfileTransaction);\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.profile.read\n */\nexport const getProfileSchema: IAPIFunction<ProfileSchemaTransaction> = async (\n  oktaAuth, \n  options?\n): Promise<ProfileSchemaTransaction> => {\n  const transaction = await sendRequest(oktaAuth, {\n    url: '/idp/myaccount/profile/schema',\n    method: 'GET',\n    accessToken: options?.accessToken,\n  }, ProfileSchemaTransaction);\n  return transaction;\n};\n","import { EmailProfile, Status } from '../types';\nimport BaseTransaction from './Base';\n\nexport default class EmailStatusTransaction extends BaseTransaction {\n  id: string;\n  expiresAt: string;\n  profile: EmailProfile;\n  status: Status;\n\n  constructor(oktaAuth, options) {\n    super(oktaAuth, options);\n\n    const { res } = options;\n    // assign required fields from res\n    const { id, profile, expiresAt, status } = res;\n    this.id = id;\n    this.expiresAt = expiresAt;\n    this.profile = profile;\n    this.status = status;\n  }\n}\n","import EmailStatusTransaction from './EmailStatusTransaction';\nimport { \n  EmailProfile, \n  Status,\n  VerificationPayload, \n} from '../types';\nimport BaseTransaction from './Base';\nimport { generateRequestFnFromLinks } from '../request';\n\nexport default class EmailChallengeTransaction extends BaseTransaction {\n  id: string;\n  expiresAt: string;\n  profile: EmailProfile;\n  status: Status;\n\n  poll: () => Promise<EmailStatusTransaction>;\n  // eslint-disable-next-line no-use-before-define\n  verify: (payload: VerificationPayload) => Promise<EmailChallengeTransaction>;\n\n  constructor(oktaAuth, options) {\n    super(oktaAuth, options);\n\n    const { accessToken, res } = options;\n    // assign required fields from res\n    const { id, expiresAt, profile, status, _links } = res;\n    this.id = id;\n    this.expiresAt = expiresAt;\n    this.profile = profile;\n    this.status = status;\n\n    // assign transformed fns to transaction\n    this.poll = async () => {\n      const fn = generateRequestFnFromLinks({ \n        oktaAuth, \n        accessToken, \n        methodName: 'poll', \n        links: _links,\n      }, EmailStatusTransaction);\n      return await fn();\n    };\n    this.verify = async (payload) => {\n      const fn = generateRequestFnFromLinks({ \n        oktaAuth, \n        accessToken, \n        methodName: 'verify', \n        links: _links,\n      }, EmailChallengeTransaction);\n      return await fn(payload);\n    };\n  }\n}\n","import EmailChallengeTransaction from './EmailChallengeTransaction';\nimport EmailStatusTransaction from './EmailStatusTransaction';\nimport { EmailProfile, EmailRole, Status, VerificationPayload } from '../types';\nimport BaseTransaction from './Base';\nimport { generateRequestFnFromLinks } from '../request';\n\nexport default class EmailTransaction extends BaseTransaction {\n  id: string;\n  profile: EmailProfile;\n  roles: EmailRole[];\n  status: Status;\n\n  // eslint-disable-next-line no-use-before-define\n  get: () => Promise<EmailTransaction>;\n  delete: () => Promise<BaseTransaction>;\n  challenge: () => Promise<EmailChallengeTransaction>;\n  poll?: () => Promise<EmailStatusTransaction>;\n  verify?: (payload: VerificationPayload) => Promise<BaseTransaction>;\n\n  constructor(oktaAuth, options) {\n    super(oktaAuth, options);\n\n    const { accessToken, res } = options;\n    // assign required fields from res\n    const { id, profile, roles, status, _links } = res;\n    this.id = id;\n    this.profile = profile;\n    this.roles = roles;\n    this.status = status;\n\n    // assign transformed fns to transaction\n    this.get = async () => {\n      const fn = generateRequestFnFromLinks({ \n        oktaAuth, \n        accessToken, \n        methodName: 'get', \n        links: _links,\n      }, EmailTransaction);\n      return await fn();\n    };\n    this.delete = async () => {\n      const fn = generateRequestFnFromLinks({ \n        oktaAuth, \n        accessToken, \n        methodName: 'delete', \n        links: _links \n      });\n      return await fn();\n    };\n    this.challenge = async () => {\n      const fn = generateRequestFnFromLinks({ \n        oktaAuth, \n        accessToken, \n        methodName: 'challenge', \n        links: _links,\n      }, EmailChallengeTransaction);\n      return await fn();\n    };\n    if (_links.poll) {\n      this.poll = async () => {\n        const fn = generateRequestFnFromLinks({ \n          oktaAuth, \n          accessToken, \n          methodName: 'poll', \n          links: _links,\n        }, EmailStatusTransaction);\n        return await fn();\n      };\n    }\n    if (_links.verify) {\n      this.verify = async (payload: VerificationPayload) => {\n        const fn = generateRequestFnFromLinks({ \n          oktaAuth, \n          accessToken, \n          methodName: 'verify', \n          links: _links,\n        });\n        return await fn(payload);\n      };\n    }\n  }\n}\n","import { sendRequest } from './request';\nimport { IAPIFunction } from './types';\nimport {\n  BaseTransaction, \n  EmailTransaction, \n  EmailChallengeTransaction \n} from './transactions';\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const getEmails: IAPIFunction<EmailTransaction[]> = async (\n  oktaAuth,\n  options?\n) => {\n  const transaction = await sendRequest<EmailTransaction, 'plural'>(oktaAuth, {\n    url: '/idp/myaccount/emails',\n    method: 'GET',\n    accessToken: options?.accessToken\n  }, EmailTransaction);\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const getEmail: IAPIFunction<EmailTransaction> = async (\n  oktaAuth, \n  options\n) => {\n  const { id, accessToken } = options!;\n  const transaction = await sendRequest(oktaAuth, {\n    url: `/idp/myaccount/emails/${id}`,\n    method: 'GET',\n    accessToken,\n  }, EmailTransaction);\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.manage\n */\nexport const addEmail: IAPIFunction<EmailTransaction> = async (\n  oktaAuth, \n  options\n): Promise<EmailTransaction> => {\n  const { accessToken, payload } = options!;\n  const transaction = await sendRequest(oktaAuth, {\n    url: '/idp/myaccount/emails',\n    method: 'POST',\n    payload,\n    accessToken,\n  }, EmailTransaction);\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.manage\n */\nexport const deleteEmail: IAPIFunction<BaseTransaction> = async (\n  oktaAuth, \n  options\n) => {\n  const { id, accessToken } = options!;\n  const transaction = await sendRequest(oktaAuth, {\n    url: `/idp/myaccount/emails/${id}`,\n    method: 'DELETE',\n    accessToken\n  });\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const sendEmailChallenge: IAPIFunction<EmailChallengeTransaction> = async (\n  oktaAuth, \n  options\n) => {\n  const { id, accessToken } = options!;\n  const transaction = await sendRequest(oktaAuth, {\n    url: `/idp/myaccount/emails/${id}/challenge`,\n    method: 'POST',\n    accessToken,\n  }, EmailChallengeTransaction);\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const getEmailChallenge: IAPIFunction<EmailChallengeTransaction> = async (\n  oktaAuth, \n  options\n) => {\n  const { emailId, challengeId, accessToken } = options!;\n  const transaction = await sendRequest(oktaAuth, {\n    url: `/idp/myaccount/emails/${emailId}/challenge/${challengeId}`,\n    method: 'POST',\n    accessToken,\n  }, EmailChallengeTransaction);\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.manage\n */\nexport const verifyEmailChallenge: IAPIFunction<BaseTransaction> = async (\n  oktaAuth,\n  options\n) => {\n  const { emailId, challengeId, payload, accessToken } = options!;\n  const transaction = await sendRequest(oktaAuth, {\n    url: `/idp/myaccount/emails/${emailId}/challenge/${challengeId}/verify`,\n    method: 'POST',\n    payload,\n    accessToken\n  });\n  return transaction;\n};\n","import { ChallengePhonePayload, PhoneProfile, Status, VerificationPayload } from '../types';\nimport BaseTransaction from './Base';\nimport { generateRequestFnFromLinks } from '../request';\n\nexport default class PhoneTransaction extends BaseTransaction {\n  id: string;\n  profile: PhoneProfile;\n  status: Status;\n\n  // eslint-disable-next-line no-use-before-define\n  get: () => Promise<PhoneTransaction>;\n  delete: () => Promise<BaseTransaction>;\n  challenge: (payload: ChallengePhonePayload) => Promise<BaseTransaction>;\n  verify?: (payload: VerificationPayload) => Promise<BaseTransaction>;\n\n  constructor(oktaAuth, options) {\n    super(oktaAuth, options);\n\n    const { res, accessToken } = options;\n    // assign required fields from res\n    const { id, profile, status, _links } = res;\n    this.id = id;\n    this.profile = profile;\n    this.status = status;\n\n    // assign transformed fns to transaction\n    this.get = async () => {\n      const fn = generateRequestFnFromLinks({ \n        oktaAuth, \n        accessToken, \n        methodName: 'get', \n        links: _links,\n      }, PhoneTransaction);\n      return await fn();\n    };\n    this.delete = async () => {\n      const fn = generateRequestFnFromLinks({ \n        oktaAuth, \n        accessToken, \n        methodName: 'delete', \n        links: _links \n      });\n      return await fn();\n    };\n    this.challenge = async (payload) => {\n      const fn = generateRequestFnFromLinks({ \n        oktaAuth, \n        accessToken, \n        methodName: 'challenge', \n        links: _links \n      });\n      return await fn(payload);\n    };\n    if (_links.verify) {\n      this.verify = async (payload) => {\n        const fn = generateRequestFnFromLinks({ \n          oktaAuth, \n          accessToken, \n          methodName: 'verify', \n          links: _links \n        });\n        return await fn(payload);\n      } ;\n    }\n  }\n}\n","import { sendRequest } from './request';\nimport { IAPIFunction } from './types';\nimport {\n  BaseTransaction, \n  PhoneTransaction\n} from './transactions';\n\n/**\n * @scope: okta.myAccount.phone.read\n */\nexport const getPhones: IAPIFunction<PhoneTransaction[]> = async (\n  oktaAuth,\n  options?\n) => {\n  const transaction = await sendRequest<PhoneTransaction, 'plural'>(oktaAuth, {\n    url: '/idp/myaccount/phones',\n    method: 'GET',\n    accessToken: options?.accessToken,\n  }, PhoneTransaction);\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.read\n */\nexport const getPhone: IAPIFunction<PhoneTransaction> = async (\n  oktaAuth,\n  options\n) => {\n  const { accessToken, id } = options!;\n  const transaction = await sendRequest(oktaAuth, {\n    url: `/idp/myaccount/phones/${id}`,\n    method: 'GET',\n    accessToken,\n  }, PhoneTransaction);\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const addPhone: IAPIFunction<PhoneTransaction> = async (\n  oktaAuth, \n  options\n): Promise<PhoneTransaction> => {\n  const { accessToken, payload } = options!;\n  const transaction = await sendRequest(oktaAuth, {\n    url: '/idp/myaccount/phones',\n    method: 'POST',\n    payload,\n    accessToken,\n  }, PhoneTransaction);\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const deletePhone: IAPIFunction<BaseTransaction> = async (\n  oktaAuth, \n  options\n) => {\n  const { id, accessToken } = options!;\n  const transaction = await sendRequest(oktaAuth, {\n    url: `/idp/myaccount/phones/${id}`,\n    method: 'DELETE',\n    accessToken,\n  });\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const sendPhoneChallenge: IAPIFunction<BaseTransaction> = async (\n  oktaAuth, \n  options\n) => {\n  const { accessToken, id, payload } = options!;\n  const transaction = await sendRequest(oktaAuth, {\n    url: `/idp/myaccount/phones/${id}/challenge`,\n    method: 'POST',\n    payload,\n    accessToken\n  });\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const verifyPhoneChallenge: IAPIFunction<BaseTransaction> = async (\n  oktaAuth,\n  options\n) => {\n  const { id, payload, accessToken } = options!;\n  const transaction = await sendRequest(oktaAuth, {\n    url: `/idp/myaccount/phones/${id}/verify`,\n    method: 'POST',\n    payload,\n    accessToken\n  });\n  return transaction;\n};\n","import { EnrollPasswordPayload, UpdatePasswordPayload, PasswordStatus } from '../types';\nimport BaseTransaction from './Base';\nimport { generateRequestFnFromLinks } from '../request';\n\nexport default class PasswordTransaction extends BaseTransaction {\n  id: string;\n  created: string;\n  lastUpdated: string;\n  status: PasswordStatus;\n\n  // eslint-disable-next-line no-use-before-define\n  get?: () => Promise<PasswordTransaction>;\n  // eslint-disable-next-line no-use-before-define\n  enroll?: (payload: EnrollPasswordPayload) => Promise<PasswordTransaction>;\n  // eslint-disable-next-line no-use-before-define\n  update?: (payload: UpdatePasswordPayload) => Promise<PasswordTransaction>;\n  delete?: () => Promise<BaseTransaction>;\n\n  constructor(oktaAuth, options) {\n    super(oktaAuth, options);\n\n    const { res, accessToken } = options;\n    // assign required fields from res\n    const { id, status, created, lastUpdated, _links } = res;\n    this.id = id;\n    this.status = status;\n    this.created = created;\n    this.lastUpdated = lastUpdated;\n\n    // assign transformed fns to transaction\n    if (this.status == PasswordStatus.NOT_ENROLLED) {\n      this.enroll = async (payload) => {\n        const fn = generateRequestFnFromLinks({ \n          oktaAuth, \n          accessToken, \n          methodName: 'enroll',\n          links: _links,\n        }, PasswordTransaction);\n        return await fn(payload);\n      };\n    }\n    else {\n      this.get = async () => {\n        const fn = generateRequestFnFromLinks({ \n          oktaAuth, \n          accessToken, \n          methodName: 'get',\n          links: _links,\n        }, PasswordTransaction);\n        return await fn();\n      };\n\n      this.update = async (payload) => {\n        const fn = generateRequestFnFromLinks({ \n          oktaAuth, \n          accessToken, \n          methodName: 'put', \n          links: _links,\n        }, PasswordTransaction);\n        return await fn(payload);\n      };\n  \n      this.delete = async () => {\n        const fn = generateRequestFnFromLinks({ \n          oktaAuth, \n          accessToken, \n          methodName: 'delete', \n          links: _links \n        });\n        return await fn();\n      };\n    }\n  }\n}\n","import { sendRequest } from './request';\nimport { IAPIFunction } from './types';\nimport {\n  BaseTransaction, \n  PasswordTransaction\n} from './transactions';\n\n/**\n * @scope: okta.myAccount.password.read\n */\nexport const getPassword: IAPIFunction<PasswordTransaction> = async (\n  oktaAuth,\n  options\n) => {\n  const transaction = await sendRequest(oktaAuth, {\n    url: `/idp/myaccount/password`,\n    method: 'GET',\n    accessToken: options?.accessToken,\n  }, PasswordTransaction);\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.password.manage\n */\nexport const enrollPassword: IAPIFunction<PasswordTransaction> = async (\n  oktaAuth, \n  options\n): Promise<PasswordTransaction> => {\n  const { accessToken, payload } = options!;\n  const transaction = await sendRequest(oktaAuth, {\n    url: '/idp/myaccount/password',\n    method: 'POST',\n    payload,\n    accessToken,\n  }, PasswordTransaction);\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.password.manage\n */\nexport const updatePassword: IAPIFunction<PasswordTransaction> = async (\n  oktaAuth, \n  options\n): Promise<PasswordTransaction> => {\n  const { accessToken, payload } = options!;\n  const transaction = await sendRequest(oktaAuth, {\n    url: '/idp/myaccount/password',\n    method: 'PUT',\n    payload,\n    accessToken,\n  }, PasswordTransaction);\n  return transaction;\n};\n\n/**\n * @scope: okta.myAccount.password.manage\n */\nexport const deletePassword: IAPIFunction<BaseTransaction> = async (\n  oktaAuth, \n  options?\n) => {\n  const transaction = await sendRequest(oktaAuth, {\n    url: `/idp/myaccount/password`,\n    method: 'DELETE',\n    accessToken: options?.accessToken,\n  });\n  return transaction;\n};\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n\nimport { AuthnTransactionState } from '../types';\n\nexport function addStateToken(res, options?) {\n  var builtArgs = {} as AuthnTransactionState;\n  Object.assign(builtArgs, options);\n\n  // Add the stateToken if one isn't passed and we have one\n  if (!builtArgs.stateToken && res.stateToken) {\n    builtArgs.stateToken = res.stateToken;\n  }\n\n  return builtArgs;\n}\n\nexport function getStateToken(res) {\n  return addStateToken(res);\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n/* eslint-disable complexity, max-statements */\nimport { post } from '../http';\nimport AuthSdkError from '../errors/AuthSdkError';\nimport { STATE_TOKEN_KEY_NAME } from '../constants';\nimport { OktaAuthHttpInterface } from '../http/types';\nimport { OktaAuthStorageOptions } from '../storage/types';\nimport { addStateToken } from './util/stateToken';\nimport { AuthnTransactionAPI } from './types';\nimport { OktaAuthBaseInterface } from '../base/types';\n\nexport function transactionStatus(sdk: OktaAuthHttpInterface, args) {\n  args = addStateToken(sdk, args);\n  return post(sdk, sdk.getIssuerOrigin() + '/api/v1/authn', args, { withCredentials: true });\n}\n\nexport function resumeTransaction(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, args) {\n  if (!args || !args.stateToken) {\n    var stateToken = getSavedStateToken(sdk);\n    if (stateToken) {\n      args = {\n        stateToken: stateToken\n      };\n    } else {\n      return Promise.reject(new AuthSdkError('No transaction to resume'));\n    }\n  }\n  return transactionStatus(sdk, args)\n    .then(function(res) {\n      return tx.createTransaction(res);\n    });\n}\n\nexport function introspectAuthn (sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, args) {\n  if (!args || !args.stateToken) {\n    var stateToken = getSavedStateToken(sdk);\n    if (stateToken) {\n      args = {\n        stateToken: stateToken\n      };\n    } else {\n      return Promise.reject(new AuthSdkError('No transaction to evaluate'));\n    }\n  }\n  return transactionStep(sdk, args)\n    .then(function (res) {\n      return tx.createTransaction(res);\n    });\n}\n\nexport function transactionStep(sdk: OktaAuthHttpInterface, args) {\n  args = addStateToken(sdk, args);\n  // v1 pipeline introspect API\n  return post(sdk, sdk.getIssuerOrigin() + '/api/v1/authn/introspect', args, { withCredentials: true });\n}\n\nexport function transactionExists(sdk: OktaAuthBaseInterface<OktaAuthStorageOptions>) {\n  // We have a cookie state token\n  return !!getSavedStateToken(sdk);\n}\n\nexport function postToTransaction(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, url: string, args, options?) {\n  options = Object.assign({ withCredentials: true }, options);\n  return post(sdk, url, args, options)\n    .then(function(res) {\n      return tx.createTransaction(res);\n    });\n}\n\nexport function getSavedStateToken(sdk: OktaAuthBaseInterface<OktaAuthStorageOptions>) {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    const storage = sdk.options.storageUtil!.storage;\n    return storage.get(STATE_TOKEN_KEY_NAME);\n}\n","import { OktaAuthHttpInterface } from '../../http/types';\nimport { find, omit, toQueryString } from '../../util';\nimport AuthSdkError from '../../errors/AuthSdkError';\nimport { get } from '../../http';\nimport { AuthnTransactionAPI, AuthnTransactionState } from '../types';\nimport { postToTransaction } from '../api';\nimport { addStateToken } from './stateToken';\n\n\n// query parameters to post url\ninterface PostToTransactionParams {\n  autoPush?: boolean;\n  rememberDevice?: boolean;\n  updatePhone?: boolean;\n}\n\n// eslint-disable-next-line max-params\nexport function link2fn(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, res, obj, link, ref) {\n  if (Array.isArray(link)) {\n    return function(name, opts?) {\n      if (!name) {\n        throw new AuthSdkError('Must provide a link name');\n      }\n\n      var lk = find(link, {name: name});\n      if (!lk) {\n        throw new AuthSdkError('No link found for that name');\n      }\n\n      return link2fn(sdk, tx, res, obj, lk, ref)(opts);\n    };\n\n  } else if (link.hints &&\n      link.hints.allow &&\n      link.hints.allow.length === 1) {\n    var method = link.hints.allow[0];\n    switch (method) {\n\n      case 'GET':\n        return function() {\n          return get(sdk, link.href, { withCredentials: true });\n        };\n\n      case 'POST':\n        // eslint-disable-next-line max-statements,complexity\n        return function(opts: AuthnTransactionState) {\n          if (ref && ref.isPolling) {\n            ref.isPolling = false;\n          }\n\n          var data = addStateToken(res, opts);\n\n          if (res.status === 'MFA_ENROLL' || res.status === 'FACTOR_ENROLL') {\n            // Add factorType and provider\n            Object.assign(data, {\n              factorType: obj.factorType,\n              provider: obj.provider\n            });\n          }\n\n          var params = {} as PostToTransactionParams;\n          var autoPush = data.autoPush;\n          if (autoPush !== undefined) {\n            if (typeof autoPush === 'function') {\n              try {\n                params.autoPush = !!autoPush();\n              }\n              catch (e) {\n                return Promise.reject(new AuthSdkError('AutoPush resulted in an error.'));\n              }\n            }\n            else if (autoPush !== null) {\n              params.autoPush = !!autoPush;\n            }\n            data = omit(data, 'autoPush');\n          }\n\n          var rememberDevice = data.rememberDevice;\n          if (rememberDevice !== undefined) {\n            if (typeof rememberDevice === 'function') {\n              try {\n                params.rememberDevice = !!rememberDevice();\n              }\n              catch (e) {\n                return Promise.reject(new AuthSdkError('RememberDevice resulted in an error.'));\n              }\n            }\n            else if (rememberDevice !== null) {\n              params.rememberDevice = !!rememberDevice;\n            }\n            data = omit(data, 'rememberDevice');\n\n          } else if (data.profile &&\n                    data.profile.updatePhone !== undefined) {\n            if (data.profile.updatePhone) {\n              params.updatePhone = true;\n            }\n            data.profile = omit(data.profile, 'updatePhone');\n          }\n          var href = link.href + toQueryString(params);\n          return postToTransaction(sdk, tx, href, data);\n        };\n    }\n  }\n}\n\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport CustomError from './CustomError';\n\nexport default class AuthPollStopError extends CustomError {\n  constructor() {\n    const message = 'The poll was stopped by the sdk';\n    super(message);\n  }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { post } from '../../http';\nimport { isNumber, isObject, getLink, toQueryString, delay as delayFn } from '../../util';\nimport { DEFAULT_POLLING_DELAY } from '../../constants';\nimport AuthSdkError from '../../errors/AuthSdkError';\nimport AuthPollStopError from '../../errors/AuthPollStopError';\nimport { AuthnTransactionState } from '../types';\nimport { getStateToken } from './stateToken';\n\ninterface PollOptions {\n  delay?: number;\n  rememberDevice?: boolean;\n  autoPush?: boolean;\n  transactionCallBack?: (AuthnTransactionState) => void;\n}\n\nexport function getPollFn(sdk, res: AuthnTransactionState, ref) {\n  return function (options: PollOptions | number) {\n    var delay;\n    var rememberDevice;\n    var autoPush;\n    var transactionCallBack;\n\n    if (isNumber(options)) {\n      delay = options;\n    } else if (isObject(options)) {\n      options = options as PollOptions;\n      delay = options.delay;\n      rememberDevice = options.rememberDevice;\n      autoPush = options.autoPush;\n      transactionCallBack = options.transactionCallBack;\n    }\n\n    if (!delay && delay !== 0) {\n      delay = DEFAULT_POLLING_DELAY;\n    }\n\n    // Get the poll function\n    var pollLink = getLink(res, 'next', 'poll');\n    // eslint-disable-next-line complexity\n    function pollFn() {\n      var opts = {} as PollOptions;\n      if (typeof autoPush === 'function') {\n        try {\n          opts.autoPush = !!autoPush();\n        }\n        catch (e) {\n          return Promise.reject(new AuthSdkError('AutoPush resulted in an error.'));\n        }\n      }\n      else if (autoPush !== undefined && autoPush !== null) {\n        opts.autoPush = !!autoPush;\n      }\n      if (typeof rememberDevice === 'function') {\n        try {\n          opts.rememberDevice = !!rememberDevice();\n        }\n        catch (e) {\n          return Promise.reject(new AuthSdkError('RememberDevice resulted in an error.'));\n        }\n      }\n      else if (rememberDevice !== undefined && rememberDevice !== null) {\n        opts.rememberDevice = !!rememberDevice;\n      }\n\n      var href = pollLink.href + toQueryString(opts);\n      return post(sdk, href, getStateToken(res), {\n        saveAuthnState: false,\n        withCredentials: true\n      });\n    }\n\n    ref.isPolling = true;\n\n    var retryCount = 0;\n    var recursivePoll = function () {\n      // If the poll was manually stopped during the delay\n      if (!ref.isPolling) {\n        return Promise.reject(new AuthPollStopError());\n      }\n      return pollFn()\n        .then(function (pollRes) {\n          // Reset our retry counter on success\n          retryCount = 0;\n\n          // If we're still waiting\n          if (pollRes.factorResult && pollRes.factorResult === 'WAITING') {\n\n            // If the poll was manually stopped while the pollFn was called\n            if (!ref.isPolling) {\n              throw new AuthPollStopError();\n            }\n\n            if (typeof transactionCallBack === 'function') {\n              transactionCallBack(pollRes);\n            }\n\n            // Continue poll\n            return delayFn(delay).then(recursivePoll);\n\n          } else {\n            // Any non-waiting result, even if polling was stopped\n            // during a request, will return\n            ref.isPolling = false;\n            return sdk.tx.createTransaction(pollRes);\n          }\n        })\n        .catch(function(err) {\n          // Exponential backoff, up to 16 seconds\n          if (err.xhr &&\n              (err.xhr.status === 0 || err.xhr.status === 429) &&\n              retryCount <= 4) {\n            var delayLength = Math.pow(2, retryCount) * 1000;\n            retryCount++;\n            return delayFn(delayLength)\n              .then(recursivePoll);\n          }\n          throw err;\n        });\n    };\n    return recursivePoll()\n      .catch(function(err) {\n        ref.isPolling = false;\n        throw err;\n      });\n  };\n}\n","/* eslint-disable complexity */\nimport { OktaAuthHttpInterface } from '../../http/types';\nimport { clone, isObject, omit } from '../../util';\nimport { AuthnTransactionAPI } from '../types';\nimport { links2fns } from './links2fns';\n\nexport function flattenEmbedded(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, res, obj, ref) {\n  obj = obj || res;\n  obj = clone(obj);\n\n  if (Array.isArray(obj)) {\n    var objArr = [];\n    for (var o = 0, ol = obj.length; o < ol; o++) {\n      objArr.push(flattenEmbedded(sdk, tx, res, obj[o], ref) as never);\n    }\n    return objArr;\n  }\n\n  var embedded = obj._embedded || {};\n\n  for (var key in embedded) {\n    if (!Object.prototype.hasOwnProperty.call(embedded, key)) {\n      continue;\n    }\n\n    // Flatten any nested _embedded objects\n    if (isObject(embedded[key]) || Array.isArray(embedded[key])) {\n      embedded[key] = flattenEmbedded(sdk, tx, res, embedded[key], ref);\n    }\n  }\n\n  // Convert any links on the embedded object\n  var fns = links2fns(sdk, tx, res, obj, ref);\n  Object.assign(embedded, fns);\n\n  obj = omit(obj, '_embedded', '_links');\n  Object.assign(obj, embedded);\n  return obj;\n}\n","import { OktaAuthHttpInterface } from '../../http/types';\nimport { AuthnTransactionFunctions, AuthnTransactionAPI } from '../types';\nimport { link2fn } from './link2fn';\nimport { getPollFn } from './poll';\n\nexport function links2fns(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, res, obj, ref) {\n  var fns = {} as AuthnTransactionFunctions;\n  for (var linkName in obj._links) {\n    if (!Object.prototype.hasOwnProperty.call(obj._links, linkName)) {\n      continue;\n    }\n\n    var link = obj._links[linkName];\n    \n    if (linkName === 'next') {\n      linkName = link.name;\n    }\n\n    if (link.type) {\n      fns[linkName] = link;\n      continue;\n    }\n\n    switch (linkName) {\n      // poll is only found at the transaction\n      // level, so we don't need to pass the link\n      case 'poll':\n        fns.poll = getPollFn(sdk, res, ref);\n        break;\n\n      default:\n        var fn = link2fn(sdk, tx, res, obj, link, ref);\n        if (fn) {\n          fns[linkName] = fn;\n        }\n    }\n  }\n  return fns;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { OktaAuthHttpInterface } from '../http/types';\nimport {\n  AuthnTransactionFunction,\n  AuthnTransaction,\n  AuthnTransactionAPI,\n  AuthnTransactionState\n} from './types';\nimport { flattenEmbedded } from './util/flattenEmbedded';\n\nexport class AuthnTransactionImpl implements AuthnTransaction {\n  next?: AuthnTransactionFunction;\n  cancel?: AuthnTransactionFunction;\n  skip?: AuthnTransactionFunction;\n  unlock?: AuthnTransactionFunction;\n  changePassword?: AuthnTransactionFunction;\n  resetPassword?: AuthnTransactionFunction;\n  answer?: AuthnTransactionFunction;\n  recovery?: AuthnTransactionFunction;\n  verify?: AuthnTransactionFunction;\n  resend?: AuthnTransactionFunction;\n  activate?: AuthnTransactionFunction;\n  poll?: AuthnTransactionFunction;\n  prev?: AuthnTransactionFunction;\n\n  data?: AuthnTransactionState;\n  stateToken?: string;\n  sessionToken?: string;\n  status: string;\n  user?: Record<string, any>;\n  factor?: Record<string, any>;\n  factors?: Array<Record<string, any> >;\n  policy?: Record<string, any>;\n  scopes?: Array<Record<string, any> >;\n  target?: Record<string, any>;\n  authentication?: Record<string, any>;\n  constructor(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, res: AuthnTransactionState | null = null) {\n    this.data = undefined;\n    this.status = undefined as unknown as string;\n    if (res) {\n      this.data = res;\n\n      // Parse response from Authn V1\n      Object.assign(this, flattenEmbedded(sdk, tx, res, res, {}));\n      delete this.stateToken;\n\n      // RECOVERY_CHALLENGE has some responses without _links.\n      // Without _links, we emulate cancel to make it intuitive\n      // to return to the starting state. We may remove this\n      // when OKTA-75434 is resolved\n      if (res.status === 'RECOVERY_CHALLENGE' && !res._links) {\n        this.cancel = function() {\n          return Promise.resolve(tx.createTransaction());\n        };\n      }\n    }\n  }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { RequestData, RequestOptions, OktaAuthHttpInterface } from '../http/types';\nimport {\n  introspectAuthn,\n  transactionStatus,\n  transactionExists,\n  resumeTransaction,\n  postToTransaction\n} from './api';\nimport { AuthnTransactionImpl } from './AuthnTransactionImpl';\nimport { AuthnTransactionAPI, AuthnTransactionState } from './types';\n\n// Factory\nexport function createAuthnTransactionAPI(sdk: OktaAuthHttpInterface): AuthnTransactionAPI {\n  const tx: AuthnTransactionAPI = {\n    status: transactionStatus.bind(null, sdk),\n    resume(args) {\n      return resumeTransaction(sdk, tx, args);\n    },\n    exists: transactionExists.bind(null, sdk),\n    introspect(args) {\n      return introspectAuthn(sdk, tx, args);\n    },\n    createTransaction: (res?: AuthnTransactionState) => {\n      return new AuthnTransactionImpl(sdk, tx, res);\n    },\n    postToTransaction: (url: string, args?: RequestData, options?: RequestOptions) => {\n      return postToTransaction(sdk, tx, url, args, options);\n    }\n  };\n  return tx;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthSdkError } from '../errors';\nimport { isFingerprintSupported } from '../features';\nimport {\n  addListener,\n  removeListener\n} from '../oidc';\nimport { FingerprintOptions } from '../authn/types';\nimport { OktaAuthHttpInterface } from '../http/types';\n\nexport default function fingerprint(sdk: OktaAuthHttpInterface, options?: FingerprintOptions): Promise<string> {\n  options = options || {};\n\n  if (!isFingerprintSupported()) {\n    return Promise.reject(new AuthSdkError('Fingerprinting is not supported on this device'));\n  }\n\n  var timeout;\n  var iframe;\n  var listener;\n  var promise = new Promise(function (resolve, reject) {\n    iframe = document.createElement('iframe');\n    iframe.style.display = 'none';\n\n    // eslint-disable-next-line complexity\n    listener = function listener(e) {\n      if (!e || !e.data || e.origin !== sdk.getIssuerOrigin()) {\n        return;\n      }\n\n      try {\n        var msg = JSON.parse(e.data);\n      } catch (err) {\n        // iframe messages should all be parsable\n        // skip not parsable messages come from other sources in same origin (browser extensions)\n        // TODO: add namespace flag in okta-core to distinguish messages that come from other sources\n        return;\n      }\n\n      if (!msg) { return; }\n      if (msg.type === 'FingerprintAvailable') {\n        return resolve(msg.fingerprint as string);\n      }\n      if (msg.type === 'FingerprintServiceReady') {\n        e.source.postMessage(JSON.stringify({\n          type: 'GetFingerprint'\n        }), e.origin);\n      }\n    };\n    addListener(window, 'message', listener);\n\n    iframe.src = sdk.getIssuerOrigin() + '/auth/services/devicefingerprint';\n    document.body.appendChild(iframe);\n\n    timeout = setTimeout(function() {\n      reject(new AuthSdkError('Fingerprinting timed out'));\n    }, options?.timeout || 15000);\n  });\n\n  return promise.finally(function() {\n    clearTimeout(timeout);\n    removeListener(window, 'message', listener);\n    if (document.body.contains(iframe)) {\n      iframe.parentElement.removeChild(iframe);\n    }\n  }) as Promise<string>;\n}\n","import {\n  OktaAuthOptionsConstructor,\n} from '../base';\n\nimport {\n  IdxStorageManagerConstructor,\n  IdxTransactionManagerConstructor,\n  OktaAuthIdxOptions,\n  createIdxTransactionManager,\n  createOktaAuthIdx,\n  createIdxStorageManager,\n  createIdxOptionsConstructor\n} from '../idx';\n\nimport { mixinMyAccount } from '../myaccount';\nimport { mixinAuthn } from '../authn';\n\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface OktaAuthOptions extends OktaAuthIdxOptions {}\n\nconst OptionsConstructor: OktaAuthOptionsConstructor<OktaAuthOptions> = createIdxOptionsConstructor();\nconst StorageManager: IdxStorageManagerConstructor = createIdxStorageManager();\nconst TransactionManager: IdxTransactionManagerConstructor = createIdxTransactionManager();\n\n// Default bundle includes everything\nconst WithIdx = createOktaAuthIdx(StorageManager, OptionsConstructor, TransactionManager);\nconst WithMyAccount = mixinMyAccount(WithIdx);\nconst WithAuthn = mixinAuthn(WithMyAccount);\n\nclass OktaAuth extends WithAuthn {\n  constructor(options: OktaAuthOptions) {\n    super(options);\n  }\n}\n\nexport default OktaAuth;\nexport { OktaAuth };\nexport * from './common';\nexport * from '../idx';\nexport * from '../myaccount';\nexport * from '../authn';\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createCoreOptionsConstructor } from '../core/options';\nimport { FlowIdentifier } from './types/FlowIdentifier';\nimport { OktaAuthIdxOptions } from './types/options';\n\n\nexport function createIdxOptionsConstructor() {\n  const CoreOptionsConstructor = createCoreOptionsConstructor();\n  return class IdxOptionsConstructor\n    extends CoreOptionsConstructor \n    implements Required<OktaAuthIdxOptions>\n  {\n    flow: FlowIdentifier;\n    activationToken: string;\n    recoveryToken: string;\n  \n    // BETA WARNING: configs in this section are subject to change without a breaking change notice\n    idx: {\n      useGenericRemediator?: boolean;\n      exchangeCodeForTokens?: boolean;\n    };\n  \n    constructor(options: any) {\n      super(options);\n  \n      this.flow = options.flow;\n      this.activationToken = options.activationToken;\n      this.recoveryToken = options.recoveryToken;\n      this.idx = options.idx;\n    }\n  };\n  \n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createOAuthOptionsConstructor } from '../oidc';\nimport { AuthState, OktaAuthCoreInterface, OktaAuthCoreOptions, ServiceManagerOptions } from './types';\n\n\nexport function createCoreOptionsConstructor()\n{\n  const OAuthOptionsConstructor = createOAuthOptionsConstructor();\n  return class CoreOptionsConstructor\n    extends OAuthOptionsConstructor\n    implements Required<OktaAuthCoreOptions>\n  {\n    services: ServiceManagerOptions;\n    transformAuthState: (oktaAuth: OktaAuthCoreInterface, authState: AuthState) => Promise<AuthState>;\n\n    constructor(options: any) {\n      super(options);\n      this.services = options.services;\n      this.transformAuthState = options.transformAuthState;\n    }\n  };\n}\n","import { CookieOptions, StorageManagerOptions, StorageOptions, StorageUtil } from '../storage/types';\nimport {  IdxTransactionMeta } from './types';\nimport { SavedObject } from '../storage';\nimport { IDX_RESPONSE_STORAGE_NAME } from '../constants';\nimport { createCoreStorageManager } from '../core/storage';\nimport { IdxResponseStorage } from './types/storage';\nimport { isBrowser } from '../features';\nimport { warn } from '../util';\nimport AuthSdkError from '../errors/AuthSdkError';\n\nexport function createIdxStorageManager<M extends IdxTransactionMeta>()\n{\n  const CoreStorageManager = createCoreStorageManager<M>();\n  return class IdxStorageManager extends CoreStorageManager\n  {\n    constructor(storageManagerOptions: StorageManagerOptions, cookieOptions: CookieOptions, storageUtil: StorageUtil) {\n      super(storageManagerOptions, cookieOptions, storageUtil);\n    }\n\n    // intermediate idxResponse\n    // store for network traffic optimazation purpose\n    // TODO: revisit in auth-js 6.0 epic JIRA: OKTA-399791\n    getIdxResponseStorage(options?: StorageOptions): IdxResponseStorage | null {\n      let storage;\n      if (isBrowser()) {\n        // on browser side only use memory storage \n        try {\n          storage = this.storageUtil.getStorageByType('memory', options);\n        } catch (e) {\n          // it's ok to miss response storage\n          // eslint-disable-next-line max-len\n          warn('No response storage found, you may want to provide custom implementation for intermediate idx responses to optimize the network traffic');\n        }\n      } else {\n        // on server side re-use transaction custom storage\n        const transactionStorage = this.getTransactionStorage(options);\n        if (transactionStorage) {\n          storage = {\n            getItem: (key) => {\n              const transaction = transactionStorage.getStorage();\n              if (transaction && transaction[key]) {\n                return transaction[key];\n              }\n              return null;\n            },\n            setItem: (key, val) => {\n              const transaction = transactionStorage.getStorage();\n              if (!transaction) {\n                throw new AuthSdkError('Transaction has been cleared, failed to save idxState');\n              }\n              transaction[key] = val;\n              transactionStorage.setStorage(transaction);\n            },\n            removeItem: (key) => {\n              const transaction = transactionStorage.getStorage();\n              if (!transaction) {\n                return;\n              }\n              delete transaction[key];\n              transactionStorage.setStorage(transaction);\n            }\n          };\n        }\n      }\n\n      if (!storage) {\n        return null;\n      }\n\n      return new SavedObject(storage, IDX_RESPONSE_STORAGE_NAME);\n    }\n  };\n}\n","import { ClearTransactionMetaOptions, TransactionManagerOptions } from '../oidc/types';\nimport { createTransactionManager } from '../oidc/TransactionManager';\nimport { IdxTransactionMeta, IntrospectOptions } from './types';\nimport { isRawIdxResponse } from './types/idx-js';\nimport { IdxStorageManagerInterface, SavedIdxResponse } from './types/storage';\n\nexport function createIdxTransactionManager\n<\n  M extends IdxTransactionMeta = IdxTransactionMeta,\n  S extends IdxStorageManagerInterface<M> = IdxStorageManagerInterface<M>\n>\n()\n{\n  const TransactionManager = createTransactionManager<M, S>();\n  return class IdxTransactionManager extends TransactionManager\n  {\n    constructor(options: TransactionManagerOptions) {\n      super(options);\n    }\n\n    clear(options: ClearTransactionMetaOptions = {}) {\n      super.clear(options);\n\n      if (options.clearIdxResponse !== false) {\n        this.clearIdxResponse();\n      }\n    }\n    \n    saveIdxResponse(data: SavedIdxResponse): void {\n      if (!this.saveLastResponse) {\n        return;\n      }\n      const storage = this.storageManager.getIdxResponseStorage();\n      if (!storage) {\n        return;\n      }\n      storage.setStorage(data);\n    }\n\n    // eslint-disable-next-line complexity\n    loadIdxResponse(options?: IntrospectOptions): SavedIdxResponse | null {\n      if (!this.saveLastResponse) {\n        return null;\n      }\n      const storage = this.storageManager.getIdxResponseStorage();\n      if (!storage) {\n        return null;\n      }\n      const storedValue = storage.getStorage();\n      if (!storedValue || !isRawIdxResponse(storedValue.rawIdxResponse)) {\n        return null;\n      }\n\n      if (options) {\n        const { interactionHandle } = options;\n        if (interactionHandle && storedValue.interactionHandle !== interactionHandle) {\n          return null;\n        }\n      }\n\n      return storedValue;\n    }\n\n    clearIdxResponse(): void {\n      if (!this.saveLastResponse) {\n        return;\n      }\n      const storage = this.storageManager.getIdxResponseStorage();\n      storage?.clearStorage();\n    }\n  };\n}\n","import { createOktaAuthCore } from '../../core/factory';\nimport { OktaAuthOptionsConstructor } from '../../base/types';\nimport { StorageManagerConstructor } from '../../storage/types';\nimport { IdxTransactionManagerInterface, OktaAuthIdxInterface, OktaAuthIdxConstructor } from '../types/api';\nimport { IdxTransactionMeta } from '../types/meta';\nimport { IdxStorageManagerInterface } from '../types/storage';\nimport { OktaAuthIdxOptions } from '../types/options';\nimport { mixinIdx } from '../mixin';\nimport { TransactionManagerConstructor } from '../../oidc/types';\nimport { OktaAuthCoreInterface } from '../../core/types';\n\nexport function createOktaAuthIdx<\n  M extends IdxTransactionMeta = IdxTransactionMeta,\n  S extends IdxStorageManagerInterface<M> = IdxStorageManagerInterface<M>,\n  O extends OktaAuthIdxOptions = OktaAuthIdxOptions,\n  TM extends IdxTransactionManagerInterface = IdxTransactionManagerInterface\n>(\n  StorageManagerConstructor: StorageManagerConstructor<S>,\n  OptionsConstructor: OktaAuthOptionsConstructor<O>,\n  TransactionManagerConstructor: TransactionManagerConstructor<TM>\n)\n: OktaAuthIdxConstructor<OktaAuthIdxInterface<M, S, O, TM> & OktaAuthCoreInterface<M, S, O, TM>>\n{\n  const Core = createOktaAuthCore<M, S, O, TM>(\n    StorageManagerConstructor,\n    OptionsConstructor,\n    TransactionManagerConstructor\n  );\n  const WithIdx = mixinIdx(Core);\n  return WithIdx;\n}\n","import { OktaAuthConstructor } from '../base/types';\nimport { OktaAuthOAuthInterface } from '../oidc/types';\nimport {\n  IdxAPI, \n  IdxTransactionManagerInterface, \n  OktaAuthIdxInterface, \n  OktaAuthIdxConstructor, \n  OktaAuthIdxOptions, \n  WebauthnAPI\n} from './types';\nimport { IdxTransactionMeta } from './types/meta';\nimport { IdxStorageManagerInterface } from './types/storage';\nimport { createIdxAPI } from './factory/api';\nimport * as webauthn from './webauthn';\n\nexport function mixinIdx\n<\n  M extends IdxTransactionMeta = IdxTransactionMeta,\n  S extends IdxStorageManagerInterface<M> = IdxStorageManagerInterface<M>,\n  O extends OktaAuthIdxOptions = OktaAuthIdxOptions,\n  TM extends IdxTransactionManagerInterface = IdxTransactionManagerInterface,\n  TBase extends OktaAuthConstructor<OktaAuthOAuthInterface<M, S, O, TM>>\n    = OktaAuthConstructor<OktaAuthOAuthInterface<M, S, O, TM>>\n>\n(Base: TBase): TBase & OktaAuthIdxConstructor<OktaAuthIdxInterface<M, S, O, TM>>\n{\n  return class OktaAuthIdx extends Base implements OktaAuthIdxInterface<M, S, O, TM>\n  {\n    idx: IdxAPI;\n    static webauthn: WebauthnAPI = webauthn;\n    \n    constructor(...args: any[]) {\n      super(...args);\n      this.idx = createIdxAPI(this);\n    }\n  };\n}\n","import { OktaAuthConstructor } from '../base/types';\nimport {\n  OAuthStorageManagerInterface,\n  OAuthTransactionMeta,\n  OktaAuthOAuthInterface,\n  OktaAuthOAuthOptions,\n  PKCETransactionMeta,\n} from '../oidc/types';\nimport { OktaAuthMyAccountInterface } from './types';\n\nimport * as MyAccountMethods from './api';\n\nexport function mixinMyAccount\n<\n  M extends OAuthTransactionMeta = PKCETransactionMeta,\n  S extends OAuthStorageManagerInterface<M> = OAuthStorageManagerInterface<M>,\n  O extends OktaAuthOAuthOptions = OktaAuthOAuthOptions,\n  TBase extends OktaAuthConstructor<OktaAuthOAuthInterface<M, S, O>>\n    = OktaAuthConstructor<OktaAuthOAuthInterface<M, S, O>>\n>\n(Base: TBase): TBase & OktaAuthConstructor<OktaAuthMyAccountInterface<M, S, O>>\n{\n  return class OktaAuthMyAccount extends Base implements OktaAuthMyAccountInterface<M, S, O>\n  {\n    myaccount: any;\n    \n    constructor(...args: any[]) {\n      super(...args);\n\n      this.myaccount = Object.entries(MyAccountMethods)\n        .filter(([ name ]) => name !== 'default')\n        .reduce((acc, [name, fn]) => {\n          acc[name] = (fn as any).bind(null, this);\n          return acc;\n        }, {});\n    }\n  };\n}\n","/* eslint-disable max-statements */\n/* eslint-disable complexity */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { \n  clone,\n} from '../util';\nimport fingerprint from '../browser/fingerprint';\nimport {\n  FingerprintAPI,\n  SigninWithCredentialsOptions,\n  ForgotPasswordOptions,\n  VerifyRecoveryTokenOptions,\n  SigninOptions,\n  OktaAuthTxInterface,\n  AuthnTransaction,\n  AuthnTransactionAPI\n} from './types';\nimport {\n  createAuthnTransactionAPI,\n} from './factory';\nimport { StorageManagerInterface } from '../storage/types';\nimport { OktaAuthHttpInterface, OktaAuthHttpOptions } from '../http/types';\nimport { OktaAuthConstructor } from '../base/types';\n\nexport function mixinAuthn\n<\n  S extends StorageManagerInterface = StorageManagerInterface,\n  O extends OktaAuthHttpOptions = OktaAuthHttpOptions,\n  TBase extends OktaAuthConstructor<OktaAuthHttpInterface<S, O>>\n    = OktaAuthConstructor<OktaAuthHttpInterface<S, O>>\n>\n(Base: TBase): TBase & OktaAuthConstructor<OktaAuthTxInterface<S, O>>\n{\n  return class OktaAuthTx extends Base implements OktaAuthTxInterface<S, O> {\n    tx: AuthnTransactionAPI; // legacy, may be removed in future version\n    authn: AuthnTransactionAPI;\n    fingerprint: FingerprintAPI;\n\n    constructor(...args: any[]) {\n      super(...args);\n\n      this.authn = this.tx = createAuthnTransactionAPI(this);\n      \n      // Fingerprint API\n      this.fingerprint = fingerprint.bind(null, this);\n    }\n\n    // Authn  V1\n    async signIn(opts: SigninOptions): Promise<AuthnTransaction> {\n      opts = clone(opts || {});\n      const _postToTransaction = (options?) => {\n        delete opts.sendFingerprint;\n        return this.tx.postToTransaction('/api/v1/authn', opts, options);\n      };\n      if (!opts.sendFingerprint) {\n        return _postToTransaction();\n      }\n      return this.fingerprint()\n      .then(function(fingerprint) {\n        return _postToTransaction({\n          headers: {\n            'X-Device-Fingerprint': fingerprint\n          }\n        });\n      });\n    }\n\n    // Authn  V1\n    async signInWithCredentials(opts: SigninWithCredentialsOptions): Promise<AuthnTransaction> {\n      return this.signIn(opts);\n    }\n\n    // { username, (relayState) }\n    forgotPassword(opts): Promise<AuthnTransaction> {\n      return this.tx.postToTransaction('/api/v1/authn/recovery/password', opts);\n    }\n\n    // { username, (relayState) }\n    unlockAccount(opts: ForgotPasswordOptions): Promise<AuthnTransaction> {\n      return this.tx.postToTransaction('/api/v1/authn/recovery/unlock', opts);\n    }\n\n    // { recoveryToken }\n    verifyRecoveryToken(opts: VerifyRecoveryTokenOptions): Promise<AuthnTransaction> {\n      return this.tx.postToTransaction('/api/v1/authn/recovery/token', opts);\n    }\n\n  };\n}\n","export default function compareVersions(v1, v2) {\n  // validate input and split into segments\n  const n1 = validateAndParse(v1);\n  const n2 = validateAndParse(v2);\n\n  // pop off the patch\n  const p1 = n1.pop();\n  const p2 = n2.pop();\n\n  // validate numbers\n  const r = compareSegments(n1, n2);\n  if (r !== 0) return r;\n\n  // validate pre-release\n  if (p1 && p2) {\n    return compareSegments(p1.split('.'), p2.split('.'));\n  } else if (p1 || p2) {\n    return p1 ? -1 : 1;\n  }\n\n  return 0;\n}\n\nexport const validate = (v) =>\n  typeof v === 'string' && /^[v\\d]/.test(v) && semver.test(v);\n\nexport const compare = (v1, v2, operator) => {\n  // validate input operator\n  assertValidOperator(operator);\n\n  // since result of compareVersions can only be -1 or 0 or 1\n  // a simple map can be used to replace switch\n  const res = compareVersions(v1, v2);\n\n  return operatorResMap[operator].includes(res);\n};\n\nexport const satisfies = (v, r) => {\n  // if no range operator then \"=\"\n  const m = r.match(/^([<>=~^]+)/);\n  const op = m ? m[1] : '=';\n\n  // if gt/lt/eq then operator compare\n  if (op !== '^' && op !== '~') return compare(v, r, op);\n\n  // else range of either \"~\" or \"^\" is assumed\n  const [v1, v2, v3] = validateAndParse(v);\n  const [r1, r2, r3] = validateAndParse(r);\n  if (compareStrings(v1, r1) !== 0) return false;\n  if (op === '^') {\n    return compareSegments([v2, v3], [r2, r3]) >= 0;\n  }\n  if (compareStrings(v2, r2) !== 0) return false;\n  return compareStrings(v3, r3) >= 0;\n};\n\n// export CJS style for parity\ncompareVersions.validate = validate;\ncompareVersions.compare = compare;\ncompareVersions.satisfies = satisfies;\n\nconst semver =\n  /^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\-]+(?:\\.[\\da-z\\-]+)*))?(?:\\+[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?)?)?$/i;\n\nconst validateAndParse = (v) => {\n  if (typeof v !== 'string') {\n    throw new TypeError('Invalid argument expected string');\n  }\n  const match = v.match(semver);\n  if (!match) {\n    throw new Error(`Invalid argument not valid semver ('${v}' received)`);\n  }\n  match.shift();\n  return match;\n};\n\nconst isWildcard = (s) => s === '*' || s === 'x' || s === 'X';\n\nconst tryParse = (v) => {\n  const n = parseInt(v, 10);\n  return isNaN(n) ? v : n;\n};\n\nconst forceType = (a, b) =>\n  typeof a !== typeof b ? [String(a), String(b)] : [a, b];\n\nconst compareStrings = (a, b) => {\n  if (isWildcard(a) || isWildcard(b)) return 0;\n  const [ap, bp] = forceType(tryParse(a), tryParse(b));\n  if (ap > bp) return 1;\n  if (ap < bp) return -1;\n  return 0;\n};\n\nconst compareSegments = (a, b) => {\n  for (let i = 0; i < Math.max(a.length, b.length); i++) {\n    const r = compareStrings(a[i] || 0, b[i] || 0);\n    if (r !== 0) return r;\n  }\n  return 0;\n};\n\nconst operatorResMap = {\n  '>': [1],\n  '>=': [0, 1],\n  '=': [0],\n  '<=': [-1, 0],\n  '<': [-1],\n};\n\nconst allowedOperators = Object.keys(operatorResMap);\n\nconst assertValidOperator = (op) => {\n  if (typeof op !== 'string') {\n    throw new TypeError(\n      `Invalid operator type, expected string but got ${typeof op}`\n    );\n  }\n  if (allowedOperators.indexOf(op) === -1) {\n    throw new Error(\n      `Invalid operator, expected one of ${allowedOperators.join('|')}`\n    );\n  }\n};\n","/*\n * Copyright (c) 2020-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport * as React from 'react';\n\nconst OktaError: React.FC<{ error: Error }> = ({ error }) => { \n  if(error.name && error.message) { \n    return <p>{error.name}: {error.message}</p>;\n  }\n  return <p>Error: {error.toString()}</p>;\n};\n\nexport default OktaError;\n","/*!\n * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport * as React from 'react';\nimport { AuthSdkError, AuthState, OktaAuth } from '@okta/okta-auth-js';\nimport OktaContext, { OnAuthRequiredFunction, RestoreOriginalUriFunction } from './OktaContext';\nimport OktaError from './OktaError';\nimport { compare as compareVersions } from 'compare-versions';\n\ndeclare const AUTH_JS: {\n  minSupportedVersion: string;\n}\n\ndeclare const PACKAGE_NAME: string;\ndeclare const PACKAGE_VERSION: string;\ndeclare const SKIP_VERSION_CHECK: string;\n\nconst Security: React.FC<{\n  oktaAuth: OktaAuth,\n  restoreOriginalUri: RestoreOriginalUriFunction, \n  onAuthRequired?: OnAuthRequiredFunction,\n  children?: React.ReactNode\n} & React.HTMLAttributes<HTMLDivElement>> = ({ \n  oktaAuth,\n  restoreOriginalUri, \n  onAuthRequired, \n  children\n}) => { \n  const [authState, setAuthState] = React.useState(() => {\n    if (!oktaAuth) {\n      return null;\n    }\n    return oktaAuth.authStateManager.getAuthState();\n  });\n\n  React.useEffect(() => {\n    if (!oktaAuth || !restoreOriginalUri) {\n      return;\n    }\n\n    // Add default restoreOriginalUri callback\n    // props.restoreOriginalUri is required, therefore if options.restoreOriginalUri exists, there are 2 callbacks\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    if (oktaAuth.options.restoreOriginalUri) {\n      console.warn('Two custom restoreOriginalUri callbacks are detected. The one from the OktaAuth configuration will be overridden by the provided restoreOriginalUri prop from the Security component.');\n    }\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    oktaAuth.options.restoreOriginalUri = (async (oktaAuth: unknown, originalUri: string) => {\n      restoreOriginalUri(oktaAuth as OktaAuth, originalUri);\n    }) as ((oktaAuth: OktaAuth, originalUri?: string) => Promise<void>);\n\n  }, []); // empty array, only check on component mount\n\n  React.useEffect(() => {\n    if (!oktaAuth) {\n      return;\n    }\n\n    // Add okta-react userAgent\n    if (oktaAuth._oktaUserAgent) {\n      oktaAuth._oktaUserAgent.addEnvironment(`${PACKAGE_NAME}/${PACKAGE_VERSION}`);\n    } else {\n      console.warn('_oktaUserAgent is not available on auth SDK instance. Please use okta-auth-js@^5.3.1 .');\n    }\n\n    // Update Security provider with latest authState\n    const currentAuthState = oktaAuth.authStateManager.getAuthState();\n    if (currentAuthState !== authState) {\n      setAuthState(currentAuthState);\n    }\n    const handler = (authState: AuthState) => {\n      setAuthState(authState);\n    };\n    oktaAuth.authStateManager.subscribe(handler);\n\n    // Trigger an initial change event to make sure authState is latest\n    oktaAuth.start();\n\n    return () => {\n      oktaAuth.authStateManager.unsubscribe(handler);\n    };\n  }, [oktaAuth]);\n\n  if (!oktaAuth) {\n    const err = new AuthSdkError('No oktaAuth instance passed to Security Component.');\n    return <OktaError error={err} />;\n  }\n\n  if (!restoreOriginalUri) {\n    const err = new AuthSdkError('No restoreOriginalUri callback passed to Security Component.');\n    return <OktaError error={err} />;\n  }\n\n  if (!oktaAuth._oktaUserAgent) {\n    console.warn('_oktaUserAgent is not available on auth SDK instance. Please use okta-auth-js@^5.3.1 .');\n  }\n  else {\n    // use SKIP_VERSION_CHECK flag to control version check in tests\n    // OKTA-465157: remove SKIP_VERSION_CHECK\n    const isAuthJsSupported = SKIP_VERSION_CHECK === '1' ||\n      compareVersions(oktaAuth._oktaUserAgent.getVersion(), AUTH_JS.minSupportedVersion, '>=');\n    if (!isAuthJsSupported) {\n      const err = new AuthSdkError(`\n        Passed in oktaAuth is not compatible with the SDK,\n        minimum supported okta-auth-js version is ${AUTH_JS.minSupportedVersion}.\n      `);\n      return <OktaError error={err} />;\n    }\n  }\n\n  return (\n    <OktaContext.Provider value={{ \n      oktaAuth, \n      authState, \n      _onAuthRequired: onAuthRequired\n    }}>\n      {children}\n    </OktaContext.Provider>\n  );\n};\n\nexport default Security;\n","/*\n * Copyright (c) 2020-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport * as React from 'react';\nimport { useOktaAuth, IOktaContext } from './OktaContext';\n\nconst withOktaAuth = <P extends IOktaContext>(\n  ComponentToWrap: React.ComponentType<P>\n): React.FC<Omit<P, keyof IOktaContext>> => { \n  const WrappedComponent = (props: Omit<P, keyof IOktaContext>) => { \n    const oktaAuthProps = useOktaAuth();\n    return <ComponentToWrap {...oktaAuthProps as IOktaContext } {...props as P} />;\n  };\n  WrappedComponent.displayName = 'withOktaAuth_' + (ComponentToWrap.displayName || ComponentToWrap.name);\n  return WrappedComponent;\n};\n\nexport default withOktaAuth;\n","/*\n * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport * as React from 'react';\nimport { useOktaAuth, OnAuthResumeFunction } from './OktaContext';\nimport OktaError from './OktaError';\n\ninterface LoginCallbackProps {\n  errorComponent?: React.ComponentType<{ error: Error }>;\n  onAuthResume?: OnAuthResumeFunction;\n  loadingElement?: React.ReactElement;\n}\n\nlet handledRedirect = false;\n\nconst LoginCallback: React.FC<LoginCallbackProps> = ({ errorComponent, loadingElement = null, onAuthResume }) => { \n  const { oktaAuth, authState } = useOktaAuth();\n  const [callbackError, setCallbackError] = React.useState(null);\n\n  const ErrorReporter = errorComponent || OktaError;\n  React.useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore OKTA-464505: backward compatibility support for auth-js@5\n    const isInteractionRequired = oktaAuth.idx.isInteractionRequired || oktaAuth.isInteractionRequired.bind(oktaAuth);\n    if (onAuthResume && isInteractionRequired()) {\n      onAuthResume();\n      return;\n    }\n    // OKTA-635977: Prevents multiple calls of handleLoginRedirect() in React18 StrictMode\n    // Top-level variable solution follows: https://react.dev/learn/you-might-not-need-an-effect#initializing-the-application\n    if (!handledRedirect) {\n      oktaAuth.handleLoginRedirect().catch(e => {\n        setCallbackError(e);\n      })\n      handledRedirect = true;\n    }\n  }, [oktaAuth]);\n\n  const authError = authState?.error;\n  const displayError = callbackError || authError;\n  if (displayError) { \n    return <ErrorReporter error={displayError}/>;\n  }\n\n  return loadingElement;\n};\n\nexport default LoginCallback;\n","/*\n * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport * as React from 'react';\nimport { useOktaAuth, OnAuthRequiredFunction } from './OktaContext';\nimport * as ReactRouterDom from 'react-router-dom';\nimport { toRelativeUrl, AuthSdkError } from '@okta/okta-auth-js';\nimport OktaError from './OktaError';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet useMatch: any;\nif ('useRouteMatch' in ReactRouterDom) {\n  // trick static analyzer to avoid \"'useRouteMatch' is not exported\" error\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  useMatch = (ReactRouterDom as any)['useRouteMatch' in ReactRouterDom ? 'useRouteMatch' : ''];\n} else {\n  // throw when useMatch is triggered\n  useMatch = () => { \n    throw new AuthSdkError('Unsupported: SecureRoute only works with react-router-dom v5 or any router library with compatible APIs. See examples under the \"samples\" folder for how to implement your own custom SecureRoute Component.');\n  };\n}\n\nconst SecureRoute: React.FC<{\n  onAuthRequired?: OnAuthRequiredFunction;\n  errorComponent?: React.ComponentType<{ error: Error }>;\n} & ReactRouterDom.RouteProps & React.HTMLAttributes<HTMLDivElement>> = ({ \n  onAuthRequired,\n  errorComponent,\n  ...routeProps\n}) => { \n  const { oktaAuth, authState, _onAuthRequired } = useOktaAuth();\n  const match = useMatch(routeProps);\n  const pendingLogin = React.useRef(false);\n  const [handleLoginError, setHandleLoginError] = React.useState<Error | null>(null);\n  const ErrorReporter = errorComponent || OktaError;\n\n  React.useEffect(() => {\n    const handleLogin = async () => {\n      if (pendingLogin.current) {\n        return;\n      }\n\n      pendingLogin.current = true;\n\n      const originalUri = toRelativeUrl(window.location.href, window.location.origin);\n      oktaAuth.setOriginalUri(originalUri);\n      const onAuthRequiredFn = onAuthRequired || _onAuthRequired;\n      if (onAuthRequiredFn) {\n        await onAuthRequiredFn(oktaAuth);\n      } else {\n        await oktaAuth.signInWithRedirect();\n      }\n    };\n\n    // Only process logic if the route matches\n    if (!match) {\n      return;\n    }\n\n    if (!authState) {\n      return;\n    }\n\n    if (authState.isAuthenticated) {\n      pendingLogin.current = false;\n      return;\n    }\n\n    // Start login if app has decided it is not logged in and there is no pending signin\n    if(!authState.isAuthenticated) { \n      handleLogin().catch(err => {\n        setHandleLoginError(err as Error);\n      });\n    }  \n\n  }, [\n    authState,\n    oktaAuth, \n    match, \n    onAuthRequired, \n    _onAuthRequired\n  ]);\n\n  if (handleLoginError) {\n    return <ErrorReporter error={handleLoginError} />;\n  }\n\n  if (!authState || !authState.isAuthenticated) {\n    return null;\n  }\n\n  return (\n    <ReactRouterDom.Route\n      { ...routeProps }\n    />\n  );\n};\n\nexport default SecureRoute;\n","import axios from 'axios';\n\nexport default axios.create({\n    baseURL: process.env.REACT_APP_BASE_URL\n});","//import { dispatch } from 'react-hot-toast/dist/core/store';\nimport approvalApi from '../apis/approvalsApi';\nimport axios from 'axios';\n\n//test data\n\nconst adobeSignTestData = [\n  {\n    \"id\": \"CBJCHBCAABAAkYRwoCka9okzJpe1b0D5DHxNB0zb-ZAi\",\n    \"type\": \"AGREEMENT\",\n    \"name\": \"Test agreeement - vijay to beto\",\n    \"displayDate\": \"2023-12-07T11:43:18Z\",\n    \"requestorName\": \"Vijay AP\",\n    \"status\": \"WAITING_FOR_MY_SIGNATURE\"\n  },\n  {\n    \"id\": \"CBJCHBCAABAAlSmJbJlwlW2lLDuattynfagWqOLgCMft\",\n    \"type\": \"AGREEMENT\",\n    \"name\": \"Test agreement - svc-anywhere to Beto & Luke\",\n    \"displayDate\": \"2023-12-07T11:23:52Z\",\n    \"requestorName\": \"SVC ISI Anywhere\",\n    \"status\": \"WAITING_FOR_MY_SIGNATURE\"\n  }\n];\n\nconst archibusTestData = [\n  {\n    \"createdDate\": \"2024-10-22\",\n    \"recordsCount\": 1,\n    \"email\": \"Beto.HernandezAdame@intusurg.com\",\n    \"eM_ID\": \"BETO HERNANDEZ ADAME-658\"\n  },\n  {\n    \"createdDate\": \"2024-10-17\",\n    \"recordsCount\": 1,\n    \"email\": \"Beto.HernandezAdame@intusurg.com\",\n    \"eM_ID\": \"DAMIEN SWIRBLE-066\"\n  },\n  {\n    \"createdDate\": \"2024-10-17\",\n    \"recordsCount\": 1,\n    \"email\": \"Beto.HernandezAdame@intusurg.com\",\n    \"eM_ID\": \"DAMIEN SWIRBLE-066\"\n  }\n]\n\nconst workdayTestData = [\n  {\n    \"id\": \"c3aab953f4dc9001232b32cbed3b0000\",\n    \"requestor\": \"David Adame\",\n    \"approversEmail\": \"THOMAS.SHAW@INTUSURG.COM\",\n    \"approvers\": \"Thomas Shaw\",\n    \"processType\": \"Home Contact Change\",\n    \"processEventDetail\": \"Notify Thomas Shaw of A To-Do Awaits you:  Initiate Location Change\",\n    \"createdDate\": \"2024-08-20\",\n    \"status\": \"Awaiting Action\"\n  },\n  {\n    \"id\": \"4bd1989974d5900123e161b68b9d0000\",\n    \"requestor\": \"David Adame\",\n    \"approversEmail\": \"THOMAS.SHAW@INTUSURG.COM\",\n    \"approvers\": \"Thomas Shaw\",\n    \"processType\": \"Home Contact Change\",\n    \"processEventDetail\": \"Notify Thomas Shaw of A To-Do Awaits you:  Initiate Location Change\",\n    \"createdDate\": \"2024-08-20\",\n    \"status\": \"Awaiting Action\"\n  }\n];\n\nconst sapWfTestData =\n{\n  \"Count\": 0,\n  \"AppName\": \"SAPWORKFLOW\",\n  \"ApprovalItems\": [\n    {\n      \"purchaseOrder\": [\n        {\n          \"documentType\": \"PurchaseOrder\",\n          \"docNumber\": \"4500255883\",\n          \"taskId\": \"TS00800531\",\n          \"requester\": \"NANCYR\",\n          \"responsible\": null,\n          \"delegatedTo\": null,\n          \"createdOn\": \"20241203\",\n          \"description\": \"Approve Purchase Order 4500255882 (updated 3)\",\n          \"taskStatus\": \"READY\",\n          \"pastDueDays\": null,\n          \"appType\": null,\n          \"link\": \"https://ecq.intusurg.com:/sap/bc/ui2/flp#WorkflowTask-displayInbox?standaloneDetailDeep=true&/detail_deep/LOCAL_TGW/000045652631/TaskCollection(SAP__Origin='LOCAL_TGW',InstanceID='000045652631')\"\n        }]\n    }\n  ]\n};\n\nconst workforceTestData = [\n  {\n    \"requestor\": \"Eghbal, Darius\",\n    \"employeeId\": \"514978\",\n    \"timeOffType\": \"Flex Vacation\",\n    \"timeOffDate\": \"2025-01-02T00:00:00\",\n    \"startTime\": \"\",\n    \"endTime\": \"\",\n    \"value\": 8.00,\n    \"unit\": \"Hours\",\n    \"status\": \"Pending\",\n    \"createdDate\": \"2024-12-10\"\n  },\n  {\n    \"requestor\": \"Eghbal, Darius\",\n    \"employeeId\": \"514978\",\n    \"timeOffType\": \"Flex Vacation\",\n    \"timeOffDate\": \"2025-01-03T00:00:00\",\n    \"startTime\": \"\",\n    \"endTime\": \"\",\n    \"value\": 8.00,\n    \"unit\": \"Hours\",\n    \"status\": \"Pending\",\n    \"createdDate\": \"2024-12-10\"\n  },\n  {\n    \"requestor\": \"Garibaldi, Mark\",\n    \"employeeId\": \"516085\",\n    \"timeOffType\": \"Flex Vacation\",\n    \"timeOffDate\": \"2025-01-02T00:00:00\",\n    \"startTime\": \"\",\n    \"endTime\": \"\",\n    \"value\": 8.00,\n    \"unit\": \"Hours\",\n    \"status\": \"Pending\",\n    \"createdDate\": \"2024-12-26\"\n  },\n  {\n    \"requestor\": \"Garibaldi, Mark\",\n    \"employeeId\": \"516085\",\n    \"timeOffType\": \"Flex Vacation\",\n    \"timeOffDate\": \"2025-01-03T00:00:00\",\n    \"startTime\": \"\",\n    \"endTime\": \"\",\n    \"value\": 8.00,\n    \"unit\": \"Hours\",\n    \"status\": \"Pending\",\n    \"createdDate\": \"2024-12-26\"\n  }\n];\n\n\n\n//Action Creator\nexport const selectSystem = (system) => {\n  //return an action\n  return {\n    type: 'SYSTEM_SELECTED',\n    payload: system\n  };\n};\n\nexport const selectDayFilter = (filter) => {\n  return {\n    type: 'DAY_FILTER_SELECTED',\n    payload: filter\n  }\n}\n\nexport const taskCleared = (taskCleared) => {\n  //console.log(\"I am in action taskCleared removing: \", taskCleared);\n  return {\n    type: 'TASK_CLEARED',\n    payload: taskCleared\n  }\n}\n\nexport const updatePreviousSystemCounts = (curSystemCounts) => {\n\n  // console.log(\"I AM IN ACTIONS: \", curSystemCounts);\n  return {\n    type: 'UPDATE_PREVIOUS_COUNTS',\n    payload: curSystemCounts\n  }\n}\n\nexport const approveTask = (taskApproved, authObj) => async dispatch => {\n  // console.log(\"I am in action taskApproved approving: \", taskApproved.id, authObj);\n\n  const body = {\n    id: taskApproved.id,\n    state: 'approved'\n  };\n  try {\n    const response = await approvalApi.post(\"/HelpNow/ApprovalAction\", body, {\n      headers: {\n        Authorization: `Bearer ${authObj}`,\n      }\n    });\n    // console.log(response.data);\n  } catch (err) {\n    // console.log(\"HelpNow Approval API error, failed to approve. \", err);\n  }\n\n  dispatch({ type: 'TASK_CLEARED', payload: taskApproved });\n}\n\nexport const rejectTask = (taskRejected, authObj) => async dispatch => {\n  // console.log(\"I am in action taskRejected rejecting: \", taskRejected);\n\n  const body = {\n    id: taskRejected.id,\n    state: 'rejected'\n  };\n  try {\n    const response = await approvalApi.post(\"/HelpNow/ApprovalAction\", body, {\n      headers: {\n        Authorization: `Bearer ${authObj}`,\n      }\n    });\n    // console.log(response.data);\n  } catch (err) {\n    // console.log(\"HelpNow Approval API error, failed to reject. \", err);\n  }\n\n  dispatch({ type: 'TASK_CLEARED', payload: taskRejected });\n}\n\nexport const fetchApprovals = (authObj) => async dispatch => {\n\n  dispatch({ type: 'FETCH_SENT' }); //started fetch used for loading screen\n  //return an action\n  console.log(`Okta response details: ${JSON.stringify(authObj)}`); //token to be sent to API\n  // console.log(`My Token: ${this.props.authState.accessToken}`);\n\n  //let testData = JSON.parse(fs.readFileSync(\"testData.json\", \"utf8\"));\n  //console.log(testData);\n\n  let myObj = authObj;\n\n  //Empty data arrays\n  let curIsuData = [];\n  //let curAribaData = [];\n  let curAgileData = [];\n  let curSapQnData = [];\n  let curCoupaData = [];\n  let curSamData = [];\n  let curSnowData = [];\n  let curApprovals = [];\n  let curTrackwiseData = [];\n  let curIvaluaData = [];\n  let curItTimesheetData = [];\n  let curConcurData = [];\n  let curNeptuneData = []; //MT\n  let curFieldglassData = [];\n  let curSmartrecruitersData = [];\n  let curNeptunePsData = [];\n  let curMyHcmData = [];\n  let curMesData = [];\n  let curAdobeSignData = [];\n  let curArchibusData = [];\n  let curWorkdayData = [];\n  let curSapWfData = {};\n  let curWorkforceData = {};\n\n  //  if(process.env.REACT_APP_ENVIRONMENT === \"local\") {\n  //    curIsuData = isuTestData;\n  //    curAribaData = aribaTestData;\n  //    curAgileData = agileTestData;\n  //  }\n\n\n  //const testToken = \"eyJraWQiOiJOd3FMSDR2OWNkdlpXNFJqQTZndkhULVNFcUFpWUVLOUZ5cklrVWxlUE1jIiwiYWxnIjoiUlMyNTYifQ.eyJ2ZXIiOjEsImp0aSI6IkFULlhPbGNaaHFZeGJYNU51ZmU1aGdGVWwwTndYYXlFZ0tOWG15TXVrUjZMT0UiLCJpc3MiOiJodHRwczovL2lzcmd0ZXN0Lm9rdGEuY29tL29hdXRoMi9kZWZhdWx0IiwiYXVkIjoiYXBpOi8vZGVmYXVsdCIsImlhdCI6MTYxMzQyNTAyMSwiZXhwIjoxNjEzNDI4NjIxLCJjaWQiOiIwb2ExaWZibXFpb09vQUNLazFkOCIsInVpZCI6IjAwdTFmZHF3eTlzTVdHWEE3MWQ4Iiwic2NwIjpbIm9wZW5pZCIsImVtYWlsIiwicHJvZmlsZSJdLCJzdWIiOiJCSGVybmFuZGV6QGlzcmd0ZXN0LmNvbSJ9.aCY_XARoEAU9wGVUr0kbR-56-8f7y12nPIbtBX9Jazy6wGy-nNvr6TVB6tDtwnDWPrnqL8aFPIxvrlLs09rT7E6t01JkpQVHyJJBMb7Ang5qswvnDRcCn8WfIplXLkr_79SESt4AeaqATfERujlZQ7EeybhNgU6mIoov8vL-g6LzfCV2GUdqE94ng7Xuqkfr-p1VrMrLMF8zujrnn3_pQE8P_cDr_z9UYNI1paszkBLGA9PcHqZk5f1KGMC13MOOZsEUksbHeH32uKXyqA7LGjiT_8Z5oq-9l6Gsodj6AsABtfTAcGt0izf8dkH--i8XEuDAybfBAE0ftCGqLMNu7Q\";\n  if (process.env.REACT_APP_ENVIRONMENT === \"local\"\n    || process.env.REACT_APP_ENVIRONMENT === \"dev\"\n    || process.env.REACT_APP_ENVIRONMENT === \"uat\"\n    || process.env.REACT_APP_ENVIRONMENT === \"prod\") {\n\n    //ISU  API call\n    try {\n      const response = await approvalApi.get(\"/ISU/MyLearning/\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curIsuData = response.data;\n      // console.log(\"ISU payload:\", curIsuData);\n    } catch (err) {\n      console.log(\"ISU API error, failed to get ISU records. \", err);\n    }\n    //console.log(\"---------Api  Data --------\");\n    //console.log(\"Api Data\", response.data); \n    //myObj.approvals = response.data;\n\n    //Agile API call\n    try {\n      const response2 = await approvalApi.get(\"/Agile/PendingApprovals/\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curAgileData = response2.data;\n      // console.log(\"Agile payload:\", curAgileData);\n    } catch (err) {\n      console.log(\"Agile API error, failed to get Agile records. \", err);\n    }\n\n    //SAP QN API call\n    try {\n      const response4 = await approvalApi.get(\"/SAPQN/PendingNotifications\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curSapQnData = response4.data;\n      // console.log(\"SAP payload:\", curSapQnData);\n      //curSapQnData = sapQnTestData;\n    } catch (err) {\n      console.log(\"SAP QN API error, failed to get SAP QN records. \", err);\n    }\n\n    //Coupa call\n    try {\n      const response5 = await approvalApi.get(\"/Coupa/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curCoupaData = response5.data;\n      // console.log(\"Coupa payload:\", curCoupaData);\n    } catch (err) {\n      console.log(\"COUPA API error, failed to get COUPA records. \", err);\n    };\n\n    //SAM\n    try {\n      const response6 = await approvalApi.get(\"/SAM/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curSamData = response6.data;\n      //curSamData = samTestData;\n      // console.log(\"SAM payload:\", curSamData);\n    } catch (err) {\n      console.log(\"SAM API error, failed to get SAM records. \", err);\n    }\n\n    //SNOW\n    try {\n      const response7 = await approvalApi.get(\"/HelpNow/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curSnowData = response7.data;\n      // console.log(\"SNOW payload:\", curSnowData);\n    } catch (err) {\n      console.log(\"SNOW API error, failed to get SNOW records. \", err);\n    }\n\n    //trackwise\n    try {\n      const response8 = await approvalApi.get(\"/Trackwise/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curTrackwiseData = response8.data;\n      // console.log(\"Trackwise payload:\", curTrackwiseData);\n    } catch (err) {\n      console.log(\"Trackwise API error, failed to get Trackwise records. \", err);\n    }\n\n    //iValua API Call\n    try {\n      const response9 = await approvalApi.get(\"/IValua/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curIvaluaData = response9.data;\n      //curIvaluaData = ivaluaTestDataa;\n      // console.log(\"Ivalua payload:\", curIvaluaData);\n    } catch (err) {\n      console.log(\"Trackwise API error, failed to get Trackwise records. \", err);\n    }\n\n    //IT Timesheet API call\n    try {\n      const response10 = await approvalApi.get(\"/ITTimeSheet/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curItTimesheetData = response10.data;\n      // console.log(\"IT Timesheet payload:\", curItTimesheetData);\n    } catch (err) {\n      console.log(\"IT Timesheet API error, failed to get IT Timesheet records. \", err);\n    }\n\n    //Concur API call\n    try {\n      const response11 = await approvalApi.get(\"/concur/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curConcurData = response11.data;\n      //curConcurData =  concurTestData;\n      // console.log(\"Concur payload:\", curConcurData);\n    } catch (err) {\n      console.log(\"Concur API error, failed to get Concur records. \", err);\n    }\n\n    //\n    //call Neptune MT API\n    try {\n      const response12 = await approvalApi.get(\"/NeptuneMT/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curNeptuneData = response12.data;\n      //curNeptuneData = []; \n      //curNeptuneData = neptuneTestData;\n      // console.log(\"Neptune MT payload:\", curNeptuneData);\n    } catch (err) {\n      console.log(\"Neptune API error, failed to get Neptune records. \", err);\n      //curNeptuneData = neptuneTestData;\n    }\n\n\n    //call Fieldglass API\n    try {\n      const response13 = await approvalApi.get(\"/FieldGlass/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      // console.log(\"API FG Response: \", response13.data);\n      curFieldglassData = response13.data;\n      //curFieldglassData = fieldglassTestData;\n      // console.log(\"Fieldglass payload:\", curFieldglassData);\n    } catch (err) {\n      console.log(\"Fieldglass API error, failed to get fieldglass records. \", err);\n    }\n\n    //call SmartRecruiters API\n    try {\n      const response14 = await approvalApi.get(\"/SmartRecruiters/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      // console.log(\"API SmartRecruiters Response: \", response14.data);\n      curSmartrecruitersData = response14.data;\n      //curSmartRecruitersData = smartrecruitersTestData;\n      // console.log(\"SmartRecruiters payload:\", curSmartrecruitersData);\n    } catch (err) {\n      console.log(\"SmartRecruiters API error, failed to get SmartRecruiters records. \", err);\n    }\n\n    //call Neptune PS API\n    try {\n      const response15 = await approvalApi.get(\"/NeptunePS/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curNeptunePsData = response15.data;\n      //curNeptunePsData = [];\n      //curNeptuneData = neptuneTestData;\n      // console.log(\"Neptune PS payload:\", curNeptuneData);\n    } catch (err) {\n      console.log(\"Neptune PS API error, failed to get Neptune records. \", err);\n      //curNeptuneData = neptuneTestData;\n    }\n\n    //call My HCM API\n    try {\n      const response16 = await approvalApi.get(\"/MyHcm/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curMyHcmData = response16.data;\n      // console.log(\"My HCM payload:\", curMyHcmData);\n    } catch (err) {\n      console.log(\"My HCM  API error, failed to get My HCM records. \", err);\n    }\n\n    //call MES API\n    try {\n      const response17 = await approvalApi.get(\"/MES/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curMesData = response17.data;\n      // console.log(\"MES payload:\", curMesData);\n    } catch (err) {\n      console.log(\"MES API error, failed to get MES records. \", err);\n    }\n\n    //call Adobe Sign\n    try {\n      const response18 = await approvalApi.get(\"/Adobe/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curAdobeSignData = response18.data;\n      if (process.env.REACT_APP_ENVIRONMENT === \"local\") {\n        curAdobeSignData = adobeSignTestData;\n      }\n      // console.log(\"Adobe Sign Payload: \", curAdobeSignData);\n\n      //console.log(\"Adobe Sign payload:\", curAdobeSignData);\n    } catch (err) {\n      console.log(\"Adobe Sign API error, failed to get Adobe Sign records. \", err);\n    }\n\n\n    //call Archibus API\n    try {\n      const response19 = await approvalApi.get(\"/archibus/pendingapprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curArchibusData = response19.data;\n      // if (process.env.REACT_APP_ENVIRONMENT === \"local\") {\n      //   curArchibusData = archibusTestData;\n      // }\n      // console.log(\"Archibus Payload: \", curArchibusData);\n\n      // console.log(\"Archibus payload:\", curArchibusData);\n    } catch (err) {\n      console.log(\"Archibus API error, failed to get Adobe Sign records. \", err);\n    }\n\n    //call Workday API\n    try {\n      const response20 = await approvalApi.get(\"/workday/pendingapprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n\n      curWorkdayData = response20.data;\n      // if (process.env.REACT_APP_ENVIRONMENT === \"local\") {\n      //   curWorkdayData = workdayTestData;\n      // }\n      //console.log(\"Workday Payload: \", curWorkdayData);\n\n      //console.log(\"Workday payload:\", curWorkdayData);\n    } catch (err) {\n      console.log(\"Workday API error, failed to get Workday records, setting to empty array. \", err);\n      curWorkdayData = [];\n    }\n\n    //call SAP Workflows API\n    try {\n      const response21 = await approvalApi.get(\"/sapworkflow/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curSapWfData = response21.data;\n      // if (process.env.REACT_APP_ENVIRONMENT === \"local\") {\n      //   curSapWfData = sapWfTestData;\n      // }\n      // console.log(\"SAP WF Payload: \", curSapWfData);\n\n      //console.log(\"SAP WF payload:\", curSapWfData);\n    } catch (err) {\n      console.log(\"SAP WF API error, failed to get SAP Workflows API records. \", err);\n\n      curSapWfData.purchaseOrder = [];\n    }\n\n    //call Workforce API\n    try {\n      const response22 = await approvalApi.get(\"/Workforce/PendingApprovals\", {\n        headers: {\n          Authorization: `Bearer ${authObj.token.accessToken}`,\n        },\n      });\n      curWorkforceData = response22.data;\n      //curWorkforceData = []; //empty for now, waiting for CRB next week, \n      // if (process.env.REACT_APP_ENVIRONMENT === \"local\") {\n      //   curSapWfData = sapWfTestData;\n      // }\n      // console.log(\"SAP WF Payload: \", curSapWfData);\n\n      //console.log(\"Workforce payload:\", curWorkforceData);\n    } catch (err) {\n      console.log(\"Workforce API error, failed to get workforce API records. \", err);\n\n      curWorkforceData = [];\n    }\n\n  };\n\n\n  //loop through ISU Data & Massage\n  let key_counter = 1;\n  for (let x of curIsuData) {\n    x.id = x.sku + key_counter;\n    key_counter++;\n    //console.log(\"Counter Test: \", x.id);\n    x.approvalRequester = null;\n    x.assignedDate = x.assignedDate.substring(0, 10);\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    // eslint-disable-next-line\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.systemName = \"isu\";\n    x.link = \"https://intusurg.okta.com/home/bookmark/0oa1rc53x3p8DQgqh1d8/2557\"; //prod\n    curApprovals.push(x);\n  }\n\n\n  //console.log(\"USING NEW SMART LINK FOR AGILE\");\n  //loop through Agile Data & Massage\n  key_counter = 1;\n  for (let x of curAgileData) {\n    x.id = x.id + key_counter; //make id unique just incase\n    key_counter++;\n    x.title = x.changeNumber;\n    x.approvalRequester = x.changeOriginator;\n    x.assignedDate = x.createdDateTime.substring(0, 10);\n\n    //console.log(\"TEST Agile DATE FORMAT :\", x.assignedDate);\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    // eslint-disable-next-line\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.description = x.changeDescription;\n    x.systemName = \"agile\";\n    x.link = `https://aglp.intusurg.com/Agile/object/${x.changeType}/${x.changeNumber}` //smart link \n    curApprovals.push(x);\n  };\n\n  key_counter = 1;\n  //loop through SAP QN Data & Massage\n  for (let x of curSapQnData) {\n    let newNotification = x.notification.replace(/^0+/, ''); //remove leading zeros\n    x.id = x.notification + key_counter; //make id unique just incase\n    key_counter++;\n    x.title = newNotification;\n    x.approvalRequester = x.createdBy;\n    //new date formatting\n    //let newDate = [x.createdOn.slice(0,4), \"-\", x.createdOn.slice(4)].joing('');\n    x.assignedDate = x.createdOn.substring(0, 4) + \"-\" + x.createdOn.substring(4, 6) + \"-\" + x.createdOn.substring(6);\n    //console.log(\"TEST: \", newDate);\n    //x.assignedDate = newData.substring(0,10);\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    // eslint-disable-next-line\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.description = x.description;\n    if (x.description == \"N/A\") {\n      x.description = \"\";\n    }\n    x.systemName = \"sap qn\";\n\n    if (x.link.includes(\"https\")) {\n      //if object includes a link\n      // x.link = x.link;\n    } else {\n      //if no link is provided default to this one\n      x.link = `https://prd.intusurg.com/sap/bc/gui/sap/its/webgui`;\n    }\n    curApprovals.push(x);\n  };\n\n\n  //loop through COUPA Data & Massage\n  key_counter = 1;\n  for (let x of curCoupaData) {\n    //let newNotification = x.notification.replace(/^0+/,''); //remove leading zeros\n    x.id = x.id + key_counter; //make id unique just incase\n    key_counter++;\n    x.title = x.documentType;\n    x.approvalRequester = x.requestorDisplayName;\n    //new date formatting\n    //let newDate = [x.createdOn.slice(0,4), \"-\", x.createdOn.slice(4)].joing('');\n    x.assignedDate = x.createdDateTime.substring(0, 10);\n    //x.assignedDate = newData.substring(0,10);\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    // eslint-disable-next-line\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.description = x.totalAmount + \" \" + x.currency;\n    x.systemName = \"coupa\";\n\n    if (x.documentType === \"Invoice\") {\n      x.link = \"https://intuitive.coupahost.com/invoices/\" + x.id;\n      //x.link = `https://intuitive-test.coupahost.com`; // placeholder\n      // console.log(\"added invoice deeplink\");\n    } else if (x.documentType === \"Requisition\") {\n      x.link = \"https://intuitive.coupahost.com/requisition_headers/\" + x.id;\n      //x.link = `https://intuitive-test.coupahost.com`; //placeholder\n      // console.log(\"added requisition deeplink\");\n    } else {\n      x.link = `https://intuitive.coupahost.com`; //no deeplink\n      console.log(\"added base app link to coupa\");\n    }\n    // x.link = \"https://intuitive-dev.coupahost.com/invoices/\" + x.id;\n    //x.link = \"https://intuitive-dev.coupahost.com/requisition_headers/\" + x.id;\n    //x.link = `https://intuitive-test.coupahost.com`; //no URL \n    curApprovals.push(x);\n  };\n\n  //loop through SAM Data & Massage\n  key_counter = 1;\n  for (let x of curSamData) {\n    //let newNotification = x.notification.replace(/^0+/,''); //remove leading zeros\n    x.id = x.id + key_counter; //make id unique just incase\n    key_counter++;\n    x.title = x.description;\n    // if(x.applicationName){\n    //   x.title = \"Target System: \" + x.applicationName;\n    // } else {\n    //   x.title = \"Target System: N/A\";\n    // }\n\n    let curEntitlement = \"\";\n    let curApplication = \"\";\n    let entitlementArr = [];\n    let applicationArr = [];\n\n    if (x.approvals) {\n      let eCounter = 1000;\n      let aCounter = 2000;\n      for (const i of x.approvals) {\n        if (i.displayValue) {\n          let curObj = {\n            name: i.displayValue,\n            myKey: eCounter\n          };\n          entitlementArr.push(curObj);\n          eCounter++;\n          // if(eCounter == 0){\n          //   curEntitlement = \"Entitlement: \" + i.displayValue;\n          //   eCounter++;\n          // } else {\n          //   curEntitlement = curEntitlement + \", \" + i.displayValue;\n          // }\n        }\n\n        if (i.applicationName) {\n          let curObj = {\n            name: i.applicationName,\n            myKey: aCounter\n          };\n          applicationArr.push(curObj);\n          aCounter++;\n          //applicationArr.push(\"Active Directory\");\n          // if(aCounter == 0){\n          //   curApplication = \"Application: \" + i.applicationName;\n          //   aCounter++;\n          // } else {\n          //   curApplication = curApplication + \", \" + i.applicationName;\n          // }\n        }\n      }\n    } else {\n      // curEntitlement = \"\";\n      // curApplication = \"\";\n      //x.description = \"\";\n    }\n\n    //console.log(\"CUR ENTITLEMENT:\", curEntitlement );\n    x.entitlementArr = [...new Set(entitlementArr)];\n    //console.log(\"BEFORE ARR: \", applicationArr);\n    let finalAppArr = [...new Set(applicationArr)];\n    //console.log(\"AFTER ARR: \", finalAppArr);\n    x.finalAppArr = finalAppArr;\n\n    x.entitlement = curEntitlement;\n    x.description = curApplication;\n\n    if (x.requestorDisplayName) {\n      x.approvalRequester = \"Requested by: \" + x.requestorDisplayName;\n    } else {\n      x.approvalRequester = \"\";\n\n    }\n\n    // if(x.displayValue){\n    //   x.entitlement = \"Entitlement: \" + x.displayValue;\n    // } else {\n    //   x.entitlement = \"\";\n    // }\n\n    //x.entitlement = x.displayName;\n    //new date formatting\n    //let newDate = [x.createdOn.slice(0,4), \"-\", x.createdOn.slice(4)].joing('');\n    //x.assignedDate = x.assignedDateTime.substring(0,10);\n    let newDate = new Date(x.createdDateTime);\n    let curMonth = newDate.getMonth() + 1; //add one since count starts at 0\n    newDate = newDate.getFullYear() + \"-\" + curMonth + \"-\" + newDate.getDate();\n    // console.log(\"SAM DATE: \", newDate);\n    x.assignedDate = newDate;  //Thu Jun 24 04:46:50 PDT 2021\n\n    //x.assignedDate = newData.substring(0,10);\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    // eslint-disable-next-line\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    // if(x.applicationName){\n    //   x.description = \"Application: \" + x.applicationName;\n    // } else {\n    //   x.description = \"\";\n    // }\n    x.systemName = \"sam\";\n    x.link = x.url; //no URL \n    curApprovals.push(x);\n  };\n\n  //loop through SNOW RCE Data & Message\n  key_counter = 1;\n  for (let x of curSnowData.rceHelpNowApprovals) {\n    //for(let x of snowTestData2.rceHelpNowApprovals){\n    x.id = x.sysId; //make id unique just incase\n    key_counter++;\n    x.title = x.taskNumber;\n    x.approvalRequester = x.createdBy;\n    x.assignedDate = x.createdOn.substring(0, 10);\n    x.assignedDate = new Date(x.assignedDate).toLocaleDateString('fr-CA');\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.description = x.shortDescription;\n    x.systemName = \"rce servicenow\";\n    //x.link = `https://intusurg.okta.com/home/servicenow_app2/0oa17qza1s9pwlcwK1d8/14155`; \n    // x.link = ' https://intusurg.service-now.com/it_sp?id=approval&table=sysapproval_approver&sys_id=' + x.sysId; //prod\n    //x.link = ' https://intusurgtest.service-now.com/it_sp?id=approval&table=sysapproval_approver&sys_id=' + x.sysId; //uat\n    // x.link = ' https://intusurgdev.service-now.com/it_sp?id=approval&table=sysapproval_approver&sys_id=' + x.sysId; //dev\n    // x.link = process.env.REACT_APP_SNOW_LINK + x.sysId;\n    x.link = process.env.REACT_APP_SNOW_LINK + '/it_sp?id=rce_approval_form&table=sysapproval_approver&sys_id=' + x.sysId + '%20&glide_sso_id%20=4287b3fb139d6e00d1fcbb176144b04f';\n    // x.link = 'https://intusurgdev.service-now.com/it_sp?id=rce_approval_form&table=sysapproval_approver&sys_id='+ x.sysId +'%20&glide_sso_id%20=4287b3fb139d6e00d1fcbb176144b04f';\n    curApprovals.push(x);\n  };\n\n  //loop through SNOW Regular Data & Message\n  key_counter = 1;\n  for (let x of curSnowData.helpNowApprovals) {\n    x.id = x.sysId; //make id unique just incase\n    key_counter++;\n    x.title = x.taskNumber;\n    x.approvalRequester = x.createdBy;\n    x.assignedDate = x.createdOn.substring(0, 10);\n    x.assignedDate = new Date(x.assignedDate).toLocaleDateString('fr-CA');\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.description = x.shortDescription;\n    x.systemName = \"helpnow\";\n    //x.link = `https://intusurg.okta.com/home/servicenow_app2/0oa17qza1s9pwlcwK1d8/14155`; \n    // x.link = ' https://intusurg.service-now.com/it_sp?id=approval&table=sysapproval_approver&sys_id=' + x.sysId; //prod\n    //x.link = ' https://intusurgtest.service-now.com/it_sp?id=approval&table=sysapproval_approver&sys_id=' + x.sysId; //uat\n    //x.link = ' https://intusurgdev.service-now.com/it_sp?id=approval&table=sysapproval_approver&sys_id=' + x.sysId; //dev\n    x.link = process.env.REACT_APP_SNOW_LINK + '/it_sp?id=approval&table=sysapproval_approver&sys_id=' + x.sysId;\n    curApprovals.push(x);\n  };\n\n  //loop through Trackwise Data & Massage\n  key_counter = 1;\n  //console.log(\"Trackwise: \", curTrackwiseData);\n  for (let x of curTrackwiseData) {\n    //let newNotification = x.notification.replace(/^0+/,''); //remove leading zeros\n    x.id = x.recordId + key_counter; //make id unique just incase\n    key_counter++;\n    x.title = x.recordId + \" - \" + x.recordType;\n    x.approvalRequester = x.email;\n    //new date formatting\n    //let newDate = [x.createdOn.slice(0,4), \"-\", x.createdOn.slice(4)].joing('');\n    //x.assignedDate = x.createdDateTime.substring(0,10);\n    x.assignedDate = x.createdDate.substring(0, 10); //2021-09-09 13:54:00.0\n    //x.assignedDate = newData.substring(0,10);\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    // eslint-disable-next-line\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.description = x.status;\n    x.systemName = \"trackwise\";\n    let deepLink = \"https://trackwise.intusurg.com/TRW-PRD/Gateway.html?\" + x.recordId;\n    x.link = deepLink; //no URL \n    curApprovals.push(x);\n  };\n\n  //loop through iValua Data & Massage\n  key_counter = 1;\n  //console.log(\"iValua: \", curIvaluaData);\n  for (let x of curIvaluaData) {\n    //let newNotification = x.notification.replace(/^0+/,''); //remove leading zeros\n    x.id = x.objectId + key_counter; //make id unique just incase\n    key_counter++;\n    x.title = x.workflowName;\n    x.approvalRequester = \"\";\n    //new date formatting\n    //let newDate = [x.createdOn.slice(0,4), \"-\", x.createdOn.slice(4)].joing('');\n    //x.assignedDate = x.createdDateTime.substring(0,10);\n    x.assignedDate = x.assignedDate.substring(0, 10); //2021-09-09 13:54:00.0\n    //x.assignedDate = newData.substring(0,10);\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    // eslint-disable-next-line\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.description = x.activityCode;\n    x.delegation = x.delegation;\n    x.systemName = \"ivalua\";\n    let deepLink = \"https://trackwise.intusurg.com/TRW-PRD/Gateway.html?\" + x.recordId;\n    x.link = x.fullUrl;\n    curApprovals.push(x);\n  };\n\n  //loop through IT Timesheet\n  key_counter = 1;\n  for (let x of curItTimesheetData) {\n    //let newNotification = x.notification.replace(/^0+/,''); //remove leading zeros\n    x.id = \"timesheet\" + x.id + key_counter; //make id unique just incase\n    key_counter++;\n    x.title = x.projectName;\n    x.approvalRequester = `${x.employeeFN} ${x.employeeLN}`;\n    //new date formatting\n    //let newDate = [x.createdOn.slice(0,4), \"-\", x.createdOn.slice(4)].joing('');\n    //x.assignedDate = x.createdDateTime.substring(0,10);\n    x.assignedDate = x.startDate.substring(0, 10); //2021-09-0913:54:00.0\n    //x.assignedDate = newData.substring(0,10);\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    // eslint-disable-next-line\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.description = ` ${x.approvalRequester} Total Hours: ${x.totalHours}`;\n    x.systemName = \"it timesheet\";\n    //let deepLink = \"https://itapps.corp.intusurg.com:8443/ISITMSystem/isrg.jsp?logout=true\"; //no deeplink\n    x.link = \"https://itapps.corp.intusurg.com:8443/ISITMSystem/isrg.jsp?logout=true\";\n    curApprovals.push(x);\n  };\n\n  //loop through Concur\n  key_counter = 1;\n  for (let x of curConcurData) {\n    x.id = \"concur\" + key_counter; //make id unique just incase\n    key_counter++;\n\n    if (x.reportName == null) {\n      x.title = `Pending approval - Total: ${x.total} ${x.currencyCode}`;\n    } else {\n      x.title = `${x.reportName} - Total: ${x.total} ${x.currencyCode}`;\n    }\n    x.approvalRequester = x.requestorName;\n\n    //(\"TEST: \", x.CreatedDate);\n    if (x.createdDate == null) {\n      const today = new Date();\n      const year = today.getFullYear();\n      const month = String(today.getMonth() + 1).padStart(2, '0');\n      const day = String(today.getDate()).padStart(2, '0');\n      x.assignedDate = `${year}-${month}-${day}`;\n    } else {\n      x.assignedDate = x.createdDate.substring(0, 10); //2023-05-30T15:18:07.383\n    }\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.description = x.comment;\n    x.systemName = \"concur\";\n\n    //x.link = x.reportLink; \n    x.link = \"https://intusurg.okta.com/home/intusurg_sapconcur_1/0oa1iugbusySHm9qV1d8/aln1iugmpswWdhKR21d8\";\n    curApprovals.push(x);\n  };\n\n  //loop through Neptune MT\n  key_counter = 1;\n  for (let x of curNeptuneData) {\n    x.id = x.mtNumber + key_counter; //make id unique just incase\n    key_counter++;\n    if (x.appType == \"1\") {\n      x.title = `Approver View - ${x.mtNumber}`;\n    }\n    else if (x.appType == \"2\") {\n      x.title = `Material Handler view - ${x.mtNumber}`;\n    }\n    else {\n      x.title = `Approval - ${x.mtNumber}`;\n    }\n\n    x.approvalRequester = x.requestor;\n\n    x.assignedDate = x.submissionDate.substring(0, 10); //2023-05-30T15:18:07.383\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.systemName = \"neptune mt\";\n    x.description = `Type:  ${x.requestType}  Requestor: ${x.requestor}`;\n\n    //x.link = x.reportLink; \n    if (x.link.includes(\"https\")) {\n      // x.link = x.link;\n    } else {\n      //if no link is provided default to this one\n      x.link = \"https://prd.intusurg.com/neptune/webapp/?sap-client=800&launchpad=INTUITIVEWEBAPPS#WF-Approve\";;\n    }\n    // if (x.link)\n    //   x.link = x.link;\n    curApprovals.push(x);\n  }\n\n  //loop through Neptune PS\n  key_counter = 1;\n  for (let x of curNeptunePsData) {\n    x.id = \"NeptunePs\" + key_counter; //make id unique just incase\n    key_counter++;\n    x.title = `${x.processID} - Requested By: ${x.requestedBy}`;\n    x.approvalRequester = x.requestedBy;\n\n    x.assignedDate = x.createdOn.substring(0, 10); //2023-06-29T00:00:00\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.systemName = \"neptune ps\";\n    x.description = x.description;\n\n    //x.link = x.reportLink; \n\n    if (x.link.includes(\"https\")) {\n      //if object includes a link\n      // x.link = x.link;\n    } else {\n      //if no link is provided default to this one\n      x.link = \"https://prd.intusurg.com/neptune/webapp/?launchpad=INTUITIVEWEBAPPS\";\n    }\n    curApprovals.push(x);\n  }\n\n  //loop through Fieldglass\n\n  let updatedTimeTmp1 = new Date(); // API doesn't currently have this\n  let updatedTimeTmp2 = new Date(Date.parse(updatedTimeTmp1));\n  updatedTimeTmp2 = updatedTimeTmp2.toString();\n  let updatedTimeFinal = updatedTimeTmp2.replace(/GMT.*/g, \"\");\n\n  key_counter = 1;\n  //console.log(\"TesT: \", curFieldglassData);\n  if (curFieldglassData.timeSheets.length > 0) {\n    console.log(\"Timesheets exist\")\n    for (let x of curFieldglassData.timeSheets) {\n      x.id = x.documentID + key_counter; //make id unique just incase\n      key_counter++;\n      x.approvalRequester = x.workerName;\n\n      x.title = `Time sheet - ${x.documentID} - ${x.workerName}`;\n\n      //formart date to year-month-day\n      let parts = x.startDate.split(\"/\");\n      x.assignedDate = `${parts[2]}-${parts[0]}-${parts[1]}`;\n      x.updatedDateTime = updatedTimeFinal;\n      x.systemName = \"fieldglass\";\n      x.description = x.costAllocation;\n      //x.link =  x.link;\n      x.link = \"https://intusurg.okta.com/home/intuitivesurgical_grifieldglass_1/0oa1feixuwrC0C4tN1d8/aln1fej18ev0lHBlB1d8\"; //prod link\n      // console.log(\"Final FG Timesheet: \", x)\n      curApprovals.push(x);\n    }\n  }\n\n  key_counter = 1;\n  if (curFieldglassData.expenseSheets.length > 0) {\n    // console.log(\"expens sheets exist\")\n    for (let x of curFieldglassData.expenseSheets) {\n      x.id = \"timeSheet\" + key_counter; //make id unique just incase\n      key_counter++;\n      x.approvalRequester = x.workerName;\n\n      x.title = `Expense Sheet - ${x.mainDocumentTitle}`;\n      //formart date to year-month-day\n      x.submittedDate = x.submittedDate.substring(0, 10); // 05/22/2023 07:51 AM\n      let parts = x.submittedDate.split(\"/\");\n      x.assignedDate = `${parts[2]}-${parts[0]}-${parts[1]}`;\n      x.updatedDateTime = updatedTimeFinal;\n      x.systemName = \"fieldglass\";\n      x.description = `Amount: ${x.expenseSheetAmount}`;\n      //x.link =  x.link;\n      x.link = \"https://intusurg.okta.com/home/intuitivesurgical_grifieldglass_1/0oa1feixuwrC0C4tN1d8/aln1fej18ev0lHBlB1d8\"; //prod link\n      // console.log(\"Final FG Expense Sheets: \", x)\n      curApprovals.push(x);\n    }\n  }\n\n  key_counter = 1;\n  if (curFieldglassData.miscInvoices.length > 0) {\n    // console.log(\"miscInvoices exist\");\n    for (let x of curFieldglassData.miscInvoices) {\n      x.id = \"miscinvoices\" + key_counter; //make id unique just incase\n      key_counter++;\n      x.approvalRequester = x.workerName;\n\n      x.title = `Invoice - ${x.mainDocumentTitle} - ${x.workerName}`;\n\n      //formart date to year-month-day\n      let parts = x.submittedDate.split(\"/\");\n      x.assignedDate = `${parts[2]}-${parts[0]}-${parts[1]}`;\n      x.updatedDateTime = updatedTimeFinal;\n      x.systemName = \"fieldglass\";\n      x.description = `Supplier: ${x.supplier} - Amount:  ${x.amount}`;\n      //x.link =  x.link;\n      x.link = \"https://intusurg.okta.com/home/intuitivesurgical_grifieldglass_1/0oa1feixuwrC0C4tN1d8/aln1fej18ev0lHBlB1d8\"; //prod link\n      // console.log(\"Final FG Invoice: \", x)\n      curApprovals.push(x);\n    }\n\n    // {\n    //   \"supplier\": \"Synergy Services dba. TalentWave\",\n    //   \"submittedDate\": \"06/27/2023\",\n    //   \"workerName\": \"Castro, David\",\n    //   \"businessUnit\": \"Manufacturing Systems\",\n    //   \"site\": \"3420 Central Expressway, Santa Clara 95051\",\n    //   \"mainDocumentTitle\": \"AFQI Technician (Payrolled)\",\n    //   \"amount\": \"305.43\",\n    //   \"link\": \"https://xuat.fgvms.com/misc_invoice_detail.do?id=z2306271815383366784590e&ticc=ISI\"\n    // }\n  }\n  if (curFieldglassData.jobPostings.length > 0) {\n    // console.log(\"Job Postings exist\")\n    for (let x of curFieldglassData.jobPostings) {\n      x.id = \"jobposting\" + key_counter; //make id unique just incase\n      key_counter++;\n      x.approvalRequester = x.creatorName;\n\n      x.title = `Job Posting - ${x.refId} - ${x.jobPostingTitle}`;\n\n      //formart date to year-month-day\n      let parts = x.createdDate.split(\"/\");\n      x.assignedDate = `${parts[2]}-${parts[0]}-${parts[1]}`;\n      x.updatedDateTime = updatedTimeFinal;\n      x.systemName = \"fieldglass\";\n      x.description = x.jobPostingJustification;\n      //x.link =  x.link;\n      x.link = \"https://intusurg.okta.com/home/intuitivesurgical_grifieldglass_1/0oa1feixuwrC0C4tN1d8/aln1fej18ev0lHBlB1d8\"; //prod link\n      // console.log(\"Final FG Job Posting: \", x)\n      curApprovals.push(x);\n    }\n  }\n\n  //Fieldglass Phase 2 \n  if (curFieldglassData.jobPostings.length > 0) {\n    // console.log(\"Job Postings exist\")\n    for (let x of curFieldglassData.jobPostings) {\n      x.id = \"jobposting\" + key_counter; //make id unique just incase\n      key_counter++;\n      x.approvalRequester = x.creatorName;\n\n      x.title = `Job Posting - ${x.refId} - ${x.jobPostingTitle}`;\n\n      //formart date to year-month-day\n      let parts = x.createdDate.split(\"/\");\n      x.assignedDate = `${parts[2]}-${parts[0]}-${parts[1]}`;\n      x.updatedDateTime = updatedTimeFinal;\n      x.systemName = \"fieldglass\";\n      x.description = x.jobPostingJustification;\n      //x.link =  x.link;\n      x.link = \"https://intusurg.okta.com/home/intuitivesurgical_grifieldglass_1/0oa1feixuwrC0C4tN1d8/aln1fej18ev0lHBlB1d8\"; //prod link\n      // console.log(\"Final FG Job Posting: \", x)\n      curApprovals.push(x);\n    }\n  }\n  //Fieldglass Phase 2\n  if (curFieldglassData.workOrders.length > 0) {\n    // console.log(\"Work Orders exist\")\n    for (let x of curFieldglassData.workOrders) {\n      x.id = \"workOrders\" + key_counter; //make id unique just incase\n      key_counter++;\n      x.approvalRequester = x.jobSeeker;\n\n      x.title = `Work Order - ${x.refId} - ${x.jobSeeker} - ${x.mainDocumentTitle}`;\n\n      //formart date to year-month-day\n      let parts = x.startDate.split(\"/\"); // 07/10/2023\n      x.assignedDate = `${parts[2]}-${parts[0]}-${parts[1]}`;\n      x.updatedDateTime = updatedTimeFinal;\n      x.systemName = \"fieldglass\";\n      x.description = `Site: ${x.location}, Unit: ${x.businessUnit}, Amount: ${x.amount}`;\n      //x.link =  x.link;\n      x.link = \"https://intusurg.okta.com/home/intuitivesurgical_grifieldglass_1/0oa1feixuwrC0C4tN1d8/aln1fej18ev0lHBlB1d8\"; //prod link\n      //x.link = \"https://xuat.fgvms.com/work_order_detail.do?id=z23092715584684443872903&ticc=ISI\";\n      //xconsole.log(\"Final FG Work Order: \", x)\n      curApprovals.push(x);\n    }\n  }\n\n  if (curFieldglassData.workOrderRevision.length > 0) {\n    console.log(\"Work Orders exist\")\n    for (let x of curFieldglassData.workOrderRevision) {\n      x.id = \"workOrderRevision\" + key_counter; //make id unique just incase\n      key_counter++;\n      x.approvalRequester = x.jobSeeker;\n\n      x.title = `Work Order Rev - ${x.refId} - ${x.workerName} - ${x.mainDocumentTitle}`;\n\n      //formart date to year-month-day\n      let parts = x.startDate.split(\"/\"); // 07/10/2023\n      x.assignedDate = `${parts[2]}-${parts[0]}-${parts[1]}`;\n      x.updatedDateTime = updatedTimeFinal;\n      x.systemName = \"fieldglass\";\n      x.description = `Site: ${x.site}, Unit: ${x.businessUnit}, Amount: ${x.amount}`;\n      //x.link =  x.link;\n      x.link = \"https://intusurg.okta.com/home/intuitivesurgical_grifieldglass_1/0oa1feixuwrC0C4tN1d8/aln1fej18ev0lHBlB1d8\"; //prod link\n      //x.link = \"https://xuat.fgvms.com/work_order_detail.do?id=z23092715584684443872903&ticc=ISI\";\n      //console.log(\"Final FG Work Order Revision: \", x)\n      curApprovals.push(x);\n    }\n  }\n  //end Fieldglass \n\n  //loop through SmartRecruiters\n  key_counter = 1;\n  for (let x of curSmartrecruitersData) {\n    x.id = x.id + key_counter; //make id unique just incase\n    key_counter++;\n    x.description = `${x.title} - Created by: ${x.createdBy}`;\n    x.title = `${x.approvalType} - ${x.refNumber}`\n\n    x.approvalRequester = x.createdBy;\n\n    x.assignedDate = x.createdDate.substring(0, 10); //2023-03-17T16:18:43.433Z\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.systemName = \"smartrecruiters\";\n\n    //x.link = x.reportLink; \n    x.link = \"https://intusurg.okta.com/home/smartrecruiterssaml/0oa1jet5kjjjbeXxd1d8/54253\";\n    curApprovals.push(x);\n  }\n\n  //loop My HCM\n  key_counter = 1;\n  for (let x of curMyHcmData) {\n    x.id = \"My HCM\" + x.id + key_counter; //make id unique just incase\n    key_counter++;\n    x.description = `Created by: ${x.createdBy}`;\n    x.title = `${x.title}`\n\n    x.approvalRequester = x.createdBy;\n\n    x.assignedDate = x.assignedDate.substring(0, 10); //2023-03-17T16:18:43.433Z\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.systemName = \"my hcm\";\n\n    //x.link = x.reportLink; \n    x.link = \"https://intusurg.okta.com/home/intuitivesurgical_oraclehcm_1/0oa1dz9bryiTBtpMN1d8/aln1dz9evhjhoMPSd1d8\";\n    curApprovals.push(x);\n  }\n\n  //loop MES\n  key_counter = 1;\n  for (let x of curMesData) {\n    x.id = \"MES\" + x.qnNumber + key_counter; //make id unique just incase\n    key_counter++;\n    x.description = `Task Description: ${x.taskDescription}`;\n    x.title = `QN Number: ${x.qnNumber} - Requested By: ${x.taskCreatedBy}`\n\n    x.approvalRequester = x.taskCreatedBy;\n\n    x.assignedDate = x.taskCreatedOn.substring(0, 10); //2023-03-17T16:18:43.433Z\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.systemName = \"mes\";\n\n    //x.link = x.reportLink; \n    x.link = \"https://prd.intusurg.com/sap/bc/gui/sap/its/webgui\";\n    curApprovals.push(x);\n  }\n\n\n  //{\n  //     \"id\": \"CBJCHBCAABAAlSmJbJlwlW2lLDuattynfagWqOLgCMft\",\n  //     \"type\": \"AGREEMENT\",\n  //     \"name\": \"Test agreement - svc-anywhere to Beto & Luke\",\n  //     \"displayDate\": \"2023-12-07T11:23:52Z\",\n  //     \"requestorName\": \"SVC ISI Anywhere\",\n  //     \"status\": \"WAITING_FOR_MY_SIGNATURE\"\n  // }\n  //loop Adobe Sign\n  key_counter = 1;\n  for (let x of curAdobeSignData) {\n    x.id = \"AdobeSign\" + x.id + key_counter; //make id unique just incase\n    key_counter++;\n    x.description = `Requested By: ${x.requestorName} - Status: ${x.status}`;\n    x.title = `${x.name}`\n\n    x.approvalRequester = x.requestorName;\n\n    x.assignedDate = x.displayDate.substring(0, 10); //2023-12-07T11:23:52Z\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.systemName = \"adobe sign\";\n\n    //x.link = x.reportLink; \n    x.link = \"https://intusurg.na1.echosign.com/\";\n    curApprovals.push(x);\n  }\n\n  //loop Archibus data\n  // key_counter = 1;\n  //   [\n  //     {\n  //         \"createdDate\": \"2024-10-22\",\n  //         \"recordsCount\": 3,\n  //         \"email\": \"Beto.HernandezAdame@intusurg.com\",\n  //         \"eM_ID\": \"BETO HERNANDEZ ADAME-658\"\n  //     }\n  // ]\n\n  key_counter = 1;\n  for (let x of curArchibusData) {\n    x.id = \"Archibus\" + key_counter;\n    key_counter++;\n    x.description = `Approver Email: ${x.email}`;\n    x.title = \"\";\n    x.approvalRequester = \"\";\n    x.assignedDate = x.createdDate; // 2024-10-24\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.systemName = \"archibus\";\n\n    //x.link = x.reportLink; \n    x.link = \"https://intusurg.okta.com/home/intusurg_archibus_1/0oa1nlwsa2pcNkLEw1d8/aln1nlwunml5yLoTb1d8\";\n    curApprovals.push(x);\n  }\n\n  key_counter = 1;\n  if (curSapWfData.purchaseOrder.length > 0) {\n    for (let x of curSapWfData.purchaseOrder) {\n      x.id = \"SAP PO\" + x.taskId + key_counter;\n      key_counter++;\n      x.title = `${x.description}`;\n      x.description = \"\";\n      x.approvalRequester = `Doc #: ${x.docNumber}`;\n      //x.assignedDate = x.createdOn; // \"20241203 => 2024-12-03\n      let year = x.createdOn.substring(0, 4);\n      let month = x.createdOn.substring(4, 6);\n      let day = x.createdOn.substring(6, 8);\n      x.assignedDate = `${year}-${month}-${day}`;;\n\n      x.updatedDateTime = new Date();\n      let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n      updatedTimeTmp = updatedTimeTmp.toString();\n      x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n      x.systemName = \"purchase order\";\n\n      //x.link = x.reportLink; \n      x.link = x.link;\n      //https://prd.intusurg.com/sap/bc/ui2/flp?sap-client=800&sap-language=EN#Shell-home\n      curApprovals.push(x);\n    }\n  }\n\n  // {\n  //   \"id\": \"4bd1989974d5900123e161b68b9d0000\",\n  //   \"requestor\": \"David Adame\",\n  //   \"approversEmail\": \"THOMAS.SHAW@INTUSURG.COM\",\n  //   \"approvers\": \"Thomas Shaw\",\n  //   \"processType\": \"Home Contact Change\",\n  //   \"processEventDetail\": \"Notify Thomas Shaw of A To-Do Awaits you:  Initiate Location Change\",\n  //   \"createdDate\": \"2024-08-20\",\n  //   \"status\": \"Awaiting Action\"\n  // }\n  //WorkDay\n\n  key_counter = 1;\n  for (let x of curWorkdayData) {\n    x.id = \"Workday\" + x.id + key_counter;\n    key_counter++;\n\n    if (x.description == null) {\n      x.description = ``;\n    }\n    else {\n      x.description = `Requested by: ${x.requestor}`;\n    }\n    x.title = `Approval type: ${x.processType}`;\n    x.approvalRequester = `Requested by: ${x.requestor} `;\n    x.assignedDate = x.createdDate; // 2024-08-20\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.systemName = \"workday\";\n\n    //x.link = x.reportLink; \n    x.link = \"https://wd5.myworkday.com/isrg/d/home.htmld\";\n    curApprovals.push(x);\n  }\n\n  //   {\n  //     \"requestor\": \"Eghbal, Darius\",\n  //     \"employeeId\": \"514978\",\n  //     \"timeOffType\": \"Flex Vacation\",\n  //     \"timeOffDate\": \"2025-01-02T00:00:00\",\n  //     \"startTime\": \"\",\n  //     \"endTime\": \"\",\n  //     \"value\": 8.00,\n  //     \"unit\": \"Hours\",\n  //     \"status\": \"Pending\",\n  //     \"createdDate\": \"2024-12-10\"\n  // }\n\n  key_counter = 1;\n  for (let x of curWorkforceData) {\n    x.id = \"Workforce\" + x.employeeId + key_counter;\n    key_counter++;\n\n    x.description = `${x.requestor} requests ${x.value} ${x.unit}`;\n    x.title = `Time off type: ${x.timeOffType}`;\n    x.approvalRequester = `Requested by: ${x.requestor} `;\n    x.assignedDate = x.createdDate; // 2024-08-20\n    x.updatedDateTime = new Date(); // API doesn't currently have this\n    let updatedTimeTmp = new Date(Date.parse(x.updatedDateTime));\n    updatedTimeTmp = updatedTimeTmp.toString();\n    x.updatedDateTime = updatedTimeTmp.replace(/GMT.*/g, \"\");\n    x.systemName = \"workforce\";\n\n    //x.link = x.reportLink; \n    x.link = \"https://isi.workforcehosting.com/workforce/Home.do?action=start\";\n    curApprovals.push(x);\n  }\n\n\n\n\n  myObj.approvals = curApprovals;\n  //console.log(\"JUST FINISHED REFRESHING DATA\");\n\n\n  //console.log(myObj.curUserInfo.name);  // obj includes Okta user info\n  //console.log(myObj.curUserInfo); \n  dispatch({ type: 'FETCH_COMPLETE' });\n  dispatch({ type: 'FETCH_APPROVALS', payload: myObj });\n};\n\n//API Call for ISI Anywhere Stats\nexport const sendStats = (app, uid) => async dispatch => {\n  // console.log(\"I am in action sendStats: \", app, uid);\n\n  const body = {\n    source: \"web\",\n    app: app,\n    uid: uid,\n    refKey: \"e62778492de242a4b66ec230c24baeee\"\n  };\n  try {\n    const response = await approvalApi.post(\"/UserAppStats/update\", body);\n    // console.log(\"SUCCESS sending Stats: \", response.data);\n  } catch (err) {\n    console.log(\"Calling Stats API error. \", err);\n  }\n\n  dispatch({ type: 'STATS_SENT', payload: app });\n}\n\n\n\n//API Call - Check if logged in user has Analytics access\nexport const checkAnalyticsAccessOld = (curToken) => async dispatch => {\n  // console.log(\"I am in action checkAnalytiiccsAccess: \");\n\n  let dataObj = {\n    analyticsAccess: false\n  };\n\n  try {\n\n    // Define the base URL and endpoint\n    const baseUrl = 'https://anywhere.intuitive.com/api/analytics/count';\n\n    // Define headers\n    const headers = {\n      'Authorization': 'Bearer ' + curToken.accessToken,\n    };\n\n    // Define query parameters\n    const params = {\n      analyticsType: 'ActivityCount',\n      platform: 'desktop',\n      startDate: '2023-12-01',\n      endDate: '2023-12-19'\n    };\n\n    // Make GET request \n    const response = await axios.get(baseUrl, {\n      headers: headers,\n      params: params\n    });\n\n    dataObj.analyticsAccess = true;\n    // console.log(\"User has Analytics access:\", response);\n    dispatch({ type: 'ANALYTICS_ACCESS', payload: dataObj.analyticsAccess });\n  } catch (error) {\n    // Handle any errors\n    //console.error('Error fetching data:', error);\n    dataObj.analyticsAccess = false;\n    console.log(\"User does NOT have Analytics access:\");\n    dispatch({ type: 'ANALYTICS_ACCESS', payload: dataObj.analyticsAccess });\n  }\n}\n\nexport const checkAnalyticsAccess = (curToken) => async dispatch => {\n  // console.log(\"I am in NEW action checkAnalytiiccsAccess: \");\n\n  let dataObj = {\n    analyticsAccess: false\n  };\n\n  try {\n\n    // Define headers\n    const headers = {\n      'Authorization': 'Bearer ' + curToken.accessToken,\n    };\n\n    // Make GET request \n    const response = await approvalApi.get('/user/profile', { headers: headers });\n\n    dataObj.analyticsAccess = false;\n    // console.log(\"API Response:\", response.data);\n    const userRoles = response.data.roles;\n    //check if user has the analytics role access\n    for (let i = 0; i < userRoles.length; i++) {\n      if (userRoles[i] === \"analytics\") {\n        dataObj.analyticsAccess = true; //user has access to analytics\n        // console.log(\"user has analtyics access\");\n      }\n    }\n    dispatch({ type: 'ANALYTICS_ACCESS', payload: dataObj.analyticsAccess });\n  } catch (error) {\n    // Handle any errors\n    dataObj.analyticsAccess = false;\n    console.log(\"API error: User does NOT have Analytics access:\");\n    dispatch({ type: 'ANALYTICS_ACCESS', payload: dataObj.analyticsAccess });\n  }\n}","import axios from '../../apis/approvalsApi';\n\nexport const FETCH_USER_PROFILE_REQUEST = 'FETCH_USER_PROFILE_REQUEST';\nexport const FETCH_USER_PROFILE_SUCCESS = 'FETCH_USER_PROFILE_SUCCESS';\nexport const FETCH_USER_PROFILE_FAILURE = 'FETCH_USER_PROFILE_FAILURE';\n\nexport const fetchUserProfileRequest = () => ({\n    type: FETCH_USER_PROFILE_REQUEST,\n});\n\nexport const fetchUserProfileSuccess = (data) => ({\n    type: FETCH_USER_PROFILE_SUCCESS, payload: data,\n});\n\nexport const fetchUserProfileFailure = (error) => ({\n    type: FETCH_USER_PROFILE_FAILURE, payload: error,\n});\n\n/**\n * Action creator for fetching user profile data.\n * @param {string} jwt - JSON Web Token for authentication.\n * @returns {Function} - Async function dispatching actions based on the API response.\n */\nexport const fetchUserProfileData = (jwt) => async (dispatch) => {\n    try {\n        // Dispatch the action to indicate that the request is in progress.\n        dispatch(fetchUserProfileRequest());\n\n        // Set up the headers for the request, including the JWT for authentication.\n        const headers = {\n            'Authorization': 'Bearer ' + jwt.accessToken,\n        };\n\n        // Make a GET request to the API endpoint for fetching user profile data.\n        const response = await axios.get('/user/profile', { headers: headers });\n\n        // Log the response data for debugging purposes.\n        //console.log(response);\n\n        // Dispatch an action with the data from the response to indicate success.\n        dispatch(fetchUserProfileSuccess(response.data));\n    } catch (ex) {\n        // Log the error for debugging purposes.\n        console.error(ex);\n\n        // If an exception occurs during the request, dispatch an action with the error information.\n        dispatch(fetchUserProfileFailure(ex.response?.data || ex.message));\n    }\n};\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport MediaQuery from 'react-responsive';\nimport { selectSystem, checkAnalyticsAccess } from '../actions';\nimport { withOktaAuth } from '@okta/okta-react';\nimport { fetchUserProfileData } from '../actions/profile/profile.action';\n\n//import HeaderFilterBs from './HeaderFilterBs';\n\n\nclass HeaderBs extends React.Component {\n    createDropDown() {\n        //let systemsLength = this.props.systems;\n        return this.props.systems.map((system) => {\n            return (\n                <div key={system.id} style={{ textAlign: 'center' }}>\n                    <a onClick={() => this.props.selectSystem(system)}>\n                        <p>{system.sysName} - {system.amount}</p>\n                    </a>\n                    <div className=\"dropdown-divider\"></div>\n                </div>\n            );\n        });\n    }\n\n    //fetch latest data and pass auth Obj with tokens for API call\n    checkUserAccess = async () => {\n        let authObj = {};\n        if (this.props.authState.isAuthenticated) {\n            const userInfo = await this.props.oktaAuth.getUser();\n            authObj.curUserInfo = userInfo;\n            authObj.token = this.props.authState.accessToken;\n            //Action to check if user has analytics access\n            await this.props.checkAnalyticsAccess(authObj.token);\n            await this.props.fetchUserProfileData(authObj.token);\n\n        }\n    };\n\n    componentDidMount() {\n        if (Object.keys(this.props.user).length === 0) {\n            this.checkUserAccess();\n        }\n    }\n\n    render() {\n\n        let updatedTime = new Date();\n        updatedTime = updatedTime.toString();\n        // eslint-disable-next-line\n        updatedTime = updatedTime.replace(/GMT.*/g, '');\n\n        return (\n            <div className=\"main-header\" style={{ fontFamily: 'interBoldUI' }}>\n                {/* <!-- Logo Header --> */}\n                <div className=\"logo-header\" data-background-color=\"white\">\n                    <a href=\"/\" className=\"logo\" id=\"logoHeader\">\n                        <img src=\"../assets/img/intuitive_logo_black.png\" alt=\"navbar brand\"\n                            className=\"navbar-brand\"></img>\n                    </a>\n                    {/* <button className=\"navbar-toggler sidenav-toggler ml-auto\" type=\"button\" data-toggle=\"collapse\" data-target=\"collapse\" aria-expanded=\"false\" aria-label=\"Toggle navigation\" onClick={()  => {\n                            console.log(\"Clicked left hamburger menu\");\n                        }}>\n                            <span className=\"navbar-toggler-icon\">\n                                <i className=\"icon-menu\"></i>\n                            </span>\n                        </button> */}\n                    <MediaQuery maxDeviceWidth={1224}>\n                        <div className=\"dropdown\">\n                            <button className=\"btn dropdown-toggle\" style={{ color: 'black' }} type=\"button\"\n                                id=\"dropdownMenuButton\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\n                                aria-expanded=\"false\">\n                                {this.props.curSystem.sysName}\n                            </button>\n                            <div style={{ minWidth: '7rem' }} className=\"dropdown-menu\"\n                                aria-labelledby=\"dropdownMenuButton\">\n                                {this.createDropDown()}\n                            </div>\n                        </div>\n                    </MediaQuery>\n                    {/* <button className=\"topbar-toggler more\" onClick={() => {console.log(\"clicked 3 button right menu\")}}><i className=\"icon-options-vertical\"></i></button> */}\n                    {/* <div className=\"nav-toggle\">\n                            <button className=\"btn btn-toggle toggle-sidebar\">\n                                <i className=\"icon-menu\"></i>\n                            </button>\n                        </div> */}\n                </div>\n                {/* <div className=\"container-fluid\">\n                        <div className=\"page-inner mt--5\">\n                            <div className=\"row\">\n                                <div className=\"col-md-12\">\n                                    <div className=\"card full-height\">\n                                        <HeaderFilterBs/>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                     </div> */}\n                <nav className=\"navbar navbar-header navbar-expand-lg\" data-background-color=\"white\">\n\n                    <div className=\"container-fluid\">\n                        <h2 className=\"text-black pb-2 fw-bold\" id=\"appName\">ISI Anywhere</h2>\n\n                        <ul className=\"navbar-nav topbar-nav ml-md-auto align-items-center\">\n                            {/* <li className=\"nav-item dropdown hidden-caret\">\n                                <h2 className=\"text-black pb-2 fw-bold\" id='appName'>ISI Anywhere</h2>\n                            </li> */}\n                            <li className=\"nav-item dropdown hidden-caret\">\n                                <h4 className=\"\" id=\"totalCountText\">\n                                    You have {this.props.systems[0].amount} Total Notifications\n                                    <br></br>\n                                    <small className=\"text-muted\" id=\"updateTimeText\">Updated: {updatedTime}</small>\n                                </h4>\n                            </li>\n                            {/* <li>\n                                <Link to=\"/about\">\n                                    <a href=\"/about\" target=\"_blank\" className=\"fas fa-question-circle\" data-toggle=\"modal\" data-target=\"#exampleModalCenter\" style={{ paddingLeft: \"10px\" }} title=\"About/Help\" ></a>\n                                </Link>\n                            </li> */}\n                            <li className=\"nav-item dropdown hidden-caret submenu show\">\n                                <a className=\"dropdown-toggle profile-pic\" id=\"dropdownMenuButton\" data-toggle=\"dropdown\"\n                                    aria-haspopup=\"true\" aria-expanded=\"false\">\n                                    <div className=\"avatar-sm\">\n                                        <img src=\"/assets/img/profile_placeholder.png\" alt=\"...\"\n                                            className=\"avatar-img rounded-circle\"></img>\n                                    </div>\n                                </a>\n                                <div className=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton\">\n                                    {/* If use has analytics access show menu item */}\n                                    {this.props.hasAnalyticsAccess === true &&\n                                        <a className=\"dropdown-item\" href=\"/analytics\">Analytics</a>\n                                    }\n                                    {\n                                        this.props.userProfile?.roles?.indexOf('admin') >= 0 &&\n                                        (<a className=\"dropdown-item\" href=\"/admin\">Admin</a>)\n                                    }\n                                    <a className=\"dropdown-item\" href=\"/about\">About</a>\n                                </div>\n                            </li>\n                        </ul>\n                    </div>\n                </nav>\n            </div>\n        );\n    }\n};\n\nconst mapStateToProps = (state) => {\n    return {\n        systems: state.systems,\n        curSystem: state.selectedSystem,\n        hasAnalyticsAccess: state.analyticsAccess,\n        user: state.user,\n        userProfile: state.userProfile.profile,\n    };\n};\n\nexport default connect(mapStateToProps, {\n    selectSystem,\n    checkAnalyticsAccess,\n    fetchUserProfileData,\n})(withOktaAuth(HeaderBs));","import React from 'react';\nimport { connect } from 'react-redux';\nimport { selectSystem } from '../actions';\n\n\nclass SideBarBs extends React.Component {\n\n\trenderList() {\n\n\t\t//Need to assign the following to systems\n\t\t//for each system assign specific colors either black or blank, black is the cur system chosen\n\t\t//for each system assign their icon classname\n\n\t\t// return this.props.systems.map((system) => {\n\t\t// \treturn (\n\t\t// \t\t<li className=\"nav-item cursor-pointer\">\n\t\t// \t\t\t<a onClick={()=> this.props.selectSystem(system)}>\n\t\t// \t\t\t\t<i className=\"fas fa-layer-group\" style={allTextStyle}></i>\n\t\t// \t\t\t\t<p style={allTextStyle}>All</p>\n\t\t// \t\t\t\t<span className=\"badge badge-secondary\" style={{background:\"#9429FF\"}}>{this.props.systems[0].amount}</span>\n\t\t// \t\t\t</a>\n\t\t// \t\t</li>\n\t\t// \t)\n\t\t// })\n\t}\n\n\trender() {\n\t\tlet myStyleArray = [];\n\t\tlet isuTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet agileTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet sapQnTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet coupaTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet samTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet snowTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet trackwiseTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet ivaluaTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet rceTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet itTimesheetTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet concurTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet neptuneMtTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet fieldglassTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet smartrecruitersTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet neptunePsTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet myHcmTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet mesTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet adobeSignTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet archibusTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet workdayTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet sapPoTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet workforceTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tlet allTextStyle = {\n\t\t\tcolor: \"\"\n\t\t};\n\t\tif (this.props.curSystem.sysName === \"ISU\") {\n\t\t\tisuTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t} else if (this.props.curSystem.sysName === \"Agile\") {\n\t\t\tagileTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t} else if (this.props.curSystem.sysName === \"All\") {\n\t\t\tallTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t} else if (this.props.curSystem.sysName === \"SAP QN\") {\n\t\t\tsapQnTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t} else if (this.props.curSystem.sysName === \"Coupa\") {\n\t\t\tcoupaTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"SAM\") {\n\t\t\tsamTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"HelpNow\") {\n\t\t\tsnowTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t} else if (this.props.curSystem.sysName === \"Trackwise\") {\n\t\t\ttrackwiseTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t} else if (this.props.curSystem.sysName === \"Ivalua\") {\n\t\t\tivaluaTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t} else if (this.props.curSystem.sysName === \"RCE ServiceNow\") {\n\t\t\trceTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"IT Timesheet\") {\n\t\t\titTimesheetTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"Concur\") {\n\t\t\tconcurTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"Neptune MT\") {\n\t\t\tneptuneMtTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"Fieldglass\") {\n\t\t\tfieldglassTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"SmartRecruiters\") {\n\t\t\tsmartrecruitersTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"Neptune PS\") {\n\t\t\tneptunePsTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"My HCM\") {\n\t\t\tmyHcmTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"MES\") {\n\t\t\tmesTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"Adobe Sign\") {\n\t\t\tadobeSignTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"Archibus\") {\n\t\t\tarchibusTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"Workday\") {\n\t\t\tworkdayTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"Purchase Order\") {\n\t\t\tsapPoTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\t\telse if (this.props.curSystem.sysName === \"Workforce\") {\n\t\t\tworkforceTextStyle = {\n\t\t\t\tcolor: \"black\"\n\t\t\t}\n\t\t}\n\n\n\n\t\treturn (\n\t\t\t<div className=\"sidebar sidebar-style-2\">\n\t\t\t\t<div className=\"sidebar-wrapper scrollbar scrollbar-inner\">\n\t\t\t\t\t<div className=\"sidebar-content\">\n\t\t\t\t\t\t<div className=\"user cursor-default\">\n\t\t\t\t\t\t\t{/* <div className=\"avatar-sm float-left mr-2\">\n\t\t\t\t\t\t\t\t<img src=\"/assets/img/profile_placeholder.png\" alt=\"...\" className=\"avatar-img rounded-circle\"></img>\n\t\t\t\t\t\t\t</div> */}\n\t\t\t\t\t\t\t<div className=\"info\">\n\t\t\t\t\t\t\t\t<a className=\"cursor-default\" data-toggle=\"collapse\" href=\"#collapseExample\" aria-expanded=\"true\">\n\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\tWelcome\n\t\t\t\t\t\t\t\t\t\t<span className=\"user-level\">{this.props.user.name}</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t<div className=\"clearfix\"></div>\n\n\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<ul className=\"nav nav-primary\">\n\t\t\t\t\t\t\t<li className=\"nav-section\">\n\t\t\t\t\t\t\t\t<span className=\"sidebar-mini-icon\">\n\t\t\t\t\t\t\t\t\t<i className=\"fa fa-ellipsis-h\"></i>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<h4 className=\"text-section\">Application Totals</h4>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[0])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-layer-group\" style={allTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={allTextStyle}>All</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[0].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[1])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-desktop\" style={agileTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={agileTextStyle}>ACCS (Agile)</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[1].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t{/* <li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={()=> this.props.selectSystem(this.props.systems[2])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-store\" style={aribaTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={aribaTextStyle}>Ariba</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{background:\"#9429FF\"}}>{this.props.systems[2].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li> */}\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[2])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-school\" style={isuTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={isuTextStyle}>ISU</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[2].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[3])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-bell\" style={sapQnTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={sapQnTextStyle}>SAP QN</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[3].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[4])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-store\" style={coupaTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={coupaTextStyle}>Coupa</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[4].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[5])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-address-card\" style={samTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={samTextStyle}>SAM</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[5].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[6])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-laptop\" style={snowTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={snowTextStyle}>HelpNow</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[6].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[7])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-file-signature\" style={trackwiseTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={trackwiseTextStyle}>Trackwise</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[7].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[8])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-file-alt\" style={ivaluaTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={ivaluaTextStyle}>Ivalua</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[8].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[9])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-dollar-sign\" style={rceTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={rceTextStyle}>RCE ServiceNow</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[9].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[10])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-book\" style={concurTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={concurTextStyle}>Concur</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[10].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[11])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-pen-nib\" style={neptuneMtTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={neptuneMtTextStyle}>Neptune MT</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[11].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[12])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-file-invoice-dollar\" style={fieldglassTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={fieldglassTextStyle}>Fieldglass</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[12].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[13])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-brain\" style={smartrecruitersTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={smartrecruitersTextStyle}>SmartRecruiters</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[13].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[14])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-clock\" style={itTimesheetTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={itTimesheetTextStyle}>IT Timesheet</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[14].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[15])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-pen\" style={neptunePsTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={neptunePsTextStyle}>Neptune PS</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[15].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[16])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-clipboard\" style={myHcmTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={myHcmTextStyle}>My HCM</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[16].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[17])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-keyboard\" style={mesTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={mesTextStyle}>MES</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[17].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[18])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-file-signature\" style={adobeSignTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={adobeSignTextStyle}>Adobe Sign</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[18].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[19])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-map-marker-alt\" style={archibusTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={archibusTextStyle}>Archibus</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[19].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[20])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-users\" style={workdayTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={workdayTextStyle}>Workday</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[20].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[21])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-file-alt\" style={sapPoTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={sapPoTextStyle}>Purchase Order</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[21].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li className=\"nav-item cursor-pointer\">\n\t\t\t\t\t\t\t\t<a onClick={() => this.props.selectSystem(this.props.systems[22])}>\n\t\t\t\t\t\t\t\t\t<i className=\"fas fa-clock\" style={workforceTextStyle}></i>\n\t\t\t\t\t\t\t\t\t<p style={workforceTextStyle}>Workforce</p>\n\t\t\t\t\t\t\t\t\t<span className=\"badge badge-secondary\" style={{ background: \"#9429FF\" }}>{this.props.systems[22].amount}</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n};\n\n\n\nconst mapStateToProps = (state) => {\n\t//console.log(\"SIDEBAR state\", state);\n\treturn { systems: state.systems, curSystem: state.selectedSystem, user: state.user };\n}\nexport default connect(mapStateToProps, { selectSystem })(SideBarBs);","export default function _taggedTemplateLiteral(strings, raw) {\n  if (!raw) {\n    raw = strings.slice(0);\n  }\n  return Object.freeze(Object.defineProperties(strings, {\n    raw: {\n      value: Object.freeze(raw)\n    }\n  }));\n}","import React from 'react';\nimport { connect } from 'react-redux';\nimport MediaQuery from 'react-responsive'\nimport { fetchApprovals, taskCleared, updatePreviousSystemCounts, approveTask, rejectTask, sendStats } from '../actions';\nimport { withOktaAuth } from '@okta/okta-react';\nimport { css } from \"@emotion/react\";\nimport BeatLoader from \"react-spinners/BeatLoader\";\n\n\n\n//\n// Can be a string as well. Need to ensure each key-value pair ends with ;\nconst override = css`\n  display: block;\n  margin: 0 auto;\n  border-color: red;\n`;\n\nclass NotificationListBs extends React.Component {\n\n    //fetch latest data and pass auth Obj with tokens for API call\n    getUserDetails = async () => {\n        let authObj = {};\n        if (this.props.authState.isAuthenticated) {\n            const userInfo = await this.props.oktaAuth.getUser();\n            authObj.curUserInfo = userInfo;\n            authObj.token = this.props.authState.accessToken;\n            //console.log(\"AUTH OBJ:\", authObj);\n            await this.props.fetchApprovals(authObj);\n\n            //console.log(\"I AM IN THE GETUSERDETAILS ABOUT TO CALL UPDATE PREVIOUS SYSTEM COUNTS\")\n            await this.props.updatePreviousSystemCounts(this.props.curSystemCounts);\n        }\n    }\n\n\n\n    getUserDetails2 = async () => {\n        let authObj = {};\n        if (this.props.authState.isAuthenticated) {\n            const userInfo = await this.props.oktaAuth.getUser();\n            authObj.curUserInfo = userInfo;\n            authObj.token = this.props.authState.accessToken;\n            //console.log(\"Calling fetchApprovals action, should I clear cleared list here???\");\n            await this.props.fetchApprovals(authObj);\n        }\n    }\n\n    //set counts for previous count state\n    setPreviousCounts = async () => {\n        //only update when the first data fetch has been finished\n        //console.log(\"INSIDE IF in setPreviousCounts function, have not gone in yet\");\n        if (this.props.dataFetchComplete === true && this.props.isInitialDataFromRefresh === true) {\n            // console.log(\"UPDATED PREVIOUS COUNTS IN FUNCTION, did go inside\");\n            await this.props.updatePreviousSystemCounts(this.props.curSystemCounts);\n            // this.props.curSystemCounts[2] = 1;\n            // this.props.curSystemCounts[3] = 1;\n            //show popup\n            await this.showPopUpNotification();\n        }\n    }\n\n    //function with config of pop up notification\n    showPopUpNotification = async () => {\n\n        //let testMessage = \"SAP QN\"; //this will be dynamic\n        let notifMessage = \"New tasks in: \"\n        let showNotification = false;\n\n        //logic\n        if (this.props.previousSystemCounts[1].amount < this.props.curSystemCounts[1].amount) {\n            notifMessage = notifMessage + \"Agile \";\n            showNotification = true;\n        }\n        // if(this.props.previousSystemCounts[2].amount < this.props.curSystemCounts[2].amount) {\n        //     // notifMessage = notifMessage + \"Ariba \";\n        //     // showNotification = true;\n        // }\n        if (this.props.previousSystemCounts[2].amount < this.props.curSystemCounts[2].amount) {\n            notifMessage = notifMessage + \"ISU \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[3].amount < this.props.curSystemCounts[3].amount) {\n            notifMessage = notifMessage + \"SAP QN \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[4].amount < this.props.curSystemCounts[4].amount) {\n            notifMessage = notifMessage + \"Coupa \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[5].amount < this.props.curSystemCounts[5].amount) {\n            notifMessage = notifMessage + \"SAM \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[6].amount < this.props.curSystemCounts[6].amount) {\n            notifMessage = notifMessage + \"HelpNow \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[7].amount < this.props.curSystemCounts[7].amount) {\n            notifMessage = notifMessage + \"Trackwise \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[8].amount < this.props.curSystemCounts[8].amount) {\n            notifMessage = notifMessage + \"Ivalua \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[9].amount < this.props.curSystemCounts[9].amount) {\n            notifMessage = notifMessage + \"RCE ServiceNow \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[10].amount < this.props.curSystemCounts[10].amount) {\n            notifMessage = notifMessage + \"Concur \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[11].amount < this.props.curSystemCounts[11].amount) {\n            notifMessage = notifMessage + \"Neptune MT\";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[12].amount < this.props.curSystemCounts[12].amount) {\n            notifMessage = notifMessage + \"Fieldglass \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[13].amount < this.props.curSystemCounts[13].amount) {\n            notifMessage = notifMessage + \"SmartRecruiters \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[14].amount < this.props.curSystemCounts[14].amount) {\n            notifMessage = notifMessage + \"IT TimeSheet \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[15].amount < this.props.curSystemCounts[15].amount) {\n            notifMessage = notifMessage + \"Neptune PS \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[16].amount < this.props.curSystemCounts[16].amount) {\n            notifMessage = notifMessage + \"My HCM \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[17].amount < this.props.curSystemCounts[17].amount) {\n            notifMessage = notifMessage + \"MES \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[18].amount < this.props.curSystemCounts[18].amount) {\n            notifMessage = notifMessage + \"Adobe Sign \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[19].amount < this.props.curSystemCounts[19].amount) {\n            notifMessage = notifMessage + \"Archibus \";\n            showNotification = true;\n        }\n        if (this.props.previousSystemCounts[20].amount < this.props.curSystemCounts[20].amount) {\n            notifMessage = notifMessage + \"Purchase Order \";\n            showNotification = true;\n        }\n        // if (this.props.previousSystemCounts[21].amount < this.props.curSystemCounts[20].amount) {\n        //     notifMessage = notifMessage + \"Purchase Order \";\n        //     showNotification = true;\n        // }\n\n\n\n        // console.log(\"I am about to possibly show a push notification\");\n        //console.log(notifMessage);\n\n        //only show if counter increased from last time else don't show a toast\n        if (showNotification === true) {\n            //console.log(\"SHOW THE PUSH NOTIFICATION\");\n            //only show if there are new notifications as compared to last time\n            // toast.success(notifMessage, {\n            //     style: {\n            //         borderRadius: '10px',\n            //         background: '#1C23BA',\n            //         color: '#fff',\n            //     },\n            //     iconTheme: {\n            //         primary: '#FFFAEE',\n            //         secondary: '#1C23BA',\n            //     },\n            //     position: \"bottom-center\",\n            //     duration: 6000,\n            // });\n        }\n    };\n\n    //Get the access token from user and othere user details\n    componentDidMount() {\n        //call initial fetch data only when there is no user object\n        if (Object.keys(this.props.user).length === 0) {\n            this.getUserDetails();\n            //set initial count numbers as previousCount in state\n            //this.setPreviousCounts();\n            // this.props.updatePreviousSystemCounts(this.props.curSystemCounts);   \n        }\n        //set time to refresh every 1 hour\n        setInterval(() => {\n            // console.log(\"Refreshing data with interval function\");\n            //this.props.updatePreviousSystemCounts(this.props.curSystemCounts);\n            this.getUserDetails2();\n\n            //showPopup if there is a new pending task\n            // this.showPopUpNotification();\n\n            //update previous counts\n            this.setPreviousCounts();\n            //this.showPopUpNotification();\n        }, 14400000); // 60000 => 1 minute 3600000 => 1hour  14400000 => 4hours\n    }\n\n\n    renderSamEntitlements(approval) {\n        //might have to add await async here and in main function too.\n        //     const myArr = [\n        //         {\n        //         entitlement: \"A.B. Medica Partner Manager\"\n        //     },\n        //     {\n        //         entitlement:\"Salesforce SFDC-Users UAT\"\n        //     },\n        // ];\n        if (approval.approval.entitlementArr.length > 0) {\n            // console.log(\"CUR APPROVAL ARRAY: \", approval.approval.finalAppArr);\n            let curCount = 0;\n            return approval.approval.entitlementArr.map((i) => {\n\n                return (\n                    <span key={i.myKey} className=\"badge badge-count\" style={{ marginLeft: \"3px\" }}>{i.name}</span>\n                );\n            })\n        }\n        //console.log(\"I AM HEERERERERER\", myArr)\n        //     <span class=\"badge badge-count\">Salesforce SFDC-Users UAT</span>\n        // )\n    }\n\n    renderSamApplications(approval) {\n        //need a loop for Entitlements\n\n        //need a loop for Applications\n\n        //will need two seperate arrays in State, one for each type\n        const myArr = [\n            \"Salesforce\",\n            \"IIQ\"\n        ];\n\n\n        //console.log(\"CUR APPROVAL ARRAY: \", approval.approval.finalAppArr);\n        if (approval.approval.finalAppArr.length > 0) {\n            // console.log(\"CUR APPROVAL ARRAY: \", approval.approval.finalAppArr);\n            let curCount = 0;\n            return approval.approval.finalAppArr.map((i) => {\n                curCount++;\n                return (\n                    <span key={i.myKey} className=\"badge badge-count\" style={{ marginLeft: \"3px\" }}>{i.name}</span>\n                );\n            })\n        }\n    }\n\n    renderList() {\n        //console.log(\"Version: 1.4.7\");\n        //let newArry = this.props.approvalList.filter(approval => approval.sysName == this.props.curSystem.sysName);\n        let filteredApps = [];\n        let temp1 = []; //will contain ISU data during 'All' selection\n        let temp2 = []; //will contain other system data during 'All\" selection\n        let finalSysName;\n\n        //get user uid necessary for stats API call\n        let statsUid = this.props.user.preferred_username;\n        if (statsUid) {\n            const index = statsUid.indexOf(\"@\");\n            statsUid = statsUid.substring(0, index);\n            statsUid = statsUid.toLowerCase();\n        }\n\n        //filter based on app name selection\n        if (this.props.curSystem.sysName === \"All\") {\n            filteredApps = this.props.approvalList;\n            // console.log(filteredApps);\n        } else if (this.props.curSystem.sysName === \"Agile\") {\n            finalSysName = \"agile\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        } else if (this.props.curSystem.sysName === \"ISU\") {\n            finalSysName = \"isu\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        } else if (this.props.curSystem.sysName === \"SAP QN\") {\n            finalSysName = \"sap qn\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        } else if (this.props.curSystem.sysName === \"Coupa\") {\n            finalSysName = \"coupa\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"SAM\") {\n            finalSysName = \"sam\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"HelpNow\") {\n            finalSysName = \"helpnow\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        } else if (this.props.curSystem.sysName === \"Trackwise\") {\n            finalSysName = \"trackwise\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        } else if (this.props.curSystem.sysName === \"Ivalua\") {\n            finalSysName = \"ivalua\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        } else if (this.props.curSystem.sysName === \"RCE ServiceNow\") {\n            finalSysName = \"rce servicenow\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"IT Timesheet\") {\n            finalSysName = \"it timesheet\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"Concur\") {\n            finalSysName = \"concur\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"Neptune MT\") {\n            finalSysName = \"neptune mt\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"Fieldglass\") {\n            finalSysName = \"fieldglass\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"SmartRecruiters\") {\n            finalSysName = \"smartrecruiters\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"Neptune PS\") {\n            finalSysName = \"neptune ps\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"My HCM\") {\n            finalSysName = \"my hcm\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"MES\") {\n            finalSysName = \"mes\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"Adobe Sign\") {\n            finalSysName = \"adobe sign\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"Archibus\") {\n            finalSysName = \"archibus\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"Workday\") {\n            finalSysName = \"workday\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"Purchase Order\") {\n            finalSysName = \"purchase order\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n        else if (this.props.curSystem.sysName === \"Workforce\") {\n            finalSysName = \"workforce\"\n            filteredApps = this.props.approvalList.filter(curApproval => curApproval.systemName === finalSysName);\n        }\n\n\n        //find days count from creation date for each approval\n        for (let x of filteredApps) {\n\n            //let date1 = new Date(\"2021-01-25\".split(\"-\"));\n            let date1 = new Date();\n            //console.log(\"Final Date: \",date1)\n            // console.log(\"Test Date: \", testDate);\n            // console.log(\"Cur record: \", x.systemName);\n            //console.log(\"assignedData: \", x.assignedDate);\n            //console.log(\"assignedData split: \", x.assignedDate.split(\"-\"));\n            let splitDate = x.assignedDate.split(\"-\");\n            //console.log(\"date2 test:\", new Date(splitDate[0],splitDate[1]-1,splitDate[2]));\n            let date2 = new Date(splitDate[0], splitDate[1] - 1, splitDate[2]);\n            // console.log(\"date2: \", date2);\n            var timeDiff = Math.abs(date2.getTime() - date1.getTime());\n            // console.log(\"timeDiff: \", timeDiff);\n            if (x.systemName == \"neptune mt\") {\n                var diffDays = Math.floor(timeDiff / (1000 * 3600 * 24));\n            } else {\n                var diffDays = Math.floor(timeDiff / (1000 * 3600 * 24));\n            }\n            //console.log(\"diffDays: \", diffDays);\n\n\n            //creating message to show in UI with day counts\n            if (x.systemName === \"isu\") {\n                x.daysCount = x.daysRemaining - 1;\n                if (x.daysCount == 0) {\n                    x.dateMessage = `Due Today!`;\n                } else if (x.daysCount < 0) {\n                    x.dateMessage = `Past Due!`;\n                } else {\n                    let d = new Date();//today\n                    d.setDate(d.getDate() + x.daysCount);\n                    let finalIsuDueDate = d.toString();\n                    finalIsuDueDate = finalIsuDueDate.replace(/202(\\d).*/g, \"\");\n                    x.dateMessage = `Due in ${x.daysCount} days on ${finalIsuDueDate}`;\n                }\n            } else {\n                x.daysCount = diffDays\n                //console.log(\"x.days count: \" ,x.daysCount)\n                x.dateMessage = `Created ${x.daysCount} days ago`\n            }\n        }\n\n        //fill temp arrays\n        temp1 = filteredApps.filter(curApproval => curApproval.systemName === \"isu\");\n        temp2 = filteredApps.filter(curApproval => curApproval.systemName === \"agile\" ||\n            curApproval.systemName === \"sap qn\"\n            || curApproval.systemName === \"coupa\"\n            || curApproval.systemName === \"sam\"\n            || curApproval.systemName === \"helpnow\"\n            || curApproval.systemName === \"trackwise\"\n            || curApproval.systemName === \"ivalua\"\n            || curApproval.systemName === \"rce servicenow\"\n            || curApproval.systemName === \"concur\"\n            || curApproval.systemName === \"neptune mt\"\n            || curApproval.systemName === \"fieldglass\"\n            || curApproval.systemName === \"smartrecruiters\"\n            || curApproval.systemName === \"it timesheet\"\n            || curApproval.systemName === \"neptune ps\"\n            || curApproval.systemName === \"my hcm\"\n            || curApproval.systemName === \"mes\"\n            || curApproval.systemName === \"adobe sign\"\n            || curApproval.systemName === \"archibus\"\n            || curApproval.systemName === \"workday\"\n            || curApproval.systemName === \"purchase order\"\n            || curApproval.systemName === \"workforce\"\n        );\n\n        // console.log(\"Before date filter\", filteredApps);\n        //Filter by currrent date range filter\n        if (this.props.dayFilter === \"all\") {\n            filteredApps = filteredApps;//nothing to filter here\n        }\n        else if (this.props.dayFilter === \"0-3 days\") {\n            if (this.props.curSystem.sysName === \"ISU\") {\n                filteredApps = filteredApps.filter(curApproval => curApproval.daysCount > 10);\n            }\n            else if (this.props.curSystem.sysName === \"All\") {\n                //sort ISU specific and the rest sort specific then join\n                temp1 = temp1.filter(curApproval => curApproval.daysCount < 16 && curApproval.daysCount > 10);\n                temp2 = temp2.filter(curApproval => curApproval.daysCount < 4);\n                filteredApps = temp1.concat(temp2); //join both\n            }\n            else {\n                filteredApps = filteredApps.filter(curApproval => curApproval.daysCount < 4);\n            }\n        } else if (this.props.dayFilter === \"4-7 days\") {\n            if (this.props.curSystem.sysName === \"ISU\") {\n                filteredApps = filteredApps.filter(curApproval => curApproval.daysCount < 11 && curApproval.daysCount > 6);\n            }\n            else if (this.props.curSystem.sysName === \"All\") {\n                //sort ISU specific and the rest sort specific then join\n                temp1 = temp1.filter(curApproval => curApproval.daysCount < 11 && curApproval.daysCount > 6);\n                temp2 = temp2.filter(curApproval => curApproval.daysCount < 8 && curApproval.daysCount > 3);\n                filteredApps = temp1.concat(temp2); //join both\n            } else {\n                filteredApps = filteredApps.filter(curApproval => curApproval.daysCount < 8 && curApproval.daysCount > 3);\n            }\n        } else if (this.props.dayFilter === \"7+ days\") {\n            if (this.props.curSystem.sysName === \"ISU\") {\n                filteredApps = filteredApps.filter(curApproval => curApproval.daysCount < 7);\n            }\n            else if (this.props.curSystem.sysName === \"All\") {\n                //sort ISU specific and the rest sort specific then join\n                temp1 = temp1.filter(curApproval => curApproval.daysCount < 7);\n                temp2 = temp2.filter(curApproval => curApproval.daysCount > 7);\n                filteredApps = temp1.concat(temp2); //join both\n            }\n            else {\n                filteredApps = filteredApps.filter(curApproval => curApproval.daysCount > 7);\n            }\n        }\n        // console.log(\"After date filter\", filteredApps);\n\n\n        //filter approvals by earliest to latest due date\n        //filteredApps.sort((a,b) => Number(a.daysCount) - Number(b.daysCount));\n        //filter approvals by latest to newest creation date\n        filteredApps.sort((a, b) => Number(b.daysCount) - Number(a.daysCount));\n        filteredApps.sort((a, b) => {\n            if (a.systemName == \"isu\" && b.systemName == \"isu\") {\n                return Number(a.daysCount) - Number(b.daysCount)\n            }\n        });\n\n\n\n\n        //if no records for current filter after data fetch\n        if (filteredApps.length < 1 && this.props.dataFetchComplete === true) {\n            //console.log(\"I AM SUPPOSED TO BE IN HERE\");\n            return (\n                <div>\n                    <h3>No records available here</h3>\n                </div>\n            );\n        }\n\n        //show loading while fetching data\n        if (this.props.dataFetchComplete === \"false\") {\n            return (\n                <div>\n                    {/* <h3>No records available here</h3> */}\n                    <div className=\"sweet-loading\">\n                        <h3>Fetching details...</h3>\n                        <BeatLoader css={override} size={12} color={\"#1C23BA\"} loading={true} speedMultiplier={0.8} />\n                    </div>\n                </div>\n\n            );\n        }\n\n        return filteredApps.map((approval) => {\n            //console.log(\"APPROVAL LENGTH INSIDE: \",filteredApps.length);\n            //limit description length\n            let finalDescription = approval.description;\n            if (finalDescription && finalDescription.length > 100) {\n                // console.log(\"it is greater\");\n                finalDescription = finalDescription.substr(0, 100);\n            }\n\n\n\n            // console.log(today);\n            if (this.props.curSystem != null && this.props.curSystem.sysName === approval.sysName) {\n                //console.log(\"found one!\");\n            }\n\n            let curApprovalSysname;\n            let statAppname;\n            let appColor;\n            if (approval.systemName === \"agile\") {\n                curApprovalSysname = \"Agile ACCS\";\n                statAppname = \"agile\";\n                appColor = \"bg-danger\";\n                //approval.systemName = \"agile\";\n            } else if (approval.systemName === \"isu\") {\n                curApprovalSysname = \"ISU\";\n                statAppname = \"isu\";\n                appColor = \"bg-secondary\";\n            } else if (approval.systemName === \"sap qn\") {\n                curApprovalSysname = \"SAP QN\";\n                statAppname = \"sapqn\";\n            } else if (approval.systemName === \"coupa\") {\n                curApprovalSysname = \"Coupa\";\n                statAppname = \"coupa\";\n            }\n            else if (approval.systemName === \"sam\") {\n                curApprovalSysname = \"SAM\";\n                statAppname = \"sam\";\n            }\n            else if (approval.systemName === \"helpnow\") {\n                curApprovalSysname = \"HelpNow\";\n                statAppname = \"helpnow\";\n            } else if (approval.systemName === \"trackwise\") {\n                curApprovalSysname = \"Trackwise\";\n                statAppname = \"trackwise\";\n            } else if (approval.systemName === \"ivalua\") {\n                curApprovalSysname = \"Ivalua\";\n                statAppname = \"ivalua\";\n            } else if (approval.systemName === \"rce servicenow\") {\n                curApprovalSysname = \"RCE ServiceNow\";\n                statAppname = \"rce\";\n            } else if (approval.systemName === \"concur\") {\n                curApprovalSysname = \"Concur\";\n                statAppname = \"concur\";\n            } else if (approval.systemName === \"neptune mt\") {\n                curApprovalSysname = \"Neptune MT\";\n                statAppname = \"neptunemt\";\n            } else if (approval.systemName === \"fieldglass\") {\n                curApprovalSysname = \"Fieldglass\";\n                statAppname = \"fieldglass\";\n            } else if (approval.systemName === \"smartrecruiters\") {\n                curApprovalSysname = \"SmartRecruiters\";\n                statAppname = \"smartrecruiters\";\n            }\n            else if (approval.systemName === \"it timesheet\") {\n                curApprovalSysname = \"IT Timesheet\";\n                statAppname = \"ittimesheet\";\n            }\n            else if (approval.systemName === \"neptune ps\") {\n                curApprovalSysname = \"Neptune PS\";\n                statAppname = \"neptuneps\";\n            }\n            else if (approval.systemName === \"my hcm\") {\n                curApprovalSysname = \"My HCM\";\n                statAppname = \"myhcm\";\n            }\n            else if (approval.systemName === \"mes\") {\n                curApprovalSysname = \"MES\";\n                statAppname = \"mes\";\n            }\n            else if (approval.systemName === \"adobe sign\") {\n                curApprovalSysname = \"Adobe Sign\";\n                statAppname = \"adobesign\";\n            }\n            else if (approval.systemName === \"archibus\") {\n                curApprovalSysname = \"Archibus\";\n                statAppname = \"archibus\";\n            }\n            else if (approval.systemName === \"workday\") {\n                curApprovalSysname = \"Workday\";\n                statAppname = \"workday\";\n            }\n            else if (approval.systemName === \"purchase order\") {\n                curApprovalSysname = \"Purchase Order\";\n                statAppname = \"purchase order\";\n            }\n            else if (approval.systemName === \"workforce\") {\n                curApprovalSysname = \"Workforce\";\n                statAppname = \"workforce\";\n            }\n\n            return (\n                <div key={approval.id} >\n                    {/* Start of EQUALS condition for SAPQN */}\n                    {curApprovalSysname == \"SAP QN\" &&\n                        <div className=\"d-flex\">\n                            <a>\n                                <div className=\"avatar\">\n                                    <span className=\"avatar-title rounded-circle border border-white\" style={{ background: \"#1C23BA\" }}>{curApprovalSysname.charAt(0) + curApprovalSysname.charAt(1)}</span>\n                                </div>\n                            </a>\n                            <MediaQuery minDeviceWidth={1225}>\n                                <div className=\"flex-1 ml-3 pt-1\">\n                                    <h6 className=\"text-uppercase mb-1\">{curApprovalSysname}</h6>\n                                    <h6 className=\"text-uppercase fw-bold mb-1\">Notification:<span className=\"pl-3 text-muted text\"> {approval.title} </span></h6>\n                                    <h6 className=\"text-uppercase fw-bold mb-1\">Type:<span className=\"pl-3 text-muted text\"> {approval.notificationType} </span></h6>\n                                    <h6 className=\"fw-bold mb-1\">Notification Status:<span className=\"pl-3 text-muted text\">{approval.notificationStatus}</span></h6>\n                                    <h6 className=\"fw-bold mb-1\">Task Status:<span className=\"pl-3 text-muted text\">{approval.taskStatus}</span></h6>\n                                    <span className=\"text-muted text\">{finalDescription}</span>\n                                </div>\n                                <div className=\"float-right ml-3\">\n                                    <div className=\"pt-1\">\n                                        {/* <small className=\"text-muted\">Due : {approval.assignedDate}</small> */}\n                                        <small className=\"text-muted\">{approval.dateMessage}</small>\n                                    </div>\n                                    <div className=\"pt-1\">\n                                        {/* <small className=\"text-muted\">Updated: {approval.updatedDateTime}</small> */}\n                                        <button className=\"btn btn-primary btn-border btn-sm\"\n                                            onClick={() => {\n                                                window.open(approval.link, '_blank');\n                                                this.props.taskCleared(approval); //call clear task API\n                                                this.props.sendStats(statAppname, statsUid); //call stats API\n                                            }}\n                                        >Go To App</button>\n                                    </div>\n                                </div>\n                            </MediaQuery>\n                            <MediaQuery maxDeviceWidth={1224}>\n                                <div className=\"flex-1 ml-3 pt-1\">\n                                    <h6 className=\"text-uppercase mb-1\">{curApprovalSysname}</h6>\n                                    <h6 className=\"text-uppercase fw-bold mb-1\">{approval.title} <span className=\"pl-3\">{approval.approvalRequester}</span></h6>\n                                    <div className=\"pt-1\">\n                                        {/* <small className=\"text-muted\">Due : {approval.assignedDate}</small> */}\n                                        <small className=\"text-muted\">{approval.dateMessage}</small>\n                                    </div>\n                                    <div className=\"pt-1\">\n                                        {/* <small className=\"text-muted\">Updated: {approval.updatedDateTime}</small> */}\n                                        <button className=\"btn btn-primary btn-border btn-sm\"\n                                            onClick={() => {\n                                                window.open(approval.link, '_blank');\n                                                this.props.taskCleared(approval);\n                                                this.props.sendStats(statAppname, statsUid); //call stats API\n                                            }}>\n                                            Go To App\n                                        </button>\n                                    </div>\n                                </div>\n                            </MediaQuery>\n                        </div>\n                    }\n                    {/* end of EQUALS condition for SAPQN */}\n                    {/* start of EQUALS condition for RCE */}\n                    {curApprovalSysname === \"RCE ServiceNow\" &&\n                        <div className=\"d-flex\">\n                            <a>\n                                <div className=\"avatar\">\n                                    <span className=\"avatar-title rounded-circle border border-white\" style={{ background: \"#1C23BA\" }}>{curApprovalSysname.charAt(0) + curApprovalSysname.charAt(1)}</span>\n                                </div>\n                            </a>\n                            <MediaQuery minDeviceWidth={1225}>\n                                <div className=\"flex-1 ml-3 pt-1\">\n                                    <h6 className=\"text-uppercase mb-1\">Request for Capital Expenditure</h6>\n                                    <h6 className=\"fw-bold mb-1\">Project:<span className=\"pl-3 text-muted text\"> {approval.projectId} </span></h6>\n                                    <h6 className=\"fw-bold mb-1\">RCE #:<span className=\"pl-3 text-muted text\"> {approval.taskNumber} </span></h6>\n                                    <h6 className=\"fw-bold mb-1\">Prepared By:<span className=\"pl-3 text-muted text\">{approval.createdBy}</span></h6>\n                                    <h6 className=\"fw-bold mb-1\">On Behalf Of:<span className=\"pl-3 text-muted text\">{approval.onBehalfOf}</span></h6>\n                                    <h6 className=\"fw-bold mb-1\">Cost Center:<span className=\"pl-3 text-muted text\">{approval.costCenter}</span></h6>\n                                    <h6 className=\"fw-bold mb-1\">RCE Requested Amount:<span className=\"pl-3 text-muted text\">{approval.requestedAmount} {approval.currency}</span></h6>\n                                    <h6 className=\"fw-bold mb-1\">Previously Approved RCE:<span className=\"pl-3 text-muted text\">{approval.previousApprovedAmount} {approval.currency}</span></h6>\n                                    <h6 className=\"fw-bold mb-1\">Total To Date:<span className=\"pl-3 text-muted text\">{approval.totalRequested} {approval.currency}</span></h6>\n                                </div>\n                                <div className=\"ml-3\">\n                                    <div className=\"pt-1\">\n                                        {/* <small className=\"text-muted\">Due : {approval.assignedDate}</small> */}\n                                        <small className=\"text-muted\">{approval.dateMessage}</small>\n                                    </div>\n                                    <div style={{ display: 'inline-block' }}>\n                                        <button style={{ marginRight: \"6px\" }} className=\"btn btn-success btn-border btn-sm\" onClick={() => {\n                                            this.props.approveTask(approval, this.props.authState.accessToken);\n                                            this.props.sendStats(statAppname, statsUid); //call stats API\n                                        }}>Approve</button>\n                                        <button style={{ marginRight: \"6px\" }} className=\"btn btn-danger btn-border btn-sm\" onClick={() => {\n                                            this.props.rejectTask(approval, this.props.authState.accessToken);\n                                            this.props.sendStats(statAppname, statsUid); //call stats API\n                                        }}>Reject</button>\n                                    </div>\n                                    <div className=\"pt-1\" style={{ display: 'inline-block' }}>\n                                        {/* <small className=\"text-muted\">Updated: {approval.updatedDateTime}</small> */}\n                                        <button className=\"btn btn-primary btn-border btn-sm\"\n                                            onClick={() => {\n                                                window.open(approval.link, '_blank');\n                                                this.props.sendStats(statAppname, statsUid); //call stats API\n                                                //this.props.taskCleared(approval);\n                                            }}\n                                        >Go To App</button>\n                                    </div>\n                                </div>\n                            </MediaQuery>\n                            <MediaQuery maxDeviceWidth={1224}>\n                                <div className=\"flex-1 ml-3 pt-1\">\n                                    <h6 className=\"text-uppercase mb-1\">{curApprovalSysname}</h6>\n                                    <h6 className=\"text-uppercase fw-bold mb-1\">{approval.title} <span className=\"pl-3\">{approval.approvalRequester}</span></h6>\n                                    <div className=\"pt-1\">\n                                        {/* <small className=\"text-muted\">Due : {approval.assignedDate}</small> */}\n                                        <small className=\"text-muted\">{approval.dateMessage}</small>\n                                    </div>\n                                    <div className=\"pt-1\">\n                                        {/* <small className=\"text-muted\">Updated: {approval.updatedDateTime}</small> */}\n                                        <button className=\"btn btn-primary btn-border btn-sm\"\n                                            onClick={() => {\n                                                window.open(approval.link, '_blank');\n                                                this.props.sendStats(statAppname, statsUid); //call stats API\n                                                //this.props.taskCleared(approval);\n                                            }}>\n                                            Go To App\n                                        </button>\n                                    </div>\n                                </div>\n                            </MediaQuery>\n                        </div>\n                    }\n                    {/* end of EQUALS condition for RCE */}\n\n                    {curApprovalSysname !== \"SAP QN\" && curApprovalSysname !== \"RCE ServiceNow\" &&\n                        <div className=\"d-flex\">\n                            <a>\n                                {/* NEW  CODE BEGIN  */}\n                                <div className=\"avatar\">\n                                    {/* NEW  CODE END  */}\n                                    <span className=\"avatar-title rounded-circle border border-white\" style={{ background: \"#1C23BA\" }}>{curApprovalSysname.charAt(0) + curApprovalSysname.charAt(1)}</span>\n                                </div>\n                            </a>\n                            <MediaQuery minDeviceWidth={1225}>\n                                <div className=\"flex-1 ml-3 pt-1\">\n                                    <h6 className=\"text-uppercase mb-1\">{curApprovalSysname}</h6>\n                                    <h6 className=\"text-uppercase fw-bold mb-1\">{approval.title}</h6>\n                                    {curApprovalSysname === \"SAM\" &&\n                                        <div>\n                                            <div>\n                                                <div>\n                                                    <span className=\"text-muted text\">{approval.approvalRequester}</span>\n                                                </div>\n                                                {approval.entitlementArr.length !== 0 &&\n                                                    <div>\n                                                        <span className=\"text-muted text\">Entitlements: </span>\n                                                        {this.renderSamEntitlements({ approval })}\n                                                    </div>\n                                                }\n                                            </div>\n                                            {approval.finalAppArr.length !== 0 &&\n                                                <div style={{ marginTop: \"3px\" }}>\n                                                    <span className=\"text-muted text\" >Applications: </span>\n                                                    {this.renderSamApplications({ approval })}\n                                                </div>\n                                            }\n                                        </div>\n                                    }\n                                    {curApprovalSysname !== \"SAM\" &&\n                                        <span className=\"text-muted text\">{finalDescription}</span>\n                                    }\n                                    {curApprovalSysname === \"Ivalua\" &&\n                                        <div>\n                                            <span className=\"text-muted text\">Delegation: </span>\n                                            <span className=\"text-muted text\">{approval.delegation}</span>\n                                        </div>\n                                    }\n                                </div>\n                                <div className=\"float-right ml-3\">\n                                    <div className=\"pt-1\" style={{ inlineSize: \"90px\", overflowWrap: \"break-word\" }}>\n                                        {/* <small className=\"text-muted\">Due : {approval.assignedDate}</small> */}\n                                        <small className=\"text-muted\">{approval.dateMessage}</small>\n                                    </div>\n                                    {curApprovalSysname === \"RCE ServiceNow\" &&\n                                        <div style={{ display: 'inline-block' }}>\n                                            <button style={{ marginRight: \"6px\" }} className=\"btn btn-success btn-border btn-sm\" onClick={() => {\n                                                this.props.approveTask(approval, this.props.authState.accessToken);\n                                                this.props.sendStats(statAppname, statsUid); //call stats API\n                                            }}>Approve</button>\n                                            <button style={{ marginRight: \"6px\" }} className=\"btn btn-danger btn-border btn-sm\" onClick={() => {\n                                                this.props.rejectTask(approval, this.props.authState.accessToken);\n                                                this.props.sendStats(statAppname, statsUid); //call stats API\n                                            }}>Reject</button>\n                                        </div>\n                                    }\n                                    <div className=\"pt-1\" style={{ display: 'inline-block' }}>\n                                        {/* <small className=\"text-muted\">Updated: {approval.updatedDateTime}</small> */}\n                                        <button className=\"btn btn-primary btn-border btn-sm\"\n                                            onClick={() => {\n                                                window.open(approval.link, '_blank');\n                                                this.props.taskCleared(approval);\n                                                this.props.sendStats(statAppname, statsUid); //call stats API\n                                            }}>\n                                            Go To App\n                                        </button>\n                                    </div>\n                                </div>\n                            </MediaQuery>\n                            <MediaQuery maxDeviceWidth={1224}>\n                                <div className=\"flex-1 ml-3 pt-1\">\n                                    <h6 className=\"text-uppercase mb-1\">{curApprovalSysname}</h6>\n                                    <h6 className=\"text-uppercase fw-bold mb-1\">{approval.title} <span className=\"pl-3\">{approval.approvalRequester}</span></h6>\n                                    <div className=\"pt-1 breakWord\">\n                                        {/* <small className=\"text-muted\">Due : {approval.assignedDate}</small> */}\n                                        <small className=\"text-muted\">{approval.dateMessage}</small>\n                                    </div>\n                                    {curApprovalSysname === \"RCE ServiceNow\" &&\n                                        <div style={{ display: 'inline-block' }}>\n                                            <button style={{ marginRight: \"6px\" }} className=\"btn btn-success btn-border btn-sm\" onClick={() => {\n                                                this.props.approveTask(approval, this.props.authState.accessToken);\n                                                this.props.sendStats(statAppname, statsUid); //call stats API\n                                            }}>Approve</button>\n                                            <button style={{ marginRight: \"6px\" }} className=\"btn btn-danger btn-border btn-sm\" onClick={() => {\n                                                this.props.rejectTask(approval, this.props.authState.accessToken);\n                                                this.props.sendStats(statAppname, statsUid); //call stats API\n                                            }}>Reject</button>\n                                        </div>\n                                    }\n                                    <div className=\"pt-1\" style={{ display: 'inline-block' }}>\n                                        {/* <small className=\"text-muted\">Updated: {approval.updatedDateTime}</small> */}\n                                        <button className=\"btn btn-primary btn-border btn-sm\"\n                                            onClick={() => {\n                                                window.open(approval.link, '_blank');\n                                                this.props.taskCleared(approval);\n                                                this.props.sendStats(statAppname, statsUid); //call stats API\n                                            }}>\n                                            Go To App\n                                        </button>\n                                    </div>\n                                </div>\n                            </MediaQuery>\n                        </div>\n                    }\n                    {/* end of NOT condition for SAPQN */}\n                    <div className=\"separator-dashed\"></div>\n                </div>\n            );\n        });\n    }\n\n\n    render() {\n        return (\n            <div className=\"card-body\">\n                {this.renderList()}\n            </div>\n        )\n    }\n};\n\nconst mapStateToProps = (state) => {\n    //console.log(\"STATE\", state);\n    // console.log(\"Cur Systems Agile : \", state.systems[1].amount);\n    // console.log(\"Cur Systems ISU : \", state.systems[3].amount);\n    // console.log(\"Cur Systems SAP QN : \", state.systems[4].amount);\n    // console.log(\"Prev Systems Agile : \", state.previousSystemCounts[1].amount);\n    // console.log(\"Prev Systems ISU : \", state.previousSystemCounts[3].amount);\n    // console.log(\"Prev Systems SAP QN : \", state.previousSystemCounts[4].amount);\n    // console.log(\"Previous Systems: \", state.previousSystemCounts);\n    //console.log(\"USER STATE: \", state.user);\n    return {\n        approvals: state.approvals,\n        curSystem: state.selectedSystem,\n        approvalList: state.approvalList,\n        dayFilter: state.dayFilter,\n        user: state.user,\n        dataFetchComplete: state.dataFetchComplete,\n        isInitialDataFromRefresh: state.isInitialPulledData,\n        curSystemCounts: state.systems,\n        previousSystemCounts: state.previousSystemCounts\n    };\n}\n\n\nexport default connect(mapStateToProps, { fetchApprovals, taskCleared, updatePreviousSystemCounts, approveTask, rejectTask, sendStats })(withOktaAuth(NotificationListBs));","import React from 'react';\n\n\nclass MiddleHeaderBs extends React.Component {\n\n    render(){\n        return (\n\t\t\t<div className=\"panel-header\" style={{ background: \"#F2F3F5\"}}>\n                <div className=\"page-inner py-5\" style={{paddingTop: \"0.5rem!important\"}}>\n                    <div className=\"d-flex align-items-left align-items-md-center flex-column flex-md-row\">\n                    </div>\n                </div>\n            </div>\n        )}\n};\n\nexport default MiddleHeaderBs;","import React from 'react';\nimport { connect } from 'react-redux';\nimport MediaQuery from 'react-responsive';\nimport { selectDayFilter } from '../actions';\n\n\nclass HeaderFilterBs extends React.Component {\n    \n    render(){\n        // let myFilters = [{\"filter\": \"0-3 days\"}, {\"filter\": \"4-7 days\"}, {\"filter\": \"7+ days\"}];\n        // console.log(myFilters[1]);\n        let allInputStyle = {};\n        let pill3InputStyle = {};\n        let pill7InputStyle = {};\n        let pill8InputStyle = {};\n        let curDayFilterText = \"All Days\"; //text to show on filter chosen\n\n        if(this.props.dayFilter === \"all\"){\n            curDayFilterText = \"All Days\";\n        } else {\n            curDayFilterText = this.props.dayFilter;\n        }\n\n        if (this.props.curDayFilter === \"all\"){\n            allInputStyle={background:\"#1C23BA\", color: \"#ffffff\", borderColor: \"#1C23BA\"};\n        } else {\n            allInputStyle={background:\"#ffffff\", color: \"#1C23BA\", borderColor: \"#1C23BA\"};\n        }\n\n        if (this.props.curDayFilter === \"0-3 days\"){\n            pill3InputStyle={background:\"#1AAB2C\", color: \"#ffffff\", borderColor: \"#1AAB2C\"};\n        } else {\n            pill3InputStyle={background:\"#ffffff\", color: \"#1AAB2C\", borderColor: \"#1AAB2C\"};\n        }\n\n        if (this.props.curDayFilter === \"4-7 days\"){\n            pill7InputStyle={background:\"#FFC131\", color: \"#ffffff\", borderColor: \"#FFC131\"};\n        } else {\n            pill7InputStyle={background:\"#ffffff\", color: \"#FFC131\", borderColor: \"#FFC131\"};\n        }\n\n        if (this.props.curDayFilter === \"7+ days\"){\n            pill8InputStyle={background:\"#DD1A20\", color: \"#ffffff\", borderColor: \"#DD1A20\"};\n        } else {\n            pill8InputStyle={background:\"#ffffff\", color: \"#DD1A20\", borderColor: \"#DD1A20\"};\n        }\n\n        return (\n\t\t\t<div className=\"card-header\">\n                \n                    {/* For devices bigger than mobile devices */}\n                    <MediaQuery minDeviceWidth={1224}>\n                    <div className=\"card-head-row\">\n                    <div className=\"card-title\">Notifications</div>\n                    <div className=\"card-tools\">\n                        <ul className=\"nav nav-pills nav-secondary nav-sm\" id=\"pills-tab\" role=\"tablist\">\n                            <li className=\"nav-item submenu\">\n                                <a className=\"nav-link\" id=\"pills-0\" style={allInputStyle} data-toggle=\"pill\" href=\"#pills-year\" role=\"tab\" aria-selected=\"true\" onClick={()=> this.props.selectDayFilter(\"all\")}>All days</a>\n                            </li>\n                            <li className=\"nav-item submenu\">\n                                <a className=\"nav-link\" id=\"pills-3\" style={pill3InputStyle} data-toggle=\"pill\" href=\"#pills-today\" role=\"tab\" aria-selected=\"false\" onClick={()=> this.props.selectDayFilter(\"0-3 days\")}>0-3 days</a>\n                            </li>\n                            <li className=\"nav-item submenu\">\n                                <a className=\"nav-link\" id=\"pills-7\" data-toggle=\"pill\" style={pill7InputStyle} href=\"#pills-week\" role=\"tab\" aria-selected=\"false\" onClick={()=> this.props.selectDayFilter(\"4-7 days\")}>4-7 days</a>\n                            </li>\n                            <li className=\"nav-item submenu\">\n                                <a className=\"nav-link\" id=\"pills-8\" data-toggle=\"pill\" style={pill8InputStyle} href=\"#pills-month\" role=\"tab\" aria-selected=\"false\" onClick={()=> this.props.selectDayFilter(\"7+ days\")}>7+ days</a>\n                            </li>\n                        </ul>\n                    </div>\n                    </div>\n                    </MediaQuery>\n                    {/* For mobile devices */}\n                    <MediaQuery maxDeviceWidth={1224}>\n                    <div className=\"card-head-row\" id=\"mobileFilterHeader\">\n                    <div className=\"card-title\"> {this.props.systems[0].amount} Notifications</div>\n                        <div className=\"float-right ml-3 dropdown\" id=\"mobileDropDownArea\">\n                            <button className=\"btn btn-secondary dropdown-toggle\" id=\"mobileDropDownButton\" type=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                                {curDayFilterText}\n                            </button>\n                            <div className=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton\">\n                                <a className=\"dropdown-item\" href=\"#\" onClick={()=> this.props.selectDayFilter(\"all\")}>All Days</a>\n                                <a className=\"dropdown-item\" href=\"#\" onClick={()=> this.props.selectDayFilter(\"0-3 days\")}>0-3 Days</a>\n                                <a className=\"dropdown-item\" href=\"#\" onClick={()=> this.props.selectDayFilter(\"4-7 days\")}>4-7 Days</a>\n                                <a className=\"dropdown-item\" href=\"#\" onClick={()=> this.props.selectDayFilter(\"7+ days\")}>7+ Days</a>\n                            </div>\n                        </div>\n                        </div>\n                    </MediaQuery>\n            </div>\n        )}\n};\n\nconst mapStateToProps = (state) => {\n    //console.log(\"Day Fileter: \", state.dayFilter);\n    //console.log(\"HeaderFilter: \", state);\n    return { curDayFilter: state.dayFilter, systems: state.systems, dayFilter: state.dayFilter };\n}\n\nexport default connect(mapStateToProps, {selectDayFilter}) (HeaderFilterBs);","import React from 'react';\n//import ApprovalList from './ApprovalList';\n//import Header from './Header';\n//import SystemList from './SystemsList';\n//import User from './User';\n//import MobileSystemsList from './MobileSystemsList';\nimport HeaderBs from './HeaderBs';\nimport SideBarBs from './SideBarBs';\nimport NotificationListBs from './NotificationListBs';\nimport MiddleHeaderBs from './MiddleHeaderBs';\nimport HeaderFilterBs from './HeaderFilterBs';\n\n\n\nconst Home = () => {\n\n    return (\n        <div className=\"wrapper\">\n            {/* <PopUpNotification /> */}\n            <HeaderBs />\n            <SideBarBs />\n            <div className=\"main-panel\">\n                <div className=\"container\">\n                    <MiddleHeaderBs />\n                    <div className=\"page-inner mt--5\">\n                        <div className=\"row\">\n                            <div className=\"col-md-12\">\n                                <div className=\"card full-height\">\n                                    <HeaderFilterBs />\n                                    <NotificationListBs />\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    );\n};\n\n\nexport default Home;","import React from 'react';\nimport { useParams } from 'react-router-dom';\nimport approvalApi from '../apis/approvalsApi';\n// import { connect } from 'react-redux';\n// import MediaQuery from 'react-responsive';\n// import { selectSystem } from '../actions';\n//import HeaderFilterBs from './HeaderFilterBs';\n\n\nconst StatsRedirect = () => {\n    const { user, app } = useParams();\n\n    console.log(\"Redirecting user to: \", app);\n    let url = \"https://intuitive.com\";\n\n    //switch to determine where to URL based on paraams\n    switch (app) {\n        case \"isu\":\n            url = process.env.REACT_APP_ISU_PROD_LINK\n            break;\n        case \"helpnow\":\n            url = process.env.REACT_APP_HELPNOW_PROD_LINK\n            break;\n        case \"sam\":\n            url = process.env.REACT_APP_SAM_PROD_LINK\n            break;\n        case \"agile\":\n            url = process.env.REACT_APP_AGILE_PROD_LINK\n            break;\n        case \"coupa\":\n            url = process.env.REACT_APP_COUPA_PROD_LINK\n            break;\n        case \"ivalua\":\n            url = process.env.REACT_APP_IVALUA_PROD_LINK\n            break;\n        case \"sapqn\":\n            url = process.env.REACT_APP_SAPQN_PROD_LINK\n            break;\n        case \"trackwise\":\n            url = process.env.REACT_APP_TRACKWISE_PROD_LINK\n            break;\n        case \"rce\":\n            url = process.env.REACT_APP_RCE_PROD_LINK\n            break;\n        case \"ittimesheet\":\n            url = process.env.REACT_APP_ITTIMESHEET_PROD_LINK\n            break;\n        case \"concur\":\n            url = process.env.REACT_APP_CONCUR_PROD_LINK\n            break;\n        case \"neptunemt\":\n            url = process.env.REACT_APP_NEPTUNEMT_PROD_LINK\n            break;\n        case \"fieldglass\":\n            url = process.env.REACT_APP_FIELDGLASS_PROD_LINK\n            break;\n        case \"SMARTRECRUITERS\":\n            url = process.env.REACT_APP_SMARTRECRUITERS_PROD_LINK\n            break;\n        case \"neptuneps\":\n            url = process.env.REACT_APP_NEPTUNEPS_PROD_LINK\n            break;\n        case \"myhcm\":\n            url = process.env.REACT_APP_MYHCM_PROD_LINK\n            //url = 'https://intusurg.okta.com/home/intuitivesurgical_oraclehcm_1/0oa1dz9bryiTBtpMN1d8/aln1dz9evhjhoMPSd1d8'\n            break;\n        case \"mes\":\n            url = process.env.REACT_APP_MES_PROD_LINK\n            break;\n        case \"adobesign\":\n            url = process.env.REACT_APP_ADOBESIGN_PROD_LINK\n            break;\n        case \"archibus\":\n            url = process.env.REACT_APP_ARCHIBUS_PROD_LINK\n            break;\n        case \"purchaseorder\":\n            url = process.env.REACT_APP_PO_PROD_LINK\n            break;\n        case \"workday\":\n            url = process.env.REACT_APP_WORKDAY_PROD_LINK\n            break;\n        case \"workforce\":\n            url = process.env.REACT_APP_WORKFORCE_PROD_LINK\n            break;\n        default:\n            url = process.env.REACT_APP_DEFAULT_PROD_LINK\n            break;\n    }\n\n    //example: http://localhost:3000/redirect/beto.hernandezadame/myhcm\n    //Go to Target App\n    window.location.replace(url);\n\n    // localhost:3000/redirect/beto.hernandezadame/isu\n\n    const body = {\n        source: \"zoombot\",\n        app: app,\n        uid: user,\n        refKey: \"e62778492de242a4b66ec230c24baeee\"\n    };\n    try {\n        const response = approvalApi.post(\"/UserAppStats/update\", body);\n        //console.log(\"SUCCESS sending Stats: \", response.data);\n    } catch (err) {\n        console.log(\"Calling Stats API error. \", err);\n    }\n    return (\n        <>Will redirect to {app} in 3 seconds...</>\n    );\n};\n\nexport default StatsRedirect;\n","import React from 'react'\nimport { Link } from 'react-router-dom';\n\nclass About extends React.Component {\n    render() {\n        return (\n            <div className=\"container\">\n                <nav id=\"aboutNavBar\" className=\"navbar navbar-expand-lg navbar-dark bg-black\">\n                    <Link to=\"/\">\n                        <a className=\"navbar-brand\" href=\"#\">ISI Anywhere</a>\n                    </Link>\n                    <button className=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbarNav\" aria-controls=\"navbarNav\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n                        <span className=\"navbar-toggler-icon\"></span>\n                    </button>\n                    <div className=\"collapse navbar-collapse\" id=\"navbarNav\">\n                        {/* <ul className=\"navbar-nav\">\n                            <li className=\"nav-item active\">\n                                 <a className=\"nav-link\" href=\"#\">Home<span className=\"sr-only\">(current)</span></a>\n                            </li>\n                        </ul> */}\n                    </div>\n                </nav>\n                <div className=\"accordion accordion-secondary\">\n                    <div className=\"card\">\n                        <div className=\"card-header\" id=\"headingOne\" data-toggle=\"collapse\" data-target=\"#collapseOne\" aria-expanded=\"true\" aria-controls=\"collapseOne\" >\n                            <div className=\"span-icon\" style={{ \"color\": \"#1C23BA\" }} >\n                                <div className=\"flaticon-chat-1\"></div>\n                            </div>\n                            <div className=\"span-title\" style={{ \"color\": \"#1C23BA\" }}>\n                                About ISI Anywhere?\n                            </div>\n                            <div className=\"span-mode\"></div>\n                        </div>\n\n                        <div id=\"collapseOne\" className=\"collapse show\" aria-labelledby=\"headingOne\" data-parent=\"#headingOne\">\n                            <div className=\"card-body\">\n                                <h3>Version 1.4.4 </h3>\n                                <h3>What is ISI Anywhere?</h3>\n                                <p>ISI Anywhere's is a one stop application to view pending notifications/approvals all in one application. </p>\n                                <hr></hr>\n                                <h3>Current Integrations:</h3>\n                                <ul>\n                                    <li>Agile</li>\n                                    <li>ISU</li>\n                                    <li>SAP Quality Notificaitons</li>\n                                    <li>Coupa</li>\n                                    <li>HelpNow</li>\n                                    <li>SAM</li>\n                                    <li>TrackWise</li>\n                                    <li>Ivalua</li>\n                                    <li>RCE</li>\n                                    <li>Concur</li>\n                                    <li>Neptune MT (does not include Material Handler approvals)</li>\n                                    <li>IT TimeSheet</li>\n                                    <li>Fieldglass</li>\n                                    <li>SmartRecruiters</li>\n                                    <li>Neptune PS</li>\n                                    <li>My HCM</li>\n                                    <li>MES</li>\n                                    <li>Adobe Sign</li>\n                                </ul>\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"card\">\n                        <div className=\"card-header collapsed\" id=\"headingTwo\" data-toggle=\"collapse\" data-target=\"#collapseTwo\" aria-expanded=\"false\" aria-controls=\"collapseTwo\">\n                            <div className=\"span-icon\" style={{ \"color\": \"#1C23BA\" }}>\n                                <div className=\"flaticon-chat-1\"></div>\n                            </div>\n                            <div className=\"span-title\" style={{ \"color\": \"#1C23BA\" }}>\n                                FAQ\n                            </div>\n                            <div className=\"span-mode\"></div>\n                        </div>\n                        <div id=\"collapseTwo\" className=\"collapse\" aria-labelledby=\"headingTwo\" data-parent=\"#headingTwo\">\n                            <div className=\"card-body\">\n                                <h3>How often does data refresh?</h3>\n                                <p>Automatic refresh occurs every 4 hours. You can also manually refresh by clicking the \"refresh\" button in the options menu.</p>\n                                <hr></hr>\n                                <h3>Can I approve from the application? </h3>\n                                <p>Currently you can approve RCE's from the website.</p>\n                                <hr></hr>\n                                <h3>How does ISU filtering work?</h3>\n                                <p>ISU is different because it counts down to a due date instead of aging like other applications. ISU filtering is as follows:</p>\n                                <ul>\n                                    <li>Approvals -> Assignments</li>\n                                    <li>0-3 days -> 11-30 days left</li>\n                                    <li>4-7 days -> 7-10 days left</li>\n                                    <li>7+ days -> 6 or less days left</li>\n                                </ul>\n                                <hr></hr>\n                                <h3>Other than seeing counts of data what else can I do?</h3>\n                                <p>You can quickly access a specific application's website by clicking on a task. Task will dissapear but will update once refreshed.</p>\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"card\">\n                        <div className=\"card-header collapsed\" id=\"headingThree\" data-toggle=\"collapse\" data-target=\"#collapseThree\" aria-expanded=\"false\" aria-controls=\"collapseThree\">\n                            <div className=\"span-icon\" style={{ \"color\": \"#1C23BA\" }}>\n                                <div className=\"flaticon-chat-1\"></div>\n                            </div>\n                            <div className=\"span-title\" style={{ \"color\": \"#1C23BA\" }}>\n                                Contact Us\n                            </div>\n                            <div className=\"span-mode\"></div>\n                        </div>\n                        <div id=\"collapseThree\" className=\"collapse\" aria-labelledby=\"headingThree\" data-parent=\"#headingThree\">\n                            <div className=\"card-body\">\n                                <h3>Create an IT HelpNow ticket with Intuitive Anywhere Web as the subject</h3>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default About;","import React from 'react';\nimport { compose } from 'redux';\nimport { withOktaAuth } from '@okta/okta-react';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport MediaQuery from 'react-responsive';\nimport { checkAnalyticsAccess } from '../../actions';\n//import HeaderFilterBs from './HeaderFilterBs';\n\n\n\nclass AnaltyicsHeader extends React.Component {\n\n    checkUserAccess = async () => {\n\n        if (this.props.authState.isAuthenticated) {\n            let authObj = {};\n            const userInfo = await this.props.oktaAuth.getUser();\n            authObj.curUserInfo = userInfo;\n            authObj.token = this.props.authState.accessToken;\n            //Action to check if user has analytics access\n            await this.props.checkAnalyticsAccess(authObj.token);\n\n        }\n    }\n\n    componentDidMount() {\n        if (Object.keys(this.props.user).length === 0) {\n            this.checkUserAccess();\n        }\n    }\n\n    render() {\n        let updatedTime = new Date();\n        updatedTime = updatedTime.toString();\n        // eslint-disable-next-line\n        updatedTime = updatedTime.replace(/GMT.*/g, \"\");\n\n        //edge case if undefined\n        if (this.props.hasAnalyticsAccess === undefined) {\n            console.log(\"Loading!!!\")\n            return null;\n        }\n        //if user doesn't have access redirect them\n        else if (this.props.hasAnalyticsAccess === false) {\n            console.log(\"DON'T ALLOW USER TO VIEW ANALYTICS\");\n            this.props.history.push('/');\n        } else {\n            console.log(\"User has permission to view analytics\");\n        }\n\n        return (\n            <div className=\"main-header\" style={{ fontFamily: \"interBoldUI\" }}>\n                {/* <!-- Logo Header --> */}\n                <div className=\"logo-header\" data-background-color=\"white\" >\n                    <a href=\"/\" className=\"logo\" id='logoHeader'>\n                        <img src=\"../../../assets/img/intuitive_logo_black.png\" alt=\"navbar brand\" className=\"navbar-brand\"></img>\n                    </a>\n                </div>\n                <nav className=\"navbar navbar-header navbar-expand-lg\" data-background-color=\"white\">\n                    <div className='container-fluid'>\n                        <h2 className=\"text-black pb-2 fw-bold\" id='appName'>Analytics</h2>\n                        <ul class=\"navbar-nav topbar-nav ml-md-auto align-items-center\">\n                            <li class=\"nav-item dropdown hidden-caret\">\n                                {/* <a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"notifDropdown\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                                    <small className=\"text-muted\" id=\"updateTimeText\" >Updated: Fri Dec 15 2023</small>\n                                </a> */}\n                                <small className=\"text-muted\" id=\"updateTimeText\" >Updated: {updatedTime}</small>\n                            </li>\n                            <li class=\"nav-item dropdown hidden-caret submenu show\">\n                                <a class=\"dropdown-toggle profile-pic\" id=\"dropdownMenuButton\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                                    <div class=\"avatar-sm\">\n                                        <img src=\"/assets/img/profile_placeholder.png\" alt=\"...\" class=\"avatar-img rounded-circle\"></img>\n                                    </div>\n                                </a>\n                                <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton\">\n                                    <a class=\"dropdown-item\" href=\"/\">Home</a>\n                                </div>\n                            </li>\n                        </ul>\n                    </div>\n                </nav>\n            </div>\n        )\n    }\n};\n\nconst mapStateToProps = (state) => {\n    return { hasAnalyticsAccess: state.analyticsAccess, user: state.user };\n}\n\nexport default compose(withRouter, withOktaAuth, connect(mapStateToProps, { checkAnalyticsAccess }))(AnaltyicsHeader);","//Action Creators for Analyitcs Site\nimport axios from 'axios';\nimport baseApi from '../apis/approvalsApi';\n\n\n\n\n//initial function to get data\nexport const fetchClicksGraphData = (userToken) => async dispatch => {\n    //start loading spinner\n    dispatch({ type: 'CLICKS_GRAPH_IS_LOADING' });\n\n\n    //create this array for last 12 months['January', 'February',\n    const last12MonthsLabels = await getLast12MonthsLabels();\n    console.log('TEST months:', last12MonthsLabels);\n    const allDayLabels = await getDaysInMonth();\n    console.log('TEST Days Array:', allDayLabels);\n    const finalCounts = await getYearMonthCounts(userToken);\n    console.log(\"FINAL Data Counts !!!!!!!\", getYearMonthCounts);\n\n    //get all data & store in state\n    // yearCountFinal: result,\n    //     dailyCountFinal: dailyCounts\n    let yearObj = {\n        curCounts: finalCounts.yearCountFinal,\n        yearCounts: finalCounts.yearCountFinal,\n        dailyCounts: finalCounts.dailyCountFinal,\n        curLabels: last12MonthsLabels,\n        allYearLabels: last12MonthsLabels,\n        allDayLabels: allDayLabels,\n        curType: \"year\",\n        graphName: \"Year\",\n        graphTitle: \"clicksBar\"\n    }\n\n    dispatch({ type: 'CLICKS_GRAPH_IS_READY' });\n    dispatch({ type: 'FETCH_CLICKS_YEAR_DATA', payload: yearObj });\n};\n\n\n//HELPER FUNCTIONS BEGIN\n//get Day Labels [\"Sun-1\", \"Mon-2\", \"Tue-3\",...]\nasync function getDaysInMonth() {\n\n    const allMonthsArray = [];\n\n    for (let i = 11; i >= 0; i--) { // Iterate in reverse order\n        const currentDate = new Date();\n        const currentYear = currentDate.getFullYear();\n        const currentMonth = currentDate.getMonth() - i;\n\n        const firstDayOfMonth = new Date(currentYear, currentMonth, 1);\n        const lastDayOfMonth = new Date(currentYear, currentMonth + 1, 0);\n\n        const daysArray = [];\n\n        if (i === 0) {\n            const yesterday = currentDate.getDate() - 1;\n\n            for (let j = 1; j <= yesterday; j++) {\n                const dayOfWeek = new Date(currentYear, currentMonth, j).toLocaleDateString('en-US', { weekday: 'short' });\n                const dayIndex = `${dayOfWeek}-${j}`;\n                daysArray.push(dayIndex);\n            }\n        } else {\n            for (let j = 1; j <= lastDayOfMonth.getDate(); j++) {\n                const dayOfWeek = new Date(currentYear, currentMonth, j).toLocaleDateString('en-US', { weekday: 'short' });\n                const dayIndex = `${dayOfWeek}-${j}`;\n                daysArray.push(dayIndex);\n            }\n        }\n\n        allMonthsArray.push(daysArray);\n    }\n    console.log(\"MONTHS TEST\", allMonthsArray);\n    return allMonthsArray;\n\n}\n\n//create  array for last 12 months['January', 'February'...]\nasync function getLast12MonthsLabels() {\n    const last12MonthsLabels = [];\n    for (let i = 11; i >= 0; i--) {\n        const date = new Date();\n        date.setMonth(date.getMonth() - i);\n        const monthName = date.toLocaleString('default', { month: 'long' });\n        last12MonthsLabels.push(monthName);\n    }\n    return last12MonthsLabels;\n}\n\nconst getDataCall = async (fromDate, toDate, curToken) => {\n    try {\n\n        // Define the base URL and endpoint\n        //const baseUrl = ;\n        // const baseUrlHardCoded = 'https://anywhere.intuitive.com/api/analytics/count';\n\n        const baseUrl = process.env.REACT_APP_BASE_URL + \"/analytics/count\";\n\n        // Define headers\n        const headers = {\n            'Authorization': 'Bearer ' + curToken.accessToken,\n        };\n\n        // Define query parameters\n        const params = {\n            analyticsType: 'AppClickCount',\n            platform: 'desktop',\n            startDate: fromDate,\n            endDate: toDate\n        };\n\n        // Make GET request \n        const response = await axios.get(baseUrl, {\n            headers: headers,\n            params: params\n        });\n\n        console.log(\"All Click Counts:\", response.data);\n        return response.data;\n        //dispatch({ type: 'ANALYTICS_ACCESS', payload: dataObj.analyticsAccess });\n    } catch (error) {\n        // Handle any errors\n        console.log(\"Error getting Click Counts from API:\");\n        return [];\n    }\n}\n\nconst createYearClickCountsArray = async (data, fromDate, toDate) => {\n    let yearArray = Array(12).fill(0);\n    console.log(\"DATA BEFORE:\", data);\n\n\n    //Create array  of Date and Count for the whole time range, including days  with 0's\n    const startDate = new Date(fromDate);\n    const endDate = new Date(toDate);\n\n    const currentDate = new Date(startDate);\n    const newData = [];\n\n    while (currentDate <= endDate) {\n        const currentDay = currentDate.toISOString().slice(0, 10);\n        const existingData = data.find(item => item.day === currentDay);\n\n        if (existingData) {\n            newData.push(existingData);\n        } else {\n            newData.push({ day: currentDay, count: 0 });\n        }\n\n        currentDate.setDate(currentDate.getDate() + 1);\n    }\n\n    console.log(\"TEST DATE ARRAY\", newData);\n\n    //create the month count array with month totals \n    const monthlyCounts = {};\n\n    newData.forEach(item => {\n        const month = item.day.slice(0, 7);\n        if (monthlyCounts[month]) {\n            monthlyCounts[month] += item.count;\n        } else {\n            monthlyCounts[month] = item.count;\n        }\n    });\n\n    const result = Object.values(monthlyCounts);\n\n    console.log(\"YEAR ARRAY FINAL\", result);\n\n    const oneYearBack = newData[0].day.substring(0, 4);\n    console.log(\"YEAR TEST\", oneYearBack); // Output: \"2023\"\n\n    //create months array\n    const dailyCounts = newData.reduce((acc, { day, count }) => {\n        const [year, month] = day.split('-');\n        const index = (parseInt(year) - oneYearBack) * 12 + (parseInt(month) - 1); // calculate the index based on year and month\n        acc[index] = acc[index] || []; // initialize inner array if not exists\n        acc[index].push(count); // add count to inner array\n        return acc;\n    }, []);\n\n    let dailyCountsWithoutEmptyArrays = dailyCounts.filter(arr => arr.length > 0);\n    //dailyCounts.shift(); //remove unneccesary month added\n\n    console.log(\"FINAL Daily COUNTS Clicks: \", dailyCountsWithoutEmptyArrays);\n    const finalCounts = {\n        yearCountFinal: result,\n        dailyCountFinal: dailyCountsWithoutEmptyArrays\n    }\n\n    return finalCounts;\n}\n\n\nconst getYearMonthCounts = async (userToken) => {\n    //const last12Months = [];\n\n    //get first Date of 12 months back and yesterdays date in YYYY-MM-DD format\n    const today = new Date();\n    const elevenMonthsAgo = new Date(today.getFullYear(), today.getMonth() - 11, 1);\n    const yesterday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 1);\n\n    const elevenMonthsAgoFormatted = `${elevenMonthsAgo.getFullYear()}-${(elevenMonthsAgo.getMonth() + 1).toString().padStart(2, '0')}-01`;\n    const yesterdayFormatted = `${yesterday.getFullYear()}-${(yesterday.getMonth() + 1).toString().padStart(2, '0')}-${yesterday.getDate().toString().padStart(2, '0')}`;\n\n    console.log(\"TEST First 12 months and yesterday: \", elevenMonthsAgoFormatted, yesterdayFormatted);\n\n\n    //make API call to get data for the whole year \n    let allData = await getDataCall(elevenMonthsAgoFormatted, yesterdayFormatted, userToken);\n\n    //find SUM of all counts for the month\n    let monthAndDayCounts = await createYearClickCountsArray(allData, elevenMonthsAgoFormatted, yesterdayFormatted);\n\n\n    //find SUM of each day in the month\n    // let dayData = await createMonthClickArray(allData, elevenMonthsAgoFormatted, yesterdayFormatted);\n\n    return monthAndDayCounts;\n}\n\n//HELPER FUNCTIONS END\n\n\n\nexport const fetchMonthGraphData = (monthIndex, graphTitle, curDataType, curCounts, yearCounts, allMonthCounts, curLabels, yearLabels, dayLabels) => async dispatch => {\n\n\n\n    let dataObj = {};\n\n    if (curDataType === 'year') {\n        //change to month\n        // curCounts: finalCounts.yearCountFinal,\n        // yearCounts: finalCounts.yearCountFinal,\n        // dailyCounts: finalCounts.dailyCountFinal,\n        dataObj.curCounts = curCounts;\n        dataObj.yearCounts = yearCounts;\n        dataObj.dailyCounts = allMonthCounts;\n        dataObj.curLabels = curLabels;\n        dataObj.allYearLabels = yearLabels;\n        dataObj.allDayLabels = dayLabels;\n        dataObj.curType = \"month\";\n        dataObj.graphName = yearLabels[monthIndex];\n        dataObj.graphTitle = graphTitle\n    }\n    else {\n        //change to year\n        dataObj.curCounts = curCounts;\n        dataObj.yearCounts = yearCounts;\n        dataObj.dailyCounts = allMonthCounts;\n        dataObj.curLabels = curLabels;\n        dataObj.allYearLabels = yearLabels;\n        dataObj.allDayLabels = dayLabels;\n        dataObj.curType = \"year\";\n        dataObj.graphName = \"Year\";\n        dataObj.graphTitle = graphTitle;\n    }\n\n    dispatch({ type: 'FETCH_CLICKS_MONTH_DATA', payload: dataObj });\n\n};","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n  let id = 0;\n  return function() {\n    return id++;\n  };\n}());\nfunction isNullOrUndef(value) {\n  return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n  if (Array.isArray && Array.isArray(value)) {\n    return true;\n  }\n  const type = Object.prototype.toString.call(value);\n  if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n    return true;\n  }\n  return false;\n}\nfunction isObject(value) {\n  return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n  return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n  return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100\n    : value / dimension;\nconst toDimension = (value, dimension) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100 * dimension\n    : +value;\nfunction callback(fn, args, thisArg) {\n  if (fn && typeof fn.call === 'function') {\n    return fn.apply(thisArg, args);\n  }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n  let i, len, keys;\n  if (isArray(loopable)) {\n    len = loopable.length;\n    if (reverse) {\n      for (i = len - 1; i >= 0; i--) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    } else {\n      for (i = 0; i < len; i++) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    }\n  } else if (isObject(loopable)) {\n    keys = Object.keys(loopable);\n    len = keys.length;\n    for (i = 0; i < len; i++) {\n      fn.call(thisArg, loopable[keys[i]], keys[i]);\n    }\n  }\n}\nfunction _elementsEqual(a0, a1) {\n  let i, ilen, v0, v1;\n  if (!a0 || !a1 || a0.length !== a1.length) {\n    return false;\n  }\n  for (i = 0, ilen = a0.length; i < ilen; ++i) {\n    v0 = a0[i];\n    v1 = a1[i];\n    if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction clone$1(source) {\n  if (isArray(source)) {\n    return source.map(clone$1);\n  }\n  if (isObject(source)) {\n    const target = Object.create(null);\n    const keys = Object.keys(source);\n    const klen = keys.length;\n    let k = 0;\n    for (; k < klen; ++k) {\n      target[keys[k]] = clone$1(source[keys[k]]);\n    }\n    return target;\n  }\n  return source;\n}\nfunction isValidKey(key) {\n  return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n  if (!isValidKey(key)) {\n    return;\n  }\n  const tval = target[key];\n  const sval = source[key];\n  if (isObject(tval) && isObject(sval)) {\n    merge(tval, sval, options);\n  } else {\n    target[key] = clone$1(sval);\n  }\n}\nfunction merge(target, source, options) {\n  const sources = isArray(source) ? source : [source];\n  const ilen = sources.length;\n  if (!isObject(target)) {\n    return target;\n  }\n  options = options || {};\n  const merger = options.merger || _merger;\n  for (let i = 0; i < ilen; ++i) {\n    source = sources[i];\n    if (!isObject(source)) {\n      continue;\n    }\n    const keys = Object.keys(source);\n    for (let k = 0, klen = keys.length; k < klen; ++k) {\n      merger(keys[k], target, source, options);\n    }\n  }\n  return target;\n}\nfunction mergeIf(target, source) {\n  return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n  if (!isValidKey(key)) {\n    return;\n  }\n  const tval = target[key];\n  const sval = source[key];\n  if (isObject(tval) && isObject(sval)) {\n    mergeIf(tval, sval);\n  } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n    target[key] = clone$1(sval);\n  }\n}\nfunction _deprecated(scope, value, previous, current) {\n  if (value !== undefined) {\n    console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n  }\n}\nconst keyResolvers = {\n  '': v => v,\n  x: o => o.x,\n  y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n  const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n  return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n  const keys = _splitKey(key);\n  return obj => {\n    for (const k of keys) {\n      if (k === '') {\n        break;\n      }\n      obj = obj && obj[k];\n    }\n    return obj;\n  };\n}\nfunction _splitKey(key) {\n  const parts = key.split('.');\n  const keys = [];\n  let tmp = '';\n  for (const part of parts) {\n    tmp += part;\n    if (tmp.endsWith('\\\\')) {\n      tmp = tmp.slice(0, -1) + '.';\n    } else {\n      keys.push(tmp);\n      tmp = '';\n    }\n  }\n  return keys;\n}\nfunction _capitalize(str) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const item of a) {\n    if (!b.has(item)) {\n      return false;\n    }\n  }\n  return true;\n};\nfunction _isClickEvent(e) {\n  return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n  const roundedRange = Math.round(range);\n  range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n  const niceRange = Math.pow(10, Math.floor(log10(range)));\n  const fraction = range / niceRange;\n  const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n  return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n  const result = [];\n  const sqrt = Math.sqrt(value);\n  let i;\n  for (i = 1; i < sqrt; i++) {\n    if (value % i === 0) {\n      result.push(i);\n      result.push(value / i);\n    }\n  }\n  if (sqrt === (sqrt | 0)) {\n    result.push(sqrt);\n  }\n  result.sort((a, b) => a - b).pop();\n  return result;\n}\nfunction isNumber(n) {\n  return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n  return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n  const rounded = Math.round(x);\n  return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n  let i, ilen, value;\n  for (i = 0, ilen = array.length; i < ilen; i++) {\n    value = array[i][property];\n    if (!isNaN(value)) {\n      target.min = Math.min(target.min, value);\n      target.max = Math.max(target.max, value);\n    }\n  }\n}\nfunction toRadians(degrees) {\n  return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n  return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n  if (!isNumberFinite(x)) {\n    return;\n  }\n  let e = 1;\n  let p = 0;\n  while (Math.round(x * e) / e !== x) {\n    e *= 10;\n    p++;\n  }\n  return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n  const distanceFromXCenter = anglePoint.x - centrePoint.x;\n  const distanceFromYCenter = anglePoint.y - centrePoint.y;\n  const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n  let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n  if (angle < (-0.5 * PI)) {\n    angle += TAU;\n  }\n  return {\n    angle,\n    distance: radialDistanceFromCenter\n  };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n  return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n  return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n  return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n  const a = _normalizeAngle(angle);\n  const s = _normalizeAngle(start);\n  const e = _normalizeAngle(end);\n  const angleToStart = _normalizeAngle(s - a);\n  const angleToEnd = _normalizeAngle(e - a);\n  const startToAngle = _normalizeAngle(a - s);\n  const endToAngle = _normalizeAngle(a - e);\n  return a === s || a === e || (sameAngleIsFullCircle && s === e)\n    || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n  return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n  return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n  return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n  cmp = cmp || ((index) => table[index] < value);\n  let hi = table.length - 1;\n  let lo = 0;\n  let mid;\n  while (hi - lo > 1) {\n    mid = (lo + hi) >> 1;\n    if (cmp(mid)) {\n      lo = mid;\n    } else {\n      hi = mid;\n    }\n  }\n  return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n  _lookup(table, value, last\n    ? index => table[index][key] <= value\n    : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n  _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n  let start = 0;\n  let end = values.length;\n  while (start < end && values[start] < min) {\n    start++;\n  }\n  while (end > start && values[end - 1] > max) {\n    end--;\n  }\n  return start > 0 || end < values.length\n    ? values.slice(start, end)\n    : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n  if (array._chartjs) {\n    array._chartjs.listeners.push(listener);\n    return;\n  }\n  Object.defineProperty(array, '_chartjs', {\n    configurable: true,\n    enumerable: false,\n    value: {\n      listeners: [listener]\n    }\n  });\n  arrayEvents.forEach((key) => {\n    const method = '_onData' + _capitalize(key);\n    const base = array[key];\n    Object.defineProperty(array, key, {\n      configurable: true,\n      enumerable: false,\n      value(...args) {\n        const res = base.apply(this, args);\n        array._chartjs.listeners.forEach((object) => {\n          if (typeof object[method] === 'function') {\n            object[method](...args);\n          }\n        });\n        return res;\n      }\n    });\n  });\n}\nfunction unlistenArrayEvents(array, listener) {\n  const stub = array._chartjs;\n  if (!stub) {\n    return;\n  }\n  const listeners = stub.listeners;\n  const index = listeners.indexOf(listener);\n  if (index !== -1) {\n    listeners.splice(index, 1);\n  }\n  if (listeners.length > 0) {\n    return;\n  }\n  arrayEvents.forEach((key) => {\n    delete array[key];\n  });\n  delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n  const set = new Set();\n  let i, ilen;\n  for (i = 0, ilen = items.length; i < ilen; ++i) {\n    set.add(items[i]);\n  }\n  if (set.size === ilen) {\n    return items;\n  }\n  return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n  return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n  if (typeof window === 'undefined') {\n    return function(callback) {\n      return callback();\n    };\n  }\n  return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n  const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n  let ticking = false;\n  let args = [];\n  return function(...rest) {\n    args = updateArgs(rest);\n    if (!ticking) {\n      ticking = true;\n      requestAnimFrame.call(window, () => {\n        ticking = false;\n        fn.apply(thisArg, args);\n      });\n    }\n  };\n}\nfunction debounce(fn, delay) {\n  let timeout;\n  return function(...args) {\n    if (delay) {\n      clearTimeout(timeout);\n      timeout = setTimeout(fn, delay, args);\n    } else {\n      fn.apply(this, args);\n    }\n    return delay;\n  };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n  const check = rtl ? 'left' : 'right';\n  return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n  const pointCount = points.length;\n  let start = 0;\n  let count = pointCount;\n  if (meta._sorted) {\n    const {iScale, _parsed} = meta;\n    const axis = iScale.axis;\n    const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n    if (minDefined) {\n      start = _limitValue(Math.min(\n        _lookupByKey(_parsed, iScale.axis, min).lo,\n        animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n      0, pointCount - 1);\n    }\n    if (maxDefined) {\n      count = _limitValue(Math.max(\n        _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n        animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n      start, pointCount) - start;\n    } else {\n      count = pointCount - start;\n    }\n  }\n  return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n  const {xScale, yScale, _scaleRanges} = meta;\n  const newRanges = {\n    xmin: xScale.min,\n    xmax: xScale.max,\n    ymin: yScale.min,\n    ymax: yScale.max\n  };\n  if (!_scaleRanges) {\n    meta._scaleRanges = newRanges;\n    return true;\n  }\n  const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n  Object.assign(_scaleRanges, newRanges);\n  return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n  linear: t => t,\n  easeInQuad: t => t * t,\n  easeOutQuad: t => -t * (t - 2),\n  easeInOutQuad: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t\n    : -0.5 * ((--t) * (t - 2) - 1),\n  easeInCubic: t => t * t * t,\n  easeOutCubic: t => (t -= 1) * t * t + 1,\n  easeInOutCubic: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t\n    : 0.5 * ((t -= 2) * t * t + 2),\n  easeInQuart: t => t * t * t * t,\n  easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n  easeInOutQuart: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t\n    : -0.5 * ((t -= 2) * t * t * t - 2),\n  easeInQuint: t => t * t * t * t * t,\n  easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n  easeInOutQuint: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t * t\n    : 0.5 * ((t -= 2) * t * t * t * t + 2),\n  easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n  easeOutSine: t => Math.sin(t * HALF_PI),\n  easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n  easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n  easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n  easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n    ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n    : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n  easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n  easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n  easeInOutCirc: t => ((t /= 0.5) < 1)\n    ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n    : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n  easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n  easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n  easeInOutElastic(t) {\n    const s = 0.1125;\n    const p = 0.45;\n    return atEdge(t) ? t :\n      t < 0.5\n        ? 0.5 * elasticIn(t * 2, s, p)\n        : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n  },\n  easeInBack(t) {\n    const s = 1.70158;\n    return t * t * ((s + 1) * t - s);\n  },\n  easeOutBack(t) {\n    const s = 1.70158;\n    return (t -= 1) * t * ((s + 1) * t + s) + 1;\n  },\n  easeInOutBack(t) {\n    let s = 1.70158;\n    if ((t /= 0.5) < 1) {\n      return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n    }\n    return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n  },\n  easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n  easeOutBounce(t) {\n    const m = 7.5625;\n    const d = 2.75;\n    if (t < (1 / d)) {\n      return m * t * t;\n    }\n    if (t < (2 / d)) {\n      return m * (t -= (1.5 / d)) * t + 0.75;\n    }\n    if (t < (2.5 / d)) {\n      return m * (t -= (2.25 / d)) * t + 0.9375;\n    }\n    return m * (t -= (2.625 / d)) * t + 0.984375;\n  },\n  easeInOutBounce: t => (t < 0.5)\n    ? effects.easeInBounce(t * 2) * 0.5\n    : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n  return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n  return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n  return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n  return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n  return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n  var len = str.length;\n  var ret;\n  if (str[0] === '#') {\n    if (len === 4 || len === 5) {\n      ret = {\n        r: 255 & map$1[str[1]] * 17,\n        g: 255 & map$1[str[2]] * 17,\n        b: 255 & map$1[str[3]] * 17,\n        a: len === 5 ? map$1[str[4]] * 17 : 255\n      };\n    } else if (len === 7 || len === 9) {\n      ret = {\n        r: map$1[str[1]] << 4 | map$1[str[2]],\n        g: map$1[str[3]] << 4 | map$1[str[4]],\n        b: map$1[str[5]] << 4 | map$1[str[6]],\n        a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n      };\n    }\n  }\n  return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n  var f = isShort(v) ? h1 : h2;\n  return v\n    ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n    : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n  const a = s * Math.min(l, 1 - l);\n  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n  return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n  const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n  return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n  const rgb = hsl2rgbn(h, 1, 0.5);\n  let i;\n  if (w + b > 1) {\n    i = 1 / (w + b);\n    w *= i;\n    b *= i;\n  }\n  for (i = 0; i < 3; i++) {\n    rgb[i] *= 1 - w - b;\n    rgb[i] += w;\n  }\n  return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n  if (r === max) {\n    return ((g - b) / d) + (g < b ? 6 : 0);\n  }\n  if (g === max) {\n    return (b - r) / d + 2;\n  }\n  return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n  const range = 255;\n  const r = v.r / range;\n  const g = v.g / range;\n  const b = v.b / range;\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const l = (max + min) / 2;\n  let h, s, d;\n  if (max !== min) {\n    d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    h = hueValue(r, g, b, d, max);\n    h = h * 60 + 0.5;\n  }\n  return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n  return (\n    Array.isArray(a)\n      ? f(a[0], a[1], a[2])\n      : f(a, b, c)\n  ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n  return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n  return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n  return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n  return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n  const m = HUE_RE.exec(str);\n  let a = 255;\n  let v;\n  if (!m) {\n    return;\n  }\n  if (m[5] !== v) {\n    a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n  }\n  const h = hue(+m[2]);\n  const p1 = +m[3] / 100;\n  const p2 = +m[4] / 100;\n  if (m[1] === 'hwb') {\n    v = hwb2rgb(h, p1, p2);\n  } else if (m[1] === 'hsv') {\n    v = hsv2rgb(h, p1, p2);\n  } else {\n    v = hsl2rgb(h, p1, p2);\n  }\n  return {\n    r: v[0],\n    g: v[1],\n    b: v[2],\n    a: a\n  };\n}\nfunction rotate(v, deg) {\n  var h = rgb2hsl(v);\n  h[0] = hue(h[0] + deg);\n  h = hsl2rgb(h);\n  v.r = h[0];\n  v.g = h[1];\n  v.b = h[2];\n}\nfunction hslString(v) {\n  if (!v) {\n    return;\n  }\n  const a = rgb2hsl(v);\n  const h = a[0];\n  const s = n2p(a[1]);\n  const l = n2p(a[2]);\n  return v.a < 255\n    ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n    : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n  x: 'dark',\n  Z: 'light',\n  Y: 're',\n  X: 'blu',\n  W: 'gr',\n  V: 'medium',\n  U: 'slate',\n  A: 'ee',\n  T: 'ol',\n  S: 'or',\n  B: 'ra',\n  C: 'lateg',\n  D: 'ights',\n  R: 'in',\n  Q: 'turquois',\n  E: 'hi',\n  P: 'ro',\n  O: 'al',\n  N: 'le',\n  M: 'de',\n  L: 'yello',\n  F: 'en',\n  K: 'ch',\n  G: 'arks',\n  H: 'ea',\n  I: 'ightg',\n  J: 'wh'\n};\nconst names$1 = {\n  OiceXe: 'f0f8ff',\n  antiquewEte: 'faebd7',\n  aqua: 'ffff',\n  aquamarRe: '7fffd4',\n  azuY: 'f0ffff',\n  beige: 'f5f5dc',\n  bisque: 'ffe4c4',\n  black: '0',\n  blanKedOmond: 'ffebcd',\n  Xe: 'ff',\n  XeviTet: '8a2be2',\n  bPwn: 'a52a2a',\n  burlywood: 'deb887',\n  caMtXe: '5f9ea0',\n  KartYuse: '7fff00',\n  KocTate: 'd2691e',\n  cSO: 'ff7f50',\n  cSnflowerXe: '6495ed',\n  cSnsilk: 'fff8dc',\n  crimson: 'dc143c',\n  cyan: 'ffff',\n  xXe: '8b',\n  xcyan: '8b8b',\n  xgTMnPd: 'b8860b',\n  xWay: 'a9a9a9',\n  xgYF: '6400',\n  xgYy: 'a9a9a9',\n  xkhaki: 'bdb76b',\n  xmagFta: '8b008b',\n  xTivegYF: '556b2f',\n  xSange: 'ff8c00',\n  xScEd: '9932cc',\n  xYd: '8b0000',\n  xsOmon: 'e9967a',\n  xsHgYF: '8fbc8f',\n  xUXe: '483d8b',\n  xUWay: '2f4f4f',\n  xUgYy: '2f4f4f',\n  xQe: 'ced1',\n  xviTet: '9400d3',\n  dAppRk: 'ff1493',\n  dApskyXe: 'bfff',\n  dimWay: '696969',\n  dimgYy: '696969',\n  dodgerXe: '1e90ff',\n  fiYbrick: 'b22222',\n  flSOwEte: 'fffaf0',\n  foYstWAn: '228b22',\n  fuKsia: 'ff00ff',\n  gaRsbSo: 'dcdcdc',\n  ghostwEte: 'f8f8ff',\n  gTd: 'ffd700',\n  gTMnPd: 'daa520',\n  Way: '808080',\n  gYF: '8000',\n  gYFLw: 'adff2f',\n  gYy: '808080',\n  honeyMw: 'f0fff0',\n  hotpRk: 'ff69b4',\n  RdianYd: 'cd5c5c',\n  Rdigo: '4b0082',\n  ivSy: 'fffff0',\n  khaki: 'f0e68c',\n  lavFMr: 'e6e6fa',\n  lavFMrXsh: 'fff0f5',\n  lawngYF: '7cfc00',\n  NmoncEffon: 'fffacd',\n  ZXe: 'add8e6',\n  ZcSO: 'f08080',\n  Zcyan: 'e0ffff',\n  ZgTMnPdLw: 'fafad2',\n  ZWay: 'd3d3d3',\n  ZgYF: '90ee90',\n  ZgYy: 'd3d3d3',\n  ZpRk: 'ffb6c1',\n  ZsOmon: 'ffa07a',\n  ZsHgYF: '20b2aa',\n  ZskyXe: '87cefa',\n  ZUWay: '778899',\n  ZUgYy: '778899',\n  ZstAlXe: 'b0c4de',\n  ZLw: 'ffffe0',\n  lime: 'ff00',\n  limegYF: '32cd32',\n  lRF: 'faf0e6',\n  magFta: 'ff00ff',\n  maPon: '800000',\n  VaquamarRe: '66cdaa',\n  VXe: 'cd',\n  VScEd: 'ba55d3',\n  VpurpN: '9370db',\n  VsHgYF: '3cb371',\n  VUXe: '7b68ee',\n  VsprRggYF: 'fa9a',\n  VQe: '48d1cc',\n  VviTetYd: 'c71585',\n  midnightXe: '191970',\n  mRtcYam: 'f5fffa',\n  mistyPse: 'ffe4e1',\n  moccasR: 'ffe4b5',\n  navajowEte: 'ffdead',\n  navy: '80',\n  Tdlace: 'fdf5e6',\n  Tive: '808000',\n  TivedBb: '6b8e23',\n  Sange: 'ffa500',\n  SangeYd: 'ff4500',\n  ScEd: 'da70d6',\n  pOegTMnPd: 'eee8aa',\n  pOegYF: '98fb98',\n  pOeQe: 'afeeee',\n  pOeviTetYd: 'db7093',\n  papayawEp: 'ffefd5',\n  pHKpuff: 'ffdab9',\n  peru: 'cd853f',\n  pRk: 'ffc0cb',\n  plum: 'dda0dd',\n  powMrXe: 'b0e0e6',\n  purpN: '800080',\n  YbeccapurpN: '663399',\n  Yd: 'ff0000',\n  Psybrown: 'bc8f8f',\n  PyOXe: '4169e1',\n  saddNbPwn: '8b4513',\n  sOmon: 'fa8072',\n  sandybPwn: 'f4a460',\n  sHgYF: '2e8b57',\n  sHshell: 'fff5ee',\n  siFna: 'a0522d',\n  silver: 'c0c0c0',\n  skyXe: '87ceeb',\n  UXe: '6a5acd',\n  UWay: '708090',\n  UgYy: '708090',\n  snow: 'fffafa',\n  sprRggYF: 'ff7f',\n  stAlXe: '4682b4',\n  tan: 'd2b48c',\n  teO: '8080',\n  tEstN: 'd8bfd8',\n  tomato: 'ff6347',\n  Qe: '40e0d0',\n  viTet: 'ee82ee',\n  JHt: 'f5deb3',\n  wEte: 'ffffff',\n  wEtesmoke: 'f5f5f5',\n  Lw: 'ffff00',\n  LwgYF: '9acd32'\n};\nfunction unpack() {\n  const unpacked = {};\n  const keys = Object.keys(names$1);\n  const tkeys = Object.keys(map);\n  let i, j, k, ok, nk;\n  for (i = 0; i < keys.length; i++) {\n    ok = nk = keys[i];\n    for (j = 0; j < tkeys.length; j++) {\n      k = tkeys[j];\n      nk = nk.replace(k, map[k]);\n    }\n    k = parseInt(names$1[ok], 16);\n    unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n  }\n  return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n  if (!names) {\n    names = unpack();\n    names.transparent = [0, 0, 0, 0];\n  }\n  const a = names[str.toLowerCase()];\n  return a && {\n    r: a[0],\n    g: a[1],\n    b: a[2],\n    a: a.length === 4 ? a[3] : 255\n  };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n  const m = RGB_RE.exec(str);\n  let a = 255;\n  let r, g, b;\n  if (!m) {\n    return;\n  }\n  if (m[7] !== r) {\n    const v = +m[7];\n    a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n  }\n  r = +m[1];\n  g = +m[3];\n  b = +m[5];\n  r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n  g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n  b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n  return {\n    r: r,\n    g: g,\n    b: b,\n    a: a\n  };\n}\nfunction rgbString(v) {\n  return v && (\n    v.a < 255\n      ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n      : `rgb(${v.r}, ${v.g}, ${v.b})`\n  );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n  const r = from(b2n(rgb1.r));\n  const g = from(b2n(rgb1.g));\n  const b = from(b2n(rgb1.b));\n  return {\n    r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n    g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n    b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n    a: rgb1.a + t * (rgb2.a - rgb1.a)\n  };\n}\nfunction modHSL(v, i, ratio) {\n  if (v) {\n    let tmp = rgb2hsl(v);\n    tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n    tmp = hsl2rgb(tmp);\n    v.r = tmp[0];\n    v.g = tmp[1];\n    v.b = tmp[2];\n  }\n}\nfunction clone(v, proto) {\n  return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n  var v = {r: 0, g: 0, b: 0, a: 255};\n  if (Array.isArray(input)) {\n    if (input.length >= 3) {\n      v = {r: input[0], g: input[1], b: input[2], a: 255};\n      if (input.length > 3) {\n        v.a = n2b(input[3]);\n      }\n    }\n  } else {\n    v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n    v.a = n2b(v.a);\n  }\n  return v;\n}\nfunction functionParse(str) {\n  if (str.charAt(0) === 'r') {\n    return rgbParse(str);\n  }\n  return hueParse(str);\n}\nclass Color {\n  constructor(input) {\n    if (input instanceof Color) {\n      return input;\n    }\n    const type = typeof input;\n    let v;\n    if (type === 'object') {\n      v = fromObject(input);\n    } else if (type === 'string') {\n      v = hexParse(input) || nameParse(input) || functionParse(input);\n    }\n    this._rgb = v;\n    this._valid = !!v;\n  }\n  get valid() {\n    return this._valid;\n  }\n  get rgb() {\n    var v = clone(this._rgb);\n    if (v) {\n      v.a = b2n(v.a);\n    }\n    return v;\n  }\n  set rgb(obj) {\n    this._rgb = fromObject(obj);\n  }\n  rgbString() {\n    return this._valid ? rgbString(this._rgb) : undefined;\n  }\n  hexString() {\n    return this._valid ? hexString(this._rgb) : undefined;\n  }\n  hslString() {\n    return this._valid ? hslString(this._rgb) : undefined;\n  }\n  mix(color, weight) {\n    if (color) {\n      const c1 = this.rgb;\n      const c2 = color.rgb;\n      let w2;\n      const p = weight === w2 ? 0.5 : weight;\n      const w = 2 * p - 1;\n      const a = c1.a - c2.a;\n      const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n      w2 = 1 - w1;\n      c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n      c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n      c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n      c1.a = p * c1.a + (1 - p) * c2.a;\n      this.rgb = c1;\n    }\n    return this;\n  }\n  interpolate(color, t) {\n    if (color) {\n      this._rgb = interpolate(this._rgb, color._rgb, t);\n    }\n    return this;\n  }\n  clone() {\n    return new Color(this.rgb);\n  }\n  alpha(a) {\n    this._rgb.a = n2b(a);\n    return this;\n  }\n  clearer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 - ratio;\n    return this;\n  }\n  greyscale() {\n    const rgb = this._rgb;\n    const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n    rgb.r = rgb.g = rgb.b = val;\n    return this;\n  }\n  opaquer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 + ratio;\n    return this;\n  }\n  negate() {\n    const v = this._rgb;\n    v.r = 255 - v.r;\n    v.g = 255 - v.g;\n    v.b = 255 - v.b;\n    return this;\n  }\n  lighten(ratio) {\n    modHSL(this._rgb, 2, ratio);\n    return this;\n  }\n  darken(ratio) {\n    modHSL(this._rgb, 2, -ratio);\n    return this;\n  }\n  saturate(ratio) {\n    modHSL(this._rgb, 1, ratio);\n    return this;\n  }\n  desaturate(ratio) {\n    modHSL(this._rgb, 1, -ratio);\n    return this;\n  }\n  rotate(deg) {\n    rotate(this._rgb, deg);\n    return this;\n  }\n}\nfunction index_esm(input) {\n  return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n  if (value && typeof value === 'object') {\n    const type = value.toString();\n    return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n  }\n  return false;\n}\nfunction color(value) {\n  return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n  return isPatternOrGradient(value)\n    ? value\n    : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n  if (!key) {\n    return node;\n  }\n  const keys = key.split('.');\n  for (let i = 0, n = keys.length; i < n; ++i) {\n    const k = keys[i];\n    node = node[k] || (node[k] = Object.create(null));\n  }\n  return node;\n}\nfunction set(root, scope, values) {\n  if (typeof scope === 'string') {\n    return merge(getScope$1(root, scope), values);\n  }\n  return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n  constructor(_descriptors) {\n    this.animation = undefined;\n    this.backgroundColor = 'rgba(0,0,0,0.1)';\n    this.borderColor = 'rgba(0,0,0,0.1)';\n    this.color = '#666';\n    this.datasets = {};\n    this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n    this.elements = {};\n    this.events = [\n      'mousemove',\n      'mouseout',\n      'click',\n      'touchstart',\n      'touchmove'\n    ];\n    this.font = {\n      family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n      size: 12,\n      style: 'normal',\n      lineHeight: 1.2,\n      weight: null\n    };\n    this.hover = {};\n    this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n    this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n    this.hoverColor = (ctx, options) => getHoverColor(options.color);\n    this.indexAxis = 'x';\n    this.interaction = {\n      mode: 'nearest',\n      intersect: true,\n      includeInvisible: false\n    };\n    this.maintainAspectRatio = true;\n    this.onHover = null;\n    this.onClick = null;\n    this.parsing = true;\n    this.plugins = {};\n    this.responsive = true;\n    this.scale = undefined;\n    this.scales = {};\n    this.showLine = true;\n    this.drawActiveElementsOnTop = true;\n    this.describe(_descriptors);\n  }\n  set(scope, values) {\n    return set(this, scope, values);\n  }\n  get(scope) {\n    return getScope$1(this, scope);\n  }\n  describe(scope, values) {\n    return set(descriptors, scope, values);\n  }\n  override(scope, values) {\n    return set(overrides, scope, values);\n  }\n  route(scope, name, targetScope, targetName) {\n    const scopeObject = getScope$1(this, scope);\n    const targetScopeObject = getScope$1(this, targetScope);\n    const privateName = '_' + name;\n    Object.defineProperties(scopeObject, {\n      [privateName]: {\n        value: scopeObject[name],\n        writable: true\n      },\n      [name]: {\n        enumerable: true,\n        get() {\n          const local = this[privateName];\n          const target = targetScopeObject[targetName];\n          if (isObject(local)) {\n            return Object.assign({}, target, local);\n          }\n          return valueOrDefault(local, target);\n        },\n        set(value) {\n          this[privateName] = value;\n        }\n      }\n    });\n  }\n}\nvar defaults = new Defaults({\n  _scriptable: (name) => !name.startsWith('on'),\n  _indexable: (name) => name !== 'events',\n  hover: {\n    _fallback: 'interaction'\n  },\n  interaction: {\n    _scriptable: false,\n    _indexable: false,\n  }\n});\n\nfunction toFontString(font) {\n  if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n    return null;\n  }\n  return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n  let textWidth = data[string];\n  if (!textWidth) {\n    textWidth = data[string] = ctx.measureText(string).width;\n    gc.push(string);\n  }\n  if (textWidth > longest) {\n    longest = textWidth;\n  }\n  return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n  cache = cache || {};\n  let data = cache.data = cache.data || {};\n  let gc = cache.garbageCollect = cache.garbageCollect || [];\n  if (cache.font !== font) {\n    data = cache.data = {};\n    gc = cache.garbageCollect = [];\n    cache.font = font;\n  }\n  ctx.save();\n  ctx.font = font;\n  let longest = 0;\n  const ilen = arrayOfThings.length;\n  let i, j, jlen, thing, nestedThing;\n  for (i = 0; i < ilen; i++) {\n    thing = arrayOfThings[i];\n    if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n      longest = _measureText(ctx, data, gc, longest, thing);\n    } else if (isArray(thing)) {\n      for (j = 0, jlen = thing.length; j < jlen; j++) {\n        nestedThing = thing[j];\n        if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n          longest = _measureText(ctx, data, gc, longest, nestedThing);\n        }\n      }\n    }\n  }\n  ctx.restore();\n  const gcLen = gc.length / 2;\n  if (gcLen > arrayOfThings.length) {\n    for (i = 0; i < gcLen; i++) {\n      delete data[gc[i]];\n    }\n    gc.splice(0, gcLen);\n  }\n  return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n  const devicePixelRatio = chart.currentDevicePixelRatio;\n  const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n  return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n  ctx = ctx || canvas.getContext('2d');\n  ctx.save();\n  ctx.resetTransform();\n  ctx.clearRect(0, 0, canvas.width, canvas.height);\n  ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n  drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n  let type, xOffset, yOffset, size, cornerRadius, width;\n  const style = options.pointStyle;\n  const rotation = options.rotation;\n  const radius = options.radius;\n  let rad = (rotation || 0) * RAD_PER_DEG;\n  if (style && typeof style === 'object') {\n    type = style.toString();\n    if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.rotate(rad);\n      ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n      ctx.restore();\n      return;\n    }\n  }\n  if (isNaN(radius) || radius <= 0) {\n    return;\n  }\n  ctx.beginPath();\n  switch (style) {\n  default:\n    if (w) {\n      ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n    } else {\n      ctx.arc(x, y, radius, 0, TAU);\n    }\n    ctx.closePath();\n    break;\n  case 'triangle':\n    ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    rad += TWO_THIRDS_PI;\n    ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    rad += TWO_THIRDS_PI;\n    ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    ctx.closePath();\n    break;\n  case 'rectRounded':\n    cornerRadius = radius * 0.516;\n    size = radius - cornerRadius;\n    xOffset = Math.cos(rad + QUARTER_PI) * size;\n    yOffset = Math.sin(rad + QUARTER_PI) * size;\n    ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n    ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n    ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n    ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n    ctx.closePath();\n    break;\n  case 'rect':\n    if (!rotation) {\n      size = Math.SQRT1_2 * radius;\n      width = w ? w / 2 : size;\n      ctx.rect(x - width, y - size, 2 * width, 2 * size);\n      break;\n    }\n    rad += QUARTER_PI;\n  case 'rectRot':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    ctx.closePath();\n    break;\n  case 'crossRot':\n    rad += QUARTER_PI;\n  case 'cross':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    break;\n  case 'star':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    rad += QUARTER_PI;\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    break;\n  case 'line':\n    xOffset = w ? w / 2 : Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    break;\n  case 'dash':\n    ctx.moveTo(x, y);\n    ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n    break;\n  }\n  ctx.fill();\n  if (options.borderWidth > 0) {\n    ctx.stroke();\n  }\n}\nfunction _isPointInArea(point, area, margin) {\n  margin = margin || 0.5;\n  return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n  ctx.save();\n  ctx.beginPath();\n  ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n  ctx.clip();\n}\nfunction unclipArea(ctx) {\n  ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  if (mode === 'middle') {\n    const midpoint = (previous.x + target.x) / 2.0;\n    ctx.lineTo(midpoint, previous.y);\n    ctx.lineTo(midpoint, target.y);\n  } else if (mode === 'after' !== !!flip) {\n    ctx.lineTo(previous.x, target.y);\n  } else {\n    ctx.lineTo(target.x, previous.y);\n  }\n  ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  ctx.bezierCurveTo(\n    flip ? previous.cp1x : previous.cp2x,\n    flip ? previous.cp1y : previous.cp2y,\n    flip ? target.cp2x : target.cp1x,\n    flip ? target.cp2y : target.cp1y,\n    target.x,\n    target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n  const lines = isArray(text) ? text : [text];\n  const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n  let i, line;\n  ctx.save();\n  ctx.font = font.string;\n  setRenderOpts(ctx, opts);\n  for (i = 0; i < lines.length; ++i) {\n    line = lines[i];\n    if (stroke) {\n      if (opts.strokeColor) {\n        ctx.strokeStyle = opts.strokeColor;\n      }\n      if (!isNullOrUndef(opts.strokeWidth)) {\n        ctx.lineWidth = opts.strokeWidth;\n      }\n      ctx.strokeText(line, x, y, opts.maxWidth);\n    }\n    ctx.fillText(line, x, y, opts.maxWidth);\n    decorateText(ctx, x, y, line, opts);\n    y += font.lineHeight;\n  }\n  ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n  if (opts.translation) {\n    ctx.translate(opts.translation[0], opts.translation[1]);\n  }\n  if (!isNullOrUndef(opts.rotation)) {\n    ctx.rotate(opts.rotation);\n  }\n  if (opts.color) {\n    ctx.fillStyle = opts.color;\n  }\n  if (opts.textAlign) {\n    ctx.textAlign = opts.textAlign;\n  }\n  if (opts.textBaseline) {\n    ctx.textBaseline = opts.textBaseline;\n  }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n  if (opts.strikethrough || opts.underline) {\n    const metrics = ctx.measureText(line);\n    const left = x - metrics.actualBoundingBoxLeft;\n    const right = x + metrics.actualBoundingBoxRight;\n    const top = y - metrics.actualBoundingBoxAscent;\n    const bottom = y + metrics.actualBoundingBoxDescent;\n    const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n    ctx.strokeStyle = ctx.fillStyle;\n    ctx.beginPath();\n    ctx.lineWidth = opts.decorationWidth || 2;\n    ctx.moveTo(left, yDecoration);\n    ctx.lineTo(right, yDecoration);\n    ctx.stroke();\n  }\n}\nfunction addRoundedRectPath(ctx, rect) {\n  const {x, y, w, h, radius} = rect;\n  ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n  ctx.lineTo(x, y + h - radius.bottomLeft);\n  ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n  ctx.lineTo(x + w - radius.bottomRight, y + h);\n  ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n  ctx.lineTo(x + w, y + radius.topRight);\n  ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n  ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n  const matches = ('' + value).match(LINE_HEIGHT);\n  if (!matches || matches[1] === 'normal') {\n    return size * 1.2;\n  }\n  value = +matches[2];\n  switch (matches[3]) {\n  case 'px':\n    return value;\n  case '%':\n    value /= 100;\n    break;\n  }\n  return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n  const ret = {};\n  const objProps = isObject(props);\n  const keys = objProps ? Object.keys(props) : props;\n  const read = isObject(value)\n    ? objProps\n      ? prop => valueOrDefault(value[prop], value[props[prop]])\n      : prop => value[prop]\n    : () => value;\n  for (const prop of keys) {\n    ret[prop] = numberOrZero(read(prop));\n  }\n  return ret;\n}\nfunction toTRBL(value) {\n  return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n  return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n  const obj = toTRBL(value);\n  obj.width = obj.left + obj.right;\n  obj.height = obj.top + obj.bottom;\n  return obj;\n}\nfunction toFont(options, fallback) {\n  options = options || {};\n  fallback = fallback || defaults.font;\n  let size = valueOrDefault(options.size, fallback.size);\n  if (typeof size === 'string') {\n    size = parseInt(size, 10);\n  }\n  let style = valueOrDefault(options.style, fallback.style);\n  if (style && !('' + style).match(FONT_STYLE)) {\n    console.warn('Invalid font style specified: \"' + style + '\"');\n    style = '';\n  }\n  const font = {\n    family: valueOrDefault(options.family, fallback.family),\n    lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n    size,\n    style,\n    weight: valueOrDefault(options.weight, fallback.weight),\n    string: ''\n  };\n  font.string = toFontString(font);\n  return font;\n}\nfunction resolve(inputs, context, index, info) {\n  let cacheable = true;\n  let i, ilen, value;\n  for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n    value = inputs[i];\n    if (value === undefined) {\n      continue;\n    }\n    if (context !== undefined && typeof value === 'function') {\n      value = value(context);\n      cacheable = false;\n    }\n    if (index !== undefined && isArray(value)) {\n      value = value[index % value.length];\n      cacheable = false;\n    }\n    if (value !== undefined) {\n      if (info && !cacheable) {\n        info.cacheable = false;\n      }\n      return value;\n    }\n  }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n  const {min, max} = minmax;\n  const change = toDimension(grace, (max - min) / 2);\n  const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n  return {\n    min: keepZero(min, -Math.abs(change)),\n    max: keepZero(max, change)\n  };\n}\nfunction createContext(parentContext, context) {\n  return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n  if (!defined(fallback)) {\n    fallback = _resolve('_fallback', scopes);\n  }\n  const cache = {\n    [Symbol.toStringTag]: 'Object',\n    _cacheable: true,\n    _scopes: scopes,\n    _rootScopes: rootScopes,\n    _fallback: fallback,\n    _getTarget: getTarget,\n    override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n  };\n  return new Proxy(cache, {\n    deleteProperty(target, prop) {\n      delete target[prop];\n      delete target._keys;\n      delete scopes[0][prop];\n      return true;\n    },\n    get(target, prop) {\n      return _cached(target, prop,\n        () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n    },\n    getOwnPropertyDescriptor(target, prop) {\n      return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n    },\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(scopes[0]);\n    },\n    has(target, prop) {\n      return getKeysFromAllScopes(target).includes(prop);\n    },\n    ownKeys(target) {\n      return getKeysFromAllScopes(target);\n    },\n    set(target, prop, value) {\n      const storage = target._storage || (target._storage = getTarget());\n      target[prop] = storage[prop] = value;\n      delete target._keys;\n      return true;\n    }\n  });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n  const cache = {\n    _cacheable: false,\n    _proxy: proxy,\n    _context: context,\n    _subProxy: subProxy,\n    _stack: new Set(),\n    _descriptors: _descriptors(proxy, descriptorDefaults),\n    setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n    override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n  };\n  return new Proxy(cache, {\n    deleteProperty(target, prop) {\n      delete target[prop];\n      delete proxy[prop];\n      return true;\n    },\n    get(target, prop, receiver) {\n      return _cached(target, prop,\n        () => _resolveWithContext(target, prop, receiver));\n    },\n    getOwnPropertyDescriptor(target, prop) {\n      return target._descriptors.allKeys\n        ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n        : Reflect.getOwnPropertyDescriptor(proxy, prop);\n    },\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(proxy);\n    },\n    has(target, prop) {\n      return Reflect.has(proxy, prop);\n    },\n    ownKeys() {\n      return Reflect.ownKeys(proxy);\n    },\n    set(target, prop, value) {\n      proxy[prop] = value;\n      delete target[prop];\n      return true;\n    }\n  });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n  const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n  return {\n    allKeys: _allKeys,\n    scriptable: _scriptable,\n    indexable: _indexable,\n    isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n    isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n  };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n  (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n  if (Object.prototype.hasOwnProperty.call(target, prop)) {\n    return target[prop];\n  }\n  const value = resolve();\n  target[prop] = value;\n  return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  let value = _proxy[prop];\n  if (isFunction(value) && descriptors.isScriptable(prop)) {\n    value = _resolveScriptable(prop, value, target, receiver);\n  }\n  if (isArray(value) && value.length) {\n    value = _resolveArray(prop, value, target, descriptors.isIndexable);\n  }\n  if (needsSubResolver(prop, value)) {\n    value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n  }\n  return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n  const {_proxy, _context, _subProxy, _stack} = target;\n  if (_stack.has(prop)) {\n    throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n  }\n  _stack.add(prop);\n  value = value(_context, _subProxy || receiver);\n  _stack.delete(prop);\n  if (needsSubResolver(prop, value)) {\n    value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n  }\n  return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  if (defined(_context.index) && isIndexable(prop)) {\n    value = value[_context.index % value.length];\n  } else if (isObject(value[0])) {\n    const arr = value;\n    const scopes = _proxy._scopes.filter(s => s !== arr);\n    value = [];\n    for (const item of arr) {\n      const resolver = createSubResolver(scopes, _proxy, prop, item);\n      value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n    }\n  }\n  return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n  return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n  : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n  for (const parent of parentScopes) {\n    const scope = getScope(key, parent);\n    if (scope) {\n      set.add(scope);\n      const fallback = resolveFallback(scope._fallback, key, value);\n      if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n        return fallback;\n      }\n    } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n      return null;\n    }\n  }\n  return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n  const rootScopes = resolver._rootScopes;\n  const fallback = resolveFallback(resolver._fallback, prop, value);\n  const allScopes = [...parentScopes, ...rootScopes];\n  const set = new Set();\n  set.add(value);\n  let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n  if (key === null) {\n    return false;\n  }\n  if (defined(fallback) && fallback !== prop) {\n    key = addScopesFromKey(set, allScopes, fallback, key, value);\n    if (key === null) {\n      return false;\n    }\n  }\n  return _createResolver(Array.from(set), [''], rootScopes, fallback,\n    () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n  while (key) {\n    key = addScopes(set, allScopes, key, fallback, item);\n  }\n  return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n  const parent = resolver._getTarget();\n  if (!(prop in parent)) {\n    parent[prop] = {};\n  }\n  const target = parent[prop];\n  if (isArray(target) && isObject(value)) {\n    return value;\n  }\n  return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n  let value;\n  for (const prefix of prefixes) {\n    value = _resolve(readKey(prefix, prop), scopes);\n    if (defined(value)) {\n      return needsSubResolver(prop, value)\n        ? createSubResolver(scopes, proxy, prop, value)\n        : value;\n    }\n  }\n}\nfunction _resolve(key, scopes) {\n  for (const scope of scopes) {\n    if (!scope) {\n      continue;\n    }\n    const value = scope[key];\n    if (defined(value)) {\n      return value;\n    }\n  }\n}\nfunction getKeysFromAllScopes(target) {\n  let keys = target._keys;\n  if (!keys) {\n    keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n  }\n  return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n  const set = new Set();\n  for (const scope of scopes) {\n    for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n      set.add(key);\n    }\n  }\n  return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n  const {iScale} = meta;\n  const {key = 'r'} = this._parsing;\n  const parsed = new Array(count);\n  let i, ilen, index, item;\n  for (i = 0, ilen = count; i < ilen; ++i) {\n    index = i + start;\n    item = data[index];\n    parsed[i] = {\n      r: iScale.parse(resolveObjectKey(item, key), index)\n    };\n  }\n  return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n  const previous = firstPoint.skip ? middlePoint : firstPoint;\n  const current = middlePoint;\n  const next = afterPoint.skip ? middlePoint : afterPoint;\n  const d01 = distanceBetweenPoints(current, previous);\n  const d12 = distanceBetweenPoints(next, current);\n  let s01 = d01 / (d01 + d12);\n  let s12 = d12 / (d01 + d12);\n  s01 = isNaN(s01) ? 0 : s01;\n  s12 = isNaN(s12) ? 0 : s12;\n  const fa = t * s01;\n  const fb = t * s12;\n  return {\n    previous: {\n      x: current.x - fa * (next.x - previous.x),\n      y: current.y - fa * (next.y - previous.y)\n    },\n    next: {\n      x: current.x + fb * (next.x - previous.x),\n      y: current.y + fb * (next.y - previous.y)\n    }\n  };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n  const pointsLen = points.length;\n  let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (let i = 0; i < pointsLen - 1; ++i) {\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent || !pointAfter) {\n      continue;\n    }\n    if (almostEquals(deltaK[i], 0, EPSILON)) {\n      mK[i] = mK[i + 1] = 0;\n      continue;\n    }\n    alphaK = mK[i] / deltaK[i];\n    betaK = mK[i + 1] / deltaK[i];\n    squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n    if (squaredMagnitude <= 9) {\n      continue;\n    }\n    tauK = 3 / Math.sqrt(squaredMagnitude);\n    mK[i] = alphaK * tauK * deltaK[i];\n    mK[i + 1] = betaK * tauK * deltaK[i];\n  }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  let delta, pointBefore, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (let i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n    const iPixel = pointCurrent[indexAxis];\n    const vPixel = pointCurrent[valueAxis];\n    if (pointBefore) {\n      delta = (iPixel - pointBefore[indexAxis]) / 3;\n      pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n      pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n    }\n    if (pointAfter) {\n      delta = (pointAfter[indexAxis] - iPixel) / 3;\n      pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n      pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n    }\n  }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  const deltaK = Array(pointsLen).fill(0);\n  const mK = Array(pointsLen);\n  let i, pointBefore, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n    if (pointAfter) {\n      const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n      deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n    }\n    mK[i] = !pointBefore ? deltaK[i]\n      : !pointAfter ? deltaK[i - 1]\n      : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n      : (deltaK[i - 1] + deltaK[i]) / 2;\n  }\n  monotoneAdjust(points, deltaK, mK);\n  monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n  return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n  let i, ilen, point, inArea, inAreaPrev;\n  let inAreaNext = _isPointInArea(points[0], area);\n  for (i = 0, ilen = points.length; i < ilen; ++i) {\n    inAreaPrev = inArea;\n    inArea = inAreaNext;\n    inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n    if (!inArea) {\n      continue;\n    }\n    point = points[i];\n    if (inAreaPrev) {\n      point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n      point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n    }\n    if (inAreaNext) {\n      point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n      point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n    }\n  }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n  let i, ilen, point, controlPoints;\n  if (options.spanGaps) {\n    points = points.filter((pt) => !pt.skip);\n  }\n  if (options.cubicInterpolationMode === 'monotone') {\n    splineCurveMonotone(points, indexAxis);\n  } else {\n    let prev = loop ? points[points.length - 1] : points[0];\n    for (i = 0, ilen = points.length; i < ilen; ++i) {\n      point = points[i];\n      controlPoints = splineCurve(\n        prev,\n        point,\n        points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n        options.tension\n      );\n      point.cp1x = controlPoints.previous.x;\n      point.cp1y = controlPoints.previous.y;\n      point.cp2x = controlPoints.next.x;\n      point.cp2y = controlPoints.next.y;\n      prev = point;\n    }\n  }\n  if (options.capBezierPoints) {\n    capBezierPoints(points, area);\n  }\n}\n\nfunction _isDomSupported() {\n  return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n  let parent = domNode.parentNode;\n  if (parent && parent.toString() === '[object ShadowRoot]') {\n    parent = parent.host;\n  }\n  return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n  let valueInPixels;\n  if (typeof styleValue === 'string') {\n    valueInPixels = parseInt(styleValue, 10);\n    if (styleValue.indexOf('%') !== -1) {\n      valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n    }\n  } else {\n    valueInPixels = styleValue;\n  }\n  return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n  return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n  const result = {};\n  suffix = suffix ? '-' + suffix : '';\n  for (let i = 0; i < 4; i++) {\n    const pos = positions[i];\n    result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n  }\n  result.width = result.left + result.right;\n  result.height = result.top + result.bottom;\n  return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n  const touches = e.touches;\n  const source = touches && touches.length ? touches[0] : e;\n  const {offsetX, offsetY} = source;\n  let box = false;\n  let x, y;\n  if (useOffsetPos(offsetX, offsetY, e.target)) {\n    x = offsetX;\n    y = offsetY;\n  } else {\n    const rect = canvas.getBoundingClientRect();\n    x = source.clientX - rect.left;\n    y = source.clientY - rect.top;\n    box = true;\n  }\n  return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n  if ('native' in evt) {\n    return evt;\n  }\n  const {canvas, currentDevicePixelRatio} = chart;\n  const style = getComputedStyle(canvas);\n  const borderBox = style.boxSizing === 'border-box';\n  const paddings = getPositionedStyle(style, 'padding');\n  const borders = getPositionedStyle(style, 'border', 'width');\n  const {x, y, box} = getCanvasPosition(evt, canvas);\n  const xOffset = paddings.left + (box && borders.left);\n  const yOffset = paddings.top + (box && borders.top);\n  let {width, height} = chart;\n  if (borderBox) {\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  return {\n    x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n    y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n  };\n}\nfunction getContainerSize(canvas, width, height) {\n  let maxWidth, maxHeight;\n  if (width === undefined || height === undefined) {\n    const container = _getParentNode(canvas);\n    if (!container) {\n      width = canvas.clientWidth;\n      height = canvas.clientHeight;\n    } else {\n      const rect = container.getBoundingClientRect();\n      const containerStyle = getComputedStyle(container);\n      const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n      const containerPadding = getPositionedStyle(containerStyle, 'padding');\n      width = rect.width - containerPadding.width - containerBorder.width;\n      height = rect.height - containerPadding.height - containerBorder.height;\n      maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n      maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n    }\n  }\n  return {\n    width,\n    height,\n    maxWidth: maxWidth || INFINITY,\n    maxHeight: maxHeight || INFINITY\n  };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n  const style = getComputedStyle(canvas);\n  const margins = getPositionedStyle(style, 'margin');\n  const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n  const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n  const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n  let {width, height} = containerSize;\n  if (style.boxSizing === 'content-box') {\n    const borders = getPositionedStyle(style, 'border', 'width');\n    const paddings = getPositionedStyle(style, 'padding');\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  width = Math.max(0, width - margins.width);\n  height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n  width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n  height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n  if (width && !height) {\n    height = round1(width / 2);\n  }\n  return {\n    width,\n    height\n  };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n  const pixelRatio = forceRatio || 1;\n  const deviceHeight = Math.floor(chart.height * pixelRatio);\n  const deviceWidth = Math.floor(chart.width * pixelRatio);\n  chart.height = deviceHeight / pixelRatio;\n  chart.width = deviceWidth / pixelRatio;\n  const canvas = chart.canvas;\n  if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n    canvas.style.height = `${chart.height}px`;\n    canvas.style.width = `${chart.width}px`;\n  }\n  if (chart.currentDevicePixelRatio !== pixelRatio\n      || canvas.height !== deviceHeight\n      || canvas.width !== deviceWidth) {\n    chart.currentDevicePixelRatio = pixelRatio;\n    canvas.height = deviceHeight;\n    canvas.width = deviceWidth;\n    chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n    return true;\n  }\n  return false;\n}\nconst supportsEventListenerOptions = (function() {\n  let passiveSupported = false;\n  try {\n    const options = {\n      get passive() {\n        passiveSupported = true;\n        return false;\n      }\n    };\n    window.addEventListener('test', null, options);\n    window.removeEventListener('test', null, options);\n  } catch (e) {\n  }\n  return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n  const value = getStyle(element, property);\n  const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n  return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: p1.y + t * (p2.y - p1.y)\n  };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n    : mode === 'after' ? t < 1 ? p1.y : p2.y\n    : t > 0 ? p2.y : p1.y\n  };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n  const cp1 = {x: p1.cp2x, y: p1.cp2y};\n  const cp2 = {x: p2.cp1x, y: p2.cp1y};\n  const a = _pointInLine(p1, cp1, t);\n  const b = _pointInLine(cp1, cp2, t);\n  const c = _pointInLine(cp2, p2, t);\n  const d = _pointInLine(a, b, t);\n  const e = _pointInLine(b, c, t);\n  return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n  options = options || {};\n  const cacheKey = locale + JSON.stringify(options);\n  let formatter = intlCache.get(cacheKey);\n  if (!formatter) {\n    formatter = new Intl.NumberFormat(locale, options);\n    intlCache.set(cacheKey, formatter);\n  }\n  return formatter;\n}\nfunction formatNumber(num, locale, options) {\n  return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n  return {\n    x(x) {\n      return rectX + rectX + width - x;\n    },\n    setWidth(w) {\n      width = w;\n    },\n    textAlign(align) {\n      if (align === 'center') {\n        return align;\n      }\n      return align === 'right' ? 'left' : 'right';\n    },\n    xPlus(x, value) {\n      return x - value;\n    },\n    leftForLtr(x, itemWidth) {\n      return x - itemWidth;\n    },\n  };\n};\nconst getLeftToRightAdapter = function() {\n  return {\n    x(x) {\n      return x;\n    },\n    setWidth(w) {\n    },\n    textAlign(align) {\n      return align;\n    },\n    xPlus(x, value) {\n      return x + value;\n    },\n    leftForLtr(x, _itemWidth) {\n      return x;\n    },\n  };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n  return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n  let style, original;\n  if (direction === 'ltr' || direction === 'rtl') {\n    style = ctx.canvas.style;\n    original = [\n      style.getPropertyValue('direction'),\n      style.getPropertyPriority('direction'),\n    ];\n    style.setProperty('direction', direction, 'important');\n    ctx.prevTextDirection = original;\n  }\n}\nfunction restoreTextDirection(ctx, original) {\n  if (original !== undefined) {\n    delete ctx.prevTextDirection;\n    ctx.canvas.style.setProperty('direction', original[0], original[1]);\n  }\n}\n\nfunction propertyFn(property) {\n  if (property === 'angle') {\n    return {\n      between: _angleBetween,\n      compare: _angleDiff,\n      normalize: _normalizeAngle,\n    };\n  }\n  return {\n    between: _isBetween,\n    compare: (a, b) => a - b,\n    normalize: x => x\n  };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n  return {\n    start: start % count,\n    end: end % count,\n    loop: loop && (end - start + 1) % count === 0,\n    style\n  };\n}\nfunction getSegment(segment, points, bounds) {\n  const {property, start: startBound, end: endBound} = bounds;\n  const {between, normalize} = propertyFn(property);\n  const count = points.length;\n  let {start, end, loop} = segment;\n  let i, ilen;\n  if (loop) {\n    start += count;\n    end += count;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n        break;\n      }\n      start--;\n      end--;\n    }\n    start %= count;\n    end %= count;\n  }\n  if (end < start) {\n    end += count;\n  }\n  return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n  if (!bounds) {\n    return [segment];\n  }\n  const {property, start: startBound, end: endBound} = bounds;\n  const count = points.length;\n  const {compare, between, normalize} = propertyFn(property);\n  const {start, end, loop, style} = getSegment(segment, points, bounds);\n  const result = [];\n  let inside = false;\n  let subStart = null;\n  let value, point, prevValue;\n  const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n  const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n  const shouldStart = () => inside || startIsBefore();\n  const shouldStop = () => !inside || endIsBefore();\n  for (let i = start, prev = start; i <= end; ++i) {\n    point = points[i % count];\n    if (point.skip) {\n      continue;\n    }\n    value = normalize(point[property]);\n    if (value === prevValue) {\n      continue;\n    }\n    inside = between(value, startBound, endBound);\n    if (subStart === null && shouldStart()) {\n      subStart = compare(value, startBound) === 0 ? i : prev;\n    }\n    if (subStart !== null && shouldStop()) {\n      result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n      subStart = null;\n    }\n    prev = i;\n    prevValue = value;\n  }\n  if (subStart !== null) {\n    result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n  }\n  return result;\n}\nfunction _boundSegments(line, bounds) {\n  const result = [];\n  const segments = line.segments;\n  for (let i = 0; i < segments.length; i++) {\n    const sub = _boundSegment(segments[i], line.points, bounds);\n    if (sub.length) {\n      result.push(...sub);\n    }\n  }\n  return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n  let start = 0;\n  let end = count - 1;\n  if (loop && !spanGaps) {\n    while (start < count && !points[start].skip) {\n      start++;\n    }\n  }\n  while (start < count && points[start].skip) {\n    start++;\n  }\n  start %= count;\n  if (loop) {\n    end += start;\n  }\n  while (end > start && points[end % count].skip) {\n    end--;\n  }\n  end %= count;\n  return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n  const count = points.length;\n  const result = [];\n  let last = start;\n  let prev = points[start];\n  let end;\n  for (end = start + 1; end <= max; ++end) {\n    const cur = points[end % count];\n    if (cur.skip || cur.stop) {\n      if (!prev.skip) {\n        loop = false;\n        result.push({start: start % count, end: (end - 1) % count, loop});\n        start = last = cur.stop ? end : null;\n      }\n    } else {\n      last = end;\n      if (prev.skip) {\n        start = end;\n      }\n    }\n    prev = cur;\n  }\n  if (last !== null) {\n    result.push({start: start % count, end: last % count, loop});\n  }\n  return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n  const points = line.points;\n  const spanGaps = line.options.spanGaps;\n  const count = points.length;\n  if (!count) {\n    return [];\n  }\n  const loop = !!line._loop;\n  const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n  if (spanGaps === true) {\n    return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n  }\n  const max = end < start ? end + count : end;\n  const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n  return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n  if (!segmentOptions || !segmentOptions.setContext || !points) {\n    return segments;\n  }\n  return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n  const chartContext = line._chart.getContext();\n  const baseStyle = readStyle(line.options);\n  const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n  const count = points.length;\n  const result = [];\n  let prevStyle = baseStyle;\n  let start = segments[0].start;\n  let i = start;\n  function addStyle(s, e, l, st) {\n    const dir = spanGaps ? -1 : 1;\n    if (s === e) {\n      return;\n    }\n    s += count;\n    while (points[s % count].skip) {\n      s -= dir;\n    }\n    while (points[e % count].skip) {\n      e += dir;\n    }\n    if (s % count !== e % count) {\n      result.push({start: s % count, end: e % count, loop: l, style: st});\n      prevStyle = st;\n      start = e % count;\n    }\n  }\n  for (const segment of segments) {\n    start = spanGaps ? start : segment.start;\n    let prev = points[start % count];\n    let style;\n    for (i = start + 1; i <= segment.end; i++) {\n      const pt = points[i % count];\n      style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n        type: 'segment',\n        p0: prev,\n        p1: pt,\n        p0DataIndex: (i - 1) % count,\n        p1DataIndex: i % count,\n        datasetIndex\n      })));\n      if (styleChanged(style, prevStyle)) {\n        addStyle(start, i - 1, segment.loop, prevStyle);\n      }\n      prev = pt;\n      prevStyle = style;\n    }\n    if (start < i - 1) {\n      addStyle(start, i - 1, segment.loop, prevStyle);\n    }\n  }\n  return result;\n}\nfunction readStyle(options) {\n  return {\n    backgroundColor: options.backgroundColor,\n    borderCapStyle: options.borderCapStyle,\n    borderDash: options.borderDash,\n    borderDashOffset: options.borderDashOffset,\n    borderJoinStyle: options.borderJoinStyle,\n    borderWidth: options.borderWidth,\n    borderColor: options.borderColor\n  };\n}\nfunction styleChanged(style, prevStyle) {\n  return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n  constructor() {\n    this._request = null;\n    this._charts = new Map();\n    this._running = false;\n    this._lastDate = undefined;\n  }\n  _notify(chart, anims, date, type) {\n    const callbacks = anims.listeners[type];\n    const numSteps = anims.duration;\n    callbacks.forEach(fn => fn({\n      chart,\n      initial: anims.initial,\n      numSteps,\n      currentStep: Math.min(date - anims.start, numSteps)\n    }));\n  }\n  _refresh() {\n    if (this._request) {\n      return;\n    }\n    this._running = true;\n    this._request = requestAnimFrame.call(window, () => {\n      this._update();\n      this._request = null;\n      if (this._running) {\n        this._refresh();\n      }\n    });\n  }\n  _update(date = Date.now()) {\n    let remaining = 0;\n    this._charts.forEach((anims, chart) => {\n      if (!anims.running || !anims.items.length) {\n        return;\n      }\n      const items = anims.items;\n      let i = items.length - 1;\n      let draw = false;\n      let item;\n      for (; i >= 0; --i) {\n        item = items[i];\n        if (item._active) {\n          if (item._total > anims.duration) {\n            anims.duration = item._total;\n          }\n          item.tick(date);\n          draw = true;\n        } else {\n          items[i] = items[items.length - 1];\n          items.pop();\n        }\n      }\n      if (draw) {\n        chart.draw();\n        this._notify(chart, anims, date, 'progress');\n      }\n      if (!items.length) {\n        anims.running = false;\n        this._notify(chart, anims, date, 'complete');\n        anims.initial = false;\n      }\n      remaining += items.length;\n    });\n    this._lastDate = date;\n    if (remaining === 0) {\n      this._running = false;\n    }\n  }\n  _getAnims(chart) {\n    const charts = this._charts;\n    let anims = charts.get(chart);\n    if (!anims) {\n      anims = {\n        running: false,\n        initial: true,\n        items: [],\n        listeners: {\n          complete: [],\n          progress: []\n        }\n      };\n      charts.set(chart, anims);\n    }\n    return anims;\n  }\n  listen(chart, event, cb) {\n    this._getAnims(chart).listeners[event].push(cb);\n  }\n  add(chart, items) {\n    if (!items || !items.length) {\n      return;\n    }\n    this._getAnims(chart).items.push(...items);\n  }\n  has(chart) {\n    return this._getAnims(chart).items.length > 0;\n  }\n  start(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims) {\n      return;\n    }\n    anims.running = true;\n    anims.start = Date.now();\n    anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n    this._refresh();\n  }\n  running(chart) {\n    if (!this._running) {\n      return false;\n    }\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.running || !anims.items.length) {\n      return false;\n    }\n    return true;\n  }\n  stop(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.items.length) {\n      return;\n    }\n    const items = anims.items;\n    let i = items.length - 1;\n    for (; i >= 0; --i) {\n      items[i].cancel();\n    }\n    anims.items = [];\n    this._notify(chart, anims, Date.now(), 'complete');\n  }\n  remove(chart) {\n    return this._charts.delete(chart);\n  }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n  boolean(from, to, factor) {\n    return factor > 0.5 ? to : from;\n  },\n  color(from, to, factor) {\n    const c0 = color(from || transparent);\n    const c1 = c0.valid && color(to || transparent);\n    return c1 && c1.valid\n      ? c1.mix(c0, factor).hexString()\n      : to;\n  },\n  number(from, to, factor) {\n    return from + (to - from) * factor;\n  }\n};\nclass Animation {\n  constructor(cfg, target, prop, to) {\n    const currentValue = target[prop];\n    to = resolve([cfg.to, to, currentValue, cfg.from]);\n    const from = resolve([cfg.from, currentValue, to]);\n    this._active = true;\n    this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n    this._easing = effects[cfg.easing] || effects.linear;\n    this._start = Math.floor(Date.now() + (cfg.delay || 0));\n    this._duration = this._total = Math.floor(cfg.duration);\n    this._loop = !!cfg.loop;\n    this._target = target;\n    this._prop = prop;\n    this._from = from;\n    this._to = to;\n    this._promises = undefined;\n  }\n  active() {\n    return this._active;\n  }\n  update(cfg, to, date) {\n    if (this._active) {\n      this._notify(false);\n      const currentValue = this._target[this._prop];\n      const elapsed = date - this._start;\n      const remain = this._duration - elapsed;\n      this._start = date;\n      this._duration = Math.floor(Math.max(remain, cfg.duration));\n      this._total += elapsed;\n      this._loop = !!cfg.loop;\n      this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n      this._from = resolve([cfg.from, currentValue, to]);\n    }\n  }\n  cancel() {\n    if (this._active) {\n      this.tick(Date.now());\n      this._active = false;\n      this._notify(false);\n    }\n  }\n  tick(date) {\n    const elapsed = date - this._start;\n    const duration = this._duration;\n    const prop = this._prop;\n    const from = this._from;\n    const loop = this._loop;\n    const to = this._to;\n    let factor;\n    this._active = from !== to && (loop || (elapsed < duration));\n    if (!this._active) {\n      this._target[prop] = to;\n      this._notify(true);\n      return;\n    }\n    if (elapsed < 0) {\n      this._target[prop] = from;\n      return;\n    }\n    factor = (elapsed / duration) % 2;\n    factor = loop && factor > 1 ? 2 - factor : factor;\n    factor = this._easing(Math.min(1, Math.max(0, factor)));\n    this._target[prop] = this._fn(from, to, factor);\n  }\n  wait() {\n    const promises = this._promises || (this._promises = []);\n    return new Promise((res, rej) => {\n      promises.push({res, rej});\n    });\n  }\n  _notify(resolved) {\n    const method = resolved ? 'res' : 'rej';\n    const promises = this._promises || [];\n    for (let i = 0; i < promises.length; i++) {\n      promises[i][method]();\n    }\n  }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n  delay: undefined,\n  duration: 1000,\n  easing: 'easeOutQuart',\n  fn: undefined,\n  from: undefined,\n  loop: undefined,\n  to: undefined,\n  type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n  _fallback: false,\n  _indexable: false,\n  _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n  colors: {\n    type: 'color',\n    properties: colors\n  },\n  numbers: {\n    type: 'number',\n    properties: numbers\n  },\n});\ndefaults.describe('animations', {\n  _fallback: 'animation',\n});\ndefaults.set('transitions', {\n  active: {\n    animation: {\n      duration: 400\n    }\n  },\n  resize: {\n    animation: {\n      duration: 0\n    }\n  },\n  show: {\n    animations: {\n      colors: {\n        from: 'transparent'\n      },\n      visible: {\n        type: 'boolean',\n        duration: 0\n      },\n    }\n  },\n  hide: {\n    animations: {\n      colors: {\n        to: 'transparent'\n      },\n      visible: {\n        type: 'boolean',\n        easing: 'linear',\n        fn: v => v | 0\n      },\n    }\n  }\n});\nclass Animations {\n  constructor(chart, config) {\n    this._chart = chart;\n    this._properties = new Map();\n    this.configure(config);\n  }\n  configure(config) {\n    if (!isObject(config)) {\n      return;\n    }\n    const animatedProps = this._properties;\n    Object.getOwnPropertyNames(config).forEach(key => {\n      const cfg = config[key];\n      if (!isObject(cfg)) {\n        return;\n      }\n      const resolved = {};\n      for (const option of animationOptions) {\n        resolved[option] = cfg[option];\n      }\n      (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n        if (prop === key || !animatedProps.has(prop)) {\n          animatedProps.set(prop, resolved);\n        }\n      });\n    });\n  }\n  _animateOptions(target, values) {\n    const newOptions = values.options;\n    const options = resolveTargetOptions(target, newOptions);\n    if (!options) {\n      return [];\n    }\n    const animations = this._createAnimations(options, newOptions);\n    if (newOptions.$shared) {\n      awaitAll(target.options.$animations, newOptions).then(() => {\n        target.options = newOptions;\n      }, () => {\n      });\n    }\n    return animations;\n  }\n  _createAnimations(target, values) {\n    const animatedProps = this._properties;\n    const animations = [];\n    const running = target.$animations || (target.$animations = {});\n    const props = Object.keys(values);\n    const date = Date.now();\n    let i;\n    for (i = props.length - 1; i >= 0; --i) {\n      const prop = props[i];\n      if (prop.charAt(0) === '$') {\n        continue;\n      }\n      if (prop === 'options') {\n        animations.push(...this._animateOptions(target, values));\n        continue;\n      }\n      const value = values[prop];\n      let animation = running[prop];\n      const cfg = animatedProps.get(prop);\n      if (animation) {\n        if (cfg && animation.active()) {\n          animation.update(cfg, value, date);\n          continue;\n        } else {\n          animation.cancel();\n        }\n      }\n      if (!cfg || !cfg.duration) {\n        target[prop] = value;\n        continue;\n      }\n      running[prop] = animation = new Animation(cfg, target, prop, value);\n      animations.push(animation);\n    }\n    return animations;\n  }\n  update(target, values) {\n    if (this._properties.size === 0) {\n      Object.assign(target, values);\n      return;\n    }\n    const animations = this._createAnimations(target, values);\n    if (animations.length) {\n      animator.add(this._chart, animations);\n      return true;\n    }\n  }\n}\nfunction awaitAll(animations, properties) {\n  const running = [];\n  const keys = Object.keys(properties);\n  for (let i = 0; i < keys.length; i++) {\n    const anim = animations[keys[i]];\n    if (anim && anim.active()) {\n      running.push(anim.wait());\n    }\n  }\n  return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n  if (!newOptions) {\n    return;\n  }\n  let options = target.options;\n  if (!options) {\n    target.options = newOptions;\n    return;\n  }\n  if (options.$shared) {\n    target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n  }\n  return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n  const opts = scale && scale.options || {};\n  const reverse = opts.reverse;\n  const min = opts.min === undefined ? allowedOverflow : 0;\n  const max = opts.max === undefined ? allowedOverflow : 0;\n  return {\n    start: reverse ? max : min,\n    end: reverse ? min : max\n  };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n  if (allowedOverflow === false) {\n    return false;\n  }\n  const x = scaleClip(xScale, allowedOverflow);\n  const y = scaleClip(yScale, allowedOverflow);\n  return {\n    top: y.end,\n    right: x.end,\n    bottom: y.start,\n    left: x.start\n  };\n}\nfunction toClip(value) {\n  let t, r, b, l;\n  if (isObject(value)) {\n    t = value.top;\n    r = value.right;\n    b = value.bottom;\n    l = value.left;\n  } else {\n    t = r = b = l = value;\n  }\n  return {\n    top: t,\n    right: r,\n    bottom: b,\n    left: l,\n    disabled: value === false\n  };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n  const keys = [];\n  const metasets = chart._getSortedDatasetMetas(filterVisible);\n  let i, ilen;\n  for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n    keys.push(metasets[i].index);\n  }\n  return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n  const keys = stack.keys;\n  const singleMode = options.mode === 'single';\n  let i, ilen, datasetIndex, otherValue;\n  if (value === null) {\n    return;\n  }\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    datasetIndex = +keys[i];\n    if (datasetIndex === dsIndex) {\n      if (options.all) {\n        continue;\n      }\n      break;\n    }\n    otherValue = stack.values[datasetIndex];\n    if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n      value += otherValue;\n    }\n  }\n  return value;\n}\nfunction convertObjectDataToArray(data) {\n  const keys = Object.keys(data);\n  const adata = new Array(keys.length);\n  let i, ilen, key;\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    key = keys[i];\n    adata[i] = {\n      x: key,\n      y: data[key]\n    };\n  }\n  return adata;\n}\nfunction isStacked(scale, meta) {\n  const stacked = scale && scale.options.stacked;\n  return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n  return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n  const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n  return {\n    min: minDefined ? min : Number.NEGATIVE_INFINITY,\n    max: maxDefined ? max : Number.POSITIVE_INFINITY\n  };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n  const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n  return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n  for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n    const value = stack[meta.index];\n    if ((positive && value > 0) || (!positive && value < 0)) {\n      return meta.index;\n    }\n  }\n  return null;\n}\nfunction updateStacks(controller, parsed) {\n  const {chart, _cachedMeta: meta} = controller;\n  const stacks = chart._stacks || (chart._stacks = {});\n  const {iScale, vScale, index: datasetIndex} = meta;\n  const iAxis = iScale.axis;\n  const vAxis = vScale.axis;\n  const key = getStackKey(iScale, vScale, meta);\n  const ilen = parsed.length;\n  let stack;\n  for (let i = 0; i < ilen; ++i) {\n    const item = parsed[i];\n    const {[iAxis]: index, [vAxis]: value} = item;\n    const itemStacks = item._stacks || (item._stacks = {});\n    stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n    stack[datasetIndex] = value;\n    stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n    stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n  }\n}\nfunction getFirstScaleId(chart, axis) {\n  const scales = chart.scales;\n  return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n  return createContext(parent,\n    {\n      active: false,\n      dataset: undefined,\n      datasetIndex: index,\n      index,\n      mode: 'default',\n      type: 'dataset'\n    }\n  );\n}\nfunction createDataContext(parent, index, element) {\n  return createContext(parent, {\n    active: false,\n    dataIndex: index,\n    parsed: undefined,\n    raw: undefined,\n    element,\n    index,\n    mode: 'default',\n    type: 'data'\n  });\n}\nfunction clearStacks(meta, items) {\n  const datasetIndex = meta.controller.index;\n  const axis = meta.vScale && meta.vScale.axis;\n  if (!axis) {\n    return;\n  }\n  items = items || meta._parsed;\n  for (const parsed of items) {\n    const stacks = parsed._stacks;\n    if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n      return;\n    }\n    delete stacks[axis][datasetIndex];\n  }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n  && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n  constructor(chart, datasetIndex) {\n    this.chart = chart;\n    this._ctx = chart.ctx;\n    this.index = datasetIndex;\n    this._cachedDataOpts = {};\n    this._cachedMeta = this.getMeta();\n    this._type = this._cachedMeta.type;\n    this.options = undefined;\n    this._parsing = false;\n    this._data = undefined;\n    this._objectData = undefined;\n    this._sharedOptions = undefined;\n    this._drawStart = undefined;\n    this._drawCount = undefined;\n    this.enableOptionSharing = false;\n    this.supportsDecimation = false;\n    this.$context = undefined;\n    this._syncList = [];\n    this.initialize();\n  }\n  initialize() {\n    const meta = this._cachedMeta;\n    this.configure();\n    this.linkScales();\n    meta._stacked = isStacked(meta.vScale, meta);\n    this.addElements();\n  }\n  updateIndex(datasetIndex) {\n    if (this.index !== datasetIndex) {\n      clearStacks(this._cachedMeta);\n    }\n    this.index = datasetIndex;\n  }\n  linkScales() {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n    const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n    const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n    const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n    const indexAxis = meta.indexAxis;\n    const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n    const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n    meta.xScale = this.getScaleForId(xid);\n    meta.yScale = this.getScaleForId(yid);\n    meta.rScale = this.getScaleForId(rid);\n    meta.iScale = this.getScaleForId(iid);\n    meta.vScale = this.getScaleForId(vid);\n  }\n  getDataset() {\n    return this.chart.data.datasets[this.index];\n  }\n  getMeta() {\n    return this.chart.getDatasetMeta(this.index);\n  }\n  getScaleForId(scaleID) {\n    return this.chart.scales[scaleID];\n  }\n  _getOtherScale(scale) {\n    const meta = this._cachedMeta;\n    return scale === meta.iScale\n      ? meta.vScale\n      : meta.iScale;\n  }\n  reset() {\n    this._update('reset');\n  }\n  _destroy() {\n    const meta = this._cachedMeta;\n    if (this._data) {\n      unlistenArrayEvents(this._data, this);\n    }\n    if (meta._stacked) {\n      clearStacks(meta);\n    }\n  }\n  _dataCheck() {\n    const dataset = this.getDataset();\n    const data = dataset.data || (dataset.data = []);\n    const _data = this._data;\n    if (isObject(data)) {\n      this._data = convertObjectDataToArray(data);\n    } else if (_data !== data) {\n      if (_data) {\n        unlistenArrayEvents(_data, this);\n        const meta = this._cachedMeta;\n        clearStacks(meta);\n        meta._parsed = [];\n      }\n      if (data && Object.isExtensible(data)) {\n        listenArrayEvents(data, this);\n      }\n      this._syncList = [];\n      this._data = data;\n    }\n  }\n  addElements() {\n    const meta = this._cachedMeta;\n    this._dataCheck();\n    if (this.datasetElementType) {\n      meta.dataset = new this.datasetElementType();\n    }\n  }\n  buildOrUpdateElements(resetNewElements) {\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    let stackChanged = false;\n    this._dataCheck();\n    const oldStacked = meta._stacked;\n    meta._stacked = isStacked(meta.vScale, meta);\n    if (meta.stack !== dataset.stack) {\n      stackChanged = true;\n      clearStacks(meta);\n      meta.stack = dataset.stack;\n    }\n    this._resyncElements(resetNewElements);\n    if (stackChanged || oldStacked !== meta._stacked) {\n      updateStacks(this, meta._parsed);\n    }\n  }\n  configure() {\n    const config = this.chart.config;\n    const scopeKeys = config.datasetScopeKeys(this._type);\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n    this.options = config.createResolver(scopes, this.getContext());\n    this._parsing = this.options.parsing;\n    this._cachedDataOpts = {};\n  }\n  parse(start, count) {\n    const {_cachedMeta: meta, _data: data} = this;\n    const {iScale, _stacked} = meta;\n    const iAxis = iScale.axis;\n    let sorted = start === 0 && count === data.length ? true : meta._sorted;\n    let prev = start > 0 && meta._parsed[start - 1];\n    let i, cur, parsed;\n    if (this._parsing === false) {\n      meta._parsed = data;\n      meta._sorted = true;\n      parsed = data;\n    } else {\n      if (isArray(data[start])) {\n        parsed = this.parseArrayData(meta, data, start, count);\n      } else if (isObject(data[start])) {\n        parsed = this.parseObjectData(meta, data, start, count);\n      } else {\n        parsed = this.parsePrimitiveData(meta, data, start, count);\n      }\n      const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n      for (i = 0; i < count; ++i) {\n        meta._parsed[i + start] = cur = parsed[i];\n        if (sorted) {\n          if (isNotInOrderComparedToPrev()) {\n            sorted = false;\n          }\n          prev = cur;\n        }\n      }\n      meta._sorted = sorted;\n    }\n    if (_stacked) {\n      updateStacks(this, parsed);\n    }\n  }\n  parsePrimitiveData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const labels = iScale.getLabels();\n    const singleScale = iScale === vScale;\n    const parsed = new Array(count);\n    let i, ilen, index;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      parsed[i] = {\n        [iAxis]: singleScale || iScale.parse(labels[index], index),\n        [vAxis]: vScale.parse(data[index], index)\n      };\n    }\n    return parsed;\n  }\n  parseArrayData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(item[0], index),\n        y: yScale.parse(item[1], index)\n      };\n    }\n    return parsed;\n  }\n  parseObjectData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n        y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n      };\n    }\n    return parsed;\n  }\n  getParsed(index) {\n    return this._cachedMeta._parsed[index];\n  }\n  getDataElement(index) {\n    return this._cachedMeta.data[index];\n  }\n  applyStack(scale, parsed, mode) {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const value = parsed[scale.axis];\n    const stack = {\n      keys: getSortedDatasetIndices(chart, true),\n      values: parsed._stacks[scale.axis]\n    };\n    return applyStack(stack, value, meta.index, {mode});\n  }\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    const parsedValue = parsed[scale.axis];\n    let value = parsedValue === null ? NaN : parsedValue;\n    const values = stack && parsed._stacks[scale.axis];\n    if (stack && values) {\n      stack.values = values;\n      value = applyStack(stack, parsedValue, this._cachedMeta.index);\n    }\n    range.min = Math.min(range.min, value);\n    range.max = Math.max(range.max, value);\n  }\n  getMinMax(scale, canStack) {\n    const meta = this._cachedMeta;\n    const _parsed = meta._parsed;\n    const sorted = meta._sorted && scale === meta.iScale;\n    const ilen = _parsed.length;\n    const otherScale = this._getOtherScale(scale);\n    const stack = createStack(canStack, meta, this.chart);\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n    const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n    let i, parsed;\n    function _skip() {\n      parsed = _parsed[i];\n      const otherValue = parsed[otherScale.axis];\n      return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n    }\n    for (i = 0; i < ilen; ++i) {\n      if (_skip()) {\n        continue;\n      }\n      this.updateRangeFromParsed(range, scale, parsed, stack);\n      if (sorted) {\n        break;\n      }\n    }\n    if (sorted) {\n      for (i = ilen - 1; i >= 0; --i) {\n        if (_skip()) {\n          continue;\n        }\n        this.updateRangeFromParsed(range, scale, parsed, stack);\n        break;\n      }\n    }\n    return range;\n  }\n  getAllParsedValues(scale) {\n    const parsed = this._cachedMeta._parsed;\n    const values = [];\n    let i, ilen, value;\n    for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n      value = parsed[i][scale.axis];\n      if (isNumberFinite(value)) {\n        values.push(value);\n      }\n    }\n    return values;\n  }\n  getMaxOverflow() {\n    return false;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const vScale = meta.vScale;\n    const parsed = this.getParsed(index);\n    return {\n      label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n      value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n    };\n  }\n  _update(mode) {\n    const meta = this._cachedMeta;\n    this.update(mode || 'default');\n    meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n  }\n  update(mode) {}\n  draw() {\n    const ctx = this._ctx;\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const elements = meta.data || [];\n    const area = chart.chartArea;\n    const active = [];\n    const start = this._drawStart || 0;\n    const count = this._drawCount || (elements.length - start);\n    const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n    let i;\n    if (meta.dataset) {\n      meta.dataset.draw(ctx, area, start, count);\n    }\n    for (i = start; i < start + count; ++i) {\n      const element = elements[i];\n      if (element.hidden) {\n        continue;\n      }\n      if (element.active && drawActiveElementsOnTop) {\n        active.push(element);\n      } else {\n        element.draw(ctx, area);\n      }\n    }\n    for (i = 0; i < active.length; ++i) {\n      active[i].draw(ctx, area);\n    }\n  }\n  getStyle(index, active) {\n    const mode = active ? 'active' : 'default';\n    return index === undefined && this._cachedMeta.dataset\n      ? this.resolveDatasetElementOptions(mode)\n      : this.resolveDataElementOptions(index || 0, mode);\n  }\n  getContext(index, active, mode) {\n    const dataset = this.getDataset();\n    let context;\n    if (index >= 0 && index < this._cachedMeta.data.length) {\n      const element = this._cachedMeta.data[index];\n      context = element.$context ||\n        (element.$context = createDataContext(this.getContext(), index, element));\n      context.parsed = this.getParsed(index);\n      context.raw = dataset.data[index];\n      context.index = context.dataIndex = index;\n    } else {\n      context = this.$context ||\n        (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n      context.dataset = dataset;\n      context.index = context.datasetIndex = this.index;\n    }\n    context.active = !!active;\n    context.mode = mode;\n    return context;\n  }\n  resolveDatasetElementOptions(mode) {\n    return this._resolveElementOptions(this.datasetElementType.id, mode);\n  }\n  resolveDataElementOptions(index, mode) {\n    return this._resolveElementOptions(this.dataElementType.id, mode, index);\n  }\n  _resolveElementOptions(elementType, mode = 'default', index) {\n    const active = mode === 'active';\n    const cache = this._cachedDataOpts;\n    const cacheKey = elementType + '-' + mode;\n    const cached = cache[cacheKey];\n    const sharing = this.enableOptionSharing && defined(index);\n    if (cached) {\n      return cloneIfNotShared(cached, sharing);\n    }\n    const config = this.chart.config;\n    const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n    const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n    const names = Object.keys(defaults.elements[elementType]);\n    const context = () => this.getContext(index, active);\n    const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n    if (values.$shared) {\n      values.$shared = sharing;\n      cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n    }\n    return values;\n  }\n  _resolveAnimations(index, transition, active) {\n    const chart = this.chart;\n    const cache = this._cachedDataOpts;\n    const cacheKey = `animation-${transition}`;\n    const cached = cache[cacheKey];\n    if (cached) {\n      return cached;\n    }\n    let options;\n    if (chart.options.animation !== false) {\n      const config = this.chart.config;\n      const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n      const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n      options = config.createResolver(scopes, this.getContext(index, active, transition));\n    }\n    const animations = new Animations(chart, options && options.animations);\n    if (options && options._cacheable) {\n      cache[cacheKey] = Object.freeze(animations);\n    }\n    return animations;\n  }\n  getSharedOptions(options) {\n    if (!options.$shared) {\n      return;\n    }\n    return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n  }\n  includeOptions(mode, sharedOptions) {\n    return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n  }\n  _getSharedOptions(start, mode) {\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const previouslySharedOptions = this._sharedOptions;\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n    return {sharedOptions, includeOptions};\n  }\n  updateElement(element, index, properties, mode) {\n    if (isDirectUpdateMode(mode)) {\n      Object.assign(element, properties);\n    } else {\n      this._resolveAnimations(index, mode).update(element, properties);\n    }\n  }\n  updateSharedOptions(sharedOptions, mode, newOptions) {\n    if (sharedOptions && !isDirectUpdateMode(mode)) {\n      this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n    }\n  }\n  _setStyle(element, index, mode, active) {\n    element.active = active;\n    const options = this.getStyle(index, active);\n    this._resolveAnimations(index, mode, active).update(element, {\n      options: (!active && this.getSharedOptions(options)) || options\n    });\n  }\n  removeHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', false);\n  }\n  setHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', true);\n  }\n  _removeDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n    if (element) {\n      this._setStyle(element, undefined, 'active', false);\n    }\n  }\n  _setDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n    if (element) {\n      this._setStyle(element, undefined, 'active', true);\n    }\n  }\n  _resyncElements(resetNewElements) {\n    const data = this._data;\n    const elements = this._cachedMeta.data;\n    for (const [method, arg1, arg2] of this._syncList) {\n      this[method](arg1, arg2);\n    }\n    this._syncList = [];\n    const numMeta = elements.length;\n    const numData = data.length;\n    const count = Math.min(numData, numMeta);\n    if (count) {\n      this.parse(0, count);\n    }\n    if (numData > numMeta) {\n      this._insertElements(numMeta, numData - numMeta, resetNewElements);\n    } else if (numData < numMeta) {\n      this._removeElements(numData, numMeta - numData);\n    }\n  }\n  _insertElements(start, count, resetNewElements = true) {\n    const meta = this._cachedMeta;\n    const data = meta.data;\n    const end = start + count;\n    let i;\n    const move = (arr) => {\n      arr.length += count;\n      for (i = arr.length - 1; i >= end; i--) {\n        arr[i] = arr[i - count];\n      }\n    };\n    move(data);\n    for (i = start; i < end; ++i) {\n      data[i] = new this.dataElementType();\n    }\n    if (this._parsing) {\n      move(meta._parsed);\n    }\n    this.parse(start, count);\n    if (resetNewElements) {\n      this.updateElements(data, start, count, 'reset');\n    }\n  }\n  updateElements(element, start, count, mode) {}\n  _removeElements(start, count) {\n    const meta = this._cachedMeta;\n    if (this._parsing) {\n      const removed = meta._parsed.splice(start, count);\n      if (meta._stacked) {\n        clearStacks(meta, removed);\n      }\n    }\n    meta.data.splice(start, count);\n  }\n  _sync(args) {\n    if (this._parsing) {\n      this._syncList.push(args);\n    } else {\n      const [method, arg1, arg2] = args;\n      this[method](arg1, arg2);\n    }\n    this.chart._dataChanges.push([this.index, ...args]);\n  }\n  _onDataPush() {\n    const count = arguments.length;\n    this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n  }\n  _onDataPop() {\n    this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n  }\n  _onDataShift() {\n    this._sync(['_removeElements', 0, 1]);\n  }\n  _onDataSplice(start, count) {\n    if (count) {\n      this._sync(['_removeElements', start, count]);\n    }\n    const newCount = arguments.length - 2;\n    if (newCount) {\n      this._sync(['_insertElements', start, newCount]);\n    }\n  }\n  _onDataUnshift() {\n    this._sync(['_insertElements', 0, arguments.length]);\n  }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n  if (!scale._cache.$bar) {\n    const visibleMetas = scale.getMatchingVisibleMetas(type);\n    let values = [];\n    for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n      values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n    }\n    scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n  }\n  return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n  const scale = meta.iScale;\n  const values = getAllScaleValues(scale, meta.type);\n  let min = scale._length;\n  let i, ilen, curr, prev;\n  const updateMinAndPrev = () => {\n    if (curr === 32767 || curr === -32768) {\n      return;\n    }\n    if (defined(prev)) {\n      min = Math.min(min, Math.abs(curr - prev) || min);\n    }\n    prev = curr;\n  };\n  for (i = 0, ilen = values.length; i < ilen; ++i) {\n    curr = scale.getPixelForValue(values[i]);\n    updateMinAndPrev();\n  }\n  prev = undefined;\n  for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n    curr = scale.getPixelForTick(i);\n    updateMinAndPrev();\n  }\n  return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n  const thickness = options.barThickness;\n  let size, ratio;\n  if (isNullOrUndef(thickness)) {\n    size = ruler.min * options.categoryPercentage;\n    ratio = options.barPercentage;\n  } else {\n    size = thickness * stackCount;\n    ratio = 1;\n  }\n  return {\n    chunk: size / stackCount,\n    ratio,\n    start: ruler.pixels[index] - (size / 2)\n  };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n  const pixels = ruler.pixels;\n  const curr = pixels[index];\n  let prev = index > 0 ? pixels[index - 1] : null;\n  let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n  const percent = options.categoryPercentage;\n  if (prev === null) {\n    prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n  }\n  if (next === null) {\n    next = curr + curr - prev;\n  }\n  const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n  const size = Math.abs(next - prev) / 2 * percent;\n  return {\n    chunk: size / stackCount,\n    ratio: options.barPercentage,\n    start\n  };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n  const startValue = vScale.parse(entry[0], i);\n  const endValue = vScale.parse(entry[1], i);\n  const min = Math.min(startValue, endValue);\n  const max = Math.max(startValue, endValue);\n  let barStart = min;\n  let barEnd = max;\n  if (Math.abs(min) > Math.abs(max)) {\n    barStart = max;\n    barEnd = min;\n  }\n  item[vScale.axis] = barEnd;\n  item._custom = {\n    barStart,\n    barEnd,\n    start: startValue,\n    end: endValue,\n    min,\n    max\n  };\n}\nfunction parseValue(entry, item, vScale, i) {\n  if (isArray(entry)) {\n    parseFloatBar(entry, item, vScale, i);\n  } else {\n    item[vScale.axis] = vScale.parse(entry, i);\n  }\n  return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n  const iScale = meta.iScale;\n  const vScale = meta.vScale;\n  const labels = iScale.getLabels();\n  const singleScale = iScale === vScale;\n  const parsed = [];\n  let i, ilen, item, entry;\n  for (i = start, ilen = start + count; i < ilen; ++i) {\n    entry = data[i];\n    item = {};\n    item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n    parsed.push(parseValue(entry, item, vScale, i));\n  }\n  return parsed;\n}\nfunction isFloatBar(custom) {\n  return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n  if (size !== 0) {\n    return sign(size);\n  }\n  return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n  let reverse, start, end, top, bottom;\n  if (properties.horizontal) {\n    reverse = properties.base > properties.x;\n    start = 'left';\n    end = 'right';\n  } else {\n    reverse = properties.base < properties.y;\n    start = 'bottom';\n    end = 'top';\n  }\n  if (reverse) {\n    top = 'end';\n    bottom = 'start';\n  } else {\n    top = 'start';\n    bottom = 'end';\n  }\n  return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n  let edge = options.borderSkipped;\n  const res = {};\n  if (!edge) {\n    properties.borderSkipped = res;\n    return;\n  }\n  if (edge === true) {\n    properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n    return;\n  }\n  const {start, end, reverse, top, bottom} = borderProps(properties);\n  if (edge === 'middle' && stack) {\n    properties.enableBorderRadius = true;\n    if ((stack._top || 0) === index) {\n      edge = top;\n    } else if ((stack._bottom || 0) === index) {\n      edge = bottom;\n    } else {\n      res[parseEdge(bottom, start, end, reverse)] = true;\n      edge = top;\n    }\n  }\n  res[parseEdge(edge, start, end, reverse)] = true;\n  properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n  if (reverse) {\n    edge = swap(edge, a, b);\n    edge = startEnd(edge, b, a);\n  } else {\n    edge = startEnd(edge, a, b);\n  }\n  return edge;\n}\nfunction swap(orig, v1, v2) {\n  return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n  return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n  properties.inflateAmount = inflateAmount === 'auto'\n    ? ratio === 1 ? 0.33 : 0\n    : inflateAmount;\n}\nclass BarController extends DatasetController {\n  parsePrimitiveData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n  parseArrayData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n  parseObjectData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const parsed = [];\n    let i, ilen, item, obj;\n    for (i = start, ilen = start + count; i < ilen; ++i) {\n      obj = data[i];\n      item = {};\n      item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n      parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n    }\n    return parsed;\n  }\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    super.updateRangeFromParsed(range, scale, parsed, stack);\n    const custom = parsed._custom;\n    if (custom && scale === this._cachedMeta.vScale) {\n      range.min = Math.min(range.min, custom.min);\n      range.max = Math.max(range.max, custom.max);\n    }\n  }\n  getMaxOverflow() {\n    return 0;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const {iScale, vScale} = meta;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const value = isFloatBar(custom)\n      ? '[' + custom.start + ', ' + custom.end + ']'\n      : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n    return {\n      label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n      value\n    };\n  }\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n    const meta = this._cachedMeta;\n    meta.stack = this.getDataset().stack;\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    this.updateElements(meta.data, 0, meta.data.length, mode);\n  }\n  updateElements(bars, start, count, mode) {\n    const reset = mode === 'reset';\n    const {index, _cachedMeta: {vScale}} = this;\n    const base = vScale.getBasePixel();\n    const horizontal = vScale.isHorizontal();\n    const ruler = this._getRuler();\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    for (let i = start; i < start + count; i++) {\n      const parsed = this.getParsed(i);\n      const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n      const ipixels = this._calculateBarIndexPixels(i, ruler);\n      const stack = (parsed._stacks || {})[vScale.axis];\n      const properties = {\n        horizontal,\n        base: vpixels.base,\n        enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n        x: horizontal ? vpixels.head : ipixels.center,\n        y: horizontal ? ipixels.center : vpixels.head,\n        height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n        width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n      };\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n      }\n      const options = properties.options || bars[i].options;\n      setBorderSkipped(properties, options, stack, index);\n      setInflateAmount(properties, options, ruler.ratio);\n      this.updateElement(bars[i], i, properties, mode);\n    }\n  }\n  _getStacks(last, dataIndex) {\n    const {iScale} = this._cachedMeta;\n    const metasets = iScale.getMatchingVisibleMetas(this._type)\n      .filter(meta => meta.controller.options.grouped);\n    const stacked = iScale.options.stacked;\n    const stacks = [];\n    const skipNull = (meta) => {\n      const parsed = meta.controller.getParsed(dataIndex);\n      const val = parsed && parsed[meta.vScale.axis];\n      if (isNullOrUndef(val) || isNaN(val)) {\n        return true;\n      }\n    };\n    for (const meta of metasets) {\n      if (dataIndex !== undefined && skipNull(meta)) {\n        continue;\n      }\n      if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n        stacks.push(meta.stack);\n      }\n      if (meta.index === last) {\n        break;\n      }\n    }\n    if (!stacks.length) {\n      stacks.push(undefined);\n    }\n    return stacks;\n  }\n  _getStackCount(index) {\n    return this._getStacks(undefined, index).length;\n  }\n  _getStackIndex(datasetIndex, name, dataIndex) {\n    const stacks = this._getStacks(datasetIndex, dataIndex);\n    const index = (name !== undefined)\n      ? stacks.indexOf(name)\n      : -1;\n    return (index === -1)\n      ? stacks.length - 1\n      : index;\n  }\n  _getRuler() {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const pixels = [];\n    let i, ilen;\n    for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n      pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n    }\n    const barThickness = opts.barThickness;\n    const min = barThickness || computeMinSampleSize(meta);\n    return {\n      min,\n      pixels,\n      start: iScale._startPixel,\n      end: iScale._endPixel,\n      stackCount: this._getStackCount(),\n      scale: iScale,\n      grouped: opts.grouped,\n      ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n    };\n  }\n  _calculateBarValuePixels(index) {\n    const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n    const actualBase = baseValue || 0;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const floating = isFloatBar(custom);\n    let value = parsed[vScale.axis];\n    let start = 0;\n    let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n    let head, size;\n    if (length !== value) {\n      start = length - value;\n      length = value;\n    }\n    if (floating) {\n      value = custom.barStart;\n      length = custom.barEnd - custom.barStart;\n      if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n        start = 0;\n      }\n      start += value;\n    }\n    const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n    let base = vScale.getPixelForValue(startValue);\n    if (this.chart.getDataVisibility(index)) {\n      head = vScale.getPixelForValue(start + length);\n    } else {\n      head = base;\n    }\n    size = head - base;\n    if (Math.abs(size) < minBarLength) {\n      size = barSign(size, vScale, actualBase) * minBarLength;\n      if (value === actualBase) {\n        base -= size / 2;\n      }\n      const startPixel = vScale.getPixelForDecimal(0);\n      const endPixel = vScale.getPixelForDecimal(1);\n      const min = Math.min(startPixel, endPixel);\n      const max = Math.max(startPixel, endPixel);\n      base = Math.max(Math.min(base, max), min);\n      head = base + size;\n    }\n    if (base === vScale.getPixelForValue(actualBase)) {\n      const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n      base += halfGrid;\n      size -= halfGrid;\n    }\n    return {\n      size,\n      base,\n      head,\n      center: head + size / 2\n    };\n  }\n  _calculateBarIndexPixels(index, ruler) {\n    const scale = ruler.scale;\n    const options = this.options;\n    const skipNull = options.skipNull;\n    const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n    let center, size;\n    if (ruler.grouped) {\n      const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n      const range = options.barThickness === 'flex'\n        ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n        : computeFitCategoryTraits(index, ruler, options, stackCount);\n      const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n      center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n      size = Math.min(maxBarThickness, range.chunk * range.ratio);\n    } else {\n      center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n      size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n    }\n    return {\n      base: center - size / 2,\n      head: center + size / 2,\n      center,\n      size\n    };\n  }\n  draw() {\n    const meta = this._cachedMeta;\n    const vScale = meta.vScale;\n    const rects = meta.data;\n    const ilen = rects.length;\n    let i = 0;\n    for (; i < ilen; ++i) {\n      if (this.getParsed(i)[vScale.axis] !== null) {\n        rects[i].draw(this._ctx);\n      }\n    }\n  }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'bar',\n  categoryPercentage: 0.8,\n  barPercentage: 0.9,\n  grouped: true,\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'base', 'width', 'height']\n    }\n  }\n};\nBarController.overrides = {\n  scales: {\n    _index_: {\n      type: 'category',\n      offset: true,\n      grid: {\n        offset: true\n      }\n    },\n    _value_: {\n      type: 'linear',\n      beginAtZero: true,\n    }\n  }\n};\n\nclass BubbleController extends DatasetController {\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n  }\n  parsePrimitiveData(meta, data, start, count) {\n    const parsed = super.parsePrimitiveData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n    }\n    return parsed;\n  }\n  parseArrayData(meta, data, start, count) {\n    const parsed = super.parseArrayData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n  parseObjectData(meta, data, start, count) {\n    const parsed = super.parseObjectData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n  getMaxOverflow() {\n    const data = this._cachedMeta.data;\n    let max = 0;\n    for (let i = data.length - 1; i >= 0; --i) {\n      max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n    }\n    return max > 0 && max;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const {xScale, yScale} = meta;\n    const parsed = this.getParsed(index);\n    const x = xScale.getLabelForValue(parsed.x);\n    const y = yScale.getLabelForValue(parsed.y);\n    const r = parsed._custom;\n    return {\n      label: meta.label,\n      value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n    };\n  }\n  update(mode) {\n    const points = this._cachedMeta.data;\n    this.updateElements(points, 0, points.length, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale} = this._cachedMeta;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const parsed = !reset && this.getParsed(i);\n      const properties = {};\n      const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n      const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n      properties.skip = isNaN(iPixel) || isNaN(vPixel);\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n        if (reset) {\n          properties.options.radius = 0;\n        }\n      }\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n  resolveDataElementOptions(index, mode) {\n    const parsed = this.getParsed(index);\n    let values = super.resolveDataElementOptions(index, mode);\n    if (values.$shared) {\n      values = Object.assign({}, values, {$shared: false});\n    }\n    const radius = values.radius;\n    if (mode !== 'active') {\n      values.radius = 0;\n    }\n    values.radius += valueOrDefault(parsed && parsed._custom, radius);\n    return values;\n  }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'point',\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'borderWidth', 'radius']\n    }\n  }\n};\nBubbleController.overrides = {\n  scales: {\n    x: {\n      type: 'linear'\n    },\n    y: {\n      type: 'linear'\n    }\n  },\n  plugins: {\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        }\n      }\n    }\n  }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n  let ratioX = 1;\n  let ratioY = 1;\n  let offsetX = 0;\n  let offsetY = 0;\n  if (circumference < TAU) {\n    const startAngle = rotation;\n    const endAngle = startAngle + circumference;\n    const startX = Math.cos(startAngle);\n    const startY = Math.sin(startAngle);\n    const endX = Math.cos(endAngle);\n    const endY = Math.sin(endAngle);\n    const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n    const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n    const maxX = calcMax(0, startX, endX);\n    const maxY = calcMax(HALF_PI, startY, endY);\n    const minX = calcMin(PI, startX, endX);\n    const minY = calcMin(PI + HALF_PI, startY, endY);\n    ratioX = (maxX - minX) / 2;\n    ratioY = (maxY - minY) / 2;\n    offsetX = -(maxX + minX) / 2;\n    offsetY = -(maxY + minY) / 2;\n  }\n  return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n    this.enableOptionSharing = true;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.offsetX = undefined;\n    this.offsetY = undefined;\n  }\n  linkScales() {}\n  parse(start, count) {\n    const data = this.getDataset().data;\n    const meta = this._cachedMeta;\n    if (this._parsing === false) {\n      meta._parsed = data;\n    } else {\n      let getter = (i) => +data[i];\n      if (isObject(data[start])) {\n        const {key = 'value'} = this._parsing;\n        getter = (i) => +resolveObjectKey(data[i], key);\n      }\n      let i, ilen;\n      for (i = start, ilen = start + count; i < ilen; ++i) {\n        meta._parsed[i] = getter(i);\n      }\n    }\n  }\n  _getRotation() {\n    return toRadians(this.options.rotation - 90);\n  }\n  _getCircumference() {\n    return toRadians(this.options.circumference);\n  }\n  _getRotationExtents() {\n    let min = TAU;\n    let max = -TAU;\n    for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        const controller = this.chart.getDatasetMeta(i).controller;\n        const rotation = controller._getRotation();\n        const circumference = controller._getCircumference();\n        min = Math.min(min, rotation);\n        max = Math.max(max, rotation + circumference);\n      }\n    }\n    return {\n      rotation: min,\n      circumference: max - min,\n    };\n  }\n  update(mode) {\n    const chart = this.chart;\n    const {chartArea} = chart;\n    const meta = this._cachedMeta;\n    const arcs = meta.data;\n    const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n    const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n    const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n    const chartWeight = this._getRingWeight(this.index);\n    const {circumference, rotation} = this._getRotationExtents();\n    const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n    const maxWidth = (chartArea.width - spacing) / ratioX;\n    const maxHeight = (chartArea.height - spacing) / ratioY;\n    const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n    const outerRadius = toDimension(this.options.radius, maxRadius);\n    const innerRadius = Math.max(outerRadius * cutout, 0);\n    const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n    this.offsetX = offsetX * outerRadius;\n    this.offsetY = offsetY * outerRadius;\n    meta.total = this.calculateTotal();\n    this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n    this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n  _circumference(i, reset) {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const circumference = this._getCircumference();\n    if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n      return 0;\n    }\n    return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n  }\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const centerX = (chartArea.left + chartArea.right) / 2;\n    const centerY = (chartArea.top + chartArea.bottom) / 2;\n    const animateScale = reset && animationOpts.animateScale;\n    const innerRadius = animateScale ? 0 : this.innerRadius;\n    const outerRadius = animateScale ? 0 : this.outerRadius;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    let startAngle = this._getRotation();\n    let i;\n    for (i = 0; i < start; ++i) {\n      startAngle += this._circumference(i, reset);\n    }\n    for (i = start; i < start + count; ++i) {\n      const circumference = this._circumference(i, reset);\n      const arc = arcs[i];\n      const properties = {\n        x: centerX + this.offsetX,\n        y: centerY + this.offsetY,\n        startAngle,\n        endAngle: startAngle + circumference,\n        circumference,\n        outerRadius,\n        innerRadius\n      };\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n      }\n      startAngle += circumference;\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n  calculateTotal() {\n    const meta = this._cachedMeta;\n    const metaData = meta.data;\n    let total = 0;\n    let i;\n    for (i = 0; i < metaData.length; i++) {\n      const value = meta._parsed[i];\n      if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n        total += Math.abs(value);\n      }\n    }\n    return total;\n  }\n  calculateCircumference(value) {\n    const total = this._cachedMeta.total;\n    if (total > 0 && !isNaN(value)) {\n      return TAU * (Math.abs(value) / total);\n    }\n    return 0;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index], chart.options.locale);\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n  getMaxBorderWidth(arcs) {\n    let max = 0;\n    const chart = this.chart;\n    let i, ilen, meta, controller, options;\n    if (!arcs) {\n      for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n        if (chart.isDatasetVisible(i)) {\n          meta = chart.getDatasetMeta(i);\n          arcs = meta.data;\n          controller = meta.controller;\n          break;\n        }\n      }\n    }\n    if (!arcs) {\n      return 0;\n    }\n    for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n      options = controller.resolveDataElementOptions(i);\n      if (options.borderAlign !== 'inner') {\n        max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n      }\n    }\n    return max;\n  }\n  getMaxOffset(arcs) {\n    let max = 0;\n    for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n      const options = this.resolveDataElementOptions(i);\n      max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n    }\n    return max;\n  }\n  _getRingWeightOffset(datasetIndex) {\n    let ringWeightOffset = 0;\n    for (let i = 0; i < datasetIndex; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        ringWeightOffset += this._getRingWeight(i);\n      }\n    }\n    return ringWeightOffset;\n  }\n  _getRingWeight(datasetIndex) {\n    return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n  }\n  _getVisibleDatasetWeightTotal() {\n    return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n  }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'arc',\n  animation: {\n    animateRotate: true,\n    animateScale: false\n  },\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n    },\n  },\n  cutout: '50%',\n  rotation: 0,\n  circumference: 360,\n  radius: '100%',\n  spacing: 0,\n  indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n  _scriptable: (name) => name !== 'spacing',\n  _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n  aspectRatio: 1,\n  plugins: {\n    legend: {\n      labels: {\n        generateLabels(chart) {\n          const data = chart.data;\n          if (data.labels.length && data.datasets.length) {\n            const {labels: {pointStyle}} = chart.legend.options;\n            return data.labels.map((label, i) => {\n              const meta = chart.getDatasetMeta(0);\n              const style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                pointStyle: pointStyle,\n                hidden: !chart.getDataVisibility(i),\n                index: i\n              };\n            });\n          }\n          return [];\n        }\n      },\n      onClick(e, legendItem, legend) {\n        legend.chart.toggleDataVisibility(legendItem.index);\n        legend.chart.update();\n      }\n    },\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(tooltipItem) {\n          let dataLabel = tooltipItem.label;\n          const value = ': ' + tooltipItem.formattedValue;\n          if (isArray(dataLabel)) {\n            dataLabel = dataLabel.slice();\n            dataLabel[0] += value;\n          } else {\n            dataLabel += value;\n          }\n          return dataLabel;\n        }\n      }\n    }\n  }\n};\n\nclass LineController extends DatasetController {\n  initialize() {\n    this.enableOptionSharing = true;\n    this.supportsDecimation = true;\n    super.initialize();\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {dataset: line, data: points = [], _dataset} = meta;\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n    this._drawStart = start;\n    this._drawCount = count;\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n    line._chart = this.chart;\n    line._datasetIndex = this.index;\n    line._decimated = !!_dataset._decimated;\n    line.points = points;\n    const options = this.resolveDatasetElementOptions(mode);\n    if (!this.options.showLine) {\n      options.borderWidth = 0;\n    }\n    options.segment = this.options.segment;\n    this.updateElement(line, undefined, {\n      animated: !animationsDisabled,\n      options\n    }, mode);\n    this.updateElements(points, start, count, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n    for (let i = start; i < start + count; ++i) {\n      const point = points[i];\n      const parsed = this.getParsed(i);\n      const properties = directUpdate ? point : {};\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n      prevParsed = parsed;\n    }\n  }\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n    const data = meta.data || [];\n    if (!data.length) {\n      return border;\n    }\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n  draw() {\n    const meta = this._cachedMeta;\n    meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n    super.draw();\n  }\n}\nLineController.id = 'line';\nLineController.defaults = {\n  datasetElementType: 'line',\n  dataElementType: 'point',\n  showLine: true,\n  spanGaps: false,\n};\nLineController.overrides = {\n  scales: {\n    _index_: {\n      type: 'category',\n    },\n    _value_: {\n      type: 'linear',\n    },\n  }\n};\n\nclass PolarAreaController extends DatasetController {\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n  update(mode) {\n    const arcs = this._cachedMeta.data;\n    this._updateRadius();\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n  getMinMax() {\n    const meta = this._cachedMeta;\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n    meta.data.forEach((element, index) => {\n      const parsed = this.getParsed(index).r;\n      if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n        if (parsed < range.min) {\n          range.min = parsed;\n        }\n        if (parsed > range.max) {\n          range.max = parsed;\n        }\n      }\n    });\n    return range;\n  }\n  _updateRadius() {\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n    const outerRadius = Math.max(minSize / 2, 0);\n    const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n    const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n    this.outerRadius = outerRadius - (radiusLength * this.index);\n    this.innerRadius = this.outerRadius - radiusLength;\n  }\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const scale = this._cachedMeta.rScale;\n    const centerX = scale.xCenter;\n    const centerY = scale.yCenter;\n    const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n    let angle = datasetStartAngle;\n    let i;\n    const defaultAngle = 360 / this.countVisibleElements();\n    for (i = 0; i < start; ++i) {\n      angle += this._computeAngle(i, mode, defaultAngle);\n    }\n    for (i = start; i < start + count; i++) {\n      const arc = arcs[i];\n      let startAngle = angle;\n      let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n      let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n      angle = endAngle;\n      if (reset) {\n        if (animationOpts.animateScale) {\n          outerRadius = 0;\n        }\n        if (animationOpts.animateRotate) {\n          startAngle = endAngle = datasetStartAngle;\n        }\n      }\n      const properties = {\n        x: centerX,\n        y: centerY,\n        innerRadius: 0,\n        outerRadius,\n        startAngle,\n        endAngle,\n        options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n      };\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n  countVisibleElements() {\n    const meta = this._cachedMeta;\n    let count = 0;\n    meta.data.forEach((element, index) => {\n      if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n        count++;\n      }\n    });\n    return count;\n  }\n  _computeAngle(index, mode, defaultAngle) {\n    return this.chart.getDataVisibility(index)\n      ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n      : 0;\n  }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n  dataElementType: 'arc',\n  animation: {\n    animateRotate: true,\n    animateScale: true\n  },\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n    },\n  },\n  indexAxis: 'r',\n  startAngle: 0,\n};\nPolarAreaController.overrides = {\n  aspectRatio: 1,\n  plugins: {\n    legend: {\n      labels: {\n        generateLabels(chart) {\n          const data = chart.data;\n          if (data.labels.length && data.datasets.length) {\n            const {labels: {pointStyle}} = chart.legend.options;\n            return data.labels.map((label, i) => {\n              const meta = chart.getDatasetMeta(0);\n              const style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                pointStyle: pointStyle,\n                hidden: !chart.getDataVisibility(i),\n                index: i\n              };\n            });\n          }\n          return [];\n        }\n      },\n      onClick(e, legendItem, legend) {\n        legend.chart.toggleDataVisibility(legendItem.index);\n        legend.chart.update();\n      }\n    },\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(context) {\n          return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n        }\n      }\n    }\n  },\n  scales: {\n    r: {\n      type: 'radialLinear',\n      angleLines: {\n        display: false\n      },\n      beginAtZero: true,\n      grid: {\n        circular: true\n      },\n      pointLabels: {\n        display: false\n      },\n      startAngle: 0\n    }\n  }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n  cutout: 0,\n  rotation: 0,\n  circumference: 360,\n  radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n  getLabelAndValue(index) {\n    const vScale = this._cachedMeta.vScale;\n    const parsed = this.getParsed(index);\n    return {\n      label: vScale.getLabels()[index],\n      value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n    };\n  }\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    const line = meta.dataset;\n    const points = meta.data || [];\n    const labels = meta.iScale.getLabels();\n    line.points = points;\n    if (mode !== 'resize') {\n      const options = this.resolveDatasetElementOptions(mode);\n      if (!this.options.showLine) {\n        options.borderWidth = 0;\n      }\n      const properties = {\n        _loop: true,\n        _fullLoop: labels.length === points.length,\n        options\n      };\n      this.updateElement(line, undefined, properties, mode);\n    }\n    this.updateElements(points, 0, points.length, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const scale = this._cachedMeta.rScale;\n    const reset = mode === 'reset';\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n      const x = reset ? scale.xCenter : pointPosition.x;\n      const y = reset ? scale.yCenter : pointPosition.y;\n      const properties = {\n        x,\n        y,\n        angle: pointPosition.angle,\n        skip: isNaN(x) || isNaN(y),\n        options\n      };\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n  datasetElementType: 'line',\n  dataElementType: 'point',\n  indexAxis: 'r',\n  showLine: true,\n  elements: {\n    line: {\n      fill: 'start'\n    }\n  },\n};\nRadarController.overrides = {\n  aspectRatio: 1,\n  scales: {\n    r: {\n      type: 'radialLinear',\n    }\n  }\n};\n\nclass Element {\n  constructor() {\n    this.x = undefined;\n    this.y = undefined;\n    this.active = false;\n    this.options = undefined;\n    this.$animations = undefined;\n  }\n  tooltipPosition(useFinalPosition) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n  hasValue() {\n    return isNumber(this.x) && isNumber(this.y);\n  }\n  getProps(props, final) {\n    const anims = this.$animations;\n    if (!final || !anims) {\n      return this;\n    }\n    const ret = {};\n    props.forEach(prop => {\n      ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n    });\n    return ret;\n  }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n  values(value) {\n    return isArray(value) ? value : '' + value;\n  },\n  numeric(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const locale = this.chart.options.locale;\n    let notation;\n    let delta = tickValue;\n    if (ticks.length > 1) {\n      const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n      if (maxTick < 1e-4 || maxTick > 1e+15) {\n        notation = 'scientific';\n      }\n      delta = calculateDelta(tickValue, ticks);\n    }\n    const logDelta = log10(Math.abs(delta));\n    const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n    const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n    Object.assign(options, this.options.ticks.format);\n    return formatNumber(tickValue, locale, options);\n  },\n  logarithmic(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n    if (remain === 1 || remain === 2 || remain === 5) {\n      return formatters.numeric.call(this, tickValue, index, ticks);\n    }\n    return '';\n  }\n};\nfunction calculateDelta(tickValue, ticks) {\n  let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n  if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n    delta = tickValue - Math.floor(tickValue);\n  }\n  return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n  display: true,\n  offset: false,\n  reverse: false,\n  beginAtZero: false,\n  bounds: 'ticks',\n  grace: 0,\n  grid: {\n    display: true,\n    lineWidth: 1,\n    drawBorder: true,\n    drawOnChartArea: true,\n    drawTicks: true,\n    tickLength: 8,\n    tickWidth: (_ctx, options) => options.lineWidth,\n    tickColor: (_ctx, options) => options.color,\n    offset: false,\n    borderDash: [],\n    borderDashOffset: 0.0,\n    borderWidth: 1\n  },\n  title: {\n    display: false,\n    text: '',\n    padding: {\n      top: 4,\n      bottom: 4\n    }\n  },\n  ticks: {\n    minRotation: 0,\n    maxRotation: 50,\n    mirror: false,\n    textStrokeWidth: 0,\n    textStrokeColor: '',\n    padding: 3,\n    display: true,\n    autoSkip: true,\n    autoSkipPadding: 3,\n    labelOffset: 0,\n    callback: Ticks.formatters.values,\n    minor: {},\n    major: {},\n    align: 'center',\n    crossAlign: 'near',\n    showLabelBackdrop: false,\n    backdropColor: 'rgba(255, 255, 255, 0.75)',\n    backdropPadding: 2,\n  }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n  _fallback: false,\n  _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n  _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n  _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n  _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n  _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n  const tickOpts = scale.options.ticks;\n  const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n  const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n  const numMajorIndices = majorIndices.length;\n  const first = majorIndices[0];\n  const last = majorIndices[numMajorIndices - 1];\n  const newTicks = [];\n  if (numMajorIndices > ticksLimit) {\n    skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n    return newTicks;\n  }\n  const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n  if (numMajorIndices > 0) {\n    let i, ilen;\n    const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n    skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n    for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n      skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n    }\n    skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n    return newTicks;\n  }\n  skip(ticks, newTicks, spacing);\n  return newTicks;\n}\nfunction determineMaxTicks(scale) {\n  const offset = scale.options.offset;\n  const tickLength = scale._tickSize();\n  const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n  const maxChart = scale._maxLength / tickLength;\n  return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n  const evenMajorSpacing = getEvenSpacing(majorIndices);\n  const spacing = ticks.length / ticksLimit;\n  if (!evenMajorSpacing) {\n    return Math.max(spacing, 1);\n  }\n  const factors = _factorize(evenMajorSpacing);\n  for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n    const factor = factors[i];\n    if (factor > spacing) {\n      return factor;\n    }\n  }\n  return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n  const result = [];\n  let i, ilen;\n  for (i = 0, ilen = ticks.length; i < ilen; i++) {\n    if (ticks[i].major) {\n      result.push(i);\n    }\n  }\n  return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n  let count = 0;\n  let next = majorIndices[0];\n  let i;\n  spacing = Math.ceil(spacing);\n  for (i = 0; i < ticks.length; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = majorIndices[count * spacing];\n    }\n  }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n  const start = valueOrDefault(majorStart, 0);\n  const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n  let count = 0;\n  let length, i, next;\n  spacing = Math.ceil(spacing);\n  if (majorEnd) {\n    length = majorEnd - majorStart;\n    spacing = length / Math.floor(length / spacing);\n  }\n  next = start;\n  while (next < 0) {\n    count++;\n    next = Math.round(start + count * spacing);\n  }\n  for (i = Math.max(start, 0); i < end; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = Math.round(start + count * spacing);\n    }\n  }\n}\nfunction getEvenSpacing(arr) {\n  const len = arr.length;\n  let i, diff;\n  if (len < 2) {\n    return false;\n  }\n  for (diff = arr[0], i = 1; i < len; ++i) {\n    if (arr[i] - arr[i - 1] !== diff) {\n      return false;\n    }\n  }\n  return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n  const result = [];\n  const increment = arr.length / numItems;\n  const len = arr.length;\n  let i = 0;\n  for (; i < len; i += increment) {\n    result.push(arr[Math.floor(i)]);\n  }\n  return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n  const length = scale.ticks.length;\n  const validIndex = Math.min(index, length - 1);\n  const start = scale._startPixel;\n  const end = scale._endPixel;\n  const epsilon = 1e-6;\n  let lineValue = scale.getPixelForTick(validIndex);\n  let offset;\n  if (offsetGridLines) {\n    if (length === 1) {\n      offset = Math.max(lineValue - start, end - lineValue);\n    } else if (index === 0) {\n      offset = (scale.getPixelForTick(1) - lineValue) / 2;\n    } else {\n      offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n    }\n    lineValue += validIndex < index ? offset : -offset;\n    if (lineValue < start - epsilon || lineValue > end + epsilon) {\n      return;\n    }\n  }\n  return lineValue;\n}\nfunction garbageCollect(caches, length) {\n  each(caches, (cache) => {\n    const gc = cache.gc;\n    const gcLen = gc.length / 2;\n    let i;\n    if (gcLen > length) {\n      for (i = 0; i < gcLen; ++i) {\n        delete cache.data[gc[i]];\n      }\n      gc.splice(0, gcLen);\n    }\n  });\n}\nfunction getTickMarkLength(options) {\n  return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n  if (!options.display) {\n    return 0;\n  }\n  const font = toFont(options.font, fallback);\n  const padding = toPadding(options.padding);\n  const lines = isArray(options.text) ? options.text.length : 1;\n  return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n  return createContext(parent, {\n    scale,\n    type: 'scale'\n  });\n}\nfunction createTickContext(parent, index, tick) {\n  return createContext(parent, {\n    tick,\n    index,\n    type: 'tick'\n  });\n}\nfunction titleAlign(align, position, reverse) {\n  let ret = _toLeftRightCenter(align);\n  if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n    ret = reverseAlign(ret);\n  }\n  return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n  const {top, left, bottom, right, chart} = scale;\n  const {chartArea, scales} = chart;\n  let rotation = 0;\n  let maxWidth, titleX, titleY;\n  const height = bottom - top;\n  const width = right - left;\n  if (scale.isHorizontal()) {\n    titleX = _alignStartEnd(align, left, right);\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n    } else if (position === 'center') {\n      titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n    } else {\n      titleY = offsetFromEdge(scale, position, offset);\n    }\n    maxWidth = right - left;\n  } else {\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n    } else if (position === 'center') {\n      titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n    } else {\n      titleX = offsetFromEdge(scale, position, offset);\n    }\n    titleY = _alignStartEnd(align, bottom, top);\n    rotation = position === 'left' ? -HALF_PI : HALF_PI;\n  }\n  return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n  constructor(cfg) {\n    super();\n    this.id = cfg.id;\n    this.type = cfg.type;\n    this.options = undefined;\n    this.ctx = cfg.ctx;\n    this.chart = cfg.chart;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this._margins = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    this.maxWidth = undefined;\n    this.maxHeight = undefined;\n    this.paddingTop = undefined;\n    this.paddingBottom = undefined;\n    this.paddingLeft = undefined;\n    this.paddingRight = undefined;\n    this.axis = undefined;\n    this.labelRotation = undefined;\n    this.min = undefined;\n    this.max = undefined;\n    this._range = undefined;\n    this.ticks = [];\n    this._gridLineItems = null;\n    this._labelItems = null;\n    this._labelSizes = null;\n    this._length = 0;\n    this._maxLength = 0;\n    this._longestTextCache = {};\n    this._startPixel = undefined;\n    this._endPixel = undefined;\n    this._reversePixels = false;\n    this._userMax = undefined;\n    this._userMin = undefined;\n    this._suggestedMax = undefined;\n    this._suggestedMin = undefined;\n    this._ticksLength = 0;\n    this._borderValue = 0;\n    this._cache = {};\n    this._dataLimitsCached = false;\n    this.$context = undefined;\n  }\n  init(options) {\n    this.options = options.setContext(this.getContext());\n    this.axis = options.axis;\n    this._userMin = this.parse(options.min);\n    this._userMax = this.parse(options.max);\n    this._suggestedMin = this.parse(options.suggestedMin);\n    this._suggestedMax = this.parse(options.suggestedMax);\n  }\n  parse(raw, index) {\n    return raw;\n  }\n  getUserBounds() {\n    let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n    _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n    _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n    _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n    _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n    return {\n      min: finiteOrDefault(_userMin, _suggestedMin),\n      max: finiteOrDefault(_userMax, _suggestedMax),\n      minDefined: isNumberFinite(_userMin),\n      maxDefined: isNumberFinite(_userMax)\n    };\n  }\n  getMinMax(canStack) {\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n    let range;\n    if (minDefined && maxDefined) {\n      return {min, max};\n    }\n    const metas = this.getMatchingVisibleMetas();\n    for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n      range = metas[i].controller.getMinMax(this, canStack);\n      if (!minDefined) {\n        min = Math.min(min, range.min);\n      }\n      if (!maxDefined) {\n        max = Math.max(max, range.max);\n      }\n    }\n    min = maxDefined && min > max ? max : min;\n    max = minDefined && min > max ? min : max;\n    return {\n      min: finiteOrDefault(min, finiteOrDefault(max, min)),\n      max: finiteOrDefault(max, finiteOrDefault(min, max))\n    };\n  }\n  getPadding() {\n    return {\n      left: this.paddingLeft || 0,\n      top: this.paddingTop || 0,\n      right: this.paddingRight || 0,\n      bottom: this.paddingBottom || 0\n    };\n  }\n  getTicks() {\n    return this.ticks;\n  }\n  getLabels() {\n    const data = this.chart.data;\n    return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n  }\n  beforeLayout() {\n    this._cache = {};\n    this._dataLimitsCached = false;\n  }\n  beforeUpdate() {\n    callback(this.options.beforeUpdate, [this]);\n  }\n  update(maxWidth, maxHeight, margins) {\n    const {beginAtZero, grace, ticks: tickOpts} = this.options;\n    const sampleSize = tickOpts.sampleSize;\n    this.beforeUpdate();\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins = Object.assign({\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    }, margins);\n    this.ticks = null;\n    this._labelSizes = null;\n    this._gridLineItems = null;\n    this._labelItems = null;\n    this.beforeSetDimensions();\n    this.setDimensions();\n    this.afterSetDimensions();\n    this._maxLength = this.isHorizontal()\n      ? this.width + margins.left + margins.right\n      : this.height + margins.top + margins.bottom;\n    if (!this._dataLimitsCached) {\n      this.beforeDataLimits();\n      this.determineDataLimits();\n      this.afterDataLimits();\n      this._range = _addGrace(this, grace, beginAtZero);\n      this._dataLimitsCached = true;\n    }\n    this.beforeBuildTicks();\n    this.ticks = this.buildTicks() || [];\n    this.afterBuildTicks();\n    const samplingEnabled = sampleSize < this.ticks.length;\n    this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n    this.configure();\n    this.beforeCalculateLabelRotation();\n    this.calculateLabelRotation();\n    this.afterCalculateLabelRotation();\n    if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n      this.ticks = autoSkip(this, this.ticks);\n      this._labelSizes = null;\n      this.afterAutoSkip();\n    }\n    if (samplingEnabled) {\n      this._convertTicksToLabels(this.ticks);\n    }\n    this.beforeFit();\n    this.fit();\n    this.afterFit();\n    this.afterUpdate();\n  }\n  configure() {\n    let reversePixels = this.options.reverse;\n    let startPixel, endPixel;\n    if (this.isHorizontal()) {\n      startPixel = this.left;\n      endPixel = this.right;\n    } else {\n      startPixel = this.top;\n      endPixel = this.bottom;\n      reversePixels = !reversePixels;\n    }\n    this._startPixel = startPixel;\n    this._endPixel = endPixel;\n    this._reversePixels = reversePixels;\n    this._length = endPixel - startPixel;\n    this._alignToPixels = this.options.alignToPixels;\n  }\n  afterUpdate() {\n    callback(this.options.afterUpdate, [this]);\n  }\n  beforeSetDimensions() {\n    callback(this.options.beforeSetDimensions, [this]);\n  }\n  setDimensions() {\n    if (this.isHorizontal()) {\n      this.width = this.maxWidth;\n      this.left = 0;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n      this.top = 0;\n      this.bottom = this.height;\n    }\n    this.paddingLeft = 0;\n    this.paddingTop = 0;\n    this.paddingRight = 0;\n    this.paddingBottom = 0;\n  }\n  afterSetDimensions() {\n    callback(this.options.afterSetDimensions, [this]);\n  }\n  _callHooks(name) {\n    this.chart.notifyPlugins(name, this.getContext());\n    callback(this.options[name], [this]);\n  }\n  beforeDataLimits() {\n    this._callHooks('beforeDataLimits');\n  }\n  determineDataLimits() {}\n  afterDataLimits() {\n    this._callHooks('afterDataLimits');\n  }\n  beforeBuildTicks() {\n    this._callHooks('beforeBuildTicks');\n  }\n  buildTicks() {\n    return [];\n  }\n  afterBuildTicks() {\n    this._callHooks('afterBuildTicks');\n  }\n  beforeTickToLabelConversion() {\n    callback(this.options.beforeTickToLabelConversion, [this]);\n  }\n  generateTickLabels(ticks) {\n    const tickOpts = this.options.ticks;\n    let i, ilen, tick;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      tick = ticks[i];\n      tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n    }\n  }\n  afterTickToLabelConversion() {\n    callback(this.options.afterTickToLabelConversion, [this]);\n  }\n  beforeCalculateLabelRotation() {\n    callback(this.options.beforeCalculateLabelRotation, [this]);\n  }\n  calculateLabelRotation() {\n    const options = this.options;\n    const tickOpts = options.ticks;\n    const numTicks = this.ticks.length;\n    const minRotation = tickOpts.minRotation || 0;\n    const maxRotation = tickOpts.maxRotation;\n    let labelRotation = minRotation;\n    let tickWidth, maxHeight, maxLabelDiagonal;\n    if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n      this.labelRotation = minRotation;\n      return;\n    }\n    const labelSizes = this._getLabelSizes();\n    const maxLabelWidth = labelSizes.widest.width;\n    const maxLabelHeight = labelSizes.highest.height;\n    const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n    tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n    if (maxLabelWidth + 6 > tickWidth) {\n      tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n      maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n      maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n      labelRotation = toDegrees(Math.min(\n        Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n        Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n      ));\n      labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n    }\n    this.labelRotation = labelRotation;\n  }\n  afterCalculateLabelRotation() {\n    callback(this.options.afterCalculateLabelRotation, [this]);\n  }\n  afterAutoSkip() {}\n  beforeFit() {\n    callback(this.options.beforeFit, [this]);\n  }\n  fit() {\n    const minSize = {\n      width: 0,\n      height: 0\n    };\n    const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n    const display = this._isVisible();\n    const isHorizontal = this.isHorizontal();\n    if (display) {\n      const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n      if (isHorizontal) {\n        minSize.width = this.maxWidth;\n        minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n      } else {\n        minSize.height = this.maxHeight;\n        minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n      }\n      if (tickOpts.display && this.ticks.length) {\n        const {first, last, widest, highest} = this._getLabelSizes();\n        const tickPadding = tickOpts.padding * 2;\n        const angleRadians = toRadians(this.labelRotation);\n        const cos = Math.cos(angleRadians);\n        const sin = Math.sin(angleRadians);\n        if (isHorizontal) {\n          const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n          minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n        } else {\n          const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n          minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n        }\n        this._calculatePadding(first, last, sin, cos);\n      }\n    }\n    this._handleMargins();\n    if (isHorizontal) {\n      this.width = this._length = chart.width - this._margins.left - this._margins.right;\n      this.height = minSize.height;\n    } else {\n      this.width = minSize.width;\n      this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n    }\n  }\n  _calculatePadding(first, last, sin, cos) {\n    const {ticks: {align, padding}, position} = this.options;\n    const isRotated = this.labelRotation !== 0;\n    const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n    if (this.isHorizontal()) {\n      const offsetLeft = this.getPixelForTick(0) - this.left;\n      const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n      let paddingLeft = 0;\n      let paddingRight = 0;\n      if (isRotated) {\n        if (labelsBelowTicks) {\n          paddingLeft = cos * first.width;\n          paddingRight = sin * last.height;\n        } else {\n          paddingLeft = sin * first.height;\n          paddingRight = cos * last.width;\n        }\n      } else if (align === 'start') {\n        paddingRight = last.width;\n      } else if (align === 'end') {\n        paddingLeft = first.width;\n      } else if (align !== 'inner') {\n        paddingLeft = first.width / 2;\n        paddingRight = last.width / 2;\n      }\n      this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n      this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n    } else {\n      let paddingTop = last.height / 2;\n      let paddingBottom = first.height / 2;\n      if (align === 'start') {\n        paddingTop = 0;\n        paddingBottom = first.height;\n      } else if (align === 'end') {\n        paddingTop = last.height;\n        paddingBottom = 0;\n      }\n      this.paddingTop = paddingTop + padding;\n      this.paddingBottom = paddingBottom + padding;\n    }\n  }\n  _handleMargins() {\n    if (this._margins) {\n      this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n      this._margins.top = Math.max(this.paddingTop, this._margins.top);\n      this._margins.right = Math.max(this.paddingRight, this._margins.right);\n      this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n    }\n  }\n  afterFit() {\n    callback(this.options.afterFit, [this]);\n  }\n  isHorizontal() {\n    const {axis, position} = this.options;\n    return position === 'top' || position === 'bottom' || axis === 'x';\n  }\n  isFullSize() {\n    return this.options.fullSize;\n  }\n  _convertTicksToLabels(ticks) {\n    this.beforeTickToLabelConversion();\n    this.generateTickLabels(ticks);\n    let i, ilen;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      if (isNullOrUndef(ticks[i].label)) {\n        ticks.splice(i, 1);\n        ilen--;\n        i--;\n      }\n    }\n    this.afterTickToLabelConversion();\n  }\n  _getLabelSizes() {\n    let labelSizes = this._labelSizes;\n    if (!labelSizes) {\n      const sampleSize = this.options.ticks.sampleSize;\n      let ticks = this.ticks;\n      if (sampleSize < ticks.length) {\n        ticks = sample(ticks, sampleSize);\n      }\n      this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n    }\n    return labelSizes;\n  }\n  _computeLabelSizes(ticks, length) {\n    const {ctx, _longestTextCache: caches} = this;\n    const widths = [];\n    const heights = [];\n    let widestLabelSize = 0;\n    let highestLabelSize = 0;\n    let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n    for (i = 0; i < length; ++i) {\n      label = ticks[i].label;\n      tickFont = this._resolveTickFontOptions(i);\n      ctx.font = fontString = tickFont.string;\n      cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n      lineHeight = tickFont.lineHeight;\n      width = height = 0;\n      if (!isNullOrUndef(label) && !isArray(label)) {\n        width = _measureText(ctx, cache.data, cache.gc, width, label);\n        height = lineHeight;\n      } else if (isArray(label)) {\n        for (j = 0, jlen = label.length; j < jlen; ++j) {\n          nestedLabel = label[j];\n          if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n            width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n            height += lineHeight;\n          }\n        }\n      }\n      widths.push(width);\n      heights.push(height);\n      widestLabelSize = Math.max(width, widestLabelSize);\n      highestLabelSize = Math.max(height, highestLabelSize);\n    }\n    garbageCollect(caches, length);\n    const widest = widths.indexOf(widestLabelSize);\n    const highest = heights.indexOf(highestLabelSize);\n    const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n    return {\n      first: valueAt(0),\n      last: valueAt(length - 1),\n      widest: valueAt(widest),\n      highest: valueAt(highest),\n      widths,\n      heights,\n    };\n  }\n  getLabelForValue(value) {\n    return value;\n  }\n  getPixelForValue(value, index) {\n    return NaN;\n  }\n  getValueForPixel(pixel) {}\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n  getPixelForDecimal(decimal) {\n    if (this._reversePixels) {\n      decimal = 1 - decimal;\n    }\n    const pixel = this._startPixel + decimal * this._length;\n    return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n  }\n  getDecimalForPixel(pixel) {\n    const decimal = (pixel - this._startPixel) / this._length;\n    return this._reversePixels ? 1 - decimal : decimal;\n  }\n  getBasePixel() {\n    return this.getPixelForValue(this.getBaseValue());\n  }\n  getBaseValue() {\n    const {min, max} = this;\n    return min < 0 && max < 0 ? max :\n      min > 0 && max > 0 ? min :\n      0;\n  }\n  getContext(index) {\n    const ticks = this.ticks || [];\n    if (index >= 0 && index < ticks.length) {\n      const tick = ticks[index];\n      return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n    }\n    return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n  }\n  _tickSize() {\n    const optionTicks = this.options.ticks;\n    const rot = toRadians(this.labelRotation);\n    const cos = Math.abs(Math.cos(rot));\n    const sin = Math.abs(Math.sin(rot));\n    const labelSizes = this._getLabelSizes();\n    const padding = optionTicks.autoSkipPadding || 0;\n    const w = labelSizes ? labelSizes.widest.width + padding : 0;\n    const h = labelSizes ? labelSizes.highest.height + padding : 0;\n    return this.isHorizontal()\n      ? h * cos > w * sin ? w / cos : h / sin\n      : h * sin < w * cos ? h / cos : w / sin;\n  }\n  _isVisible() {\n    const display = this.options.display;\n    if (display !== 'auto') {\n      return !!display;\n    }\n    return this.getMatchingVisibleMetas().length > 0;\n  }\n  _computeGridLineItems(chartArea) {\n    const axis = this.axis;\n    const chart = this.chart;\n    const options = this.options;\n    const {grid, position} = options;\n    const offset = grid.offset;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const ticksLength = ticks.length + (offset ? 1 : 0);\n    const tl = getTickMarkLength(grid);\n    const items = [];\n    const borderOpts = grid.setContext(this.getContext());\n    const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n    const axisHalfWidth = axisWidth / 2;\n    const alignBorderValue = function(pixel) {\n      return _alignPixel(chart, pixel, axisWidth);\n    };\n    let borderValue, i, lineValue, alignedLineValue;\n    let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n    if (position === 'top') {\n      borderValue = alignBorderValue(this.bottom);\n      ty1 = this.bottom - tl;\n      ty2 = borderValue - axisHalfWidth;\n      y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n      y2 = chartArea.bottom;\n    } else if (position === 'bottom') {\n      borderValue = alignBorderValue(this.top);\n      y1 = chartArea.top;\n      y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = this.top + tl;\n    } else if (position === 'left') {\n      borderValue = alignBorderValue(this.right);\n      tx1 = this.right - tl;\n      tx2 = borderValue - axisHalfWidth;\n      x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n      x2 = chartArea.right;\n    } else if (position === 'right') {\n      borderValue = alignBorderValue(this.left);\n      x1 = chartArea.left;\n      x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n      tx1 = borderValue + axisHalfWidth;\n      tx2 = this.left + tl;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n      y1 = chartArea.top;\n      y2 = chartArea.bottom;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = ty1 + tl;\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n      tx1 = borderValue - axisHalfWidth;\n      tx2 = tx1 - tl;\n      x1 = chartArea.left;\n      x2 = chartArea.right;\n    }\n    const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n    const step = Math.max(1, Math.ceil(ticksLength / limit));\n    for (i = 0; i < ticksLength; i += step) {\n      const optsAtIndex = grid.setContext(this.getContext(i));\n      const lineWidth = optsAtIndex.lineWidth;\n      const lineColor = optsAtIndex.color;\n      const borderDash = optsAtIndex.borderDash || [];\n      const borderDashOffset = optsAtIndex.borderDashOffset;\n      const tickWidth = optsAtIndex.tickWidth;\n      const tickColor = optsAtIndex.tickColor;\n      const tickBorderDash = optsAtIndex.tickBorderDash || [];\n      const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n      lineValue = getPixelForGridLine(this, i, offset);\n      if (lineValue === undefined) {\n        continue;\n      }\n      alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n      if (isHorizontal) {\n        tx1 = tx2 = x1 = x2 = alignedLineValue;\n      } else {\n        ty1 = ty2 = y1 = y2 = alignedLineValue;\n      }\n      items.push({\n        tx1,\n        ty1,\n        tx2,\n        ty2,\n        x1,\n        y1,\n        x2,\n        y2,\n        width: lineWidth,\n        color: lineColor,\n        borderDash,\n        borderDashOffset,\n        tickWidth,\n        tickColor,\n        tickBorderDash,\n        tickBorderDashOffset,\n      });\n    }\n    this._ticksLength = ticksLength;\n    this._borderValue = borderValue;\n    return items;\n  }\n  _computeLabelItems(chartArea) {\n    const axis = this.axis;\n    const options = this.options;\n    const {position, ticks: optionTicks} = options;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const {align, crossAlign, padding, mirror} = optionTicks;\n    const tl = getTickMarkLength(options.grid);\n    const tickAndPadding = tl + padding;\n    const hTickAndPadding = mirror ? -padding : tickAndPadding;\n    const rotation = -toRadians(this.labelRotation);\n    const items = [];\n    let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n    let textBaseline = 'middle';\n    if (position === 'top') {\n      y = this.bottom - hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'bottom') {\n      y = this.top + hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'left') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (position === 'right') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n      }\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        x = this.chart.scales[positionAxisID].getPixelForValue(value);\n      }\n      textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n    }\n    if (axis === 'y') {\n      if (align === 'start') {\n        textBaseline = 'top';\n      } else if (align === 'end') {\n        textBaseline = 'bottom';\n      }\n    }\n    const labelSizes = this._getLabelSizes();\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      label = tick.label;\n      const optsAtIndex = optionTicks.setContext(this.getContext(i));\n      pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n      font = this._resolveTickFontOptions(i);\n      lineHeight = font.lineHeight;\n      lineCount = isArray(label) ? label.length : 1;\n      const halfCount = lineCount / 2;\n      const color = optsAtIndex.color;\n      const strokeColor = optsAtIndex.textStrokeColor;\n      const strokeWidth = optsAtIndex.textStrokeWidth;\n      let tickTextAlign = textAlign;\n      if (isHorizontal) {\n        x = pixel;\n        if (textAlign === 'inner') {\n          if (i === ilen - 1) {\n            tickTextAlign = !this.options.reverse ? 'right' : 'left';\n          } else if (i === 0) {\n            tickTextAlign = !this.options.reverse ? 'left' : 'right';\n          } else {\n            tickTextAlign = 'center';\n          }\n        }\n        if (position === 'top') {\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = -lineCount * lineHeight + lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n          } else {\n            textOffset = -labelSizes.highest.height + lineHeight / 2;\n          }\n        } else {\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n          } else {\n            textOffset = labelSizes.highest.height - lineCount * lineHeight;\n          }\n        }\n        if (mirror) {\n          textOffset *= -1;\n        }\n      } else {\n        y = pixel;\n        textOffset = (1 - lineCount) * lineHeight / 2;\n      }\n      let backdrop;\n      if (optsAtIndex.showLabelBackdrop) {\n        const labelPadding = toPadding(optsAtIndex.backdropPadding);\n        const height = labelSizes.heights[i];\n        const width = labelSizes.widths[i];\n        let top = y + textOffset - labelPadding.top;\n        let left = x - labelPadding.left;\n        switch (textBaseline) {\n        case 'middle':\n          top -= height / 2;\n          break;\n        case 'bottom':\n          top -= height;\n          break;\n        }\n        switch (textAlign) {\n        case 'center':\n          left -= width / 2;\n          break;\n        case 'right':\n          left -= width;\n          break;\n        }\n        backdrop = {\n          left,\n          top,\n          width: width + labelPadding.width,\n          height: height + labelPadding.height,\n          color: optsAtIndex.backdropColor,\n        };\n      }\n      items.push({\n        rotation,\n        label,\n        font,\n        color,\n        strokeColor,\n        strokeWidth,\n        textOffset,\n        textAlign: tickTextAlign,\n        textBaseline,\n        translation: [x, y],\n        backdrop,\n      });\n    }\n    return items;\n  }\n  _getXAxisLabelAlignment() {\n    const {position, ticks} = this.options;\n    const rotation = -toRadians(this.labelRotation);\n    if (rotation) {\n      return position === 'top' ? 'left' : 'right';\n    }\n    let align = 'center';\n    if (ticks.align === 'start') {\n      align = 'left';\n    } else if (ticks.align === 'end') {\n      align = 'right';\n    } else if (ticks.align === 'inner') {\n      align = 'inner';\n    }\n    return align;\n  }\n  _getYAxisLabelAlignment(tl) {\n    const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n    const labelSizes = this._getLabelSizes();\n    const tickAndPadding = tl + padding;\n    const widest = labelSizes.widest.width;\n    let textAlign;\n    let x;\n    if (position === 'left') {\n      if (mirror) {\n        x = this.right + padding;\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += (widest / 2);\n        } else {\n          textAlign = 'right';\n          x += widest;\n        }\n      } else {\n        x = this.right - tickAndPadding;\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x = this.left;\n        }\n      }\n    } else if (position === 'right') {\n      if (mirror) {\n        x = this.left + padding;\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x -= widest;\n        }\n      } else {\n        x = this.left + tickAndPadding;\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += widest / 2;\n        } else {\n          textAlign = 'right';\n          x = this.right;\n        }\n      }\n    } else {\n      textAlign = 'right';\n    }\n    return {textAlign, x};\n  }\n  _computeLabelArea() {\n    if (this.options.ticks.mirror) {\n      return;\n    }\n    const chart = this.chart;\n    const position = this.options.position;\n    if (position === 'left' || position === 'right') {\n      return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n    } if (position === 'top' || position === 'bottom') {\n      return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n    }\n  }\n  drawBackground() {\n    const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n    if (backgroundColor) {\n      ctx.save();\n      ctx.fillStyle = backgroundColor;\n      ctx.fillRect(left, top, width, height);\n      ctx.restore();\n    }\n  }\n  getLineWidthForValue(value) {\n    const grid = this.options.grid;\n    if (!this._isVisible() || !grid.display) {\n      return 0;\n    }\n    const ticks = this.ticks;\n    const index = ticks.findIndex(t => t.value === value);\n    if (index >= 0) {\n      const opts = grid.setContext(this.getContext(index));\n      return opts.lineWidth;\n    }\n    return 0;\n  }\n  drawGrid(chartArea) {\n    const grid = this.options.grid;\n    const ctx = this.ctx;\n    const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n    let i, ilen;\n    const drawLine = (p1, p2, style) => {\n      if (!style.width || !style.color) {\n        return;\n      }\n      ctx.save();\n      ctx.lineWidth = style.width;\n      ctx.strokeStyle = style.color;\n      ctx.setLineDash(style.borderDash || []);\n      ctx.lineDashOffset = style.borderDashOffset;\n      ctx.beginPath();\n      ctx.moveTo(p1.x, p1.y);\n      ctx.lineTo(p2.x, p2.y);\n      ctx.stroke();\n      ctx.restore();\n    };\n    if (grid.display) {\n      for (i = 0, ilen = items.length; i < ilen; ++i) {\n        const item = items[i];\n        if (grid.drawOnChartArea) {\n          drawLine(\n            {x: item.x1, y: item.y1},\n            {x: item.x2, y: item.y2},\n            item\n          );\n        }\n        if (grid.drawTicks) {\n          drawLine(\n            {x: item.tx1, y: item.ty1},\n            {x: item.tx2, y: item.ty2},\n            {\n              color: item.tickColor,\n              width: item.tickWidth,\n              borderDash: item.tickBorderDash,\n              borderDashOffset: item.tickBorderDashOffset\n            }\n          );\n        }\n      }\n    }\n  }\n  drawBorder() {\n    const {chart, ctx, options: {grid}} = this;\n    const borderOpts = grid.setContext(this.getContext());\n    const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n    if (!axisWidth) {\n      return;\n    }\n    const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n    const borderValue = this._borderValue;\n    let x1, x2, y1, y2;\n    if (this.isHorizontal()) {\n      x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n      x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n      y1 = y2 = borderValue;\n    } else {\n      y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n      y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n      x1 = x2 = borderValue;\n    }\n    ctx.save();\n    ctx.lineWidth = borderOpts.borderWidth;\n    ctx.strokeStyle = borderOpts.borderColor;\n    ctx.beginPath();\n    ctx.moveTo(x1, y1);\n    ctx.lineTo(x2, y2);\n    ctx.stroke();\n    ctx.restore();\n  }\n  drawLabels(chartArea) {\n    const optionTicks = this.options.ticks;\n    if (!optionTicks.display) {\n      return;\n    }\n    const ctx = this.ctx;\n    const area = this._computeLabelArea();\n    if (area) {\n      clipArea(ctx, area);\n    }\n    const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n    let i, ilen;\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      const item = items[i];\n      const tickFont = item.font;\n      const label = item.label;\n      if (item.backdrop) {\n        ctx.fillStyle = item.backdrop.color;\n        ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n      }\n      let y = item.textOffset;\n      renderText(ctx, label, 0, y, tickFont, item);\n    }\n    if (area) {\n      unclipArea(ctx);\n    }\n  }\n  drawTitle() {\n    const {ctx, options: {position, title, reverse}} = this;\n    if (!title.display) {\n      return;\n    }\n    const font = toFont(title.font);\n    const padding = toPadding(title.padding);\n    const align = title.align;\n    let offset = font.lineHeight / 2;\n    if (position === 'bottom' || position === 'center' || isObject(position)) {\n      offset += padding.bottom;\n      if (isArray(title.text)) {\n        offset += font.lineHeight * (title.text.length - 1);\n      }\n    } else {\n      offset += padding.top;\n    }\n    const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n    renderText(ctx, title.text, 0, 0, font, {\n      color: title.color,\n      maxWidth,\n      rotation,\n      textAlign: titleAlign(align, position, reverse),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n  draw(chartArea) {\n    if (!this._isVisible()) {\n      return;\n    }\n    this.drawBackground();\n    this.drawGrid(chartArea);\n    this.drawBorder();\n    this.drawTitle();\n    this.drawLabels(chartArea);\n  }\n  _layers() {\n    const opts = this.options;\n    const tz = opts.ticks && opts.ticks.z || 0;\n    const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n    if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n      return [{\n        z: tz,\n        draw: (chartArea) => {\n          this.draw(chartArea);\n        }\n      }];\n    }\n    return [{\n      z: gz,\n      draw: (chartArea) => {\n        this.drawBackground();\n        this.drawGrid(chartArea);\n        this.drawTitle();\n      }\n    }, {\n      z: gz + 1,\n      draw: () => {\n        this.drawBorder();\n      }\n    }, {\n      z: tz,\n      draw: (chartArea) => {\n        this.drawLabels(chartArea);\n      }\n    }];\n  }\n  getMatchingVisibleMetas(type) {\n    const metas = this.chart.getSortedVisibleDatasetMetas();\n    const axisID = this.axis + 'AxisID';\n    const result = [];\n    let i, ilen;\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      const meta = metas[i];\n      if (meta[axisID] === this.id && (!type || meta.type === type)) {\n        result.push(meta);\n      }\n    }\n    return result;\n  }\n  _resolveTickFontOptions(index) {\n    const opts = this.options.ticks.setContext(this.getContext(index));\n    return toFont(opts.font);\n  }\n  _maxDigits() {\n    const fontSize = this._resolveTickFontOptions(0).lineHeight;\n    return (this.isHorizontal() ? this.width : this.height) / fontSize;\n  }\n}\n\nclass TypedRegistry {\n  constructor(type, scope, override) {\n    this.type = type;\n    this.scope = scope;\n    this.override = override;\n    this.items = Object.create(null);\n  }\n  isForType(type) {\n    return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n  }\n  register(item) {\n    const proto = Object.getPrototypeOf(item);\n    let parentScope;\n    if (isIChartComponent(proto)) {\n      parentScope = this.register(proto);\n    }\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope + '.' + id;\n    if (!id) {\n      throw new Error('class does not have id: ' + item);\n    }\n    if (id in items) {\n      return scope;\n    }\n    items[id] = item;\n    registerDefaults(item, scope, parentScope);\n    if (this.override) {\n      defaults.override(item.id, item.overrides);\n    }\n    return scope;\n  }\n  get(id) {\n    return this.items[id];\n  }\n  unregister(item) {\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope;\n    if (id in items) {\n      delete items[id];\n    }\n    if (scope && id in defaults[scope]) {\n      delete defaults[scope][id];\n      if (this.override) {\n        delete overrides[id];\n      }\n    }\n  }\n}\nfunction registerDefaults(item, scope, parentScope) {\n  const itemDefaults = merge(Object.create(null), [\n    parentScope ? defaults.get(parentScope) : {},\n    defaults.get(scope),\n    item.defaults\n  ]);\n  defaults.set(scope, itemDefaults);\n  if (item.defaultRoutes) {\n    routeDefaults(scope, item.defaultRoutes);\n  }\n  if (item.descriptors) {\n    defaults.describe(scope, item.descriptors);\n  }\n}\nfunction routeDefaults(scope, routes) {\n  Object.keys(routes).forEach(property => {\n    const propertyParts = property.split('.');\n    const sourceName = propertyParts.pop();\n    const sourceScope = [scope].concat(propertyParts).join('.');\n    const parts = routes[property].split('.');\n    const targetName = parts.pop();\n    const targetScope = parts.join('.');\n    defaults.route(sourceScope, sourceName, targetScope, targetName);\n  });\n}\nfunction isIChartComponent(proto) {\n  return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n  constructor() {\n    this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n    this.elements = new TypedRegistry(Element, 'elements');\n    this.plugins = new TypedRegistry(Object, 'plugins');\n    this.scales = new TypedRegistry(Scale, 'scales');\n    this._typedRegistries = [this.controllers, this.scales, this.elements];\n  }\n  add(...args) {\n    this._each('register', args);\n  }\n  remove(...args) {\n    this._each('unregister', args);\n  }\n  addControllers(...args) {\n    this._each('register', args, this.controllers);\n  }\n  addElements(...args) {\n    this._each('register', args, this.elements);\n  }\n  addPlugins(...args) {\n    this._each('register', args, this.plugins);\n  }\n  addScales(...args) {\n    this._each('register', args, this.scales);\n  }\n  getController(id) {\n    return this._get(id, this.controllers, 'controller');\n  }\n  getElement(id) {\n    return this._get(id, this.elements, 'element');\n  }\n  getPlugin(id) {\n    return this._get(id, this.plugins, 'plugin');\n  }\n  getScale(id) {\n    return this._get(id, this.scales, 'scale');\n  }\n  removeControllers(...args) {\n    this._each('unregister', args, this.controllers);\n  }\n  removeElements(...args) {\n    this._each('unregister', args, this.elements);\n  }\n  removePlugins(...args) {\n    this._each('unregister', args, this.plugins);\n  }\n  removeScales(...args) {\n    this._each('unregister', args, this.scales);\n  }\n  _each(method, args, typedRegistry) {\n    [...args].forEach(arg => {\n      const reg = typedRegistry || this._getRegistryForType(arg);\n      if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n        this._exec(method, reg, arg);\n      } else {\n        each(arg, item => {\n          const itemReg = typedRegistry || this._getRegistryForType(item);\n          this._exec(method, itemReg, item);\n        });\n      }\n    });\n  }\n  _exec(method, registry, component) {\n    const camelMethod = _capitalize(method);\n    callback(component['before' + camelMethod], [], component);\n    registry[method](component);\n    callback(component['after' + camelMethod], [], component);\n  }\n  _getRegistryForType(type) {\n    for (let i = 0; i < this._typedRegistries.length; i++) {\n      const reg = this._typedRegistries[i];\n      if (reg.isForType(type)) {\n        return reg;\n      }\n    }\n    return this.plugins;\n  }\n  _get(id, typedRegistry, type) {\n    const item = typedRegistry.get(id);\n    if (item === undefined) {\n      throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n    }\n    return item;\n  }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {data: points = []} = meta;\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n    this._drawStart = start;\n    this._drawCount = count;\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n    if (this.options.showLine) {\n      const {dataset: line, _dataset} = meta;\n      line._chart = this.chart;\n      line._datasetIndex = this.index;\n      line._decimated = !!_dataset._decimated;\n      line.points = points;\n      const options = this.resolveDatasetElementOptions(mode);\n      options.segment = this.options.segment;\n      this.updateElement(line, undefined, {\n        animated: !animationsDisabled,\n        options\n      }, mode);\n    }\n    this.updateElements(points, start, count, mode);\n  }\n  addElements() {\n    const {showLine} = this.options;\n    if (!this.datasetElementType && showLine) {\n      this.datasetElementType = registry.getElement('line');\n    }\n    super.addElements();\n  }\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n    for (let i = start; i < start + count; ++i) {\n      const point = points[i];\n      const parsed = this.getParsed(i);\n      const properties = directUpdate ? point : {};\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n      prevParsed = parsed;\n    }\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n  }\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const data = meta.data || [];\n    if (!this.options.showLine) {\n      let max = 0;\n      for (let i = data.length - 1; i >= 0; --i) {\n        max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n      }\n      return max > 0 && max;\n    }\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n    if (!data.length) {\n      return border;\n    }\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'point',\n  showLine: false,\n  fill: false\n};\nScatterController.overrides = {\n  interaction: {\n    mode: 'point'\n  },\n  plugins: {\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(item) {\n          return '(' + item.label + ', ' + item.formattedValue + ')';\n        }\n      }\n    }\n  },\n  scales: {\n    x: {\n      type: 'linear'\n    },\n    y: {\n      type: 'linear'\n    }\n  }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n  throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n  constructor(options) {\n    this.options = options || {};\n  }\n  init(chartOptions) {}\n  formats() {\n    return abstract();\n  }\n  parse(value, format) {\n    return abstract();\n  }\n  format(timestamp, format) {\n    return abstract();\n  }\n  add(timestamp, amount, unit) {\n    return abstract();\n  }\n  diff(a, b, unit) {\n    return abstract();\n  }\n  startOf(timestamp, unit, weekday) {\n    return abstract();\n  }\n  endOf(timestamp, unit) {\n    return abstract();\n  }\n}\nDateAdapter.override = function(members) {\n  Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n  _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n  const {controller, data, _sorted} = metaset;\n  const iScale = controller._cachedMeta.iScale;\n  if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n    const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n    if (!intersect) {\n      return lookupMethod(data, axis, value);\n    } else if (controller._sharedOptions) {\n      const el = data[0];\n      const range = typeof el.getRange === 'function' && el.getRange(axis);\n      if (range) {\n        const start = lookupMethod(data, axis, value - range);\n        const end = lookupMethod(data, axis, value + range);\n        return {lo: start.lo, hi: end.hi};\n      }\n    }\n  }\n  return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n  const metasets = chart.getSortedVisibleDatasetMetas();\n  const value = position[axis];\n  for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n    const {index, data} = metasets[i];\n    const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n    for (let j = lo; j <= hi; ++j) {\n      const element = data[j];\n      if (!element.skip) {\n        handler(element, index, j);\n      }\n    }\n  }\n}\nfunction getDistanceMetricForAxis(axis) {\n  const useX = axis.indexOf('x') !== -1;\n  const useY = axis.indexOf('y') !== -1;\n  return function(pt1, pt2) {\n    const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n    const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n    return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n  };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n  const items = [];\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return items;\n  }\n  const evaluationFunc = function(element, datasetIndex, index) {\n    if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n      return;\n    }\n    if (element.inRange(position.x, position.y, useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n    }\n  };\n  evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n  return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n  let items = [];\n  function evaluationFunc(element, datasetIndex, index) {\n    const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n    const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n    if (_angleBetween(angle, startAngle, endAngle)) {\n      items.push({element, datasetIndex, index});\n    }\n  }\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  let items = [];\n  const distanceMetric = getDistanceMetricForAxis(axis);\n  let minDistance = Number.POSITIVE_INFINITY;\n  function evaluationFunc(element, datasetIndex, index) {\n    const inRange = element.inRange(position.x, position.y, useFinalPosition);\n    if (intersect && !inRange) {\n      return;\n    }\n    const center = element.getCenterPoint(useFinalPosition);\n    const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n    if (!pointInArea && !inRange) {\n      return;\n    }\n    const distance = distanceMetric(position, center);\n    if (distance < minDistance) {\n      items = [{element, datasetIndex, index}];\n      minDistance = distance;\n    } else if (distance === minDistance) {\n      items.push({element, datasetIndex, index});\n    }\n  }\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return [];\n  }\n  return axis === 'r' && !intersect\n    ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n    : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n  const items = [];\n  const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n  let intersectsItem = false;\n  evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n    if (element[rangeMethod](position[axis], useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n      intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n    }\n  });\n  if (intersect && !intersectsItem) {\n    return [];\n  }\n  return items;\n}\nvar Interaction = {\n  evaluateInteractionItems,\n  modes: {\n    index(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'x';\n      const includeInvisible = options.includeInvisible || false;\n      const items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n        : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n      const elements = [];\n      if (!items.length) {\n        return [];\n      }\n      chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n        const index = items[0].index;\n        const element = meta.data[index];\n        if (element && !element.skip) {\n          elements.push({element, datasetIndex: meta.index, index});\n        }\n      });\n      return elements;\n    },\n    dataset(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      let items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n        getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n      if (items.length > 0) {\n        const datasetIndex = items[0].datasetIndex;\n        const data = chart.getDatasetMeta(datasetIndex).data;\n        items = [];\n        for (let i = 0; i < data.length; ++i) {\n          items.push({element: data[i], datasetIndex, index: i});\n        }\n      }\n      return items;\n    },\n    point(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n    },\n    nearest(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n    },\n    x(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n    },\n    y(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n    }\n  }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n  return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n  return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n  return array.sort((a, b) => {\n    const v0 = reverse ? b : a;\n    const v1 = reverse ? a : b;\n    return v0.weight === v1.weight ?\n      v0.index - v1.index :\n      v0.weight - v1.weight;\n  });\n}\nfunction wrapBoxes(boxes) {\n  const layoutBoxes = [];\n  let i, ilen, box, pos, stack, stackWeight;\n  for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n    box = boxes[i];\n    ({position: pos, options: {stack, stackWeight = 1}} = box);\n    layoutBoxes.push({\n      index: i,\n      box,\n      pos,\n      horizontal: box.isHorizontal(),\n      weight: box.weight,\n      stack: stack && (pos + stack),\n      stackWeight\n    });\n  }\n  return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n  const stacks = {};\n  for (const wrap of layouts) {\n    const {stack, pos, stackWeight} = wrap;\n    if (!stack || !STATIC_POSITIONS.includes(pos)) {\n      continue;\n    }\n    const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n    _stack.count++;\n    _stack.weight += stackWeight;\n  }\n  return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n  const stacks = buildStacks(layouts);\n  const {vBoxMaxWidth, hBoxMaxHeight} = params;\n  let i, ilen, layout;\n  for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n    layout = layouts[i];\n    const {fullSize} = layout.box;\n    const stack = stacks[layout.stack];\n    const factor = stack && layout.stackWeight / stack.weight;\n    if (layout.horizontal) {\n      layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n      layout.height = hBoxMaxHeight;\n    } else {\n      layout.width = vBoxMaxWidth;\n      layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n    }\n  }\n  return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n  const layoutBoxes = wrapBoxes(boxes);\n  const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n  const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n  const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n  const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n  const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n  const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n  const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n  return {\n    fullSize,\n    leftAndTop: left.concat(top),\n    rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n    chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n    vertical: left.concat(right).concat(centerVertical),\n    horizontal: top.concat(bottom).concat(centerHorizontal)\n  };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n  return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n  maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n  maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n  maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n  maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n  const {pos, box} = layout;\n  const maxPadding = chartArea.maxPadding;\n  if (!isObject(pos)) {\n    if (layout.size) {\n      chartArea[pos] -= layout.size;\n    }\n    const stack = stacks[layout.stack] || {size: 0, count: 1};\n    stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n    layout.size = stack.size / stack.count;\n    chartArea[pos] += layout.size;\n  }\n  if (box.getPadding) {\n    updateMaxPadding(maxPadding, box.getPadding());\n  }\n  const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n  const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n  const widthChanged = newWidth !== chartArea.w;\n  const heightChanged = newHeight !== chartArea.h;\n  chartArea.w = newWidth;\n  chartArea.h = newHeight;\n  return layout.horizontal\n    ? {same: widthChanged, other: heightChanged}\n    : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n  const maxPadding = chartArea.maxPadding;\n  function updatePos(pos) {\n    const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n    chartArea[pos] += change;\n    return change;\n  }\n  chartArea.y += updatePos('top');\n  chartArea.x += updatePos('left');\n  updatePos('right');\n  updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n  const maxPadding = chartArea.maxPadding;\n  function marginForPositions(positions) {\n    const margin = {left: 0, top: 0, right: 0, bottom: 0};\n    positions.forEach((pos) => {\n      margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n    });\n    return margin;\n  }\n  return horizontal\n    ? marginForPositions(['left', 'right'])\n    : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n  const refitBoxes = [];\n  let i, ilen, layout, box, refit, changed;\n  for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n    layout = boxes[i];\n    box = layout.box;\n    box.update(\n      layout.width || chartArea.w,\n      layout.height || chartArea.h,\n      getMargins(layout.horizontal, chartArea)\n    );\n    const {same, other} = updateDims(chartArea, params, layout, stacks);\n    refit |= same && refitBoxes.length;\n    changed = changed || other;\n    if (!box.fullSize) {\n      refitBoxes.push(layout);\n    }\n  }\n  return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n  box.top = top;\n  box.left = left;\n  box.right = left + width;\n  box.bottom = top + height;\n  box.width = width;\n  box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n  const userPadding = params.padding;\n  let {x, y} = chartArea;\n  for (const layout of boxes) {\n    const box = layout.box;\n    const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n    const weight = (layout.stackWeight / stack.weight) || 1;\n    if (layout.horizontal) {\n      const width = chartArea.w * weight;\n      const height = stack.size || box.height;\n      if (defined(stack.start)) {\n        y = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n      } else {\n        setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n      }\n      stack.start = y;\n      stack.placed += width;\n      y = box.bottom;\n    } else {\n      const height = chartArea.h * weight;\n      const width = stack.size || box.width;\n      if (defined(stack.start)) {\n        x = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n      } else {\n        setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n      }\n      stack.start = x;\n      stack.placed += height;\n      x = box.right;\n    }\n  }\n  chartArea.x = x;\n  chartArea.y = y;\n}\ndefaults.set('layout', {\n  autoPadding: true,\n  padding: {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  }\n});\nvar layouts = {\n  addBox(chart, item) {\n    if (!chart.boxes) {\n      chart.boxes = [];\n    }\n    item.fullSize = item.fullSize || false;\n    item.position = item.position || 'top';\n    item.weight = item.weight || 0;\n    item._layers = item._layers || function() {\n      return [{\n        z: 0,\n        draw(chartArea) {\n          item.draw(chartArea);\n        }\n      }];\n    };\n    chart.boxes.push(item);\n  },\n  removeBox(chart, layoutItem) {\n    const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n    if (index !== -1) {\n      chart.boxes.splice(index, 1);\n    }\n  },\n  configure(chart, item, options) {\n    item.fullSize = options.fullSize;\n    item.position = options.position;\n    item.weight = options.weight;\n  },\n  update(chart, width, height, minPadding) {\n    if (!chart) {\n      return;\n    }\n    const padding = toPadding(chart.options.layout.padding);\n    const availableWidth = Math.max(width - padding.width, 0);\n    const availableHeight = Math.max(height - padding.height, 0);\n    const boxes = buildLayoutBoxes(chart.boxes);\n    const verticalBoxes = boxes.vertical;\n    const horizontalBoxes = boxes.horizontal;\n    each(chart.boxes, box => {\n      if (typeof box.beforeLayout === 'function') {\n        box.beforeLayout();\n      }\n    });\n    const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n      wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n    const params = Object.freeze({\n      outerWidth: width,\n      outerHeight: height,\n      padding,\n      availableWidth,\n      availableHeight,\n      vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n      hBoxMaxHeight: availableHeight / 2\n    });\n    const maxPadding = Object.assign({}, padding);\n    updateMaxPadding(maxPadding, toPadding(minPadding));\n    const chartArea = Object.assign({\n      maxPadding,\n      w: availableWidth,\n      h: availableHeight,\n      x: padding.left,\n      y: padding.top\n    }, padding);\n    const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n    fitBoxes(boxes.fullSize, chartArea, params, stacks);\n    fitBoxes(verticalBoxes, chartArea, params, stacks);\n    if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n      fitBoxes(verticalBoxes, chartArea, params, stacks);\n    }\n    handleMaxPadding(chartArea);\n    placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n    chartArea.x += chartArea.w;\n    chartArea.y += chartArea.h;\n    placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n    chart.chartArea = {\n      left: chartArea.left,\n      top: chartArea.top,\n      right: chartArea.left + chartArea.w,\n      bottom: chartArea.top + chartArea.h,\n      height: chartArea.h,\n      width: chartArea.w,\n    };\n    each(boxes.chartArea, (layout) => {\n      const box = layout.box;\n      Object.assign(box, chart.chartArea);\n      box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n    });\n  }\n};\n\nclass BasePlatform {\n  acquireContext(canvas, aspectRatio) {}\n  releaseContext(context) {\n    return false;\n  }\n  addEventListener(chart, type, listener) {}\n  removeEventListener(chart, type, listener) {}\n  getDevicePixelRatio() {\n    return 1;\n  }\n  getMaximumSize(element, width, height, aspectRatio) {\n    width = Math.max(0, width || element.width);\n    height = height || element.height;\n    return {\n      width,\n      height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n    };\n  }\n  isAttached(canvas) {\n    return true;\n  }\n  updateConfig(config) {\n  }\n}\n\nclass BasicPlatform extends BasePlatform {\n  acquireContext(item) {\n    return item && item.getContext && item.getContext('2d') || null;\n  }\n  updateConfig(config) {\n    config.options.animation = false;\n  }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n  touchstart: 'mousedown',\n  touchmove: 'mousemove',\n  touchend: 'mouseup',\n  pointerenter: 'mouseenter',\n  pointerdown: 'mousedown',\n  pointermove: 'mousemove',\n  pointerup: 'mouseup',\n  pointerleave: 'mouseout',\n  pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n  const style = canvas.style;\n  const renderHeight = canvas.getAttribute('height');\n  const renderWidth = canvas.getAttribute('width');\n  canvas[EXPANDO_KEY] = {\n    initial: {\n      height: renderHeight,\n      width: renderWidth,\n      style: {\n        display: style.display,\n        height: style.height,\n        width: style.width\n      }\n    }\n  };\n  style.display = style.display || 'block';\n  style.boxSizing = style.boxSizing || 'border-box';\n  if (isNullOrEmpty(renderWidth)) {\n    const displayWidth = readUsedSize(canvas, 'width');\n    if (displayWidth !== undefined) {\n      canvas.width = displayWidth;\n    }\n  }\n  if (isNullOrEmpty(renderHeight)) {\n    if (canvas.style.height === '') {\n      canvas.height = canvas.width / (aspectRatio || 2);\n    } else {\n      const displayHeight = readUsedSize(canvas, 'height');\n      if (displayHeight !== undefined) {\n        canvas.height = displayHeight;\n      }\n    }\n  }\n  return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n  node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n  chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n  const type = EVENT_TYPES[event.type] || event.type;\n  const {x, y} = getRelativePosition(event, chart);\n  return {\n    type,\n    chart,\n    native: event,\n    x: x !== undefined ? x : null,\n    y: y !== undefined ? y : null,\n  };\n}\nfunction nodeListContains(nodeList, canvas) {\n  for (const node of nodeList) {\n    if (node === canvas || node.contains(canvas)) {\n      return true;\n    }\n  }\n}\nfunction createAttachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n  const dpr = window.devicePixelRatio;\n  if (dpr === oldDevicePixelRatio) {\n    return;\n  }\n  oldDevicePixelRatio = dpr;\n  drpListeningCharts.forEach((resize, chart) => {\n    if (chart.currentDevicePixelRatio !== dpr) {\n      resize();\n    }\n  });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n  if (!drpListeningCharts.size) {\n    window.addEventListener('resize', onWindowResize);\n  }\n  drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n  drpListeningCharts.delete(chart);\n  if (!drpListeningCharts.size) {\n    window.removeEventListener('resize', onWindowResize);\n  }\n}\nfunction createResizeObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const container = canvas && _getParentNode(canvas);\n  if (!container) {\n    return;\n  }\n  const resize = throttled((width, height) => {\n    const w = container.clientWidth;\n    listener(width, height);\n    if (w < container.clientWidth) {\n      listener();\n    }\n  }, window);\n  const observer = new ResizeObserver(entries => {\n    const entry = entries[0];\n    const width = entry.contentRect.width;\n    const height = entry.contentRect.height;\n    if (width === 0 && height === 0) {\n      return;\n    }\n    resize(width, height);\n  });\n  observer.observe(container);\n  listenDevicePixelRatioChanges(chart, resize);\n  return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n  if (observer) {\n    observer.disconnect();\n  }\n  if (type === 'resize') {\n    unlistenDevicePixelRatioChanges(chart);\n  }\n}\nfunction createProxyAndListen(chart, type, listener) {\n  const canvas = chart.canvas;\n  const proxy = throttled((event) => {\n    if (chart.ctx !== null) {\n      listener(fromNativeEvent(event, chart));\n    }\n  }, chart, (args) => {\n    const event = args[0];\n    return [event, event.offsetX, event.offsetY];\n  });\n  addListener(canvas, type, proxy);\n  return proxy;\n}\nclass DomPlatform extends BasePlatform {\n  acquireContext(canvas, aspectRatio) {\n    const context = canvas && canvas.getContext && canvas.getContext('2d');\n    if (context && context.canvas === canvas) {\n      initCanvas(canvas, aspectRatio);\n      return context;\n    }\n    return null;\n  }\n  releaseContext(context) {\n    const canvas = context.canvas;\n    if (!canvas[EXPANDO_KEY]) {\n      return false;\n    }\n    const initial = canvas[EXPANDO_KEY].initial;\n    ['height', 'width'].forEach((prop) => {\n      const value = initial[prop];\n      if (isNullOrUndef(value)) {\n        canvas.removeAttribute(prop);\n      } else {\n        canvas.setAttribute(prop, value);\n      }\n    });\n    const style = initial.style || {};\n    Object.keys(style).forEach((key) => {\n      canvas.style[key] = style[key];\n    });\n    canvas.width = canvas.width;\n    delete canvas[EXPANDO_KEY];\n    return true;\n  }\n  addEventListener(chart, type, listener) {\n    this.removeEventListener(chart, type);\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const handlers = {\n      attach: createAttachObserver,\n      detach: createDetachObserver,\n      resize: createResizeObserver\n    };\n    const handler = handlers[type] || createProxyAndListen;\n    proxies[type] = handler(chart, type, listener);\n  }\n  removeEventListener(chart, type) {\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const proxy = proxies[type];\n    if (!proxy) {\n      return;\n    }\n    const handlers = {\n      attach: releaseObserver,\n      detach: releaseObserver,\n      resize: releaseObserver\n    };\n    const handler = handlers[type] || removeListener;\n    handler(chart, type, proxy);\n    proxies[type] = undefined;\n  }\n  getDevicePixelRatio() {\n    return window.devicePixelRatio;\n  }\n  getMaximumSize(canvas, width, height, aspectRatio) {\n    return getMaximumSize(canvas, width, height, aspectRatio);\n  }\n  isAttached(canvas) {\n    const container = _getParentNode(canvas);\n    return !!(container && container.isConnected);\n  }\n}\n\nfunction _detectPlatform(canvas) {\n  if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n    return BasicPlatform;\n  }\n  return DomPlatform;\n}\n\nclass PluginService {\n  constructor() {\n    this._init = [];\n  }\n  notify(chart, hook, args, filter) {\n    if (hook === 'beforeInit') {\n      this._init = this._createDescriptors(chart, true);\n      this._notify(this._init, chart, 'install');\n    }\n    const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n    const result = this._notify(descriptors, chart, hook, args);\n    if (hook === 'afterDestroy') {\n      this._notify(descriptors, chart, 'stop');\n      this._notify(this._init, chart, 'uninstall');\n    }\n    return result;\n  }\n  _notify(descriptors, chart, hook, args) {\n    args = args || {};\n    for (const descriptor of descriptors) {\n      const plugin = descriptor.plugin;\n      const method = plugin[hook];\n      const params = [chart, args, descriptor.options];\n      if (callback(method, params, plugin) === false && args.cancelable) {\n        return false;\n      }\n    }\n    return true;\n  }\n  invalidate() {\n    if (!isNullOrUndef(this._cache)) {\n      this._oldCache = this._cache;\n      this._cache = undefined;\n    }\n  }\n  _descriptors(chart) {\n    if (this._cache) {\n      return this._cache;\n    }\n    const descriptors = this._cache = this._createDescriptors(chart);\n    this._notifyStateChanges(chart);\n    return descriptors;\n  }\n  _createDescriptors(chart, all) {\n    const config = chart && chart.config;\n    const options = valueOrDefault(config.options && config.options.plugins, {});\n    const plugins = allPlugins(config);\n    return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n  }\n  _notifyStateChanges(chart) {\n    const previousDescriptors = this._oldCache || [];\n    const descriptors = this._cache;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n    this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n    this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n  }\n}\nfunction allPlugins(config) {\n  const localIds = {};\n  const plugins = [];\n  const keys = Object.keys(registry.plugins.items);\n  for (let i = 0; i < keys.length; i++) {\n    plugins.push(registry.getPlugin(keys[i]));\n  }\n  const local = config.plugins || [];\n  for (let i = 0; i < local.length; i++) {\n    const plugin = local[i];\n    if (plugins.indexOf(plugin) === -1) {\n      plugins.push(plugin);\n      localIds[plugin.id] = true;\n    }\n  }\n  return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n  if (!all && options === false) {\n    return null;\n  }\n  if (options === true) {\n    return {};\n  }\n  return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n  const result = [];\n  const context = chart.getContext();\n  for (const plugin of plugins) {\n    const id = plugin.id;\n    const opts = getOpts(options[id], all);\n    if (opts === null) {\n      continue;\n    }\n    result.push({\n      plugin,\n      options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n    });\n  }\n  return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n  const keys = config.pluginScopeKeys(plugin);\n  const scopes = config.getOptionScopes(opts, keys);\n  if (local && plugin.defaults) {\n    scopes.push(plugin.defaults);\n  }\n  return config.createResolver(scopes, context, [''], {\n    scriptable: false,\n    indexable: false,\n    allKeys: true\n  });\n}\n\nfunction getIndexAxis(type, options) {\n  const datasetDefaults = defaults.datasets[type] || {};\n  const datasetOptions = (options.datasets || {})[type] || {};\n  return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n  let axis = id;\n  if (id === '_index_') {\n    axis = indexAxis;\n  } else if (id === '_value_') {\n    axis = indexAxis === 'x' ? 'y' : 'x';\n  }\n  return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n  return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n  if (position === 'top' || position === 'bottom') {\n    return 'x';\n  }\n  if (position === 'left' || position === 'right') {\n    return 'y';\n  }\n}\nfunction determineAxis(id, scaleOptions) {\n  if (id === 'x' || id === 'y') {\n    return id;\n  }\n  return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n  const chartDefaults = overrides[config.type] || {scales: {}};\n  const configScales = options.scales || {};\n  const chartIndexAxis = getIndexAxis(config.type, options);\n  const firstIDs = Object.create(null);\n  const scales = Object.create(null);\n  Object.keys(configScales).forEach(id => {\n    const scaleConf = configScales[id];\n    if (!isObject(scaleConf)) {\n      return console.error(`Invalid scale configuration for scale: ${id}`);\n    }\n    if (scaleConf._proxy) {\n      return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n    }\n    const axis = determineAxis(id, scaleConf);\n    const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n    const defaultScaleOptions = chartDefaults.scales || {};\n    firstIDs[axis] = firstIDs[axis] || id;\n    scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n  });\n  config.data.datasets.forEach(dataset => {\n    const type = dataset.type || config.type;\n    const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n    const datasetDefaults = overrides[type] || {};\n    const defaultScaleOptions = datasetDefaults.scales || {};\n    Object.keys(defaultScaleOptions).forEach(defaultID => {\n      const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n      const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n      scales[id] = scales[id] || Object.create(null);\n      mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n    });\n  });\n  Object.keys(scales).forEach(key => {\n    const scale = scales[key];\n    mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n  });\n  return scales;\n}\nfunction initOptions(config) {\n  const options = config.options || (config.options = {});\n  options.plugins = valueOrDefault(options.plugins, {});\n  options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n  data = data || {};\n  data.datasets = data.datasets || [];\n  data.labels = data.labels || [];\n  return data;\n}\nfunction initConfig(config) {\n  config = config || {};\n  config.data = initData(config.data);\n  initOptions(config);\n  return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n  let keys = keyCache.get(cacheKey);\n  if (!keys) {\n    keys = generate();\n    keyCache.set(cacheKey, keys);\n    keysCached.add(keys);\n  }\n  return keys;\n}\nconst addIfFound = (set, obj, key) => {\n  const opts = resolveObjectKey(obj, key);\n  if (opts !== undefined) {\n    set.add(opts);\n  }\n};\nclass Config {\n  constructor(config) {\n    this._config = initConfig(config);\n    this._scopeCache = new Map();\n    this._resolverCache = new Map();\n  }\n  get platform() {\n    return this._config.platform;\n  }\n  get type() {\n    return this._config.type;\n  }\n  set type(type) {\n    this._config.type = type;\n  }\n  get data() {\n    return this._config.data;\n  }\n  set data(data) {\n    this._config.data = initData(data);\n  }\n  get options() {\n    return this._config.options;\n  }\n  set options(options) {\n    this._config.options = options;\n  }\n  get plugins() {\n    return this._config.plugins;\n  }\n  update() {\n    const config = this._config;\n    this.clearCache();\n    initOptions(config);\n  }\n  clearCache() {\n    this._scopeCache.clear();\n    this._resolverCache.clear();\n  }\n  datasetScopeKeys(datasetType) {\n    return cachedKeys(datasetType,\n      () => [[\n        `datasets.${datasetType}`,\n        ''\n      ]]);\n  }\n  datasetAnimationScopeKeys(datasetType, transition) {\n    return cachedKeys(`${datasetType}.transition.${transition}`,\n      () => [\n        [\n          `datasets.${datasetType}.transitions.${transition}`,\n          `transitions.${transition}`,\n        ],\n        [\n          `datasets.${datasetType}`,\n          ''\n        ]\n      ]);\n  }\n  datasetElementScopeKeys(datasetType, elementType) {\n    return cachedKeys(`${datasetType}-${elementType}`,\n      () => [[\n        `datasets.${datasetType}.elements.${elementType}`,\n        `datasets.${datasetType}`,\n        `elements.${elementType}`,\n        ''\n      ]]);\n  }\n  pluginScopeKeys(plugin) {\n    const id = plugin.id;\n    const type = this.type;\n    return cachedKeys(`${type}-plugin-${id}`,\n      () => [[\n        `plugins.${id}`,\n        ...plugin.additionalOptionScopes || [],\n      ]]);\n  }\n  _cachedScopes(mainScope, resetCache) {\n    const _scopeCache = this._scopeCache;\n    let cache = _scopeCache.get(mainScope);\n    if (!cache || resetCache) {\n      cache = new Map();\n      _scopeCache.set(mainScope, cache);\n    }\n    return cache;\n  }\n  getOptionScopes(mainScope, keyLists, resetCache) {\n    const {options, type} = this;\n    const cache = this._cachedScopes(mainScope, resetCache);\n    const cached = cache.get(keyLists);\n    if (cached) {\n      return cached;\n    }\n    const scopes = new Set();\n    keyLists.forEach(keys => {\n      if (mainScope) {\n        scopes.add(mainScope);\n        keys.forEach(key => addIfFound(scopes, mainScope, key));\n      }\n      keys.forEach(key => addIfFound(scopes, options, key));\n      keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n      keys.forEach(key => addIfFound(scopes, defaults, key));\n      keys.forEach(key => addIfFound(scopes, descriptors, key));\n    });\n    const array = Array.from(scopes);\n    if (array.length === 0) {\n      array.push(Object.create(null));\n    }\n    if (keysCached.has(keyLists)) {\n      cache.set(keyLists, array);\n    }\n    return array;\n  }\n  chartOptionScopes() {\n    const {options, type} = this;\n    return [\n      options,\n      overrides[type] || {},\n      defaults.datasets[type] || {},\n      {type},\n      defaults,\n      descriptors\n    ];\n  }\n  resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n    const result = {$shared: true};\n    const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n    let options = resolver;\n    if (needContext(resolver, names)) {\n      result.$shared = false;\n      context = isFunction(context) ? context() : context;\n      const subResolver = this.createResolver(scopes, context, subPrefixes);\n      options = _attachContext(resolver, context, subResolver);\n    }\n    for (const prop of names) {\n      result[prop] = options[prop];\n    }\n    return result;\n  }\n  createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n    const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n    return isObject(context)\n      ? _attachContext(resolver, context, undefined, descriptorDefaults)\n      : resolver;\n  }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n  let cache = resolverCache.get(scopes);\n  if (!cache) {\n    cache = new Map();\n    resolverCache.set(scopes, cache);\n  }\n  const cacheKey = prefixes.join();\n  let cached = cache.get(cacheKey);\n  if (!cached) {\n    const resolver = _createResolver(scopes, prefixes);\n    cached = {\n      resolver,\n      subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n    };\n    cache.set(cacheKey, cached);\n  }\n  return cached;\n}\nconst hasFunction = value => isObject(value)\n  && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n  const {isScriptable, isIndexable} = _descriptors(proxy);\n  for (const prop of names) {\n    const scriptable = isScriptable(prop);\n    const indexable = isIndexable(prop);\n    const value = (indexable || scriptable) && proxy[prop];\n    if ((scriptable && (isFunction(value) || hasFunction(value)))\n      || (indexable && isArray(value))) {\n      return true;\n    }\n  }\n  return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n  return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n  return function(a, b) {\n    return a[l1] === b[l1]\n      ? a[l2] - b[l2]\n      : a[l1] - b[l1];\n  };\n}\nfunction onAnimationsComplete(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  chart.notifyPlugins('afterRender');\n  callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n  if (_isDomSupported() && typeof item === 'string') {\n    item = document.getElementById(item);\n  } else if (item && item.length) {\n    item = item[0];\n  }\n  if (item && item.canvas) {\n    item = item.canvas;\n  }\n  return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n  const canvas = getCanvas(key);\n  return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n  const keys = Object.keys(obj);\n  for (const key of keys) {\n    const intKey = +key;\n    if (intKey >= start) {\n      const value = obj[key];\n      delete obj[key];\n      if (move > 0 || intKey > start) {\n        obj[intKey + move] = value;\n      }\n    }\n  }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n  if (!inChartArea || e.type === 'mouseout') {\n    return null;\n  }\n  if (isClick) {\n    return lastEvent;\n  }\n  return e;\n}\nclass Chart {\n  constructor(item, userConfig) {\n    const config = this.config = new Config(userConfig);\n    const initialCanvas = getCanvas(item);\n    const existingChart = getChart(initialCanvas);\n    if (existingChart) {\n      throw new Error(\n        'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n      );\n    }\n    const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n    this.platform.updateConfig(config);\n    const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n    const canvas = context && context.canvas;\n    const height = canvas && canvas.height;\n    const width = canvas && canvas.width;\n    this.id = uid();\n    this.ctx = context;\n    this.canvas = canvas;\n    this.width = width;\n    this.height = height;\n    this._options = options;\n    this._aspectRatio = this.aspectRatio;\n    this._layers = [];\n    this._metasets = [];\n    this._stacks = undefined;\n    this.boxes = [];\n    this.currentDevicePixelRatio = undefined;\n    this.chartArea = undefined;\n    this._active = [];\n    this._lastEvent = undefined;\n    this._listeners = {};\n    this._responsiveListeners = undefined;\n    this._sortedMetasets = [];\n    this.scales = {};\n    this._plugins = new PluginService();\n    this.$proxies = {};\n    this._hiddenIndices = {};\n    this.attached = false;\n    this._animationsDisabled = undefined;\n    this.$context = undefined;\n    this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n    this._dataChanges = [];\n    instances[this.id] = this;\n    if (!context || !canvas) {\n      console.error(\"Failed to create chart: can't acquire context from the given item\");\n      return;\n    }\n    animator.listen(this, 'complete', onAnimationsComplete);\n    animator.listen(this, 'progress', onAnimationProgress);\n    this._initialize();\n    if (this.attached) {\n      this.update();\n    }\n  }\n  get aspectRatio() {\n    const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n    if (!isNullOrUndef(aspectRatio)) {\n      return aspectRatio;\n    }\n    if (maintainAspectRatio && _aspectRatio) {\n      return _aspectRatio;\n    }\n    return height ? width / height : null;\n  }\n  get data() {\n    return this.config.data;\n  }\n  set data(data) {\n    this.config.data = data;\n  }\n  get options() {\n    return this._options;\n  }\n  set options(options) {\n    this.config.options = options;\n  }\n  _initialize() {\n    this.notifyPlugins('beforeInit');\n    if (this.options.responsive) {\n      this.resize();\n    } else {\n      retinaScale(this, this.options.devicePixelRatio);\n    }\n    this.bindEvents();\n    this.notifyPlugins('afterInit');\n    return this;\n  }\n  clear() {\n    clearCanvas(this.canvas, this.ctx);\n    return this;\n  }\n  stop() {\n    animator.stop(this);\n    return this;\n  }\n  resize(width, height) {\n    if (!animator.running(this)) {\n      this._resize(width, height);\n    } else {\n      this._resizeBeforeDraw = {width, height};\n    }\n  }\n  _resize(width, height) {\n    const options = this.options;\n    const canvas = this.canvas;\n    const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n    const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n    const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n    const mode = this.width ? 'resize' : 'attach';\n    this.width = newSize.width;\n    this.height = newSize.height;\n    this._aspectRatio = this.aspectRatio;\n    if (!retinaScale(this, newRatio, true)) {\n      return;\n    }\n    this.notifyPlugins('resize', {size: newSize});\n    callback(options.onResize, [this, newSize], this);\n    if (this.attached) {\n      if (this._doResize(mode)) {\n        this.render();\n      }\n    }\n  }\n  ensureScalesHaveIDs() {\n    const options = this.options;\n    const scalesOptions = options.scales || {};\n    each(scalesOptions, (axisOptions, axisID) => {\n      axisOptions.id = axisID;\n    });\n  }\n  buildOrUpdateScales() {\n    const options = this.options;\n    const scaleOpts = options.scales;\n    const scales = this.scales;\n    const updated = Object.keys(scales).reduce((obj, id) => {\n      obj[id] = false;\n      return obj;\n    }, {});\n    let items = [];\n    if (scaleOpts) {\n      items = items.concat(\n        Object.keys(scaleOpts).map((id) => {\n          const scaleOptions = scaleOpts[id];\n          const axis = determineAxis(id, scaleOptions);\n          const isRadial = axis === 'r';\n          const isHorizontal = axis === 'x';\n          return {\n            options: scaleOptions,\n            dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n            dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n          };\n        })\n      );\n    }\n    each(items, (item) => {\n      const scaleOptions = item.options;\n      const id = scaleOptions.id;\n      const axis = determineAxis(id, scaleOptions);\n      const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n      if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n        scaleOptions.position = item.dposition;\n      }\n      updated[id] = true;\n      let scale = null;\n      if (id in scales && scales[id].type === scaleType) {\n        scale = scales[id];\n      } else {\n        const scaleClass = registry.getScale(scaleType);\n        scale = new scaleClass({\n          id,\n          type: scaleType,\n          ctx: this.ctx,\n          chart: this\n        });\n        scales[scale.id] = scale;\n      }\n      scale.init(scaleOptions, options);\n    });\n    each(updated, (hasUpdated, id) => {\n      if (!hasUpdated) {\n        delete scales[id];\n      }\n    });\n    each(scales, (scale) => {\n      layouts.configure(this, scale, scale.options);\n      layouts.addBox(this, scale);\n    });\n  }\n  _updateMetasets() {\n    const metasets = this._metasets;\n    const numData = this.data.datasets.length;\n    const numMeta = metasets.length;\n    metasets.sort((a, b) => a.index - b.index);\n    if (numMeta > numData) {\n      for (let i = numData; i < numMeta; ++i) {\n        this._destroyDatasetMeta(i);\n      }\n      metasets.splice(numData, numMeta - numData);\n    }\n    this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n  }\n  _removeUnreferencedMetasets() {\n    const {_metasets: metasets, data: {datasets}} = this;\n    if (metasets.length > datasets.length) {\n      delete this._stacks;\n    }\n    metasets.forEach((meta, index) => {\n      if (datasets.filter(x => x === meta._dataset).length === 0) {\n        this._destroyDatasetMeta(index);\n      }\n    });\n  }\n  buildOrUpdateControllers() {\n    const newControllers = [];\n    const datasets = this.data.datasets;\n    let i, ilen;\n    this._removeUnreferencedMetasets();\n    for (i = 0, ilen = datasets.length; i < ilen; i++) {\n      const dataset = datasets[i];\n      let meta = this.getDatasetMeta(i);\n      const type = dataset.type || this.config.type;\n      if (meta.type && meta.type !== type) {\n        this._destroyDatasetMeta(i);\n        meta = this.getDatasetMeta(i);\n      }\n      meta.type = type;\n      meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n      meta.order = dataset.order || 0;\n      meta.index = i;\n      meta.label = '' + dataset.label;\n      meta.visible = this.isDatasetVisible(i);\n      if (meta.controller) {\n        meta.controller.updateIndex(i);\n        meta.controller.linkScales();\n      } else {\n        const ControllerClass = registry.getController(type);\n        const {datasetElementType, dataElementType} = defaults.datasets[type];\n        Object.assign(ControllerClass.prototype, {\n          dataElementType: registry.getElement(dataElementType),\n          datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n        });\n        meta.controller = new ControllerClass(this, i);\n        newControllers.push(meta.controller);\n      }\n    }\n    this._updateMetasets();\n    return newControllers;\n  }\n  _resetElements() {\n    each(this.data.datasets, (dataset, datasetIndex) => {\n      this.getDatasetMeta(datasetIndex).controller.reset();\n    }, this);\n  }\n  reset() {\n    this._resetElements();\n    this.notifyPlugins('reset');\n  }\n  update(mode) {\n    const config = this.config;\n    config.update();\n    const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    const animsDisabled = this._animationsDisabled = !options.animation;\n    this._updateScales();\n    this._checkEventBindings();\n    this._updateHiddenIndices();\n    this._plugins.invalidate();\n    if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n    const newControllers = this.buildOrUpdateControllers();\n    this.notifyPlugins('beforeElementsUpdate');\n    let minPadding = 0;\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n      const {controller} = this.getDatasetMeta(i);\n      const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n      controller.buildOrUpdateElements(reset);\n      minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n    }\n    minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n    this._updateLayout(minPadding);\n    if (!animsDisabled) {\n      each(newControllers, (controller) => {\n        controller.reset();\n      });\n    }\n    this._updateDatasets(mode);\n    this.notifyPlugins('afterUpdate', {mode});\n    this._layers.sort(compare2Level('z', '_idx'));\n    const {_active, _lastEvent} = this;\n    if (_lastEvent) {\n      this._eventHandler(_lastEvent, true);\n    } else if (_active.length) {\n      this._updateHoverStyles(_active, _active, true);\n    }\n    this.render();\n  }\n  _updateScales() {\n    each(this.scales, (scale) => {\n      layouts.removeBox(this, scale);\n    });\n    this.ensureScalesHaveIDs();\n    this.buildOrUpdateScales();\n  }\n  _checkEventBindings() {\n    const options = this.options;\n    const existingEvents = new Set(Object.keys(this._listeners));\n    const newEvents = new Set(options.events);\n    if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n      this.unbindEvents();\n      this.bindEvents();\n    }\n  }\n  _updateHiddenIndices() {\n    const {_hiddenIndices} = this;\n    const changes = this._getUniformDataChanges() || [];\n    for (const {method, start, count} of changes) {\n      const move = method === '_removeElements' ? -count : count;\n      moveNumericKeys(_hiddenIndices, start, move);\n    }\n  }\n  _getUniformDataChanges() {\n    const _dataChanges = this._dataChanges;\n    if (!_dataChanges || !_dataChanges.length) {\n      return;\n    }\n    this._dataChanges = [];\n    const datasetCount = this.data.datasets.length;\n    const makeSet = (idx) => new Set(\n      _dataChanges\n        .filter(c => c[0] === idx)\n        .map((c, i) => i + ',' + c.splice(1).join(','))\n    );\n    const changeSet = makeSet(0);\n    for (let i = 1; i < datasetCount; i++) {\n      if (!setsEqual(changeSet, makeSet(i))) {\n        return;\n      }\n    }\n    return Array.from(changeSet)\n      .map(c => c.split(','))\n      .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n  }\n  _updateLayout(minPadding) {\n    if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n      return;\n    }\n    layouts.update(this, this.width, this.height, minPadding);\n    const area = this.chartArea;\n    const noArea = area.width <= 0 || area.height <= 0;\n    this._layers = [];\n    each(this.boxes, (box) => {\n      if (noArea && box.position === 'chartArea') {\n        return;\n      }\n      if (box.configure) {\n        box.configure();\n      }\n      this._layers.push(...box._layers());\n    }, this);\n    this._layers.forEach((item, index) => {\n      item._idx = index;\n    });\n    this.notifyPlugins('afterLayout');\n  }\n  _updateDatasets(mode) {\n    if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this.getDatasetMeta(i).controller.configure();\n    }\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n    }\n    this.notifyPlugins('afterDatasetsUpdate', {mode});\n  }\n  _updateDataset(index, mode) {\n    const meta = this.getDatasetMeta(index);\n    const args = {meta, index, mode, cancelable: true};\n    if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n      return;\n    }\n    meta.controller._update(mode);\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetUpdate', args);\n  }\n  render() {\n    if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n      return;\n    }\n    if (animator.has(this)) {\n      if (this.attached && !animator.running(this)) {\n        animator.start(this);\n      }\n    } else {\n      this.draw();\n      onAnimationsComplete({chart: this});\n    }\n  }\n  draw() {\n    let i;\n    if (this._resizeBeforeDraw) {\n      const {width, height} = this._resizeBeforeDraw;\n      this._resize(width, height);\n      this._resizeBeforeDraw = null;\n    }\n    this.clear();\n    if (this.width <= 0 || this.height <= 0) {\n      return;\n    }\n    if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n      return;\n    }\n    const layers = this._layers;\n    for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n    this._drawDatasets();\n    for (; i < layers.length; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n    this.notifyPlugins('afterDraw');\n  }\n  _getSortedDatasetMetas(filterVisible) {\n    const metasets = this._sortedMetasets;\n    const result = [];\n    let i, ilen;\n    for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n      const meta = metasets[i];\n      if (!filterVisible || meta.visible) {\n        result.push(meta);\n      }\n    }\n    return result;\n  }\n  getSortedVisibleDatasetMetas() {\n    return this._getSortedDatasetMetas(true);\n  }\n  _drawDatasets() {\n    if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n      return;\n    }\n    const metasets = this.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      this._drawDataset(metasets[i]);\n    }\n    this.notifyPlugins('afterDatasetsDraw');\n  }\n  _drawDataset(meta) {\n    const ctx = this.ctx;\n    const clip = meta._clip;\n    const useClip = !clip.disabled;\n    const area = this.chartArea;\n    const args = {\n      meta,\n      index: meta.index,\n      cancelable: true\n    };\n    if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n      return;\n    }\n    if (useClip) {\n      clipArea(ctx, {\n        left: clip.left === false ? 0 : area.left - clip.left,\n        right: clip.right === false ? this.width : area.right + clip.right,\n        top: clip.top === false ? 0 : area.top - clip.top,\n        bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n      });\n    }\n    meta.controller.draw();\n    if (useClip) {\n      unclipArea(ctx);\n    }\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetDraw', args);\n  }\n  isPointInArea(point) {\n    return _isPointInArea(point, this.chartArea, this._minPadding);\n  }\n  getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n    const method = Interaction.modes[mode];\n    if (typeof method === 'function') {\n      return method(this, e, options, useFinalPosition);\n    }\n    return [];\n  }\n  getDatasetMeta(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    const metasets = this._metasets;\n    let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n    if (!meta) {\n      meta = {\n        type: null,\n        data: [],\n        dataset: null,\n        controller: null,\n        hidden: null,\n        xAxisID: null,\n        yAxisID: null,\n        order: dataset && dataset.order || 0,\n        index: datasetIndex,\n        _dataset: dataset,\n        _parsed: [],\n        _sorted: false\n      };\n      metasets.push(meta);\n    }\n    return meta;\n  }\n  getContext() {\n    return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n  }\n  getVisibleDatasetCount() {\n    return this.getSortedVisibleDatasetMetas().length;\n  }\n  isDatasetVisible(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    if (!dataset) {\n      return false;\n    }\n    const meta = this.getDatasetMeta(datasetIndex);\n    return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n  }\n  setDatasetVisibility(datasetIndex, visible) {\n    const meta = this.getDatasetMeta(datasetIndex);\n    meta.hidden = !visible;\n  }\n  toggleDataVisibility(index) {\n    this._hiddenIndices[index] = !this._hiddenIndices[index];\n  }\n  getDataVisibility(index) {\n    return !this._hiddenIndices[index];\n  }\n  _updateVisibility(datasetIndex, dataIndex, visible) {\n    const mode = visible ? 'show' : 'hide';\n    const meta = this.getDatasetMeta(datasetIndex);\n    const anims = meta.controller._resolveAnimations(undefined, mode);\n    if (defined(dataIndex)) {\n      meta.data[dataIndex].hidden = !visible;\n      this.update();\n    } else {\n      this.setDatasetVisibility(datasetIndex, visible);\n      anims.update(meta, {visible});\n      this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n    }\n  }\n  hide(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, false);\n  }\n  show(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, true);\n  }\n  _destroyDatasetMeta(datasetIndex) {\n    const meta = this._metasets[datasetIndex];\n    if (meta && meta.controller) {\n      meta.controller._destroy();\n    }\n    delete this._metasets[datasetIndex];\n  }\n  _stop() {\n    let i, ilen;\n    this.stop();\n    animator.remove(this);\n    for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._destroyDatasetMeta(i);\n    }\n  }\n  destroy() {\n    this.notifyPlugins('beforeDestroy');\n    const {canvas, ctx} = this;\n    this._stop();\n    this.config.clearCache();\n    if (canvas) {\n      this.unbindEvents();\n      clearCanvas(canvas, ctx);\n      this.platform.releaseContext(ctx);\n      this.canvas = null;\n      this.ctx = null;\n    }\n    this.notifyPlugins('destroy');\n    delete instances[this.id];\n    this.notifyPlugins('afterDestroy');\n  }\n  toBase64Image(...args) {\n    return this.canvas.toDataURL(...args);\n  }\n  bindEvents() {\n    this.bindUserEvents();\n    if (this.options.responsive) {\n      this.bindResponsiveEvents();\n    } else {\n      this.attached = true;\n    }\n  }\n  bindUserEvents() {\n    const listeners = this._listeners;\n    const platform = this.platform;\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n    const listener = (e, x, y) => {\n      e.offsetX = x;\n      e.offsetY = y;\n      this._eventHandler(e);\n    };\n    each(this.options.events, (type) => _add(type, listener));\n  }\n  bindResponsiveEvents() {\n    if (!this._responsiveListeners) {\n      this._responsiveListeners = {};\n    }\n    const listeners = this._responsiveListeners;\n    const platform = this.platform;\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n    const _remove = (type, listener) => {\n      if (listeners[type]) {\n        platform.removeEventListener(this, type, listener);\n        delete listeners[type];\n      }\n    };\n    const listener = (width, height) => {\n      if (this.canvas) {\n        this.resize(width, height);\n      }\n    };\n    let detached;\n    const attached = () => {\n      _remove('attach', attached);\n      this.attached = true;\n      this.resize();\n      _add('resize', listener);\n      _add('detach', detached);\n    };\n    detached = () => {\n      this.attached = false;\n      _remove('resize', listener);\n      this._stop();\n      this._resize(0, 0);\n      _add('attach', attached);\n    };\n    if (platform.isAttached(this.canvas)) {\n      attached();\n    } else {\n      detached();\n    }\n  }\n  unbindEvents() {\n    each(this._listeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._listeners = {};\n    each(this._responsiveListeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._responsiveListeners = undefined;\n  }\n  updateHoverStyle(items, mode, enabled) {\n    const prefix = enabled ? 'set' : 'remove';\n    let meta, item, i, ilen;\n    if (mode === 'dataset') {\n      meta = this.getDatasetMeta(items[0].datasetIndex);\n      meta.controller['_' + prefix + 'DatasetHoverStyle']();\n    }\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      item = items[i];\n      const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n      if (controller) {\n        controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n      }\n    }\n  }\n  getActiveElements() {\n    return this._active || [];\n  }\n  setActiveElements(activeElements) {\n    const lastActive = this._active || [];\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.getDatasetMeta(datasetIndex);\n      if (!meta) {\n        throw new Error('No dataset found at index ' + datasetIndex);\n      }\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed) {\n      this._active = active;\n      this._lastEvent = null;\n      this._updateHoverStyles(active, lastActive);\n    }\n  }\n  notifyPlugins(hook, args, filter) {\n    return this._plugins.notify(this, hook, args, filter);\n  }\n  _updateHoverStyles(active, lastActive, replay) {\n    const hoverOptions = this.options.hover;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n    const deactivated = diff(lastActive, active);\n    const activated = replay ? active : diff(active, lastActive);\n    if (deactivated.length) {\n      this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n    }\n    if (activated.length && hoverOptions.mode) {\n      this.updateHoverStyle(activated, hoverOptions.mode, true);\n    }\n  }\n  _eventHandler(e, replay) {\n    const args = {\n      event: e,\n      replay,\n      cancelable: true,\n      inChartArea: this.isPointInArea(e)\n    };\n    const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n    if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n      return;\n    }\n    const changed = this._handleEvent(e, replay, args.inChartArea);\n    args.cancelable = false;\n    this.notifyPlugins('afterEvent', args, eventFilter);\n    if (changed || args.changed) {\n      this.render();\n    }\n    return this;\n  }\n  _handleEvent(e, replay, inChartArea) {\n    const {_active: lastActive = [], options} = this;\n    const useFinalPosition = replay;\n    const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n    const isClick = _isClickEvent(e);\n    const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n    if (inChartArea) {\n      this._lastEvent = null;\n      callback(options.onHover, [e, active, this], this);\n      if (isClick) {\n        callback(options.onClick, [e, active, this], this);\n      }\n    }\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed || replay) {\n      this._active = active;\n      this._updateHoverStyles(active, lastActive, replay);\n    }\n    this._lastEvent = lastEvent;\n    return changed;\n  }\n  _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n    if (e.type === 'mouseout') {\n      return [];\n    }\n    if (!inChartArea) {\n      return lastActive;\n    }\n    const hoverOptions = this.options.hover;\n    return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n  }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n  defaults: {\n    enumerable,\n    value: defaults\n  },\n  instances: {\n    enumerable,\n    value: instances\n  },\n  overrides: {\n    enumerable,\n    value: overrides\n  },\n  registry: {\n    enumerable,\n    value: registry\n  },\n  version: {\n    enumerable,\n    value: version\n  },\n  getChart: {\n    enumerable,\n    value: getChart\n  },\n  register: {\n    enumerable,\n    value: (...items) => {\n      registry.add(...items);\n      invalidatePlugins();\n    }\n  },\n  unregister: {\n    enumerable,\n    value: (...items) => {\n      registry.remove(...items);\n      invalidatePlugins();\n    }\n  }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n  const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n  let angleMargin = pixelMargin / outerRadius;\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n  if (innerRadius > pixelMargin) {\n    angleMargin = pixelMargin / innerRadius;\n    ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n  } else {\n    ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n  }\n  ctx.closePath();\n  ctx.clip();\n}\nfunction toRadiusCorners(value) {\n  return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n  const o = toRadiusCorners(arc.options.borderRadius);\n  const halfThickness = (outerRadius - innerRadius) / 2;\n  const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n  const computeOuterLimit = (val) => {\n    const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n    return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n  };\n  return {\n    outerStart: computeOuterLimit(o.outerStart),\n    outerEnd: computeOuterLimit(o.outerEnd),\n    innerStart: _limitValue(o.innerStart, 0, innerLimit),\n    innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n  };\n}\nfunction rThetaToXY(r, theta, x, y) {\n  return {\n    x: x + r * Math.cos(theta),\n    y: y + r * Math.sin(theta),\n  };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n  const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n  const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n  const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n  let spacingOffset = 0;\n  const alpha = end - start;\n  if (spacing) {\n    const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n    const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n    const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n    const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n    spacingOffset = (alpha - adjustedAngle) / 2;\n  }\n  const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n  const angleOffset = (alpha - beta) / 2;\n  const startAngle = start + angleOffset + spacingOffset;\n  const endAngle = end - angleOffset - spacingOffset;\n  const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n  const outerStartAdjustedRadius = outerRadius - outerStart;\n  const outerEndAdjustedRadius = outerRadius - outerEnd;\n  const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n  const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n  const innerStartAdjustedRadius = innerRadius + innerStart;\n  const innerEndAdjustedRadius = innerRadius + innerEnd;\n  const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n  const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n  ctx.beginPath();\n  if (circular) {\n    ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n    if (outerEnd > 0) {\n      const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n    }\n    const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n    ctx.lineTo(p4.x, p4.y);\n    if (innerEnd > 0) {\n      const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n    }\n    ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n    if (innerStart > 0) {\n      const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n    }\n    const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n    ctx.lineTo(p8.x, p8.y);\n    if (outerStart > 0) {\n      const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n    }\n  } else {\n    ctx.moveTo(x, y);\n    const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n    const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerStartX, outerStartY);\n    const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n    const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerEndX, outerEndY);\n  }\n  ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n  const {fullCircles, startAngle, circumference} = element;\n  let endAngle = element.endAngle;\n  if (fullCircles) {\n    pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n    for (let i = 0; i < fullCircles; ++i) {\n      ctx.fill();\n    }\n    if (!isNaN(circumference)) {\n      endAngle = startAngle + circumference % TAU;\n      if (circumference % TAU === 0) {\n        endAngle += TAU;\n      }\n    }\n  }\n  pathArc(ctx, element, offset, spacing, endAngle, circular);\n  ctx.fill();\n  return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n  const {x, y, startAngle, pixelMargin, fullCircles} = element;\n  const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n  const innerRadius = element.innerRadius + pixelMargin;\n  let i;\n  if (inner) {\n    clipArc(ctx, element, startAngle + TAU);\n  }\n  ctx.beginPath();\n  ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n  for (i = 0; i < fullCircles; ++i) {\n    ctx.stroke();\n  }\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n  for (i = 0; i < fullCircles; ++i) {\n    ctx.stroke();\n  }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n  const {options} = element;\n  const {borderWidth, borderJoinStyle} = options;\n  const inner = options.borderAlign === 'inner';\n  if (!borderWidth) {\n    return;\n  }\n  if (inner) {\n    ctx.lineWidth = borderWidth * 2;\n    ctx.lineJoin = borderJoinStyle || 'round';\n  } else {\n    ctx.lineWidth = borderWidth;\n    ctx.lineJoin = borderJoinStyle || 'bevel';\n  }\n  if (element.fullCircles) {\n    drawFullCircleBorders(ctx, element, inner);\n  }\n  if (inner) {\n    clipArc(ctx, element, endAngle);\n  }\n  pathArc(ctx, element, offset, spacing, endAngle, circular);\n  ctx.stroke();\n}\nclass ArcElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.circumference = undefined;\n    this.startAngle = undefined;\n    this.endAngle = undefined;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.pixelMargin = 0;\n    this.fullCircles = 0;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  inRange(chartX, chartY, useFinalPosition) {\n    const point = this.getProps(['x', 'y'], useFinalPosition);\n    const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n    const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius',\n      'circumference'\n    ], useFinalPosition);\n    const rAdjust = this.options.spacing / 2;\n    const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n    const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n    const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n    return (betweenAngles && withinRadius);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n      'x',\n      'y',\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius',\n      'circumference',\n    ], useFinalPosition);\n    const {offset, spacing} = this.options;\n    const halfAngle = (startAngle + endAngle) / 2;\n    const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n    return {\n      x: x + Math.cos(halfAngle) * halfRadius,\n      y: y + Math.sin(halfAngle) * halfRadius\n    };\n  }\n  tooltipPosition(useFinalPosition) {\n    return this.getCenterPoint(useFinalPosition);\n  }\n  draw(ctx) {\n    const {options, circumference} = this;\n    const offset = (options.offset || 0) / 2;\n    const spacing = (options.spacing || 0) / 2;\n    const circular = options.circular;\n    this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n    this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n    if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n      return;\n    }\n    ctx.save();\n    let radiusOffset = 0;\n    if (offset) {\n      radiusOffset = offset / 2;\n      const halfAngle = (this.startAngle + this.endAngle) / 2;\n      ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n      if (this.circumference >= PI) {\n        radiusOffset = offset;\n      }\n    }\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n    drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n    ctx.restore();\n  }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n  borderAlign: 'center',\n  borderColor: '#fff',\n  borderJoinStyle: undefined,\n  borderRadius: 0,\n  borderWidth: 2,\n  offset: 0,\n  spacing: 0,\n  angle: undefined,\n  circular: true,\n};\nArcElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n  ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n  ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n  ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n  ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n  ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n  ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n  ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n  if (options.stepped) {\n    return _steppedLineTo;\n  }\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierCurveTo;\n  }\n  return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n  const count = points.length;\n  const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n  const {start: segmentStart, end: segmentEnd} = segment;\n  const start = Math.max(paramsStart, segmentStart);\n  const end = Math.min(paramsEnd, segmentEnd);\n  const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n  return {\n    count,\n    start,\n    loop: segment.loop,\n    ilen: end < start && !outside ? count + end - start : end - start\n  };\n}\nfunction pathSegment(ctx, line, segment, params) {\n  const {points, options} = line;\n  const {count, start, loop, ilen} = pathVars(points, segment, params);\n  const lineMethod = getLineMethod(options);\n  let {move = true, reverse} = params || {};\n  let i, point, prev;\n  for (i = 0; i <= ilen; ++i) {\n    point = points[(start + (reverse ? ilen - i : i)) % count];\n    if (point.skip) {\n      continue;\n    } else if (move) {\n      ctx.moveTo(point.x, point.y);\n      move = false;\n    } else {\n      lineMethod(ctx, prev, point, reverse, options.stepped);\n    }\n    prev = point;\n  }\n  if (loop) {\n    point = points[(start + (reverse ? ilen : 0)) % count];\n    lineMethod(ctx, prev, point, reverse, options.stepped);\n  }\n  return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n  const points = line.points;\n  const {count, start, ilen} = pathVars(points, segment, params);\n  const {move = true, reverse} = params || {};\n  let avgX = 0;\n  let countX = 0;\n  let i, point, prevX, minY, maxY, lastY;\n  const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n  const drawX = () => {\n    if (minY !== maxY) {\n      ctx.lineTo(avgX, maxY);\n      ctx.lineTo(avgX, minY);\n      ctx.lineTo(avgX, lastY);\n    }\n  };\n  if (move) {\n    point = points[pointIndex(0)];\n    ctx.moveTo(point.x, point.y);\n  }\n  for (i = 0; i <= ilen; ++i) {\n    point = points[pointIndex(i)];\n    if (point.skip) {\n      continue;\n    }\n    const x = point.x;\n    const y = point.y;\n    const truncX = x | 0;\n    if (truncX === prevX) {\n      if (y < minY) {\n        minY = y;\n      } else if (y > maxY) {\n        maxY = y;\n      }\n      avgX = (countX * avgX + x) / ++countX;\n    } else {\n      drawX();\n      ctx.lineTo(x, y);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n    }\n    lastY = y;\n  }\n  drawX();\n}\nfunction _getSegmentMethod(line) {\n  const opts = line.options;\n  const borderDash = opts.borderDash && opts.borderDash.length;\n  const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n  return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n  if (options.stepped) {\n    return _steppedInterpolation;\n  }\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierInterpolation;\n  }\n  return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n  let path = line._path;\n  if (!path) {\n    path = line._path = new Path2D();\n    if (line.path(path, start, count)) {\n      path.closePath();\n    }\n  }\n  setStyle(ctx, line.options);\n  ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n  const {segments, options} = line;\n  const segmentMethod = _getSegmentMethod(line);\n  for (const segment of segments) {\n    setStyle(ctx, options, segment.style);\n    ctx.beginPath();\n    if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n      ctx.closePath();\n    }\n    ctx.stroke();\n  }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n  if (usePath2D && !line.options.segment) {\n    strokePathWithCache(ctx, line, start, count);\n  } else {\n    strokePathDirect(ctx, line, start, count);\n  }\n}\nclass LineElement extends Element {\n  constructor(cfg) {\n    super();\n    this.animated = true;\n    this.options = undefined;\n    this._chart = undefined;\n    this._loop = undefined;\n    this._fullLoop = undefined;\n    this._path = undefined;\n    this._points = undefined;\n    this._segments = undefined;\n    this._decimated = false;\n    this._pointsUpdated = false;\n    this._datasetIndex = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  updateControlPoints(chartArea, indexAxis) {\n    const options = this.options;\n    if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n      const loop = options.spanGaps ? this._loop : this._fullLoop;\n      _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n      this._pointsUpdated = true;\n    }\n  }\n  set points(points) {\n    this._points = points;\n    delete this._segments;\n    delete this._path;\n    this._pointsUpdated = false;\n  }\n  get points() {\n    return this._points;\n  }\n  get segments() {\n    return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n  }\n  first() {\n    const segments = this.segments;\n    const points = this.points;\n    return segments.length && points[segments[0].start];\n  }\n  last() {\n    const segments = this.segments;\n    const points = this.points;\n    const count = segments.length;\n    return count && points[segments[count - 1].end];\n  }\n  interpolate(point, property) {\n    const options = this.options;\n    const value = point[property];\n    const points = this.points;\n    const segments = _boundSegments(this, {property, start: value, end: value});\n    if (!segments.length) {\n      return;\n    }\n    const result = [];\n    const _interpolate = _getInterpolationMethod(options);\n    let i, ilen;\n    for (i = 0, ilen = segments.length; i < ilen; ++i) {\n      const {start, end} = segments[i];\n      const p1 = points[start];\n      const p2 = points[end];\n      if (p1 === p2) {\n        result.push(p1);\n        continue;\n      }\n      const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n      const interpolated = _interpolate(p1, p2, t, options.stepped);\n      interpolated[property] = point[property];\n      result.push(interpolated);\n    }\n    return result.length === 1 ? result[0] : result;\n  }\n  pathSegment(ctx, segment, params) {\n    const segmentMethod = _getSegmentMethod(this);\n    return segmentMethod(ctx, this, segment, params);\n  }\n  path(ctx, start, count) {\n    const segments = this.segments;\n    const segmentMethod = _getSegmentMethod(this);\n    let loop = this._loop;\n    start = start || 0;\n    count = count || (this.points.length - start);\n    for (const segment of segments) {\n      loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n    }\n    return !!loop;\n  }\n  draw(ctx, chartArea, start, count) {\n    const options = this.options || {};\n    const points = this.points || [];\n    if (points.length && options.borderWidth) {\n      ctx.save();\n      draw(ctx, this, start, count);\n      ctx.restore();\n    }\n    if (this.animated) {\n      this._pointsUpdated = false;\n      this._path = undefined;\n    }\n  }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n  borderCapStyle: 'butt',\n  borderDash: [],\n  borderDashOffset: 0,\n  borderJoinStyle: 'miter',\n  borderWidth: 3,\n  capBezierPoints: true,\n  cubicInterpolationMode: 'default',\n  fill: false,\n  spanGaps: false,\n  stepped: false,\n  tension: 0,\n};\nLineElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n  _scriptable: true,\n  _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n  const options = el.options;\n  const {[axis]: value} = el.getProps([axis], useFinalPosition);\n  return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.parsed = undefined;\n    this.skip = undefined;\n    this.stop = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  inRange(mouseX, mouseY, useFinalPosition) {\n    const options = this.options;\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n  }\n  inXRange(mouseX, useFinalPosition) {\n    return inRange$1(this, mouseX, 'x', useFinalPosition);\n  }\n  inYRange(mouseY, useFinalPosition) {\n    return inRange$1(this, mouseY, 'y', useFinalPosition);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n  size(options) {\n    options = options || this.options || {};\n    let radius = options.radius || 0;\n    radius = Math.max(radius, radius && options.hoverRadius || 0);\n    const borderWidth = radius && options.borderWidth || 0;\n    return (radius + borderWidth) * 2;\n  }\n  draw(ctx, area) {\n    const options = this.options;\n    if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n      return;\n    }\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n    ctx.fillStyle = options.backgroundColor;\n    drawPoint(ctx, options, this.x, this.y);\n  }\n  getRange() {\n    const options = this.options || {};\n    return options.radius + options.hitRadius;\n  }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n  borderWidth: 1,\n  hitRadius: 1,\n  hoverBorderWidth: 1,\n  hoverRadius: 4,\n  pointStyle: 'circle',\n  radius: 3,\n  rotation: 0\n};\nPointElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n  const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n  let left, right, top, bottom, half;\n  if (bar.horizontal) {\n    half = height / 2;\n    left = Math.min(x, base);\n    right = Math.max(x, base);\n    top = y - half;\n    bottom = y + half;\n  } else {\n    half = width / 2;\n    left = x - half;\n    right = x + half;\n    top = Math.min(y, base);\n    bottom = Math.max(y, base);\n  }\n  return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n  return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n  const value = bar.options.borderWidth;\n  const skip = bar.borderSkipped;\n  const o = toTRBL(value);\n  return {\n    t: skipOrLimit(skip.top, o.top, 0, maxH),\n    r: skipOrLimit(skip.right, o.right, 0, maxW),\n    b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n    l: skipOrLimit(skip.left, o.left, 0, maxW)\n  };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n  const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n  const value = bar.options.borderRadius;\n  const o = toTRBLCorners(value);\n  const maxR = Math.min(maxW, maxH);\n  const skip = bar.borderSkipped;\n  const enableBorder = enableBorderRadius || isObject(value);\n  return {\n    topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n    topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n    bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n    bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n  };\n}\nfunction boundingRects(bar) {\n  const bounds = getBarBounds(bar);\n  const width = bounds.right - bounds.left;\n  const height = bounds.bottom - bounds.top;\n  const border = parseBorderWidth(bar, width / 2, height / 2);\n  const radius = parseBorderRadius(bar, width / 2, height / 2);\n  return {\n    outer: {\n      x: bounds.left,\n      y: bounds.top,\n      w: width,\n      h: height,\n      radius\n    },\n    inner: {\n      x: bounds.left + border.l,\n      y: bounds.top + border.t,\n      w: width - border.l - border.r,\n      h: height - border.t - border.b,\n      radius: {\n        topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n        topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n        bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n        bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n      }\n    }\n  };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n  const skipX = x === null;\n  const skipY = y === null;\n  const skipBoth = skipX && skipY;\n  const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n  return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n  return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n  ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n  const x = rect.x !== refRect.x ? -amount : 0;\n  const y = rect.y !== refRect.y ? -amount : 0;\n  const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n  const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n  return {\n    x: rect.x + x,\n    y: rect.y + y,\n    w: rect.w + w,\n    h: rect.h + h,\n    radius: rect.radius\n  };\n}\nclass BarElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.horizontal = undefined;\n    this.base = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.inflateAmount = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  draw(ctx) {\n    const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n    const {inner, outer} = boundingRects(this);\n    const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n    ctx.save();\n    if (outer.w !== inner.w || outer.h !== inner.h) {\n      ctx.beginPath();\n      addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n      ctx.clip();\n      addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n      ctx.fillStyle = borderColor;\n      ctx.fill('evenodd');\n    }\n    ctx.beginPath();\n    addRectPath(ctx, inflateRect(inner, inflateAmount));\n    ctx.fillStyle = backgroundColor;\n    ctx.fill();\n    ctx.restore();\n  }\n  inRange(mouseX, mouseY, useFinalPosition) {\n    return inRange(this, mouseX, mouseY, useFinalPosition);\n  }\n  inXRange(mouseX, useFinalPosition) {\n    return inRange(this, mouseX, null, useFinalPosition);\n  }\n  inYRange(mouseY, useFinalPosition) {\n    return inRange(this, null, mouseY, useFinalPosition);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n    return {\n      x: horizontal ? (x + base) / 2 : x,\n      y: horizontal ? y : (y + base) / 2\n    };\n  }\n  getRange(axis) {\n    return axis === 'x' ? this.width / 2 : this.height / 2;\n  }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n  borderSkipped: 'start',\n  borderWidth: 0,\n  borderRadius: 0,\n  inflateAmount: 'auto',\n  pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n  const samples = options.samples || availableWidth;\n  if (samples >= count) {\n    return data.slice(start, start + count);\n  }\n  const decimated = [];\n  const bucketWidth = (count - 2) / (samples - 2);\n  let sampledIndex = 0;\n  const endIndex = start + count - 1;\n  let a = start;\n  let i, maxAreaPoint, maxArea, area, nextA;\n  decimated[sampledIndex++] = data[a];\n  for (i = 0; i < samples - 2; i++) {\n    let avgX = 0;\n    let avgY = 0;\n    let j;\n    const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n    const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n    const avgRangeLength = avgRangeEnd - avgRangeStart;\n    for (j = avgRangeStart; j < avgRangeEnd; j++) {\n      avgX += data[j].x;\n      avgY += data[j].y;\n    }\n    avgX /= avgRangeLength;\n    avgY /= avgRangeLength;\n    const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n    const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n    const {x: pointAx, y: pointAy} = data[a];\n    maxArea = area = -1;\n    for (j = rangeOffs; j < rangeTo; j++) {\n      area = 0.5 * Math.abs(\n        (pointAx - avgX) * (data[j].y - pointAy) -\n        (pointAx - data[j].x) * (avgY - pointAy)\n      );\n      if (area > maxArea) {\n        maxArea = area;\n        maxAreaPoint = data[j];\n        nextA = j;\n      }\n    }\n    decimated[sampledIndex++] = maxAreaPoint;\n    a = nextA;\n  }\n  decimated[sampledIndex++] = data[endIndex];\n  return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n  let avgX = 0;\n  let countX = 0;\n  let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n  const decimated = [];\n  const endIndex = start + count - 1;\n  const xMin = data[start].x;\n  const xMax = data[endIndex].x;\n  const dx = xMax - xMin;\n  for (i = start; i < start + count; ++i) {\n    point = data[i];\n    x = (point.x - xMin) / dx * availableWidth;\n    y = point.y;\n    const truncX = x | 0;\n    if (truncX === prevX) {\n      if (y < minY) {\n        minY = y;\n        minIndex = i;\n      } else if (y > maxY) {\n        maxY = y;\n        maxIndex = i;\n      }\n      avgX = (countX * avgX + point.x) / ++countX;\n    } else {\n      const lastIndex = i - 1;\n      if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n        const intermediateIndex1 = Math.min(minIndex, maxIndex);\n        const intermediateIndex2 = Math.max(minIndex, maxIndex);\n        if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex1],\n            x: avgX,\n          });\n        }\n        if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex2],\n            x: avgX\n          });\n        }\n      }\n      if (i > 0 && lastIndex !== startIndex) {\n        decimated.push(data[lastIndex]);\n      }\n      decimated.push(point);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n      minIndex = maxIndex = startIndex = i;\n    }\n  }\n  return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n  if (dataset._decimated) {\n    const data = dataset._data;\n    delete dataset._decimated;\n    delete dataset._data;\n    Object.defineProperty(dataset, 'data', {value: data});\n  }\n}\nfunction cleanDecimatedData(chart) {\n  chart.data.datasets.forEach((dataset) => {\n    cleanDecimatedDataset(dataset);\n  });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n  const pointCount = points.length;\n  let start = 0;\n  let count;\n  const {iScale} = meta;\n  const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n  if (minDefined) {\n    start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n  }\n  if (maxDefined) {\n    count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n  } else {\n    count = pointCount - start;\n  }\n  return {start, count};\n}\nvar plugin_decimation = {\n  id: 'decimation',\n  defaults: {\n    algorithm: 'min-max',\n    enabled: false,\n  },\n  beforeElementsUpdate: (chart, args, options) => {\n    if (!options.enabled) {\n      cleanDecimatedData(chart);\n      return;\n    }\n    const availableWidth = chart.width;\n    chart.data.datasets.forEach((dataset, datasetIndex) => {\n      const {_data, indexAxis} = dataset;\n      const meta = chart.getDatasetMeta(datasetIndex);\n      const data = _data || dataset.data;\n      if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n        return;\n      }\n      if (!meta.controller.supportsDecimation) {\n        return;\n      }\n      const xAxis = chart.scales[meta.xAxisID];\n      if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n        return;\n      }\n      if (chart.options.parsing) {\n        return;\n      }\n      let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n      const threshold = options.threshold || 4 * availableWidth;\n      if (count <= threshold) {\n        cleanDecimatedDataset(dataset);\n        return;\n      }\n      if (isNullOrUndef(_data)) {\n        dataset._data = data;\n        delete dataset.data;\n        Object.defineProperty(dataset, 'data', {\n          configurable: true,\n          enumerable: true,\n          get: function() {\n            return this._decimated;\n          },\n          set: function(d) {\n            this._data = d;\n          }\n        });\n      }\n      let decimated;\n      switch (options.algorithm) {\n      case 'lttb':\n        decimated = lttbDecimation(data, start, count, availableWidth, options);\n        break;\n      case 'min-max':\n        decimated = minMaxDecimation(data, start, count, availableWidth);\n        break;\n      default:\n        throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n      }\n      dataset._decimated = decimated;\n    });\n  },\n  destroy(chart) {\n    cleanDecimatedData(chart);\n  }\n};\n\nfunction _segments(line, target, property) {\n  const segments = line.segments;\n  const points = line.points;\n  const tpoints = target.points;\n  const parts = [];\n  for (const segment of segments) {\n    let {start, end} = segment;\n    end = _findSegmentEnd(start, end, points);\n    const bounds = _getBounds(property, points[start], points[end], segment.loop);\n    if (!target.segments) {\n      parts.push({\n        source: segment,\n        target: bounds,\n        start: points[start],\n        end: points[end]\n      });\n      continue;\n    }\n    const targetSegments = _boundSegments(target, bounds);\n    for (const tgt of targetSegments) {\n      const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n      const fillSources = _boundSegment(segment, points, subBounds);\n      for (const fillSource of fillSources) {\n        parts.push({\n          source: fillSource,\n          target: tgt,\n          start: {\n            [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n          },\n          end: {\n            [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n          }\n        });\n      }\n    }\n  }\n  return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n  if (loop) {\n    return;\n  }\n  let start = first[property];\n  let end = last[property];\n  if (property === 'angle') {\n    start = _normalizeAngle(start);\n    end = _normalizeAngle(end);\n  }\n  return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n  const {x = null, y = null} = boundary || {};\n  const linePoints = line.points;\n  const points = [];\n  line.segments.forEach(({start, end}) => {\n    end = _findSegmentEnd(start, end, linePoints);\n    const first = linePoints[start];\n    const last = linePoints[end];\n    if (y !== null) {\n      points.push({x: first.x, y});\n      points.push({x: last.x, y});\n    } else if (x !== null) {\n      points.push({x, y: first.y});\n      points.push({x, y: last.y});\n    }\n  });\n  return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n  for (;end > start; end--) {\n    const point = points[end];\n    if (!isNaN(point.x) && !isNaN(point.y)) {\n      break;\n    }\n  }\n  return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n  if (a && b) {\n    return fn(a[prop], b[prop]);\n  }\n  return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n  let points = [];\n  let _loop = false;\n  if (isArray(boundary)) {\n    _loop = true;\n    points = boundary;\n  } else {\n    points = _pointsFromSegments(boundary, line);\n  }\n  return points.length ? new LineElement({\n    points,\n    options: {tension: 0},\n    _loop,\n    _fullLoop: _loop\n  }) : null;\n}\nfunction _shouldApplyFill(source) {\n  return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n  const source = sources[index];\n  let fill = source.fill;\n  const visited = [index];\n  let target;\n  if (!propagate) {\n    return fill;\n  }\n  while (fill !== false && visited.indexOf(fill) === -1) {\n    if (!isNumberFinite(fill)) {\n      return fill;\n    }\n    target = sources[fill];\n    if (!target) {\n      return false;\n    }\n    if (target.visible) {\n      return fill;\n    }\n    visited.push(fill);\n    fill = target.fill;\n  }\n  return false;\n}\nfunction _decodeFill(line, index, count) {\n  const fill = parseFillOption(line);\n  if (isObject(fill)) {\n    return isNaN(fill.value) ? false : fill;\n  }\n  let target = parseFloat(fill);\n  if (isNumberFinite(target) && Math.floor(target) === target) {\n    return decodeTargetIndex(fill[0], index, target, count);\n  }\n  return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n  if (firstCh === '-' || firstCh === '+') {\n    target = index + target;\n  }\n  if (target === index || target < 0 || target >= count) {\n    return false;\n  }\n  return target;\n}\nfunction _getTargetPixel(fill, scale) {\n  let pixel = null;\n  if (fill === 'start') {\n    pixel = scale.bottom;\n  } else if (fill === 'end') {\n    pixel = scale.top;\n  } else if (isObject(fill)) {\n    pixel = scale.getPixelForValue(fill.value);\n  } else if (scale.getBasePixel) {\n    pixel = scale.getBasePixel();\n  }\n  return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n  let value;\n  if (fill === 'start') {\n    value = startValue;\n  } else if (fill === 'end') {\n    value = scale.options.reverse ? scale.min : scale.max;\n  } else if (isObject(fill)) {\n    value = fill.value;\n  } else {\n    value = scale.getBaseValue();\n  }\n  return value;\n}\nfunction parseFillOption(line) {\n  const options = line.options;\n  const fillOption = options.fill;\n  let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n  if (fill === undefined) {\n    fill = !!options.backgroundColor;\n  }\n  if (fill === false || fill === null) {\n    return false;\n  }\n  if (fill === true) {\n    return 'origin';\n  }\n  return fill;\n}\n\nfunction _buildStackLine(source) {\n  const {scale, index, line} = source;\n  const points = [];\n  const segments = line.segments;\n  const sourcePoints = line.points;\n  const linesBelow = getLinesBelow(scale, index);\n  linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    for (let j = segment.start; j <= segment.end; j++) {\n      addPointsBelow(points, sourcePoints[j], linesBelow);\n    }\n  }\n  return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n  const below = [];\n  const metas = scale.getMatchingVisibleMetas('line');\n  for (let i = 0; i < metas.length; i++) {\n    const meta = metas[i];\n    if (meta.index === index) {\n      break;\n    }\n    if (!meta.hidden) {\n      below.unshift(meta.dataset);\n    }\n  }\n  return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n  const postponed = [];\n  for (let j = 0; j < linesBelow.length; j++) {\n    const line = linesBelow[j];\n    const {first, last, point} = findPoint(line, sourcePoint, 'x');\n    if (!point || (first && last)) {\n      continue;\n    }\n    if (first) {\n      postponed.unshift(point);\n    } else {\n      points.push(point);\n      if (!last) {\n        break;\n      }\n    }\n  }\n  points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n  const point = line.interpolate(sourcePoint, property);\n  if (!point) {\n    return {};\n  }\n  const pointValue = point[property];\n  const segments = line.segments;\n  const linePoints = line.points;\n  let first = false;\n  let last = false;\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    const firstValue = linePoints[segment.start][property];\n    const lastValue = linePoints[segment.end][property];\n    if (_isBetween(pointValue, firstValue, lastValue)) {\n      first = pointValue === firstValue;\n      last = pointValue === lastValue;\n      break;\n    }\n  }\n  return {first, last, point};\n}\n\nclass simpleArc {\n  constructor(opts) {\n    this.x = opts.x;\n    this.y = opts.y;\n    this.radius = opts.radius;\n  }\n  pathSegment(ctx, bounds, opts) {\n    const {x, y, radius} = this;\n    bounds = bounds || {start: 0, end: TAU};\n    ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n    return !opts.bounds;\n  }\n  interpolate(point) {\n    const {x, y, radius} = this;\n    const angle = point.angle;\n    return {\n      x: x + Math.cos(angle) * radius,\n      y: y + Math.sin(angle) * radius,\n      angle\n    };\n  }\n}\n\nfunction _getTarget(source) {\n  const {chart, fill, line} = source;\n  if (isNumberFinite(fill)) {\n    return getLineByIndex(chart, fill);\n  }\n  if (fill === 'stack') {\n    return _buildStackLine(source);\n  }\n  if (fill === 'shape') {\n    return true;\n  }\n  const boundary = computeBoundary(source);\n  if (boundary instanceof simpleArc) {\n    return boundary;\n  }\n  return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n  const meta = chart.getDatasetMeta(index);\n  const visible = meta && chart.isDatasetVisible(index);\n  return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n  const scale = source.scale || {};\n  if (scale.getPointPositionForValue) {\n    return computeCircularBoundary(source);\n  }\n  return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n  const {scale = {}, fill} = source;\n  const pixel = _getTargetPixel(fill, scale);\n  if (isNumberFinite(pixel)) {\n    const horizontal = scale.isHorizontal();\n    return {\n      x: horizontal ? pixel : null,\n      y: horizontal ? null : pixel\n    };\n  }\n  return null;\n}\nfunction computeCircularBoundary(source) {\n  const {scale, fill} = source;\n  const options = scale.options;\n  const length = scale.getLabels().length;\n  const start = options.reverse ? scale.max : scale.min;\n  const value = _getTargetValue(fill, scale, start);\n  const target = [];\n  if (options.grid.circular) {\n    const center = scale.getPointPositionForValue(0, start);\n    return new simpleArc({\n      x: center.x,\n      y: center.y,\n      radius: scale.getDistanceFromCenterForValue(value)\n    });\n  }\n  for (let i = 0; i < length; ++i) {\n    target.push(scale.getPointPositionForValue(i, value));\n  }\n  return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n  const target = _getTarget(source);\n  const {line, scale, axis} = source;\n  const lineOpts = line.options;\n  const fillOption = lineOpts.fill;\n  const color = lineOpts.backgroundColor;\n  const {above = color, below = color} = fillOption || {};\n  if (target && line.points.length) {\n    clipArea(ctx, area);\n    doFill(ctx, {line, target, above, below, area, scale, axis});\n    unclipArea(ctx);\n  }\n}\nfunction doFill(ctx, cfg) {\n  const {line, target, above, below, area, scale} = cfg;\n  const property = line._loop ? 'angle' : cfg.axis;\n  ctx.save();\n  if (property === 'x' && below !== above) {\n    clipVertical(ctx, target, area.top);\n    fill(ctx, {line, target, color: above, scale, property});\n    ctx.restore();\n    ctx.save();\n    clipVertical(ctx, target, area.bottom);\n  }\n  fill(ctx, {line, target, color: below, scale, property});\n  ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n  const {segments, points} = target;\n  let first = true;\n  let lineLoop = false;\n  ctx.beginPath();\n  for (const segment of segments) {\n    const {start, end} = segment;\n    const firstPoint = points[start];\n    const lastPoint = points[_findSegmentEnd(start, end, points)];\n    if (first) {\n      ctx.moveTo(firstPoint.x, firstPoint.y);\n      first = false;\n    } else {\n      ctx.lineTo(firstPoint.x, clipY);\n      ctx.lineTo(firstPoint.x, firstPoint.y);\n    }\n    lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n    if (lineLoop) {\n      ctx.closePath();\n    } else {\n      ctx.lineTo(lastPoint.x, clipY);\n    }\n  }\n  ctx.lineTo(target.first().x, clipY);\n  ctx.closePath();\n  ctx.clip();\n}\nfunction fill(ctx, cfg) {\n  const {line, target, property, color, scale} = cfg;\n  const segments = _segments(line, target, property);\n  for (const {source: src, target: tgt, start, end} of segments) {\n    const {style: {backgroundColor = color} = {}} = src;\n    const notShape = target !== true;\n    ctx.save();\n    ctx.fillStyle = backgroundColor;\n    clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n    ctx.beginPath();\n    const lineLoop = !!line.pathSegment(ctx, src);\n    let loop;\n    if (notShape) {\n      if (lineLoop) {\n        ctx.closePath();\n      } else {\n        interpolatedLineTo(ctx, target, end, property);\n      }\n      const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n      loop = lineLoop && targetLoop;\n      if (!loop) {\n        interpolatedLineTo(ctx, target, start, property);\n      }\n    }\n    ctx.closePath();\n    ctx.fill(loop ? 'evenodd' : 'nonzero');\n    ctx.restore();\n  }\n}\nfunction clipBounds(ctx, scale, bounds) {\n  const {top, bottom} = scale.chart.chartArea;\n  const {property, start, end} = bounds || {};\n  if (property === 'x') {\n    ctx.beginPath();\n    ctx.rect(start, top, end - start, bottom - top);\n    ctx.clip();\n  }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n  const interpolatedPoint = target.interpolate(point, property);\n  if (interpolatedPoint) {\n    ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n  }\n}\n\nvar index = {\n  id: 'filler',\n  afterDatasetsUpdate(chart, _args, options) {\n    const count = (chart.data.datasets || []).length;\n    const sources = [];\n    let meta, i, line, source;\n    for (i = 0; i < count; ++i) {\n      meta = chart.getDatasetMeta(i);\n      line = meta.dataset;\n      source = null;\n      if (line && line.options && line instanceof LineElement) {\n        source = {\n          visible: chart.isDatasetVisible(i),\n          index: i,\n          fill: _decodeFill(line, i, count),\n          chart,\n          axis: meta.controller.options.indexAxis,\n          scale: meta.vScale,\n          line,\n        };\n      }\n      meta.$filler = source;\n      sources.push(source);\n    }\n    for (i = 0; i < count; ++i) {\n      source = sources[i];\n      if (!source || source.fill === false) {\n        continue;\n      }\n      source.fill = _resolveTarget(sources, i, options.propagate);\n    }\n  },\n  beforeDraw(chart, _args, options) {\n    const draw = options.drawTime === 'beforeDraw';\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    const area = chart.chartArea;\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n      if (!source) {\n        continue;\n      }\n      source.line.updateControlPoints(area, source.axis);\n      if (draw && source.fill) {\n        _drawfill(chart.ctx, source, area);\n      }\n    }\n  },\n  beforeDatasetsDraw(chart, _args, options) {\n    if (options.drawTime !== 'beforeDatasetsDraw') {\n      return;\n    }\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n      if (_shouldApplyFill(source)) {\n        _drawfill(chart.ctx, source, chart.chartArea);\n      }\n    }\n  },\n  beforeDatasetDraw(chart, args, options) {\n    const source = args.meta.$filler;\n    if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n      return;\n    }\n    _drawfill(chart.ctx, source, chart.chartArea);\n  },\n  defaults: {\n    propagate: true,\n    drawTime: 'beforeDatasetDraw'\n  }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n  let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n  if (labelOpts.usePointStyle) {\n    boxHeight = Math.min(boxHeight, fontSize);\n    boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n  }\n  return {\n    boxWidth,\n    boxHeight,\n    itemHeight: Math.max(fontSize, boxHeight)\n  };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n  constructor(config) {\n    super();\n    this._added = false;\n    this.legendHitBoxes = [];\n    this._hoveredItem = null;\n    this.doughnutMode = false;\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this.legendItems = undefined;\n    this.columnSizes = undefined;\n    this.lineWidths = undefined;\n    this.maxHeight = undefined;\n    this.maxWidth = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this._margins = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n  update(maxWidth, maxHeight, margins) {\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins;\n    this.setDimensions();\n    this.buildLabels();\n    this.fit();\n  }\n  setDimensions() {\n    if (this.isHorizontal()) {\n      this.width = this.maxWidth;\n      this.left = this._margins.left;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n      this.top = this._margins.top;\n      this.bottom = this.height;\n    }\n  }\n  buildLabels() {\n    const labelOpts = this.options.labels || {};\n    let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n    if (labelOpts.filter) {\n      legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n    }\n    if (labelOpts.sort) {\n      legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n    }\n    if (this.options.reverse) {\n      legendItems.reverse();\n    }\n    this.legendItems = legendItems;\n  }\n  fit() {\n    const {options, ctx} = this;\n    if (!options.display) {\n      this.width = this.height = 0;\n      return;\n    }\n    const labelOpts = options.labels;\n    const labelFont = toFont(labelOpts.font);\n    const fontSize = labelFont.size;\n    const titleHeight = this._computeTitleHeight();\n    const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n    let width, height;\n    ctx.font = labelFont.string;\n    if (this.isHorizontal()) {\n      width = this.maxWidth;\n      height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    } else {\n      height = this.maxHeight;\n      width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    }\n    this.width = Math.min(width, options.maxWidth || this.maxWidth);\n    this.height = Math.min(height, options.maxHeight || this.maxHeight);\n  }\n  _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n    const {ctx, maxWidth, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    const lineWidths = this.lineWidths = [0];\n    const lineHeight = itemHeight + padding;\n    let totalHeight = titleHeight;\n    ctx.textAlign = 'left';\n    ctx.textBaseline = 'middle';\n    let row = -1;\n    let top = -lineHeight;\n    this.legendItems.forEach((legendItem, i) => {\n      const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n      if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n        totalHeight += lineHeight;\n        lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n        top += lineHeight;\n        row++;\n      }\n      hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n      lineWidths[lineWidths.length - 1] += itemWidth + padding;\n    });\n    return totalHeight;\n  }\n  _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n    const {ctx, maxHeight, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    const columnSizes = this.columnSizes = [];\n    const heightLimit = maxHeight - titleHeight;\n    let totalWidth = padding;\n    let currentColWidth = 0;\n    let currentColHeight = 0;\n    let left = 0;\n    let col = 0;\n    this.legendItems.forEach((legendItem, i) => {\n      const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n      if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n        totalWidth += currentColWidth + padding;\n        columnSizes.push({width: currentColWidth, height: currentColHeight});\n        left += currentColWidth + padding;\n        col++;\n        currentColWidth = currentColHeight = 0;\n      }\n      hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n      currentColWidth = Math.max(currentColWidth, itemWidth);\n      currentColHeight += itemHeight + padding;\n    });\n    totalWidth += currentColWidth;\n    columnSizes.push({width: currentColWidth, height: currentColHeight});\n    return totalWidth;\n  }\n  adjustHitBoxes() {\n    if (!this.options.display) {\n      return;\n    }\n    const titleHeight = this._computeTitleHeight();\n    const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n    const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n    if (this.isHorizontal()) {\n      let row = 0;\n      let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n      for (const hitbox of hitboxes) {\n        if (row !== hitbox.row) {\n          row = hitbox.row;\n          left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n        }\n        hitbox.top += this.top + titleHeight + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n        left += hitbox.width + padding;\n      }\n    } else {\n      let col = 0;\n      let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n      for (const hitbox of hitboxes) {\n        if (hitbox.col !== col) {\n          col = hitbox.col;\n          top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n        }\n        hitbox.top = top;\n        hitbox.left += this.left + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n        top += hitbox.height + padding;\n      }\n    }\n  }\n  isHorizontal() {\n    return this.options.position === 'top' || this.options.position === 'bottom';\n  }\n  draw() {\n    if (this.options.display) {\n      const ctx = this.ctx;\n      clipArea(ctx, this);\n      this._draw();\n      unclipArea(ctx);\n    }\n  }\n  _draw() {\n    const {options: opts, columnSizes, lineWidths, ctx} = this;\n    const {align, labels: labelOpts} = opts;\n    const defaultColor = defaults.color;\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const labelFont = toFont(labelOpts.font);\n    const {color: fontColor, padding} = labelOpts;\n    const fontSize = labelFont.size;\n    const halfFontSize = fontSize / 2;\n    let cursor;\n    this.drawTitle();\n    ctx.textAlign = rtlHelper.textAlign('left');\n    ctx.textBaseline = 'middle';\n    ctx.lineWidth = 0.5;\n    ctx.font = labelFont.string;\n    const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n    const drawLegendBox = function(x, y, legendItem) {\n      if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n        return;\n      }\n      ctx.save();\n      const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n      ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n      ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n      ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n      ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n      ctx.lineWidth = lineWidth;\n      ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n      ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n      if (labelOpts.usePointStyle) {\n        const drawOptions = {\n          radius: boxHeight * Math.SQRT2 / 2,\n          pointStyle: legendItem.pointStyle,\n          rotation: legendItem.rotation,\n          borderWidth: lineWidth\n        };\n        const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n        const centerY = y + halfFontSize;\n        drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n      } else {\n        const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n        const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n        const borderRadius = toTRBLCorners(legendItem.borderRadius);\n        ctx.beginPath();\n        if (Object.values(borderRadius).some(v => v !== 0)) {\n          addRoundedRectPath(ctx, {\n            x: xBoxLeft,\n            y: yBoxTop,\n            w: boxWidth,\n            h: boxHeight,\n            radius: borderRadius,\n          });\n        } else {\n          ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n        }\n        ctx.fill();\n        if (lineWidth !== 0) {\n          ctx.stroke();\n        }\n      }\n      ctx.restore();\n    };\n    const fillText = function(x, y, legendItem) {\n      renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n        strikethrough: legendItem.hidden,\n        textAlign: rtlHelper.textAlign(legendItem.textAlign)\n      });\n    };\n    const isHorizontal = this.isHorizontal();\n    const titleHeight = this._computeTitleHeight();\n    if (isHorizontal) {\n      cursor = {\n        x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n        y: this.top + padding + titleHeight,\n        line: 0\n      };\n    } else {\n      cursor = {\n        x: this.left + padding,\n        y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n        line: 0\n      };\n    }\n    overrideTextDirection(this.ctx, opts.textDirection);\n    const lineHeight = itemHeight + padding;\n    this.legendItems.forEach((legendItem, i) => {\n      ctx.strokeStyle = legendItem.fontColor || fontColor;\n      ctx.fillStyle = legendItem.fontColor || fontColor;\n      const textWidth = ctx.measureText(legendItem.text).width;\n      const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n      const width = boxWidth + halfFontSize + textWidth;\n      let x = cursor.x;\n      let y = cursor.y;\n      rtlHelper.setWidth(this.width);\n      if (isHorizontal) {\n        if (i > 0 && x + width + padding > this.right) {\n          y = cursor.y += lineHeight;\n          cursor.line++;\n          x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n        }\n      } else if (i > 0 && y + lineHeight > this.bottom) {\n        x = cursor.x = x + columnSizes[cursor.line].width + padding;\n        cursor.line++;\n        y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n      }\n      const realX = rtlHelper.x(x);\n      drawLegendBox(realX, y, legendItem);\n      x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n      fillText(rtlHelper.x(x), y, legendItem);\n      if (isHorizontal) {\n        cursor.x += width + padding;\n      } else {\n        cursor.y += lineHeight;\n      }\n    });\n    restoreTextDirection(this.ctx, opts.textDirection);\n  }\n  drawTitle() {\n    const opts = this.options;\n    const titleOpts = opts.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n    if (!titleOpts.display) {\n      return;\n    }\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const ctx = this.ctx;\n    const position = titleOpts.position;\n    const halfFontSize = titleFont.size / 2;\n    const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n    let y;\n    let left = this.left;\n    let maxWidth = this.width;\n    if (this.isHorizontal()) {\n      maxWidth = Math.max(...this.lineWidths);\n      y = this.top + topPaddingPlusHalfFontSize;\n      left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n    } else {\n      const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n      y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n    }\n    const x = _alignStartEnd(position, left, left + maxWidth);\n    ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n    ctx.textBaseline = 'middle';\n    ctx.strokeStyle = titleOpts.color;\n    ctx.fillStyle = titleOpts.color;\n    ctx.font = titleFont.string;\n    renderText(ctx, titleOpts.text, x, y, titleFont);\n  }\n  _computeTitleHeight() {\n    const titleOpts = this.options.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n    return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n  }\n  _getLegendItemAt(x, y) {\n    let i, hitBox, lh;\n    if (_isBetween(x, this.left, this.right)\n      && _isBetween(y, this.top, this.bottom)) {\n      lh = this.legendHitBoxes;\n      for (i = 0; i < lh.length; ++i) {\n        hitBox = lh[i];\n        if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n          && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n          return this.legendItems[i];\n        }\n      }\n    }\n    return null;\n  }\n  handleEvent(e) {\n    const opts = this.options;\n    if (!isListened(e.type, opts)) {\n      return;\n    }\n    const hoveredItem = this._getLegendItemAt(e.x, e.y);\n    if (e.type === 'mousemove' || e.type === 'mouseout') {\n      const previous = this._hoveredItem;\n      const sameItem = itemsEqual(previous, hoveredItem);\n      if (previous && !sameItem) {\n        callback(opts.onLeave, [e, previous, this], this);\n      }\n      this._hoveredItem = hoveredItem;\n      if (hoveredItem && !sameItem) {\n        callback(opts.onHover, [e, hoveredItem, this], this);\n      }\n    } else if (hoveredItem) {\n      callback(opts.onClick, [e, hoveredItem, this], this);\n    }\n  }\n}\nfunction isListened(type, opts) {\n  if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n    return true;\n  }\n  if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n    return true;\n  }\n  return false;\n}\nvar plugin_legend = {\n  id: 'legend',\n  _element: Legend,\n  start(chart, _args, options) {\n    const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n    layouts.configure(chart, legend, options);\n    layouts.addBox(chart, legend);\n  },\n  stop(chart) {\n    layouts.removeBox(chart, chart.legend);\n    delete chart.legend;\n  },\n  beforeUpdate(chart, _args, options) {\n    const legend = chart.legend;\n    layouts.configure(chart, legend, options);\n    legend.options = options;\n  },\n  afterUpdate(chart) {\n    const legend = chart.legend;\n    legend.buildLabels();\n    legend.adjustHitBoxes();\n  },\n  afterEvent(chart, args) {\n    if (!args.replay) {\n      chart.legend.handleEvent(args.event);\n    }\n  },\n  defaults: {\n    display: true,\n    position: 'top',\n    align: 'center',\n    fullSize: true,\n    reverse: false,\n    weight: 1000,\n    onClick(e, legendItem, legend) {\n      const index = legendItem.datasetIndex;\n      const ci = legend.chart;\n      if (ci.isDatasetVisible(index)) {\n        ci.hide(index);\n        legendItem.hidden = true;\n      } else {\n        ci.show(index);\n        legendItem.hidden = false;\n      }\n    },\n    onHover: null,\n    onLeave: null,\n    labels: {\n      color: (ctx) => ctx.chart.options.color,\n      boxWidth: 40,\n      padding: 10,\n      generateLabels(chart) {\n        const datasets = chart.data.datasets;\n        const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n        return chart._getSortedDatasetMetas().map((meta) => {\n          const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n          const borderWidth = toPadding(style.borderWidth);\n          return {\n            text: datasets[meta.index].label,\n            fillStyle: style.backgroundColor,\n            fontColor: color,\n            hidden: !meta.visible,\n            lineCap: style.borderCapStyle,\n            lineDash: style.borderDash,\n            lineDashOffset: style.borderDashOffset,\n            lineJoin: style.borderJoinStyle,\n            lineWidth: (borderWidth.width + borderWidth.height) / 4,\n            strokeStyle: style.borderColor,\n            pointStyle: pointStyle || style.pointStyle,\n            rotation: style.rotation,\n            textAlign: textAlign || style.textAlign,\n            borderRadius: 0,\n            datasetIndex: meta.index\n          };\n        }, this);\n      }\n    },\n    title: {\n      color: (ctx) => ctx.chart.options.color,\n      display: false,\n      position: 'center',\n      text: '',\n    }\n  },\n  descriptors: {\n    _scriptable: (name) => !name.startsWith('on'),\n    labels: {\n      _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n    }\n  },\n};\n\nclass Title extends Element {\n  constructor(config) {\n    super();\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this._padding = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n  update(maxWidth, maxHeight) {\n    const opts = this.options;\n    this.left = 0;\n    this.top = 0;\n    if (!opts.display) {\n      this.width = this.height = this.right = this.bottom = 0;\n      return;\n    }\n    this.width = this.right = maxWidth;\n    this.height = this.bottom = maxHeight;\n    const lineCount = isArray(opts.text) ? opts.text.length : 1;\n    this._padding = toPadding(opts.padding);\n    const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n    if (this.isHorizontal()) {\n      this.height = textSize;\n    } else {\n      this.width = textSize;\n    }\n  }\n  isHorizontal() {\n    const pos = this.options.position;\n    return pos === 'top' || pos === 'bottom';\n  }\n  _drawArgs(offset) {\n    const {top, left, bottom, right, options} = this;\n    const align = options.align;\n    let rotation = 0;\n    let maxWidth, titleX, titleY;\n    if (this.isHorizontal()) {\n      titleX = _alignStartEnd(align, left, right);\n      titleY = top + offset;\n      maxWidth = right - left;\n    } else {\n      if (options.position === 'left') {\n        titleX = left + offset;\n        titleY = _alignStartEnd(align, bottom, top);\n        rotation = PI * -0.5;\n      } else {\n        titleX = right - offset;\n        titleY = _alignStartEnd(align, top, bottom);\n        rotation = PI * 0.5;\n      }\n      maxWidth = bottom - top;\n    }\n    return {titleX, titleY, maxWidth, rotation};\n  }\n  draw() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    if (!opts.display) {\n      return;\n    }\n    const fontOpts = toFont(opts.font);\n    const lineHeight = fontOpts.lineHeight;\n    const offset = lineHeight / 2 + this._padding.top;\n    const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n    renderText(ctx, opts.text, 0, 0, fontOpts, {\n      color: opts.color,\n      maxWidth,\n      rotation,\n      textAlign: _toLeftRightCenter(opts.align),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n}\nfunction createTitle(chart, titleOpts) {\n  const title = new Title({\n    ctx: chart.ctx,\n    options: titleOpts,\n    chart\n  });\n  layouts.configure(chart, title, titleOpts);\n  layouts.addBox(chart, title);\n  chart.titleBlock = title;\n}\nvar plugin_title = {\n  id: 'title',\n  _element: Title,\n  start(chart, _args, options) {\n    createTitle(chart, options);\n  },\n  stop(chart) {\n    const titleBlock = chart.titleBlock;\n    layouts.removeBox(chart, titleBlock);\n    delete chart.titleBlock;\n  },\n  beforeUpdate(chart, _args, options) {\n    const title = chart.titleBlock;\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'bold',\n    },\n    fullSize: true,\n    padding: 10,\n    position: 'top',\n    text: '',\n    weight: 2000\n  },\n  defaultRoutes: {\n    color: 'color'\n  },\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n  id: 'subtitle',\n  start(chart, _args, options) {\n    const title = new Title({\n      ctx: chart.ctx,\n      options,\n      chart\n    });\n    layouts.configure(chart, title, options);\n    layouts.addBox(chart, title);\n    map.set(chart, title);\n  },\n  stop(chart) {\n    layouts.removeBox(chart, map.get(chart));\n    map.delete(chart);\n  },\n  beforeUpdate(chart, _args, options) {\n    const title = map.get(chart);\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'normal',\n    },\n    fullSize: true,\n    padding: 0,\n    position: 'top',\n    text: '',\n    weight: 1500\n  },\n  defaultRoutes: {\n    color: 'color'\n  },\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n\nconst positioners = {\n  average(items) {\n    if (!items.length) {\n      return false;\n    }\n    let i, len;\n    let x = 0;\n    let y = 0;\n    let count = 0;\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const pos = el.tooltipPosition();\n        x += pos.x;\n        y += pos.y;\n        ++count;\n      }\n    }\n    return {\n      x: x / count,\n      y: y / count\n    };\n  },\n  nearest(items, eventPosition) {\n    if (!items.length) {\n      return false;\n    }\n    let x = eventPosition.x;\n    let y = eventPosition.y;\n    let minDistance = Number.POSITIVE_INFINITY;\n    let i, len, nearestElement;\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const center = el.getCenterPoint();\n        const d = distanceBetweenPoints(eventPosition, center);\n        if (d < minDistance) {\n          minDistance = d;\n          nearestElement = el;\n        }\n      }\n    }\n    if (nearestElement) {\n      const tp = nearestElement.tooltipPosition();\n      x = tp.x;\n      y = tp.y;\n    }\n    return {\n      x,\n      y\n    };\n  }\n};\nfunction pushOrConcat(base, toPush) {\n  if (toPush) {\n    if (isArray(toPush)) {\n      Array.prototype.push.apply(base, toPush);\n    } else {\n      base.push(toPush);\n    }\n  }\n  return base;\n}\nfunction splitNewlines(str) {\n  if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n    return str.split('\\n');\n  }\n  return str;\n}\nfunction createTooltipItem(chart, item) {\n  const {element, datasetIndex, index} = item;\n  const controller = chart.getDatasetMeta(datasetIndex).controller;\n  const {label, value} = controller.getLabelAndValue(index);\n  return {\n    chart,\n    label,\n    parsed: controller.getParsed(index),\n    raw: chart.data.datasets[datasetIndex].data[index],\n    formattedValue: value,\n    dataset: controller.getDataset(),\n    dataIndex: index,\n    datasetIndex,\n    element\n  };\n}\nfunction getTooltipSize(tooltip, options) {\n  const ctx = tooltip.chart.ctx;\n  const {body, footer, title} = tooltip;\n  const {boxWidth, boxHeight} = options;\n  const bodyFont = toFont(options.bodyFont);\n  const titleFont = toFont(options.titleFont);\n  const footerFont = toFont(options.footerFont);\n  const titleLineCount = title.length;\n  const footerLineCount = footer.length;\n  const bodyLineItemCount = body.length;\n  const padding = toPadding(options.padding);\n  let height = padding.height;\n  let width = 0;\n  let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n  combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n  if (titleLineCount) {\n    height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n  }\n  if (combinedBodyLength) {\n    const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n    height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n  }\n  if (footerLineCount) {\n    height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n  }\n  let widthPadding = 0;\n  const maxLineWidth = function(line) {\n    width = Math.max(width, ctx.measureText(line).width + widthPadding);\n  };\n  ctx.save();\n  ctx.font = titleFont.string;\n  each(tooltip.title, maxLineWidth);\n  ctx.font = bodyFont.string;\n  each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n  widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n  each(body, (bodyItem) => {\n    each(bodyItem.before, maxLineWidth);\n    each(bodyItem.lines, maxLineWidth);\n    each(bodyItem.after, maxLineWidth);\n  });\n  widthPadding = 0;\n  ctx.font = footerFont.string;\n  each(tooltip.footer, maxLineWidth);\n  ctx.restore();\n  width += padding.width;\n  return {width, height};\n}\nfunction determineYAlign(chart, size) {\n  const {y, height} = size;\n  if (y < height / 2) {\n    return 'top';\n  } else if (y > (chart.height - height / 2)) {\n    return 'bottom';\n  }\n  return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n  const {x, width} = size;\n  const caret = options.caretSize + options.caretPadding;\n  if (xAlign === 'left' && x + width + caret > chart.width) {\n    return true;\n  }\n  if (xAlign === 'right' && x - width - caret < 0) {\n    return true;\n  }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n  const {x, width} = size;\n  const {width: chartWidth, chartArea: {left, right}} = chart;\n  let xAlign = 'center';\n  if (yAlign === 'center') {\n    xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n  } else if (x <= width / 2) {\n    xAlign = 'left';\n  } else if (x >= chartWidth - width / 2) {\n    xAlign = 'right';\n  }\n  if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n    xAlign = 'center';\n  }\n  return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n  const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n  return {\n    xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n    yAlign\n  };\n}\nfunction alignX(size, xAlign) {\n  let {x, width} = size;\n  if (xAlign === 'right') {\n    x -= width;\n  } else if (xAlign === 'center') {\n    x -= (width / 2);\n  }\n  return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n  let {y, height} = size;\n  if (yAlign === 'top') {\n    y += paddingAndSize;\n  } else if (yAlign === 'bottom') {\n    y -= height + paddingAndSize;\n  } else {\n    y -= (height / 2);\n  }\n  return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n  const {caretSize, caretPadding, cornerRadius} = options;\n  const {xAlign, yAlign} = alignment;\n  const paddingAndSize = caretSize + caretPadding;\n  const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n  let x = alignX(size, xAlign);\n  const y = alignY(size, yAlign, paddingAndSize);\n  if (yAlign === 'center') {\n    if (xAlign === 'left') {\n      x += paddingAndSize;\n    } else if (xAlign === 'right') {\n      x -= paddingAndSize;\n    }\n  } else if (xAlign === 'left') {\n    x -= Math.max(topLeft, bottomLeft) + caretSize;\n  } else if (xAlign === 'right') {\n    x += Math.max(topRight, bottomRight) + caretSize;\n  }\n  return {\n    x: _limitValue(x, 0, chart.width - size.width),\n    y: _limitValue(y, 0, chart.height - size.height)\n  };\n}\nfunction getAlignedX(tooltip, align, options) {\n  const padding = toPadding(options.padding);\n  return align === 'center'\n    ? tooltip.x + tooltip.width / 2\n    : align === 'right'\n      ? tooltip.x + tooltip.width - padding.right\n      : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n  return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n  return createContext(parent, {\n    tooltip,\n    tooltipItems,\n    type: 'tooltip'\n  });\n}\nfunction overrideCallbacks(callbacks, context) {\n  const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n  return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n  constructor(config) {\n    super();\n    this.opacity = 0;\n    this._active = [];\n    this._eventPosition = undefined;\n    this._size = undefined;\n    this._cachedAnimations = undefined;\n    this._tooltipItems = [];\n    this.$animations = undefined;\n    this.$context = undefined;\n    this.chart = config.chart || config._chart;\n    this._chart = this.chart;\n    this.options = config.options;\n    this.dataPoints = undefined;\n    this.title = undefined;\n    this.beforeBody = undefined;\n    this.body = undefined;\n    this.afterBody = undefined;\n    this.footer = undefined;\n    this.xAlign = undefined;\n    this.yAlign = undefined;\n    this.x = undefined;\n    this.y = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this.caretX = undefined;\n    this.caretY = undefined;\n    this.labelColors = undefined;\n    this.labelPointStyles = undefined;\n    this.labelTextColors = undefined;\n  }\n  initialize(options) {\n    this.options = options;\n    this._cachedAnimations = undefined;\n    this.$context = undefined;\n  }\n  _resolveAnimations() {\n    const cached = this._cachedAnimations;\n    if (cached) {\n      return cached;\n    }\n    const chart = this.chart;\n    const options = this.options.setContext(this.getContext());\n    const opts = options.enabled && chart.options.animation && options.animations;\n    const animations = new Animations(this.chart, opts);\n    if (opts._cacheable) {\n      this._cachedAnimations = Object.freeze(animations);\n    }\n    return animations;\n  }\n  getContext() {\n    return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n  }\n  getTitle(context, options) {\n    const {callbacks} = options;\n    const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n    const title = callbacks.title.apply(this, [context]);\n    const afterTitle = callbacks.afterTitle.apply(this, [context]);\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n    lines = pushOrConcat(lines, splitNewlines(title));\n    lines = pushOrConcat(lines, splitNewlines(afterTitle));\n    return lines;\n  }\n  getBeforeBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n  }\n  getBody(tooltipItems, options) {\n    const {callbacks} = options;\n    const bodyItems = [];\n    each(tooltipItems, (context) => {\n      const bodyItem = {\n        before: [],\n        lines: [],\n        after: []\n      };\n      const scoped = overrideCallbacks(callbacks, context);\n      pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n      pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n      pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n      bodyItems.push(bodyItem);\n    });\n    return bodyItems;\n  }\n  getAfterBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n  }\n  getFooter(tooltipItems, options) {\n    const {callbacks} = options;\n    const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n    const footer = callbacks.footer.apply(this, [tooltipItems]);\n    const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n    lines = pushOrConcat(lines, splitNewlines(footer));\n    lines = pushOrConcat(lines, splitNewlines(afterFooter));\n    return lines;\n  }\n  _createItems(options) {\n    const active = this._active;\n    const data = this.chart.data;\n    const labelColors = [];\n    const labelPointStyles = [];\n    const labelTextColors = [];\n    let tooltipItems = [];\n    let i, len;\n    for (i = 0, len = active.length; i < len; ++i) {\n      tooltipItems.push(createTooltipItem(this.chart, active[i]));\n    }\n    if (options.filter) {\n      tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n    }\n    if (options.itemSort) {\n      tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n    }\n    each(tooltipItems, (context) => {\n      const scoped = overrideCallbacks(options.callbacks, context);\n      labelColors.push(scoped.labelColor.call(this, context));\n      labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n      labelTextColors.push(scoped.labelTextColor.call(this, context));\n    });\n    this.labelColors = labelColors;\n    this.labelPointStyles = labelPointStyles;\n    this.labelTextColors = labelTextColors;\n    this.dataPoints = tooltipItems;\n    return tooltipItems;\n  }\n  update(changed, replay) {\n    const options = this.options.setContext(this.getContext());\n    const active = this._active;\n    let properties;\n    let tooltipItems = [];\n    if (!active.length) {\n      if (this.opacity !== 0) {\n        properties = {\n          opacity: 0\n        };\n      }\n    } else {\n      const position = positioners[options.position].call(this, active, this._eventPosition);\n      tooltipItems = this._createItems(options);\n      this.title = this.getTitle(tooltipItems, options);\n      this.beforeBody = this.getBeforeBody(tooltipItems, options);\n      this.body = this.getBody(tooltipItems, options);\n      this.afterBody = this.getAfterBody(tooltipItems, options);\n      this.footer = this.getFooter(tooltipItems, options);\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, size);\n      const alignment = determineAlignment(this.chart, options, positionAndSize);\n      const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n      this.xAlign = alignment.xAlign;\n      this.yAlign = alignment.yAlign;\n      properties = {\n        opacity: 1,\n        x: backgroundPoint.x,\n        y: backgroundPoint.y,\n        width: size.width,\n        height: size.height,\n        caretX: position.x,\n        caretY: position.y\n      };\n    }\n    this._tooltipItems = tooltipItems;\n    this.$context = undefined;\n    if (properties) {\n      this._resolveAnimations().update(this, properties);\n    }\n    if (changed && options.external) {\n      options.external.call(this, {chart: this.chart, tooltip: this, replay});\n    }\n  }\n  drawCaret(tooltipPoint, ctx, size, options) {\n    const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n    ctx.lineTo(caretPosition.x1, caretPosition.y1);\n    ctx.lineTo(caretPosition.x2, caretPosition.y2);\n    ctx.lineTo(caretPosition.x3, caretPosition.y3);\n  }\n  getCaretPosition(tooltipPoint, size, options) {\n    const {xAlign, yAlign} = this;\n    const {caretSize, cornerRadius} = options;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n    const {x: ptX, y: ptY} = tooltipPoint;\n    const {width, height} = size;\n    let x1, x2, x3, y1, y2, y3;\n    if (yAlign === 'center') {\n      y2 = ptY + (height / 2);\n      if (xAlign === 'left') {\n        x1 = ptX;\n        x2 = x1 - caretSize;\n        y1 = y2 + caretSize;\n        y3 = y2 - caretSize;\n      } else {\n        x1 = ptX + width;\n        x2 = x1 + caretSize;\n        y1 = y2 - caretSize;\n        y3 = y2 + caretSize;\n      }\n      x3 = x1;\n    } else {\n      if (xAlign === 'left') {\n        x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n      } else if (xAlign === 'right') {\n        x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n      } else {\n        x2 = this.caretX;\n      }\n      if (yAlign === 'top') {\n        y1 = ptY;\n        y2 = y1 - caretSize;\n        x1 = x2 - caretSize;\n        x3 = x2 + caretSize;\n      } else {\n        y1 = ptY + height;\n        y2 = y1 + caretSize;\n        x1 = x2 + caretSize;\n        x3 = x2 - caretSize;\n      }\n      y3 = y1;\n    }\n    return {x1, x2, x3, y1, y2, y3};\n  }\n  drawTitle(pt, ctx, options) {\n    const title = this.title;\n    const length = title.length;\n    let titleFont, titleSpacing, i;\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n      pt.x = getAlignedX(this, options.titleAlign, options);\n      ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n      ctx.textBaseline = 'middle';\n      titleFont = toFont(options.titleFont);\n      titleSpacing = options.titleSpacing;\n      ctx.fillStyle = options.titleColor;\n      ctx.font = titleFont.string;\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n        pt.y += titleFont.lineHeight + titleSpacing;\n        if (i + 1 === length) {\n          pt.y += options.titleMarginBottom - titleSpacing;\n        }\n      }\n    }\n  }\n  _drawColorBox(ctx, pt, i, rtlHelper, options) {\n    const labelColors = this.labelColors[i];\n    const labelPointStyle = this.labelPointStyles[i];\n    const {boxHeight, boxWidth, boxPadding} = options;\n    const bodyFont = toFont(options.bodyFont);\n    const colorX = getAlignedX(this, 'left', options);\n    const rtlColorX = rtlHelper.x(colorX);\n    const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n    const colorY = pt.y + yOffSet;\n    if (options.usePointStyle) {\n      const drawOptions = {\n        radius: Math.min(boxWidth, boxHeight) / 2,\n        pointStyle: labelPointStyle.pointStyle,\n        rotation: labelPointStyle.rotation,\n        borderWidth: 1\n      };\n      const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n      const centerY = colorY + boxHeight / 2;\n      ctx.strokeStyle = options.multiKeyBackground;\n      ctx.fillStyle = options.multiKeyBackground;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n      ctx.strokeStyle = labelColors.borderColor;\n      ctx.fillStyle = labelColors.backgroundColor;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n    } else {\n      ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n      ctx.strokeStyle = labelColors.borderColor;\n      ctx.setLineDash(labelColors.borderDash || []);\n      ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n      const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n      const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n      const borderRadius = toTRBLCorners(labelColors.borderRadius);\n      if (Object.values(borderRadius).some(v => v !== 0)) {\n        ctx.beginPath();\n        ctx.fillStyle = options.multiKeyBackground;\n        addRoundedRectPath(ctx, {\n          x: outerX,\n          y: colorY,\n          w: boxWidth,\n          h: boxHeight,\n          radius: borderRadius,\n        });\n        ctx.fill();\n        ctx.stroke();\n        ctx.fillStyle = labelColors.backgroundColor;\n        ctx.beginPath();\n        addRoundedRectPath(ctx, {\n          x: innerX,\n          y: colorY + 1,\n          w: boxWidth - 2,\n          h: boxHeight - 2,\n          radius: borderRadius,\n        });\n        ctx.fill();\n      } else {\n        ctx.fillStyle = options.multiKeyBackground;\n        ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.fillStyle = labelColors.backgroundColor;\n        ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n      }\n    }\n    ctx.fillStyle = this.labelTextColors[i];\n  }\n  drawBody(pt, ctx, options) {\n    const {body} = this;\n    const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n    const bodyFont = toFont(options.bodyFont);\n    let bodyLineHeight = bodyFont.lineHeight;\n    let xLinePadding = 0;\n    const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n    const fillLineOfText = function(line) {\n      ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n      pt.y += bodyLineHeight + bodySpacing;\n    };\n    const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n    let bodyItem, textColor, lines, i, j, ilen, jlen;\n    ctx.textAlign = bodyAlign;\n    ctx.textBaseline = 'middle';\n    ctx.font = bodyFont.string;\n    pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n    ctx.fillStyle = options.bodyColor;\n    each(this.beforeBody, fillLineOfText);\n    xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n      ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n      : 0;\n    for (i = 0, ilen = body.length; i < ilen; ++i) {\n      bodyItem = body[i];\n      textColor = this.labelTextColors[i];\n      ctx.fillStyle = textColor;\n      each(bodyItem.before, fillLineOfText);\n      lines = bodyItem.lines;\n      if (displayColors && lines.length) {\n        this._drawColorBox(ctx, pt, i, rtlHelper, options);\n        bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n      }\n      for (j = 0, jlen = lines.length; j < jlen; ++j) {\n        fillLineOfText(lines[j]);\n        bodyLineHeight = bodyFont.lineHeight;\n      }\n      each(bodyItem.after, fillLineOfText);\n    }\n    xLinePadding = 0;\n    bodyLineHeight = bodyFont.lineHeight;\n    each(this.afterBody, fillLineOfText);\n    pt.y -= bodySpacing;\n  }\n  drawFooter(pt, ctx, options) {\n    const footer = this.footer;\n    const length = footer.length;\n    let footerFont, i;\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n      pt.x = getAlignedX(this, options.footerAlign, options);\n      pt.y += options.footerMarginTop;\n      ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n      ctx.textBaseline = 'middle';\n      footerFont = toFont(options.footerFont);\n      ctx.fillStyle = options.footerColor;\n      ctx.font = footerFont.string;\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n        pt.y += footerFont.lineHeight + options.footerSpacing;\n      }\n    }\n  }\n  drawBackground(pt, ctx, tooltipSize, options) {\n    const {xAlign, yAlign} = this;\n    const {x, y} = pt;\n    const {width, height} = tooltipSize;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n    ctx.beginPath();\n    ctx.moveTo(x + topLeft, y);\n    if (yAlign === 'top') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width - topRight, y);\n    ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n    if (yAlign === 'center' && xAlign === 'right') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width, y + height - bottomRight);\n    ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n    if (yAlign === 'bottom') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + bottomLeft, y + height);\n    ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n    if (yAlign === 'center' && xAlign === 'left') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x, y + topLeft);\n    ctx.quadraticCurveTo(x, y, x + topLeft, y);\n    ctx.closePath();\n    ctx.fill();\n    if (options.borderWidth > 0) {\n      ctx.stroke();\n    }\n  }\n  _updateAnimationTarget(options) {\n    const chart = this.chart;\n    const anims = this.$animations;\n    const animX = anims && anims.x;\n    const animY = anims && anims.y;\n    if (animX || animY) {\n      const position = positioners[options.position].call(this, this._active, this._eventPosition);\n      if (!position) {\n        return;\n      }\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, this._size);\n      const alignment = determineAlignment(chart, options, positionAndSize);\n      const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n      if (animX._to !== point.x || animY._to !== point.y) {\n        this.xAlign = alignment.xAlign;\n        this.yAlign = alignment.yAlign;\n        this.width = size.width;\n        this.height = size.height;\n        this.caretX = position.x;\n        this.caretY = position.y;\n        this._resolveAnimations().update(this, point);\n      }\n    }\n  }\n  _willRender() {\n    return !!this.opacity;\n  }\n  draw(ctx) {\n    const options = this.options.setContext(this.getContext());\n    let opacity = this.opacity;\n    if (!opacity) {\n      return;\n    }\n    this._updateAnimationTarget(options);\n    const tooltipSize = {\n      width: this.width,\n      height: this.height\n    };\n    const pt = {\n      x: this.x,\n      y: this.y\n    };\n    opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n    const padding = toPadding(options.padding);\n    const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n    if (options.enabled && hasTooltipContent) {\n      ctx.save();\n      ctx.globalAlpha = opacity;\n      this.drawBackground(pt, ctx, tooltipSize, options);\n      overrideTextDirection(ctx, options.textDirection);\n      pt.y += padding.top;\n      this.drawTitle(pt, ctx, options);\n      this.drawBody(pt, ctx, options);\n      this.drawFooter(pt, ctx, options);\n      restoreTextDirection(ctx, options.textDirection);\n      ctx.restore();\n    }\n  }\n  getActiveElements() {\n    return this._active || [];\n  }\n  setActiveElements(activeElements, eventPosition) {\n    const lastActive = this._active;\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.chart.getDatasetMeta(datasetIndex);\n      if (!meta) {\n        throw new Error('Cannot find a dataset at index ' + datasetIndex);\n      }\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(lastActive, active);\n    const positionChanged = this._positionChanged(active, eventPosition);\n    if (changed || positionChanged) {\n      this._active = active;\n      this._eventPosition = eventPosition;\n      this._ignoreReplayEvents = true;\n      this.update(true);\n    }\n  }\n  handleEvent(e, replay, inChartArea = true) {\n    if (replay && this._ignoreReplayEvents) {\n      return false;\n    }\n    this._ignoreReplayEvents = false;\n    const options = this.options;\n    const lastActive = this._active || [];\n    const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n    const positionChanged = this._positionChanged(active, e);\n    const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n    if (changed) {\n      this._active = active;\n      if (options.enabled || options.external) {\n        this._eventPosition = {\n          x: e.x,\n          y: e.y\n        };\n        this.update(true, replay);\n      }\n    }\n    return changed;\n  }\n  _getActiveElements(e, lastActive, replay, inChartArea) {\n    const options = this.options;\n    if (e.type === 'mouseout') {\n      return [];\n    }\n    if (!inChartArea) {\n      return lastActive;\n    }\n    const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n    if (options.reverse) {\n      active.reverse();\n    }\n    return active;\n  }\n  _positionChanged(active, e) {\n    const {caretX, caretY, options} = this;\n    const position = positioners[options.position].call(this, active, e);\n    return position !== false && (caretX !== position.x || caretY !== position.y);\n  }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n  id: 'tooltip',\n  _element: Tooltip,\n  positioners,\n  afterInit(chart, _args, options) {\n    if (options) {\n      chart.tooltip = new Tooltip({chart, options});\n    }\n  },\n  beforeUpdate(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n  reset(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n  afterDraw(chart) {\n    const tooltip = chart.tooltip;\n    if (tooltip && tooltip._willRender()) {\n      const args = {\n        tooltip\n      };\n      if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n        return;\n      }\n      tooltip.draw(chart.ctx);\n      chart.notifyPlugins('afterTooltipDraw', args);\n    }\n  },\n  afterEvent(chart, args) {\n    if (chart.tooltip) {\n      const useFinalPosition = args.replay;\n      if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n        args.changed = true;\n      }\n    }\n  },\n  defaults: {\n    enabled: true,\n    external: null,\n    position: 'average',\n    backgroundColor: 'rgba(0,0,0,0.8)',\n    titleColor: '#fff',\n    titleFont: {\n      weight: 'bold',\n    },\n    titleSpacing: 2,\n    titleMarginBottom: 6,\n    titleAlign: 'left',\n    bodyColor: '#fff',\n    bodySpacing: 2,\n    bodyFont: {\n    },\n    bodyAlign: 'left',\n    footerColor: '#fff',\n    footerSpacing: 2,\n    footerMarginTop: 6,\n    footerFont: {\n      weight: 'bold',\n    },\n    footerAlign: 'left',\n    padding: 6,\n    caretPadding: 2,\n    caretSize: 5,\n    cornerRadius: 6,\n    boxHeight: (ctx, opts) => opts.bodyFont.size,\n    boxWidth: (ctx, opts) => opts.bodyFont.size,\n    multiKeyBackground: '#fff',\n    displayColors: true,\n    boxPadding: 0,\n    borderColor: 'rgba(0,0,0,0)',\n    borderWidth: 0,\n    animation: {\n      duration: 400,\n      easing: 'easeOutQuart',\n    },\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n      },\n      opacity: {\n        easing: 'linear',\n        duration: 200\n      }\n    },\n    callbacks: {\n      beforeTitle: noop,\n      title(tooltipItems) {\n        if (tooltipItems.length > 0) {\n          const item = tooltipItems[0];\n          const labels = item.chart.data.labels;\n          const labelCount = labels ? labels.length : 0;\n          if (this && this.options && this.options.mode === 'dataset') {\n            return item.dataset.label || '';\n          } else if (item.label) {\n            return item.label;\n          } else if (labelCount > 0 && item.dataIndex < labelCount) {\n            return labels[item.dataIndex];\n          }\n        }\n        return '';\n      },\n      afterTitle: noop,\n      beforeBody: noop,\n      beforeLabel: noop,\n      label(tooltipItem) {\n        if (this && this.options && this.options.mode === 'dataset') {\n          return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n        }\n        let label = tooltipItem.dataset.label || '';\n        if (label) {\n          label += ': ';\n        }\n        const value = tooltipItem.formattedValue;\n        if (!isNullOrUndef(value)) {\n          label += value;\n        }\n        return label;\n      },\n      labelColor(tooltipItem) {\n        const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n        const options = meta.controller.getStyle(tooltipItem.dataIndex);\n        return {\n          borderColor: options.borderColor,\n          backgroundColor: options.backgroundColor,\n          borderWidth: options.borderWidth,\n          borderDash: options.borderDash,\n          borderDashOffset: options.borderDashOffset,\n          borderRadius: 0,\n        };\n      },\n      labelTextColor() {\n        return this.options.bodyColor;\n      },\n      labelPointStyle(tooltipItem) {\n        const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n        const options = meta.controller.getStyle(tooltipItem.dataIndex);\n        return {\n          pointStyle: options.pointStyle,\n          rotation: options.rotation,\n        };\n      },\n      afterLabel: noop,\n      afterBody: noop,\n      beforeFooter: noop,\n      footer: noop,\n      afterFooter: noop\n    }\n  },\n  defaultRoutes: {\n    bodyFont: 'font',\n    footerFont: 'font',\n    titleFont: 'font'\n  },\n  descriptors: {\n    _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n    _indexable: false,\n    callbacks: {\n      _scriptable: false,\n      _indexable: false,\n    },\n    animation: {\n      _fallback: false\n    },\n    animations: {\n      _fallback: 'animation'\n    }\n  },\n  additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n  if (typeof raw === 'string') {\n    index = labels.push(raw) - 1;\n    addedLabels.unshift({index, label: raw});\n  } else if (isNaN(raw)) {\n    index = null;\n  }\n  return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n  const first = labels.indexOf(raw);\n  if (first === -1) {\n    return addIfString(labels, raw, index, addedLabels);\n  }\n  const last = labels.lastIndexOf(raw);\n  return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this._startValue = undefined;\n    this._valueRange = 0;\n    this._addedLabels = [];\n  }\n  init(scaleOptions) {\n    const added = this._addedLabels;\n    if (added.length) {\n      const labels = this.getLabels();\n      for (const {index, label} of added) {\n        if (labels[index] === label) {\n          labels.splice(index, 1);\n        }\n      }\n      this._addedLabels = [];\n    }\n    super.init(scaleOptions);\n  }\n  parse(raw, index) {\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    const labels = this.getLabels();\n    index = isFinite(index) && labels[index] === raw ? index\n      : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n    return validIndex(index, labels.length - 1);\n  }\n  determineDataLimits() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this.getMinMax(true);\n    if (this.options.bounds === 'ticks') {\n      if (!minDefined) {\n        min = 0;\n      }\n      if (!maxDefined) {\n        max = this.getLabels().length - 1;\n      }\n    }\n    this.min = min;\n    this.max = max;\n  }\n  buildTicks() {\n    const min = this.min;\n    const max = this.max;\n    const offset = this.options.offset;\n    const ticks = [];\n    let labels = this.getLabels();\n    labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n    this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n    this._startValue = this.min - (offset ? 0.5 : 0);\n    for (let value = min; value <= max; value++) {\n      ticks.push({value});\n    }\n    return ticks;\n  }\n  getLabelForValue(value) {\n    const labels = this.getLabels();\n    if (value >= 0 && value < labels.length) {\n      return labels[value];\n    }\n    return value;\n  }\n  configure() {\n    super.configure();\n    if (!this.isHorizontal()) {\n      this._reversePixels = !this._reversePixels;\n    }\n  }\n  getPixelForValue(value) {\n    if (typeof value !== 'number') {\n      value = this.parse(value);\n    }\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n  getValueForPixel(pixel) {\n    return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n  }\n  getBasePixel() {\n    return this.bottom;\n  }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n  ticks: {\n    callback: CategoryScale.prototype.getLabelForValue\n  }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n  const ticks = [];\n  const MIN_SPACING = 1e-14;\n  const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n  const unit = step || 1;\n  const maxSpaces = maxTicks - 1;\n  const {min: rmin, max: rmax} = dataRange;\n  const minDefined = !isNullOrUndef(min);\n  const maxDefined = !isNullOrUndef(max);\n  const countDefined = !isNullOrUndef(count);\n  const minSpacing = (rmax - rmin) / (maxDigits + 1);\n  let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n  let factor, niceMin, niceMax, numSpaces;\n  if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n    return [{value: rmin}, {value: rmax}];\n  }\n  numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n  if (numSpaces > maxSpaces) {\n    spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n  }\n  if (!isNullOrUndef(precision)) {\n    factor = Math.pow(10, precision);\n    spacing = Math.ceil(spacing * factor) / factor;\n  }\n  if (bounds === 'ticks') {\n    niceMin = Math.floor(rmin / spacing) * spacing;\n    niceMax = Math.ceil(rmax / spacing) * spacing;\n  } else {\n    niceMin = rmin;\n    niceMax = rmax;\n  }\n  if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n    numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n    spacing = (max - min) / numSpaces;\n    niceMin = min;\n    niceMax = max;\n  } else if (countDefined) {\n    niceMin = minDefined ? min : niceMin;\n    niceMax = maxDefined ? max : niceMax;\n    numSpaces = count - 1;\n    spacing = (niceMax - niceMin) / numSpaces;\n  } else {\n    numSpaces = (niceMax - niceMin) / spacing;\n    if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n      numSpaces = Math.round(numSpaces);\n    } else {\n      numSpaces = Math.ceil(numSpaces);\n    }\n  }\n  const decimalPlaces = Math.max(\n    _decimalPlaces(spacing),\n    _decimalPlaces(niceMin)\n  );\n  factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n  niceMin = Math.round(niceMin * factor) / factor;\n  niceMax = Math.round(niceMax * factor) / factor;\n  let j = 0;\n  if (minDefined) {\n    if (includeBounds && niceMin !== min) {\n      ticks.push({value: min});\n      if (niceMin < min) {\n        j++;\n      }\n      if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n        j++;\n      }\n    } else if (niceMin < min) {\n      j++;\n    }\n  }\n  for (; j < numSpaces; ++j) {\n    ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n  }\n  if (maxDefined && includeBounds && niceMax !== max) {\n    if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n      ticks[ticks.length - 1].value = max;\n    } else {\n      ticks.push({value: max});\n    }\n  } else if (!maxDefined || niceMax === max) {\n    ticks.push({value: niceMax});\n  }\n  return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n  const rad = toRadians(minRotation);\n  const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n  const length = 0.75 * minSpacing * ('' + value).length;\n  return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this.start = undefined;\n    this.end = undefined;\n    this._startValue = undefined;\n    this._endValue = undefined;\n    this._valueRange = 0;\n  }\n  parse(raw, index) {\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n      return null;\n    }\n    return +raw;\n  }\n  handleTickRangeOptions() {\n    const {beginAtZero} = this.options;\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this;\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n    if (beginAtZero) {\n      const minSign = sign(min);\n      const maxSign = sign(max);\n      if (minSign < 0 && maxSign < 0) {\n        setMax(0);\n      } else if (minSign > 0 && maxSign > 0) {\n        setMin(0);\n      }\n    }\n    if (min === max) {\n      let offset = 1;\n      if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n        offset = Math.abs(max * 0.05);\n      }\n      setMax(max + offset);\n      if (!beginAtZero) {\n        setMin(min - offset);\n      }\n    }\n    this.min = min;\n    this.max = max;\n  }\n  getTickLimit() {\n    const tickOpts = this.options.ticks;\n    let {maxTicksLimit, stepSize} = tickOpts;\n    let maxTicks;\n    if (stepSize) {\n      maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n      if (maxTicks > 1000) {\n        console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n        maxTicks = 1000;\n      }\n    } else {\n      maxTicks = this.computeTickLimit();\n      maxTicksLimit = maxTicksLimit || 11;\n    }\n    if (maxTicksLimit) {\n      maxTicks = Math.min(maxTicksLimit, maxTicks);\n    }\n    return maxTicks;\n  }\n  computeTickLimit() {\n    return Number.POSITIVE_INFINITY;\n  }\n  buildTicks() {\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n    let maxTicks = this.getTickLimit();\n    maxTicks = Math.max(2, maxTicks);\n    const numericGeneratorOptions = {\n      maxTicks,\n      bounds: opts.bounds,\n      min: opts.min,\n      max: opts.max,\n      precision: tickOpts.precision,\n      step: tickOpts.stepSize,\n      count: tickOpts.count,\n      maxDigits: this._maxDigits(),\n      horizontal: this.isHorizontal(),\n      minRotation: tickOpts.minRotation || 0,\n      includeBounds: tickOpts.includeBounds !== false\n    };\n    const dataRange = this._range || this;\n    const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n    if (opts.reverse) {\n      ticks.reverse();\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n    return ticks;\n  }\n  configure() {\n    const ticks = this.ticks;\n    let start = this.min;\n    let end = this.max;\n    super.configure();\n    if (this.options.offset && ticks.length) {\n      const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n      start -= offset;\n      end += offset;\n    }\n    this._startValue = start;\n    this._endValue = end;\n    this._valueRange = end - start;\n  }\n  getLabelForValue(value) {\n    return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n}\n\nclass LinearScale extends LinearScaleBase {\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n    this.min = isNumberFinite(min) ? min : 0;\n    this.max = isNumberFinite(max) ? max : 1;\n    this.handleTickRangeOptions();\n  }\n  computeTickLimit() {\n    const horizontal = this.isHorizontal();\n    const length = horizontal ? this.width : this.height;\n    const minRotation = toRadians(this.options.ticks.minRotation);\n    const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n    const tickFont = this._resolveTickFontOptions(0);\n    return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n  }\n  getPixelForValue(value) {\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n  getValueForPixel(pixel) {\n    return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n  }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n  ticks: {\n    callback: Ticks.formatters.numeric\n  }\n};\n\nfunction isMajor(tickVal) {\n  const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n  return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n  const endExp = Math.floor(log10(dataRange.max));\n  const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n  const ticks = [];\n  let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n  let exp = Math.floor(log10(tickVal));\n  let significand = Math.floor(tickVal / Math.pow(10, exp));\n  let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n  do {\n    ticks.push({value: tickVal, major: isMajor(tickVal)});\n    ++significand;\n    if (significand === 10) {\n      significand = 1;\n      ++exp;\n      precision = exp >= 0 ? 1 : precision;\n    }\n    tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n  } while (exp < endExp || (exp === endExp && significand < endSignificand));\n  const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n  ticks.push({value: lastTick, major: isMajor(tickVal)});\n  return ticks;\n}\nclass LogarithmicScale extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this.start = undefined;\n    this.end = undefined;\n    this._startValue = undefined;\n    this._valueRange = 0;\n  }\n  parse(raw, index) {\n    const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n    if (value === 0) {\n      this._zero = true;\n      return undefined;\n    }\n    return isNumberFinite(value) && value > 0 ? value : null;\n  }\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n    this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n    this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n    if (this.options.beginAtZero) {\n      this._zero = true;\n    }\n    this.handleTickRangeOptions();\n  }\n  handleTickRangeOptions() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let min = this.min;\n    let max = this.max;\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n    const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n    if (min === max) {\n      if (min <= 0) {\n        setMin(1);\n        setMax(10);\n      } else {\n        setMin(exp(min, -1));\n        setMax(exp(max, +1));\n      }\n    }\n    if (min <= 0) {\n      setMin(exp(max, -1));\n    }\n    if (max <= 0) {\n      setMax(exp(min, +1));\n    }\n    if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n      setMin(exp(min, -1));\n    }\n    this.min = min;\n    this.max = max;\n  }\n  buildTicks() {\n    const opts = this.options;\n    const generationOptions = {\n      min: this._userMin,\n      max: this._userMax\n    };\n    const ticks = generateTicks(generationOptions, this);\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n    if (opts.reverse) {\n      ticks.reverse();\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n    return ticks;\n  }\n  getLabelForValue(value) {\n    return value === undefined\n      ? '0'\n      : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n  configure() {\n    const start = this.min;\n    super.configure();\n    this._startValue = log10(start);\n    this._valueRange = log10(this.max) - log10(start);\n  }\n  getPixelForValue(value) {\n    if (value === undefined || value === 0) {\n      value = this.min;\n    }\n    if (value === null || isNaN(value)) {\n      return NaN;\n    }\n    return this.getPixelForDecimal(value === this.min\n      ? 0\n      : (log10(value) - this._startValue) / this._valueRange);\n  }\n  getValueForPixel(pixel) {\n    const decimal = this.getDecimalForPixel(pixel);\n    return Math.pow(10, this._startValue + decimal * this._valueRange);\n  }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n  ticks: {\n    callback: Ticks.formatters.logarithmic,\n    major: {\n      enabled: true\n    }\n  }\n};\n\nfunction getTickBackdropHeight(opts) {\n  const tickOpts = opts.ticks;\n  if (tickOpts.display && opts.display) {\n    const padding = toPadding(tickOpts.backdropPadding);\n    return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n  }\n  return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n  label = isArray(label) ? label : [label];\n  return {\n    w: _longestText(ctx, font.string, label),\n    h: label.length * font.lineHeight\n  };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n  if (angle === min || angle === max) {\n    return {\n      start: pos - (size / 2),\n      end: pos + (size / 2)\n    };\n  } else if (angle < min || angle > max) {\n    return {\n      start: pos - size,\n      end: pos\n    };\n  }\n  return {\n    start: pos,\n    end: pos + size\n  };\n}\nfunction fitWithPointLabels(scale) {\n  const orig = {\n    l: scale.left + scale._padding.left,\n    r: scale.right - scale._padding.right,\n    t: scale.top + scale._padding.top,\n    b: scale.bottom - scale._padding.bottom\n  };\n  const limits = Object.assign({}, orig);\n  const labelSizes = [];\n  const padding = [];\n  const valueCount = scale._pointLabels.length;\n  const pointLabelOpts = scale.options.pointLabels;\n  const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n  for (let i = 0; i < valueCount; i++) {\n    const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n    padding[i] = opts.padding;\n    const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n    const plFont = toFont(opts.font);\n    const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n    labelSizes[i] = textSize;\n    const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n    const angle = Math.round(toDegrees(angleRadians));\n    const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n    const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n    updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n  }\n  scale.setCenterPoint(\n    orig.l - limits.l,\n    limits.r - orig.r,\n    orig.t - limits.t,\n    limits.b - orig.b\n  );\n  scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n  const sin = Math.abs(Math.sin(angle));\n  const cos = Math.abs(Math.cos(angle));\n  let x = 0;\n  let y = 0;\n  if (hLimits.start < orig.l) {\n    x = (orig.l - hLimits.start) / sin;\n    limits.l = Math.min(limits.l, orig.l - x);\n  } else if (hLimits.end > orig.r) {\n    x = (hLimits.end - orig.r) / sin;\n    limits.r = Math.max(limits.r, orig.r + x);\n  }\n  if (vLimits.start < orig.t) {\n    y = (orig.t - vLimits.start) / cos;\n    limits.t = Math.min(limits.t, orig.t - y);\n  } else if (vLimits.end > orig.b) {\n    y = (vLimits.end - orig.b) / cos;\n    limits.b = Math.max(limits.b, orig.b + y);\n  }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n  const items = [];\n  const valueCount = scale._pointLabels.length;\n  const opts = scale.options;\n  const extra = getTickBackdropHeight(opts) / 2;\n  const outerDistance = scale.drawingArea;\n  const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n  for (let i = 0; i < valueCount; i++) {\n    const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n    const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n    const size = labelSizes[i];\n    const y = yForAngle(pointLabelPosition.y, size.h, angle);\n    const textAlign = getTextAlignForAngle(angle);\n    const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n    items.push({\n      x: pointLabelPosition.x,\n      y,\n      textAlign,\n      left,\n      top: y,\n      right: left + size.w,\n      bottom: y + size.h\n    });\n  }\n  return items;\n}\nfunction getTextAlignForAngle(angle) {\n  if (angle === 0 || angle === 180) {\n    return 'center';\n  } else if (angle < 180) {\n    return 'left';\n  }\n  return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n  if (align === 'right') {\n    x -= w;\n  } else if (align === 'center') {\n    x -= (w / 2);\n  }\n  return x;\n}\nfunction yForAngle(y, h, angle) {\n  if (angle === 90 || angle === 270) {\n    y -= (h / 2);\n  } else if (angle > 270 || angle < 90) {\n    y -= h;\n  }\n  return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n  const {ctx, options: {pointLabels}} = scale;\n  for (let i = labelCount - 1; i >= 0; i--) {\n    const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n    const plFont = toFont(optsAtIndex.font);\n    const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n    const {backdropColor} = optsAtIndex;\n    if (!isNullOrUndef(backdropColor)) {\n      const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n      const padding = toPadding(optsAtIndex.backdropPadding);\n      ctx.fillStyle = backdropColor;\n      const backdropLeft = left - padding.left;\n      const backdropTop = top - padding.top;\n      const backdropWidth = right - left + padding.width;\n      const backdropHeight = bottom - top + padding.height;\n      if (Object.values(borderRadius).some(v => v !== 0)) {\n        ctx.beginPath();\n        addRoundedRectPath(ctx, {\n          x: backdropLeft,\n          y: backdropTop,\n          w: backdropWidth,\n          h: backdropHeight,\n          radius: borderRadius,\n        });\n        ctx.fill();\n      } else {\n        ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n      }\n    }\n    renderText(\n      ctx,\n      scale._pointLabels[i],\n      x,\n      y + (plFont.lineHeight / 2),\n      plFont,\n      {\n        color: optsAtIndex.color,\n        textAlign: textAlign,\n        textBaseline: 'middle'\n      }\n    );\n  }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n  const {ctx} = scale;\n  if (circular) {\n    ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n  } else {\n    let pointPosition = scale.getPointPosition(0, radius);\n    ctx.moveTo(pointPosition.x, pointPosition.y);\n    for (let i = 1; i < labelCount; i++) {\n      pointPosition = scale.getPointPosition(i, radius);\n      ctx.lineTo(pointPosition.x, pointPosition.y);\n    }\n  }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n  const ctx = scale.ctx;\n  const circular = gridLineOpts.circular;\n  const {color, lineWidth} = gridLineOpts;\n  if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n    return;\n  }\n  ctx.save();\n  ctx.strokeStyle = color;\n  ctx.lineWidth = lineWidth;\n  ctx.setLineDash(gridLineOpts.borderDash);\n  ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n  ctx.beginPath();\n  pathRadiusLine(scale, radius, circular, labelCount);\n  ctx.closePath();\n  ctx.stroke();\n  ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n  return createContext(parent, {\n    label,\n    index,\n    type: 'pointLabel'\n  });\n}\nclass RadialLinearScale extends LinearScaleBase {\n  constructor(cfg) {\n    super(cfg);\n    this.xCenter = undefined;\n    this.yCenter = undefined;\n    this.drawingArea = undefined;\n    this._pointLabels = [];\n    this._pointLabelItems = [];\n  }\n  setDimensions() {\n    const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n    const w = this.width = this.maxWidth - padding.width;\n    const h = this.height = this.maxHeight - padding.height;\n    this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n    this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n    this.drawingArea = Math.floor(Math.min(w, h) / 2);\n  }\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(false);\n    this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n    this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n    this.handleTickRangeOptions();\n  }\n  computeTickLimit() {\n    return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n  }\n  generateTickLabels(ticks) {\n    LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n    this._pointLabels = this.getLabels()\n      .map((value, index) => {\n        const label = callback(this.options.pointLabels.callback, [value, index], this);\n        return label || label === 0 ? label : '';\n      })\n      .filter((v, i) => this.chart.getDataVisibility(i));\n  }\n  fit() {\n    const opts = this.options;\n    if (opts.display && opts.pointLabels.display) {\n      fitWithPointLabels(this);\n    } else {\n      this.setCenterPoint(0, 0, 0, 0);\n    }\n  }\n  setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n    this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n    this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n    this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n  }\n  getIndexAngle(index) {\n    const angleMultiplier = TAU / (this._pointLabels.length || 1);\n    const startAngle = this.options.startAngle || 0;\n    return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n  }\n  getDistanceFromCenterForValue(value) {\n    if (isNullOrUndef(value)) {\n      return NaN;\n    }\n    const scalingFactor = this.drawingArea / (this.max - this.min);\n    if (this.options.reverse) {\n      return (this.max - value) * scalingFactor;\n    }\n    return (value - this.min) * scalingFactor;\n  }\n  getValueForDistanceFromCenter(distance) {\n    if (isNullOrUndef(distance)) {\n      return NaN;\n    }\n    const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n    return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n  }\n  getPointLabelContext(index) {\n    const pointLabels = this._pointLabels || [];\n    if (index >= 0 && index < pointLabels.length) {\n      const pointLabel = pointLabels[index];\n      return createPointLabelContext(this.getContext(), index, pointLabel);\n    }\n  }\n  getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n    const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n    return {\n      x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n      y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n      angle\n    };\n  }\n  getPointPositionForValue(index, value) {\n    return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n  }\n  getBasePosition(index) {\n    return this.getPointPositionForValue(index || 0, this.getBaseValue());\n  }\n  getPointLabelPosition(index) {\n    const {left, top, right, bottom} = this._pointLabelItems[index];\n    return {\n      left,\n      top,\n      right,\n      bottom,\n    };\n  }\n  drawBackground() {\n    const {backgroundColor, grid: {circular}} = this.options;\n    if (backgroundColor) {\n      const ctx = this.ctx;\n      ctx.save();\n      ctx.beginPath();\n      pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n      ctx.closePath();\n      ctx.fillStyle = backgroundColor;\n      ctx.fill();\n      ctx.restore();\n    }\n  }\n  drawGrid() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const {angleLines, grid} = opts;\n    const labelCount = this._pointLabels.length;\n    let i, offset, position;\n    if (opts.pointLabels.display) {\n      drawPointLabels(this, labelCount);\n    }\n    if (grid.display) {\n      this.ticks.forEach((tick, index) => {\n        if (index !== 0) {\n          offset = this.getDistanceFromCenterForValue(tick.value);\n          const optsAtIndex = grid.setContext(this.getContext(index - 1));\n          drawRadiusLine(this, optsAtIndex, offset, labelCount);\n        }\n      });\n    }\n    if (angleLines.display) {\n      ctx.save();\n      for (i = labelCount - 1; i >= 0; i--) {\n        const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n        const {color, lineWidth} = optsAtIndex;\n        if (!lineWidth || !color) {\n          continue;\n        }\n        ctx.lineWidth = lineWidth;\n        ctx.strokeStyle = color;\n        ctx.setLineDash(optsAtIndex.borderDash);\n        ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n        offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n        position = this.getPointPosition(i, offset);\n        ctx.beginPath();\n        ctx.moveTo(this.xCenter, this.yCenter);\n        ctx.lineTo(position.x, position.y);\n        ctx.stroke();\n      }\n      ctx.restore();\n    }\n  }\n  drawBorder() {}\n  drawLabels() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n    if (!tickOpts.display) {\n      return;\n    }\n    const startAngle = this.getIndexAngle(0);\n    let offset, width;\n    ctx.save();\n    ctx.translate(this.xCenter, this.yCenter);\n    ctx.rotate(startAngle);\n    ctx.textAlign = 'center';\n    ctx.textBaseline = 'middle';\n    this.ticks.forEach((tick, index) => {\n      if (index === 0 && !opts.reverse) {\n        return;\n      }\n      const optsAtIndex = tickOpts.setContext(this.getContext(index));\n      const tickFont = toFont(optsAtIndex.font);\n      offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n      if (optsAtIndex.showLabelBackdrop) {\n        ctx.font = tickFont.string;\n        width = ctx.measureText(tick.label).width;\n        ctx.fillStyle = optsAtIndex.backdropColor;\n        const padding = toPadding(optsAtIndex.backdropPadding);\n        ctx.fillRect(\n          -width / 2 - padding.left,\n          -offset - tickFont.size / 2 - padding.top,\n          width + padding.width,\n          tickFont.size + padding.height\n        );\n      }\n      renderText(ctx, tick.label, 0, -offset, tickFont, {\n        color: optsAtIndex.color,\n      });\n    });\n    ctx.restore();\n  }\n  drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n  display: true,\n  animate: true,\n  position: 'chartArea',\n  angleLines: {\n    display: true,\n    lineWidth: 1,\n    borderDash: [],\n    borderDashOffset: 0.0\n  },\n  grid: {\n    circular: false\n  },\n  startAngle: 0,\n  ticks: {\n    showLabelBackdrop: true,\n    callback: Ticks.formatters.numeric\n  },\n  pointLabels: {\n    backdropColor: undefined,\n    backdropPadding: 2,\n    display: true,\n    font: {\n      size: 10\n    },\n    callback(label) {\n      return label;\n    },\n    padding: 5,\n    centerPointLabels: false\n  }\n};\nRadialLinearScale.defaultRoutes = {\n  'angleLines.color': 'borderColor',\n  'pointLabels.color': 'color',\n  'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n  angleLines: {\n    _fallback: 'grid'\n  }\n};\n\nconst INTERVALS = {\n  millisecond: {common: true, size: 1, steps: 1000},\n  second: {common: true, size: 1000, steps: 60},\n  minute: {common: true, size: 60000, steps: 60},\n  hour: {common: true, size: 3600000, steps: 24},\n  day: {common: true, size: 86400000, steps: 30},\n  week: {common: false, size: 604800000, steps: 4},\n  month: {common: true, size: 2.628e9, steps: 12},\n  quarter: {common: false, size: 7.884e9, steps: 4},\n  year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n  return a - b;\n}\nfunction parse(scale, input) {\n  if (isNullOrUndef(input)) {\n    return null;\n  }\n  const adapter = scale._adapter;\n  const {parser, round, isoWeekday} = scale._parseOpts;\n  let value = input;\n  if (typeof parser === 'function') {\n    value = parser(value);\n  }\n  if (!isNumberFinite(value)) {\n    value = typeof parser === 'string'\n      ? adapter.parse(value, parser)\n      : adapter.parse(value);\n  }\n  if (value === null) {\n    return null;\n  }\n  if (round) {\n    value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n      ? adapter.startOf(value, 'isoWeek', isoWeekday)\n      : adapter.startOf(value, round);\n  }\n  return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n  const ilen = UNITS.length;\n  for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n    const interval = INTERVALS[UNITS[i]];\n    const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n    if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n      return UNITS[i];\n    }\n  }\n  return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n  for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n    const unit = UNITS[i];\n    if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n      return unit;\n    }\n  }\n  return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n  for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n    if (INTERVALS[UNITS[i]].common) {\n      return UNITS[i];\n    }\n  }\n}\nfunction addTick(ticks, time, timestamps) {\n  if (!timestamps) {\n    ticks[time] = true;\n  } else if (timestamps.length) {\n    const {lo, hi} = _lookup(timestamps, time);\n    const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n    ticks[timestamp] = true;\n  }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n  const adapter = scale._adapter;\n  const first = +adapter.startOf(ticks[0].value, majorUnit);\n  const last = ticks[ticks.length - 1].value;\n  let major, index;\n  for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n    index = map[major];\n    if (index >= 0) {\n      ticks[index].major = true;\n    }\n  }\n  return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n  const ticks = [];\n  const map = {};\n  const ilen = values.length;\n  let i, value;\n  for (i = 0; i < ilen; ++i) {\n    value = values[i];\n    map[value] = i;\n    ticks.push({\n      value,\n      major: false\n    });\n  }\n  return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n  constructor(props) {\n    super(props);\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n    this._unit = 'day';\n    this._majorUnit = undefined;\n    this._offsets = {};\n    this._normalized = false;\n    this._parseOpts = undefined;\n  }\n  init(scaleOpts, opts) {\n    const time = scaleOpts.time || (scaleOpts.time = {});\n    const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n    adapter.init(opts);\n    mergeIf(time.displayFormats, adapter.formats());\n    this._parseOpts = {\n      parser: time.parser,\n      round: time.round,\n      isoWeekday: time.isoWeekday\n    };\n    super.init(scaleOpts);\n    this._normalized = opts.normalized;\n  }\n  parse(raw, index) {\n    if (raw === undefined) {\n      return null;\n    }\n    return parse(this, raw);\n  }\n  beforeLayout() {\n    super.beforeLayout();\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n  }\n  determineDataLimits() {\n    const options = this.options;\n    const adapter = this._adapter;\n    const unit = options.time.unit || 'day';\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n    function _applyBounds(bounds) {\n      if (!minDefined && !isNaN(bounds.min)) {\n        min = Math.min(min, bounds.min);\n      }\n      if (!maxDefined && !isNaN(bounds.max)) {\n        max = Math.max(max, bounds.max);\n      }\n    }\n    if (!minDefined || !maxDefined) {\n      _applyBounds(this._getLabelBounds());\n      if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n        _applyBounds(this.getMinMax(false));\n      }\n    }\n    min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n    max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n    this.min = Math.min(min, max - 1);\n    this.max = Math.max(min + 1, max);\n  }\n  _getLabelBounds() {\n    const arr = this.getLabelTimestamps();\n    let min = Number.POSITIVE_INFINITY;\n    let max = Number.NEGATIVE_INFINITY;\n    if (arr.length) {\n      min = arr[0];\n      max = arr[arr.length - 1];\n    }\n    return {min, max};\n  }\n  buildTicks() {\n    const options = this.options;\n    const timeOpts = options.time;\n    const tickOpts = options.ticks;\n    const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n    if (options.bounds === 'ticks' && timestamps.length) {\n      this.min = this._userMin || timestamps[0];\n      this.max = this._userMax || timestamps[timestamps.length - 1];\n    }\n    const min = this.min;\n    const max = this.max;\n    const ticks = _filterBetween(timestamps, min, max);\n    this._unit = timeOpts.unit || (tickOpts.autoSkip\n      ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n      : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n    this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n      : determineMajorUnit(this._unit);\n    this.initOffsets(timestamps);\n    if (options.reverse) {\n      ticks.reverse();\n    }\n    return ticksFromTimestamps(this, ticks, this._majorUnit);\n  }\n  afterAutoSkip() {\n    if (this.options.offsetAfterAutoskip) {\n      this.initOffsets(this.ticks.map(tick => +tick.value));\n    }\n  }\n  initOffsets(timestamps) {\n    let start = 0;\n    let end = 0;\n    let first, last;\n    if (this.options.offset && timestamps.length) {\n      first = this.getDecimalForValue(timestamps[0]);\n      if (timestamps.length === 1) {\n        start = 1 - first;\n      } else {\n        start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n      }\n      last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n      if (timestamps.length === 1) {\n        end = last;\n      } else {\n        end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n      }\n    }\n    const limit = timestamps.length < 3 ? 0.5 : 0.25;\n    start = _limitValue(start, 0, limit);\n    end = _limitValue(end, 0, limit);\n    this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n  }\n  _generate() {\n    const adapter = this._adapter;\n    const min = this.min;\n    const max = this.max;\n    const options = this.options;\n    const timeOpts = options.time;\n    const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n    const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n    const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n    const hasWeekday = isNumber(weekday) || weekday === true;\n    const ticks = {};\n    let first = min;\n    let time, count;\n    if (hasWeekday) {\n      first = +adapter.startOf(first, 'isoWeek', weekday);\n    }\n    first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n    if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n      throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n    }\n    const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n    for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n      addTick(ticks, time, timestamps);\n    }\n    if (time === max || options.bounds === 'ticks' || count === 1) {\n      addTick(ticks, time, timestamps);\n    }\n    return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n  }\n  getLabelForValue(value) {\n    const adapter = this._adapter;\n    const timeOpts = this.options.time;\n    if (timeOpts.tooltipFormat) {\n      return adapter.format(value, timeOpts.tooltipFormat);\n    }\n    return adapter.format(value, timeOpts.displayFormats.datetime);\n  }\n  _tickFormatFunction(time, index, ticks, format) {\n    const options = this.options;\n    const formats = options.time.displayFormats;\n    const unit = this._unit;\n    const majorUnit = this._majorUnit;\n    const minorFormat = unit && formats[unit];\n    const majorFormat = majorUnit && formats[majorUnit];\n    const tick = ticks[index];\n    const major = majorUnit && majorFormat && tick && tick.major;\n    const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n    const formatter = options.ticks.callback;\n    return formatter ? callback(formatter, [label, index, ticks], this) : label;\n  }\n  generateTickLabels(ticks) {\n    let i, ilen, tick;\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      tick.label = this._tickFormatFunction(tick.value, i, ticks);\n    }\n  }\n  getDecimalForValue(value) {\n    return value === null ? NaN : (value - this.min) / (this.max - this.min);\n  }\n  getPixelForValue(value) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForValue(value);\n    return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n  }\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return this.min + pos * (this.max - this.min);\n  }\n  _getLabelSize(label) {\n    const ticksOpts = this.options.ticks;\n    const tickLabelWidth = this.ctx.measureText(label).width;\n    const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n    const cosRotation = Math.cos(angle);\n    const sinRotation = Math.sin(angle);\n    const tickFontSize = this._resolveTickFontOptions(0).size;\n    return {\n      w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n      h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n    };\n  }\n  _getLabelCapacity(exampleTime) {\n    const timeOpts = this.options.time;\n    const displayFormats = timeOpts.displayFormats;\n    const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n    const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n    const size = this._getLabelSize(exampleLabel);\n    const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n    return capacity > 0 ? capacity : 1;\n  }\n  getDataTimestamps() {\n    let timestamps = this._cache.data || [];\n    let i, ilen;\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const metas = this.getMatchingVisibleMetas();\n    if (this._normalized && metas.length) {\n      return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n    }\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n    }\n    return (this._cache.data = this.normalize(timestamps));\n  }\n  getLabelTimestamps() {\n    const timestamps = this._cache.labels || [];\n    let i, ilen;\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const labels = this.getLabels();\n    for (i = 0, ilen = labels.length; i < ilen; ++i) {\n      timestamps.push(parse(this, labels[i]));\n    }\n    return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n  }\n  normalize(values) {\n    return _arrayUnique(values.sort(sorter));\n  }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n  bounds: 'data',\n  adapters: {},\n  time: {\n    parser: false,\n    unit: false,\n    round: false,\n    isoWeekday: false,\n    minUnit: 'millisecond',\n    displayFormats: {}\n  },\n  ticks: {\n    source: 'auto',\n    major: {\n      enabled: false\n    }\n  }\n};\n\nfunction interpolate(table, val, reverse) {\n  let lo = 0;\n  let hi = table.length - 1;\n  let prevSource, nextSource, prevTarget, nextTarget;\n  if (reverse) {\n    if (val >= table[lo].pos && val <= table[hi].pos) {\n      ({lo, hi} = _lookupByKey(table, 'pos', val));\n    }\n    ({pos: prevSource, time: prevTarget} = table[lo]);\n    ({pos: nextSource, time: nextTarget} = table[hi]);\n  } else {\n    if (val >= table[lo].time && val <= table[hi].time) {\n      ({lo, hi} = _lookupByKey(table, 'time', val));\n    }\n    ({time: prevSource, pos: prevTarget} = table[lo]);\n    ({time: nextSource, pos: nextTarget} = table[hi]);\n  }\n  const span = nextSource - prevSource;\n  return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n  constructor(props) {\n    super(props);\n    this._table = [];\n    this._minPos = undefined;\n    this._tableRange = undefined;\n  }\n  initOffsets() {\n    const timestamps = this._getTimestampsForTable();\n    const table = this._table = this.buildLookupTable(timestamps);\n    this._minPos = interpolate(table, this.min);\n    this._tableRange = interpolate(table, this.max) - this._minPos;\n    super.initOffsets(timestamps);\n  }\n  buildLookupTable(timestamps) {\n    const {min, max} = this;\n    const items = [];\n    const table = [];\n    let i, ilen, prev, curr, next;\n    for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n      curr = timestamps[i];\n      if (curr >= min && curr <= max) {\n        items.push(curr);\n      }\n    }\n    if (items.length < 2) {\n      return [\n        {time: min, pos: 0},\n        {time: max, pos: 1}\n      ];\n    }\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      next = items[i + 1];\n      prev = items[i - 1];\n      curr = items[i];\n      if (Math.round((next + prev) / 2) !== curr) {\n        table.push({time: curr, pos: i / (ilen - 1)});\n      }\n    }\n    return table;\n  }\n  _getTimestampsForTable() {\n    let timestamps = this._cache.all || [];\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const data = this.getDataTimestamps();\n    const label = this.getLabelTimestamps();\n    if (data.length && label.length) {\n      timestamps = this.normalize(data.concat(label));\n    } else {\n      timestamps = data.length ? data : label;\n    }\n    timestamps = this._cache.all = timestamps;\n    return timestamps;\n  }\n  getDecimalForValue(value) {\n    return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n  }\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n  }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n  controllers,\n  elements,\n  plugins,\n  scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","import {Chart, registerables} from '../dist/chart.mjs';\n\nChart.register(...registerables);\n\nexport default Chart;\n","import type { MouseEvent } from 'react';\nimport type {\n  ChartType,\n  ChartData,\n  DefaultDataPoint,\n  ChartDataset,\n  ChartOptions,\n  Chart,\n} from 'chart.js';\n\nimport type { ForwardedRef } from './types';\n\nconst defaultDatasetIdKey = 'label';\n\nexport function reforwardRef<T>(ref: ForwardedRef<T>, value: T) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref) {\n    ref.current = value;\n  }\n}\n\nexport function setOptions<\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(chart: Chart<TType, TData, TLabel>, nextOptions: ChartOptions<TType>) {\n  Object.assign(chart.options, nextOptions);\n}\n\nexport function setLabels<\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(\n  currentData: ChartData<TType, TData, TLabel>,\n  nextLabels: TLabel[] | undefined\n) {\n  currentData.labels = nextLabels;\n}\n\nexport function setDatasets<\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(\n  currentData: ChartData<TType, TData, TLabel>,\n  nextDatasets: ChartDataset<TType, TData>[],\n  datasetIdKey = defaultDatasetIdKey\n) {\n  const addedDatasets: ChartDataset<TType, TData>[] = [];\n\n  currentData.datasets = nextDatasets.map(\n    (nextDataset: Record<string, unknown>) => {\n      // given the new set, find it's current match\n      const currentDataset = currentData.datasets.find(\n        (dataset: Record<string, unknown>) =>\n          dataset[datasetIdKey] === nextDataset[datasetIdKey]\n      );\n\n      // There is no original to update, so simply add new one\n      if (\n        !currentDataset ||\n        !nextDataset.data ||\n        addedDatasets.includes(currentDataset)\n      ) {\n        return { ...nextDataset } as ChartDataset<TType, TData>;\n      }\n\n      addedDatasets.push(currentDataset);\n\n      Object.assign(currentDataset, nextDataset);\n\n      return currentDataset;\n    }\n  );\n}\n\nexport function cloneData<\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(data: ChartData<TType, TData, TLabel>, datasetIdKey = defaultDatasetIdKey) {\n  const nextData: ChartData<TType, TData, TLabel> = {\n    labels: [],\n    datasets: [],\n  };\n\n  setLabels(nextData, data.labels);\n  setDatasets(nextData, data.datasets, datasetIdKey);\n\n  return nextData;\n}\n\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getDatasetAtEvent(\n  chart: Chart,\n  event: MouseEvent<HTMLCanvasElement>\n) {\n  return chart.getElementsAtEventForMode(\n    event.nativeEvent,\n    'dataset',\n    { intersect: true },\n    false\n  );\n}\n\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementAtEvent(\n  chart: Chart,\n  event: MouseEvent<HTMLCanvasElement>\n) {\n  return chart.getElementsAtEventForMode(\n    event.nativeEvent,\n    'nearest',\n    { intersect: true },\n    false\n  );\n}\n\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementsAtEvent(\n  chart: Chart,\n  event: MouseEvent<HTMLCanvasElement>\n) {\n  return chart.getElementsAtEventForMode(\n    event.nativeEvent,\n    'index',\n    { intersect: true },\n    false\n  );\n}\n","import React, { useEffect, useRef, forwardRef } from 'react';\nimport { Chart as ChartJS } from 'chart.js';\nimport type { ChartType, DefaultDataPoint } from 'chart.js';\n\nimport type { ForwardedRef, ChartProps, TypedChartComponent } from './types';\nimport {\n  reforwardRef,\n  cloneData,\n  setOptions,\n  setLabels,\n  setDatasets,\n} from './utils';\n\nfunction ChartComponent<\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(\n  {\n    height = 150,\n    width = 300,\n    redraw = false,\n    datasetIdKey,\n    type,\n    data,\n    options,\n    plugins = [],\n    fallbackContent,\n    updateMode,\n    ...props\n  }: ChartProps<TType, TData, TLabel>,\n  ref: ForwardedRef<ChartJS<TType, TData, TLabel>>\n) {\n  type TypedChartJS = ChartJS<TType, TData, TLabel>;\n\n  const canvasRef = useRef<HTMLCanvasElement>(null);\n  const chartRef = useRef<TypedChartJS | null>();\n\n  const renderChart = () => {\n    if (!canvasRef.current) return;\n\n    chartRef.current = new ChartJS(canvasRef.current, {\n      type,\n      data: cloneData(data, datasetIdKey),\n      options: options && { ...options },\n      plugins,\n    });\n\n    reforwardRef(ref, chartRef.current);\n  };\n\n  const destroyChart = () => {\n    reforwardRef(ref, null);\n\n    if (chartRef.current) {\n      chartRef.current.destroy();\n      chartRef.current = null;\n    }\n  };\n\n  useEffect(() => {\n    if (!redraw && chartRef.current && options) {\n      setOptions(chartRef.current, options);\n    }\n  }, [redraw, options]);\n\n  useEffect(() => {\n    if (!redraw && chartRef.current) {\n      setLabels(chartRef.current.config.data, data.labels);\n    }\n  }, [redraw, data.labels]);\n\n  useEffect(() => {\n    if (!redraw && chartRef.current && data.datasets) {\n      setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n    }\n  }, [redraw, data.datasets]);\n\n  useEffect(() => {\n    if (!chartRef.current) return;\n\n    if (redraw) {\n      destroyChart();\n      setTimeout(renderChart);\n    } else {\n      chartRef.current.update(updateMode);\n    }\n  }, [redraw, options, data.labels, data.datasets, updateMode]);\n\n  useEffect(() => {\n    if (!chartRef.current) return;\n\n    destroyChart();\n    setTimeout(renderChart);\n  }, [type]);\n\n  useEffect(() => {\n    renderChart();\n\n    return () => destroyChart();\n  }, []);\n\n  return (\n    <canvas ref={canvasRef} role='img' height={height} width={width} {...props}>\n      {fallbackContent}\n    </canvas>\n  );\n}\n\nexport const Chart = forwardRef(ChartComponent) as TypedChartComponent;\n","import React, { forwardRef } from 'react';\nimport {\n  Chart as ChartJS,\n  LineController,\n  BarController,\n  RadarController,\n  DoughnutController,\n  PolarAreaController,\n  BubbleController,\n  PieController,\n  ScatterController,\n} from 'chart.js';\nimport type { ChartType, ChartComponentLike } from 'chart.js';\n\nimport type {\n  ChartProps,\n  ChartJSOrUndefined,\n  TypedChartComponent,\n} from './types';\nimport { Chart } from './chart';\n\nfunction createTypedChart<T extends ChartType>(\n  type: T,\n  registerables: ChartComponentLike\n) {\n  ChartJS.register(registerables);\n\n  return forwardRef<ChartJSOrUndefined<T>, Omit<ChartProps<T>, 'type'>>(\n    (props, ref) => <Chart {...props} ref={ref} type={type} />\n  ) as TypedChartComponent<T, true>;\n}\n\nexport const Line = /* #__PURE__ */ createTypedChart('line', LineController);\n\nexport const Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\n\nexport const Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\n\nexport const Doughnut = /* #__PURE__ */ createTypedChart(\n  'doughnut',\n  DoughnutController\n);\n\nexport const PolarArea = /* #__PURE__ */ createTypedChart(\n  'polarArea',\n  PolarAreaController\n);\n\nexport const Bubble = /* #__PURE__ */ createTypedChart(\n  'bubble',\n  BubbleController\n);\n\nexport const Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\n\nexport const Scatter = /* #__PURE__ */ createTypedChart(\n  'scatter',\n  ScatterController\n);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { fetchClicksGraphData, fetchMonthGraphData } from '../../../actions/clickAnalytics';\nimport { Chart } from 'chart.js/auto';\nimport { useRef } from 'react';\nimport { Bar, getElementsAtEvent } from 'react-chartjs-2';\nimport { withOktaAuth } from '@okta/okta-react';\n\nclass AppClicksBarGraph extends React.Component {\n\n    constructor(props) {\n        super(props);\n\n        this.chartRef = React.createRef();\n    }\n\n    getInitialGraphData = async () => {\n\n        if (this.props.authState.isAuthenticated) {\n            let authObj = {};\n            const userInfo = await this.props.oktaAuth.getUser();\n            authObj.curUserInfo = userInfo;\n            authObj.token = this.props.authState.accessToken;\n            //Action to check if user has analytics access\n            //  console.log(\"Getting Initial Click Graph Data.\");\n            await this.props.fetchClicksGraphData(authObj.token);\n\n        }\n    }\n\n    componentDidMount() {\n        //call initial fetch data only when there is no user object\n        // if(Object.keys(this.props.user).length === 0){\n        //     this.getUserDetails();\n        // }\n        //get the user token, needed for API call \n        if (Object.keys(this.props.user).length === 0) {\n            this.getInitialGraphData();\n        }\n        //this.props.fetchClicksGraphData();\n    }\n\n\n    onClick = (event) => {\n        //console.log(\"Clicked the Activity Bar Graph\");\n        //console.log(getElementsAtEvent(this.chartRef.current, event))\n        let clickedBar = getElementsAtEvent(this.chartRef.current, event);\n        if (clickedBar.length > 0) {\n            let barIndex = clickedBar[0].index;\n            let newCounts = [];\n            let newLabels = [];\n            if (this.props.analytics.curType === \"year\") {\n                // console.log(\"Bar Index TEST:\", this.props.analytics.dailyCounts[0]);\n                newCounts = this.props.analytics.dailyCounts[barIndex]; //this one\n                newLabels = this.props.analytics.allDayLabels[barIndex];\n                // console.log(\"COUNTS TEST: \", newCounts);\n                //console.log(\"LABEL TEST: \", newCounts);\n\n            }\n            else {\n                newCounts = this.props.analytics.yearCounts;\n                newLabels = this.props.analytics.allYearLabels;\n                // console.log(\"COUNTS TEST: \", newCounts);\n            }\n\n            //monthIndex, graphTitle, curDataType, curCounts, yearCounts, allMonthCounts, curLabels, yearLabels, dayLabels\n\n            this.props.fetchMonthGraphData(\n                barIndex,\n                \"clicksBar\",\n                this.props.analytics.curType,\n                newCounts,\n                this.props.analytics.yearCounts,\n                this.props.analytics.dailyCounts,\n                newLabels,\n                this.props.analytics.allYearLabels,\n                this.props.analytics.allDayLabels\n            );\n        }\n        else {\n            //this.props.fetchClicksGraphData();\n            this.props.fetchMonthGraphData(\n                0,\n                \"clicksBar\",\n                \"default\",\n                this.props.analytics.yearCounts,\n                this.props.analytics.yearCounts,\n                this.props.analytics.dailyCounts,\n                this.props.analytics.allYearLabels,\n                this.props.analytics.allYearLabels,\n                this.props.analytics.allDayLabels\n            );\n        }\n\n    }\n\n    render() {\n        const data = {\n            labels: this.props.analytics.curLabels,\n            datasets: [\n                {\n                    type: 'bar',\n                    label: 'App Clicks',\n                    data: this.props.analytics.curCounts,\n                    backgroundColor: 'rgba(28,35,186)',\n                    borderColor: 'rgba(28,35,186)',\n                    borderWidth: 1,\n                },\n            ]\n        };\n\n        const chartOptions = {\n            plugins: {\n                title: {\n                    display: true,\n                    text: 'App Clicks - ' + this.props.analytics.graphName\n                },\n                legend: {\n                    display: false,\n                },\n                datalabels: {\n                    display: true,\n                    color: 'black',\n                    anchor: 'end',\n                    align: 'top',\n                    padding: {\n                        top: 1,\n                        bottom: 3,\n                    },\n                    formatter: (value) => value,\n                }\n            }\n        }\n\n        return (\n            <div>\n                {\n                    this.props.isloading ? <div class=\"loader loader-primary\"></div> :\n                        <Bar\n                            ref={this.chartRef}\n                            data={data}\n                            onClick={this.onClick}\n                            options={chartOptions}\n                        />\n                }\n            </div>\n        )\n    }\n};\n\nconst mapStateToProps = (state) => {\n    //console.log(\"State Clicks Bar Graph:\", state);\n    return { user: state.user, analytics: state.desktopClickAnalytics, isloading: state.clicksGraphIsLoading };\n}\n\nexport default connect(mapStateToProps, { fetchClicksGraphData, fetchMonthGraphData })(withOktaAuth(AppClicksBarGraph));","//Action Creators for Analyitcs Site\nimport axios from 'axios';\n//import sql from 'node-mssql';\n//var sql = require('node-mssql');\n//fetch year data for clicks graph \n//Fetch year data for activity graph\n//get Month Data (fetch month data for specific month, update graph)\n//toggle back to year view\n\n//Year Clicks Data\n\n\n//initial function to get data\nexport const fetchActivityGraphData2 = (userToken) => async dispatch => {\n\n    //start loading spinner\n    // activityGraphIsLoading\n    dispatch({ type: 'ACTIVITY_GRAPH_IS_LOADING' });\n\n    //create this array for last 12 months['January', 'February',\n    const last12MonthsLabels = await getLast12MonthsLabels();\n    console.log('TEST Activity months:', last12MonthsLabels);\n    const allDayLabels = await getDaysInMonth();\n    console.log('TEST Acitvity Days Array:', allDayLabels);\n    const finalCounts = await getYearMonthCounts(userToken);\n    console.log(\"FINAL Activity  Counts !!!!!!!\", finalCounts);\n\n    //get all data & store in state\n    // yearCountFinal: result,\n    //     dailyCountFinal: dailyCounts\n    let yearObj = {\n        curCounts: finalCounts.yearCountFinal,\n        yearCounts: finalCounts.yearCountFinal,\n        dailyCounts: finalCounts.dailyCountFinal,\n        curLabels: last12MonthsLabels,\n        allYearLabels: last12MonthsLabels,\n        allDayLabels: allDayLabels,\n        curType: \"year\",\n        graphName: \"Year\",\n        graphTitle: \"activityBar\"\n    }\n\n    dispatch({ type: 'ACTIVITY_GRAPH_IS_READY' });\n    dispatch({ type: 'FETCH_ACTIVITY_YEAR_DATA', payload: yearObj });\n};\n\n//create  array for last 12 months['January', 'February'...]\nasync function getLast12MonthsLabels() {\n    const last12MonthsLabels = [];\n    for (let i = 11; i >= 0; i--) {\n        const date = new Date();\n        date.setMonth(date.getMonth() - i);\n        const monthName = date.toLocaleString('default', { month: 'long' });\n        last12MonthsLabels.push(monthName);\n    }\n    return last12MonthsLabels;\n}\n\n//get Day Labels [\"Sun-1\", \"Mon-2\", \"Tue-3\",...]\nasync function getDaysInMonth() {\n\n    const allMonthsArray = [];\n\n    for (let i = 11; i >= 0; i--) { // Iterate in reverse order\n        const currentDate = new Date();\n        const currentYear = currentDate.getFullYear();\n        const currentMonth = currentDate.getMonth() - i;\n\n        const firstDayOfMonth = new Date(currentYear, currentMonth, 1);\n        const lastDayOfMonth = new Date(currentYear, currentMonth + 1, 0);\n\n        const daysArray = [];\n\n        if (i === 0) {\n            const yesterday = currentDate.getDate() - 1;\n\n            for (let j = 1; j <= yesterday; j++) {\n                const dayOfWeek = new Date(currentYear, currentMonth, j).toLocaleDateString('en-US', { weekday: 'short' });\n                const dayIndex = `${dayOfWeek}-${j}`;\n                daysArray.push(dayIndex);\n            }\n        } else {\n            for (let j = 1; j <= lastDayOfMonth.getDate(); j++) {\n                const dayOfWeek = new Date(currentYear, currentMonth, j).toLocaleDateString('en-US', { weekday: 'short' });\n                const dayIndex = `${dayOfWeek}-${j}`;\n                daysArray.push(dayIndex);\n            }\n        }\n\n        allMonthsArray.push(daysArray);\n    }\n    console.log(\"MONTHS TEST\", allMonthsArray);\n    return allMonthsArray;\n\n}\n\nconst getDataCall = async (fromDate, toDate, curToken) => {\n    try {\n\n        // Define the base URL and endpoint\n        //const baseUrl = 'https://anywhere.intuitive.com/api/analytics/count';\n        const baseUrl = process.env.REACT_APP_BASE_URL + \"/analytics/count\";\n\n        // Define headers\n        const headers = {\n            'Authorization': 'Bearer ' + curToken.accessToken,\n        };\n\n        // Define query parameters\n        const params = {\n            analyticsType: 'ActivityCount',\n            platform: 'desktop',\n            startDate: fromDate,\n            endDate: toDate\n        };\n\n        // Make GET request \n        const response = await axios.get(baseUrl, {\n            headers: headers,\n            params: params\n        });\n\n        console.log(\"All Click Counts:\", response.data);\n        return response.data;\n        //dispatch({ type: 'ANALYTICS_ACCESS', payload: dataObj.analyticsAccess });\n    } catch (error) {\n        // Handle any errors\n        console.log(\"Error getting Click Counts from API:\");\n        return [];\n    }\n}\n\nconst createYearClickCountsArray = async (data, fromDate, toDate) => {\n    let yearArray = Array(12).fill(0);\n    console.log(\"DATA BEFORE:\", data);\n\n\n    //Create array  of Date and Count for the whole time range, including days  with 0's\n    const startDate = new Date(fromDate);\n    const endDate = new Date(toDate);\n\n    const currentDate = new Date(startDate);\n    const newData = [];\n\n    while (currentDate <= endDate) {\n        const currentDay = currentDate.toISOString().slice(0, 10);\n        const existingData = data.find(item => item.day === currentDay);\n\n        if (existingData) {\n            newData.push(existingData);\n        } else {\n            newData.push({ day: currentDay, count: 0 });\n        }\n\n        currentDate.setDate(currentDate.getDate() + 1);\n    }\n\n    console.log(\"TEST DATE ARRAY\", newData);\n\n    //create the month count array with month totals \n    const monthlyCounts = {};\n\n    newData.forEach(item => {\n        const month = item.day.slice(0, 7);\n        if (monthlyCounts[month]) {\n            monthlyCounts[month] += item.count;\n        } else {\n            monthlyCounts[month] = item.count;\n        }\n    });\n\n    const result = Object.values(monthlyCounts);\n\n    console.log(\"YEAR ARRAY FINAL\", result);\n\n    const oneYearBack = newData[0].day.substring(0, 4);\n    console.log(\"YEAR TEST\", oneYearBack); // Output: \"2023\"\n\n    //create months array\n    const dailyCounts = newData.reduce((acc, { day, count }) => {\n        const [year, month] = day.split('-');\n        const index = (parseInt(year) - oneYearBack) * 12 + (parseInt(month) - 1); // calculate the index based on year and month\n        acc[index] = acc[index] || []; // initialize inner array if not exists\n        acc[index].push(count); // add count to inner array\n        return acc;\n    }, []);\n\n    let dailyCountsWithoutEmptyArrays = dailyCounts.filter(arr => arr.length > 0);\n    //dailyCounts.shift(); //remove unneccesary month added\n\n    console.log(\"FINAL Daily COUNTS Activity: \", dailyCountsWithoutEmptyArrays);\n    const finalCounts = {\n        yearCountFinal: result,\n        dailyCountFinal: dailyCountsWithoutEmptyArrays\n    }\n\n    return finalCounts;\n}\n\nconst getYearMonthCounts = async (userToken) => {\n    //const last12Months = [];\n\n    //get first Date of 12 months back and yesterdays date in YYYY-MM-DD format\n    const today = new Date();\n    const elevenMonthsAgo = new Date(today.getFullYear(), today.getMonth() - 11, 1);\n    const yesterday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 1);\n\n    const elevenMonthsAgoFormatted = `${elevenMonthsAgo.getFullYear()}-${(elevenMonthsAgo.getMonth() + 1).toString().padStart(2, '0')}-01`;\n    const yesterdayFormatted = `${yesterday.getFullYear()}-${(yesterday.getMonth() + 1).toString().padStart(2, '0')}-${yesterday.getDate().toString().padStart(2, '0')}`;\n\n    console.log(\"TEST First 12 months and yesterday: \", elevenMonthsAgoFormatted, yesterdayFormatted);\n\n\n    //make API call to get data for the whole year \n    let allData = await getDataCall(elevenMonthsAgoFormatted, yesterdayFormatted, userToken);\n\n    //find SUM of all counts for the month\n    let monthAndDayCounts = await createYearClickCountsArray(allData, elevenMonthsAgoFormatted, yesterdayFormatted);\n\n\n    //find SUM of each day in the month\n    // let dayData = await createMonthClickArray(allData, elevenMonthsAgoFormatted, yesterdayFormatted);\n\n    return monthAndDayCounts;\n}\n\n\nexport const fetchMonthGraphData2 = (monthIndex, graphTitle, curDataType, curCounts, yearCounts, allMonthCounts, curLabels, yearLabels, dayLabels) => async dispatch => {\n\n\n\n    let dataObj = {};\n\n    if (curDataType === 'year') {\n        //change to month\n        dataObj.curCounts = curCounts;\n        dataObj.yearCounts = yearCounts;\n        dataObj.dailyCounts = allMonthCounts;\n        dataObj.curLabels = curLabels;\n        dataObj.allYearLabels = yearLabels;\n        dataObj.allDayLabels = dayLabels;\n        dataObj.curType = \"month\";\n        dataObj.graphName = yearLabels[monthIndex];\n        dataObj.graphTitle = graphTitle\n    }\n    else {\n        //change to year\n        dataObj.curCounts = curCounts;\n        dataObj.yearCounts = yearCounts;\n        dataObj.dailyCounts = allMonthCounts;\n        dataObj.curLabels = curLabels;\n        dataObj.allYearLabels = yearLabels;\n        dataObj.allDayLabels = dayLabels;\n        dataObj.curType = \"year\";\n        dataObj.graphName = \"Year\";\n        dataObj.graphTitle = graphTitle;\n    }\n\n    dispatch({ type: 'FETCH_ACTIVITY_MONTH_DATA', payload: dataObj });\n\n};\n\n/* \n1. Create Label for Years  Past 12 months\n2. Create Labels for Days in each Month\n3. Call API and Get Month Totals for Month Data array\n4. Call API to get Day Data for Day Data array \n5. Might need to add loading screen if this takes too long\n\n\n*/\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { fetchActivityGraphData2, fetchMonthGraphData2 } from '../../../actions/activityAnalytics';\nimport { Chart } from 'chart.js/auto';\nimport { useRef } from 'react';\nimport { Bar, getElementsAtEvent } from 'react-chartjs-2';\nimport { withOktaAuth } from '@okta/okta-react';\n\nclass ActivityBarGraph extends React.Component {\n\n    constructor(props) {\n        super(props);\n\n        this.chartRef = React.createRef();\n    }\n\n    getInitialGraphData = async () => {\n        if (this.props.authState.isAuthenticated) {\n            let authObj = {};\n            const userInfo = await this.props.oktaAuth.getUser();\n            authObj.curUserInfo = userInfo;\n            authObj.token = this.props.authState.accessToken;\n            //Action to check if user has analytics access\n            // console.log(\"Getting Initial Click Graph Data.\");\n            await this.props.fetchActivityGraphData2(authObj.token);\n        }\n    }\n\n    componentDidMount() {\n        //call initial fetch data only when there is no user object\n        // if(Object.keys(this.props.user).length === 0){\n        //     this.getUserDetails();\n        // }\n        //this.props.fetchActivityGraphData();\n        if (Object.keys(this.props.user).length === 0) {\n            this.getInitialGraphData();\n        }\n    }\n\n\n    onClick = (event) => {\n        //console.log(\"Clicked the Activity Bar Graph\");\n        console.log(getElementsAtEvent(this.chartRef.current, event))\n        let clickedBar = getElementsAtEvent(this.chartRef.current, event);\n        if (clickedBar.length > 0) {\n            let barIndex = clickedBar[0].index;\n            let newCounts = [];\n            let newLabels = [];\n            if (this.props.analytics.curType === \"year\") {\n                //console.log(\"Bar Index TEST:\", this.props.analytics.dailyCounts[0]);\n                newCounts = this.props.analytics.dailyCounts[barIndex]; //this one\n                newLabels = this.props.analytics.allDayLabels[barIndex];\n                //console.log(\"COUNTS TEST: \", newCounts);\n                // console.log(\"LABEL TEST: \", newCounts);\n\n            }\n            else {\n                newCounts = this.props.analytics.yearCounts;\n                newLabels = this.props.analytics.allYearLabels;\n                // console.log(\"COUNTS TEST: \", newCounts);\n            }\n\n            //monthIndex, graphTitle, curDataType, curCounts, yearCounts, allMonthCounts, curLabels, yearLabels, dayLabels\n\n            this.props.fetchMonthGraphData2(\n                barIndex,\n                \"clicksBar\",\n                this.props.analytics.curType,\n                newCounts,\n                this.props.analytics.yearCounts,\n                this.props.analytics.dailyCounts,\n                newLabels,\n                this.props.analytics.allYearLabels,\n                this.props.analytics.allDayLabels\n            );\n        }\n        else {\n            //this.props.fetchClicksGraphData();\n            this.props.fetchMonthGraphData2(\n                0,\n                \"clicksBar\",\n                \"default\",\n                this.props.analytics.yearCounts,\n                this.props.analytics.yearCounts,\n                this.props.analytics.dailyCounts,\n                this.props.analytics.allYearLabels,\n                this.props.analytics.allYearLabels,\n                this.props.analytics.allDayLabels\n            );\n        }\n\n    }\n    // onClick = (event) => {\n    //     console.log(\"Clicked the Activity Bar Graph\");\n    //     console.log(getElementsAtEvent(this.chartRef.current, event));\n    //     let clickedBar = getElementsAtEvent(this.chartRef.current, event);\n    //     if (clickedBar.length > 0) {\n    //         let barIndex = clickedBar[0].index;\n    //         this.props.fetchMonthGraphData(barIndex, \"clicksBar\", this.props.analytics.curType);\n    //     }\n    //     else {\n    //         this.props.fetchActivityGraphData();\n    //     }\n\n    // }\n\n    render() {\n        //const chartRef = useRef();\n        const data = {\n            options: {\n                legend: {\n                    display: '',\n                },\n            },\n            labels: this.props.analytics.curLabels,\n            datasets: [\n                {\n                    type: 'bar',\n                    label: 'Active Events',\n                    data: this.props.analytics.curCounts,\n                    backgroundColor: 'rgba(28,35,186)',\n                    borderColor: 'rgba(28,35,186)',\n                    borderWidth: 1\n                },\n            ]\n        };\n        const chartOptions = {\n            plugins: {\n                title: {\n                    display: true,\n                    text: 'Active Events - ' + this.props.analytics.graphName\n                },\n                legend: {\n                    display: false,\n                },\n                datalabels: {\n                    display: true,\n                    color: 'black',\n                    anchor: 'end',\n                    align: 'top',\n                    padding: {\n                        top: 1,\n                        bottom: 3,\n                    },\n                    formatter: (value) => value,\n                }\n            }\n        }\n\n        return (\n            <div>\n                {\n                    this.props.isLoading ? <div class=\"loader loader-primary\"></div> :\n                        <Bar\n                            ref={this.chartRef}\n                            data={data}\n                            onClick={this.onClick}\n                            options={chartOptions}\n                        />\n                }\n            </div>\n        )\n    }\n};\n\nconst mapStateToProps = (state) => {\n    //.log(\"State Activity Bar Graph:\", state);\n    return { user: state.user, analytics: state.desktopActivityAnalytics, isLoading: state.activityGraphIsLoading };\n}\n\nexport default connect(mapStateToProps, { fetchActivityGraphData2, fetchMonthGraphData2 })(withOktaAuth(ActivityBarGraph));","//Action Creators for Analyitcs Site\nimport axios from 'axios';\n//import baseApi from '../apis/approvalsApi';\n\n\nconst avgsDataTest = {\n    \"approvalTimes180Days\": [\n        {\n            \"appName\": \"Agile\",\n            \"totalAverageTimeToApprove\": 2.5\n        },\n        {\n            \"appName\": \"HelpNow\",\n            \"totalAverageTimeToApprove\": 5.2\n        },\n        {\n            \"appName\": \"RCE\",\n            \"totalAverageTimeToApprove\": 1.2\n        },\n        {\n            \"appName\": \"Neputne MT\",\n            \"totalAverageTimeToApprove\": 4.2\n        },\n        {\n            \"appName\": \"Neptune PS\",\n            \"totalAverageTimeToApprove\": 2.2\n        },\n        {\n            \"appName\": \"SmartRecruiters\",\n            \"totalAverageTimeToApprove\": 1.0\n        },\n        {\n            \"appName\": \"Fieldglass\",\n            \"totalAverageTimeToApprove\": 1.0\n        },\n        {\n            \"appName\": \"Ivalua\",\n            \"totalAverageTimeToApprove\": 5.2\n        },\n        {\n            \"appName\": \"MES\",\n            \"totalAverageTimeToApprove\": 3.2\n        },\n        {\n            \"appName\": \"SAPQN\",\n            \"totalAverageTimeToApprove\": 5.2\n        },\n        {\n            \"appName\": \"SAM\",\n            \"totalAverageTimeToApprove\": 3.2\n        },\n        {\n            \"appName\": \"Trackwise\",\n            \"totalAverageTimeToApprove\": 6.2\n        },\n        {\n            \"appName\": \"IT Timesheet\",\n            \"totalAverageTimeToApprove\": 2.2\n        },\n        {\n            \"appName\": \"Coupa\",\n            \"totalAverageTimeToApprove\": 1.2\n        },\n        {\n            \"appName\": \"My HCM\",\n            \"totalAverageTimeToApprove\": 2.2\n        },\n        {\n            \"appName\": \"Concur\",\n            \"totalAverageTimeToApprove\": 4.2\n        }\n    ],\n    \"approvalTimes30Days\": [\n        {\n            \"appName\": \"Agile\",\n            \"totalAverageTimeToApprove\": 2.2\n        },\n        {\n            \"appName\": \"HelpNow\",\n            \"totalAverageTimeToApprove\": 5.0\n        },\n        {\n            \"appName\": \"RCE\",\n            \"totalAverageTimeToApprove\": 4.2\n        },\n        {\n            \"appName\": \"Neputne MT\",\n            \"totalAverageTimeToApprove\": 1.2\n        },\n        {\n            \"appName\": \"Neptune PS\",\n            \"totalAverageTimeToApprove\": 2.0\n        },\n        {\n            \"appName\": \"SmartRecruiters\",\n            \"totalAverageTimeToApprove\": 3.0\n        },\n        {\n            \"appName\": \"Fieldglass\",\n            \"totalAverageTimeToApprove\": 2.0\n        },\n        {\n            \"appName\": \"Ivalua\",\n            \"totalAverageTimeToApprove\": 3.2\n        },\n        {\n            \"appName\": \"MES\",\n            \"totalAverageTimeToApprove\": 1.2\n        },\n        {\n            \"appName\": \"SAPQN\",\n            \"totalAverageTimeToApprove\": 5.2\n        },\n        {\n            \"appName\": \"SAM\",\n            \"totalAverageTimeToApprove\": 1.2\n        },\n        {\n            \"appName\": \"Trackwise\",\n            \"totalAverageTimeToApprove\": 3.2\n        },\n        {\n            \"appName\": \"IT Timesheet\",\n            \"totalAverageTimeToApprove\": 1.2\n        },\n        {\n            \"appName\": \"Coupa\",\n            \"totalAverageTimeToApprove\": 4.2\n        },\n        {\n            \"appName\": \"My HCM\",\n            \"totalAverageTimeToApprove\": 2.2\n        },\n        {\n            \"appName\": \"Concur\",\n            \"totalAverageTimeToApprove\": 4.2\n        }\n    ],\n    \"approvalTimes1Day\": [\n        {\n            \"appName\": \"Agile\",\n            \"totalAverageTimeToApprove\": 1.5\n        },\n        {\n            \"appName\": \"HelpNow\",\n            \"totalAverageTimeToApprove\": 2.2\n        },\n        {\n            \"appName\": \"RCE\",\n            \"totalAverageTimeToApprove\": 3.2\n        },\n        {\n            \"appName\": \"Neputne MT\",\n            \"totalAverageTimeToApprove\": 4.2\n        },\n        {\n            \"appName\": \"Neptune PS\",\n            \"totalAverageTimeToApprove\": 2.2\n        },\n        {\n            \"appName\": \"SmartRecruiters\",\n            \"totalAverageTimeToApprove\": 1.0\n        },\n        {\n            \"appName\": \"Fieldglass\",\n            \"totalAverageTimeToApprove\": 4.0\n        },\n        {\n            \"appName\": \"Ivalua\",\n            \"totalAverageTimeToApprove\": 2.2\n        },\n        {\n            \"appName\": \"MES\",\n            \"totalAverageTimeToApprove\": 7.2\n        },\n        {\n            \"appName\": \"SAPQN\",\n            \"totalAverageTimeToApprove\": 2.2\n        },\n        {\n            \"appName\": \"SAM\",\n            \"totalAverageTimeToApprove\": 1.2\n        },\n        {\n            \"appName\": \"Trackwise\",\n            \"totalAverageTimeToApprove\": 6.2\n        },\n        {\n            \"appName\": \"IT Timesheet\",\n            \"totalAverageTimeToApprove\": 1.0\n        },\n        {\n            \"appName\": \"Coupa\",\n            \"totalAverageTimeToApprove\": 1.1\n        },\n        {\n            \"appName\": \"My HCM\",\n            \"totalAverageTimeToApprove\": 2.0\n        },\n        {\n            \"appName\": \"Concur\",\n            \"totalAverageTimeToApprove\": 2.1\n        }\n    ]\n};\n\nexport const attaFilterSelected = (filter) => {\n    //return an action\n    return {\n        type: 'ATTA_FILTER_SELECTED',\n        payload: filter\n    };\n};\n\n\n//initial function to get data\nexport const fetchAverageTimeToCompleteData = (userToken) => async dispatch => {\n    //start loading spinner\n    dispatch({ type: 'ATTA_GRAPH_IS_LOADING' });\n\n    //API Call to get Averages Data\n    let avgsData = await getDataCall(userToken);\n\n    avgsData = await cleanUpData(avgsData);\n\n    console.log(\"Avgs data cleaned: \", avgsData);\n\n\n\n    //get all data & store in state\n    // yearCountFinal: result,\n    //     dailyCountFinal: dailyCounts\n\n\n    dispatch({ type: 'FETCH_ATTA_DATA', payload: avgsData });\n    dispatch({ type: 'ATTA_GRAPH_IS_READY' });\n};\n\n//remove any 0's , remove apps to not show like ISU\nconst cleanUpData = async (avgsData) => {\n\n    avgsData.approvalTimes1Day = avgsData.approvalTimes1Day.filter(obj => obj.totalAverageTimeToApprove !== 0 && obj.appName !== \"ISU\");\n    //console.log(\"TEST CLEAN AVGS: \", avgsData.approvalTimes1Day);\n\n    avgsData.approvalTimes30Days = avgsData.approvalTimes30Days.filter(obj => obj.totalAverageTimeToApprove !== 0 && obj.appName !== 'ISU');\n    // avgsData = avgsData.approvalTimes30Days.filter(obj => obj.appName !== 'ISU');\n\n    avgsData.approvalTimes180Days = avgsData.approvalTimes180Days.filter(obj => obj.totalAverageTimeToApprove !== 0 && obj.appName !== 'ISU');\n    //avgsData = avgsData.approvalTimes180Days.filter(obj => obj.appName !== 'ISU');\n\n    return avgsData;\n}\n\n\n//API Call to get averages\nconst getDataCall = async (curToken) => {\n    try {\n\n        // Define the base URL and endpoint\n\n        const baseUrl = process.env.REACT_APP_BASE_URL + \"/Analytics/AppsAvgTimeToApprove\";\n\n        // Define headers\n        const headers = {\n            'Authorization': 'Bearer ' + curToken.accessToken,\n        };\n\n        // Define query parameters\n        const params = {\n            analyticsType: 'AppClickCount',\n            platform: 'desktop'\n        };\n\n        // Make GET request \n        const response = await axios.get(baseUrl, {\n            headers: headers,\n            params: params\n        });\n\n        console.log(\"Average Approvals API Response:\", response.data);\n        return response.data;\n        //dispatch({ type: 'ANALYTICS_ACCESS', payload: dataObj.analyticsAccess });\n    } catch (error) {\n        // Handle any errors\n        console.log(\"Error getting Average Approvals  from API:\");\n        return [];\n    }\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { fetchAverageTimeToCompleteData, attaFilterSelected } from '../../../actions/analytics/isiAnywhere/averageTimeToApprove';\nimport { Chart } from 'chart.js/auto';\nimport { useRef } from 'react';\nimport { Bar, getElementsAtEvent } from 'react-chartjs-2';\nimport { withOktaAuth } from '@okta/okta-react';\n\nclass AvgCompletionGraph extends React.Component {\n\n    constructor(props) {\n        super(props);\n\n        this.chartRef = React.createRef();\n    }\n\n    getInitialGraphData = async () => {\n\n        if (this.props.authState.isAuthenticated) {\n            let authObj = {};\n            const userInfo = await this.props.oktaAuth.getUser();\n            //console.log(\"USER INFO\", userInfo);\n            authObj.curUserInfo = userInfo;\n            authObj.token = this.props.authState.accessToken;\n            //Action to check if user has analytics access\n            console.log(\"Getting ATTA Data.\");\n            await this.props.fetchAverageTimeToCompleteData(authObj.token);\n\n        }\n    }\n\n    componentDidMount() {\n        //call initial fetch data only when there is no user object\n        // if(Object.keys(this.props.user).length === 0){\n        //     this.getUserDetails();\n        // }\n        //this.props.fetchActivityGraphData();\n        if (Object.keys(this.props.user).length === 0) {\n            this.getInitialGraphData();\n        }\n    }\n\n\n    onClickBar = (event) => {\n        console.log(\"Clicked the ATTA Bar Graph\");\n        // console.log(getElementsAtEvent(this.chartRef.current, event))\n        // let clickedBar = getElementsAtEvent(this.chartRef.current, event);\n        // if (clickedBar.length > 0) {\n        //     let barIndex = clickedBar[0].index;\n        //     let newCounts = [];\n        //     let newLabels = [];\n        //     if (this.props.analytics.curType === \"year\") {\n        //         console.log(\"Bar Index TEST:\", this.props.analytics.dailyCounts[0]);\n        //         newCounts = this.props.analytics.dailyCounts[barIndex]; //this one\n        //         newLabels = this.props.analytics.allDayLabels[barIndex];\n        //         console.log(\"COUNTS TEST: \", newCounts);\n        //         console.log(\"LABEL TEST: \", newCounts);\n\n        //     }\n        //     else {\n        //         newCounts = this.props.analytics.yearCounts;\n        //         newLabels = this.props.analytics.allYearLabels;\n        //         console.log(\"COUNTS TEST: \", newCounts);\n        //     }\n\n        //     //monthIndex, graphTitle, curDataType, curCounts, yearCounts, allMonthCounts, curLabels, yearLabels, dayLabels\n\n        //     this.props.fetchMonthGraphData2(\n        //         barIndex,\n        //         \"clicksBar\",\n        //         this.props.analytics.curType,\n        //         newCounts,\n        //         this.props.analytics.yearCounts,\n        //         this.props.analytics.dailyCounts,\n        //         newLabels,\n        //         this.props.analytics.allYearLabels,\n        //         this.props.analytics.allDayLabels\n        //     );\n        // }\n        // else {\n        //     //this.props.fetchClicksGraphData();\n        //     this.props.fetchMonthGraphData2(\n        //         0,\n        //         \"clicksBar\",\n        //         \"default\",\n        //         this.props.analytics.yearCounts,\n        //         this.props.analytics.yearCounts,\n        //         this.props.analytics.dailyCounts,\n        //         this.props.analytics.allYearLabels,\n        //         this.props.analytics.allYearLabels,\n        //         this.props.analytics.allDayLabels\n        //     );\n        // }\n\n    }\n    // onClick = (event) => {\n    //     console.log(\"Clicked the Activity Bar Graph\");\n    //     console.log(getElementsAtEvent(this.chartRef.current, event));\n    //     let clickedBar = getElementsAtEvent(this.chartRef.current, event);\n    //     if (clickedBar.length > 0) {\n    //         let barIndex = clickedBar[0].index;\n    //         this.props.fetchMonthGraphData(barIndex, \"clicksBar\", this.props.analytics.curType);\n    //     }\n    //     else {\n    //         this.props.fetchActivityGraphData();\n    //     }\n\n    // }\n\n    onClickFilter = async (event) => {\n        console.log(\"ATTA Filter Clicked: \", event.target.innerText);\n        await this.props.attaFilterSelected(event.target.innerText);\n\n    }\n\n    render() {\n        console.log(\"TEST ATTA!!!! \", this.props.analytics);\n        let curFilter = this.props.attaFilter;\n        let curCountsTest = [];\n        let curLabelsTest = [];\n        if (curFilter === \"Last 30 Days\" && !this.props.isLoading) {\n            curCountsTest = this.props.analytics.approvalTimes30Days.map(item => item.totalAverageTimeToApprove);\n            curLabelsTest = this.props.analytics.approvalTimes30Days.map(item => item.appName);\n            console.log(\"TEST ATTA I AM IN HERE!!! \", curCountsTest, curLabelsTest);\n        }\n        else if (curFilter === \"Last Day\" && !this.props.isLoading) {\n            curCountsTest = this.props.analytics.approvalTimes1Day.map(item => item.totalAverageTimeToApprove);\n            curLabelsTest = this.props.analytics.approvalTimes1Day.map(item => item.appName);\n        }\n        else if (curFilter === \"Last 180 Days\" && !this.props.isLoading) {\n            curCountsTest = this.props.analytics.approvalTimes180Days.map(item => item.totalAverageTimeToApprove);\n            curLabelsTest = this.props.analytics.approvalTimes180Days.map(item => item.appName);\n        }\n        // const counts = this.props.analytics.approvalTimes30days.map(item => item.count);\n        // const labels = this.props.analytics.approvalTimes30days.map(item => item.label);\n        //const curCounts = [\"2\", \"5\", \"1\", \"1\", \"5\", \"6\", \"2\", \"4\", \"3\", \"8\", \"5\", \"2\", \"9\", \"5\", \"1\", \"2\", \"1\"];\n        /* const curLabels = [\"Agile\", \"HelpNow\", \"RCE\", \"Neputne MT\", \"Neptune PS\", \"SmartRecruiters\",\n            \"Fieldglass\", \"Ivalua\", \"MES\", \"SAPQN\", \"SAM\", \"Trackwise\", \"IT Timesheet\", \"Coupa\", \"My HCM\", \"Concur\",\n            \"Adobe Sign\"]; */\n        //const chartRef = useRef();\n        const data = {\n            options: {\n                legend: {\n                    display: '',\n                },\n            },\n            labels: curLabelsTest,\n            datasets: [\n                {\n                    type: 'bar',\n                    label: 'Average approval time to complete',\n                    data: curCountsTest,\n                    backgroundColor: 'rgba(28,35,186)',\n                    borderColor: 'rgba(28,35,186)',\n                    borderWidth: 1\n                },\n            ]\n        };\n        const chartOptions = {\n            scales: {\n                y: {\n                    title: {\n                        display: true,\n                        text: 'Days'\n                    }\n                },\n                x: {\n                    title: {\n                        display: true,\n                        text: 'Applications'\n                    }\n                }\n            },\n            plugins: {\n                title: {\n                    display: false,\n                    text: 'Based on last 3 months approvals'\n                },\n                legend: {\n                    display: false,\n                },\n                datalabels: {\n                    display: true,\n                    color: 'black',\n                    anchor: 'end',\n                    align: 'top',\n                    padding: {\n                        top: 1,\n                        bottom: 3,\n                    },\n                    formatter: (value) => value,\n                }\n            }\n        }\n\n        return (\n            <div className='card'>\n                <div className='card-header'>\n                    {/* <div className='card-title'>Average Approval Time</div> */}\n                    <div class=\"card-head-row\">\n                        <div class=\"card-title\">Average Approval Time</div>\n                        <div class=\"card-tools\">\n                            <ul class=\"nav nav-pills nav-secondary nav-pills-no-bd nav-sm\" id=\"pills-tab\" role=\"tablist\">\n                                <li class=\"nav-item submenu\" onClick={this.onClickFilter}>\n                                    <a class=\"nav-link intuitive-pill\" id=\"pills-today\" data-toggle=\"pill\" href=\"#pills-today\" role=\"tab\" aria-selected=\"false\" >Last Day</a>\n                                </li>\n                                <li class=\"nav-item submenu\" onClick={this.onClickFilter}>\n                                    <a class=\"nav-link active show\" id=\"pills-week\" data-toggle=\"pill\" href=\"#pills-week\" role=\"tab\" aria-selected=\"true\" >Last 30 Days</a>\n                                </li>\n                                <li class=\"nav-item submenu\" onClick={this.onClickFilter}>\n                                    <a class=\"nav-link\" id=\"pills-month\" data-toggle=\"pill\" href=\"#pills-month\" role=\"tab\" aria-selected=\"false\">Last 180 Days</a>\n                                </li>\n                            </ul>\n                        </div>\n                    </div>\n                </div>\n                <div className='card-body'>\n                    <div className='chart-container'>\n                        {/* <AvgCompletionGraph /> */}\n                        <div>\n                            {\n                                this.props.isLoading ? <div class=\"loader loader-primary\"></div> :\n                                    <Bar\n                                        ref={this.chartRef}\n                                        data={data}\n                                        onClick={this.onClickBar}\n                                        options={chartOptions}\n                                    />\n                            }\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n};\n\nconst mapStateToProps = (state) => {\n    console.log(\"State ATTA Bar Graph:\", state);\n    return { user: state.user, analytics: state.avgTimeToApproveAnalytics, isLoading: state.attaGraphIsLoading, attaFilter: state.selectedAttaFilter };\n}\n\nexport default connect(mapStateToProps, { fetchAverageTimeToCompleteData, attaFilterSelected })(withOktaAuth(AvgCompletionGraph));","//Action Creators for Analyitcs Site\nimport axios from 'axios';\n//import baseApi from '../apis/approvalsApi';\n\n\nconst activeUsersTestList = [\n    {\n        \"email\": \"Spencer.Wright@intusurg.com\",\n        \"name\": \"Spencer Wright\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 2283\n    },\n    {\n        \"email\": \"Alicia.Hyland@intusurg.com\",\n        \"name\": \"Alicia Hyland\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 556\n    },\n    {\n        \"email\": \"Quy.Tran@intusurg.com\",\n        \"name\": \"Quy Tran\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 305\n    },\n    {\n        \"email\": \"Killian.Magee@intusurg.com\",\n        \"name\": \"Killian Magee\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 290\n    },\n    {\n        \"email\": \"Ryan.Harrington@intusurg.com\",\n        \"name\": \"Ryan Harrington\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 233\n    },\n    {\n        \"email\": \"Ian.Elmazaj@intusurg.com\",\n        \"name\": \"Ian Elmazaj\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 171\n    },\n    {\n        \"email\": \"Mike.Prindiville@intusurg.com\",\n        \"name\": \"Mike Prindiville\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 153\n    },\n    {\n        \"email\": \"Victor.Valdez@intusurg.com\",\n        \"name\": \"Victor Valdez\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 141\n    },\n    {\n        \"email\": \"Nehmya.Adere@intusurg.com\",\n        \"name\": \"Nehmya Adere\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 140\n    },\n    {\n        \"email\": \"Yasser.Abdin@intusurg.com\",\n        \"name\": \"Yasser Abdin\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 120\n    },\n    {\n        \"email\": \"Ryan.santos@intusurg.com\",\n        \"name\": \"Ryan Santos\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 116\n    },\n    {\n        \"email\": \"Kevin.Crawford@intusurg.com\",\n        \"name\": \"Kevin Crawford\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 114\n    },\n    {\n        \"email\": \"Eduardo.Villanueva@intusurg.com\",\n        \"name\": \"Eduardo Villanueva\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 114\n    },\n    {\n        \"email\": \"Alejandra.Erbe@intusurg.com\",\n        \"name\": \"Alejandra Erbe\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 113\n    },\n    {\n        \"email\": \"David.Robinson@intusurg.com\",\n        \"name\": \"David Robinson\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 108\n    },\n    {\n        \"email\": \"Dorothy.Hwang@intusurg.com\",\n        \"name\": \"Dorothy Hwang\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 107\n    },\n    {\n        \"email\": \"Cindy.Salas@intusurg.com\",\n        \"name\": \"Cindy Salas\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 102\n    },\n    {\n        \"email\": \"Carlos.Aguirre@intusurg.com\",\n        \"name\": \"Carlos Aguirre\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 98\n    },\n    {\n        \"email\": \"Maria.Velazquez@intusurg.com\",\n        \"name\": \"Elena Velazquez\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 97\n    },\n    {\n        \"email\": \"Beto.HernandezAdame@intusurg.com\",\n        \"name\": \"Beto Hernandez Adame\",\n        \"type\": \"top20\",\n        \"totalClickCount\": 97\n    },\n    {\n        \"email\": \"Tim.Limon@intusurg.com\",\n        \"name\": \"Tim Limon\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Lisa.Lenaway@intusurg.com\",\n        \"name\": \"Lisa Lenaway\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Alejandro.Figueroa@intusurg.com\",\n        \"name\": \"Alejandro Figueroa\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Jesus.Flores@intusurg.com\",\n        \"name\": \"Jesus Flores\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Jack.Hudson@intusurg.com\",\n        \"name\": \"Jack Hudson\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Raj.Maniar@intusurg.com\",\n        \"name\": \"Raj Maniar\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Joshua.Harris@intusurg.com\",\n        \"name\": \"Joshua Harris\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Sandeep.kaur@intusurg.com\",\n        \"name\": \"Sandeep Kaur\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Marc.Levesque@intusurg.com\",\n        \"name\": \"Marc Levesque\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"RobertXinsheng.Chen@intusurg.com\",\n        \"name\": \"Robert Xinsheng Chen\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Alexander.Grosch@intusurg.com\",\n        \"name\": \"Alexander Grosch\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Anthony.Lin@intusurg.com\",\n        \"name\": \"Anthony Lin\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Kathya.Ortiz@intusurg.com\",\n        \"name\": \"Kathya Ortiz\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Dennise.DalmaWeiszhausz@intusurg.com\",\n        \"name\": \"Dennise Dalma Weiszhausz\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"LUIS.LERMA@intusurg.com\",\n        \"name\": \"LUIS LERMA\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Rajalekha.M.Rajamahendiran@intusurg.com\",\n        \"name\": \"Rajalekha Manjakuppam Rajamahendiran\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Miriam.DeLaCruz@intusurg.com\",\n        \"name\": \"Miriam De La Cruz\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Janine.Fallon@intusurg.com\",\n        \"name\": \"Janine Fallon\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Jonathan.Arrescurrenaga@intusurg.com\",\n        \"name\": \"Jonathan Arrescurrenaga\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Marco.Tran@intusurg.com\",\n        \"name\": \"Marco Tran\",\n        \"type\": \"middle20\",\n        \"totalClickCount\": 4\n    },\n    {\n        \"email\": \"Douglas.Phan@intusurg.com\",\n        \"name\": \"Douglas Phan\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Victor.Rivera2@intusurg.com\",\n        \"name\": \"Victor Rivera\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Tina.Nguyen@intusurg.com\",\n        \"name\": \"Tina Nguyen\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Enrico.Veloria@intusurg.com\",\n        \"name\": \"Enrico Veloria\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Tim.Huang@intusurg.com\",\n        \"name\": \"Tim Huang\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Jiyeon.Shin@intusurg.com\",\n        \"name\": \"Jiyeon Shin\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Sebastian.Gretzmeier@intusurg.com\",\n        \"name\": \"Sebastian Gretzmeier\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"PoliReddy.Reddem@intusurg.com\",\n        \"name\": \"Poli Reddy Reddem\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Avinash.Uppuluri@intusurg.com\",\n        \"name\": \"Avinash Uppuluri\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Liang.Xue@intusurg.com\",\n        \"name\": \"Liang Xue\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Adalberto.Zamora@intusurg.com\",\n        \"name\": \"Adalberto Zamora\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Ryohei.Fujitsuka@intusurg.com\",\n        \"name\": \"Ryohei Fujitsuka\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Amarjeet.Ghatoura@intusurg.com\",\n        \"name\": \"Amarjeet Ghatoura\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Han.Nguyen@intusurg.com\",\n        \"name\": \"Han Nguyen\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Mittali.Daiya@intusurg.com\",\n        \"name\": \"Mittali Daiya\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Brett.Beauchamp-Russell@intusurg.com\",\n        \"name\": \"Brett Beauchamp-Russell\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"aruna.krishnan@intusurg.com\",\n        \"name\": \"Aruna Krishnan\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Yunyi.Cai@intusurg.com\",\n        \"name\": \"Yunyi Cai\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Chhakda.Reth@intusurg.com\",\n        \"name\": \"Chhakda Reth\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    },\n    {\n        \"email\": \"Michael.Baldwin@intusurg.com\",\n        \"name\": \"Michael Baldwin\",\n        \"type\": \"bottom20\",\n        \"totalClickCount\": 1\n    }\n];\n\nexport const mostActiveUsersListFilterSelected = (filter) => {\n    //return an action\n    return {\n        type: 'ACTIVE_USERS_LIST_FILTER_SELECTED',\n        payload: filter\n    };\n};\n\n\n//initial function to get data\nexport const fetchActiveUsersListData = (userToken) => async dispatch => {\n    //start loading spinner\n    dispatch({ type: 'ACTIVE_USERS_LIST_IS_LOADING' });\n\n    //API Call\n    let activerUsersList = await getDataCall(userToken);\n    //activerUsersList = activeUsersTestList; //for UAT \n\n    //let cleanActiveData = await cleanUpData(avgsData);\n\n    console.log(\"Most Active Users data cleaned: \", activerUsersList);\n\n\n\n    //get all data & store in state\n    // yearCountFinal: result,\n    //     dailyCountFinal: dailyCounts\n\n\n    dispatch({ type: 'FETCH_ACTIVE_USERS_LIST_DATA', payload: activerUsersList });\n    dispatch({ type: 'ACTIVE_USERS_LIST_IS_READY' });\n};\n\n//remove any 0's , remove apps to not show like ISU\nconst cleanUpData = async (avgsData) => {\n\n    avgsData.approvalTimes1Day = avgsData.approvalTimes1Day.filter(obj => obj.totalAverageTimeToApprove !== 0 && obj.appName !== \"ISU\");\n    //console.log(\"TEST CLEAN AVGS: \", avgsData.approvalTimes1Day);\n\n    avgsData.approvalTimes30Days = avgsData.approvalTimes30Days.filter(obj => obj.totalAverageTimeToApprove !== 0 && obj.appName !== 'ISU');\n    // avgsData = avgsData.approvalTimes30Days.filter(obj => obj.appName !== 'ISU');\n\n    avgsData.approvalTimes180Days = avgsData.approvalTimes180Days.filter(obj => obj.totalAverageTimeToApprove !== 0 && obj.appName !== 'ISU');\n    //avgsData = avgsData.approvalTimes180Days.filter(obj => obj.appName !== 'ISU');\n\n    return avgsData;\n}\n\n\n//API Call to get averages\nconst getDataCall = async (curToken) => {\n    try {\n\n        // Define the base URL and endpoint\n\n        const baseUrl = process.env.REACT_APP_BASE_URL + \"/Analytics/ActiveUsers\";\n\n        // Define headers\n        const headers = {\n            'Authorization': 'Bearer ' + curToken.accessToken,\n        };\n\n        // Define query parameters\n        const params = {\n            platform: 'desktop'\n        };\n\n        // Make GET request \n        const response = await axios.get(baseUrl, {\n            headers: headers,\n            params: params\n        });\n\n        console.log(\"Active users API Response:\", response.data);\n        return response.data;\n        //dispatch({ type: 'ANALYTICS_ACCESS', payload: dataObj.analyticsAccess });\n    } catch (error) {\n        // Handle any errors\n        console.log(\"Error getting Active Users list from API:\");\n        return [];\n    }\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { fetchActiveUsersListData, mostActiveUsersListFilterSelected } from '../../../actions/analytics/isiAnywhere/mostActiveList.js';\nimport { useRef } from 'react';\n//import { Bar, getElementsAtEvent } from 'react-chartjs-2';\nimport { withOktaAuth } from '@okta/okta-react';\n\nclass ActiveUsersList extends React.Component {\n\n    constructor(props) {\n        super(props);\n\n        this.chartRef = React.createRef();\n    }\n\n    getInitialListData = async () => {\n\n        if (this.props.authState.isAuthenticated) {\n            let authObj = {};\n            const userInfo = await this.props.oktaAuth.getUser();\n            //console.log(\"USER INFO\", userInfo);\n            authObj.curUserInfo = userInfo;\n            authObj.token = this.props.authState.accessToken;\n            console.log(\"Getting Most Acitve USers Data.\");\n            await this.props.fetchActiveUsersListData(authObj.token);\n\n        }\n    }\n\n    componentDidMount() {\n        //call function to get API data from Actions\n        if (Object.keys(this.props.user).length === 0) {\n            this.getInitialListData();\n        }\n    }\n\n\n\n    onClickFilter = async (event) => {\n        console.log(\"Active Users Filter Clicked: \", event.target.innerText);\n        await this.props.mostActiveUsersListFilterSelected(event.target.innerText);\n    }\n\n    //create table, map through array of objects\n    renderList() {\n        let curType = \"top20\"\n        if (this.props.curFilter === \"Most Active\") {\n            curType = \"top20\";\n        }\n        else if (this.props.curFilter === \"Median Active\") {\n            curType = \"middle20\"\n        }\n        else if (this.props.curFilter === \"Least Active\") {\n            curType = \"bottom20\"\n        }\n        else {\n            curType = \"top20\"\n        }\n        //filter list based on current user type filter\n        let filteredList = [];\n        if (!this.props.isLoading) {\n            filteredList = this.props.userList.filter(curUser => curUser.type === curType);\n        }\n\n        //loop through filtered list to create and return elements list\n        return filteredList.map((user, index) => {\n            const key = `${user.name}-${user.email}-${index}`;\n            return (\n                <tr key={key}>\n                    <td>{index + 1}</td>\n                    <td>{user.name}</td>\n                    <td>{user.email}</td>\n                    <td>{user.totalClickCount}</td>\n                </tr>\n            )\n        });\n    }\n\n    render() {\n\n\n        return (\n            <div class=\"card\">\n                <div class=\"card-header\">\n                    <div class=\"card-head-row\">\n                        <div class=\"card-title\">Top Users</div>\n                        <div class=\"card-tools\">\n                            <ul class=\"nav nav-pills nav-secondary nav-pills-no-bd nav-sm\" id=\"pills-tab\" role=\"tablist\">\n                                <li class=\"nav-item submenu\" onClick={this.onClickFilter}>\n                                    <a class=\"nav-link active intuitive-pill\" id=\"pills-top-active\" data-toggle=\"pill\" href=\"#pills-top-active\" role=\"tab\" aria-selected=\"true\" >Most Active</a>\n                                </li>\n                                <li class=\"nav-item submenu\" onClick={this.onClickFilter} >\n                                    <a class=\"nav-link show\" id=\"pills-mid-active\" data-toggle=\"pill\" href=\"#pills-mid-active\" role=\"tab\" aria-selected=\"false\">Median Active</a>\n                                </li>\n                                <li class=\"nav-item submenu\" onClick={this.onClickFilter}>\n                                    <a class=\"nav-link\" id=\"pills-least-active\" data-toggle=\"pill\" href=\"#pills-least-active\" role=\"tab\" aria-selected=\"false\">Least Active</a>\n                                </li>\n                            </ul>\n                        </div>\n                    </div>\n                </div>\n                <div id=\"scrollable-card-body\" class=\"card-body\">\n                    {/* <div class=\"card-sub\">\n                        This is the basic table view of the ready dashboard :\n                    </div> */}\n                    <table class=\"table mt-1\">\n                        <thead>\n                            <tr>\n                                <th scope=\"col\">#</th>\n                                <th scope=\"col\">Name</th>\n                                <th scope=\"col\">Email</th>\n                                <th scope=\"col\">Clicks</th>\n                            </tr>\n                        </thead>\n                        <tbody>\n                            {this.props.isLoading ? <div class=\"loader loader-primary\"></div> : this.renderList()}\n                        </tbody>\n                    </table>\n                </div>\n            </div>\n        )\n    }\n};\n\nconst mapStateToProps = (state) => {\n    console.log(\"State MOST Active User List :\", state);\n    return { user: state.user, userList: state.mostActiveUsersList, isLoading: state.mostActiveUsersListIsLoading, curFilter: state.selectedMostActiveUserFilter };\n}\n\nexport default connect(mapStateToProps, { fetchActiveUsersListData, mostActiveUsersListFilterSelected })(withOktaAuth(ActiveUsersList));\n//export default ActiveUsersList;","//Action Creators for Analyitcs Site\nimport axios from 'axios';\n\n\nconst testDataAPI = [\n    {\n        \"dateInstance\": \"2024-08-01T00:00:00\",\n        \"month\": \"Aug 2024\",\n        \"dailyUsersCount\": 2177,\n        \"weeklyUsersCount\": 4823,\n        \"monthlyUsersCount\": 1077\n    },\n    {\n        \"dateInstance\": \"2024-05-01T00:00:00\",\n        \"month\": \"May 2024\",\n        \"dailyUsersCount\": 1632,\n        \"weeklyUsersCount\": 3813,\n        \"monthlyUsersCount\": 1024\n    },\n    {\n        \"dateInstance\": \"2024-09-01T00:00:00\",\n        \"month\": \"Sep 2024\",\n        \"dailyUsersCount\": 24,\n        \"weeklyUsersCount\": 2021,\n        \"monthlyUsersCount\": 834\n    },\n    {\n        \"dateInstance\": \"2024-07-01T00:00:00\",\n        \"month\": \"Jul 2024\",\n        \"dailyUsersCount\": 1645,\n        \"weeklyUsersCount\": 4979,\n        \"monthlyUsersCount\": 1241\n    },\n    {\n        \"dateInstance\": \"2024-04-01T00:00:00\",\n        \"month\": \"Apr 2024\",\n        \"dailyUsersCount\": 1682,\n        \"weeklyUsersCount\": 3938,\n        \"monthlyUsersCount\": 1026\n    },\n    {\n        \"dateInstance\": \"2024-06-01T00:00:00\",\n        \"month\": \"Jun 2024\",\n        \"dailyUsersCount\": 1264,\n        \"weeklyUsersCount\": 3722,\n        \"monthlyUsersCount\": 959\n    }\n];\n\nconst testMonthCounts = [\n    {\n        \"month\": \"2024-09\",\n        \"uniqueUsers\": 1939\n    },\n    {\n        \"month\": \"2024-08\",\n        \"uniqueUsers\": 2867\n    },\n    {\n        \"month\": \"2024-07\",\n        \"uniqueUsers\": 3080\n    },\n    {\n        \"month\": \"2024-06\",\n        \"uniqueUsers\": 2313\n    },\n    {\n        \"month\": \"2024-05\",\n        \"uniqueUsers\": 2467\n    },\n    {\n        \"month\": \"2024-04\",\n        \"uniqueUsers\": 2510\n    },\n    {\n        \"month\": \"2024-03\",\n        \"uniqueUsers\": 1764\n    }\n];\n\nconst testWeekCounts = [\n    {\n        \"week\": \"2024-09-16T00:00:00\",\n        \"uniqueUsers\": 304\n    },\n    {\n        \"week\": \"2024-09-09T00:00:00\",\n        \"uniqueUsers\": 1247\n    },\n    {\n        \"week\": \"2024-09-02T00:00:00\",\n        \"uniqueUsers\": 1266\n    },\n    {\n        \"week\": \"2024-08-26T00:00:00\",\n        \"uniqueUsers\": 1340\n    },\n    {\n        \"week\": \"2024-08-19T00:00:00\",\n        \"uniqueUsers\": 1552\n    },\n    {\n        \"week\": \"2024-08-12T00:00:00\",\n        \"uniqueUsers\": 1279\n    },\n    {\n        \"week\": \"2024-08-05T00:00:00\",\n        \"uniqueUsers\": 1202\n    },\n    {\n        \"week\": \"2024-07-29T00:00:00\",\n        \"uniqueUsers\": 1558\n    },\n    {\n        \"week\": \"2024-07-22T00:00:00\",\n        \"uniqueUsers\": 1361\n    },\n    {\n        \"week\": \"2024-07-15T00:00:00\",\n        \"uniqueUsers\": 1122\n    },\n    {\n        \"week\": \"2024-07-08T00:00:00\",\n        \"uniqueUsers\": 1196\n    },\n    {\n        \"week\": \"2024-07-01T00:00:00\",\n        \"uniqueUsers\": 1285\n    },\n    {\n        \"week\": \"2024-06-24T00:00:00\",\n        \"uniqueUsers\": 1306\n    },\n    {\n        \"week\": \"2024-06-17T00:00:00\",\n        \"uniqueUsers\": 1147\n    },\n    {\n        \"week\": \"2024-06-10T00:00:00\",\n        \"uniqueUsers\": 852\n    },\n    {\n        \"week\": \"2024-06-03T00:00:00\",\n        \"uniqueUsers\": 1004\n    },\n    {\n        \"week\": \"2024-05-27T00:00:00\",\n        \"uniqueUsers\": 1109\n    },\n    {\n        \"week\": \"2024-05-20T00:00:00\",\n        \"uniqueUsers\": 1017\n    },\n    {\n        \"week\": \"2024-05-13T00:00:00\",\n        \"uniqueUsers\": 1032\n    }\n];\n\nconst testDailyCounts = [\n\n]\n\nconst testDailyCountsOld = [\n    {\n        \"day\": \"2024-08-01T00:00:00\",\n        \"uniqueUsers\": 368\n    },\n    {\n        \"day\": \"2024-08-02T00:00:00\",\n        \"uniqueUsers\": 297\n    },\n    {\n        \"day\": \"2024-08-03T00:00:00\",\n        \"uniqueUsers\": 42\n    },\n    {\n        \"day\": \"2024-08-04T00:00:00\",\n        \"uniqueUsers\": 124\n    },\n    {\n        \"day\": \"2024-08-05T00:00:00\",\n        \"uniqueUsers\": 450\n    },\n    {\n        \"day\": \"2024-08-06T00:00:00\",\n        \"uniqueUsers\": 356\n    },\n    {\n        \"day\": \"2024-08-07T00:00:00\",\n        \"uniqueUsers\": 336\n    },\n    {\n        \"day\": \"2024-08-08T00:00:00\",\n        \"uniqueUsers\": 268\n    },\n    {\n        \"day\": \"2024-08-09T00:00:00\",\n        \"uniqueUsers\": 284\n    },\n    {\n        \"day\": \"2024-08-10T00:00:00\",\n        \"uniqueUsers\": 53\n    },\n    {\n        \"day\": \"2024-08-11T00:00:00\",\n        \"uniqueUsers\": 88\n    },\n    {\n        \"day\": \"2024-08-12T00:00:00\",\n        \"uniqueUsers\": 559\n    },\n    {\n        \"day\": \"2024-08-13T00:00:00\",\n        \"uniqueUsers\": 387\n    },\n    {\n        \"day\": \"2024-08-14T00:00:00\",\n        \"uniqueUsers\": 340\n    },\n    {\n        \"day\": \"2024-08-15T00:00:00\",\n        \"uniqueUsers\": 287\n    },\n    {\n        \"day\": \"2024-08-16T00:00:00\",\n        \"uniqueUsers\": 231\n    },\n    {\n        \"day\": \"2024-08-17T00:00:00\",\n        \"uniqueUsers\": 38\n    },\n    {\n        \"day\": \"2024-08-18T00:00:00\",\n        \"uniqueUsers\": 100\n    },\n    {\n        \"day\": \"2024-08-19T00:00:00\",\n        \"uniqueUsers\": 522\n    },\n    {\n        \"day\": \"2024-08-20T00:00:00\",\n        \"uniqueUsers\": 362\n    },\n    {\n        \"day\": \"2024-08-21T00:00:00\",\n        \"uniqueUsers\": 520\n    },\n    {\n        \"day\": \"2024-08-22T00:00:00\",\n        \"uniqueUsers\": 527\n    },\n    {\n        \"day\": \"2024-08-23T00:00:00\",\n        \"uniqueUsers\": 389\n    },\n    {\n        \"day\": \"2024-08-24T00:00:00\",\n        \"uniqueUsers\": 73\n    },\n    {\n        \"day\": \"2024-08-25T00:00:00\",\n        \"uniqueUsers\": 138\n    },\n    {\n        \"day\": \"2024-08-26T00:00:00\",\n        \"uniqueUsers\": 642\n    },\n    {\n        \"day\": \"2024-08-27T00:00:00\",\n        \"uniqueUsers\": 443\n    },\n    {\n        \"day\": \"2024-08-28T00:00:00\",\n        \"uniqueUsers\": 252\n    },\n    {\n        \"day\": \"2024-08-29T00:00:00\",\n        \"uniqueUsers\": 349\n    },\n    {\n        \"day\": \"2024-08-30T00:00:00\",\n        \"uniqueUsers\": 260\n    },\n    {\n        \"day\": \"2024-08-31T00:00:00\",\n        \"uniqueUsers\": 52\n    }\n];\n\n// const testCountsAll = [\n//     {\n//         \"day\": \"2024-09-05T00:00:00\",\n//         \"userCount\": 420,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-30T00:00:00\",\n//         \"userCount\": 424,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-04-29T00:00:00\",\n//         \"userCount\": 1160,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-17T00:00:00\",\n//         \"userCount\": 394,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-08-19T00:00:00\",\n//         \"userCount\": 1552,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-03T00:00:00\",\n//         \"userCount\": 526,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-19T00:00:00\",\n//         \"userCount\": 589,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-07-01T00:00:00\",\n//         \"userCount\": 1285,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-28T00:00:00\",\n//         \"userCount\": 58,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-16T00:00:00\",\n//         \"userCount\": 371,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-08-01T00:00:00\",\n//         \"userCount\": 2867,\n//         \"resultType\": \"monthly\"\n//     },\n//     {\n//         \"day\": \"2024-06-01T00:00:00\",\n//         \"userCount\": 2313,\n//         \"resultType\": \"monthly\"\n//     },\n//     {\n//         \"day\": \"2024-09-04T00:00:00\",\n//         \"userCount\": 394,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-05-20T00:00:00\",\n//         \"userCount\": 1017,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-25T00:00:00\",\n//         \"userCount\": 341,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-18T00:00:00\",\n//         \"userCount\": 356,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-04-01T00:00:00\",\n//         \"userCount\": 1789,\n//         \"resultType\": \"monthly\"\n//     },\n//     {\n//         \"day\": \"2024-09-29T00:00:00\",\n//         \"userCount\": 97,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-08-26T00:00:00\",\n//         \"userCount\": 1340,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-15T00:00:00\",\n//         \"userCount\": 59,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-07-15T00:00:00\",\n//         \"userCount\": 1122,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-07-29T00:00:00\",\n//         \"userCount\": 1558,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-24T00:00:00\",\n//         \"userCount\": 387,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-21T00:00:00\",\n//         \"userCount\": 73,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-06T00:00:00\",\n//         \"userCount\": 282,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-05-13T00:00:00\",\n//         \"userCount\": 1032,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-10-07T00:00:00\",\n//         \"userCount\": 1163,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-07-08T00:00:00\",\n//         \"userCount\": 1196,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-02T00:00:00\",\n//         \"userCount\": 244,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-01T00:00:00\",\n//         \"userCount\": 2850,\n//         \"resultType\": \"monthly\"\n//     },\n//     {\n//         \"day\": \"2024-05-01T00:00:00\",\n//         \"userCount\": 2467,\n//         \"resultType\": \"monthly\"\n//     },\n//     {\n//         \"day\": \"2024-09-13T00:00:00\",\n//         \"userCount\": 307,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-07T00:00:00\",\n//         \"userCount\": 48,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-08T00:00:00\",\n//         \"userCount\": 104,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-04-15T00:00:00\",\n//         \"userCount\": 819,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-05-27T00:00:00\",\n//         \"userCount\": 1109,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-07-01T00:00:00\",\n//         \"userCount\": 3080,\n//         \"resultType\": \"monthly\"\n//     },\n//     {\n//         \"day\": \"2024-09-09T00:00:00\",\n//         \"userCount\": 1247,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-14T00:00:00\",\n//         \"userCount\": 55,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-20T00:00:00\",\n//         \"userCount\": 391,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-01T00:00:00\",\n//         \"userCount\": 91,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-07-22T00:00:00\",\n//         \"userCount\": 1361,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-23T00:00:00\",\n//         \"userCount\": 1293,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-04-22T00:00:00\",\n//         \"userCount\": 1161,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-12T00:00:00\",\n//         \"userCount\": 324,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-30T00:00:00\",\n//         \"userCount\": 1217,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-06-17T00:00:00\",\n//         \"userCount\": 1147,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-10-14T00:00:00\",\n//         \"userCount\": 436,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-06-24T00:00:00\",\n//         \"userCount\": 1306,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-11T00:00:00\",\n//         \"userCount\": 369,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-10T00:00:00\",\n//         \"userCount\": 433,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-08-05T00:00:00\",\n//         \"userCount\": 1202,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-09T00:00:00\",\n//         \"userCount\": 509,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-06-10T00:00:00\",\n//         \"userCount\": 852,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-22T00:00:00\",\n//         \"userCount\": 126,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-26T00:00:00\",\n//         \"userCount\": 306,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-08-12T00:00:00\",\n//         \"userCount\": 1279,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-02T00:00:00\",\n//         \"userCount\": 1266,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-27T00:00:00\",\n//         \"userCount\": 267,\n//         \"resultType\": \"daily\"\n//     },\n//     {\n//         \"day\": \"2024-09-16T00:00:00\",\n//         \"userCount\": 1489,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-06-03T00:00:00\",\n//         \"userCount\": 1004,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-10-01T00:00:00\",\n//         \"userCount\": 1792,\n//         \"resultType\": \"monthly\"\n//     },\n//     {\n//         \"day\": \"2024-05-06T00:00:00\",\n//         \"userCount\": 1112,\n//         \"resultType\": \"weekly\"\n//     },\n//     {\n//         \"day\": \"2024-09-23T00:00:00\",\n//         \"userCount\": 572,\n//         \"resultType\": \"daily\"\n//     }\n// ];\n\n\n\nexport const uniqueUsersCountFilterSelected = (filter) => {\n    //return an action\n    return {\n        type: 'UNIQUE_USERS_COUNT_FILTER_SELECTED',\n        payload: filter\n    };\n};\n\n\n//initial function to get data\nexport const fetchUniqueUserstData = (userToken) => async dispatch => {\n    //start loading spinner, update state to start showwing loading spinner\n    dispatch({ type: 'UNIQUE_USER_COUNTS_IS_LOADING' });\n\n    //API Call to return unique user data\n    let responseData = await getDataCall(userToken);\n\n    let dailyList = responseData.filter(item => item.resultType === \"daily\");\n    let weeklyList = responseData.filter(item => item.resultType === \"weekly\");\n    let monthlyList = responseData.filter(item => item.resultType === \"monthly\");\n\n    // let dailyList = testCountsAll.filter(item => item.resultType === \"daily\");\n    // let weeklyList = testCountsAll.filter(item => item.resultType === \"weekly\");\n    // let monthlyList = testCountsAll.filter(item => item.resultType === \"monthly\");\n\n\n    let allCountsObj = {\n        \"MonthCounts\": monthlyList,\n        \"WeekCounts\": weeklyList,\n        \"DailyCounts\": dailyList\n    }\n\n    //reverse arrays to get them in ascending order\n    // allCountsObj.WeekCounts.reverse();\n    // allCountsObj.MonthCounts.reverse();\n\n    //Keep only the date and remove everything after\n    allCountsObj.DailyCounts = await allCountsObj.DailyCounts.map(obj => ({\n        ...obj,\n        day: obj.day.split('T')[0]\n    }));\n\n    allCountsObj.WeekCounts = await allCountsObj.WeekCounts.map(obj => ({\n        ...obj,\n        day: obj.day.split('T')[0]\n    }));\n\n    allCountsObj.MonthCounts = await allCountsObj.MonthCounts.map(obj => ({\n        ...obj,\n        day: obj.day.split('T')[0]\n    }));\n\n\n    //order all arrays in ascending order using the day attribute\n    allCountsObj.DailyCounts.sort((a, b) => new Date(a.day) - new Date(b.day));\n    allCountsObj.WeekCounts.sort((a, b) => new Date(a.day) - new Date(b.day));\n    allCountsObj.MonthCounts.sort((a, b) => new Date(a.day) - new Date(b.day));\n\n    //keep only last quarter 3 months worth of weeks (12 weeks +1 includes current week)\n    allCountsObj.WeekCounts = allCountsObj.WeekCounts.slice(-13);\n\n    //remove Month first index\n    allCountsObj.MonthCounts.shift();\n\n\n    let uniqueUsersCounts = allCountsObj; //test this\n\n    console.log(\"Unique Users Counts: \", uniqueUsersCounts);\n\n    //call data clean up function\n    // let finalUsersCounts = await cleanUpData(uniqueUsersCounts);\n\n    // console.log(\"Unique Users cleaned Counts: \", finalUsersCounts);\n\n    //update state to send back final clean data to show in bar graph\n    dispatch({ type: 'FETCH_UNIQUE_USERS_COUNTS_DATA', payload: uniqueUsersCounts });\n\n    //update state data to stop showing loading spinner\n    dispatch({ type: 'UNIQUE_USERS_COUNTS_IS_READY' });\n};\n\n//data manipulation to format data from API call\nconst cleanUpData = async (data) => {\n\n    //keep only the month abbreviation for example \"Jan\"\n    data.forEach(obj => {\n        //keep only the abbreviation part\n        const monthAbbreviation = obj.month.split(' ')[0];\n        obj.month = monthAbbreviation;\n\n        //sum up Month, Weekly, and Daily counts to equal total monthly users\n        obj.monthlyUsersCount = (obj.monthlyUsersCount ?? 0) + (obj.weeklyUsersCount ?? 0) + (obj.dailyUsersCount ?? 0);\n    });\n\n    //sort by months ascending to show in bar graph showing later months on the left to current months on the right\n    data.sort((a, b) => new Date(a.dateInstance) - new Date(b.dateInstance));\n\n\n    //return clean data array\n    return data;\n}\n\n\n//API Call to get Unique user counts for past months\nconst getDataCall = async (curToken) => {\n    try {\n\n        // Define the base URL and endpoint\n        const baseUrl = process.env.REACT_APP_BASE_URL + \"/analytics/UniqueUsersCount\";\n\n        // Define headers\n        const headers = {\n            'Authorization': 'Bearer ' + curToken.accessToken,\n        };\n\n        // Define query parameters\n        const params = {\n            platform: 'desktop'\n        };\n\n        // Make GET request \n        const response = await axios.get(baseUrl, {\n            headers: headers,\n            params: params\n        });\n\n        console.log(\"Unique User's Counts API Response:\", response.data);\n        return response.data;\n        //return testCountsAll;\n        //dispatch({ type: 'ANALYTICS_ACCESS', payload: dataObj.analyticsAccess });\n    } catch (error) {\n        // Handle any errors\n        console.log(\"Error getting Unique Users Counts from API:\");\n        return [];\n    }\n}","/*!\n * chartjs-plugin-datalabels v2.2.0\n * https://chartjs-plugin-datalabels.netlify.app\n * (c) 2017-2022 chartjs-plugin-datalabels contributors\n * Released under the MIT license\n */\nimport { isNullOrUndef, merge, toFont, resolve, toPadding, valueOrDefault, callback, isObject, each } from 'chart.js/helpers';\nimport { defaults as defaults$1, ArcElement, PointElement, BarElement } from 'chart.js';\n\nvar devicePixelRatio = (function() {\n  if (typeof window !== 'undefined') {\n    if (window.devicePixelRatio) {\n      return window.devicePixelRatio;\n    }\n\n    // devicePixelRatio is undefined on IE10\n    // https://stackoverflow.com/a/20204180/8837887\n    // https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\n    var screen = window.screen;\n    if (screen) {\n      return (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\n    }\n  }\n\n  return 1;\n}());\n\nvar utils = {\n  // @todo move this in Chart.helpers.toTextLines\n  toTextLines: function(inputs) {\n    var lines = [];\n    var input;\n\n    inputs = [].concat(inputs);\n    while (inputs.length) {\n      input = inputs.pop();\n      if (typeof input === 'string') {\n        lines.unshift.apply(lines, input.split('\\n'));\n      } else if (Array.isArray(input)) {\n        inputs.push.apply(inputs, input);\n      } else if (!isNullOrUndef(inputs)) {\n        lines.unshift('' + input);\n      }\n    }\n\n    return lines;\n  },\n\n  // @todo move this in Chart.helpers.canvas.textSize\n  // @todo cache calls of measureText if font doesn't change?!\n  textSize: function(ctx, lines, font) {\n    var items = [].concat(lines);\n    var ilen = items.length;\n    var prev = ctx.font;\n    var width = 0;\n    var i;\n\n    ctx.font = font.string;\n\n    for (i = 0; i < ilen; ++i) {\n      width = Math.max(ctx.measureText(items[i]).width, width);\n    }\n\n    ctx.font = prev;\n\n    return {\n      height: ilen * font.lineHeight,\n      width: width\n    };\n  },\n\n  /**\n   * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\n   * @todo move this method in Chart.helpers.bound\n   * https://doc.qt.io/qt-5/qtglobal.html#qBound\n   */\n  bound: function(min, value, max) {\n    return Math.max(min, Math.min(value, max));\n  },\n\n  /**\n   * Returns an array of pair [value, state] where state is:\n   * * -1: value is only in a0 (removed)\n   * *  1: value is only in a1 (added)\n   */\n  arrayDiff: function(a0, a1) {\n    var prev = a0.slice();\n    var updates = [];\n    var i, j, ilen, v;\n\n    for (i = 0, ilen = a1.length; i < ilen; ++i) {\n      v = a1[i];\n      j = prev.indexOf(v);\n\n      if (j === -1) {\n        updates.push([v, 1]);\n      } else {\n        prev.splice(j, 1);\n      }\n    }\n\n    for (i = 0, ilen = prev.length; i < ilen; ++i) {\n      updates.push([prev[i], -1]);\n    }\n\n    return updates;\n  },\n\n  /**\n   * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\n   */\n  rasterize: function(v) {\n    return Math.round(v * devicePixelRatio) / devicePixelRatio;\n  }\n};\n\nfunction orient(point, origin) {\n  var x0 = origin.x;\n  var y0 = origin.y;\n\n  if (x0 === null) {\n    return {x: 0, y: -1};\n  }\n  if (y0 === null) {\n    return {x: 1, y: 0};\n  }\n\n  var dx = point.x - x0;\n  var dy = point.y - y0;\n  var ln = Math.sqrt(dx * dx + dy * dy);\n\n  return {\n    x: ln ? dx / ln : 0,\n    y: ln ? dy / ln : -1\n  };\n}\n\nfunction aligned(x, y, vx, vy, align) {\n  switch (align) {\n  case 'center':\n    vx = vy = 0;\n    break;\n  case 'bottom':\n    vx = 0;\n    vy = 1;\n    break;\n  case 'right':\n    vx = 1;\n    vy = 0;\n    break;\n  case 'left':\n    vx = -1;\n    vy = 0;\n    break;\n  case 'top':\n    vx = 0;\n    vy = -1;\n    break;\n  case 'start':\n    vx = -vx;\n    vy = -vy;\n    break;\n  case 'end':\n    // keep natural orientation\n    break;\n  default:\n    // clockwise rotation (in degree)\n    align *= (Math.PI / 180);\n    vx = Math.cos(align);\n    vy = Math.sin(align);\n    break;\n  }\n\n  return {\n    x: x,\n    y: y,\n    vx: vx,\n    vy: vy\n  };\n}\n\n// Line clipping (Cohen–Sutherland algorithm)\n// https://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm\n\nvar R_INSIDE = 0;\nvar R_LEFT = 1;\nvar R_RIGHT = 2;\nvar R_BOTTOM = 4;\nvar R_TOP = 8;\n\nfunction region(x, y, rect) {\n  var res = R_INSIDE;\n\n  if (x < rect.left) {\n    res |= R_LEFT;\n  } else if (x > rect.right) {\n    res |= R_RIGHT;\n  }\n  if (y < rect.top) {\n    res |= R_TOP;\n  } else if (y > rect.bottom) {\n    res |= R_BOTTOM;\n  }\n\n  return res;\n}\n\nfunction clipped(segment, area) {\n  var x0 = segment.x0;\n  var y0 = segment.y0;\n  var x1 = segment.x1;\n  var y1 = segment.y1;\n  var r0 = region(x0, y0, area);\n  var r1 = region(x1, y1, area);\n  var r, x, y;\n\n  // eslint-disable-next-line no-constant-condition\n  while (true) {\n    if (!(r0 | r1) || (r0 & r1)) {\n      // both points inside or on the same side: no clipping\n      break;\n    }\n\n    // at least one point is outside\n    r = r0 || r1;\n\n    if (r & R_TOP) {\n      x = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\n      y = area.top;\n    } else if (r & R_BOTTOM) {\n      x = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\n      y = area.bottom;\n    } else if (r & R_RIGHT) {\n      y = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\n      x = area.right;\n    } else if (r & R_LEFT) {\n      y = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\n      x = area.left;\n    }\n\n    if (r === r0) {\n      x0 = x;\n      y0 = y;\n      r0 = region(x0, y0, area);\n    } else {\n      x1 = x;\n      y1 = y;\n      r1 = region(x1, y1, area);\n    }\n  }\n\n  return {\n    x0: x0,\n    x1: x1,\n    y0: y0,\n    y1: y1\n  };\n}\n\nfunction compute$1(range, config) {\n  var anchor = config.anchor;\n  var segment = range;\n  var x, y;\n\n  if (config.clamp) {\n    segment = clipped(segment, config.area);\n  }\n\n  if (anchor === 'start') {\n    x = segment.x0;\n    y = segment.y0;\n  } else if (anchor === 'end') {\n    x = segment.x1;\n    y = segment.y1;\n  } else {\n    x = (segment.x0 + segment.x1) / 2;\n    y = (segment.y0 + segment.y1) / 2;\n  }\n\n  return aligned(x, y, range.vx, range.vy, config.align);\n}\n\nvar positioners = {\n  arc: function(el, config) {\n    var angle = (el.startAngle + el.endAngle) / 2;\n    var vx = Math.cos(angle);\n    var vy = Math.sin(angle);\n    var r0 = el.innerRadius;\n    var r1 = el.outerRadius;\n\n    return compute$1({\n      x0: el.x + vx * r0,\n      y0: el.y + vy * r0,\n      x1: el.x + vx * r1,\n      y1: el.y + vy * r1,\n      vx: vx,\n      vy: vy\n    }, config);\n  },\n\n  point: function(el, config) {\n    var v = orient(el, config.origin);\n    var rx = v.x * el.options.radius;\n    var ry = v.y * el.options.radius;\n\n    return compute$1({\n      x0: el.x - rx,\n      y0: el.y - ry,\n      x1: el.x + rx,\n      y1: el.y + ry,\n      vx: v.x,\n      vy: v.y\n    }, config);\n  },\n\n  bar: function(el, config) {\n    var v = orient(el, config.origin);\n    var x = el.x;\n    var y = el.y;\n    var sx = 0;\n    var sy = 0;\n\n    if (el.horizontal) {\n      x = Math.min(el.x, el.base);\n      sx = Math.abs(el.base - el.x);\n    } else {\n      y = Math.min(el.y, el.base);\n      sy = Math.abs(el.base - el.y);\n    }\n\n    return compute$1({\n      x0: x,\n      y0: y + sy,\n      x1: x + sx,\n      y1: y,\n      vx: v.x,\n      vy: v.y\n    }, config);\n  },\n\n  fallback: function(el, config) {\n    var v = orient(el, config.origin);\n\n    return compute$1({\n      x0: el.x,\n      y0: el.y,\n      x1: el.x + (el.width || 0),\n      y1: el.y + (el.height || 0),\n      vx: v.x,\n      vy: v.y\n    }, config);\n  }\n};\n\nvar rasterize = utils.rasterize;\n\nfunction boundingRects(model) {\n  var borderWidth = model.borderWidth || 0;\n  var padding = model.padding;\n  var th = model.size.height;\n  var tw = model.size.width;\n  var tx = -tw / 2;\n  var ty = -th / 2;\n\n  return {\n    frame: {\n      x: tx - padding.left - borderWidth,\n      y: ty - padding.top - borderWidth,\n      w: tw + padding.width + borderWidth * 2,\n      h: th + padding.height + borderWidth * 2\n    },\n    text: {\n      x: tx,\n      y: ty,\n      w: tw,\n      h: th\n    }\n  };\n}\n\nfunction getScaleOrigin(el, context) {\n  var scale = context.chart.getDatasetMeta(context.datasetIndex).vScale;\n\n  if (!scale) {\n    return null;\n  }\n\n  if (scale.xCenter !== undefined && scale.yCenter !== undefined) {\n    return {x: scale.xCenter, y: scale.yCenter};\n  }\n\n  var pixel = scale.getBasePixel();\n  return el.horizontal ?\n    {x: pixel, y: null} :\n    {x: null, y: pixel};\n}\n\nfunction getPositioner(el) {\n  if (el instanceof ArcElement) {\n    return positioners.arc;\n  }\n  if (el instanceof PointElement) {\n    return positioners.point;\n  }\n  if (el instanceof BarElement) {\n    return positioners.bar;\n  }\n  return positioners.fallback;\n}\n\nfunction drawRoundedRect(ctx, x, y, w, h, radius) {\n  var HALF_PI = Math.PI / 2;\n\n  if (radius) {\n    var r = Math.min(radius, h / 2, w / 2);\n    var left = x + r;\n    var top = y + r;\n    var right = x + w - r;\n    var bottom = y + h - r;\n\n    ctx.moveTo(x, top);\n    if (left < right && top < bottom) {\n      ctx.arc(left, top, r, -Math.PI, -HALF_PI);\n      ctx.arc(right, top, r, -HALF_PI, 0);\n      ctx.arc(right, bottom, r, 0, HALF_PI);\n      ctx.arc(left, bottom, r, HALF_PI, Math.PI);\n    } else if (left < right) {\n      ctx.moveTo(left, y);\n      ctx.arc(right, top, r, -HALF_PI, HALF_PI);\n      ctx.arc(left, top, r, HALF_PI, Math.PI + HALF_PI);\n    } else if (top < bottom) {\n      ctx.arc(left, top, r, -Math.PI, 0);\n      ctx.arc(left, bottom, r, 0, Math.PI);\n    } else {\n      ctx.arc(left, top, r, -Math.PI, Math.PI);\n    }\n    ctx.closePath();\n    ctx.moveTo(x, y);\n  } else {\n    ctx.rect(x, y, w, h);\n  }\n}\n\nfunction drawFrame(ctx, rect, model) {\n  var bgColor = model.backgroundColor;\n  var borderColor = model.borderColor;\n  var borderWidth = model.borderWidth;\n\n  if (!bgColor && (!borderColor || !borderWidth)) {\n    return;\n  }\n\n  ctx.beginPath();\n\n  drawRoundedRect(\n    ctx,\n    rasterize(rect.x) + borderWidth / 2,\n    rasterize(rect.y) + borderWidth / 2,\n    rasterize(rect.w) - borderWidth,\n    rasterize(rect.h) - borderWidth,\n    model.borderRadius);\n\n  ctx.closePath();\n\n  if (bgColor) {\n    ctx.fillStyle = bgColor;\n    ctx.fill();\n  }\n\n  if (borderColor && borderWidth) {\n    ctx.strokeStyle = borderColor;\n    ctx.lineWidth = borderWidth;\n    ctx.lineJoin = 'miter';\n    ctx.stroke();\n  }\n}\n\nfunction textGeometry(rect, align, font) {\n  var h = font.lineHeight;\n  var w = rect.w;\n  var x = rect.x;\n  var y = rect.y + h / 2;\n\n  if (align === 'center') {\n    x += w / 2;\n  } else if (align === 'end' || align === 'right') {\n    x += w;\n  }\n\n  return {\n    h: h,\n    w: w,\n    x: x,\n    y: y\n  };\n}\n\nfunction drawTextLine(ctx, text, cfg) {\n  var shadow = ctx.shadowBlur;\n  var stroked = cfg.stroked;\n  var x = rasterize(cfg.x);\n  var y = rasterize(cfg.y);\n  var w = rasterize(cfg.w);\n\n  if (stroked) {\n    ctx.strokeText(text, x, y, w);\n  }\n\n  if (cfg.filled) {\n    if (shadow && stroked) {\n      // Prevent drawing shadow on both the text stroke and fill, so\n      // if the text is stroked, remove the shadow for the text fill.\n      ctx.shadowBlur = 0;\n    }\n\n    ctx.fillText(text, x, y, w);\n\n    if (shadow && stroked) {\n      ctx.shadowBlur = shadow;\n    }\n  }\n}\n\nfunction drawText(ctx, lines, rect, model) {\n  var align = model.textAlign;\n  var color = model.color;\n  var filled = !!color;\n  var font = model.font;\n  var ilen = lines.length;\n  var strokeColor = model.textStrokeColor;\n  var strokeWidth = model.textStrokeWidth;\n  var stroked = strokeColor && strokeWidth;\n  var i;\n\n  if (!ilen || (!filled && !stroked)) {\n    return;\n  }\n\n  // Adjust coordinates based on text alignment and line height\n  rect = textGeometry(rect, align, font);\n\n  ctx.font = font.string;\n  ctx.textAlign = align;\n  ctx.textBaseline = 'middle';\n  ctx.shadowBlur = model.textShadowBlur;\n  ctx.shadowColor = model.textShadowColor;\n\n  if (filled) {\n    ctx.fillStyle = color;\n  }\n  if (stroked) {\n    ctx.lineJoin = 'round';\n    ctx.lineWidth = strokeWidth;\n    ctx.strokeStyle = strokeColor;\n  }\n\n  for (i = 0, ilen = lines.length; i < ilen; ++i) {\n    drawTextLine(ctx, lines[i], {\n      stroked: stroked,\n      filled: filled,\n      w: rect.w,\n      x: rect.x,\n      y: rect.y + rect.h * i\n    });\n  }\n}\n\nvar Label = function(config, ctx, el, index) {\n  var me = this;\n\n  me._config = config;\n  me._index = index;\n  me._model = null;\n  me._rects = null;\n  me._ctx = ctx;\n  me._el = el;\n};\n\nmerge(Label.prototype, {\n  /**\n   * @private\n   */\n  _modelize: function(display, lines, config, context) {\n    var me = this;\n    var index = me._index;\n    var font = toFont(resolve([config.font, {}], context, index));\n    var color = resolve([config.color, defaults$1.color], context, index);\n\n    return {\n      align: resolve([config.align, 'center'], context, index),\n      anchor: resolve([config.anchor, 'center'], context, index),\n      area: context.chart.chartArea,\n      backgroundColor: resolve([config.backgroundColor, null], context, index),\n      borderColor: resolve([config.borderColor, null], context, index),\n      borderRadius: resolve([config.borderRadius, 0], context, index),\n      borderWidth: resolve([config.borderWidth, 0], context, index),\n      clamp: resolve([config.clamp, false], context, index),\n      clip: resolve([config.clip, false], context, index),\n      color: color,\n      display: display,\n      font: font,\n      lines: lines,\n      offset: resolve([config.offset, 4], context, index),\n      opacity: resolve([config.opacity, 1], context, index),\n      origin: getScaleOrigin(me._el, context),\n      padding: toPadding(resolve([config.padding, 4], context, index)),\n      positioner: getPositioner(me._el),\n      rotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\n      size: utils.textSize(me._ctx, lines, font),\n      textAlign: resolve([config.textAlign, 'start'], context, index),\n      textShadowBlur: resolve([config.textShadowBlur, 0], context, index),\n      textShadowColor: resolve([config.textShadowColor, color], context, index),\n      textStrokeColor: resolve([config.textStrokeColor, color], context, index),\n      textStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\n    };\n  },\n\n  update: function(context) {\n    var me = this;\n    var model = null;\n    var rects = null;\n    var index = me._index;\n    var config = me._config;\n    var value, label, lines;\n\n    // We first resolve the display option (separately) to avoid computing\n    // other options in case the label is hidden (i.e. display: false).\n    var display = resolve([config.display, true], context, index);\n\n    if (display) {\n      value = context.dataset.data[index];\n      label = valueOrDefault(callback(config.formatter, [value, context]), value);\n      lines = isNullOrUndef(label) ? [] : utils.toTextLines(label);\n\n      if (lines.length) {\n        model = me._modelize(display, lines, config, context);\n        rects = boundingRects(model);\n      }\n    }\n\n    me._model = model;\n    me._rects = rects;\n  },\n\n  geometry: function() {\n    return this._rects ? this._rects.frame : {};\n  },\n\n  rotation: function() {\n    return this._model ? this._model.rotation : 0;\n  },\n\n  visible: function() {\n    return this._model && this._model.opacity;\n  },\n\n  model: function() {\n    return this._model;\n  },\n\n  draw: function(chart, center) {\n    var me = this;\n    var ctx = chart.ctx;\n    var model = me._model;\n    var rects = me._rects;\n    var area;\n\n    if (!this.visible()) {\n      return;\n    }\n\n    ctx.save();\n\n    if (model.clip) {\n      area = model.area;\n      ctx.beginPath();\n      ctx.rect(\n        area.left,\n        area.top,\n        area.right - area.left,\n        area.bottom - area.top);\n      ctx.clip();\n    }\n\n    ctx.globalAlpha = utils.bound(0, model.opacity, 1);\n    ctx.translate(rasterize(center.x), rasterize(center.y));\n    ctx.rotate(model.rotation);\n\n    drawFrame(ctx, rects.frame, model);\n    drawText(ctx, model.lines, rects.text, model);\n\n    ctx.restore();\n  }\n});\n\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;  // eslint-disable-line es/no-number-maxsafeinteger\n\nfunction rotated(point, center, angle) {\n  var cos = Math.cos(angle);\n  var sin = Math.sin(angle);\n  var cx = center.x;\n  var cy = center.y;\n\n  return {\n    x: cx + cos * (point.x - cx) - sin * (point.y - cy),\n    y: cy + sin * (point.x - cx) + cos * (point.y - cy)\n  };\n}\n\nfunction projected(points, axis) {\n  var min = MAX_INTEGER;\n  var max = MIN_INTEGER;\n  var origin = axis.origin;\n  var i, pt, vx, vy, dp;\n\n  for (i = 0; i < points.length; ++i) {\n    pt = points[i];\n    vx = pt.x - origin.x;\n    vy = pt.y - origin.y;\n    dp = axis.vx * vx + axis.vy * vy;\n    min = Math.min(min, dp);\n    max = Math.max(max, dp);\n  }\n\n  return {\n    min: min,\n    max: max\n  };\n}\n\nfunction toAxis(p0, p1) {\n  var vx = p1.x - p0.x;\n  var vy = p1.y - p0.y;\n  var ln = Math.sqrt(vx * vx + vy * vy);\n\n  return {\n    vx: (p1.x - p0.x) / ln,\n    vy: (p1.y - p0.y) / ln,\n    origin: p0,\n    ln: ln\n  };\n}\n\nvar HitBox = function() {\n  this._rotation = 0;\n  this._rect = {\n    x: 0,\n    y: 0,\n    w: 0,\n    h: 0\n  };\n};\n\nmerge(HitBox.prototype, {\n  center: function() {\n    var r = this._rect;\n    return {\n      x: r.x + r.w / 2,\n      y: r.y + r.h / 2\n    };\n  },\n\n  update: function(center, rect, rotation) {\n    this._rotation = rotation;\n    this._rect = {\n      x: rect.x + center.x,\n      y: rect.y + center.y,\n      w: rect.w,\n      h: rect.h\n    };\n  },\n\n  contains: function(point) {\n    var me = this;\n    var margin = 1;\n    var rect = me._rect;\n\n    point = rotated(point, me.center(), -me._rotation);\n\n    return !(point.x < rect.x - margin\n      || point.y < rect.y - margin\n      || point.x > rect.x + rect.w + margin * 2\n      || point.y > rect.y + rect.h + margin * 2);\n  },\n\n  // Separating Axis Theorem\n  // https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\n  intersects: function(other) {\n    var r0 = this._points();\n    var r1 = other._points();\n    var axes = [\n      toAxis(r0[0], r0[1]),\n      toAxis(r0[0], r0[3])\n    ];\n    var i, pr0, pr1;\n\n    if (this._rotation !== other._rotation) {\n      // Only separate with r1 axis if the rotation is different,\n      // else it's enough to separate r0 and r1 with r0 axis only!\n      axes.push(\n        toAxis(r1[0], r1[1]),\n        toAxis(r1[0], r1[3])\n      );\n    }\n\n    for (i = 0; i < axes.length; ++i) {\n      pr0 = projected(r0, axes[i]);\n      pr1 = projected(r1, axes[i]);\n\n      if (pr0.max < pr1.min || pr1.max < pr0.min) {\n        return false;\n      }\n    }\n\n    return true;\n  },\n\n  /**\n   * @private\n   */\n  _points: function() {\n    var me = this;\n    var rect = me._rect;\n    var angle = me._rotation;\n    var center = me.center();\n\n    return [\n      rotated({x: rect.x, y: rect.y}, center, angle),\n      rotated({x: rect.x + rect.w, y: rect.y}, center, angle),\n      rotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\n      rotated({x: rect.x, y: rect.y + rect.h}, center, angle)\n    ];\n  }\n});\n\nfunction coordinates(el, model, geometry) {\n  var point = model.positioner(el, model);\n  var vx = point.vx;\n  var vy = point.vy;\n\n  if (!vx && !vy) {\n    // if aligned center, we don't want to offset the center point\n    return {x: point.x, y: point.y};\n  }\n\n  var w = geometry.w;\n  var h = geometry.h;\n\n  // take in account the label rotation\n  var rotation = model.rotation;\n  var dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\n  var dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\n\n  // scale the unit vector (vx, vy) to get at least dx or dy equal to\n  // w or h respectively (else we would calculate the distance to the\n  // ellipse inscribed in the bounding rect)\n  var vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\n  dx *= vx * vs;\n  dy *= vy * vs;\n\n  // finally, include the explicit offset\n  dx += model.offset * vx;\n  dy += model.offset * vy;\n\n  return {\n    x: point.x + dx,\n    y: point.y + dy\n  };\n}\n\nfunction collide(labels, collider) {\n  var i, j, s0, s1;\n\n  // IMPORTANT Iterate in the reverse order since items at the end of the\n  // list have an higher weight/priority and thus should be less impacted\n  // by the overlapping strategy.\n\n  for (i = labels.length - 1; i >= 0; --i) {\n    s0 = labels[i].$layout;\n\n    for (j = i - 1; j >= 0 && s0._visible; --j) {\n      s1 = labels[j].$layout;\n\n      if (s1._visible && s0._box.intersects(s1._box)) {\n        collider(s0, s1);\n      }\n    }\n  }\n\n  return labels;\n}\n\nfunction compute(labels) {\n  var i, ilen, label, state, geometry, center, proxy;\n\n  // Initialize labels for overlap detection\n  for (i = 0, ilen = labels.length; i < ilen; ++i) {\n    label = labels[i];\n    state = label.$layout;\n\n    if (state._visible) {\n      // Chart.js 3 removed el._model in favor of getProps(), making harder to\n      // abstract reading values in positioners. Also, using string arrays to\n      // read values (i.e. var {a,b,c} = el.getProps([\"a\",\"b\",\"c\"])) would make\n      // positioners inefficient in the normal case (i.e. not the final values)\n      // and the code a bit ugly, so let's use a Proxy instead.\n      proxy = new Proxy(label._el, {get: (el, p) => el.getProps([p], true)[p]});\n\n      geometry = label.geometry();\n      center = coordinates(proxy, label.model(), geometry);\n      state._box.update(center, geometry, label.rotation());\n    }\n  }\n\n  // Auto hide overlapping labels\n  return collide(labels, function(s0, s1) {\n    var h0 = s0._hidable;\n    var h1 = s1._hidable;\n\n    if ((h0 && h1) || h1) {\n      s1._visible = false;\n    } else if (h0) {\n      s0._visible = false;\n    }\n  });\n}\n\nvar layout = {\n  prepare: function(datasets) {\n    var labels = [];\n    var i, j, ilen, jlen, label;\n\n    for (i = 0, ilen = datasets.length; i < ilen; ++i) {\n      for (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\n        label = datasets[i][j];\n        labels.push(label);\n        label.$layout = {\n          _box: new HitBox(),\n          _hidable: false,\n          _visible: true,\n          _set: i,\n          _idx: label._index\n        };\n      }\n    }\n\n    // TODO New `z` option: labels with a higher z-index are drawn\n    // of top of the ones with a lower index. Lowest z-index labels\n    // are also discarded first when hiding overlapping labels.\n    labels.sort(function(a, b) {\n      var sa = a.$layout;\n      var sb = b.$layout;\n\n      return sa._idx === sb._idx\n        ? sb._set - sa._set\n        : sb._idx - sa._idx;\n    });\n\n    this.update(labels);\n\n    return labels;\n  },\n\n  update: function(labels) {\n    var dirty = false;\n    var i, ilen, label, model, state;\n\n    for (i = 0, ilen = labels.length; i < ilen; ++i) {\n      label = labels[i];\n      model = label.model();\n      state = label.$layout;\n      state._hidable = model && model.display === 'auto';\n      state._visible = label.visible();\n      dirty |= state._hidable;\n    }\n\n    if (dirty) {\n      compute(labels);\n    }\n  },\n\n  lookup: function(labels, point) {\n    var i, state;\n\n    // IMPORTANT Iterate in the reverse order since items at the end of\n    // the list have an higher z-index, thus should be picked first.\n\n    for (i = labels.length - 1; i >= 0; --i) {\n      state = labels[i].$layout;\n\n      if (state && state._visible && state._box.contains(point)) {\n        return labels[i];\n      }\n    }\n\n    return null;\n  },\n\n  draw: function(chart, labels) {\n    var i, ilen, label, state, geometry, center;\n\n    for (i = 0, ilen = labels.length; i < ilen; ++i) {\n      label = labels[i];\n      state = label.$layout;\n\n      if (state._visible) {\n        geometry = label.geometry();\n        center = coordinates(label._el, label.model(), geometry);\n        state._box.update(center, geometry, label.rotation());\n        label.draw(chart, center);\n      }\n    }\n  }\n};\n\nvar formatter = function(value) {\n  if (isNullOrUndef(value)) {\n    return null;\n  }\n\n  var label = value;\n  var keys, klen, k;\n  if (isObject(value)) {\n    if (!isNullOrUndef(value.label)) {\n      label = value.label;\n    } else if (!isNullOrUndef(value.r)) {\n      label = value.r;\n    } else {\n      label = '';\n      keys = Object.keys(value);\n      for (k = 0, klen = keys.length; k < klen; ++k) {\n        label += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\n      }\n    }\n  }\n\n  return '' + label;\n};\n\n/**\n * IMPORTANT: make sure to also update tests and TypeScript definition\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\n */\n\nvar defaults = {\n  align: 'center',\n  anchor: 'center',\n  backgroundColor: null,\n  borderColor: null,\n  borderRadius: 0,\n  borderWidth: 0,\n  clamp: false,\n  clip: false,\n  color: undefined,\n  display: true,\n  font: {\n    family: undefined,\n    lineHeight: 1.2,\n    size: undefined,\n    style: undefined,\n    weight: null\n  },\n  formatter: formatter,\n  labels: undefined,\n  listeners: {},\n  offset: 4,\n  opacity: 1,\n  padding: {\n    top: 4,\n    right: 4,\n    bottom: 4,\n    left: 4\n  },\n  rotation: 0,\n  textAlign: 'start',\n  textStrokeColor: undefined,\n  textStrokeWidth: 0,\n  textShadowBlur: 0,\n  textShadowColor: undefined\n};\n\n/**\n * @see https://github.com/chartjs/Chart.js/issues/4176\n */\n\nvar EXPANDO_KEY = '$datalabels';\nvar DEFAULT_KEY = '$default';\n\nfunction configure(dataset, options) {\n  var override = dataset.datalabels;\n  var listeners = {};\n  var configs = [];\n  var labels, keys;\n\n  if (override === false) {\n    return null;\n  }\n  if (override === true) {\n    override = {};\n  }\n\n  options = merge({}, [options, override]);\n  labels = options.labels || {};\n  keys = Object.keys(labels);\n  delete options.labels;\n\n  if (keys.length) {\n    keys.forEach(function(key) {\n      if (labels[key]) {\n        configs.push(merge({}, [\n          options,\n          labels[key],\n          {_key: key}\n        ]));\n      }\n    });\n  } else {\n    // Default label if no \"named\" label defined.\n    configs.push(options);\n  }\n\n  // listeners: {<event-type>: {<label-key>: <fn>}}\n  listeners = configs.reduce(function(target, config) {\n    each(config.listeners || {}, function(fn, event) {\n      target[event] = target[event] || {};\n      target[event][config._key || DEFAULT_KEY] = fn;\n    });\n\n    delete config.listeners;\n    return target;\n  }, {});\n\n  return {\n    labels: configs,\n    listeners: listeners\n  };\n}\n\nfunction dispatchEvent(chart, listeners, label, event) {\n  if (!listeners) {\n    return;\n  }\n\n  var context = label.$context;\n  var groups = label.$groups;\n  var callback$1;\n\n  if (!listeners[groups._set]) {\n    return;\n  }\n\n  callback$1 = listeners[groups._set][groups._key];\n  if (!callback$1) {\n    return;\n  }\n\n  if (callback(callback$1, [context, event]) === true) {\n    // Users are allowed to tweak the given context by injecting values that can be\n    // used in scriptable options to display labels differently based on the current\n    // event (e.g. highlight an hovered label). That's why we update the label with\n    // the output context and schedule a new chart render by setting it dirty.\n    chart[EXPANDO_KEY]._dirty = true;\n    label.update(context);\n  }\n}\n\nfunction dispatchMoveEvents(chart, listeners, previous, label, event) {\n  var enter, leave;\n\n  if (!previous && !label) {\n    return;\n  }\n\n  if (!previous) {\n    enter = true;\n  } else if (!label) {\n    leave = true;\n  } else if (previous !== label) {\n    leave = enter = true;\n  }\n\n  if (leave) {\n    dispatchEvent(chart, listeners.leave, previous, event);\n  }\n  if (enter) {\n    dispatchEvent(chart, listeners.enter, label, event);\n  }\n}\n\nfunction handleMoveEvents(chart, event) {\n  var expando = chart[EXPANDO_KEY];\n  var listeners = expando._listeners;\n  var previous, label;\n\n  if (!listeners.enter && !listeners.leave) {\n    return;\n  }\n\n  if (event.type === 'mousemove') {\n    label = layout.lookup(expando._labels, event);\n  } else if (event.type !== 'mouseout') {\n    return;\n  }\n\n  previous = expando._hovered;\n  expando._hovered = label;\n  dispatchMoveEvents(chart, listeners, previous, label, event);\n}\n\nfunction handleClickEvents(chart, event) {\n  var expando = chart[EXPANDO_KEY];\n  var handlers = expando._listeners.click;\n  var label = handlers && layout.lookup(expando._labels, event);\n  if (label) {\n    dispatchEvent(chart, handlers, label, event);\n  }\n}\n\nvar plugin = {\n  id: 'datalabels',\n\n  defaults: defaults,\n\n  beforeInit: function(chart) {\n    chart[EXPANDO_KEY] = {\n      _actives: []\n    };\n  },\n\n  beforeUpdate: function(chart) {\n    var expando = chart[EXPANDO_KEY];\n    expando._listened = false;\n    expando._listeners = {};     // {<event-type>: {<dataset-index>: {<label-key>: <fn>}}}\n    expando._datasets = [];      // per dataset labels: [Label[]]\n    expando._labels = [];        // layouted labels: Label[]\n  },\n\n  afterDatasetUpdate: function(chart, args, options) {\n    var datasetIndex = args.index;\n    var expando = chart[EXPANDO_KEY];\n    var labels = expando._datasets[datasetIndex] = [];\n    var visible = chart.isDatasetVisible(datasetIndex);\n    var dataset = chart.data.datasets[datasetIndex];\n    var config = configure(dataset, options);\n    var elements = args.meta.data || [];\n    var ctx = chart.ctx;\n    var i, j, ilen, jlen, cfg, key, el, label;\n\n    ctx.save();\n\n    for (i = 0, ilen = elements.length; i < ilen; ++i) {\n      el = elements[i];\n      el[EXPANDO_KEY] = [];\n\n      if (visible && el && chart.getDataVisibility(i) && !el.skip) {\n        for (j = 0, jlen = config.labels.length; j < jlen; ++j) {\n          cfg = config.labels[j];\n          key = cfg._key;\n\n          label = new Label(cfg, ctx, el, i);\n          label.$groups = {\n            _set: datasetIndex,\n            _key: key || DEFAULT_KEY\n          };\n          label.$context = {\n            active: false,\n            chart: chart,\n            dataIndex: i,\n            dataset: dataset,\n            datasetIndex: datasetIndex\n          };\n\n          label.update(label.$context);\n          el[EXPANDO_KEY].push(label);\n          labels.push(label);\n        }\n      }\n    }\n\n    ctx.restore();\n\n    // Store listeners at the chart level and per event type to optimize\n    // cases where no listeners are registered for a specific event.\n    merge(expando._listeners, config.listeners, {\n      merger: function(event, target, source) {\n        target[event] = target[event] || {};\n        target[event][args.index] = source[event];\n        expando._listened = true;\n      }\n    });\n  },\n\n  afterUpdate: function(chart) {\n    chart[EXPANDO_KEY]._labels = layout.prepare(chart[EXPANDO_KEY]._datasets);\n  },\n\n  // Draw labels on top of all dataset elements\n  // https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\n  // https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\n  afterDatasetsDraw: function(chart) {\n    layout.draw(chart, chart[EXPANDO_KEY]._labels);\n  },\n\n  beforeEvent: function(chart, args) {\n    // If there is no listener registered for this chart, `listened` will be false,\n    // meaning we can immediately ignore the incoming event and avoid useless extra\n    // computation for users who don't implement label interactions.\n    if (chart[EXPANDO_KEY]._listened) {\n      var event = args.event;\n      switch (event.type) {\n      case 'mousemove':\n      case 'mouseout':\n        handleMoveEvents(chart, event);\n        break;\n      case 'click':\n        handleClickEvents(chart, event);\n        break;\n      }\n    }\n  },\n\n  afterEvent: function(chart) {\n    var expando = chart[EXPANDO_KEY];\n    var previous = expando._actives;\n    var actives = expando._actives = chart.getActiveElements();\n    var updates = utils.arrayDiff(previous, actives);\n    var i, ilen, j, jlen, update, label, labels;\n\n    for (i = 0, ilen = updates.length; i < ilen; ++i) {\n      update = updates[i];\n      if (update[1]) {\n        labels = update[0].element[EXPANDO_KEY] || [];\n        for (j = 0, jlen = labels.length; j < jlen; ++j) {\n          label = labels[j];\n          label.$context.active = (update[1] === 1);\n          label.update(label.$context);\n        }\n      }\n    }\n\n    if (expando._dirty || updates.length) {\n      layout.update(expando._labels);\n      chart.render();\n    }\n\n    delete expando._dirty;\n  }\n};\n\nexport { plugin as default };\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { fetchUniqueUserstData, uniqueUsersCountFilterSelected } from '../../../actions/analytics/isiAnywhere/uniqueUserCounts';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\nimport { Chart } from 'chart.js';\nimport { useRef } from 'react';\nimport { Bar, getElementsAtEvent } from 'react-chartjs-2';\nimport { withOktaAuth } from '@okta/okta-react';\n\nChart.register(ChartDataLabels);\nclass UniqueUsersCount extends React.Component {\n\n    constructor(props) {\n        super(props);\n\n        this.chartRef = React.createRef();\n    }\n\n    getInitialGraphData = async () => {\n\n        //check if users is authenticated then call Action to get API data\n        if (this.props.authState.isAuthenticated) {\n            let authObj = {};\n            const userInfo = await this.props.oktaAuth.getUser();\n            //console.log(\"USER INFO\", userInfo);\n            authObj.curUserInfo = userInfo;\n            authObj.token = this.props.authState.accessToken;\n            //Action to check if user has analytics access\n            console.log(\"Getting Unique Users counts Data.\");\n            await this.props.fetchUniqueUserstData(authObj.token);\n\n        }\n    }\n\n    componentDidMount() {\n        if (Object.keys(this.props.user).length === 0) {\n            this.getInitialGraphData();\n        }\n    }\n\n\n    onClickBar = (event) => {\n        console.log(\"Clicked the Unique Users Bar Graph\");\n    }\n\n    onClickFilter = async (event) => {\n        console.log(\"Unique User Filter Clicked: \", event.target.innerText);\n        await this.props.uniqueUsersCountFilterSelected(event.target.innerText);\n\n    }\n\n    render() {\n        //console.log(\"TEST ATTA!!!! \", this.props.analytics);\n        let curFilter = this.props.uniqueUserFilter;\n        let curCountsTest = [];\n        let curLabelsTest = [];\n        let curTotalCount = 0;\n        let xAxisName = \"Months\";\n        let secondTitleLine = \"\";\n\n        if (curFilter === \"Daily\" && !this.props.isLoading) {\n\n            //set x axis name\n            xAxisName = \"Days\"\n\n            secondTitleLine = `Total num of Days: ${this.props.analytics.DailyCounts.length}`;\n\n            //find sum of all distinct users for this filter, initialize sum to 0 and add each uniqueUsers to the Sum\n            curTotalCount = this.props.analytics.DailyCounts.reduce((sum, obj) => sum + obj.userCount, 0);\n\n            //set cur counts array to data based on current filter\n            curCountsTest = this.props.analytics.DailyCounts.map(curDay => curDay.userCount);\n            //set labels bases on current filter\n            curLabelsTest = this.props.analytics.DailyCounts.map(curDay => curDay.day);\n            console.log(\"TEST Unique Users data!!! \", curCountsTest, curLabelsTest);\n        }\n        else if (curFilter === \"Weekly\" && !this.props.isLoading) {\n            //set x axis name\n            xAxisName = \"Weeks\"\n            secondTitleLine = `Total num of Weeks: ${this.props.analytics.WeekCounts.length}`;\n\n            //find sum of all distinct users for this filter, initialize sum to 0 and add each uniqueUsers to the Sum\n            curTotalCount = this.props.analytics.WeekCounts.reduce((sum, obj) => sum + obj.userCount, 0);\n\n            curCountsTest = this.props.analytics.WeekCounts.map(curWeek => curWeek.userCount);\n            curLabelsTest = this.props.analytics.WeekCounts.map(curWeek => curWeek.day);\n            console.log(\"TEST Unique Users data!!! \", curCountsTest, curLabelsTest);\n        }\n        else if (curFilter === \"Monthly\" && !this.props.isLoading) {\n            //set x axis name\n            xAxisName = \"Months\"\n            secondTitleLine = `Total num of Months: ${this.props.analytics.MonthCounts.length}`;\n\n            curTotalCount = this.props.analytics.MonthCounts.reduce((sum, obj) => sum + obj.userCount, 0);\n            curCountsTest = this.props.analytics.MonthCounts.map(curMonth => curMonth.userCount);\n            curLabelsTest = this.props.analytics.MonthCounts.map(curMonth => curMonth.day);\n            console.log(\"TEST Unique Users data!!! \", curCountsTest, curLabelsTest);\n        }\n        // const counts = this.props.analytics.approvalTimes30days.map(item => item.count);\n        // const labels = this.props.analytics.approvalTimes30days.map(item => item.label);\n        const curCounts = [\"1000\", \"855\", \"925\", \"1213\"];\n        const curLabels = [\"January\", \"February\", \"March\", \"April\"];\n        //const chartRef = useRef();\n        const data = {\n            options: {\n                legend: {\n                    display: '',\n                },\n            },\n            labels: curLabelsTest,\n            datasets: [\n                {\n                    type: 'bar',\n                    label: 'Unique Users',\n                    data: curCountsTest,\n                    backgroundColor: 'rgba(28,35,186)',\n                    borderColor: 'rgba(28,35,186)',\n                    borderWidth: 1\n                },\n            ]\n        };\n        const chartOptions = {\n            scales: {\n                y: {\n                    title: {\n                        display: true,\n                        text: 'Unique User Count'\n                    }\n                },\n                x: {\n                    title: {\n                        display: true,\n                        text: xAxisName\n                    }\n                }\n            },\n            plugins: {\n                title: {\n                    display: false,\n                    // text: `Total sum of users for current graph: ${curTotalCount}`,\n                    text: [\n                        `Total sum of users for current graph: ${curTotalCount}`,\n                        `${secondTitleLine}`\n                    ],\n                    padding: {\n                        top: 0, // Adjust this value to raise the title higher\n                        bottom: 25\n                    }\n                },\n                legend: {\n                    display: false,\n                },\n                datalabels: {\n                    display: true,\n                    color: 'black',\n                    anchor: 'end',\n                    align: 'top',\n                    padding: {\n                        top: 1,\n                        bottom: 3,\n                    },\n                    formatter: (value) => value,\n                }\n            }\n        }\n\n        return (\n            <div className='card'>\n                <div className='card-header'>\n                    <div class=\"card-head-row\">\n                        <div class=\"card-title\">Unique Users by Click Count</div>\n                        <button class=\"btn btn-link\" id=\"uniqueUserInfo\" data-toggle=\"tooltip\" href=\"#\" data-placement=\"top\" data-html=\"true\" title=\"Daily: unique daily users<br>Weekly: unique weekly users<br>Monthly: unique monthly users\">(i)</button>\n                        <div class=\"card-tools\">\n                            <ul class=\"nav  nav-pills nav-secondary nav-pills-no-bd nav-sm\" id=\"pills-tab\" role=\"tablist\">\n                                {/* <li class=\"nav-item\" style={{ alignContent: \"center\" }}>\n                                    <a>Total Count: {curTotalCount}</a>\n                                </li> */}\n                                <li class=\"nav-item submenu\" onClick={this.onClickFilter}>\n                                    <a class=\"nav-link active intuitive-pill\" data-toggle=\"pill\" id=\"pills-unique-daily\" href=\"#pills-unique-daily\" role=\"tab\" aria-selected=\"false\" >Daily</a>\n                                </li>\n                                <li class=\"nav-item submenu\" onClick={this.onClickFilter}>\n                                    <a class=\"nav-link  show\" data-toggle=\"pill\" id=\"pills-unique-weekly\" href=\"#pills-unique-weekly\" role=\"tab\" aria-selected=\"true\" >Weekly</a>\n                                </li>\n                                <li class=\"nav-item submenu\" onClick={this.onClickFilter}>\n                                    <a class=\"nav-link\" data-toggle=\"pill\" id=\"pills-unique-montly\" href=\"#pills-unique-montly\" role=\"tab\" aria-selected=\"false\">Monthly</a>\n                                </li>\n                            </ul>\n                        </div>\n                    </div>\n                </div>\n                <div className='card-body'>\n                    <div className='chart-container'>\n                        <div>\n                            {\n                                this.props.isLoading ? <div class=\"loader loader-primary\"></div> :\n                                    <Bar\n                                        ref={this.chartRef}\n                                        data={data}\n                                        onClick={this.onClickBar}\n                                        options={chartOptions}\n                                    />\n                            }\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n};\n\nconst mapStateToProps = (state) => {\n    console.log(\"Unique User Graph State:\", state);\n    return { user: state.user, analytics: state.uniqueUserCounts, isLoading: state.uniqueUserCountsIsLoading, uniqueUserFilter: state.selectedUniqueUsersCountsFilter };\n}\n\nexport default connect(mapStateToProps, { fetchUniqueUserstData, uniqueUsersCountFilterSelected })(withOktaAuth(UniqueUsersCount));\n//export default UniqueUserCount","import React from 'react';\nimport AnaltyicsHeader from './AnalyticsHeader';\nimport AppClicksBarGraph from './desktopAnalytics/AppClicksBarGraph';\nimport ActivityBarGraph from './desktopAnalytics/ActivityBarGraph';\nimport AvgCompletionGraph from './allPlatformAnalytics/AvgCompletionGraph';\nimport ActiveUsersList from './desktopAnalytics/ActiveUsersList';\nimport UniqueUserCount from './desktopAnalytics/UniqueUsersCount';\n\nimport '../../styles/analytics.css';\n// import SideBarBs from './SideBarBs';\n// import NotificationListBs from './NotificationListBs';\n// import MiddleHeaderBs from './MiddleHeaderBs';\n// import HeaderFilterBs from './HeaderFilterBs';\n\n\nconst AnalyticsHome = () => {\n\n    // const onClick = (activity, event) => {\n    //     //console.log(\"HTML ELEMENT:\", event);\n    //     console.log(\"Clicked Activity Graph\");\n    // }\n\n    return (\n        <div className=\"wrapper\">\n            <AnaltyicsHeader />\n            <div className='main-panel main-panel-analytics'>\n                <div className='container'>\n                    <div className='page-inner'>\n                        <h4 className='page-title'>All Platforms</h4>\n                        <div className='row'>\n                            <div className='col-md-6'>\n                                <AvgCompletionGraph />\n                            </div>\n                            <div className='col-md-6'>\n                            </div>\n                        </div>\n                        <h4 className='page-title'>Desktop</h4>\n                        <div className='row'>\n                            <div className='col-md-6'>\n                                <ActiveUsersList />\n                            </div>\n                            <div className='col-md-6'>\n                                <UniqueUserCount />\n                            </div>\n                        </div>\n                        <div className='row'>\n                            <div className='col-md-6'>\n                                <div className='card'>\n                                    <div className='card-header'>\n                                        <div className='card-title'>User Clicks Over Time</div>\n                                    </div>\n                                    <div className='card-body'>\n                                        <div className='chart-container'>\n                                            <AppClicksBarGraph />\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <div className='col-md-6'>\n                                <div className='card'>\n                                    <div className='card-header'>\n                                        <div className='card-title'>User Activity Over Time</div>\n                                    </div>\n                                    <div className='card-body'>\n                                        <div className='chart-container'>\n                                            <ActivityBarGraph />\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            {/* <div className='col-md-6'>\n                                <div className='card'></div>\n                            </div>\n                            <div className='col-md-6'>\n                                <div className='card'></div>\n                            </div> */}\n                        </div>\n                    </div>\n                </div>\n            </div>\n            {/* <h1>DashBoard Home</h1> */}\n        </div>\n    );\n}\n\n\nexport default AnalyticsHome;\n\n// const AnalyticsHome = () => {\n\n//     return (\n//         <div className=\"wrapper\">\n//             {/* <PopUpNotification /> */}\n//             <HeaderBs />\n//             <SideBarBs />\n//             <div className=\"main-panel\">\n//                 <div className=\"container\">\n//                     <MiddleHeaderBs />\n//                     <div className=\"page-inner mt--5\">\n//                         <div className=\"row\">\n//                             <div className=\"col-md-12\">\n//                                 <div className=\"card full-height\">\n//                                     <HeaderFilterBs />\n//                                     <NotificationListBs />\n//                                 </div>\n//                             </div>\n//                         </div>\n//                     </div>\n//                 </div>\n//             </div>\n//         </div>\n//     );\n// };","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n  return function (props, propName) {\n    if (props[propName] !== undefined) {\n      if (!props[handler]) {\n        return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n      }\n    }\n  };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n  var propTypes = {};\n  Object.keys(controlledValues).forEach(function (prop) {\n    // add default propTypes for folks that use runtime checks\n    propTypes[defaultKey(prop)] = noop;\n\n    if (process.env.NODE_ENV !== 'production') {\n      var handler = controlledValues[prop];\n      !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n      propTypes[prop] = readOnlyPropType(handler, displayName);\n    }\n  });\n  return propTypes;\n}\nexport function isProp(props, prop) {\n  return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n  return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n  return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n  var wasPropRef = useRef(propValue !== undefined);\n\n  var _useState = useState(defaultValue),\n      stateValue = _useState[0],\n      setState = _useState[1];\n\n  var isProp = propValue !== undefined;\n  var wasProp = wasPropRef.current;\n  wasPropRef.current = isProp;\n  /**\n   * If a prop switches from controlled to Uncontrolled\n   * reset its value to the defaultValue\n   */\n\n  if (!isProp && wasProp && stateValue !== defaultValue) {\n    setState(defaultValue);\n  }\n\n  return [isProp ? propValue : stateValue, useCallback(function (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    if (handler) handler.apply(void 0, [value].concat(args));\n    setState(value);\n  }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n  return Object.keys(config).reduce(function (result, fieldName) {\n    var _extends2;\n\n    var _ref = result,\n        defaultValue = _ref[Utils.defaultKey(fieldName)],\n        propsValue = _ref[fieldName],\n        rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n    var handlerName = config[fieldName];\n\n    var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n        value = _useUncontrolledProp[0],\n        handler = _useUncontrolledProp[1];\n\n    return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n  }, props);\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  }\n  // Binding \"this\" is important for shallow renderer support.\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n      prevProps,\n      prevState\n    );\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (\n    typeof Component.getDerivedStateFromProps !== 'function' &&\n    typeof prototype.getSnapshotBeforeUpdate !== 'function'\n  ) {\n    return Component;\n  }\n\n  // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n  if (\n    foundWillMountName !== null ||\n    foundWillReceivePropsName !== null ||\n    foundWillUpdateName !== null\n  ) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName =\n      typeof Component.getDerivedStateFromProps === 'function'\n        ? 'getDerivedStateFromProps()'\n        : 'getSnapshotBeforeUpdate()';\n\n    throw Error(\n      'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n        componentName +\n        ' uses ' +\n        newApiName +\n        ' but also contains the following legacy lifecycles:' +\n        (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') +\n        (foundWillReceivePropsName !== null\n          ? '\\n  ' + foundWillReceivePropsName\n          : '') +\n        (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') +\n        '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n        'https://fb.me/react-async-component-lifecycle-hooks'\n    );\n  }\n\n  // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  }\n\n  // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error(\n        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n      );\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n      prevProps,\n      prevState,\n      maybeSnapshot\n    ) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag\n        ? this.__reactInternalSnapshot\n        : maybeSnapshot;\n\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\nexport { polyfill };\n","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded befor being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n  var ref = useRef(value);\n  useEffect(function () {\n    ref.current = value;\n  }, [value]);\n  return ref;\n}\n\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n  var ref = useCommittedRef(fn);\n  return useCallback(function () {\n    return ref.current && ref.current.apply(ref, arguments);\n  }, [ref]);\n}","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded befor being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n  var ref = useRef(value);\n  useEffect(function () {\n    ref.current = value;\n  }, [value]);\n  return ref;\n}\n\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n  var ref = useCommittedRef(fn);\n  return useCallback(function () {\n    return ref.current && ref.current.apply(ref, arguments);\n  }, [ref]);\n}","import { useEffect, useLayoutEffect } from 'react';\nvar isReactNative = typeof global !== 'undefined' && // @ts-ignore\nglobal.navigator && // @ts-ignore\nglobal.navigator.product === 'ReactNative';\nvar isDOM = typeof document !== 'undefined';\n/**\n * Is `useLayoutEffect` in a DOM or React Native environment, otherwise resolves to useEffect\n * Only useful to avoid the console warning.\n *\n * PREFER `useEffect` UNLESS YOU KNOW WHAT YOU ARE DOING.\n *\n * @category effects\n */\n\nexport default isDOM || isReactNative ? useLayoutEffect : useEffect;","import { useState } from 'react';\nimport useEffect from './useIsomorphicEffect';\nvar targetMap = new WeakMap();\nvar resizeObserver;\n\nfunction getResizeObserver() {\n  // eslint-disable-next-line no-return-assign\n  return resizeObserver = resizeObserver || new window.ResizeObserver(function (entries) {\n    entries.forEach(function (entry) {\n      var handler = targetMap.get(entry.target);\n      if (handler) handler(entry.contentRect);\n    });\n  });\n}\n/**\n * Efficiently observe size changes on an element. Depends on the `ResizeObserver` api,\n * and polyfills are needed in older browsers.\n *\n * ```ts\n * const [ref, attachRef] = useCallbackRef(null);\n *\n * const rect = useResizeObserver(ref);\n *\n * return (\n *  <div ref={attachRef}>\n *    {JSON.stringify(rect)}\n *  </div>\n * )\n * ```\n *\n * @param element The DOM element to observe\n */\n\n\nexport default function useResizeObserver(element) {\n  var _useState = useState(null),\n      rect = _useState[0],\n      setRect = _useState[1];\n\n  useEffect(function () {\n    if (!element) return;\n    getResizeObserver().observe(element);\n    setRect(element.getBoundingClientRect());\n    targetMap.set(element, function (rect) {\n      setRect(rect);\n    });\n    return function () {\n      targetMap.delete(element);\n    };\n  }, [element]);\n  return rect;\n}","const _excluded = [\"as\", \"disabled\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n  return !href || href.trim() === '#';\n}\nexport function useButtonProps({\n  tagName,\n  disabled,\n  href,\n  target,\n  rel,\n  onClick,\n  tabIndex = 0,\n  type\n}) {\n  if (!tagName) {\n    if (href != null || target != null || rel != null) {\n      tagName = 'a';\n    } else {\n      tagName = 'button';\n    }\n  }\n\n  const meta = {\n    tagName\n  };\n\n  if (tagName === 'button') {\n    return [{\n      type: type || 'button',\n      disabled\n    }, meta];\n  }\n\n  const handleClick = event => {\n    if (disabled || tagName === 'a' && isTrivialHref(href)) {\n      event.preventDefault();\n    }\n\n    if (disabled) {\n      event.stopPropagation();\n      return;\n    }\n\n    onClick == null ? void 0 : onClick(event);\n  };\n\n  const handleKeyDown = event => {\n    if (event.key === ' ') {\n      event.preventDefault();\n      handleClick(event);\n    }\n  };\n\n  return [{\n    role: 'button',\n    // explicitly undefined so that it overrides the props disabled in a spread\n    // e.g. <Tag {...props} {...hookProps} />\n    disabled: undefined,\n    tabIndex: disabled ? undefined : tabIndex,\n    href: tagName === 'a' && disabled ? undefined : href,\n    target: tagName === 'a' ? target : undefined,\n    'aria-disabled': !disabled ? undefined : disabled,\n    rel: tagName === 'a' ? rel : undefined,\n    onClick: handleClick,\n    onKeyDown: handleKeyDown\n  }, meta];\n}\nconst Button = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n  let {\n    as: asProp,\n    disabled\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  const [buttonProps, {\n    tagName: Component\n  }] = useButtonProps(Object.assign({\n    tagName: asProp,\n    disabled\n  }, props));\n  return /*#__PURE__*/_jsx(Component, Object.assign({}, props, buttonProps, {\n    ref: ref\n  }));\n});\nButton.displayName = 'Button';\nexport default Button;","const _excluded = [\"onKeyDown\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n\n/* eslint-disable jsx-a11y/anchor-has-content */\nimport * as React from 'react';\nimport { useEventCallback } from '@restart/hooks';\nimport { useButtonProps } from './Button';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n  return !href || href.trim() === '#';\n}\n\n/**\n * An generic `<a>` component that covers a few A11y cases, ensuring that\n * cases where the `href` is missing or trivial like \"#\" are treated like buttons.\n */\nconst Anchor = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n  let {\n    onKeyDown\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  const [buttonProps] = useButtonProps(Object.assign({\n    tagName: 'a'\n  }, props));\n  const handleKeyDown = useEventCallback(e => {\n    buttonProps.onKeyDown(e);\n    onKeyDown == null ? void 0 : onKeyDown(e);\n  });\n\n  if (isTrivialHref(props.href) && !props.role || props.role === 'button') {\n    return /*#__PURE__*/_jsx(\"a\", Object.assign({\n      ref: ref\n    }, props, buttonProps, {\n      onKeyDown: handleKeyDown\n    }));\n  }\n\n  return /*#__PURE__*/_jsx(\"a\", Object.assign({\n    ref: ref\n  }, props, {\n    onKeyDown: onKeyDown\n  }));\n});\nAnchor.displayName = 'Anchor';\nexport default Anchor;","import * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ThemeContext = /*#__PURE__*/React.createContext({\n  prefixes: {}\n});\nconst {\n  Consumer,\n  Provider\n} = ThemeContext;\n\nfunction ThemeProvider({\n  prefixes = {},\n  dir,\n  children\n}) {\n  const contextValue = useMemo(() => ({\n    prefixes: { ...prefixes\n    },\n    dir\n  }), [prefixes, dir]);\n  return /*#__PURE__*/_jsx(Provider, {\n    value: contextValue,\n    children: children\n  });\n}\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n  const {\n    prefixes\n  } = useContext(ThemeContext);\n  return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\nexport function useIsRTL() {\n  const {\n    dir\n  } = useContext(ThemeContext);\n  return dir === 'rtl';\n}\n\nfunction createBootstrapComponent(Component, opts) {\n  if (typeof opts === 'string') opts = {\n    prefix: opts\n  };\n  const isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n  const {\n    prefix,\n    forwardRefAs = isClassy ? 'ref' : 'innerRef'\n  } = opts;\n  const Wrapped = /*#__PURE__*/React.forwardRef(({ ...props\n  }, ref) => {\n    props[forwardRefAs] = ref;\n    const bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n    return /*#__PURE__*/_jsx(Component, { ...props,\n      bsPrefix: bsPrefix\n    });\n  });\n  Wrapped.displayName = `Bootstrap(${Component.displayName || Component.name})`;\n  return Wrapped;\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","export default {\n  disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 1 },\n *   entered:  { opacity: 1 },\n *   exiting:  { opacity: 0 },\n *   exited:  { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  } // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n  ;\n\n  var _proto = Transition.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      if (nextStatus === ENTERING) {\n        this.performEnter(mounting);\n      } else {\n        this.performExit();\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context ? this.context.isMounting : mounting;\n\n    var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n        maybeNode = _ref2[0],\n        maybeAppearing = _ref2[1];\n\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter || config.disabled) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onEnter(maybeNode, maybeAppearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(maybeNode, maybeAppearing);\n\n      _this2.onTransitionEnd(enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(maybeNode, maybeAppearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit() {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts();\n    var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n    if (!exit || config.disabled) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onExit(maybeNode);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(maybeNode);\n\n      _this3.onTransitionEnd(timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(maybeNode);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n    this.setNextCallback(handler);\n    var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n          maybeNode = _ref3[0],\n          maybeNextCallback = _ref3[1];\n\n      this.props.addEndListener(maybeNode, maybeNextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        _in = _this$props.in,\n        _mountOnEnter = _this$props.mountOnEnter,\n        _unmountOnExit = _this$props.unmountOnExit,\n        _appear = _this$props.appear,\n        _enter = _this$props.enter,\n        _exit = _this$props.exit,\n        _timeout = _this$props.timeout,\n        _addEndListener = _this$props.addEndListener,\n        _onEnter = _this$props.onEnter,\n        _onEntering = _this$props.onEntering,\n        _onEntered = _this$props.onEntered,\n        _onExit = _this$props.onExit,\n        _onExiting = _this$props.onExiting,\n        _onExited = _this$props.onExited,\n        _nodeRef = _this$props.nodeRef,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n    return (\n      /*#__PURE__*/\n      // allows for nested Transitions\n      React.createElement(TransitionGroupContext.Provider, {\n        value: null\n      }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n    );\n  };\n\n  return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A React reference to DOM element that need to transition:\n   * https://stackoverflow.com/a/51127130/4671932\n   *\n   *   - When `nodeRef` prop is used, `node` is not passed to callback functions\n   *      (e.g. `onEnter`) because user already has direct access to the node.\n   *   - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n   *     `nodeRef` need to be provided to `Transition` with changed `key` prop\n   *     (see\n   *     [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n   */\n  nodeRef: PropTypes.shape({\n    current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n      var value = propValue[key];\n      return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n    }\n  }),\n\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * By default the child component does not perform the enter transition when\n   * it first mounts, regardless of the value of `in`. If you want this\n   * behavior, set both `appear` and `in` to `true`.\n   *\n   * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n   * > only adds an additional enter transition. However, in the\n   * > `<CSSTransition>` component that first enter transition does result in\n   * > additional `.appear-*` classes, that way you can choose to style it\n   * > differently.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\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 pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. Timeouts are still used as a fallback if provided.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n  return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n  var doc = ownerDocument(node);\n  return doc && doc.defaultView || window;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n  return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n  return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n  return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n  var css = '';\n  var transforms = '';\n\n  if (typeof property === 'string') {\n    return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n  }\n\n  Object.keys(property).forEach(function (key) {\n    var value = property[key];\n\n    if (!value && value !== 0) {\n      node.style.removeProperty(hyphenate(key));\n    } else if (isTransform(key)) {\n      transforms += key + \"(\" + value + \") \";\n    } else {\n      css += hyphenate(key) + \": \" + value + \";\";\n    }\n  });\n\n  if (transforms) {\n    css += \"transform: \" + transforms + \";\";\n  }\n\n  node.style.cssText += \";\" + css;\n}\n\nexport default style;","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n  var options = {\n    get passive() {\n      return optionsSupported = true;\n    },\n\n    get once() {\n      // eslint-disable-next-line no-multi-assign\n      return onceSupported = optionsSupported = true;\n    }\n\n  };\n\n  if (canUseDOM) {\n    window.addEventListener('test', options, options);\n    window.removeEventListener('test', options, true);\n  }\n} catch (e) {\n  /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n  if (options && typeof options !== 'boolean' && !onceSupported) {\n    var once = options.once,\n        capture = options.capture;\n    var wrappedHandler = handler;\n\n    if (!onceSupported && once) {\n      wrappedHandler = handler.__once || function onceHandler(event) {\n        this.removeEventListener(eventName, onceHandler, capture);\n        handler.call(this, event);\n      };\n\n      handler.__once = wrappedHandler;\n    }\n\n    node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n  }\n\n  node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n  var capture = options && typeof options !== 'boolean' ? options.capture : options;\n  node.removeEventListener(eventName, handler, capture);\n\n  if (handler.__once) {\n    node.removeEventListener(eventName, handler.__once, capture);\n  }\n}\n\nexport default removeEventListener;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n  addEventListener(node, eventName, handler, options);\n  return function () {\n    removeEventListener(node, eventName, handler, options);\n  };\n}\n\nexport default listen;","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n  var str = css(node, 'transitionDuration') || '';\n  var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n  return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n  if (padding === void 0) {\n    padding = 5;\n  }\n\n  var called = false;\n  var handle = setTimeout(function () {\n    if (!called) triggerEvent(element, 'transitionend', true);\n  }, duration + padding);\n  var remove = listen(element, 'transitionend', function () {\n    called = true;\n  }, {\n    once: true\n  });\n  return function () {\n    clearTimeout(handle);\n    remove();\n  };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n  if (duration == null) duration = parseDuration(element) || 0;\n  var removeEmulate = emulateTransitionEnd(element, duration, padding);\n  var remove = listen(element, 'transitionend', handler);\n  return function () {\n    removeEmulate();\n    remove();\n  };\n}","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n  if (bubbles === void 0) {\n    bubbles = false;\n  }\n\n  if (cancelable === void 0) {\n    cancelable = true;\n  }\n\n  if (node) {\n    var event = document.createEvent('HTMLEvents');\n    event.initEvent(eventName, bubbles, cancelable);\n    node.dispatchEvent(event);\n  }\n}","import css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\n\nfunction parseDuration(node, property) {\n  const str = css(node, property) || '';\n  const mult = str.indexOf('ms') === -1 ? 1000 : 1;\n  return parseFloat(str) * mult;\n}\n\nexport default function transitionEndListener(element, handler) {\n  const duration = parseDuration(element, 'transitionDuration');\n  const delay = parseDuration(element, 'transitionDelay');\n  const remove = transitionEnd(element, e => {\n    if (e.target === element) {\n      remove();\n      handler(e);\n    }\n  }, duration + delay);\n}","import { useMemo } from 'react';\n\nvar toFnRef = function toFnRef(ref) {\n  return !ref || typeof ref === 'function' ? ref : function (value) {\n    ref.current = value;\n  };\n};\n\nexport function mergeRefs(refA, refB) {\n  var a = toFnRef(refA);\n  var b = toFnRef(refB);\n  return function (value) {\n    if (a) a(value);\n    if (b) b(value);\n  };\n}\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n *   const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n *   const mergedRef = useMergedRefs(ref, attachRef);\n *\n *   return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\n\nfunction useMergedRefs(refA, refB) {\n  return useMemo(function () {\n    return mergeRefs(refA, refB);\n  }, [refA, refB]);\n}\n\nexport default useMergedRefs;","import React, { useCallback, useRef } from 'react';\nimport Transition from 'react-transition-group/Transition';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport safeFindDOMNode from './safeFindDOMNode';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n// Normalizes Transition callbacks when nodeRef is used.\nconst TransitionWrapper = /*#__PURE__*/React.forwardRef(({\n  onEnter,\n  onEntering,\n  onEntered,\n  onExit,\n  onExiting,\n  onExited,\n  addEndListener,\n  children,\n  childRef,\n  ...props\n}, ref) => {\n  const nodeRef = useRef(null);\n  const mergedRef = useMergedRefs(nodeRef, childRef);\n\n  const attachRef = r => {\n    mergedRef(safeFindDOMNode(r));\n  };\n\n  const normalize = callback => param => {\n    if (callback && nodeRef.current) {\n      callback(nodeRef.current, param);\n    }\n  };\n  /* eslint-disable react-hooks/exhaustive-deps */\n\n\n  const handleEnter = useCallback(normalize(onEnter), [onEnter]);\n  const handleEntering = useCallback(normalize(onEntering), [onEntering]);\n  const handleEntered = useCallback(normalize(onEntered), [onEntered]);\n  const handleExit = useCallback(normalize(onExit), [onExit]);\n  const handleExiting = useCallback(normalize(onExiting), [onExiting]);\n  const handleExited = useCallback(normalize(onExited), [onExited]);\n  const handleAddEndListener = useCallback(normalize(addEndListener), [addEndListener]);\n  /* eslint-enable react-hooks/exhaustive-deps */\n\n  return /*#__PURE__*/_jsx(Transition, {\n    ref: ref,\n    ...props,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    nodeRef: nodeRef,\n    children: typeof children === 'function' ? (status, innerProps) => children(status, { ...innerProps,\n      ref: attachRef\n    }) : /*#__PURE__*/React.cloneElement(children, {\n      ref: attachRef\n    })\n  });\n});\nexport default TransitionWrapper;","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n  if (componentOrElement && 'setState' in componentOrElement) {\n    return ReactDOM.findDOMNode(componentOrElement);\n  }\n\n  return componentOrElement != null ? componentOrElement : null;\n}","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback } from 'react';\nimport { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nimport TransitionWrapper from './TransitionWrapper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n  in: false,\n  timeout: 300,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false\n};\nconst fadeStyles = {\n  [ENTERING]: 'show',\n  [ENTERED]: 'show'\n};\nconst Fade = /*#__PURE__*/React.forwardRef(({\n  className,\n  children,\n  ...props\n}, ref) => {\n  const handleEnter = useCallback((node, isAppearing) => {\n    triggerBrowserReflow(node);\n    props.onEnter == null ? void 0 : props.onEnter(node, isAppearing);\n  }, [props]);\n  return /*#__PURE__*/_jsx(TransitionWrapper, {\n    ref: ref,\n    addEndListener: transitionEndListener,\n    ...props,\n    onEnter: handleEnter,\n    childRef: children.ref,\n    children: (status, innerProps) => /*#__PURE__*/React.cloneElement(children, { ...innerProps,\n      className: classNames('fade', className, children.props.className, fadeStyles[status])\n    })\n  });\n});\nFade.defaultProps = defaultProps;\nFade.displayName = 'Fade';\nexport default Fade;","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n  // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n  node.offsetHeight;\n}","import PropTypes from 'prop-types';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n  'aria-label': PropTypes.string,\n  onClick: PropTypes.func,\n\n  /**\n   * Render different color variant for the button.\n   *\n   * Omitting this will render the default dark color.\n   */\n  variant: PropTypes.oneOf(['white'])\n};\nconst defaultProps = {\n  'aria-label': 'Close'\n};\nconst CloseButton = /*#__PURE__*/React.forwardRef(({\n  className,\n  variant,\n  ...props\n}, ref) => /*#__PURE__*/_jsx(\"button\", {\n  ref: ref,\n  type: \"button\",\n  className: classNames('btn-close', variant && `btn-close-${variant}`, className),\n  ...props\n}));\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nCloseButton.defaultProps = defaultProps;\nexport default CloseButton;","import * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default (className => /*#__PURE__*/React.forwardRef((p, ref) => /*#__PURE__*/_jsx(\"div\", { ...p,\n  ref: ref,\n  className: classNames(p.className, className)\n})));","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n  return string.replace(rHyphen, function (_, chr) {\n    return chr.toUpperCase();\n  });\n}","import classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst pascalCase = str => str[0].toUpperCase() + camelize(str).slice(1);\n\n// TODO: emstricten & fix the typing here! `createWithBsPrefix<TElementType>...`\nexport default function createWithBsPrefix(prefix, {\n  displayName = pascalCase(prefix),\n  Component,\n  defaultProps\n} = {}) {\n  const BsComponent = /*#__PURE__*/React.forwardRef(({\n    className,\n    bsPrefix,\n    as: Tag = Component || 'div',\n    ...props\n  }, ref) => {\n    const resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n    return /*#__PURE__*/_jsx(Tag, {\n      ref: ref,\n      className: classNames(className, resolvedPrefix),\n      ...props\n    });\n  });\n  BsComponent.defaultProps = defaultProps;\n  BsComponent.displayName = displayName;\n  return BsComponent;\n}","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport divWithClassName from './divWithClassName';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nconst AlertHeading = createWithBsPrefix('alert-heading', {\n  Component: DivStyledAsH4\n});\nconst AlertLink = createWithBsPrefix('alert-link', {\n  Component: Anchor\n});\nconst defaultProps = {\n  variant: 'primary',\n  show: true,\n  transition: Fade,\n  closeLabel: 'Close alert'\n};\nconst Alert = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n  const {\n    bsPrefix,\n    show,\n    closeLabel,\n    closeVariant,\n    className,\n    children,\n    variant,\n    onClose,\n    dismissible,\n    transition,\n    ...props\n  } = useUncontrolled(uncontrolledProps, {\n    show: 'onClose'\n  });\n  const prefix = useBootstrapPrefix(bsPrefix, 'alert');\n  const handleClose = useEventCallback(e => {\n    if (onClose) {\n      onClose(false, e);\n    }\n  });\n  const Transition = transition === true ? Fade : transition;\n\n  const alert = /*#__PURE__*/_jsxs(\"div\", {\n    role: \"alert\",\n    ...(!Transition ? props : undefined),\n    ref: ref,\n    className: classNames(className, prefix, variant && `${prefix}-${variant}`, dismissible && `${prefix}-dismissible`),\n    children: [dismissible && /*#__PURE__*/_jsx(CloseButton, {\n      onClick: handleClose,\n      \"aria-label\": closeLabel,\n      variant: closeVariant\n    }), children]\n  });\n\n  if (!Transition) return show ? alert : null;\n  return /*#__PURE__*/_jsx(Transition, {\n    unmountOnExit: true,\n    ...props,\n    ref: undefined,\n    in: show,\n    children: alert\n  });\n});\nAlert.displayName = 'Alert';\nAlert.defaultProps = defaultProps;\nexport default Object.assign(Alert, {\n  Link: AlertLink,\n  Heading: AlertHeading\n});","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useButtonProps } from '@restart/ui/Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n  variant: 'primary',\n  active: false,\n  disabled: false\n};\nconst Button = /*#__PURE__*/React.forwardRef(({\n  as,\n  bsPrefix,\n  variant,\n  size,\n  active,\n  className,\n  ...props\n}, ref) => {\n  const prefix = useBootstrapPrefix(bsPrefix, 'btn');\n  const [buttonProps, {\n    tagName\n  }] = useButtonProps({\n    tagName: as,\n    ...props\n  });\n  const Component = tagName;\n  return /*#__PURE__*/_jsx(Component, { ...props,\n    ...buttonProps,\n    ref: ref,\n    className: classNames(className, prefix, active && 'active', variant && `${prefix}-${variant}`, size && `${prefix}-${size}`, props.href && props.disabled && 'disabled')\n  });\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","import classNames from 'classnames';\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n  /**\n   * Specify whether the feedback is for valid or invalid fields\n   *\n   * @type {('valid'|'invalid')}\n   */\n  type: PropTypes.string,\n\n  /** Display feedback as a tooltip. */\n  tooltip: PropTypes.bool,\n  as: PropTypes.elementType\n};\nconst Feedback = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n  as: Component = 'div',\n  className,\n  type = 'valid',\n  tooltip = false,\n  ...props\n}, ref) => /*#__PURE__*/_jsx(Component, { ...props,\n  ref: ref,\n  className: classNames(className, `${type}-${tooltip ? 'tooltip' : 'feedback'}`)\n}));\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;","import * as React from 'react'; // TODO\n\nconst FormContext = /*#__PURE__*/React.createContext({});\nexport default FormContext;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormCheckInput = /*#__PURE__*/React.forwardRef(({\n  id,\n  bsPrefix,\n  className,\n  type = 'checkbox',\n  isValid = false,\n  isInvalid = false,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'input',\n  ...props\n}, ref) => {\n  const {\n    controlId\n  } = useContext(FormContext);\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-input');\n  return /*#__PURE__*/_jsx(Component, { ...props,\n    ref: ref,\n    type: type,\n    id: id || controlId,\n    className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n  });\n});\nFormCheckInput.displayName = 'FormCheckInput';\nexport default FormCheckInput;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormCheckLabel = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  htmlFor,\n  ...props\n}, ref) => {\n  const {\n    controlId\n  } = useContext(FormContext);\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-label');\n  return /*#__PURE__*/_jsx(\"label\", { ...props,\n    ref: ref,\n    htmlFor: htmlFor || controlId,\n    className: classNames(className, bsPrefix)\n  });\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FormCheck = /*#__PURE__*/React.forwardRef(({\n  id,\n  bsPrefix,\n  bsSwitchPrefix,\n  inline = false,\n  disabled = false,\n  isValid = false,\n  isInvalid = false,\n  feedbackTooltip = false,\n  feedback,\n  className,\n  style,\n  title = '',\n  type = 'checkbox',\n  label,\n  children,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as = 'input',\n  ...props\n}, ref) => {\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check');\n  bsSwitchPrefix = useBootstrapPrefix(bsSwitchPrefix, 'form-switch');\n  const {\n    controlId\n  } = useContext(FormContext);\n  const innerFormContext = useMemo(() => ({\n    controlId: id || controlId\n  }), [controlId, id]);\n  const hasLabel = label != null && label !== false && !children;\n\n  const input = /*#__PURE__*/_jsx(FormCheckInput, { ...props,\n    type: type === 'switch' ? 'checkbox' : type,\n    ref: ref,\n    isValid: isValid,\n    isInvalid: isInvalid,\n    disabled: disabled,\n    as: as\n  });\n\n  return /*#__PURE__*/_jsx(FormContext.Provider, {\n    value: innerFormContext,\n    children: /*#__PURE__*/_jsx(\"div\", {\n      style: style,\n      className: classNames(className, label && bsPrefix, inline && `${bsPrefix}-inline`, type === 'switch' && bsSwitchPrefix),\n      children: children || /*#__PURE__*/_jsxs(_Fragment, {\n        children: [input, hasLabel && /*#__PURE__*/_jsx(FormCheckLabel, {\n          title: title,\n          children: label\n        }), (isValid || isInvalid) && /*#__PURE__*/_jsx(Feedback, {\n          type: isValid ? 'valid' : 'invalid',\n          tooltip: feedbackTooltip,\n          children: feedback\n        })]\n      })\n    })\n  });\n});\nFormCheck.displayName = 'FormCheck';\nexport default Object.assign(FormCheck, {\n  Input: FormCheckInput,\n  Label: FormCheckLabel\n});","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormControl = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  type,\n  size,\n  htmlSize,\n  id,\n  className,\n  isValid = false,\n  isInvalid = false,\n  plaintext,\n  readOnly,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'input',\n  ...props\n}, ref) => {\n  const {\n    controlId\n  } = useContext(FormContext);\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-control');\n  let classes;\n\n  if (plaintext) {\n    classes = {\n      [`${bsPrefix}-plaintext`]: true\n    };\n  } else {\n    classes = {\n      [bsPrefix]: true,\n      [`${bsPrefix}-${size}`]: size\n    };\n  }\n\n  process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n  return /*#__PURE__*/_jsx(Component, { ...props,\n    type: type,\n    size: htmlSize,\n    ref: ref,\n    readOnly: readOnly,\n    id: id || controlId,\n    className: classNames(className, classes, isValid && `is-valid`, isInvalid && `is-invalid`, type === 'color' && `${bsPrefix}-color`)\n  });\n});\nFormControl.displayName = 'FormControl';\nexport default Object.assign(FormControl, {\n  Feedback\n});","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('form-floating');","import * as React from 'react';\nimport { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormGroup = /*#__PURE__*/React.forwardRef(({\n  controlId,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'div',\n  ...props\n}, ref) => {\n  const context = useMemo(() => ({\n    controlId\n  }), [controlId]);\n  return /*#__PURE__*/_jsx(FormContext.Provider, {\n    value: context,\n    children: /*#__PURE__*/_jsx(Component, { ...props,\n      ref: ref\n    })\n  });\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DEVICE_SIZES = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nexport function useCol({\n  as,\n  bsPrefix,\n  className,\n  ...props\n}) {\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'col');\n  const spans = [];\n  const classes = [];\n  DEVICE_SIZES.forEach(brkPoint => {\n    const propValue = props[brkPoint];\n    delete props[brkPoint];\n    let span;\n    let offset;\n    let order;\n\n    if (typeof propValue === 'object' && propValue != null) {\n      ({\n        span = true,\n        offset,\n        order\n      } = propValue);\n    } else {\n      span = propValue;\n    }\n\n    const infix = brkPoint !== 'xs' ? `-${brkPoint}` : '';\n    if (span) spans.push(span === true ? `${bsPrefix}${infix}` : `${bsPrefix}${infix}-${span}`);\n    if (order != null) classes.push(`order${infix}-${order}`);\n    if (offset != null) classes.push(`offset${infix}-${offset}`);\n  });\n  return [{ ...props,\n    className: classNames(className, ...classes, ...spans)\n  }, {\n    as,\n    bsPrefix,\n    spans\n  }];\n}\nconst Col = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n(props, ref) => {\n  const [{\n    className,\n    ...colProps\n  }, {\n    as: Component = 'div',\n    bsPrefix,\n    spans\n  }] = useCol(props);\n  return /*#__PURE__*/_jsx(Component, { ...colProps,\n    ref: ref,\n    className: classNames(className, !spans.length && bsPrefix)\n  });\n});\nCol.displayName = 'Col';\nexport default Col;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n  column: false,\n  visuallyHidden: false\n};\nconst FormLabel = /*#__PURE__*/React.forwardRef(({\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'label',\n  bsPrefix,\n  column,\n  visuallyHidden,\n  className,\n  htmlFor,\n  ...props\n}, ref) => {\n  const {\n    controlId\n  } = useContext(FormContext);\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n  let columnClass = 'col-form-label';\n  if (typeof column === 'string') columnClass = `${columnClass} ${columnClass}-${column}`;\n  const classes = classNames(className, bsPrefix, visuallyHidden && 'visually-hidden', column && columnClass);\n  process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n  htmlFor = htmlFor || controlId;\n  if (column) return /*#__PURE__*/_jsx(Col, {\n    ref: ref,\n    as: \"label\",\n    className: classes,\n    htmlFor: htmlFor,\n    ...props\n  });\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n    _jsx(Component, {\n      ref: ref,\n      className: classes,\n      htmlFor: htmlFor,\n      ...props\n    })\n  );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormRange = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  id,\n  ...props\n}, ref) => {\n  const {\n    controlId\n  } = useContext(FormContext);\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-range');\n  return /*#__PURE__*/_jsx(\"input\", { ...props,\n    type: \"range\",\n    ref: ref,\n    className: classNames(className, bsPrefix),\n    id: id || controlId\n  });\n});\nFormRange.displayName = 'FormRange';\nexport default FormRange;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormSelect = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  size,\n  htmlSize,\n  className,\n  isValid = false,\n  isInvalid = false,\n  id,\n  ...props\n}, ref) => {\n  const {\n    controlId\n  } = useContext(FormContext);\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-select');\n  return /*#__PURE__*/_jsx(\"select\", { ...props,\n    size: htmlSize,\n    ref: ref,\n    className: classNames(className, bsPrefix, size && `${bsPrefix}-${size}`, isValid && `is-valid`, isInvalid && `is-invalid`),\n    id: id || controlId\n  });\n});\nFormSelect.displayName = 'FormSelect';\nexport default FormSelect;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormText = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n  bsPrefix,\n  className,\n  as: Component = 'small',\n  muted,\n  ...props\n}, ref) => {\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n  return /*#__PURE__*/_jsx(Component, { ...props,\n    ref: ref,\n    className: classNames(className, bsPrefix, muted && 'text-muted')\n  });\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import * as React from 'react';\nimport FormCheck from './FormCheck';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Switch = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/_jsx(FormCheck, { ...props,\n  ref: ref,\n  type: \"switch\"\n}));\nSwitch.displayName = 'Switch';\nexport default Object.assign(Switch, {\n  Input: FormCheck.Input,\n  Label: FormCheck.Label\n});","import classNames from 'classnames';\nimport * as React from 'react';\nimport FormGroup from './FormGroup';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FloatingLabel = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  children,\n  controlId,\n  label,\n  ...props\n}, ref) => {\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-floating');\n  return /*#__PURE__*/_jsxs(FormGroup, {\n    ref: ref,\n    className: classNames(className, bsPrefix),\n    controlId: controlId,\n    ...props,\n    children: [children, /*#__PURE__*/_jsx(\"label\", {\n      htmlFor: controlId,\n      children: label\n    })]\n  });\n});\nFloatingLabel.displayName = 'FloatingLabel';\nexport default FloatingLabel;","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport FormCheck from './FormCheck';\nimport FormControl from './FormControl';\nimport FormFloating from './FormFloating';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormRange from './FormRange';\nimport FormSelect from './FormSelect';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport FloatingLabel from './FloatingLabel';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n  /**\n   * The Form `ref` will be forwarded to the underlying element,\n   * which means, unless it's rendered `as` a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: PropTypes.any,\n\n  /**\n   * Mark a form as having been validated. Setting it to `true` will\n   * toggle any validation styles on the forms elements.\n   */\n  validated: PropTypes.bool,\n  as: PropTypes.elementType\n};\nconst Form = /*#__PURE__*/React.forwardRef(({\n  className,\n  validated,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'form',\n  ...props\n}, ref) => /*#__PURE__*/_jsx(Component, { ...props,\n  ref: ref,\n  className: classNames(className, validated && 'was-validated')\n}));\nForm.displayName = 'Form';\nForm.propTypes = propTypes;\nexport default Object.assign(Form, {\n  Group: FormGroup,\n  Control: FormControl,\n  Floating: FormFloating,\n  Check: FormCheck,\n  Switch,\n  Label: FormLabel,\n  Text: FormText,\n  Range: FormRange,\n  Select: FormSelect,\n  FloatingLabel\n});","import * as React from 'react';\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'InputGroupContext';\nexport default context;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormCheckInput from './FormCheckInput';\nimport InputGroupContext from './InputGroupContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst InputGroupText = createWithBsPrefix('input-group-text', {\n  Component: 'span'\n});\n\nconst InputGroupCheckbox = props => /*#__PURE__*/_jsx(InputGroupText, {\n  children: /*#__PURE__*/_jsx(FormCheckInput, {\n    type: \"checkbox\",\n    ...props\n  })\n});\n\nconst InputGroupRadio = props => /*#__PURE__*/_jsx(InputGroupText, {\n  children: /*#__PURE__*/_jsx(FormCheckInput, {\n    type: \"radio\",\n    ...props\n  })\n});\n\n/**\n *\n * @property {InputGroupText} Text\n * @property {InputGroupRadio} Radio\n * @property {InputGroupCheckbox} Checkbox\n */\nconst InputGroup = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  size,\n  hasValidation,\n  className,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'div',\n  ...props\n}, ref) => {\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'input-group'); // Intentionally an empty object. Used in detecting if a dropdown\n  // exists under an input group.\n\n  const contextValue = useMemo(() => ({}), []);\n  return /*#__PURE__*/_jsx(InputGroupContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/_jsx(Component, {\n      ref: ref,\n      ...props,\n      className: classNames(className, bsPrefix, size && `${bsPrefix}-${size}`, hasValidation && 'has-validation')\n    })\n  });\n});\nInputGroup.displayName = 'InputGroup';\nexport default Object.assign(InputGroup, {\n  Text: InputGroupText,\n  Radio: InputGroupRadio,\n  Checkbox: InputGroupCheckbox\n});","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n  if (!size && size !== 0 || recalc) {\n    if (canUseDOM) {\n      var scrollDiv = document.createElement('div');\n      scrollDiv.style.position = 'absolute';\n      scrollDiv.style.top = '-9999px';\n      scrollDiv.style.width = '50px';\n      scrollDiv.style.height = '50px';\n      scrollDiv.style.overflow = 'scroll';\n      document.body.appendChild(scrollDiv);\n      size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n    }\n  }\n\n  return size;\n}","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\n\nexport default function useWillUnmount(fn) {\n  var onUnmount = useUpdatedRef(fn);\n  useEffect(function () {\n    return function () {\n      return onUnmount.current();\n    };\n  }, []);\n}","import { useRef } from 'react';\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\n\nexport default function useUpdatedRef(value) {\n  var valueRef = useRef(value);\n  valueRef.current = value;\n  return valueRef;\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the actively focused element safely.\n *\n * @param doc the document to check\n */\n\nexport default function activeElement(doc) {\n  if (doc === void 0) {\n    doc = ownerDocument();\n  }\n\n  // Support: IE 9 only\n  // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n  try {\n    var active = doc.activeElement; // IE11 returns a seemingly empty object in some cases when accessing\n    // document.activeElement from an <iframe>\n\n    if (!active || !active.nodeName) return null;\n    return active;\n  } catch (e) {\n    /* ie throws if no active element */\n    return doc.body;\n  }\n}","/* eslint-disable no-bitwise, no-cond-assign */\n\n/**\n * Checks if an element contains another given element.\n * \n * @param context the context element\n * @param node the element to check\n */\nexport default function contains(context, node) {\n  // HTML DOM and SVG DOM may have different support levels,\n  // so we need to check on context instead of a document root element.\n  if (context.contains) return context.contains(node);\n  if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\n\nexport default function useWillUnmount(fn) {\n  var onUnmount = useUpdatedRef(fn);\n  useEffect(function () {\n    return function () {\n      return onUnmount.current();\n    };\n  }, []);\n}","import { useRef } from 'react';\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\n\nexport default function useUpdatedRef(value) {\n  var valueRef = useRef(value);\n  valueRef.current = value;\n  return valueRef;\n}","export const ATTRIBUTE_PREFIX = `data-rr-ui-`;\nexport const PROPERTY_PREFIX = `rrUi`;\nexport function dataAttr(property) {\n  return `${ATTRIBUTE_PREFIX}${property}`;\n}\nexport function dataProp(property) {\n  return `${PROPERTY_PREFIX}${property}`;\n}","import css from 'dom-helpers/css';\nimport { dataAttr } from './DataKey';\nimport getBodyScrollbarWidth from './getScrollbarWidth';\nexport const OPEN_DATA_ATTRIBUTE = dataAttr('modal-open');\n/**\n * Manages a stack of Modals as well as ensuring\n * body scrolling is is disabled and padding accounted for\n */\n\nclass ModalManager {\n  constructor({\n    handleContainerOverflow = true,\n    isRTL = false\n  } = {}) {\n    this.handleContainerOverflow = handleContainerOverflow;\n    this.isRTL = isRTL;\n    this.modals = [];\n  }\n\n  getScrollbarWidth() {\n    return getBodyScrollbarWidth();\n  }\n\n  getElement() {\n    return document.body;\n  }\n\n  setModalAttributes(_modal) {// For overriding\n  }\n\n  removeModalAttributes(_modal) {// For overriding\n  }\n\n  setContainerStyle(containerState) {\n    const style = {\n      overflow: 'hidden'\n    }; // we are only interested in the actual `style` here\n    // because we will override it\n\n    const paddingProp = this.isRTL ? 'paddingLeft' : 'paddingRight';\n    const container = this.getElement();\n    containerState.style = {\n      overflow: container.style.overflow,\n      [paddingProp]: container.style[paddingProp]\n    };\n\n    if (containerState.scrollBarWidth) {\n      // use computed style, here to get the real padding\n      // to add our scrollbar width\n      style[paddingProp] = `${parseInt(css(container, paddingProp) || '0', 10) + containerState.scrollBarWidth}px`;\n    }\n\n    container.setAttribute(OPEN_DATA_ATTRIBUTE, '');\n    css(container, style);\n  }\n\n  reset() {\n    [...this.modals].forEach(m => this.remove(m));\n  }\n\n  removeContainerStyle(containerState) {\n    const container = this.getElement();\n    container.removeAttribute(OPEN_DATA_ATTRIBUTE);\n    Object.assign(container.style, containerState.style);\n  }\n\n  add(modal) {\n    let modalIdx = this.modals.indexOf(modal);\n\n    if (modalIdx !== -1) {\n      return modalIdx;\n    }\n\n    modalIdx = this.modals.length;\n    this.modals.push(modal);\n    this.setModalAttributes(modal);\n\n    if (modalIdx !== 0) {\n      return modalIdx;\n    }\n\n    this.state = {\n      scrollBarWidth: this.getScrollbarWidth(),\n      style: {}\n    };\n\n    if (this.handleContainerOverflow) {\n      this.setContainerStyle(this.state);\n    }\n\n    return modalIdx;\n  }\n\n  remove(modal) {\n    const modalIdx = this.modals.indexOf(modal);\n\n    if (modalIdx === -1) {\n      return;\n    }\n\n    this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n    // clean up the container\n\n    if (!this.modals.length && this.handleContainerOverflow) {\n      this.removeContainerStyle(this.state);\n    }\n\n    this.removeModalAttributes(modal);\n  }\n\n  isTopModal(modal) {\n    return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n  }\n\n}\n\nexport default ModalManager;","/**\n * Get the width of the vertical window scrollbar if it's visible\n */\nexport default function getBodyScrollbarWidth() {\n  return Math.abs(window.innerWidth - document.documentElement.clientWidth);\n}","import ownerDocument from 'dom-helpers/ownerDocument';\nimport { useState, useEffect } from 'react';\nexport const resolveContainerRef = ref => {\n  var _ref;\n\n  if (typeof document === 'undefined') return null;\n  if (ref == null) return ownerDocument().body;\n  if (typeof ref === 'function') ref = ref();\n  if (ref && 'current' in ref) ref = ref.current;\n  if ((_ref = ref) != null && _ref.nodeType) return ref || null;\n  return null;\n};\nexport default function useWaitForDOMRef(ref, onResolved) {\n  const [resolvedRef, setRef] = useState(() => resolveContainerRef(ref));\n\n  if (!resolvedRef) {\n    const earlyRef = resolveContainerRef(ref);\n    if (earlyRef) setRef(earlyRef);\n  }\n\n  useEffect(() => {\n    if (onResolved && resolvedRef) {\n      onResolved(resolvedRef);\n    }\n  }, [onResolved, resolvedRef]);\n  useEffect(() => {\n    const nextRef = resolveContainerRef(ref);\n\n    if (nextRef !== resolvedRef) {\n      setRef(nextRef);\n    }\n  }, [ref, resolvedRef]);\n  return resolvedRef;\n}","const _excluded = [\"show\", \"role\", \"className\", \"style\", \"children\", \"backdrop\", \"keyboard\", \"onBackdropClick\", \"onEscapeKeyDown\", \"transition\", \"backdropTransition\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"renderDialog\", \"renderBackdrop\", \"manager\", \"container\", \"onShow\", \"onHide\", \"onExit\", \"onExited\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint-disable @typescript-eslint/no-use-before-define, react/prop-types */\nimport activeElement from 'dom-helpers/activeElement';\nimport contains from 'dom-helpers/contains';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport listen from 'dom-helpers/listen';\nimport { useState, useRef, useCallback, useImperativeHandle, forwardRef, useEffect } from 'react';\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport useMounted from '@restart/hooks/useMounted';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport ModalManager from './ModalManager';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nlet manager;\n\nfunction getManager() {\n  if (!manager) manager = new ModalManager();\n  return manager;\n}\n\nfunction useModalManager(provided) {\n  const modalManager = provided || getManager();\n  const modal = useRef({\n    dialog: null,\n    backdrop: null\n  });\n  return Object.assign(modal.current, {\n    add: () => modalManager.add(modal.current),\n    remove: () => modalManager.remove(modal.current),\n    isTopModal: () => modalManager.isTopModal(modal.current),\n    setDialogRef: useCallback(ref => {\n      modal.current.dialog = ref;\n    }, []),\n    setBackdropRef: useCallback(ref => {\n      modal.current.backdrop = ref;\n    }, [])\n  });\n}\n\nconst Modal = /*#__PURE__*/forwardRef((_ref, ref) => {\n  let {\n    show = false,\n    role = 'dialog',\n    className,\n    style,\n    children,\n    backdrop = true,\n    keyboard = true,\n    onBackdropClick,\n    onEscapeKeyDown,\n    transition,\n    backdropTransition,\n    autoFocus = true,\n    enforceFocus = true,\n    restoreFocus = true,\n    restoreFocusOptions,\n    renderDialog,\n    renderBackdrop = props => /*#__PURE__*/_jsx(\"div\", Object.assign({}, props)),\n    manager: providedManager,\n    container: containerRef,\n    onShow,\n    onHide = () => {},\n    onExit,\n    onExited,\n    onExiting,\n    onEnter,\n    onEntering,\n    onEntered\n  } = _ref,\n      rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  const container = useWaitForDOMRef(containerRef);\n  const modal = useModalManager(providedManager);\n  const isMounted = useMounted();\n  const prevShow = usePrevious(show);\n  const [exited, setExited] = useState(!show);\n  const lastFocusRef = useRef(null);\n  useImperativeHandle(ref, () => modal, [modal]);\n\n  if (canUseDOM && !prevShow && show) {\n    lastFocusRef.current = activeElement();\n  }\n\n  if (!transition && !show && !exited) {\n    setExited(true);\n  } else if (show && exited) {\n    setExited(false);\n  }\n\n  const handleShow = useEventCallback(() => {\n    modal.add();\n    removeKeydownListenerRef.current = listen(document, 'keydown', handleDocumentKeyDown);\n    removeFocusListenerRef.current = listen(document, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n    // and so steals focus from it\n    () => setTimeout(handleEnforceFocus), true);\n\n    if (onShow) {\n      onShow();\n    } // autofocus after onShow to not trigger a focus event for previous\n    // modals before this one is shown.\n\n\n    if (autoFocus) {\n      const currentActiveElement = activeElement(document);\n\n      if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n        lastFocusRef.current = currentActiveElement;\n        modal.dialog.focus();\n      }\n    }\n  });\n  const handleHide = useEventCallback(() => {\n    modal.remove();\n    removeKeydownListenerRef.current == null ? void 0 : removeKeydownListenerRef.current();\n    removeFocusListenerRef.current == null ? void 0 : removeFocusListenerRef.current();\n\n    if (restoreFocus) {\n      var _lastFocusRef$current;\n\n      // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n      (_lastFocusRef$current = lastFocusRef.current) == null ? void 0 : _lastFocusRef$current.focus == null ? void 0 : _lastFocusRef$current.focus(restoreFocusOptions);\n      lastFocusRef.current = null;\n    }\n  }); // TODO: try and combine these effects: https://github.com/react-bootstrap/react-overlays/pull/794#discussion_r409954120\n  // Show logic when:\n  //  - show is `true` _and_ `container` has resolved\n\n  useEffect(() => {\n    if (!show || !container) return;\n    handleShow();\n  }, [show, container,\n  /* should never change: */\n  handleShow]); // Hide cleanup logic when:\n  //  - `exited` switches to true\n  //  - component unmounts;\n\n  useEffect(() => {\n    if (!exited) return;\n    handleHide();\n  }, [exited, handleHide]);\n  useWillUnmount(() => {\n    handleHide();\n  }); // --------------------------------\n\n  const handleEnforceFocus = useEventCallback(() => {\n    if (!enforceFocus || !isMounted() || !modal.isTopModal()) {\n      return;\n    }\n\n    const currentActiveElement = activeElement();\n\n    if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n      modal.dialog.focus();\n    }\n  });\n  const handleBackdropClick = useEventCallback(e => {\n    if (e.target !== e.currentTarget) {\n      return;\n    }\n\n    onBackdropClick == null ? void 0 : onBackdropClick(e);\n\n    if (backdrop === true) {\n      onHide();\n    }\n  });\n  const handleDocumentKeyDown = useEventCallback(e => {\n    if (keyboard && e.keyCode === 27 && modal.isTopModal()) {\n      onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(e);\n\n      if (!e.defaultPrevented) {\n        onHide();\n      }\n    }\n  });\n  const removeFocusListenerRef = useRef();\n  const removeKeydownListenerRef = useRef();\n\n  const handleHidden = (...args) => {\n    setExited(true);\n    onExited == null ? void 0 : onExited(...args);\n  };\n\n  const Transition = transition;\n\n  if (!container || !(show || Transition && !exited)) {\n    return null;\n  }\n\n  const dialogProps = Object.assign({\n    role,\n    ref: modal.setDialogRef,\n    // apparently only works on the dialog role element\n    'aria-modal': role === 'dialog' ? true : undefined\n  }, rest, {\n    style,\n    className,\n    tabIndex: -1\n  });\n  let dialog = renderDialog ? renderDialog(dialogProps) : /*#__PURE__*/_jsx(\"div\", Object.assign({}, dialogProps, {\n    children: /*#__PURE__*/React.cloneElement(children, {\n      role: 'document'\n    })\n  }));\n\n  if (Transition) {\n    dialog = /*#__PURE__*/_jsx(Transition, {\n      appear: true,\n      unmountOnExit: true,\n      in: !!show,\n      onExit: onExit,\n      onExiting: onExiting,\n      onExited: handleHidden,\n      onEnter: onEnter,\n      onEntering: onEntering,\n      onEntered: onEntered,\n      children: dialog\n    });\n  }\n\n  let backdropElement = null;\n\n  if (backdrop) {\n    const BackdropTransition = backdropTransition;\n    backdropElement = renderBackdrop({\n      ref: modal.setBackdropRef,\n      onClick: handleBackdropClick\n    });\n\n    if (BackdropTransition) {\n      backdropElement = /*#__PURE__*/_jsx(BackdropTransition, {\n        appear: true,\n        in: !!show,\n        children: backdropElement\n      });\n    }\n  }\n\n  return /*#__PURE__*/_jsx(_Fragment, {\n    children: /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/_jsxs(_Fragment, {\n      children: [backdropElement, dialog]\n    }), container)\n  });\n});\nModal.displayName = 'Modal';\nexport default Object.assign(Modal, {\n  Manager: ModalManager\n});","import { useRef, useEffect } from 'react';\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n *   fetchdata().then((newData) => {\n *      if (isMounted()) {\n *        setData(newData);\n *      }\n *   })\n * })\n * ```\n */\n\nexport default function useMounted() {\n  var mounted = useRef(true);\n  var isMounted = useRef(function () {\n    return mounted.current;\n  });\n  useEffect(function () {\n    return function () {\n      mounted.current = false;\n    };\n  }, []);\n  return isMounted.current;\n}","import { useEffect, useRef } from 'react';\n/**\n * Store the last of some value. Tracked via a `Ref` only updating it\n * after the component renders.\n *\n * Helpful if you need to compare a prop value to it's previous value during render.\n *\n * ```ts\n * function Component(props) {\n *   const lastProps = usePrevious(props)\n *\n *   if (lastProps.foo !== props.foo)\n *     resetValueFromProps(props.foo)\n * }\n * ```\n *\n * @param value the value to track\n */\n\nexport default function usePrevious(value) {\n  var ref = useRef(null);\n  useEffect(function () {\n    ref.current = value;\n  });\n  return ref.current;\n}","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n  return toArray(element.querySelectorAll(selector));\n}","function replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n  if (element.classList) {\n    element.classList.remove(className);\n  } else if (typeof element.className === 'string') {\n    element.className = replaceClassName(element.className, className);\n  } else {\n    element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n  }\n}","import addClass from 'dom-helpers/addClass';\nimport css from 'dom-helpers/css';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport removeClass from 'dom-helpers/removeClass';\nimport ModalManager from '@restart/ui/ModalManager';\nconst Selector = {\n  FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n  STICKY_CONTENT: '.sticky-top',\n  NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nclass BootstrapModalManager extends ModalManager {\n  adjustAndStore(prop, element, adjust) {\n    const actual = element.style[prop]; // TODO: DOMStringMap and CSSStyleDeclaration aren't strictly compatible\n    // @ts-ignore\n\n    element.dataset[prop] = actual;\n    css(element, {\n      [prop]: `${parseFloat(css(element, prop)) + adjust}px`\n    });\n  }\n\n  restore(prop, element) {\n    const value = element.dataset[prop];\n\n    if (value !== undefined) {\n      delete element.dataset[prop];\n      css(element, {\n        [prop]: value\n      });\n    }\n  }\n\n  setContainerStyle(containerState) {\n    super.setContainerStyle(containerState);\n    const container = this.getElement();\n    addClass(container, 'modal-open');\n    if (!containerState.scrollBarWidth) return;\n    const paddingProp = this.isRTL ? 'paddingLeft' : 'paddingRight';\n    const marginProp = this.isRTL ? 'marginLeft' : 'marginRight';\n    qsa(container, Selector.FIXED_CONTENT).forEach(el => this.adjustAndStore(paddingProp, el, containerState.scrollBarWidth));\n    qsa(container, Selector.STICKY_CONTENT).forEach(el => this.adjustAndStore(marginProp, el, -containerState.scrollBarWidth));\n    qsa(container, Selector.NAVBAR_TOGGLER).forEach(el => this.adjustAndStore(marginProp, el, containerState.scrollBarWidth));\n  }\n\n  removeContainerStyle(containerState) {\n    super.removeContainerStyle(containerState);\n    const container = this.getElement();\n    removeClass(container, 'modal-open');\n    const paddingProp = this.isRTL ? 'paddingLeft' : 'paddingRight';\n    const marginProp = this.isRTL ? 'marginLeft' : 'marginRight';\n    qsa(container, Selector.FIXED_CONTENT).forEach(el => this.restore(paddingProp, el));\n    qsa(container, Selector.STICKY_CONTENT).forEach(el => this.restore(marginProp, el));\n    qsa(container, Selector.NAVBAR_TOGGLER).forEach(el => this.restore(marginProp, el));\n  }\n\n}\n\nlet sharedManager;\nexport function getSharedManager(options) {\n  if (!sharedManager) sharedManager = new BootstrapModalManager(options);\n  return sharedManager;\n}\nexport default BootstrapModalManager;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);\n  return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-body');","import * as React from 'react';\nconst ModalContext = /*#__PURE__*/React.createContext({\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onHide() {}\n\n});\nexport default ModalContext;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ModalDialog = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  contentClassName,\n  centered,\n  size,\n  fullscreen,\n  children,\n  scrollable,\n  ...props\n}, ref) => {\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n  const dialogClass = `${bsPrefix}-dialog`;\n  const fullScreenClass = typeof fullscreen === 'string' ? `${bsPrefix}-fullscreen-${fullscreen}` : `${bsPrefix}-fullscreen`;\n  return /*#__PURE__*/_jsx(\"div\", { ...props,\n    ref: ref,\n    className: classNames(dialogClass, className, size && `${bsPrefix}-${size}`, centered && `${dialogClass}-centered`, scrollable && `${dialogClass}-scrollable`, fullscreen && fullScreenClass),\n    children: /*#__PURE__*/_jsx(\"div\", {\n      className: classNames(`${bsPrefix}-content`, contentClassName),\n      children: children\n    })\n  });\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-footer');","import * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst defaultProps = {\n  closeLabel: 'Close',\n  closeButton: false\n};\nconst AbstractModalHeader = /*#__PURE__*/React.forwardRef(({\n  closeLabel,\n  closeVariant,\n  closeButton,\n  onHide,\n  children,\n  ...props\n}, ref) => {\n  const context = useContext(ModalContext);\n  const handleClick = useEventCallback(() => {\n    context == null ? void 0 : context.onHide();\n    onHide == null ? void 0 : onHide();\n  });\n  return /*#__PURE__*/_jsxs(\"div\", {\n    ref: ref,\n    ...props,\n    children: [children, closeButton && /*#__PURE__*/_jsx(CloseButton, {\n      \"aria-label\": closeLabel,\n      variant: closeVariant,\n      onClick: handleClick\n    })]\n  });\n});\nAbstractModalHeader.defaultProps = defaultProps;\nexport default AbstractModalHeader;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AbstractModalHeader from './AbstractModalHeader';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n  closeLabel: 'Close',\n  closeButton: false\n};\nconst ModalHeader = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  ...props\n}, ref) => {\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n  return /*#__PURE__*/_jsx(AbstractModalHeader, {\n    ref: ref,\n    ...props,\n    className: classNames(className, bsPrefix)\n  });\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nconst DivStyledAsH4 = divWithClassName('h4');\nexport default createWithBsPrefix('modal-title', {\n  Component: DivStyledAsH4\n});","import classNames from 'classnames';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport removeEventListener from 'dom-helpers/removeEventListener';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport * as React from 'react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\nimport BaseModal from '@restart/ui/Modal';\nimport { getSharedManager } from './BootstrapModalManager';\nimport Fade from './Fade';\nimport ModalBody from './ModalBody';\nimport ModalContext from './ModalContext';\nimport ModalDialog from './ModalDialog';\nimport ModalFooter from './ModalFooter';\nimport ModalHeader from './ModalHeader';\nimport ModalTitle from './ModalTitle';\nimport { useBootstrapPrefix, useIsRTL } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n  show: false,\n  backdrop: true,\n  keyboard: true,\n  autoFocus: true,\n  enforceFocus: true,\n  restoreFocus: true,\n  animation: true,\n  dialogAs: ModalDialog\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n  return /*#__PURE__*/_jsx(Fade, { ...props,\n    timeout: null\n  });\n}\n\nfunction BackdropTransition(props) {\n  return /*#__PURE__*/_jsx(Fade, { ...props,\n    timeout: null\n  });\n}\n/* eslint-enable no-use-before-define */\n\n\nconst Modal = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  style,\n  dialogClassName,\n  contentClassName,\n  children,\n  dialogAs: Dialog,\n  'aria-labelledby': ariaLabelledby,\n\n  /* BaseModal props */\n  show,\n  animation,\n  backdrop,\n  keyboard,\n  onEscapeKeyDown,\n  onShow,\n  onHide,\n  container,\n  autoFocus,\n  enforceFocus,\n  restoreFocus,\n  restoreFocusOptions,\n  onEntered,\n  onExit,\n  onExiting,\n  onEnter,\n  onEntering,\n  onExited,\n  backdropClassName,\n  manager: propsManager,\n  ...props\n}, ref) => {\n  const [modalStyle, setStyle] = useState({});\n  const [animateStaticModal, setAnimateStaticModal] = useState(false);\n  const waitingForMouseUpRef = useRef(false);\n  const ignoreBackdropClickRef = useRef(false);\n  const removeStaticModalAnimationRef = useRef(null);\n  const [modal, setModalRef] = useCallbackRef();\n  const mergedRef = useMergedRefs(ref, setModalRef);\n  const handleHide = useEventCallback(onHide);\n  const isRTL = useIsRTL();\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n  const modalContext = useMemo(() => ({\n    onHide: handleHide\n  }), [handleHide]);\n\n  function getModalManager() {\n    if (propsManager) return propsManager;\n    return getSharedManager({\n      isRTL\n    });\n  }\n\n  function updateDialogStyle(node) {\n    if (!canUseDOM) return;\n    const containerIsOverflowing = getModalManager().getScrollbarWidth() > 0;\n    const modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n    setStyle({\n      paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n      paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n    });\n  }\n\n  const handleWindowResize = useEventCallback(() => {\n    if (modal) {\n      updateDialogStyle(modal.dialog);\n    }\n  });\n  useWillUnmount(() => {\n    removeEventListener(window, 'resize', handleWindowResize);\n    removeStaticModalAnimationRef.current == null ? void 0 : removeStaticModalAnimationRef.current();\n  }); // We prevent the modal from closing during a drag by detecting where the\n  // the click originates from. If it starts in the modal and then ends outside\n  // don't close.\n\n  const handleDialogMouseDown = () => {\n    waitingForMouseUpRef.current = true;\n  };\n\n  const handleMouseUp = e => {\n    if (waitingForMouseUpRef.current && modal && e.target === modal.dialog) {\n      ignoreBackdropClickRef.current = true;\n    }\n\n    waitingForMouseUpRef.current = false;\n  };\n\n  const handleStaticModalAnimation = () => {\n    setAnimateStaticModal(true);\n    removeStaticModalAnimationRef.current = transitionEnd(modal.dialog, () => {\n      setAnimateStaticModal(false);\n    });\n  };\n\n  const handleStaticBackdropClick = e => {\n    if (e.target !== e.currentTarget) {\n      return;\n    }\n\n    handleStaticModalAnimation();\n  };\n\n  const handleClick = e => {\n    if (backdrop === 'static') {\n      handleStaticBackdropClick(e);\n      return;\n    }\n\n    if (ignoreBackdropClickRef.current || e.target !== e.currentTarget) {\n      ignoreBackdropClickRef.current = false;\n      return;\n    }\n\n    onHide == null ? void 0 : onHide();\n  };\n\n  const handleEscapeKeyDown = e => {\n    if (!keyboard && backdrop === 'static') {\n      // Call preventDefault to stop modal from closing in restart ui,\n      // then play our animation.\n      e.preventDefault();\n      handleStaticModalAnimation();\n    } else if (keyboard && onEscapeKeyDown) {\n      onEscapeKeyDown(e);\n    }\n  };\n\n  const handleEnter = (node, isAppearing) => {\n    if (node) {\n      node.style.display = 'block';\n      updateDialogStyle(node);\n    }\n\n    onEnter == null ? void 0 : onEnter(node, isAppearing);\n  };\n\n  const handleExit = node => {\n    removeStaticModalAnimationRef.current == null ? void 0 : removeStaticModalAnimationRef.current();\n    onExit == null ? void 0 : onExit(node);\n  };\n\n  const handleEntering = (node, isAppearing) => {\n    onEntering == null ? void 0 : onEntering(node, isAppearing); // FIXME: This should work even when animation is disabled.\n\n    addEventListener(window, 'resize', handleWindowResize);\n  };\n\n  const handleExited = node => {\n    if (node) node.style.display = ''; // RHL removes it sometimes\n\n    onExited == null ? void 0 : onExited(node); // FIXME: This should work even when animation is disabled.\n\n    removeEventListener(window, 'resize', handleWindowResize);\n  };\n\n  const renderBackdrop = useCallback(backdropProps => /*#__PURE__*/_jsx(\"div\", { ...backdropProps,\n    className: classNames(`${bsPrefix}-backdrop`, backdropClassName, !animation && 'show')\n  }), [animation, backdropClassName, bsPrefix]);\n  const baseModalStyle = { ...style,\n    ...modalStyle\n  }; // Sets `display` always block when `animation` is false\n\n  if (!animation) {\n    baseModalStyle.display = 'block';\n  }\n\n  const renderDialog = dialogProps => /*#__PURE__*/_jsx(\"div\", {\n    role: \"dialog\",\n    ...dialogProps,\n    style: baseModalStyle,\n    className: classNames(className, bsPrefix, animateStaticModal && `${bsPrefix}-static`),\n    onClick: backdrop ? handleClick : undefined,\n    onMouseUp: handleMouseUp,\n    \"aria-labelledby\": ariaLabelledby,\n    children: /*#__PURE__*/_jsx(Dialog, { ...props,\n      onMouseDown: handleDialogMouseDown,\n      className: dialogClassName,\n      contentClassName: contentClassName,\n      children: children\n    })\n  });\n\n  return /*#__PURE__*/_jsx(ModalContext.Provider, {\n    value: modalContext,\n    children: /*#__PURE__*/_jsx(BaseModal, {\n      show: show,\n      ref: mergedRef,\n      backdrop: backdrop,\n      container: container,\n      keyboard: true // Always set true - see handleEscapeKeyDown\n      ,\n      autoFocus: autoFocus,\n      enforceFocus: enforceFocus,\n      restoreFocus: restoreFocus,\n      restoreFocusOptions: restoreFocusOptions,\n      onEscapeKeyDown: handleEscapeKeyDown,\n      onShow: onShow,\n      onHide: onHide,\n      onEnter: handleEnter,\n      onEntering: handleEntering,\n      onEntered: onEntered,\n      onExit: handleExit,\n      onExiting: onExiting,\n      onExited: handleExited,\n      manager: getModalManager(),\n      transition: animation ? DialogTransition : undefined,\n      backdropTransition: animation ? BackdropTransition : undefined,\n      renderBackdrop: renderBackdrop,\n      renderDialog: renderDialog\n    })\n  });\n});\nModal.displayName = 'Modal';\nModal.defaultProps = defaultProps;\nexport default Object.assign(Modal, {\n  Body: ModalBody,\n  Header: ModalHeader,\n  Title: ModalTitle,\n  Footer: ModalFooter,\n  Dialog: ModalDialog,\n  TRANSITION_DURATION: 300,\n  BACKDROP_TRANSITION_DURATION: 150\n});","import { useState } from 'react';\n/**\n * A convenience hook around `useState` designed to be paired with\n * the component [callback ref](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) api.\n * Callback refs are useful over `useRef()` when you need to respond to the ref being set\n * instead of lazily accessing it in an effect.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef<HTMLDivElement>()\n *\n * useEffect(() => {\n *   if (!element) return\n *\n *   const calendar = new FullCalendar.Calendar(element)\n *\n *   return () => {\n *     calendar.destroy()\n *   }\n * }, [element])\n *\n * return <div ref={attachRef} />\n * ```\n *\n * @category refs\n */\n\nexport default function useCallbackRef() {\n  return useState(null);\n}","import React, { useState } from 'react';\n\nconst SearchInput = ({ onSearch }) => {\n    const [searchTerm, setSearchTerm] = useState('');\n\n    const handleInputChange = (e) => {\n        setSearchTerm(e.target.value);\n        onSearch && onSearch(e.target.value);\n    };\n\n    const handleSearch = () => {\n        onSearch && onSearch(searchTerm);\n    };\n\n    const handleClear = () => {\n        setSearchTerm('');\n        onSearch && onSearch('');\n    };\n\n    return (<>\n        <div className=\"row\">\n            <div className=\"col-md-12\">\n                <div className=\"form-group\">\n                    <div className=\"input-icon\">\n                        <span className=\"input-icon-addon\" onClick={handleSearch}>\n                            <i className=\"fa fa-search\"></i>\n                        </span>\n                        <input type=\"text\" className=\"form-control\" value={searchTerm}\n                            onChange={handleInputChange}\n                            placeholder=\"Search...\" />\n                        {searchTerm && (\n                            <span className=\"input-icon-addon\" onClick={handleClear}>\n                                <i className=\"fa fa-times\"></i>\n                            </span>\n                        )}\n                    </div>\n                </div>\n            </div>\n        </div>\n    </>\n\n    );\n};\n\nexport default SearchInput;","import React, { Component } from 'react';\n\nclass UserExceptionGrid extends Component {\n  render() {\n    const { items, onDelete, onAdd } = this.props;\n    return (<div className=\"table-responsive\">\n      <table className=\"table table-hover\">\n        <thead>\n        <tr>\n          <th scope=\"col\" style={{ width: '90%' }}>Email</th>\n          <th scope=\"col\">\n            <button className=\"btn  btn-light\" onClick={onAdd}><i\n              className=\"fas fa-plus-circle text-black\"></i>\n            </button>\n          </th>\n        </tr>\n        </thead>\n        <tbody>\n        {items.map(m => (<tr key={m.id}>\n          <td scope=\"col\">{m.email}</td>\n          <td scope=\"col\">\n            <button className=\"btn  btn-light\" onClick={() => onDelete(m.id)}><i\n              className=\"fas fa-trash text-black\"></i></button>\n          </td>\n        </tr>))}\n        </tbody>\n      </table>\n    </div>);\n  }\n}\n\nexport default UserExceptionGrid;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n  fluid: false\n};\nconst Container = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  fluid,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'div',\n  className,\n  ...props\n}, ref) => {\n  const prefix = useBootstrapPrefix(bsPrefix, 'container');\n  const suffix = typeof fluid === 'string' ? `-${fluid}` : '-fluid';\n  return /*#__PURE__*/_jsx(Component, {\n    ref: ref,\n    ...props,\n    className: classNames(className, fluid ? `${prefix}${suffix}` : prefix)\n  });\n});\nContainer.displayName = 'Container';\nContainer.defaultProps = defaultProps;\nexport default Container;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DEVICE_SIZES = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nconst Row = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'div',\n  ...props\n}, ref) => {\n  const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n  const sizePrefix = `${decoratedBsPrefix}-cols`;\n  const classes = [];\n  DEVICE_SIZES.forEach(brkPoint => {\n    const propValue = props[brkPoint];\n    delete props[brkPoint];\n    let cols;\n\n    if (propValue != null && typeof propValue === 'object') {\n      ({\n        cols\n      } = propValue);\n    } else {\n      cols = propValue;\n    }\n\n    const infix = brkPoint !== 'xs' ? `-${brkPoint}` : '';\n    if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n  });\n  return /*#__PURE__*/_jsx(Component, {\n    ref: ref,\n    ...props,\n    className: classNames(className, decoratedBsPrefix, ...classes)\n  });\n});\nRow.displayName = 'Row';\nexport default Row;","/* eslint-disable react/no-multi-comp */\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Anchor from '@restart/ui/Anchor';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst defaultProps = {\n  active: false,\n  disabled: false,\n  activeLabel: '(current)'\n};\nconst PageItem = /*#__PURE__*/React.forwardRef(({\n  active,\n  disabled,\n  className,\n  style,\n  activeLabel,\n  children,\n  ...props\n}, ref) => {\n  const Component = active || disabled ? 'span' : Anchor;\n  return /*#__PURE__*/_jsx(\"li\", {\n    ref: ref,\n    style: style,\n    className: classNames(className, 'page-item', {\n      active,\n      disabled\n    }),\n    children: /*#__PURE__*/_jsxs(Component, {\n      className: \"page-link\",\n      disabled: disabled,\n      ...props,\n      children: [children, active && activeLabel && /*#__PURE__*/_jsx(\"span\", {\n        className: \"visually-hidden\",\n        children: activeLabel\n      })]\n    })\n  });\n});\nPageItem.defaultProps = defaultProps;\nPageItem.displayName = 'PageItem';\nexport default PageItem;\n\nfunction createButton(name, defaultValue, label = name) {\n  function Button({\n    children,\n    ...props\n  }) {\n    return /*#__PURE__*/_jsxs(PageItem, { ...props,\n      children: [/*#__PURE__*/_jsx(\"span\", {\n        \"aria-hidden\": \"true\",\n        children: children || defaultValue\n      }), /*#__PURE__*/_jsx(\"span\", {\n        className: \"visually-hidden\",\n        children: label\n      })]\n    });\n  }\n\n  Button.displayName = name;\n  return Button;\n}\n\nexport const First = createButton('First', '«');\nexport const Prev = createButton('Prev', '‹', 'Previous');\nexport const Ellipsis = createButton('Ellipsis', '…', 'More');\nexport const Next = createButton('Next', '›');\nexport const Last = createButton('Last', '»');","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport PageItem, { Ellipsis, First, Last, Next, Prev } from './PageItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n * @property {PageItem} Item\n * @property {PageItem} First\n * @property {PageItem} Prev\n * @property {PageItem} Ellipsis\n * @property {PageItem} Next\n * @property {PageItem} Last\n */\nconst Pagination = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  size,\n  ...props\n}, ref) => {\n  const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'pagination');\n  return /*#__PURE__*/_jsx(\"ul\", {\n    ref: ref,\n    ...props,\n    className: classNames(className, decoratedBsPrefix, size && `${decoratedBsPrefix}-${size}`)\n  });\n});\nPagination.displayName = 'Pagination';\nexport default Object.assign(Pagination, {\n  First,\n  Prev,\n  Ellipsis,\n  Item: PageItem,\n  Next,\n  Last\n});","import React, { useEffect, useState } from 'react';\nimport { Col, Container, Pagination, Row } from 'react-bootstrap';\n\nexport const BPagination = ({\n                                itemsPerPage = 10, totalItems = 0, paginate = (current) => current, currentPage = 1,\n                            }) => {\n\n    const [maxPage, setMaxPage] = useState(0);\n\n\n    useEffect(() => {\n        setMaxPage(Math.ceil(totalItems / itemsPerPage));\n        console.log(totalItems, itemsPerPage);\n    }, [totalItems, itemsPerPage]);\n\n    const handlePrevPage = (pageNumber) => {\n        paginate(pageNumber);\n    };\n\n    const handleNextPage = (pageNumber) => {\n        paginate(pageNumber);\n    };\n\n    return (maxPage > 1 ? <Container><Row>\n        <Col>\n            <span className=\"align-middle float-right py-2\"> Page {currentPage} of {maxPage}</span>\n        </Col>\n        <Col lg={6} xs>\n            <Pagination className=\"float-right\">\n                <Pagination.Item disabled={currentPage <= 1} onClick={() => handlePrevPage(currentPage - 1)}><i\n                    className={currentPage > 1 ? 'fas fa-chevron-left' : 'fas fa-chevron-left text-muted'} /></Pagination.Item>\n                <Pagination.Item disabled={currentPage >= maxPage} onClick={() => handleNextPage(currentPage + 1)}><i\n                    className=\"fas fa-chevron-right\" /></Pagination.Item>\n            </Pagination>\n        </Col>\n    </Row></Container> : <></>);\n};\n","import { css } from '@emotion/react';\n\nexport const LoadingStyle = css`\n    display: block;\n    margin: 0 auto;\n    border-color: red;\n`;\n ","import axios from '../../apis/approvalsApi';\n\nexport const FETCH_USER_EXCEPTION_REQUEST = 'FETCH_USER_EXCEPTION_REQUEST';\nexport const FETCH_USER_EXCEPTION_SUCCESS = 'FETCH_USER_EXCEPTION_SUCCESS';\nexport const FETCH_USER_EXCEPTION_FAILURE = 'FETCH_USER_EXCEPTION_FAILURE';\n\nexport const DELETE_USER_EXCEPTION_REQUEST = 'DELETE_USER_EXCEPTION_REQUEST';\nexport const DELETE_USER_EXCEPTION_SUCCESS = 'DELETE_USER_EXCEPTION_SUCCESS';\nexport const DELETE_USER_EXCEPTION_FAILURE = 'DELETE_USER_EXCEPTION_FAILURE';\n\nexport const ADD_USER_EXCEPTION_REQUEST = 'ADD_USER_EXCEPTION_REQUEST';\nexport const ADD_USER_EXCEPTION_SUCCESS = 'ADD_USER_EXCEPTION_SUCCESS';\nexport const ADD_USER_EXCEPTION_FAILURE = 'ADD_USER_EXCEPTION_FAILURE';\n\n\nexport const UPDATE_MSG_ADD = 'UPDATE_MSG_ADD';\n\nexport const fetchUserExceptionDataRequest = () => ({\n    type: FETCH_USER_EXCEPTION_REQUEST,\n});\n\nexport const fetchUserExceptionSuccess = (data) => ({\n    type: FETCH_USER_EXCEPTION_SUCCESS, payload: data,\n});\n\nexport const fetchUserExceptionFailure = (error) => ({\n    type: FETCH_USER_EXCEPTION_FAILURE, payload: error,\n});\n\n\nexport const deleteUserExceptionDataRequest = () => ({\n    type: DELETE_USER_EXCEPTION_REQUEST,\n});\n\nexport const deleteUserExceptionSuccess = (data) => ({\n    type: DELETE_USER_EXCEPTION_SUCCESS, payload: data,\n});\n\nexport const deleteUserExceptionFailure = (error) => ({\n    type: DELETE_USER_EXCEPTION_FAILURE, payload: error,\n});\n\n\nexport const addUserExceptionDataRequest = () => ({\n    type: ADD_USER_EXCEPTION_REQUEST,\n});\n\nexport const addUserExceptionSuccess = (data) => ({\n    type: ADD_USER_EXCEPTION_SUCCESS, payload: data,\n});\n\nexport const addUserExceptionFailure = (error) => ({\n    type: ADD_USER_EXCEPTION_FAILURE, payload: error,\n});\n\nexport const updateMsgAdd = (msg) => ({\n    type: UPDATE_MSG_ADD, payload: msg,\n});\n\nexport const fetchUserExceptionData = (jwt) => async (dispatch) => {\n    try {\n        dispatch(fetchUserExceptionDataRequest());\n        const headers = {\n            'Authorization': 'Bearer ' + jwt,\n        };\n\n        // Make GET request\n        const response = await axios.get('/ZoomLicense/UserException', { headers: headers });\n        console.log(response);\n        dispatch(fetchUserExceptionSuccess(response.data));\n    } catch (ex) {\n        dispatch(fetchUserExceptionFailure(ex.response?.data || ex.message));\n    }\n};\n\n/**\n * Action creator for deleting a user exception.\n * @param {Object} params - Parameters for the action.\n * @param {string} params.userId - The ID of the user exception to be deleted.\n * @param {string} params.jwt - JSON Web Token for authentication.\n * @returns {Function} - Async function dispatching actions based on the API response.\n */\nexport const deleteUserException = ({ userId, jwt }) => async (dispatch) => {\n    try {\n        // Dispatch the action to indicate that the request is in progress.\n        dispatch(deleteUserExceptionDataRequest());\n\n        // Set up the headers for the request, including the JWT for authentication.\n        const headers = {\n            'Authorization': 'Bearer ' + jwt,\n        };\n\n        // Make a DELETE request to the API endpoint for deleting a user exception.\n        const response = await axios.delete('/ZoomLicense/UserException/' + userId, { headers: headers });\n\n        // Log the response for debugging purposes.\n        console.log(response);\n\n        // Check the status code of the response and dispatch corresponding actions.\n        if (response.status === 200) {\n            dispatch(deleteUserExceptionSuccess(userId));\n        } else {\n            dispatch(deleteUserExceptionFailure(response.statusText));\n        }\n    } catch (ex) {\n        // If an exception occurs during the request, dispatch an action with the error information.\n        dispatch(deleteUserExceptionFailure(ex.response?.data || ex.message));\n    }\n};\n\n/**\n * Action creator for adding a user exception.\n * @param {Object} params - Parameters for the action.\n * @param {string} params.userId - The ID of the user to be added as an exception.\n * @param {string} params.jwt - JSON Web Token for authentication.\n * @returns {Function} - Async function dispatching actions based on the API response.\n */\nexport const addUserException = ({ userId, jwt }) => async (dispatch) => {\n    try {\n        // Dispatch the action to indicate that the request is in progress.\n        dispatch(addUserExceptionDataRequest());\n\n        // Set up the headers for the request, including the JWT for authentication.\n        const headers = {\n            'Authorization': 'Bearer ' + jwt,\n        };\n\n        // Make a POST request to the API endpoint for adding a user exception.\n        const response = await axios.post('/ZoomLicense/UserException', { userId }, { headers: headers });\n\n        // Log the response for debugging purposes.\n        console.log(response);\n\n        // Dispatch an action with the data from the response to indicate success.\n        dispatch(addUserExceptionSuccess(response.data));\n    } catch (ex) {\n        // If an exception occurs during the request, dispatch an action with the error information.\n        dispatch(addUserExceptionFailure(ex.response?.data || ex.message));\n    }\n};\n\nexport const updateAddErrorMsg = (msg) => (dispatch) => {\n    dispatch(addUserExceptionFailure(msg));\n};\n","import Alert from 'react-bootstrap/Alert';\nimport BeatLoader from 'react-spinners/BeatLoader';\nimport Button from 'react-bootstrap/Button';\nimport Form from 'react-bootstrap/Form';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport Modal from 'react-bootstrap/Modal';\nimport React, { Component } from 'react';\nimport SearchInput from '../../shared/SearchInput';\nimport UserExceptionGrid from './UserExceptionGrid';\nimport { BPagination } from '../../shared/Pagination';\nimport { LoadingStyle } from '../../../styles';\nimport {\n    addUserException,\n    updateAddErrorMsg,\n    deleteUserException,\n    fetchUserExceptionData,\n} from '../../../actions/admin/userException.action';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { withOktaAuth } from '@okta/okta-react';\nimport { withRouter } from 'react-router-dom';\n\nclass UserException extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            show: false,\n            searchTerm: '',\n            showNewItemModal: false,\n            userId: '',\n            validated: false,\n            errorNewItem: '',\n            currentPage: 1,\n            itemsPerPage: 10,\n        };\n        this.formRef = React.createRef();\n    }\n\n    componentDidMount() {\n        if (this.props.authState.isAuthenticated) {\n            this.props.fetchUserExceptionData(this.props.authState.accessToken);\n        }\n    }\n\n    delete_handler(userId) {\n        if (!userId) return;\n\n        this.setState({ ...this.state, show: true, userIdDelete: userId });\n\n    }\n\n    confirmDelete_handler() {\n        if (!this.state.userIdDelete) return;\n\n        this.props.deleteUserException({ userId: this.state.userIdDelete, jwt: this.props.authState?.accessToken });\n        this.setState({ ...this.state, show: false, userIdDelete: undefined });\n    }\n\n    cancelDelete_handler() {\n\n        this.setState({ ...this.state, show: false, userIdDelete: undefined });\n    }\n\n    handleOpenNewItemModal() {\n        this.props.updateAddErrorMsg('');\n        this.setState({ ...this.state, showNewItemModal: true, userId: '' });\n\n    }\n\n    handleSearch(searchTerm) {\n        console.log('Search term:', searchTerm);\n        this.setState({ ...this.state, searchTerm, currentPage: 1 });\n    }\n\n    handleCancelNewItem() {\n        this.props.updateAddErrorMsg('');\n        this.setState({ ...this.state, showNewItemModal: false, userId: '' });\n    }\n\n    handleSaveNewItem() {\n        if (!this.state.userId) return;\n\n        if (!this.validateEmail(this.state.userId)) {\n            this.setState({ ...this.state, errorNewItem: 'Please enter a valid email.', validated: true });\n            return;\n        }\n\n        this.props.updateAddErrorMsg('');\n        this.props.addUserException({ userId: this.state.userId, jwt: this.props.authState?.accessToken });\n        this.setState({ ...this.state, showNewItemModal: false, userId: '' });\n    }\n\n    validateEmail(email) {\n        const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n        return emailRegex.test(email);\n    };\n\n\n    handleOnInputChange(e) {\n        this.props.updateAddErrorMsg('');\n        this.setState({ ...this.state, userId: e.target.value });\n    }\n\n\n    filterData(data) {\n        if (!this.state.searchTerm) return data;\n\n        return data.filter((item) => Object.values(item).some((value) => value.toLowerCase().includes(this.state.searchTerm.toLowerCase())));\n    }\n\n\n    handlePaginate(pageNumber) {\n        this.setState({ ...this.state, currentPage: pageNumber });\n    }\n\n\n    renderDeleteModal() {\n        return (<Modal show={this.state.show} onHide={() => this.setState({ ...this.state, show: false })}>\n            <Modal.Header>\n                <Modal.Title>Confirm Delete</Modal.Title>\n            </Modal.Header>\n            <Modal.Body>This will delete the user permanently. You cannot undo this action.</Modal.Body>\n            <Modal.Footer>\n                <Button variant=\"light\" onClick={this.cancelDelete_handler.bind(this)}>\n                    Cancel\n                </Button>\n                <Button variant=\"danger\" onClick={this.confirmDelete_handler.bind(this)}>\n                    Delete\n                </Button>\n            </Modal.Footer>\n        </Modal>);\n    }\n\n    renderAddModal() {\n        return (<Modal show={this.state.showNewItemModal}>\n            <Modal.Header>\n                <Modal.Title>Add New Record</Modal.Title>\n            </Modal.Header>\n            <Modal.Body>\n                <InputGroup hasValidation>\n                    <Form.Control type=\"email\" isInvalid={(this.props.newItemError || this.state.errorNewItem)} required\n                                  value={this.state.userId} onChange={(e) => this.handleOnInputChange(e)} />\n                    <Form.Control.Feedback type=\"invalid\">\n                        {this.props.newItemError || this.state.errorNewItem || 'Please enter a valid email.'}\n                    </Form.Control.Feedback>\n                </InputGroup>\n            </Modal.Body>\n            <Modal.Footer>\n                <Button variant=\"light\" onClick={this.handleCancelNewItem.bind(this)}>\n                    Cancel\n                </Button>\n                <Button variant=\"success\" onClick={() => this.handleSaveNewItem()}>\n                    Save\n                </Button>\n            </Modal.Footer>\n        </Modal>);\n    }\n\n    renderAlert() {\n        return this.props.newItemError ? <Alert show={this.state.alerOpen} variant=\"danger\">\n            <p>\n                {this.props.newItemError}\n            </p>\n        </Alert> : <></>;\n    }\n\n    render() {\n        const { data, loading, error } = this.props;\n\n        const filteredData = this.filterData(data) || [];\n\n        const itemsPerPage = 10;\n        const indexOfLastItem = this.state.currentPage * itemsPerPage;\n        const indexOfFirstItem = indexOfLastItem - itemsPerPage;\n\n        const paginatedData = filteredData.slice(indexOfFirstItem, indexOfLastItem);\n\n        return (<div>\n            <div className=\"main-panel main-panel-analytics\">\n                <div className=\"container\">\n                    <div className=\"page-inner\">\n                        <h4 className=\"page-title\"></h4>\n                        <div className=\"row\">\n                            <div className=\"col-md-12\">\n                                <div className=\"card\">\n                                    <div className=\"card-header\">\n                                        <h5 className=\"card-title mb-3\">Zoom License Exceptions</h5>\n                                        <h6 className=\"card-subtitle mb-2 text-muted\">DB used for managing Zoom\n                                            licenses</h6>\n                                    </div>\n                                    <div className=\"card-body\">\n                                        {loading ? (\n                                            <BeatLoader css={LoadingStyle} size={12} color={'#1C23BA'} loading={true}\n                                                        speedMultiplier={0.8} />) : <span />}\n                                        {this.renderAlert()}\n                                        <SearchInput onSearch={this.handleSearch.bind(this)} />\n\n                                        <UserExceptionGrid items={paginatedData}\n                                                           onDelete={this.delete_handler.bind(this)}\n                                                           onAdd={this.handleOpenNewItemModal.bind(this)} />\n                                        <div className=\"row\">\n                                            <div className=\"col-md-4 offset-md-8\">\n                                                <BPagination paginate={(pageNumber) => this.handlePaginate(pageNumber)}\n                                                             currentPage={this.state.currentPage}\n                                                             itemsPerPage={this.state.itemsPerPage}\n                                                             totalItems={filteredData?.length || 0} />\n                                            </div>\n                                        </div>\n                                        {this.renderDeleteModal()}\n                                        {this.renderAddModal()}\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>);\n    }\n}\n\nconst mapStateToProps = (state) => ({\n    data: state.userException.data,\n    loading: state.userException.loading,\n    error: state.userException.error,\n    deleteItemError: state.userException.deleteItemError,\n    newItemError: state.userException.newItemError,\n});\n\n\nexport default compose(withRouter, withOktaAuth, connect(mapStateToProps, {\n    fetchUserExceptionData, addUserException, deleteUserException, updateAddErrorMsg,\n}))(UserException);","import React, { Component } from 'react';\nimport { compose } from 'redux';\nimport { withRouter } from 'react-router-dom';\nimport { withOktaAuth } from '@okta/okta-react';\nimport { connect } from 'react-redux';\n\n\nconst AdminHeader = ({ updatedDateTime, location }) => {\n\n    const menuItem = [\n        {\n            key: 'isi-home', display: 'Home', route: '/',\n        },\n        {\n            key: 'admin-user-exception', display: 'Zoom License Exceptions', route: '/admin',\n        },\n        {\n            key: 'admin-application', display: 'Application', route: '/admin/application',\n        }, {\n            key: 'admin-zoom-logging', display: 'Zoom Log', route: '/admin/zoom-log',\n        },\n    ];\n\n    return (<div className=\"main-header\" style={{ fontFamily: 'interBoldUI' }}>\n        {/* <!-- Logo Header --> */}\n        <div className=\"logo-header\" data-background-color=\"white\">\n            <a href=\"/\" className=\"logo\" id=\"logoHeader\">\n                <img src=\"../../../assets/img/intuitive_logo_black.png\" alt=\"navbar brand\"\n                     className=\"navbar-brand\"></img>\n            </a>\n        </div>\n        <nav className=\"navbar navbar-header navbar-expand-lg\" data-background-color=\"white\">\n            <div className=\"container-fluid\">\n                <h2 className=\"text-black pb-2 fw-bold\" id=\"appName\">Admin</h2>\n                <ul className=\"navbar-nav topbar-nav ml-md-auto align-items-center\">\n                    <li className=\"nav-item dropdown hidden-caret submenu show\">\n                        <a className=\"dropdown-toggle profile-pic\" id=\"dropdownMenuButton\" data-toggle=\"dropdown\"\n                           aria-haspopup=\"true\" aria-expanded=\"false\">\n                            <div className=\"avatar-sm\">\n                                <img src=\"/assets/img/profile_placeholder.png\" alt=\"...\"\n                                     className=\"avatar-img rounded-circle\"></img>\n                            </div>\n                        </a>\n                        <div className=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton\">\n                            {\n                                menuItem.filter(f => f.route !== location.pathname).map(item => (\n                                    <a key={item.key} className=\"dropdown-item\" href={item.route}>{item.display}</a>))\n                            }\n                        </div>\n                    </li>\n                </ul>\n            </div>\n        </nav>\n    </div>);\n};\n\nconst mapStateToProps = (state) => ({\n    updatedDateTime: state.userException.updatedDateTime,\n});\n\nexport default compose(withRouter, withOktaAuth, connect(mapStateToProps, {}))(AdminHeader);","import React, { useEffect, useMemo, useState } from 'react';\nimport Form from 'react-bootstrap/Form';\nimport { Col, Row } from 'react-bootstrap';\nimport { BPagination } from '../../shared/Pagination';\n\nexport const ApplicationGrid = ({ onUpdate, ...props }) => {\n    const [editingId, setEditingId] = useState(null);\n    const [currentPage, setCurrentPage] = useState(1);\n    const [itemsPerPage, setItemsPerPage] = useState(10);\n    const [paginatedData, setPaginatedData] = useState([]);\n    const [editingItem, setEditingItem] = useState(null);\n    const [isValidUrl, setIsValidUrl] = useState(true);\n    const items = useMemo(() => props.items, [props.items]);\n\n    useEffect(() => {\n        setCurrentPage(1);\n        handleCancel();\n        const result = paginateData({ data: items, currentPage, itemsPerPage });\n        setPaginatedData(result);\n    }, [items]);\n\n    const handlePaginate = (pageNumber) => {\n        setCurrentPage(pageNumber);\n        const result = paginateData({ data: items, currentPage: pageNumber, itemsPerPage });\n        setPaginatedData(result);\n    };\n\n    const paginateData = ({ data, currentPage, itemsPerPage }) => {\n        const indexOfLastItem = currentPage * itemsPerPage;\n        const indexOfFirstItem = indexOfLastItem - itemsPerPage;\n\n        return data.slice(indexOfFirstItem, indexOfLastItem);\n    };\n\n    const handleEdit = (id) => {\n        setEditingId(id);\n        setEditingItem(paginatedData.find(f => f.id === id));\n    };\n\n    const handleSave = (id, newData) => {\n        if (!isValidUrl) return;\n\n        if (id && newData?.id === id) {\n            onUpdate(newData);\n            handleCancel();\n        } else {\n            handleCancel();\n        }\n    };\n\n    const handleCancel = () => {\n        setEditingId(null);\n        setEditingItem(null);\n        setIsValidUrl(true);\n    };\n\n    const handleOnChangeInput = (partialUpdate) => {\n        setEditingItem({ ...editingItem, ...partialUpdate });\n    };\n\n    const isValidURL = (urlString) => {\n        try {\n            new URL(urlString);\n            console.log(new URL(urlString));\n            return true;\n        } catch (error) {\n            return false;\n        }\n    };\n\n    return (<>\n        <Row>\n            <Col>\n                <div className=\"table-responsive\">\n                    <table className=\"table table-hover\">\n                        <thead>\n                        <tr>\n                            <th scope=\"col\">Display Name</th>\n                            <th scope=\"col\">Description</th>\n                            <th scope=\"col\">Support Group</th>\n                            <th scope=\"col\">Business Owner</th>\n                            <th scope=\"col\">System Owner</th>\n                            <th scope=\"col\">Url</th>\n                            <th scope=\"col\">API Path</th>\n                            <th scope=\"col\">Display</th>\n                            <th scope=\"col\" className=\"text-center\">\n                                <span className=\"text-center\">Actions</span>\n                            </th>\n                        </tr>\n                        </thead>\n                        <tbody>\n\n                        {(paginatedData).map((item, idx) => (<tr key={idx}>\n                            <td scope=\"col\">\n                                {editingId === item.id && editingItem ? (<Form.Group>\n                                    <Form.Control type=\"text\" value={editingItem.label}\n                                                  onChange={(e) => handleOnChangeInput({ label: e.target.value })} />\n                                    <Form.Control.Feedback type=\"invalid\" tooltip>\n                                        Enter a valid Label\n                                    </Form.Control.Feedback>\n                                </Form.Group>) : (item.label)}\n                            </td>\n                            <td scope=\"col\">\n                                {editingId === item.id && editingItem ? (<Form.Group>\n                                    <Form.Control type=\"text\" value={editingItem.description}\n                                                  onChange={(e) => handleOnChangeInput({ description: e.target.value })} />\n                                    <Form.Control.Feedback type=\"invalid\" tooltip>\n                                        Enter a valid Description\n                                    </Form.Control.Feedback>\n                                </Form.Group>) : (item.description)}\n                            </td>\n                            <td scope=\"col\">{item.supportGroup}</td>\n                            <td scope=\"col\">{item.businessOwner}</td>\n                            <td scope=\"col\">{item.systemOwner}\n                            </td>\n                            <td scope=\"col\">\n                                {editingId === item.id && editingItem ? (<Row><Form.Group className=\"w-100\">\n                                    <Form.Control className=\"w-100\" type=\"text\" isInvalid={!isValidUrl}\n                                                  value={editingItem.url}\n                                                  onBlur={(e) => {\n                                                      console.log(e);\n                                                      const valid = isValidURL(e.target.value);\n                                                      setIsValidUrl(valid);\n                                                  }}\n                                                  onChange={(e) => handleOnChangeInput({ url: e.target.value })} />\n                                    <Form.Control.Feedback type=\"invalid\" tooltip\n                                                           style={{ display: 'static' }}>\n                                        Enter a valid URL\n                                    </Form.Control.Feedback>\n                                </Form.Group></Row>) : (<span className=\"text-wrap d-block \" style={{ width: '300px' }}>\n                                {item.url}\n                            </span>)}\n\n                            </td>\n                            <td scope=\"col\">\n                                <span className=\"text-wrap d-block w-75\">  {item.apiPath}</span>\n                            </td>\n                            <td scope=\"col\">\n                                {editingId === item.id && editingItem ? (\n                                    <Form.Check className=\"text-center\" checked={editingItem.display}\n                                                disabled={editingId !== item.id}\n                                                onChange={(e) => handleOnChangeInput({ display: e.target.checked })}></Form.Check>) : (\n                                    <Form.Check className=\"text-center\" checked={item.display} disabled></Form.Check>)}\n\n\n                            </td>\n                            <td scope=\"col\">\n                                <div className=\"text-center\">\n                                    {editingId === item.id ? (<>\n                                        <button className=\"btn  btn-light\" title=\"Save\" disabled={!isValidUrl}\n                                                onClick={() => handleSave(item.id, editingItem)}>\n                                            <i className=\"fas fa-save text-black\" />\n                                        </button>\n                                        <button className=\"btn  btn-light\" title=\"Cancel\"\n                                                onClick={() => handleCancel()}>\n                                            <i className=\"fas fa-times\" />\n                                        </button>\n                                    </>) : !editingId ? (<button className=\"btn  btn-light\" title=\"Edit\"\n                                                                 onClick={() => handleEdit(item.id)}>\n                                        <i className=\"fas fa-edit text-black\" />\n                                    </button>) : null}\n                                </div>\n                            </td>\n                        </tr>))}\n                        </tbody>\n                    </table>\n                </div>\n            </Col>\n        </Row>\n        <Row>\n            <Col>\n                <div className=\"row\">\n                    <div className=\"col-md-4 offset-md-8\">\n                        <BPagination paginate={(pageNumber) => handlePaginate(pageNumber)}\n                                     currentPage={currentPage}\n                                     itemsPerPage={itemsPerPage}\n                                     totalItems={props.items?.length || 0} />\n                    </div>\n                </div>\n            </Col>\n        </Row>\n    </>);\n};\n","import axios from '../../apis/approvalsApi';\n\n\nexport const FETCH_APPLICATION_REQUEST = 'FETCH_APPLICATION_REQUEST';\nexport const FETCH_APPLICATION_SUCCESS = 'FETCH_APPLICATION_SUCCESS';\nexport const FETCH_APPLICATION_FAILURE = 'FETCH_APPLICATION_FAILURE';\nexport const UPDATE_APPLICATION_REQUEST = 'UPDATE_APPLICATION_REQUEST';\nexport const UPDATE_APPLICATION_SUCCESS = 'UPDATE_APPLICATION_SUCCESS';\nexport const UPDATE_APPLICATION_FAILURE = 'UPDATE_APPLICATION_FAILURE';\n\nexport const fetchApplicationRequest = () => ({\n    type: FETCH_APPLICATION_REQUEST,\n});\n\nexport const fetchApplicationSuccess = (data) => ({\n    type: FETCH_APPLICATION_SUCCESS, payload: data,\n});\n\nexport const fetchApplicationFailure = (error) => ({\n    type: FETCH_APPLICATION_FAILURE, payload: error,\n});\n\nexport const updateApplicationRequest = () => ({\n    type: UPDATE_APPLICATION_REQUEST,\n});\n\nexport const updateApplicationSuccess = (data) => ({\n    type: UPDATE_APPLICATION_SUCCESS, payload: data,\n});\n\nexport const updateApplicationFailure = (error) => ({\n    type: UPDATE_APPLICATION_FAILURE, payload: error,\n});\n\n/**\n * Action creator for fetching application data.\n * @param {string} jwt - JSON Web Token for authentication.\n * @returns {Function} - Async function dispatching actions based on the API response.\n */\nexport const fetchApplicationData = (jwt) => async (dispatch) => {\n    try {\n        // Dispatch the action to indicate that the request is in progress.\n        dispatch(fetchApplicationRequest());\n\n        // Set up the headers for the request, including the JWT for authentication.\n        const headers = {\n            'Authorization': 'Bearer ' + jwt,\n        };\n\n        // Make a GET request to the API endpoint for fetching application data.\n        const response = await axios.get('/application', { headers: headers });\n\n        // Log the response data for debugging purposes.\n        console.log(response?.data);\n\n        // Dispatch an action with the data from the response to indicate success.\n        dispatch(fetchApplicationSuccess(response.data));\n    } catch (ex) {\n        // If an exception occurs during the request, dispatch an action with the error information.\n        dispatch(fetchApplicationFailure(ex.response?.data || ex.message));\n    }\n};\n\n/**\n * Action creator for updating application data.\n * @param {Object} params - Parameters for the action.\n * @param {Object} params.application - The updated application data.\n * @param {string} params.jwt - JSON Web Token for authentication.\n * @returns {Function} - Async function dispatching actions based on the API response.\n */\nexport const updateApplicationData = ({ application, jwt }) => async (dispatch) => {\n    try {\n        // Dispatch the action to indicate that the request is in progress.\n        dispatch(updateApplicationRequest());\n\n        // Set up the headers for the request, including the JWT for authentication.\n        const headers = {\n            'Authorization': 'Bearer ' + jwt,\n        };\n\n        // Make a PUT request to the API endpoint for updating application data.\n        const response = await axios.put('/application/' + application.id, application, { headers: headers });\n\n        // Log the response data for debugging purposes.\n        console.log(response?.data);\n\n        // Dispatch an action with the data from the response to indicate success.\n        dispatch(updateApplicationSuccess(response.data));\n    } catch (ex) {\n        // If an exception occurs during the request, dispatch an action with the error information.\n        dispatch(updateApplicationFailure(ex.response?.data || ex.message));\n    }\n};\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardImg = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n  bsPrefix,\n  className,\n  variant,\n  as: Component = 'img',\n  ...props\n}, ref) => {\n  const prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n  return /*#__PURE__*/_jsx(Component, {\n    ref: ref,\n    className: classNames(variant ? `${prefix}-${variant}` : prefix, className),\n    ...props\n  });\n});\nCardImg.displayName = 'CardImg';\nexport default CardImg;","import * as React from 'react';\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardHeaderContext';\nexport default context;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CardHeaderContext from './CardHeaderContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardHeader = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'div',\n  ...props\n}, ref) => {\n  const prefix = useBootstrapPrefix(bsPrefix, 'card-header');\n  const contextValue = useMemo(() => ({\n    cardHeaderBsPrefix: prefix\n  }), [prefix]);\n  return /*#__PURE__*/_jsx(CardHeaderContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/_jsx(Component, {\n      ref: ref,\n      ...props,\n      className: classNames(className, prefix)\n    })\n  });\n});\nCardHeader.displayName = 'CardHeader';\nexport default CardHeader;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nimport CardImg from './CardImg';\nimport CardHeader from './CardHeader';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH5 = divWithClassName('h5');\nconst DivStyledAsH6 = divWithClassName('h6');\nconst CardBody = createWithBsPrefix('card-body');\nconst CardTitle = createWithBsPrefix('card-title', {\n  Component: DivStyledAsH5\n});\nconst CardSubtitle = createWithBsPrefix('card-subtitle', {\n  Component: DivStyledAsH6\n});\nconst CardLink = createWithBsPrefix('card-link', {\n  Component: 'a'\n});\nconst CardText = createWithBsPrefix('card-text', {\n  Component: 'p'\n});\nconst CardFooter = createWithBsPrefix('card-footer');\nconst CardImgOverlay = createWithBsPrefix('card-img-overlay');\nconst defaultProps = {\n  body: false\n};\nconst Card = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  bg,\n  text,\n  border,\n  body,\n  children,\n  // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n  as: Component = 'div',\n  ...props\n}, ref) => {\n  const prefix = useBootstrapPrefix(bsPrefix, 'card');\n  return /*#__PURE__*/_jsx(Component, {\n    ref: ref,\n    ...props,\n    className: classNames(className, prefix, bg && `bg-${bg}`, text && `text-${text}`, border && `border-${border}`),\n    children: body ? /*#__PURE__*/_jsx(CardBody, {\n      children: children\n    }) : children\n  });\n});\nCard.displayName = 'Card';\nCard.defaultProps = defaultProps;\nexport default Object.assign(Card, {\n  Img: CardImg,\n  Title: CardTitle,\n  Subtitle: CardSubtitle,\n  Body: CardBody,\n  Link: CardLink,\n  Text: CardText,\n  Header: CardHeader,\n  Footer: CardFooter,\n  ImgOverlay: CardImgOverlay\n});","import { compose } from 'redux';\nimport { withRouter } from 'react-router-dom';\nimport { withOktaAuth } from '@okta/okta-react';\nimport { connect, useDispatch, useSelector } from 'react-redux';\nimport BeatLoader from 'react-spinners/BeatLoader';\nimport { LoadingStyle } from '../../../styles';\nimport SearchInput from '../../shared/SearchInput';\nimport { BPagination } from '../../shared/Pagination';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { ApplicationGrid } from './application.grid';\nimport { fetchApplicationData, updateApplicationData } from '../../../actions/admin/application.action';\nimport { Card, Col, Container, Row } from 'react-bootstrap';\nimport Notifications from 'react-notification-system-redux';\n\nconst Application = ({ loading, applicationData, ...props }) => {\n    const [filteredData, setFilteredData] = useState([]);\n\n    const arr = useMemo(() => applicationData, [applicationData]);\n\n    const error = useSelector((state) => state.application.error);\n\n    const dispatch = useDispatch();\n    useEffect(() => {\n        console.log('request data');\n        if (props.authState?.isAuthenticated) {\n            props.fetchApplicationData(props.authState.accessToken);\n        }\n    }, []);\n\n    useEffect(() => {\n        setFilteredData(arr);\n    }, [arr]);\n\n    useEffect(() => {\n        if (!error) return;\n        dispatch(Notifications.error({\n            title: 'Unable to save changes',\n            message: error,\n            position: 'tr',\n            autoDismiss: 10,\n        }));\n    }, [error]);\n\n    const handleDeleteItem = (item) => {\n\n    };\n\n    const handleUpdate = (item) => {\n        if (props.authState?.isAuthenticated) {\n            props.updateApplicationData({ application: item, jwt: props.authState.accessToken });\n        }\n    };\n\n    const handleAddItemModal = () => {\n    };\n\n    const handleSearch = (searchTerm) => {\n        const result = filterData({ searchTerm, data: applicationData });\n        setFilteredData(result);\n    };\n\n    const filterData = ({ data, searchTerm } = { data: [], searchTerm: '' }) => {\n        if (!searchTerm) return data;\n\n        return data.filter((item) => Object.values(item).some((value) => value && typeof value === typeof searchTerm && value.toLowerCase().includes(searchTerm.toLowerCase())));\n    };\n\n    return <Container fluid className=\"main-panel main-panel-analytics\">\n        <div className=\"container\">\n            <div className=\"page-inner\">\n                <Row>\n                    <Col>\n                        <Card>\n                            <Card.Body>\n                                <Card.Title></Card.Title>\n                                <Card.Subtitle></Card.Subtitle>\n                            </Card.Body>\n                            <Card.Body>\n                                {loading ? (<BeatLoader css={LoadingStyle} size={12} color={'#1C23BA'} loading={true}\n                                                        speedMultiplier={0.8} />) : <span />}\n                                <SearchInput onSearch={handleSearch} />\n\n                                <ApplicationGrid items={filteredData || []} onUpdate={handleUpdate} />\n                            </Card.Body>\n                        </Card>\n\n                    </Col>\n                </Row>\n            </div>\n        </div>\n    </Container>;\n};\n\n\nconst mapStateToProps = (state) => ({\n    applicationData: state.application.applicationData, loading: state.application.loading,\n});\n\n\nexport default compose(withRouter, withOktaAuth, connect(mapStateToProps, {\n    fetchApplicationData, updateApplicationData,\n}))(Application);","import { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport Notifications from 'react-notification-system-redux';\nimport Form from 'react-bootstrap/Form';\n\nconst ToastNotification = ({ notifications }) => {\n    return (<Notifications notifications={notifications} />);\n};\n\nconst mapStateToProps = (state) => ({\n    notifications: state.popUp,\n});\n\nexport default compose(connect(mapStateToProps, {}))(ToastNotification);","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport React, {ReactNode, useContext, useLayoutEffect, useMemo, useState} from 'react';\n\n// To support SSR, the auto incrementing id counter is stored in a context. This allows\n// it to be reset on every request to ensure the client and server are consistent.\n// There is also a prefix string that is used to support async loading components\n// Each async boundary must be wrapped in an SSR provider, which appends to the prefix\n// and resets the current id counter. This ensures that async loaded components have\n// consistent ids regardless of the loading order.\ninterface SSRContextValue {\n  prefix: string,\n  current: number\n}\n\n// Default context value to use in case there is no SSRProvider. This is fine for\n// client-only apps. In order to support multiple copies of React Aria potentially\n// being on the page at once, the prefix is set to a random number. SSRProvider\n// will reset this to zero for consistency between server and client, so in the\n// SSR case multiple copies of React Aria is not supported.\nconst defaultContext: SSRContextValue = {\n  prefix: String(Math.round(Math.random() * 10000000000)),\n  current: 0\n};\n\nconst SSRContext = React.createContext<SSRContextValue>(defaultContext);\n\ninterface SSRProviderProps {\n  /** Your application here. */\n  children: ReactNode\n}\n\n/**\n * When using SSR with React Aria, applications must be wrapped in an SSRProvider.\n * This ensures that auto generated ids are consistent between the client and server.\n */\nexport function SSRProvider(props: SSRProviderProps): JSX.Element {\n  let cur = useContext(SSRContext);\n  let value: SSRContextValue = useMemo(() => ({\n    // If this is the first SSRProvider, start with an empty string prefix, otherwise\n    // append and increment the counter.\n    prefix: cur === defaultContext ? '' : `${cur.prefix}-${++cur.current}`,\n    current: 0\n  }), [cur]);\n\n  return (\n    <SSRContext.Provider value={value}>\n      {props.children}\n    </SSRContext.Provider>\n  );\n}\n\nlet canUseDOM = Boolean(\n  typeof window !== 'undefined' &&\n  window.document &&\n  window.document.createElement\n);\n\n/** @private */\nexport function useSSRSafeId(defaultId?: string): string {\n  let ctx = useContext(SSRContext);\n\n  // If we are rendering in a non-DOM environment, and there's no SSRProvider,\n  // provide a warning to hint to the developer to add one.\n  if (ctx === defaultContext && !canUseDOM) {\n    console.warn('When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.');\n  }\n\n  return useMemo(() => defaultId || `react-aria${ctx.prefix}-${++ctx.current}`, [defaultId]);\n}\n\n/**\n * Returns whether the component is currently being server side rendered or\n * hydrated on the client. Can be used to delay browser-specific rendering\n * until after hydration.\n */\nexport function useIsSSR(): boolean {\n  let cur = useContext(SSRContext);\n  let isInSSRContext = cur !== defaultContext;\n  let [isSSR, setIsSSR] = useState(isInSSRContext);\n\n  // If on the client, and the component was initially server rendered,\n  // then schedule a layout effect to update the component after hydration.\n  if (typeof window !== 'undefined' && isInSSRContext) {\n    // This if statement technically breaks the rules of hooks, but is safe\n    // because the condition never changes after mounting.\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useLayoutEffect(() => {\n      setIsSSR(false);\n    }, []);\n  }\n\n  return isSSR;\n}\n","import * as React from 'react';\nconst TabContext = /*#__PURE__*/React.createContext(null);\nexport default TabContext;","import * as React from 'react';\nconst SelectableContext = /*#__PURE__*/React.createContext(null);\nexport const makeEventKey = (eventKey, href = null) => {\n  if (eventKey != null) return String(eventKey);\n  return href || null;\n};\nexport default SelectableContext;","import { useEffect, useRef } from 'react';\n\nfunction NoopTransition({\n  children,\n  in: inProp,\n  mountOnEnter,\n  unmountOnExit\n}) {\n  const hasEnteredRef = useRef(inProp);\n  useEffect(() => {\n    if (inProp) hasEnteredRef.current = true;\n  }, [inProp]);\n  if (inProp) return children; // not in\n  //\n  // if (!mountOnEnter && !unmountOnExit) {\n  //   return children;\n  // }\n\n  if (unmountOnExit) {\n    return null;\n  }\n\n  if (!hasEnteredRef.current && mountOnEnter) {\n    return null;\n  }\n\n  return children;\n}\n\nexport default NoopTransition;","const _excluded = [\"active\", \"eventKey\", \"mountOnEnter\", \"transition\", \"unmountOnExit\"],\n      _excluded2 = [\"activeKey\", \"getControlledId\", \"getControllerId\"],\n      _excluded3 = [\"as\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport TabContext from './TabContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport NoopTransition from './NoopTransition';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useTabPanel(_ref) {\n  let {\n    active,\n    eventKey,\n    mountOnEnter,\n    transition,\n    unmountOnExit\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  const context = useContext(TabContext);\n  if (!context) return [props, {\n    eventKey,\n    isActive: active,\n    mountOnEnter,\n    transition,\n    unmountOnExit\n  }];\n\n  const {\n    activeKey,\n    getControlledId,\n    getControllerId\n  } = context,\n        rest = _objectWithoutPropertiesLoose(context, _excluded2);\n\n  const key = makeEventKey(eventKey);\n  return [Object.assign({}, props, {\n    id: getControlledId(eventKey),\n    'aria-labelledby': getControllerId(eventKey)\n  }), {\n    eventKey,\n    isActive: active == null && key != null ? makeEventKey(activeKey) === key : active,\n    transition: transition || rest.transition,\n    mountOnEnter: mountOnEnter != null ? mountOnEnter : rest.mountOnEnter,\n    unmountOnExit: unmountOnExit != null ? unmountOnExit : rest.unmountOnExit\n  }];\n}\nconst TabPanel = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n(_ref2, ref) => {\n  let {\n    as: Component = 'div'\n  } = _ref2,\n      props = _objectWithoutPropertiesLoose(_ref2, _excluded3);\n\n  const [tabPanelProps, {\n    isActive,\n    onEnter,\n    onEntering,\n    onEntered,\n    onExit,\n    onExiting,\n    onExited,\n    mountOnEnter,\n    unmountOnExit,\n    transition: Transition = NoopTransition\n  }] = useTabPanel(props); // We provide an empty the TabContext so `<Nav>`s in `<TabPanel>`s don't\n  // conflict with the top level one.\n\n  return /*#__PURE__*/_jsx(TabContext.Provider, {\n    value: null,\n    children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n      value: null,\n      children: /*#__PURE__*/_jsx(Transition, {\n        in: isActive,\n        onEnter: onEnter,\n        onEntering: onEntering,\n        onEntered: onEntered,\n        onExit: onExit,\n        onExiting: onExiting,\n        onExited: onExited,\n        mountOnEnter: mountOnEnter,\n        unmountOnExit: unmountOnExit,\n        children: /*#__PURE__*/_jsx(Component, Object.assign({}, tabPanelProps, {\n          ref: ref,\n          role: \"tabpanel\",\n          hidden: !isActive,\n          \"aria-hidden\": !isActive\n        }))\n      })\n    })\n  });\n});\nTabPanel.displayName = 'TabPanel';\nexport default TabPanel;","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport { useSSRSafeId } from './ssr';\nimport TabContext from './TabContext';\nimport SelectableContext from './SelectableContext';\nimport TabPanel from './TabPanel';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst Tabs = props => {\n  const {\n    id: userId,\n    generateChildId: generateCustomChildId,\n    onSelect: propsOnSelect,\n    activeKey: propsActiveKey,\n    defaultActiveKey,\n    transition,\n    mountOnEnter,\n    unmountOnExit,\n    children\n  } = props;\n  const [activeKey, onSelect] = useUncontrolledProp(propsActiveKey, defaultActiveKey, propsOnSelect);\n  const id = useSSRSafeId(userId);\n  const generateChildId = useMemo(() => generateCustomChildId || ((key, type) => id ? `${id}-${type}-${key}` : null), [id, generateCustomChildId]);\n  const tabContext = useMemo(() => ({\n    onSelect,\n    activeKey,\n    transition,\n    mountOnEnter: mountOnEnter || false,\n    unmountOnExit: unmountOnExit || false,\n    getControlledId: key => generateChildId(key, 'tabpane'),\n    getControllerId: key => generateChildId(key, 'tab')\n  }), [onSelect, activeKey, transition, mountOnEnter, unmountOnExit, generateChildId]);\n  return /*#__PURE__*/_jsx(TabContext.Provider, {\n    value: tabContext,\n    children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n      value: onSelect || null,\n      children: children\n    })\n  });\n};\n\nTabs.Panel = TabPanel;\nexport default Tabs;","import { useMemo } from 'react';\n\nvar toFnRef = function toFnRef(ref) {\n  return !ref || typeof ref === 'function' ? ref : function (value) {\n    ref.current = value;\n  };\n};\n\nexport function mergeRefs(refA, refB) {\n  var a = toFnRef(refA);\n  var b = toFnRef(refB);\n  return function (value) {\n    if (a) a(value);\n    if (b) b(value);\n  };\n}\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n *   const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n *   const mergedRef = useMergedRefs(ref, attachRef);\n *\n *   return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\n\nfunction useMergedRefs(refA, refB) {\n  return useMemo(function () {\n    return mergeRefs(refA, refB);\n  }, [refA, refB]);\n}\n\nexport default useMergedRefs;","import * as React from 'react';\nconst NavContext = /*#__PURE__*/React.createContext(null);\nNavContext.displayName = 'NavContext';\nexport default NavContext;","const _excluded = [\"as\", \"active\", \"eventKey\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport Button from './Button';\nimport { dataAttr } from './DataKey';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useNavItem({\n  key,\n  onClick,\n  active,\n  id,\n  role,\n  disabled\n}) {\n  const parentOnSelect = useContext(SelectableContext);\n  const navContext = useContext(NavContext);\n  let isActive = active;\n  const props = {\n    role\n  };\n\n  if (navContext) {\n    if (!role && navContext.role === 'tablist') props.role = 'tab';\n    const contextControllerId = navContext.getControllerId(key != null ? key : null);\n    const contextControlledId = navContext.getControlledId(key != null ? key : null); // @ts-ignore\n\n    props[dataAttr('event-key')] = key;\n    props.id = contextControllerId || id;\n    props['aria-controls'] = contextControlledId;\n    isActive = active == null && key != null ? navContext.activeKey === key : active;\n  }\n\n  if (props.role === 'tab') {\n    if (disabled) {\n      props.tabIndex = -1;\n      props['aria-disabled'] = true;\n    }\n\n    if (isActive) {\n      props['aria-selected'] = isActive;\n    } else {\n      props.tabIndex = -1;\n    }\n  }\n\n  props.onClick = useEventCallback(e => {\n    if (disabled) return;\n    onClick == null ? void 0 : onClick(e);\n\n    if (key == null) {\n      return;\n    }\n\n    if (parentOnSelect && !e.isPropagationStopped()) {\n      parentOnSelect(key, e);\n    }\n  });\n  return [props, {\n    isActive\n  }];\n}\nconst NavItem = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n  let {\n    as: Component = Button,\n    active,\n    eventKey\n  } = _ref,\n      options = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  const [props, meta] = useNavItem(Object.assign({\n    key: makeEventKey(eventKey, options.href),\n    active\n  }, options)); // @ts-ignore\n\n  props[dataAttr('active')] = meta.isActive;\n  return /*#__PURE__*/_jsx(Component, Object.assign({}, options, props, {\n    ref: ref\n  }));\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","const _excluded = [\"as\", \"onSelect\", \"activeKey\", \"role\", \"onKeyDown\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport qsa from 'dom-helpers/querySelectorAll';\nimport * as React from 'react';\nimport { useContext, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport TabContext from './TabContext';\nimport { dataAttr, dataProp } from './DataKey';\nimport NavItem from './NavItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => {};\n\nconst EVENT_KEY_ATTR = dataAttr('event-key');\nconst Nav = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n  let {\n    // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n    as: Component = 'div',\n    onSelect,\n    activeKey,\n    role,\n    onKeyDown\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  // A ref and forceUpdate for refocus, b/c we only want to trigger when needed\n  // and don't want to reset the set in the effect\n  const forceUpdate = useForceUpdate();\n  const needsRefocusRef = useRef(false);\n  const parentOnSelect = useContext(SelectableContext);\n  const tabContext = useContext(TabContext);\n  let getControlledId, getControllerId;\n\n  if (tabContext) {\n    role = role || 'tablist';\n    activeKey = tabContext.activeKey; // TODO: do we need to duplicate these?\n\n    getControlledId = tabContext.getControlledId;\n    getControllerId = tabContext.getControllerId;\n  }\n\n  const listNode = useRef(null);\n\n  const getNextActiveTab = offset => {\n    const currentListNode = listNode.current;\n    if (!currentListNode) return null;\n    const items = qsa(currentListNode, `[${EVENT_KEY_ATTR}]:not([aria-disabled=true])`);\n    const activeChild = currentListNode.querySelector('[aria-selected=true]');\n    if (!activeChild) return null;\n    const index = items.indexOf(activeChild);\n    if (index === -1) return null;\n    let nextIndex = index + offset;\n    if (nextIndex >= items.length) nextIndex = 0;\n    if (nextIndex < 0) nextIndex = items.length - 1;\n    return items[nextIndex];\n  };\n\n  const handleSelect = (key, event) => {\n    if (key == null) return;\n    onSelect == null ? void 0 : onSelect(key, event);\n    parentOnSelect == null ? void 0 : parentOnSelect(key, event);\n  };\n\n  const handleKeyDown = event => {\n    onKeyDown == null ? void 0 : onKeyDown(event);\n\n    if (!tabContext) {\n      return;\n    }\n\n    let nextActiveChild;\n\n    switch (event.key) {\n      case 'ArrowLeft':\n      case 'ArrowUp':\n        nextActiveChild = getNextActiveTab(-1);\n        break;\n\n      case 'ArrowRight':\n      case 'ArrowDown':\n        nextActiveChild = getNextActiveTab(1);\n        break;\n\n      default:\n        return;\n    }\n\n    if (!nextActiveChild) return;\n    event.preventDefault();\n    handleSelect(nextActiveChild.dataset[dataProp('EventKey')] || null, event);\n    needsRefocusRef.current = true;\n    forceUpdate();\n  };\n\n  useEffect(() => {\n    if (listNode.current && needsRefocusRef.current) {\n      const activeChild = listNode.current.querySelector(`[${EVENT_KEY_ATTR}][aria-selected=true]`);\n      activeChild == null ? void 0 : activeChild.focus();\n    }\n\n    needsRefocusRef.current = false;\n  });\n  const mergedRef = useMergedRefs(ref, listNode);\n  return /*#__PURE__*/_jsx(SelectableContext.Provider, {\n    value: handleSelect,\n    children: /*#__PURE__*/_jsx(NavContext.Provider, {\n      value: {\n        role,\n        // used by NavLink to determine it's role\n        activeKey: makeEventKey(activeKey),\n        getControlledId: getControlledId || noop,\n        getControllerId: getControllerId || noop\n      },\n      children: /*#__PURE__*/_jsx(Component, Object.assign({}, props, {\n        onKeyDown: handleKeyDown,\n        ref: mergedRef,\n        role: role\n      }))\n    })\n  });\n});\nNav.displayName = 'Nav';\nexport default Object.assign(Nav, {\n  Item: NavItem\n});","import { useReducer } from 'react';\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n *  forceUpdate()\n * }, [forceUpdate])\n *\n * return <button type=\"button\" onClick={updateOnClick}>Hi there</button>\n * ```\n */\n\nexport default function useForceUpdate() {\n  // The toggling state value is designed to defeat React optimizations for skipping\n  // updates when they are stricting equal to the last state value\n  var _useReducer = useReducer(function (state) {\n    return !state;\n  }, false),\n      dispatch = _useReducer[1];\n\n  return dispatch;\n}","import * as React from 'react'; // TODO: check\n\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('nav-item');","import classNames from 'classnames';\nimport * as React from 'react';\nimport Anchor from '@restart/ui/Anchor';\nimport { useNavItem } from '@restart/ui/NavItem';\nimport { makeEventKey } from '@restart/ui/SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n  disabled: false\n};\nconst NavLink = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  className,\n  as: Component = Anchor,\n  active,\n  eventKey,\n  ...props\n}, ref) => {\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n  const [navItemProps, meta] = useNavItem({\n    key: makeEventKey(eventKey, props.href),\n    active,\n    ...props\n  });\n  return /*#__PURE__*/_jsx(Component, { ...props,\n    ...navItemProps,\n    ref: ref,\n    className: classNames(className, bsPrefix, props.disabled && 'disabled', meta.isActive && 'active')\n  });\n});\nNavLink.displayName = 'NavLink';\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport BaseNav from '@restart/ui/Nav';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardHeaderContext from './CardHeaderContext';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n  justify: false,\n  fill: false\n};\nconst Nav = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n  const {\n    as = 'div',\n    bsPrefix: initialBsPrefix,\n    variant,\n    fill,\n    justify,\n    navbar,\n    navbarScroll,\n    className,\n    activeKey,\n    ...props\n  } = useUncontrolled(uncontrolledProps, {\n    activeKey: 'onSelect'\n  });\n  const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav');\n  let navbarBsPrefix;\n  let cardHeaderBsPrefix;\n  let isNavbar = false;\n  const navbarContext = useContext(NavbarContext);\n  const cardHeaderContext = useContext(CardHeaderContext);\n\n  if (navbarContext) {\n    navbarBsPrefix = navbarContext.bsPrefix;\n    isNavbar = navbar == null ? true : navbar;\n  } else if (cardHeaderContext) {\n    ({\n      cardHeaderBsPrefix\n    } = cardHeaderContext);\n  }\n\n  return /*#__PURE__*/_jsx(BaseNav, {\n    as: as,\n    ref: ref,\n    activeKey: activeKey,\n    className: classNames(className, {\n      [bsPrefix]: !isNavbar,\n      [`${navbarBsPrefix}-nav`]: isNavbar,\n      [`${navbarBsPrefix}-nav-scroll`]: isNavbar && navbarScroll,\n      [`${cardHeaderBsPrefix}-${variant}`]: !!cardHeaderBsPrefix,\n      [`${bsPrefix}-${variant}`]: !!variant,\n      [`${bsPrefix}-fill`]: fill,\n      [`${bsPrefix}-justified`]: justify\n    }),\n    ...props\n  });\n});\nNav.displayName = 'Nav';\nNav.defaultProps = defaultProps;\nexport default Object.assign(Nav, {\n  Item: NavItem,\n  Link: NavLink\n});","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('tab-content');","import Fade from './Fade';\nexport default function getTabTransitionComponent(transition) {\n  if (typeof transition === 'boolean') {\n    return transition ? Fade : undefined;\n  }\n\n  return transition;\n}","import classNames from 'classnames';\nimport * as React from 'react';\nimport NoopTransition from '@restart/ui/NoopTransition';\nimport SelectableContext from '@restart/ui/SelectableContext';\nimport TabContext from '@restart/ui/TabContext';\nimport { useTabPanel } from '@restart/ui/TabPanel';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport getTabTransitionComponent from './getTabTransitionComponent';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst TabPane = /*#__PURE__*/React.forwardRef(({\n  bsPrefix,\n  transition,\n  ...props\n}, ref) => {\n  const [{\n    className,\n    // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n    as: Component = 'div',\n    ...rest\n  }, {\n    isActive,\n    onEnter,\n    onEntering,\n    onEntered,\n    onExit,\n    onExiting,\n    onExited,\n    mountOnEnter,\n    unmountOnExit,\n    transition: Transition = NoopTransition\n  }] = useTabPanel({ ...props,\n    transition: getTabTransitionComponent(transition)\n  });\n  const prefix = useBootstrapPrefix(bsPrefix, 'tab-pane'); // We provide an empty the TabContext so `<Nav>`s in `<TabPanel>`s don't\n  // conflict with the top level one.\n\n  return /*#__PURE__*/_jsx(TabContext.Provider, {\n    value: null,\n    children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n      value: null,\n      children: /*#__PURE__*/_jsx(Transition, {\n        in: isActive,\n        onEnter: onEnter,\n        onEntering: onEntering,\n        onEntered: onEntered,\n        onExit: onExit,\n        onExiting: onExiting,\n        onExited: onExited,\n        mountOnEnter: mountOnEnter,\n        unmountOnExit: unmountOnExit,\n        children: /*#__PURE__*/_jsx(Component, { ...rest,\n          ref: ref,\n          className: classNames(className, prefix, isActive && 'active')\n        })\n      })\n    })\n  });\n});\nTabPane.displayName = 'TabPane';\nexport default TabPane;","import * as React from 'react';\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid elements\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n */\n\nfunction map(children, func) {\n  let index = 0;\n  return React.Children.map(children, child => /*#__PURE__*/React.isValidElement(child) ? func(child, index++) : child);\n}\n/**\n * Iterates through children that are \"valid elements\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n */\n\n\nfunction forEach(children, func) {\n  let index = 0;\n  React.Children.forEach(children, child => {\n    if ( /*#__PURE__*/React.isValidElement(child)) func(child, index++);\n  });\n}\n\nexport { map, forEach };","import * as React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport BaseTabs from '@restart/ui/Tabs';\nimport Nav from './Nav';\nimport NavLink from './NavLink';\nimport NavItem from './NavItem';\nimport TabContent from './TabContent';\nimport TabPane from './TabPane';\nimport { forEach, map } from './ElementChildren';\nimport getTabTransitionComponent from './getTabTransitionComponent';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst defaultProps = {\n  variant: 'tabs',\n  mountOnEnter: false,\n  unmountOnExit: false\n};\n\nfunction getDefaultActiveKey(children) {\n  let defaultActiveKey;\n  forEach(children, child => {\n    if (defaultActiveKey == null) {\n      defaultActiveKey = child.props.eventKey;\n    }\n  });\n  return defaultActiveKey;\n}\n\nfunction renderTab(child) {\n  const {\n    title,\n    eventKey,\n    disabled,\n    tabClassName,\n    id\n  } = child.props;\n\n  if (title == null) {\n    return null;\n  }\n\n  return /*#__PURE__*/_jsx(NavItem, {\n    as: \"li\",\n    role: \"presentation\",\n    children: /*#__PURE__*/_jsx(NavLink, {\n      as: \"button\",\n      type: \"button\",\n      eventKey: eventKey,\n      disabled: disabled,\n      id: id,\n      className: tabClassName,\n      children: title\n    })\n  });\n}\n\nconst Tabs = props => {\n  const {\n    id,\n    onSelect,\n    transition,\n    mountOnEnter,\n    unmountOnExit,\n    children,\n    activeKey = getDefaultActiveKey(children),\n    ...controlledProps\n  } = useUncontrolled(props, {\n    activeKey: 'onSelect'\n  });\n  return /*#__PURE__*/_jsxs(BaseTabs, {\n    id: id,\n    activeKey: activeKey,\n    onSelect: onSelect,\n    transition: getTabTransitionComponent(transition),\n    mountOnEnter: mountOnEnter,\n    unmountOnExit: unmountOnExit,\n    children: [/*#__PURE__*/_jsx(Nav, { ...controlledProps,\n      role: \"tablist\",\n      as: \"ul\",\n      children: map(children, renderTab)\n    }), /*#__PURE__*/_jsx(TabContent, {\n      children: map(children, child => {\n        const childProps = { ...child.props\n        };\n        delete childProps.title;\n        delete childProps.disabled;\n        delete childProps.tabClassName;\n        return /*#__PURE__*/_jsx(TabPane, { ...childProps\n        });\n      })\n    })]\n  });\n};\n\nTabs.defaultProps = defaultProps;\nTabs.displayName = 'Tabs';\nexport default Tabs;","import * as React from 'react';\nimport Tabs from '@restart/ui/Tabs';\nimport getTabTransitionComponent from './getTabTransitionComponent';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst TabContainer = ({\n  transition,\n  ...props\n}) => /*#__PURE__*/_jsx(Tabs, { ...props,\n  transition: getTabTransitionComponent(transition)\n});\n\nTabContainer.displayName = 'TabContainer';\nexport default TabContainer;","import PropTypes from 'prop-types';\nimport * as React from 'react';\nimport TabContainer from './TabContainer';\nimport TabContent from './TabContent';\nimport TabPane from './TabPane';\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/* eslint-disable react/no-unused-prop-types */\nconst propTypes = {\n  eventKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n  /**\n   * Content for the tab title.\n   */\n  title: PropTypes.node.isRequired,\n\n  /**\n   * The disabled state of the tab.\n   */\n  disabled: PropTypes.bool,\n\n  /**\n   * Class to pass to the underlying nav link.\n   */\n  tabClassName: PropTypes.string\n};\n\nconst Tab = () => {\n  throw new Error('ReactBootstrap: The `Tab` component is not meant to be rendered! ' + \"It's an abstract component that is only valid as a direct Child of the `Tabs` Component. \" + 'For custom tabs components use TabPane and TabsContainer directly'); // Needed otherwise docs error out.\n\n  return /*#__PURE__*/_jsx(_Fragment, {});\n};\n\nTab.propTypes = propTypes;\nexport default Object.assign(Tab, {\n  Container: TabContainer,\n  Content: TabContent,\n  Pane: TabPane\n});","import { saveAs } from 'file-saver';\n\nexport const sortArray = (dataArray, key) => {\n    if (!dataArray?.length) return [];\n\n    return dataArray.sort((a, b) => sortFunction(a, b, key));\n};\n\nexport const sortFunction = (a, b, key) => {\n    const nameA = a[key].toUpperCase(); // ignore upper and lowercase\n    const nameB = b[key].toUpperCase(); // ignore upper and lowercase\n\n    if (nameA > nameB) {\n        return -1;\n    }\n    if (nameA > nameB) {\n        return 1;\n    }\n\n    // names must be equal\n    return 0;\n};\n\n\nconst ParseFileNameFromContentDisposition = (contentDisposition) => {\n    const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n    const matches = filenameRegex.exec(contentDisposition);\n    if (matches != null && matches[1]) {\n        return matches[1].replace(/['\"]/g, '');\n    }\n    return '';\n};\n\nexport const formatDateFunc = (date) => date.toString().replace(/GMT.*/g, '');\n\nexport const saveFile = (response) => {\n    const headers = response.headers;\n    const contentDisposition = headers['content-disposition'];\n    const fileName = ParseFileNameFromContentDisposition(contentDisposition);\n\n    saveAs(new Blob([response.data], { type: response.data.type }), fileName);\n};\n\n","import axios from '../../apis/approvalsApi';\nimport { saveFile } from '../../utils/common';\n\nexport const FETCH_ZOOM_LOGGING_REQUEST = 'FETCH_ZOOM_LOGGING_REQUEST';\nexport const FETCH_ZOOM_LOGGING_SUCCESS = 'FETCH_ZOOM_LOGGING_SUCCESS';\nexport const FETCH_ZOOM_LOGGING_FAILURE = 'FETCH_ZOOM_LOGGING_FAILURE';\n\nexport const FETCH_ZOOM_CLEAN_LOGGING_REQUEST = 'FETCH_ZOOM_CLEAN_LOGGING_REQUEST';\nexport const FETCH_ZOOM_CLEAN_LOGGING_SUCCESS = 'FETCH_ZOOM_CLEAN_LOGGING_SUCCESS';\nexport const FETCH_ZOOM_CLEAN_LOGGING_FAILURE = 'FETCH_ZOOM_CLEAN_LOGGING_FAILURE';\n\nexport const EXPORT_ZOOM_LOGGING_REQUEST = 'EXPORT_ZOOM_LOGGING_REQUEST';\nexport const EXPORT_ZOOM_LOGGING_SUCCESS = 'EXPORT_ZOOM_LOGGING_SUCCESS';\nexport const EXPORT_ZOOM_LOGGING_FAILURE = 'EXPORT_ZOOM_LOGGING_FAILURE';\n\nexport const EXPORT_ZOOM_CLEAN_LOGGING_REQUEST = 'EXPORT_ZOOM_CLEAN_LOGGING_REQUEST';\nexport const EXPORT_ZOOM_CLEAN_LOGGING_SUCCESS = 'EXPORT_ZOOM_CLEAN_LOGGING_SUCCESS';\nexport const EXPORT_ZOOM_CLEAN_LOGGING_FAILURE = 'EXPORT_ZOOM_CLEAN_LOGGING_FAILURE';\n\n\nexport const fetchZoomLoggingRequest = () => ({\n    type: FETCH_ZOOM_LOGGING_REQUEST,\n});\n\nexport const fetchZoomLoggingSuccess = (data) => ({\n    type: FETCH_ZOOM_LOGGING_SUCCESS, payload: data,\n});\n\nexport const fetchZoomLoggingFailure = (error) => ({\n    type: FETCH_ZOOM_LOGGING_FAILURE, payload: error,\n});\n\n\nexport const exportZoomLoggingRequest = () => ({\n    type: EXPORT_ZOOM_LOGGING_REQUEST,\n});\n\nexport const exportZoomLoggingSuccess = (data) => ({\n    type: EXPORT_ZOOM_LOGGING_SUCCESS, payload: data,\n});\n\nexport const exportZoomLoggingFailure = (error) => ({\n    type: EXPORT_ZOOM_LOGGING_FAILURE, payload: error,\n});\n\n\nexport const fetchZoomCleanLoggingRequest = () => ({\n    type: FETCH_ZOOM_CLEAN_LOGGING_REQUEST,\n});\n\nexport const fetchZoomCleanLoggingSuccess = (data) => ({\n    type: FETCH_ZOOM_CLEAN_LOGGING_SUCCESS, payload: data,\n});\n\nexport const fetchZoomCleanLoggingFailure = (error) => ({\n    type: FETCH_ZOOM_CLEAN_LOGGING_FAILURE, payload: error,\n});\n\n\nexport const exportZoomCleanLoggingRequest = () => ({\n    type: EXPORT_ZOOM_CLEAN_LOGGING_REQUEST,\n});\n\nexport const exportZoomCleanLoggingSuccess = (data) => ({\n    type: EXPORT_ZOOM_CLEAN_LOGGING_SUCCESS, payload: data,\n});\n\nexport const exportZoomCleanLoggingFailure = (error) => ({\n    type: EXPORT_ZOOM_CLEAN_LOGGING_FAILURE, payload: error,\n});\n\nexport const fetchZoomLoggingData = ({ data, jwt }) => async (dispatch) => {\n    try {\n        dispatch(fetchZoomLoggingRequest());\n        const headers = {\n            'Authorization': 'Bearer ' + jwt,\n        };\n\n        // Make GET request\n        const response = await axios.post('/ZoomLicense/log', data, { headers: headers });\n        console.log(response);\n        dispatch(fetchZoomLoggingSuccess(response.data));\n    } catch (ex) {\n        console.error(ex);\n        dispatch(fetchZoomLoggingFailure(ex.response?.data || ex.message));\n    }\n};\n\nexport const exportZoomLoggingData = ({ data, jwt }) => async (dispatch) => {\n    try {\n        dispatch(exportZoomLoggingRequest());\n        const headers = {\n            'Authorization': 'Bearer ' + jwt,\n        };\n\n        // Make GET request\n        const response = await axios.post('/ZoomLicense/export/log', data, { headers: headers, responseType: 'blob' });\n        console.log(response);\n        saveFile(response);\n        dispatch(exportZoomLoggingSuccess(response.data));\n    } catch (ex) {\n        console.error(ex);\n        dispatch(exportZoomLoggingFailure(ex.response?.data || ex.message));\n    }\n};\n\nexport const fetchZoomCleanLoggingData = ({ data, jwt }) => async (dispatch) => {\n    try {\n        dispatch(fetchZoomCleanLoggingRequest());\n\n        console.log(\"Fetch Zoom Cleanup log API data: \", data);\n        const headers = {\n            'Authorization': 'Bearer ' + jwt,\n        };\n\n        // Make GET request\n        const response = await axios.post('/ZoomLicense/cleanup-log', data, { headers: headers });\n        console.log(\"Get Cleanup log data API response: \", response.data);\n\n        // let cleanUpDataTest = [\n        //     {\n        //         \"message\": \"Successful run of zoom license clean up script\",\n        //         \"id\": \"1\",\n        //         \"eventType\": \"license.cleanup\",\n        //         \"eventTimestamp\": \"2024-07-04T21:54:54\",\n        //         \"assignedLicensesBefore\": 5,\n        //         \"assignedLicensesAfter\": 4,\n        //         \"availableLicensesBefore\": 45,\n        //         \"availableLicensesAfter\": 46,\n        //         \"users\": \"sample@intusurg.com\"\n        //     }\n        // ]\n\n\n\n        dispatch(fetchZoomCleanLoggingSuccess(response.data));\n        //dispatch(fetchZoomCleanLoggingSuccess(cleanUpDataTest));\n    } catch (ex) {\n        console.error(ex);\n        dispatch(fetchZoomCleanLoggingFailure(ex.response?.data || ex.message));\n    }\n};\n\nexport const exportZoomCleanLoggingData = ({ data, jwt }) => async (dispatch) => {\n    try {\n        dispatch(exportZoomCleanLoggingRequest());\n        const headers = {\n            'Authorization': 'Bearer ' + jwt,\n        };\n\n        // Make GET request\n        console.log(\"Export Data sent to Export API: \", data);\n        const response = await axios.post('/ZoomLicense/export/cleanup-log', data, { headers: headers, responseType: 'blob' });\n        console.log(response);\n        saveFile(response);\n        dispatch(exportZoomCleanLoggingSuccess(response.data));\n    } catch (ex) {\n        console.error(ex);\n        dispatch(exportZoomCleanLoggingFailure(ex.response?.data || ex.message));\n    }\n};","import React, { useEffect, useMemo, useState } from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { BPagination } from '../../shared/Pagination';\nimport moment from 'moment';\n\nexport const ZoomCleanLogGrid = (props) => {\n    const [currentPage, setCurrentPage] = useState(1);\n    const [itemsPerPage, setItemsPerPage] = useState(10);\n    const [paginatedData, setPaginatedData] = useState([]);\n    const items = useMemo(() => props.items, [props.items]);\n\n    useEffect(() => {\n        setCurrentPage(1);\n        const result = paginateData({ data: items, currentPage, itemsPerPage });\n        setPaginatedData(result);\n    }, [items]);\n\n    const handlePaginate = (pageNumber) => {\n        setCurrentPage(pageNumber);\n        const result = paginateData({ data: items, currentPage: pageNumber, itemsPerPage });\n        setPaginatedData(result);\n    };\n\n    const paginateData = ({ data, currentPage, itemsPerPage }) => {\n        const indexOfLastItem = currentPage * itemsPerPage;\n        const indexOfFirstItem = indexOfLastItem - itemsPerPage;\n\n        return data.slice(indexOfFirstItem, indexOfLastItem);\n    };\n\n\n    return (<>\n        <Row>\n            <Col>\n                <div className=\"table-responsive\">\n                    <table className=\"table table-hover\">\n                        <thead>\n                            <tr>\n                                <th scope=\"col\">Number of licenses assigned prior to execution</th>\n                                <th scope=\"col\">Number of licenses assigned after execution</th>\n                                <th scope=\"col\">Number of available licenses before</th>\n                                <th scope=\"col\">Number of available licenses after</th>\n                                <th scope=\"col\">DateTime Execution</th>\n                                <th scope=\"col\">Email list of affected users</th>\n                            </tr>\n                        </thead>\n                        <tbody>\n\n                            {(paginatedData || []).map((item, idx) => (<tr key={idx}>\n                                <td scope=\"col\">{item.assignedLicensesBefore}</td>\n                                <td scope=\"col\">{item.assignedLicensesAfter}</td>\n                                <td scope=\"col\">{item.availableLicensesBefore}</td>\n                                <td scope=\"col\">{item.availableLicensesAfter}</td>\n                                {/* <td scope=\"col\">{item.freeLicense}</td> */}\n                                {/*<td scope=\"col\">{`${moment.utc(item.eventTimestamp).local().format('L')} ${moment.utc(item.eventTimestamp).local().format('LTS')}`}*/}\n                                {/* <td scope=\"col\">{`${moment.utc(item.eventTimestamp).local().format('MM/DD/YYYY hh:mm:ss a')}`} */}\n                                <td scope=\"col\">{`${moment.utc(item.eventTimestamp).format('MM/DD/YYYY hh:mm:ss a')}`}\n                                    {/* moment.utc(item.eventTimestamp).subtract(7, 'hours').format('MM/DD/YYYY hh:mm:ss a'); */}\n                                </td>\n                                <td scope=\"col\">\n                                    {/* <ul className=\"list-group  list-group-flush bg-transparent border border-0\">\n                                        {item.users?.split(' ').slice(0, 5).map(i => <li key={`${idx}_${i}`}\n                                            className=\"list-group-item bg-transparent border border-0  p-0 m-1\">{i}</li>)}\n                                        {item.users?.split(' ').length > 5 ? (\n                                            <li className=\"list-group-item bg-transparent border border-0 text-muted\"> ... {item.users?.split(' ').length - 5} more\n                                                records.</li>) : <></>}\n                                    </ul> */}\n                                    <ul className=\"list-group list-group-flush bg-transparent border border-0\">\n                                        {item.users?.split(' ').slice(0, 5).map(i => {\n                                            if (i.trim() !== '') {\n                                                return (\n                                                    <li key={`${idx}_${i}`} className=\"list-group-item bg-transparent border border-0 p-0 m-1\">\n                                                        {i}\n                                                    </li>\n                                                );\n                                            }\n                                            return null;\n                                        })}\n                                        {item.users?.split(' ').length > 5 ? (\n                                            <li className=\"list-group-item bg-transparent border border-0 text-muted\">\n                                                ... {item.users?.split(' ').length - 5} more records.\n                                            </li>\n                                        ) : (\n                                            <></>\n                                        )}\n                                    </ul>\n                                </td>\n                            </tr>))}\n                        </tbody>\n                    </table>\n                </div>\n            </Col>\n        </Row>\n        <Row>\n            <Col>\n                <div className=\"row\">\n                    <div className=\"col-md-4 offset-md-8\">\n                        <BPagination paginate={(pageNumber) => handlePaginate(pageNumber)}\n                            currentPage={currentPage}\n                            itemsPerPage={itemsPerPage}\n                            totalItems={items?.length || 0} />\n                    </div>\n                </div>\n            </Col>\n        </Row>\n    </>);\n};\n","import { compose } from 'redux';\nimport { withRouter } from 'react-router-dom';\nimport { withOktaAuth } from '@okta/okta-react';\nimport { connect, useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport BeatLoader from 'react-spinners/BeatLoader';\nimport { LoadingStyle } from '../../../styles';\nimport SearchInput from '../../shared/SearchInput';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { Card, Col, Container, Dropdown, Row, Tab, Table, Tabs } from 'react-bootstrap';\nimport Notifications from 'react-notification-system-redux';\nimport { ZoomLoggingGrid } from './ZoomLoggingGrid';\nimport {\n    exportZoomCleanLoggingData,\n    exportZoomLoggingData,\n    fetchZoomCleanLoggingData,\n    fetchZoomLoggingData,\n} from '../../../actions/admin/zoom-logging.action';\nimport Button from 'react-bootstrap/Button';\nimport { ZoomCleanLogGrid } from './ZoomCleanLogGrid';\nimport moment from 'moment';\n\nconst EventType = [{\n    id: '', title: 'All',\n}, {\n    id: 'meeting.created', title: 'Meeting Created',\n}, {\n    id: 'meeting.updated', title: 'Meeting Updated',\n}];\n\nconst ZoomLogging = ({ loading, data, cleanLogData, ...props }) => {\n    const [searchTerm, setSearchTerm] = useState();\n    const [cleanLogSearchTerm, setCleanLogSearchTerm] = useState();\n    const [eventType, setEventType] = useState(EventType[0]);\n    const [filteredData, setFilteredData] = useState([]);\n    const [cleanLogDataFiltered, setCleanLogDataFiltered] = useState([]);\n    const [key, setKey] = useState('cleanup');\n\n    const arr = useMemo(() => data, [data]);\n    const cleanLog = useMemo(() => cleanLogData, [cleanLogData]);\n\n    const error = useSelector((state) => state.zoomLogging.error, shallowEqual);\n\n    const dispatch = useDispatch();\n\n    // Function to get the current date in PST\n    function getPSTDate() {\n        return moment().utcOffset(-8 * 60); // PST is UTC-8\n    }\n\n    useEffect(() => {\n        // Get today's date in PST and format it as YYYY-MM-DD\n        const endDate = getPSTDate().format('YYYY-MM-DD');\n\n        // Get the date 2 years ago from today's PST date and format it as YYYY-MM-DD\n        const startDate = getPSTDate().subtract(2, 'years').format('YYYY-MM-DD');\n\n        console.log('End Date Clean Up Logs:', endDate);\n        console.log('Start Date Clean Up Logs:', startDate);\n        //console.log('request data');\n        if (props.authState?.isAuthenticated) {\n            props.fetchZoomLoggingData({ data: {}, jwt: props.authState.accessToken });\n            props.fetchZoomCleanLoggingData({\n                data: {\n                    eventType: 'license.cleanup',\n                    startDate: startDate,\n                    endDate: endDate\n                },\n                jwt: props.authState.accessToken,\n            });\n        }\n    }, []);\n\n    useEffect(() => {\n        setFilteredData(arr);\n    }, [arr]);\n\n    useEffect(() => {\n        setCleanLogDataFiltered(cleanLog);\n    }, [cleanLog]);\n\n    useEffect(() => {\n        if (!error) return;\n        dispatch(Notifications.error({\n            title: 'Unable to save changes', message: error, position: 'tr', autoDismiss: 10,\n        }));\n    }, [error]);\n\n\n    const handleSearch = (searchTerm) => {\n        setSearchTerm(searchTerm);\n        const result = filterData({ searchTerm, data: arr });\n\n        setFilteredData(result);\n    };\n\n    const handleSearchEventType = (eventType) => {\n        setEventType(eventType);\n        const result = filterData({ searchTerm: eventType.id, data: arr });\n\n        setFilteredData(result);\n    };\n\n    const handleCleanLogSearch = (searchTerm) => {\n        setCleanLogSearchTerm(searchTerm);\n        console.log(\"SET search term: \", searchTerm);\n        //console.log(\"CleanLog data used for filtering: \", cleanLog);\n        const result = filterData({ searchTerm, data: cleanLog });\n        console.log(\"SearchFilteredData: \", result);\n\n        setCleanLogDataFiltered(result);\n    };\n\n    const filterData = ({ data, searchTerm } = { data: [], searchTerm: '' }) => {\n        if (!searchTerm) return data;\n\n        // Filter the data array based on 'eventTimestamp' property includes the search term\n        //eventTimestamp needs to be formatted to compare so it is similar to the format shown in UI\n        return data.filter((item) =>\n            // item.users.toLowerCase().includes(searchTerm.toLowerCase()) ||\n            //moment.utc(item.eventTimestamp).local().format('MM/DD/YYYY hh:mm:ss a').toLowerCase().includes(searchTerm.toLowerCase())\n            //item.eventTimestamp.toLowerCase().includes(searchTerm.toLowerCase())\n            moment.utc(item.eventTimestamp).format('MM/DD/YYYY hh:mm:ss a').toLowerCase().includes(searchTerm.toLowerCase())\n        );\n    };\n\n    const handlerExportEventLog = () => {\n        props.exportZoomLoggingData({\n            data: { UserEmail: searchTerm, eventType: eventType.id },\n            jwt: props.authState.accessToken,\n        });\n    };\n    const handlerExportCleanEventLog = () => {\n        //convert date from MM/DD/YYYY to YYYY-MM-DD\n        const parts = cleanLogSearchTerm.split('/'); // Split the date string into day, month, and year parts\n        const formattedDate = `${parts[2]}-${parts[0].padStart(2, '0')}-${parts[1].padStart(2, '0')}`;\n        console.log(\"Export FormatDate: \", formattedDate);\n        props.exportZoomCleanLoggingData({\n            // data: { UserEmail: cleanLogSearchTerm },\n            data: {\n                eventType: 'license.cleanup',\n                startDate: formattedDate,\n                endDate: formattedDate\n            },\n            jwt: props.authState.accessToken,\n        });\n    };\n\n    const handlerReload = () => {\n        props.fetchZoomLoggingData({\n            data: { UserEmail: searchTerm, eventType: eventType.id },\n            jwt: props.authState.accessToken,\n        });\n    };\n\n    const handlerCleanUpReload = () => {\n        props.fetchZoomCleanLoggingData({\n            data: { UserEmail: cleanLogSearchTerm },\n            jwt: props.authState.accessToken,\n        });\n    };\n\n    return <Container fluid className=\"main-panel main-panel-analytics\">\n        <div className=\"container\">\n            <div className=\"page-inner\">\n                <Row>\n                    <Col>\n                        <Card>\n                            <Card.Body>\n                                <Card.Title>Zoom Log</Card.Title>\n                                <Card.Subtitle></Card.Subtitle>\n                            </Card.Body>\n                            <Card.Body>\n                                {loading ? (<BeatLoader css={LoadingStyle} size={12} color={'#1C23BA'} loading={true}\n                                    speedMultiplier={0.8} />) : <span />}\n\n                                <Tabs activeKey={key} onSelect={(k) => setKey(k)} className=\"mb-3\">\n                                    {/* <Tab eventKey=\"webhook\" title=\"Webhook\">\n                                        <Row className=\"mb-3\">\n                                            <Col md={4}><SearchInput onSearch={handleSearch} /></Col>\n                                            <Col md={4}>\n                                                <Row>\n                                                    <Col>\n                                                        <div className=\"form-group\">\n                                                            <Dropdown>\n                                                                <Dropdown.Toggle variant=\"light\" id=\"dropdown-basic\">\n                                                                    <strong>Event\n                                                                        Type:</strong> {eventType?.title || ''}\n                                                                </Dropdown.Toggle>\n\n                                                                <Dropdown.Menu>\n                                                                    {EventType.map((item) => (\n                                                                        <Dropdown.Item key={item.id}\n                                                                                       onClick={event => {\n\n                                                                                           handleSearchEventType(item);\n                                                                                       }}>{item.title}</Dropdown.Item>\n                                                                    ))}\n                                                                </Dropdown.Menu>\n                                                            </Dropdown>\n                                                        </div>\n                                                    </Col>\n                                                    <Col>\n                                                        <div className=\"form-group\">\n                                                            <Button variant=\"light\" onClick={handlerExportEventLog}><i\n                                                                className=\"fas fa-file-export\"\n                                                                style={{ color: '#000' }}></i> Export</Button>\n                                                        </div>\n                                                    </Col>\n                                                    <Col>\n                                                        <div className=\"form-group\">\n                                                            <Button variant=\"light\" onClick={handlerReload}><i\n                                                                className=\"fas fa-sync-alt\"\n                                                                style={{ color: '#000' }}></i> Refresh</Button>\n                                                        </div>\n                                                    </Col>\n                                                </Row>\n\n                                            </Col>\n                                        </Row>\n                                        <Row>\n                                            <Col>\n                                                <ZoomLoggingGrid items={filteredData || []} />\n\n                                            </Col>\n                                        </Row>\n                                    </Tab> */}\n                                    <Tab eventKey=\"cleanup\" title=\"Clean up\">\n                                        <Row className=\"mb-3\">\n                                            <Col md={4}><SearchInput onSearch={handleCleanLogSearch} /></Col>\n                                            <Col md={4}>\n                                                <Row>\n                                                    <Col>\n                                                        <div className=\"form-group\">\n                                                            <Button variant=\"light\"\n                                                                onClick={handlerExportCleanEventLog}><i\n                                                                    className=\"fas fa-file-export\"\n                                                                    style={{ color: '#000' }}></i> Export</Button>\n                                                        </div>\n                                                    </Col>\n                                                    <Col>\n                                                        <div className=\"form-group\">\n                                                            <Button variant=\"light\" onClick={handlerCleanUpReload}><i\n                                                                className=\"fas fa-sync-alt\"\n                                                                style={{ color: '#000' }}></i> Refresh</Button>\n                                                        </div>\n                                                    </Col>\n                                                </Row>\n\n                                            </Col>\n                                        </Row>\n                                        <Row><Col>\n                                            <ZoomCleanLogGrid items={cleanLogDataFiltered || []} />\n                                        </Col></Row>\n                                    </Tab>\n                                </Tabs>\n                            </Card.Body>\n                        </Card>\n\n                    </Col>\n                </Row>\n            </div>\n        </div>\n    </Container>;\n};\n\n\nconst mapStateToProps = (state) => ({\n    data: state.zoomLogging.log, loading: state.zoomLogging.loading, cleanLogData: state.zoomLogging.cleanLog,\n});\n\n\nexport default compose(withRouter, withOktaAuth, connect(mapStateToProps, {\n    fetchZoomLoggingData, exportZoomLoggingData, fetchZoomCleanLoggingData, exportZoomCleanLoggingData,\n}))(ZoomLogging);","import { Route, Switch, useRouteMatch, withRouter } from 'react-router-dom';\nimport UserException from './user-exception/UserException';\nimport AdminHeader from './AdminHeader';\nimport React, { useEffect } from 'react';\nimport { Col, Container, Row } from 'react-bootstrap';\nimport { compose } from 'redux';\nimport { withOktaAuth } from '@okta/okta-react';\nimport { connect } from 'react-redux';\nimport { fetchUserProfileData } from '../../actions/profile/profile.action';\nimport Application from './application/application';\nimport ToastNotification from '../shared/ToastNotification';\nimport ZoomLogging from './zoom-logging/ZoomLogging';\n\nconst Admin = ({ fetchUserProfileData, userProfile, history, authState }) => {\n    let { path, url } = useRouteMatch();\n\n    useEffect(() => {\n        if (userProfile !== null && (!userProfile?.roles?.length || !userProfile.roles.indexOf('admin') <= 0)) {\n            history.replace('/');\n        }\n\n        if (userProfile === null && authState.accessToken) {\n            fetchUserProfileData(authState.accessToken);\n        }\n\n    }, [userProfile]);\n\n    console.log(`${path}/application`);\n    return userProfile?.roles?.indexOf('admin') >= 0 ? (<>\n        <AdminHeader />\n        <Container fluid>\n            <Row>\n                <Col>\n                    <Switch>\n                        <Route exact path={path}>\n                            <UserException />\n                        </Route>\n                        <Route path={`${path}/application`}>\n                            <Application />\n                        </Route><Route path={`${path}/zoom-log`}>\n                            <ZoomLogging />\n                        </Route>\n                    </Switch>\n                </Col>\n            </Row>\n            <Row>\n                <Col>\n                    <ToastNotification />\n                </Col>\n            </Row>\n        </Container>\n    </>) : <></>;\n};\nconst mapStateToProps = (state) => ({\n    userProfile: state.userProfile.profile,\n});\n\n\nexport default compose(withRouter, withOktaAuth, connect(mapStateToProps, { fetchUserProfileData }))(Admin);","import React from 'react';\nimport { BrowserRouter as Router, Route, Redirect, useHistory } from 'react-router-dom';\nimport { Security, LoginCallback, SecureRoute, OktaContext } from '@okta/okta-react';\nimport { OktaAuth, toRelativeUrl } from '@okta/okta-auth-js';\nimport Home from './Home';\nimport StatsRedirect from './StatsRedirect';\nimport About from './About.js';\nimport AnalyticsHome from './analytics/AnalyticsHome';\nimport UserException from './admin/user-exception/UserException';\nimport Admin from './admin';\n\n// const config = {\n//     issuer: process.env.REACT_APP_OKTA_ISSUER,\n//     redirectUri: process.env.REACT_APP_OKTA_REDIRECT_URI,\n//     clientId: process.env.REACT_APP_OKTA_CLIENT_ID,\n//     pkce: true,\n// };\n\nconst oktaAuth = new OktaAuth({\n    issuer: process.env.REACT_APP_OKTA_ISSUER,\n    redirectUri: process.env.REACT_APP_OKTA_REDIRECT_URI,\n    clientId: process.env.REACT_APP_OKTA_CLIENT_ID,\n    pkce: true,\n});\n\nconst App = () => {\n    const history = useHistory();\n    const restoreOriginalUri = async (_oktaAuth, originalUri) => {\n        console.log(\"Version: 1.4.1\");\n        history.replace(toRelativeUrl(originalUri || '/', window.location.origin));\n    };\n    return (\n        <Security oktaAuth={oktaAuth} restoreOriginalUri={restoreOriginalUri}>\n            <SecureRoute path=\"/\" exact component={Home} />\n            <Route path=\"/implicit/callback\" component={LoginCallback} />\n            <SecureRoute path=\"/analytics\" exact component={AnalyticsHome} />\n            <SecureRoute path=\"/about\" exact component={About} />\n            <SecureRoute path=\"/admin\" component={Admin} />\n        </Security>\n    );\n};\n\nconst AppWithRouterAccess = () => (\n    <div className=\"\">\n        <Router>\n            <App />\n            <Route path=\"/redirect/:user/:app\" exact component={StatsRedirect} />\n        </Router>\n    </div>\n);\n\nexport default AppWithRouterAccess;","import {\n    ADD_USER_EXCEPTION_FAILURE,\n    ADD_USER_EXCEPTION_REQUEST,\n    ADD_USER_EXCEPTION_SUCCESS, UPDATE_MSG_ADD, DELETE_USER_EXCEPTION_FAILURE,\n    DELETE_USER_EXCEPTION_REQUEST,\n    DELETE_USER_EXCEPTION_SUCCESS,\n    FETCH_USER_EXCEPTION_FAILURE,\n    FETCH_USER_EXCEPTION_REQUEST,\n    FETCH_USER_EXCEPTION_SUCCESS,\n} from '../../actions/admin/userException.action';\nimport { sortArray } from '../../utils/common';\n\nconst formatDate = (date) => date.toString().replace(/GMT.*/g, '');\n\n\nconst initialState = {\n    data: [],\n    loading: false,\n    error: '',\n    updatedDateTime: formatDate(new Date()),\n    newItemError: null,\n    deleteItemError: null,\n};\n\n\nconst userExceptionReducer = (state = initialState, action) => {\n    switch (action.type) {\n        case FETCH_USER_EXCEPTION_REQUEST:\n            return { ...state, loading: true, error: null };\n        case FETCH_USER_EXCEPTION_SUCCESS:\n            return {\n                ...state,\n                updatedDateTime: formatDate(new Date()),\n                loading: false,\n                data: sortArray(action.payload, 'email'),\n            };\n        case FETCH_USER_EXCEPTION_FAILURE:\n            return { ...state, loading: false, error: action.payload };\n\n        case ADD_USER_EXCEPTION_REQUEST:\n            return { ...state, loading: true, error: null };\n        case ADD_USER_EXCEPTION_SUCCESS:\n            const data_add = action.payload?.id ? [...state.data, { ...action.payload }] : [...state.data];\n            return {\n                ...state,\n                updatedDateTime: formatDate(new Date()),\n                loading: false,\n                data: sortArray(data_add, 'email'),\n            };\n        case ADD_USER_EXCEPTION_FAILURE:\n            return { ...state, loading: false, newItemError: action.payload };\n\n        case DELETE_USER_EXCEPTION_REQUEST:\n            return { ...state, loading: true, error: null };\n        case DELETE_USER_EXCEPTION_SUCCESS:\n            const data_delete = action.payload ? [...state.data.filter(f => f.id !== action.payload)] : [...state.data];\n            return {\n                ...state,\n                updatedDateTime: formatDate(new Date()),\n                loading: false,\n                data: sortArray(data_delete, 'email'),\n            };\n        case DELETE_USER_EXCEPTION_FAILURE:\n            return { ...state, loading: false, deleteItemError: action.payload };\n        case UPDATE_MSG_ADD:\n            return { ...state, loading: false, error: action.payload };\n        default:\n            return state;\n    }\n};\n\nexport default userExceptionReducer;","import {\n    FETCH_USER_PROFILE_FAILURE, FETCH_USER_PROFILE_REQUEST, FETCH_USER_PROFILE_SUCCESS,\n} from '../../actions/profile/profile.action';\n\nconst initialState = {\n    profile: null,\n};\n\nconst userProfileReducer = (state = initialState, action) => {\n    switch (action.type) {\n        case FETCH_USER_PROFILE_REQUEST:\n            return { ...state, loading: true, error: null };\n        case FETCH_USER_PROFILE_SUCCESS:\n            return { ...state, loading: false, profile: action.payload };\n        case FETCH_USER_PROFILE_FAILURE:\n            return { ...state, loading: false, error: action.payload };\n        default:\n            return state;\n    }\n\n};\n\nexport default userProfileReducer;","import {\n    FETCH_APPLICATION_FAILURE,\n    FETCH_APPLICATION_REQUEST,\n    FETCH_APPLICATION_SUCCESS,\n    UPDATE_APPLICATION_FAILURE,\n    UPDATE_APPLICATION_REQUEST,\n    UPDATE_APPLICATION_SUCCESS,\n} from '../../actions/admin/application.action';\nimport { sortArray } from '../../utils/common';\n\nconst formatDate = (date) => date.toString().replace(/GMT.*/g, '');\n\nconst initialState = {\n    applicationData: [], loading: false, error: '',\n};\n\nconst ApplicationReducer = (state = initialState, action) => {\n    switch (action.type) {\n        case FETCH_APPLICATION_REQUEST:\n            return { ...state, loading: true, error: null };\n        case FETCH_APPLICATION_SUCCESS:\n            return {\n                ...state,\n                updatedDateTime: formatDate(new Date()),\n                loading: false,\n                applicationData: sortArray(action.payload,'appName'),\n            };\n        case FETCH_APPLICATION_FAILURE:\n            return { ...state, loading: false, error: action.payload };\n        case UPDATE_APPLICATION_REQUEST:\n            return { ...state, loading: true, error: null };\n\n        case UPDATE_APPLICATION_SUCCESS:\n            if (!action.payload?.id) return state;\n\n\n            const idx = state.applicationData.findIndex(f => f.id === action.payload.id);\n\n            state.applicationData[idx] = { ...action.payload };\n\n\n            // const data_add = action.payload?.id ? [...state.applicationData.filter(item => item.id !== action.payload.id), { ...action.payload }] : [...state.applicationData];\n            return {\n                ...state,\n                updatedDateTime: formatDate(new Date()),\n                loading: false,\n                applicationData: [...sortArray(state.applicationData,'appName')],\n            };\n        case UPDATE_APPLICATION_FAILURE:\n            return { ...state, loading: false, error: action.payload };\n        default:\n            return state;\n    }\n};\n\nexport default ApplicationReducer;","import {\n    EXPORT_ZOOM_CLEAN_LOGGING_FAILURE,\n    EXPORT_ZOOM_CLEAN_LOGGING_REQUEST, EXPORT_ZOOM_CLEAN_LOGGING_SUCCESS,\n    EXPORT_ZOOM_LOGGING_FAILURE,\n    EXPORT_ZOOM_LOGGING_REQUEST,\n    EXPORT_ZOOM_LOGGING_SUCCESS,\n    FETCH_ZOOM_CLEAN_LOGGING_FAILURE,\n    FETCH_ZOOM_CLEAN_LOGGING_REQUEST,\n    FETCH_ZOOM_CLEAN_LOGGING_SUCCESS,\n    FETCH_ZOOM_LOGGING_FAILURE,\n    FETCH_ZOOM_LOGGING_REQUEST,\n    FETCH_ZOOM_LOGGING_SUCCESS,\n} from '../../actions/admin/zoom-logging.action';\nimport { formatDateFunc, sortArray } from '../../utils/common';\n\n\nconst initialState = {\n    log: [], loading: false, error: '', cleanLog: [],\n};\n\nconst ZoomLoggingReducer = (state = initialState, action) => {\n    switch (action.type) {\n        case FETCH_ZOOM_LOGGING_REQUEST:\n            return { ...state, loading: true, error: null };\n        case FETCH_ZOOM_LOGGING_SUCCESS:\n            return {\n                ...state,\n                updatedDateTime: formatDateFunc(new Date()),\n                loading: false,\n                log: sortArray(action.payload, 'eventTimestamp'),\n            };\n        case FETCH_ZOOM_LOGGING_FAILURE:\n            return { ...state, loading: false, error: action.payload };\n        case EXPORT_ZOOM_LOGGING_REQUEST:\n            return { ...state, loading: true, error: null };\n        case EXPORT_ZOOM_LOGGING_SUCCESS:\n            return {\n                ...state, loading: false, error: '',\n            };\n        case EXPORT_ZOOM_LOGGING_FAILURE:\n            return { ...state, loading: false, error: action.payload };\n        case FETCH_ZOOM_CLEAN_LOGGING_REQUEST:\n            return { ...state, loading: true, error: null };\n        case FETCH_ZOOM_CLEAN_LOGGING_SUCCESS:\n            return {\n                ...state,\n                updatedDateTime: formatDateFunc(new Date()),\n                loading: false,\n                cleanLog: sortArray(action.payload, 'eventTimestamp'),\n            };\n        case FETCH_ZOOM_CLEAN_LOGGING_FAILURE:\n            return { ...state, loading: false, error: action.payload };\n        case  EXPORT_ZOOM_CLEAN_LOGGING_REQUEST:\n            return { ...state, loading: true, error: null };\n        case  EXPORT_ZOOM_CLEAN_LOGGING_SUCCESS:\n            return {\n                ...state, loading: false, error: '',\n            };\n        case  EXPORT_ZOOM_CLEAN_LOGGING_FAILURE:\n            return { ...state, loading: false, error: action.payload };\n        default:\n            return state;\n    }\n};\n\nexport default ZoomLoggingReducer;","import { combineReducers } from 'redux';\nimport approvalListReducer from './approvalsListReducer';\nimport appsListReducer from './intPortalReducers/appsListReducer';\nimport userReducer from './userReducer';\n// import popUpReducer from './popUpReducer';\nimport { reducer as notifications } from 'react-notification-system-redux';\nimport desktopClickAnalyticsReducer from './analyticsReducers/desktopClicksAnalytics';\nimport desktopActivityAnalyticsReducer from './analyticsReducers/desktopActivityAnalytics';\nimport attaAnalyticsReducer from './analyticsReducers/attaAnalytics';\nimport mostActiverUsersAnalyticsReducer from './analyticsReducers/mostActiverUsersAnalytics';\nimport uniqueUserCountsAnaltyicsReducer from './analyticsReducers/uniqueUserCountsAnaltyics';\nimport userExceptionReducer from './admin/userException.reducer';\nimport userProfileReducer from './profile/profile.reducer';\nimport ApplicationReducer from './admin/application.reducer';\nimport ZoomLoggingReducer from './admin/zoom-logging.reducer';\n\n\nlet initialCountState = [\n    { sysName: 'All', id: '0', amount: '0' },\n    { sysName: 'Agile', id: '1', amount: '0' },\n    { sysName: 'ISU', id: '2', amount: '0' },\n    { sysName: 'SAP QN', id: '3', amount: '0' },\n    { sysName: 'Coupa', id: '4', amount: '0' },\n    { sysName: 'SAM', id: '5', amount: '0' },\n    { sysName: 'HelpNow', id: '6', amount: '0' },\n    { sysName: 'Trackwise', id: '7', amount: '0' },\n    { sysName: 'Ivalua', id: '8', amount: '0' },\n    { sysName: 'RCE ServiceNow', id: '9', amount: '0' },\n    { sysName: 'Concur', id: '10', amount: '0' },\n    { sysName: 'Neptune MT', id: '11', amount: '0' },\n    { sysName: 'Fieldglass', id: '12', amount: '0' },\n    { sysName: 'SmartRecruiters', id: '13', amount: '0' },\n    { sysName: 'IT Timesheet', id: '14', amount: '0' },\n    { sysName: 'Neptune PS', id: '15', amount: '0' },\n    { sysName: 'My HCM', id: '16', amount: '0' },\n    { sysName: 'MES', id: '17', amount: '0' },\n    { sysName: 'Adobe Sign', id: '18', amount: '0' },\n    { sysName: 'Archibus', id: '19', amount: '0' },\n    { sysName: 'Workday', id: '20', amount: '0' },\n    { sysName: 'Purhcase Order', id: '21', amount: '0' },\n    { sysName: 'Workforce', id: '22', amount: '0' }\n\n];\n\nlet previousCountState = [\n    { sysName: 'All', id: '0', amount: '0' },\n    { sysName: 'Agile', id: '1', amount: '0' },\n    { sysName: 'ISU', id: '2', amount: '0' },\n    { sysName: 'SAP QN', id: '3', amount: '0' },\n    { sysName: 'Coupa', id: '4', amount: '0' },\n    { sysName: 'SAM', id: '5', amount: '0' },\n    { sysName: 'HelpNow', id: '6', amount: '0' },\n    { sysName: 'Trackwise', id: '7', amount: '0' },\n    { sysName: 'Ivalua', id: '8', amount: '0' },\n    { sysName: 'RCE ServiceNow', id: '9', amount: '0' },\n    { sysName: 'Concur', id: '10', amount: '0' },\n    { sysName: 'Neptune MT', id: '11', amount: '0' },\n    { sysName: 'Fieldglass', id: '12', amount: '0' },\n    { sysName: 'SmartRecruiters', id: '13', amount: '0' },\n    { sysName: 'IT Timesheet', id: '14', amount: '0' },\n    { sysName: 'Neptune PS', id: '15', amount: '0' },\n    { sysName: 'My HCM', id: '16', amount: '0' },\n    { sysName: 'MES', id: '17', amount: '0' },\n    { sysName: 'Adobe Sign', id: '18', amount: '0' },\n    { sysName: 'Archibus', id: '19', amount: '0' },\n    { sysName: 'Workday', id: '20', amount: '0' },\n    { sysName: 'Purhcase Order', id: '21', amount: '0' },\n    { sysName: 'Workforce', id: '22', amount: '0' }\n];\n\nlet previousCountStateTest = [\n    { sysName: 'All', id: '0', amount: '12' },\n    { sysName: 'Agile', id: '1', amount: '3' },\n    { sysName: 'ISU', id: '2', amount: '1' },\n    { sysName: 'SAP QN', id: '3', amount: '7' },\n    { sysName: 'Coupa', id: '4', amount: '0' },\n    { sysName: 'SAM', id: '5', amount: '0' },\n    { sysName: 'HelpNow', id: '6', amount: '0' },\n    { sysName: 'Trackwise', id: '7', amount: '0' },\n    { sysName: 'Ivalua', id: '8', amount: '0' },\n    { sysName: 'RCE ServiceNow', id: '9', amount: '0' },\n    { sysName: 'Concur', id: '10', amount: '0' },\n    { sysName: 'Neptune MT', id: '11', amount: '0' },\n    { sysName: 'Fieldglass', id: '12', amount: '0' },\n    { sysName: 'SmartRecruiters', id: '13', amount: '0' },\n    { sysName: 'IT Timesheet', id: '14', amount: '0' },\n];\n\n\n//update previous system counts\nconst previousCountsReducer = (state = previousCountState, action) => {\n    if (action.type == 'UPDATE_PREVIOUS_COUNTS') {\n        //console.log('Updating previous Counts Reducer: ', action.payload);\n        return action.payload;\n    }\n\n    return state; //default\n};\n\n//update amount of approvals for each system \nconst systemsReducer = (state = initialCountState, action) => {\n    switch (action.type) {\n        case 'FETCH_APPROVALS':\n            //let allCount = action.payload.approvals.length;\n            let allCount = 0;\n            let agileCount = 0;\n            // let aribaCount = 0;\n            let isuCount = 0;\n            //let isuCount = Math.floor(Math.random() * 9); //for testing notification\n            let sapQnCount = 0;\n            let coupaCount = 0;\n            let samCount = 0;\n            let snowCount = 0;\n            let trackwiseCount = 0;\n            let ivaluaCount = 0;\n            let rceCount = 0;\n            let itTimeSheetCount = 0;\n            let concurCount = 0;\n            let neptuneMtCount = 0;\n            let fieldglassCount = 0;\n            let smartRecruitersCount = 0;\n            let neptunePsCount = 0;\n            let myHcmCount = 0;\n            let mesCount = 0;\n            let adobeSignCount = 0;\n            let archibusCount = 0;\n            let workdayCount = 0;\n            let purchaseOrderCount = 0;\n            let workforceCount = 0;\n\n            for (let x of action.payload.approvals) {\n                if (x.systemName === 'agile') {\n                    agileCount++;\n                } else if (x.systemName === 'isu') {\n                    isuCount++;\n                } else if (x.systemName === 'sap qn') {\n                    sapQnCount++;\n                } else if (x.systemName === 'coupa') {\n                    coupaCount++;\n                } else if (x.systemName === 'sam') {\n                    samCount++;\n                } else if (x.systemName === 'helpnow') {\n                    snowCount++;\n                } else if (x.systemName === 'trackwise') {\n                    trackwiseCount++;\n                } else if (x.systemName === 'ivalua') {\n                    ivaluaCount++;\n                } else if (x.systemName === 'rce servicenow') {\n                    rceCount++;\n                } else if (x.systemName === 'it timesheet') {\n                    itTimeSheetCount++;\n                } else if (x.systemName === 'concur') {\n                    concurCount++;\n                } else if (x.systemName === 'neptune mt') {\n                    neptuneMtCount++;\n                } else if (x.systemName === 'fieldglass') {\n                    fieldglassCount++;\n                } else if (x.systemName === 'smartrecruiters') {\n                    smartRecruitersCount++;\n                } else if (x.systemName === 'neptune ps') {\n                    neptunePsCount++;\n                } else if (x.systemName === 'my hcm') {\n                    myHcmCount++;\n                } else if (x.systemName === 'mes') {\n                    mesCount++;\n                } else if (x.systemName === 'adobe sign') {\n                    adobeSignCount++;\n                } else if (x.systemName === 'archibus') {\n                    archibusCount++;\n                } else if (x.systemName === 'workday') {\n                    workdayCount++;\n                } else if (x.systemName === 'purchase order') {\n                    purchaseOrderCount++;\n                } else if (x.systemName === 'workforce') {\n                    workforceCount++;\n                }\n            }\n\n            allCount = agileCount + isuCount\n                + sapQnCount + coupaCount\n                + samCount + snowCount\n                + trackwiseCount + ivaluaCount\n                + rceCount + concurCount\n                + neptuneMtCount + fieldglassCount\n                + smartRecruitersCount + itTimeSheetCount\n                + neptunePsCount + myHcmCount\n                + mesCount + adobeSignCount\n                + archibusCount + workdayCount\n                + purchaseOrderCount + workforceCount;\n\n            return [\n                { sysName: 'All', id: '0', amount: allCount },\n                { sysName: 'Agile', id: '1', amount: agileCount },\n                { sysName: 'ISU', id: '2', amount: isuCount },\n                { sysName: 'SAP QN', id: '3', amount: sapQnCount },\n                { sysName: 'Coupa', id: '4', amount: coupaCount },\n                { sysName: 'SAM', id: '5', amount: samCount },\n                { sysName: 'HelpNow', id: '6', amount: snowCount },\n                { sysName: 'Trackwise', id: '7', amount: trackwiseCount },\n                { sysName: 'Ivalua', id: '8', amount: ivaluaCount },\n                { sysName: 'RCE ServiceNow', id: '9', amount: rceCount },\n                { sysName: 'Concur', id: '10', amount: concurCount },\n                { sysName: 'Neptune MT', id: '11', amount: neptuneMtCount },\n                { sysName: 'Fieldglass', id: '12', amount: fieldglassCount },\n                { sysName: 'SmartRecruiters', id: '13', amount: smartRecruitersCount },\n                { sysName: 'IT Timesheet', id: '14', amount: itTimeSheetCount },\n                { sysName: 'Neptune PS', id: '15', amount: neptunePsCount },\n                { sysName: 'My HCM', id: '16', amount: myHcmCount },\n                { sysName: 'MES', id: '17', amount: mesCount },\n                { sysName: 'Adobe Sign', id: '18', amount: adobeSignCount },\n                { sysName: 'Archibus', id: '19', amount: archibusCount },\n                { sysName: 'Workday', id: '20', amount: workdayCount },\n                { sysName: 'Purchase Order', id: '21', amount: purchaseOrderCount },\n                { sysName: 'Workforce', id: '22', amount: workforceCount }\n            ];\n\n        case 'TASK_CLEARED':\n            let allCountUpdated = state[0].amount;\n            let agileCountUpdated = state[1].amount;\n            let isuCountUpdated = state[2].amount;\n            let sapQnCountUpdated = state[3].amount;\n            let coupaCountUpdated = state[4].amount;\n            let samCountUpdated = state[5].amount;\n            let snowCountUpdated = state[6].amount;\n            let trackwiseCountUpdated = state[7].amount;\n            let ivaluaCountUpdated = state[8].amount;\n            let rceCountUpdated = state[9].amount;\n            let concurUpdated = state[10].amount;\n            let neptuneMtUpdated = state[11].amount;\n            let fieldglassUpdated = state[12].amount;\n            let smartRecruitersUpdated = state[13].amount;\n            let itTimesheetUpdated = state[14].amount;\n            let neptunePsUpdated = state[15].amount;\n            let myHcmUpdated = state[16].amount;\n            let mesUpdated = state[17].amount;\n            let adobeSignUpdated = state[18].amount;\n            let archibusUpdated = state[19].amount;\n            let workdayUpdated = state[20].amount;\n            let purchaseOrderUpdated = state[21].amount;\n            let workforceUpdated = state[22].amount;\n\n            //subtract 1 from all count\n            allCountUpdated = allCountUpdated - 1;\n\n            //subtract 1  form specific system count\n            switch (action.payload.systemName) {\n                case 'isu':\n                    isuCountUpdated = isuCountUpdated - 1;\n                    break;\n                case 'agile':\n                    agileCountUpdated = agileCountUpdated - 1;\n                    break;\n                case 'sap qn':\n                    sapQnCountUpdated = sapQnCountUpdated - 1;\n                    break;\n                case 'coupa':\n                    coupaCountUpdated = coupaCountUpdated - 1;\n                    break;\n                case 'sam':\n                    samCountUpdated = samCountUpdated - 1;\n                    break;\n                case 'helpnow':\n                    snowCountUpdated = snowCountUpdated - 1;\n                    break;\n                case 'trackwise':\n                    trackwiseCountUpdated = trackwiseCountUpdated - 1;\n                    break;\n                case 'ivalua':\n                    ivaluaCountUpdated = ivaluaCountUpdated - 1;\n                    break;\n                case 'rce servicenow':\n                    rceCountUpdated = rceCountUpdated - 1;\n                    break;\n                case 'concur':\n                    concurUpdated = concurUpdated - 1;\n                    break;\n                case 'neptune mt':\n                    neptuneMtUpdated = neptuneMtUpdated - 1;\n                    break;\n                case 'fieldglass':\n                    fieldglassUpdated = fieldglassUpdated - 1;\n                    break;\n                case 'smartrecruiters':\n                    smartRecruitersUpdated = smartRecruitersUpdated - 1;\n                    break;\n                case 'it timesheet':\n                    itTimesheetUpdated = itTimesheetUpdated - 1;\n                    break;\n                case 'neptune ps':\n                    neptunePsUpdated = neptunePsUpdated - 1;\n                    break;\n                case 'my hcm':\n                    myHcmUpdated = myHcmUpdated - 1;\n                    break;\n                case 'mes':\n                    mesUpdated = mesUpdated - 1;\n                    break;\n                case 'adobe sign':\n                    adobeSignUpdated = adobeSignUpdated - 1;\n                    break;\n                case 'archibus':\n                    archibusUpdated = archibusUpdated - 1;\n                    break;\n                case 'workday':\n                    workdayUpdated = workdayUpdated - 1;\n                    break;\n                case 'purchase order':\n                    purchaseOrderUpdated = purchaseOrderUpdated - 1;\n                    break;\n                case 'workforce':\n                    workforceUpdated = workforceUpdated - 1;\n                    break;\n                default:\n                    break;\n            }\n            return [\n                { sysName: 'All', id: '0', amount: allCountUpdated },\n                { sysName: 'Agile', id: '1', amount: agileCountUpdated },\n                { sysName: 'ISU', id: '2', amount: isuCountUpdated },\n                { sysName: 'SAP QN', id: '3', amount: sapQnCountUpdated },\n                { sysName: 'Coupa', id: '4', amount: coupaCountUpdated },\n                { sysName: 'SAM', id: '5', amount: samCountUpdated },\n                { sysName: 'HelpNow', id: '6', amount: snowCountUpdated },\n                { sysName: 'Trackwise', id: '7', amount: trackwiseCountUpdated },\n                { sysName: 'Ivalua', id: '8', amount: ivaluaCountUpdated },\n                { sysName: 'RCE ServiceNow', id: '9', amount: rceCountUpdated },\n                { sysName: 'Concur', id: '10', amount: concurUpdated },\n                { sysName: 'Neptune MT', id: '11', amount: neptuneMtUpdated },\n                { sysName: 'Fieldglass', id: '12', amount: fieldglassUpdated },\n                { sysName: 'SmartRecruiters', id: '13', amount: smartRecruitersUpdated },\n                { sysName: 'IT Timesheet', id: '14', amount: itTimesheetUpdated },\n                { sysName: 'Neptune PS', id: '15', amount: neptunePsUpdated },\n                { sysName: 'My HCM', id: '16', amount: myHcmUpdated },\n                { sysName: 'MES', id: '17', amount: mesUpdated },\n                { sysName: 'Adobe Sign', id: '18', amount: adobeSignUpdated },\n                { sysName: 'Archibus', id: '19', amount: archibusUpdated },\n                { sysName: 'Workday', id: '20', amount: workdayUpdated },\n                { sysName: 'Purchase Order', id: '21', amount: purchaseOrderUpdated },\n                { sysName: 'Workforce', id: '22', amount: workforceUpdated }\n            ];\n        default:\n            return state;\n    }\n};\n\n//update selected system \nconst selectedSystemReducer = (selectedSystem = { 'sysName': 'All', 'id': '0', 'amount': '0' }, action) => {\n    // eslint-disable-next-line\n    if (action.type == 'SYSTEM_SELECTED') {\n        // console.log(`Selected System reducer: ${JSON.stringify(action.payload)}`);\n        return action.payload;\n    }\n\n    return selectedSystem;\n};\n\nconst selectedAttaFilterReducer = (selectedSystem = 'Last 30 Days', action) => {\n    if (action.type === 'ATTA_FILTER_SELECTED') {\n        return action.payload;\n    }\n\n    return selectedSystem;\n}\n\nconst selectedMostActiveUserListReducer = (selectedSystem = 'Most Active', action) => {\n    if (action.type === 'ACTIVE_USERS_LIST_FILTER_SELECTED') {\n        return action.payload;\n    }\n\n    return selectedSystem;\n}\n\nconst selectedUniqueUsersCountReducer = (selectedSystem = 'Daily', action) => {\n    if (action.type === 'UNIQUE_USERS_COUNT_FILTER_SELECTED') {\n        return action.payload;\n    }\n\n    return selectedSystem;\n}\n\n\nconst tokenCreatedReducer = (curToken = null, action) => {\n    // eslint-disable-next-line\n    if (action.type === 'TOKEN_CREATED') {\n        //console.log(`Reducer payload: ${action.payload} `);\n        return action.payload;\n    }\n\n    return curToken;\n};\n\n//update day filter\nconst dayFilterReducer = (curDayFilter = 'all', action) => {\n    if (action.type === 'DAY_FILTER_SELECTED') {\n        return action.payload;\n    }\n\n    return curDayFilter;\n};\n\n//add cleared id to clearedID list\nconst clearedListReducer = (state = [], action) => {\n    //console.log(\"This is the reduceer: \", action);\n    if (action.type === 'TASK_CLEARED') {\n        return [...state, action.payload]; //creates new array with prrevious array contents and new entry\n    }\n    if (action.type === 'FETCH_APPROVALS') {\n        //clear task cleared list\n        return [];\n    }\n    return state;\n};\n\nconst dataFetchCompleteReducer = (fetchComplete = 'false', action) => {\n    if (action.type === 'FETCH_SENT') {\n        return fetchComplete;\n    }\n    if (action.type === 'FETCH_COMPLETE') {\n        return true;\n    }\n    return fetchComplete;\n};\n\nconst activityGraphIsLoadingReducer = (isLoading = 'true', action) => {\n    if (action.type === 'ACTIVITY_GRAPH_IS_LOADING') {\n        return isLoading;\n    }\n    if (action.type === 'ACTIVITY_GRAPH_IS_READY') {\n        return false;\n    }\n    return isLoading;\n};\n\nconst clicksGraphIsLoadingReducer = (isLoading = 'true', action) => {\n    if (action.type === 'CLICKS_GRAPH_IS_LOADING') {\n        return isLoading;\n    }\n    if (action.type === 'CLICKS_GRAPH_IS_READY') {\n        return false;\n    }\n    return isLoading;\n};\n\nconst attaAnalyticsLoadingReducer = (isLoading = 'true', action) => {\n    if (action.type === 'ATTA_GRAPH_IS_LOADING') {\n        return isLoading;\n    }\n    if (action.type === 'ATTA_GRAPH_IS_READY') {\n        return false;\n    }\n    return isLoading;\n};\n\nconst mostActiveUsersListAnalyticsLoadingReducer = (isLoading = 'true', action) => {\n    if (action.type === 'ACTIVE_USERS_LIST_IS_LOADING') {\n        return isLoading;\n    }\n    if (action.type === 'ACTIVE_USERS_LIST_IS_READY') {\n        return false;\n    }\n    return isLoading;\n};\n\nconst uniqueUsersCountsAnalyticsLoadingReducer = (isLoading = 'true', action) => {\n    if (action.type === 'UNIQUE_USER_COUNTS_IS_LOADING') {\n        return isLoading;\n    }\n    if (action.type === 'UNIQUE_USERS_COUNTS_IS_READY') {\n        return false;\n    }\n    return isLoading;\n};\n\nconst isInitialPulledDataReducer = (isInitialData = 'false', action) => {\n    if (action.type === 'TASK_CLEARED') {\n        return false;\n    }\n    if (action.type === 'FETCH_COMPLETE') {\n        return true;\n    }\n    return isInitialData;\n};\n\nconst userAnalyticsAccessReducer = (isInitialData = true, action) => {\n    // console.log('USER analytics payload', action.payload);\n    switch (action.type) {\n        case 'ANALYTICS_ACCESS':\n            return action.payload;\n        default:\n            return isInitialData;\n    }\n};\n\n\nexport default combineReducers({\n    systems: systemsReducer,\n    previousSystemCounts: previousCountsReducer,\n    selectedSystem: selectedSystemReducer,\n    selectedAttaFilter: selectedAttaFilterReducer,\n    selectedMostActiveUserFilter: selectedMostActiveUserListReducer,\n    selectedUniqueUsersCountsFilter: selectedUniqueUsersCountReducer,\n    curToken: tokenCreatedReducer,\n    approvalList: approvalListReducer,\n    user: userReducer,\n    dayFilter: dayFilterReducer,\n    clearedList: clearedListReducer,\n    dataFetchComplete: dataFetchCompleteReducer,\n    isInitialPulledData: isInitialPulledDataReducer,\n    popUp: notifications,\n    intPortalApps: appsListReducer,\n    desktopClickAnalytics: desktopClickAnalyticsReducer,\n    desktopActivityAnalytics: desktopActivityAnalyticsReducer,\n    avgTimeToApproveAnalytics: attaAnalyticsReducer,\n    mostActiveUsersList: mostActiverUsersAnalyticsReducer,\n    uniqueUserCounts: uniqueUserCountsAnaltyicsReducer,\n    analyticsAccess: userAnalyticsAccessReducer,\n    activityGraphIsLoading: activityGraphIsLoadingReducer,\n    clicksGraphIsLoading: clicksGraphIsLoadingReducer,\n    attaGraphIsLoading: attaAnalyticsLoadingReducer,\n    mostActiveUsersListIsLoading: mostActiveUsersListAnalyticsLoadingReducer,\n    uniqueUserCountsIsLoading: uniqueUsersCountsAnalyticsLoadingReducer,\n    userException: userExceptionReducer,\n    userProfile: userProfileReducer,\n    application: ApplicationReducer,\n    zoomLogging: ZoomLoggingReducer,\n});","export default (state = [], action) => {\n   switch (action.type) {\n       case 'FETCH_APPROVALS':\n           return action.payload.approvals;\n        case 'TASK_CLEARED':\n            //remove ID task from approval list\n            return state.filter(approval => approval.id !== action.payload.id);\n        default:\n            return state;\n   }\n};","export default (curUserObj={}, action) => {\n    switch (action.type) {\n        case 'FETCH_APPROVALS':\n            //console.log(`Cur User name ${action.payload.name}`);\n            return action.payload.curUserInfo;\n         default:\n             return curUserObj;\n    }\n };","export default (state = [], action) => {\n    switch (action.type) {\n        case 'FETCH_PORTAL_APPS':\n            return action.payload;\n         default:\n             return state;\n    }\n};","export default (state = [], action) => {\n    switch (action.type) {\n        case 'FETCH_CLICKS_YEAR_DATA':\n            return action.payload;\n        case 'FETCH_CLICKS_MONTH_DATA':\n            return action.payload;\n        default:\n            return state;\n    }\n};","export default (state = [], action) => {\n    switch (action.type) {\n        case 'FETCH_ACTIVITY_YEAR_DATA':\n            return action.payload;\n        case 'FETCH_ACTIVITY_MONTH_DATA':\n            return action.payload;\n        default:\n            return state;\n    }\n};","export default (state = [], action) => {\n    switch (action.type) {\n        case 'FETCH_ATTA_DATA':\n            return action.payload;\n        default:\n            return state;\n    }\n};","export default (state = [], action) => {\n    switch (action.type) {\n        case 'FETCH_ACTIVE_USERS_LIST_DATA':\n            return action.payload;\n        default:\n            return state;\n    }\n};","export default (state = [], action) => {\n    switch (action.type) {\n        case 'FETCH_UNIQUE_USERS_COUNTS_DATA':\n            return action.payload;\n        default:\n            return state;\n    }\n};","import React, { StrictMode } from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { createStore, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\n//import {store, persistor} from './store';  //config set for maintaining state memory through broswer\n//import { PersistGate } from 'redux-persist/integration/react';\nimport App from './components/App';\nimport reducers from './reducers';\n\n\nconst store = createStore(reducers, applyMiddleware(thunk));  //add thunk to redux store\nReactDOM.render(\n    <StrictMode>\n        <Provider store={store}>\n            <App />\n        </Provider>\n    </StrictMode>\n    ,\n    document.querySelector('#root'),\n);"],"names":["module","exports","arr","len","length","i","arr2","Array","isArray","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","fn","self","this","args","arguments","apply","err","undefined","obj","Object","defineProperty","enumerable","configurable","writable","Symbol","iterator","_arr","_n","_d","_e","_s","_i","next","push","TypeError","objectWithoutPropertiesLoose","source","excluded","target","getOwnPropertySymbols","sourceSymbolKeys","indexOf","prototype","propertyIsEnumerable","call","sourceKeys","keys","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arrayLikeToArray","o","minLen","n","toString","slice","constructor","name","from","test","StyleSheet","options","_this","_insertTag","tag","before","tags","prepend","container","firstChild","nextSibling","insertBefore","isSpeedy","speedy","ctr","nonce","_proto","hydrate","nodes","forEach","insert","rule","document","createElement","setAttribute","appendChild","createTextNode","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","e","process","flush","parentNode","removeChild","abs","Math","String","fromCharCode","trim","replace","pattern","replacement","indexof","search","charat","index","charCodeAt","substr","begin","end","strlen","sizeof","append","array","line","column","position","character","characters","node","root","parent","type","props","children","return","copy","prev","peek","caret","token","alloc","dealloc","delimit","delimiter","whitespace","escaping","count","commenter","identifier","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","serialize","callback","output","stringify","element","join","prefix","hash","compile","parse","rules","rulesets","pseudo","points","declarations","offset","atrule","property","previous","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","size","j","k","x","y","z","getRules","parsed","toRules","fixedElements","WeakMap","compat","isImplicitRule","get","set","parentRules","removeLabel","defaultStylisPlugins","map","combine","exec","match","ssrStyles","querySelectorAll","getAttribute","head","stylisPlugins","_insert","inserted","nodesToHydrate","attrib","split","currentSheet","finalizingPlugins","serializer","collection","middleware","concat","selector","serialized","shouldCache","styles","cache","registered","_extends","assign","hasOwnProperty","func","has","ret","targetComponent","sourceComponent","hoistNonReactStatics$1","getRegisteredStyles","registeredStyles","classNames","rawClassName","className","insertStyles","isStringTag","current","str","h","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","create","memoize","styleName","toLowerCase","processStyleValue","p1","p2","cursor","unitless","handleInterpolation","mergedProps","interpolation","__emotion_styles","anim","string","_key","interpolated","createStringFromObject","previousCursor","result","cached","labelPattern","serializeStyles","stringMode","strings","raw","lastIndex","identifierName","hashString","EmotionCacheContext","createContext","HTMLElement","createCache","CacheProvider","Provider","withEmotionCache","forwardRef","ref","useContext","ThemeContext","useTheme","createCacheWithTheme","weakMemoize","outerTheme","theme","getTheme","ThemeProvider","withTheme","Component","componentName","displayName","render","WithTheme","hoistNonReactStatics","typePropName","Emotion","cssProp","css","newProps","jsx","argsLength","createElementArgArray","createEmotionProps","Global","sheetRef","useRef","useLayoutEffect","rehydrating","querySelector","sheetRefCurrent","nextElementSibling","_len","keyframes","insertable","classnames","cls","toAdd","ClassNames","content","cx","_len2","_key2","merge","ele","utils","require","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","config","requestData","data","requestHeaders","headers","responseType","isFormData","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","setTimeout","onabort","onerror","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","xsrfHeaderName","val","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","cancel","abort","send","bind","Axios","mergeConfig","createInstance","defaultConfig","context","instance","extend","axios","instanceConfig","defaults","Cancel","CancelToken","isCancel","all","promises","spread","isAxiosError","message","__CANCEL__","executor","resolvePromise","reason","throwIfRequested","c","InterceptorManager","dispatchRequest","validator","validators","interceptors","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","shift","newConfig","onFulfilled","onRejected","getUri","handlers","use","eject","id","isAbsoluteURL","combineURLs","requestedURL","enhanceError","code","Error","transformData","throwIfCancellationRequested","transformRequest","common","adapter","transformResponse","toJSON","description","number","fileName","lineNumber","columnNumber","stack","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","isPlainObject","mergeDeepProperties","prop","axiosKeys","otherKeys","filter","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","rawValue","parser","encoder","isString","JSON","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","encode","serializedParams","parts","v","isDate","toISOString","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","RegExp","decodeURIComponent","remove","now","payload","originURL","msie","navigator","userAgent","urlParsingNode","resolveURL","href","protocol","host","hostname","port","pathname","charAt","window","location","requestURL","normalizedName","ignoreDuplicateOf","pkg","thing","deprecatedWarnings","currentVerArr","version","isOlderVersion","thanVersion","pkgVersionArr","destVer","isDeprecated","formatMessage","opt","desc","opts","console","warn","schema","allowUnknown","getPrototypeOf","isFunction","l","FormData","ArrayBuffer","isView","pipe","URLSearchParams","product","assignValue","a","b","stripBOM","hasOwn","classes","argType","inner","default","_assign","emptyObject","validateFormat","format","_invariant","condition","d","f","argIndex","framesToPop","MIXINS_KEY","ReactComponent","isValidElement","ReactNoopUpdateQueue","injectedMixins","ReactClassInterface","mixins","statics","propTypes","contextTypes","childContextTypes","getDefaultProps","getInitialState","getChildContext","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","componentWillUnmount","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","updateComponent","ReactClassStaticInterface","getDerivedStateFromProps","RESERVED_SPEC_KEYS","Constructor","mixSpecIntoComponent","createMergedResultFunction","mixStaticSpecIntoComponent","autobind","validateMethodOverride","isAlreadyDefined","specPolicy","ReactClassMixin","spec","proto","autoBindPairs","__reactAutoBindPairs","isReactClassMethod","createChainedFunction","mergeIntoWithNoDuplicateKeys","one","two","bindAutoBindMethod","component","IsMountedPreMixin","__isMounted","IsMountedPostMixin","replaceState","newState","updater","enqueueReplaceState","isMounted","ReactClassComponent","pairs","autoBindKey","bindAutoBindMethods","refs","state","initialState","methodName","defaultProps","React","factory","global","__self__","F","fetch","DOMException","support","Blob","viewClasses","normalizeName","normalizeValue","iteratorFor","items","Headers","header","getOwnPropertyNames","consumed","body","bodyUsed","fileReaderReady","reader","onload","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","_bodyFormData","DataView","_bodyArrayBuffer","arrayBuffer","text","readAsText","readBlobAsText","chars","readArrayBufferAsText","formData","decode","json","oldValue","values","entries","methods","Request","input","credentials","mode","signal","upcased","normalizeMethod","referrer","form","bytes","rawHeaders","Response","bodyInit","ok","clone","redirectStatuses","redirect","RangeError","init","aborted","xhr","abortXhr","removeEventListener","polyfill","ponyfill","ctx","autoBom","g","dispatchEvent","MouseEvent","createEvent","initMouseEvent","saveAs","HTMLAnchorElement","URL","webkitURL","download","rel","origin","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","title","innerText","safari","readAsDataURL","m","reactIs","REACT_STATICS","contextType","getDerivedStateFromError","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","getOwnPropertyDescriptor","objectPrototype","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","hookCallback","some","hooks","setHookCallback","hasOwnProp","isObjectEmpty","res","arrLen","valueOf","createUTC","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","flags","parsedParts","isNowValid","isNaN","getTime","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","t","momentProperties","updateInProgress","copyConfig","to","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","Function","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","pow","max","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","s","ss","mm","hh","dd","w","ww","M","MM","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","aliases","D","dates","date","days","day","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","hours","hour","ms","milliseconds","millisecond","minutes","minute","months","month","Q","quarters","quarter","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","week","W","isoweeks","isoweek","years","year","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","u","unit","priority","sort","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p3","p4","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","parseInt","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","mod","daysInMonth","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","min","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","createDate","createUTCDate","UTC","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","chooseLocale","names","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","matches","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","keepOffset","toDate","inspect","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","symbols","CancelError","super","isCanceled","PCancelable","userFn","arguments_","onCancel","_cancelHandlers","_isPending","_isCanceled","_rejectOnCancel","_promise","_reject","handler","defineProperties","shouldReject","catch","finally","onFinally","setPrototypeOf","_createChainableTypeChecker2","_createChainableTypeChecker","__esModule","validate","checkType","isRequired","propName","propFullName","componentNameSafe","propFullNameSafe","chainedCheckType","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","secret","getShim","ReactPropTypes","bool","object","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","r","ba","Set","ca","da","ea","fa","ha","ia","ja","ka","B","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","oa","pa","qa","ma","na","la","removeAttribute","setAttributeNS","xlinkHref","ra","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","Reflect","construct","Qa","_render","Ra","$$typeof","_context","_payload","_init","Sa","Ta","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","cb","ownerDocument","eb","Children","db","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","html","mathml","svg","lb","mb","nb","ob","namespaceURI","innerHTML","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeType","nodeValue","qb","gridArea","lineClamp","rb","sb","tb","style","setProperty","substring","ub","menuitem","area","br","col","embed","hr","img","keygen","link","meta","param","track","wbr","vb","wb","is","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","$b","memoizedState","dehydrated","ac","cc","child","sibling","bc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","nc","Map","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","delete","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","transition","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","log","LN2","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","email","range","tel","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","Me","contains","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","start","selectionStart","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","listener","G","$e","af","bf","random","cf","df","capture","passive","Nb","q","ef","ff","parentWindow","gf","hf","J","K","je","char","ke","jf","kf","lf","mf","autoFocus","nf","__html","of","pf","clearTimeout","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","H","I","Cf","N","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","O","eg","fg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","A","p","C","Dg","Eg","Fg","Gg","Kg","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueForceUpdate","Lg","isPureReactComponent","Mg","Ng","Og","getSnapshotBeforeUpdate","Pg","Qg","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","documentElement","tagName","fh","gh","P","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","wh","xh","R","S","T","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","U","useState","getSnapshot","subscribe","useEffect","setSnapshot","Oh","Ph","Qh","Rh","destroy","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useCallback","useImperativeHandle","useMemo","useReducer","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","ReactCurrentOwner","fi","gi","hi","ji","ki","li","mi","baseLanes","ni","oi","pi","qi","ri","pendingContext","Bi","Ci","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","last","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onClick","onclick","createElementNS","V","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","aj","display","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","X","Y","qj","rj","sj","tj","uj","vj","Infinity","wj","ck","Z","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","kk","hk","_calculateChangedBits","unstable_observedBits","unmount","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","show","success","warning","hide","uid","_const","RNS_HIDE_NOTIFICATION","removeAll","RNS_REMOVE_ALL_NOTIFICATIONS","level","RNS_SHOW_NOTIFICATION","_createClass","protoProps","staticProps","_react2","_interopRequireDefault","_propTypes2","_reactRedux","actions","newObj","_interopRequireWildcard","_reducer2","_reactNotificationSystem2","Notifications","_React$Component","_classCallCheck","ReferenceError","_possibleConstructorReturn","__proto__","notifyRef","createRef","subClass","superClass","_inherits","prevProps","_this2","_props","notifications","store","notificationIds","notification","systemNotifications","system","removeNotification","addNotification","onRemove","clearNotifications","nextProps","_props2","rest","_objectWithoutProperties","NotificationsWithContext","Context","ReactReduxContext","Consumer","otherProps","reducer","_toConsumableArray","createReactClass","NotificationItem","Constants","NotificationContainer","getStyles","_style","overrideWidth","positions","marginLeft","bl","reverse","noAnimation","allowHTML","ReactDOM","Helpers","whichTransitionEvent","el","transitions","OTransition","MozTransition","WebkitTransition","transitionKey","visible","removed","dismissible","_noAnimation","_styles","byElement","dismiss","messageWrapper","actionWrapper","_notificationTimer","_height","_isMounted","_removeCount","_getCssPropertyByPosition","tl","tr","_defaultAction","_hideNotification","clear","setState","_removeNotification","_dismiss","_showNotification","_onTransitionEnd","transitionEvent","offsetHeight","autoDismiss","Timer","_handleMouseEnter","pause","_handleMouseLeave","resume","_handleNotificationClick","_allowHTML","notificationStyle","cssByPos","actionButton","overrideStyle","overlay","marginTop","paddingTop","paddingBottom","isVisible","isHidden","label","onMouseEnter","onMouseLeave","Styles","NotificationSystem","_getStyles","setOverrideStyle","wrapper","Wrapper","override","Containers","DefaultStyle","elements","_element","_didNotificationRemoved","toCheck","_notification","levels","onAdd","getNotificationRef","foundNotification","editNotification","newNotification","newNotifications","stateNotification","containers","_notifications","delay","timerId","remaining","defaultColors","rgb","hex","defaultShadowOpacity","STYLES","fontFamily","padding","WebkitBoxSizing","MozBoxSizing","boxSizing","bottom","right","margin","borderRadius","fontSize","WebkitTransform","transform","willChange","borderTop","backgroundColor","WebkitBoxShadow","MozBoxShadow","boxShadow","Title","MessageWrapper","Dismiss","textAlign","Action","background","border","ActionWrapper","batch","getBatch","nullListeners","notify","Subscription","parentSub","unsubscribe","handleChangeWrapper","addNestedSub","trySubscribe","notifyNestedSubs","onStateChange","isSubscribed","Boolean","first","createListenerCollection","tryUnsubscribe","_ref","contextValue","subscription","previousState","getState","useIsomorphicLayoutEffect","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2","_ref2$getDisplayName","getDisplayName","_ref2$methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","_ref2$context","connectOptions","_objectWithoutPropertiesLoose","WrappedComponent","wrappedComponentName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","didStoreComeFromProps","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","previousStateUpdateResult","renderedWrappedComponent","Connect","forwarded","hoistStatics","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextState","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","factories","strictEqual","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","defaultMapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","defaultMapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","defaultMergePropsFactories","_ref$selectorFactory","defaultSelectorFactory","_ref3","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","useReduxContext","createStoreHook","useDefaultReduxContext","useStore","createDispatchHook","useDefaultStore","useDispatch","refEquality","createSelectorHook","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestSelectedState","storeState","newSelectedState","useSelectorWithStoreAndSubscription","newBatch","useSelector","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","__webpack_exports__","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","__WEBPACK_IMPORTED_MODULE_0_react__","__WEBPACK_IMPORTED_MODULE_0_react___default","__WEBPACK_IMPORTED_MODULE_1_matchmediaquery__","__WEBPACK_IMPORTED_MODULE_1_matchmediaquery___default","__WEBPACK_IMPORTED_MODULE_2_hyphenate_style_name__","__WEBPACK_IMPORTED_MODULE_3_shallow_equal_objects__","__WEBPACK_IMPORTED_MODULE_3_shallow_equal_objects___default","__WEBPACK_IMPORTED_MODULE_4__toQuery__","__WEBPACK_IMPORTED_MODULE_5__Context__","makeQuery","settings","query","hyphenateKeys","reduce","useIsUpdate","useDevice","deviceFromProps","deviceFromContext","getDevice","_React$useState2","device","setDevice","newDevice","useQuery","getQuery","_React$useState4","setQuery","newQuery","useMatchMedia","getMatchMedia","_React$useState6","mq","setMq","isUpdate","dispose","useMatches","mediaQuery","_React$useState8","setMatches","updateMatches","addListener","removeListener","useMediaQuery","onChange","deviceSettings","toHyphenLower","hyphenateStyleName","hName","uppercasePattern","msPattern","__WEBPACK_IMPORTED_MODULE_0_hyphenate_style_name__","__WEBPACK_IMPORTED_MODULE_1__mediaQuery__","negate","cond","keyVal","realKey","conds","toQuery","__WEBPACK_IMPORTED_MODULE_0__useMediaQuery__","__WEBPACK_IMPORTED_MODULE_1__Component__","__WEBPACK_IMPORTED_MODULE_2__toQuery__","__WEBPACK_IMPORTED_MODULE_3__Context__","Mql","forceStatic","mql","update","evt","media","dynamicMatch","staticMatch","matchMedia","matchQuery","parseQuery","inverse","typeMatch","expressionsMatch","expressions","every","expression","feature","modifier","expValue","toPx","toDpi","toDecimal","captures","RE_MEDIA_QUERY","RE_MQ_EXPRESSION","RE_MQ_FEATURE","ratio","numbers","decimal","Number","resolution","RE_RESOLUTION_UNIT","RE_LENGTH_UNIT","shallowEqualObjects","aKeys","bKeys","ownKeys","enumerableOnly","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","__WEBPACK_IMPORTED_MODULE_0_prop_types__","__WEBPACK_IMPORTED_MODULE_0_prop_types___default","stringOrNumber","matchers","orientation","scan","aspectRatio","deviceAspectRatio","deviceHeight","deviceWidth","colorIndex","monochrome","features","minAspectRatio","maxAspectRatio","minDeviceAspectRatio","maxDeviceAspectRatio","minHeight","maxHeight","minDeviceHeight","maxDeviceHeight","minWidth","maxWidth","minDeviceWidth","maxDeviceWidth","minColor","maxColor","minColorIndex","maxColorIndex","minMonochrome","maxMonochrome","minResolution","maxResolution","types","grid","aural","braille","handheld","print","projection","screen","tty","tv","embossed","ReactIs","REACT_FRAGMENT_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_LAZY_TYPE","REACT_MEMO_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","REACT_BLOCK_TYPE","REACT_ELEMENT_TYPE","REACT_ASYNC_MODE_TYPE","$$typeofType","REACT_PORTAL_TYPE","hasWarnedAboutDeprecatedIsAsyncMode","hasSymbol","emptyFunctionThatReturnsNull","printWarning","throwOnDirectAccess","getIteratorFn","maybeIterable","iteratorFn","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","PropTypeError","createChainableTypeChecker","ANONYMOUS","cacheKey","manualPropTypeCallCache","manualPropTypeWarningCount","createPrimitiveTypeChecker","expectedType","propValue","getPropType","getPreciseType","createArrayOfTypeChecker","typeChecker","createInstanceTypeChecker","expectedClass","expectedClassName","getClassName","createEnumTypeChecker","expectedValues","valuesString","createObjectOfTypeChecker","propType","createUnionTypeChecker","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","createShapeTypeChecker","shapeTypes","createStrictShapeTypeChecker","allKeys","isNode","step","entry","isSymbol","typeSpecs","getStack","typeSpecName","ex","loggedTypeFailures","MediaQuery","isarray","pathToRegexp","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","group","asterisk","partial","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","pretty","segment","attachKeys","sensitive","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","__makeTemplateObject","cooked","__extends","extendStatics","__","__createBinding","k2","__setModuleDefault","__importStar","templateObject_1","templateObject_2","react_1","helpers_1","beat","Loader","_super","speedMultiplier","cssValue","loading","sizeMarginDefaults","PureComponent","BasicColors","calculateRgba","includes","res_1","__exportStar","heightWidthRadiusDefaults","heightWidthDefaults","sizeDefaults","commonValues","sizeValue","radius","parseLengthAndUnit","cssUnit","cm","in","px","pt","em","rem","vw","vmin","vmax","valueString","lengthWithunit","__self","__source","jsxs","forceUpdate","escape","_status","_result","IsSomeRendererActing","only","cloneElement","_currentValue2","_threadCount","createFactory","lazy","memo","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","splice","replaceReducer","nextReducer","$$observable","outerSubscribe","observer","observeState","getUndefinedStateErrorMessage","actionType","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","errorMessage","bindActionCreator","actionCreator","actionCreators","boundActionCreators","compose","funcs","applyMiddleware","middlewares","_dispatch","middlewareAPI","_objectSpread2","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","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","reset","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","pop","skipTempReset","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","performance","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","requestAnimationFrame","port2","port1","onmessage","postMessage","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","observable","on","once","off","_","emit","evtArr","evts","liveEvents","__webpack_module_cache__","cachedModule","loaded","__webpack_modules__","definition","globalThis","hmd","nmd","paths","createThunkMiddleware","extraArgument","thunk","withExtraArgument","isAbsolute","spliceOne","list","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","part","valueEqual","aValue","bValue","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","invariant","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","locationsAreEqual$$1","allPaths","lastIndexOf","baseTag","pushHashPath","nextPaths","clamp","lowerBound","upperBound","MAX_SIGNED_31_BIT_INT","commonjsGlobal","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","emitter","newValue","changedBits","createEventEmitter","_inheritsLoose","_Component2","onUpdate","_proto2","createNamedContext","historyContext","createNamedContext$1","Router","_pendingLocation","staticContext","computeRootMatch","isExact","MemoryRouter","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","createMemoryHistory","Lifecycle","onMount","onUnmount","Prompt","when","_ref$when","release","cacheLimit","cacheCount","generatePath","compilePath","Redirect","computedMatch","_ref$push","locationsAreEqual","cache$1","cacheLimit$1","cacheCount$1","matchPath","_options","_options$exact","_options$strict","_options$sensitive","pathCache","regexp","compilePath$1","_compilePath","Route","context$1","_this$props","createURL","staticHandler","noop","StaticRouter","handlePush","navigateTo","handleReplace","handleListen","handleBlock","_this$props$basename","_this$props$context","addBasename","_this$props2$basename","_this$props2$context","_this$props2$location","_this$props2","Switch","withRouter","wrappedComponentRef","remainingProps","useHistory","useLocation","useParams","useRouteMatch","BrowserRouter","HashRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","_onClick","isModifiedEvent","Link","_ref2$component","__RouterContext","forwardRefShim$1","forwardRef$1","IdxStatus","AuthenticatorKey","IdxFeature","NavLink","ariaCurrent","_ref$ariaCurrent","activeClassName","_ref$activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","joinClassnames","isAuthenticator","getConsole","nativeConsole","groupEnd","removeNils","cleaned","omit","newobj","find","searchParams","found","getLink","linkName","altName","_links","genRandomString","randomCharset","split2","delim","isAbsoluteUrl","toRelativeUrl","baseUrl","toQueryString","removeTrailingSlash","trimmed","CustomError","AuthSdkError","errorCode","errorSummary","errorLink","errorId","errorCauses","generateState","getIssuer","sdk","issuer","getOAuthBaseUrl","getOAuthUrls","authorizeUrl","userinfoUrl","tokenUrl","logoutUrl","revokeUrl","createOAuthMeta","tokenParams","oauthMeta","urls","clientId","redirectUri","responseMode","scopes","ignoreSignature","acrValues","pkce","codeVerifier","codeChallengeMethod","codeChallenge","TokenKind","api","converter","defaultAttributes","attributes","toUTCString","stringifiedAttributes","jar","withAttributes","withConverter","freeze","isAccessToken","accessToken","isIDToken","idToken","isRefreshToken","refreshToken","createTransactionMeta","authClient","prepareTokenParams","pkceMeta","flow","activationToken","recoveryToken","maxAge","hasSavedInteractionHandle","savedMeta","getSavedTransactionMeta","interactionHandle","transactionManager","load","isTransactionMetaValid","getTransactionMeta","validExistingMeta","saveTransactionMeta","save","muteWarning","clearTransactionMeta","mismatch","isTransactionMetaValidForOptions","shouldValidateFlow","isTransactionMetaValidForFlow","STATE_TOKEN_KEY_NAME","DEFAULT_POLLING_DELAY","DEFAULT_MAX_CLOCK_SKEW","DEFAULT_CACHE_DURATION","TOKEN_STORAGE_NAME","CACHE_STORAGE_NAME","PKCE_STORAGE_NAME","TRANSACTION_STORAGE_NAME","SHARED_TRANSACTION_STORAGE_NAME","ORIGINAL_URI_STORAGE_NAME","IDX_RESPONSE_STORAGE_NAME","ACCESS_TOKEN_STORAGE_KEY","ID_TOKEN_STORAGE_KEY","REFRESH_TOKEN_STORAGE_KEY","REFERRER_PATH_STORAGE_KEY","MIN_VERIFIER_LENGTH","MAX_VERIFIER_LENGTH","DEFAULT_CODE_CHALLENGE_METHOD","IDX_API_VERSION","AuthApiError","OAuthError","summary","error_description","formatError","resp","serverErr","transformErrorXHR","max_age","acr_values","acc","curr","parseInsufficientAuthenticationError","_b","httpRequest","httpRequestInterceptors","saveAuthnState","storage","storageUtil","httpCache","storageManager","getHttpCache","cacheResponse","cachedResponse","getStorage","expiresAt","oktaUserAgentHeader","_oktaUserAgent","getHttpHeader","ajaxOptions","httpRequestClient","stateToken","updateStorage","getOptions","getIssuerOrigin","postOptions","getResponse","interact","clientSecret","client_id","scope","redirect_uri","code_challenge","code_challenge_method","activation_token","recovery_token","client_secret","interaction_handle","newMeta","isFieldMutable","mutable","divideSingleActionParamsByMutability","defaultParamsForAction","neededParamsForAction","immutableParamsForAction","generateDirectFetch","actionDefinition","toPersist","accepts","idx","makeIdxResponse","responseJSON","wwwAuthHeader","idxResponse","stepUp","generateIdxAction","defaultParams","neededParams","immutableParams","actionList","divideActionParamsByMutability","_typeof","_getPrototypeOf","_setPrototypeOf","_isNativeReflectConstruct","sham","Proxy","_construct","Parent","Class","_wrapNativeSuper","_cache","_assertThisInitialized","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","NewError","_Error","Derived","hasNativeReflectConstruct","Super","NewTarget","_createSuper","avoidNew","JSONPath","expr","otherTypeCallback","optObj","resultType","flatten","sandbox","preventEval","parentProperty","autostart","evaluate","currParent","currParentProperty","currResultType","currPreventEval","currSandbox","currOtherTypeCallback","toPathString","exprList","toPathArray","_hasParentSelector","_trace","isParentSelector","hasArrExpr","rslt","valOrPath","_getPreferredOutput","pointer","toPointer","_handleCallback","fullRetObj","preferredOutput","parentPropName","literalPriority","retObj","_this3","addRet","elems","_walk","_x","par","pr","_slice","_eval","addType","valueType","locProp","_step","_iterator","allowArrayLike","it","normalCompletion","didErr","_createForOfIteratorHelper","rett","tt","_v","_vname","_$_parentProperty","_$_parent","_$_property","_$_path","_$_root","_$_v","vm","runInNewContext","pathArr","subx","$0","$1","ups","exp","conditionCb","il","moveToAnotherArray","vr","funcString","fString","lastStatementEnd","SKIP_FIELDS","expandRelatesTo","jsonpath","innerValue","convertRemediationAction","remediation","remediationActions","remediationValue","generateRemediationFunctions","actionFn","parseIdxResponse","remediationData","relatesTo","authenticatorChallenge","remediations","fieldValue","__rest","subField","parseNonRemediations","v1","makeIdxState","requestDidSucceed","rawIdxResponse","proceed","remediationChoice","paramsFromUser","remediationChoiceObject","neededToProceed","rawIdxState","interactionCode","_c","successWithInteractionCode","parsersForVersion","validateVersionConfig","isRawIdxResponse","introspect","savedIdxResponse","loadIdxResponse","getOAuthDomain","stateHandle","Accept","titleCase","getAuthenticatorFromRemediation","formatAuthenticator","incoming","authenticator","compareAuthenticators","auth1","auth2","Remediator","formatAuthenticators","authenticators","existing","authenticatorsData","getName","canRemediate","needed","idxRemediation","required","cur","getRequiredValues","hasData","getData","getAllValues","getNextStep","_authClient","inputs","getInputs","getAuthenticator","inputFromRemediation","messages","getMessages","getValuesAfterProceed","authenticatorFromRemediation","enrollmentId","unwrapFormValue","formKeys","unwrappedForm","GenericRemediator","endsWith","produces","remediators","getFlowSpecification","_oktaAuth","isTerminalResponse","getMessagesFromIdxRemediationValue","messagesFromForm","optionValues","option","messagesFromOptions","getMessagesFromResponse","globalMessages","useGenericRemediator","fieldMessages","seen","filtered","i18n","getRemediatorClass","getRemediator","idxRemediations","remediator","_ref5","remediatorCandidates","nextStep","canSkip","canSkipFn","canResend","actionName","canResendFn","handleFailedResponse","terminal","removeActionFromValues","resend","removeActionFromOptions","remediate","actionFromValues","getActionFromValues","valuesWithoutExecutedAction","optionsWithoutExecutedAction","canceled","remediationAction","remediationName","filterValuesForRemediation","initializeValues","initializeData","PENDING","getFlow","setFlow","flowSpec","oktaAuth","finalizeData","exchangeCodeForTokens","enabledFeatures","availableSteps","shouldSaveResponse","shouldClearTransaction","clearSharedStorage","PASSWORD_RECOVERY","REGISTRATION","SOCIAL_IDP","_ref4","ACCOUNT_UNLOCK","getEnabledFeatures","remediatorMap","remediatorClass","stepObj","startsWith","part1","part2","actionObj","getAvailableSteps","TERMINAL","hasActions","hasErrors","class","CANCELED","SUCCESS","getTokens","run","interactResponse","getDataFromIntrospect","autoRemediate","idxResponseFromRemediation","getDataFromRemediate","saveIdxResponse","authenticate","OKTA_PASSWORD","Authenticator","VerificationCodeAuthenticator","canVerify","verificationCode","otp","mapCredentials","passcode","idxRemediationValue","OktaVerifyTotp","totp","OktaPassword","revokeSessions","SecurityQuestionEnrollment","questionKey","answer","question","SecurityQuestionVerification","contextualData","enrolledQuestion","WebauthnEnrollment","clientData","attestation","WebauthnVerification","authenticatorData","signatureData","VerifyAuthenticator","SECURITY_QUESTION","OKTA_VERIFY","WEBAUTHN","challengeData","authenticatorEnrollments","getInputCredentials","valueKey","EnrollAuthenticator","EnrollPoll","startPolling","currentAuthenticator","poll","refresh","SelectEnrollmentChannel","channel","filterKey","EnrollmentChannelData","getInputEmail","getInputPhoneNumber","phoneNumber","ChallengeAuthenticator","ChallengePoll","ResetAuthenticator","EnrollProfile","getCredentialsFromRemediation","userProfileFromValues","userProfile","mapUserProfile","profileAttributes","attributeValues","getInputUserProfile","getErrorMessages","errorRemediation","errors","Identify","ReEnrollAuthenticator","newPassword","ReEnrollAuthenticatorWarning","RedirectIdp","idp","SelectAuthenticator","findMatchedOption","matchedOption","isCurrentAuthenticator","isCurrentAuthenticatorEnrollment","currentAuthenticatorEnrollment","mapAuthenticator","selectedAuthenticator","selectedOption","getInputAuthenticator","SelectAuthenticatorAuthenticate","isRecoveryFlow","SelectAuthenticatorEnroll","SelectAuthenticatorUnlockAccount","authenticatorMap","methodTypeOption","methodTypeValue","methodType","getInputUsername","SelectEnrollProfile","AuthenticatorData","formatAuthenticatorData","getAuthenticatorData","mapAuthenticatorDataFromValues","AuthenticatorVerificationData","AuthenticatorEnrollmentData","Skip","skip","AuthenticationFlow","PasswordRecoveryFlow","RegistrationFlow","AccountUnlockFlow","urlParamsToObject","hashOrSearch","plus2space","paramSplit","fragment","EmailVerifyCallbackError","isEmailVerifyCallbackError","isEmailVerifyCallback","urlPath","parseEmailVerifyCallback","handleEmailVerifyCallback","canProceed","transaction","availablePollingRemeditaions","isInteger","startTransaction","register","recoverPassword","handleInteractionCodeRedirect","savedState","tokenManager","setTokens","unlockAccount","isInteractionRequiredError","isRefreshTokenInvalidError","isCodeFlow","getHashOrSearch","isLoginRedirect","uri","authParams","isRedirectUri","codeFlow","hasErrorInUrl","hasCode","hasAuthorizationCode","hasInteractionCode","isInteractionRequired","createIdxAPI","newCtx","boundStartTransaction","atob","crypto","isWindowsPhone","isBrowser","isIE11OrLess","getUserAgent","isFingerprintSupported","agent","isPopupPostMessageSupported","isIE8or9","isTokenVerifySupported","subtle","hasTextEncoder","TextEncoder","isPKCESupported","isHTTPS","isLocalhost","OktaUserAgent","environments","maybeAddNodeEnvironment","addEnvironment","env","getVersion","versions","headerName","headerValue","stringToBase64Url","base64ToBase64Url","b64","base64UrlToBase64","b64u","base64UrlToString","utf8","stringToBuffer","base64UrlDecode","base64UrlToBuffer","bufferToBase64Url","bin","byte","getOidcHash","digest","firstHalf","verifyToken","algo","importKey","cryptoKey","jwt","signature","verify","PromiseQueue","quiet","running","thisObject","queueItem","dec2hex","dec","PKCE","generateVerifier","verifier","getRandomValues","getRandomString","computeChallenge","decodeToken","decodedToken","getDefaultTokenParams","defaultRedirectUri","postToTokenEndpoint","authorizationCode","validateOptions","getPostData","getWellKnown","validationParams","configuredIssuer","validationOptions","claims","aud","iss","acr","iat","ignoreLifetime","maxClockSkew","validateClaims","kid","wellKnown","jwksUri","cachedKey","clearStorage","getKey","verifyToken$1","at_hash","handleOAuthResponse","interaction_code","oauthParams","validateResponse","tokenDict","expiresIn","expires_in","tokenType","token_type","access_token","id_token","refresh_token","accessJwt","idJwt","idTokenObj","eventTarget","addPostMessageListener","responseHandler","timeoutId","msgReceivedOrTimeout","preparePKCE","assertPKCESupport","validateCodeChallengeMethod","buildAuthorizeParams","oauthQueryParams","idpScope","loginHint","sessionToken","enrollAmrValues","mayBeArray","convertTokenParamsToOAuthParams","extraParams","getToken","popupWindow","requestUrl","iframePromise","iframeEl","src","iframe","loadFrame","parentElement","oauthPromise","popupPromise","closePoller","setInterval","closed","clearInterval","close","getWithoutPrompt","getWithPopup","popupTitle","loadPopup","getWithRedirect","setLocation","getResponseMode","defaultResponseMode","parseOAuthResponseFromUrl","paramStr","nativeLoc","parseFromUrl","_getLocation","nativeHistory","_getHistory","nativeDoc","_getDocument","removeSearch","removeHash","cleanOAuthResponseFromUrl","renewTokensWithRefresh","refreshTokenObject","renewTokenParams","tokenResponse","grant_type","postRefreshToken","isSameRefreshToken","updateRefreshToken","removeRefreshToken","throwInvalidTokenError","getSingleToken","originalToken","renewToken","getTokensSync","renewTokens","revokeToken","token_type_hint","hintMap","oidcIntrospect","kind","ACCESS","introspection_endpoint","introspectUrl","authHeader","prepareEnrollAuthenticatorParams","prepareParams","getDefaultEnrollAuthenticatorParams","enrollAuthenticator","createEnrollAuthenticatorMeta","createTokenAPI","useQueue","getWithRedirectFn","parseFromUrlFn","parseFromUrlApi","revoke","renew","getUserInfo","accessTokenObject","idTokenObject","userInfo","sub","authenticateHeader","getResponseHeader","errorMatches","errorDescriptionMatches","errorDescription","validateToken","SdkClock","localOffset","EVENT_EXPIRED","EVENT_RENEWED","EVENT_ADDED","EVENT_REMOVED","EVENT_SET_STORAGE","DEFAULT_OPTIONS","autoRenew","autoRemove","syncStorage","clearPendingRemoveTokens","expireEarlySeconds","storageKey","TokenManager","storageOptions","storageProvider","storageType","getTokenStorage","useSeparateCookies","clock","expireTimeouts","renewPromise","setExpireEventTimeoutAll","started","clearExpireEventTimeoutAll","isStarted","getExpireTime","hasExpired","emitExpired","emitRenewed","freshToken","oldToken","emitAdded","emitRemoved","emitError","clearExpireEventTimeout","setExpireEventTimeout","expireTime","expireEventWait","expireEventTimeout","tokenStorage","resetExpireEventTimeoutAll","setStorage","emitSetStorageEvent","getSync","getStorageKeyByType","getTokenType","accessTokenCb","idTokenCb","refreshTokenCb","handleTokenCallback","handleAdded","handleRenewed","handleRemoved","existingTokens","newToken","existingToken","removedToken","shouldRenew","refreshKey","tokenKey","removedTokens","pendingRemove","addPendingRemoveFlags","browserHasLocalStorage","getLocalStorage","testStorage","browserHasSessionStorage","getSessionStorage","testStorageType","supported","getStorageByType","getCookieStorage","getInMemoryStorage","findStorageType","curType","nextType","onstorage","localStorage","sessionStorage","sameSite","sessionCookie","getItem","setItem","removeItem","existingValues","valueToStore","inMemoryStore","cookieOptions","Cookies","mixinOAuth","Base","TransactionManagerConstructor","WithOriginalUri","BaseClass","setOriginalUri","originalUri","getOriginalUriStorage","getOriginalUri","removeOriginalUri","sharedStorage","_pending","handleLogin","_tokenQueue","endpoints","authorize","isAuthenticated","onExpiredToken","shouldRemove","signInWithRedirect","additionalParams","getUser","getIdToken","getAccessToken","getRefreshToken","getOrRenewAccessToken","storeTokensFromRedirect","isPKCE","hasResponseType","isAuthorizationCodeFlow","invokeApiMethod","revokeAccessToken","accessTokenKey","revokeRefreshToken","refreshTokenKey","getSignOutRedirectUrl","postLogoutRedirectUri","idTokenHint","logoutUri","signOut","defaultUri","currentUri","clearTokensBeforeRedirect","sessionClosed","closeSession","DEFAULT_PENDING","updateAuthStatePromise","canceledTimes","EVENT_AUTH_STATE_CHANGE","AuthStateManager","_sdk","_authState","_logOptions","_prevAuthState","_transformQueue","_setLogOptions","updateAuthState","getAuthState","getPreviousAuthState","transformAuthState","devMode","emitAuthStateChange","authState","isSameAuthState","prevState","finalPromise","origPromise","curPromise","cancelablePromise","emitAndResolve","AutoRenewService","renewTimeQueue","onTokenExpiredHandler","shouldThrottleRenew","requiresLeadership","processExpiredTokens","canStart","PROMISE_RESOLVED_TRUE","PROMISE_RESOLVED_VOID","sleep","resolveWith","randomToken","lastMs","additional","microSeconds","NativeMethod","channelName","messagesCallback","BroadcastChannel","subFns","channelState","onMessage","messageJson","canBeUsed","_pubkey","averageResponseTime","micro","ObliviousSet","ttl","_to","obliviousSet","olderThen","removeTooOldValues","fillOptionsWithDefaults","originalOptions","webWorkerSupport","idb","fallbackInterval","onclose","localstorage","removeTimeout","maxParallelWrites","useFastPath","DB_PREFIX","OBJECT_STORE_ID","TRANSACTION_SETTINGS","durability","getIdb","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","commitIndexedDBTransaction","tx","commit","getMessagesHigherThan","lastCursorId","objectStore","keyRangeValue","IDBKeyRange","bound","getAll","getAllRequest","rej","onsuccess","openCursorRequest","openCursor","ev","cleanOldMessages","msgObk","getOldMessages","tooOld","ids","deleteRequest","removeMessagesById","_readLoop","readNewMessages","newerMessages","useMessages","msgObj","uuid","eMIs","messagesCallbackTime","_filterMessage","msgObjA","msgObjB","IndexedDBMethod","IndexedDB","dbName","openRequest","onupgradeneeded","createObjectStore","keyPath","autoIncrement","createDatabase","writeBlockPromise","readQueuePromises","readerUuid","writeObject","oncomplete","writeMessage","KEY_PREFIX","ls","LocalstorageMethod","addStorageEventListener","writeObj","initEvent","defaultTime","SIMULATE_CHANNELS","SimulateMethod","METHODS","ENFORCED_OPTIONS","OPEN_BROADCAST_CHANNELS","lastId","chooseMethods","useMethod","chooseMethod","_iL","_onML","_addEL","internal","_uMP","_befC","_prepP","maybePromise","_state","_prepareChannel","_post","broadcastChannel","sendPromise","_hasMessageListeners","_addListenerObject","listenerFn","listenerObject","hundredMsInMicro","minMessageTime","_startListening","_removeListenerObject","_stopListening","postInternal","listenObj","awaitPrepare","isClosed","USE_METHOD","exit","trace","WorkerGlobalScope","oldClose","LISTENERS","startedListening","runAll","sendLeaderMessage","leaderElector","msgJson","beLeader","isLeader","_hasLeader","unloadFn","unloadAdd","die","_unl","isLeaderListener","_dpLC","_dpL","_lstns","LeaderElectionWebLock","isDead","_wKMC","lN","hasLeader","locks","relevantLocks","held","lock","awaitLeadership","_wLMP","AbortController","returnPromise","onduplicate","_fn","_this4","uFn","LeaderElection","_aplQ","_aplQC","hasLeaderListener","createLeaderElection","_leaderElector","responseTime","elector","applyOnce","isFromFallbackInterval","stopCriteriaPromiseResolve","stopCriteria","stopCriteriaPromise","handleMessage","waitForAnswerTime","race","applyRun","_aLP","resolved","whenDeathListener","tryOnFallBack","_awaitLeadershipOnce","SyncStorageService","enablePostMessage","onTokenAddedHandler","onTokenRemovedHandler","onTokenRenewedHandler","onSetStorageHandler","onSyncMessageHandler","syncChannelName","LeaderElectionService","onLeaderDuplicate","onLeader","electionChannelName","getNow","RenewOnTabActivationService","lastHidden","onPageVisbilityChange","_onPageVisbilityChange","hidden","tabInactivityDuration","renewOnTabActivation","AUTO_RENEW","SYNC_STORAGE","LEADER_ELECTION","RENEW_ON_TAB_ACTIVATION","ServiceManager","broadcastChannelName","defaultOptions","services","knownServices","svc","createService","startServices","getService","isLeaderRequired","srv","stopServices","canStartService","service","sessionExists","session","getSession","user","refreshSession","setCookieAndRedirect","redirectUrl","checkAccountSetupComplete","mixinSession","exists","createOktaAuthCore","StorageManagerConstructor","OptionsConstructor","OktaAuthBase","Emitter","constants","createOktaAuthBase","WithStorage","StorageManager","mixinStorage","WithHttp","http","setHeaders","webfinger","mixinHttp","Core","authStateManager","serviceManager","handleRedirect","handleLoginRedirect","restoreOriginalUri","mixinCore","getEnrolledCredentials","enrollement","credentialId","buildCredentialCreationOptions","activationData","publicKey","rp","challenge","pubKeyCredParams","authenticatorSelection","excludeCredentials","buildCredentialRequestOptions","userVerification","allowCredentials","getAttestation","credential","clientDataJSON","attestationObject","getAssertion","STORAGE_MANAGER_OPTIONS","storageTypes","createStorageOptionsConstructor","BaseOptionsConstructor","cookieSettings","getCookieSettings","appJsonContentTypeRegex","fetchRequest","contentType","fetchPromise","crossFetch","readData","pair","formatResult","enableSharedStorage","createOAuthOptionsConstructor","HttpOptionsConstructor","StorageOptionsConstructor","createHttpOptionsConstructor","assertValidConfig","toAbsoluteUrl","SavedObject","storageName","storageString","logServerSideMemoryStorageWarning","BaseStorageManager","storageManagerOptions","getOptionsForSection","sectionName","overrideOptions","createCoreStorageManager","getTransactionStorage","getSharedTansactionStorage","isObjectWithProperties","isOAuthTransactionMeta","isTransactionMeta","isCustomAuthTransactionMeta","MAX_ENTRY_LIFETIME","createTransactionManager","saveLastResponse","transactionStorage","clearTransactionFromSharedStorage","dateCreated","saveTransactionToSharedStorage","pruneSharedStorage","loadTransactionFromSharedStorage","BaseTransaction","sendRequest","TransactionClass","accessTokenObj","generateRequestFnFromLinks","links","hints","allow","ProfileTransaction","createdAt","modifiedAt","profile","ProfileSchemaTransaction","EmailRole","Status","PasswordStatus","getProfile","updateProfile","getProfileSchema","EmailStatusTransaction","EmailChallengeTransaction","EmailTransaction","roles","getEmails","getEmail","addEmail","deleteEmail","sendEmailChallenge","getEmailChallenge","emailId","challengeId","verifyEmailChallenge","PhoneTransaction","getPhones","getPhone","addPhone","deletePhone","sendPhoneChallenge","verifyPhoneChallenge","PasswordTransaction","created","lastUpdated","NOT_ENROLLED","enroll","getPassword","enrollPassword","updatePassword","deletePassword","addStateToken","builtArgs","transactionStatus","introspectAuthn","getSavedStateToken","transactionStep","createTransaction","transactionExists","postToTransaction","link2fn","isPolling","factorType","provider","autoPush","rememberDevice","updatePhone","AuthPollStopError","getPollFn","delay$1","transactionCallBack","pollLink","pollFn","getStateToken","retryCount","recursivePoll","pollRes","factorResult","delayLength","flattenEmbedded","objArr","ol","embedded","_embedded","links2fns","AuthnTransactionImpl","createAuthnTransactionAPI","resumeTransaction","fingerprint","CoreOptionsConstructor","OAuthOptionsConstructor","createCoreOptionsConstructor","createIdxOptionsConstructor","CoreStorageManager","getIdxResponseStorage","createIdxStorageManager","TransactionManager","clearIdxResponse","storedValue","createIdxTransactionManager","WithIdx","webauthn","mixinIdx","createOktaAuthIdx","WithAuthn","authn","signIn","_postToTransaction","sendFingerprint","signInWithCredentials","forgotPassword","verifyRecoveryToken","mixinAuthn","myaccount","compareVersions","v2","n1","validateAndParse","n2","compareSegments","operator","assertValidOperator","operatorResMap","semver","satisfies","op","v3","r1","r2","r3","compareStrings","isWildcard","tryParse","ap","bp","forceType","allowedOperators","OktaContext","useOktaAuth","Security","onAuthRequired","_React$useState","setAuthState","_asyncToGenerator","_regeneratorRuntime","_callee","_x2","currentAuthState","_err","OktaError","_err2","_onAuthRequired","ownKeys$1","_objectSpread$1","withOktaAuth","ComponentToWrap","oktaAuthProps","handledRedirect","LoginCallback","errorComponent","loadingElement","_ref$loadingElement","onAuthResume","_useOktaAuth","callbackError","setCallbackError","displayError","_excluded","useMatch","ReactRouterDom","routeProps","pendingLogin","setHandleLoginError","ErrorReporter","onAuthRequiredFn","selectSystem","checkAnalyticsAccess","curToken","dataObj","analyticsAccess","approvalApi","userRoles","FETCH_USER_PROFILE_REQUEST","FETCH_USER_PROFILE_SUCCESS","FETCH_USER_PROFILE_FAILURE","fetchUserProfileData","_ex$response","HeaderBs","checkUserAccess","authObj","curUserInfo","createDropDown","systems","_jsxs","_jsx","sysName","amount","_this$props$userProfi","_this$props$userProfi2","updatedTime","alt","curSystem","hasAnalyticsAccess","connect","selectedSystem","SideBarBs","renderList","isuTextStyle","agileTextStyle","sapQnTextStyle","coupaTextStyle","samTextStyle","snowTextStyle","trackwiseTextStyle","ivaluaTextStyle","rceTextStyle","itTimesheetTextStyle","concurTextStyle","neptuneMtTextStyle","fieldglassTextStyle","smartrecruitersTextStyle","neptunePsTextStyle","myHcmTextStyle","mesTextStyle","adobeSignTextStyle","archibusTextStyle","workdayTextStyle","sapPoTextStyle","workforceTextStyle","allTextStyle","_taggedTemplateLiteral","_templateObject","NotificationListBs","getUserDetails","fetchApprovals","updatePreviousSystemCounts","curSystemCounts","getUserDetails2","setPreviousCounts","dataFetchComplete","isInitialDataFromRefresh","showPopUpNotification","notifMessage","showNotification","previousSystemCounts","renderSamEntitlements","approval","entitlementArr","myKey","renderSamApplications","finalAppArr","curCount","finalSysName","filteredApps","temp1","temp2","statsUid","preferred_username","approvalList","curApproval","systemName","date1","splitDate","assignedDate","date2","timeDiff","diffDays","daysCount","daysRemaining","dateMessage","finalIsuDueDate","dayFilter","BeatLoader","curApprovalSysname","statAppname","appColor","finalDescription","notificationType","notificationStatus","taskStatus","taskCleared","sendStats","approvalRequester","projectId","taskNumber","createdBy","onBehalfOf","costCenter","requestedAmount","currency","previousApprovedAmount","totalRequested","marginRight","approveTask","rejectTask","delegation","inlineSize","overflowWrap","approvals","isInitialPulledData","myObj","curIsuData","curAgileData","curSapQnData","curCoupaData","curSamData","curSnowData","curApprovals","curTrackwiseData","curIvaluaData","curItTimesheetData","curConcurData","curNeptuneData","curFieldglassData","curSmartrecruitersData","curNeptunePsData","curMyHcmData","curMesData","curAdobeSignData","curArchibusData","curWorkdayData","curSapWfData","curWorkforceData","purchaseOrder","key_counter","sku","updatedTimeTmp","updatedDateTime","changeNumber","changeOriginator","createdDateTime","changeDescription","changeType","createdOn","documentType","requestorDisplayName","totalAmount","curEntitlement","curApplication","applicationArr","eCounter","aCounter","displayValue","curObj","applicationName","entitlement","newDate","curMonth","rceHelpNowApprovals","sysId","toLocaleDateString","shortDescription","helpNowApprovals","recordId","recordType","createdDate","deepLink","objectId","workflowName","activityCode","fullUrl","projectName","employeeFN","employeeLN","startDate","totalHours","reportName","currencyCode","requestorName","today","padStart","mtNumber","appType","requestor","submissionDate","requestType","processID","requestedBy","updatedTimeTmp1","updatedTimeTmp2","updatedTimeFinal","timeSheets","documentID","workerName","costAllocation","expenseSheets","mainDocumentTitle","submittedDate","expenseSheetAmount","miscInvoices","supplier","jobPostings","creatorName","refId","jobPostingTitle","jobPostingJustification","workOrders","jobSeeker","businessUnit","workOrderRevision","site","approvalType","refNumber","qnNumber","taskDescription","taskCreatedBy","taskCreatedOn","displayDate","taskId","docNumber","processType","employeeId","timeOffType","taskApproved","taskRejected","app","refKey","MiddleHeaderBs","HeaderFilterBs","allInputStyle","pill3InputStyle","pill7InputStyle","pill8InputStyle","curDayFilterText","curDayFilter","borderColor","role","selectDayFilter","Home","StatsRedirect","_Fragment","About","AnaltyicsHeader","getYearMonthCounts","elevenMonthsAgo","yesterday","elevenMonthsAgoFormatted","yesterdayFormatted","allData","fromDate","analyticsType","platform","endDate","getDataCall","userToken","monthAndDayCounts","fill","newData","currentDay","existingData","monthlyCounts","oneYearBack","dailyCounts","dailyCountsWithoutEmptyArrays","yearCountFinal","dailyCountFinal","createYearClickCountsArray","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","each","loopable","_elementsEqual","a0","a1","ilen","v0","datasetIndex","klen","isValidKey","_merger","tval","sval","sources","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","resolver","_splitKey","_getKeyResolver","_capitalize","defined","setsEqual","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","niceNum","roundedRange","almostEquals","niceRange","fraction","epsilon","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","sqrt","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","table","cmp","mid","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","requestAnimFrame","throttled","updateFn","updateArgs","ticking","_toLeftRightCenter","align","_alignStartEnd","_getStartAndCountOfVisiblePoints","animationsDisabled","pointCount","_sorted","iScale","_parsed","axis","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","lim","p2b","n2b","b2n","n2p","map$1","h1","h2","eq","hexString","isShort","alpha","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","hwb2rgb","hsv2rgb","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","unpacked","tkeys","unpack","transparent","RGB_RE","modHSL","fromObject","functionParse","rgbParse","Color","hexParse","_rgb","_valid","valid","rgbString","hslString","mix","weight","c1","c2","w2","w1","interpolate","rgb1","rgb2","clearer","greyscale","opaquer","lighten","darken","saturate","desaturate","rotate","deg","index_esm","isPatternOrGradient","getHoverColor","overrides","descriptors","getScope$1","_descriptors","datasets","devicePixelRatio","chart","getDevicePixelRatio","events","font","family","hover","hoverBackgroundColor","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","_scriptable","_indexable","_fallback","_measureText","longest","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","jlen","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","pointStyle","rotation","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","borderWidth","stroke","_isPointInArea","point","clipArea","clip","unclipArea","_steppedLineTo","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","lines","strokeColor","translation","fillStyle","textBaseline","setRenderOpts","strokeStyle","lineWidth","strokeText","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","objProps","toTRBL","toTRBLCorners","toPadding","toFont","toFontString","cacheable","parentContext","_createResolver","prefixes","rootScopes","getTarget","_resolve","_cacheable","_scopes","_rootScopes","_getTarget","deleteProperty","_keys","_cached","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getKeysFromAllScopes","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_subProxy","_stack","setContext","receiver","isScriptable","_resolveScriptable","isIndexable","_resolveArray","_resolveWithContext","scriptable","indexable","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","EPSILON","getPoint","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","iPixel","vPixel","monotoneCompute","capControlPoint","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","valueInPixels","getComputedStyle","getPositionedStyle","useOffsetPos","shadowRoot","getRelativePosition","borderBox","paddings","borders","box","offsetX","offsetY","getBoundingClientRect","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","margins","containerSize","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","num","formatter","Intl","NumberFormat","getNumberFormat","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","normalize","normalizeSegment","_boundSegment","bounds","startBound","endBound","getSegment","prevValue","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","p0","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","animator","_request","_charts","_running","_lastDate","_notify","anims","callbacks","numSteps","initial","currentStep","_refresh","_update","draw","_active","_total","tick","_getAnims","charts","progress","_duration","interpolators","factor","c0","Animation","cfg","currentValue","_easing","easing","_start","_loop","_target","_prop","_from","_promises","active","elapsed","remain","wait","animationOptions","colors","resize","animations","Animations","_properties","configure","animatedProps","_animateOptions","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","awaitAll","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","singleMode","otherValue","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","clearStacks","isDirectUpdateMode","cloneIfNotShared","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","_stacked","addElements","updateIndex","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","_destroy","_dataCheck","adata","convertObjectDataToArray","isExtensible","datasetElementType","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","getMinMax","canStack","otherScale","createStack","NEGATIVE_INFINITY","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","_clip","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","sharing","datasetElementScopeKeys","resolveNamedOptions","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","$bar","visibleMetas","getAllScaleValues","_length","updateMinAndPrev","ticks","getPixelForTick","parseValue","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","swap","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","getBasePixel","isHorizontal","ruler","_getRuler","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","_getStacks","grouped","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","maxBarThickness","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","rects","_index_","_value_","beginAtZero","BubbleController","tooltip","DoughnutController","innerRadius","outerRadius","_getRotation","_getCircumference","circumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","toPercentage","chartWeight","_getRingWeight","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","tooltipPosition","useFinalPosition","getProps","hasValue","final","defaultRoutes","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","tickLength","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","majorIndices","major","enabled","getMajorIndices","numMajorIndices","newTicks","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","grace","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_reversePixels","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getPadding","getTicks","xLabels","yLabels","beforeLayout","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","change","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","isFullSize","fullSize","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","getValueForPixel","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","ticksLength","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","_computeLabelItems","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","fillRect","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","lastLineWidth","drawLabels","drawTitle","titleX","titleY","titleArgs","_layers","tz","gz","getSortedVisibleDatasetMetas","axisID","_maxDigits","TypedRegistry","isForType","parentScope","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","unregister","registry","controllers","_typedRegistries","_each","addControllers","_len3","_key3","_len4","_key4","addPlugins","_len5","_key5","addScales","_len6","_key6","getController","_get","getElement","getPlugin","getScale","removeControllers","_len7","_key7","removeElements","_len8","_key8","removePlugins","_len9","_key9","removeScales","_len10","_key10","typedRegistry","reg","_getRegistryForType","_exec","itemReg","camelMethod","ScatterController","abstract","DateAdapter","chartOptions","timestamp","members","adapters","_date","binarySearch","metaset","lookupMethod","getRange","evaluateInteractionItems","getIntersectItems","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","layout","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","autoPadding","addBox","removeBox","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","visibleVerticalBoxCount","updatePos","handleMaxPadding","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","nodeListContains","nodeList","createAttachObserver","MutationObserver","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","native","fromNativeEvent","DomPlatform","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","attach","detach","isConnected","PluginService","hook","_createDescriptors","plugin","invalidate","_oldCache","_notifyStateChanges","localIds","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","initConfig","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","Chart","userConfig","initialCanvas","existingChart","OffscreenCanvas","_detectPlatform","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","debounce","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","replay","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","invalidatePlugins","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p8","outerStartX","outerStartY","outerEndX","outerEndY","lineJoin","fullCircles","drawFullCircleBorders","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","inRange$1","hitRadius","PointElement","mouseX","mouseY","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","getStartAndCountOfVisiblePointsSimplified","decimated","samples","bucketWidth","sampledIndex","endIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","lttbDecimation","minIndex","maxIndex","startIndex","xMin","dx","intermediateIndex1","intermediateIndex2","minMaxDecimation","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","linePoints","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","pointValue","firstValue","lastValue","simpleArc","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_getTargetPixel","computeLinearBoundary","computeBoundary","_drawfill","lineOpts","above","clipVertical","doFill","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","_args","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","heightLimit","totalWidth","currentColWidth","currentColHeight","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","fontColor","halfFontSize","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","handleEvent","onLeave","isListened","hoveredItem","sameItem","itemsEqual","plugin_legend","afterEvent","_padding","textSize","_drawArgs","fontOpts","plugin_title","titleBlock","createTitle","plugin_subtitle","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","Tooltip","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","getTitle","beforeTitle","afterTitle","getBeforeBody","getBody","bodyItems","scoped","beforeLabel","afterLabel","getAfterBody","getFooter","beforeFooter","afterFooter","_createItems","itemSort","labelColor","labelPointStyle","labelTextColor","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","_ref6","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","labelCount","Decimation","Filler","SubTitle","findOrAddLabel","addedLabels","addIfString","CategoryScale","_startValue","_valueRange","_addedLabels","added","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","relativeLabelSize","_ref7","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","getTickLimit","stepSize","computeTickLimit","LinearScale","isMajor","tickVal","LogarithmicScale","_zero","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","steps","UNITS","sorter","_adapter","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","_tickFormatFunction","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","registerables","defaultDatasetIdKey","reforwardRef","setLabels","currentData","nextLabels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","nextDataset","currentDataset","cloneData","nextData","getElementsAtEvent","ChartComponent","redraw","fallbackContent","updateMode","canvasRef","chartRef","renderChart","Chart$1","destroyChart","nextOptions","createTypedChart","Bar","AppClicksBarGraph","getInitialGraphData","fetchClicksGraphData","clickedBar","barIndex","newCounts","newLabels","analytics","allDayLabels","yearCounts","allYearLabels","fetchMonthGraphData","curLabels","curCounts","graphName","datalabels","isloading","desktopClickAnalytics","clicksGraphIsLoading","last12MonthsLabels","toLocaleString","getLast12MonthsLabels","allMonthsArray","currentYear","currentMonth","lastDayOfMonth","daysArray","dayOfWeek","dayIndex","finalCounts","yearObj","graphTitle","monthIndex","curDataType","allMonthCounts","yearLabels","dayLabels","ActivityBarGraph","fetchActivityGraphData2","fetchMonthGraphData2","isLoading","desktopActivityAnalytics","activityGraphIsLoading","cleanUpData","avgsData","approvalTimes1Day","totalAverageTimeToApprove","appName","approvalTimes30Days","approvalTimes180Days","AvgCompletionGraph","fetchAverageTimeToCompleteData","onClickBar","onClickFilter","attaFilterSelected","curFilter","attaFilter","curCountsTest","curLabelsTest","avgTimeToApproveAnalytics","attaGraphIsLoading","selectedAttaFilter","ActiveUsersList","getInitialListData","fetchActiveUsersListData","mostActiveUsersListFilterSelected","filteredList","userList","curUser","totalClickCount","mostActiveUsersList","mostActiveUsersListIsLoading","selectedMostActiveUserFilter","activerUsersList","deviceXDPI","logicalXDPI","updates","orient","x0","y0","dy","ln","R_INSIDE","R_LEFT","R_RIGHT","R_BOTTOM","R_TOP","region","compute$1","r0","clipped","vx","vy","aligned","rx","ry","sx","sy","rasterize","getScaleOrigin","drawFrame","bgColor","drawRoundedRect","drawTextLine","shadow","shadowBlur","stroked","filled","Label","_index","_model","_rects","_el","_modelize","defaults$1","positioner","textShadowBlur","textShadowColor","tw","ty","frame","geometry","textGeometry","shadowColor","drawText","MIN_INTEGER","MAX_INTEGER","rotated","cy","projected","dp","toAxis","HitBox","_rotation","_rect","coordinates","vs","intersects","pr0","pr1","axes","prepare","$layout","_box","_hidable","_visible","_set","dirty","collider","s0","s1","collide","h0","compute","lookup","DEFAULT_KEY","callback$1","$groups","_dirty","handleMoveEvents","expando","enter","leave","_labels","_hovered","dispatchMoveEvents","beforeInit","_actives","_listened","_datasets","afterDatasetUpdate","configs","afterDatasetsDraw","beforeEvent","click","handleClickEvents","actives","ChartDataLabels","UniqueUsersCount","fetchUniqueUserstData","uniqueUsersCountFilterSelected","uniqueUserFilter","curTotalCount","xAxisName","secondTitleLine","MonthCounts","sum","userCount","WeekCounts","DailyCounts","curDay","uniqueUserCounts","uniqueUserCountsIsLoading","selectedUniqueUsersCountsFilter","responseData","dailyList","weeklyList","allCountsObj","uniqueUsersCounts","AnalyticsHome","UniqueUserCount","defaultKey","_toPropertyKey","hint","prim","toPrimitive","_toPrimitive","useUncontrolledProp","wasPropRef","_useState","stateValue","isProp","wasProp","useUncontrolled","fieldName","_extends2","Utils","propsValue","handlerName","_useUncontrolledProp","__reactInternalSnapshotFlag","__reactInternalSnapshot","__suppressDeprecationWarning","useEventCallback","useCommittedRef","useButtonProps","tabIndex","handleClick","isTrivialHref","onKeyDown","Button","asProp","buttonProps","Anchor","handleKeyDown","useBootstrapPrefix","defaultPrefix","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appear","isMounting","appearStatus","unmountOnExit","mountOnEnter","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","appearing","nodeRef","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","onExited","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","childProps","TransitionGroupContext","psuedoElement","doc","ownerWindow","rUpper","hyphenate","supportedTransforms","transforms","isTransform","removeProperty","cssText","optionsSupported","onceSupported","eventName","wrappedHandler","__once","onceHandler","emulateTransitionEnd","called","triggerEvent","transitionEnd","mult","parseDuration","removeEmulate","transitionEndListener","toFnRef","refA","refB","mergeRefs","TransitionWrapper","childRef","mergedRef","useMergedRefs","attachRef","componentOrElement","handleEnter","handleEntering","handleEntered","handleExit","handleExiting","handleExited","handleAddEndListener","innerProps","fadeStyles","Fade","isAppearing","triggerBrowserReflow","variant","CloseButton","rHyphen","pascalCase","chr","createWithBsPrefix","BsComponent","bsPrefix","Tag","resolvedPrefix","DivStyledAsH4","divWithClassName","AlertHeading","AlertLink","closeLabel","Alert","uncontrolledProps","closeVariant","onClose","handleClose","alert","Heading","Feedback","FormCheckInput","isInvalid","controlId","FormContext","FormCheckLabel","htmlFor","FormCheck","bsSwitchPrefix","inline","feedbackTooltip","feedback","innerFormContext","hasLabel","Input","FormControl","htmlSize","plaintext","readOnly","FormGroup","DEVICE_SIZES","Col","colProps","spans","brkPoint","infix","useCol","FormLabel","visuallyHidden","columnClass","FormRange","FormSelect","FormText","muted","FloatingLabel","validated","Form","Group","Floating","FormFloating","Check","Text","Range","Select","InputGroupText","InputGroup","hasValidation","InputGroupContext","Radio","Checkbox","scrollbarSize","recalc","scrollDiv","offsetWidth","useWillUnmount","valueRef","useUpdatedRef","ATTRIBUTE_PREFIX","dataAttr","OPEN_DATA_ATTRIBUTE","handleContainerOverflow","isRTL","modals","getScrollbarWidth","innerWidth","setModalAttributes","_modal","removeModalAttributes","setContainerStyle","containerState","paddingProp","scrollBarWidth","removeContainerStyle","modal","modalIdx","isTopModal","resolveContainerRef","manager","useModalManager","provided","modalManager","ModalManager","dialog","setDialogRef","setBackdropRef","Modal","keyboard","onBackdropClick","onEscapeKeyDown","backdropTransition","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","providedManager","containerRef","onShow","onHide","onResolved","resolvedRef","setRef","earlyRef","nextRef","useWaitForDOMRef","mounted","useMounted","prevShow","usePrevious","exited","setExited","lastFocusRef","handleShow","removeKeydownListenerRef","handleDocumentKeyDown","removeFocusListenerRef","handleEnforceFocus","currentActiveElement","handleHide","_lastFocusRef$current","handleBackdropClick","handleHidden","dialogProps","backdropElement","BackdropTransition","Manager","qsa","replaceClassName","origClass","classToRemove","Selector","BootstrapModalManager","adjustAndStore","adjust","actual","classList","baseVal","hasClass","marginProp","sharedManager","ModalDialog","contentClassName","centered","fullscreen","scrollable","dialogClass","fullScreenClass","AbstractModalHeader","closeButton","ModalContext","ModalHeader","dialogAs","DialogTransition","dialogClassName","Dialog","ariaLabelledby","backdropClassName","propsManager","modalStyle","animateStaticModal","setAnimateStaticModal","waitingForMouseUpRef","ignoreBackdropClickRef","removeStaticModalAnimationRef","setModalRef","useIsRTL","modalContext","getModalManager","getSharedManager","updateDialogStyle","containerIsOverflowing","modalIsOverflowing","scrollHeight","getScrollbarSize","handleWindowResize","handleDialogMouseDown","handleMouseUp","handleStaticModalAnimation","handleStaticBackdropClick","backdropProps","baseModalStyle","BaseModal","onMouseUp","onMouseDown","ModalBody","Header","ModalTitle","Footer","ModalFooter","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","onSearch","searchTerm","setSearchTerm","handleSearch","placeholder","handleClear","UserExceptionGrid","onDelete","Container","fluid","Row","decoratedBsPrefix","sizePrefix","cols","PageItem","activeLabel","createButton","First","Prev","Ellipsis","Next","Last","Pagination","Item","BPagination","itemsPerPage","totalItems","paginate","currentPage","maxPage","setMaxPage","xs","LoadingStyle","FETCH_USER_EXCEPTION_REQUEST","FETCH_USER_EXCEPTION_SUCCESS","FETCH_USER_EXCEPTION_FAILURE","DELETE_USER_EXCEPTION_REQUEST","DELETE_USER_EXCEPTION_SUCCESS","DELETE_USER_EXCEPTION_FAILURE","ADD_USER_EXCEPTION_REQUEST","ADD_USER_EXCEPTION_SUCCESS","ADD_USER_EXCEPTION_FAILURE","UPDATE_MSG_ADD","deleteUserExceptionFailure","addUserExceptionFailure","UserException","showNewItemModal","userId","errorNewItem","formRef","fetchUserExceptionData","delete_handler","userIdDelete","confirmDelete_handler","_this$props$authState","deleteUserException","cancelDelete_handler","handleOpenNewItemModal","updateAddErrorMsg","handleCancelNewItem","handleSaveNewItem","_this$props$authState2","validateEmail","addUserException","handleOnInputChange","filterData","handlePaginate","pageNumber","renderDeleteModal","renderAddModal","newItemError","renderAlert","alerOpen","filteredData","indexOfLastItem","indexOfFirstItem","paginatedData","SearchInput","userException","deleteItemError","_ex$response3","_ex$response2","ApplicationGrid","_props$items","editingId","setEditingId","setCurrentPage","setItemsPerPage","setPaginatedData","editingItem","setEditingItem","isValidUrl","setIsValidUrl","handleCancel","paginateData","handleOnChangeInput","partialUpdate","supportGroup","businessOwner","systemOwner","onBlur","urlString","isValidURL","apiPath","handleSave","handleEdit","FETCH_APPLICATION_REQUEST","FETCH_APPLICATION_SUCCESS","FETCH_APPLICATION_FAILURE","UPDATE_APPLICATION_REQUEST","UPDATE_APPLICATION_SUCCESS","UPDATE_APPLICATION_FAILURE","CardImg","CardHeader","cardHeaderBsPrefix","CardHeaderContext","DivStyledAsH5","DivStyledAsH6","CardBody","CardTitle","CardSubtitle","CardLink","CardText","CardFooter","CardImgOverlay","Card","Img","Subtitle","ImgOverlay","applicationData","application","fetchApplicationData","updateApplicationData","put","setFilteredData","_props$authState","_props$authState2","popUp","$f01a183cc7bdff77849e49ad26eb904$var$defaultContext","$f01a183cc7bdff77849e49ad26eb904$var$SSRContext","_react","$f01a183cc7bdff77849e49ad26eb904$var$canUseDOM","makeEventKey","eventKey","inProp","hasEnteredRef","_excluded2","_excluded3","useTabPanel","TabContext","activeKey","getControlledId","getControllerId","TabPanel","tabPanelProps","NoopTransition","SelectableContext","Tabs","generateChildId","generateCustomChildId","onSelect","propsOnSelect","propsActiveKey","defaultActiveKey","useSSRSafeId","tabContext","Panel","NavContext","useNavItem","parentOnSelect","navContext","contextControllerId","contextControlledId","NavItem","EVENT_KEY_ATTR","Nav","needsRefocusRef","listNode","getNextActiveTab","currentListNode","activeChild","handleSelect","nextActiveChild","navItemProps","initialBsPrefix","justify","navbar","navbarScroll","navbarBsPrefix","isNavbar","navbarContext","NavbarContext","cardHeaderContext","BaseNav","getTabTransitionComponent","TabPane","getDefaultActiveKey","renderTab","tabClassName","controlledProps","BaseTabs","TabContent","TabContainer","Tab","Content","Pane","sortArray","dataArray","sortFunction","nameA","nameB","formatDateFunc","saveFile","contentDisposition","ParseFileNameFromContentDisposition","FETCH_ZOOM_LOGGING_REQUEST","FETCH_ZOOM_LOGGING_SUCCESS","FETCH_ZOOM_LOGGING_FAILURE","FETCH_ZOOM_CLEAN_LOGGING_REQUEST","FETCH_ZOOM_CLEAN_LOGGING_SUCCESS","FETCH_ZOOM_CLEAN_LOGGING_FAILURE","EXPORT_ZOOM_LOGGING_REQUEST","EXPORT_ZOOM_LOGGING_SUCCESS","EXPORT_ZOOM_LOGGING_FAILURE","EXPORT_ZOOM_CLEAN_LOGGING_REQUEST","EXPORT_ZOOM_CLEAN_LOGGING_SUCCESS","EXPORT_ZOOM_CLEAN_LOGGING_FAILURE","ZoomCleanLogGrid","_item$users","_item$users2","_item$users3","assignedLicensesBefore","assignedLicensesAfter","availableLicensesBefore","availableLicensesAfter","moment","eventTimestamp","users","EventType","zoomLogging","cleanLogData","cleanLog","fetchZoomLoggingData","fetchZoomLoggingSuccess","exportZoomLoggingData","exportZoomLoggingSuccess","fetchZoomCleanLoggingData","fetchZoomCleanLoggingSuccess","exportZoomCleanLoggingData","exportZoomCleanLoggingSuccess","_ex$response4","cleanLogSearchTerm","setCleanLogSearchTerm","eventType","setEventType","cleanLogDataFiltered","setCleanLogDataFiltered","setKey","getPSTDate","handlerExportCleanEventLog","formattedDate","handlerCleanUpReload","UserEmail","_userProfile$roles2","_userProfile$roles","AdminHeader","Application","ZoomLogging","ToastNotification","App","SecureRoute","Admin","AppWithRouterAccess","formatDate","_action$payload","data_add","data_delete","initialCountState","previousCountState","allCount","agileCount","isuCount","sapQnCount","coupaCount","samCount","snowCount","trackwiseCount","ivaluaCount","rceCount","itTimeSheetCount","concurCount","neptuneMtCount","fieldglassCount","smartRecruitersCount","neptunePsCount","myHcmCount","mesCount","adobeSignCount","archibusCount","workdayCount","purchaseOrderCount","workforceCount","allCountUpdated","agileCountUpdated","isuCountUpdated","sapQnCountUpdated","coupaCountUpdated","samCountUpdated","snowCountUpdated","trackwiseCountUpdated","ivaluaCountUpdated","rceCountUpdated","concurUpdated","neptuneMtUpdated","fieldglassUpdated","smartRecruitersUpdated","itTimesheetUpdated","neptunePsUpdated","myHcmUpdated","mesUpdated","adobeSignUpdated","archibusUpdated","workdayUpdated","purchaseOrderUpdated","workforceUpdated","curUserObj","clearedList","fetchComplete","isInitialData","intPortalApps","userExceptionReducer","userProfileReducer","ApplicationReducer","ZoomLoggingReducer"],"sourceRoot":""}