{"version":3,"file":"static/js/main.e733bce5.js","mappings":"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","sources":["../node_modules/@Green-Dot-Corporation/eureka-ui-loading/src/styles/loading-state.scss","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/buttons/dist/esm/src/components/ButtonIcon.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/buttons/dist/esm/src/components/ButtonText.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/buttons/dist/esm/src/const/variantsConst.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/buttons/dist/esm/src/utils/buttonUtils.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/buttons/dist/esm/src/styles/button.scss.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/buttons/dist/esm/packages/components/icons/dist/esm/src/styles/loading-dots.scss.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/buttons/dist/esm/packages/components/icons/dist/esm/src/LoadingDots.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/buttons/dist/esm/src/Button.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/src/CalloutActions.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/src/const/variantsConst.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/src/styles/callout.scss.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/typography/dist/esm/src/styles/heading.scss.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/typography/dist/esm/src/Heading.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/icons/dist/esm/src/const/baseClsConst.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/icons/dist/esm/packages/components/media/dist/esm/src/styles/svg-wrapper.scss.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/icons/dist/esm/packages/components/media/dist/esm/src/SVGWrapper.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/icons/dist/esm/src/IconSVGWrapper.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/icons/dist/esm/src/EurekaTriangleAlert.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/icons/dist/esm/src/EurekaCircleCheck.js","../node_modules/@Green-Dot-Corporation/callouts/dist/esm/src/Callout.js","../node_modules/@Green-Dot-Corporation/icons/dist/esm/src/styles/loading-dots.scss.js","../node_modules/@Green-Dot-Corporation/icons/dist/esm/src/LoadingDots.js","../node_modules/@Green-Dot-Corporation/eureka-ui-loading/src/LoadingState.js","../node_modules/@Green-Dot-Corporation/eureka-ui-loading/src/LoadingFlow.js","../node_modules/js-cookie/dist/js.cookie.mjs","../node_modules/react-helmet/es/Helmet.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@loadable/component/dist/loadable.esm.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","services/featureLoaderService.js","../node_modules/@Green-Dot-Corporation/eureka-lib-fetch-utils/src/FetchError.js","../node_modules/@Green-Dot-Corporation/eureka-lib-fetch-utils/src/interceptors.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/@Green-Dot-Corporation/eureka-lib-fetch-utils/src/utils/constants.js","../node_modules/@Green-Dot-Corporation/eureka-lib-fetch-utils/src/utils/responseCache.js","../node_modules/@Green-Dot-Corporation/eureka-lib-fetch-utils/src/utils/handleResponse.js","../node_modules/@Green-Dot-Corporation/eureka-lib-fetch-utils/src/utils/helper.js","../node_modules/@Green-Dot-Corporation/eureka-lib-fetch-utils/src/utils/makeRequest.js","../node_modules/@Green-Dot-Corporation/eureka-lib-fetch-utils/src/fetch.js","../node_modules/uuid/dist/esm-browser/regex.js","../node_modules/uuid/dist/esm-browser/validate.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/v4.js","const/appConst.js","services/storageService.js","services/appService.js","components/loaders/FeatureLoader.js","../node_modules/@Green-Dot-Corporation/buttons/dist/esm/src/components/ButtonIcon.js","../node_modules/@Green-Dot-Corporation/buttons/dist/esm/src/components/ButtonText.js","../node_modules/@Green-Dot-Corporation/buttons/dist/esm/src/const/variantsConst.js","../node_modules/@Green-Dot-Corporation/buttons/dist/esm/src/utils/buttonUtils.js","../node_modules/@Green-Dot-Corporation/buttons/dist/esm/src/styles/button.scss.js","../node_modules/@Green-Dot-Corporation/buttons/dist/esm/packages/components/icons/dist/esm/src/styles/loading-dots.scss.js","../node_modules/@Green-Dot-Corporation/buttons/dist/esm/packages/components/icons/dist/esm/src/LoadingDots.js","../node_modules/@Green-Dot-Corporation/buttons/dist/esm/src/Button.js","../node_modules/@Green-Dot-Corporation/eureka-ui-callouts/src/CalloutActions.js","../node_modules/@Green-Dot-Corporation/eureka-ui-callouts/src/const/variantsConst.js","../node_modules/@Green-Dot-Corporation/eureka-ui-callouts/src/styles/callout.scss","../node_modules/@Green-Dot-Corporation/typography/dist/esm/src/styles/heading.scss.js","../node_modules/@Green-Dot-Corporation/typography/dist/esm/src/Heading.js","../node_modules/@Green-Dot-Corporation/icons/dist/esm/src/const/baseClsConst.js","../node_modules/@Green-Dot-Corporation/icons/dist/esm/packages/components/media/dist/esm/src/styles/svg-wrapper.scss.js","../node_modules/@Green-Dot-Corporation/icons/dist/esm/packages/components/media/dist/esm/src/SVGWrapper.js","../node_modules/@Green-Dot-Corporation/icons/dist/esm/src/IconSVGWrapper.js","../node_modules/@Green-Dot-Corporation/icons/dist/esm/src/EurekaTriangleAlert.js","../node_modules/@Green-Dot-Corporation/icons/dist/esm/src/EurekaCircleCheck.js","../node_modules/@Green-Dot-Corporation/eureka-ui-callouts/src/Callout.js","components/errors/ErrorBoundary.js","../node_modules/@Green-Dot-Corporation/eureka-lib-device-info-utils/src/deviceInfo.js","../node_modules/@Green-Dot-Corporation/eureka-lib-device-info-utils/src/browserDetect.js","../node_modules/@Green-Dot-Corporation/eureka-lib-device-info-utils/index.js","components/layout/Header.js","components/layout/AppLayout.js","pages/PageNotFound.js","services/appsflyerService.js","services/sdkLandingService.js","pages/SDKLanding.js","utils/urlUtils.js","components/analytics/services/GoogleGtmAnalyticsService.js","components/analytics/services/AdobeAnalyticsService.js","components/analytics/services/AnalyticsService.js","components/layout/RouteChangeListener.js","components/loaders/AppLoader.js","components/analytics/AnalyticObserver.js","../node_modules/@Green-Dot-Corporation/web-app-utils-hooks/src/useScript.js","components/analytics/AdobeLaunch.js","components/analytics/GoogleTagManager.js","const/googleGtmConst.js","components/analytics/GoogleGtmManager.js","components/analytics/AnalyticEngine.js","services/forter.js","components/analytics/ForterFraudDetection.js","../node_modules/@datadog/browser-core/src/tools/display.ts","../node_modules/@datadog/browser-core/src/tools/catchUserErrors.ts","../node_modules/@datadog/browser-core/src/tools/monitor.ts","../node_modules/@datadog/browser-core/src/tools/utils/polyfills.ts","../node_modules/@datadog/browser-core/src/boot/init.ts","../node_modules/@datadog/browser-core/src/tools/getGlobalObject.ts","../node_modules/@datadog/browser-core/src/tools/utils/byteUtils.ts","../node_modules/@datadog/browser-core/src/tools/getZoneJsOriginalValue.ts","../node_modules/@datadog/browser-core/src/tools/timer.ts","../node_modules/@datadog/browser-core/src/tools/utils/functionUtils.ts","../node_modules/@datadog/browser-core/src/tools/serialisation/jsonStringify.ts","../node_modules/@datadog/browser-core/src/tools/utils/objectUtils.ts","../node_modules/@datadog/browser-core/src/domain/context/customerDataTracker.ts","../node_modules/@datadog/browser-core/src/tools/utils/typeUtils.ts","../node_modules/@datadog/browser-core/src/tools/mergeInto.ts","../node_modules/@datadog/browser-core/src/tools/serialisation/sanitize.ts","../node_modules/@datadog/browser-core/src/tools/observable.ts","../node_modules/@datadog/browser-core/src/domain/context/contextManager.ts","../node_modules/@datadog/browser-core/src/domain/trackingConsent.ts","../node_modules/@datadog/browser-core/src/tools/experimentalFeatures.ts","../node_modules/@datadog/browser-core/src/tools/stackTrace/computeStackTrace.ts","../node_modules/@datadog/browser-core/src/tools/stackTrace/handlingStack.ts","../node_modules/@datadog/browser-core/src/domain/error/error.ts","../node_modules/@datadog/browser-core/src/domain/configuration/intakeSites.ts","../node_modules/@datadog/browser-core/src/tools/utils/numberUtils.ts","../node_modules/@datadog/browser-core/src/tools/utils/timeUtils.ts","../node_modules/@datadog/browser-core/src/tools/sendToExtension.ts","../node_modules/@datadog/browser-core/src/domain/connectivity/connectivity.ts","../node_modules/@datadog/browser-core/src/tools/utils/arrayUtils.ts","../node_modules/@datadog/browser-core/src/tools/boundedBuffer.ts","../node_modules/@datadog/browser-core/src/domain/telemetry/rawTelemetryEvent.types.ts","../node_modules/@datadog/browser-core/src/domain/telemetry/telemetry.ts","../node_modules/@datadog/browser-core/src/browser/addEventListener.ts","../node_modules/@datadog/browser-core/src/domain/context/storeContextManager.ts","../node_modules/@datadog/browser-core/src/tools/encoder.ts","../node_modules/@datadog/browser-core/src/domain/user/user.ts","../node_modules/@datadog/browser-core/src/boot/displayAlreadyInitializedError.ts","../node_modules/@datadog/browser-core/src/transport/eventBridge.ts","../node_modules/@datadog/browser-core/src/tools/instrumentMethod.ts","../node_modules/@datadog/browser-core/src/tools/utils/urlPolyfill.ts","../node_modules/@datadog/browser-core/src/browser/fetchObservable.ts","../node_modules/@datadog/browser-core/src/tools/utils/stringUtils.ts","../node_modules/@datadog/browser-core/src/browser/cookie.ts","../node_modules/@datadog/browser-core/src/domain/synthetics/syntheticsWorkerValues.ts","../node_modules/@datadog/browser-core/src/tools/utils/browserDetection.ts","../node_modules/@datadog/browser-core/src/domain/session/storeStrategies/sessionStoreStrategy.ts","../node_modules/@datadog/browser-core/src/domain/session/sessionConstants.ts","../node_modules/@datadog/browser-core/src/domain/session/sessionState.ts","../node_modules/@datadog/browser-core/src/domain/session/oldCookiesMigration.ts","../node_modules/@datadog/browser-core/src/domain/session/storeStrategies/sessionInCookie.ts","../node_modules/@datadog/browser-core/src/domain/session/storeStrategies/sessionInLocalStorage.ts","../node_modules/@datadog/browser-core/src/domain/session/sessionStoreOperations.ts","../node_modules/@datadog/browser-core/src/domain/session/sessionStore.ts","../node_modules/@datadog/browser-core/src/domain/configuration/endpointBuilder.ts","../node_modules/@datadog/browser-core/src/domain/configuration/tags.ts","../node_modules/@datadog/browser-core/src/domain/configuration/transportConfiguration.ts","../node_modules/@datadog/browser-core/src/domain/configuration/configuration.ts","../node_modules/@datadog/browser-core/src/tools/matchOption.ts","../node_modules/@datadog/browser-rum-core/src/domain/tracing/tracer.ts","../node_modules/@datadog/browser-rum-core/src/domain/configuration/configuration.ts","../node_modules/@datadog/browser-rum-core/src/domain/vital/vitalCollection.ts","../node_modules/@datadog/browser-rum-core/src/domain/configuration/remoteConfiguration.ts","../node_modules/@datadog/browser-rum-core/src/boot/preStartRum.ts","../node_modules/@datadog/browser-rum-core/src/domain/plugins.ts","../node_modules/@datadog/browser-core/src/browser/pageExitObservable.ts","../node_modules/@datadog/browser-rum-core/src/browser/domMutationObservable.ts","../node_modules/@datadog/browser-rum-core/src/domain/resource/resourceUtils.ts","../node_modules/@datadog/browser-rum-core/src/browser/performanceObservable.ts","../node_modules/@datadog/browser-rum-core/src/browser/performanceCollection.ts","../node_modules/@datadog/browser-core/src/domain/error/error.types.ts","../node_modules/@datadog/browser-core/src/domain/eventRateLimiter/createEventRateLimiter.ts","../node_modules/@datadog/browser-rum-core/src/domain/limitModification.ts","../node_modules/@datadog/browser-rum-core/src/domain/assembly.ts","../node_modules/@datadog/browser-rum-core/src/domain/contexts/syntheticsContext.ts","../node_modules/@datadog/browser-core/src/tools/abstractLifeCycle.ts","../node_modules/@datadog/browser-rum-core/src/domain/lifeCycle.ts","../node_modules/@datadog/browser-core/src/tools/valueHistory.ts","../node_modules/@datadog/browser-rum-core/src/domain/contexts/viewContexts.ts","../node_modules/@datadog/browser-core/src/browser/xhrObservable.ts","../node_modules/@datadog/browser-core/src/tools/utils/responseUtils.ts","../node_modules/@datadog/browser-core/src/tools/readBytesFromStream.ts","../node_modules/@datadog/browser-rum-core/src/domain/requestCollection.ts","../node_modules/@datadog/browser-rum-core/src/domain/discardNegativeDuration.ts","../node_modules/@datadog/browser-rum-core/src/domain/trackEventCounts.ts","../node_modules/@datadog/browser-rum-core/src/domain/waitPageActivityEnd.ts","../node_modules/@datadog/browser-rum-core/src/browser/polyfills.ts","../node_modules/@datadog/browser-rum-core/src/browser/htmlDomUtils.ts","../node_modules/@datadog/browser-rum-core/src/domain/privacy.ts","../node_modules/@datadog/browser-rum-core/src/domain/action/getActionNameFromElement.ts","../node_modules/@datadog/browser-rum-core/src/domain/getSelectorFromElement.ts","../node_modules/@datadog/browser-rum-core/src/domain/action/clickChain.ts","../node_modules/@datadog/browser-rum-core/src/domain/action/listenActionEvents.ts","../node_modules/@datadog/browser-rum-core/src/domain/action/computeFrustration.ts","../node_modules/@datadog/browser-rum-core/src/domain/action/trackClickActions.ts","../node_modules/@datadog/browser-rum-core/src/domain/action/actionCollection.ts","../node_modules/@datadog/browser-core/src/domain/error/trackRuntimeError.ts","../node_modules/@datadog/browser-core/src/domain/console/consoleObservable.ts","../node_modules/@datadog/browser-core/src/domain/report/reportObservable.ts","../node_modules/@datadog/browser-rum-core/src/domain/error/errorCollection.ts","../node_modules/@datadog/browser-rum-core/src/domain/error/trackConsoleError.ts","../node_modules/@datadog/browser-rum-core/src/domain/error/trackReportError.ts","../node_modules/@datadog/browser-rum-core/src/domain/resource/matchRequestTiming.ts","../node_modules/@datadog/browser-core/src/browser/runOnReadyState.ts","../node_modules/@datadog/browser-rum-core/src/domain/tracing/getDocumentTraceId.ts","../node_modules/@datadog/browser-rum-core/src/browser/performanceUtils.ts","../node_modules/@datadog/browser-rum-core/src/domain/resource/retrieveInitialDocumentResourceTiming.ts","../node_modules/@datadog/browser-rum-core/src/domain/resource/resourceCollection.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackFirstContentfulPaint.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackNavigationTimings.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackLargestContentfulPaint.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackInitialViewMetrics.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackFirstHidden.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackFirstInput.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackCumulativeLayoutShift.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/interactionCountPolyfill.ts","../node_modules/@datadog/browser-rum-core/src/browser/viewportObservable.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackInteractionToNextPaint.ts","../node_modules/@datadog/browser-rum-core/src/browser/scroll.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackScrollMetrics.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackCommonViewMetrics.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackLoadingTime.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/trackViews.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/trackViewEventCounts.ts","../node_modules/@datadog/browser-rum-core/src/domain/view/viewCollection.ts","../node_modules/@datadog/browser-core/src/domain/session/sessionManager.ts","../node_modules/@datadog/browser-rum-core/src/domain/rumSessionManager.ts","../node_modules/@datadog/browser-core/src/transport/batch.ts","../node_modules/@datadog/browser-core/src/transport/sendWithRetryStrategy.ts","../node_modules/@datadog/browser-core/src/transport/httpRequest.ts","../node_modules/@datadog/browser-core/src/transport/flushController.ts","../node_modules/@datadog/browser-core/src/transport/startBatchWithReplica.ts","../node_modules/@datadog/browser-rum-core/src/domain/contexts/urlContexts.ts","../node_modules/@datadog/browser-rum-core/src/browser/locationChangeObservable.ts","../node_modules/@datadog/browser-rum-core/src/domain/contexts/featureFlagContext.ts","../node_modules/@datadog/browser-rum-core/src/domain/startCustomerDataTelemetry.ts","../node_modules/@datadog/browser-rum-core/src/domain/contexts/pageStateHistory.ts","../node_modules/@datadog/browser-rum-core/src/browser/cookieObservable.ts","../node_modules/@datadog/browser-rum-core/src/domain/contexts/ciVisibilityContext.ts","../node_modules/@datadog/browser-rum-core/src/domain/getSessionReplayUrl.ts","../node_modules/@datadog/browser-rum/src/domain/replayStats.ts","../node_modules/@datadog/browser-rum/src/domain/record/serialization/serializationUtils.ts","../node_modules/@datadog/browser-rum/src/types/sessionReplayConstants.ts","../node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeStyleSheets.ts","../node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeAttribute.ts","../node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeAttributes.ts","../node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeNode.ts","../node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeDocument.ts","../node_modules/@datadog/browser-rum/src/domain/record/eventsUtils.ts","../node_modules/@datadog/browser-rum/src/domain/record/viewports.ts","../node_modules/@datadog/browser-rum/src/domain/record/assembly.ts","../node_modules/@datadog/browser-rum/src/domain/record/trackers/trackMove.ts","../node_modules/@datadog/browser-rum/src/domain/record/trackers/trackMouseInteraction.ts","../node_modules/@datadog/browser-rum/src/domain/record/trackers/trackScroll.ts","../node_modules/@datadog/browser-rum/src/domain/record/trackers/trackViewportResize.ts","../node_modules/@datadog/browser-rum/src/domain/record/trackers/trackMediaInteraction.ts","../node_modules/@datadog/browser-rum/src/domain/record/trackers/trackStyleSheet.ts","../node_modules/@datadog/browser-rum/src/domain/record/trackers/trackFocus.ts","../node_modules/@datadog/browser-rum/src/domain/record/trackers/trackFrustration.ts","../node_modules/@datadog/browser-rum/src/domain/record/trackers/trackViewEnd.ts","../node_modules/@datadog/browser-rum/src/domain/record/trackers/trackInput.ts","../node_modules/@datadog/browser-rum/src/domain/record/mutationBatch.ts","../node_modules/@datadog/browser-rum/src/domain/record/trackers/trackMutation.ts","../node_modules/@datadog/browser-rum/src/domain/record/shadowRootsController.ts","../node_modules/@datadog/browser-rum/src/domain/record/record.ts","../node_modules/@datadog/browser-rum/src/domain/record/elementsScrollPositions.ts","../node_modules/@datadog/browser-rum/src/domain/record/startFullSnapshots.ts","../node_modules/@datadog/browser-rum/src/domain/record/recordIds.ts","../node_modules/@datadog/browser-rum/src/domain/segmentCollection/segment.ts","../node_modules/@datadog/browser-rum/src/domain/segmentCollection/segmentCollection.ts","../node_modules/@datadog/browser-rum/src/domain/segmentCollection/buildReplayPayload.ts","../node_modules/@datadog/browser-rum/src/boot/isBrowserSupported.ts","../node_modules/@datadog/browser-rum/src/domain/getSessionReplayLink.ts","../node_modules/@datadog/browser-rum/src/domain/deflate/deflateEncoder.ts","../node_modules/@datadog/browser-rum/src/domain/deflate/deflateWorker.ts","../node_modules/@datadog/browser-rum/src/entries/main.ts","../node_modules/@datadog/browser-rum/src/boot/recorderApi.ts","../node_modules/@datadog/browser-rum/src/boot/startRecording.ts","../node_modules/@datadog/browser-rum/src/domain/startRecordBridge.ts","../node_modules/@datadog/browser-rum-core/src/boot/rumPublicApi.ts","../node_modules/@datadog/browser-rum-core/src/domain/contexts/commonContext.ts","../node_modules/@datadog/browser-rum-core/src/boot/startRum.ts","../node_modules/@datadog/browser-rum-core/src/transport/startRumEventBridge.ts","../node_modules/@datadog/browser-rum-core/src/transport/startRumBatch.ts","../node_modules/@datadog/browser-rum-core/src/domain/contexts/displayContext.ts","../node_modules/@datadog/browser-rum-core/src/domain/longTask/longTaskCollection.ts","../node_modules/@datadog/browser-rum-core/src/domain/contexts/internalContext.ts","../node_modules/@datadog/browser-logs/src/domain/logger/isAuthorized.ts","../node_modules/@datadog/browser-logs/src/domain/logger.ts","../node_modules/@datadog/browser-logs/src/domain/configuration.ts","../node_modules/@datadog/browser-logs/src/boot/preStartLogs.ts","../node_modules/@datadog/browser-logs/src/boot/logsPublicApi.ts","../node_modules/@datadog/browser-logs/src/domain/logsSessionManager.ts","../node_modules/@datadog/browser-logs/src/domain/contexts/rumInternalContext.ts","../node_modules/@datadog/browser-logs/src/domain/console/consoleCollection.ts","../node_modules/@datadog/browser-logs/src/domain/report/reportCollection.ts","../node_modules/@datadog/browser-logs/src/domain/networkError/networkErrorCollection.ts","../node_modules/@datadog/browser-logs/src/domain/lifeCycle.ts","../node_modules/@datadog/browser-logs/src/domain/logger/loggerCollection.ts","../node_modules/@datadog/browser-logs/src/domain/logsTelemetry.ts","../node_modules/@datadog/browser-logs/src/entries/main.ts","../node_modules/@datadog/browser-logs/src/domain/contexts/commonContext.ts","../node_modules/@datadog/browser-logs/src/boot/startLogs.ts","../node_modules/@datadog/browser-logs/src/domain/reportError.ts","../node_modules/@datadog/browser-logs/src/domain/runtimeError/runtimeErrorCollection.ts","../node_modules/@datadog/browser-logs/src/domain/contexts/internalContext.ts","../node_modules/@datadog/browser-logs/src/domain/assembly.ts","../node_modules/@datadog/browser-logs/src/transport/startLogsBridge.ts","../node_modules/@datadog/browser-logs/src/transport/startLogsBatch.ts","../node_modules/@Green-Dot-Corporation/eureka-lib-color-utils/src/utils/colorFormatConversionUtils.js","../node_modules/@Green-Dot-Corporation/eureka-lib-theme-utils/src/const/tokens/coreTokens.js","../node_modules/@Green-Dot-Corporation/eureka-lib-theme-utils/src/utils/dataUtils.js","services/brandingService.js","../node_modules/@Green-Dot-Corporation/eureka-lib-theme-utils/src/utils/cssVarUtils.js","const/loggerConst.js","services/logger/LoggerService.js","services/logger/Logger.js","BlueSkyApp.js","services/datadogService.js","reportWebVitals.js","bootstrap.js","../node_modules/@Green-Dot-Corporation/eureka-lib-router-utils/src/RouterUtilsContext.js","../node_modules/@Green-Dot-Corporation/eureka-lib-router-utils/src/withRouter.js","../node_modules/classnames/index.js","../node_modules/components/typography/dist/esm/src/styles/hyperlink.scss.js","../node_modules/components/typography/dist/esm/src/Hyperlink.js","../node_modules/@Green-Dot-Corporation/eureka-lib-router-utils/src/RouteLink.js","../node_modules/@Green-Dot-Corporation/eureka-lib-router-utils/src/AuthorizedRoute.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/object-assign/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../../packages/react-router-dom/index.tsx","../../packages/react-router/lib/context.ts","../../packages/react-router/lib/router.ts","../../packages/react-router/lib/hooks.tsx","../../packages/react-router/lib/components.tsx","../node_modules/react-side-effect/lib/index.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/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/tinycolor2/tinycolor.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/sharing","../webpack/runtime/publicPath","../webpack/runtime/consumes","../webpack/runtime/jsonp chunk loading","../webpack/startup"],"sourcesContent":["// ========================================================\n// Dependencies\n// ========================================================\n// @import '~@Green-Dot-Corporation/eureka-lib-style-utils/src/styles/mixins/layout.scss';\n\n.eureka-loading-state, %eureka-loading-state {\n .eureka-callout__icon {\n font-size: inherit;\n }\n}\n","import\"react\";import e from\"prop-types\";import{jsx as r}from\"react/jsx-runtime\";var ButtonIcon=function(e){var a=e.renderIcon,s=e.baseCls+\"__icon\";return r(\"span\",{className:s+\"-container\",children:r(\"span\",{className:s+\"-safe-space\",children:r(\"span\",{className:s,children:a&&a()})})})};ButtonIcon.defaultProps={baseCls:\"eureka-button\"},ButtonIcon.propTypes={baseCls:e.string,renderIcon:e.func.isRequired};var a=ButtonIcon;export{a as default};\n//# sourceMappingURL=ButtonIcon.js.map\n","import\"react\";import r from\"prop-types\";import{jsx as e}from\"react/jsx-runtime\";var ButtonText=function(r){var t=r.baseCls,a=r.children;return e(\"span\",{className:t+\"__text-container\",children:e(\"span\",{className:t+\"__text\",children:a})})};ButtonText.defaultProps={baseCls:\"eureka-button\"},ButtonText.propTypes={baseCls:r.string};var t=ButtonText;export{t as default};\n//# sourceMappingURL=ButtonText.js.map\n","var R={PRIMARY:\"PRIMARY\",PRIMARY_DESTRUCTIVE:\"PRIMARY_DESTRUCTIVE\",SECONDARY:\"SECONDARY\",SECONDARY_DESTRUCTIVE:\"SECONDARY_DESTRUCTIVE\"};export{R as VARIANTS};\n//# sourceMappingURL=variantsConst.js.map\n","import{VARIANTS as r}from\"../const/variantsConst.js\";var t=r.PRIMARY,a=r.PRIMARY_DESTRUCTIVE,s=r.SECONDARY,R=r.SECONDARY_DESTRUCTIVE,getBtnModCls=function(r,e){var n;return(n={})[e+\"--primary\"]=r===t,n[e+\"--secondary\"]=r===s,n[e+\"--primary-destructive\"]=r===a,n[e+\"--secondary-destructive\"]=r===R,n};export{getBtnModCls};\n//# sourceMappingURL=buttonUtils.js.map\n","var b=\"@keyframes eureka-rotate-clockwise{to{transform:rotate(1turn)}}@keyframes eureka-rotate-counter-clockwise{to{transform:rotate(-1turn)}}@keyframes eureka-fade-in{0%{opacity:0}to{opacity:1}}.eureka-button{background-color:transparent;background-color:var(--eureka-core-color-canvas,#fff);border:0 solid transparent;border-radius:var(--eureka-btn-border-radius,2px);border-width:var(--eureka-btn-border-width,1px);box-sizing:border-box;color:inherit;font-size:var(--eureka-core-typography-large-font-size,1.7rem);padding:0;transition:box-shadow .15s ease-in-out}@media screen and (max-width:575px){.eureka-button{font-size:var(--eureka-core-typography-large-mobile-font-size,1.6rem)}}.eureka-button:focus{outline:none}.eureka-button:focus-visible{box-shadow:0 0 0 3px var(--eureka-color-universal-focus-halo,rgba(0,0,0,.4))}@media (hover:hover){.eureka-button:enabled:hover{cursor:pointer}}.eureka-button:disabled{opacity:var(--eureka-core-state-disabled-opacity,.33)}@media (hover:hover){.eureka-button:disabled:hover{cursor:not-allowed}}.eureka-button__content-container{display:inline-block;padding:.4rem .8rem}.eureka-button__text{font-weight:var(--eureka-btn-font-weight,normal)}.eureka-button__text-container{line-height:var(--eureka-core-typography-line-height,1.4);vertical-align:middle}.eureka-button__icon-container{vertical-align:middle}.eureka-button__icon-container,.eureka-button__text-container{box-sizing:border-box;display:inline-block;padding:.4rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.eureka-button__icon-container+.eureka-button__text-container{vertical-align:middle}.eureka-button__icon-safe-space{box-sizing:border-box;width:1.1765em}.eureka-button__icon,.eureka-button__icon-safe-space{display:flex;flex-direction:row;vertical-align:middle}.eureka-button__icon{flex:0 0 auto;font-size:1.1765em;margin:auto}.eureka-button__icon .eureka-icon{margin:auto}.eureka-button .eureka-button__busy-icon{font-size:1em}.eureka-button .eureka-button__busy-icon .eureka-loading-dots__dot{background-color:currentColor}.eureka-button--primary{background-color:var(--eureka-btn-primary-color-bg,#2945ff);border-color:var(--eureka-btn-primary-color-border,transparent);color:var(--eureka-btn-primary-color-text,inherit)}.eureka-button--primary:focus-visible{box-shadow:0 0 0 3px var(--eureka-btn-primary-focus-color-halo,rgba(41,69,255,.4))}@media (hover:hover){.eureka-button--primary:enabled:hover{background-color:var(--eureka-btn-primary-hover-color-bg,#000d66);border-color:var(--eureka-btn-primary-hover-color-border,transparent);color:var(--eureka-btn-primary-hover-color-text,#fff)}}.eureka-button--secondary{background-color:var(--eureka-btn-secondary-color-bg,#fff);border-color:var(--eureka-btn-secondary-color-border,currentColor);color:var(--eureka-btn-secondary-color-text,#2945ff)}.eureka-button--secondary:focus-visible{box-shadow:0 0 0 3px var(--eureka-btn-secondary-focus-color-halo,rgba(41,69,255,.4))}@media (hover:hover){.eureka-button--secondary:enabled:hover{background-color:var(--eureka-btn-secondary-hover-color-bg,#ccd3ff);border-color:var(--eureka-btn-secondary-hover-color-border,currentColor);color:var(--eureka-btn-secondary-hover-color-text,#000d66)}}.eureka-button--primary-destructive{background-color:var(--eureka-btn-primary-destructive-color-bg,#e0114c);border-color:var(--eureka-btn-primary-destructive-color-border,transparent);color:var(--eureka-btn-primary-destructive-color-text,#fff)}.eureka-button--primary-destructive:focus-visible{box-shadow:0 0 0 3px var(--eureka-btn-primary-destructive-focus-color-halo,rgba(224,17,76,.4))}@media (hover:hover){.eureka-button--primary-destructive:enabled:hover{background-color:var(--eureka-btn-primary-destructive-hover-color-bg,#8e0b30);border-color:var(--eureka-btn-primary-destructive-hover-color-border,transparent);color:var(--eureka-btn-primary-destructive-hover-color-text,#fff)}}.eureka-button--secondary-destructive{background-color:var(--eureka-btn-secondary-destructive-color-bg,#fff);border-color:var(--eureka-btn-secondary-destructive-color-border,currentColor);color:var(--eureka-btn-secondary-destructive-color-text,#e0114c)}.eureka-button--secondary-destructive:focus-visible{box-shadow:0 0 0 3px var(--eureka-btn-primary-destructive-focus-color-halo,rgba(224,17,76,.4))}@media (hover:hover){.eureka-button--secondary-destructive:enabled:hover{background-color:var(--eureka-btn-secondary-destructive-hover-color-bg,#fbd0dc);border-color:var(--eureka-btn-secondary-destructive-hover-color-border,currentColor);color:var(--eureka-btn-secondary-destructive-hover-color-text,#5f0720)}}.eureka-button--destructive:active:enabled,.eureka-button--primary-destructive:active:enabled,.eureka-button--primary:active:enabled,.eureka-button--secondary-destructive:active:enabled,.eureka-button--secondary:active:enabled{transform:scale(.95)}.eureka-button--busy .eureka-icon-spinner{animation:eureka-rotate-clockwise 1s linear infinite}.eureka-button--busy .eureka-icon-spinner:before{transform:translate3d(.1px,-.2px,0)}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvX2FuaW1hdGlvbnMuc2NzcyIsInNyYy9zdHlsZXMvYnV0dG9uLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL19yZXNldHMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItdGhlbWUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvX3R5cG9ncmFwaHkuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItdGhlbWUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvX3N0YXRlcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL21peGlucy9fbGF5b3V0LnNjc3MiLCJzcmMvc3R5bGVzL19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxtQ0FDSSxHQUNJLHVCQ0FOLENBQ0YsQ0RJQSwyQ0FDSSxHQUNJLHdCQ0ZOLENBQ0YsQ0RNQSwwQkFDSSxHQUFLLFNDSFAsQ0RJRSxHQUFPLFNDRFQsQ0FDRixDQUxBLGVDSkksNEJBQUEsQ0RZQSxxREFBQSxDQUVBLDBCQUFBLENBQ0EsaURBQUEsQ0FEQSwrQ0FBQSxDQURBLHFCQUFBLENBRkEsYUFBQSxDRThFQSw4REFBQSxDRHRGQSxTQUFBLENFQ0Esc0NIa0JKLENJMEJJLG9DSjVDSixlRUVZLHFFRm9CVixDQUNGLENHckJJLHFCRkNBLFlEdUJKLENHcEJJLDZCQVZBLDRFSGlDSixDR2pCSSxxQkFDSSw2QkFDSSxjSG1CVixDQUNGLENHZEksd0JBQ0kscURIZ0JSLENHYlkscUJBQ0ksOEJBQ0ksa0JIZWxCLENBQ0YsQ0E3Qkksa0NBQ0ksb0JBQUEsQ0FDQSxtQkErQlIsQ0E1QkkscUJBQ0ksZ0RBOEJSLENBM0JJLCtCQUNJLHlEQUFBLENBQ0EscUJBNkJSLENBMUJJLCtCQUNJLHFCQTRCUixDQXpCSSw4REFFSSxxQkFBQSxDQUVBLG9CQUFBLENBQ0EsYUFBQSxDQUZBLHdCQUFBLENBQUEscUJBQUEsQ0FBQSxnQkE0QlIsQ0F2QkksOERBQ0kscUJBeUJSLENBdEJJLGdDQUlJLHFCQUFBLENBRkEsY0EyQlIsQ0F0QkkscURJeERBLFlBQUEsQ0FDQSxrQkFBQSxDSm1ESSxxQkFrQ1IsQ0E5QkkscUJBS0ksYUFBQSxDQUZBLGtCQUFBLENBQ0EsV0EwQlIsQ0F2QlEsa0NBQ0ksV0F5QlosQ0FyQkkseUNBQ0ksYUF1QlIsQ0FyQlEsbUVBQ0ksNkJBdUJaLENBbkJJLHdCQUVJLDJEQUFBLENBQ0EsK0RBQUEsQ0FGQSxrREF1QlIsQ0FuQlEsc0NHL0VKLGtGSHFHSixDQWxCUSxxQkFDSSxzQ0s1RVIsaUVBQUEsQ0FDQSxxRUFBQSxDQUZBLHFETG9HRixDQUNGLENBbEJJLDBCQUVJLDBEQUFBLENBQ0Esa0VBQUEsQ0FGQSxvREFzQlIsQ0FsQlEsd0NHL0ZKLG9GSG9ISixDQWpCUSxxQkFDSSx3Q0tsRlIsbUVBQUEsQ0FDQSx3RUFBQSxDQUZBLDBETHlHRixDQUNGLENBakJJLG9DQUVJLHVFQUFBLENBQ0EsMkVBQUEsQ0FGQSwyREFxQlIsQ0FqQlEsa0RHL0dKLDhGSG1JSixDQWhCUSxxQkFDSSxrREt4RlIsNkVBQUEsQ0FDQSxpRkFBQSxDQUZBLGlFTDhHRixDQUNGLENBaEJJLHNDQUVJLHNFQUFBLENBQ0EsOEVBQUEsQ0FGQSxnRUFvQlIsQ0FoQlEsb0RHL0hKLDhGSGtKSixDQWZRLHFCQUNJLG9ESzlGUiwrRUFBQSxDQUNBLG9GQUFBLENBRkEsc0VMbUhGLENBQ0YsQ0FUUSxtT0tqSkosb0JMNkpKLENBTlEsMENEeElKLG9EQ2lKSixDQUxRLGlEQUNJLG1DQU9aIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUm90YXRlIGNsb2Nrd2lzZVxuQGtleWZyYW1lcyBldXJla2Etcm90YXRlLWNsb2Nrd2lzZSB7XG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlWigxdHVybik7XG4gICAgfVxufVxuXG4vLyBSb3RhdGUgY291bnRlci1jbG9ja3dpc2VcbkBrZXlmcmFtZXMgZXVyZWthLXJvdGF0ZS1jb3VudGVyLWNsb2Nrd2lzZSB7XG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlWigtMXR1cm4pO1xuICAgIH1cbn1cblxuLy8gRmFkZSBJblxuQGtleWZyYW1lcyBldXJla2EtZmFkZS1pbiB7XG4gICAgMCUgeyBvcGFjaXR5OiAwOyB9XG4gICAgMTAwJSB7IG9wYWNpdHk6IDE7IH1cbn1cblxuLy8gSW5maW5pdGUgUm90YXRpb25cbkBtaXhpbiBldXJla2Etcm90YXRlLWluZmluaXRlKCRkdXJhdGlvbjogMXMsICR0aW1pbmdGdW5jOiBsaW5lYXIpIHtcbiAgICBhbmltYXRpb246IGV1cmVrYS1yb3RhdGUtY2xvY2t3aXNlICRkdXJhdGlvbiAkdGltaW5nRnVuYyBpbmZpbml0ZTtcbn1cbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXBlbmRlbmNpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL2FuaW1hdGlvbnMuc2Nzcyc7XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL2xheW91dC5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvcmVzZXRzLnNjc3MnO1xuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL3V0aWxzL3VuaXQtY29udmVyc2lvbi11dGlscy5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItdGhlbWUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvc3RhdGVzLnNjc3MnO1xuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi10aGVtZS11dGlscy9zcmMvc3R5bGVzL21peGlucy90eXBvZ3JhcGh5LnNjc3MnO1xuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi10aGVtZS11dGlscy9zcmMvc3R5bGVzL3V0aWxzL3RoZW1lLXV0aWxzLnNjc3MnO1xuQGltcG9ydCAnLi9taXhpbnMuc2Nzcyc7XG5cbi5ldXJla2EtYnV0dG9uLCAlZXVyZWthLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgZXVyZWthLWxhcmdlLXRleHQ7XG4gICAgQGluY2x1ZGUgZXVyZWthLWJ1dHRvbi1yZXNldDtcbiAgICBAaW5jbHVkZSBldXJla2EtZm9jdXMtc3RhdGUtaGFsbztcbiAgICBAaW5jbHVkZSBldXJla2EtaG92ZXItc3RhdGU7XG4gICAgQGluY2x1ZGUgZXVyZWthLWRpc2FibGVkLXN0YXRlO1xuICAgICR0aGlzOiAnLmV1cmVrYS1idXR0b24nO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWV1cmVrYS1jb3JlLWNvbG9yLWNhbnZhcywgZXVyZWthLWxpZ2h0LXRoZW1lKCdjb3JlLWNvbG9yLWNhbnZhcycpKTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJvcmRlcjogdmFyKC0tZXVyZWthLWJ0bi1ib3JkZXItd2lkdGgsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLWJvcmRlci13aWR0aCcpKSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ldXJla2EtYnRuLWJvcmRlci1yYWRpdXMsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLWJvcmRlci1yYWRpdXMnKSk7XG5cbiAgICAmX19jb250ZW50LWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcGFkZGluZzogI3tldXJla2EtdG8tcmVtKGV1cmVrYS1saWdodC10aGVtZSgnY29yZS1zeXN0ZW0tc2NhbGUnKSl9ICN7ZXVyZWthLXRvLXJlbShldXJla2EtbGlnaHQtdGhlbWUoJ2NvcmUtc3lzdGVtLXNjYWxlJykgKiAyKX07XG4gICAgfVxuXG4gICAgJl9fdGV4dCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1ldXJla2EtYnRuLWZvbnQtd2VpZ2h0LCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1mb250LXdlaWdodCcpKTtcbiAgICB9XG5cbiAgICAmX190ZXh0LWNvbnRhaW5lciB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWxpbmUtaGVpZ2h0LCBldXJla2EtbGlnaHQtdGhlbWUoJ2NvcmUtdHlwb2dyYXBoeS1saW5lLWhlaWdodCcpKTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICAmX19pY29uLWNvbnRhaW5lciB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuXG4gICAgJl9fdGV4dC1jb250YWluZXIsXG4gICAgJl9faWNvbi1jb250YWluZXIge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwYWRkaW5nOiAje2V1cmVrYS10by1yZW0oZXVyZWthLWxpZ2h0LXRoZW1lKCdjb3JlLXN5c3RlbS1zY2FsZScpKX07XG4gICAgfVxuXG4gICAgJl9faWNvbi1jb250YWluZXIgKyAmX190ZXh0LWNvbnRhaW5lciB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuXG4gICAgJl9faWNvbi1zYWZlLXNwYWNlIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWZsZXgtcm93O1xuICAgICAgICB3aWR0aDogZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4taWNvbi1mb250LXNpemUnKTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG5cbiAgICAmX19pY29uIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWZsZXgtcm93O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBmb250LXNpemU6IGV1cmVrYS1saWdodC10aGVtZSgnYnRuLWljb24tZm9udC1zaXplJyk7XG4gICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG5cbiAgICAgICAgLmV1cmVrYS1pY29uIHtcbiAgICAgICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgfVxuICAgIH1cblxuICAgICN7JHRoaXN9X19idXN5LWljb24ge1xuICAgICAgICBmb250LXNpemU6IDFlbTtcblxuICAgICAgICAuZXVyZWthLWxvYWRpbmctZG90c19fZG90IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXByaW1hcnkge1xuICAgICAgICBjb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1wcmltYXJ5LWNvbG9yLXRleHQsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktY29sb3ItdGV4dCcpKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1wcmltYXJ5LWNvbG9yLWJnLCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1wcmltYXJ5LWNvbG9yLWJnJykpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWV1cmVrYS1idG4tcHJpbWFyeS1jb2xvci1ib3JkZXIsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktY29sb3ItYm9yZGVyJykpO1xuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBldXJla2EtYnV0dG9uLXByaW1hcnktZm9jdXMtdmlzaWJsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgICAgICAgICAmOmVuYWJsZWQ6aG92ZXIge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGV1cmVrYS1idXR0b24tcHJpbWFyeS1ob3ZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXNlY29uZGFyeSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1ldXJla2EtYnRuLXNlY29uZGFyeS1jb2xvci10ZXh0LCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1zZWNvbmRhcnktY29sb3ItdGV4dCcpKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1zZWNvbmRhcnktY29sb3ItYmcsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXNlY29uZGFyeS1jb2xvci1iZycpKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ldXJla2EtYnRuLXNlY29uZGFyeS1jb2xvci1ib3JkZXIsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXNlY29uZGFyeS1jb2xvci1ib3JkZXInKSk7XG5cbiAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGV1cmVrYS1idXR0b24tc2Vjb25kYXJ5LWZvY3VzLXZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICAgICAgICAgJjplbmFibGVkOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBldXJla2EtYnV0dG9uLXNlY29uZGFyeS1ob3ZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXByaW1hcnktZGVzdHJ1Y3RpdmUge1xuICAgICAgICBjb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1wcmltYXJ5LWRlc3RydWN0aXZlLWNvbG9yLXRleHQsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktZGVzdHJ1Y3RpdmUtY29sb3ItdGV4dCcpKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1wcmltYXJ5LWRlc3RydWN0aXZlLWNvbG9yLWJnLCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1wcmltYXJ5LWRlc3RydWN0aXZlLWNvbG9yLWJnJykpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWV1cmVrYS1idG4tcHJpbWFyeS1kZXN0cnVjdGl2ZS1jb2xvci1ib3JkZXIsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktZGVzdHJ1Y3RpdmUtY29sb3ItYm9yZGVyJykpO1xuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBldXJla2EtYnV0dG9uLWRlc3RydWN0aXZlLWZvY3VzLXZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICAgICAgICAgJjplbmFibGVkOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBldXJla2EtYnV0dG9uLXByaW1hcnktZGVzdHJ1Y3RpdmUtaG92ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUge1xuICAgICAgICBjb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtY29sb3ItdGV4dCwgZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4tc2Vjb25kYXJ5LWRlc3RydWN0aXZlLWNvbG9yLXRleHQnKSk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWV1cmVrYS1idG4tc2Vjb25kYXJ5LWRlc3RydWN0aXZlLWNvbG9yLWJnLCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtY29sb3ItYmcnKSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtY29sb3ItYm9yZGVyLCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtY29sb3ItYm9yZGVyJykpO1xuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBldXJla2EtYnV0dG9uLWRlc3RydWN0aXZlLWZvY3VzLXZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICAgICAgICAgJjplbmFibGVkOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBldXJla2EtYnV0dG9uLXNlY29uZGFyeS1kZXN0cnVjdGl2ZS1ob3ZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHN0eWxlbGludC1kaXNhYmxlIG5vLWRlc2NlbmRpbmctc3BlY2lmaWNpdHlcbiAgICAmLS1wcmltYXJ5LFxuICAgICYtLXNlY29uZGFyeSxcbiAgICAmLS1kZXN0cnVjdGl2ZSxcbiAgICAmLS1wcmltYXJ5LWRlc3RydWN0aXZlLFxuICAgICYtLXNlY29uZGFyeS1kZXN0cnVjdGl2ZSB7XG4gICAgICAgICY6YWN0aXZlOmVuYWJsZWQge1xuICAgICAgICAgICAgQGluY2x1ZGUgZXVyZWthLWJ1dHRvbi1hY3RpdmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1idXN5IHtcbiAgICAgICAgLmV1cmVrYS1pY29uLXNwaW5uZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgZXVyZWthLXJvdGF0ZS1pbmZpbml0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ldXJla2EtaWNvbi1zcGlubmVyOjpiZWZvcmUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLjFweCwgLTAuMnB4LCAwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBtaXhpbiBldXJla2EtbGlzdC1yZXNldCgpIHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbn1cblxuQG1peGluIGV1cmVrYS1idXR0b24tcmVzZXQoKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXdpZHRoOiAwO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcGFkZGluZzogMDtcbn1cblxuQG1peGluIGV1cmVrYS1mb2N1cy1zdGF0ZS1yZXNldCgpIHtcbiAgICBvdXRsaW5lOiBub25lO1xufVxuIiwiLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlcGVuZGVuY2llc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL2xheW91dC5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy92YXJzL2JyZWFrcG9pbnRzLnNjc3MnO1xuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL3V0aWxzL21hcC11dGlscy5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy91dGlscy91bml0LWNvbnZlcnNpb24tdXRpbHMuc2Nzcyc7XG5AaW1wb3J0ICcuLi90b2tlbnMvY29sb3ItbGlnaHQtdGhlbWUtdG9rZW5zLnNjc3MnO1xuQGltcG9ydCAnLi4vdG9rZW5zL3N0eWxlLXRva2Vucy5zY3NzJztcblxuQG1peGluIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKCRjc3NWYXIsICR0b2tlbikge1xuICAgIEBpZiAkY3NzVmFyIGFuZCAkdG9rZW4ge1xuICAgICAgICBAaW5jbHVkZSBldXJla2EtYnJlYWtwb2ludC1tYXgtb25seSgkZXVyZWthLXhzLW1heCkge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoJGNzc1ZhciwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJHRva2VuKSkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gZXVyZWthLWxpbmUtaGVpZ2h0KCRpc0hlYWRpbmc6IGZhbHNlKSB7XG4gICAgQGlmICRpc0hlYWRpbmcge1xuICAgICAgICBsaW5lLWhlaWdodDogZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGluZS1oZWlnaHQnKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWxpbmUtaGVpZ2h0Jyk7XG4gICAgfVxufVxuXG5AbWl4aW4gZXVyZWthLW1heC1saW5lLXdpZHRoKCRsaW5laGVpZ2h0OiBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1saW5lLWhlaWdodCcpKSB7XG4gICAgLy8gJGRpdi1mb3JtOiAxZW0gLyAjeyRsaW5laGVpZ2h0fTtcbiAgICAkZGl2LWZvcm11bGE6IG1hdGguZGl2KDFlbSwgJGxpbmVoZWlnaHQpOyAvLyBmb250LXNpemUgZGl2aWRlZCBieSBsaW5laGVpZ2h0XG4gICAgbWF4LXdpZHRoOiBjYWxjKDcwICogI3skZGl2LWZvcm11bGF9KTsgLy8gbWF4IGNoYXJhY3RlcnMgKiAoZm9udC1zaXplIC8gbGluZS1oZWlnaHQpXG59XG5cbkBtaXhpbiBldXJla2EtaGVhZGluZy1mb250LXNoYXJlZCgpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbGluZS1oZWlnaHQodHJ1ZSk7XG4gICAgY29sb3I6IHZhcigtLWV1cmVrYS1jb3JlLWNvbG9yLWhlYWRpbmdzLXRleHQsIGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2EtY29sb3ItbGlnaHQtdGhlbWUtdG9rZW5zLCAnY29yZS1jb2xvci1oZWFkaW5ncy10ZXh0JykpO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWZvbnQtZmFtaWx5LCBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LWZhbWlseScpKSwgdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LWZhbWlseS1mYWxsYmFjaywgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtZm9udC1mYW1pbHktZmFsbGJhY2snKSk7XG4gICAgZm9udC1zdHlsZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LXN0eWxlLCBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LXN0eWxlJykpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWZvbnQtd2VpZ2h0LCBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LXdlaWdodCcpKTtcbiAgICBtYXJnaW46IDA7XG59XG5cbkBtaXhpbiBldXJla2EtbnVtYmVyLWZvbnQtc2hhcmVkKCkge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LW51bWJlci1mb250LXdlaWdodCwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktbnVtYmVyLWZvbnQtd2VpZ2h0JykpO1xufVxuXG5AbWl4aW4gZXVyZWthLWJvZHktZm9udC1zaGFyZWQoKSB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWV1cmVrYS10eXBvZ3JhcGh5LWJvZHktZm9udCwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktZm9udC1mYW1pbHknKSwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktZm9udC1mYW1pbHktZmFsbGJhY2snKSk7XG4gICAgbGluZS1oZWlnaHQ6IGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWxpbmUtaGVpZ2h0Jyk7XG59XG5cbkBtaXhpbiBldXJla2EtaDEoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMS1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMS1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1heC1saW5lLXdpZHRoKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxpbmUtaGVpZ2h0JykpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDEtZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMS1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWgyKCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDItbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDItbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tYXgtbGluZS13aWR0aChldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1saW5lLWhlaWdodCcpKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwyLWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDItZm9udC1zaXplJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1oMygpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwzLW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwzLW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBAaW5jbHVkZSBldXJla2EtbWF4LWxpbmUtd2lkdGgoZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGluZS1oZWlnaHQnKSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMy1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwzLWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtaDQoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsNC1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsNC1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1heC1saW5lLXdpZHRoKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxpbmUtaGVpZ2h0JykpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDQtZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsNC1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWg1KCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDUtbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDUtbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tYXgtbGluZS13aWR0aChldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1saW5lLWhlaWdodCcpKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWw1LWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDUtZm9udC1zaXplJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1udW1iZXItc21hbGwoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LW51bWJlci1zbWFsbC1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LW51bWJlci1zbWFsbC1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgQGluY2x1ZGUgZXVyZWthLW51bWJlci1mb250LXNoYXJlZDtcbiAgICBAaW5jbHVkZSBldXJla2EtbGluZS1oZWlnaHQodHJ1ZSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LW51bWJlci1zbWFsbC1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktbnVtYmVyLXNtYWxsLWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtbnVtYmVyLW1lZGl1bSgpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktbnVtYmVyLW1lZGl1bS1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LW51bWJlci1tZWRpdW0tbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1udW1iZXItZm9udC1zaGFyZWQ7XG4gICAgQGluY2x1ZGUgZXVyZWthLWxpbmUtaGVpZ2h0KHRydWUpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1udW1iZXItbWVkaXVtLWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1udW1iZXItbWVkaXVtLWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtbGFyZ2UtdGV4dCgpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktbGFyZ2UtbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1sYXJnZS1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWxhcmdlLWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1sYXJnZS1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLXN1Yi10ZXh0KCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1zdWItdGV4dC1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LXN1Yi10ZXh0LW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktc3ViLXRleHQtZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LXN1Yi10ZXh0LWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtZm9vdG5vdGUoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWZvb3Rub3RlLW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktZm9vdG5vdGUtbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1mb290bm90ZS1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktZm9vdG5vdGUtZm9udC1zaXplJykpKTtcbn1cbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXBlbmRlbmNpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL3Jlc2V0cy5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy91dGlscy9tYXAtdXRpbHMuc2Nzcyc7XG5AaW1wb3J0ICcuLi90b2tlbnMvc3R5bGUtdG9rZW5zLnNjc3MnO1xuXG5AbWl4aW4gZXVyZWthLWZvY3VzLXN0YXRlLWJveC1zaGFkb3coJGNvbG9yOiB2YXIoLS1ldXJla2EtY29sb3ItdW5pdmVyc2FsLWZvY3VzLWhhbG8sIHJnYmEoMCwgMCwgMCwgMC40KSkpIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJGNvbG9yO1xufVxuXG5AbWl4aW4gZXVyZWthLWZvY3VzLXN0YXRlLWhhbG8oJGNvbG9yOiB2YXIoLS1ldXJla2EtY29sb3ItdW5pdmVyc2FsLWZvY3VzLWhhbG8sIHJnYmEoMCwgMCwgMCwgMC40KSkpIHtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIEBpbmNsdWRlIGV1cmVrYS1mb2N1cy1zdGF0ZS1yZXNldDtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBAaW5jbHVkZSBldXJla2EtZm9jdXMtc3RhdGUtYm94LXNoYWRvdygkY29sb3IpO1xuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1ob3Zlci1zdGF0ZSgpIHtcbiAgICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICAgICAmOmVuYWJsZWQ6aG92ZXIge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gZXVyZWthLWRpc2FibGVkLXN0YXRlKCRoYXMtaG92ZXI6IHRydWUpIHtcbiAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgb3BhY2l0eTogdmFyKC0tZXVyZWthLWNvcmUtc3RhdGUtZGlzYWJsZWQtb3BhY2l0eSwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXN0YXRlLWRpc2FibGVkLW9wYWNpdHknKSk7XG5cbiAgICAgICAgQGlmICRoYXMtaG92ZXIge1xuICAgICAgICAgICAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAbWl4aW4gZXVyZWthLWlubGluZS1mbGV4LXJvdygpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuXG5AbWl4aW4gZXVyZWthLWZsZXgtcm93KCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbn1cblxuQG1peGluIGV1cmVrYS1mbGV4LXJvdy1yZXZlcnNlKCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xufVxuXG5AbWl4aW4gZXVyZWthLWZsZXgtY29sdW1uKCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuQG1peGluIGV1cmVrYS1mbGV4LWNvbHVtbi1yZXZlcnNlKCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xufVxuXG5AbWl4aW4gZXVyZWthLXNjcm9sbC14KCkge1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuQG1peGluIGV1cmVrYS1zY3JvbGwteSgpIHtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbkBtaXhpbiBldXJla2Etc2Nyb2xsLWFsbCgpIHtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG5AbWl4aW4gZXVyZWthLWJyZWFrcG9pbnQtcmFuZ2UoJG1pbiwgJG1heCkge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1icmVha3BvaW50LW1pbi1vbmx5KCRtaW4pIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1icmVha3BvaW50LW1heC1vbmx5KCRtYXgpIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXBlbmRlbmNpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXRoZW1lLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL3N0YXRlcy5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItdGhlbWUtdXRpbHMvc3JjL3N0eWxlcy91dGlscy90aGVtZS11dGlscy5zY3NzJztcblxuQG1peGluIGV1cmVrYS1idXR0b24tYWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xufVxuXG5AbWl4aW4gZXVyZWthLWJ1dHRvbi1wcmltYXJ5LWZvY3VzLXZpc2libGUge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1mb2N1cy1zdGF0ZS1ib3gtc2hhZG93KHZhcigtLWV1cmVrYS1idG4tcHJpbWFyeS1mb2N1cy1jb2xvci1oYWxvLCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1wcmltYXJ5LWZvY3VzLWNvbG9yLWhhbG8nKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWJ1dHRvbi1wcmltYXJ5LWhvdmVyIHtcbiAgICBjb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1wcmltYXJ5LWhvdmVyLWNvbG9yLXRleHQsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktaG92ZXItY29sb3ItdGV4dCcpKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ldXJla2EtYnRuLXByaW1hcnktaG92ZXItY29sb3ItYmcsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktaG92ZXItY29sb3ItYmcnKSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ldXJla2EtYnRuLXByaW1hcnktaG92ZXItY29sb3ItYm9yZGVyLCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1wcmltYXJ5LWhvdmVyLWNvbG9yLWJvcmRlcicpKTtcbn1cblxuQG1peGluIGV1cmVrYS1idXR0b24tc2Vjb25kYXJ5LWZvY3VzLXZpc2libGUge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1mb2N1cy1zdGF0ZS1ib3gtc2hhZG93KHZhcigtLWV1cmVrYS1idG4tc2Vjb25kYXJ5LWZvY3VzLWNvbG9yLWhhbG8sIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXNlY29uZGFyeS1mb2N1cy1jb2xvci1oYWxvJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1idXR0b24tc2Vjb25kYXJ5LWhvdmVyIHtcbiAgICBjb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1zZWNvbmRhcnktaG92ZXItY29sb3ItdGV4dCwgZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4tc2Vjb25kYXJ5LWhvdmVyLWNvbG9yLXRleHQnKSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1zZWNvbmRhcnktaG92ZXItY29sb3ItYmcsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXNlY29uZGFyeS1ob3Zlci1jb2xvci1iZycpKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWV1cmVrYS1idG4tc2Vjb25kYXJ5LWhvdmVyLWNvbG9yLWJvcmRlciwgZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4tc2Vjb25kYXJ5LWhvdmVyLWNvbG9yLWJvcmRlcicpKTtcbn1cblxuQG1peGluIGV1cmVrYS1idXR0b24tZGVzdHJ1Y3RpdmUtZm9jdXMtdmlzaWJsZSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLWZvY3VzLXN0YXRlLWJveC1zaGFkb3codmFyKC0tZXVyZWthLWJ0bi1wcmltYXJ5LWRlc3RydWN0aXZlLWZvY3VzLWNvbG9yLWhhbG8sIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktZGVzdHJ1Y3RpdmUtZm9jdXMtY29sb3ItaGFsbycpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtYnV0dG9uLXByaW1hcnktZGVzdHJ1Y3RpdmUtaG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1ldXJla2EtYnRuLXByaW1hcnktZGVzdHJ1Y3RpdmUtaG92ZXItY29sb3ItdGV4dCwgZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4tcHJpbWFyeS1kZXN0cnVjdGl2ZS1ob3Zlci1jb2xvci10ZXh0JykpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWV1cmVrYS1idG4tcHJpbWFyeS1kZXN0cnVjdGl2ZS1ob3Zlci1jb2xvci1iZywgZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4tcHJpbWFyeS1kZXN0cnVjdGl2ZS1ob3Zlci1jb2xvci1iZycpKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWV1cmVrYS1idG4tcHJpbWFyeS1kZXN0cnVjdGl2ZS1ob3Zlci1jb2xvci1ib3JkZXIsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktZGVzdHJ1Y3RpdmUtaG92ZXItY29sb3ItYm9yZGVyJykpO1xufVxuXG5AbWl4aW4gZXVyZWthLWJ1dHRvbi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtZm9jdXMtdmlzaWJsZSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLWZvY3VzLXN0YXRlLWJveC1zaGFkb3codmFyKC0tZXVyZWthLWJ0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtZm9jdXMtY29sb3ItaGFsbywgZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4tc2Vjb25kYXJ5LWRlc3RydWN0aXZlLWZvY3VzLWNvbG9yLWhhbG8nKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWJ1dHRvbi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtaG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1ldXJla2EtYnRuLXNlY29uZGFyeS1kZXN0cnVjdGl2ZS1ob3Zlci1jb2xvci10ZXh0LCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtaG92ZXItY29sb3ItdGV4dCcpKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ldXJla2EtYnRuLXNlY29uZGFyeS1kZXN0cnVjdGl2ZS1ob3Zlci1jb2xvci1iZywgZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4tc2Vjb25kYXJ5LWRlc3RydWN0aXZlLWhvdmVyLWNvbG9yLWJnJykpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtaG92ZXItY29sb3ItYm9yZGVyLCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtaG92ZXItY29sb3ItYm9yZGVyJykpO1xufVxuXG5AbWl4aW4gZXVyZWthLWxpbmstYnV0dG9uLWZvY3VzLXZpc2libGUge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1mb2N1cy1zdGF0ZS1ib3gtc2hhZG93KHZhcigtLWV1cmVrYS1saW5rLWZvY3VzLWNvbG9yLWhhbG8sIGV1cmVrYS1saWdodC10aGVtZSgnbGluay1mb2N1cy1jb2xvci1oYWxvJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1saW5rLWJ1dHRvbi1ob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4iXX0= */\",t=\"eureka-css-@Green-Dot-Corporation/eureka-ui-buttons-1.0.13\",c=document.getElementById(t);if(c)c.textContent&&-1===c.textContent.indexOf(b)&&c.appendChild(document.createTextNode(b));else{var l=document.getElementsByTagName(\"head\")[0],Z=document.createElement(\"style\");Z.setAttribute(\"type\",\"text/css\"),Z.setAttribute(\"id\",t),Z.dataset.eurekasrc=document.currentScript?document.currentScript.src:\"\",l.insertAdjacentElement(\"beforeend\",Z),65279===b.charCodeAt(0)&&(b=b.substring(1)),Z.styleSheet?Z.styleSheet.cssText+=b:Z.appendChild(document.createTextNode(b))}export{b as css};\n//# sourceMappingURL=button.scss.js.map\n","var g=\"@keyframes eureka-semi-pulse{15%,30%{opacity:.5;transform:scale3d(.85,.85,1)}0%,40%,to{opacity:1;transform:scaleX(1)}}.eureka-loading-dots{display:inline-flex;flex-direction:row;flex-wrap:wrap;font-size:6rem;gap:.1em}.eureka-loading-dots__dot{animation:eureka-semi-pulse 2.2s ease-in infinite;background-color:var(--eureka-loading-color-icon,#2945ff);border-radius:100%;flex:0 0 auto;height:.2666666667em;width:.2666666667em}.eureka-loading-dots__dot:first-child{animation-delay:.22s}.eureka-loading-dots__dot:nth-child(2){animation-delay:.44s}.eureka-loading-dots__dot:nth-child(3){animation-delay:.66s}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zdHlsZXMvYW5pbWF0aW9ucy5zY3NzIiwic3JjL3N0eWxlcy9sb2FkaW5nLWRvdHMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvX2xheW91dC5zY3NzIiwic3JjL3N0eWxlcy9taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2QkFDSSxRQUVJLFVBQUEsQ0FEQSw0QkNZTixDRFJFLFVBRUksU0FBQSxDQURBLG1CQ1dOLENBQ0YsQ0FYQSxxQkNQSSxtQkFBQSxDQUNBLGtCQUFBLENEVUEsY0FBQSxDQURBLGNBQUEsQ0VMQSxRRm9CSixDQVhJLDBCRUFBLGlEQUFBLENGR0kseURBQUEsQ0FDQSxrQkFBQSxDQUNBLGFBQUEsQ0VUSixvQkFBQSxDQURBLG1CRndCSixDRWpCSSxzQ0FDSSxvQkZtQlIsQ0VoQkksdUNBQ0ksb0JGa0JSLENFZkksdUNBQ0ksb0JGaUJSIiwic291cmNlc0NvbnRlbnQiOlsiQGtleWZyYW1lcyBldXJla2Etc2VtaS1wdWxzZSB7XG4gICAgMTUlLCAzMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC44NSwgMC44NSwgMSk7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG5cbiAgICAwJSwgNDAlLCAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXBlbmRlbmNpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL2xheW91dC5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItdGhlbWUtdXRpbHMvc3JjL3N0eWxlcy91dGlscy90aGVtZS11dGlscy5zY3NzJztcbkBpbXBvcnQgJy4vYW5pbWF0aW9ucy5zY3NzJztcbkBpbXBvcnQgJy4vbWl4aW5zLnNjc3MnO1xuXG4uZXVyZWthLWxvYWRpbmctZG90cywgJWV1cmVrYS1sb2FkaW5nLWRvdHMge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1pbmxpbmUtZmxleC1yb3c7XG4gICAgQGluY2x1ZGUgZXVyZWthLWxvYWRpbmctZ3JpZC1nYXA7XG4gICAgZm9udC1zaXplOiA2cmVtO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAkdGhpczogJy5ldXJla2EtbG9hZGluZy1kb3RzJztcblxuICAgICZfX2RvdCB7XG4gICAgICAgIEBpbmNsdWRlIGV1cmVrYS1sb2FkaW5nLWdyaWQtaXRlbS1kaW1lbnNpb25zO1xuICAgICAgICBAaW5jbHVkZSBldXJla2EtbG9hZGluZy1wdWxzZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXVyZWthLWxvYWRpbmctY29sb3ItaWNvbiwgZXVyZWthLWxpZ2h0LXRoZW1lKCdsb2FkaW5nLWNvbG9yLWljb24nKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cbn1cbiIsIkBtaXhpbiBldXJla2EtaW5saW5lLWZsZXgtcm93KCkge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG59XG5cbkBtaXhpbiBldXJla2EtZmxleC1yb3coKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuXG5AbWl4aW4gZXVyZWthLWZsZXgtcm93LXJldmVyc2UoKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG59XG5cbkBtaXhpbiBldXJla2EtZmxleC1jb2x1bW4oKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG5AbWl4aW4gZXVyZWthLWZsZXgtY29sdW1uLXJldmVyc2UoKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG59XG5cbkBtaXhpbiBldXJla2Etc2Nyb2xsLXgoKSB7XG4gICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG5AbWl4aW4gZXVyZWthLXNjcm9sbC15KCkge1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuQG1peGluIGV1cmVrYS1zY3JvbGwtYWxsKCkge1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbkBtaXhpbiBldXJla2EtYnJlYWtwb2ludC1yYW5nZSgkbWluLCAkbWF4KSB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZXVyZWthLWJyZWFrcG9pbnQtbWluLW9ubHkoJG1pbikge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZXVyZWthLWJyZWFrcG9pbnQtbWF4LW9ubHkoJG1heCkge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlcGVuZGVuY2llc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkBpbXBvcnQgJy4vYW5pbWF0aW9ucy5zY3NzJztcblxuQG1peGluIGV1cmVrYS1sb2FkaW5nLWdyaWQtZ2FwIHtcbiAgICBnYXA6IGNhbGMoMWVtIC8gMTApO1xufVxuXG5AbWl4aW4gZXVyZWthLWxvYWRpbmctZ3JpZC1pdGVtLWRpbWVuc2lvbnMge1xuICAgIHdpZHRoOiBjYWxjKCgxZW0gLyAzKSAtICgoMWVtIC8gNSkgLyAzKSk7XG4gICAgaGVpZ2h0OiBjYWxjKCgxZW0gLyAzKSAtICgoMWVtIC8gNSkgLyAzKSk7XG59XG5cbkBtaXhpbiBldXJla2EtbG9hZGluZy1wdWxzZSB7XG4gICAgYW5pbWF0aW9uOiBldXJla2Etc2VtaS1wdWxzZSAyLjJzIGluZmluaXRlIGVhc2UtaW47XG5cbiAgICAmOm50aC1jaGlsZCgxKSB7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4yMnM7XG4gICAgfVxuXG4gICAgJjpudGgtY2hpbGQoMikge1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuNDRzO1xuICAgIH1cblxuICAgICY6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjY2cztcbiAgICB9XG59XG4iXX0= */\",t=\"eureka-css-@Green-Dot-Corporation/eureka-ui-icons-1.0.13\",b=document.getElementById(t);if(b)b.textContent&&-1===b.textContent.indexOf(g)&&b.appendChild(document.createTextNode(g));else{var c=document.getElementsByTagName(\"head\")[0],l=document.createElement(\"style\");l.setAttribute(\"type\",\"text/css\"),l.setAttribute(\"id\",t),l.dataset.eurekasrc=document.currentScript?document.currentScript.src:\"\",c.insertAdjacentElement(\"beforeend\",l),65279===g.charCodeAt(0)&&(g=g.substring(1)),l.styleSheet?l.styleSheet.cssText+=g:l.appendChild(document.createTextNode(g))}export{g as css};\n//# sourceMappingURL=loading-dots.scss.js.map\n","import{inheritsLoose as r}from\"../_virtual/_rollupPluginBabelHelpers.js\";import{PureComponent as t}from\"react\";import s from\"prop-types\";import o from\"classnames\";import\"./styles/loading-dots.scss.js\";import{jsxs as e,jsx as n}from\"react/jsx-runtime\";var a=function(t){function LoadingDots(){for(var r,s=arguments.length,o=new Array(s),e=0;e<s;e++)o[e]=arguments[e];return(r=t.call.apply(t,[this].concat(o))||this).renderDot=function(){return n(\"span\",{className:r.baseCls+\"__dot\"})},r.baseCls=\"eureka-loading-dots\",r}return r(LoadingDots,t),LoadingDots.prototype.render=function(){var r=this.props.contextCls;return e(\"span\",{className:o(this.baseCls,r),children:[this.renderDot(),this.renderDot(),this.renderDot()]})},LoadingDots}(t);a.defaultProps={},a.propTypes={contextCls:s.string};var i=a;export{i as default};\n//# sourceMappingURL=LoadingDots.js.map\n","import{inheritsLoose as e,extends as t,objectWithoutPropertiesLoose as r}from\"../_virtual/_rollupPluginBabelHelpers.js\";import{Fragment as n,PureComponent as s}from\"react\";import o from\"prop-types\";import i from\"classnames\";import a from\"./components/ButtonIcon.js\";import c from\"./components/ButtonText.js\";import{getBtnModCls as l}from\"./utils/buttonUtils.js\";import\"./styles/button.scss.js\";import{jsx as u,jsxs as p}from\"react/jsx-runtime\";import d from\"../packages/components/icons/dist/esm/src/LoadingDots.js\";var b=[\"aria-label\",\"contextCls\",\"text\",\"type\",\"variant\",\"isBusy\",\"isDisabled\",\"data\",\"onClick\",\"renderIcon\",\"renderBusyIcon\",\"children\"],m=function(s){function Button(){for(var e,o=arguments.length,i=new Array(o),m=0;m<o;m++)i[m]=arguments[m];return(e=s.call.apply(s,[this].concat(i))||this).renderMain=function(){var t=e.props,r=t.text,s=t.isBusy,o=e.getShouldRenderBtnIcon();return p(n,{children:[o&&e.renderIcon(),s&&e.renderIcon(s),!!r&&e.renderText()]})},e.renderIcon=function(t){var r=e.props,n=r.renderBusyIcon,s=r.renderIcon,o=n||e.renderBusyIcon,i=t?o:s;return u(a,{baseCls:e.baseCls,renderIcon:i})},e.renderBusyIcon=function(){return u(d,{contextCls:e.baseCls+\"__busy-icon\"})},e.renderText=function(){var t=e.props.text;return u(c,{baseCls:e.baseCls,children:t})},e.handleClick=function(r){var n=e.props,s=n.onClick,o=n.data;s(t({e:r},o&&{data:o}))},e.getShouldRenderBtnIcon=function(){var t=e.props,r=t.isBusy,n=t.renderIcon;return!r&&!!n},e.getModCls=function(){var r,n=e.props,s=n.variant,o=n.isBusy;return t({},l(s,e.baseCls),((r={})[e.baseCls+\"--busy\"]=o,r))},e.getExtantProps=function(){var n=e.props,s=n[\"aria-label\"];n.contextCls;var o=n.text;n.type,n.variant;var i=n.isBusy,a=n.isDisabled;n.data,n.onClick,n.renderIcon,n.renderBusyIcon,n.children;var c=r(n,b);return t({},c,!o&&s&&{\"aria-label\":s},{disabled:i||a})},e.baseCls=\"eureka-button\",e}return e(Button,s),Button.prototype.render=function(){var e=this.props,r=e.contextCls,n=e.type,s=e.children,o=this.getExtantProps(),a=this.getModCls();return u(\"button\",t({},o,{className:i(this.baseCls,a,r),type:n,onClick:this.handleClick,children:p(\"span\",{className:this.baseCls+\"__content-container\",children:[!s&&this.renderMain(),s]})}))},Button}(s);m.defaultProps={type:\"button\",isBusy:!1,isDisabled:!1,onClick:function(){return Promise.resolve()}},m.propTypes={\"aria-label\":o.string,contextCls:o.string,text:o.oneOfType([o.string,o.element]),type:o.string,variant:o.string,isBusy:o.bool,isDisabled:o.bool,data:o.object,onClick:o.func,renderIcon:o.func,renderBusyIcon:o.func};var f=m;export{f as default};\n//# sourceMappingURL=Button.js.map\n","import{inheritsLoose as t,extends as r}from\"../_virtual/_rollupPluginBabelHelpers.js\";import{Fragment as n,PureComponent as o}from\"react\";import s from\"prop-types\";import i from\"classnames\";import\"./styles/callout-actions.scss.js\";import{jsx as e,jsxs as c}from\"react/jsx-runtime\";import a from\"../buttons/dist/esm/src/Button.js\";import{VARIANTS as l}from\"../buttons/dist/esm/src/const/variantsConst.js\";var u=function(o){function CalloutActions(){for(var t,n=arguments.length,s=new Array(n),i=0;i<n;i++)s[i]=arguments[i];return(t=o.call.apply(o,[this].concat(s))||this).renderAction=function(n){var o=t.props.onActionClick;return e(a,r({},n,{onClick:o}))},t.getAction=function(r){void 0===r&&(r=!1);var n=t.props.actions,o=r?\"PRIMARY\":\"SECONDARY\";return n.find((function(t){return(null==t?void 0:t.variant)===l[o]||(null==t?void 0:t.variant)===l[o+\"_DESTRUCTIVE\"]}))},t.baseCls=\"eureka-callout-actions\",t}return t(CalloutActions,o),CalloutActions.prototype.render=function(){var t=this.props,r=t.contextCls,o=t.children,s=this.getAction(!0),a=this.getAction();return e(\"div\",{className:i(this.baseCls,r),children:c(\"div\",{className:this.baseCls+\"__inner\",children:[o,!o&&c(n,{children:[a&&this.renderAction(a),s&&this.renderAction(s)]})]})})},CalloutActions}(o);u.defaultProps={actions:[],onActionClick:function(){return Promise.resolve()}},u.propTypes={contextCls:s.string,actions:s.array,onActionClick:s.func};var p=u;export{p as default};\n//# sourceMappingURL=CalloutActions.js.map\n","var R={AFFIRMATIVE:\"AFFIRMATIVE\",CAUTIONARY:\"CAUTIONARY\",ERROR:\"ERROR\",INFO:\"INFO\"};export{R as default};\n//# sourceMappingURL=variantsConst.js.map\n","var t=\".eureka-callout{box-sizing:border-box;text-align:center}.eureka-callout__icon-container{font-size:8rem;line-height:0}.eureka-callout .eureka-context-icon__icon{font-size:inherit}.eureka-callout .eureka-callout__title{color:var(--eureka-core-color-text,#000);font-size:var(--eureka-core-typography-headings-level5-font-size,1.9rem);max-width:58.33333em}@media screen and (max-width:575px){.eureka-callout .eureka-callout__title{font-size:var(--eureka-core-typography-headings-level5-mobile-font-size,1.7rem)}}.eureka-callout__msg-container-inner{line-height:var(--eureka-core-typography-line-height,1.4)}.eureka-callout__msg-container-inner>:first-child{margin-top:0}.eureka-callout__msg-container-inner>:last-child{margin-bottom:0}.eureka-callout__msg-container-inner,.eureka-callout__title,.eureka-callout__title.eureka-heading{display:block;margin:0 auto;max-width:50em}.eureka-callout__msg-container,.eureka-callout__title-container{margin:0 auto}.eureka-callout__title-container+.eureka-callout__msg-container{margin-top:8px}.eureka-callout__icon-container+.eureka-callout-actions,.eureka-callout__text-container+.eureka-callout-actions{margin-top:32px}.eureka-callout__icon-container+.eureka-callout__text-container{margin-top:8px}.eureka-callout--pad-content{padding:3.2rem}.eureka-callout--affirmative .eureka-callout__icon-container{color:var(--eureka-callout-affirmative-color-icon,#00993f)}.eureka-callout--error .eureka-callout__icon-container{color:var(--eureka-callout-error-color-icon,#e0114c)}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zdHlsZXMvY2FsbG91dC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi10aGVtZS11dGlscy9zcmMvc3R5bGVzL21peGlucy9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL21peGlucy9fbGF5b3V0LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsZ0JBQ0kscUJBQUEsQ0FDQSxpQkFOSixDQVNJLGdDQUVJLGNBQUEsQ0FEQSxhQU5SLENBVUksMkNBQ0ksaUJBUlIsQ0FXSSx1Q0FFSSx3Q0FBQSxDQ3VESix3RUFBQSxDQWhEQSxvQkRmSixDRXlDSSxvQ0ZuQ0EsdUNDUFEsK0VES1YsQ0FDRixDQU1JLHFDQUNJLHlEQUpSLENBTVEsa0RBQ0ksWUFKWixDQU9RLGlEQUNJLGVBTFosQ0FTSSxrR0FJSSxhQUFBLENBQ0EsYUFBQSxDQ2JKLGNESUosQ0FZSSxnRUFFSSxhQVhSLENBY0ksZ0VBQ0ksY0FaUixDQWlCUSxnSEFDSSxlQWZaLENBbUJJLGdFQUNJLGNBakJSLENBb0JJLDZCQUNJLGNBbEJSLENBc0JRLDZEQUNJLDBEQXBCWixDQXlCUSx1REFDSSxvREF2QloiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGVwZW5kZW5jaWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL3V0aWxzL3VuaXQtY29udmVyc2lvbi11dGlscy5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItdGhlbWUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvdHlwb2dyYXBoeS5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItdGhlbWUtdXRpbHMvc3JjL3N0eWxlcy91dGlscy90aGVtZS11dGlscy5zY3NzJztcblxuLmV1cmVrYS1jYWxsb3V0LCAlZXVyZWthLWNhbGxvdXQge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICR0aGlzOiAnLmV1cmVrYS1jYWxsb3V0JztcblxuICAgICZfX2ljb24tY29udGFpbmVyIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogOHJlbTtcbiAgICB9XG5cbiAgICAuZXVyZWthLWNvbnRleHQtaWNvbl9faWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICB9XG5cbiAgICAjeyR0aGlzfV9fdGl0bGUge1xuICAgICAgICBAaW5jbHVkZSBldXJla2EtaDU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1ldXJla2EtY29yZS1jb2xvci10ZXh0LCBldXJla2EtbGlnaHQtdGhlbWUoJ2NvcmUtY29sb3ItdGV4dCcpKTtcbiAgICB9XG5cbiAgICAmX19tc2ctY29udGFpbmVyLWlubmVyIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktbGluZS1oZWlnaHQsIGV1cmVrYS1saWdodC10aGVtZSgnY29yZS10eXBvZ3JhcGh5LWxpbmUtaGVpZ2h0JykpO1xuXG4gICAgICAgID4gOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIH1cblxuICAgICAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX190aXRsZSxcbiAgICAmX190aXRsZS5ldXJla2EtaGVhZGluZyxcbiAgICAmX19tc2ctY29udGFpbmVyLWlubmVyIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLW1heC1saW5lLXdpZHRoO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuXG4gICAgJl9fdGl0bGUtY29udGFpbmVyLFxuICAgICZfX21zZy1jb250YWluZXIge1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG5cbiAgICAmX190aXRsZS1jb250YWluZXIgKyAmX19tc2ctY29udGFpbmVyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogI3tldXJla2EtdG8tcHgoZXVyZWthLWxpZ2h0LXRoZW1lKCdjb3JlLXN5c3RlbS1zY2FsZScpICogMil9O1xuICAgIH1cblxuICAgICZfX3RleHQtY29udGFpbmVyLFxuICAgICZfX2ljb24tY29udGFpbmVyIHtcbiAgICAgICAgKyAuZXVyZWthLWNhbGxvdXQtYWN0aW9ucyB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAje2V1cmVrYS10by1weChldXJla2EtbGlnaHQtdGhlbWUoJ2NvcmUtc3lzdGVtLXNjYWxlJykgKiA4KX07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19pY29uLWNvbnRhaW5lciArICZfX3RleHQtY29udGFpbmVyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogI3tldXJla2EtdG8tcHgoZXVyZWthLWxpZ2h0LXRoZW1lKCdjb3JlLXN5c3RlbS1zY2FsZScpICogMil9O1xuICAgIH1cblxuICAgICYtLXBhZC1jb250ZW50IHtcbiAgICAgICAgcGFkZGluZzogI3tldXJla2EtdG8tcmVtKGV1cmVrYS1saWdodC10aGVtZSgnY29yZS1zeXN0ZW0tc2NhbGUnKSAqIDgpfTtcbiAgICB9XG5cbiAgICAmLS1hZmZpcm1hdGl2ZSB7XG4gICAgICAgICN7JHRoaXN9X19pY29uLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tZXVyZWthLWNhbGxvdXQtYWZmaXJtYXRpdmUtY29sb3ItaWNvbiwgZXVyZWthLWxpZ2h0LXRoZW1lKCdjYWxsb3V0LWFmZmlybWF0aXZlLWNvbG9yLWljb24nKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1lcnJvciB7XG4gICAgICAgICN7JHRoaXN9X19pY29uLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tZXVyZWthLWNhbGxvdXQtZXJyb3ItY29sb3ItaWNvbiwgZXVyZWthLWxpZ2h0LXRoZW1lKCdjYWxsb3V0LWVycm9yLWNvbG9yLWljb24nKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGVwZW5kZW5jaWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuQHVzZSAnc2FzczptYXRoJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvbGF5b3V0LnNjc3MnO1xuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL3ZhcnMvYnJlYWtwb2ludHMuc2Nzcyc7XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvdXRpbHMvbWFwLXV0aWxzLnNjc3MnO1xuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL3V0aWxzL3VuaXQtY29udmVyc2lvbi11dGlscy5zY3NzJztcbkBpbXBvcnQgJy4uL3Rva2Vucy9jb2xvci1saWdodC10aGVtZS10b2tlbnMuc2Nzcyc7XG5AaW1wb3J0ICcuLi90b2tlbnMvc3R5bGUtdG9rZW5zLnNjc3MnO1xuXG5AbWl4aW4gZXVyZWthLW1vYmlsZS1mb250LXNpemUoJGNzc1ZhciwgJHRva2VuKSB7XG4gICAgQGlmICRjc3NWYXIgYW5kICR0b2tlbiB7XG4gICAgICAgIEBpbmNsdWRlIGV1cmVrYS1icmVha3BvaW50LW1heC1vbmx5KCRldXJla2EteHMtbWF4KSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigkY3NzVmFyLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAkdG9rZW4pKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiBldXJla2EtbGluZS1oZWlnaHQoJGlzSGVhZGluZzogZmFsc2UpIHtcbiAgICBAaWYgJGlzSGVhZGluZyB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1saW5lLWhlaWdodCcpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgICBsaW5lLWhlaWdodDogZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktbGluZS1oZWlnaHQnKTtcbiAgICB9XG59XG5cbkBtaXhpbiBldXJla2EtbWF4LWxpbmUtd2lkdGgoJGxpbmVoZWlnaHQ6IGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWxpbmUtaGVpZ2h0JykpIHtcbiAgICAvLyAkZGl2LWZvcm06IDFlbSAvICN7JGxpbmVoZWlnaHR9O1xuICAgICRkaXYtZm9ybXVsYTogbWF0aC5kaXYoMWVtLCAkbGluZWhlaWdodCk7IC8vIGZvbnQtc2l6ZSBkaXZpZGVkIGJ5IGxpbmVoZWlnaHRcbiAgICBtYXgtd2lkdGg6IGNhbGMoNzAgKiAjeyRkaXYtZm9ybXVsYX0pOyAvLyBtYXggY2hhcmFjdGVycyAqIChmb250LXNpemUgLyBsaW5lLWhlaWdodClcbn1cblxuQG1peGluIGV1cmVrYS1oZWFkaW5nLWZvbnQtc2hhcmVkKCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1saW5lLWhlaWdodCh0cnVlKTtcbiAgICBjb2xvcjogdmFyKC0tZXVyZWthLWNvcmUtY29sb3ItaGVhZGluZ3MtdGV4dCwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1jb2xvci1saWdodC10aGVtZS10b2tlbnMsICdjb3JlLWNvbG9yLWhlYWRpbmdzLXRleHQnKSk7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtZm9udC1mYW1pbHksIGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWZvbnQtZmFtaWx5JykpLCB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWZvbnQtZmFtaWx5LWZhbGxiYWNrLCBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LWZhbWlseS1mYWxsYmFjaycpKTtcbiAgICBmb250LXN0eWxlOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWZvbnQtc3R5bGUsIGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWZvbnQtc3R5bGUnKSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtZm9udC13ZWlnaHQsIGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWZvbnQtd2VpZ2h0JykpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuQG1peGluIGV1cmVrYS1udW1iZXItZm9udC1zaGFyZWQoKSB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktbnVtYmVyLWZvbnQtd2VpZ2h0LCBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1udW1iZXItZm9udC13ZWlnaHQnKSk7XG59XG5cbkBtaXhpbiBldXJla2EtYm9keS1mb250LXNoYXJlZCgpIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZXVyZWthLXR5cG9ncmFwaHktYm9keS1mb250LCBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1mb250LWZhbWlseScpLCBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1mb250LWZhbWlseS1mYWxsYmFjaycpKTtcbiAgICBsaW5lLWhlaWdodDogZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktbGluZS1oZWlnaHQnKTtcbn1cblxuQG1peGluIGV1cmVrYS1oMSgpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwxLW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwxLW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBAaW5jbHVkZSBldXJla2EtbWF4LWxpbmUtd2lkdGgoZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGluZS1oZWlnaHQnKSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMS1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwxLWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtaDIoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMi1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMi1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1heC1saW5lLXdpZHRoKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxpbmUtaGVpZ2h0JykpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDItZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMi1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWgzKCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDMtbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDMtbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tYXgtbGluZS13aWR0aChldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1saW5lLWhlaWdodCcpKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwzLWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDMtZm9udC1zaXplJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1oNCgpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWw0LW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWw0LW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBAaW5jbHVkZSBldXJla2EtbWF4LWxpbmUtd2lkdGgoZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGluZS1oZWlnaHQnKSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsNC1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWw0LWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtaDUoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsNS1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsNS1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1heC1saW5lLXdpZHRoKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxpbmUtaGVpZ2h0JykpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDUtZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsNS1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLW51bWJlci1zbWFsbCgpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktbnVtYmVyLXNtYWxsLW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktbnVtYmVyLXNtYWxsLW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBAaW5jbHVkZSBldXJla2EtbnVtYmVyLWZvbnQtc2hhcmVkO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1saW5lLWhlaWdodCh0cnVlKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktbnVtYmVyLXNtYWxsLWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1udW1iZXItc21hbGwtZm9udC1zaXplJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1udW1iZXItbWVkaXVtKCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1udW1iZXItbWVkaXVtLW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktbnVtYmVyLW1lZGl1bS1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgQGluY2x1ZGUgZXVyZWthLW51bWJlci1mb250LXNoYXJlZDtcbiAgICBAaW5jbHVkZSBldXJla2EtbGluZS1oZWlnaHQodHJ1ZSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LW51bWJlci1tZWRpdW0tZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LW51bWJlci1tZWRpdW0tZm9udC1zaXplJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1sYXJnZS10ZXh0KCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1sYXJnZS1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LWxhcmdlLW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktbGFyZ2UtZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWxhcmdlLWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2Etc3ViLXRleHQoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LXN1Yi10ZXh0LW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktc3ViLXRleHQtbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1zdWItdGV4dC1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktc3ViLXRleHQtZm9udC1zaXplJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1mb290bm90ZSgpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktZm9vdG5vdGUtbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1mb290bm90ZS1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWZvb3Rub3RlLWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1mb290bm90ZS1mb250LXNpemUnKSkpO1xufVxuIiwiQG1peGluIGV1cmVrYS1pbmxpbmUtZmxleC1yb3coKSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbn1cblxuQG1peGluIGV1cmVrYS1mbGV4LXJvdygpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG59XG5cbkBtaXhpbiBldXJla2EtZmxleC1yb3ctcmV2ZXJzZSgpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbn1cblxuQG1peGluIGV1cmVrYS1mbGV4LWNvbHVtbigpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbkBtaXhpbiBldXJla2EtZmxleC1jb2x1bW4tcmV2ZXJzZSgpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbn1cblxuQG1peGluIGV1cmVrYS1zY3JvbGwteCgpIHtcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbkBtaXhpbiBldXJla2Etc2Nyb2xsLXkoKSB7XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG5AbWl4aW4gZXVyZWthLXNjcm9sbC1hbGwoKSB7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuQG1peGluIGV1cmVrYS1icmVha3BvaW50LXJhbmdlKCRtaW4sICRtYXgpIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbkBtaXhpbiBldXJla2EtYnJlYWtwb2ludC1taW4tb25seSgkbWluKSB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbkBtaXhpbiBldXJla2EtYnJlYWtwb2ludC1tYXgtb25seSgkbWF4KSB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG4iXX0= */\",l=\"eureka-css-@Green-Dot-Corporation/eureka-ui-callouts-1.3.4\";const b=document.getElementById(l);if(b)b.textContent&&-1===b.textContent.indexOf(t)&&b.appendChild(document.createTextNode(t));else{var c=document.getElementsByTagName(\"head\")[0],Z=document.createElement(\"style\");Z.setAttribute(\"type\",\"text/css\"),Z.setAttribute(\"id\",l),Z.dataset.eurekasrc=document.currentScript?document.currentScript.src:\"\",c.insertAdjacentElement(\"beforeend\",Z),65279===t.charCodeAt(0)&&(t=t.substring(1)),Z.styleSheet?Z.styleSheet.cssText+=t:Z.appendChild(document.createTextNode(t))}export{t as css};\n//# sourceMappingURL=callout.scss.js.map\n","var Z='.eureka-heading{color:var(--eureka-core-color-headings-text,#000);font-family:var(--eureka-core-typography-headings-font-family,\"Averta\"),var(--eureka-core-typography-headings-font-family-fallback,sans-serif);font-style:var(--eureka-core-typography-headings-font-style,normal);font-weight:var(--eureka-core-typography-headings-font-weight,bold);line-height:1.2;margin:0}.eureka-heading--h1{font-size:var(--eureka-core-typography-headings-level1-font-size,3rem);max-width:58.33333em}@media screen and (max-width:575px){.eureka-heading--h1{font-size:var(--eureka-core-typography-headings-level1-mobile-font-size,2.2rem)}}.eureka-heading--h2{font-size:var(--eureka-core-typography-headings-level2-font-size,2.7rem);max-width:58.33333em}@media screen and (max-width:575px){.eureka-heading--h2{font-size:var(--eureka-core-typography-headings-level2-mobile-font-size,2.1rem)}}.eureka-heading--h3{font-size:var(--eureka-core-typography-headings-level3-font-size,2.4rem);max-width:58.33333em}@media screen and (max-width:575px){.eureka-heading--h3{font-size:var(--eureka-core-typography-headings-level3-mobile-font-size,1.9rem)}}.eureka-heading--h4{font-size:var(--eureka-core-typography-headings-level4-font-size,2.1rem);max-width:58.33333em}@media screen and (max-width:575px){.eureka-heading--h4{font-size:var(--eureka-core-typography-headings-level4-mobile-font-size,1.8rem)}}.eureka-heading--h5,.eureka-heading--h6{font-size:var(--eureka-core-typography-headings-level5-font-size,1.9rem);max-width:58.33333em}@media screen and (max-width:575px){.eureka-heading--h5,.eureka-heading--h6{font-size:var(--eureka-core-typography-headings-level5-mobile-font-size,1.7rem)}}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zdHlsZXMvaGVhZGluZy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi10aGVtZS11dGlscy9zcmMvc3R5bGVzL21peGlucy9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL21peGlucy9fbGF5b3V0LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsZ0JDOEJJLGlEQUFBLENBQ0EsOElBQUEsQ0FDQSxtRUFBQSxDQUNBLG1FQUFBLENBakJJLGVBQUEsQ0FrQkosUURoQ0osQ0FDSSxvQkM4Q0Esc0VBQUEsQ0F4QkEsb0JEbkJKLENFNkNJLG9DRmhEQSxvQkNNUSwrRURDVixDQUNGLENBSkksb0JDZ0RBLHdFQUFBLENBOUJBLG9CRFZKLENFb0NJLG9DRjVDQSxvQkNFUSwrRURVVixDQUNGLENBVEksb0JDa0RBLHdFQUFBLENBcENBLG9CRERKLENFMkJJLG9DRnhDQSxvQkNGUSwrRURtQlYsQ0FDRixDQWRJLG9CQ29EQSx3RUFBQSxDQTFDQSxvQkRRSixDRWtCSSxvQ0ZwQ0Esb0JDTlEsK0VENEJWLENBQ0YsQ0FuQkksd0NDc0RBLHdFQUFBLENBaERBLG9CRGlCSixDRVNJLG9DRmhDQSx3Q0NWUSwrRURxQ1YsQ0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXBlbmRlbmNpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXRoZW1lLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL3R5cG9ncmFwaHkuc2Nzcyc7XG5cbi5ldXJla2EtaGVhZGluZywgJWV1cmVrYS1oZWFkaW5nIHtcbiAgICBAaW5jbHVkZSBldXJla2EtaGVhZGluZy1mb250LXNoYXJlZDtcblxuICAgICYtLWgxIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWgxO1xuICAgIH1cblxuICAgICYtLWgyIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWgyO1xuICAgIH1cblxuICAgICYtLWgzIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWgzO1xuICAgIH1cblxuICAgICYtLWg0IHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWg0O1xuICAgIH1cblxuICAgICYtLWg1LFxuICAgICYtLWg2IHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWg1O1xuICAgIH1cbn1cbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXBlbmRlbmNpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AdXNlICdzYXNzOm1hdGgnO1xuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL21peGlucy9sYXlvdXQuc2Nzcyc7XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvdmFycy9icmVha3BvaW50cy5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy91dGlscy9tYXAtdXRpbHMuc2Nzcyc7XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvdXRpbHMvdW5pdC1jb252ZXJzaW9uLXV0aWxzLnNjc3MnO1xuQGltcG9ydCAnLi4vdG9rZW5zL2NvbG9yLWxpZ2h0LXRoZW1lLXRva2Vucy5zY3NzJztcbkBpbXBvcnQgJy4uL3Rva2Vucy9zdHlsZS10b2tlbnMuc2Nzcyc7XG5cbkBtaXhpbiBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgkY3NzVmFyLCAkdG9rZW4pIHtcbiAgICBAaWYgJGNzc1ZhciBhbmQgJHRva2VuIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWJyZWFrcG9pbnQtbWF4LW9ubHkoJGV1cmVrYS14cy1tYXgpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKCRjc3NWYXIsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICR0b2tlbikpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1saW5lLWhlaWdodCgkaXNIZWFkaW5nOiBmYWxzZSkge1xuICAgIEBpZiAkaXNIZWFkaW5nIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxpbmUtaGVpZ2h0Jyk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1saW5lLWhlaWdodCcpO1xuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1tYXgtbGluZS13aWR0aCgkbGluZWhlaWdodDogZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktbGluZS1oZWlnaHQnKSkge1xuICAgIC8vICRkaXYtZm9ybTogMWVtIC8gI3skbGluZWhlaWdodH07XG4gICAgJGRpdi1mb3JtdWxhOiBtYXRoLmRpdigxZW0sICRsaW5laGVpZ2h0KTsgLy8gZm9udC1zaXplIGRpdmlkZWQgYnkgbGluZWhlaWdodFxuICAgIG1heC13aWR0aDogY2FsYyg3MCAqICN7JGRpdi1mb3JtdWxhfSk7IC8vIG1heCBjaGFyYWN0ZXJzICogKGZvbnQtc2l6ZSAvIGxpbmUtaGVpZ2h0KVxufVxuXG5AbWl4aW4gZXVyZWthLWhlYWRpbmctZm9udC1zaGFyZWQoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLWxpbmUtaGVpZ2h0KHRydWUpO1xuICAgIGNvbG9yOiB2YXIoLS1ldXJla2EtY29yZS1jb2xvci1oZWFkaW5ncy10ZXh0LCBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLWNvbG9yLWxpZ2h0LXRoZW1lLXRva2VucywgJ2NvcmUtY29sb3ItaGVhZGluZ3MtdGV4dCcpKTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LWZhbWlseSwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtZm9udC1mYW1pbHknKSksIHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtZm9udC1mYW1pbHktZmFsbGJhY2ssIGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWZvbnQtZmFtaWx5LWZhbGxiYWNrJykpO1xuICAgIGZvbnQtc3R5bGU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtZm9udC1zdHlsZSwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtZm9udC1zdHlsZScpKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LXdlaWdodCwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtZm9udC13ZWlnaHQnKSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG5AbWl4aW4gZXVyZWthLW51bWJlci1mb250LXNoYXJlZCgpIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1udW1iZXItZm9udC13ZWlnaHQsIGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LW51bWJlci1mb250LXdlaWdodCcpKTtcbn1cblxuQG1peGluIGV1cmVrYS1ib2R5LWZvbnQtc2hhcmVkKCkge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1ldXJla2EtdHlwb2dyYXBoeS1ib2R5LWZvbnQsIGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5JyksIGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5LWZhbGxiYWNrJykpO1xuICAgIGxpbmUtaGVpZ2h0OiBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1saW5lLWhlaWdodCcpO1xufVxuXG5AbWl4aW4gZXVyZWthLWgxKCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDEtbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDEtbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tYXgtbGluZS13aWR0aChldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1saW5lLWhlaWdodCcpKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwxLWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDEtZm9udC1zaXplJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1oMigpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwyLW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwyLW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBAaW5jbHVkZSBldXJla2EtbWF4LWxpbmUtd2lkdGgoZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGluZS1oZWlnaHQnKSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMi1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwyLWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtaDMoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMy1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMy1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1heC1saW5lLXdpZHRoKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxpbmUtaGVpZ2h0JykpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDMtZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMy1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWg0KCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDQtbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDQtbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tYXgtbGluZS13aWR0aChldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1saW5lLWhlaWdodCcpKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWw0LWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDQtZm9udC1zaXplJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1oNSgpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWw1LW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWw1LW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBAaW5jbHVkZSBldXJla2EtbWF4LWxpbmUtd2lkdGgoZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGluZS1oZWlnaHQnKSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsNS1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWw1LWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtbnVtYmVyLXNtYWxsKCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1udW1iZXItc21hbGwtbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1udW1iZXItc21hbGwtbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1udW1iZXItZm9udC1zaGFyZWQ7XG4gICAgQGluY2x1ZGUgZXVyZWthLWxpbmUtaGVpZ2h0KHRydWUpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1udW1iZXItc21hbGwtZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LW51bWJlci1zbWFsbC1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLW51bWJlci1tZWRpdW0oKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LW51bWJlci1tZWRpdW0tbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1udW1iZXItbWVkaXVtLW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBAaW5jbHVkZSBldXJla2EtbnVtYmVyLWZvbnQtc2hhcmVkO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1saW5lLWhlaWdodCh0cnVlKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktbnVtYmVyLW1lZGl1bS1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktbnVtYmVyLW1lZGl1bS1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWxhcmdlLXRleHQoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWxhcmdlLW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktbGFyZ2UtbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1sYXJnZS1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktbGFyZ2UtZm9udC1zaXplJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1zdWItdGV4dCgpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktc3ViLXRleHQtbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1zdWItdGV4dC1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LXN1Yi10ZXh0LWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1zdWItdGV4dC1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWZvb3Rub3RlKCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1mb290bm90ZS1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LWZvb3Rub3RlLW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktZm9vdG5vdGUtZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWZvb3Rub3RlLWZvbnQtc2l6ZScpKSk7XG59XG4iLCJAbWl4aW4gZXVyZWthLWlubGluZS1mbGV4LXJvdygpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuXG5AbWl4aW4gZXVyZWthLWZsZXgtcm93KCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbn1cblxuQG1peGluIGV1cmVrYS1mbGV4LXJvdy1yZXZlcnNlKCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xufVxuXG5AbWl4aW4gZXVyZWthLWZsZXgtY29sdW1uKCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuQG1peGluIGV1cmVrYS1mbGV4LWNvbHVtbi1yZXZlcnNlKCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xufVxuXG5AbWl4aW4gZXVyZWthLXNjcm9sbC14KCkge1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuQG1peGluIGV1cmVrYS1zY3JvbGwteSgpIHtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbkBtaXhpbiBldXJla2Etc2Nyb2xsLWFsbCgpIHtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG5AbWl4aW4gZXVyZWthLWJyZWFrcG9pbnQtcmFuZ2UoJG1pbiwgJG1heCkge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1icmVha3BvaW50LW1pbi1vbmx5KCRtaW4pIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1icmVha3BvaW50LW1heC1vbmx5KCRtYXgpIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cbiJdfQ== */',t=\"eureka-css-@Green-Dot-Corporation/eureka-ui-typography-1.0.9\",l=document.getElementById(t);if(l)l.textContent&&-1===l.textContent.indexOf(Z)&&l.appendChild(document.createTextNode(Z));else{var b=document.getElementsByTagName(\"head\")[0],W=document.createElement(\"style\");W.setAttribute(\"type\",\"text/css\"),W.setAttribute(\"id\",t),W.dataset.eurekasrc=document.currentScript?document.currentScript.src:\"\",b.insertAdjacentElement(\"beforeend\",W),65279===Z.charCodeAt(0)&&(Z=Z.substring(1)),W.styleSheet?W.styleSheet.cssText+=Z:W.appendChild(document.createTextNode(Z))}export{Z as css};\n//# sourceMappingURL=heading.scss.js.map\n","import{inheritsLoose as e,extends as t,objectWithoutPropertiesLoose as r}from\"../_virtual/_rollupPluginBabelHelpers.js\";import{PureComponent as s}from\"react\";import n from\"prop-types\";import i from\"classnames\";import\"./styles/heading.scss.js\";import{jsx as a}from\"react/jsx-runtime\";var o=[\"contextCls\",\"headingLvl\",\"children\"],l=function(s){function Heading(){for(var e,n=arguments.length,i=new Array(n),a=0;a<n;a++)i[a]=arguments[a];return(e=s.call.apply(s,[this].concat(i))||this).getControlledHeadingLevel=function(){var t=e.props.headingLvl,r=e.getIsHeadingLvlNum(),s=e.getIsHeadingLvlInRange();return r&&s?t:2},e.getProps=function(){var s=e.props;s.contextCls,s.headingLvl,s.children;var n=r(s,o);return t({},n)},e.baseCls=\"eureka-heading\",e}e(Heading,s);var n=Heading.prototype;return n.render=function(){var e=this.props.children,r=this.getControlledHeadingLevel();return a(\"h\"+r,t({},this.getProps(),{className:this.getContainerCls(),children:e}))},n.getContainerCls=function(){var e=this.props.contextCls;return i(this.baseCls,this.getModCls(),e)},n.getModCls=function(){var e,t=this.getControlledHeadingLevel();return(e={})[this.baseCls+\"--h1\"]=1===t,e[this.baseCls+\"--h2\"]=2===t,e[this.baseCls+\"--h3\"]=3===t,e[this.baseCls+\"--h4\"]=4===t,e[this.baseCls+\"--h5\"]=5===t,e[this.baseCls+\"--h6\"]=6===t,e},n.getIsHeadingLvlNum=function(){var e=this.props.headingLvl;return Number.isInteger(e)},n.getIsHeadingLvlInRange=function(){var e=this.props.headingLvl;return e>0&&e<7},Heading}(s);l.defaultProps={headingLvl:2},l.propTypes={contextCls:n.string,headingLvl:n.number};var h=l;export{h as default};\n//# sourceMappingURL=Heading.js.map\n","var a=\"eureka-icon\";export{a as default};\n//# sourceMappingURL=baseClsConst.js.map\n","var e=\".eureka-icon{line-height:1}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zdHlsZXMvc3ZnLXdyYXBwZXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUNJLGFBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIuZXVyZWthLWljb24ge1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xufVxuIl19 */\",t=\"eureka-css-@Green-Dot-Corporation/eureka-ui-media-1.2.6\",n=document.getElementById(t);if(n)n.textContent&&-1===n.textContent.indexOf(e)&&n.appendChild(document.createTextNode(e));else{var c=document.getElementsByTagName(\"head\")[0],a=document.createElement(\"style\");a.setAttribute(\"type\",\"text/css\"),a.setAttribute(\"id\",t),a.dataset.eurekasrc=document.currentScript?document.currentScript.src:\"\",c.insertAdjacentElement(\"beforeend\",a),65279===e.charCodeAt(0)&&(e=e.substring(1)),a.styleSheet?a.styleSheet.cssText+=e:a.appendChild(document.createTextNode(e))}export{e as css};\n//# sourceMappingURL=svg-wrapper.scss.js.map\n","import{objectWithoutPropertiesLoose as r,extends as t}from\"../_virtual/_rollupPluginBabelHelpers.js\";import\"react\";import e from\"prop-types\";import\"./styles/svg-wrapper.scss.js\";import{jsxs as s,jsx as i}from\"react/jsx-runtime\";var o=[\"title\",\"children\"],SVGWrapper=function(e){var p=e.title,l=e.children,a=r(e,o);return s(\"svg\",t({},a,{xmlns:\"http://www.w3.org/2000/svg\",children:[p&&i(\"title\",{children:p}),l]}))};SVGWrapper.propTypes={title:e.string};var p=SVGWrapper;export{p as default};\n//# sourceMappingURL=SVGWrapper.js.map\n","import{objectWithoutPropertiesLoose as t,extends as e}from\"../_virtual/_rollupPluginBabelHelpers.js\";import\"react\";import r from\"prop-types\";import o from\"classnames\";import i from\"./const/baseClsConst.js\";import{jsxs as s,jsx as l}from\"react/jsx-runtime\";import n from\"../packages/components/media/dist/esm/src/SVGWrapper.js\";var m=[\"contextCls\",\"title\",\"strokeWidth\",\"fill\",\"viewBox\",\"children\"],IconSVGWrapper=function(r){var p=r.contextCls,a=r.title,c=r.strokeWidth,d=r.fill,f=r.viewBox,h=r.children,u=t(r,m);return s(n,e({},u,{className:o(i,p),width:\"1em\",height:\"1em\",stroke:\"currentColor\",fill:d,strokeWidth:c,viewBox:f,children:[a&&l(\"title\",{children:a}),h]}))};IconSVGWrapper.defaultProps={fill:\"currentColor\",viewBox:\"0 0 24 24\",strokeWidth:0},IconSVGWrapper.propTypes={contextCls:r.string,fill:r.string,title:r.string,viewBox:r.string,strokeWidth:r.number};var p=IconSVGWrapper;export{p as default};\n//# sourceMappingURL=IconSVGWrapper.js.map\n","import{extends as C}from\"../_virtual/_rollupPluginBabelHelpers.js\";import\"react\";import r from\"prop-types\";import t from\"classnames\";import o from\"./IconSVGWrapper.js\";import e from\"./const/baseClsConst.js\";import{jsx as s}from\"react/jsx-runtime\";var EurekaTriangleAlert=function(r){var p=r.contextCls;return s(o,C({},r,{contextCls:t(e+\"-triangle-alert\",p),children:s(\"path\",{d:\"M12 16C11.8022 16 11.6088 16.0587 11.4444 16.1686C11.2799 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.1999 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8314 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5195 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4658 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64016 3.00354 9.37997 3.47003L1.37997 17.47C1.11076 17.924 0.96611 18.441 0.960612 18.9688C0.955114 19.4966 1.08897 20.0166 1.34865 20.4761C1.60834 20.9356 1.98467 21.3185 2.43965 21.5861C2.89463 21.8536 3.41215 21.9964 3.93997 22H20.06C20.592 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4233 20.9589 22.6889 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0861 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7244 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.93997C3.76108 19.9815 3.58507 19.935 3.43029 19.8453C3.2755 19.7556 3.14762 19.626 3.05997 19.47C2.9722 19.318 2.92599 19.1456 2.92599 18.97C2.92599 18.7945 2.9722 18.622 3.05997 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5854 3.97678 11.7659 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4715 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1053 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1053 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5195 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5195 8.10538 12.2652 8.00003 12 8.00003Z\"})}))};EurekaTriangleAlert.propTypes={contextCls:r.string};var p=EurekaTriangleAlert;export{p as default};\n//# sourceMappingURL=EurekaTriangleAlert.js.map\n","import{extends as C}from\"../_virtual/_rollupPluginBabelHelpers.js\";import\"react\";import r from\"prop-types\";import t from\"classnames\";import o from\"./IconSVGWrapper.js\";import e from\"./const/baseClsConst.js\";import{jsxs as s,jsx as p}from\"react/jsx-runtime\";var EurekaCircleCheck=function(r){var a=r.contextCls;return s(o,C({},r,{contextCls:t(e+\"-circle-check\",a),children:[p(\"path\",{d:\"M12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z\"}),p(\"path\",{d:\"M10.4301 13.09L14.7201 8.79C14.9074 8.60375 15.1609 8.49921 15.4251 8.49921C15.6892 8.49921 15.9427 8.60375 16.1301 8.79C16.2238 8.88296 16.2982 8.99356 16.3489 9.11542C16.3997 9.23728 16.4258 9.36799 16.4258 9.5C16.4258 9.63201 16.3997 9.76272 16.3489 9.88458C16.2982 10.0064 16.2238 10.117 16.1301 10.21L11.1301 15.21C10.9438 15.3947 10.6924 15.4989 10.4301 15.5C10.2984 15.5008 10.168 15.4755 10.0461 15.4258C9.92431 15.376 9.81349 15.3027 9.72005 15.21L7.37005 12.85C7.26537 12.7604 7.18035 12.65 7.12033 12.526C7.0603 12.4019 7.02657 12.2668 7.02125 12.1291C7.01593 11.9913 7.03914 11.854 7.08941 11.7257C7.13969 11.5974 7.21595 11.4808 7.3134 11.3833C7.41086 11.2859 7.5274 11.2096 7.65573 11.1594C7.78405 11.1091 7.92139 11.0859 8.0591 11.0912C8.19682 11.0965 8.33196 11.1302 8.45602 11.1903C8.58009 11.2503 8.6904 11.3353 8.78005 11.44L10.4301 13.09Z\"})]}))};EurekaCircleCheck.propTypes={contextCls:r.string};var a=EurekaCircleCheck;export{a as default};\n//# sourceMappingURL=EurekaCircleCheck.js.map\n","import{inheritsLoose as e}from\"../_virtual/_rollupPluginBabelHelpers.js\";import{Fragment as r,PureComponent as n}from\"react\";import t from\"prop-types\";import s from\"classnames\";import o from\"./CalloutActions.js\";import i from\"./const/variantsConst.js\";import\"./styles/callout.scss.js\";import{jsx as a,jsxs as l}from\"react/jsx-runtime\";import c from\"../typography/dist/esm/src/Heading.js\";import d from\"../icons/dist/esm/src/EurekaTriangleAlert.js\";import m from\"../icons/dist/esm/src/EurekaCircleCheck.js\";var p=i.AFFIRMATIVE,u=i.ERROR,C=function(n){function Callout(){for(var e,r=arguments.length,t=new Array(r),s=0;s<r;s++)t[s]=arguments[s];return(e=n.call.apply(n,[this].concat(t))||this).renderIcon=function(){var r=e.props.renderIcon;return a(\"div\",{className:e.baseCls+\"__icon-container\",children:r?r():e.renderStatusIcon()})},e.renderStatusIcon=function(r){var n;if(e.props.variant===i.AFFIRMATIVE)n=m;else n=d;return a(n,{contextCls:r})},e.renderMessaging=function(){var r=e.props,n=r.title,t=r.msg,s=r.headingLvl;return l(\"div\",{className:e.baseCls+\"__text-container\",children:[n&&a(\"div\",{className:e.baseCls+\"__title-container\",children:a(c,{contextCls:e.baseCls+\"__title\",headingLvl:s,children:n})}),t&&a(\"div\",{className:e.baseCls+\"__msg-container\",children:a(\"div\",{className:e.baseCls+\"__msg-container-inner\",children:t})})]})},e.getModCls=function(){var r,n=e.props,t=n.variant,s=n.shouldPadContent;return(r={})[e.baseCls+\"--affirmative\"]=t===p,r[e.baseCls+\"--error\"]=t===u,r[e.baseCls+\"--pad-content\"]=s,r},e.baseCls=\"eureka-callout\",e}return e(Callout,n),Callout.prototype.render=function(){var e=this.props,n=e.contextCls,t=e.actions,i=e.renderIcon,c=e.variant,d=e.title,m=e.msg,p=e.onActionClick,u=e.children,C=!!i||!!c,h=t.length>0,f=this.getModCls();return a(\"div\",{className:s(this.baseCls,f,n),children:l(\"div\",{className:this.baseCls+\"__inner\",children:[!u&&l(r,{children:[C&&this.renderIcon(),(d||m)&&this.renderMessaging(),h&&a(o,{actions:t,onActionClick:p})]}),u]})})},Callout}(n);C.defaultProps={headingLvl:2,actions:[],shouldPadContent:!0,onActionClick:function(){return Promise.resolve()}},C.propTypes={contextCls:t.string,variant:t.string,headingLvl:t.number,actions:t.array,title:t.oneOfType([t.string,t.element]),msg:t.oneOfType([t.string,t.element]),shouldPadContent:t.bool,onActionClick:t.func,renderIcon:t.func};var h=C;export{h as default};\n//# sourceMappingURL=Callout.js.map\n","var g=\"@keyframes eureka-semi-pulse{15%,30%{opacity:.5;transform:scale3d(.85,.85,1)}0%,40%,to{opacity:1;transform:scaleX(1)}}.eureka-loading-dots{display:inline-flex;flex-direction:row;flex-wrap:wrap;font-size:6rem;gap:.1em}.eureka-loading-dots__dot{animation:eureka-semi-pulse 2.2s ease-in infinite;background-color:var(--eureka-loading-color-icon,#2945ff);border-radius:100%;flex:0 0 auto;height:.2666666667em;width:.2666666667em}.eureka-loading-dots__dot:first-child{animation-delay:.22s}.eureka-loading-dots__dot:nth-child(2){animation-delay:.44s}.eureka-loading-dots__dot:nth-child(3){animation-delay:.66s}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zdHlsZXMvYW5pbWF0aW9ucy5zY3NzIiwic3JjL3N0eWxlcy9sb2FkaW5nLWRvdHMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvX2xheW91dC5zY3NzIiwic3JjL3N0eWxlcy9taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2QkFDSSxRQUVJLFVBQUEsQ0FEQSw0QkNZTixDRFJFLFVBRUksU0FBQSxDQURBLG1CQ1dOLENBQ0YsQ0FYQSxxQkNQSSxtQkFBQSxDQUNBLGtCQUFBLENEVUEsY0FBQSxDQURBLGNBQUEsQ0VMQSxRRm9CSixDQVhJLDBCRUFBLGlEQUFBLENGR0kseURBQUEsQ0FDQSxrQkFBQSxDQUNBLGFBQUEsQ0VUSixvQkFBQSxDQURBLG1CRndCSixDRWpCSSxzQ0FDSSxvQkZtQlIsQ0VoQkksdUNBQ0ksb0JGa0JSLENFZkksdUNBQ0ksb0JGaUJSIiwic291cmNlc0NvbnRlbnQiOlsiQGtleWZyYW1lcyBldXJla2Etc2VtaS1wdWxzZSB7XG4gICAgMTUlLCAzMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC44NSwgMC44NSwgMSk7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG5cbiAgICAwJSwgNDAlLCAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXBlbmRlbmNpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL2xheW91dC5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItdGhlbWUtdXRpbHMvc3JjL3N0eWxlcy91dGlscy90aGVtZS11dGlscy5zY3NzJztcbkBpbXBvcnQgJy4vYW5pbWF0aW9ucy5zY3NzJztcbkBpbXBvcnQgJy4vbWl4aW5zLnNjc3MnO1xuXG4uZXVyZWthLWxvYWRpbmctZG90cywgJWV1cmVrYS1sb2FkaW5nLWRvdHMge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1pbmxpbmUtZmxleC1yb3c7XG4gICAgQGluY2x1ZGUgZXVyZWthLWxvYWRpbmctZ3JpZC1nYXA7XG4gICAgZm9udC1zaXplOiA2cmVtO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAkdGhpczogJy5ldXJla2EtbG9hZGluZy1kb3RzJztcblxuICAgICZfX2RvdCB7XG4gICAgICAgIEBpbmNsdWRlIGV1cmVrYS1sb2FkaW5nLWdyaWQtaXRlbS1kaW1lbnNpb25zO1xuICAgICAgICBAaW5jbHVkZSBldXJla2EtbG9hZGluZy1wdWxzZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXVyZWthLWxvYWRpbmctY29sb3ItaWNvbiwgZXVyZWthLWxpZ2h0LXRoZW1lKCdsb2FkaW5nLWNvbG9yLWljb24nKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cbn1cbiIsIkBtaXhpbiBldXJla2EtaW5saW5lLWZsZXgtcm93KCkge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG59XG5cbkBtaXhpbiBldXJla2EtZmxleC1yb3coKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuXG5AbWl4aW4gZXVyZWthLWZsZXgtcm93LXJldmVyc2UoKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG59XG5cbkBtaXhpbiBldXJla2EtZmxleC1jb2x1bW4oKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG5AbWl4aW4gZXVyZWthLWZsZXgtY29sdW1uLXJldmVyc2UoKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG59XG5cbkBtaXhpbiBldXJla2Etc2Nyb2xsLXgoKSB7XG4gICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG5AbWl4aW4gZXVyZWthLXNjcm9sbC15KCkge1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuQG1peGluIGV1cmVrYS1zY3JvbGwtYWxsKCkge1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbkBtaXhpbiBldXJla2EtYnJlYWtwb2ludC1yYW5nZSgkbWluLCAkbWF4KSB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZXVyZWthLWJyZWFrcG9pbnQtbWluLW9ubHkoJG1pbikge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZXVyZWthLWJyZWFrcG9pbnQtbWF4LW9ubHkoJG1heCkge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlcGVuZGVuY2llc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkBpbXBvcnQgJy4vYW5pbWF0aW9ucy5zY3NzJztcblxuQG1peGluIGV1cmVrYS1sb2FkaW5nLWdyaWQtZ2FwIHtcbiAgICBnYXA6IGNhbGMoMWVtIC8gMTApO1xufVxuXG5AbWl4aW4gZXVyZWthLWxvYWRpbmctZ3JpZC1pdGVtLWRpbWVuc2lvbnMge1xuICAgIHdpZHRoOiBjYWxjKCgxZW0gLyAzKSAtICgoMWVtIC8gNSkgLyAzKSk7XG4gICAgaGVpZ2h0OiBjYWxjKCgxZW0gLyAzKSAtICgoMWVtIC8gNSkgLyAzKSk7XG59XG5cbkBtaXhpbiBldXJla2EtbG9hZGluZy1wdWxzZSB7XG4gICAgYW5pbWF0aW9uOiBldXJla2Etc2VtaS1wdWxzZSAyLjJzIGluZmluaXRlIGVhc2UtaW47XG5cbiAgICAmOm50aC1jaGlsZCgxKSB7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4yMnM7XG4gICAgfVxuXG4gICAgJjpudGgtY2hpbGQoMikge1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuNDRzO1xuICAgIH1cblxuICAgICY6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjY2cztcbiAgICB9XG59XG4iXX0= */\",t=\"eureka-css-@Green-Dot-Corporation/eureka-ui-icons-1.0.13\";const b=document.getElementById(t);if(b)b.textContent&&-1===b.textContent.indexOf(g)&&b.appendChild(document.createTextNode(g));else{var c=document.getElementsByTagName(\"head\")[0],l=document.createElement(\"style\");l.setAttribute(\"type\",\"text/css\"),l.setAttribute(\"id\",t),l.dataset.eurekasrc=document.currentScript?document.currentScript.src:\"\",c.insertAdjacentElement(\"beforeend\",l),65279===g.charCodeAt(0)&&(g=g.substring(1)),l.styleSheet?l.styleSheet.cssText+=g:l.appendChild(document.createTextNode(g))}export{g as css};\n//# sourceMappingURL=loading-dots.scss.js.map\n","import{inheritsLoose as r}from\"../_virtual/_rollupPluginBabelHelpers.js\";import{PureComponent as t}from\"react\";import s from\"prop-types\";import o from\"classnames\";import\"./styles/loading-dots.scss.js\";import{jsxs as e,jsx as n}from\"react/jsx-runtime\";var a=function(t){function LoadingDots(){for(var r,s=arguments.length,o=new Array(s),e=0;e<s;e++)o[e]=arguments[e];return(r=t.call.apply(t,[this].concat(o))||this).renderDot=function(){return n(\"span\",{className:r.baseCls+\"__dot\"})},r.baseCls=\"eureka-loading-dots\",r}return r(LoadingDots,t),LoadingDots.prototype.render=function(){var r=this.props.contextCls;return e(\"span\",{className:o(this.baseCls,r),children:[this.renderDot(),this.renderDot(),this.renderDot()]})},LoadingDots}(t);a.defaultProps={},a.propTypes={contextCls:s.string};var i=a;export{i as default};\n//# sourceMappingURL=LoadingDots.js.map\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport { LoadingDots } from '@Green-Dot-Corporation/eureka-ui-icons';\nimport { Callout } from '@Green-Dot-Corporation/eureka-ui-callouts';\n\n// Styles\nimport './styles/loading-state.scss';\n\nclass LoadingState extends PureComponent {\n static propTypes = {\n contextCls: PropTypes.string,\n title: PropTypes.string,\n msg: PropTypes.string,\n renderIcon: PropTypes.func,\n };\n\n render() {\n const { contextCls, renderIcon, ...rest } = this.props;\n const iconRenderer = renderIcon || this.renderIcon;\n\n return (\n <Callout\n {...rest}\n contextCls={cx(this.baseCls, contextCls)}\n renderIcon={iconRenderer}\n />\n );\n }\n\n renderIcon = (iconCls) => {\n return <LoadingDots contextCls={iconCls} />;\n };\n\n baseCls = 'eureka-loading-state';\n}\n\nexport default LoadingState;\n","import React, { PureComponent, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport { Callout, VARIANTS } from '@Green-Dot-Corporation/eureka-ui-callouts';\nimport LoadingState from './LoadingState';\n\nclass LoadingFlow extends PureComponent {\n static defaultProps = {\n hasError: false,\n isLoading: true,\n errorStateLocale: {},\n loadingStateLocale: {},\n };\n\n static propTypes = {\n contextCls: PropTypes.string,\n hasError: PropTypes.bool,\n isLoading: PropTypes.bool,\n errorStateLocale: PropTypes.shape({\n msg: PropTypes.string,\n title: PropTypes.string,\n }),\n loadingStateLocale: PropTypes.shape({\n msg: PropTypes.string,\n title: PropTypes.string,\n }),\n renderLoadingState: PropTypes.func,\n renderErrorState: PropTypes.func,\n };\n\n render() {\n const { children } = this.props;\n const shouldRenderLoadingState = this.getShouldRenderLoadingState();\n const shouldRenderErrorState = this.getShouldRenderErrorState();\n const shouldRenderContent = this.getShouldRenderContent();\n\n return (\n <Fragment>\n {shouldRenderLoadingState && this.renderLoadingState()}\n {shouldRenderErrorState && this.renderErrorState()}\n {shouldRenderContent && children}\n </Fragment>\n );\n }\n\n renderLoadingState = () => {\n const { loadingStateLocale, renderLoadingState, contextCls } =\n this.props;\n const modCls = `${this.baseCls}--loading-state`;\n\n if (renderLoadingState) {\n return renderLoadingState(modCls);\n }\n\n return (\n <LoadingState\n {...loadingStateLocale}\n contextCls={cx(this.baseCls, modCls, contextCls)}\n />\n );\n };\n\n renderErrorState = () => {\n const { errorStateLocale, renderErrorState, contextCls } = this.props;\n const modCls = `${this.baseCls}--error-state`;\n\n if (renderErrorState) {\n return renderErrorState(modCls);\n }\n\n return (\n <Callout\n {...errorStateLocale}\n variant={VARIANTS.ERROR}\n contextCls={cx(this.baseCls, modCls, contextCls)}\n />\n );\n };\n\n getShouldRenderLoadingState = () => {\n const { isLoading, hasError } = this.props;\n\n return isLoading && !hasError;\n };\n\n getShouldRenderErrorState = () => {\n const { isLoading, hasError } = this.props;\n\n return !isLoading && hasError;\n };\n\n getShouldRenderContent = () => {\n const { isLoading, hasError } = this.props;\n\n return !isLoading && !hasError;\n };\n\n baseCls = 'eureka-loading-flow';\n}\n\nexport default LoadingFlow;\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","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\n\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\n\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}</\" + child.type + \"> ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexport default HelmetExport;\nexport { HelmetExport as Helmet };\n","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import React from 'react';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { isValidElementType } from 'react-is';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n\n/* eslint-disable import/prefer-default-export */\nfunction invariant(condition, message) {\n if (condition) return;\n var error = new Error(\"loadable: \" + message);\n error.framesToPop = 1;\n error.name = 'Invariant Violation';\n throw error;\n}\nfunction warn(message) {\n // eslint-disable-next-line no-console\n console.warn(\"loadable: \" + message);\n}\n\nvar Context = /*#__PURE__*/\nReact.createContext();\n\nvar LOADABLE_REQUIRED_CHUNKS_KEY = '__LOADABLE_REQUIRED_CHUNKS__';\nfunction getRequiredChunkKey(namespace) {\n return \"\" + namespace + LOADABLE_REQUIRED_CHUNKS_KEY;\n}\n\nvar sharedInternals = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getRequiredChunkKey: getRequiredChunkKey,\n invariant: invariant,\n Context: Context\n});\n\nvar LOADABLE_SHARED = {\n initialChunks: {}\n};\n\nvar STATUS_PENDING = 'PENDING';\nvar STATUS_RESOLVED = 'RESOLVED';\nvar STATUS_REJECTED = 'REJECTED';\n\nfunction resolveConstructor(ctor) {\n if (typeof ctor === 'function') {\n return {\n requireAsync: ctor,\n resolve: function resolve() {\n return undefined;\n },\n chunkName: function chunkName() {\n return undefined;\n }\n };\n }\n\n return ctor;\n}\n\nvar withChunkExtractor = function withChunkExtractor(Component) {\n var LoadableWithChunkExtractor = function LoadableWithChunkExtractor(props) {\n return React.createElement(Context.Consumer, null, function (extractor) {\n return React.createElement(Component, Object.assign({\n __chunkExtractor: extractor\n }, props));\n });\n };\n\n if (Component.displayName) {\n LoadableWithChunkExtractor.displayName = Component.displayName + \"WithChunkExtractor\";\n }\n\n return LoadableWithChunkExtractor;\n};\n\nvar identity = function identity(v) {\n return v;\n};\n\nfunction createLoadable(_ref) {\n var _ref$defaultResolveCo = _ref.defaultResolveComponent,\n defaultResolveComponent = _ref$defaultResolveCo === void 0 ? identity : _ref$defaultResolveCo,\n _render = _ref.render,\n onLoad = _ref.onLoad;\n\n function loadable(loadableConstructor, options) {\n if (options === void 0) {\n options = {};\n }\n\n var ctor = resolveConstructor(loadableConstructor);\n var cache = {};\n /**\n * Cachekey represents the component to be loaded\n * if key changes - component has to be reloaded\n * @param props\n * @returns {null|Component}\n */\n\n function _getCacheKey(props) {\n if (options.cacheKey) {\n return options.cacheKey(props);\n }\n\n if (ctor.resolve) {\n return ctor.resolve(props);\n }\n\n return 'static';\n }\n /**\n * Resolves loaded `module` to a specific `Component\n * @param module\n * @param props\n * @param Loadable\n * @returns Component\n */\n\n\n function resolve(module, props, Loadable) {\n var Component = options.resolveComponent ? options.resolveComponent(module, props) : defaultResolveComponent(module);\n\n if (options.resolveComponent && !isValidElementType(Component)) {\n throw new Error(\"resolveComponent returned something that is not a React component!\");\n }\n\n hoistNonReactStatics(Loadable, Component, {\n preload: true\n });\n return Component;\n }\n\n var cachedLoad = function cachedLoad(props) {\n var cacheKey = _getCacheKey(props);\n\n var promise = cache[cacheKey];\n\n if (!promise || promise.status === STATUS_REJECTED) {\n promise = ctor.requireAsync(props);\n promise.status = STATUS_PENDING;\n cache[cacheKey] = promise;\n promise.then(function () {\n promise.status = STATUS_RESOLVED;\n }, function (error) {\n console.error('loadable-components: failed to asynchronously load component', {\n fileName: ctor.resolve(props),\n chunkName: ctor.chunkName(props),\n error: error ? error.message : error\n });\n promise.status = STATUS_REJECTED;\n });\n }\n\n return promise;\n };\n\n var InnerLoadable =\n /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(InnerLoadable, _React$Component);\n\n InnerLoadable.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n var cacheKey = _getCacheKey(props);\n\n return _extends({}, state, {\n cacheKey: cacheKey,\n // change of a key triggers loading state automatically\n loading: state.loading || state.cacheKey !== cacheKey\n });\n };\n\n function InnerLoadable(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n result: null,\n error: null,\n loading: true,\n cacheKey: _getCacheKey(props)\n };\n invariant(!props.__chunkExtractor || ctor.requireSync, 'SSR requires `@loadable/babel-plugin`, please install it'); // Server-side\n\n if (props.__chunkExtractor) {\n // This module has been marked with no SSR\n if (options.ssr === false) {\n return _assertThisInitialized(_this);\n } // We run load function, we assume that it won't fail and that it\n // triggers a synchronous loading of the module\n\n\n ctor.requireAsync(props)[\"catch\"](function () {\n return null;\n }); // So we can require now the module synchronously\n\n _this.loadSync();\n\n props.__chunkExtractor.addChunk(ctor.chunkName(props));\n\n return _assertThisInitialized(_this);\n } // Client-side with `isReady` method present (SSR probably)\n // If module is already loaded, we use a synchronous loading\n // Only perform this synchronous loading if the component has not\n // been marked with no SSR, else we risk hydration mismatches\n\n\n if (options.ssr !== false && ( // is ready - was loaded in this session\n ctor.isReady && ctor.isReady(props) || // is ready - was loaded during SSR process\n ctor.chunkName && LOADABLE_SHARED.initialChunks[ctor.chunkName(props)])) {\n _this.loadSync();\n }\n\n return _this;\n }\n\n var _proto = InnerLoadable.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true; // retrieve loading promise from a global cache\n\n var cachedPromise = this.getCache(); // if promise exists, but rejected - clear cache\n\n if (cachedPromise && cachedPromise.status === STATUS_REJECTED) {\n this.setCache();\n } // component might be resolved synchronously in the constructor\n\n\n if (this.state.loading) {\n this.loadAsync();\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Component has to be reloaded on cacheKey change\n if (prevState.cacheKey !== this.state.cacheKey) {\n this.loadAsync();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n if (this.mounted) {\n this.setState(nextState, callback);\n }\n }\n /**\n * returns a cache key for the current props\n * @returns {Component|string}\n */\n ;\n\n _proto.getCacheKey = function getCacheKey() {\n return _getCacheKey(this.props);\n }\n /**\n * access the persistent cache\n */\n ;\n\n _proto.getCache = function getCache() {\n return cache[this.getCacheKey()];\n }\n /**\n * sets the cache value. If called without value sets it as undefined\n */\n ;\n\n _proto.setCache = function setCache(value) {\n if (value === void 0) {\n value = undefined;\n }\n\n cache[this.getCacheKey()] = value;\n };\n\n _proto.triggerOnLoad = function triggerOnLoad() {\n var _this2 = this;\n\n if (onLoad) {\n setTimeout(function () {\n onLoad(_this2.state.result, _this2.props);\n });\n }\n }\n /**\n * Synchronously loads component\n * target module is expected to already exists in the module cache\n * or be capable to resolve synchronously (webpack target=node)\n */\n ;\n\n _proto.loadSync = function loadSync() {\n // load sync is expecting component to be in the \"loading\" state already\n // sounds weird, but loading=true is the initial state of InnerLoadable\n if (!this.state.loading) return;\n\n try {\n var loadedModule = ctor.requireSync(this.props);\n var result = resolve(loadedModule, this.props, Loadable);\n this.state.result = result;\n this.state.loading = false;\n } catch (error) {\n console.error('loadable-components: failed to synchronously load component, which expected to be available', {\n fileName: ctor.resolve(this.props),\n chunkName: ctor.chunkName(this.props),\n error: error ? error.message : error\n });\n this.state.error = error;\n }\n }\n /**\n * Asynchronously loads a component.\n */\n ;\n\n _proto.loadAsync = function loadAsync() {\n var _this3 = this;\n\n var promise = this.resolveAsync();\n promise.then(function (loadedModule) {\n var result = resolve(loadedModule, _this3.props, Loadable);\n\n _this3.safeSetState({\n result: result,\n loading: false\n }, function () {\n return _this3.triggerOnLoad();\n });\n })[\"catch\"](function (error) {\n return _this3.safeSetState({\n error: error,\n loading: false\n });\n });\n return promise;\n }\n /**\n * Asynchronously resolves(not loads) a component.\n * Note - this function does not change the state\n */\n ;\n\n _proto.resolveAsync = function resolveAsync() {\n var _this$props = this.props,\n __chunkExtractor = _this$props.__chunkExtractor,\n forwardedRef = _this$props.forwardedRef,\n props = _objectWithoutPropertiesLoose(_this$props, [\"__chunkExtractor\", \"forwardedRef\"]);\n\n return cachedLoad(props);\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n forwardedRef = _this$props2.forwardedRef,\n propFallback = _this$props2.fallback,\n __chunkExtractor = _this$props2.__chunkExtractor,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"forwardedRef\", \"fallback\", \"__chunkExtractor\"]);\n\n var _this$state = this.state,\n error = _this$state.error,\n loading = _this$state.loading,\n result = _this$state.result;\n\n if (options.suspense) {\n var cachedPromise = this.getCache() || this.loadAsync();\n\n if (cachedPromise.status === STATUS_PENDING) {\n throw this.loadAsync();\n }\n }\n\n if (error) {\n throw error;\n }\n\n var fallback = propFallback || options.fallback || null;\n\n if (loading) {\n return fallback;\n }\n\n return _render({\n fallback: fallback,\n result: result,\n options: options,\n props: _extends({}, props, {\n ref: forwardedRef\n })\n });\n };\n\n return InnerLoadable;\n }(React.Component);\n\n var EnhancedInnerLoadable = withChunkExtractor(InnerLoadable);\n var Loadable = React.forwardRef(function (props, ref) {\n return React.createElement(EnhancedInnerLoadable, Object.assign({\n forwardedRef: ref\n }, props));\n });\n Loadable.displayName = 'Loadable'; // In future, preload could use `<link rel=\"preload\">`\n\n Loadable.preload = function (props) {\n Loadable.load(props);\n };\n\n Loadable.load = function (props) {\n return cachedLoad(props);\n };\n\n return Loadable;\n }\n\n function lazy(ctor, options) {\n return loadable(ctor, _extends({}, options, {\n suspense: true\n }));\n }\n\n return {\n loadable: loadable,\n lazy: lazy\n };\n}\n\nfunction defaultResolveComponent(loadedModule) {\n // eslint-disable-next-line no-underscore-dangle\n return loadedModule.__esModule ? loadedModule[\"default\"] : loadedModule[\"default\"] || loadedModule;\n}\n\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nvar _createLoadable =\n/*#__PURE__*/\ncreateLoadable({\n defaultResolveComponent: defaultResolveComponent,\n render: function render(_ref) {\n var Component = _ref.result,\n props = _ref.props;\n return React.createElement(Component, props);\n }\n}),\n loadable = _createLoadable.loadable,\n lazy = _createLoadable.lazy;\n\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nvar _createLoadable$1 =\n/*#__PURE__*/\ncreateLoadable({\n onLoad: function onLoad(result, props) {\n if (result && props.forwardedRef) {\n if (typeof props.forwardedRef === 'function') {\n props.forwardedRef(result);\n } else {\n props.forwardedRef.current = result;\n }\n }\n },\n render: function render(_ref) {\n var result = _ref.result,\n props = _ref.props;\n\n if (props.children) {\n return props.children(result);\n }\n\n return null;\n }\n}),\n loadable$1 = _createLoadable$1.loadable,\n lazy$1 = _createLoadable$1.lazy;\n\n/* eslint-disable no-underscore-dangle, camelcase */\nvar BROWSER = typeof window !== 'undefined';\nfunction loadableReady(done, _temp) {\n if (done === void 0) {\n done = function done() {};\n }\n\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$namespace = _ref.namespace,\n namespace = _ref$namespace === void 0 ? '' : _ref$namespace,\n _ref$chunkLoadingGlob = _ref.chunkLoadingGlobal,\n chunkLoadingGlobal = _ref$chunkLoadingGlob === void 0 ? '__LOADABLE_LOADED_CHUNKS__' : _ref$chunkLoadingGlob;\n\n if (!BROWSER) {\n warn('`loadableReady()` must be called in browser only');\n done();\n return Promise.resolve();\n }\n\n var requiredChunks = null;\n\n if (BROWSER) {\n var id = getRequiredChunkKey(namespace);\n var dataElement = document.getElementById(id);\n\n if (dataElement) {\n requiredChunks = JSON.parse(dataElement.textContent);\n var extElement = document.getElementById(id + \"_ext\");\n\n if (extElement) {\n var _JSON$parse = JSON.parse(extElement.textContent),\n namedChunks = _JSON$parse.namedChunks;\n\n namedChunks.forEach(function (chunkName) {\n LOADABLE_SHARED.initialChunks[chunkName] = true;\n });\n } else {\n // version mismatch\n throw new Error('loadable-component: @loadable/server does not match @loadable/component');\n }\n }\n }\n\n if (!requiredChunks) {\n warn('`loadableReady()` requires state, please use `getScriptTags` or `getScriptElements` server-side');\n done();\n return Promise.resolve();\n }\n\n var resolved = false;\n return new Promise(function (resolve) {\n window[chunkLoadingGlobal] = window[chunkLoadingGlobal] || [];\n var loadedChunks = window[chunkLoadingGlobal];\n var originalPush = loadedChunks.push.bind(loadedChunks);\n\n function checkReadyState() {\n if (requiredChunks.every(function (chunk) {\n return loadedChunks.some(function (_ref2) {\n var chunks = _ref2[0];\n return chunks.indexOf(chunk) > -1;\n });\n })) {\n if (!resolved) {\n resolved = true;\n resolve();\n }\n }\n }\n\n loadedChunks.push = function () {\n originalPush.apply(void 0, arguments);\n checkReadyState();\n };\n\n checkReadyState();\n }).then(done);\n}\n\n/* eslint-disable no-underscore-dangle */\nvar loadable$2 = loadable;\nloadable$2.lib = loadable$1;\nvar lazy$2 = lazy;\nlazy$2.lib = lazy$1;\nvar __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = sharedInternals;\n\nexport default loadable$2;\nexport { __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, lazy$2 as lazy, loadableReady };\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","const loadComponent = (scope, module) => {\n return async () => {\n // eslint-disable-next-line no-undef\n await __webpack_init_sharing__('default');\n const container = window[scope]; // or get the container somewhere else\n // eslint-disable-next-line camelcase,no-undef\n await container.init(__webpack_share_scopes__.default);\n const factory = await window[scope].get(module);\n const Module = factory();\n\n return Module;\n };\n};\n\nconst loadModuleScript = (modulePath) => {\n return new Promise((resolve, reject) => {\n const element = document.createElement('script');\n const url = modulePath;\n element.src = url;\n element.type = 'text/javascript';\n element.async = true;\n\n element.onload = () => {\n resolve();\n };\n\n element.onerror = (e) => {\n reject(e);\n };\n\n document.head.appendChild(element);\n });\n};\n\nexport const getFeatureLoader = async (featureDef) => {\n const {\n moduleSrc,\n moduleName: featureModuleName,\n subModuleName: featureSubModuleName,\n } = featureDef;\n await loadModuleScript(moduleSrc);\n\n let moduleName = featureModuleName;\n\n if (!moduleName) {\n if (moduleSrc.indexOf('Entry.js') !== -1) {\n // default it to src name if not present as prop\n moduleName = moduleSrc.split('Entry.js')[0].split('/').slice(-1);\n } else {\n moduleName = moduleSrc.split('.js')[0].split('/').slice(-1);\n }\n }\n\n const subModuleName = featureSubModuleName ?? moduleName;\n\n return loadComponent(moduleName, `./${subModuleName}`);\n};\n\nexport const getFeatureModule = async (featureDef) => {\n if (!featureDef) {\n return undefined;\n }\n const featureLoader = await getFeatureLoader(featureDef);\n\n const feature = await featureLoader();\n\n return feature.default;\n};\n\nexport default {};\n","function FetchError(errorDetails) {\n const instance = new Error('fetch error');\n Object.setPrototypeOf(instance, Object.getPrototypeOf(this));\n\n instance.errorDetails = errorDetails;\n\n return instance;\n}\nFetchError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: Error,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n});\n\nObject.setPrototypeOf(FetchError, Error);\n\nexport default FetchError;\n","const requestInterceptorHandlers = [];\nconst responseInterceptorHandlers = [];\nconst errorHandlers = [];\n\nexport const registerRequestInterceptor = (interceptorHandler) => {\n requestInterceptorHandlers.push({\n interceptorHandler,\n });\n};\n\nexport const registerResponseInterceptor = (interceptorHandler) => {\n responseInterceptorHandlers.push({\n interceptorHandler,\n });\n};\n\nexport const registerErrorHandler = (errorHandler) => {\n if (errorHandler) {\n errorHandlers.push({\n errorHandler,\n });\n }\n};\n\nconst removeHandler = (handlerList, handler, propName) => {\n if (handler) {\n const toRemoveIndex = handlerList.findIndex((item) => {\n return item[propName] === handler;\n });\n\n if (toRemoveIndex !== -1) {\n handlerList.splice(toRemoveIndex, 1);\n }\n }\n};\n\nexport const unRegisterRequestInterceptor = (interceptorHandler) => {\n removeHandler(\n requestInterceptorHandlers,\n interceptorHandler,\n 'interceptorHandler',\n );\n};\n\nexport const unRegisterResponseInterceptor = (interceptorHandler) => {\n removeHandler(\n responseInterceptorHandlers,\n interceptorHandler,\n 'interceptorHandler',\n );\n};\n\nexport const unRegisterErrorHandler = (errorHandler) => {\n removeHandler(errorHandlers, errorHandler, 'errorHandler');\n};\n\nexport const getRequestInterceptorHandlers = () => requestInterceptorHandlers;\nexport const getResponseInterceptorHandlers = () => responseInterceptorHandlers;\nexport const getErrorHandlers = () => errorHandlers;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","/**\n * @constant ABORT_ERROR\n * @description The type of the error thrown when the request is aborted by the user\n * @memberof module:fetch-utils\n */\nexport const ABORT_ERROR = Symbol('ABORT_ERROR');\n\n/**\n * @constant RESPONSE_ERROR\n * @description The type of the error thrown when the request returns a status other that 200 - 299\n * @memberof module:fetch-utils\n */\nexport const RESPONSE_ERROR = Symbol('RESPONSE_ERROR');\n\n/**\n * @constant FETCH_ERROR\n * @description The type of the error thrown when the request fails. For more information see {@link https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#checking_that_the_fetch_was_successful|handling errors during fetch}\n * @memberof module:fetch-utils\n */\nexport const FETCH_ERROR = Symbol('FETCH_ERROR');\n\n/**\n * @constant TIMEDOUT_ERROR\n * @description The type of the error thrown when the request has timedout\n * @memberof module:fetch-utils\n */\nexport const TIMEDOUT_ERROR = Symbol('TIMEDOUT_ERROR');\n\nexport default {};\n","const cache = {};\nconst generateKey = (fetchConfig) => {\n return `${fetchConfig.url}~${fetchConfig.options.method}`;\n};\nexport const storeInCache = (fetchConfig, responseData) => {\n const key = generateKey(fetchConfig);\n cache[key] = responseData;\n};\nexport const getFromCache = (fetchConfig) => {\n const key = generateKey(fetchConfig);\n\n return cache[key];\n};\nexport const deleteFromCache = (fetchConfig) => {\n const key = generateKey(fetchConfig);\n delete cache[key];\n};\n","import FetchError from '../FetchError';\nimport {\n getResponseInterceptorHandlers,\n getErrorHandlers,\n} from '../interceptors';\nimport {\n ABORT_ERROR,\n FETCH_ERROR,\n RESPONSE_ERROR,\n TIMEDOUT_ERROR,\n} from './constants';\nimport { storeInCache } from './responseCache';\n\nconst isJSONResponse = (contentType) => {\n return (\n contentType &&\n (contentType.indexOf('application/json') !== -1 ||\n contentType.indexOf('application/problem+json') !== -1)\n );\n};\n\nconst isTextResponse = (contentType) => {\n return contentType && contentType.indexOf('text/') === 0;\n};\n\nconst handleResponse = async (httpResponse, fetchConfig) => {\n let responseData;\n\n let response = httpResponse;\n\n const { options } = fetchConfig;\n const {\n isCacheable = false,\n shouldIncludeResponseAttributes = false,\n method,\n } = options;\n\n const responseInterceptorHandlers = getResponseInterceptorHandlers();\n\n for (let i = 0; i < responseInterceptorHandlers.length; i += 1) {\n response =\n // eslint-disable-next-line no-await-in-loop\n (await responseInterceptorHandlers[i].interceptorHandler(\n response,\n fetchConfig,\n )) ?? response;\n\n if (!(response instanceof Response)) {\n const blob = new Blob([JSON.stringify(response)], {\n type: 'application/json',\n });\n\n const headers = { status: 200, statusText: 'OK' };\n response = new Response(blob, headers);\n }\n }\n\n const { headers: responseHeaders = {}, status } = response;\n\n const contentType = responseHeaders.get('content-type');\n\n if (method !== 'HEAD') {\n if (isJSONResponse(contentType)) {\n responseData = await response.json();\n } else if (isTextResponse(contentType)) {\n responseData = await response.text();\n } else {\n responseData = response;\n }\n }\n\n if (shouldIncludeResponseAttributes) {\n const { statusText } = response;\n responseData = {\n data: responseData,\n status,\n statusText,\n headers: Object.fromEntries(responseHeaders.entries()),\n };\n }\n\n if (!response.ok) {\n throw new FetchError({\n type: RESPONSE_ERROR,\n response,\n responseData,\n status,\n config: fetchConfig,\n });\n }\n\n if (isCacheable) {\n storeInCache(fetchConfig, responseData);\n }\n\n return responseData;\n};\n\nexport const handleError = (err, requestTimedout, config) => {\n const errorHandlers = getErrorHandlers();\n const eventParam = { error: err, preventDefault: false, config };\n\n for (let i = 0; i < errorHandlers.length; i += 1) {\n const { errorHandler } = errorHandlers[i];\n\n errorHandler(eventParam);\n\n if (eventParam.preventDefault === true) {\n return;\n }\n }\n\n if (err instanceof FetchError) {\n throw err;\n }\n\n if (err.name === 'AbortError') {\n if (requestTimedout) {\n throw new FetchError({\n type: TIMEDOUT_ERROR,\n config,\n });\n } else {\n throw new FetchError({\n type: ABORT_ERROR,\n config,\n });\n }\n }\n\n throw new FetchError({\n type: FETCH_ERROR,\n config,\n });\n};\n\nexport default handleResponse;\n","export const getURLWithParams = (url, options) => {\n const { queryParams = {} } = options ?? {};\n const hasParams = url.indexOf('?') !== -1;\n let paramsQueryString =\n typeof queryParams === 'string'\n ? queryParams\n : new URLSearchParams(queryParams).toString();\n\n let urlWithParams = url;\n\n if (paramsQueryString) {\n if (\n paramsQueryString.indexOf('?') === 0 ||\n paramsQueryString.indexOf('&') === 0\n ) {\n paramsQueryString = paramsQueryString.substring(1);\n }\n\n urlWithParams = queryParams\n ? `${url}${hasParams ? '&' : '?'}${paramsQueryString}`\n : url;\n }\n\n return urlWithParams;\n};\n\nexport const getRequestBody = (options) => {\n let bodyToSend;\n const { headers = {}, body } = options ?? {};\n\n if (body instanceof FormData) {\n headers['Content-Type'] = undefined;\n delete headers['Content-Type'];\n bodyToSend = body;\n } else if (body) {\n headers['Content-Type'] = 'application/json; charset=UTF-8';\n bodyToSend = typeof body === 'string' ? body : JSON.stringify(body);\n }\n\n return bodyToSend;\n};\n\nexport default {};\n","import { getRequestInterceptorHandlers } from '../interceptors';\nimport handleResponse, { handleError } from './handleResponse';\nimport { getRequestBody, getURLWithParams } from './helper';\nimport { deleteFromCache, getFromCache } from './responseCache';\n\nconst globalHeaders = {};\n\nconst makeRequest = async (url, options) => {\n const {\n mode = 'cors',\n credentials = 'include',\n headers = {},\n method,\n abortControllerCallback,\n timeout,\n shouldOverwriteCache = false,\n isCacheable = false,\n } = options;\n\n const urlWithParams = getURLWithParams(url, options);\n const bodyToSend = getRequestBody(options);\n\n const controller = new AbortController();\n const { signal } = controller;\n\n let requestTimedout = false;\n let timeoutId;\n\n const fetchOptions = {\n mode: mode ?? 'cors',\n credentials: credentials ?? 'include',\n headers: new Headers({ ...globalHeaders, ...(headers ?? {}) }),\n body: bodyToSend,\n method,\n };\n\n if (typeof abortControllerCallback === 'function') {\n abortControllerCallback(controller);\n }\n\n if (timeout) {\n timeoutId = setTimeout(() => {\n requestTimedout = true;\n controller.abort();\n }, timeout);\n }\n\n let fetchConfig = {\n url: urlWithParams,\n options: fetchOptions,\n };\n\n try {\n const requestInterceptorHandlers = getRequestInterceptorHandlers();\n\n for (let i = 0; i < requestInterceptorHandlers.length; i += 1) {\n // eslint-disable-next-line no-await-in-loop\n fetchConfig =\n // eslint-disable-next-line no-await-in-loop\n (await requestInterceptorHandlers[i].interceptorHandler(\n fetchConfig,\n )) ?? fetchConfig;\n }\n\n if (isCacheable) {\n const cachedValue = getFromCache(fetchConfig);\n\n if (cachedValue && !shouldOverwriteCache) {\n return cachedValue;\n }\n }\n\n fetchConfig.options.signal = signal;\n\n const httpResponse = await fetch(fetchConfig.url, fetchConfig.options);\n\n const requestConfig = {\n url,\n options,\n };\n\n const response = await handleResponse(httpResponse, requestConfig);\n\n return response;\n } catch (err) {\n if (isCacheable) {\n deleteFromCache(fetchConfig);\n }\n handleError(err, requestTimedout, fetchConfig);\n } finally {\n clearTimeout(timeoutId);\n }\n\n return undefined;\n};\n\nexport default makeRequest;\n","import makeRequest from './utils/makeRequest';\n\nconst makeRequestWithMethod = async (\n url,\n options,\n method,\n cacheOptions = {},\n) => {\n const {\n headers,\n abortControllerCallback,\n body,\n queryParams,\n timeout,\n credentials,\n shouldIncludeResponseAttributes = false,\n } = options ?? {};\n\n const { isCacheable, shouldOverwriteCache } = cacheOptions ?? {};\n\n return makeRequest(url, {\n method,\n headers,\n abortControllerCallback,\n body,\n queryParams,\n timeout,\n credentials,\n shouldOverwriteCache,\n isCacheable,\n shouldIncludeResponseAttributes,\n });\n};\n\nexport const get = async (url, options) => {\n return makeRequestWithMethod(url, options, 'GET');\n};\n\nexport const cachedGet = async (url, options) => {\n const { shouldOverwriteCache, ...getOptions } = options ?? {};\n\n return makeRequestWithMethod(url, getOptions, 'GET', {\n isCacheable: true,\n shouldOverwriteCache,\n });\n};\n\nexport const post = async (url, options) => {\n return makeRequestWithMethod(url, options, 'POST');\n};\n\nexport const patch = async (url, options) => {\n return makeRequestWithMethod(url, options, 'PATCH');\n};\n\nexport const deleteRequest = async (url, options) => {\n return makeRequestWithMethod(url, options, 'DELETE');\n};\n\nexport const put = async (url, options) => {\n return makeRequestWithMethod(url, options, 'PUT');\n};\n\nexport const head = async (url, options) => {\n const headOptions = options ?? {};\n headOptions.shouldIncludeResponseAttributes = true;\n\n return makeRequestWithMethod(url, headOptions, 'HEAD');\n};\n\nexport const upload = async () => {};\n","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","export const BRANDING_CACHE_KEY = 'BLUESKY_APP_BRANDING';\nexport const IS_APP_CONFIG_AUTHENTICATED_KEY = 'IS_AUTHENTICATED_APP_CONFIG';\nexport const APP_CONFIG_STAGE_PARAM = 'Stage';\nexport const APP_CONFIG_STAGE_PRE_LOGIN = 'prelogin';\nexport const APP_CONFIG_STAGE_POST_LOGIN = 'postlogin';\n\nexport const REQUEST_ID_HEADER = 'Request-ID';\n\nexport const DO_NOT_STORE_COOKIE_URLS = {\n '/sdk-landing': true,\n};\n\nexport default {};\n","import {\n IS_APP_CONFIG_AUTHENTICATED_KEY,\n BRANDING_CACHE_KEY,\n} from '../const/appConst';\n\nexport const cacheBranding = (config) => {\n window.localStorage.setItem(BRANDING_CACHE_KEY, JSON.stringify(config));\n};\n\nexport const getCachedBranding = () => {\n return window.localStorage.getItem(BRANDING_CACHE_KEY);\n};\n\nexport const shouldGetAuthenticatedAppConfig = () => {\n let stageKeyValue = window.sessionStorage.getItem(\n IS_APP_CONFIG_AUTHENTICATED_KEY,\n );\n\n if (!stageKeyValue) {\n stageKeyValue = window.localStorage.getItem(\n IS_APP_CONFIG_AUTHENTICATED_KEY,\n );\n }\n\n return stageKeyValue === 'true';\n};\n","import { get } from '@Green-Dot-Corporation/eureka-lib-fetch-utils';\nimport { v4 as uuidv4 } from 'uuid';\nimport { getFeatureModule } from './featureLoaderService';\nimport { shouldGetAuthenticatedAppConfig } from './storageService';\nimport {\n APP_CONFIG_STAGE_PARAM,\n APP_CONFIG_STAGE_POST_LOGIN,\n APP_CONFIG_STAGE_PRE_LOGIN,\n REQUEST_ID_HEADER,\n} from '../const/appConst';\n\nlet appLayoutProps = {};\nlet bootstrapModule;\nexport const getAppConfig = async () => {\n const options = {\n queryParams: {\n [APP_CONFIG_STAGE_PARAM]: shouldGetAuthenticatedAppConfig()\n ? APP_CONFIG_STAGE_POST_LOGIN\n : APP_CONFIG_STAGE_PRE_LOGIN,\n },\n headers: {\n [REQUEST_ID_HEADER]: uuidv4(),\n },\n };\n\n const config = await get('/appconfig/v1/Config', options);\n\n return config;\n};\n\nexport const isAuthenticated = () => {\n if (bootstrapModule) {\n return bootstrapModule.isAuthenticated();\n }\n\n return shouldGetAuthenticatedAppConfig();\n};\n\nexport const loadConfigFromBootstrap = async (appConfig) => {\n const bootstrapFeatureDef = appConfig?.featureConfig?.bootstrap;\n\n if (!bootstrapFeatureDef) {\n bootstrapModule = undefined;\n\n return appConfig;\n }\n const module = await getFeatureModule(bootstrapFeatureDef);\n\n bootstrapModule = module;\n\n const newAppConfig = await bootstrapModule.getAppConfig(appConfig);\n\n return newAppConfig;\n};\n\n/**\n * props set by layout to be passed to child modules\n */\nexport const setAppLayoutProps = (layoutProps) => {\n appLayoutProps = layoutProps ?? {};\n};\n\nexport const getAppLayoutProps = () => appLayoutProps;\n\nexport default {};\n","import { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { LoadingFlow } from '@Green-Dot-Corporation/eureka-ui-loading';\nimport { RouterUtilsContext } from '@Green-Dot-Corporation/eureka-lib-router-utils';\nimport loadable from '@loadable/component';\nimport { getFeatureLoader } from '../../services/featureLoaderService';\nimport { getAppLayoutProps } from '../../services/appService';\n\nexport default class FeatureLoader extends PureComponent {\n static propTypes = {\n appConfig: PropTypes.object,\n feature: PropTypes.object,\n isHidden: PropTypes.bool,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n isLoading: true,\n currentFeature: props.feature,\n };\n }\n\n static getDerivedStateFromProps(props, state) {\n const { currentFeature } = state;\n const { feature } = props;\n\n if (feature !== currentFeature) {\n return {\n isLoading: true,\n module: undefined,\n routerContext: { routePath: feature.route },\n hasError: false,\n currentFeature: feature,\n };\n }\n\n // react shows warning if we return undefined\n return null; // eslint-disable-line no-null/no-null\n }\n\n state = {\n isLoading: true,\n };\n\n render() {\n const {\n module: Module,\n isLoading,\n hasError,\n routerContext,\n } = this.state;\n const { appConfig, isHidden, feature } = this.props;\n\n if (isHidden) {\n return undefined;\n }\n\n const moduleProps = {\n ...getAppLayoutProps(),\n feature,\n appConfig,\n moduleRoutePath: feature.route,\n };\n\n return (\n <LoadingFlow\n isLoading={isLoading}\n hasError={hasError}\n // TODO: translate these error messages\n errorStateLocale={{ title: 'Error Loading Feature' }}\n loadingStateLocale={{ title: 'Loading Feature' }}\n >\n {Module && (\n <RouterUtilsContext.Provider value={routerContext}>\n <Module {...moduleProps} />\n </RouterUtilsContext.Provider>\n )}\n </LoadingFlow>\n );\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { isLoading } = this.state;\n const { isLoading: prevIsLoading } = prevState;\n\n if (isLoading === true && isLoading !== prevIsLoading) {\n this.loadFeatureModule();\n }\n }\n\n componentDidMount() {\n this.loadFeatureModule();\n }\n\n async loadFeatureModule() {\n const { feature = {}, isHidden } = this.props;\n\n try {\n const featureRenderer = await getFeatureLoader(feature);\n\n if (isHidden) {\n this.setState({ isLoading: false });\n } else {\n const module = loadable(featureRenderer);\n this.setState({\n module,\n isLoading: false,\n routerContext: { routePath: feature.route },\n });\n }\n } catch (e) {\n this.setState({ hasError: true, isLoading: false });\n }\n }\n}\n","import\"react\";import e from\"prop-types\";import{jsx as r}from\"react/jsx-runtime\";var ButtonIcon=function(e){var a=e.renderIcon,s=e.baseCls+\"__icon\";return r(\"span\",{className:s+\"-container\",children:r(\"span\",{className:s+\"-safe-space\",children:r(\"span\",{className:s,children:a&&a()})})})};ButtonIcon.defaultProps={baseCls:\"eureka-button\"},ButtonIcon.propTypes={baseCls:e.string,renderIcon:e.func.isRequired};var a=ButtonIcon;export{a as default};\n//# sourceMappingURL=ButtonIcon.js.map\n","import\"react\";import r from\"prop-types\";import{jsx as e}from\"react/jsx-runtime\";var ButtonText=function(r){var t=r.baseCls,a=r.children;return e(\"span\",{className:t+\"__text-container\",children:e(\"span\",{className:t+\"__text\",children:a})})};ButtonText.defaultProps={baseCls:\"eureka-button\"},ButtonText.propTypes={baseCls:r.string};var t=ButtonText;export{t as default};\n//# sourceMappingURL=ButtonText.js.map\n","var R={PRIMARY:\"PRIMARY\",PRIMARY_DESTRUCTIVE:\"PRIMARY_DESTRUCTIVE\",SECONDARY:\"SECONDARY\",SECONDARY_DESTRUCTIVE:\"SECONDARY_DESTRUCTIVE\"};export{R as VARIANTS};\n//# sourceMappingURL=variantsConst.js.map\n","import{VARIANTS as r}from\"../const/variantsConst.js\";var t=r.PRIMARY,a=r.PRIMARY_DESTRUCTIVE,e=r.SECONDARY,n=r.SECONDARY_DESTRUCTIVE,getBtnModCls=function(r,o){var s;return(s={})[o+\"--primary\"]=r===t,s[o+\"--secondary\"]=r===e,s[o+\"--primary-destructive\"]=r===a,s[o+\"--secondary-destructive\"]=r===n,s};export{getBtnModCls};\n//# sourceMappingURL=buttonUtils.js.map\n","var b=\"@keyframes eureka-rotate-clockwise{to{transform:rotate(1turn)}}@keyframes eureka-rotate-counter-clockwise{to{transform:rotate(-1turn)}}@keyframes eureka-fade-in{0%{opacity:0}to{opacity:1}}.eureka-button{background-color:transparent;background-color:var(--eureka-core-color-canvas,#fff);border:0 solid transparent;border-radius:var(--eureka-btn-border-radius,2px);border-width:var(--eureka-btn-border-width,1px);box-sizing:border-box;color:inherit;font-size:var(--eureka-core-typography-large-font-size,1.7rem);padding:0;transition:box-shadow .15s ease-in-out}@media screen and (max-width:575px){.eureka-button{font-size:var(--eureka-core-typography-large-mobile-font-size,1.6rem)}}.eureka-button:focus{outline:none}.eureka-button:focus-visible{box-shadow:0 0 0 3px var(--eureka-color-universal-focus-halo,rgba(0,0,0,.4))}@media (hover:hover){.eureka-button:enabled:hover{cursor:pointer}}.eureka-button:disabled{opacity:var(--eureka-core-state-disabled-opacity,.33)}@media (hover:hover){.eureka-button:disabled:hover{cursor:not-allowed}}.eureka-button__content-container{display:inline-block;padding:.4rem .8rem}.eureka-button__text{font-weight:var(--eureka-btn-font-weight,normal)}.eureka-button__text-container{line-height:var(--eureka-core-typography-line-height,1.4);vertical-align:middle}.eureka-button__icon-container{vertical-align:middle}.eureka-button__icon-container,.eureka-button__text-container{box-sizing:border-box;display:inline-block;padding:.4rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.eureka-button__icon-container+.eureka-button__text-container{vertical-align:middle}.eureka-button__icon-safe-space{box-sizing:border-box;width:1.1765em}.eureka-button__icon,.eureka-button__icon-safe-space{display:flex;flex-direction:row;vertical-align:middle}.eureka-button__icon{flex:0 0 auto;font-size:1.1765em;margin:auto}.eureka-button__icon .eureka-icon{margin:auto}.eureka-button .eureka-button__busy-icon{font-size:1em}.eureka-button .eureka-button__busy-icon .eureka-loading-dots__dot{background-color:currentColor}.eureka-button--primary{background-color:var(--eureka-btn-primary-color-bg,#2945ff);border-color:var(--eureka-btn-primary-color-border,transparent);color:var(--eureka-btn-primary-color-text,inherit)}.eureka-button--primary:focus-visible{box-shadow:0 0 0 3px var(--eureka-btn-primary-focus-color-halo,rgba(41,69,255,.4))}@media (hover:hover){.eureka-button--primary:enabled:hover{background-color:var(--eureka-btn-primary-hover-color-bg,#000d66);border-color:var(--eureka-btn-primary-hover-color-border,transparent);color:var(--eureka-btn-primary-hover-color-text,#fff)}}.eureka-button--secondary{background-color:var(--eureka-btn-secondary-color-bg,#fff);border-color:var(--eureka-btn-secondary-color-border,currentColor);color:var(--eureka-btn-secondary-color-text,#2945ff)}.eureka-button--secondary:focus-visible{box-shadow:0 0 0 3px var(--eureka-btn-secondary-focus-color-halo,rgba(41,69,255,.4))}@media (hover:hover){.eureka-button--secondary:enabled:hover{background-color:var(--eureka-btn-secondary-hover-color-bg,#ccd3ff);border-color:var(--eureka-btn-secondary-hover-color-border,currentColor);color:var(--eureka-btn-secondary-hover-color-text,#000d66)}}.eureka-button--primary-destructive{background-color:var(--eureka-btn-primary-destructive-color-bg,#e0114c);border-color:var(--eureka-btn-primary-destructive-color-border,transparent);color:var(--eureka-btn-primary-destructive-color-text,#fff)}.eureka-button--primary-destructive:focus-visible{box-shadow:0 0 0 3px var(--eureka-btn-primary-destructive-focus-color-halo,rgba(224,17,76,.4))}@media (hover:hover){.eureka-button--primary-destructive:enabled:hover{background-color:var(--eureka-btn-primary-destructive-hover-color-bg,#8e0b30);border-color:var(--eureka-btn-primary-destructive-hover-color-border,transparent);color:var(--eureka-btn-primary-destructive-hover-color-text,#fff)}}.eureka-button--secondary-destructive{background-color:var(--eureka-btn-secondary-destructive-color-bg,#fff);border-color:var(--eureka-btn-secondary-destructive-color-border,currentColor);color:var(--eureka-btn-secondary-destructive-color-text,#e0114c)}.eureka-button--secondary-destructive:focus-visible{box-shadow:0 0 0 3px var(--eureka-btn-primary-destructive-focus-color-halo,rgba(224,17,76,.4))}@media (hover:hover){.eureka-button--secondary-destructive:enabled:hover{background-color:var(--eureka-btn-secondary-destructive-hover-color-bg,#fbd0dc);border-color:var(--eureka-btn-secondary-destructive-hover-color-border,currentColor);color:var(--eureka-btn-secondary-destructive-hover-color-text,#5f0720)}}.eureka-button--destructive:active:enabled,.eureka-button--primary-destructive:active:enabled,.eureka-button--primary:active:enabled,.eureka-button--secondary-destructive:active:enabled,.eureka-button--secondary:active:enabled{transform:scale(.95)}.eureka-button--busy .eureka-icon-spinner{animation:eureka-rotate-clockwise 1s linear infinite}.eureka-button--busy .eureka-icon-spinner:before{transform:translate3d(.1px,-.2px,0)}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvX2FuaW1hdGlvbnMuc2NzcyIsInNyYy9zdHlsZXMvYnV0dG9uLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL19yZXNldHMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItdGhlbWUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvX3R5cG9ncmFwaHkuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItdGhlbWUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvX3N0YXRlcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL21peGlucy9fbGF5b3V0LnNjc3MiLCJzcmMvc3R5bGVzL19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxtQ0FDSSxHQUNJLHVCQ0FOLENBQ0YsQ0RJQSwyQ0FDSSxHQUNJLHdCQ0ZOLENBQ0YsQ0RNQSwwQkFDSSxHQUFLLFNDSFAsQ0RJRSxHQUFPLFNDRFQsQ0FDRixDQUxBLGVDSkksNEJBQUEsQ0RZQSxxREFBQSxDQUVBLDBCQUFBLENBQ0EsaURBQUEsQ0FEQSwrQ0FBQSxDQURBLHFCQUFBLENBRkEsYUFBQSxDRThFQSw4REFBQSxDRHRGQSxTQUFBLENFQ0Esc0NIa0JKLENJMEJJLG9DSjVDSixlRUVZLHFFRm9CVixDQUNGLENHckJJLHFCRkNBLFlEdUJKLENHcEJJLDZCQVZBLDRFSGlDSixDR2pCSSxxQkFDSSw2QkFDSSxjSG1CVixDQUNGLENHZEksd0JBQ0kscURIZ0JSLENHYlkscUJBQ0ksOEJBQ0ksa0JIZWxCLENBQ0YsQ0E3Qkksa0NBQ0ksb0JBQUEsQ0FDQSxtQkErQlIsQ0E1QkkscUJBQ0ksZ0RBOEJSLENBM0JJLCtCQUNJLHlEQUFBLENBQ0EscUJBNkJSLENBMUJJLCtCQUNJLHFCQTRCUixDQXpCSSw4REFFSSxxQkFBQSxDQUVBLG9CQUFBLENBQ0EsYUFBQSxDQUZBLHdCQUFBLENBQUEscUJBQUEsQ0FBQSxnQkE0QlIsQ0F2QkksOERBQ0kscUJBeUJSLENBdEJJLGdDQUlJLHFCQUFBLENBRkEsY0EyQlIsQ0F0QkkscURJeERBLFlBQUEsQ0FDQSxrQkFBQSxDSm1ESSxxQkFrQ1IsQ0E5QkkscUJBS0ksYUFBQSxDQUZBLGtCQUFBLENBQ0EsV0EwQlIsQ0F2QlEsa0NBQ0ksV0F5QlosQ0FyQkkseUNBQ0ksYUF1QlIsQ0FyQlEsbUVBQ0ksNkJBdUJaLENBbkJJLHdCQUVJLDJEQUFBLENBQ0EsK0RBQUEsQ0FGQSxrREF1QlIsQ0FuQlEsc0NHL0VKLGtGSHFHSixDQWxCUSxxQkFDSSxzQ0s1RVIsaUVBQUEsQ0FDQSxxRUFBQSxDQUZBLHFETG9HRixDQUNGLENBbEJJLDBCQUVJLDBEQUFBLENBQ0Esa0VBQUEsQ0FGQSxvREFzQlIsQ0FsQlEsd0NHL0ZKLG9GSG9ISixDQWpCUSxxQkFDSSx3Q0tsRlIsbUVBQUEsQ0FDQSx3RUFBQSxDQUZBLDBETHlHRixDQUNGLENBakJJLG9DQUVJLHVFQUFBLENBQ0EsMkVBQUEsQ0FGQSwyREFxQlIsQ0FqQlEsa0RHL0dKLDhGSG1JSixDQWhCUSxxQkFDSSxrREt4RlIsNkVBQUEsQ0FDQSxpRkFBQSxDQUZBLGlFTDhHRixDQUNGLENBaEJJLHNDQUVJLHNFQUFBLENBQ0EsOEVBQUEsQ0FGQSxnRUFvQlIsQ0FoQlEsb0RHL0hKLDhGSGtKSixDQWZRLHFCQUNJLG9ESzlGUiwrRUFBQSxDQUNBLG9GQUFBLENBRkEsc0VMbUhGLENBQ0YsQ0FUUSxtT0tqSkosb0JMNkpKLENBTlEsMENEeElKLG9EQ2lKSixDQUxRLGlEQUNJLG1DQU9aIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUm90YXRlIGNsb2Nrd2lzZVxuQGtleWZyYW1lcyBldXJla2Etcm90YXRlLWNsb2Nrd2lzZSB7XG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlWigxdHVybik7XG4gICAgfVxufVxuXG4vLyBSb3RhdGUgY291bnRlci1jbG9ja3dpc2VcbkBrZXlmcmFtZXMgZXVyZWthLXJvdGF0ZS1jb3VudGVyLWNsb2Nrd2lzZSB7XG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlWigtMXR1cm4pO1xuICAgIH1cbn1cblxuLy8gRmFkZSBJblxuQGtleWZyYW1lcyBldXJla2EtZmFkZS1pbiB7XG4gICAgMCUgeyBvcGFjaXR5OiAwOyB9XG4gICAgMTAwJSB7IG9wYWNpdHk6IDE7IH1cbn1cblxuLy8gSW5maW5pdGUgUm90YXRpb25cbkBtaXhpbiBldXJla2Etcm90YXRlLWluZmluaXRlKCRkdXJhdGlvbjogMXMsICR0aW1pbmdGdW5jOiBsaW5lYXIpIHtcbiAgICBhbmltYXRpb246IGV1cmVrYS1yb3RhdGUtY2xvY2t3aXNlICRkdXJhdGlvbiAkdGltaW5nRnVuYyBpbmZpbml0ZTtcbn1cbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXBlbmRlbmNpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL2FuaW1hdGlvbnMuc2Nzcyc7XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL2xheW91dC5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvcmVzZXRzLnNjc3MnO1xuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL3V0aWxzL3VuaXQtY29udmVyc2lvbi11dGlscy5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItdGhlbWUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvc3RhdGVzLnNjc3MnO1xuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi10aGVtZS11dGlscy9zcmMvc3R5bGVzL21peGlucy90eXBvZ3JhcGh5LnNjc3MnO1xuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi10aGVtZS11dGlscy9zcmMvc3R5bGVzL3V0aWxzL3RoZW1lLXV0aWxzLnNjc3MnO1xuQGltcG9ydCAnLi9taXhpbnMuc2Nzcyc7XG5cbi5ldXJla2EtYnV0dG9uLCAlZXVyZWthLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgZXVyZWthLWxhcmdlLXRleHQ7XG4gICAgQGluY2x1ZGUgZXVyZWthLWJ1dHRvbi1yZXNldDtcbiAgICBAaW5jbHVkZSBldXJla2EtZm9jdXMtc3RhdGUtaGFsbztcbiAgICBAaW5jbHVkZSBldXJla2EtaG92ZXItc3RhdGU7XG4gICAgQGluY2x1ZGUgZXVyZWthLWRpc2FibGVkLXN0YXRlO1xuICAgICR0aGlzOiAnLmV1cmVrYS1idXR0b24nO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWV1cmVrYS1jb3JlLWNvbG9yLWNhbnZhcywgZXVyZWthLWxpZ2h0LXRoZW1lKCdjb3JlLWNvbG9yLWNhbnZhcycpKTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJvcmRlcjogdmFyKC0tZXVyZWthLWJ0bi1ib3JkZXItd2lkdGgsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLWJvcmRlci13aWR0aCcpKSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ldXJla2EtYnRuLWJvcmRlci1yYWRpdXMsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLWJvcmRlci1yYWRpdXMnKSk7XG5cbiAgICAmX19jb250ZW50LWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcGFkZGluZzogI3tldXJla2EtdG8tcmVtKGV1cmVrYS1saWdodC10aGVtZSgnY29yZS1zeXN0ZW0tc2NhbGUnKSl9ICN7ZXVyZWthLXRvLXJlbShldXJla2EtbGlnaHQtdGhlbWUoJ2NvcmUtc3lzdGVtLXNjYWxlJykgKiAyKX07XG4gICAgfVxuXG4gICAgJl9fdGV4dCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1ldXJla2EtYnRuLWZvbnQtd2VpZ2h0LCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1mb250LXdlaWdodCcpKTtcbiAgICB9XG5cbiAgICAmX190ZXh0LWNvbnRhaW5lciB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWxpbmUtaGVpZ2h0LCBldXJla2EtbGlnaHQtdGhlbWUoJ2NvcmUtdHlwb2dyYXBoeS1saW5lLWhlaWdodCcpKTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICAmX19pY29uLWNvbnRhaW5lciB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuXG4gICAgJl9fdGV4dC1jb250YWluZXIsXG4gICAgJl9faWNvbi1jb250YWluZXIge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwYWRkaW5nOiAje2V1cmVrYS10by1yZW0oZXVyZWthLWxpZ2h0LXRoZW1lKCdjb3JlLXN5c3RlbS1zY2FsZScpKX07XG4gICAgfVxuXG4gICAgJl9faWNvbi1jb250YWluZXIgKyAmX190ZXh0LWNvbnRhaW5lciB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuXG4gICAgJl9faWNvbi1zYWZlLXNwYWNlIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWZsZXgtcm93O1xuICAgICAgICB3aWR0aDogZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4taWNvbi1mb250LXNpemUnKTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG5cbiAgICAmX19pY29uIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWZsZXgtcm93O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBmb250LXNpemU6IGV1cmVrYS1saWdodC10aGVtZSgnYnRuLWljb24tZm9udC1zaXplJyk7XG4gICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG5cbiAgICAgICAgLmV1cmVrYS1pY29uIHtcbiAgICAgICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgfVxuICAgIH1cblxuICAgICN7JHRoaXN9X19idXN5LWljb24ge1xuICAgICAgICBmb250LXNpemU6IDFlbTtcblxuICAgICAgICAuZXVyZWthLWxvYWRpbmctZG90c19fZG90IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXByaW1hcnkge1xuICAgICAgICBjb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1wcmltYXJ5LWNvbG9yLXRleHQsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktY29sb3ItdGV4dCcpKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1wcmltYXJ5LWNvbG9yLWJnLCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1wcmltYXJ5LWNvbG9yLWJnJykpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWV1cmVrYS1idG4tcHJpbWFyeS1jb2xvci1ib3JkZXIsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktY29sb3ItYm9yZGVyJykpO1xuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBldXJla2EtYnV0dG9uLXByaW1hcnktZm9jdXMtdmlzaWJsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgICAgICAgICAmOmVuYWJsZWQ6aG92ZXIge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGV1cmVrYS1idXR0b24tcHJpbWFyeS1ob3ZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXNlY29uZGFyeSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1ldXJla2EtYnRuLXNlY29uZGFyeS1jb2xvci10ZXh0LCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1zZWNvbmRhcnktY29sb3ItdGV4dCcpKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1zZWNvbmRhcnktY29sb3ItYmcsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXNlY29uZGFyeS1jb2xvci1iZycpKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ldXJla2EtYnRuLXNlY29uZGFyeS1jb2xvci1ib3JkZXIsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXNlY29uZGFyeS1jb2xvci1ib3JkZXInKSk7XG5cbiAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGV1cmVrYS1idXR0b24tc2Vjb25kYXJ5LWZvY3VzLXZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICAgICAgICAgJjplbmFibGVkOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBldXJla2EtYnV0dG9uLXNlY29uZGFyeS1ob3ZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXByaW1hcnktZGVzdHJ1Y3RpdmUge1xuICAgICAgICBjb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1wcmltYXJ5LWRlc3RydWN0aXZlLWNvbG9yLXRleHQsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktZGVzdHJ1Y3RpdmUtY29sb3ItdGV4dCcpKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1wcmltYXJ5LWRlc3RydWN0aXZlLWNvbG9yLWJnLCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1wcmltYXJ5LWRlc3RydWN0aXZlLWNvbG9yLWJnJykpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWV1cmVrYS1idG4tcHJpbWFyeS1kZXN0cnVjdGl2ZS1jb2xvci1ib3JkZXIsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktZGVzdHJ1Y3RpdmUtY29sb3ItYm9yZGVyJykpO1xuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBldXJla2EtYnV0dG9uLWRlc3RydWN0aXZlLWZvY3VzLXZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICAgICAgICAgJjplbmFibGVkOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBldXJla2EtYnV0dG9uLXByaW1hcnktZGVzdHJ1Y3RpdmUtaG92ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUge1xuICAgICAgICBjb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtY29sb3ItdGV4dCwgZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4tc2Vjb25kYXJ5LWRlc3RydWN0aXZlLWNvbG9yLXRleHQnKSk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWV1cmVrYS1idG4tc2Vjb25kYXJ5LWRlc3RydWN0aXZlLWNvbG9yLWJnLCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtY29sb3ItYmcnKSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtY29sb3ItYm9yZGVyLCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtY29sb3ItYm9yZGVyJykpO1xuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBldXJla2EtYnV0dG9uLWRlc3RydWN0aXZlLWZvY3VzLXZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICAgICAgICAgJjplbmFibGVkOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBldXJla2EtYnV0dG9uLXNlY29uZGFyeS1kZXN0cnVjdGl2ZS1ob3ZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHN0eWxlbGludC1kaXNhYmxlIG5vLWRlc2NlbmRpbmctc3BlY2lmaWNpdHlcbiAgICAmLS1wcmltYXJ5LFxuICAgICYtLXNlY29uZGFyeSxcbiAgICAmLS1kZXN0cnVjdGl2ZSxcbiAgICAmLS1wcmltYXJ5LWRlc3RydWN0aXZlLFxuICAgICYtLXNlY29uZGFyeS1kZXN0cnVjdGl2ZSB7XG4gICAgICAgICY6YWN0aXZlOmVuYWJsZWQge1xuICAgICAgICAgICAgQGluY2x1ZGUgZXVyZWthLWJ1dHRvbi1hY3RpdmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1idXN5IHtcbiAgICAgICAgLmV1cmVrYS1pY29uLXNwaW5uZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgZXVyZWthLXJvdGF0ZS1pbmZpbml0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ldXJla2EtaWNvbi1zcGlubmVyOjpiZWZvcmUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLjFweCwgLTAuMnB4LCAwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBtaXhpbiBldXJla2EtbGlzdC1yZXNldCgpIHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbn1cblxuQG1peGluIGV1cmVrYS1idXR0b24tcmVzZXQoKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXdpZHRoOiAwO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcGFkZGluZzogMDtcbn1cblxuQG1peGluIGV1cmVrYS1mb2N1cy1zdGF0ZS1yZXNldCgpIHtcbiAgICBvdXRsaW5lOiBub25lO1xufVxuIiwiLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlcGVuZGVuY2llc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL2xheW91dC5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy92YXJzL2JyZWFrcG9pbnRzLnNjc3MnO1xuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL3V0aWxzL21hcC11dGlscy5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy91dGlscy91bml0LWNvbnZlcnNpb24tdXRpbHMuc2Nzcyc7XG5AaW1wb3J0ICcuLi90b2tlbnMvY29sb3ItbGlnaHQtdGhlbWUtdG9rZW5zLnNjc3MnO1xuQGltcG9ydCAnLi4vdG9rZW5zL3N0eWxlLXRva2Vucy5zY3NzJztcblxuQG1peGluIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKCRjc3NWYXIsICR0b2tlbikge1xuICAgIEBpZiAkY3NzVmFyIGFuZCAkdG9rZW4ge1xuICAgICAgICBAaW5jbHVkZSBldXJla2EtYnJlYWtwb2ludC1tYXgtb25seSgkZXVyZWthLXhzLW1heCkge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoJGNzc1ZhciwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJHRva2VuKSkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gZXVyZWthLWxpbmUtaGVpZ2h0KCRpc0hlYWRpbmc6IGZhbHNlKSB7XG4gICAgQGlmICRpc0hlYWRpbmcge1xuICAgICAgICBsaW5lLWhlaWdodDogZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGluZS1oZWlnaHQnKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWxpbmUtaGVpZ2h0Jyk7XG4gICAgfVxufVxuXG5AbWl4aW4gZXVyZWthLW1heC1saW5lLXdpZHRoKCRsaW5laGVpZ2h0OiBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1saW5lLWhlaWdodCcpKSB7XG4gICAgLy8gJGRpdi1mb3JtOiAxZW0gLyAjeyRsaW5laGVpZ2h0fTtcbiAgICAkZGl2LWZvcm11bGE6IG1hdGguZGl2KDFlbSwgJGxpbmVoZWlnaHQpOyAvLyBmb250LXNpemUgZGl2aWRlZCBieSBsaW5laGVpZ2h0XG4gICAgbWF4LXdpZHRoOiBjYWxjKDcwICogI3skZGl2LWZvcm11bGF9KTsgLy8gbWF4IGNoYXJhY3RlcnMgKiAoZm9udC1zaXplIC8gbGluZS1oZWlnaHQpXG59XG5cbkBtaXhpbiBldXJla2EtaGVhZGluZy1mb250LXNoYXJlZCgpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbGluZS1oZWlnaHQodHJ1ZSk7XG4gICAgY29sb3I6IHZhcigtLWV1cmVrYS1jb3JlLWNvbG9yLWhlYWRpbmdzLXRleHQsIGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2EtY29sb3ItbGlnaHQtdGhlbWUtdG9rZW5zLCAnY29yZS1jb2xvci1oZWFkaW5ncy10ZXh0JykpO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWZvbnQtZmFtaWx5LCBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LWZhbWlseScpKSwgdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LWZhbWlseS1mYWxsYmFjaywgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtZm9udC1mYW1pbHktZmFsbGJhY2snKSk7XG4gICAgZm9udC1zdHlsZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LXN0eWxlLCBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LXN0eWxlJykpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWZvbnQtd2VpZ2h0LCBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LXdlaWdodCcpKTtcbiAgICBtYXJnaW46IDA7XG59XG5cbkBtaXhpbiBldXJla2EtbnVtYmVyLWZvbnQtc2hhcmVkKCkge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LW51bWJlci1mb250LXdlaWdodCwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktbnVtYmVyLWZvbnQtd2VpZ2h0JykpO1xufVxuXG5AbWl4aW4gZXVyZWthLWJvZHktZm9udC1zaGFyZWQoKSB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWV1cmVrYS10eXBvZ3JhcGh5LWJvZHktZm9udCwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktZm9udC1mYW1pbHknKSwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktZm9udC1mYW1pbHktZmFsbGJhY2snKSk7XG4gICAgbGluZS1oZWlnaHQ6IGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWxpbmUtaGVpZ2h0Jyk7XG59XG5cbkBtaXhpbiBldXJla2EtaDEoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMS1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMS1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1heC1saW5lLXdpZHRoKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxpbmUtaGVpZ2h0JykpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDEtZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMS1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWgyKCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDItbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDItbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tYXgtbGluZS13aWR0aChldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1saW5lLWhlaWdodCcpKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwyLWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDItZm9udC1zaXplJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1oMygpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwzLW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwzLW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBAaW5jbHVkZSBldXJla2EtbWF4LWxpbmUtd2lkdGgoZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGluZS1oZWlnaHQnKSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMy1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwzLWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtaDQoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsNC1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsNC1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1heC1saW5lLXdpZHRoKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxpbmUtaGVpZ2h0JykpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDQtZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsNC1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWg1KCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDUtbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDUtbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tYXgtbGluZS13aWR0aChldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1saW5lLWhlaWdodCcpKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWw1LWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDUtZm9udC1zaXplJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1udW1iZXItc21hbGwoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LW51bWJlci1zbWFsbC1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LW51bWJlci1zbWFsbC1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgQGluY2x1ZGUgZXVyZWthLW51bWJlci1mb250LXNoYXJlZDtcbiAgICBAaW5jbHVkZSBldXJla2EtbGluZS1oZWlnaHQodHJ1ZSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LW51bWJlci1zbWFsbC1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktbnVtYmVyLXNtYWxsLWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtbnVtYmVyLW1lZGl1bSgpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktbnVtYmVyLW1lZGl1bS1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LW51bWJlci1tZWRpdW0tbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1udW1iZXItZm9udC1zaGFyZWQ7XG4gICAgQGluY2x1ZGUgZXVyZWthLWxpbmUtaGVpZ2h0KHRydWUpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1udW1iZXItbWVkaXVtLWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1udW1iZXItbWVkaXVtLWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtbGFyZ2UtdGV4dCgpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktbGFyZ2UtbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1sYXJnZS1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWxhcmdlLWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1sYXJnZS1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLXN1Yi10ZXh0KCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1zdWItdGV4dC1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LXN1Yi10ZXh0LW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktc3ViLXRleHQtZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LXN1Yi10ZXh0LWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtZm9vdG5vdGUoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWZvb3Rub3RlLW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktZm9vdG5vdGUtbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1mb290bm90ZS1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktZm9vdG5vdGUtZm9udC1zaXplJykpKTtcbn1cbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXBlbmRlbmNpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL3Jlc2V0cy5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy91dGlscy9tYXAtdXRpbHMuc2Nzcyc7XG5AaW1wb3J0ICcuLi90b2tlbnMvc3R5bGUtdG9rZW5zLnNjc3MnO1xuXG5AbWl4aW4gZXVyZWthLWZvY3VzLXN0YXRlLWJveC1zaGFkb3coJGNvbG9yOiB2YXIoLS1ldXJla2EtY29sb3ItdW5pdmVyc2FsLWZvY3VzLWhhbG8sIHJnYmEoMCwgMCwgMCwgMC40KSkpIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJGNvbG9yO1xufVxuXG5AbWl4aW4gZXVyZWthLWZvY3VzLXN0YXRlLWhhbG8oJGNvbG9yOiB2YXIoLS1ldXJla2EtY29sb3ItdW5pdmVyc2FsLWZvY3VzLWhhbG8sIHJnYmEoMCwgMCwgMCwgMC40KSkpIHtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIEBpbmNsdWRlIGV1cmVrYS1mb2N1cy1zdGF0ZS1yZXNldDtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBAaW5jbHVkZSBldXJla2EtZm9jdXMtc3RhdGUtYm94LXNoYWRvdygkY29sb3IpO1xuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1ob3Zlci1zdGF0ZSgpIHtcbiAgICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICAgICAmOmVuYWJsZWQ6aG92ZXIge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gZXVyZWthLWRpc2FibGVkLXN0YXRlKCRoYXMtaG92ZXI6IHRydWUpIHtcbiAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgb3BhY2l0eTogdmFyKC0tZXVyZWthLWNvcmUtc3RhdGUtZGlzYWJsZWQtb3BhY2l0eSwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXN0YXRlLWRpc2FibGVkLW9wYWNpdHknKSk7XG5cbiAgICAgICAgQGlmICRoYXMtaG92ZXIge1xuICAgICAgICAgICAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAbWl4aW4gZXVyZWthLWlubGluZS1mbGV4LXJvdygpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuXG5AbWl4aW4gZXVyZWthLWZsZXgtcm93KCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbn1cblxuQG1peGluIGV1cmVrYS1mbGV4LXJvdy1yZXZlcnNlKCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xufVxuXG5AbWl4aW4gZXVyZWthLWZsZXgtY29sdW1uKCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuQG1peGluIGV1cmVrYS1mbGV4LWNvbHVtbi1yZXZlcnNlKCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xufVxuXG5AbWl4aW4gZXVyZWthLXNjcm9sbC14KCkge1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuQG1peGluIGV1cmVrYS1zY3JvbGwteSgpIHtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbkBtaXhpbiBldXJla2Etc2Nyb2xsLWFsbCgpIHtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG5AbWl4aW4gZXVyZWthLWJyZWFrcG9pbnQtcmFuZ2UoJG1pbiwgJG1heCkge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1icmVha3BvaW50LW1pbi1vbmx5KCRtaW4pIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1icmVha3BvaW50LW1heC1vbmx5KCRtYXgpIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXBlbmRlbmNpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXRoZW1lLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL3N0YXRlcy5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItdGhlbWUtdXRpbHMvc3JjL3N0eWxlcy91dGlscy90aGVtZS11dGlscy5zY3NzJztcblxuQG1peGluIGV1cmVrYS1idXR0b24tYWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xufVxuXG5AbWl4aW4gZXVyZWthLWJ1dHRvbi1wcmltYXJ5LWZvY3VzLXZpc2libGUge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1mb2N1cy1zdGF0ZS1ib3gtc2hhZG93KHZhcigtLWV1cmVrYS1idG4tcHJpbWFyeS1mb2N1cy1jb2xvci1oYWxvLCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1wcmltYXJ5LWZvY3VzLWNvbG9yLWhhbG8nKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWJ1dHRvbi1wcmltYXJ5LWhvdmVyIHtcbiAgICBjb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1wcmltYXJ5LWhvdmVyLWNvbG9yLXRleHQsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktaG92ZXItY29sb3ItdGV4dCcpKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ldXJla2EtYnRuLXByaW1hcnktaG92ZXItY29sb3ItYmcsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktaG92ZXItY29sb3ItYmcnKSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ldXJla2EtYnRuLXByaW1hcnktaG92ZXItY29sb3ItYm9yZGVyLCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1wcmltYXJ5LWhvdmVyLWNvbG9yLWJvcmRlcicpKTtcbn1cblxuQG1peGluIGV1cmVrYS1idXR0b24tc2Vjb25kYXJ5LWZvY3VzLXZpc2libGUge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1mb2N1cy1zdGF0ZS1ib3gtc2hhZG93KHZhcigtLWV1cmVrYS1idG4tc2Vjb25kYXJ5LWZvY3VzLWNvbG9yLWhhbG8sIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXNlY29uZGFyeS1mb2N1cy1jb2xvci1oYWxvJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1idXR0b24tc2Vjb25kYXJ5LWhvdmVyIHtcbiAgICBjb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1zZWNvbmRhcnktaG92ZXItY29sb3ItdGV4dCwgZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4tc2Vjb25kYXJ5LWhvdmVyLWNvbG9yLXRleHQnKSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1zZWNvbmRhcnktaG92ZXItY29sb3ItYmcsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXNlY29uZGFyeS1ob3Zlci1jb2xvci1iZycpKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWV1cmVrYS1idG4tc2Vjb25kYXJ5LWhvdmVyLWNvbG9yLWJvcmRlciwgZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4tc2Vjb25kYXJ5LWhvdmVyLWNvbG9yLWJvcmRlcicpKTtcbn1cblxuQG1peGluIGV1cmVrYS1idXR0b24tZGVzdHJ1Y3RpdmUtZm9jdXMtdmlzaWJsZSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLWZvY3VzLXN0YXRlLWJveC1zaGFkb3codmFyKC0tZXVyZWthLWJ0bi1wcmltYXJ5LWRlc3RydWN0aXZlLWZvY3VzLWNvbG9yLWhhbG8sIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktZGVzdHJ1Y3RpdmUtZm9jdXMtY29sb3ItaGFsbycpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtYnV0dG9uLXByaW1hcnktZGVzdHJ1Y3RpdmUtaG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1ldXJla2EtYnRuLXByaW1hcnktZGVzdHJ1Y3RpdmUtaG92ZXItY29sb3ItdGV4dCwgZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4tcHJpbWFyeS1kZXN0cnVjdGl2ZS1ob3Zlci1jb2xvci10ZXh0JykpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWV1cmVrYS1idG4tcHJpbWFyeS1kZXN0cnVjdGl2ZS1ob3Zlci1jb2xvci1iZywgZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4tcHJpbWFyeS1kZXN0cnVjdGl2ZS1ob3Zlci1jb2xvci1iZycpKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWV1cmVrYS1idG4tcHJpbWFyeS1kZXN0cnVjdGl2ZS1ob3Zlci1jb2xvci1ib3JkZXIsIGV1cmVrYS1saWdodC10aGVtZSgnYnRuLXByaW1hcnktZGVzdHJ1Y3RpdmUtaG92ZXItY29sb3ItYm9yZGVyJykpO1xufVxuXG5AbWl4aW4gZXVyZWthLWJ1dHRvbi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtZm9jdXMtdmlzaWJsZSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLWZvY3VzLXN0YXRlLWJveC1zaGFkb3codmFyKC0tZXVyZWthLWJ0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtZm9jdXMtY29sb3ItaGFsbywgZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4tc2Vjb25kYXJ5LWRlc3RydWN0aXZlLWZvY3VzLWNvbG9yLWhhbG8nKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWJ1dHRvbi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtaG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1ldXJla2EtYnRuLXNlY29uZGFyeS1kZXN0cnVjdGl2ZS1ob3Zlci1jb2xvci10ZXh0LCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtaG92ZXItY29sb3ItdGV4dCcpKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ldXJla2EtYnRuLXNlY29uZGFyeS1kZXN0cnVjdGl2ZS1ob3Zlci1jb2xvci1iZywgZXVyZWthLWxpZ2h0LXRoZW1lKCdidG4tc2Vjb25kYXJ5LWRlc3RydWN0aXZlLWhvdmVyLWNvbG9yLWJnJykpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZXVyZWthLWJ0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtaG92ZXItY29sb3ItYm9yZGVyLCBldXJla2EtbGlnaHQtdGhlbWUoJ2J0bi1zZWNvbmRhcnktZGVzdHJ1Y3RpdmUtaG92ZXItY29sb3ItYm9yZGVyJykpO1xufVxuXG5AbWl4aW4gZXVyZWthLWxpbmstYnV0dG9uLWZvY3VzLXZpc2libGUge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1mb2N1cy1zdGF0ZS1ib3gtc2hhZG93KHZhcigtLWV1cmVrYS1saW5rLWZvY3VzLWNvbG9yLWhhbG8sIGV1cmVrYS1saWdodC10aGVtZSgnbGluay1mb2N1cy1jb2xvci1oYWxvJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1saW5rLWJ1dHRvbi1ob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4iXX0= */\",t=\"eureka-css-@Green-Dot-Corporation/eureka-ui-buttons-1.0.13\";const c=document.getElementById(t);if(c)c.textContent&&-1===c.textContent.indexOf(b)&&c.appendChild(document.createTextNode(b));else{var l=document.getElementsByTagName(\"head\")[0],Z=document.createElement(\"style\");Z.setAttribute(\"type\",\"text/css\"),Z.setAttribute(\"id\",t),Z.dataset.eurekasrc=document.currentScript?document.currentScript.src:\"\",l.insertAdjacentElement(\"beforeend\",Z),65279===b.charCodeAt(0)&&(b=b.substring(1)),Z.styleSheet?Z.styleSheet.cssText+=b:Z.appendChild(document.createTextNode(b))}export{b as css};\n//# sourceMappingURL=button.scss.js.map\n","var g=\"@keyframes eureka-semi-pulse{15%,30%{opacity:.5;transform:scale3d(.85,.85,1)}0%,40%,to{opacity:1;transform:scaleX(1)}}.eureka-loading-dots{display:inline-flex;flex-direction:row;flex-wrap:wrap;font-size:6rem;gap:.1em}.eureka-loading-dots__dot{animation:eureka-semi-pulse 2.2s ease-in infinite;background-color:var(--eureka-loading-color-icon,#2945ff);border-radius:100%;flex:0 0 auto;height:.2666666667em;width:.2666666667em}.eureka-loading-dots__dot:first-child{animation-delay:.22s}.eureka-loading-dots__dot:nth-child(2){animation-delay:.44s}.eureka-loading-dots__dot:nth-child(3){animation-delay:.66s}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zdHlsZXMvYW5pbWF0aW9ucy5zY3NzIiwic3JjL3N0eWxlcy9sb2FkaW5nLWRvdHMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvX2xheW91dC5zY3NzIiwic3JjL3N0eWxlcy9taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2QkFDSSxRQUVJLFVBQUEsQ0FEQSw0QkNZTixDRFJFLFVBRUksU0FBQSxDQURBLG1CQ1dOLENBQ0YsQ0FYQSxxQkNQSSxtQkFBQSxDQUNBLGtCQUFBLENEVUEsY0FBQSxDQURBLGNBQUEsQ0VMQSxRRm9CSixDQVhJLDBCRUFBLGlEQUFBLENGR0kseURBQUEsQ0FDQSxrQkFBQSxDQUNBLGFBQUEsQ0VUSixvQkFBQSxDQURBLG1CRndCSixDRWpCSSxzQ0FDSSxvQkZtQlIsQ0VoQkksdUNBQ0ksb0JGa0JSLENFZkksdUNBQ0ksb0JGaUJSIiwic291cmNlc0NvbnRlbnQiOlsiQGtleWZyYW1lcyBldXJla2Etc2VtaS1wdWxzZSB7XG4gICAgMTUlLCAzMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC44NSwgMC44NSwgMSk7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG5cbiAgICAwJSwgNDAlLCAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXBlbmRlbmNpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL2xheW91dC5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItdGhlbWUtdXRpbHMvc3JjL3N0eWxlcy91dGlscy90aGVtZS11dGlscy5zY3NzJztcbkBpbXBvcnQgJy4vYW5pbWF0aW9ucy5zY3NzJztcbkBpbXBvcnQgJy4vbWl4aW5zLnNjc3MnO1xuXG4uZXVyZWthLWxvYWRpbmctZG90cywgJWV1cmVrYS1sb2FkaW5nLWRvdHMge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1pbmxpbmUtZmxleC1yb3c7XG4gICAgQGluY2x1ZGUgZXVyZWthLWxvYWRpbmctZ3JpZC1nYXA7XG4gICAgZm9udC1zaXplOiA2cmVtO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAkdGhpczogJy5ldXJla2EtbG9hZGluZy1kb3RzJztcblxuICAgICZfX2RvdCB7XG4gICAgICAgIEBpbmNsdWRlIGV1cmVrYS1sb2FkaW5nLWdyaWQtaXRlbS1kaW1lbnNpb25zO1xuICAgICAgICBAaW5jbHVkZSBldXJla2EtbG9hZGluZy1wdWxzZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXVyZWthLWxvYWRpbmctY29sb3ItaWNvbiwgZXVyZWthLWxpZ2h0LXRoZW1lKCdsb2FkaW5nLWNvbG9yLWljb24nKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cbn1cbiIsIkBtaXhpbiBldXJla2EtaW5saW5lLWZsZXgtcm93KCkge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG59XG5cbkBtaXhpbiBldXJla2EtZmxleC1yb3coKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuXG5AbWl4aW4gZXVyZWthLWZsZXgtcm93LXJldmVyc2UoKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG59XG5cbkBtaXhpbiBldXJla2EtZmxleC1jb2x1bW4oKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG5AbWl4aW4gZXVyZWthLWZsZXgtY29sdW1uLXJldmVyc2UoKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG59XG5cbkBtaXhpbiBldXJla2Etc2Nyb2xsLXgoKSB7XG4gICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG5AbWl4aW4gZXVyZWthLXNjcm9sbC15KCkge1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuQG1peGluIGV1cmVrYS1zY3JvbGwtYWxsKCkge1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbkBtaXhpbiBldXJla2EtYnJlYWtwb2ludC1yYW5nZSgkbWluLCAkbWF4KSB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZXVyZWthLWJyZWFrcG9pbnQtbWluLW9ubHkoJG1pbikge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZXVyZWthLWJyZWFrcG9pbnQtbWF4LW9ubHkoJG1heCkge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlcGVuZGVuY2llc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkBpbXBvcnQgJy4vYW5pbWF0aW9ucy5zY3NzJztcblxuQG1peGluIGV1cmVrYS1sb2FkaW5nLWdyaWQtZ2FwIHtcbiAgICBnYXA6IGNhbGMoMWVtIC8gMTApO1xufVxuXG5AbWl4aW4gZXVyZWthLWxvYWRpbmctZ3JpZC1pdGVtLWRpbWVuc2lvbnMge1xuICAgIHdpZHRoOiBjYWxjKCgxZW0gLyAzKSAtICgoMWVtIC8gNSkgLyAzKSk7XG4gICAgaGVpZ2h0OiBjYWxjKCgxZW0gLyAzKSAtICgoMWVtIC8gNSkgLyAzKSk7XG59XG5cbkBtaXhpbiBldXJla2EtbG9hZGluZy1wdWxzZSB7XG4gICAgYW5pbWF0aW9uOiBldXJla2Etc2VtaS1wdWxzZSAyLjJzIGluZmluaXRlIGVhc2UtaW47XG5cbiAgICAmOm50aC1jaGlsZCgxKSB7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4yMnM7XG4gICAgfVxuXG4gICAgJjpudGgtY2hpbGQoMikge1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuNDRzO1xuICAgIH1cblxuICAgICY6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjY2cztcbiAgICB9XG59XG4iXX0= */\",t=\"eureka-css-@Green-Dot-Corporation/eureka-ui-icons-1.0.13\",b=document.getElementById(t);if(b)b.textContent&&-1===b.textContent.indexOf(g)&&b.appendChild(document.createTextNode(g));else{var c=document.getElementsByTagName(\"head\")[0],l=document.createElement(\"style\");l.setAttribute(\"type\",\"text/css\"),l.setAttribute(\"id\",t),l.dataset.eurekasrc=document.currentScript?document.currentScript.src:\"\",c.insertAdjacentElement(\"beforeend\",l),65279===g.charCodeAt(0)&&(g=g.substring(1)),l.styleSheet?l.styleSheet.cssText+=g:l.appendChild(document.createTextNode(g))}export{g as css};\n//# sourceMappingURL=loading-dots.scss.js.map\n","import{inheritsLoose as r}from\"../_virtual/_rollupPluginBabelHelpers.js\";import{PureComponent as t}from\"react\";import s from\"prop-types\";import o from\"classnames\";import\"./styles/loading-dots.scss.js\";import{jsxs as e,jsx as n}from\"react/jsx-runtime\";var a=function(t){function LoadingDots(){for(var r,s=arguments.length,o=new Array(s),e=0;e<s;e++)o[e]=arguments[e];return(r=t.call.apply(t,[this].concat(o))||this).renderDot=function(){return n(\"span\",{className:r.baseCls+\"__dot\"})},r.baseCls=\"eureka-loading-dots\",r}return r(LoadingDots,t),LoadingDots.prototype.render=function(){var r=this.props.contextCls;return e(\"span\",{className:o(this.baseCls,r),children:[this.renderDot(),this.renderDot(),this.renderDot()]})},LoadingDots}(t);a.defaultProps={},a.propTypes={contextCls:s.string};var i=a;export{i as default};\n//# sourceMappingURL=LoadingDots.js.map\n","import{inheritsLoose as e,extends as t,objectWithoutPropertiesLoose as r}from\"../_virtual/_rollupPluginBabelHelpers.js\";import{Fragment as n,PureComponent as s}from\"react\";import o from\"prop-types\";import i from\"classnames\";import a from\"./components/ButtonIcon.js\";import c from\"./components/ButtonText.js\";import{getBtnModCls as l}from\"./utils/buttonUtils.js\";import\"./styles/button.scss.js\";import{jsx as u,jsxs as p}from\"react/jsx-runtime\";import d from\"../packages/components/icons/dist/esm/src/LoadingDots.js\";var b=[\"aria-label\",\"contextCls\",\"text\",\"type\",\"variant\",\"isBusy\",\"isDisabled\",\"data\",\"onClick\",\"renderIcon\",\"renderBusyIcon\",\"children\"],m=function(s){function Button(){for(var e,o=arguments.length,i=new Array(o),m=0;m<o;m++)i[m]=arguments[m];return(e=s.call.apply(s,[this].concat(i))||this).renderMain=function(){var t=e.props,r=t.text,s=t.isBusy,o=e.getShouldRenderBtnIcon();return p(n,{children:[o&&e.renderIcon(),s&&e.renderIcon(s),!!r&&e.renderText()]})},e.renderIcon=function(t){var r=e.props,n=r.renderBusyIcon,s=r.renderIcon,o=n||e.renderBusyIcon,i=t?o:s;return u(a,{baseCls:e.baseCls,renderIcon:i})},e.renderBusyIcon=function(){return u(d,{contextCls:e.baseCls+\"__busy-icon\"})},e.renderText=function(){var t=e.props.text;return u(c,{baseCls:e.baseCls,children:t})},e.handleClick=function(r){var n=e.props,s=n.onClick,o=n.data;s(t({e:r},o&&{data:o}))},e.getShouldRenderBtnIcon=function(){var t=e.props,r=t.isBusy,n=t.renderIcon;return!r&&!!n},e.getModCls=function(){var r,n=e.props,s=n.variant,o=n.isBusy;return t({},l(s,e.baseCls),((r={})[e.baseCls+\"--busy\"]=o,r))},e.getExtantProps=function(){var n=e.props,s=n[\"aria-label\"];n.contextCls;var o=n.text;n.type,n.variant;var i=n.isBusy,a=n.isDisabled;n.data,n.onClick,n.renderIcon,n.renderBusyIcon,n.children;var c=r(n,b);return t({},c,!o&&s&&{\"aria-label\":s},{disabled:i||a})},e.baseCls=\"eureka-button\",e}return e(Button,s),Button.prototype.render=function(){var e=this.props,r=e.contextCls,n=e.type,s=e.children,o=this.getExtantProps(),a=this.getModCls();return u(\"button\",t({},o,{className:i(this.baseCls,a,r),type:n,onClick:this.handleClick,children:p(\"span\",{className:this.baseCls+\"__content-container\",children:[!s&&this.renderMain(),s]})}))},Button}(s);m.defaultProps={type:\"button\",isBusy:!1,isDisabled:!1,onClick:function(){return Promise.resolve()}},m.propTypes={\"aria-label\":o.string,contextCls:o.string,text:o.oneOfType([o.string,o.element]),type:o.string,variant:o.string,isBusy:o.bool,isDisabled:o.bool,data:o.object,onClick:o.func,renderIcon:o.func,renderBusyIcon:o.func};var f=m;export{f as default};\n//# sourceMappingURL=Button.js.map\n","import { PureComponent, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport { Button, VARIANTS } from '@Green-Dot-Corporation/eureka-ui-buttons';\n\n// Styles\nimport './styles/callout-actions.scss';\n\nclass CalloutActions extends PureComponent {\n static defaultProps = {\n actions: [],\n onActionClick: () => Promise.resolve(),\n };\n\n static propTypes = {\n contextCls: PropTypes.string,\n actions: PropTypes.array,\n onActionClick: PropTypes.func,\n };\n\n render() {\n const { contextCls, children } = this.props;\n const primaryAction = this.getAction(true);\n const secondaryAction = this.getAction();\n\n return (\n <div className={cx(this.baseCls, contextCls)}>\n <div className={`${this.baseCls}__inner`}>\n {children}\n {!children && (\n <Fragment>\n {secondaryAction &&\n this.renderAction(secondaryAction)}\n {primaryAction && this.renderAction(primaryAction)}\n </Fragment>\n )}\n </div>\n </div>\n );\n }\n\n renderAction = (action) => {\n const { onActionClick } = this.props;\n\n return <Button {...action} onClick={onActionClick} />;\n };\n\n getAction = (isPrimary = false) => {\n const { actions } = this.props;\n const VARIANT = isPrimary ? 'PRIMARY' : 'SECONDARY';\n\n return actions.find((action) => {\n return (\n action?.variant === VARIANTS[VARIANT] ||\n action?.variant === VARIANTS[`${VARIANT}_DESTRUCTIVE`]\n );\n });\n };\n\n baseCls = 'eureka-callout-actions';\n}\n\nexport default CalloutActions;\n","export { SIZES as ILLUSTRATION_CALLOUT_SIZES } from '@Green-Dot-Corporation/eureka-ui-media';\n\nexport default {\n AFFIRMATIVE: 'AFFIRMATIVE',\n CAUTIONARY: 'CAUTIONARY',\n ERROR: 'ERROR',\n INFO: 'INFO',\n};\n","// ========================================================\n// Dependencies\n// ========================================================\n@import '~@Green-Dot-Corporation/eureka-lib-style-utils/src/styles/utils/unit-conversion-utils.scss';\n@import '~@Green-Dot-Corporation/eureka-lib-theme-utils/src/styles/mixins/typography.scss';\n@import '~@Green-Dot-Corporation/eureka-lib-theme-utils/src/styles/utils/theme-utils.scss';\n\n.eureka-callout, %eureka-callout {\n box-sizing: border-box;\n text-align: center;\n $this: '.eureka-callout';\n\n &__icon-container {\n line-height: 0;\n font-size: 8rem;\n }\n\n .eureka-context-icon__icon {\n font-size: inherit;\n }\n\n #{$this}__title {\n @include eureka-h5;\n color: var(--eureka-core-color-text, eureka-light-theme('core-color-text'));\n }\n\n &__msg-container-inner {\n line-height: var(--eureka-core-typography-line-height, eureka-light-theme('core-typography-line-height'));\n\n > :first-child {\n margin-top: 0;\n }\n\n > :last-child {\n margin-bottom: 0;\n }\n }\n\n &__title,\n &__title.eureka-heading,\n &__msg-container-inner {\n @include eureka-max-line-width;\n display: block;\n margin: 0 auto;\n }\n\n &__title-container,\n &__msg-container {\n margin: 0 auto;\n }\n\n &__title-container + &__msg-container {\n margin-top: #{eureka-to-px(eureka-light-theme('core-system-scale') * 2)};\n }\n\n &__text-container,\n &__icon-container {\n + .eureka-callout-actions {\n margin-top: #{eureka-to-px(eureka-light-theme('core-system-scale') * 8)};\n }\n }\n\n &__icon-container + &__text-container {\n margin-top: #{eureka-to-px(eureka-light-theme('core-system-scale') * 2)};\n }\n\n &--pad-content {\n padding: #{eureka-to-rem(eureka-light-theme('core-system-scale') * 8)};\n }\n\n &--affirmative {\n #{$this}__icon-container {\n color: var(--eureka-callout-affirmative-color-icon, eureka-light-theme('callout-affirmative-color-icon'));\n }\n }\n\n &--error {\n #{$this}__icon-container {\n color: var(--eureka-callout-error-color-icon, eureka-light-theme('callout-error-color-icon'));\n }\n }\n}\n","var Z='.eureka-heading{color:var(--eureka-core-color-headings-text,#000);font-family:var(--eureka-core-typography-headings-font-family,\"Averta\"),var(--eureka-core-typography-headings-font-family-fallback,sans-serif);font-style:var(--eureka-core-typography-headings-font-style,normal);font-weight:var(--eureka-core-typography-headings-font-weight,bold);line-height:1.2;margin:0}.eureka-heading--h1{font-size:var(--eureka-core-typography-headings-level1-font-size,3rem);max-width:58.33333em}@media screen and (max-width:575px){.eureka-heading--h1{font-size:var(--eureka-core-typography-headings-level1-mobile-font-size,2.2rem)}}.eureka-heading--h2{font-size:var(--eureka-core-typography-headings-level2-font-size,2.7rem);max-width:58.33333em}@media screen and (max-width:575px){.eureka-heading--h2{font-size:var(--eureka-core-typography-headings-level2-mobile-font-size,2.1rem)}}.eureka-heading--h3{font-size:var(--eureka-core-typography-headings-level3-font-size,2.4rem);max-width:58.33333em}@media screen and (max-width:575px){.eureka-heading--h3{font-size:var(--eureka-core-typography-headings-level3-mobile-font-size,1.9rem)}}.eureka-heading--h4{font-size:var(--eureka-core-typography-headings-level4-font-size,2.1rem);max-width:58.33333em}@media screen and (max-width:575px){.eureka-heading--h4{font-size:var(--eureka-core-typography-headings-level4-mobile-font-size,1.8rem)}}.eureka-heading--h5,.eureka-heading--h6{font-size:var(--eureka-core-typography-headings-level5-font-size,1.9rem);max-width:58.33333em}@media screen and (max-width:575px){.eureka-heading--h5,.eureka-heading--h6{font-size:var(--eureka-core-typography-headings-level5-mobile-font-size,1.7rem)}}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zdHlsZXMvaGVhZGluZy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi10aGVtZS11dGlscy9zcmMvc3R5bGVzL21peGlucy9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL21peGlucy9fbGF5b3V0LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsZ0JDOEJJLGlEQUFBLENBQ0EsOElBQUEsQ0FDQSxtRUFBQSxDQUNBLG1FQUFBLENBakJJLGVBQUEsQ0FrQkosUURoQ0osQ0FDSSxvQkM4Q0Esc0VBQUEsQ0F4QkEsb0JEbkJKLENFNkNJLG9DRmhEQSxvQkNNUSwrRURDVixDQUNGLENBSkksb0JDZ0RBLHdFQUFBLENBOUJBLG9CRFZKLENFb0NJLG9DRjVDQSxvQkNFUSwrRURVVixDQUNGLENBVEksb0JDa0RBLHdFQUFBLENBcENBLG9CRERKLENFMkJJLG9DRnhDQSxvQkNGUSwrRURtQlYsQ0FDRixDQWRJLG9CQ29EQSx3RUFBQSxDQTFDQSxvQkRRSixDRWtCSSxvQ0ZwQ0Esb0JDTlEsK0VENEJWLENBQ0YsQ0FuQkksd0NDc0RBLHdFQUFBLENBaERBLG9CRGlCSixDRVNJLG9DRmhDQSx3Q0NWUSwrRURxQ1YsQ0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXBlbmRlbmNpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXRoZW1lLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL3R5cG9ncmFwaHkuc2Nzcyc7XG5cbi5ldXJla2EtaGVhZGluZywgJWV1cmVrYS1oZWFkaW5nIHtcbiAgICBAaW5jbHVkZSBldXJla2EtaGVhZGluZy1mb250LXNoYXJlZDtcblxuICAgICYtLWgxIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWgxO1xuICAgIH1cblxuICAgICYtLWgyIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWgyO1xuICAgIH1cblxuICAgICYtLWgzIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWgzO1xuICAgIH1cblxuICAgICYtLWg0IHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWg0O1xuICAgIH1cblxuICAgICYtLWg1LFxuICAgICYtLWg2IHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWg1O1xuICAgIH1cbn1cbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXBlbmRlbmNpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AdXNlICdzYXNzOm1hdGgnO1xuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL21peGlucy9sYXlvdXQuc2Nzcyc7XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvdmFycy9icmVha3BvaW50cy5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy91dGlscy9tYXAtdXRpbHMuc2Nzcyc7XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvdXRpbHMvdW5pdC1jb252ZXJzaW9uLXV0aWxzLnNjc3MnO1xuQGltcG9ydCAnLi4vdG9rZW5zL2NvbG9yLWxpZ2h0LXRoZW1lLXRva2Vucy5zY3NzJztcbkBpbXBvcnQgJy4uL3Rva2Vucy9zdHlsZS10b2tlbnMuc2Nzcyc7XG5cbkBtaXhpbiBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgkY3NzVmFyLCAkdG9rZW4pIHtcbiAgICBAaWYgJGNzc1ZhciBhbmQgJHRva2VuIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWJyZWFrcG9pbnQtbWF4LW9ubHkoJGV1cmVrYS14cy1tYXgpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKCRjc3NWYXIsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICR0b2tlbikpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1saW5lLWhlaWdodCgkaXNIZWFkaW5nOiBmYWxzZSkge1xuICAgIEBpZiAkaXNIZWFkaW5nIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxpbmUtaGVpZ2h0Jyk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1saW5lLWhlaWdodCcpO1xuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1tYXgtbGluZS13aWR0aCgkbGluZWhlaWdodDogZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktbGluZS1oZWlnaHQnKSkge1xuICAgIC8vICRkaXYtZm9ybTogMWVtIC8gI3skbGluZWhlaWdodH07XG4gICAgJGRpdi1mb3JtdWxhOiBtYXRoLmRpdigxZW0sICRsaW5laGVpZ2h0KTsgLy8gZm9udC1zaXplIGRpdmlkZWQgYnkgbGluZWhlaWdodFxuICAgIG1heC13aWR0aDogY2FsYyg3MCAqICN7JGRpdi1mb3JtdWxhfSk7IC8vIG1heCBjaGFyYWN0ZXJzICogKGZvbnQtc2l6ZSAvIGxpbmUtaGVpZ2h0KVxufVxuXG5AbWl4aW4gZXVyZWthLWhlYWRpbmctZm9udC1zaGFyZWQoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLWxpbmUtaGVpZ2h0KHRydWUpO1xuICAgIGNvbG9yOiB2YXIoLS1ldXJla2EtY29yZS1jb2xvci1oZWFkaW5ncy10ZXh0LCBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLWNvbG9yLWxpZ2h0LXRoZW1lLXRva2VucywgJ2NvcmUtY29sb3ItaGVhZGluZ3MtdGV4dCcpKTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LWZhbWlseSwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtZm9udC1mYW1pbHknKSksIHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtZm9udC1mYW1pbHktZmFsbGJhY2ssIGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWZvbnQtZmFtaWx5LWZhbGxiYWNrJykpO1xuICAgIGZvbnQtc3R5bGU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtZm9udC1zdHlsZSwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtZm9udC1zdHlsZScpKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1mb250LXdlaWdodCwgZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtZm9udC13ZWlnaHQnKSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG5AbWl4aW4gZXVyZWthLW51bWJlci1mb250LXNoYXJlZCgpIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1udW1iZXItZm9udC13ZWlnaHQsIGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LW51bWJlci1mb250LXdlaWdodCcpKTtcbn1cblxuQG1peGluIGV1cmVrYS1ib2R5LWZvbnQtc2hhcmVkKCkge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1ldXJla2EtdHlwb2dyYXBoeS1ib2R5LWZvbnQsIGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5JyksIGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5LWZhbGxiYWNrJykpO1xuICAgIGxpbmUtaGVpZ2h0OiBldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1saW5lLWhlaWdodCcpO1xufVxuXG5AbWl4aW4gZXVyZWthLWgxKCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDEtbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDEtbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tYXgtbGluZS13aWR0aChldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1saW5lLWhlaWdodCcpKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwxLWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDEtZm9udC1zaXplJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1oMigpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwyLW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwyLW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBAaW5jbHVkZSBldXJla2EtbWF4LWxpbmUtd2lkdGgoZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGluZS1oZWlnaHQnKSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMi1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWwyLWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtaDMoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMy1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMy1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1heC1saW5lLXdpZHRoKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxpbmUtaGVpZ2h0JykpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDMtZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsMy1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWg0KCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDQtbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDQtbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tYXgtbGluZS13aWR0aChldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1saW5lLWhlaWdodCcpKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWw0LWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1oZWFkaW5ncy1sZXZlbDQtZm9udC1zaXplJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1oNSgpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWw1LW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWw1LW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBAaW5jbHVkZSBldXJla2EtbWF4LWxpbmUtd2lkdGgoZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGluZS1oZWlnaHQnKSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWhlYWRpbmdzLWxldmVsNS1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktaGVhZGluZ3MtbGV2ZWw1LWZvbnQtc2l6ZScpKSk7XG59XG5cbkBtaXhpbiBldXJla2EtbnVtYmVyLXNtYWxsKCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1udW1iZXItc21hbGwtbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1udW1iZXItc21hbGwtbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1udW1iZXItZm9udC1zaGFyZWQ7XG4gICAgQGluY2x1ZGUgZXVyZWthLWxpbmUtaGVpZ2h0KHRydWUpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1udW1iZXItc21hbGwtZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LW51bWJlci1zbWFsbC1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLW51bWJlci1tZWRpdW0oKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LW51bWJlci1tZWRpdW0tbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1udW1iZXItbWVkaXVtLW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBAaW5jbHVkZSBldXJla2EtbnVtYmVyLWZvbnQtc2hhcmVkO1xuICAgIEBpbmNsdWRlIGV1cmVrYS1saW5lLWhlaWdodCh0cnVlKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktbnVtYmVyLW1lZGl1bS1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktbnVtYmVyLW1lZGl1bS1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWxhcmdlLXRleHQoKSB7XG4gICAgQGluY2x1ZGUgZXVyZWthLW1vYmlsZS1mb250LXNpemUoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LWxhcmdlLW1vYmlsZS1mb250LXNpemUsICdjb3JlLXR5cG9ncmFwaHktbGFyZ2UtbW9iaWxlLWZvbnQtc2l6ZScpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1sYXJnZS1mb250LXNpemUsIGV1cmVrYS10by1yZW0oZXVyZWthLWdldC1tYXAtdmFsdWUoJGV1cmVrYS1zdHlsZS10b2tlbnMsICdjb3JlLXR5cG9ncmFwaHktbGFyZ2UtZm9udC1zaXplJykpKTtcbn1cblxuQG1peGluIGV1cmVrYS1zdWItdGV4dCgpIHtcbiAgICBAaW5jbHVkZSBldXJla2EtbW9iaWxlLWZvbnQtc2l6ZSgtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktc3ViLXRleHQtbW9iaWxlLWZvbnQtc2l6ZSwgJ2NvcmUtdHlwb2dyYXBoeS1zdWItdGV4dC1tb2JpbGUtZm9udC1zaXplJyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1ldXJla2EtY29yZS10eXBvZ3JhcGh5LXN1Yi10ZXh0LWZvbnQtc2l6ZSwgZXVyZWthLXRvLXJlbShldXJla2EtZ2V0LW1hcC12YWx1ZSgkZXVyZWthLXN0eWxlLXRva2VucywgJ2NvcmUtdHlwb2dyYXBoeS1zdWItdGV4dC1mb250LXNpemUnKSkpO1xufVxuXG5AbWl4aW4gZXVyZWthLWZvb3Rub3RlKCkge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1tb2JpbGUtZm9udC1zaXplKC0tZXVyZWthLWNvcmUtdHlwb2dyYXBoeS1mb290bm90ZS1tb2JpbGUtZm9udC1zaXplLCAnY29yZS10eXBvZ3JhcGh5LWZvb3Rub3RlLW1vYmlsZS1mb250LXNpemUnKTtcbiAgICBmb250LXNpemU6IHZhcigtLWV1cmVrYS1jb3JlLXR5cG9ncmFwaHktZm9vdG5vdGUtZm9udC1zaXplLCBldXJla2EtdG8tcmVtKGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS10eXBvZ3JhcGh5LWZvb3Rub3RlLWZvbnQtc2l6ZScpKSk7XG59XG4iLCJAbWl4aW4gZXVyZWthLWlubGluZS1mbGV4LXJvdygpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuXG5AbWl4aW4gZXVyZWthLWZsZXgtcm93KCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbn1cblxuQG1peGluIGV1cmVrYS1mbGV4LXJvdy1yZXZlcnNlKCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xufVxuXG5AbWl4aW4gZXVyZWthLWZsZXgtY29sdW1uKCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuQG1peGluIGV1cmVrYS1mbGV4LWNvbHVtbi1yZXZlcnNlKCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xufVxuXG5AbWl4aW4gZXVyZWthLXNjcm9sbC14KCkge1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuQG1peGluIGV1cmVrYS1zY3JvbGwteSgpIHtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbkBtaXhpbiBldXJla2Etc2Nyb2xsLWFsbCgpIHtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG5AbWl4aW4gZXVyZWthLWJyZWFrcG9pbnQtcmFuZ2UoJG1pbiwgJG1heCkge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1icmVha3BvaW50LW1pbi1vbmx5KCRtaW4pIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1icmVha3BvaW50LW1heC1vbmx5KCRtYXgpIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cbiJdfQ== */',t=\"eureka-css-@Green-Dot-Corporation/eureka-ui-typography-1.0.9\";const l=document.getElementById(t);if(l)l.textContent&&-1===l.textContent.indexOf(Z)&&l.appendChild(document.createTextNode(Z));else{var b=document.getElementsByTagName(\"head\")[0],W=document.createElement(\"style\");W.setAttribute(\"type\",\"text/css\"),W.setAttribute(\"id\",t),W.dataset.eurekasrc=document.currentScript?document.currentScript.src:\"\",b.insertAdjacentElement(\"beforeend\",W),65279===Z.charCodeAt(0)&&(Z=Z.substring(1)),W.styleSheet?W.styleSheet.cssText+=Z:W.appendChild(document.createTextNode(Z))}export{Z as css};\n//# sourceMappingURL=heading.scss.js.map\n","import{inheritsLoose as e,extends as t,objectWithoutPropertiesLoose as r}from\"../_virtual/_rollupPluginBabelHelpers.js\";import{PureComponent as s}from\"react\";import n from\"prop-types\";import i from\"classnames\";import\"./styles/heading.scss.js\";import{jsx as a}from\"react/jsx-runtime\";var o=[\"contextCls\",\"headingLvl\",\"children\"],l=function(s){function Heading(){for(var e,n=arguments.length,i=new Array(n),a=0;a<n;a++)i[a]=arguments[a];return(e=s.call.apply(s,[this].concat(i))||this).getControlledHeadingLevel=function(){var t=e.props.headingLvl,r=e.getIsHeadingLvlNum(),s=e.getIsHeadingLvlInRange();return r&&s?t:2},e.getProps=function(){var s=e.props;s.contextCls,s.headingLvl,s.children;var n=r(s,o);return t({},n)},e.baseCls=\"eureka-heading\",e}e(Heading,s);var n=Heading.prototype;return n.render=function(){var e=this.props.children,r=this.getControlledHeadingLevel();return a(\"h\"+r,t({},this.getProps(),{className:this.getContainerCls(),children:e}))},n.getContainerCls=function(){var e=this.props.contextCls;return i(this.baseCls,this.getModCls(),e)},n.getModCls=function(){var e,t=this.getControlledHeadingLevel();return(e={})[this.baseCls+\"--h1\"]=1===t,e[this.baseCls+\"--h2\"]=2===t,e[this.baseCls+\"--h3\"]=3===t,e[this.baseCls+\"--h4\"]=4===t,e[this.baseCls+\"--h5\"]=5===t,e[this.baseCls+\"--h6\"]=6===t,e},n.getIsHeadingLvlNum=function(){var e=this.props.headingLvl;return Number.isInteger(e)},n.getIsHeadingLvlInRange=function(){var e=this.props.headingLvl;return e>0&&e<7},Heading}(s);l.defaultProps={headingLvl:2},l.propTypes={contextCls:n.string,headingLvl:n.number};var h=l;export{h as default};\n//# sourceMappingURL=Heading.js.map\n","var a=\"eureka-icon\";export{a as default};\n//# sourceMappingURL=baseClsConst.js.map\n","var e=\".eureka-icon{line-height:1}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zdHlsZXMvc3ZnLXdyYXBwZXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUNJLGFBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIuZXVyZWthLWljb24ge1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xufVxuIl19 */\",t=\"eureka-css-@Green-Dot-Corporation/eureka-ui-media-1.2.6\",n=document.getElementById(t);if(n)n.textContent&&-1===n.textContent.indexOf(e)&&n.appendChild(document.createTextNode(e));else{var c=document.getElementsByTagName(\"head\")[0],a=document.createElement(\"style\");a.setAttribute(\"type\",\"text/css\"),a.setAttribute(\"id\",t),a.dataset.eurekasrc=document.currentScript?document.currentScript.src:\"\",c.insertAdjacentElement(\"beforeend\",a),65279===e.charCodeAt(0)&&(e=e.substring(1)),a.styleSheet?a.styleSheet.cssText+=e:a.appendChild(document.createTextNode(e))}export{e as css};\n//# sourceMappingURL=svg-wrapper.scss.js.map\n","import{objectWithoutPropertiesLoose as r,extends as t}from\"../_virtual/_rollupPluginBabelHelpers.js\";import\"react\";import e from\"prop-types\";import\"./styles/svg-wrapper.scss.js\";import{jsxs as s,jsx as i}from\"react/jsx-runtime\";var o=[\"title\",\"children\"],SVGWrapper=function(e){var p=e.title,l=e.children,a=r(e,o);return s(\"svg\",t({},a,{xmlns:\"http://www.w3.org/2000/svg\",children:[p&&i(\"title\",{children:p}),l]}))};SVGWrapper.propTypes={title:e.string};var p=SVGWrapper;export{p as default};\n//# sourceMappingURL=SVGWrapper.js.map\n","import{objectWithoutPropertiesLoose as t,extends as e}from\"../_virtual/_rollupPluginBabelHelpers.js\";import\"react\";import r from\"prop-types\";import o from\"classnames\";import i from\"./const/baseClsConst.js\";import{jsxs as s,jsx as l}from\"react/jsx-runtime\";import n from\"../packages/components/media/dist/esm/src/SVGWrapper.js\";var m=[\"contextCls\",\"title\",\"strokeWidth\",\"fill\",\"viewBox\",\"children\"],IconSVGWrapper=function(r){var p=r.contextCls,a=r.title,c=r.strokeWidth,d=r.fill,f=r.viewBox,h=r.children,u=t(r,m);return s(n,e({},u,{className:o(i,p),width:\"1em\",height:\"1em\",stroke:\"currentColor\",fill:d,strokeWidth:c,viewBox:f,children:[a&&l(\"title\",{children:a}),h]}))};IconSVGWrapper.defaultProps={fill:\"currentColor\",viewBox:\"0 0 24 24\",strokeWidth:0},IconSVGWrapper.propTypes={contextCls:r.string,fill:r.string,title:r.string,viewBox:r.string,strokeWidth:r.number};var p=IconSVGWrapper;export{p as default};\n//# sourceMappingURL=IconSVGWrapper.js.map\n","import{extends as C}from\"../_virtual/_rollupPluginBabelHelpers.js\";import\"react\";import r from\"prop-types\";import t from\"classnames\";import o from\"./IconSVGWrapper.js\";import e from\"./const/baseClsConst.js\";import{jsx as s}from\"react/jsx-runtime\";var EurekaTriangleAlert=function(r){var p=r.contextCls;return s(o,C({},r,{contextCls:t(e+\"-triangle-alert\",p),children:s(\"path\",{d:\"M12 16C11.8022 16 11.6088 16.0587 11.4444 16.1686C11.2799 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.1999 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8314 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5195 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4658 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64016 3.00354 9.37997 3.47003L1.37997 17.47C1.11076 17.924 0.96611 18.441 0.960612 18.9688C0.955114 19.4966 1.08897 20.0166 1.34865 20.4761C1.60834 20.9356 1.98467 21.3185 2.43965 21.5861C2.89463 21.8536 3.41215 21.9964 3.93997 22H20.06C20.592 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4233 20.9589 22.6889 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0861 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7244 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.93997C3.76108 19.9815 3.58507 19.935 3.43029 19.8453C3.2755 19.7556 3.14762 19.626 3.05997 19.47C2.9722 19.318 2.92599 19.1456 2.92599 18.97C2.92599 18.7945 2.9722 18.622 3.05997 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5854 3.97678 11.7659 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4715 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1053 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1053 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5195 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5195 8.10538 12.2652 8.00003 12 8.00003Z\"})}))};EurekaTriangleAlert.propTypes={contextCls:r.string};var p=EurekaTriangleAlert;export{p as default};\n//# sourceMappingURL=EurekaTriangleAlert.js.map\n","import{extends as C}from\"../_virtual/_rollupPluginBabelHelpers.js\";import\"react\";import r from\"prop-types\";import t from\"classnames\";import o from\"./IconSVGWrapper.js\";import e from\"./const/baseClsConst.js\";import{jsxs as s,jsx as p}from\"react/jsx-runtime\";var EurekaCircleCheck=function(r){var a=r.contextCls;return s(o,C({},r,{contextCls:t(e+\"-circle-check\",a),children:[p(\"path\",{d:\"M12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z\"}),p(\"path\",{d:\"M10.4301 13.09L14.7201 8.79C14.9074 8.60375 15.1609 8.49921 15.4251 8.49921C15.6892 8.49921 15.9427 8.60375 16.1301 8.79C16.2238 8.88296 16.2982 8.99356 16.3489 9.11542C16.3997 9.23728 16.4258 9.36799 16.4258 9.5C16.4258 9.63201 16.3997 9.76272 16.3489 9.88458C16.2982 10.0064 16.2238 10.117 16.1301 10.21L11.1301 15.21C10.9438 15.3947 10.6924 15.4989 10.4301 15.5C10.2984 15.5008 10.168 15.4755 10.0461 15.4258C9.92431 15.376 9.81349 15.3027 9.72005 15.21L7.37005 12.85C7.26537 12.7604 7.18035 12.65 7.12033 12.526C7.0603 12.4019 7.02657 12.2668 7.02125 12.1291C7.01593 11.9913 7.03914 11.854 7.08941 11.7257C7.13969 11.5974 7.21595 11.4808 7.3134 11.3833C7.41086 11.2859 7.5274 11.2096 7.65573 11.1594C7.78405 11.1091 7.92139 11.0859 8.0591 11.0912C8.19682 11.0965 8.33196 11.1302 8.45602 11.1903C8.58009 11.2503 8.6904 11.3353 8.78005 11.44L10.4301 13.09Z\"})]}))};EurekaCircleCheck.propTypes={contextCls:r.string};var a=EurekaCircleCheck;export{a as default};\n//# sourceMappingURL=EurekaCircleCheck.js.map\n","import React, { PureComponent, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport {\n EurekaCircleCheck,\n EurekaTriangleAlert,\n} from '@Green-Dot-Corporation/eureka-ui-icons';\nimport { Heading } from '@Green-Dot-Corporation/eureka-ui-typography';\nimport CalloutActions from './CalloutActions';\n\n// Constants\nimport VARIANTS from './const/variantsConst';\n\n// Styles\nimport './styles/callout.scss';\n\nconst { AFFIRMATIVE, ERROR } = VARIANTS;\n\nclass Callout extends PureComponent {\n static defaultProps = {\n headingLvl: 2,\n actions: [],\n shouldPadContent: true,\n onActionClick: () => Promise.resolve(),\n };\n\n static propTypes = {\n contextCls: PropTypes.string,\n variant: PropTypes.string,\n headingLvl: PropTypes.number,\n actions: PropTypes.array,\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n msg: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n shouldPadContent: PropTypes.bool,\n onActionClick: PropTypes.func,\n renderIcon: PropTypes.func,\n };\n\n render() {\n const {\n contextCls,\n actions,\n renderIcon,\n variant,\n title,\n msg,\n onActionClick,\n children,\n } = this.props;\n const shouldRenderIcon = !!renderIcon || !!variant;\n const shouldRenderActions = actions.length > 0;\n const modCls = this.getModCls();\n\n return (\n <div className={cx(this.baseCls, modCls, contextCls)}>\n <div className={`${this.baseCls}__inner`}>\n {!children && (\n <Fragment>\n {shouldRenderIcon && this.renderIcon()}\n {(title || msg) && this.renderMessaging()}\n {shouldRenderActions && (\n <CalloutActions\n actions={actions}\n onActionClick={onActionClick}\n />\n )}\n </Fragment>\n )}\n {children}\n </div>\n </div>\n );\n }\n\n renderIcon = () => {\n const { renderIcon } = this.props;\n\n return (\n <div className={`${this.baseCls}__icon-container`}>\n {renderIcon ? renderIcon() : this.renderStatusIcon()}\n </div>\n );\n };\n\n renderStatusIcon = (iconCls) => {\n const { variant } = this.props;\n // const iconCls = `${this.baseCls}__icon`;\n let Icon;\n\n switch (variant) {\n case VARIANTS.AFFIRMATIVE:\n Icon = EurekaCircleCheck;\n break;\n\n default:\n Icon = EurekaTriangleAlert;\n break;\n }\n\n return <Icon contextCls={iconCls} />;\n };\n\n renderMessaging = () => {\n const { title, msg, headingLvl } = this.props;\n\n return (\n <div className={`${this.baseCls}__text-container`}>\n {title && (\n <div className={`${this.baseCls}__title-container`}>\n <Heading\n contextCls={`${this.baseCls}__title`}\n headingLvl={headingLvl}\n >\n {title}\n </Heading>\n </div>\n )}\n {msg && (\n <div className={`${this.baseCls}__msg-container`}>\n <div className={`${this.baseCls}__msg-container-inner`}>\n {msg}\n </div>\n </div>\n )}\n </div>\n );\n };\n\n getModCls = () => {\n const { variant, shouldPadContent } = this.props;\n\n return {\n [`${this.baseCls}--affirmative`]: variant === AFFIRMATIVE,\n [`${this.baseCls}--error`]: variant === ERROR,\n [`${this.baseCls}--pad-content`]: shouldPadContent,\n };\n };\n\n baseCls = 'eureka-callout';\n}\n\nexport default Callout;\n","import { Component } from 'react';\nimport { Callout, VARIANTS } from '@Green-Dot-Corporation/eureka-ui-callouts';\nimport { setAppLayoutProps } from '../../services/appService';\n\nexport default class ErrorBoundary extends Component {\n static getDerivedStateFromError() {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n constructor(props) {\n super(props);\n const { children, ...rest } = this.props;\n setAppLayoutProps({ ...rest });\n }\n\n state = {};\n\n render() {\n const { children } = this.props;\n const { hasError } = this.state;\n\n if (hasError) {\n // You can render any custom fallback UI\n return (\n <Callout\n headingLvl={1}\n title=\"Something went wrong\"\n variant={VARIANTS.ERROR}\n />\n );\n }\n\n return children;\n }\n}\n","const WEBVIEW_UA = [\n 'WebView',\n '(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)',\n 'Android.*(wv|Version/[0-9].[0-9])',\n];\nconst WEB_VIEW_REGEXP = new RegExp(`(${WEBVIEW_UA.join('|')})`, 'ig');\nconst { userAgent } = window.navigator;\n\nconst isWebview = !!userAgent.match(WEB_VIEW_REGEXP);\n\nconst isTablet =\n /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(\n userAgent.toLowerCase(),\n );\n\nconst isMobile = /(mobi)/.test(userAgent.toLowerCase());\n\n// http://stackoverflow.com/questions/9038625/detect-if-device-is-ios\nconst isIOS =\n /(ipad|iphone|ipod)/.test(userAgent.toLowerCase()) && !window.MSStream;\n\nconst isAndroid = /(android)/.test(userAgent.toLowerCase());\n\nconst isIframe = window.top !== window.self;\n\nexport { userAgent, isTablet, isMobile, isIOS, isAndroid, isIframe, isWebview };\n","import { userAgent } from './deviceInfo';\n\nconst isSafari = (function isSafari() {\n if (userAgent) {\n const containsSafari = userAgent.toLowerCase().indexOf('safari') > -1;\n const containsChrome = userAgent.toLowerCase().indexOf('chrome') > -1;\n const containsChromium =\n userAgent.toLowerCase().indexOf('chromium') > -1;\n\n return containsSafari && !containsChrome && !containsChromium;\n }\n\n return false;\n})();\n\nconst isFirefox = (function isFirefox() {\n if (userAgent) {\n const containsFirefox = userAgent.toLowerCase().indexOf('firefox') > -1;\n const containsSeamonkey =\n userAgent.toLowerCase().indexOf('seamonkey') > -1;\n\n return containsFirefox && !containsSeamonkey;\n }\n\n return false;\n})();\n\nconst isChrome = (function isChrome() {\n if (userAgent) {\n const containsEdge =\n userAgent.indexOf('Edge') > -1 ||\n userAgent.toLowerCase().indexOf('edg/') > -1;\n const containsChrome = userAgent.toLowerCase().indexOf('chrome') > -1;\n\n // https://stackoverflow.com/questions/4565112/javascript-how-to-find-out-if-the-user-browser-is-chrome/13348618#13348618\n // Edge will return true for Safari and Chrome, so adding a check for !(Edge) will make this only return true for users on Chrome\n\n return containsChrome && !containsEdge;\n }\n\n return false;\n})();\n\nconst isEdge = (function isEdge() {\n if (userAgent) {\n const containsEdge = userAgent.toLowerCase().indexOf('edg/') > -1;\n\n return containsEdge;\n }\n\n return false;\n})();\n\nexport { isSafari, isFirefox, isChrome, isEdge };\n","const {\n userAgent,\n isTablet,\n isMobile,\n isIOS,\n isAndroid,\n isIframe,\n isWebview,\n} = require('./src/deviceInfo');\nconst {\n isSafari,\n isFirefox,\n isChrome,\n isEdge,\n} = require('./src/browserDetect');\n\nmodule.exports = {\n userAgent,\n isTablet,\n isMobile,\n isIOS,\n isAndroid,\n isIframe,\n isWebview,\n isSafari,\n isFirefox,\n isChrome,\n isEdge,\n};\n","import { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\n// Styles\nimport './styles/header.scss';\n\nexport default class Header extends PureComponent {\n static defaultProps = {\n appConfig: {},\n };\n\n static propTypes = {\n appConfig: PropTypes.object,\n };\n\n render() {\n const modCls = this.getModCls();\n\n return (\n <header className={cx(this.baseCls, modCls)}>\n {this.renderLogo()}\n </header>\n );\n }\n\n renderLogo = () => {\n const logoPath = this.getLogoPath();\n const brandName = this.getBrandName();\n\n return (\n <div className={`${this.baseCls}__logo-container`}>\n <img\n className={`${this.baseCls}__logo`}\n src={logoPath}\n alt={brandName ? `${brandName} logo` : 'logo'}\n />\n </div>\n );\n };\n\n getLogoPath = () => {\n const { appConfig } = this.props;\n const { resourcePath = '', branding = {} } = appConfig;\n const { mediaPath = '' } = branding;\n\n return `${resourcePath}${mediaPath}/logo.svg`;\n };\n\n getBrandName = () => {\n const { appConfig } = this.props;\n const { branding = {} } = appConfig;\n const { brandName = '' } = branding;\n\n return brandName;\n };\n\n getModCls = () => {\n const { appConfig } = this.props;\n // TODO: validate this method to determine authenticated flow\n const { user } = appConfig;\n\n return {\n [`${this.baseCls}--post-login`]: !!user,\n };\n };\n\n baseCls = 'blue-sky-header';\n}\n","import { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport deviceInfo from '@Green-Dot-Corporation/eureka-lib-device-info-utils';\nimport Header from './Header';\n\n// Styles\nimport './styles/app-layout.scss';\n\nconst { isWebview } = deviceInfo;\nclass AppLayout extends Component {\n static defaultProps = {\n appConfig: {},\n };\n\n static propTypes = {\n contextCls: PropTypes.string,\n appConfig: PropTypes.object,\n };\n\n render() {\n const { contextCls, appConfig } = this.props;\n const shouldHideHeader = this.shouldHideHeader();\n const baseClass =\n this.baseCls +\n (appConfig?.branding?.isInDarkMode ? '__dark-mode' : '');\n\n return (\n <div className={cx(this.baseCls, contextCls, baseClass)}>\n {!shouldHideHeader && this.renderHeader()}\n {this.renderMain()}\n </div>\n );\n }\n\n renderHeader = () => {\n const { appConfig } = this.props;\n\n return (\n <div className={`${this.baseCls}__header-container`}>\n <Header appConfig={appConfig} />\n </div>\n );\n };\n\n renderMain = () => {\n const { children } = this.props;\n\n return (\n <main\n className={`${this.baseCls}__main-container`}\n aria-atomic\n aria-live=\"polite\"\n >\n {children}\n </main>\n );\n };\n\n shouldHideHeader = () => {\n return isWebview || window.location.search.includes('isMobile=true');\n };\n\n baseCls = 'blue-sky-app-layout';\n}\n\nexport default AppLayout;\n","import { PureComponent } from 'react';\n\nexport default class PageNotFound extends PureComponent {\n render() {\n return <h1>Page Not Found</h1>;\n }\n}\n","export const buildAppsflyerURL = (url, client) => {\n const appsflyerStr = client?.appsflyer || '{}';\n let appsflyerJson;\n\n try {\n appsflyerJson = JSON.parse(appsflyerStr);\n } catch (error) {\n appsflyerJson = {};\n }\n\n const mediaSource = appsflyerJson.media_source || '';\n const campaign = appsflyerJson.campaign || '';\n const afAdset = appsflyerJson.af_adset || '';\n\n const isSDKParam = 'isMobileSDK=true';\n const queryParams = [];\n\n if (mediaSource) {\n queryParams.push(`media_source=${mediaSource}`);\n }\n\n if (campaign) {\n queryParams.push(`campaign=${campaign}`);\n }\n\n if (afAdset) {\n queryParams.push(`af_adset=${afAdset}`);\n }\n\n const queryString = queryParams.join('&');\n\n return `${url}?${isSDKParam}${queryString ? `&${queryString}` : ''}`;\n};\n\nexport default {};\n","import { post } from '@Green-Dot-Corporation/eureka-lib-fetch-utils';\nimport { v4 as uuidv4 } from 'uuid';\nimport { buildAppsflyerURL } from './appsflyerService';\nimport { REQUEST_ID_HEADER } from '../const/appConst';\n\nexport const SDKFLOW = {\n ACTIVATECARD: 'activatecard',\n ENROLLMENT: 'enrollment',\n FORGOTUSERNAME: 'forgotusername',\n FORGOTPASSWORD: 'forgotpassword',\n};\n\n/**\n * This function invokes the redeem token API in the gateway.\n * The request includes a one-time token in the header.\n * The response is then converted to adhere to our naming convention.\n * @returns {Object} An object containing URL and payload, determining the next URL to navigate to.\n */\nexport const redeemToken = async (token) => {\n const requestOptions = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n [REQUEST_ID_HEADER]: uuidv4(),\n },\n };\n const url = `${window.location.origin}/api/v1/auth/token/webflow/redeem`;\n\n try {\n const response = await post(url, requestOptions);\n\n const {\n url: redirectUrl,\n flow,\n payload: {\n server: {\n applicationId,\n programCode,\n productCode,\n token: accessToken,\n platform,\n deviceType,\n },\n client,\n },\n } = response;\n\n let completeUrl = redirectUrl;\n\n if (flow === SDKFLOW.ACTIVATECARD || flow === SDKFLOW.ENROLLMENT) {\n completeUrl = buildAppsflyerURL(redirectUrl, client);\n }\n\n const extractedData = {\n applicationId,\n accessToken,\n programCode,\n productCode,\n platform,\n deviceType,\n client,\n };\n\n sessionStorage.setItem(\n 'mobileSDKpayload',\n JSON.stringify(extractedData),\n );\n\n // FEW-8359: Mobile data migration test, need remove below code after testing\n const urlParams = new URLSearchParams(window.location.search);\n const dataMigration = urlParams.get('datamigration');\n\n if (dataMigration) {\n // Check if the URL already has query parameters\n const separator = completeUrl.includes('?') ? '&' : '?';\n completeUrl = `${completeUrl}${separator}datamigration=${encodeURIComponent(\n dataMigration,\n )}`;\n }\n\n return completeUrl;\n } catch (error) {\n const errorResponse = new Error(\n 'An error occurred in redeemToken method.',\n );\n throw errorResponse;\n }\n};\n\nexport const exitWebview = () => {\n try {\n // pass empty object when no payload\n const json = {};\n const payload = JSON.stringify(json);\n\n if (window.app?.exitWebview) {\n window.app.exitWebview(payload);\n } else if (window.webkit?.messageHandlers?.exitWebview) {\n window.webkit.messageHandlers.exitWebview.postMessage(payload);\n } else {\n console.log('No exitWebview method.');\n throw new Error();\n }\n } catch (error) {\n console.log('An error occurred in exitWebview method.', error);\n throw error;\n }\n};\n\nexport default {};\n","import { PureComponent } from 'react';\nimport { LoadingFlow } from '@Green-Dot-Corporation/eureka-ui-loading';\nimport { exitWebview, redeemToken } from '../services/sdkLandingService';\n\nexport default class SDKLanding extends PureComponent {\n state = {\n isLoading: true,\n hasError: false,\n errorInfo: undefined,\n };\n\n render() {\n const { isLoading, hasError, errorInfo } = this.state;\n\n if (hasError) {\n throw new Error(errorInfo);\n }\n\n return <LoadingFlow isLoading={isLoading} />;\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n fetchData = async () => {\n const urlParams = new URLSearchParams(window.location.search);\n const token = urlParams.get('token');\n\n try {\n if (token) {\n try {\n const redirectUrl = await redeemToken(token);\n window.location.href = redirectUrl;\n } catch (error) {\n const { errorCode } = error ?? {};\n console.log(errorCode);\n exitWebview();\n }\n } else {\n exitWebview();\n }\n } catch (error) {\n const updatedState = {\n isLoading: false,\n hasError: true,\n errorInfo: error,\n };\n this.setState(updatedState);\n }\n };\n}\n","const removeSlash = (path, startingPath) => {\n let modifiedPath = path;\n\n if (path) {\n if (modifiedPath.endsWith('/')) {\n modifiedPath = modifiedPath.slice(0, -1);\n }\n\n if (!startingPath && modifiedPath.startsWith('/')) {\n modifiedPath = modifiedPath.slice(1);\n }\n }\n\n return modifiedPath;\n};\nconst buildURL = (appConfig, subpathProp, resourcePath) => {\n const { resourcePath: resourcePathPrefix, branding } = appConfig ?? {};\n const { [subpathProp]: subpath } = branding ?? {};\n\n let path = resourcePath;\n\n if (resourcePathPrefix && subpath) {\n path = `${removeSlash(resourcePathPrefix, true)}/${removeSlash(\n subpath,\n )}/${removeSlash(resourcePath)}`;\n }\n\n return path;\n};\n\nexport const buildTokenURL = (appConfig, resourcePath) => {\n return buildURL(appConfig, 'tokenPath', resourcePath);\n};\n\nexport const buildMediaURL = (appConfig, resourcePath) => {\n return buildURL(appConfig, 'mediaPath', resourcePath);\n};\n","export const eventHandler = (eventName, options) => {\n window.dataLayer = window.dataLayer ?? [];\n const {\n eventOptions,\n eventType,\n pageName,\n target,\n accountIdentifier,\n productCode,\n ...rest\n } = options ?? {};\n const { eventName: evtName, ...restOptions } = eventOptions ?? {};\n const overvideOptions = {};\n\n if (accountIdentifier && productCode) {\n overvideOptions.gd_userID = accountIdentifier;\n overvideOptions.gd_cardPartner = productCode;\n }\n\n window.dataLayer.push({\n ...rest,\n ...restOptions,\n ...overvideOptions,\n event: eventName,\n });\n\n return eventName;\n};\n\nexport default {};\n","const augmentPageInfo = (page, options) => {\n const { pageInfo } = page;\n const { pageName, channel, errorCode } = options;\n const currentPageInfo = { pageName, channel, errorCode };\n\n if (!pageName) {\n delete currentPageInfo.pageName;\n }\n\n if (!channel) {\n delete currentPageInfo.channel;\n }\n\n // eslint-disable-next-line no-param-reassign\n page.pageInfo = {\n ...pageInfo,\n pageName: document.title,\n ...currentPageInfo,\n };\n};\n\nconst augmentUserInfo = (user, options) => {\n const [info] = user;\n const { profile } = info;\n const [userProfile] = profile;\n const { profileInfo } = userProfile;\n\n const { accountIdentifier } = options;\n const currentProfile = { account_id: accountIdentifier };\n\n if (!accountIdentifier) {\n delete currentProfile.account_id;\n }\n\n userProfile.profileInfo = {\n ...profileInfo,\n ...currentProfile,\n };\n};\n\nconst augmentImpactInfo = (impact, options) => {\n const { impactinfo } = impact;\n\n // eslint-disable-next-line no-param-reassign\n impact.impactinfo = {\n ...impactinfo,\n ...options,\n };\n};\n\nconst augmentEventOptions = (data, options) => {\n const { eventOptions } = options;\n const { eventName, ...rest } = eventOptions ?? { eventName: '' };\n\n if (!eventName) return;\n // eslint-disable-next-line no-param-reassign\n data[eventName] = {\n ...rest,\n };\n};\n\nconst preloadedEvents = [];\n\nexport const eventHandler = (eventName, options) => {\n try {\n const scope = window;\n const { _satellite: adobe } = scope;\n\n if (adobe) {\n const data = options ?? {};\n augmentPageInfo(scope.digitalData.page, data);\n augmentUserInfo(scope.digitalData.user, data);\n augmentImpactInfo(scope.digitalData.impact, data);\n augmentEventOptions(scope.digitalData, data);\n\n while (preloadedEvents.length) {\n adobe.track(preloadedEvents[0]);\n\n preloadedEvents.shift();\n }\n\n adobe.track(eventName);\n } else {\n preloadedEvents.push(eventName);\n }\n } catch (error) {\n console.debug('Adobe event handler failed', error);\n }\n\n return eventName;\n};\n\nexport const initialize = (appConfig) => {\n window.digitalData = {\n page: {\n pageInfo: {\n brand: String(appConfig.programCode).toLowerCase(),\n site: 'secure',\n channel: 'enroll',\n programCode: String(appConfig.programCode).toLowerCase(),\n productCode: String(appConfig.productCode).toLowerCase(),\n siteRendered: 'responsive',\n modalName: '',\n },\n },\n user: [\n {\n profile: [\n {\n profileInfo: {\n custId: '',\n status: 'logged_out',\n personID: '',\n AccountReferenceID: '',\n email: '',\n account_id: '',\n reg_status: '',\n cardtype: '',\n },\n },\n ],\n },\n ],\n impact: {\n impactinfo: {\n customerID: '',\n orderId: '',\n },\n },\n };\n\n return eventHandler;\n};\n\nexport const store = (options) => {\n const scope = window;\n const data = options ?? {};\n augmentPageInfo(scope.digitalData.page, data);\n augmentUserInfo(scope.digitalData.user, data);\n augmentImpactInfo(scope.digitalData.impact, data);\n augmentEventOptions(scope.digitalData, data);\n};\nexport default {};\n","import { eventHandler as gtmEventHandler } from './GoogleGtmAnalyticsService';\nimport {\n eventHandler as adobeEventHandler,\n store as adobeStore,\n} from './AdobeAnalyticsService';\n\nlet handlers = [];\n\nwindow.blueSkyAnalytics = () => {};\n\nexport const handleRegisterHandler = (eventHandler) => {\n if (!handlers.includes(eventHandler)) {\n handlers.push(eventHandler);\n }\n};\n\nexport const handleEvent = (eventName, options) => {\n try {\n handlers.forEach((handler) => handler(eventName, options));\n } catch (error) {\n console.debug('blueSkyEventHandler faild', error);\n }\n};\n\nexport const cleanEventHandlers = () => {\n handlers = [];\n window.blueSkyAnalytics = undefined;\n};\n\nexport const blueSkyEventHandler = (eventName, options) => {\n try {\n gtmEventHandler(eventName, options ?? {});\n // Adobe parameters require special processing\n const adoceOptions = {\n ...options,\n eventOptions: {\n ...options,\n eventName,\n },\n };\n adobeEventHandler(eventName, adoceOptions ?? {});\n } catch (error) {\n console.debug('blueSkyEventHandler faild', error);\n }\n};\n\nexport const registerGlobalAnalyticsIntance = () => {\n window.blueSkyAnalytics = blueSkyEventHandler;\n};\n\nexport const handleStoreEvent = (options) => {\n adobeStore(options);\n};\n\nexport default {};\n","import React, { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { blueSkyEventHandler } from '../analytics/services/AnalyticsService';\n\nconst RouteChangeListener = () => {\n const location = useLocation();\n\n useEffect(() => {\n blueSkyEventHandler('page view');\n }, [location]);\n\n return <div style={{ display: 'none' }} />;\n};\n\nexport default RouteChangeListener;\n","import { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from '@Green-Dot-Corporation/eureka-lib-router-utils';\nimport Cookies from 'js-cookie';\nimport { Routes, Route, Navigate } from 'react-router-dom';\nimport { Helmet } from 'react-helmet';\nimport FeatureLoader from './FeatureLoader';\nimport ErrorBoundary from '../errors/ErrorBoundary';\nimport DefaultLayout from '../layout/AppLayout';\nimport PageNotFound from '../../pages/PageNotFound';\nimport SDKLanding from '../../pages/SDKLanding';\nimport { isAuthenticated } from '../../services/appService';\nimport { buildMediaURL } from '../../utils/urlUtils';\nimport { DO_NOT_STORE_COOKIE_URLS } from '../../const/appConst';\nimport RouteChangeListener from '../layout/RouteChangeListener';\n\nconst DESIRED_URL_COOKIE_NAME = 'desired_url';\n// TODO: Confirm if this validates a route is within enabled routes\nconst isWithinRoutes = (absoluteUrl, features = []) => {\n const [feature] = features.filter(\n ({ route }) => absoluteUrl.indexOf(route) !== -1,\n );\n\n return !!feature;\n};\n\nclass AppLoader extends PureComponent {\n static getDerivedStateFromProps(props, state) {\n const { initialURL, currentPathname } = state;\n const { location = {} } = props;\n const { pathname } = location;\n\n if (initialURL && pathname !== currentPathname) {\n return { initialURL: '' };\n }\n\n if (initialURL && pathname === initialURL) {\n return { initialURL: '' };\n }\n\n // react shows warning if we return undefined\n return null; // eslint-disable-line no-null/no-null\n }\n\n static defaultProps = {\n appConfig: {},\n };\n\n static propTypes = {\n appConfig: PropTypes.object,\n location: PropTypes.object,\n layoutModule: PropTypes.object,\n };\n\n constructor(props) {\n super(props);\n\n const { location = {} } = props;\n const { pathname } = location;\n const enabledFeatures = this.getEnabledFeatures();\n const hiddenFeatures = this.getFilteredFeatures(enabledFeatures, true);\n const routedFeatures = this.getFilteredFeatures(enabledFeatures);\n const initialURL = this.handleDesiredURL(routedFeatures);\n\n this.state = {\n hiddenFeatures,\n routedFeatures,\n currentPathname: location.pathname,\n };\n\n if (initialURL && pathname === '/') {\n this.state.initialURL = initialURL;\n }\n }\n\n render() {\n const { appConfig, layoutModule: CustomLayout } = this.props;\n const { initialURL } = this.state;\n\n const AppLayout = CustomLayout || DefaultLayout;\n\n return (\n <AppLayout appConfig={appConfig}>\n <ErrorBoundary>\n <RouteChangeListener />\n {!initialURL && this.renderFeatures()}\n {initialURL && <Navigate to={initialURL} replace />}\n </ErrorBoundary>\n </AppLayout>\n );\n }\n\n renderFeatures() {\n const { appConfig } = this.props;\n const { hiddenFeatures, routedFeatures } = this.state;\n\n return hiddenFeatures\n .map((feature) => (\n <FeatureLoader\n key={feature.id || Date.now()}\n feature={feature}\n appConfig={appConfig}\n isHidden\n />\n ))\n .concat(\n <Routes key=\"bluesky-routes\">\n {routedFeatures.map((feature) => {\n let { route } = feature;\n\n if (route && route.endsWith('/')) {\n route = route.slice(0, -1);\n }\n\n return (\n <Route\n key={route}\n path={`${route}/*`}\n element={this.renderFeatureLoader(feature)}\n />\n );\n })}\n <Route path=\"*\" element={<PageNotFound />} />\n <Route path=\"sdk-landing\" element={<SDKLanding />} />\n </Routes>,\n );\n }\n\n renderFeatureLoader = (feature) => {\n const { appConfig } = this.props;\n\n return (\n <>\n <Helmet>\n <title>{feature.title}</title>\n <link\n rel=\"icon\"\n href={buildMediaURL(appConfig, '/favicon.ico')}\n />\n </Helmet>\n <FeatureLoader feature={feature} appConfig={appConfig} />\n </>\n );\n };\n\n handleDesiredURL = (routedFeatures) => {\n const isAuth = isAuthenticated();\n\n const destinationFeature = this.getDestinationFeature(routedFeatures);\n let { route: destination = '' } = destinationFeature;\n\n if (isAuth) {\n // navigate user to this url after authenticated\n const url = Cookies.get(DESIRED_URL_COOKIE_NAME);\n Cookies.remove(DESIRED_URL_COOKIE_NAME);\n\n if (url) {\n destination = url;\n }\n } else {\n // if current url requires auth, then save it in cookies to be redirected after auth\n const currentUrl = window.location.href;\n const withinRoutes = isWithinRoutes(currentUrl, routedFeatures);\n const urlObject = new URL(currentUrl);\n const pathName = urlObject.pathname;\n\n /* istanbul ignore else */\n if (!withinRoutes && !DO_NOT_STORE_COOKIE_URLS[pathName]) {\n Cookies.set(DESIRED_URL_COOKIE_NAME, currentUrl);\n }\n\n const queryParam = window.location.search;\n destination = `${destination}${queryParam}`;\n }\n\n return destination;\n };\n\n getEnabledFeatures = () => {\n const {\n appConfig: { featureConfig = {} },\n } = this.props;\n\n return Object.keys(featureConfig)\n .sort((a, b) => a - b)\n .map((id) =>\n featureConfig[id].moduleSrc\n ? { ...featureConfig[id], id }\n : undefined,\n )\n .filter((f) => {\n return !!f && f.id !== 'layout';\n });\n };\n\n /* istanbul ignore next */\n getFilteredFeatures = (features = [], isHiddenFeature = false) => {\n if (isHiddenFeature) {\n // Hidden features have no routes\n return features.filter((feature) => !feature.route);\n }\n\n return features.filter((feature) => !!feature.route);\n };\n\n /* istanbul ignore next */\n getDestinationFeature = (features = []) => {\n const { appConfig } = this.props;\n const { defaultFeature } = appConfig;\n\n return (\n features.filter(({ id }) => defaultFeature === id)[0] ||\n features[0] ||\n {}\n );\n };\n}\n\nexport default withRouter(AppLoader);\n","import { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nexport const VIEW_EVENT = 'data-ae-view';\nexport const ACTION_EVENT = 'data-ae-action';\nexport const OPTION_EVENT = 'data-ae-options';\nexport const SHOULD_SEND_VIEW_EVENT = 'data-ae-shouldSendEvent';\n\nconst viewHandlers = [];\nconst actionHandlers = [];\nconst handleEvent = (eventType, eventValue, target, option) => {\n switch (eventType) {\n case VIEW_EVENT:\n viewHandlers.forEach((handler) => {\n const { eventName } = option;\n handler(eventName ?? eventValue, {\n eventType,\n pageName: eventValue,\n eventOptions: option,\n target,\n });\n });\n break;\n case ACTION_EVENT:\n actionHandlers.forEach((handler) =>\n handler(eventValue, { eventType, target }),\n );\n break;\n default:\n break;\n }\n};\n\nconst handleTrackingEvent = (target) => {\n const eventName = target.getAttribute(VIEW_EVENT);\n const eventData = target.getAttribute(OPTION_EVENT);\n const shouldSendEvent = !(\n target.getAttribute(SHOULD_SEND_VIEW_EVENT) === 'false'\n );\n\n if (!shouldSendEvent) return;\n\n let data = {};\n\n if (eventData) {\n try {\n data = JSON.parse(eventData);\n } catch (e) {\n console.error('error parsing event data', e);\n }\n }\n\n if (eventName) {\n handleEvent(VIEW_EVENT, eventName, target, data);\n }\n};\n\nlet observer;\nexport const registerViewEventListener = (eventHandler, root = document) => {\n if (!observer) {\n observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n const { addedNodes } = mutation;\n const [target] = addedNodes;\n\n if (target && target.querySelectorAll) {\n const elements = target.querySelectorAll(`[${VIEW_EVENT}]`);\n\n elements.forEach((el) => {\n handleTrackingEvent(el);\n });\n\n if (target.getAttribute) {\n handleTrackingEvent(target);\n }\n }\n });\n });\n\n observer.observe(root, { childList: true, subtree: true });\n }\n\n if (!viewHandlers.includes(eventHandler)) {\n viewHandlers.push(eventHandler);\n }\n\n return observer;\n};\n\nlet isListenerInitialized;\nexport const registerActionEventListener = (eventHandler, root = document) => {\n if (!isListenerInitialized) {\n isListenerInitialized = true;\n\n root.addEventListener('pointerdown', (ev) => {\n const { target } = ev;\n const eventValue = target.getAttribute(ACTION_EVENT);\n\n if (eventValue) {\n handleEvent(ACTION_EVENT, eventValue, target);\n }\n });\n }\n\n if (!actionHandlers.includes(eventHandler)) {\n actionHandlers.push(eventHandler);\n }\n\n return isListenerInitialized;\n};\n\nconst AnalyticObserver = (props) => {\n const { onEvent } = props;\n\n useEffect(() => {\n registerActionEventListener(onEvent);\n registerViewEventListener(onEvent);\n\n return () => {\n actionHandlers.splice(actionHandlers.indexOf(onEvent), 1);\n viewHandlers.splice(viewHandlers.indexOf(onEvent), 1);\n };\n }, [onEvent]);\n\n return (\n <div style={{ display: 'none' }} data-analytic-observer={Date.now()} />\n );\n};\n\nAnalyticObserver.propTypes = {\n onEvent: PropTypes.func.isRequired,\n};\n\nexport default AnalyticObserver;\n","import { useEffect } from 'react';\n\nconst useScript = (url) => {\n useEffect(() => {\n const script = document.createElement('script');\n script.type = 'application/javascript';\n script.src = url;\n script.async = true;\n document.body.appendChild(script);\n\n return () => {\n document.body.removeChild(script);\n };\n }, [url]);\n};\n\nexport default useScript;\n","import { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useScript } from '@Green-Dot-Corporation/web-app-utils-hooks';\nimport { initialize } from './services/AdobeAnalyticsService';\n\nlet adobeLaunchEventHandler;\nconst AdobeLaunch = ({ appConfig, url, onInitialized }) => {\n useScript(url);\n\n useEffect(() => {\n if (!adobeLaunchEventHandler) {\n adobeLaunchEventHandler = initialize(appConfig, window);\n }\n\n onInitialized(adobeLaunchEventHandler);\n }, [appConfig, onInitialized]);\n\n return <div style={{ display: 'none' }} data-adobe-launch={url} />;\n};\n\nAdobeLaunch.propTypes = {\n url: PropTypes.string.isRequired,\n appConfig: PropTypes.object.isRequired,\n onInitialized: PropTypes.func.isRequired,\n};\n\nexport default AdobeLaunch;\n","import PropTypes from 'prop-types';\nimport { useScript } from '@Green-Dot-Corporation/web-app-utils-hooks';\n\nconst GoogleTagManager = ({ url }) => {\n useScript(url);\n\n return <div style={{ display: 'none' }} data-gtm={url} />;\n};\n\nGoogleTagManager.propTypes = {\n url: PropTypes.string.isRequired,\n};\n\nexport default GoogleTagManager;\n","export const GTM_SITE_KEY = '{SITE_KEY}';\n\nexport const GTM_SCRIPT = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\nnew Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\nj=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n})(window,document,'script','dataLayer','${GTM_SITE_KEY}');`;\n\nexport const GTM_NO_SCRIPT_SRC = `https://www.googletagmanager.com/ns.html?id=${GTM_SITE_KEY}`;\n\nexport default {};\n","import { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n GTM_SITE_KEY,\n GTM_SCRIPT,\n GTM_NO_SCRIPT_SRC,\n} from '../../const/googleGtmConst';\nimport { eventHandler } from './services/GoogleGtmAnalyticsService';\n\nconst replaceText = (scriptText, sitekey) => {\n return scriptText.replace(GTM_SITE_KEY, sitekey);\n};\n\nconst useScript = (script) => {\n useEffect(() => {\n const element = document.createElement('script');\n element.innerHTML = script;\n document.head.append(element);\n\n return () => {\n document.head.removeChild(element);\n };\n }, [script]);\n};\n\nconst useNoScriptWithSrc = (src) => {\n useEffect(() => {\n const noScriptEle = document.createElement('noscript');\n const iframe = document.createElement('iframe');\n iframe.src = src;\n iframe.height = 0;\n iframe.width = 0;\n iframe.style.display = 'none';\n iframe.style.visibility = 'hidden';\n noScriptEle.appendChild(iframe);\n const body = document.getElementsByTagName('body')[0];\n body.insertBefore(noScriptEle, body.firstChild);\n\n return () => {\n document.body.removeChild(noScriptEle);\n };\n }, [src]);\n};\n\nlet gtmEventHandler;\nconst GoogleGtmManager = ({ sitekey, onInitialized }) => {\n const Script = replaceText(GTM_SCRIPT, sitekey);\n const noScriptSrc = replaceText(GTM_NO_SCRIPT_SRC, sitekey);\n\n useScript(Script);\n useNoScriptWithSrc(noScriptSrc);\n\n useEffect(() => {\n if (!gtmEventHandler) {\n gtmEventHandler = eventHandler;\n }\n\n onInitialized(gtmEventHandler);\n }, [onInitialized]);\n};\n\nGoogleGtmManager.propTypes = {\n sitekey: PropTypes.string.isRequired,\n};\n\nexport default GoogleGtmManager;\n","import { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\nimport AnalyticObserver from './AnalyticObserver';\nimport AdobeLaunch from './AdobeLaunch';\nimport GoogleTagManager from './GoogleTagManager';\nimport GoogleGtmManager from './GoogleGtmManager';\nimport {\n cleanEventHandlers,\n handleEvent,\n handleRegisterHandler,\n registerGlobalAnalyticsIntance,\n} from './services/AnalyticsService';\n\nexport default class AnalyticEngine extends PureComponent {\n static propTypes = {\n appConfig: PropTypes.object,\n };\n\n render() {\n const { appConfig = {} } = this.props;\n const { featureConfig = {} } = appConfig;\n const {\n adobeLaunch: { url: alUrl = '', ...alRest } = {},\n googleTagManager: { url: gtmUrl = '', ...gtmRest } = {},\n googleGtm: { siteKey = '', ...googleGtmRest } = {},\n } = featureConfig;\n\n return (\n <>\n <AnalyticObserver onEvent={handleEvent} />\n {alUrl && (\n <AdobeLaunch\n url={alUrl}\n {...alRest}\n appConfig={appConfig}\n onInitialized={handleRegisterHandler}\n />\n )}\n {gtmUrl && <GoogleTagManager url={gtmUrl} {...gtmRest} />}\n {siteKey && (\n <GoogleGtmManager\n sitekey={siteKey}\n {...googleGtmRest}\n onInitialized={handleRegisterHandler}\n />\n )}\n </>\n );\n }\n\n componentDidMount() {\n registerGlobalAnalyticsIntance();\n }\n\n componentWillUnmount() {\n cleanEventHandlers();\n }\n}\n","/* eslint-disable */\nexport const kickstartForter = (siteId) => {\n var merchantConfig = { csp: false };\n function t(t, e) {\n for (var n = t.split(''), r = 0; r < n.length; ++r)\n n[r] = String.fromCharCode(n[r].charCodeAt(0) + e);\n return n.join('');\n }\n function e(e) {\n return t(e, -_).replace(/%SN%/g, siteId);\n }\n function n(t) {\n try {\n if (\n 'number' == typeof t &&\n window.location &&\n window.location.pathname\n ) {\n for (\n var e = window.location.pathname.split('/'), n = [], r = 0;\n r <= Math.min(e.length - 1, Math.abs(t));\n r++\n )\n n.push(e[r]);\n return n.join('/') || '/';\n }\n } catch (t) {}\n return '/';\n }\n function r(t) {\n try {\n (Q.ex = t),\n o() && -1 === Q.ex.indexOf(X.uB) && (Q.ex += X.uB),\n i() && -1 === Q.ex.indexOf(X.uBr) && (Q.ex += X.uBr),\n a() && -1 === Q.ex.indexOf(X.nIL) && (Q.ex += X.nIL),\n window.ftr__snp_cwc || (Q.ex += X.s),\n B(Q);\n } catch (t) {}\n }\n function o() {\n var t = 'no' + 'op' + 'fn',\n e = 'g' + 'a',\n n = 'n' + 'ame';\n return window[e] && window[e][n] === t;\n }\n function i() {\n return !(\n !navigator.brave || 'function' != typeof navigator.brave.isBrave\n );\n }\n function a() {\n return document.currentScript && document.currentScript.src;\n }\n function c(t, e) {\n function n(o) {\n try {\n o.blockedURI === t && (e(), document.removeEventListener(r, n));\n } catch (t) {\n document.removeEventListener(r, n);\n }\n }\n var r = 'securitypolicyviolation';\n document.addEventListener(r, n),\n setTimeout(function () {\n document.removeEventListener(r, n);\n }, 2 * 60 * 1e3);\n }\n function u(t, e, n, r) {\n var o = !1;\n (t = 'https://' + t),\n c(t, function () {\n r(!0), (o = !0);\n });\n var i = document.createElement('script');\n (i.onerror = function () {\n if (!o)\n try {\n r(!1), (o = !0);\n } catch (t) {}\n }),\n (i.onload = n),\n (i.type = 'text/javascript'),\n (i.id = 'ftr__script'),\n (i.async = !0),\n (i.src = t);\n var a = document.getElementsByTagName('script')[0];\n a.parentNode.insertBefore(i, a);\n }\n function f() {\n tt(X.uDF), setTimeout(w, N, X.uDF);\n }\n function s(t, e, n, r) {\n var o = !1,\n i = new XMLHttpRequest();\n if (\n (c('https:' + t, function () {\n n(new Error('CSP Violation'), !0), (o = !0);\n }),\n '//' === t.slice(0, 2) && (t = 'https:' + t),\n 'withCredentials' in i)\n )\n i.open('GET', t, !0);\n else {\n if ('undefined' == typeof XDomainRequest) return;\n (i = new XDomainRequest()), i.open('GET', t);\n }\n Object.keys(r).forEach(function (t) {\n i.setRequestHeader(t, r[t]);\n }),\n (i.onload = function () {\n 'function' == typeof e && e(i);\n }),\n (i.onerror = function (t) {\n if ('function' == typeof n && !o)\n try {\n n(t, !1), (o = !0);\n } catch (t) {}\n }),\n (i.onprogress = function () {}),\n (i.ontimeout = function () {\n 'function' == typeof n && n('tim' + 'eo' + 'ut', !1);\n }),\n setTimeout(function () {\n i.send();\n }, 0);\n }\n function d(t, siteId, e) {\n function n(t) {\n var e = t.toString(16);\n return e.length % 2 ? '0' + e : e;\n }\n function r(t) {\n if (t <= 0) return '';\n for (var e = '0123456789abcdef', n = '', r = 0; r < t; r++)\n n += e[Math.floor(Math.random() * e.length)];\n return n;\n }\n function o(t) {\n for (var e = '', r = 0; r < t.length; r++) e += n(t.charCodeAt(r));\n return e;\n }\n function i(t) {\n for (var e = t.split(''), n = 0; n < e.length; ++n)\n e[n] = String.fromCharCode(255 ^ e[n].charCodeAt(0));\n return e.join('');\n }\n e = e ? '1' : '0';\n var a = [];\n return (\n a.push(t),\n a.push(siteId),\n a.push(e),\n (function (t) {\n var e = 40,\n n = '';\n return (\n t.length < e / 2 && (n = ',' + r(e / 2 - t.length - 1)),\n o(i(t + n))\n );\n })(a.join(','))\n );\n }\n function h() {\n function t() {\n F && (tt(X.dUAL), setTimeout(w, N, X.dUAL));\n }\n function e(t, e) {\n r(e ? X.uAS + X.uF + X.cP : X.uAS + X.uF),\n (F = 'F' + 'T' + 'R' + 'A' + 'U'),\n setTimeout(w, N, X.uAS);\n }\n window.ftr__fdad(t, e);\n }\n function l() {\n function t() {\n F && setTimeout(w, N, X.uDAD);\n }\n function e(t, e) {\n r(e ? X.uDS + X.uF + X.cP : X.uDS + X.uF),\n (F = 'F' + 'T' + 'R' + 'A' + 'U'),\n setTimeout(w, N, X.uDS);\n }\n window.ftr__radd(t, e);\n }\n function w(t) {\n try {\n var e;\n switch (t) {\n case X.uFP:\n e = O;\n break;\n case X.uDF:\n e = M;\n break;\n default:\n e = F;\n }\n if (!e) return;\n var n = function () {\n try {\n et(), r(t + X.uS);\n } catch (t) {}\n },\n o = function (e) {\n try {\n et(),\n (Q.td = 1 * new Date() - Q.ts),\n r(e ? t + X.uF + X.cP : t + X.uF),\n t === X.uFP && f(),\n t === X.uDF && (I ? l() : h()),\n (t !== X.uAS && t !== X.dUAL) || I || l(),\n (t !== X.uDS && t !== X.uDAD) || (I && h());\n } catch (t) {\n r(X.eUoe);\n }\n };\n if (e === 'F' + 'T' + 'R' + 'A' + 'U') return void o();\n u(e, void 0, n, o);\n } catch (e) {\n r(t + X.eTlu);\n }\n }\n var g = '22ge:t7mj8unkn;1forxgiurqw1qhw2vwdwxv',\n v = 'fort',\n p = 'erTo',\n m = 'ken',\n _ = 3;\n window.ftr__config = { m: merchantConfig, s: '24', si: siteId };\n var y = !1,\n U = !1,\n T = v + p + m,\n x = 400 * 24 * 60,\n A = 10,\n S = {\n write: function (t, e, r, o) {\n void 0 === o && (o = !0);\n var i = 0;\n window.ftr__config &&\n window.ftr__config.m &&\n window.ftr__config.m.ckDepth &&\n (i = window.ftr__config.m.ckDepth);\n var a,\n c,\n u = n(i);\n if (\n (r\n ? ((a = new Date()),\n a.setTime(a.getTime() + 60 * r * 1e3),\n (c = '; expires=' + a.toGMTString()))\n : (c = ''),\n !o)\n )\n return void (document.cookie =\n escape(t) + '=' + escape(e) + c + '; path=' + u);\n for (\n var f = 1, s = document.domain.split('.'), d = A, h = !0;\n h && s.length >= f && d > 0;\n\n ) {\n var l = s.slice(-f).join('.');\n document.cookie =\n escape(t) +\n '=' +\n escape(e) +\n c +\n '; path=' +\n u +\n '; domain=' +\n l;\n var w = S.read(t);\n (null != w && w == e) ||\n ((l = '.' + l),\n (document.cookie =\n escape(t) +\n '=' +\n escape(e) +\n c +\n '; path=' +\n u +\n '; domain=' +\n l)),\n (h = -1 === document.cookie.indexOf(t + '=' + e)),\n f++,\n d--;\n }\n },\n read: function (t) {\n var e = null;\n try {\n for (\n var n = escape(t) + '=',\n r = document.cookie.split(';'),\n o = 32,\n i = 0;\n i < r.length;\n i++\n ) {\n for (var a = r[i]; a.charCodeAt(0) === o; )\n a = a.substring(1, a.length);\n 0 === a.indexOf(n) &&\n (e = unescape(a.substring(n.length, a.length)));\n }\n } finally {\n return e;\n }\n },\n },\n D = window.ftr__config.s;\n D += 'ck';\n var L = function (t) {\n var e = !1,\n n = null,\n r = function () {\n try {\n if (!n || !e) return;\n n.remove && 'function' == typeof n.remove\n ? n.remove()\n : document.head.removeChild(n),\n (e = !1);\n } catch (t) {}\n };\n document.head &&\n (!(function () {\n (n = document.createElement('link')),\n n.setAttribute('rel', 'pre' + 'con' + 'nect'),\n n.setAttribute('cros' + 'sori' + 'gin', 'anonymous'),\n (n.onload = r),\n (n.onerror = r),\n n.setAttribute('href', t),\n document.head.appendChild(n),\n (e = !0);\n })(),\n setTimeout(r, 3e3));\n },\n E = e(g || '22ge:t7mj8unkn;1forxgiurqw1qhw2vwdwxv'),\n C = t('[0Uhtxhvw0LG', -_),\n R = t('[0Fruuhodwlrq0LG', -_),\n P = t('Li0Qrqh0Pdwfk', -_),\n k = e('dss1vlwhshuirupdqfhwhvw1qhw'),\n q = e('2241414142gqv0txhu|'),\n F,\n b = 'fgq71iruwhu1frp',\n M = e('(VQ(1' + b + '2vq2(VQ(2vfulsw1mv'),\n V = e('(VQ(1' + b + '2vqV2(VQ(2vfulsw1mv'),\n O;\n window.ftr__config &&\n window.ftr__config.m &&\n window.ftr__config.m.fpi &&\n (O = window.ftr__config.m.fpi + e('2vq2(VQ(2vfulsw1mv'));\n var I = !1,\n N = 10;\n window.ftr__startScriptLoad = 1 * new Date();\n var j = function (t) {\n var e = 'ft' + 'r:tok' + 'enR' + 'eady';\n window.ftr__tt && clearTimeout(window.ftr__tt),\n (window.ftr__tt = setTimeout(function () {\n try {\n delete window.ftr__tt, (t += '_tt');\n var n = document.createEvent('Event');\n n.initEvent(e, !1, !1),\n (n.detail = t),\n document.dispatchEvent(n);\n } catch (t) {}\n }, 1e3));\n },\n B = function (t) {\n var e = function (t) {\n return t || '';\n },\n n =\n e(t.id) +\n '_' +\n e(t.ts) +\n '_' +\n e(t.td) +\n '_' +\n e(t.ex) +\n '_' +\n e(D),\n r = x;\n !isNaN(window.ftr__config.m.ckTTL) &&\n window.ftr__config.m.ckTTL &&\n (r = window.ftr__config.m.ckTTL),\n S.write(T, n, r, !0),\n j(n),\n (window.ftr__gt = n);\n },\n G = function () {\n var t = S.read(T) || '',\n e = t.split('_'),\n n = function (t) {\n return e[t] || void 0;\n };\n return { id: n(0), ts: n(1), td: n(2), ex: n(3), vr: n(4) };\n },\n H = (function () {\n for (var t = {}, e = 'fgu', n = [], r = 0; r < 256; r++)\n n[r] = (r < 16 ? '0' : '') + r.toString(16);\n var o = function (t, e, r, o, i) {\n var a = i ? '-' : '';\n return (\n n[255 & t] +\n n[(t >> 8) & 255] +\n n[(t >> 16) & 255] +\n n[(t >> 24) & 255] +\n a +\n n[255 & e] +\n n[(e >> 8) & 255] +\n a +\n n[((e >> 16) & 15) | 64] +\n n[(e >> 24) & 255] +\n a +\n n[(63 & r) | 128] +\n n[(r >> 8) & 255] +\n a +\n n[(r >> 16) & 255] +\n n[(r >> 24) & 255] +\n n[255 & o] +\n n[(o >> 8) & 255] +\n n[(o >> 16) & 255] +\n n[(o >> 24) & 255]\n );\n },\n i = function () {\n if (\n window.Uint32Array &&\n window.crypto &&\n window.crypto.getRandomValues\n ) {\n var t = new window.Uint32Array(4);\n return (\n window.crypto.getRandomValues(t),\n { d0: t[0], d1: t[1], d2: t[2], d3: t[3] }\n );\n }\n return {\n d0: (4294967296 * Math.random()) >>> 0,\n d1: (4294967296 * Math.random()) >>> 0,\n d2: (4294967296 * Math.random()) >>> 0,\n d3: (4294967296 * Math.random()) >>> 0,\n };\n },\n a = function () {\n var t = '',\n e = function (t, e) {\n for (var n = '', r = t; r > 0; --r)\n n += e.charAt((1e3 * Math.random()) % e.length);\n return n;\n };\n return (\n (t += e(2, '0123456789')),\n (t += e(1, '123456789')),\n (t += e(8, '0123456789'))\n );\n };\n return (\n (t.safeGenerateNoDash = function () {\n try {\n var t = i();\n return o(t.d0, t.d1, t.d2, t.d3, !1);\n } catch (t) {\n try {\n return e + a();\n } catch (t) {}\n }\n }),\n (t.isValidNumericalToken = function (t) {\n return (\n t &&\n t.toString().length <= 11 &&\n t.length >= 9 &&\n parseInt(t, 10).toString().length <= 11 &&\n parseInt(t, 10).toString().length >= 9\n );\n }),\n (t.isValidUUIDToken = function (t) {\n return (\n t && 32 === t.toString().length && /^[a-z0-9]+$/.test(t)\n );\n }),\n (t.isValidFGUToken = function (t) {\n return 0 == t.indexOf(e) && t.length >= 12;\n }),\n t\n );\n })(),\n X = {\n uDF: 'UDF',\n dUAL: 'dUAL',\n uAS: 'UAS',\n uDS: 'UDS',\n uDAD: 'UDAD',\n uFP: 'UFP',\n mLd: '1',\n eTlu: '2',\n eUoe: '3',\n uS: '4',\n uF: '9',\n tmos: ['T5', 'T10', 'T15', 'T30', 'T60'],\n tmosSecs: [5, 10, 15, 30, 60],\n bIR: '43',\n uB: 'u',\n uBr: 'b',\n cP: 'c',\n nIL: 'i',\n s: 's',\n };\n try {\n var Q = G();\n try {\n Q.id &&\n (H.isValidNumericalToken(Q.id) ||\n H.isValidUUIDToken(Q.id) ||\n H.isValidFGUToken(Q.id))\n ? (window.ftr__ncd = !1)\n : ((Q.id = H.safeGenerateNoDash()), (window.ftr__ncd = !0)),\n (Q.ts = window.ftr__startScriptLoad),\n B(Q),\n (window.ftr__snp_cwc = !!S.read(T)),\n window.ftr__snp_cwc || (M = V);\n for (\n var $ = 'for' + 'ter' + '.co' + 'm',\n z = 'ht' + 'tps://c' + 'dn9.' + $,\n J =\n 'ht' +\n 'tps://' +\n Q.id +\n '-' +\n siteId +\n '.cd' +\n 'n.' +\n $,\n K = 'http' + 's://cd' + 'n3.' + $,\n W = [z, J, K],\n Y = 0;\n Y < W.length;\n Y++\n )\n L(W[Y]);\n var Z = new Array(X.tmosSecs.length),\n tt = function (t) {\n for (var e = 0; e < X.tmosSecs.length; e++)\n Z[e] = setTimeout(\n r,\n 1e3 * X.tmosSecs[e],\n t + X.tmos[e],\n );\n },\n et = function () {\n for (var t = 0; t < X.tmosSecs.length; t++)\n clearTimeout(Z[t]);\n };\n (window.ftr__fdad = function (e, n) {\n if (!y) {\n y = !0;\n var r = {};\n (r[P] = d(\n window.ftr__config.s,\n siteId,\n window.ftr__config.m.csp,\n )),\n s(\n E,\n function (n) {\n try {\n var r = n\n .getAllResponseHeaders()\n .toLowerCase();\n if (r.indexOf(R.toLowerCase()) >= 0) {\n var o = n.getResponseHeader(R);\n window.ftr__altd2 = t(atob(o), -_ - 1);\n }\n if (r.indexOf(C.toLowerCase()) < 0) return;\n var i = n.getResponseHeader(C),\n a = t(atob(i), -_ - 1);\n if (a) {\n var c = a.split(':');\n if (c && 2 === c.length) {\n for (\n var u = c[0],\n f = c[1],\n s = '',\n d = 0,\n h = 0;\n d < 20;\n ++d\n )\n s +=\n d % 3 > 0 && h < 12\n ? siteId.charAt(h++)\n : Q.id.charAt(d);\n var l = f.split(',');\n if (l.length > 1) {\n var w = l[0],\n g = l[1];\n F =\n u +\n '/' +\n w +\n '.' +\n s +\n '.' +\n g;\n }\n }\n }\n e();\n } catch (t) {}\n },\n function (t, e) {\n n && n(t, e);\n },\n r,\n );\n }\n }),\n (window.ftr__radd = function (t, e) {\n function n(e) {\n try {\n var n = e.response,\n r = (function (t) {\n function e(t, o, i) {\n try {\n if (i >= n)\n return {\n name: '',\n nextOffsetToProcess: o,\n error: 'Max pointer dereference depth exceeded',\n };\n for (\n var a = [],\n c = o,\n u = t.getUint8(c),\n f = 0;\n f < r;\n\n ) {\n if ((f++, 192 == (192 & u))) {\n var s =\n ((63 & u) << 8) |\n t.getUint8(c + 1),\n d = e(t, s, i + 1);\n if (d.error) return d;\n var h = d.name;\n return (\n a.push(h),\n {\n name: a.join('.'),\n nextOffsetToProcess:\n c + 2,\n }\n );\n }\n if (!(u > 0)) {\n if (0 !== u)\n return {\n name: '',\n nextOffsetToProcess:\n c,\n error:\n 'Unexpected length at the end of name: ' +\n u.toString(),\n };\n return {\n name: a.join('.'),\n nextOffsetToProcess:\n c + 1,\n };\n }\n for (\n var l = '', w = 1;\n w <= u;\n w++\n )\n l += String.fromCharCode(\n t.getUint8(c + w),\n );\n a.push(l),\n (c += u + 1),\n (u = t.getUint8(c));\n }\n return {\n name: '',\n nextOffsetToProcess: c,\n error: 'Max iterations exceeded',\n };\n } catch (t) {\n return {\n name: '',\n nextOffsetToProcess: o,\n error:\n 'Unexpected error while parsing response: ' +\n t.toString(),\n };\n }\n }\n for (\n var n = 4,\n r = 100,\n o = 16,\n i = new DataView(t),\n a = i.getUint16(0),\n c = i.getUint16(2),\n u = i.getUint16(4),\n f = i.getUint16(6),\n s = i.getUint16(8),\n d = i.getUint16(10),\n h = 12,\n l = [],\n w = 0;\n w < u;\n w++\n ) {\n var g = e(i, h, 0);\n if (g.error) throw new Error(g.error);\n if (\n ((h = g.nextOffsetToProcess),\n !Number.isInteger(h))\n )\n throw new Error(\n 'invalid returned offset',\n );\n var v = g.name,\n p = i.getUint16(h);\n h += 2;\n var m = i.getUint16(h);\n (h += 2),\n l.push({\n qname: v,\n qtype: p,\n qclass: m,\n });\n }\n for (var _ = [], w = 0; w < f; w++) {\n var g = e(i, h, 0);\n if (g.error) throw new Error(g.error);\n if (\n ((h = g.nextOffsetToProcess),\n !Number.isInteger(h))\n )\n throw new Error(\n 'invalid returned offset',\n );\n var y = g.name,\n U = i.getUint16(h);\n if (U !== o)\n throw new Error(\n 'Unexpected record type: ' +\n U.toString(),\n );\n h += 2;\n var T = i.getUint16(h);\n h += 2;\n var x = i.getUint32(h);\n h += 4;\n var A = i.getUint16(h);\n h += 2;\n for (\n var S = '', D = h, L = 0;\n D < h + A && L < r;\n\n ) {\n L++;\n var E = i.getUint8(D);\n D += 1;\n (S += new TextDecoder().decode(\n t.slice(D, D + E),\n )),\n (D += E);\n }\n if (L >= r)\n throw new Error(\n 'Max iterations exceeded while reading TXT data',\n );\n (h += A),\n _.push({\n name: y,\n type: U,\n class: T,\n ttl: x,\n data: S,\n });\n }\n return {\n transactionId: a,\n flags: c,\n questionCount: u,\n answerCount: f,\n authorityCount: s,\n additionalCount: d,\n questions: l,\n answers: _,\n };\n })(n);\n if (!r)\n throw new Error('Error parsing DNS response');\n if (!('answers' in r))\n throw new Error('Unexpected response');\n var o = r.answers;\n if (0 === o.length)\n throw new Error('No answers found');\n var i = o[0].data;\n if (\n ((i = i.replace(/^\"(.*)\"$/, '$1')),\n (decodedVal = (function (t) {\n var e = 40,\n n = 32,\n r = 126;\n try {\n for (\n var o = atob(t), i = '', a = 0;\n a < o.length;\n a++\n )\n i += (function (t) {\n var o = t.charCodeAt(0),\n i = o - e;\n return (\n i < n &&\n (i = r - (n - i) + 1),\n String.fromCharCode(i)\n );\n })(o[a]);\n return atob(i);\n } catch (t) {\n return;\n }\n })(i)),\n !decodedVal)\n )\n throw new Error('failed to decode the value');\n var a = (function (t) {\n var e = '_' + 'D' + 'L' + 'M' + '_',\n n = t.split(e);\n if (!(n.length < 2)) {\n var r = n[0],\n o = n[1];\n if (!(r.split('.').length - 1 < 1))\n return { jURL: r, eURL: o };\n }\n })(decodedVal);\n if (!a)\n throw new Error('failed to parse the value');\n var c = a.jURL,\n u = a.eURL;\n (F = (function (t) {\n for (var e = '', n = 0, r = 0; n < 20; ++n)\n e +=\n n % 3 > 0 && r < 12\n ? siteId.charAt(r++)\n : Q.id.charAt(n);\n return t\n .replace('/PRM1', '')\n .replace('/PRM2', '/main.')\n .replace('/PRM3', e)\n .replace('/PRM4', '.js');\n })(c)),\n (window.ftr__altd3 = u),\n t();\n } catch (t) {}\n }\n function r(t, n) {\n e && e(t, n);\n }\n if (!U) {\n window.ftr__config.m.dr === 'N' + 'D' + 'R' &&\n e(new Error('N' + 'D' + 'R'), !1),\n (q && k) || e(new Error('D' + 'P' + 'P'), !1),\n (U = !0);\n try {\n var o = (function (t) {\n for (\n var e = new Uint8Array([0, 0]),\n n = new Uint8Array([1, 0]),\n r = new Uint8Array([0, 1]),\n o = new Uint8Array([0, 0]),\n i = new Uint8Array([0, 0]),\n a = new Uint8Array([0, 0]),\n c = t.split('.'),\n u = [],\n f = 0;\n f < c.length;\n f++\n ) {\n var s = c[f];\n u.push(s.length);\n for (var d = 0; d < s.length; d++)\n u.push(s.charCodeAt(d));\n }\n u.push(0);\n var h = 16,\n l = new Uint8Array([0, h]),\n w = new Uint8Array([0, 1]),\n g = new Uint8Array(\n e.length +\n n.length +\n r.length +\n o.length +\n i.length +\n a.length +\n u.length +\n l.length +\n w.length,\n );\n return (\n g.set(e, 0),\n g.set(n, e.length),\n g.set(r, e.length + n.length),\n g.set(o, e.length + n.length + r.length),\n g.set(\n i,\n e.length +\n n.length +\n r.length +\n o.length,\n ),\n g.set(\n a,\n e.length +\n n.length +\n r.length +\n o.length +\n i.length,\n ),\n g.set(\n u,\n e.length +\n n.length +\n r.length +\n o.length +\n i.length +\n a.length,\n ),\n g.set(\n l,\n e.length +\n n.length +\n r.length +\n o.length +\n i.length +\n a.length +\n u.length,\n ),\n g.set(\n w,\n e.length +\n n.length +\n r.length +\n o.length +\n i.length +\n a.length +\n u.length +\n l.length,\n ),\n g\n );\n })(k);\n !(function (t, e, n, r, o) {\n var i = !1,\n a = new XMLHttpRequest();\n if (\n (c('https:' + t, function () {\n o(new Error('CSP Violation'), !0),\n (i = !0);\n }),\n '//' === t.slice(0, 2) &&\n (t = 'https:' + t),\n 'withCredentials' in a)\n )\n a.open('POST', t, !0);\n else {\n if ('undefined' == typeof XDomainRequest)\n return;\n (a = new XDomainRequest()),\n a.open('POST', t);\n }\n (a.responseType = 'arraybuffer'),\n a.setRequestHeader('Content-Type', e),\n (a.onload = function () {\n 'function' == typeof r && r(a);\n }),\n (a.onerror = function (t) {\n if ('function' == typeof o && !i)\n try {\n o(t, !1), (i = !0);\n } catch (t) {}\n }),\n (a.onprogress = function () {}),\n (a.ontimeout = function () {\n 'function' == typeof o &&\n o('tim' + 'eo' + 'ut', !1);\n }),\n setTimeout(function () {\n a.send(n);\n }, 0);\n })(q, 'application/dns-message', o, n, r);\n } catch (t) {\n e(t, !1);\n }\n }\n });\n var nt = O ? X.uFP : X.uDF;\n tt(nt), setTimeout(w, N, nt);\n } catch (t) {\n r(X.mLd);\n }\n } catch (t) {}\n};\n","import { useEffect } from 'react';\nimport { kickstartForter } from '../../services/forter';\n\nconst ForterFraudDetection = ({ appConfig = {} }) => {\n useEffect(() => {\n const { featureConfig = {} } = appConfig;\n const { forter = {} } = featureConfig;\n const { siteId } = forter;\n\n if (siteId) {\n kickstartForter(siteId);\n }\n }, [appConfig]);\n\n return undefined;\n};\n\nexport default ForterFraudDetection;\n","/* eslint-disable local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\n\nexport const ConsoleApiName = {\n log: 'log',\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error',\n} as const\n\nexport type ConsoleApiName = (typeof ConsoleApiName)[keyof typeof ConsoleApiName]\n\ninterface Display {\n debug: typeof console.debug\n log: typeof console.log\n info: typeof console.info\n warn: typeof console.warn\n error: typeof console.error\n}\n\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport const globalConsole = console\n\nexport const originalConsoleMethods = {} as Display\nObject.keys(ConsoleApiName).forEach((name) => {\n originalConsoleMethods[name as ConsoleApiName] = globalConsole[name as ConsoleApiName]\n})\n\nconst PREFIX = 'Datadog Browser SDK:'\n\nexport const display: Display = {\n debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),\n log: originalConsoleMethods.log.bind(globalConsole, PREFIX),\n info: originalConsoleMethods.info.bind(globalConsole, PREFIX),\n warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),\n error: originalConsoleMethods.error.bind(globalConsole, PREFIX),\n}\n\nexport const DOCS_ORIGIN = 'https://docs.datadoghq.com'\nexport const DOCS_TROUBLESHOOTING = `${DOCS_ORIGIN}/real_user_monitoring/browser/troubleshooting`\nexport const MORE_DETAILS = 'More details:'\n","import { display } from './display'\n\nexport function catchUserErrors<Args extends any[], R>(fn: (...args: Args) => R, errorMsg: string) {\n return (...args: Args) => {\n try {\n return fn(...args)\n } catch (err) {\n display.error(errorMsg, err)\n }\n }\n}\n","import { display } from './display'\n\nlet onMonitorErrorCollected: undefined | ((error: unknown) => void)\nlet debugMode = false\n\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected: (error: unknown) => void) {\n onMonitorErrorCollected = newOnMonitorErrorCollected\n}\n\nexport function setDebugMode(newDebugMode: boolean) {\n debugMode = newDebugMode\n}\n\nexport function resetMonitor() {\n onMonitorErrorCollected = undefined\n debugMode = false\n}\n\nexport function monitored<T extends (...params: any[]) => unknown>(\n _: any,\n __: string,\n descriptor: TypedPropertyDescriptor<T>\n) {\n const originalMethod = descriptor.value!\n descriptor.value = function (this: any, ...args: Parameters<T>) {\n const decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod\n return decorated.apply(this, args) as ReturnType<T>\n } as T\n}\n\nexport function monitor<T extends (...args: any[]) => any>(fn: T): T {\n return function (this: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return callMonitored(fn, this, arguments as unknown as Parameters<T>)\n } as unknown as T // consider output type has input type\n}\n\nexport function callMonitored<T extends (...args: any[]) => any>(\n fn: T,\n context: ThisParameterType<T>,\n args: Parameters<T>\n): ReturnType<T> | undefined\nexport function callMonitored<T extends (this: void) => any>(fn: T): ReturnType<T> | undefined\nexport function callMonitored<T extends (...args: any[]) => any>(\n fn: T,\n context?: any,\n args?: any\n): ReturnType<T> | undefined {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return fn.apply(context, args)\n } catch (e) {\n displayIfDebugEnabled(e)\n if (onMonitorErrorCollected) {\n try {\n onMonitorErrorCollected(e)\n } catch (e) {\n displayIfDebugEnabled(e)\n }\n }\n }\n}\n\nexport function displayIfDebugEnabled(...args: any[]) {\n if (debugMode) {\n display.error('[MONITOR]', ...args)\n }\n}\n","export function includes(candidate: string, search: string): boolean\nexport function includes<T>(candidate: T[], search: T): boolean\nexport function includes(candidate: string | unknown[], search: any) {\n return candidate.indexOf(search) !== -1\n}\n\nexport function arrayFrom<T>(arrayLike: ArrayLike<T> | Set<T>): T[] {\n if (Array.from) {\n return Array.from(arrayLike)\n }\n\n const array = []\n\n if (arrayLike instanceof Set) {\n arrayLike.forEach((item) => array.push(item))\n } else {\n for (let i = 0; i < arrayLike.length; i++) {\n array.push(arrayLike[i])\n }\n }\n\n return array\n}\n\nexport function find<T, S extends T>(\n array: ArrayLike<T>,\n predicate: (item: T, index: number) => item is S\n): S | undefined\nexport function find<T>(array: ArrayLike<T>, predicate: (item: T, index: number) => boolean): T | undefined\nexport function find(array: ArrayLike<unknown>, predicate: (item: unknown, index: number) => boolean): unknown {\n for (let i = 0; i < array.length; i += 1) {\n const item = array[i]\n if (predicate(item, i)) {\n return item\n }\n }\n return undefined\n}\n\nexport function findLast<T, S extends T>(\n array: T[],\n predicate: (item: T, index: number, array: T[]) => item is S\n): S | undefined {\n for (let i = array.length - 1; i >= 0; i -= 1) {\n const item = array[i]\n if (predicate(item, i, array)) {\n return item\n }\n }\n return undefined\n}\n\nexport function forEach<List extends { [index: number]: any }>(\n list: List,\n callback: (value: List[number], index: number, parent: List) => void\n) {\n Array.prototype.forEach.call(list, callback as any)\n}\n\nexport function objectValues<T = unknown>(object: { [key: string]: T }) {\n return Object.keys(object).map((key) => object[key])\n}\n\nexport function objectEntries<T = unknown>(object: { [key: string]: T }): Array<[string, T]> {\n return Object.keys(object).map((key) => [key, object[key]])\n}\n\nexport function startsWith(candidate: string, search: string) {\n return candidate.slice(0, search.length) === search\n}\n\nexport function endsWith(candidate: string, search: string) {\n return candidate.slice(-search.length) === search\n}\n\ninterface Assignable {\n [key: string]: any\n}\n\nexport function assign<T, U>(target: T, source: U): T & U\nexport function assign<T, U, V>(target: T, source1: U, source2: V): T & U & V\nexport function assign<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W\nexport function assign<T, U, V, W, X>(target: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X\nexport function assign(target: Assignable, ...toAssign: Assignable[]) {\n toAssign.forEach((source: Assignable) => {\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n })\n return target\n}\n","import { catchUserErrors } from '../tools/catchUserErrors'\nimport { setDebugMode } from '../tools/monitor'\nimport { assign } from '../tools/utils/polyfills'\nimport { display } from '../tools/display'\n\n// replaced at build time\ndeclare const __BUILD_ENV__SDK_VERSION__: string\n\nexport interface PublicApi {\n /**\n * Version of the Logs browser SDK\n */\n version: string\n\n /**\n * [For CDN async setup] Early RUM API calls must be wrapped in the `window.DD_RUM.onReady()` callback. This ensures the code only gets executed once the SDK is properly loaded.\n *\n * See [CDN async setup](https://docs.datadoghq.com/real_user_monitoring/browser/#cdn-async) for further information.\n */\n onReady: (callback: () => void) => void\n}\n\nexport function makePublicApi<T extends PublicApi>(stub: Omit<T, keyof PublicApi>): T {\n const publicApi = assign(\n {\n version: __BUILD_ENV__SDK_VERSION__,\n\n // This API method is intentionally not monitored, since the only thing executed is the\n // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and\n // we don't want to interfere with the user uncaught exceptions.\n onReady(callback: () => void) {\n callback()\n },\n },\n stub\n )\n\n // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n // as much as possible but of course it's not a real protection.\n Object.defineProperty(publicApi, '_setDebug', {\n get() {\n return setDebugMode\n },\n enumerable: false,\n })\n\n return publicApi as T\n}\n\nexport function defineGlobal<Global, Name extends keyof Global>(global: Global, name: Name, api: Global[Name]) {\n const existingGlobalVariable = global[name] as { q?: Array<() => void>; version?: string } | undefined\n if (existingGlobalVariable && !existingGlobalVariable.q && existingGlobalVariable.version) {\n display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.')\n }\n global[name] = api\n if (existingGlobalVariable && existingGlobalVariable.q) {\n existingGlobalVariable.q.forEach((fn) => catchUserErrors(fn, 'onReady callback threw an error:')())\n }\n}\n","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\n\nexport function getGlobalObject<T = typeof globalThis>(): T {\n if (typeof globalThis === 'object') {\n return globalThis as unknown as T\n }\n Object.defineProperty(Object.prototype, '_dd_temp_', {\n get() {\n return this as object\n },\n configurable: true,\n })\n // @ts-ignore _dd_temp is defined using defineProperty\n let globalObject: unknown = _dd_temp_\n // @ts-ignore _dd_temp is defined using defineProperty\n delete Object.prototype._dd_temp_\n if (typeof globalObject !== 'object') {\n // on safari _dd_temp_ is available on window but not globally\n // fallback on other browser globals check\n if (typeof self === 'object') {\n globalObject = self\n } else if (typeof window === 'object') {\n globalObject = window\n } else {\n globalObject = {}\n }\n }\n return globalObject as T\n}\n","export const ONE_KIBI_BYTE = 1024\nexport const ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE\n\n// eslint-disable-next-line no-control-regex\nconst HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/\n\nexport function computeBytesCount(candidate: string): number {\n // Accurate bytes count computations can degrade performances when there is a lot of events to process\n if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n return candidate.length\n }\n\n if (window.TextEncoder !== undefined) {\n return new TextEncoder().encode(candidate).length\n }\n\n return new Blob([candidate]).size\n}\n\nexport function concatBuffers(buffers: Uint8Array[]) {\n const length = buffers.reduce((total, buffer) => total + buffer.length, 0)\n const result = new Uint8Array(length)\n let offset = 0\n for (const buffer of buffers) {\n result.set(buffer, offset)\n offset += buffer.length\n }\n return result\n}\n","import { getGlobalObject } from './getGlobalObject'\n\nexport interface BrowserWindowWithZoneJs extends Window {\n Zone?: {\n // All Zone.js versions expose the __symbol__ method, but we observed that some website have a\n // 'Zone' global variable unrelated to Zone.js, so let's consider this method optional\n // nonetheless.\n __symbol__?: (name: string) => string\n }\n}\n\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue<Target, Name extends keyof Target & string>(\n target: Target,\n name: Name\n): Target[Name] {\n const browserWindow = getGlobalObject<BrowserWindowWithZoneJs>()\n let original: Target[Name] | undefined\n if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n original = (target as any)[browserWindow.Zone.__symbol__(name)]\n }\n if (!original) {\n original = target[name]\n }\n return original\n}\n","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue'\nimport { monitor } from './monitor'\nimport { getGlobalObject } from './getGlobalObject'\n\nexport type TimeoutId = ReturnType<typeof globalThis.setTimeout>\n\nexport function setTimeout(callback: () => void, delay?: number): TimeoutId {\n return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(monitor(callback), delay)\n}\n\nexport function clearTimeout(timeoutId: TimeoutId | undefined) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId)\n}\n\nexport function setInterval(callback: () => void, delay?: number): TimeoutId {\n return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay)\n}\n\nexport function clearInterval(timeoutId: TimeoutId | undefined) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId)\n}\n","import type { TimeoutId } from '../timer'\nimport { setTimeout, clearTimeout } from '../timer'\n\n// use lodash API\nexport function throttle<T extends (...args: any[]) => void>(\n fn: T,\n wait: number,\n options?: { leading?: boolean; trailing?: boolean }\n) {\n const needLeadingExecution = options && options.leading !== undefined ? options.leading : true\n const needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true\n let inWaitPeriod = false\n let pendingExecutionWithParameters: Parameters<T> | undefined\n let pendingTimeoutId: TimeoutId\n\n return {\n throttled: (...parameters: Parameters<T>) => {\n if (inWaitPeriod) {\n pendingExecutionWithParameters = parameters\n return\n }\n if (needLeadingExecution) {\n fn(...parameters)\n } else {\n pendingExecutionWithParameters = parameters\n }\n inWaitPeriod = true\n pendingTimeoutId = setTimeout(() => {\n if (needTrailingExecution && pendingExecutionWithParameters) {\n fn(...pendingExecutionWithParameters)\n }\n inWaitPeriod = false\n pendingExecutionWithParameters = undefined\n }, wait)\n },\n cancel: () => {\n clearTimeout(pendingTimeoutId)\n inWaitPeriod = false\n pendingExecutionWithParameters = undefined\n },\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() {}\n","import { noop } from '../utils/functionUtils'\n\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(\n value: unknown,\n replacer?: Array<string | number>,\n space?: string | number\n): string | undefined {\n if (typeof value !== 'object' || value === null) {\n return JSON.stringify(value)\n }\n\n // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n // subclasses.\n const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype)\n const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype)\n const restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value))\n const restoreValueToJson = detachToJsonMethod(value)\n\n try {\n return JSON.stringify(value, replacer, space)\n } catch {\n return '<error: unable to serialize object>'\n } finally {\n restoreObjectPrototypeToJson()\n restoreArrayPrototypeToJson()\n restoreValuePrototypeToJson()\n restoreValueToJson()\n }\n}\n\nexport interface ObjectWithToJsonMethod {\n toJSON?: () => unknown\n}\n\nexport function detachToJsonMethod(value: object) {\n const object = value as ObjectWithToJsonMethod\n const objectToJson = object.toJSON\n if (objectToJson) {\n delete object.toJSON\n return () => {\n object.toJSON = objectToJson\n }\n }\n return noop\n}\n","import { assign } from './polyfills'\n\nexport function shallowClone<T>(object: T): T & Record<string, never> {\n return assign({}, object)\n}\n\nexport function objectHasValue<T extends { [key: string]: unknown }>(object: T, value: unknown): value is T[keyof T] {\n return Object.keys(object).some((key) => object[key] === value)\n}\n\nexport function isEmptyObject(object: object) {\n return Object.keys(object).length === 0\n}\n\nexport function mapValues<A, B>(object: { [key: string]: A }, fn: (arg: A) => B) {\n const newObject: { [key: string]: B } = {}\n for (const key of Object.keys(object)) {\n newObject[key] = fn(object[key])\n }\n return newObject\n}\n","import { ONE_KIBI_BYTE, computeBytesCount } from '../../tools/utils/byteUtils'\nimport { throttle } from '../../tools/utils/functionUtils'\nimport type { Context } from '../../tools/serialisation/context'\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify'\nimport { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../../tools/display'\nimport { isEmptyObject } from '../../tools/utils/objectUtils'\nimport type { CustomerDataType } from './contextConstants'\n\n// RUM and logs batch bytes limit is 16KB\n// ensure that we leave room for other event attributes and maintain a decent amount of event per batch\n// (3KB (customer data) + 1KB (other attributes)) * 4 (events per batch) = 16KB\nexport const CUSTOMER_DATA_BYTES_LIMIT = 3 * ONE_KIBI_BYTE\n\n// We observed that the compression ratio is around 8 in general, but we also want to keep a margin\n// because some data might not be compressed (ex: last view update on page exit). We chose 16KiB\n// because it is also the limit of the 'batchBytesCount' that we use for RUM and Logs data, but this\n// is a bit arbitrary.\nexport const CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT = 16 * ONE_KIBI_BYTE\n\nexport const BYTES_COMPUTATION_THROTTLING_DELAY = 200\n\nexport type CustomerDataTracker = ReturnType<typeof createCustomerDataTracker>\nexport type CustomerDataTrackerManager = ReturnType<typeof createCustomerDataTrackerManager>\n\nexport const enum CustomerDataCompressionStatus {\n Unknown,\n Enabled,\n Disabled,\n}\n\nexport function createCustomerDataTrackerManager(\n compressionStatus: CustomerDataCompressionStatus = CustomerDataCompressionStatus.Disabled\n) {\n const customerDataTrackers = new Map<CustomerDataType, CustomerDataTracker>()\n\n let alreadyWarned = false\n function checkCustomerDataLimit(initialBytesCount = 0) {\n if (alreadyWarned || compressionStatus === CustomerDataCompressionStatus.Unknown) {\n return\n }\n\n const bytesCountLimit =\n compressionStatus === CustomerDataCompressionStatus.Disabled\n ? CUSTOMER_DATA_BYTES_LIMIT\n : CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT\n\n let bytesCount = initialBytesCount\n customerDataTrackers.forEach((tracker) => {\n bytesCount += tracker.getBytesCount()\n })\n\n if (bytesCount > bytesCountLimit) {\n displayCustomerDataLimitReachedWarning(bytesCountLimit)\n alreadyWarned = true\n }\n }\n\n return {\n /**\n * Creates a detached tracker. The manager will not store a reference to that tracker, and the\n * bytes count will be counted independently from other detached trackers.\n *\n * This is particularly useful when we don't know when the tracker will be unused, so we don't\n * leak memory (ex: when used in Logger instances).\n */\n createDetachedTracker: () => {\n const tracker = createCustomerDataTracker(() => checkCustomerDataLimit(tracker.getBytesCount()))\n return tracker\n },\n\n /**\n * Creates a tracker if it doesn't exist, and returns it.\n */\n getOrCreateTracker: (type: CustomerDataType) => {\n if (!customerDataTrackers.has(type)) {\n customerDataTrackers.set(type, createCustomerDataTracker(checkCustomerDataLimit))\n }\n return customerDataTrackers.get(type)!\n },\n\n setCompressionStatus: (newCompressionStatus: CustomerDataCompressionStatus) => {\n if (compressionStatus === CustomerDataCompressionStatus.Unknown) {\n compressionStatus = newCompressionStatus\n checkCustomerDataLimit()\n }\n },\n\n getCompressionStatus: () => compressionStatus,\n\n stop: () => {\n customerDataTrackers.forEach((tracker) => tracker.stop())\n customerDataTrackers.clear()\n },\n }\n}\n\nexport function createCustomerDataTracker(checkCustomerDataLimit: () => void) {\n let bytesCountCache = 0\n\n // Throttle the bytes computation to minimize the impact on performance.\n // Especially useful if the user call context APIs synchronously multiple times in a row\n const { throttled: computeBytesCountThrottled, cancel: cancelComputeBytesCount } = throttle((context: Context) => {\n bytesCountCache = computeBytesCount(jsonStringify(context)!)\n checkCustomerDataLimit()\n }, BYTES_COMPUTATION_THROTTLING_DELAY)\n\n const resetBytesCount = () => {\n cancelComputeBytesCount()\n bytesCountCache = 0\n }\n\n return {\n updateCustomerData: (context: Context) => {\n if (isEmptyObject(context)) {\n resetBytesCount()\n } else {\n computeBytesCountThrottled(context)\n }\n },\n resetCustomerData: resetBytesCount,\n getBytesCount: () => bytesCountCache,\n stop: () => {\n cancelComputeBytesCount()\n },\n }\n}\n\nfunction displayCustomerDataLimitReachedWarning(bytesCountLimit: number) {\n display.warn(\n `Customer data exceeds the recommended ${\n bytesCountLimit / ONE_KIBI_BYTE\n }KiB threshold. ${MORE_DETAILS} ${DOCS_TROUBLESHOOTING}/#customer-data-exceeds-the-recommended-threshold-warning`\n )\n}\n","/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value: unknown) {\n if (value === null) {\n return 'null'\n }\n if (Array.isArray(value)) {\n return 'array'\n }\n return typeof value\n}\n","import { getType } from './utils/typeUtils'\n\ntype Merged<TDestination, TSource> =\n // case 1 - source is undefined - return destination\n TSource extends undefined\n ? TDestination\n : // case 2 - destination is undefined - return source\n TDestination extends undefined\n ? TSource\n : // case 3 - source is an array - see if it merges or overwrites\n TSource extends any[]\n ? TDestination extends any[]\n ? TDestination & TSource\n : TSource\n : // case 4 - source is an object - see if it merges or overwrites\n TSource extends object\n ? TDestination extends object\n ? TDestination extends any[]\n ? TSource\n : TDestination & TSource\n : TSource\n : // case 5 - cannot merge - return source\n TSource\n\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto<D, S>(\n destination: D,\n source: S,\n circularReferenceChecker = createCircularReferenceChecker()\n): Merged<D, S> {\n // ignore the source if it is undefined\n if (source === undefined) {\n return destination as Merged<D, S>\n }\n\n if (typeof source !== 'object' || source === null) {\n // primitive values - just return source\n return source as Merged<D, S>\n } else if (source instanceof Date) {\n return new Date(source.getTime()) as unknown as Merged<D, S>\n } else if (source instanceof RegExp) {\n const flags =\n source.flags ||\n // old browsers compatibility\n [\n source.global ? 'g' : '',\n source.ignoreCase ? 'i' : '',\n source.multiline ? 'm' : '',\n source.sticky ? 'y' : '',\n source.unicode ? 'u' : '',\n ].join('')\n return new RegExp(source.source, flags) as unknown as Merged<D, S>\n }\n\n if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n // remove circular references\n return undefined as unknown as Merged<D, S>\n } else if (Array.isArray(source)) {\n const merged: any[] = Array.isArray(destination) ? destination : []\n for (let i = 0; i < source.length; ++i) {\n merged[i] = mergeInto(merged[i], source[i], circularReferenceChecker)\n }\n return merged as unknown as Merged<D, S>\n }\n\n const merged = getType(destination) === 'object' ? (destination as Record<any, any>) : {}\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker)\n }\n }\n return merged as unknown as Merged<D, S>\n}\n\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone<T>(value: T): T {\n return mergeInto(undefined, value) as T\n}\n\ntype Combined<A, B> = A extends null ? B : B extends null ? A : Merged<A, B>\n\n/*\n * Performs a deep merge of objects and arrays.\n * - Arguments won't be mutated\n * - Object and arrays in the output value are de-referenced (\"deep cloned\")\n * - Arrays values are merged index by index\n * - Objects are merged by keys\n * - Values get replaced, unless undefined\n */\nexport function combine<A, B>(a: A, b: B): Combined<A, B>\nexport function combine<A, B, C>(a: A, b: B, c: C): Combined<Combined<A, B>, C>\nexport function combine<A, B, C, D>(a: A, b: B, c: C, d: D): Combined<Combined<Combined<A, B>, C>, D>\nexport function combine<A, B, C, D, E>(\n a: A,\n b: B,\n c: C,\n d: D,\n e: E\n): Combined<Combined<Combined<Combined<A, B>, C>, D>, E>\nexport function combine<A, B, C, D, E, F>(\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n f: F\n): Combined<Combined<Combined<Combined<Combined<A, B>, C>, D>, E>, F>\nexport function combine<A, B, C, D, E, F, G>(\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n f: F,\n g: G\n): Combined<Combined<Combined<Combined<Combined<Combined<A, B>, C>, D>, E>, F>, G>\nexport function combine<A, B, C, D, E, F, G, H>(\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n f: F,\n g: G,\n h: H\n): Combined<Combined<Combined<Combined<Combined<Combined<Combined<A, B>, C>, D>, E>, F>, G>, H>\nexport function combine(...sources: any[]): unknown {\n let destination: any\n\n for (const source of sources) {\n // Ignore any undefined or null sources.\n if (source === undefined || source === null) {\n continue\n }\n\n destination = mergeInto(destination, source)\n }\n\n return destination as unknown\n}\n\ninterface CircularReferenceChecker {\n hasAlreadyBeenSeen(value: any): boolean\n}\n\nfunction createCircularReferenceChecker(): CircularReferenceChecker {\n if (typeof WeakSet !== 'undefined') {\n const set: WeakSet<any> = new WeakSet()\n return {\n hasAlreadyBeenSeen(value) {\n const has = set.has(value)\n if (!has) {\n set.add(value)\n }\n return has\n },\n }\n }\n const array: any[] = []\n return {\n hasAlreadyBeenSeen(value) {\n const has = array.indexOf(value) >= 0\n if (!has) {\n array.push(value)\n }\n return has\n },\n }\n}\n","import { display } from '../display'\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils'\nimport type { Context, ContextArray, ContextValue } from './context'\nimport type { ObjectWithToJsonMethod } from './jsonStringify'\nimport { detachToJsonMethod } from './jsonStringify'\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype PrimitivesAndFunctions = string | number | boolean | undefined | null | symbol | bigint | Function\ntype ExtendedContextValue = PrimitivesAndFunctions | object | ExtendedContext | ExtendedContextArray\ntype ExtendedContext = { [key: string]: ExtendedContextValue }\ntype ExtendedContextArray = ExtendedContextValue[]\n\ntype ContainerElementToProcess = {\n source: ExtendedContextArray | ExtendedContext\n target: ContextArray | Context\n path: string\n}\n\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nconst SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE\n\n// Symbol for the root element of the JSONPath used for visited objects\nconst JSON_PATH_ROOT_ELEMENT = '$'\n\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nconst KEY_DECORATION_LENGTH = 3\n\n/**\n * Ensures user-provided data is 'safe' for the SDK\n * - Deep clones data\n * - Removes cyclic references\n * - Transforms unserializable types to a string representation\n *\n * LIMITATIONS:\n * - Size is in characters, not byte count (may differ according to character encoding)\n * - Size does not take into account indentation that can be applied to JSON.stringify\n * - Non-numerical properties of Arrays are ignored. Same behavior as JSON.stringify\n *\n * @param source User-provided data meant to be serialized using JSON.stringify\n * @param maxCharacterCount Maximum number of characters allowed in serialized form\n */\nexport function sanitize(source: string, maxCharacterCount?: number): string | undefined\nexport function sanitize(source: Context, maxCharacterCount?: number): Context\nexport function sanitize(source: unknown, maxCharacterCount?: number): ContextValue\nexport function sanitize(source: unknown, maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT) {\n // Unbind any toJSON function we may have on [] or {} prototypes\n const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype)\n const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype)\n\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n const containerQueue: ContainerElementToProcess[] = []\n const visitedObjectsWithPath = new WeakMap<object, string>()\n const sanitizedData = sanitizeProcessor(\n source as ExtendedContextValue,\n JSON_PATH_ROOT_ELEMENT,\n undefined,\n containerQueue,\n visitedObjectsWithPath\n )\n const serializedSanitizedData = JSON.stringify(sanitizedData)\n let accumulatedCharacterCount = serializedSanitizedData ? serializedSanitizedData.length : 0\n\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source)\n return undefined\n }\n\n while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n const containerToProcess = containerQueue.shift()!\n let separatorLength = 0 // 0 for the first element, 1 for subsequent elements\n\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (let key = 0; key < containerToProcess.source.length; key++) {\n const targetData = sanitizeProcessor(\n containerToProcess.source[key],\n containerToProcess.path,\n key,\n containerQueue,\n visitedObjectsWithPath\n )\n\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length\n } else {\n // When an element of an Array (targetData) is undefined, it is serialized as null:\n // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n accumulatedCharacterCount += 4\n }\n accumulatedCharacterCount += separatorLength\n separatorLength = 1\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source)\n break\n }\n ;(containerToProcess.target as ContextArray)[key] = targetData\n }\n } else {\n for (const key in containerToProcess.source) {\n if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n const targetData = sanitizeProcessor(\n containerToProcess.source[key],\n containerToProcess.path,\n key,\n containerQueue,\n visitedObjectsWithPath\n )\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount +=\n JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH\n separatorLength = 1\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source)\n break\n }\n ;(containerToProcess.target as Context)[key] = targetData\n }\n }\n }\n }\n\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson()\n restoreArrayPrototypeToJson()\n\n return sanitizedData\n}\n\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(\n source: ExtendedContextValue,\n parentPath: string,\n key: string | number | undefined,\n queue: ContainerElementToProcess[],\n visitedObjectsWithPath: WeakMap<object, string>\n) {\n // Start by handling toJSON, as we want to sanitize its output\n const sourceToSanitize = tryToApplyToJSON(source)\n\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize)\n }\n\n const sanitizedSource = sanitizeObjects(sourceToSanitize)\n if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n return sanitizedSource\n }\n\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n const sourceAsObject = source as object\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return `[Reference seen at ${visitedObjectsWithPath.get(sourceAsObject)!}]`\n }\n\n // Add processed source to queue\n const currentPath = key !== undefined ? `${parentPath}.${key}` : parentPath\n const target = Array.isArray(sourceToSanitize) ? ([] as ContextArray) : ({} as Context)\n visitedObjectsWithPath.set(sourceAsObject, currentPath)\n queue.push({ source: sourceToSanitize as ExtendedContext | ExtendedContextArray, target, path: currentPath })\n\n return target\n}\n\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value: PrimitivesAndFunctions) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return `[BigInt] ${value.toString()}`\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return `[Function] ${value.name || 'unknown'}`\n }\n // JSON.stringify() does not serialize symbols.\n if (typeof value === 'symbol') {\n // symbol.description is part of ES2019+\n type symbolWithDescription = symbol & { description: string }\n return `[Symbol] ${(value as symbolWithDescription).description || value.toString()}`\n }\n\n return value\n}\n\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value: object) {\n try {\n // Handle events - Keep a simple implementation to avoid breaking changes\n if (value instanceof Event) {\n return {\n isTrusted: value.isTrusted,\n }\n }\n\n // Handle all remaining object types in a generic way\n const result = Object.prototype.toString.call(value)\n const match = result.match(/\\[object (.*)\\]/)\n if (match && match[1]) {\n return `[${match[1]}]`\n }\n } catch {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]'\n}\n\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value: ExtendedContextValue) {\n const object = value as ObjectWithToJsonMethod\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON() as ExtendedContextValue\n } catch {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n\n return value\n}\n\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount: number, changeType: 'discarded' | 'truncated', source: unknown) {\n display.warn(\n `The data provided has been ${changeType} as it is over the limit of ${maxCharacterCount} characters:`,\n source\n )\n}\n","export interface Subscription {\n unsubscribe: () => void\n}\n\n// eslint-disable-next-line no-restricted-syntax\nexport class Observable<T> {\n private observers: Array<(data: T) => void> = []\n private onLastUnsubscribe?: () => void\n\n constructor(private onFirstSubscribe?: (observable: Observable<T>) => (() => void) | void) {}\n\n subscribe(f: (data: T) => void): Subscription {\n this.observers.push(f)\n if (this.observers.length === 1 && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined\n }\n return {\n unsubscribe: () => {\n this.observers = this.observers.filter((other) => f !== other)\n if (!this.observers.length && this.onLastUnsubscribe) {\n this.onLastUnsubscribe()\n }\n },\n }\n }\n\n notify(data: T) {\n this.observers.forEach((observer) => observer(data))\n }\n}\n\nexport function mergeObservables<T>(...observables: Array<Observable<T>>) {\n return new Observable<T>((globalObservable) => {\n const subscriptions: Subscription[] = observables.map((observable) =>\n observable.subscribe((data) => globalObservable.notify(data))\n )\n return () => subscriptions.forEach((subscription) => subscription.unsubscribe())\n })\n}\n","import { deepClone } from '../../tools/mergeInto'\nimport { getType } from '../../tools/utils/typeUtils'\nimport { sanitize } from '../../tools/serialisation/sanitize'\nimport type { Context } from '../../tools/serialisation/context'\nimport { Observable } from '../../tools/observable'\nimport type { CustomerDataTracker } from './customerDataTracker'\n\nexport type ContextManager = ReturnType<typeof createContextManager>\n\nexport function createContextManager(customerDataTracker: CustomerDataTracker) {\n let context: Context = {}\n const changeObservable = new Observable<void>()\n\n const contextManager = {\n getContext: () => deepClone(context),\n\n setContext: (newContext: Context) => {\n if (getType(newContext) === 'object') {\n context = sanitize(newContext)\n customerDataTracker.updateCustomerData(context)\n } else {\n contextManager.clearContext()\n }\n changeObservable.notify()\n },\n\n setContextProperty: (key: string, property: any) => {\n context[key] = sanitize(property)\n customerDataTracker.updateCustomerData(context)\n changeObservable.notify()\n },\n\n removeContextProperty: (key: string) => {\n delete context[key]\n customerDataTracker.updateCustomerData(context)\n changeObservable.notify()\n },\n\n clearContext: () => {\n context = {}\n customerDataTracker.resetCustomerData()\n changeObservable.notify()\n },\n\n changeObservable,\n }\n return contextManager\n}\n","import { Observable } from '../tools/observable'\n\nexport const TrackingConsent = {\n GRANTED: 'granted',\n NOT_GRANTED: 'not-granted',\n} as const\nexport type TrackingConsent = (typeof TrackingConsent)[keyof typeof TrackingConsent]\n\nexport interface TrackingConsentState {\n tryToInit: (trackingConsent: TrackingConsent) => void\n update: (trackingConsent: TrackingConsent) => void\n isGranted: () => boolean\n observable: Observable<void>\n}\n\nexport function createTrackingConsentState(currentConsent?: TrackingConsent): TrackingConsentState {\n const observable = new Observable<void>()\n\n return {\n tryToInit(trackingConsent: TrackingConsent) {\n if (!currentConsent) {\n currentConsent = trackingConsent\n }\n },\n update(trackingConsent: TrackingConsent) {\n currentConsent = trackingConsent\n observable.notify()\n },\n isGranted() {\n return currentConsent === TrackingConsent.GRANTED\n },\n observable,\n }\n}\n","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n *\n * FORMAT:\n * All feature flags should be snake_cased\n */\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected feature flag\n\nimport { objectHasValue } from './utils/objectUtils'\n\n// eslint-disable-next-line no-restricted-syntax\nexport enum ExperimentalFeature {\n WRITABLE_RESOURCE_GRAPHQL = 'writable_resource_graphql',\n CUSTOM_VITALS = 'custom_vitals',\n TOLERANT_RESOURCE_TIMINGS = 'tolerant_resource_timings',\n REMOTE_CONFIGURATION = 'remote_configuration',\n UPDATE_VIEW_NAME = 'update_view_name',\n}\n\nconst enabledExperimentalFeatures: Set<ExperimentalFeature> = new Set()\n\nexport function initFeatureFlags(enableExperimentalFeatures?: string[] | undefined) {\n if (Array.isArray(enableExperimentalFeatures)) {\n addExperimentalFeatures(\n enableExperimentalFeatures.filter((flag): flag is ExperimentalFeature =>\n objectHasValue(ExperimentalFeature, flag)\n )\n )\n }\n}\n\nexport function addExperimentalFeatures(enabledFeatures: ExperimentalFeature[]): void {\n enabledFeatures.forEach((flag) => {\n enabledExperimentalFeatures.add(flag)\n })\n}\n\nexport function isExperimentalFeatureEnabled(featureName: ExperimentalFeature): boolean {\n return enabledExperimentalFeatures.has(featureName)\n}\n\nexport function resetExperimentalFeatures(): void {\n enabledExperimentalFeatures.clear()\n}\n\nexport function getExperimentalFeatures(): Set<ExperimentalFeature> {\n return enabledExperimentalFeatures\n}\n","/**\n * Cross-browser stack trace computation.\n *\n * Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js\n */\n\nimport { startsWith } from '../utils/polyfills'\n\nexport interface StackFrame {\n url?: string\n func?: string\n /** The arguments passed to the function, if known. */\n args?: string[]\n line?: number\n column?: number\n /** An array of source code lines; the middle element corresponds to the correct line. */\n context?: string[]\n}\n\nexport interface StackTrace {\n name?: string\n message?: string\n url?: string\n stack: StackFrame[]\n incomplete?: boolean\n partial?: boolean\n}\n\nconst UNKNOWN_FUNCTION = '?'\n\nexport function computeStackTrace(ex: unknown): StackTrace {\n const stack: StackFrame[] = []\n\n let stackProperty = tryToGetString(ex, 'stack')\n const exString = String(ex)\n if (stackProperty && startsWith(stackProperty, exString)) {\n stackProperty = stackProperty.slice(exString.length)\n }\n if (stackProperty) {\n stackProperty.split('\\n').forEach((line) => {\n const stackFrame =\n parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line)\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION\n }\n\n stack.push(stackFrame)\n }\n })\n }\n\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack,\n }\n}\nconst fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|snippet|<anonymous>|\\\\w+\\\\.|\\\\/).*?)'\nconst filePosition = '(?::(\\\\d+))'\nconst CHROME_LINE_RE = new RegExp(`^\\\\s*at (.*?) ?\\\\(${fileUrl}${filePosition}?${filePosition}?\\\\)?\\\\s*$`, 'i')\n\nconst CHROME_EVAL_RE = new RegExp(`\\\\((\\\\S*)${filePosition}${filePosition}\\\\)`)\n\nfunction parseChromeLine(line: string): StackFrame | undefined {\n const parts = CHROME_LINE_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n const isNative = parts[2] && parts[2].indexOf('native') === 0 // start of line\n const isEval = parts[2] && parts[2].indexOf('eval') === 0 // start of line\n const submatch = CHROME_EVAL_RE.exec(parts[2])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1] // url\n parts[3] = submatch[2] // line\n parts[4] = submatch[3] // column\n }\n\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined,\n }\n}\n\nconst CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(`^\\\\s*at ?${fileUrl}${filePosition}?${filePosition}??\\\\s*$`, 'i')\n\nfunction parseChromeAnonymousLine(line: string): StackFrame | undefined {\n const parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1],\n }\n}\n\nconst WINJS_LINE_RE =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i\n\nfunction parseWinLine(line: string): StackFrame | undefined {\n const parts = WINJS_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2],\n }\n}\n\nconst GECKO_LINE_RE =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i\nconst GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i\n\nfunction parseGeckoLine(line: string): StackFrame | undefined {\n const parts = GECKO_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1\n const submatch = GECKO_EVAL_RE.exec(parts[3])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1]\n parts[4] = submatch[2]\n parts[5] = undefined! // no column when eval\n }\n\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3],\n }\n}\n\nfunction tryToGetString(candidate: unknown, property: string) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined\n }\n const value = (candidate as { [k: string]: unknown })[property]\n return typeof value === 'string' ? value : undefined\n}\n\nexport function computeStackTraceFromOnErrorMessage(messageObj: unknown, url?: string, line?: number, column?: number) {\n const stack = [{ url, column, line }]\n const { name, message } = tryToParseMessage(messageObj)\n return {\n name,\n message,\n stack,\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nconst ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/\n\nfunction tryToParseMessage(messageObj: unknown) {\n let name\n let message\n if ({}.toString.call(messageObj) === '[object String]') {\n ;[, name, message] = ERROR_TYPES_RE.exec(messageObj as string)!\n }\n return { name, message }\n}\n","import { callMonitored } from '../monitor'\nimport { noop } from '../utils/functionUtils'\nimport type { StackTrace } from './computeStackTrace'\nimport { computeStackTrace } from './computeStackTrace'\n\n/**\n * Creates a stacktrace without SDK internal frames.\n * Constraints:\n * - Has to be called at the utmost position of the call stack.\n * - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack(): string {\n /**\n * Skip the two internal frames:\n * - SDK API (console.error, ...)\n * - this function\n * in order to keep only the user calls\n */\n const internalFramesToSkip = 2\n const error = new Error()\n let formattedStack: string\n\n // IE needs to throw the error to fill in the stack trace\n if (!error.stack) {\n try {\n throw error\n } catch (e) {\n noop()\n }\n }\n\n callMonitored(() => {\n const stackTrace = computeStackTrace(error)\n stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip)\n formattedStack = toStackTraceString(stackTrace)\n })\n\n return formattedStack!\n}\n\nexport function toStackTraceString(stack: StackTrace) {\n let result = formatErrorMessage(stack)\n stack.stack.forEach((frame) => {\n const func = frame.func === '?' ? '<anonymous>' : frame.func\n const args = frame.args && frame.args.length > 0 ? `(${frame.args.join(', ')})` : ''\n const line = frame.line ? `:${frame.line}` : ''\n const column = frame.line && frame.column ? `:${frame.column}` : ''\n result += `\\n at ${func!}${args} @ ${frame.url!}${line}${column}`\n })\n return result\n}\n\nexport function formatErrorMessage(stack: StackTrace) {\n return `${stack.name || 'Error'}: ${stack.message!}`\n}\n","import { sanitize } from '../../tools/serialisation/sanitize'\nimport type { ClocksState } from '../../tools/utils/timeUtils'\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify'\nimport type { StackTrace } from '../../tools/stackTrace/computeStackTrace'\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace'\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack'\nimport type { ErrorSource, ErrorHandling, RawError, RawErrorCause, ErrorWithCause, NonErrorPrefix } from './error.types'\n\nexport const NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error'\n\ntype RawErrorParams = {\n stackTrace?: StackTrace\n originalError: unknown\n\n handlingStack?: string\n startClocks: ClocksState\n nonErrorPrefix: NonErrorPrefix\n source: ErrorSource\n handling: ErrorHandling\n}\n\nexport function computeRawError({\n stackTrace,\n originalError,\n handlingStack,\n startClocks,\n nonErrorPrefix,\n source,\n handling,\n}: RawErrorParams): RawError {\n const isErrorInstance = originalError instanceof Error\n\n const message = computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError)\n const stack = hasUsableStack(isErrorInstance, stackTrace)\n ? toStackTraceString(stackTrace)\n : NO_ERROR_STACK_PRESENT_MESSAGE\n const causes = isErrorInstance ? flattenErrorCauses(originalError as ErrorWithCause, source) : undefined\n const type = stackTrace ? stackTrace.name : undefined\n const fingerprint = tryToGetFingerprint(originalError)\n\n return {\n startClocks,\n source,\n handling,\n handlingStack,\n originalError,\n type,\n message,\n stack,\n causes,\n fingerprint,\n }\n}\n\nfunction computeMessage(\n stackTrace: StackTrace | undefined,\n isErrorInstance: boolean,\n nonErrorPrefix: NonErrorPrefix,\n originalError: unknown\n) {\n // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n // TODO rework tracekit integration to avoid scattering error building logic\n return stackTrace?.message && stackTrace?.name\n ? stackTrace.message\n : !isErrorInstance\n ? `${nonErrorPrefix} ${jsonStringify(sanitize(originalError))!}`\n : 'Empty message'\n}\n\nfunction hasUsableStack(isErrorInstance: boolean, stackTrace?: StackTrace): stackTrace is StackTrace {\n if (stackTrace === undefined) {\n return false\n }\n if (isErrorInstance) {\n return true\n }\n // handle cases where tracekit return stack = [] or stack = [{url: undefined, line: undefined, column: undefined}]\n // TODO rework tracekit integration to avoid generating those unusable stack\n return stackTrace.stack.length > 0 && (stackTrace.stack.length > 1 || stackTrace.stack[0].url !== undefined)\n}\n\nexport function tryToGetFingerprint(originalError: unknown) {\n return originalError instanceof Error && 'dd_fingerprint' in originalError\n ? String(originalError.dd_fingerprint)\n : undefined\n}\n\nexport function getFileFromStackTraceString(stack: string) {\n return /@ (.+)/.exec(stack)?.[1]\n}\n\nexport function flattenErrorCauses(error: ErrorWithCause, parentSource: ErrorSource): RawErrorCause[] | undefined {\n let currentError = error\n const causes: RawErrorCause[] = []\n while (currentError?.cause instanceof Error && causes.length < 10) {\n const stackTrace = computeStackTrace(currentError.cause)\n causes.push({\n message: currentError.cause.message,\n source: parentSource,\n type: stackTrace?.name,\n stack: stackTrace && toStackTraceString(stackTrace),\n })\n currentError = currentError.cause\n }\n return causes.length ? causes : undefined\n}\n","export const INTAKE_SITE_STAGING = 'datad0g.com'\nexport const INTAKE_SITE_FED_STAGING = 'dd0g-gov.com'\nexport const INTAKE_SITE_US1 = 'datadoghq.com'\nexport const INTAKE_SITE_EU1 = 'datadoghq.eu'\nexport const INTAKE_SITE_US1_FED = 'ddog-gov.com'\n\nexport const PCI_INTAKE_HOST_US1 = 'pci.browser-intake-datadoghq.com'\n","/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold: number): boolean {\n return threshold !== 0 && Math.random() * 100 <= threshold\n}\n\nexport function round(num: number, decimals: 0 | 1 | 2 | 3 | 4) {\n return +num.toFixed(decimals)\n}\n\nexport function isPercentage(value: unknown) {\n return isNumber(value) && value >= 0 && value <= 100\n}\n\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number'\n}\n","import { isNumber, round } from './numberUtils'\n\nexport const ONE_SECOND = 1000\nexport const ONE_MINUTE = 60 * ONE_SECOND\nexport const ONE_HOUR = 60 * ONE_MINUTE\nexport const ONE_DAY = 24 * ONE_HOUR\nexport const ONE_YEAR = 365 * ONE_DAY\n\nexport type Duration = number & { d: 'Duration in ms' }\nexport type ServerDuration = number & { s: 'Duration in ns' }\nexport type TimeStamp = number & { t: 'Epoch time' }\nexport type RelativeTime = number & { r: 'Time relative to navigation start' } & { d: 'Duration in ms' }\nexport type ClocksState = { relative: RelativeTime; timeStamp: TimeStamp }\n\nexport function relativeToClocks(relative: RelativeTime) {\n return { relative, timeStamp: getCorrectedTimeStamp(relative) }\n}\n\nexport function timeStampToClocks(timeStamp: TimeStamp) {\n return { relative: getRelativeTime(timeStamp), timeStamp }\n}\n\nfunction getCorrectedTimeStamp(relativeTime: RelativeTime) {\n const correctedOrigin = (dateNow() - performance.now()) as TimeStamp\n // apply correction only for positive drift\n if (correctedOrigin > getNavigationStart()) {\n return Math.round(addDuration(correctedOrigin, relativeTime)) as TimeStamp\n }\n return getTimeStamp(relativeTime)\n}\n\nexport function currentDrift() {\n return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now() as Duration))\n}\n\nexport function toServerDuration(duration: Duration): ServerDuration\nexport function toServerDuration(duration: Duration | undefined): ServerDuration | undefined\nexport function toServerDuration(duration: Duration | undefined) {\n if (!isNumber(duration)) {\n return duration\n }\n return round(duration * 1e6, 0) as ServerDuration\n}\n\nexport function dateNow() {\n // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n // case ourselves.\n // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n return new Date().getTime()\n}\n\nexport function timeStampNow() {\n return dateNow() as TimeStamp\n}\n\nexport function relativeNow() {\n return performance.now() as RelativeTime\n}\n\nexport function clocksNow() {\n return { relative: relativeNow(), timeStamp: timeStampNow() }\n}\n\nexport function clocksOrigin() {\n return { relative: 0 as RelativeTime, timeStamp: getNavigationStart() }\n}\n\nexport function elapsed(start: TimeStamp, end: TimeStamp): Duration\nexport function elapsed(start: RelativeTime, end: RelativeTime): Duration\nexport function elapsed(start: number, end: number) {\n return (end - start) as Duration\n}\n\nexport function addDuration(a: TimeStamp, b: Duration): TimeStamp\nexport function addDuration(a: RelativeTime, b: Duration): RelativeTime\nexport function addDuration(a: Duration, b: Duration): Duration\nexport function addDuration(a: number, b: number) {\n return a + b\n}\n\n/**\n * Get the time since the navigation was started.\n *\n * Note: this does not use `performance.timeOrigin` because it doesn't seem to reflect the actual\n * time on which the navigation has started: it may be much farther in the past, at least in Firefox 71.\n * Related issue in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926\n */\nexport function getRelativeTime(timestamp: TimeStamp) {\n return (timestamp - getNavigationStart()) as RelativeTime\n}\n\nexport function getTimeStamp(relativeTime: RelativeTime) {\n return Math.round(addDuration(getNavigationStart(), relativeTime)) as TimeStamp\n}\n\nexport function looksLikeRelativeTime(time: RelativeTime | TimeStamp): time is RelativeTime {\n return time < ONE_YEAR\n}\n\n/**\n * Navigation start slightly change on some rare cases\n */\nlet navigationStart: TimeStamp | undefined\n\nfunction getNavigationStart() {\n if (navigationStart === undefined) {\n navigationStart = performance.timing.navigationStart as TimeStamp\n }\n return navigationStart\n}\n\nexport function resetNavigationStart() {\n navigationStart = undefined\n}\n","interface BrowserWindow {\n __ddBrowserSdkExtensionCallback?: (message: unknown) => void\n}\n\ntype ExtensionMessageType = 'logs' | 'record' | 'rum' | 'telemetry'\n\nexport function sendToExtension(type: ExtensionMessageType, payload: unknown) {\n const callback = (window as BrowserWindow).__ddBrowserSdkExtensionCallback\n if (callback) {\n callback({ type, payload })\n }\n}\n","export type NetworkInterface = 'bluetooth' | 'cellular' | 'ethernet' | 'none' | 'wifi' | 'wimax' | 'other' | 'unknown'\nexport type EffectiveType = 'slow-2g' | '2g' | '3g' | '4g'\n\ninterface BrowserNavigator extends Navigator {\n connection?: NetworkInformation\n}\n\nexport interface NetworkInformation {\n type?: NetworkInterface\n effectiveType?: EffectiveType\n}\n\nexport interface Connectivity {\n status: 'connected' | 'not_connected'\n interfaces?: NetworkInterface[]\n effective_type?: EffectiveType\n [key: string]: unknown\n}\n\nexport function getConnectivity(): Connectivity {\n const navigator = window.navigator as BrowserNavigator\n return {\n status: navigator.onLine ? 'connected' : 'not_connected',\n interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : undefined,\n effective_type: navigator.connection?.effectiveType,\n }\n}\n","import { arrayFrom } from './polyfills'\n\nexport function removeDuplicates<T>(array: T[]) {\n const set = new Set<T>()\n array.forEach((item) => set.add(item))\n return arrayFrom(set)\n}\n\nexport function removeItem<T>(array: T[], item: T) {\n const index = array.indexOf(item)\n if (index >= 0) {\n array.splice(index, 1)\n }\n}\n","import { removeItem } from './utils/arrayUtils'\n\nconst BUFFER_LIMIT = 500\n\nexport interface BoundedBuffer<T = void> {\n add: (callback: (arg: T) => void) => void\n remove: (callback: (arg: T) => void) => void\n drain: (arg: T) => void\n}\n\nexport function createBoundedBuffer<T = void>(): BoundedBuffer<T> {\n const buffer: Array<(arg: T) => void> = []\n\n const add: BoundedBuffer<T>['add'] = (callback: (arg: T) => void) => {\n const length = buffer.push(callback)\n if (length > BUFFER_LIMIT) {\n buffer.splice(0, 1)\n }\n }\n\n const remove: BoundedBuffer<T>['remove'] = (callback: (arg: T) => void) => {\n removeItem(buffer, callback)\n }\n\n const drain = (arg: T) => {\n buffer.forEach((callback) => callback(arg))\n buffer.length = 0\n }\n\n return {\n add,\n remove,\n drain,\n }\n}\n","import type { TelemetryEvent, TelemetryConfigurationEvent, TelemetryUsageEvent } from './telemetryEvent.types'\n\nexport const TelemetryType = {\n log: 'log',\n configuration: 'configuration',\n usage: 'usage',\n} as const\n\nexport const enum StatusType {\n debug = 'debug',\n error = 'error',\n}\n\nexport interface RuntimeEnvInfo {\n is_local_file: boolean\n is_worker: boolean\n}\n\nexport type RawTelemetryEvent = TelemetryEvent['telemetry']\nexport type RawTelemetryConfiguration = TelemetryConfigurationEvent['telemetry']['configuration']\nexport type RawTelemetryUsage = TelemetryUsageEvent['telemetry']['usage']\n","import type { Context } from '../../tools/serialisation/context'\nimport { ConsoleApiName } from '../../tools/display'\nimport { NO_ERROR_STACK_PRESENT_MESSAGE } from '../error/error'\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack'\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures'\nimport type { Configuration } from '../configuration'\nimport { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration'\nimport { Observable } from '../../tools/observable'\nimport { timeStampNow } from '../../tools/utils/timeUtils'\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor'\nimport { sendToExtension } from '../../tools/sendToExtension'\nimport { startsWith, arrayFrom, includes, assign } from '../../tools/utils/polyfills'\nimport { performDraw } from '../../tools/utils/numberUtils'\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify'\nimport { combine } from '../../tools/mergeInto'\nimport { NonErrorPrefix } from '../error/error.types'\nimport type { StackTrace } from '../../tools/stackTrace/computeStackTrace'\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace'\nimport { getConnectivity } from '../connectivity'\nimport { createBoundedBuffer } from '../../tools/boundedBuffer'\nimport type { TelemetryEvent } from './telemetryEvent.types'\nimport type {\n RawTelemetryConfiguration,\n RawTelemetryEvent,\n RuntimeEnvInfo,\n RawTelemetryUsage,\n} from './rawTelemetryEvent.types'\nimport { StatusType, TelemetryType } from './rawTelemetryEvent.types'\n\n// replaced at build time\ndeclare const __BUILD_ENV__SDK_VERSION__: string\n\nconst ALLOWED_FRAME_URLS = [\n 'https://www.datadoghq-browser-agent.com',\n 'https://www.datad0g-browser-agent.com',\n 'https://d3uc069fcn7uxw.cloudfront.net',\n 'https://d20xtzwzcl0ceb.cloudfront.net',\n 'http://localhost',\n '<anonymous>',\n]\n\nexport const enum TelemetryService {\n LOGS = 'browser-logs-sdk',\n RUM = 'browser-rum-sdk',\n}\n\nexport interface Telemetry {\n setContextProvider: (provider: () => Context) => void\n observable: Observable<TelemetryEvent & Context>\n enabled: boolean\n}\n\nconst TELEMETRY_EXCLUDED_SITES: string[] = [INTAKE_SITE_US1_FED]\n\n// eslint-disable-next-line local-rules/disallow-side-effects\nlet preStartTelemetryBuffer = createBoundedBuffer()\nlet onRawTelemetryEventCollected = (event: RawTelemetryEvent) => {\n preStartTelemetryBuffer.add(() => onRawTelemetryEventCollected(event))\n}\n\nexport function startTelemetry(telemetryService: TelemetryService, configuration: Configuration): Telemetry {\n let contextProvider: () => Context\n const observable = new Observable<TelemetryEvent & Context>()\n const alreadySentEvents = new Set<string>()\n\n const telemetryEnabled =\n !includes(TELEMETRY_EXCLUDED_SITES, configuration.site) && performDraw(configuration.telemetrySampleRate)\n\n const telemetryEnabledPerType = {\n [TelemetryType.log]: telemetryEnabled,\n [TelemetryType.configuration]: telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate),\n [TelemetryType.usage]: telemetryEnabled && performDraw(configuration.telemetryUsageSampleRate),\n }\n\n const runtimeEnvInfo = getRuntimeEnvInfo()\n onRawTelemetryEventCollected = (rawEvent: RawTelemetryEvent) => {\n const stringifiedEvent = jsonStringify(rawEvent)!\n if (\n telemetryEnabledPerType[rawEvent.type!] &&\n alreadySentEvents.size < configuration.maxTelemetryEventsPerPage &&\n !alreadySentEvents.has(stringifiedEvent)\n ) {\n const event = toTelemetryEvent(telemetryService, rawEvent, runtimeEnvInfo)\n observable.notify(event)\n sendToExtension('telemetry', event)\n alreadySentEvents.add(stringifiedEvent)\n }\n }\n startMonitorErrorCollection(addTelemetryError)\n\n function toTelemetryEvent(\n telemetryService: TelemetryService,\n event: RawTelemetryEvent,\n runtimeEnvInfo: RuntimeEnvInfo\n ): TelemetryEvent & Context {\n return combine(\n {\n type: 'telemetry' as const,\n date: timeStampNow(),\n service: telemetryService,\n version: __BUILD_ENV__SDK_VERSION__,\n source: 'browser' as const,\n _dd: {\n format_version: 2 as const,\n },\n telemetry: combine(event, {\n runtime_env: runtimeEnvInfo,\n connectivity: getConnectivity(),\n }),\n experimental_features: arrayFrom(getExperimentalFeatures()),\n },\n contextProvider !== undefined ? contextProvider() : {}\n ) as TelemetryEvent & Context\n }\n\n return {\n setContextProvider: (provider: () => Context) => {\n contextProvider = provider\n },\n observable,\n enabled: telemetryEnabled,\n }\n}\nfunction getRuntimeEnvInfo(): RuntimeEnvInfo {\n return {\n is_local_file: window.location.protocol === 'file:',\n is_worker: 'WorkerGlobalScope' in self,\n }\n}\n\nexport function startFakeTelemetry() {\n const events: RawTelemetryEvent[] = []\n\n onRawTelemetryEventCollected = (event: RawTelemetryEvent) => {\n events.push(event)\n }\n\n return events\n}\n\n// need to be called after telemetry context is provided and observers are registered\nexport function drainPreStartTelemetry() {\n preStartTelemetryBuffer.drain()\n}\n\nexport function resetTelemetry() {\n preStartTelemetryBuffer = createBoundedBuffer()\n onRawTelemetryEventCollected = (event: RawTelemetryEvent) => {\n preStartTelemetryBuffer.add(() => onRawTelemetryEventCollected(event))\n }\n}\n\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nexport function isTelemetryReplicationAllowed(configuration: Configuration) {\n return configuration.site === INTAKE_SITE_STAGING\n}\n\nexport function addTelemetryDebug(message: string, context?: Context) {\n displayIfDebugEnabled(ConsoleApiName.debug, message, context)\n onRawTelemetryEventCollected(\n assign(\n {\n type: TelemetryType.log,\n message,\n status: StatusType.debug,\n },\n context\n )\n )\n}\n\nexport function addTelemetryError(e: unknown, context?: Context) {\n onRawTelemetryEventCollected(\n assign(\n {\n type: TelemetryType.log,\n status: StatusType.error,\n },\n formatError(e),\n context\n )\n )\n}\n\nexport function addTelemetryConfiguration(configuration: RawTelemetryConfiguration) {\n onRawTelemetryEventCollected({\n type: TelemetryType.configuration,\n configuration,\n })\n}\n\nexport function addTelemetryUsage(usage: RawTelemetryUsage) {\n onRawTelemetryEventCollected({\n type: TelemetryType.usage,\n usage,\n })\n}\n\nexport function formatError(e: unknown) {\n if (e instanceof Error) {\n const stackTrace = computeStackTrace(e)\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n },\n message: stackTrace.message!,\n }\n }\n return {\n error: {\n stack: NO_ERROR_STACK_PRESENT_MESSAGE,\n },\n message: `${NonErrorPrefix.UNCAUGHT} ${jsonStringify(e)!}`,\n }\n}\n\nexport function scrubCustomerFrames(stackTrace: StackTrace) {\n stackTrace.stack = stackTrace.stack.filter(\n (frame) => !frame.url || ALLOWED_FRAME_URLS.some((allowedFrameUrl) => startsWith(frame.url!, allowedFrameUrl))\n )\n return stackTrace\n}\n","import { monitor } from '../tools/monitor'\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue'\nimport type { CookieStore, CookieStoreEventMap, VisualViewport, VisualViewportEventMap } from './browser.types'\n\nexport type TrustableEvent<E extends Event = Event> = E & { __ddIsTrusted?: boolean }\n\nexport const enum DOM_EVENT {\n BEFORE_UNLOAD = 'beforeunload',\n CLICK = 'click',\n DBL_CLICK = 'dblclick',\n KEY_DOWN = 'keydown',\n LOAD = 'load',\n POP_STATE = 'popstate',\n SCROLL = 'scroll',\n TOUCH_START = 'touchstart',\n TOUCH_END = 'touchend',\n TOUCH_MOVE = 'touchmove',\n VISIBILITY_CHANGE = 'visibilitychange',\n PAGE_SHOW = 'pageshow',\n FREEZE = 'freeze',\n RESUME = 'resume',\n DOM_CONTENT_LOADED = 'DOMContentLoaded',\n POINTER_DOWN = 'pointerdown',\n POINTER_UP = 'pointerup',\n POINTER_CANCEL = 'pointercancel',\n HASH_CHANGE = 'hashchange',\n PAGE_HIDE = 'pagehide',\n MOUSE_DOWN = 'mousedown',\n MOUSE_UP = 'mouseup',\n MOUSE_MOVE = 'mousemove',\n FOCUS = 'focus',\n BLUR = 'blur',\n CONTEXT_MENU = 'contextmenu',\n RESIZE = 'resize',\n CHANGE = 'change',\n INPUT = 'input',\n PLAY = 'play',\n PAUSE = 'pause',\n SECURITY_POLICY_VIOLATION = 'securitypolicyviolation',\n SELECTION_CHANGE = 'selectionchange',\n STORAGE = 'storage',\n}\n\ninterface AddEventListenerOptions {\n once?: boolean\n capture?: boolean\n passive?: boolean\n}\n\ntype EventMapFor<T> = T extends Window\n ? WindowEventMap & {\n // TS 4.9.5 does not support `freeze` and `resume` events yet\n freeze: Event\n resume: Event\n // TS 4.9.5 does not define `visibilitychange` on Window (only Document)\n visibilitychange: Event\n }\n : T extends Document\n ? DocumentEventMap\n : T extends HTMLElement\n ? HTMLElementEventMap\n : T extends VisualViewport\n ? VisualViewportEventMap\n : T extends ShadowRoot\n ? // ShadowRootEventMap is not yet defined in our supported TS version. Instead, use\n // GlobalEventHandlersEventMap which is more than enough as we only need to listen for events bubbling\n // through the ShadowRoot like \"change\" or \"input\"\n GlobalEventHandlersEventMap\n : T extends XMLHttpRequest\n ? XMLHttpRequestEventMap\n : T extends Performance\n ? PerformanceEventMap\n : T extends Worker\n ? WorkerEventMap\n : T extends CookieStore\n ? CookieStoreEventMap\n : Record<never, never>\n\n/**\n * Add an event listener to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener<Target extends EventTarget, EventName extends keyof EventMapFor<Target> & string>(\n configuration: { allowUntrustedEvents?: boolean | undefined },\n eventTarget: Target,\n eventName: EventName,\n listener: (event: EventMapFor<Target>[EventName] & { type: EventName }) => void,\n options?: AddEventListenerOptions\n) {\n return addEventListeners(configuration, eventTarget, [eventName], listener, options)\n}\n\n/**\n * Add event listeners to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners<Target extends EventTarget, EventName extends keyof EventMapFor<Target> & string>(\n configuration: { allowUntrustedEvents?: boolean | undefined },\n eventTarget: Target,\n eventNames: EventName[],\n listener: (event: EventMapFor<Target>[EventName] & { type: EventName }) => void,\n { once, capture, passive }: AddEventListenerOptions = {}\n) {\n const listenerWithMonitor = monitor((event: TrustableEvent) => {\n if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {\n return\n }\n if (once) {\n stop()\n }\n listener(event as unknown as EventMapFor<Target>[EventName] & { type: EventName })\n })\n\n const options = passive ? { capture, passive } : capture\n\n const add = getZoneJsOriginalValue(eventTarget, 'addEventListener')\n eventNames.forEach((eventName) => add.call(eventTarget, eventName, listenerWithMonitor, options))\n\n function stop() {\n const remove = getZoneJsOriginalValue(eventTarget, 'removeEventListener')\n eventNames.forEach((eventName) => remove.call(eventTarget, eventName, listenerWithMonitor, options))\n }\n\n return {\n stop,\n }\n}\n","import { addEventListener, DOM_EVENT } from '../../browser/addEventListener'\nimport type { Context } from '../../tools/serialisation/context'\nimport type { Configuration } from '../configuration'\nimport { combine } from '../../tools/mergeInto'\nimport type { ContextManager } from './contextManager'\nimport type { CustomerDataType } from './contextConstants'\n\nconst CONTEXT_STORE_KEY_PREFIX = '_dd_c'\n\nconst storageListeners: Array<{ stop: () => void }> = []\n\nexport function storeContextManager(\n configuration: Configuration,\n contextManager: ContextManager,\n productKey: string,\n customerDataType: CustomerDataType\n) {\n const storageKey = buildStorageKey(productKey, customerDataType)\n\n storageListeners.push(\n addEventListener(configuration, window, DOM_EVENT.STORAGE, ({ key }) => {\n if (storageKey === key) {\n synchronizeWithStorage()\n }\n })\n )\n contextManager.changeObservable.subscribe(dumpToStorage)\n\n contextManager.setContext(combine(getFromStorage(), contextManager.getContext()))\n\n function synchronizeWithStorage() {\n contextManager.setContext(getFromStorage())\n }\n\n function dumpToStorage() {\n localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()))\n }\n\n function getFromStorage() {\n const rawContext = localStorage.getItem(storageKey)\n return rawContext !== null ? (JSON.parse(rawContext) as Context) : {}\n }\n}\n\nexport function buildStorageKey(productKey: string, customerDataType: CustomerDataType) {\n return `${CONTEXT_STORE_KEY_PREFIX}_${productKey}_${customerDataType}`\n}\n\nexport function removeStorageListeners() {\n storageListeners.map((listener) => listener.stop())\n}\n","import { computeBytesCount } from './utils/byteUtils'\n\nexport interface Encoder<Output extends string | Uint8Array = string | Uint8Array> {\n /**\n * Whether this encoder might call the provided callbacks asynchronously\n */\n isAsync: boolean\n\n /**\n * Whether some data has been written since the last finish() or finishSync() call\n */\n isEmpty: boolean\n\n /**\n * Write a string to be encoded.\n *\n * This operation can be synchronous or asynchronous depending on the encoder implementation.\n *\n * If specified, the callback will be invoked when the operation finishes, unless the operation is\n * asynchronous and finish() or finishSync() is called in the meantime.\n */\n write(data: string, callback?: (additionalEncodedBytesCount: number) => void): void\n\n /**\n * Waits for pending data to be encoded and resets the encoder state.\n *\n * This operation can be synchronous or asynchronous depending on the encoder implementation.\n *\n * The callback will be invoked when the operation finishes, unless the operation is asynchronous\n * and another call to finish() or finishSync() occurs in the meantime.\n */\n finish(callback: (result: EncoderResult<Output>) => void): void\n\n /**\n * Resets the encoder state then returns the encoded data and any potential pending data directly,\n * discarding all pending write operations and finish() callbacks.\n */\n finishSync(): EncoderResult<Output> & { pendingData: string }\n\n /**\n * Returns a rough estimation of the bytes count if the data was encoded.\n */\n estimateEncodedBytesCount(data: string): number\n}\n\nexport interface EncoderResult<Output extends string | Uint8Array = string | Uint8Array> {\n output: Output\n outputBytesCount: number\n\n /**\n * An encoding type supported by HTTP Content-Encoding, if applicable.\n * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding#directives\n */\n encoding?: 'deflate'\n\n /**\n * Total bytes count of the input strings encoded to UTF-8.\n */\n rawBytesCount: number\n}\n\nexport function createIdentityEncoder(): Encoder<string> {\n let output = ''\n let outputBytesCount = 0\n\n return {\n isAsync: false,\n\n get isEmpty() {\n return !output\n },\n\n write(data, callback) {\n const additionalEncodedBytesCount = computeBytesCount(data)\n outputBytesCount += additionalEncodedBytesCount\n output += data\n if (callback) {\n callback(additionalEncodedBytesCount)\n }\n },\n\n finish(callback) {\n callback(this.finishSync())\n },\n\n finishSync() {\n const result = {\n output,\n outputBytesCount,\n rawBytesCount: outputBytesCount,\n pendingData: '',\n }\n output = ''\n outputBytesCount = 0\n return result\n },\n\n estimateEncodedBytesCount(data) {\n return data.length\n },\n }\n}\n","import type { Context } from '../../tools/serialisation/context'\nimport { display } from '../../tools/display'\nimport { getType } from '../../tools/utils/typeUtils'\nimport { assign } from '../../tools/utils/polyfills'\nimport type { User } from './user.types'\n\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\nexport function sanitizeUser(newUser: Context): Context {\n // We shallow clone only to prevent mutation of user data.\n const user = assign({}, newUser)\n const keys = ['id', 'name', 'email']\n keys.forEach((key) => {\n if (key in user) {\n user[key] = String(user[key])\n }\n })\n return user\n}\n\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser: User): boolean {\n const isValid = getType(newUser) === 'object'\n if (!isValid) {\n display.error('Unsupported user:', newUser)\n }\n return isValid\n}\n","import type { InitConfiguration } from '../domain/configuration'\nimport { display } from '../tools/display'\n\nexport function displayAlreadyInitializedError(sdkName: 'DD_RUM' | 'DD_LOGS', initConfiguration: InitConfiguration) {\n if (!initConfiguration.silentMultipleInit) {\n display.error(`${sdkName} is already initialized.`)\n }\n}\n","import { endsWith, includes } from '../tools/utils/polyfills'\nimport { getGlobalObject } from '../tools/getGlobalObject'\nimport type { DefaultPrivacyLevel } from '../domain/configuration'\n\nexport interface BrowserWindowWithEventBridge extends Window {\n DatadogEventBridge?: DatadogEventBridge\n}\n\nexport interface DatadogEventBridge {\n getCapabilities?(): string\n getPrivacyLevel?(): DefaultPrivacyLevel\n getAllowedWebViewHosts(): string\n send(msg: string): void\n}\n\nexport const enum BridgeCapability {\n RECORDS = 'records',\n}\n\nexport function getEventBridge<T, E>() {\n const eventBridgeGlobal = getEventBridgeGlobal()\n\n if (!eventBridgeGlobal) {\n return\n }\n\n return {\n getCapabilities() {\n return JSON.parse(eventBridgeGlobal.getCapabilities?.() || '[]') as BridgeCapability[]\n },\n getPrivacyLevel() {\n return eventBridgeGlobal.getPrivacyLevel?.()\n },\n getAllowedWebViewHosts() {\n return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts()) as string[]\n },\n send(eventType: T, event: E, viewId?: string) {\n const view = viewId ? { id: viewId } : undefined\n eventBridgeGlobal.send(JSON.stringify({ eventType, event, view }))\n },\n }\n}\n\nexport function bridgeSupports(capability: BridgeCapability): boolean {\n const bridge = getEventBridge()\n return !!bridge && includes(bridge.getCapabilities(), capability)\n}\n\nexport function canUseEventBridge(currentHost = getGlobalObject<Window>().location?.hostname): boolean {\n const bridge = getEventBridge()\n return (\n !!bridge &&\n bridge\n .getAllowedWebViewHosts()\n .some((allowedHost) => currentHost === allowedHost || endsWith(currentHost, `.${allowedHost}`))\n )\n}\n\nfunction getEventBridgeGlobal() {\n return getGlobalObject<BrowserWindowWithEventBridge>().DatadogEventBridge\n}\n","import { setTimeout } from './timer'\nimport { callMonitored } from './monitor'\nimport { noop } from './utils/functionUtils'\nimport { arrayFrom, startsWith } from './utils/polyfills'\nimport { createHandlingStack } from './stackTrace/handlingStack'\n\n/**\n * Object passed to the callback of an instrumented method call. See `instrumentMethod` for more\n * info.\n */\nexport type InstrumentedMethodCall<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET> = {\n /**\n * The target object on which the method was called.\n */\n target: TARGET\n\n /**\n * The parameters with which the method was called.\n *\n * Note: if needed, parameters can be mutated by the instrumentation\n */\n parameters: Parameters<TARGET[METHOD]>\n\n /**\n * Registers a callback that will be called after the original method is called, with the method\n * result passed as argument.\n */\n onPostCall: (callback: PostCallCallback<TARGET, METHOD>) => void\n\n /**\n * The stack trace of the method call.\n */\n handlingStack?: string\n}\n\ntype PostCallCallback<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET> = (\n result: ReturnType<TARGET[METHOD]>\n) => void\n\n/**\n * Instruments a method on a object, calling the given callback before the original method is\n * invoked. The callback receives an object with information about the method call.\n *\n * This function makes sure that we are \"good citizens\" regarding third party instrumentations: when\n * removing the instrumentation, the original method is usually restored, but if a third party\n * instrumentation was set after ours, we keep it in place and just replace our instrumentation with\n * a noop.\n *\n * Note: it is generally better to instrument methods that are \"owned\" by the object instead of ones\n * that are inherited from the prototype chain. Example:\n * * do: `instrumentMethod(Array.prototype, 'push', ...)`\n * * don't: `instrumentMethod([], 'push', ...)`\n *\n * This method is also used to set event handler properties (ex: window.onerror = ...), as it has\n * the same requirements as instrumenting a method:\n * * if the event handler is already set by a third party, we need to call it and not just blindly\n * override it.\n * * if the event handler is set by a third party after us, we need to keep it in place when\n * removing ours.\n *\n * @example\n *\n * instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {\n * console.log('Before calling fetch on', target, 'with parameters', parameters)\n *\n * onPostCall((result) => {\n * console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)\n * })\n * })\n */\nexport function instrumentMethod<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET & string>(\n targetPrototype: TARGET,\n method: METHOD,\n onPreCall: (this: null, callInfos: InstrumentedMethodCall<TARGET, METHOD>) => void,\n { computeHandlingStack }: { computeHandlingStack?: boolean } = {}\n) {\n let original = targetPrototype[method]\n\n if (typeof original !== 'function') {\n if (startsWith(method, 'on')) {\n original = noop as TARGET[METHOD]\n } else {\n return { stop: noop }\n }\n }\n\n let stopped = false\n\n const instrumentation = function (this: TARGET): ReturnType<TARGET[METHOD]> | undefined {\n if (stopped) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return original.apply(this, arguments as unknown as Parameters<TARGET[METHOD]>)\n }\n\n const parameters = arrayFrom(arguments) as Parameters<TARGET[METHOD]>\n\n let postCallCallback: PostCallCallback<TARGET, METHOD> | undefined\n\n callMonitored(onPreCall, null, [\n {\n target: this,\n parameters,\n onPostCall: (callback) => {\n postCallCallback = callback\n },\n handlingStack: computeHandlingStack ? createHandlingStack() : undefined,\n },\n ])\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const result = original.apply(this, parameters)\n\n if (postCallCallback) {\n callMonitored(postCallCallback, null, [result])\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result\n }\n\n targetPrototype[method] = instrumentation as TARGET[METHOD]\n\n return {\n stop: () => {\n stopped = true\n // If the instrumentation has been removed by a third party, keep the last one\n if (targetPrototype[method] === instrumentation) {\n targetPrototype[method] = original\n }\n },\n }\n}\n\nexport function instrumentSetter<TARGET extends { [key: string]: any }, PROPERTY extends keyof TARGET>(\n targetPrototype: TARGET,\n property: PROPERTY,\n after: (target: TARGET, value: TARGET[PROPERTY]) => void\n) {\n const originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property)\n if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n return { stop: noop }\n }\n\n const stoppedInstrumentation = noop\n let instrumentation = (target: TARGET, value: TARGET[PROPERTY]) => {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(() => {\n if (instrumentation !== stoppedInstrumentation) {\n after(target, value)\n }\n }, 0)\n }\n\n const instrumentationWrapper = function (this: TARGET, value: TARGET[PROPERTY]) {\n originalDescriptor.set!.call(this, value)\n instrumentation(this, value)\n }\n\n Object.defineProperty(targetPrototype, property, {\n set: instrumentationWrapper,\n })\n\n return {\n stop: () => {\n if (Object.getOwnPropertyDescriptor(targetPrototype, property)?.set === instrumentationWrapper) {\n Object.defineProperty(targetPrototype, property, originalDescriptor)\n }\n instrumentation = stoppedInstrumentation\n },\n }\n}\n","import { jsonStringify } from '../serialisation/jsonStringify'\n\nexport function normalizeUrl(url: string) {\n return buildUrl(url, location.href).href\n}\n\nexport function isValidUrl(url: string) {\n try {\n return !!buildUrl(url)\n } catch {\n return false\n }\n}\n\nexport function getPathName(url: string) {\n const pathname = buildUrl(url).pathname\n return pathname[0] === '/' ? pathname : `/${pathname}`\n}\n\nexport function buildUrl(url: string, base?: string) {\n const supportedURL = getSupportedUrl()\n if (supportedURL) {\n try {\n return base !== undefined ? new supportedURL(url, base) : new supportedURL(url)\n } catch (error) {\n throw new Error(`Failed to construct URL: ${String(error)} ${jsonStringify({ url, base })!}`)\n }\n }\n if (base === undefined && !/:/.test(url)) {\n throw new Error(`Invalid URL: '${url}'`)\n }\n let doc = document\n const anchorElement = doc.createElement('a')\n if (base !== undefined) {\n doc = document.implementation.createHTMLDocument('')\n const baseElement = doc.createElement('base')\n baseElement.href = base\n doc.head.appendChild(baseElement)\n doc.body.appendChild(anchorElement)\n }\n anchorElement.href = url\n return anchorElement\n}\n\nconst originalURL = URL\nlet isURLSupported: boolean | undefined\nfunction getSupportedUrl(): typeof URL | undefined {\n if (isURLSupported === undefined) {\n try {\n const url = new originalURL('http://test/path')\n isURLSupported = url.href === 'http://test/path'\n } catch {\n isURLSupported = false\n }\n }\n return isURLSupported ? originalURL : undefined\n}\n","import type { InstrumentedMethodCall } from '../tools/instrumentMethod'\nimport { instrumentMethod } from '../tools/instrumentMethod'\nimport { monitor } from '../tools/monitor'\nimport { Observable } from '../tools/observable'\nimport { assign } from '../tools/utils/polyfills'\nimport type { ClocksState } from '../tools/utils/timeUtils'\nimport { clocksNow } from '../tools/utils/timeUtils'\nimport { normalizeUrl } from '../tools/utils/urlPolyfill'\n\ninterface FetchContextBase {\n method: string\n startClocks: ClocksState\n input: unknown\n init?: RequestInit\n url: string\n handlingStack?: string\n}\n\nexport interface FetchStartContext extends FetchContextBase {\n state: 'start'\n}\n\nexport interface FetchResolveContext extends FetchContextBase {\n state: 'resolve'\n status: number\n response?: Response\n responseType?: string\n isAborted: boolean\n error?: Error\n}\n\nexport type FetchContext = FetchStartContext | FetchResolveContext\n\nlet fetchObservable: Observable<FetchContext> | undefined\n\nexport function initFetchObservable() {\n if (!fetchObservable) {\n fetchObservable = createFetchObservable()\n }\n return fetchObservable\n}\n\nexport function resetFetchObservable() {\n fetchObservable = undefined\n}\n\nfunction createFetchObservable() {\n return new Observable<FetchContext>((observable) => {\n if (!window.fetch) {\n return\n }\n\n const { stop } = instrumentMethod(window, 'fetch', (call) => beforeSend(call, observable), {\n computeHandlingStack: true,\n })\n\n return stop\n })\n}\n\nfunction beforeSend(\n { parameters, onPostCall, handlingStack }: InstrumentedMethodCall<Window, 'fetch'>,\n observable: Observable<FetchContext>\n) {\n const [input, init] = parameters\n let methodFromParams = init && init.method\n\n if (methodFromParams === undefined && input instanceof Request) {\n methodFromParams = input.method\n }\n\n const method = methodFromParams !== undefined ? String(methodFromParams).toUpperCase() : 'GET'\n const url = input instanceof Request ? input.url : normalizeUrl(String(input))\n const startClocks = clocksNow()\n\n const context: FetchStartContext = {\n state: 'start',\n init,\n input,\n method,\n startClocks,\n url,\n handlingStack,\n }\n\n observable.notify(context)\n\n // Those properties can be changed by observable subscribers\n parameters[0] = context.input as RequestInfo | URL\n parameters[1] = context.init\n\n onPostCall((responsePromise) => afterSend(observable, responsePromise, context))\n}\n\nfunction afterSend(\n observable: Observable<FetchContext>,\n responsePromise: Promise<Response>,\n startContext: FetchStartContext\n) {\n const context = startContext as unknown as FetchResolveContext\n\n function reportFetch(partialContext: Partial<FetchResolveContext>) {\n context.state = 'resolve'\n assign(context, partialContext)\n observable.notify(context)\n }\n\n responsePromise.then(\n monitor((response) => {\n reportFetch({\n response,\n responseType: response.type,\n status: response.status,\n isAborted: false,\n })\n }),\n monitor((error: Error) => {\n reportFetch({\n status: 0,\n isAborted:\n context.init?.signal?.aborted || (error instanceof DOMException && error.code === DOMException.ABORT_ERR),\n error,\n })\n })\n )\n}\n","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder?: string): string {\n return placeholder\n ? // eslint-disable-next-line no-bitwise\n (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n : `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, generateUUID)\n}\n\nconst COMMA_SEPARATED_KEY_VALUE = /([\\w-]+)\\s*=\\s*([^;]+)/g\n\nexport function findCommaSeparatedValue(rawString: string, name: string): string | undefined {\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString)\n if (match) {\n if (match[1] === name) {\n return match[2]\n }\n } else {\n break\n }\n }\n}\n\nexport function findCommaSeparatedValues(rawString: string): Map<string, string> {\n const result = new Map<string, string>()\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString)\n if (match) {\n result.set(match[1], match[2])\n } else {\n break\n }\n }\n return result\n}\n\nexport function safeTruncate(candidate: string, length: number, suffix = '') {\n const lastChar = candidate.charCodeAt(length - 1)\n const isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff\n const correctedLength = isLastCharSurrogatePair ? length + 1 : length\n\n if (candidate.length <= correctedLength) {\n return candidate\n }\n\n return `${candidate.slice(0, correctedLength)}${suffix}`\n}\n","import { display } from '../tools/display'\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils'\nimport { findCommaSeparatedValue, findCommaSeparatedValues, generateUUID } from '../tools/utils/stringUtils'\n\nexport interface CookieOptions {\n secure?: boolean\n crossSite?: boolean\n partitioned?: boolean\n domain?: string\n}\n\nexport function setCookie(name: string, value: string, expireDelay: number, options?: CookieOptions) {\n const date = new Date()\n date.setTime(date.getTime() + expireDelay)\n const expires = `expires=${date.toUTCString()}`\n const sameSite = options && options.crossSite ? 'none' : 'strict'\n const domain = options && options.domain ? `;domain=${options.domain}` : ''\n const secure = options && options.secure ? ';secure' : ''\n const partitioned = options && options.partitioned ? ';partitioned' : ''\n document.cookie = `${name}=${value};${expires};path=/;samesite=${sameSite}${domain}${secure}${partitioned}`\n}\n\nexport function getCookie(name: string) {\n return findCommaSeparatedValue(document.cookie, name)\n}\n\nlet initCookieParsed: Map<string, string> | undefined\n\n/**\n * Returns a cached value of the cookie. Use this during SDK initialization (and whenever possible)\n * to avoid accessing document.cookie multiple times.\n */\nexport function getInitCookie(name: string) {\n if (!initCookieParsed) {\n initCookieParsed = findCommaSeparatedValues(document.cookie)\n }\n return initCookieParsed.get(name)\n}\n\nexport function resetInitCookies() {\n initCookieParsed = undefined\n}\n\nexport function deleteCookie(name: string, options?: CookieOptions) {\n setCookie(name, '', 0, options)\n}\n\nexport function areCookiesAuthorized(options: CookieOptions): boolean {\n if (document.cookie === undefined || document.cookie === null) {\n return false\n }\n try {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n const testCookieName = `dd_cookie_test_${generateUUID()}`\n const testCookieValue = 'test'\n setCookie(testCookieName, testCookieValue, ONE_MINUTE, options)\n const isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue\n deleteCookie(testCookieName, options)\n return isCookieCorrectlySet\n } catch (error) {\n display.error(error)\n return false\n }\n}\n\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nlet getCurrentSiteCache: string | undefined\nexport function getCurrentSite() {\n if (getCurrentSiteCache === undefined) {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n const testCookieName = `dd_site_test_${generateUUID()}`\n const testCookieValue = 'test'\n\n const domainLevels = window.location.hostname.split('.')\n let candidateDomain = domainLevels.pop()!\n while (domainLevels.length && !getCookie(testCookieName)) {\n candidateDomain = `${domainLevels.pop()!}.${candidateDomain}`\n setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain })\n }\n deleteCookie(testCookieName, { domain: candidateDomain })\n getCurrentSiteCache = candidateDomain\n }\n return getCurrentSiteCache\n}\n","import { getInitCookie } from '../../browser/cookie'\n\nexport const SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id'\nexport const SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id'\nexport const SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum'\n\nexport interface BrowserWindow extends Window {\n _DATADOG_SYNTHETICS_PUBLIC_ID?: unknown\n _DATADOG_SYNTHETICS_RESULT_ID?: unknown\n _DATADOG_SYNTHETICS_INJECTS_RUM?: unknown\n}\n\nexport function willSyntheticsInjectRum(): boolean {\n return Boolean(\n (window as BrowserWindow)._DATADOG_SYNTHETICS_INJECTS_RUM || getInitCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME)\n )\n}\n\nexport function getSyntheticsTestId(): string | undefined {\n const value = (window as BrowserWindow)._DATADOG_SYNTHETICS_PUBLIC_ID || getInitCookie(SYNTHETICS_TEST_ID_COOKIE_NAME)\n return typeof value === 'string' ? value : undefined\n}\n\nexport function getSyntheticsResultId(): string | undefined {\n const value =\n (window as BrowserWindow)._DATADOG_SYNTHETICS_RESULT_ID || getInitCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME)\n return typeof value === 'string' ? value : undefined\n}\n","// Exported only for tests\nexport const enum Browser {\n IE,\n CHROMIUM,\n SAFARI,\n OTHER,\n}\n\nexport function isIE() {\n return detectBrowserCached() === Browser.IE\n}\n\nexport function isChromium() {\n return detectBrowserCached() === Browser.CHROMIUM\n}\n\nexport function isSafari() {\n return detectBrowserCached() === Browser.SAFARI\n}\n\nlet browserCache: Browser | undefined\nfunction detectBrowserCached() {\n return browserCache ?? (browserCache = detectBrowser())\n}\n\n// Exported only for tests\nexport function detectBrowser(browserWindow: Window = window) {\n const userAgent = browserWindow.navigator.userAgent\n if ((browserWindow as any).chrome || /HeadlessChrome/.test(userAgent)) {\n return Browser.CHROMIUM\n }\n\n if (\n // navigator.vendor is deprecated, but it is the most resilient way we found to detect\n // \"Apple maintained browsers\" (AKA Safari). If one day it gets removed, we still have the\n // useragent test as a semi-working fallback.\n browserWindow.navigator.vendor?.indexOf('Apple') === 0 ||\n (/safari/i.test(userAgent) && !/chrome|android/i.test(userAgent))\n ) {\n return Browser.SAFARI\n }\n\n if ((browserWindow.document as any).documentMode) {\n return Browser.IE\n }\n\n return Browser.OTHER\n}\n","import type { CookieOptions } from '../../../browser/cookie'\nimport type { SessionState } from '../sessionState'\n\nexport const SESSION_STORE_KEY = '_dd_s'\n\nexport type SessionStoreStrategyType = { type: 'Cookie'; cookieOptions: CookieOptions } | { type: 'LocalStorage' }\n\nexport interface SessionStoreStrategy {\n isLockEnabled: boolean\n persistSession: (session: SessionState) => void\n retrieveSession: () => SessionState\n expireSession: () => void\n}\n","import { ONE_HOUR, ONE_MINUTE } from '../../tools/utils/timeUtils'\n\nexport const SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR\nexport const SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE\n","import { isEmptyObject } from '../../tools/utils/objectUtils'\nimport { objectEntries } from '../../tools/utils/polyfills'\nimport { dateNow } from '../../tools/utils/timeUtils'\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from './sessionConstants'\n\nconst SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/\nconst SESSION_ENTRY_SEPARATOR = '&'\n\nexport const EXPIRED = '1'\n\nexport interface SessionState {\n id?: string\n created?: string\n expire?: string\n isExpired?: typeof EXPIRED\n\n [key: string]: string | undefined\n}\n\nexport function getExpiredSessionState(): SessionState {\n return {\n isExpired: EXPIRED,\n }\n}\n\nexport function isSessionInNotStartedState(session: SessionState) {\n return isEmptyObject(session)\n}\n\nexport function isSessionStarted(session: SessionState) {\n return !isSessionInNotStartedState(session)\n}\n\nexport function isSessionInExpiredState(session: SessionState) {\n return session.isExpired !== undefined || !isActiveSession(session)\n}\n\n// An active session is a session in either `Tracked` or `NotTracked` state\nfunction isActiveSession(sessionState: SessionState) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return (\n (sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&\n (sessionState.expire === undefined || dateNow() < Number(sessionState.expire))\n )\n}\n\nexport function expandSessionState(session: SessionState) {\n session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY)\n}\n\nexport function toSessionString(session: SessionState) {\n return objectEntries(session)\n .map(([key, value]) => `${key}=${value}`)\n .join(SESSION_ENTRY_SEPARATOR)\n}\n\nexport function toSessionState(sessionString: string | undefined | null) {\n const session: SessionState = {}\n if (isValidSessionString(sessionString)) {\n sessionString.split(SESSION_ENTRY_SEPARATOR).forEach((entry) => {\n const matches = SESSION_ENTRY_REGEXP.exec(entry)\n if (matches !== null) {\n const [, key, value] = matches\n session[key] = value\n }\n })\n }\n return session\n}\n\nfunction isValidSessionString(sessionString: string | undefined | null): sessionString is string {\n return (\n !!sessionString &&\n (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString))\n )\n}\n","import { getInitCookie } from '../../browser/cookie'\nimport type { SessionStoreStrategy } from './storeStrategies/sessionStoreStrategy'\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy'\nimport type { SessionState } from './sessionState'\nimport { expandSessionState, isSessionStarted } from './sessionState'\n\nexport const OLD_SESSION_COOKIE_NAME = '_dd'\nexport const OLD_RUM_COOKIE_NAME = '_dd_r'\nexport const OLD_LOGS_COOKIE_NAME = '_dd_l'\n\n// duplicate values to avoid dependency issues\nexport const RUM_SESSION_KEY = 'rum'\nexport const LOGS_SESSION_KEY = 'logs'\n\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(cookieStoreStrategy: SessionStoreStrategy) {\n const sessionString = getInitCookie(SESSION_STORE_KEY)\n if (!sessionString) {\n const oldSessionId = getInitCookie(OLD_SESSION_COOKIE_NAME)\n const oldRumType = getInitCookie(OLD_RUM_COOKIE_NAME)\n const oldLogsType = getInitCookie(OLD_LOGS_COOKIE_NAME)\n const session: SessionState = {}\n\n if (oldSessionId) {\n session.id = oldSessionId\n }\n if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n session[LOGS_SESSION_KEY] = oldLogsType\n }\n if (oldRumType && /^[012]$/.test(oldRumType)) {\n session[RUM_SESSION_KEY] = oldRumType\n }\n\n if (isSessionStarted(session)) {\n expandSessionState(session)\n cookieStoreStrategy.persistSession(session)\n }\n }\n}\n","import { isChromium } from '../../../tools/utils/browserDetection'\nimport type { CookieOptions } from '../../../browser/cookie'\nimport { getCurrentSite, areCookiesAuthorized, getCookie, setCookie } from '../../../browser/cookie'\nimport type { InitConfiguration } from '../../configuration'\nimport { tryOldCookiesMigration } from '../oldCookiesMigration'\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from '../sessionConstants'\nimport type { SessionState } from '../sessionState'\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState'\nimport type { SessionStoreStrategy, SessionStoreStrategyType } from './sessionStoreStrategy'\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy'\n\nexport function selectCookieStrategy(initConfiguration: InitConfiguration): SessionStoreStrategyType | undefined {\n const cookieOptions = buildCookieOptions(initConfiguration)\n return areCookiesAuthorized(cookieOptions) ? { type: 'Cookie', cookieOptions } : undefined\n}\n\nexport function initCookieStrategy(cookieOptions: CookieOptions): SessionStoreStrategy {\n const cookieStore = {\n /**\n * Lock strategy allows mitigating issues due to concurrent access to cookie.\n * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.\n */\n isLockEnabled: isChromium(),\n persistSession: persistSessionCookie(cookieOptions),\n retrieveSession: retrieveSessionCookie,\n expireSession: () => expireSessionCookie(cookieOptions),\n }\n\n tryOldCookiesMigration(cookieStore)\n\n return cookieStore\n}\n\nfunction persistSessionCookie(options: CookieOptions) {\n return (session: SessionState) => {\n setCookie(SESSION_STORE_KEY, toSessionString(session), SESSION_EXPIRATION_DELAY, options)\n }\n}\n\nfunction expireSessionCookie(options: CookieOptions) {\n setCookie(SESSION_STORE_KEY, toSessionString(getExpiredSessionState()), SESSION_TIME_OUT_DELAY, options)\n}\n\nfunction retrieveSessionCookie(): SessionState {\n const sessionString = getCookie(SESSION_STORE_KEY)\n return toSessionState(sessionString)\n}\n\nexport function buildCookieOptions(initConfiguration: InitConfiguration) {\n const cookieOptions: CookieOptions = {}\n\n cookieOptions.secure =\n !!initConfiguration.useSecureSessionCookie ||\n !!initConfiguration.usePartitionedCrossSiteSessionCookie ||\n !!initConfiguration.useCrossSiteSessionCookie\n cookieOptions.crossSite =\n !!initConfiguration.usePartitionedCrossSiteSessionCookie || !!initConfiguration.useCrossSiteSessionCookie\n cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie\n\n if (initConfiguration.trackSessionAcrossSubdomains) {\n cookieOptions.domain = getCurrentSite()\n }\n\n return cookieOptions\n}\n","import { generateUUID } from '../../../tools/utils/stringUtils'\nimport type { SessionState } from '../sessionState'\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState'\nimport type { SessionStoreStrategy, SessionStoreStrategyType } from './sessionStoreStrategy'\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy'\n\nconst LOCAL_STORAGE_TEST_KEY = '_dd_test_'\n\nexport function selectLocalStorageStrategy(): SessionStoreStrategyType | undefined {\n try {\n const id = generateUUID()\n const testKey = `${LOCAL_STORAGE_TEST_KEY}${id}`\n localStorage.setItem(testKey, id)\n const retrievedId = localStorage.getItem(testKey)\n localStorage.removeItem(testKey)\n return id === retrievedId ? { type: 'LocalStorage' } : undefined\n } catch (e) {\n return undefined\n }\n}\n\nexport function initLocalStorageStrategy(): SessionStoreStrategy {\n return {\n isLockEnabled: false,\n persistSession: persistInLocalStorage,\n retrieveSession: retrieveSessionFromLocalStorage,\n expireSession: expireSessionFromLocalStorage,\n }\n}\n\nfunction persistInLocalStorage(sessionState: SessionState) {\n localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState))\n}\n\nfunction retrieveSessionFromLocalStorage(): SessionState {\n const sessionString = localStorage.getItem(SESSION_STORE_KEY)\n return toSessionState(sessionString)\n}\n\nfunction expireSessionFromLocalStorage() {\n persistInLocalStorage(getExpiredSessionState())\n}\n","import { setTimeout } from '../../tools/timer'\nimport { generateUUID } from '../../tools/utils/stringUtils'\nimport { assign } from '../../tools/utils/polyfills'\nimport type { SessionStoreStrategy } from './storeStrategies/sessionStoreStrategy'\nimport type { SessionState } from './sessionState'\nimport { expandSessionState, isSessionInExpiredState } from './sessionState'\n\ntype Operations = {\n process: (sessionState: SessionState) => SessionState | undefined\n after?: (sessionState: SessionState) => void\n}\n\nexport const LOCK_RETRY_DELAY = 10\nexport const LOCK_MAX_TRIES = 100\nconst bufferedOperations: Operations[] = []\nlet ongoingOperations: Operations | undefined\n\nexport function processSessionStoreOperations(\n operations: Operations,\n sessionStoreStrategy: SessionStoreStrategy,\n numberOfRetries = 0\n) {\n const { isLockEnabled, persistSession, expireSession } = sessionStoreStrategy\n const persistWithLock = (session: SessionState) => persistSession(assign({}, session, { lock: currentLock }))\n const retrieveStore = () => {\n const session = sessionStoreStrategy.retrieveSession()\n const lock = session.lock\n\n if (session.lock) {\n delete session.lock\n }\n\n return {\n session,\n lock,\n }\n }\n\n if (!ongoingOperations) {\n ongoingOperations = operations\n }\n if (operations !== ongoingOperations) {\n bufferedOperations.push(operations)\n return\n }\n if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {\n next(sessionStoreStrategy)\n return\n }\n let currentLock: string\n let currentStore = retrieveStore()\n if (isLockEnabled) {\n // if someone has lock, retry later\n if (currentStore.lock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries)\n return\n }\n // acquire lock\n currentLock = generateUUID()\n persistWithLock(currentStore.session)\n // if lock is not acquired, retry later\n currentStore = retrieveStore()\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries)\n return\n }\n }\n let processedSession = operations.process(currentStore.session)\n if (isLockEnabled) {\n // if lock corrupted after process, retry later\n currentStore = retrieveStore()\n if (currentStore.lock !== currentLock!) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries)\n return\n }\n }\n if (processedSession) {\n if (isSessionInExpiredState(processedSession)) {\n expireSession()\n } else {\n expandSessionState(processedSession)\n isLockEnabled ? persistWithLock(processedSession) : persistSession(processedSession)\n }\n }\n if (isLockEnabled) {\n // correctly handle lock around expiration would require to handle this case properly at several levels\n // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n if (!(processedSession && isSessionInExpiredState(processedSession))) {\n // if lock corrupted after persist, retry later\n currentStore = retrieveStore()\n if (currentStore.lock !== currentLock!) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries)\n return\n }\n persistSession(currentStore.session)\n processedSession = currentStore.session\n }\n }\n // call after even if session is not persisted in order to perform operations on\n // up-to-date session state value => the value could have been modified by another tab\n operations.after?.(processedSession || currentStore.session)\n next(sessionStoreStrategy)\n}\n\nfunction retryLater(operations: Operations, sessionStore: SessionStoreStrategy, currentNumberOfRetries: number) {\n setTimeout(() => {\n processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1)\n }, LOCK_RETRY_DELAY)\n}\n\nfunction next(sessionStore: SessionStoreStrategy) {\n ongoingOperations = undefined\n const nextOperations = bufferedOperations.shift()\n if (nextOperations) {\n processSessionStoreOperations(nextOperations, sessionStore)\n }\n}\n","import { clearInterval, setInterval } from '../../tools/timer'\nimport { Observable } from '../../tools/observable'\nimport { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils'\nimport { throttle } from '../../tools/utils/functionUtils'\nimport { generateUUID } from '../../tools/utils/stringUtils'\nimport type { InitConfiguration } from '../configuration'\nimport { assign } from '../../tools/utils/polyfills'\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie'\nimport type { SessionStoreStrategyType } from './storeStrategies/sessionStoreStrategy'\nimport {\n getExpiredSessionState,\n isSessionInExpiredState,\n isSessionInNotStartedState,\n isSessionStarted,\n} from './sessionState'\nimport type { SessionState } from './sessionState'\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage'\nimport { processSessionStoreOperations } from './sessionStoreOperations'\n\nexport interface SessionStore {\n expandOrRenewSession: () => void\n expandSession: () => void\n getSession: () => SessionState\n restartSession: () => void\n renewObservable: Observable<void>\n expireObservable: Observable<void>\n sessionStateUpdateObservable: Observable<{ previousState: SessionState; newState: SessionState }>\n expire: () => void\n stop: () => void\n updateSessionState: (state: Partial<SessionState>) => void\n}\n\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport const STORAGE_POLL_DELAY = ONE_SECOND\n\n/**\n * Checks if cookies are available as the preferred storage\n * Else, checks if LocalStorage is allowed and available\n */\nexport function selectSessionStoreStrategyType(\n initConfiguration: InitConfiguration\n): SessionStoreStrategyType | undefined {\n let sessionStoreStrategyType = selectCookieStrategy(initConfiguration)\n if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n sessionStoreStrategyType = selectLocalStorageStrategy()\n }\n return sessionStoreStrategyType\n}\n\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore<TrackingType extends string>(\n sessionStoreStrategyType: SessionStoreStrategyType,\n productKey: string,\n computeSessionState: (rawTrackingType?: string) => { trackingType: TrackingType; isTracked: boolean }\n): SessionStore {\n const renewObservable = new Observable<void>()\n const expireObservable = new Observable<void>()\n const sessionStateUpdateObservable = new Observable<{ previousState: SessionState; newState: SessionState }>()\n\n const sessionStoreStrategy =\n sessionStoreStrategyType.type === 'Cookie'\n ? initCookieStrategy(sessionStoreStrategyType.cookieOptions)\n : initLocalStorageStrategy()\n const { expireSession } = sessionStoreStrategy\n\n const watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY)\n let sessionCache: SessionState\n\n startSession()\n\n const { throttled: throttledExpandOrRenewSession, cancel: cancelExpandOrRenewSession } = throttle(() => {\n processSessionStoreOperations(\n {\n process: (sessionState) => {\n if (isSessionInNotStartedState(sessionState)) {\n return\n }\n\n const synchronizedSession = synchronizeSession(sessionState)\n expandOrRenewSessionState(synchronizedSession)\n return synchronizedSession\n },\n after: (sessionState) => {\n if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n renewSessionInCache(sessionState)\n }\n sessionCache = sessionState\n },\n },\n sessionStoreStrategy\n )\n }, STORAGE_POLL_DELAY)\n\n function expandSession() {\n processSessionStoreOperations(\n {\n process: (sessionState) => (hasSessionInCache() ? synchronizeSession(sessionState) : undefined),\n },\n sessionStoreStrategy\n )\n }\n\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session store\n * - if the session is not active, clear the session store and expire the session cache\n */\n function watchSession() {\n processSessionStoreOperations(\n {\n process: (sessionState) => (isSessionInExpiredState(sessionState) ? getExpiredSessionState() : undefined),\n after: synchronizeSession,\n },\n sessionStoreStrategy\n )\n }\n\n function synchronizeSession(sessionState: SessionState) {\n if (isSessionInExpiredState(sessionState)) {\n sessionState = getExpiredSessionState()\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache()\n } else {\n sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState })\n sessionCache = sessionState\n }\n }\n return sessionState\n }\n\n function startSession() {\n processSessionStoreOperations(\n {\n process: (sessionState) => {\n if (isSessionInNotStartedState(sessionState)) {\n return getExpiredSessionState()\n }\n },\n after: (sessionState) => {\n sessionCache = sessionState\n },\n },\n sessionStoreStrategy\n )\n }\n\n function expandOrRenewSessionState(sessionState: SessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return false\n }\n\n const { trackingType, isTracked } = computeSessionState(sessionState[productKey])\n sessionState[productKey] = trackingType\n delete sessionState.isExpired\n if (isTracked && !sessionState.id) {\n sessionState.id = generateUUID()\n sessionState.created = String(dateNow())\n }\n }\n\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined\n }\n\n function isSessionInCacheOutdated(sessionState: SessionState) {\n return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey]\n }\n\n function expireSessionInCache() {\n sessionCache = getExpiredSessionState()\n expireObservable.notify()\n }\n\n function renewSessionInCache(sessionState: SessionState) {\n sessionCache = sessionState\n renewObservable.notify()\n }\n\n function updateSessionState(partialSessionState: Partial<SessionState>) {\n processSessionStoreOperations(\n {\n process: (sessionState) => assign({}, sessionState, partialSessionState),\n after: synchronizeSession,\n },\n sessionStoreStrategy\n )\n }\n\n return {\n expandOrRenewSession: throttledExpandOrRenewSession,\n expandSession,\n getSession: () => sessionCache,\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable,\n restartSession: startSession,\n expire: () => {\n cancelExpandOrRenewSession()\n expireSession()\n synchronizeSession(getExpiredSessionState())\n },\n stop: () => {\n clearInterval(watchSessionTimeoutId)\n },\n updateSessionState,\n }\n}\n","import type { Payload } from '../../transport'\nimport { timeStampNow } from '../../tools/utils/timeUtils'\nimport { normalizeUrl } from '../../tools/utils/urlPolyfill'\nimport { generateUUID } from '../../tools/utils/stringUtils'\nimport type { InitConfiguration } from './configuration'\nimport { INTAKE_SITE_US1, INTAKE_SITE_FED_STAGING, PCI_INTAKE_HOST_US1 } from './intakeSites'\n\n// replaced at build time\ndeclare const __BUILD_ENV__SDK_VERSION__: string\n\nexport type TrackType = 'logs' | 'rum' | 'replay'\nexport type ApiType =\n | 'xhr'\n | 'fetch'\n | 'beacon'\n // 'manual' reflects that the request have been sent manually, outside of the SDK (ex: via curl or\n // a Node.js script).\n | 'manual'\n\nexport type EndpointBuilder = ReturnType<typeof createEndpointBuilder>\n\nexport function createEndpointBuilder(\n initConfiguration: InitConfiguration,\n trackType: TrackType,\n configurationTags: string[]\n) {\n const buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType)\n\n return {\n build(api: ApiType, payload: Payload) {\n const parameters = buildEndpointParameters(initConfiguration, trackType, configurationTags, api, payload)\n return buildUrlWithParameters(parameters)\n },\n urlPrefix: buildUrlWithParameters(''),\n trackType,\n }\n}\n\n/**\n * Create a function used to build a full endpoint url from provided parameters. The goal of this\n * function is to pre-compute some parts of the URL to avoid re-computing everything on every\n * request, as only parameters are changing.\n */\nfunction createEndpointUrlWithParametersBuilder(\n initConfiguration: InitConfiguration,\n trackType: TrackType\n): (parameters: string) => string {\n const path = `/api/v2/${trackType}`\n const proxy = initConfiguration.proxy\n if (typeof proxy === 'string') {\n const normalizedProxyUrl = normalizeUrl(proxy)\n return (parameters) => `${normalizedProxyUrl}?ddforward=${encodeURIComponent(`${path}?${parameters}`)}`\n }\n if (typeof proxy === 'function') {\n return (parameters) => proxy({ path, parameters })\n }\n const host = buildEndpointHost(trackType, initConfiguration)\n return (parameters) => `https://${host}${path}?${parameters}`\n}\n\nfunction buildEndpointHost(trackType: TrackType, initConfiguration: InitConfiguration & { usePciIntake?: boolean }) {\n const { site = INTAKE_SITE_US1, internalAnalyticsSubdomain } = initConfiguration\n\n if (trackType === 'logs' && initConfiguration.usePciIntake && site === INTAKE_SITE_US1) {\n return PCI_INTAKE_HOST_US1\n }\n\n if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n return `${internalAnalyticsSubdomain}.${INTAKE_SITE_US1}`\n }\n\n if (site === INTAKE_SITE_FED_STAGING) {\n return `http-intake.logs.${site}`\n }\n\n const domainParts = site.split('.')\n const extension = domainParts.pop()\n return `browser-intake-${domainParts.join('-')}.${extension!}`\n}\n\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters(\n { clientToken, internalAnalyticsSubdomain }: InitConfiguration,\n trackType: TrackType,\n configurationTags: string[],\n api: ApiType,\n { retry, encoding }: Payload\n) {\n const tags = [`sdk_version:${__BUILD_ENV__SDK_VERSION__}`, `api:${api}`].concat(configurationTags)\n if (retry) {\n tags.push(`retry_count:${retry.count}`, `retry_after:${retry.lastFailureStatus}`)\n }\n\n const parameters = [\n 'ddsource=browser',\n `ddtags=${encodeURIComponent(tags.join(','))}`,\n `dd-api-key=${clientToken}`,\n `dd-evp-origin-version=${encodeURIComponent(__BUILD_ENV__SDK_VERSION__)}`,\n 'dd-evp-origin=browser',\n `dd-request-id=${generateUUID()}`,\n ]\n\n if (encoding) {\n parameters.push(`dd-evp-encoding=${encoding}`)\n }\n\n if (trackType === 'rum') {\n parameters.push(`batch_time=${timeStampNow()}`)\n }\n\n if (internalAnalyticsSubdomain) {\n parameters.reverse()\n }\n\n return parameters.join('&')\n}\n","import { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display'\nimport type { InitConfiguration } from './configuration'\n\nexport const TAG_SIZE_LIMIT = 200\n\nexport function buildTags(configuration: InitConfiguration): string[] {\n const { env, service, version, datacenter } = configuration\n const tags = []\n\n if (env) {\n tags.push(buildTag('env', env))\n }\n if (service) {\n tags.push(buildTag('service', service))\n }\n if (version) {\n tags.push(buildTag('version', version))\n }\n if (datacenter) {\n tags.push(buildTag('datacenter', datacenter))\n }\n\n return tags\n}\n\nconst FORBIDDEN_CHARACTERS = /[^a-z0-9_:./-]/\n\nexport function buildTag(key: string, rawValue: string) {\n // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n // that the backend may not follow the exact same rules, so we only want to display an informal\n // warning.\n const valueSizeLimit = TAG_SIZE_LIMIT - key.length - 1\n\n if (rawValue.length > valueSizeLimit || FORBIDDEN_CHARACTERS.test(rawValue)) {\n display.warn(\n `${key} value doesn't meet tag requirements and will be sanitized. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/tagging/#defining-tags`\n )\n }\n\n // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n // by forging a value containing commas.\n const sanitizedValue = rawValue.replace(/,/g, '_')\n\n return `${key}:${sanitizedValue}`\n}\n","import { objectValues, assign } from '../../tools/utils/polyfills'\nimport type { InitConfiguration } from './configuration'\nimport type { EndpointBuilder } from './endpointBuilder'\nimport { createEndpointBuilder } from './endpointBuilder'\nimport { buildTags } from './tags'\nimport { INTAKE_SITE_US1, PCI_INTAKE_HOST_US1 } from './intakeSites'\n\nexport interface TransportConfiguration {\n logsEndpointBuilder: EndpointBuilder\n rumEndpointBuilder: EndpointBuilder\n sessionReplayEndpointBuilder: EndpointBuilder\n isIntakeUrl: (url: string) => boolean\n replica?: ReplicaConfiguration\n site: string\n}\n\nexport interface ReplicaConfiguration {\n applicationId?: string\n logsEndpointBuilder: EndpointBuilder\n rumEndpointBuilder: EndpointBuilder\n}\n\nexport function computeTransportConfiguration(initConfiguration: InitConfiguration): TransportConfiguration {\n const site = initConfiguration.site || INTAKE_SITE_US1\n\n const tags = buildTags(initConfiguration)\n\n const endpointBuilders = computeEndpointBuilders(initConfiguration, tags)\n const intakeUrlPrefixes = computeIntakeUrlPrefixes(endpointBuilders, site)\n\n const replicaConfiguration = computeReplicaConfiguration(initConfiguration, intakeUrlPrefixes, tags)\n\n return assign(\n {\n isIntakeUrl: (url: string) => intakeUrlPrefixes.some((intakeEndpoint) => url.indexOf(intakeEndpoint) === 0),\n replica: replicaConfiguration,\n site,\n },\n endpointBuilders\n )\n}\n\nfunction computeEndpointBuilders(initConfiguration: InitConfiguration, tags: string[]) {\n return {\n logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay', tags),\n }\n}\n\nfunction computeReplicaConfiguration(\n initConfiguration: InitConfiguration,\n intakeUrlPrefixes: string[],\n tags: string[]\n): ReplicaConfiguration | undefined {\n if (!initConfiguration.replica) {\n return\n }\n\n const replicaConfiguration: InitConfiguration = assign({}, initConfiguration, {\n site: INTAKE_SITE_US1,\n clientToken: initConfiguration.replica.clientToken,\n })\n\n const replicaEndpointBuilders = {\n logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),\n }\n\n intakeUrlPrefixes.push(...objectValues(replicaEndpointBuilders).map((builder) => builder.urlPrefix))\n\n return assign({ applicationId: initConfiguration.replica.applicationId }, replicaEndpointBuilders)\n}\n\nfunction computeIntakeUrlPrefixes(\n endpointBuilders: ReturnType<typeof computeEndpointBuilders>,\n site: string\n): string[] {\n const intakeUrlPrefixes = objectValues(endpointBuilders).map((builder) => builder.urlPrefix)\n\n if (site === INTAKE_SITE_US1) {\n intakeUrlPrefixes.push(`https://${PCI_INTAKE_HOST_US1}/`)\n }\n\n return intakeUrlPrefixes\n}\n","import { catchUserErrors } from '../../tools/catchUserErrors'\nimport { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display'\nimport type { RawTelemetryConfiguration } from '../telemetry'\nimport type { Duration } from '../../tools/utils/timeUtils'\nimport { ONE_SECOND } from '../../tools/utils/timeUtils'\nimport { isPercentage } from '../../tools/utils/numberUtils'\nimport { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils'\nimport { objectHasValue } from '../../tools/utils/objectUtils'\nimport { assign } from '../../tools/utils/polyfills'\nimport { selectSessionStoreStrategyType } from '../session/sessionStore'\nimport type { SessionStoreStrategyType } from '../session/storeStrategies/sessionStoreStrategy'\nimport { TrackingConsent } from '../trackingConsent'\nimport type { TransportConfiguration } from './transportConfiguration'\nimport { computeTransportConfiguration } from './transportConfiguration'\n\nexport const DefaultPrivacyLevel = {\n ALLOW: 'allow',\n MASK: 'mask',\n MASK_USER_INPUT: 'mask-user-input',\n} as const\nexport type DefaultPrivacyLevel = (typeof DefaultPrivacyLevel)[keyof typeof DefaultPrivacyLevel]\n\nexport const TraceContextInjection = {\n ALL: 'all',\n SAMPLED: 'sampled',\n} as const\n\nexport type TraceContextInjection = (typeof TraceContextInjection)[keyof typeof TraceContextInjection]\n\nexport interface InitConfiguration {\n /**\n * The client token for Datadog. Required for authenticating your application with Datadog.\n */\n clientToken: string\n beforeSend?: GenericBeforeSendCallback | undefined\n /**\n * The percentage of sessions tracked. A value between 0 and 100.\n * @default 100\n */\n sessionSampleRate?: number | undefined\n /**\n * The percentage of telemetry events sent. A value between 0 and 100.\n * @default 20\n */\n telemetrySampleRate?: number | undefined\n /**\n * Initialization fails silently if the RUM Browser SDK is already initialized on the page.\n * @default false\n */\n silentMultipleInit?: boolean | undefined\n /**\n * Allows the use of localStorage when cookies cannot be set. This enables the RUM Browser SDK to run in environments that do not provide cookie support.\n * See [Monitor Electron Applications Using the Browser SDK](https://docs.datadoghq.com/real_user_monitoring/guide/monitor-electron-applications-using-browser-sdk) for further information.\n * @default false\n */\n allowFallbackToLocalStorage?: boolean | undefined\n /**\n * Allow listening to DOM events dispatched programmatically ([untrusted events](https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted)). Enabling this option can be useful if you heavily rely on programmatic events, such as in an automated UI test environment.\n * @default false\n */\n allowUntrustedEvents?: boolean | undefined\n /**\n * Store global context and user context in localStorage to preserve them along the user navigation.\n * See [Contexts life cycle](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/?tab=npm#contexts-life-cycle) for further information.\n * @default false\n */\n storeContextsAcrossPages?: boolean | undefined\n /**\n * Set the initial user tracking consent state.\n * See [User tracking consent](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/?tab=npm#user-tracking-consent) for further information.\n * @default granted\n */\n trackingConsent?: TrackingConsent | undefined\n\n // transport options\n /**\n * Optional proxy URL, for example: https://www.proxy.com/path.\n * See [Proxy Your Browser RUM Data](https://docs.datadoghq.com/real_user_monitoring/guide/proxy-rum-data) for further information.\n */\n proxy?: string | ProxyFn | undefined\n /**\n * The Datadog [site](https://docs.datadoghq.com/getting_started/site) parameter of your organization.\n * @default datadoghq.com\n */\n site?: string | undefined\n\n // tag and context options\n /**\n * The service name for your application. Follows the [tag syntax requirements](https://docs.datadoghq.com/getting_started/tagging/#define-tags).\n */\n service?: string | undefined | null\n /**\n * The application’s environment, for example: prod, pre-prod, and staging. Follows the [tag syntax requirements](https://docs.datadoghq.com/getting_started/tagging/#define-tags).\n */\n env?: string | undefined | null\n /**\n * The application’s version, for example: 1.2.3, 6c44da20, and 2020.02.13. Follows the [tag syntax requirements](https://docs.datadoghq.com/getting_started/tagging/#define-tags).\n */\n version?: string | undefined | null\n\n // cookie options\n /**\n * Whether a secure cross-site session cookie is used\n * @default false\n * @deprecated use usePartitionedCrossSiteSessionCookie instead\n */\n useCrossSiteSessionCookie?: boolean | undefined\n /**\n * Use a partitioned secure cross-site session cookie. This allows the RUM Browser SDK to run when the site is loaded from another one (iframe). Implies `useSecureSessionCookie`.\n * @default false\n */\n usePartitionedCrossSiteSessionCookie?: boolean | undefined\n /**\n * Use a secure session cookie. This disables RUM events sent on insecure (non-HTTPS) connections.\n * @default false\n */\n useSecureSessionCookie?: boolean | undefined\n /**\n * Preserve the session across subdomains for the same site.\n * @default false\n */\n trackSessionAcrossSubdomains?: boolean | undefined\n\n // internal options\n /**\n * [Internal option] Enable experimental features\n */\n enableExperimentalFeatures?: string[] | undefined\n /**\n * [Internal option] Configure the dual chipping to another datacenter\n */\n replica?: ReplicaUserConfiguration | undefined\n /**\n * [Internal option] Set the datacenter from where the data is dual chipped\n */\n datacenter?: string\n /**\n * [Internal option] Datadog internal analytics subdomain\n */\n // TODO next major: remove this option and replace usages by proxyFn\n internalAnalyticsSubdomain?: string\n /**\n * [Internal option] The percentage of telemetry configuration sent. A value between 0 and 100.\n * @default 5\n */\n telemetryConfigurationSampleRate?: number\n /**\n * [Internal option] The percentage of telemetry usage sent. A value between 0 and 100.\n * @default 5\n */\n telemetryUsageSampleRate?: number\n}\n\n// This type is only used to build the core configuration. Logs and RUM SDKs are using a proper type\n// for this option.\ntype GenericBeforeSendCallback = (event: any, context?: any) => unknown\n\n/**\n * path: /api/vX/product\n * parameters: xxx=yyy&zzz=aaa\n */\ntype ProxyFn = (options: { path: string; parameters: string }) => string\n\ninterface ReplicaUserConfiguration {\n applicationId?: string\n clientToken: string\n}\n\nexport interface Configuration extends TransportConfiguration {\n // Built from init configuration\n beforeSend: GenericBeforeSendCallback | undefined\n sessionStoreStrategyType: SessionStoreStrategyType | undefined\n sessionSampleRate: number\n telemetrySampleRate: number\n telemetryConfigurationSampleRate: number\n telemetryUsageSampleRate: number\n service: string | undefined\n silentMultipleInit: boolean\n allowUntrustedEvents: boolean\n trackingConsent: TrackingConsent\n storeContextsAcrossPages: boolean\n\n // Event limits\n eventRateLimiterThreshold: number // Limit the maximum number of actions, errors and logs per minutes\n maxTelemetryEventsPerPage: number\n\n // Batch configuration\n batchBytesLimit: number\n flushTimeout: Duration\n batchMessagesLimit: number\n messageBytesLimit: number\n}\n\nfunction isString(tag: unknown, tagName: string): tag is string | undefined | null {\n if (tag !== undefined && tag !== null && typeof tag !== 'string') {\n display.error(`${tagName} must be defined as a string`)\n return false\n }\n return true\n}\n\nfunction isDatadogSite(site: unknown) {\n if (site && typeof site === 'string' && !/(datadog|ddog|datad0g|dd0g)/.test(site)) {\n display.error(`Site should be a valid Datadog site. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/site/.`)\n return false\n }\n return true\n}\n\nexport function isSampleRate(sampleRate: unknown, name: string) {\n if (sampleRate !== undefined && !isPercentage(sampleRate)) {\n display.error(`${name} Sample Rate should be a number between 0 and 100`)\n return false\n }\n return true\n}\n\nexport function validateAndBuildConfiguration(initConfiguration: InitConfiguration): Configuration | undefined {\n if (!initConfiguration || !initConfiguration.clientToken) {\n display.error('Client Token is not configured, we will not send any data.')\n return\n }\n\n if (\n !isDatadogSite(initConfiguration.site) ||\n !isSampleRate(initConfiguration.sessionSampleRate, 'Session') ||\n !isSampleRate(initConfiguration.telemetrySampleRate, 'Telemetry') ||\n !isSampleRate(initConfiguration.telemetryConfigurationSampleRate, 'Telemetry Configuration') ||\n !isSampleRate(initConfiguration.telemetryUsageSampleRate, 'Telemetry Usage') ||\n !isString(initConfiguration.version, 'Version') ||\n !isString(initConfiguration.env, 'Env') ||\n !isString(initConfiguration.service, 'Service')\n ) {\n return\n }\n\n if (\n initConfiguration.trackingConsent !== undefined &&\n !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)\n ) {\n display.error('Tracking Consent should be either \"granted\" or \"not-granted\"')\n return\n }\n\n return assign(\n {\n beforeSend:\n initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n sessionStoreStrategyType: selectSessionStoreStrategyType(initConfiguration),\n sessionSampleRate: initConfiguration.sessionSampleRate ?? 100,\n telemetrySampleRate: initConfiguration.telemetrySampleRate ?? 20,\n telemetryConfigurationSampleRate: initConfiguration.telemetryConfigurationSampleRate ?? 5,\n telemetryUsageSampleRate: initConfiguration.telemetryUsageSampleRate ?? 5,\n service: initConfiguration.service || undefined,\n silentMultipleInit: !!initConfiguration.silentMultipleInit,\n allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,\n trackingConsent: initConfiguration.trackingConsent ?? TrackingConsent.GRANTED,\n storeContextsAcrossPages: !!initConfiguration.storeContextsAcrossPages,\n /**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\n batchBytesLimit: 16 * ONE_KIBI_BYTE,\n\n eventRateLimiterThreshold: 3000,\n maxTelemetryEventsPerPage: 15,\n\n /**\n * flush automatically, aim to be lower than ALB connection timeout\n * to maximize connection reuse.\n */\n flushTimeout: (30 * ONE_SECOND) as Duration,\n\n /**\n * Logs intake limit\n */\n batchMessagesLimit: 50,\n messageBytesLimit: 256 * ONE_KIBI_BYTE,\n },\n computeTransportConfiguration(initConfiguration)\n )\n}\n\nexport function serializeConfiguration(initConfiguration: InitConfiguration) {\n return {\n session_sample_rate: initConfiguration.sessionSampleRate,\n telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,\n use_before_send: !!initConfiguration.beforeSend,\n use_cross_site_session_cookie: initConfiguration.useCrossSiteSessionCookie,\n use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,\n use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n use_proxy: !!initConfiguration.proxy,\n silent_multiple_init: initConfiguration.silentMultipleInit,\n track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,\n store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,\n tracking_consent: initConfiguration.trackingConsent,\n } satisfies RawTelemetryConfiguration\n}\n","import { startsWith } from './utils/polyfills'\nimport { display } from './display'\nimport { getType } from './utils/typeUtils'\n\nexport type MatchOption = string | RegExp | ((value: string) => boolean)\n\nexport function isMatchOption(item: unknown): item is MatchOption {\n const itemType = getType(item)\n return itemType === 'string' || itemType === 'function' || item instanceof RegExp\n}\n\n/**\n * Returns true if value can be matched by at least one of the provided MatchOptions.\n * When comparing strings, setting useStartsWith to true will compare the value with the start of\n * the option, instead of requiring an exact match.\n */\nexport function matchList(list: MatchOption[], value: string, useStartsWith = false): boolean {\n return list.some((item) => {\n try {\n if (typeof item === 'function') {\n return item(value)\n } else if (item instanceof RegExp) {\n return item.test(value)\n } else if (typeof item === 'string') {\n return useStartsWith ? startsWith(value, item) : item === value\n }\n } catch (e) {\n display.error(e)\n }\n return false\n })\n}\n","import {\n objectEntries,\n shallowClone,\n performDraw,\n isNumber,\n assign,\n find,\n getType,\n isMatchOption,\n matchList,\n TraceContextInjection,\n} from '@datadog/browser-core'\nimport type { RumConfiguration } from '../configuration'\nimport type {\n RumFetchResolveContext,\n RumFetchStartContext,\n RumXhrCompleteContext,\n RumXhrStartContext,\n} from '../requestCollection'\nimport type { RumSessionManager } from '../rumSessionManager'\nimport type { PropagatorType, TracingOption } from './tracer.types'\n\nexport interface Tracer {\n traceFetch: (context: Partial<RumFetchStartContext>) => void\n traceXhr: (context: Partial<RumXhrStartContext>, xhr: XMLHttpRequest) => void\n clearTracingIfNeeded: (context: RumFetchResolveContext | RumXhrCompleteContext) => void\n}\n\ninterface TracingHeaders {\n [key: string]: string\n}\n\nexport function isTracingOption(item: unknown): item is TracingOption {\n const expectedItem = item as TracingOption\n return (\n getType(expectedItem) === 'object' &&\n isMatchOption(expectedItem.match) &&\n Array.isArray(expectedItem.propagatorTypes)\n )\n}\n\n/**\n * Clear tracing information to avoid incomplete traces. Ideally, we should do it when the\n * request did not reach the server, but the browser does not expose this. So, we clear tracing\n * information if the request ended with status 0 without being aborted by the application.\n *\n * Reasoning:\n *\n * * Applications are usually aborting requests after a bit of time, for example when the user is\n * typing (autocompletion) or navigating away (in a SPA). With a performant device and good\n * network conditions, the request is likely to reach the server before being canceled.\n *\n * * Requests aborted otherwise (ex: lack of internet, CORS issue, blocked by a privacy extension)\n * are likely to finish quickly and without reaching the server.\n *\n * Of course, it might not be the case every time, but it should limit having incomplete traces a\n * bit.\n * */\nexport function clearTracingIfNeeded(context: RumFetchResolveContext | RumXhrCompleteContext) {\n if (context.status === 0 && !context.isAborted) {\n context.traceId = undefined\n context.spanId = undefined\n context.traceSampled = undefined\n }\n}\n\nexport function startTracer(configuration: RumConfiguration, sessionManager: RumSessionManager): Tracer {\n return {\n clearTracingIfNeeded,\n traceFetch: (context) =>\n injectHeadersIfTracingAllowed(configuration, context, sessionManager, (tracingHeaders: TracingHeaders) => {\n if (context.input instanceof Request && !context.init?.headers) {\n context.input = new Request(context.input)\n Object.keys(tracingHeaders).forEach((key) => {\n ;(context.input as Request).headers.append(key, tracingHeaders[key])\n })\n } else {\n context.init = shallowClone(context.init)\n const headers: Array<[string, string]> = []\n if (context.init.headers instanceof Headers) {\n context.init.headers.forEach((value, key) => {\n headers.push([key, value])\n })\n } else if (Array.isArray(context.init.headers)) {\n context.init.headers.forEach((header) => {\n headers.push(header)\n })\n } else if (context.init.headers) {\n Object.keys(context.init.headers).forEach((key) => {\n headers.push([key, (context.init!.headers as Record<string, string>)[key]])\n })\n }\n context.init.headers = headers.concat(objectEntries(tracingHeaders))\n }\n }),\n traceXhr: (context, xhr) =>\n injectHeadersIfTracingAllowed(configuration, context, sessionManager, (tracingHeaders: TracingHeaders) => {\n Object.keys(tracingHeaders).forEach((name) => {\n xhr.setRequestHeader(name, tracingHeaders[name])\n })\n }),\n }\n}\n\nfunction injectHeadersIfTracingAllowed(\n configuration: RumConfiguration,\n context: Partial<RumFetchStartContext | RumXhrStartContext>,\n sessionManager: RumSessionManager,\n inject: (tracingHeaders: TracingHeaders) => void\n) {\n if (!isTracingSupported() || !sessionManager.findTrackedSession()) {\n return\n }\n\n const tracingOption = find(configuration.allowedTracingUrls, (tracingOption: TracingOption) =>\n matchList([tracingOption.match], context.url!, true)\n )\n if (!tracingOption) {\n return\n }\n context.traceSampled = !isNumber(configuration.traceSampleRate) || performDraw(configuration.traceSampleRate)\n\n if (!context.traceSampled && configuration.traceContextInjection !== TraceContextInjection.ALL) {\n return\n }\n\n context.traceId = createTraceIdentifier()\n context.spanId = createTraceIdentifier()\n\n inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled, tracingOption.propagatorTypes))\n}\n\nexport function isTracingSupported() {\n return getCrypto() !== undefined\n}\n\nexport function getCrypto() {\n return window.crypto || (window as any).msCrypto\n}\n\n/**\n * When trace is not sampled, set priority to '0' instead of not adding the tracing headers\n * to prepare the implementation for sampling delegation.\n */\nfunction makeTracingHeaders(\n traceId: TraceIdentifier,\n spanId: TraceIdentifier,\n traceSampled: boolean,\n propagatorTypes: PropagatorType[]\n): TracingHeaders {\n const tracingHeaders: TracingHeaders = {}\n\n propagatorTypes.forEach((propagatorType) => {\n switch (propagatorType) {\n case 'datadog': {\n assign(tracingHeaders, {\n 'x-datadog-origin': 'rum',\n 'x-datadog-parent-id': spanId.toDecimalString(),\n 'x-datadog-sampling-priority': traceSampled ? '1' : '0',\n 'x-datadog-trace-id': traceId.toDecimalString(),\n })\n break\n }\n // https://www.w3.org/TR/trace-context/\n case 'tracecontext': {\n assign(tracingHeaders, {\n traceparent: `00-0000000000000000${traceId.toPaddedHexadecimalString()}-${spanId.toPaddedHexadecimalString()}-0${\n traceSampled ? '1' : '0'\n }`,\n })\n break\n }\n // https://github.com/openzipkin/b3-propagation\n case 'b3': {\n assign(tracingHeaders, {\n b3: `${traceId.toPaddedHexadecimalString()}-${spanId.toPaddedHexadecimalString()}-${\n traceSampled ? '1' : '0'\n }`,\n })\n break\n }\n case 'b3multi': {\n assign(tracingHeaders, {\n 'X-B3-TraceId': traceId.toPaddedHexadecimalString(),\n 'X-B3-SpanId': spanId.toPaddedHexadecimalString(),\n 'X-B3-Sampled': traceSampled ? '1' : '0',\n })\n break\n }\n }\n })\n return tracingHeaders\n}\n\n/* eslint-disable no-bitwise */\nexport interface TraceIdentifier {\n toDecimalString: () => string\n toPaddedHexadecimalString: () => string\n}\n\nexport function createTraceIdentifier(): TraceIdentifier {\n const buffer: Uint8Array = new Uint8Array(8)\n getCrypto().getRandomValues(buffer)\n buffer[0] = buffer[0] & 0x7f // force 63-bit\n\n function readInt32(offset: number) {\n return buffer[offset] * 16777216 + (buffer[offset + 1] << 16) + (buffer[offset + 2] << 8) + buffer[offset + 3]\n }\n\n function toString(radix: number) {\n let high = readInt32(0)\n let low = readInt32(4)\n let str = ''\n\n do {\n const mod = (high % radix) * 4294967296 + low\n high = Math.floor(high / radix)\n low = Math.floor(mod / radix)\n str = (mod % radix).toString(radix) + str\n } while (high || low)\n\n return str\n }\n\n /**\n * Format used everywhere except the trace intake\n */\n function toDecimalString() {\n return toString(10)\n }\n\n /**\n * Format used by OTel headers\n */\n function toPaddedHexadecimalString() {\n const traceId = toString(16)\n return Array(17 - traceId.length).join('0') + traceId\n }\n\n return {\n toDecimalString,\n toPaddedHexadecimalString,\n }\n}\n/* eslint-enable no-bitwise */\n","import type { Configuration, InitConfiguration, MatchOption, RawTelemetryConfiguration } from '@datadog/browser-core'\nimport {\n getType,\n arrayFrom,\n isMatchOption,\n serializeConfiguration,\n assign,\n DefaultPrivacyLevel,\n TraceContextInjection,\n display,\n objectHasValue,\n validateAndBuildConfiguration,\n isSampleRate,\n} from '@datadog/browser-core'\nimport type { RumEventDomainContext } from '../../domainContext.types'\nimport type { RumEvent } from '../../rumEvent.types'\nimport type { RumPlugin } from '../plugins'\nimport { isTracingOption } from '../tracing/tracer'\nimport type { PropagatorType, TracingOption } from '../tracing/tracer.types'\n\nexport const DEFAULT_PROPAGATOR_TYPES: PropagatorType[] = ['tracecontext', 'datadog']\n\nexport interface RumInitConfiguration extends InitConfiguration {\n // global options\n /**\n * The RUM application ID.\n */\n applicationId: string\n /**\n * Access to every event collected by the RUM SDK before they are sent to Datadog.\n * It allows:\n * - Enrich your RUM events with additional context attributes\n * - Modify your RUM events to modify their content, or redact sensitive sequences (see the list of editable properties)\n * - Discard selected RUM events\n *\n * See [Enrich And Control Browser RUM Data With beforeSend](https://docs.datadoghq.com/real_user_monitoring/guide/enrich-and-control-rum-data) for further information.\n */\n beforeSend?: ((event: RumEvent, context: RumEventDomainContext) => boolean) | undefined\n /**\n * A list of request origins ignored when computing the page activity.\n * See [How page activity is calculated](https://docs.datadoghq.com/real_user_monitoring/browser/monitoring_page_performance/#how-page-activity-is-calculated) for further information.\n */\n excludedActivityUrls?: MatchOption[] | undefined\n /**\n * URL pointing to the Datadog Browser SDK Worker JavaScript file. The URL can be relative or absolute, but is required to have the same origin as the web application.\n * See [Content Security Policy guidelines](https://docs.datadoghq.com/integrations/content_security_policy_logs/?tab=firefox#use-csp-with-real-user-monitoring-and-session-replay) for further information.\n */\n workerUrl?: string\n /**\n * Compress requests sent to the Datadog intake to reduce bandwidth usage when sending large amounts of data. The compression is done in a Worker thread.\n * See [Content Security Policy guidelines](https://docs.datadoghq.com/integrations/content_security_policy_logs/?tab=firefox#use-csp-with-real-user-monitoring-and-session-replay) for further information.\n */\n compressIntakeRequests?: boolean | undefined\n remoteConfigurationId?: string | undefined\n\n // tracing options\n /**\n * A list of request URLs used to inject tracing headers.\n * See [Connect RUM and Traces](https://docs.datadoghq.com/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.\n */\n allowedTracingUrls?: Array<MatchOption | TracingOption> | undefined\n\n /**\n * The percentage of requests to trace: 100 for all, 0 for none.\n * See [Connect RUM and Traces](https://docs.datadoghq.com/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.\n */\n traceSampleRate?: number | undefined\n /**\n * If you set a `traceSampleRate`, to ensure backend services' sampling decisions are still applied, configure the `traceContextInjection` initialization parameter to sampled.\n * @default all\n * See [Connect RUM and Traces](https://docs.datadoghq.com/real_user_monitoring/platform/connect_rum_and_traces/?tab=browserrum) for further information.\n */\n traceContextInjection?: TraceContextInjection | undefined\n\n // replay options\n /**\n * Allow to protect end user privacy and prevent sensitive organizational information from being collected.\n * @default mask\n * See [Replay Privacy Options](https://docs.datadoghq.com/real_user_monitoring/session_replay/browser/privacy_options) for further information.\n */\n defaultPrivacyLevel?: DefaultPrivacyLevel | undefined\n /**\n * If you are accessing Datadog through a custom subdomain, you can set `subdomain` to include your custom domain in the `getSessionReplayLink()` returned URL .\n * See [Connect Session Replay To Your Third-Party Tools](https://docs.datadoghq.com/real_user_monitoring/guide/connect-session-replay-to-your-third-party-tools) for further information.\n */\n subdomain?: string\n /**\n * The percentage of tracked sessions with [Browser RUM & Session Replay pricing](https://www.datadoghq.com/pricing/?product=real-user-monitoring--session-replay#real-user-monitoring--session-replay) features: 100 for all, 0 for none.\n * See [Configure Your Setup For Browser RUM and Browser RUM & Session Replay Sampling](https://docs.datadoghq.com/real_user_monitoring/guide/sampling-browser-plans) for further information.\n */\n sessionReplaySampleRate?: number | undefined\n /**\n * If the session is sampled for Session Replay, only start the recording when `startSessionReplayRecording()` is called, instead of at the beginning of the session.\n * See [Session Replay Usage](https://docs.datadoghq.com/real_user_monitoring/session_replay/browser/#usage) for further information.\n */\n startSessionReplayRecordingManually?: boolean | undefined\n\n /**\n * Enables privacy control for action names.\n */\n enablePrivacyForActionName?: boolean | undefined // TODO next major: remove this option and make privacy for action name the default behavior\n /**\n * Enables automatic collection of users actions.\n * See [Tracking User Actions](https://docs.datadoghq.com/real_user_monitoring/browser/tracking_user_actions) for further information.\n */\n trackUserInteractions?: boolean | undefined\n /**\n * Specify your own attribute to use to name actions.\n * See [Declare a name for click actions](https://docs.datadoghq.com/real_user_monitoring/browser/tracking_user_actions/#declare-a-name-for-click-actions) for further information.\n */\n actionNameAttribute?: string | undefined\n\n // view options\n /**\n * Allows you to control RUM views creation. See [Override default RUM view names](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/?tab=npm#override-default-rum-view-names) for further information.\n */\n trackViewsManually?: boolean | undefined\n /**\n * Enables collection of resource events.\n */\n trackResources?: boolean | undefined\n /**\n * Enables collection of long task events.\n */\n trackLongTasks?: boolean | undefined\n\n /**\n * List of plugins to enable. The plugins API is unstable and experimental, and may change without\n * notice. Please use only plugins provided by Datadog matching the version of the SDK you are\n * using.\n */\n betaPlugins?: RumPlugin[] | undefined\n}\n\nexport type HybridInitConfiguration = Omit<RumInitConfiguration, 'applicationId' | 'clientToken'>\n\nexport interface RumConfiguration extends Configuration {\n // Built from init configuration\n actionNameAttribute: string | undefined\n traceSampleRate: number | undefined\n allowedTracingUrls: TracingOption[]\n excludedActivityUrls: MatchOption[]\n workerUrl: string | undefined\n compressIntakeRequests: boolean\n applicationId: string\n defaultPrivacyLevel: DefaultPrivacyLevel\n enablePrivacyForActionName: boolean\n sessionReplaySampleRate: number\n startSessionReplayRecordingManually: boolean\n trackUserInteractions: boolean\n trackViewsManually: boolean\n trackResources: boolean\n trackLongTasks: boolean\n version?: string\n subdomain?: string\n customerDataTelemetrySampleRate: number\n traceContextInjection: TraceContextInjection\n plugins: RumPlugin[]\n}\n\nexport function validateAndBuildRumConfiguration(\n initConfiguration: RumInitConfiguration\n): RumConfiguration | undefined {\n if (!initConfiguration.applicationId) {\n display.error('Application ID is not configured, no RUM data will be collected.')\n return\n }\n\n if (\n !isSampleRate(initConfiguration.sessionReplaySampleRate, 'Session Replay') ||\n !isSampleRate(initConfiguration.traceSampleRate, 'Trace')\n ) {\n return\n }\n\n if (initConfiguration.excludedActivityUrls !== undefined && !Array.isArray(initConfiguration.excludedActivityUrls)) {\n display.error('Excluded Activity Urls should be an array')\n return\n }\n\n const allowedTracingUrls = validateAndBuildTracingOptions(initConfiguration)\n if (!allowedTracingUrls) {\n return\n }\n\n const baseConfiguration = validateAndBuildConfiguration(initConfiguration)\n if (!baseConfiguration) {\n return\n }\n\n return assign(\n {\n applicationId: initConfiguration.applicationId,\n version: initConfiguration.version || undefined,\n actionNameAttribute: initConfiguration.actionNameAttribute,\n sessionReplaySampleRate: initConfiguration.sessionReplaySampleRate ?? 0,\n startSessionReplayRecordingManually: !!initConfiguration.startSessionReplayRecordingManually,\n traceSampleRate: initConfiguration.traceSampleRate,\n allowedTracingUrls,\n excludedActivityUrls: initConfiguration.excludedActivityUrls ?? [],\n workerUrl: initConfiguration.workerUrl,\n compressIntakeRequests: !!initConfiguration.compressIntakeRequests,\n trackUserInteractions: !!initConfiguration.trackUserInteractions,\n trackViewsManually: !!initConfiguration.trackViewsManually,\n trackResources: !!initConfiguration.trackResources,\n trackLongTasks: !!initConfiguration.trackLongTasks,\n subdomain: initConfiguration.subdomain,\n defaultPrivacyLevel: objectHasValue(DefaultPrivacyLevel, initConfiguration.defaultPrivacyLevel)\n ? initConfiguration.defaultPrivacyLevel\n : DefaultPrivacyLevel.MASK,\n enablePrivacyForActionName: !!initConfiguration.enablePrivacyForActionName,\n customerDataTelemetrySampleRate: 1,\n traceContextInjection: objectHasValue(TraceContextInjection, initConfiguration.traceContextInjection)\n ? initConfiguration.traceContextInjection\n : TraceContextInjection.ALL,\n plugins: initConfiguration.betaPlugins || [],\n },\n baseConfiguration\n )\n}\n\n/**\n * Validates allowedTracingUrls and converts match options to tracing options\n */\nfunction validateAndBuildTracingOptions(initConfiguration: RumInitConfiguration): TracingOption[] | undefined {\n if (initConfiguration.allowedTracingUrls === undefined) {\n return []\n }\n if (!Array.isArray(initConfiguration.allowedTracingUrls)) {\n display.error('Allowed Tracing URLs should be an array')\n return\n }\n if (initConfiguration.allowedTracingUrls.length !== 0 && initConfiguration.service === undefined) {\n display.error('Service needs to be configured when tracing is enabled')\n return\n }\n // Convert from (MatchOption | TracingOption) to TracingOption, remove unknown properties\n const tracingOptions: TracingOption[] = []\n initConfiguration.allowedTracingUrls.forEach((option) => {\n if (isMatchOption(option)) {\n tracingOptions.push({ match: option, propagatorTypes: DEFAULT_PROPAGATOR_TYPES })\n } else if (isTracingOption(option)) {\n tracingOptions.push(option)\n } else {\n display.warn(\n 'Allowed Tracing Urls parameters should be a string, RegExp, function, or an object. Ignoring parameter',\n option\n )\n }\n })\n\n return tracingOptions\n}\n\n/**\n * Combines the selected tracing propagators from the different options in allowedTracingUrls\n */\nfunction getSelectedTracingPropagators(configuration: RumInitConfiguration): PropagatorType[] {\n const usedTracingPropagators = new Set<PropagatorType>()\n\n if (Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0) {\n configuration.allowedTracingUrls.forEach((option) => {\n if (isMatchOption(option)) {\n DEFAULT_PROPAGATOR_TYPES.forEach((propagatorType) => usedTracingPropagators.add(propagatorType))\n } else if (getType(option) === 'object' && Array.isArray(option.propagatorTypes)) {\n // Ensure we have an array, as we cannot rely on types yet (configuration is provided by users)\n option.propagatorTypes.forEach((propagatorType) => usedTracingPropagators.add(propagatorType))\n }\n })\n }\n\n return arrayFrom(usedTracingPropagators)\n}\n\nexport function serializeRumConfiguration(configuration: RumInitConfiguration) {\n const baseSerializedConfiguration = serializeConfiguration(configuration)\n\n return assign(\n {\n session_replay_sample_rate: configuration.sessionReplaySampleRate,\n start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n trace_sample_rate: configuration.traceSampleRate,\n trace_context_injection: configuration.traceContextInjection,\n action_name_attribute: configuration.actionNameAttribute,\n use_allowed_tracing_urls:\n Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0,\n selected_tracing_propagators: getSelectedTracingPropagators(configuration),\n default_privacy_level: configuration.defaultPrivacyLevel,\n enable_privacy_for_action_name: configuration.enablePrivacyForActionName,\n use_excluded_activity_urls:\n Array.isArray(configuration.excludedActivityUrls) && configuration.excludedActivityUrls.length > 0,\n use_worker_url: !!configuration.workerUrl,\n compress_intake_requests: configuration.compressIntakeRequests,\n track_views_manually: configuration.trackViewsManually,\n track_user_interactions: configuration.trackUserInteractions,\n track_resources: configuration.trackResources,\n track_long_task: configuration.trackLongTasks,\n plugins: configuration.betaPlugins?.map((plugin) =>\n assign({ name: plugin.name }, plugin.getConfigurationTelemetry?.())\n ),\n },\n baseSerializedConfiguration\n ) satisfies RawTelemetryConfiguration\n}\n","import type { ClocksState, Duration, Context } from '@datadog/browser-core'\nimport { clocksNow, combine, elapsed, generateUUID, toServerDuration } from '@datadog/browser-core'\nimport type { LifeCycle, RawRumEventCollectedData } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport type { RawRumVitalEvent } from '../../rawRumEvent.types'\nimport { RumEventType, VitalType } from '../../rawRumEvent.types'\nimport type { PageStateHistory } from '../contexts/pageStateHistory'\nimport { PageState } from '../contexts/pageStateHistory'\n\nexport interface DurationVitalStart {\n name: string\n context?: Context\n details?: string\n}\n\nexport interface DurationVitalStop {\n context?: Context\n details?: string\n}\n\nexport interface DurationVitalInstance {\n stop: (options?: DurationVitalStop) => void\n}\n\nexport interface DurationVital {\n name: string\n type: VitalType.DURATION\n startClocks: ClocksState\n duration: Duration\n details?: string\n context?: Context\n}\n\nexport function startVitalCollection(lifeCycle: LifeCycle, pageStateHistory: PageStateHistory) {\n function isValid(vital: DurationVital) {\n return !pageStateHistory.wasInPageStateDuringPeriod(PageState.FROZEN, vital.startClocks.relative, vital.duration)\n }\n\n function addDurationVital(vital: DurationVital) {\n if (isValid(vital)) {\n lifeCycle.notify(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, processVital(vital, true))\n }\n }\n\n return {\n addDurationVital,\n startDurationVital: (startVital: DurationVitalStart) =>\n createVitalInstance((vital) => {\n addDurationVital(vital)\n }, startVital),\n }\n}\n\nexport function createVitalInstance(\n stopCallback: (vital: DurationVital) => void,\n vitalStart: DurationVitalStart\n): DurationVitalInstance {\n const startClocks = clocksNow()\n let stopClocks: ClocksState | undefined\n\n return {\n stop: (vitalStop) => {\n if (stopClocks) {\n return\n }\n\n stopClocks = clocksNow()\n\n stopCallback(buildDurationVital(vitalStart, startClocks, vitalStop, stopClocks))\n },\n }\n}\n\nfunction buildDurationVital(\n vitalStart: DurationVitalStart,\n startClocks: ClocksState,\n vitalStop: DurationVitalStop = {},\n stopClocks: ClocksState\n): DurationVital {\n return {\n name: vitalStart.name,\n type: VitalType.DURATION,\n startClocks,\n duration: elapsed(startClocks.timeStamp, stopClocks.timeStamp),\n context: combine(vitalStart.context, vitalStop.context),\n details: vitalStop.details ?? vitalStart.details,\n }\n}\n\nfunction processVital(vital: DurationVital, valueComputedBySdk: boolean): RawRumEventCollectedData<RawRumVitalEvent> {\n const rawRumEvent: RawRumVitalEvent = {\n date: vital.startClocks.timeStamp,\n vital: {\n id: generateUUID(),\n type: vital.type,\n name: vital.name,\n duration: toServerDuration(vital.duration),\n details: vital.details,\n },\n type: RumEventType.VITAL,\n }\n\n if (valueComputedBySdk) {\n rawRumEvent._dd = {\n vital: {\n computed_value: true,\n },\n }\n }\n\n return {\n rawRumEvent,\n startTime: vital.startClocks.relative,\n customerContext: vital.context,\n domainContext: {},\n }\n}\n","import type { DefaultPrivacyLevel } from '@datadog/browser-core'\nimport { display, addEventListener, assign } from '@datadog/browser-core'\nimport type { RumInitConfiguration } from './configuration'\n\nexport const REMOTE_CONFIGURATION_URL = 'https://d3uc069fcn7uxw.cloudfront.net/configuration'\n\nexport interface RumRemoteConfiguration {\n sessionSampleRate?: number\n sessionReplaySampleRate?: number\n defaultPrivacyLevel?: DefaultPrivacyLevel\n}\n\nexport function fetchAndApplyRemoteConfiguration(\n initConfiguration: RumInitConfiguration,\n callback: (initConfiguration: RumInitConfiguration) => void\n) {\n fetchRemoteConfiguration(initConfiguration, (remoteInitConfiguration) => {\n callback(applyRemoteConfiguration(initConfiguration, remoteInitConfiguration))\n })\n}\n\nexport function applyRemoteConfiguration(\n initConfiguration: RumInitConfiguration,\n remoteInitConfiguration: RumRemoteConfiguration\n) {\n return assign({}, initConfiguration, remoteInitConfiguration)\n}\n\nexport function fetchRemoteConfiguration(\n configuration: RumInitConfiguration,\n callback: (remoteConfiguration: RumRemoteConfiguration) => void\n) {\n const xhr = new XMLHttpRequest()\n\n addEventListener(configuration, xhr, 'load', function () {\n if (xhr.status === 200) {\n callback(JSON.parse(xhr.responseText))\n } else {\n displayRemoteConfigurationFetchingError()\n }\n })\n\n addEventListener(configuration, xhr, 'error', function () {\n displayRemoteConfigurationFetchingError()\n })\n\n xhr.open('GET', `${REMOTE_CONFIGURATION_URL}/${encodeURIComponent(configuration.remoteConfigurationId!)}.json`)\n xhr.send()\n}\n\nfunction displayRemoteConfigurationFetchingError() {\n display.error('Error fetching the remote configuration.')\n}\n","import {\n createBoundedBuffer,\n display,\n canUseEventBridge,\n displayAlreadyInitializedError,\n willSyntheticsInjectRum,\n noop,\n timeStampNow,\n clocksNow,\n assign,\n getEventBridge,\n ExperimentalFeature,\n isExperimentalFeatureEnabled,\n initFeatureFlags,\n addTelemetryConfiguration,\n initFetchObservable,\n} from '@datadog/browser-core'\nimport type { TrackingConsentState, DeflateWorker } from '@datadog/browser-core'\nimport {\n validateAndBuildRumConfiguration,\n type RumConfiguration,\n type RumInitConfiguration,\n} from '../domain/configuration'\nimport type { CommonContext } from '../domain/contexts/commonContext'\nimport type { ViewOptions } from '../domain/view/trackViews'\nimport type { DurationVital } from '../domain/vital/vitalCollection'\nimport { createVitalInstance } from '../domain/vital/vitalCollection'\nimport { fetchAndApplyRemoteConfiguration, serializeRumConfiguration } from '../domain/configuration'\nimport { callPluginsMethod } from '../domain/plugins'\nimport type { RumPublicApiOptions, Strategy } from './rumPublicApi'\nimport type { StartRumResult } from './startRum'\n\nexport function createPreStartStrategy(\n { ignoreInitIfSyntheticsWillInjectRum, startDeflateWorker }: RumPublicApiOptions,\n getCommonContext: () => CommonContext,\n trackingConsentState: TrackingConsentState,\n doStartRum: (\n configuration: RumConfiguration,\n deflateWorker: DeflateWorker | undefined,\n initialViewOptions?: ViewOptions\n ) => StartRumResult\n): Strategy {\n const bufferApiCalls = createBoundedBuffer<StartRumResult>()\n let firstStartViewCall:\n | { options: ViewOptions | undefined; callback: (startRumResult: StartRumResult) => void }\n | undefined\n let deflateWorker: DeflateWorker | undefined\n\n let cachedInitConfiguration: RumInitConfiguration | undefined\n let cachedConfiguration: RumConfiguration | undefined\n\n const trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartRum)\n\n function tryStartRum() {\n if (!cachedInitConfiguration || !cachedConfiguration || !trackingConsentState.isGranted()) {\n return\n }\n\n trackingConsentStateSubscription.unsubscribe()\n\n let initialViewOptions: ViewOptions | undefined\n\n if (cachedConfiguration.trackViewsManually) {\n if (!firstStartViewCall) {\n return\n }\n // An initial view is always created when starting RUM.\n // When tracking views automatically, any startView call before RUM start creates an extra\n // view.\n // When tracking views manually, we use the ViewOptions from the first startView call as the\n // initial view options, and we remove the actual startView call so we don't create an extra\n // view.\n bufferApiCalls.remove(firstStartViewCall.callback)\n initialViewOptions = firstStartViewCall.options\n }\n\n const startRumResult = doStartRum(cachedConfiguration, deflateWorker, initialViewOptions)\n\n bufferApiCalls.drain(startRumResult)\n }\n\n function doInit(initConfiguration: RumInitConfiguration) {\n const eventBridgeAvailable = canUseEventBridge()\n if (eventBridgeAvailable) {\n initConfiguration = overrideInitConfigurationForBridge(initConfiguration)\n }\n\n // Update the exposed initConfiguration to reflect the bridge and remote configuration overrides\n cachedInitConfiguration = initConfiguration\n addTelemetryConfiguration(serializeRumConfiguration(initConfiguration))\n\n if (cachedConfiguration) {\n displayAlreadyInitializedError('DD_RUM', initConfiguration)\n return\n }\n\n const configuration = validateAndBuildRumConfiguration(initConfiguration)\n if (!configuration) {\n return\n }\n\n if (!eventBridgeAvailable && !configuration.sessionStoreStrategyType) {\n display.warn('No storage available for session. We will not send any data.')\n return\n }\n\n if (configuration.compressIntakeRequests && !eventBridgeAvailable && startDeflateWorker) {\n deflateWorker = startDeflateWorker(\n configuration,\n 'Datadog RUM',\n // Worker initialization can fail asynchronously, especially in Firefox where even CSP\n // issues are reported asynchronously. For now, the SDK will continue its execution even if\n // data won't be sent to Datadog. We could improve this behavior in the future.\n noop\n )\n if (!deflateWorker) {\n // `startDeflateWorker` should have logged an error message explaining the issue\n return\n }\n }\n\n cachedConfiguration = configuration\n // Instrumuent fetch to track network requests\n // This is needed in case the consent is not granted and some cutsomer\n // library (Apollo Client) is storing uninstrumented fetch to be used later\n // The subscrption is needed so that the instrumentation process is completed\n initFetchObservable().subscribe(noop)\n\n trackingConsentState.tryToInit(configuration.trackingConsent)\n tryStartRum()\n }\n\n const addDurationVital = (vital: DurationVital) => {\n bufferApiCalls.add((startRumResult) => startRumResult.addDurationVital(vital))\n }\n\n return {\n init(initConfiguration, publicApi) {\n if (!initConfiguration) {\n display.error('Missing configuration')\n return\n }\n // Set the experimental feature flags as early as possible, so we can use them in most places\n initFeatureFlags(initConfiguration.enableExperimentalFeatures)\n\n // Expose the initial configuration regardless of initialization success.\n cachedInitConfiguration = initConfiguration\n\n // If we are in a Synthetics test configured to automatically inject a RUM instance, we want\n // to completely discard the customer application RUM instance by ignoring their init() call.\n // But, we should not ignore the init() call from the Synthetics-injected RUM instance, so the\n // internal `ignoreInitIfSyntheticsWillInjectRum` option is here to bypass this condition.\n if (ignoreInitIfSyntheticsWillInjectRum && willSyntheticsInjectRum()) {\n return\n }\n\n callPluginsMethod(initConfiguration.betaPlugins, 'onInit', { initConfiguration, publicApi })\n\n if (\n initConfiguration.remoteConfigurationId &&\n isExperimentalFeatureEnabled(ExperimentalFeature.REMOTE_CONFIGURATION)\n ) {\n fetchAndApplyRemoteConfiguration(initConfiguration, doInit)\n } else {\n doInit(initConfiguration)\n }\n },\n\n get initConfiguration() {\n return cachedInitConfiguration\n },\n\n getInternalContext: noop as () => undefined,\n\n stopSession: noop,\n\n addTiming(name, time = timeStampNow()) {\n bufferApiCalls.add((startRumResult) => startRumResult.addTiming(name, time))\n },\n\n startView(options, startClocks = clocksNow()) {\n const callback = (startRumResult: StartRumResult) => {\n startRumResult.startView(options, startClocks)\n }\n bufferApiCalls.add(callback)\n\n if (!firstStartViewCall) {\n firstStartViewCall = { options, callback }\n tryStartRum()\n }\n },\n\n updateViewName(name) {\n bufferApiCalls.add((startRumResult) => startRumResult.updateViewName(name))\n },\n\n addAction(action, commonContext = getCommonContext()) {\n bufferApiCalls.add((startRumResult) => startRumResult.addAction(action, commonContext))\n },\n\n addError(providedError, commonContext = getCommonContext()) {\n bufferApiCalls.add((startRumResult) => startRumResult.addError(providedError, commonContext))\n },\n\n addFeatureFlagEvaluation(key, value) {\n bufferApiCalls.add((startRumResult) => startRumResult.addFeatureFlagEvaluation(key, value))\n },\n\n startDurationVital(vitalStart) {\n return createVitalInstance((vital) => addDurationVital(vital), vitalStart)\n },\n\n addDurationVital,\n }\n}\n\nfunction overrideInitConfigurationForBridge(initConfiguration: RumInitConfiguration): RumInitConfiguration {\n return assign({}, initConfiguration, {\n applicationId: '00000000-aaaa-0000-aaaa-000000000000',\n clientToken: 'empty',\n sessionSampleRate: 100,\n defaultPrivacyLevel: initConfiguration.defaultPrivacyLevel ?? getEventBridge()?.getPrivacyLevel(),\n })\n}\n","import type { RumPublicApi } from '../boot/rumPublicApi'\nimport type { RumInitConfiguration } from './configuration'\n\nexport interface RumPlugin {\n name: string\n getConfigurationTelemetry?(): Record<string, unknown>\n onInit?(options: { initConfiguration: RumInitConfiguration; publicApi: RumPublicApi }): void\n}\n\ntype MethodNames = 'onInit'\ntype MethodParameter<MethodName extends MethodNames> = Parameters<NonNullable<RumPlugin[MethodName]>>[0]\n\nexport function callPluginsMethod<MethodName extends MethodNames>(\n plugins: RumPlugin[] | undefined,\n methodName: MethodName,\n parameter: MethodParameter<MethodName>\n) {\n if (!plugins) {\n return\n }\n for (const plugin of plugins) {\n const method = plugin[methodName]\n if (method) {\n method(parameter)\n }\n }\n}\n","import { Observable } from '../tools/observable'\nimport { objectValues, includes } from '../tools/utils/polyfills'\nimport type { Configuration } from '../domain/configuration'\nimport { addEventListeners, addEventListener, DOM_EVENT } from './addEventListener'\n\nexport const PageExitReason = {\n HIDDEN: 'visibility_hidden',\n UNLOADING: 'before_unload',\n PAGEHIDE: 'page_hide',\n FROZEN: 'page_frozen',\n} as const\n\nexport type PageExitReason = (typeof PageExitReason)[keyof typeof PageExitReason]\n\nexport interface PageExitEvent {\n reason: PageExitReason\n}\n\nexport function createPageExitObservable(configuration: Configuration): Observable<PageExitEvent> {\n return new Observable<PageExitEvent>((observable) => {\n const { stop: stopListeners } = addEventListeners(\n configuration,\n window,\n [DOM_EVENT.VISIBILITY_CHANGE, DOM_EVENT.FREEZE],\n (event) => {\n if (event.type === DOM_EVENT.VISIBILITY_CHANGE && document.visibilityState === 'hidden') {\n /**\n * Only event that guarantee to fire on mobile devices when the page transitions to background state\n * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n */\n observable.notify({ reason: PageExitReason.HIDDEN })\n } else if (event.type === DOM_EVENT.FREEZE) {\n /**\n * After transitioning in background a tab can be freezed to preserve resources. (cf: https://developer.chrome.com/blog/page-lifecycle-api)\n * Allow to collect events happening between hidden and frozen state.\n */\n observable.notify({ reason: PageExitReason.FROZEN })\n }\n },\n { capture: true }\n )\n\n const stopBeforeUnloadListener = addEventListener(configuration, window, DOM_EVENT.BEFORE_UNLOAD, () => {\n observable.notify({ reason: PageExitReason.UNLOADING })\n }).stop\n\n return () => {\n stopListeners()\n stopBeforeUnloadListener()\n }\n })\n}\n\nexport function isPageExitReason(reason: string | undefined): reason is PageExitReason {\n return includes(objectValues(PageExitReason), reason)\n}\n","import { monitor, noop, Observable, getZoneJsOriginalValue } from '@datadog/browser-core'\n\nexport function createDOMMutationObservable() {\n const MutationObserver = getMutationObserverConstructor()\n\n return new Observable<void>((observable) => {\n if (!MutationObserver) {\n return\n }\n const observer = new MutationObserver(monitor(() => observable.notify()))\n observer.observe(document, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n })\n return () => observer.disconnect()\n })\n}\n\ntype MutationObserverConstructor = new (callback: MutationCallback) => MutationObserver\n\nexport interface BrowserWindow extends Window {\n MutationObserver?: MutationObserverConstructor\n Zone?: unknown\n}\n\nexport function getMutationObserverConstructor(): MutationObserverConstructor | undefined {\n let constructor: MutationObserverConstructor | undefined\n const browserWindow: BrowserWindow = window\n\n // Angular uses Zone.js to provide a context persisting across async tasks. Zone.js replaces the\n // global MutationObserver constructor with a patched version to support the context propagation.\n // There is an ongoing issue[1][2] with this setup when using a MutationObserver within a Angular\n // component: on some occasions, the callback is being called in an infinite loop, causing the\n // page to freeze (even if the callback is completely empty).\n //\n // To work around this issue, we try to get the original MutationObserver constructor stored by\n // Zone.js.\n //\n // [1] https://github.com/angular/angular/issues/26948\n // [2] https://github.com/angular/angular/issues/31712\n if (browserWindow.Zone) {\n // Zone.js 0.8.6+ is storing original class constructors into the browser 'window' object[3].\n //\n // [3] https://github.com/angular/angular/blob/6375fa79875c0fe7b815efc45940a6e6f5c9c9eb/packages/zone.js/lib/common/utils.ts#L288\n constructor = getZoneJsOriginalValue(browserWindow, 'MutationObserver')\n\n if (browserWindow.MutationObserver && constructor === browserWindow.MutationObserver) {\n // Anterior Zone.js versions (used in Angular 2) does not expose the original MutationObserver\n // in the 'window' object. Luckily, the patched MutationObserver class is storing an original\n // instance in its properties[4]. Let's get the original MutationObserver constructor from\n // there.\n //\n // [4] https://github.com/angular/zone.js/blob/v0.8.5/lib/common/utils.ts#L412\n\n const patchedInstance = new browserWindow.MutationObserver(noop) as {\n originalInstance?: { constructor: MutationObserverConstructor }\n }\n\n const originalInstance = getZoneJsOriginalValue(patchedInstance, 'originalInstance')\n constructor = originalInstance && originalInstance.constructor\n }\n }\n\n if (!constructor) {\n constructor = browserWindow.MutationObserver\n }\n\n return constructor\n}\n","import type { RelativeTime, ServerDuration } from '@datadog/browser-core'\nimport {\n addTelemetryDebug,\n elapsed,\n ExperimentalFeature,\n getPathName,\n includes,\n isExperimentalFeatureEnabled,\n isValidUrl,\n ResourceType,\n toServerDuration,\n} from '@datadog/browser-core'\n\nimport type { RumPerformanceResourceTiming } from '../../browser/performanceObservable'\n\nimport type { PerformanceResourceDetailsElement } from '../../rawRumEvent.types'\nimport type { RumConfiguration } from '../configuration'\n\nexport interface PerformanceResourceDetails {\n redirect?: PerformanceResourceDetailsElement\n dns?: PerformanceResourceDetailsElement\n connect?: PerformanceResourceDetailsElement\n ssl?: PerformanceResourceDetailsElement\n first_byte?: PerformanceResourceDetailsElement\n download?: PerformanceResourceDetailsElement\n}\n\nexport const FAKE_INITIAL_DOCUMENT = 'initial_document'\n\nconst RESOURCE_TYPES: Array<[ResourceType, (initiatorType: string, path: string) => boolean]> = [\n [ResourceType.DOCUMENT, (initiatorType: string) => FAKE_INITIAL_DOCUMENT === initiatorType],\n [ResourceType.XHR, (initiatorType: string) => 'xmlhttprequest' === initiatorType],\n [ResourceType.FETCH, (initiatorType: string) => 'fetch' === initiatorType],\n [ResourceType.BEACON, (initiatorType: string) => 'beacon' === initiatorType],\n [ResourceType.CSS, (_: string, path: string) => /\\.css$/i.test(path)],\n [ResourceType.JS, (_: string, path: string) => /\\.js$/i.test(path)],\n [\n ResourceType.IMAGE,\n (initiatorType: string, path: string) =>\n includes(['image', 'img', 'icon'], initiatorType) || /\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i.exec(path) !== null,\n ],\n [ResourceType.FONT, (_: string, path: string) => /\\.(woff|eot|woff2|ttf)$/i.exec(path) !== null],\n [\n ResourceType.MEDIA,\n (initiatorType: string, path: string) =>\n includes(['audio', 'video'], initiatorType) || /\\.(mp3|mp4)$/i.exec(path) !== null,\n ],\n]\n\nexport function computeResourceKind(timing: RumPerformanceResourceTiming) {\n const url = timing.name\n if (!isValidUrl(url)) {\n addTelemetryDebug(`Failed to construct URL for \"${timing.name}\"`)\n return ResourceType.OTHER\n }\n const path = getPathName(url)\n for (const [type, isType] of RESOURCE_TYPES) {\n if (isType(timing.initiatorType, path)) {\n return type\n }\n }\n return ResourceType.OTHER\n}\n\nfunction areInOrder(...numbers: number[]) {\n for (let i = 1; i < numbers.length; i += 1) {\n if (numbers[i - 1] > numbers[i]) {\n return false\n }\n }\n return true\n}\n\nexport function isRequestKind(timing: RumPerformanceResourceTiming) {\n return timing.initiatorType === 'xmlhttprequest' || timing.initiatorType === 'fetch'\n}\n\nexport function computePerformanceResourceDuration(entry: RumPerformanceResourceTiming): ServerDuration {\n const { duration, startTime, responseEnd } = entry\n\n // Safari duration is always 0 on timings blocked by cross origin policies.\n if (duration === 0 && startTime < responseEnd) {\n return toServerDuration(elapsed(startTime, responseEnd))\n }\n\n return toServerDuration(duration)\n}\n\nexport function computePerformanceResourceDetails(\n entry: RumPerformanceResourceTiming\n): PerformanceResourceDetails | undefined {\n if (!isValidEntry(entry)) {\n return undefined\n }\n const {\n startTime,\n fetchStart,\n redirectStart,\n redirectEnd,\n domainLookupStart,\n domainLookupEnd,\n connectStart,\n secureConnectionStart,\n connectEnd,\n requestStart,\n responseStart,\n responseEnd,\n } = entry\n\n const details: PerformanceResourceDetails = {\n download: formatTiming(startTime, responseStart, responseEnd),\n first_byte: formatTiming(startTime, requestStart, responseStart),\n }\n\n // Make sure a connection occurred\n if (fetchStart < connectEnd) {\n details.connect = formatTiming(startTime, connectStart, connectEnd)\n\n // Make sure a secure connection occurred\n if (connectStart <= secureConnectionStart && secureConnectionStart <= connectEnd) {\n details.ssl = formatTiming(startTime, secureConnectionStart, connectEnd)\n }\n }\n\n // Make sure a domain lookup occurred\n if (fetchStart < domainLookupEnd) {\n details.dns = formatTiming(startTime, domainLookupStart, domainLookupEnd)\n }\n\n // Make sure a redirection occurred\n if (startTime < redirectEnd) {\n details.redirect = formatTiming(startTime, redirectStart, redirectEnd)\n }\n\n return details\n}\n\nexport function isValidEntry(entry: RumPerformanceResourceTiming) {\n if (isExperimentalFeatureEnabled(ExperimentalFeature.TOLERANT_RESOURCE_TIMINGS)) {\n return true\n }\n\n // Ensure timings are in the right order. On top of filtering out potential invalid\n // RumPerformanceResourceTiming, it will ignore entries from requests where timings cannot be\n // collected, for example cross origin requests without a \"Timing-Allow-Origin\" header allowing\n // it.\n const areCommonTimingsInOrder = areInOrder(\n entry.startTime,\n entry.fetchStart,\n entry.domainLookupStart,\n entry.domainLookupEnd,\n entry.connectStart,\n entry.connectEnd,\n entry.requestStart,\n entry.responseStart,\n entry.responseEnd\n )\n\n const areRedirectionTimingsInOrder = hasRedirection(entry)\n ? areInOrder(entry.startTime, entry.redirectStart, entry.redirectEnd, entry.fetchStart)\n : true\n\n return areCommonTimingsInOrder && areRedirectionTimingsInOrder\n}\n\nfunction hasRedirection(entry: RumPerformanceResourceTiming) {\n return entry.redirectEnd > entry.startTime\n}\nfunction formatTiming(origin: RelativeTime, start: RelativeTime, end: RelativeTime) {\n if (origin <= start && start <= end) {\n return {\n duration: toServerDuration(elapsed(start, end)),\n start: toServerDuration(elapsed(origin, start)),\n }\n }\n}\n\nexport function computeSize(entry: RumPerformanceResourceTiming) {\n // Make sure a request actually occurred\n if (entry.startTime < entry.responseStart) {\n const { encodedBodySize, decodedBodySize, transferSize } = entry\n return {\n size: decodedBodySize,\n encoded_body_size: encodedBodySize,\n decoded_body_size: decodedBodySize,\n transfer_size: transferSize,\n }\n }\n return {\n size: undefined,\n encoded_body_size: undefined,\n decoded_body_size: undefined,\n transfer_size: undefined,\n }\n}\n\nexport function isAllowedRequestUrl(configuration: RumConfiguration, url: string) {\n return url && !configuration.isIntakeUrl(url)\n}\n\nconst DATA_URL_REGEX = /data:(.+)?(;base64)?,/g\nexport const MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 24_000\n\nexport function isLongDataUrl(url: string): boolean {\n if (url.length <= MAX_ATTRIBUTE_VALUE_CHAR_LENGTH) {\n return false\n } else if (url.substring(0, 5) === 'data:') {\n // Avoid String.match RangeError: Maximum call stack size exceeded\n url = url.substring(0, MAX_ATTRIBUTE_VALUE_CHAR_LENGTH)\n return true\n }\n return false\n}\n\nexport function sanitizeDataUrl(url: string): string {\n return `${url.match(DATA_URL_REGEX)![0]}[...]`\n}\n","import type { Duration, RelativeTime, TimeoutId } from '@datadog/browser-core'\nimport { addEventListener, Observable, setTimeout, clearTimeout, monitor, includes } from '@datadog/browser-core'\nimport type { RumConfiguration } from '../domain/configuration'\nimport { isAllowedRequestUrl } from '../domain/resource/resourceUtils'\n\ntype RumPerformanceObserverConstructor = new (callback: PerformanceObserverCallback) => RumPerformanceObserver\n\nexport interface BrowserWindow extends Window {\n PerformanceObserver: RumPerformanceObserverConstructor\n performance: Performance & { interactionCount?: number }\n}\n\nexport interface RumPerformanceObserver extends PerformanceObserver {\n observe(options?: PerformanceObserverInit & { durationThreshold: number }): void\n}\n\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected performance entry\n// eslint-disable-next-line no-restricted-syntax\nexport enum RumPerformanceEntryType {\n EVENT = 'event',\n FIRST_INPUT = 'first-input',\n LARGEST_CONTENTFUL_PAINT = 'largest-contentful-paint',\n LAYOUT_SHIFT = 'layout-shift',\n LONG_TASK = 'longtask',\n NAVIGATION = 'navigation',\n PAINT = 'paint',\n RESOURCE = 'resource',\n}\n\nexport interface RumPerformanceLongTaskTiming {\n name: string\n entryType: RumPerformanceEntryType.LONG_TASK\n startTime: RelativeTime\n duration: Duration\n toJSON(): Omit<PerformanceEntry, 'toJSON'>\n}\n\nexport interface RumPerformanceResourceTiming {\n entryType: RumPerformanceEntryType.RESOURCE\n initiatorType: string\n responseStatus?: number\n name: string\n startTime: RelativeTime\n duration: Duration\n fetchStart: RelativeTime\n domainLookupStart: RelativeTime\n domainLookupEnd: RelativeTime\n connectStart: RelativeTime\n secureConnectionStart: RelativeTime\n connectEnd: RelativeTime\n requestStart: RelativeTime\n responseStart: RelativeTime\n responseEnd: RelativeTime\n redirectStart: RelativeTime\n redirectEnd: RelativeTime\n decodedBodySize: number\n encodedBodySize: number\n transferSize: number\n renderBlockingStatus?: string\n traceId?: string\n toJSON(): Omit<PerformanceEntry, 'toJSON'>\n}\n\nexport interface RumPerformancePaintTiming {\n entryType: RumPerformanceEntryType.PAINT\n name: 'first-paint' | 'first-contentful-paint'\n startTime: RelativeTime\n}\n\nexport interface RumPerformanceNavigationTiming {\n entryType: RumPerformanceEntryType.NAVIGATION\n domComplete: RelativeTime\n domContentLoadedEventEnd: RelativeTime\n domInteractive: RelativeTime\n loadEventEnd: RelativeTime\n responseStart: RelativeTime\n}\n\nexport interface RumLargestContentfulPaintTiming {\n entryType: RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT\n startTime: RelativeTime\n size: number\n element?: Element\n toJSON(): Omit<RumLargestContentfulPaintTiming, 'toJSON'>\n}\n\nexport interface RumFirstInputTiming {\n entryType: RumPerformanceEntryType.FIRST_INPUT\n startTime: RelativeTime\n processingStart: RelativeTime\n processingEnd: RelativeTime\n duration: Duration\n target?: Node\n interactionId?: number\n name: string\n}\n\nexport interface RumPerformanceEventTiming {\n entryType: RumPerformanceEntryType.EVENT\n startTime: RelativeTime\n processingStart: RelativeTime\n processingEnd: RelativeTime\n duration: Duration\n interactionId?: number\n target?: Node\n name: string\n}\n\nexport interface RumLayoutShiftTiming {\n entryType: RumPerformanceEntryType.LAYOUT_SHIFT\n startTime: RelativeTime\n value: number\n hadRecentInput: boolean\n sources?: Array<{\n node?: Node\n }>\n}\n\nexport type RumPerformanceEntry =\n | RumPerformanceResourceTiming\n | RumPerformanceLongTaskTiming\n | RumPerformancePaintTiming\n | RumPerformanceNavigationTiming\n | RumLargestContentfulPaintTiming\n | RumFirstInputTiming\n | RumPerformanceEventTiming\n | RumLayoutShiftTiming\n\nexport type EntryTypeToReturnType = {\n [RumPerformanceEntryType.EVENT]: RumPerformanceEventTiming\n [RumPerformanceEntryType.FIRST_INPUT]: RumFirstInputTiming\n [RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT]: RumLargestContentfulPaintTiming\n [RumPerformanceEntryType.LAYOUT_SHIFT]: RumLayoutShiftTiming\n [RumPerformanceEntryType.PAINT]: RumPerformancePaintTiming\n [RumPerformanceEntryType.LONG_TASK]: RumPerformanceLongTaskTiming\n [RumPerformanceEntryType.NAVIGATION]: RumPerformanceNavigationTiming\n [RumPerformanceEntryType.RESOURCE]: RumPerformanceResourceTiming\n}\n\nexport function createPerformanceObservable<T extends RumPerformanceEntryType>(\n configuration: RumConfiguration,\n options: { type: T; buffered?: boolean; durationThreshold?: number }\n) {\n return new Observable<Array<EntryTypeToReturnType[T]>>((observable) => {\n if (!window.PerformanceObserver) {\n return\n }\n\n const handlePerformanceEntries = (entries: PerformanceEntryList) => {\n const rumPerformanceEntries = filterRumPerformanceEntries(\n configuration,\n entries as Array<EntryTypeToReturnType[T]>\n )\n if (rumPerformanceEntries.length > 0) {\n observable.notify(rumPerformanceEntries)\n }\n }\n\n let timeoutId: TimeoutId | undefined\n let isObserverInitializing = true\n const observer = new PerformanceObserver(\n monitor((entries) => {\n // In Safari the performance observer callback is synchronous.\n // Because the buffered performance entry list can be quite large we delay the computation to prevent the SDK from blocking the main thread on init\n if (isObserverInitializing) {\n timeoutId = setTimeout(() => handlePerformanceEntries(entries.getEntries()))\n } else {\n handlePerformanceEntries(entries.getEntries())\n }\n })\n )\n try {\n observer.observe(options)\n } catch {\n // Some old browser versions (<= chrome 74 ) don't support the PerformanceObserver type and buffered options\n // In these cases, fallback to getEntriesByType and PerformanceObserver with entryTypes\n // TODO: remove this fallback in the next major version\n const fallbackSupportedEntryTypes = [\n RumPerformanceEntryType.RESOURCE,\n RumPerformanceEntryType.NAVIGATION,\n RumPerformanceEntryType.LONG_TASK,\n RumPerformanceEntryType.PAINT,\n ]\n if (includes(fallbackSupportedEntryTypes, options.type)) {\n if (options.buffered) {\n timeoutId = setTimeout(() => handlePerformanceEntries(performance.getEntriesByType(options.type)))\n }\n try {\n observer.observe({ entryTypes: [options.type] })\n } catch {\n // Old versions of Safari are throwing \"entryTypes contained only unsupported types\"\n // errors when observing only unsupported entry types.\n //\n // We could use `supportPerformanceTimingEvent` to make sure we don't invoke\n // `observer.observe` with an unsupported entry type, but Safari 11 and 12 don't support\n // `Performance.supportedEntryTypes`, so doing so would lose support for these versions\n // even if they do support the entry type.\n return\n }\n }\n }\n isObserverInitializing = false\n\n manageResourceTimingBufferFull(configuration)\n\n return () => {\n observer.disconnect()\n clearTimeout(timeoutId)\n }\n })\n}\n\nlet resourceTimingBufferFullListener: { stop: () => void }\nfunction manageResourceTimingBufferFull(configuration: RumConfiguration) {\n if (!resourceTimingBufferFullListener && supportPerformanceObject() && 'addEventListener' in performance) {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1559377\n resourceTimingBufferFullListener = addEventListener(configuration, performance, 'resourcetimingbufferfull', () => {\n performance.clearResourceTimings()\n })\n }\n return () => {\n resourceTimingBufferFullListener?.stop()\n }\n}\n\nfunction supportPerformanceObject() {\n return window.performance !== undefined && 'getEntries' in performance\n}\n\nexport function supportPerformanceTimingEvent(entryType: RumPerformanceEntryType) {\n return (\n window.PerformanceObserver &&\n PerformanceObserver.supportedEntryTypes !== undefined &&\n PerformanceObserver.supportedEntryTypes.includes(entryType)\n )\n}\n\nfunction filterRumPerformanceEntries<T extends RumPerformanceEntryType>(\n configuration: RumConfiguration,\n entries: Array<EntryTypeToReturnType[T]>\n) {\n return entries.filter((entry) => !isForbiddenResource(configuration, entry))\n}\n\nfunction isForbiddenResource(configuration: RumConfiguration, entry: RumPerformanceEntry) {\n return entry.entryType === RumPerformanceEntryType.RESOURCE && !isAllowedRequestUrl(configuration, entry.name)\n}\n","import type { Duration, RelativeTime } from '@datadog/browser-core'\nimport {\n dateNow,\n addEventListeners,\n DOM_EVENT,\n monitor,\n setTimeout,\n relativeNow,\n addEventListener,\n objectHasValue,\n} from '@datadog/browser-core'\n\nimport type { RumConfiguration } from '../domain/configuration'\nimport type { LifeCycle } from '../domain/lifeCycle'\nimport { LifeCycleEventType } from '../domain/lifeCycle'\nimport type {\n BrowserWindow,\n RumFirstInputTiming,\n RumPerformanceEntry,\n RumPerformanceResourceTiming,\n} from './performanceObservable'\nimport { RumPerformanceEntryType, supportPerformanceTimingEvent } from './performanceObservable'\n\nfunction supportPerformanceObject() {\n return window.performance !== undefined && 'getEntries' in performance\n}\n\nexport type CollectionRumPerformanceEntry = Exclude<RumPerformanceEntry, RumPerformanceResourceTiming>\n\nexport function startPerformanceCollection(lifeCycle: LifeCycle, configuration: RumConfiguration) {\n const cleanupTasks: Array<() => void> = []\n\n if (supportPerformanceObject()) {\n const performanceEntries = performance.getEntries()\n // Because the performance entry list can be quite large\n // delay the computation to prevent the SDK from blocking the main thread on init\n setTimeout(() => handleRumPerformanceEntries(lifeCycle, performanceEntries))\n }\n\n if (window.PerformanceObserver) {\n const handlePerformanceEntryList = monitor((entries: PerformanceObserverEntryList) =>\n handleRumPerformanceEntries(lifeCycle, entries.getEntries())\n )\n const mainEntries = [RumPerformanceEntryType.LONG_TASK, RumPerformanceEntryType.PAINT]\n const experimentalEntries = [\n RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT,\n RumPerformanceEntryType.FIRST_INPUT,\n RumPerformanceEntryType.LAYOUT_SHIFT,\n RumPerformanceEntryType.EVENT,\n ]\n\n try {\n // Experimental entries are not retrieved by performance.getEntries()\n // use a single PerformanceObserver with buffered flag by type\n // to get values that could happen before SDK init\n experimentalEntries.forEach((type) => {\n const observer = new (window as BrowserWindow).PerformanceObserver(handlePerformanceEntryList)\n observer.observe({\n type,\n buffered: true,\n // durationThreshold only impact PerformanceEventTiming entries used for INP computation which requires a threshold at 40 (default is 104ms)\n // cf: https://github.com/GoogleChrome/web-vitals/blob/3806160ffbc93c3c4abf210a167b81228172b31c/src/onINP.ts#L209\n durationThreshold: 40,\n })\n cleanupTasks.push(() => observer.disconnect())\n })\n } catch (e) {\n // Some old browser versions (ex: chrome 67) don't support the PerformanceObserver type and buffered options\n // In these cases, fallback to PerformanceObserver with entryTypes\n mainEntries.push(...experimentalEntries)\n }\n\n const mainObserver = new PerformanceObserver(handlePerformanceEntryList)\n try {\n mainObserver.observe({ entryTypes: mainEntries })\n cleanupTasks.push(() => mainObserver.disconnect())\n } catch {\n // Old versions of Safari are throwing \"entryTypes contained only unsupported types\"\n // errors when observing only unsupported entry types.\n //\n // We could use `supportPerformanceTimingEvent` to make sure we don't invoke\n // `observer.observe` with an unsupported entry type, but Safari 11 and 12 don't support\n // `Performance.supportedEntryTypes`, so doing so would lose support for these versions\n // even if they do support the entry type.\n }\n\n if (supportPerformanceObject() && 'addEventListener' in performance) {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1559377\n const { stop: removePerformanceListener } = addEventListener(\n configuration,\n performance,\n 'resourcetimingbufferfull',\n () => {\n performance.clearResourceTimings()\n }\n )\n cleanupTasks.push(removePerformanceListener)\n }\n }\n\n if (!supportPerformanceTimingEvent(RumPerformanceEntryType.FIRST_INPUT)) {\n const { stop: stopFirstInputTiming } = retrieveFirstInputTiming(configuration, (timing) => {\n handleRumPerformanceEntries(lifeCycle, [timing])\n })\n cleanupTasks.push(stopFirstInputTiming)\n }\n return {\n stop: () => {\n cleanupTasks.forEach((task) => task())\n },\n }\n}\n\n/**\n * first-input timing entry polyfill based on\n * https://github.com/GoogleChrome/web-vitals/blob/master/src/lib/polyfills/firstInputPolyfill.ts\n */\nfunction retrieveFirstInputTiming(configuration: RumConfiguration, callback: (timing: RumFirstInputTiming) => void) {\n const startTimeStamp = dateNow()\n let timingSent = false\n\n const { stop: removeEventListeners } = addEventListeners(\n configuration,\n window,\n [DOM_EVENT.CLICK, DOM_EVENT.MOUSE_DOWN, DOM_EVENT.KEY_DOWN, DOM_EVENT.TOUCH_START, DOM_EVENT.POINTER_DOWN],\n (evt) => {\n // Only count cancelable events, which should trigger behavior important to the user.\n if (!evt.cancelable) {\n return\n }\n\n // This timing will be used to compute the \"first Input delay\", which is the delta between\n // when the system received the event (e.g. evt.timeStamp) and when it could run the callback\n // (e.g. performance.now()).\n const timing: RumFirstInputTiming = {\n entryType: RumPerformanceEntryType.FIRST_INPUT,\n processingStart: relativeNow(),\n processingEnd: relativeNow(),\n startTime: evt.timeStamp as RelativeTime,\n duration: 0 as Duration, // arbitrary value to avoid nullable duration and simplify INP logic\n name: '',\n }\n\n if (evt.type === DOM_EVENT.POINTER_DOWN) {\n sendTimingIfPointerIsNotCancelled(configuration, timing)\n } else {\n sendTiming(timing)\n }\n },\n { passive: true, capture: true }\n )\n\n return { stop: removeEventListeners }\n\n /**\n * Pointer events are a special case, because they can trigger main or compositor thread behavior.\n * We differentiate these cases based on whether or not we see a pointercancel event, which are\n * fired when we scroll. If we're scrolling we don't need to report input delay since FID excludes\n * scrolling and pinch/zooming.\n */\n function sendTimingIfPointerIsNotCancelled(configuration: RumConfiguration, timing: RumFirstInputTiming) {\n addEventListeners(\n configuration,\n window,\n [DOM_EVENT.POINTER_UP, DOM_EVENT.POINTER_CANCEL],\n (event) => {\n if (event.type === DOM_EVENT.POINTER_UP) {\n sendTiming(timing)\n }\n },\n { once: true }\n )\n }\n\n function sendTiming(timing: RumFirstInputTiming) {\n if (!timingSent) {\n timingSent = true\n removeEventListeners()\n // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than\n // the time between now and when the page was loaded.\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7\n const delay = timing.processingStart - timing.startTime\n if (delay >= 0 && delay < dateNow() - startTimeStamp) {\n callback(timing)\n }\n }\n }\n}\n\nfunction handleRumPerformanceEntries(\n lifeCycle: LifeCycle,\n entries: Array<PerformanceEntry | CollectionRumPerformanceEntry>\n) {\n const rumPerformanceEntries = entries.filter((entry): entry is CollectionRumPerformanceEntry =>\n objectHasValue(RumPerformanceEntryType, entry.entryType)\n )\n\n if (rumPerformanceEntries.length) {\n lifeCycle.notify(LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED, rumPerformanceEntries)\n }\n}\n","import type { ClocksState } from '../../tools/utils/timeUtils'\n\n// TS v4.6 introduced Error.cause[1] typed as `Error`. TS v4.8 changed Error.cause to be\n// `unknown`[2].\n//\n// Because we still support TS 3.8, we need to declare our own type. We can remove it once we drop\n// support for TS v4.7 and before. The 'cause' property defined by TS needs to be omitted because\n// we define it with a type `unknown` which is incompatible with TS 4.6 and 4.7.\n//\n// [1]: https://devblogs.microsoft.com/typescript/announcing-typescript-4-6/#target-es2022\n// [2]: https://devblogs.microsoft.com/typescript/announcing-typescript-4-8/#lib-d-ts-updates\nexport interface ErrorWithCause extends Omit<Error, 'cause'> {\n cause?: unknown\n}\n\nexport type RawErrorCause = {\n message: string\n source: string\n type?: string\n stack?: string\n}\n\nexport type Csp = {\n disposition: 'enforce' | 'report'\n}\n\nexport interface RawError {\n startClocks: ClocksState\n message: string\n type?: string\n stack?: string\n source: ErrorSource\n originalError?: unknown\n handling?: ErrorHandling\n handlingStack?: string\n causes?: RawErrorCause[]\n fingerprint?: string\n csp?: Csp\n}\n\nexport const ErrorSource = {\n AGENT: 'agent',\n CONSOLE: 'console',\n CUSTOM: 'custom',\n LOGGER: 'logger',\n NETWORK: 'network',\n SOURCE: 'source',\n REPORT: 'report',\n} as const\n\nexport const enum NonErrorPrefix {\n UNCAUGHT = 'Uncaught',\n PROVIDED = 'Provided',\n}\n\nexport const enum ErrorHandling {\n HANDLED = 'handled',\n UNHANDLED = 'unhandled',\n}\n\nexport type ErrorSource = (typeof ErrorSource)[keyof typeof ErrorSource]\n","import { setTimeout } from '../../tools/timer'\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils'\nimport type { RawError } from '../error/error.types'\nimport { ErrorSource } from '../error/error.types'\n\nexport type EventRateLimiter = ReturnType<typeof createEventRateLimiter>\n\nexport function createEventRateLimiter(\n eventType: string,\n limit: number,\n onLimitReached: (limitError: RawError) => void\n) {\n let eventCount = 0\n let allowNextEvent = false\n\n return {\n isLimitReached() {\n if (eventCount === 0) {\n setTimeout(() => {\n eventCount = 0\n }, ONE_MINUTE)\n }\n\n eventCount += 1\n if (eventCount <= limit || allowNextEvent) {\n allowNextEvent = false\n return false\n }\n\n if (eventCount === limit + 1) {\n allowNextEvent = true\n try {\n onLimitReached({\n message: `Reached max number of ${eventType}s by minute: ${limit}`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n })\n } finally {\n allowNextEvent = false\n }\n }\n\n return true\n },\n }\n}\n","import { sanitize, deepClone, getType, objectEntries } from '@datadog/browser-core'\nimport type { Context } from '@datadog/browser-core'\n\nexport type ModifiableFieldPaths = Record<string, 'string' | 'object'>\n\n/**\n * Current limitation:\n * - field path do not support array, 'a.b.c' only\n */\nexport function limitModification<T extends Context, Result>(\n object: T,\n modifiableFieldPaths: ModifiableFieldPaths,\n modifier: (object: T) => Result\n): Result | undefined {\n const clone = deepClone(object)\n const result = modifier(clone)\n objectEntries(modifiableFieldPaths).forEach(([fieldPath, fieldType]) => {\n const newValue = get(clone, fieldPath)\n const newType = getType(newValue)\n if (newType === fieldType) {\n set(object, fieldPath, sanitize(newValue))\n } else if (fieldType === 'object' && (newType === 'undefined' || newType === 'null')) {\n set(object, fieldPath, {})\n }\n })\n return result\n}\n\nfunction get(object: unknown, path: string) {\n let current = object\n for (const field of path.split('.')) {\n if (!isValidObjectContaining(current, field)) {\n return\n }\n current = current[field]\n }\n return current\n}\n\nfunction set(object: unknown, path: string, value: unknown) {\n let current = object\n const fields = path.split('.')\n for (let i = 0; i < fields.length; i += 1) {\n const field = fields[i]\n if (!isValidObject(current)) {\n return\n }\n if (i !== fields.length - 1) {\n current = current[field]\n } else {\n current[field] = value\n }\n }\n}\n\nfunction isValidObject(object: unknown): object is Record<string, unknown> {\n return getType(object) === 'object'\n}\n\nfunction isValidObjectContaining(object: unknown, field: string): object is Record<string, unknown> {\n return isValidObject(object) && Object.prototype.hasOwnProperty.call(object, field)\n}\n","import type { Context, RawError, EventRateLimiter, User } from '@datadog/browser-core'\nimport {\n combine,\n isEmptyObject,\n timeStampNow,\n currentDrift,\n display,\n createEventRateLimiter,\n canUseEventBridge,\n assign,\n round,\n isExperimentalFeatureEnabled,\n ExperimentalFeature,\n getConnectivity,\n} from '@datadog/browser-core'\nimport type { RumEventDomainContext } from '../domainContext.types'\nimport type {\n RawRumErrorEvent,\n RawRumEvent,\n RawRumLongTaskEvent,\n RawRumResourceEvent,\n RumContext,\n} from '../rawRumEvent.types'\nimport { RumEventType } from '../rawRumEvent.types'\nimport type { RumEvent } from '../rumEvent.types'\nimport { getSyntheticsContext } from './contexts/syntheticsContext'\nimport type { CiVisibilityContext } from './contexts/ciVisibilityContext'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\nimport type { ViewContexts } from './contexts/viewContexts'\nimport { SessionReplayState, type RumSessionManager } from './rumSessionManager'\nimport type { UrlContexts } from './contexts/urlContexts'\nimport type { RumConfiguration } from './configuration'\nimport type { ActionContexts } from './action/actionCollection'\nimport type { DisplayContext } from './contexts/displayContext'\nimport type { CommonContext } from './contexts/commonContext'\nimport type { ModifiableFieldPaths } from './limitModification'\nimport { limitModification } from './limitModification'\n\n// replaced at build time\ndeclare const __BUILD_ENV__SDK_VERSION__: string\n\nconst enum SessionType {\n SYNTHETICS = 'synthetics',\n USER = 'user',\n CI_TEST = 'ci_test',\n}\n\nconst VIEW_MODIFIABLE_FIELD_PATHS: ModifiableFieldPaths = {\n 'view.name': 'string',\n 'view.url': 'string',\n 'view.referrer': 'string',\n}\n\nconst USER_CUSTOMIZABLE_FIELD_PATHS: ModifiableFieldPaths = {\n context: 'object',\n}\n\nconst ROOT_MODIFIABLE_FIELD_PATHS: ModifiableFieldPaths = {\n service: 'string',\n version: 'string',\n}\n\nlet modifiableFieldPathsByEvent: { [key in RumEventType]: ModifiableFieldPaths }\n\ntype Mutable<T> = { -readonly [P in keyof T]: T[P] }\n\nexport function startRumAssembly(\n configuration: RumConfiguration,\n lifeCycle: LifeCycle,\n sessionManager: RumSessionManager,\n viewContexts: ViewContexts,\n urlContexts: UrlContexts,\n actionContexts: ActionContexts,\n displayContext: DisplayContext,\n ciVisibilityContext: CiVisibilityContext,\n getCommonContext: () => CommonContext,\n reportError: (error: RawError) => void\n) {\n modifiableFieldPathsByEvent = {\n [RumEventType.VIEW]: VIEW_MODIFIABLE_FIELD_PATHS,\n [RumEventType.ERROR]: assign(\n {\n 'error.message': 'string',\n 'error.stack': 'string',\n 'error.resource.url': 'string',\n 'error.fingerprint': 'string',\n },\n USER_CUSTOMIZABLE_FIELD_PATHS,\n VIEW_MODIFIABLE_FIELD_PATHS,\n ROOT_MODIFIABLE_FIELD_PATHS\n ),\n [RumEventType.RESOURCE]: assign(\n {\n 'resource.url': 'string',\n },\n isExperimentalFeatureEnabled(ExperimentalFeature.WRITABLE_RESOURCE_GRAPHQL)\n ? {\n 'resource.graphql': 'object',\n }\n : {},\n USER_CUSTOMIZABLE_FIELD_PATHS,\n VIEW_MODIFIABLE_FIELD_PATHS,\n ROOT_MODIFIABLE_FIELD_PATHS\n ),\n [RumEventType.ACTION]: assign(\n {\n 'action.target.name': 'string',\n },\n USER_CUSTOMIZABLE_FIELD_PATHS,\n VIEW_MODIFIABLE_FIELD_PATHS,\n ROOT_MODIFIABLE_FIELD_PATHS\n ),\n [RumEventType.LONG_TASK]: assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n [RumEventType.VITAL]: assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n }\n const eventRateLimiters = {\n [RumEventType.ERROR]: createEventRateLimiter(\n RumEventType.ERROR,\n configuration.eventRateLimiterThreshold,\n reportError\n ),\n [RumEventType.ACTION]: createEventRateLimiter(\n RumEventType.ACTION,\n configuration.eventRateLimiterThreshold,\n reportError\n ),\n [RumEventType.VITAL]: createEventRateLimiter(\n RumEventType.VITAL,\n configuration.eventRateLimiterThreshold,\n reportError\n ),\n }\n\n const syntheticsContext = getSyntheticsContext()\n lifeCycle.subscribe(\n LifeCycleEventType.RAW_RUM_EVENT_COLLECTED,\n ({ startTime, rawRumEvent, domainContext, savedCommonContext, customerContext }) => {\n const viewContext = viewContexts.findView(startTime)\n const urlContext = urlContexts.findUrl(startTime)\n const session = sessionManager.findTrackedSession(startTime)\n if (session && viewContext && urlContext) {\n const commonContext = savedCommonContext || getCommonContext()\n const actionId = actionContexts.findActionId(startTime)\n\n const rumContext: RumContext = {\n _dd: {\n format_version: 2,\n drift: currentDrift(),\n configuration: {\n session_sample_rate: round(configuration.sessionSampleRate, 3),\n session_replay_sample_rate: round(configuration.sessionReplaySampleRate, 3),\n },\n browser_sdk_version: canUseEventBridge() ? __BUILD_ENV__SDK_VERSION__ : undefined,\n },\n application: {\n id: configuration.applicationId,\n },\n date: timeStampNow(),\n service: viewContext.service || configuration.service,\n version: viewContext.version || configuration.version,\n source: 'browser',\n session: {\n id: session.id,\n type: syntheticsContext\n ? SessionType.SYNTHETICS\n : ciVisibilityContext.get()\n ? SessionType.CI_TEST\n : SessionType.USER,\n },\n view: {\n id: viewContext.id,\n name: viewContext.name,\n url: urlContext.url,\n referrer: urlContext.referrer,\n },\n action: needToAssembleWithAction(rawRumEvent) && actionId ? { id: actionId } : undefined,\n synthetics: syntheticsContext,\n ci_test: ciVisibilityContext.get(),\n display: displayContext.get(),\n connectivity: getConnectivity(),\n }\n\n const serverRumEvent = combine(rumContext as RumContext & Context, rawRumEvent) as RumEvent & Context\n serverRumEvent.context = combine(commonContext.context, customerContext)\n\n if (!('has_replay' in serverRumEvent.session)) {\n ;(serverRumEvent.session as Mutable<RumEvent['session']>).has_replay = commonContext.hasReplay\n }\n if (serverRumEvent.type === 'view') {\n ;(serverRumEvent.session as Mutable<RumEvent['session']>).sampled_for_replay =\n session.sessionReplay === SessionReplayState.SAMPLED\n }\n\n if (!isEmptyObject(commonContext.user)) {\n ;(serverRumEvent.usr as Mutable<RumEvent['usr']>) = commonContext.user as User & Context\n }\n\n if (shouldSend(serverRumEvent, configuration.beforeSend, domainContext, eventRateLimiters)) {\n if (isEmptyObject(serverRumEvent.context)) {\n delete serverRumEvent.context\n }\n lifeCycle.notify(LifeCycleEventType.RUM_EVENT_COLLECTED, serverRumEvent)\n }\n }\n }\n )\n}\n\nfunction shouldSend(\n event: RumEvent & Context,\n beforeSend: RumConfiguration['beforeSend'],\n domainContext: RumEventDomainContext,\n eventRateLimiters: { [key in RumEventType]?: EventRateLimiter }\n) {\n if (beforeSend) {\n const result = limitModification(event, modifiableFieldPathsByEvent[event.type], (event) =>\n beforeSend(event, domainContext)\n )\n if (result === false && event.type !== RumEventType.VIEW) {\n return false\n }\n if (result === false) {\n display.warn(\"Can't dismiss view events using beforeSend!\")\n }\n }\n\n const rateLimitReached = eventRateLimiters[event.type]?.isLimitReached()\n\n return !rateLimitReached\n}\n\nfunction needToAssembleWithAction(\n event: RawRumEvent\n): event is RawRumErrorEvent | RawRumResourceEvent | RawRumLongTaskEvent {\n return [RumEventType.ERROR, RumEventType.RESOURCE, RumEventType.LONG_TASK].indexOf(event.type) !== -1\n}\n","import { getSyntheticsResultId, getSyntheticsTestId, willSyntheticsInjectRum } from '@datadog/browser-core'\n\nexport function getSyntheticsContext() {\n const testId = getSyntheticsTestId()\n const resultId = getSyntheticsResultId()\n\n if (testId && resultId) {\n return {\n test_id: testId,\n result_id: resultId,\n injected: willSyntheticsInjectRum(),\n }\n }\n}\n","import type { Subscription } from './observable'\n\n/**\n * Type helper to extract event types that have \"void\" data. This allows to call `notify` without a\n * second argument. Ex:\n *\n * ```\n * interface EventMap {\n * foo: void\n * }\n * const LifeCycle = AbstractLifeCycle<EventMap>\n * new LifeCycle().notify('foo')\n * ```\n */\ntype EventTypesWithoutData<EventMap> = {\n [K in keyof EventMap]: EventMap[K] extends void ? K : never\n}[keyof EventMap]\n\n// eslint-disable-next-line no-restricted-syntax\nexport class AbstractLifeCycle<EventMap> {\n private callbacks: { [key in keyof EventMap]?: Array<(data: any) => void> } = {}\n\n notify<EventType extends EventTypesWithoutData<EventMap>>(eventType: EventType): void\n notify<EventType extends keyof EventMap>(eventType: EventType, data: EventMap[EventType]): void\n notify(eventType: keyof EventMap, data?: unknown) {\n const eventCallbacks = this.callbacks[eventType]\n if (eventCallbacks) {\n eventCallbacks.forEach((callback) => callback(data))\n }\n }\n\n subscribe<EventType extends keyof EventMap>(\n eventType: EventType,\n callback: (data: EventMap[EventType]) => void\n ): Subscription {\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = []\n }\n this.callbacks[eventType]!.push(callback)\n return {\n unsubscribe: () => {\n this.callbacks[eventType] = this.callbacks[eventType]!.filter((other) => callback !== other)\n },\n }\n }\n}\n","import type { Context, PageExitEvent, RawError, RelativeTime } from '@datadog/browser-core'\nimport { AbstractLifeCycle } from '@datadog/browser-core'\nimport type { RumEventDomainContext } from '../domainContext.types'\nimport type { RawRumEvent } from '../rawRumEvent.types'\nimport type { RumEvent } from '../rumEvent.types'\nimport type { CollectionRumPerformanceEntry } from '../browser/performanceCollection'\nimport type { CommonContext } from './contexts/commonContext'\nimport type { RequestCompleteEvent, RequestStartEvent } from './requestCollection'\nimport type { AutoAction } from './action/actionCollection'\nimport type { ViewEvent, ViewCreatedEvent, ViewEndedEvent } from './view/trackViews'\n\nexport const enum LifeCycleEventType {\n // Contexts (like viewContexts) should be opened using prefixed BEFORE_XXX events and closed using prefixed AFTER_XXX events\n // It ensures the context is available during the non prefixed event callbacks\n PERFORMANCE_ENTRIES_COLLECTED,\n AUTO_ACTION_COMPLETED,\n BEFORE_VIEW_CREATED,\n VIEW_CREATED,\n VIEW_UPDATED,\n VIEW_ENDED,\n AFTER_VIEW_ENDED,\n REQUEST_STARTED,\n REQUEST_COMPLETED,\n\n // The SESSION_EXPIRED lifecycle event has been introduced to represent when a session has expired\n // and trigger cleanup tasks related to this, prior to renewing the session. Its implementation is\n // slightly naive: it is not triggered as soon as the session is expired, but rather just before\n // notifying that the session is renewed. Thus, the session id is already set to the newly renewed\n // session.\n //\n // This implementation is \"good enough\" for our use-cases. Improving this is not trivial,\n // primarily because multiple instances of the SDK may be managing the same session cookie at\n // the same time, for example when using Logs and RUM on the same page, or opening multiple tabs\n // on the same domain.\n SESSION_EXPIRED,\n SESSION_RENEWED,\n PAGE_EXITED,\n RAW_RUM_EVENT_COLLECTED,\n RUM_EVENT_COLLECTED,\n RAW_ERROR_COLLECTED,\n}\n\n// This is a workaround for an issue occurring when the Browser SDK is included in a TypeScript\n// project configured with `isolatedModules: true`. Even if the const enum is declared in this\n// module, we cannot use it directly to define the EventMap interface keys (TS error: \"Cannot access\n// ambient const enums when the '--isolatedModules' flag is provided.\").\n//\n// Using a plain enum would fix the issue, but would also add 2KB to the minified bundle. By using\n// this workaround, we can keep using a const enum without impacting the bundle size (since it is a\n// \"declare\" statement, it will only be used during typecheck and completely ignored when building\n// JavaScript).\n//\n// See issues:\n// * https://github.com/DataDog/browser-sdk/issues/2208\n// * https://github.com/microsoft/TypeScript/issues/54152\ndeclare const LifeCycleEventTypeAsConst: {\n PERFORMANCE_ENTRIES_COLLECTED: LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED\n AUTO_ACTION_COMPLETED: LifeCycleEventType.AUTO_ACTION_COMPLETED\n BEFORE_VIEW_CREATED: LifeCycleEventType.BEFORE_VIEW_CREATED\n VIEW_CREATED: LifeCycleEventType.VIEW_CREATED\n VIEW_UPDATED: LifeCycleEventType.VIEW_UPDATED\n VIEW_ENDED: LifeCycleEventType.VIEW_ENDED\n AFTER_VIEW_ENDED: LifeCycleEventType.AFTER_VIEW_ENDED\n REQUEST_STARTED: LifeCycleEventType.REQUEST_STARTED\n REQUEST_COMPLETED: LifeCycleEventType.REQUEST_COMPLETED\n SESSION_EXPIRED: LifeCycleEventType.SESSION_EXPIRED\n SESSION_RENEWED: LifeCycleEventType.SESSION_RENEWED\n PAGE_EXITED: LifeCycleEventType.PAGE_EXITED\n RAW_RUM_EVENT_COLLECTED: LifeCycleEventType.RAW_RUM_EVENT_COLLECTED\n RUM_EVENT_COLLECTED: LifeCycleEventType.RUM_EVENT_COLLECTED\n RAW_ERROR_COLLECTED: LifeCycleEventType.RAW_ERROR_COLLECTED\n}\n\n// Note: this interface needs to be exported even if it is not used outside of this module, else TS\n// fails to build the rum-core package with error TS4058\nexport interface LifeCycleEventMap {\n [LifeCycleEventTypeAsConst.PERFORMANCE_ENTRIES_COLLECTED]: CollectionRumPerformanceEntry[]\n [LifeCycleEventTypeAsConst.AUTO_ACTION_COMPLETED]: AutoAction\n [LifeCycleEventTypeAsConst.BEFORE_VIEW_CREATED]: ViewCreatedEvent\n [LifeCycleEventTypeAsConst.VIEW_CREATED]: ViewCreatedEvent\n [LifeCycleEventTypeAsConst.VIEW_UPDATED]: ViewEvent\n [LifeCycleEventTypeAsConst.VIEW_ENDED]: ViewEndedEvent\n [LifeCycleEventTypeAsConst.AFTER_VIEW_ENDED]: ViewEndedEvent\n [LifeCycleEventTypeAsConst.REQUEST_STARTED]: RequestStartEvent\n [LifeCycleEventTypeAsConst.REQUEST_COMPLETED]: RequestCompleteEvent\n [LifeCycleEventTypeAsConst.SESSION_EXPIRED]: void\n [LifeCycleEventTypeAsConst.SESSION_RENEWED]: void\n [LifeCycleEventTypeAsConst.PAGE_EXITED]: PageExitEvent\n [LifeCycleEventTypeAsConst.RAW_RUM_EVENT_COLLECTED]: RawRumEventCollectedData\n [LifeCycleEventTypeAsConst.RUM_EVENT_COLLECTED]: RumEvent & Context\n [LifeCycleEventTypeAsConst.RAW_ERROR_COLLECTED]: {\n error: RawError\n savedCommonContext?: CommonContext\n customerContext?: Context\n }\n}\n\nexport interface RawRumEventCollectedData<E extends RawRumEvent = RawRumEvent> {\n startTime: RelativeTime\n savedCommonContext?: CommonContext\n customerContext?: Context\n rawRumEvent: E\n domainContext: RumEventDomainContext<E['type']>\n}\n\nexport const LifeCycle = AbstractLifeCycle<LifeCycleEventMap>\nexport type LifeCycle = AbstractLifeCycle<LifeCycleEventMap>\n","import { setInterval, clearInterval } from './timer'\nimport type { TimeoutId } from './timer'\nimport { removeItem } from './utils/arrayUtils'\nimport type { Duration, RelativeTime } from './utils/timeUtils'\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils'\n\nconst END_OF_TIMES = Infinity as RelativeTime\n\nexport interface ValueHistoryEntry<T> {\n startTime: RelativeTime\n endTime: RelativeTime\n value: T\n remove(): void\n close(endTime: RelativeTime): void\n}\n\nexport const CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE\n\n/**\n * Store and keep track of values spans. This whole cache assumes that values are added in\n * chronological order (i.e. all entries have an increasing start time).\n */\nexport interface ValueHistory<Value> {\n add: (value: Value, startTime: RelativeTime) => ValueHistoryEntry<Value>\n find: (startTime?: RelativeTime, options?: { returnInactive: boolean }) => Value | undefined\n\n closeActive: (endTime: RelativeTime) => void\n findAll: (startTime?: RelativeTime, duration?: Duration) => Value[]\n reset: () => void\n stop: () => void\n}\n\nexport function createValueHistory<Value>({\n expireDelay,\n maxEntries,\n}: {\n expireDelay: number\n maxEntries?: number\n}): ValueHistory<Value> {\n let entries: Array<ValueHistoryEntry<Value>> = []\n const clearOldValuesInterval: TimeoutId = setInterval(() => clearOldValues(), CLEAR_OLD_VALUES_INTERVAL)\n\n function clearOldValues() {\n const oldTimeThreshold = relativeNow() - expireDelay\n while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {\n entries.pop()\n }\n }\n\n /**\n * Add a value to the history associated with a start time. Returns a reference to this newly\n * added entry that can be removed or closed.\n */\n function add(value: Value, startTime: RelativeTime): ValueHistoryEntry<Value> {\n const entry: ValueHistoryEntry<Value> = {\n value,\n startTime,\n endTime: END_OF_TIMES,\n remove: () => {\n removeItem(entries, entry)\n },\n close: (endTime: RelativeTime) => {\n entry.endTime = endTime\n },\n }\n\n if (maxEntries && entries.length >= maxEntries) {\n entries.pop()\n }\n\n entries.unshift(entry)\n\n return entry\n }\n\n /**\n * Return the latest value that was active during `startTime`, or the currently active value\n * if no `startTime` is provided. This method assumes that entries are not overlapping.\n *\n * If `option.returnInactive` is true, returns the value at `startTime` (active or not).\n */\n function find(\n startTime: RelativeTime = END_OF_TIMES,\n options: { returnInactive: boolean } = { returnInactive: false }\n ): Value | undefined {\n for (const entry of entries) {\n if (entry.startTime <= startTime) {\n if (options.returnInactive || startTime <= entry.endTime) {\n return entry.value\n }\n break\n }\n }\n }\n\n /**\n * Helper function to close the currently active value, if any. This method assumes that entries\n * are not overlapping.\n */\n function closeActive(endTime: RelativeTime) {\n const latestEntry = entries[0]\n if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n latestEntry.close(endTime)\n }\n }\n\n /**\n * Return all values with an active period overlapping with the duration,\n * or all values that were active during `startTime` if no duration is provided,\n * or all currently active values if no `startTime` is provided.\n */\n function findAll(startTime: RelativeTime = END_OF_TIMES, duration = 0 as Duration): Value[] {\n const endTime = addDuration(startTime, duration)\n return entries\n .filter((entry) => entry.startTime <= endTime && startTime <= entry.endTime)\n .map((entry) => entry.value)\n }\n\n /**\n * Remove all entries from this collection.\n */\n function reset() {\n entries = []\n }\n\n /**\n * Stop internal garbage collection of past entries.\n */\n function stop() {\n clearInterval(clearOldValuesInterval)\n }\n\n return { add, find, closeActive, findAll, reset, stop }\n}\n","import type { RelativeTime, ClocksState } from '@datadog/browser-core'\nimport { SESSION_TIME_OUT_DELAY, createValueHistory } from '@datadog/browser-core'\nimport type { LifeCycle } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport type { ViewCreatedEvent, ViewEvent } from '../view/trackViews'\n\nexport const VIEW_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY\n\nexport interface ViewContext {\n service?: string\n version?: string\n id: string\n name?: string\n startClocks: ClocksState\n}\n\nexport interface ViewContexts {\n findView: (startTime?: RelativeTime) => ViewContext | undefined\n stop: () => void\n}\n\nexport function startViewContexts(lifeCycle: LifeCycle): ViewContexts {\n const viewContextHistory = createValueHistory<ViewContext>({ expireDelay: VIEW_CONTEXT_TIME_OUT_DELAY })\n\n lifeCycle.subscribe(LifeCycleEventType.BEFORE_VIEW_CREATED, (view) => {\n viewContextHistory.add(buildViewContext(view), view.startClocks.relative)\n })\n\n lifeCycle.subscribe(LifeCycleEventType.AFTER_VIEW_ENDED, ({ endClocks }) => {\n viewContextHistory.closeActive(endClocks.relative)\n })\n\n lifeCycle.subscribe(LifeCycleEventType.VIEW_UPDATED, (viewUpdate: ViewEvent) => {\n const currentView = viewContextHistory.find(viewUpdate.startClocks.relative)\n if (currentView && viewUpdate.name) {\n currentView.name = viewUpdate.name\n }\n })\n\n lifeCycle.subscribe(LifeCycleEventType.SESSION_RENEWED, () => {\n viewContextHistory.reset()\n })\n\n function buildViewContext(view: ViewCreatedEvent) {\n return {\n service: view.service,\n version: view.version,\n id: view.id,\n name: view.name,\n startClocks: view.startClocks,\n }\n }\n\n return {\n findView: (startTime) => viewContextHistory.find(startTime),\n stop: () => {\n viewContextHistory.stop()\n },\n }\n}\n","import type { InstrumentedMethodCall } from '../tools/instrumentMethod'\nimport { instrumentMethod } from '../tools/instrumentMethod'\nimport { Observable } from '../tools/observable'\nimport type { Duration, ClocksState } from '../tools/utils/timeUtils'\nimport { elapsed, clocksNow, timeStampNow } from '../tools/utils/timeUtils'\nimport { normalizeUrl } from '../tools/utils/urlPolyfill'\nimport { shallowClone } from '../tools/utils/objectUtils'\nimport type { Configuration } from '../domain/configuration'\nimport { addEventListener } from './addEventListener'\n\nexport interface XhrOpenContext {\n state: 'open'\n method: string\n url: string\n}\n\nexport interface XhrStartContext extends Omit<XhrOpenContext, 'state'> {\n state: 'start'\n startClocks: ClocksState\n isAborted: boolean\n xhr: XMLHttpRequest\n handlingStack?: string\n}\n\nexport interface XhrCompleteContext extends Omit<XhrStartContext, 'state'> {\n state: 'complete'\n duration: Duration\n status: number\n}\n\nexport type XhrContext = XhrOpenContext | XhrStartContext | XhrCompleteContext\n\nlet xhrObservable: Observable<XhrContext> | undefined\nconst xhrContexts = new WeakMap<XMLHttpRequest, XhrContext>()\n\nexport function initXhrObservable(configuration: Configuration) {\n if (!xhrObservable) {\n xhrObservable = createXhrObservable(configuration)\n }\n return xhrObservable\n}\n\nfunction createXhrObservable(configuration: Configuration) {\n return new Observable<XhrContext>((observable) => {\n const { stop: stopInstrumentingStart } = instrumentMethod(XMLHttpRequest.prototype, 'open', openXhr)\n\n const { stop: stopInstrumentingSend } = instrumentMethod(\n XMLHttpRequest.prototype,\n 'send',\n (call) => {\n sendXhr(call, configuration, observable)\n },\n { computeHandlingStack: true }\n )\n\n const { stop: stopInstrumentingAbort } = instrumentMethod(XMLHttpRequest.prototype, 'abort', abortXhr)\n\n return () => {\n stopInstrumentingStart()\n stopInstrumentingSend()\n stopInstrumentingAbort()\n }\n })\n}\n\nfunction openXhr({ target: xhr, parameters: [method, url] }: InstrumentedMethodCall<XMLHttpRequest, 'open'>) {\n xhrContexts.set(xhr, {\n state: 'open',\n method: String(method).toUpperCase(),\n url: normalizeUrl(String(url)),\n })\n}\n\nfunction sendXhr(\n { target: xhr, handlingStack }: InstrumentedMethodCall<XMLHttpRequest, 'send'>,\n configuration: Configuration,\n observable: Observable<XhrContext>\n) {\n const context = xhrContexts.get(xhr)\n if (!context) {\n return\n }\n\n const startContext = context as XhrStartContext\n startContext.state = 'start'\n startContext.startClocks = clocksNow()\n startContext.isAborted = false\n startContext.xhr = xhr\n startContext.handlingStack = handlingStack\n\n let hasBeenReported = false\n\n const { stop: stopInstrumentingOnReadyStateChange } = instrumentMethod(xhr, 'onreadystatechange', () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n // application during a future event. For example, Angular is calling .abort() on\n // completed requests during an onreadystatechange event, so the status becomes '0'\n // before the request is collected.\n onEnd()\n }\n })\n\n const onEnd = () => {\n unsubscribeLoadEndListener()\n stopInstrumentingOnReadyStateChange()\n if (hasBeenReported) {\n return\n }\n hasBeenReported = true\n\n const completeContext = context as XhrCompleteContext\n completeContext.state = 'complete'\n completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow())\n completeContext.status = xhr.status\n observable.notify(shallowClone(completeContext))\n }\n\n const { stop: unsubscribeLoadEndListener } = addEventListener(configuration, xhr, 'loadend', onEnd)\n\n observable.notify(startContext)\n}\n\nfunction abortXhr({ target: xhr }: InstrumentedMethodCall<XMLHttpRequest, 'abort'>) {\n const context = xhrContexts.get(xhr) as XhrStartContext | undefined\n if (context) {\n context.isAborted = true\n }\n}\n","export function isServerError(status: number) {\n return status >= 500\n}\n\nexport function tryToClone(response: Response): Response | undefined {\n try {\n return response.clone()\n } catch (e) {\n // clone can throw if the response has already been used by another instrumentation or is disturbed\n return\n }\n}\n","import { monitor } from './monitor'\nimport { noop } from './utils/functionUtils'\n\ntype Options = {\n bytesLimit: number\n collectStreamBody?: boolean\n}\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nexport function readBytesFromStream(\n stream: ReadableStream<Uint8Array>,\n callback: (error?: Error, bytes?: Uint8Array, limitExceeded?: boolean) => void,\n options: Options\n) {\n const reader = stream.getReader()\n const chunks: Uint8Array[] = []\n let readBytesCount = 0\n\n readMore()\n\n function readMore() {\n reader.read().then(\n monitor((result: ReadableStreamReadResult<Uint8Array>) => {\n if (result.done) {\n onDone()\n return\n }\n\n if (options.collectStreamBody) {\n chunks.push(result.value)\n }\n readBytesCount += result.value.length\n\n if (readBytesCount > options.bytesLimit) {\n onDone()\n } else {\n readMore()\n }\n }),\n monitor((error) => callback(error))\n )\n }\n\n function onDone() {\n reader.cancel().catch(\n // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n // as an unhandled rejection\n noop\n )\n\n let bytes: Uint8Array | undefined\n let limitExceeded: boolean | undefined\n if (options.collectStreamBody) {\n let completeBuffer: Uint8Array\n if (chunks.length === 1) {\n // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just\n // use it directly.\n completeBuffer = chunks[0]\n } else {\n // else, we need to copy buffers into a larger buffer to concatenate them.\n completeBuffer = new Uint8Array(readBytesCount)\n let offset = 0\n chunks.forEach((chunk) => {\n completeBuffer.set(chunk, offset)\n offset += chunk.length\n })\n }\n bytes = completeBuffer.slice(0, options.bytesLimit)\n limitExceeded = completeBuffer.length > options.bytesLimit\n }\n\n callback(undefined, bytes, limitExceeded)\n }\n}\n","import type {\n Duration,\n XhrCompleteContext,\n XhrStartContext,\n ClocksState,\n FetchStartContext,\n FetchResolveContext,\n} from '@datadog/browser-core'\nimport {\n RequestType,\n initFetchObservable,\n initXhrObservable,\n readBytesFromStream,\n elapsed,\n timeStampNow,\n tryToClone,\n} from '@datadog/browser-core'\nimport type { RumSessionManager } from '..'\nimport type { RumConfiguration } from './configuration'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\nimport { isAllowedRequestUrl } from './resource/resourceUtils'\nimport type { TraceIdentifier, Tracer } from './tracing/tracer'\nimport { startTracer } from './tracing/tracer'\n\nexport interface CustomContext {\n requestIndex: number\n spanId?: TraceIdentifier\n traceId?: TraceIdentifier\n traceSampled?: boolean\n}\nexport interface RumFetchStartContext extends FetchStartContext, CustomContext {}\nexport interface RumFetchResolveContext extends FetchResolveContext, CustomContext {}\nexport interface RumXhrStartContext extends XhrStartContext, CustomContext {}\nexport interface RumXhrCompleteContext extends XhrCompleteContext, CustomContext {}\n\nexport interface RequestStartEvent {\n requestIndex: number\n url: string\n}\nexport interface RequestCompleteEvent {\n requestIndex: number\n type: RequestType\n method: string\n url: string\n status: number\n responseType?: string\n startClocks: ClocksState\n duration: Duration\n spanId?: TraceIdentifier\n traceId?: TraceIdentifier\n traceSampled?: boolean\n xhr?: XMLHttpRequest\n response?: Response\n input?: unknown\n init?: RequestInit\n error?: Error\n isAborted: boolean\n handlingStack?: string\n}\n\nlet nextRequestIndex = 1\n\nexport function startRequestCollection(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n sessionManager: RumSessionManager\n) {\n const tracer = startTracer(configuration, sessionManager)\n trackXhr(lifeCycle, configuration, tracer)\n trackFetch(lifeCycle, configuration, tracer)\n}\n\nexport function trackXhr(lifeCycle: LifeCycle, configuration: RumConfiguration, tracer: Tracer) {\n const subscription = initXhrObservable(configuration).subscribe((rawContext) => {\n const context = rawContext as RumXhrStartContext | RumXhrCompleteContext\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return\n }\n\n switch (context.state) {\n case 'start':\n tracer.traceXhr(context, context.xhr)\n context.requestIndex = getNextRequestIndex()\n\n lifeCycle.notify(LifeCycleEventType.REQUEST_STARTED, {\n requestIndex: context.requestIndex,\n url: context.url,\n })\n break\n case 'complete':\n tracer.clearTracingIfNeeded(context)\n lifeCycle.notify(LifeCycleEventType.REQUEST_COMPLETED, {\n duration: context.duration,\n method: context.method,\n requestIndex: context.requestIndex,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: RequestType.XHR,\n url: context.url,\n xhr: context.xhr,\n isAborted: context.isAborted,\n handlingStack: context.handlingStack,\n })\n break\n }\n })\n\n return { stop: () => subscription.unsubscribe() }\n}\n\nexport function trackFetch(lifeCycle: LifeCycle, configuration: RumConfiguration, tracer: Tracer) {\n const subscription = initFetchObservable().subscribe((rawContext) => {\n const context = rawContext as RumFetchResolveContext | RumFetchStartContext\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return\n }\n\n switch (context.state) {\n case 'start':\n tracer.traceFetch(context)\n context.requestIndex = getNextRequestIndex()\n\n lifeCycle.notify(LifeCycleEventType.REQUEST_STARTED, {\n requestIndex: context.requestIndex,\n url: context.url,\n })\n break\n case 'resolve':\n waitForResponseToComplete(context, (duration: Duration) => {\n tracer.clearTracingIfNeeded(context)\n lifeCycle.notify(LifeCycleEventType.REQUEST_COMPLETED, {\n duration,\n method: context.method,\n requestIndex: context.requestIndex,\n responseType: context.responseType,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: RequestType.FETCH,\n url: context.url,\n response: context.response,\n init: context.init,\n input: context.input,\n isAborted: context.isAborted,\n handlingStack: context.handlingStack,\n })\n })\n break\n }\n })\n return { stop: () => subscription.unsubscribe() }\n}\n\nfunction getNextRequestIndex() {\n const result = nextRequestIndex\n nextRequestIndex += 1\n return result\n}\n\nfunction waitForResponseToComplete(context: RumFetchResolveContext, callback: (duration: Duration) => void) {\n const clonedResponse = context.response && tryToClone(context.response)\n if (!clonedResponse || !clonedResponse.body) {\n // do not try to wait for the response if the clone failed, fetch error or null body\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()))\n } else {\n readBytesFromStream(\n clonedResponse.body,\n () => {\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()))\n },\n {\n bytesLimit: Number.POSITIVE_INFINITY,\n collectStreamBody: false,\n }\n )\n }\n}\n","import type { ServerDuration } from '@datadog/browser-core'\nimport { isNumber } from '@datadog/browser-core'\n\nexport function discardNegativeDuration(duration: ServerDuration | undefined): ServerDuration | undefined {\n return isNumber(duration) && duration < 0 ? undefined : duration\n}\n","import { noop } from '@datadog/browser-core'\nimport { RumEventType } from '../rawRumEvent.types'\nimport type { RumActionEvent, RumErrorEvent, RumLongTaskEvent, RumResourceEvent } from '../rumEvent.types'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\n\nexport interface EventCounts {\n errorCount: number\n actionCount: number\n longTaskCount: number\n resourceCount: number\n frustrationCount: number\n}\n\nexport function trackEventCounts({\n lifeCycle,\n isChildEvent,\n onChange: callback = noop,\n}: {\n lifeCycle: LifeCycle\n isChildEvent: (event: RumActionEvent | RumErrorEvent | RumLongTaskEvent | RumResourceEvent) => boolean\n onChange?: () => void\n}) {\n const eventCounts: EventCounts = {\n errorCount: 0,\n longTaskCount: 0,\n resourceCount: 0,\n actionCount: 0,\n frustrationCount: 0,\n }\n\n const subscription = lifeCycle.subscribe(LifeCycleEventType.RUM_EVENT_COLLECTED, (event): void => {\n if (event.type === 'view' || event.type === 'vital' || !isChildEvent(event)) {\n return\n }\n switch (event.type) {\n case RumEventType.ERROR:\n eventCounts.errorCount += 1\n callback()\n break\n case RumEventType.ACTION:\n eventCounts.actionCount += 1\n if (event.action.frustration) {\n eventCounts.frustrationCount += event.action.frustration.type.length\n }\n callback()\n break\n case RumEventType.LONG_TASK:\n eventCounts.longTaskCount += 1\n callback()\n break\n case RumEventType.RESOURCE:\n if (!event._dd?.discarded) {\n eventCounts.resourceCount += 1\n callback()\n }\n break\n }\n })\n\n return {\n stop: () => {\n subscription.unsubscribe()\n },\n eventCounts,\n }\n}\n","import type { Subscription, TimeoutId, TimeStamp } from '@datadog/browser-core'\nimport {\n instrumentMethod,\n matchList,\n monitor,\n Observable,\n timeStampNow,\n setTimeout,\n clearTimeout,\n} from '@datadog/browser-core'\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../browser/performanceObservable'\nimport type { RumConfiguration } from './configuration'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\n\n// Delay to wait for a page activity to validate the tracking process\nexport const PAGE_ACTIVITY_VALIDATION_DELAY = 100\n// Delay to wait after a page activity to end the tracking process\nexport const PAGE_ACTIVITY_END_DELAY = 100\n\nexport interface PageActivityEvent {\n isBusy: boolean\n}\n\nexport type PageActivityEndEvent = { hadActivity: true; end: TimeStamp } | { hadActivity: false }\n\n/**\n * Wait for the page activity end\n *\n * Detection lifecycle:\n * ```\n * Wait page activity end\n * .-------------------'--------------------.\n * v v\n * [Wait for a page activity ] [Wait for a maximum duration]\n * [timeout: VALIDATION_DELAY] [ timeout: maxDuration ]\n * / \\ |\n * v v |\n * [No page activity] [Page activity] |\n * | |,----------------------. |\n * v v | |\n * (Discard) [Wait for a page activity] | |\n * [ timeout: END_DELAY ] | |\n * / \\ | |\n * v v | |\n * [No page activity] [Page activity] | |\n * | | | |\n * | '------------' |\n * '-----------. ,--------------------'\n * v\n * (End)\n * ```\n *\n * Note: by assuming that maxDuration is greater than VALIDATION_DELAY, we are sure that if the\n * process is still alive after maxDuration, it has been validated.\n */\nexport function waitPageActivityEnd(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable<void>,\n configuration: RumConfiguration,\n pageActivityEndCallback: (event: PageActivityEndEvent) => void,\n maxDuration?: number\n) {\n const pageActivityObservable = createPageActivityObservable(lifeCycle, domMutationObservable, configuration)\n return doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration)\n}\n\nexport function doWaitPageActivityEnd(\n pageActivityObservable: Observable<PageActivityEvent>,\n pageActivityEndCallback: (event: PageActivityEndEvent) => void,\n maxDuration?: number\n) {\n let pageActivityEndTimeoutId: TimeoutId\n let hasCompleted = false\n\n const validationTimeoutId = setTimeout(\n monitor(() => complete({ hadActivity: false })),\n PAGE_ACTIVITY_VALIDATION_DELAY\n )\n const maxDurationTimeoutId =\n maxDuration !== undefined\n ? setTimeout(\n monitor(() => complete({ hadActivity: true, end: timeStampNow() })),\n maxDuration\n )\n : undefined\n\n const pageActivitySubscription = pageActivityObservable.subscribe(({ isBusy }) => {\n clearTimeout(validationTimeoutId)\n clearTimeout(pageActivityEndTimeoutId)\n const lastChangeTime = timeStampNow()\n if (!isBusy) {\n pageActivityEndTimeoutId = setTimeout(\n monitor(() => complete({ hadActivity: true, end: lastChangeTime })),\n PAGE_ACTIVITY_END_DELAY\n )\n }\n })\n\n const stop = () => {\n hasCompleted = true\n clearTimeout(validationTimeoutId)\n clearTimeout(pageActivityEndTimeoutId)\n clearTimeout(maxDurationTimeoutId)\n pageActivitySubscription.unsubscribe()\n }\n\n function complete(event: PageActivityEndEvent) {\n if (hasCompleted) {\n return\n }\n stop()\n pageActivityEndCallback(event)\n }\n return { stop }\n}\n\nexport function createPageActivityObservable(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable<void>,\n configuration: RumConfiguration\n): Observable<PageActivityEvent> {\n return new Observable<PageActivityEvent>((observable) => {\n const subscriptions: Subscription[] = []\n let firstRequestIndex: undefined | number\n let pendingRequestsCount = 0\n\n subscriptions.push(\n domMutationObservable.subscribe(notifyPageActivity),\n createPerformanceObservable(configuration, { type: RumPerformanceEntryType.RESOURCE }).subscribe((entries) => {\n if (entries.some((entry) => !isExcludedUrl(configuration, entry.name))) {\n notifyPageActivity()\n }\n }),\n lifeCycle.subscribe(LifeCycleEventType.REQUEST_STARTED, (startEvent) => {\n if (isExcludedUrl(configuration, startEvent.url)) {\n return\n }\n if (firstRequestIndex === undefined) {\n firstRequestIndex = startEvent.requestIndex\n }\n pendingRequestsCount += 1\n notifyPageActivity()\n }),\n lifeCycle.subscribe(LifeCycleEventType.REQUEST_COMPLETED, (request) => {\n if (\n isExcludedUrl(configuration, request.url) ||\n firstRequestIndex === undefined ||\n // If the request started before the tracking start, ignore it\n request.requestIndex < firstRequestIndex\n ) {\n return\n }\n pendingRequestsCount -= 1\n notifyPageActivity()\n })\n )\n\n const { stop: stopTrackingWindowOpen } = trackWindowOpen(notifyPageActivity)\n\n return () => {\n stopTrackingWindowOpen()\n subscriptions.forEach((s) => s.unsubscribe())\n }\n\n function notifyPageActivity() {\n observable.notify({ isBusy: pendingRequestsCount > 0 })\n }\n })\n}\n\nfunction isExcludedUrl(configuration: RumConfiguration, requestUrl: string): boolean {\n return matchList(configuration.excludedActivityUrls, requestUrl)\n}\n\nfunction trackWindowOpen(callback: () => void) {\n return instrumentMethod(window, 'open', callback)\n}\n","// https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/selector/escapeSelector.js\nexport function cssEscape(str: string) {\n if (window.CSS && window.CSS.escape) {\n return window.CSS.escape(str)\n }\n\n // eslint-disable-next-line no-control-regex\n return str.replace(/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g, function (ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === '\\0') {\n return '\\uFFFD'\n }\n // Control characters and (dependent upon position) numbers get escaped as code points\n return `${ch.slice(0, -1)}\\\\${ch.charCodeAt(ch.length - 1).toString(16)} `\n }\n // Other potentially-special ASCII characters get backslash-escaped\n return `\\\\${ch}`\n })\n}\n\nexport function elementMatches(element: Element & { msMatchesSelector?(selector: string): boolean }, selector: string) {\n if (element.matches) {\n return element.matches(selector)\n }\n // IE11 support\n if (element.msMatchesSelector) {\n return element.msMatchesSelector(selector)\n }\n return false\n}\n\n/**\n * Return the parentElement of an node\n *\n * In cases where parentElement is not supported, such as in IE11 for SVG nodes, we fallback to parentNode\n */\nexport function getParentElement(node: Node): HTMLElement | null {\n if (node.parentElement) {\n return node.parentElement\n }\n\n while (node.parentNode) {\n if (node.parentNode.nodeType === Node.ELEMENT_NODE) {\n return node.parentNode as HTMLElement\n }\n node = node.parentNode\n }\n\n return null\n}\n\n/**\n * Return the classList of an element or an array of classes if classList is not supported\n *\n * In cases where classList is not supported, such as in IE11 for SVG and MathML elements,\n * we fallback to using element.getAttribute('class').\n * We opt for element.getAttribute('class') over element.className because className returns an SVGAnimatedString for SVG elements.\n */\nexport function getClassList(element: Element): DOMTokenList | string[] {\n if (element.classList) {\n return element.classList\n }\n\n const classes = (element.getAttribute('class') || '').trim()\n return classes ? classes.split(/\\s+/) : []\n}\n\n// ie11 supports WeakMap but not WeakSet\nconst PLACEHOLDER = 1\n// eslint-disable-next-line no-restricted-syntax\nexport class WeakSet<T extends object> {\n private map = new WeakMap<T, typeof PLACEHOLDER>()\n\n constructor(initialValues?: T[]) {\n if (initialValues) {\n initialValues.forEach((value) => this.map.set(value, PLACEHOLDER))\n }\n }\n\n add(value: T) {\n this.map.set(value, PLACEHOLDER)\n\n return this\n }\n\n delete(value: T) {\n return this.map.delete(value)\n }\n\n has(value: T) {\n return this.map.has(value)\n }\n}\n","export function isTextNode(node: Node): node is Text {\n return node.nodeType === Node.TEXT_NODE\n}\n\nexport function isCommentNode(node: Node): node is Comment {\n return node.nodeType === Node.COMMENT_NODE\n}\n\nexport function isElementNode(node: Node): node is Element {\n return node.nodeType === Node.ELEMENT_NODE\n}\n\nexport function isNodeShadowHost(node: Node): node is Element & { shadowRoot: ShadowRoot } {\n return isElementNode(node) && Boolean(node.shadowRoot)\n}\n\nexport function isNodeShadowRoot(node: Node): node is ShadowRoot {\n const shadowRoot = node as ShadowRoot\n return !!shadowRoot.host && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE && isElementNode(shadowRoot.host)\n}\n\nexport function hasChildNodes(node: Node) {\n return node.childNodes.length > 0 || isNodeShadowHost(node)\n}\n\nexport function forEachChildNodes(node: Node, callback: (child: Node) => void) {\n let child = node.firstChild\n\n while (child) {\n callback(child)\n\n child = child.nextSibling\n }\n\n if (isNodeShadowHost(node)) {\n callback(node.shadowRoot)\n }\n}\n\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node: Node): Node | null {\n return isNodeShadowRoot(node) ? node.host : node.parentNode\n}\n","import { DefaultPrivacyLevel } from '@datadog/browser-core'\nimport { isElementNode, getParentNode, isTextNode } from '../browser/htmlDomUtils'\nimport { elementMatches } from '../browser/polyfills'\n\nexport const NodePrivacyLevel = {\n IGNORE: 'ignore',\n HIDDEN: 'hidden',\n ALLOW: DefaultPrivacyLevel.ALLOW,\n MASK: DefaultPrivacyLevel.MASK,\n MASK_USER_INPUT: DefaultPrivacyLevel.MASK_USER_INPUT,\n} as const\nexport type NodePrivacyLevel = (typeof NodePrivacyLevel)[keyof typeof NodePrivacyLevel]\n\nexport const PRIVACY_ATTR_NAME = 'data-dd-privacy'\n\n// Privacy Attrs\nexport const PRIVACY_ATTR_VALUE_ALLOW = 'allow'\nexport const PRIVACY_ATTR_VALUE_MASK = 'mask'\nexport const PRIVACY_ATTR_VALUE_MASK_USER_INPUT = 'mask-user-input'\nexport const PRIVACY_ATTR_VALUE_HIDDEN = 'hidden'\n\n// Privacy Classes - not all customers can set plain HTML attributes, so support classes too\nexport const PRIVACY_CLASS_PREFIX = 'dd-privacy-'\n\n// Private Replacement Templates\nexport const CENSORED_STRING_MARK = '***'\nexport const CENSORED_IMG_MARK = 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=='\n\nexport const FORM_PRIVATE_TAG_NAMES: { [tagName: string]: true } = {\n INPUT: true,\n OUTPUT: true,\n TEXTAREA: true,\n SELECT: true,\n OPTION: true,\n DATALIST: true,\n OPTGROUP: true,\n}\n\nconst TEXT_MASKING_CHAR = 'x'\n\nexport type NodePrivacyLevelCache = Map<Node, NodePrivacyLevel>\n\n/**\n * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is\n * know, it is best to use something like:\n *\n * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)\n */\nexport function getNodePrivacyLevel(\n node: Node,\n defaultPrivacyLevel: NodePrivacyLevel,\n cache?: NodePrivacyLevelCache\n): NodePrivacyLevel {\n if (cache && cache.has(node)) {\n return cache.get(node)!\n }\n const parentNode = getParentNode(node)\n const parentNodePrivacyLevel = parentNode\n ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel, cache)\n : defaultPrivacyLevel\n const selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node)\n const nodePrivacyLevel = reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel)\n if (cache) {\n cache.set(node, nodePrivacyLevel)\n }\n return nodePrivacyLevel\n}\n\n/**\n * Reduces the next privacy level based on self + parent privacy levels\n */\nexport function reducePrivacyLevel(\n childPrivacyLevel: NodePrivacyLevel | undefined,\n parentNodePrivacyLevel: NodePrivacyLevel\n): NodePrivacyLevel {\n switch (parentNodePrivacyLevel) {\n // These values cannot be overridden\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return parentNodePrivacyLevel\n }\n switch (childPrivacyLevel) {\n case NodePrivacyLevel.ALLOW:\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.MASK_USER_INPUT:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return childPrivacyLevel\n default:\n return parentNodePrivacyLevel\n }\n}\n\n/**\n * Determines the node's own privacy level without checking for ancestors.\n */\nexport function getNodeSelfPrivacyLevel(node: Node): NodePrivacyLevel | undefined {\n // Only Element types can have a privacy level set\n if (!isElementNode(node)) {\n return\n }\n\n // Overrules for replay purpose\n if (node.tagName === 'BASE') {\n return NodePrivacyLevel.ALLOW\n }\n\n // Overrules to enforce end-user protection\n if (node.tagName === 'INPUT') {\n const inputElement = node as HTMLInputElement\n if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {\n return NodePrivacyLevel.MASK\n }\n if (inputElement.type === 'hidden') {\n return NodePrivacyLevel.MASK\n }\n const autocomplete = inputElement.getAttribute('autocomplete')\n // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year]\n if (autocomplete && autocomplete.indexOf('cc-') === 0) {\n return NodePrivacyLevel.MASK\n }\n }\n\n // Check HTML privacy attributes and classes\n if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.HIDDEN))) {\n return NodePrivacyLevel.HIDDEN\n }\n\n if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.MASK))) {\n return NodePrivacyLevel.MASK\n }\n\n if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.MASK_USER_INPUT))) {\n return NodePrivacyLevel.MASK_USER_INPUT\n }\n\n if (elementMatches(node, getPrivacySelector(NodePrivacyLevel.ALLOW))) {\n return NodePrivacyLevel.ALLOW\n }\n\n if (shouldIgnoreElement(node)) {\n return NodePrivacyLevel.IGNORE\n }\n}\n\n/**\n * Helper aiming to unify `mask` and `mask-user-input` privacy levels:\n *\n * In the `mask` case, it is trivial: we should mask the element.\n *\n * In the `mask-user-input` case, we should mask the element only if it is a \"form\" element or the\n * direct parent is a form element for text nodes).\n *\n * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a\n * node if it is ignored or hidden? it doesn't matter since it won't be serialized).\n */\nexport function shouldMaskNode(node: Node, privacyLevel: NodePrivacyLevel) {\n switch (privacyLevel) {\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return true\n case NodePrivacyLevel.MASK_USER_INPUT:\n return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node)\n default:\n return false\n }\n}\n\nfunction isFormElement(node: Node | null): boolean {\n if (!node || node.nodeType !== node.ELEMENT_NODE) {\n return false\n }\n const element = node as HTMLInputElement\n if (element.tagName === 'INPUT') {\n switch (element.type) {\n case 'button':\n case 'color':\n case 'reset':\n case 'submit':\n return false\n }\n }\n return !!FORM_PRIVATE_TAG_NAMES[element.tagName]\n}\n\n/**\n * Text censoring non-destructively maintains whitespace characters in order to preserve text shape\n * during replay.\n */\nexport const censorText = (text: string) => text.replace(/\\S/g, TEXT_MASKING_CHAR)\n\nexport function getTextContent(\n textNode: Node,\n ignoreWhiteSpace: boolean,\n parentNodePrivacyLevel: NodePrivacyLevel\n): string | undefined {\n // The parent node may not be a html element which has a tagName attribute.\n // So just let it be undefined which is ok in this use case.\n const parentTagName = textNode.parentElement?.tagName\n let textContent = textNode.textContent || ''\n\n if (ignoreWhiteSpace && !textContent.trim()) {\n return\n }\n\n const nodePrivacyLevel = parentNodePrivacyLevel\n\n const isScript = parentTagName === 'SCRIPT'\n\n if (isScript) {\n // For perf reasons, we don't record script (heuristic)\n textContent = CENSORED_STRING_MARK\n } else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n // Should never occur, but just in case, we set to CENSORED_MARK.\n textContent = CENSORED_STRING_MARK\n } else if (shouldMaskNode(textNode, nodePrivacyLevel)) {\n if (\n // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP\n parentTagName === 'DATALIST' ||\n parentTagName === 'SELECT' ||\n parentTagName === 'OPTGROUP'\n ) {\n if (!textContent.trim()) {\n return\n }\n } else if (parentTagName === 'OPTION') {\n // <Option> has low entropy in charset + text length, so use `CENSORED_STRING_MARK` when masked\n textContent = CENSORED_STRING_MARK\n } else {\n textContent = censorText(textContent)\n }\n }\n return textContent\n}\n\n/**\n * TODO: Preserve CSS element order, and record the presence of the tag, just don't render\n * We don't need this logic on the recorder side.\n * For security related meta's, customer can mask themmanually given they\n * are easy to identify in the HEAD tag.\n */\nexport function shouldIgnoreElement(element: Element): boolean {\n if (element.nodeName === 'SCRIPT') {\n return true\n }\n\n if (element.nodeName === 'LINK') {\n const relAttribute = getLowerCaseAttribute('rel')\n return (\n // Link as script - Ignore only when rel=preload, modulepreload or prefetch\n (/preload|prefetch/i.test(relAttribute) && getLowerCaseAttribute('as') === 'script') ||\n // Favicons\n relAttribute === 'shortcut icon' ||\n relAttribute === 'icon'\n )\n }\n\n if (element.nodeName === 'META') {\n const nameAttribute = getLowerCaseAttribute('name')\n const relAttribute = getLowerCaseAttribute('rel')\n const propertyAttribute = getLowerCaseAttribute('property')\n return (\n // Favicons\n /^msapplication-tile(image|color)$/.test(nameAttribute) ||\n nameAttribute === 'application-name' ||\n relAttribute === 'icon' ||\n relAttribute === 'apple-touch-icon' ||\n relAttribute === 'shortcut icon' ||\n // Description\n nameAttribute === 'keywords' ||\n nameAttribute === 'description' ||\n // Social\n /^(og|twitter|fb):/.test(propertyAttribute) ||\n /^(og|twitter):/.test(nameAttribute) ||\n nameAttribute === 'pinterest' ||\n // Robots\n nameAttribute === 'robots' ||\n nameAttribute === 'googlebot' ||\n nameAttribute === 'bingbot' ||\n // Http headers. Ex: X-UA-Compatible, Content-Type, Content-Language, cache-control,\n // X-Translated-By\n element.hasAttribute('http-equiv') ||\n // Authorship\n nameAttribute === 'author' ||\n nameAttribute === 'generator' ||\n nameAttribute === 'framework' ||\n nameAttribute === 'publisher' ||\n nameAttribute === 'progid' ||\n /^article:/.test(propertyAttribute) ||\n /^product:/.test(propertyAttribute) ||\n // Verification\n nameAttribute === 'google-site-verification' ||\n nameAttribute === 'yandex-verification' ||\n nameAttribute === 'csrf-token' ||\n nameAttribute === 'p:domain_verify' ||\n nameAttribute === 'verify-v1' ||\n nameAttribute === 'verification' ||\n nameAttribute === 'shopify-checkout-api-token'\n )\n }\n\n function getLowerCaseAttribute(name: string) {\n return (element.getAttribute(name) || '').toLowerCase()\n }\n\n return false\n}\n\nexport function getPrivacySelector(privacyLevel: string) {\n return `[${PRIVACY_ATTR_NAME}=\"${privacyLevel}\"], .${PRIVACY_CLASS_PREFIX}${privacyLevel}`\n}\n","import { safeTruncate, isIE, find } from '@datadog/browser-core'\nimport { getParentElement } from '../../browser/polyfills'\nimport { NodePrivacyLevel, getPrivacySelector } from '../privacy'\nimport type { RumConfiguration } from '../configuration'\n\n/**\n * Get the action name from the attribute 'data-dd-action-name' on the element or any of its parent.\n * It can also be retrieved from a user defined attribute.\n */\nexport const DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE = 'data-dd-action-name'\nexport const ACTION_NAME_PLACEHOLDER = 'Masked Element'\nexport function getActionNameFromElement(\n element: Element,\n { enablePrivacyForActionName, actionNameAttribute: userProgrammaticAttribute }: RumConfiguration,\n nodePrivacyLevel?: NodePrivacyLevel\n): string {\n // Proceed to get the action name in two steps:\n // * first, get the name programmatically, explicitly defined by the user.\n // * then, use strategies that are known to return good results. Those strategies will be used on\n // the element and a few parents, but it's likely that they won't succeed at all.\n // * if no name is found this way, use strategies returning less accurate names as a fallback.\n // Those are much likely to succeed.\n const defaultActionName =\n getActionNameFromElementProgrammatically(element, DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE) ||\n (userProgrammaticAttribute && getActionNameFromElementProgrammatically(element, userProgrammaticAttribute))\n\n if (nodePrivacyLevel === NodePrivacyLevel.MASK) {\n return defaultActionName || ACTION_NAME_PLACEHOLDER\n }\n\n return (\n defaultActionName ||\n getActionNameFromElementForStrategies(\n element,\n userProgrammaticAttribute,\n priorityStrategies,\n enablePrivacyForActionName\n ) ||\n getActionNameFromElementForStrategies(\n element,\n userProgrammaticAttribute,\n fallbackStrategies,\n enablePrivacyForActionName\n ) ||\n ''\n )\n}\n\nfunction getActionNameFromElementProgrammatically(targetElement: Element, programmaticAttribute: string) {\n let elementWithAttribute\n // We don't use getActionNameFromElementForStrategies here, because we want to consider all parents,\n // without limit. It is up to the user to declare a relevant naming strategy.\n // If available, use element.closest() to match get the attribute from the element or any of its\n // parent. Else fallback to a more traditional implementation.\n if (supportsElementClosest()) {\n elementWithAttribute = targetElement.closest(`[${programmaticAttribute}]`)\n } else {\n let element: Element | null = targetElement\n while (element) {\n if (element.hasAttribute(programmaticAttribute)) {\n elementWithAttribute = element\n break\n }\n element = getParentElement(element)\n }\n }\n\n if (!elementWithAttribute) {\n return\n }\n const name = elementWithAttribute.getAttribute(programmaticAttribute)!\n return truncate(normalizeWhitespace(name.trim()))\n}\n\ntype NameStrategy = (\n element: Element | HTMLElement | HTMLInputElement | HTMLSelectElement,\n userProgrammaticAttribute: string | undefined,\n privacyEnabledActionName?: boolean\n) => string | undefined | null\n\nconst priorityStrategies: NameStrategy[] = [\n // associated LABEL text\n (element, userProgrammaticAttribute, privacy) => {\n // IE does not support element.labels, so we fallback to a CSS selector based on the element id\n // instead\n if (supportsLabelProperty()) {\n if ('labels' in element && element.labels && element.labels.length > 0) {\n return getTextualContent(element.labels[0], userProgrammaticAttribute)\n }\n } else if (element.id) {\n const label =\n element.ownerDocument &&\n find(element.ownerDocument.querySelectorAll('label'), (label) => label.htmlFor === element.id)\n return label && getTextualContent(label, userProgrammaticAttribute, privacy)\n }\n },\n // INPUT button (and associated) value\n (element) => {\n if (element.nodeName === 'INPUT') {\n const input = element as HTMLInputElement\n const type = input.getAttribute('type')\n if (type === 'button' || type === 'submit' || type === 'reset') {\n return input.value\n }\n }\n },\n // BUTTON, LABEL or button-like element text\n (element, userProgrammaticAttribute, privacyEnabledActionName) => {\n if (element.nodeName === 'BUTTON' || element.nodeName === 'LABEL' || element.getAttribute('role') === 'button') {\n return getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName)\n }\n },\n (element) => element.getAttribute('aria-label'),\n // associated element text designated by the aria-labelledby attribute\n (element, userProgrammaticAttribute, privacyEnabledActionName) => {\n const labelledByAttribute = element.getAttribute('aria-labelledby')\n if (labelledByAttribute) {\n return labelledByAttribute\n .split(/\\s+/)\n .map((id) => getElementById(element, id))\n .filter((label): label is HTMLElement => Boolean(label))\n .map((element) => getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName))\n .join(' ')\n }\n },\n (element) => element.getAttribute('alt'),\n (element) => element.getAttribute('name'),\n (element) => element.getAttribute('title'),\n (element) => element.getAttribute('placeholder'),\n // SELECT first OPTION text\n (element, userProgrammaticAttribute) => {\n if ('options' in element && element.options.length > 0) {\n return getTextualContent(element.options[0], userProgrammaticAttribute)\n }\n },\n]\n\nconst fallbackStrategies: NameStrategy[] = [\n (element, userProgrammaticAttribute, privacyEnabledActionName) =>\n getTextualContent(element, userProgrammaticAttribute, privacyEnabledActionName),\n]\n\n/**\n * Iterates over the target element and its parent, using the strategies list to get an action name.\n * Each strategies are applied on each element, stopping as soon as a non-empty value is returned.\n */\nconst MAX_PARENTS_TO_CONSIDER = 10\nfunction getActionNameFromElementForStrategies(\n targetElement: Element,\n userProgrammaticAttribute: string | undefined,\n strategies: NameStrategy[],\n privacyEnabledActionName?: boolean\n) {\n let element: Element | null = targetElement\n let recursionCounter = 0\n while (\n recursionCounter <= MAX_PARENTS_TO_CONSIDER &&\n element &&\n element.nodeName !== 'BODY' &&\n element.nodeName !== 'HTML' &&\n element.nodeName !== 'HEAD'\n ) {\n for (const strategy of strategies) {\n const name = strategy(element, userProgrammaticAttribute, privacyEnabledActionName)\n if (typeof name === 'string') {\n const trimmedName = name.trim()\n if (trimmedName) {\n return truncate(normalizeWhitespace(trimmedName))\n }\n }\n }\n // Consider a FORM as a contextual limit to get the action name. This is experimental and may\n // be reconsidered in the future.\n if (element.nodeName === 'FORM') {\n break\n }\n element = getParentElement(element)\n recursionCounter += 1\n }\n}\n\nfunction normalizeWhitespace(s: string) {\n return s.replace(/\\s+/g, ' ')\n}\n\nfunction truncate(s: string) {\n return s.length > 100 ? `${safeTruncate(s, 100)} [...]` : s\n}\n\nfunction getElementById(refElement: Element, id: string) {\n // Use the element ownerDocument here, because tests are executed in an iframe, so\n // document.getElementById won't work.\n return refElement.ownerDocument ? refElement.ownerDocument.getElementById(id) : null\n}\n\nfunction getTextualContent(\n element: Element | HTMLElement,\n userProgrammaticAttribute: string | undefined,\n privacyEnabledActionName?: boolean\n) {\n if ((element as HTMLElement).isContentEditable) {\n return\n }\n\n if ('innerText' in element) {\n let text = element.innerText\n\n const removeTextFromElements = (query: string) => {\n const list = element.querySelectorAll<Element | HTMLElement>(query)\n for (let index = 0; index < list.length; index += 1) {\n const element = list[index]\n if ('innerText' in element) {\n const textToReplace = element.innerText\n if (textToReplace && textToReplace.trim().length > 0) {\n text = text.replace(textToReplace, '')\n }\n }\n }\n }\n\n if (!supportsInnerTextScriptAndStyleRemoval()) {\n // remove the inner text of SCRIPT and STYLES from the result. This is a bit dirty, but should\n // be relatively fast and work in most cases.\n removeTextFromElements('script, style')\n }\n\n // remove the text of elements with programmatic attribute value\n removeTextFromElements(`[${DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE}]`)\n\n if (userProgrammaticAttribute) {\n removeTextFromElements(`[${userProgrammaticAttribute}]`)\n }\n\n if (privacyEnabledActionName) {\n // remove the text of elements with privacy override\n removeTextFromElements(\n `${getPrivacySelector(NodePrivacyLevel.HIDDEN)}, ${getPrivacySelector(NodePrivacyLevel.MASK)}`\n )\n }\n\n return text\n }\n\n return element.textContent\n}\n\n/**\n * Returns true if element.innerText excludes the text from inline SCRIPT and STYLE element. This\n * should be the case everywhere except on Internet Explorer 10 and 11 (see [1])\n *\n * The innerText property relies on what is actually rendered to compute its output, so to check if\n * it actually excludes SCRIPT and STYLE content, a solution would be to create a style element, set\n * its content to '*', inject it in the document body, and check if the style element innerText\n * property returns '*'. Using a new `document` instance won't work as it is not rendered.\n *\n * This solution requires specific CSP rules (see [2]) to be set by the customer. We want to avoid\n * this, so instead we rely on browser detection. In case of false negative, the impact should be\n * low, since we rely on this result to remove the SCRIPT and STYLE innerText (which will be empty)\n * from a parent element innerText.\n *\n * [1]: https://web.archive.org/web/20210602165716/http://perfectionkills.com/the-poor-misunderstood-innerText/#diff-with-textContent\n * [2]: https://github.com/DataDog/browser-sdk/issues/1084\n */\nfunction supportsInnerTextScriptAndStyleRemoval() {\n return !isIE()\n}\n\n/**\n * Returns true if the browser supports the element.labels property. This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nlet supportsLabelPropertyResult: boolean | undefined\nfunction supportsLabelProperty() {\n if (supportsLabelPropertyResult === undefined) {\n supportsLabelPropertyResult = 'labels' in HTMLInputElement.prototype\n }\n return supportsLabelPropertyResult\n}\n\n/**\n * Returns true if the browser supports the element.closest method. This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nlet supportsElementClosestResult: boolean | undefined\nfunction supportsElementClosest() {\n if (supportsElementClosestResult === undefined) {\n supportsElementClosestResult = 'closest' in HTMLElement.prototype\n }\n return supportsElementClosestResult\n}\n","import { cssEscape, elementMatches, getClassList, getParentElement } from '../browser/polyfills'\nimport { DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE } from './action/getActionNameFromElement'\n\n/**\n * Stable attributes are attributes that are commonly used to identify parts of a UI (ex:\n * component). Those attribute values should not be generated randomly (hardcoded most of the time)\n * and stay the same across deploys. They are not necessarily unique across the document.\n */\nexport const STABLE_ATTRIBUTES = [\n DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,\n // Common test attributes (list provided by google recorder)\n 'data-testid',\n 'data-test',\n 'data-qa',\n 'data-cy',\n 'data-test-id',\n 'data-qa-id',\n 'data-testing',\n // FullStory decorator attributes:\n 'data-component',\n 'data-element',\n 'data-source-file',\n]\n\ntype SelectorGetter = (element: Element, actionNameAttribute: string | undefined) => string | undefined\n\n// Selectors to use if they target a single element on the whole document. Those selectors are\n// considered as \"stable\" and uniquely identify an element regardless of the page state. If we find\n// one, we should consider the selector \"complete\" and stop iterating over ancestors.\nconst GLOBALLY_UNIQUE_SELECTOR_GETTERS: SelectorGetter[] = [getStableAttributeSelector, getIDSelector]\n\n// Selectors to use if they target a single element among an element descendants. Those selectors\n// are more brittle than \"globally unique\" selectors and should be combined with ancestor selectors\n// to improve specificity.\nconst UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS: SelectorGetter[] = [\n getStableAttributeSelector,\n getClassSelector,\n getTagNameSelector,\n]\n\nexport function getSelectorFromElement(\n targetElement: Element,\n actionNameAttribute: string | undefined\n): string | undefined {\n if (!isConnected(targetElement)) {\n // We cannot compute a selector for a detached element, as we don't have access to all of its\n // parents, and we cannot determine if it's unique in the document.\n return\n }\n let targetElementSelector: string | undefined\n let currentElement: Element | null = targetElement\n\n while (currentElement && currentElement.nodeName !== 'HTML') {\n const globallyUniqueSelector = findSelector(\n currentElement,\n GLOBALLY_UNIQUE_SELECTOR_GETTERS,\n isSelectorUniqueGlobally,\n actionNameAttribute,\n targetElementSelector\n )\n if (globallyUniqueSelector) {\n return globallyUniqueSelector\n }\n\n const uniqueSelectorAmongChildren = findSelector(\n currentElement,\n UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS,\n isSelectorUniqueAmongSiblings,\n actionNameAttribute,\n targetElementSelector\n )\n targetElementSelector =\n uniqueSelectorAmongChildren || combineSelector(getPositionSelector(currentElement), targetElementSelector)\n\n currentElement = getParentElement(currentElement)\n }\n\n return targetElementSelector\n}\n\nfunction isGeneratedValue(value: string) {\n // To compute the \"URL path group\", the backend replaces every URL path parts as a question mark\n // if it thinks the part is an identifier. The condition it uses is to checks whether a digit is\n // present.\n //\n // Here, we use the same strategy: if the value contains a digit, we consider it generated. This\n // strategy might be a bit naive and fail in some cases, but there are many fallbacks to generate\n // CSS selectors so it should be fine most of the time.\n return /[0-9]/.test(value)\n}\n\nfunction getIDSelector(element: Element): string | undefined {\n if (element.id && !isGeneratedValue(element.id)) {\n return `#${cssEscape(element.id)}`\n }\n}\n\nfunction getClassSelector(element: Element): string | undefined {\n if (element.tagName === 'BODY') {\n return\n }\n const classList = getClassList(element)\n for (let i = 0; i < classList.length; i += 1) {\n const className = classList[i]\n if (isGeneratedValue(className)) {\n continue\n }\n\n return `${cssEscape(element.tagName)}.${cssEscape(className)}`\n }\n}\n\nfunction getTagNameSelector(element: Element): string {\n return cssEscape(element.tagName)\n}\n\nfunction getStableAttributeSelector(element: Element, actionNameAttribute: string | undefined): string | undefined {\n if (actionNameAttribute) {\n const selector = getAttributeSelector(actionNameAttribute)\n if (selector) {\n return selector\n }\n }\n\n for (const attributeName of STABLE_ATTRIBUTES) {\n const selector = getAttributeSelector(attributeName)\n if (selector) {\n return selector\n }\n }\n\n function getAttributeSelector(attributeName: string) {\n if (element.hasAttribute(attributeName)) {\n return `${cssEscape(element.tagName)}[${attributeName}=\"${cssEscape(element.getAttribute(attributeName)!)}\"]`\n }\n }\n}\n\nfunction getPositionSelector(element: Element): string {\n let sibling = getParentElement(element)!.firstElementChild\n let elementIndex = 1\n\n while (sibling && sibling !== element) {\n if (sibling.tagName === element.tagName) {\n elementIndex += 1\n }\n sibling = sibling.nextElementSibling\n }\n\n return `${cssEscape(element.tagName)}:nth-of-type(${elementIndex})`\n}\n\nfunction findSelector(\n element: Element,\n selectorGetters: SelectorGetter[],\n predicate: (element: Element, elementSelector: string, childSelector: string | undefined) => boolean,\n actionNameAttribute: string | undefined,\n childSelector: string | undefined\n) {\n for (const selectorGetter of selectorGetters) {\n const elementSelector = selectorGetter(element, actionNameAttribute)\n if (!elementSelector) {\n continue\n }\n if (predicate(element, elementSelector, childSelector)) {\n return combineSelector(elementSelector, childSelector)\n }\n }\n}\n\n/**\n * Check whether the selector is unique among the whole document.\n */\nfunction isSelectorUniqueGlobally(\n element: Element,\n elementSelector: string,\n childSelector: string | undefined\n): boolean {\n return element.ownerDocument.querySelectorAll(combineSelector(elementSelector, childSelector)).length === 1\n}\n\n/**\n * Check whether the selector is unique among the element siblings. In other words, it returns true\n * if \"ELEMENT_PARENT > CHILD_SELECTOR\" returns a single element.\n *\n * @param {Element} currentElement - the element being considered while iterating over the target\n * element ancestors.\n *\n * @param {string} currentElementSelector - a selector that matches the current element. That\n * selector is not a composed selector (i.e. it might be a single tag name, class name...).\n *\n * @param {string|undefined} childSelector - child selector is a selector that targets a descendant\n * of the current element. When undefined, the current element is the target element.\n *\n * # Scope selector usage\n *\n * When composed together, the final selector will be joined with `>` operators to make sure we\n * target direct descendants at each level. In this function, we'll use `querySelector` to check if\n * a selector matches descendants of the current element. But by default, the query selector match\n * elements at any level. Example:\n *\n * ```html\n * <main>\n * <div>\n * <span></span>\n * </div>\n * <marquee>\n * <div>\n * <span></span>\n * </div>\n * </marquee>\n * </main>\n * ```\n *\n * `sibling.querySelector('DIV > SPAN')` will match both span elements, so we would consider the\n * selector to be not unique, even if it is unique when we'll compose it with the parent with a `>`\n * operator (`MAIN > DIV > SPAN`).\n *\n * To avoid this, we can use the `:scope` selector to make sure the selector starts from the current\n * sibling (i.e. `sibling.querySelector('DIV:scope > SPAN')` will only match the first span).\n *\n * The result will be less accurate on browsers that don't support :scope (i. e. IE): it will check\n * for any element matching the selector contained in the parent (in other words,\n * \"ELEMENT_PARENT CHILD_SELECTOR\" returns a single element), regardless of whether the selector is\n * a direct descendant of the element parent. This should not impact results too much: if it\n * inaccurately returns false, we'll just fall back to another strategy.\n *\n * [1]: https://developer.mozilla.org/fr/docs/Web/CSS/:scope\n *\n * # Performance considerations\n *\n * We compute selectors in performance-critical operations (ex: during a click), so we need to make\n * sure the function is as fast as possible. We observed that naively using `querySelectorAll` to\n * check if the selector matches more than 1 element is quite expensive, so we want to avoid it.\n *\n * Because we are iterating the DOM upward and we use that function at every level, we know the\n * child selector is already unique among the current element children, so we don't need to check\n * for the current element subtree.\n *\n * Instead, we can focus on the current element siblings. If we find a single element matching the\n * selector within a sibling, we know that it's not unique. This allows us to use `querySelector`\n * (or `matches`, when the current element is the target element) instead of `querySelectorAll`.\n */\nexport function isSelectorUniqueAmongSiblings(\n currentElement: Element,\n currentElementSelector: string,\n childSelector: string | undefined\n): boolean {\n let isSiblingMatching: (sibling: Element) => boolean\n\n if (childSelector === undefined) {\n // If the child selector is undefined (meaning `currentElement` is the target element, not one\n // of its ancestor), we need to use `matches` to check if the sibling is matching the selector,\n // as `querySelector` only returns a descendant of the element.\n isSiblingMatching = (sibling) => elementMatches(sibling, currentElementSelector)\n } else {\n const scopedSelector = supportScopeSelector()\n ? combineSelector(`${currentElementSelector}:scope`, childSelector)\n : combineSelector(currentElementSelector, childSelector)\n isSiblingMatching = (sibling) => sibling.querySelector(scopedSelector) !== null\n }\n\n const parent = getParentElement(currentElement)!\n let sibling = parent.firstElementChild\n while (sibling) {\n if (sibling !== currentElement && isSiblingMatching(sibling)) {\n return false\n }\n sibling = sibling.nextElementSibling\n }\n\n return true\n}\n\nfunction combineSelector(parent: string, child: string | undefined): string {\n return child ? `${parent}>${child}` : parent\n}\n\nlet supportScopeSelectorCache: boolean | undefined\nexport function supportScopeSelector() {\n if (supportScopeSelectorCache === undefined) {\n try {\n document.querySelector(':scope')\n supportScopeSelectorCache = true\n } catch {\n supportScopeSelectorCache = false\n }\n }\n return supportScopeSelectorCache\n}\n\n/**\n * Polyfill-utility for the `isConnected` property not supported in IE11\n */\nfunction isConnected(element: Element): boolean {\n if (\n 'isConnected' in\n // cast is to make sure `element` is not inferred as `never` after the check\n (element as { isConnected?: boolean })\n ) {\n return element.isConnected\n }\n\n return element.ownerDocument.documentElement.contains(element)\n}\n","import type { TimeoutId } from '@datadog/browser-core'\nimport { ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core'\nimport type { Click } from './trackClickActions'\n\nexport interface ClickChain {\n tryAppend: (click: Click) => boolean\n stop: () => void\n}\n\nexport const MAX_DURATION_BETWEEN_CLICKS = ONE_SECOND\nexport const MAX_DISTANCE_BETWEEN_CLICKS = 100\n\nconst enum ClickChainStatus {\n WaitingForMoreClicks,\n WaitingForClicksToStop,\n Finalized,\n}\n\nexport function createClickChain(firstClick: Click, onFinalize: (clicks: Click[]) => void): ClickChain {\n const bufferedClicks: Click[] = []\n let status = ClickChainStatus.WaitingForMoreClicks\n let maxDurationBetweenClicksTimeoutId: TimeoutId | undefined\n appendClick(firstClick)\n\n function appendClick(click: Click) {\n click.stopObservable.subscribe(tryFinalize)\n bufferedClicks.push(click)\n clearTimeout(maxDurationBetweenClicksTimeoutId)\n maxDurationBetweenClicksTimeoutId = setTimeout(dontAcceptMoreClick, MAX_DURATION_BETWEEN_CLICKS)\n }\n\n function tryFinalize() {\n if (status === ClickChainStatus.WaitingForClicksToStop && bufferedClicks.every((click) => click.isStopped())) {\n status = ClickChainStatus.Finalized\n onFinalize(bufferedClicks)\n }\n }\n\n function dontAcceptMoreClick() {\n clearTimeout(maxDurationBetweenClicksTimeoutId)\n if (status === ClickChainStatus.WaitingForMoreClicks) {\n status = ClickChainStatus.WaitingForClicksToStop\n tryFinalize()\n }\n }\n\n return {\n tryAppend: (click) => {\n if (status !== ClickChainStatus.WaitingForMoreClicks) {\n return false\n }\n\n if (\n bufferedClicks.length > 0 &&\n !areEventsSimilar(bufferedClicks[bufferedClicks.length - 1].event, click.event)\n ) {\n dontAcceptMoreClick()\n return false\n }\n\n appendClick(click)\n return true\n },\n stop: () => {\n dontAcceptMoreClick()\n },\n }\n}\n\n/**\n * Checks whether two events are similar by comparing their target, position and timestamp\n */\nfunction areEventsSimilar(first: MouseEvent, second: MouseEvent) {\n return (\n first.target === second.target &&\n mouseEventDistance(first, second) <= MAX_DISTANCE_BETWEEN_CLICKS &&\n first.timeStamp - second.timeStamp <= MAX_DURATION_BETWEEN_CLICKS\n )\n}\n\nfunction mouseEventDistance(origin: MouseEvent, other: MouseEvent) {\n return Math.sqrt(Math.pow(origin.clientX - other.clientX, 2) + Math.pow(origin.clientY - other.clientY, 2))\n}\n","import { addEventListener, DOM_EVENT } from '@datadog/browser-core'\nimport type { RumConfiguration } from '../configuration'\n\nexport type MouseEventOnElement = PointerEvent & { target: Element }\n\nexport interface UserActivity {\n selection: boolean\n input: boolean\n scroll: boolean\n}\nexport interface ActionEventsHooks<ClickContext> {\n onPointerDown: (event: MouseEventOnElement) => ClickContext | undefined\n onPointerUp: (context: ClickContext, event: MouseEventOnElement, getUserActivity: () => UserActivity) => void\n}\n\nexport function listenActionEvents<ClickContext>(\n configuration: RumConfiguration,\n { onPointerDown, onPointerUp }: ActionEventsHooks<ClickContext>\n) {\n let selectionEmptyAtPointerDown: boolean\n let userActivity: UserActivity = {\n selection: false,\n input: false,\n scroll: false,\n }\n let clickContext: ClickContext | undefined\n\n const listeners = [\n addEventListener(\n configuration,\n window,\n DOM_EVENT.POINTER_DOWN,\n (event: PointerEvent) => {\n if (isValidPointerEvent(event)) {\n selectionEmptyAtPointerDown = isSelectionEmpty()\n userActivity = {\n selection: false,\n input: false,\n scroll: false,\n }\n clickContext = onPointerDown(event)\n }\n },\n { capture: true }\n ),\n\n addEventListener(\n configuration,\n window,\n DOM_EVENT.SELECTION_CHANGE,\n () => {\n if (!selectionEmptyAtPointerDown || !isSelectionEmpty()) {\n userActivity.selection = true\n }\n },\n { capture: true }\n ),\n\n addEventListener(\n configuration,\n window,\n DOM_EVENT.SCROLL,\n () => {\n userActivity.scroll = true\n },\n { capture: true, passive: true }\n ),\n\n addEventListener(\n configuration,\n window,\n DOM_EVENT.POINTER_UP,\n (event: PointerEvent) => {\n if (isValidPointerEvent(event) && clickContext) {\n // Use a scoped variable to make sure the value is not changed by other clicks\n const localUserActivity = userActivity\n onPointerUp(clickContext, event, () => localUserActivity)\n clickContext = undefined\n }\n },\n { capture: true }\n ),\n\n addEventListener(\n configuration,\n window,\n DOM_EVENT.INPUT,\n () => {\n userActivity.input = true\n },\n { capture: true }\n ),\n ]\n\n return {\n stop: () => {\n listeners.forEach((listener) => listener.stop())\n },\n }\n}\n\nfunction isSelectionEmpty(): boolean {\n const selection = window.getSelection()\n return !selection || selection.isCollapsed\n}\n\nfunction isValidPointerEvent(event: PointerEvent): event is MouseEventOnElement {\n return (\n event.target instanceof Element &&\n // Only consider 'primary' pointer events for now. Multi-touch support could be implemented in\n // the future.\n event.isPrimary !== false\n )\n}\n","import { ONE_SECOND } from '@datadog/browser-core'\nimport { FrustrationType } from '../../rawRumEvent.types'\nimport { elementMatches } from '../../browser/polyfills'\nimport type { Click } from './trackClickActions'\n\nconst MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE = 3\n\nexport function computeFrustration(clicks: Click[], rageClick: Click) {\n if (isRage(clicks)) {\n rageClick.addFrustration(FrustrationType.RAGE_CLICK)\n if (clicks.some(isDead)) {\n rageClick.addFrustration(FrustrationType.DEAD_CLICK)\n }\n if (rageClick.hasError) {\n rageClick.addFrustration(FrustrationType.ERROR_CLICK)\n }\n return { isRage: true }\n }\n\n const hasSelectionChanged = clicks.some((click) => click.getUserActivity().selection)\n clicks.forEach((click) => {\n if (click.hasError) {\n click.addFrustration(FrustrationType.ERROR_CLICK)\n }\n if (\n isDead(click) &&\n // Avoid considering clicks part of a double-click or triple-click selections as dead clicks\n !hasSelectionChanged\n ) {\n click.addFrustration(FrustrationType.DEAD_CLICK)\n }\n })\n return { isRage: false }\n}\n\nexport function isRage(clicks: Click[]) {\n if (clicks.some((click) => click.getUserActivity().selection || click.getUserActivity().scroll)) {\n return false\n }\n for (let i = 0; i < clicks.length - (MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1); i += 1) {\n if (\n clicks[i + MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1].event.timeStamp - clicks[i].event.timeStamp <=\n ONE_SECOND\n ) {\n return true\n }\n }\n return false\n}\n\nconst DEAD_CLICK_EXCLUDE_SELECTOR =\n // inputs that don't trigger a meaningful event like \"input\" when clicked, including textual\n // inputs (using a negative selector is shorter here)\n 'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"button\"]):not([type=\"submit\"]):not([type=\"reset\"]):not([type=\"range\"]),' +\n 'textarea,' +\n 'select,' +\n // contenteditable and their descendants don't always trigger meaningful changes when manipulated\n '[contenteditable],' +\n '[contenteditable] *,' +\n // canvas, as there is no good way to detect activity occurring on them\n 'canvas,' +\n // links that are interactive (have an href attribute) or any of their descendants, as they can\n // open a new tab or navigate to a hash without triggering a meaningful event\n 'a[href],' +\n 'a[href] *'\n\nexport function isDead(click: Click) {\n if (click.hasPageActivity || click.getUserActivity().input || click.getUserActivity().scroll) {\n return false\n }\n return !elementMatches(click.event.target, DEAD_CLICK_EXCLUDE_SELECTOR)\n}\n","import type { Duration, ClocksState, RelativeTime, TimeStamp, ValueHistory } from '@datadog/browser-core'\nimport {\n includes,\n timeStampNow,\n Observable,\n assign,\n getRelativeTime,\n ONE_MINUTE,\n generateUUID,\n clocksNow,\n ONE_SECOND,\n elapsed,\n createValueHistory,\n} from '@datadog/browser-core'\nimport type { FrustrationType } from '../../rawRumEvent.types'\nimport { ActionType } from '../../rawRumEvent.types'\nimport type { LifeCycle } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport { trackEventCounts } from '../trackEventCounts'\nimport { PAGE_ACTIVITY_VALIDATION_DELAY, waitPageActivityEnd } from '../waitPageActivityEnd'\nimport { getSelectorFromElement } from '../getSelectorFromElement'\nimport { getNodePrivacyLevel, NodePrivacyLevel } from '../privacy'\nimport type { RumConfiguration } from '../configuration'\nimport type { ClickChain } from './clickChain'\nimport { createClickChain } from './clickChain'\nimport { getActionNameFromElement } from './getActionNameFromElement'\nimport type { MouseEventOnElement, UserActivity } from './listenActionEvents'\nimport { listenActionEvents } from './listenActionEvents'\nimport { computeFrustration } from './computeFrustration'\n\ninterface ActionCounts {\n errorCount: number\n longTaskCount: number\n resourceCount: number\n}\n\nexport interface ClickAction {\n type: ActionType.CLICK\n id: string\n name: string\n target?: {\n selector: string | undefined\n width: number\n height: number\n }\n position?: { x: number; y: number }\n startClocks: ClocksState\n duration?: Duration\n counts: ActionCounts\n event: MouseEventOnElement\n frustrationTypes: FrustrationType[]\n events: Event[]\n}\n\nexport interface ActionContexts {\n findActionId: (startTime?: RelativeTime) => string | string[] | undefined\n}\n\ntype ClickActionIdHistory = ValueHistory<ClickAction['id']>\n\n// Maximum duration for click actions\nexport const CLICK_ACTION_MAX_DURATION = 10 * ONE_SECOND\nexport const ACTION_CONTEXT_TIME_OUT_DELAY = 5 * ONE_MINUTE // arbitrary\n\nexport function trackClickActions(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable<void>,\n configuration: RumConfiguration\n) {\n const history: ClickActionIdHistory = createValueHistory({ expireDelay: ACTION_CONTEXT_TIME_OUT_DELAY })\n const stopObservable = new Observable<void>()\n let currentClickChain: ClickChain | undefined\n\n lifeCycle.subscribe(LifeCycleEventType.SESSION_RENEWED, () => {\n history.reset()\n })\n\n lifeCycle.subscribe(LifeCycleEventType.VIEW_ENDED, stopClickChain)\n\n const { stop: stopActionEventsListener } = listenActionEvents<{\n clickActionBase: ClickActionBase\n hadActivityOnPointerDown: () => boolean\n }>(configuration, {\n onPointerDown: (pointerDownEvent) =>\n processPointerDown(configuration, lifeCycle, domMutationObservable, pointerDownEvent),\n onPointerUp: ({ clickActionBase, hadActivityOnPointerDown }, startEvent, getUserActivity) => {\n startClickAction(\n configuration,\n lifeCycle,\n domMutationObservable,\n history,\n stopObservable,\n appendClickToClickChain,\n clickActionBase,\n startEvent,\n getUserActivity,\n hadActivityOnPointerDown\n )\n },\n })\n\n const actionContexts: ActionContexts = {\n findActionId: (startTime?: RelativeTime) => history.findAll(startTime),\n }\n\n return {\n stop: () => {\n stopClickChain()\n stopObservable.notify()\n stopActionEventsListener()\n },\n actionContexts,\n }\n\n function appendClickToClickChain(click: Click) {\n if (!currentClickChain || !currentClickChain.tryAppend(click)) {\n const rageClick = click.clone()\n currentClickChain = createClickChain(click, (clicks) => {\n finalizeClicks(clicks, rageClick)\n })\n }\n }\n\n function stopClickChain() {\n if (currentClickChain) {\n currentClickChain.stop()\n }\n }\n}\n\nfunction processPointerDown(\n configuration: RumConfiguration,\n lifeCycle: LifeCycle,\n domMutationObservable: Observable<void>,\n pointerDownEvent: MouseEventOnElement\n) {\n const nodePrivacyLevel = configuration.enablePrivacyForActionName\n ? getNodePrivacyLevel(pointerDownEvent.target, configuration.defaultPrivacyLevel)\n : NodePrivacyLevel.ALLOW\n\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n return undefined\n }\n\n const clickActionBase = computeClickActionBase(pointerDownEvent, nodePrivacyLevel, configuration)\n\n let hadActivityOnPointerDown = false\n\n waitPageActivityEnd(\n lifeCycle,\n domMutationObservable,\n configuration,\n (pageActivityEndEvent) => {\n hadActivityOnPointerDown = pageActivityEndEvent.hadActivity\n },\n // We don't care about the activity duration, we just want to know whether an activity did happen\n // within the \"validation delay\" or not. Limit the duration so the callback is called sooner.\n PAGE_ACTIVITY_VALIDATION_DELAY\n )\n\n return { clickActionBase, hadActivityOnPointerDown: () => hadActivityOnPointerDown }\n}\n\nfunction startClickAction(\n configuration: RumConfiguration,\n lifeCycle: LifeCycle,\n domMutationObservable: Observable<void>,\n history: ClickActionIdHistory,\n stopObservable: Observable<void>,\n appendClickToClickChain: (click: Click) => void,\n clickActionBase: ClickActionBase,\n startEvent: MouseEventOnElement,\n getUserActivity: () => UserActivity,\n hadActivityOnPointerDown: () => boolean\n) {\n const click = newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent)\n appendClickToClickChain(click)\n\n const { stop: stopWaitPageActivityEnd } = waitPageActivityEnd(\n lifeCycle,\n domMutationObservable,\n configuration,\n (pageActivityEndEvent) => {\n if (pageActivityEndEvent.hadActivity && pageActivityEndEvent.end < click.startClocks.timeStamp) {\n // If the clock is looking weird, just discard the click\n click.discard()\n } else {\n if (pageActivityEndEvent.hadActivity) {\n click.stop(pageActivityEndEvent.end)\n } else if (hadActivityOnPointerDown()) {\n click.stop(\n // using the click start as activity end, so the click will have some activity but its\n // duration will be 0 (as the activity started before the click start)\n click.startClocks.timeStamp\n )\n } else {\n click.stop()\n }\n }\n },\n CLICK_ACTION_MAX_DURATION\n )\n\n const viewEndedSubscription = lifeCycle.subscribe(LifeCycleEventType.VIEW_ENDED, ({ endClocks }) => {\n click.stop(endClocks.timeStamp)\n })\n\n const stopSubscription = stopObservable.subscribe(() => {\n click.stop()\n })\n\n click.stopObservable.subscribe(() => {\n viewEndedSubscription.unsubscribe()\n stopWaitPageActivityEnd()\n stopSubscription.unsubscribe()\n })\n}\n\ntype ClickActionBase = Pick<ClickAction, 'type' | 'name' | 'target' | 'position'>\n\nfunction computeClickActionBase(\n event: MouseEventOnElement,\n nodePrivacyLevel: NodePrivacyLevel,\n configuration: RumConfiguration\n): ClickActionBase {\n const rect = event.target.getBoundingClientRect()\n\n return {\n type: ActionType.CLICK,\n target: {\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n selector: getSelectorFromElement(event.target, configuration.actionNameAttribute),\n },\n position: {\n // Use clientX and Y because for SVG element offsetX and Y are relatives to the <svg> element\n x: Math.round(event.clientX - rect.left),\n y: Math.round(event.clientY - rect.top),\n },\n name: getActionNameFromElement(event.target, configuration, nodePrivacyLevel),\n }\n}\n\nconst enum ClickStatus {\n // Initial state, the click is still ongoing.\n ONGOING,\n // The click is no more ongoing but still needs to be validated or discarded.\n STOPPED,\n // Final state, the click has been stopped and validated or discarded.\n FINALIZED,\n}\n\nexport type Click = ReturnType<typeof newClick>\n\nfunction newClick(\n lifeCycle: LifeCycle,\n history: ClickActionIdHistory,\n getUserActivity: () => UserActivity,\n clickActionBase: ClickActionBase,\n startEvent: MouseEventOnElement\n) {\n const id = generateUUID()\n const startClocks = clocksNow()\n const historyEntry = history.add(id, startClocks.relative)\n const eventCountsSubscription = trackEventCounts({\n lifeCycle,\n isChildEvent: (event) =>\n event.action !== undefined &&\n (Array.isArray(event.action.id) ? includes(event.action.id, id) : event.action.id === id),\n })\n let status = ClickStatus.ONGOING\n let activityEndTime: undefined | TimeStamp\n const frustrationTypes: FrustrationType[] = []\n const stopObservable = new Observable<void>()\n\n function stop(newActivityEndTime?: TimeStamp) {\n if (status !== ClickStatus.ONGOING) {\n return\n }\n activityEndTime = newActivityEndTime\n status = ClickStatus.STOPPED\n if (activityEndTime) {\n historyEntry.close(getRelativeTime(activityEndTime))\n } else {\n historyEntry.remove()\n }\n eventCountsSubscription.stop()\n stopObservable.notify()\n }\n\n return {\n event: startEvent,\n stop,\n stopObservable,\n\n get hasError() {\n return eventCountsSubscription.eventCounts.errorCount > 0\n },\n get hasPageActivity() {\n return activityEndTime !== undefined\n },\n getUserActivity,\n addFrustration: (frustrationType: FrustrationType) => {\n frustrationTypes.push(frustrationType)\n },\n startClocks,\n\n isStopped: () => status === ClickStatus.STOPPED || status === ClickStatus.FINALIZED,\n\n clone: () => newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent),\n\n validate: (domEvents?: Event[]) => {\n stop()\n if (status !== ClickStatus.STOPPED) {\n return\n }\n\n const { resourceCount, errorCount, longTaskCount } = eventCountsSubscription.eventCounts\n const clickAction: ClickAction = assign(\n {\n type: ActionType.CLICK as const,\n duration: activityEndTime && elapsed(startClocks.timeStamp, activityEndTime),\n startClocks,\n id,\n frustrationTypes,\n counts: {\n resourceCount,\n errorCount,\n longTaskCount,\n },\n events: domEvents ?? [startEvent],\n event: startEvent,\n },\n clickActionBase\n )\n lifeCycle.notify(LifeCycleEventType.AUTO_ACTION_COMPLETED, clickAction)\n status = ClickStatus.FINALIZED\n },\n\n discard: () => {\n stop()\n status = ClickStatus.FINALIZED\n },\n }\n}\n\nexport function finalizeClicks(clicks: Click[], rageClick: Click) {\n const { isRage } = computeFrustration(clicks, rageClick)\n if (isRage) {\n clicks.forEach((click) => click.discard())\n rageClick.stop(timeStampNow())\n rageClick.validate(clicks.map((click) => click.event))\n } else {\n rageClick.discard()\n clicks.forEach((click) => click.validate())\n }\n}\n","import type { ClocksState, Context, Observable } from '@datadog/browser-core'\nimport { noop, assign, combine, toServerDuration, generateUUID } from '@datadog/browser-core'\n\nimport { discardNegativeDuration } from '../discardNegativeDuration'\nimport type { RawRumActionEvent } from '../../rawRumEvent.types'\nimport { ActionType, RumEventType } from '../../rawRumEvent.types'\nimport type { LifeCycle, RawRumEventCollectedData } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport type { RumConfiguration } from '../configuration'\nimport type { CommonContext } from '../contexts/commonContext'\nimport type { PageStateHistory } from '../contexts/pageStateHistory'\nimport { PageState } from '../contexts/pageStateHistory'\nimport type { RumActionEventDomainContext } from '../../domainContext.types'\nimport type { ActionContexts, ClickAction } from './trackClickActions'\nimport { trackClickActions } from './trackClickActions'\n\nexport type { ActionContexts }\n\nexport interface CustomAction {\n type: ActionType.CUSTOM\n name: string\n startClocks: ClocksState\n context?: Context\n handlingStack?: string\n}\n\nexport type AutoAction = ClickAction\n\nexport function startActionCollection(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable<void>,\n configuration: RumConfiguration,\n pageStateHistory: PageStateHistory\n) {\n lifeCycle.subscribe(LifeCycleEventType.AUTO_ACTION_COMPLETED, (action) =>\n lifeCycle.notify(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, processAction(action, pageStateHistory))\n )\n\n let actionContexts: ActionContexts = { findActionId: noop as () => undefined }\n if (configuration.trackUserInteractions) {\n actionContexts = trackClickActions(lifeCycle, domMutationObservable, configuration).actionContexts\n }\n\n return {\n addAction: (action: CustomAction, savedCommonContext?: CommonContext) => {\n lifeCycle.notify(\n LifeCycleEventType.RAW_RUM_EVENT_COLLECTED,\n assign(\n {\n savedCommonContext,\n },\n processAction(action, pageStateHistory)\n )\n )\n },\n actionContexts,\n }\n}\n\nfunction processAction(\n action: AutoAction | CustomAction,\n pageStateHistory: PageStateHistory\n): RawRumEventCollectedData<RawRumActionEvent> {\n const autoActionProperties = isAutoAction(action)\n ? {\n action: {\n id: action.id,\n loading_time: discardNegativeDuration(toServerDuration(action.duration)),\n frustration: {\n type: action.frustrationTypes,\n },\n error: {\n count: action.counts.errorCount,\n },\n long_task: {\n count: action.counts.longTaskCount,\n },\n resource: {\n count: action.counts.resourceCount,\n },\n },\n _dd: {\n action: {\n target: action.target,\n position: action.position,\n },\n },\n }\n : undefined\n const customerContext = !isAutoAction(action) ? action.context : undefined\n const actionEvent: RawRumActionEvent = combine(\n {\n action: {\n id: generateUUID(),\n target: {\n name: action.name,\n },\n type: action.type,\n },\n date: action.startClocks.timeStamp,\n type: RumEventType.ACTION as const,\n view: { in_foreground: pageStateHistory.wasInPageStateAt(PageState.ACTIVE, action.startClocks.relative) },\n },\n autoActionProperties\n )\n\n const domainContext: RumActionEventDomainContext = isAutoAction(action) ? { events: action.events } : {}\n\n if (!isAutoAction(action) && action.handlingStack) {\n domainContext.handlingStack = action.handlingStack\n }\n\n return {\n customerContext,\n rawRumEvent: actionEvent,\n startTime: action.startClocks.relative,\n domainContext,\n }\n}\n\nfunction isAutoAction(action: AutoAction | CustomAction): action is AutoAction {\n return action.type !== ActionType.CUSTOM\n}\n","import { instrumentMethod } from '../../tools/instrumentMethod'\nimport type { Observable } from '../../tools/observable'\nimport { clocksNow } from '../../tools/utils/timeUtils'\nimport type { StackTrace } from '../../tools/stackTrace/computeStackTrace'\nimport { computeStackTrace, computeStackTraceFromOnErrorMessage } from '../../tools/stackTrace/computeStackTrace'\nimport { computeRawError } from './error'\nimport type { RawError } from './error.types'\nimport { ErrorHandling, ErrorSource, NonErrorPrefix } from './error.types'\n\nexport type UnhandledErrorCallback = (stackTrace: StackTrace, originalError?: any) => any\n\nexport function trackRuntimeError(errorObservable: Observable<RawError>) {\n const handleRuntimeError = (stackTrace: StackTrace, originalError?: any) => {\n const rawError = computeRawError({\n stackTrace,\n originalError,\n startClocks: clocksNow(),\n nonErrorPrefix: NonErrorPrefix.UNCAUGHT,\n source: ErrorSource.SOURCE,\n handling: ErrorHandling.UNHANDLED,\n })\n errorObservable.notify(rawError)\n }\n const { stop: stopInstrumentingOnError } = instrumentOnError(handleRuntimeError)\n const { stop: stopInstrumentingOnUnhandledRejection } = instrumentUnhandledRejection(handleRuntimeError)\n\n return {\n stop: () => {\n stopInstrumentingOnError()\n stopInstrumentingOnUnhandledRejection()\n },\n }\n}\n\nexport function instrumentOnError(callback: UnhandledErrorCallback) {\n return instrumentMethod(window, 'onerror', ({ parameters: [messageObj, url, line, column, errorObj] }) => {\n let stackTrace\n if (errorObj instanceof Error) {\n stackTrace = computeStackTrace(errorObj)\n } else {\n stackTrace = computeStackTraceFromOnErrorMessage(messageObj, url, line, column)\n }\n callback(stackTrace, errorObj ?? messageObj)\n })\n}\n\nexport function instrumentUnhandledRejection(callback: UnhandledErrorCallback) {\n return instrumentMethod(window, 'onunhandledrejection', ({ parameters: [e] }) => {\n const reason = e.reason || 'Empty reason'\n const stack = computeStackTrace(reason)\n callback(stack, reason)\n })\n}\n","import { flattenErrorCauses, tryToGetFingerprint } from '../error/error'\nimport { mergeObservables, Observable } from '../../tools/observable'\nimport { ConsoleApiName, globalConsole } from '../../tools/display'\nimport { callMonitored } from '../../tools/monitor'\nimport { sanitize } from '../../tools/serialisation/sanitize'\nimport { find } from '../../tools/utils/polyfills'\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify'\nimport type { RawErrorCause } from '../error/error.types'\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace'\nimport { createHandlingStack, toStackTraceString, formatErrorMessage } from '../../tools/stackTrace/handlingStack'\n\nexport interface ConsoleLog {\n message: string\n api: ConsoleApiName\n stack?: string\n handlingStack: string\n fingerprint?: string\n causes?: RawErrorCause[]\n}\n\nlet consoleObservablesByApi: { [k in ConsoleApiName]?: Observable<ConsoleLog> } = {}\n\nexport function initConsoleObservable(apis: ConsoleApiName[]) {\n const consoleObservables = apis.map((api) => {\n if (!consoleObservablesByApi[api]) {\n consoleObservablesByApi[api] = createConsoleObservable(api)\n }\n return consoleObservablesByApi[api]\n })\n\n return mergeObservables<ConsoleLog>(...consoleObservables)\n}\n\nexport function resetConsoleObservable() {\n consoleObservablesByApi = {}\n}\n\nfunction createConsoleObservable(api: ConsoleApiName) {\n return new Observable<ConsoleLog>((observable) => {\n const originalConsoleApi = globalConsole[api]\n\n globalConsole[api] = (...params: unknown[]) => {\n originalConsoleApi.apply(console, params)\n const handlingStack = createHandlingStack()\n\n callMonitored(() => {\n observable.notify(buildConsoleLog(params, api, handlingStack))\n })\n }\n\n return () => {\n globalConsole[api] = originalConsoleApi\n }\n })\n}\n\nfunction buildConsoleLog(params: unknown[], api: ConsoleApiName, handlingStack: string): ConsoleLog {\n const message = params.map((param) => formatConsoleParameters(param)).join(' ')\n let stack\n let fingerprint\n let causes\n\n if (api === ConsoleApiName.error) {\n const firstErrorParam = find(params, (param: unknown): param is Error => param instanceof Error)\n stack = firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined\n fingerprint = tryToGetFingerprint(firstErrorParam)\n causes = firstErrorParam ? flattenErrorCauses(firstErrorParam, 'console') : undefined\n }\n\n return {\n api,\n message,\n stack,\n handlingStack,\n fingerprint,\n causes,\n }\n}\n\nfunction formatConsoleParameters(param: unknown) {\n if (typeof param === 'string') {\n return sanitize(param)\n }\n if (param instanceof Error) {\n return formatErrorMessage(computeStackTrace(param))\n }\n return jsonStringify(sanitize(param), undefined, 2)\n}\n","import { toStackTraceString } from '../../tools/stackTrace/handlingStack'\nimport { monitor } from '../../tools/monitor'\nimport { mergeObservables, Observable } from '../../tools/observable'\nimport { addEventListener, DOM_EVENT } from '../../browser/addEventListener'\nimport { includes } from '../../tools/utils/polyfills'\nimport { safeTruncate } from '../../tools/utils/stringUtils'\nimport type { Configuration } from '../configuration'\nimport type { ReportType, InterventionReport, DeprecationReport } from './browser.types'\n\nexport const RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation',\n} as const\n\nexport type RawReportType = (typeof RawReportType)[keyof typeof RawReportType]\n\nexport interface RawReport {\n type: RawReportType\n subtype: string\n message: string\n originalReport: SecurityPolicyViolationEvent | DeprecationReport | InterventionReport\n stack?: string\n}\n\nexport function initReportObservable(configuration: Configuration, apis: RawReportType[]) {\n const observables: Array<Observable<RawReport>> = []\n\n if (includes(apis, RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration))\n }\n\n const reportTypes = apis.filter((api: RawReportType): api is ReportType => api !== RawReportType.cspViolation)\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes))\n }\n\n return mergeObservables<RawReport>(...observables)\n}\n\nfunction createReportObservable(reportTypes: ReportType[]) {\n return new Observable<RawReport>((observable) => {\n if (!window.ReportingObserver) {\n return\n }\n\n const handleReports = monitor((reports: Array<DeprecationReport | InterventionReport>, _: ReportingObserver) =>\n reports.forEach((report) => {\n observable.notify(buildRawReportFromReport(report))\n })\n ) as ReportingObserverCallback\n\n const observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true,\n })\n\n observer.observe()\n return () => {\n observer.disconnect()\n }\n })\n}\n\nfunction createCspViolationReportObservable(configuration: Configuration) {\n return new Observable<RawReport>((observable) => {\n const { stop } = addEventListener(configuration, document, DOM_EVENT.SECURITY_POLICY_VIOLATION, (event) => {\n observable.notify(buildRawReportFromCspViolation(event))\n })\n\n return stop\n })\n}\n\nfunction buildRawReportFromReport(report: DeprecationReport | InterventionReport): RawReport {\n const { type, body } = report\n\n return {\n type,\n subtype: body.id,\n message: `${type}: ${body.message}`,\n originalReport: report,\n stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n }\n}\n\nfunction buildRawReportFromCspViolation(event: SecurityPolicyViolationEvent): RawReport {\n const type = RawReportType.cspViolation\n const message = `'${event.blockedURI}' blocked by '${event.effectiveDirective}' directive`\n return {\n type: RawReportType.cspViolation,\n subtype: event.effectiveDirective,\n message: `${type}: ${message}`,\n stack: buildStack(\n event.effectiveDirective,\n event.originalPolicy\n ? `${message} of the policy \"${safeTruncate(event.originalPolicy, 100, '...')}\"`\n : 'no policy',\n event.sourceFile,\n event.lineNumber,\n event.columnNumber\n ),\n originalReport: event,\n }\n}\n\nfunction buildStack(\n name: string,\n message: string,\n sourceFile: string | null,\n lineNumber: number | null,\n columnNumber: number | null\n): string | undefined {\n return sourceFile\n ? toStackTraceString({\n name,\n message,\n stack: [\n {\n func: '?',\n url: sourceFile,\n line: lineNumber ?? undefined,\n column: columnNumber ?? undefined,\n },\n ],\n })\n : undefined\n}\n","import type { Context, RawError, ClocksState } from '@datadog/browser-core'\nimport {\n isEmptyObject,\n assign,\n ErrorSource,\n generateUUID,\n computeRawError,\n ErrorHandling,\n computeStackTrace,\n Observable,\n trackRuntimeError,\n NonErrorPrefix,\n} from '@datadog/browser-core'\nimport type { RumConfiguration } from '../configuration'\nimport type { RawRumErrorEvent } from '../../rawRumEvent.types'\nimport { RumEventType } from '../../rawRumEvent.types'\nimport type { LifeCycle, RawRumEventCollectedData } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport type { FeatureFlagContexts } from '../contexts/featureFlagContext'\nimport type { CommonContext } from '../contexts/commonContext'\nimport type { PageStateHistory } from '../contexts/pageStateHistory'\nimport { PageState } from '../contexts/pageStateHistory'\nimport type { RumErrorEventDomainContext } from '../../domainContext.types'\nimport { trackConsoleError } from './trackConsoleError'\nimport { trackReportError } from './trackReportError'\n\nexport interface ProvidedError {\n startClocks: ClocksState\n error: unknown\n context?: Context\n handlingStack: string\n}\n\nexport function startErrorCollection(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n pageStateHistory: PageStateHistory,\n featureFlagContexts: FeatureFlagContexts\n) {\n const errorObservable = new Observable<RawError>()\n\n trackConsoleError(errorObservable)\n trackRuntimeError(errorObservable)\n trackReportError(configuration, errorObservable)\n\n errorObservable.subscribe((error) => lifeCycle.notify(LifeCycleEventType.RAW_ERROR_COLLECTED, { error }))\n\n return doStartErrorCollection(lifeCycle, pageStateHistory, featureFlagContexts)\n}\n\nexport function doStartErrorCollection(\n lifeCycle: LifeCycle,\n pageStateHistory: PageStateHistory,\n featureFlagContexts: FeatureFlagContexts\n) {\n lifeCycle.subscribe(LifeCycleEventType.RAW_ERROR_COLLECTED, ({ error, customerContext, savedCommonContext }) => {\n lifeCycle.notify(\n LifeCycleEventType.RAW_RUM_EVENT_COLLECTED,\n assign(\n {\n customerContext,\n savedCommonContext,\n },\n processError(error, pageStateHistory, featureFlagContexts)\n )\n )\n })\n\n return {\n addError: (\n { error, handlingStack, startClocks, context: customerContext }: ProvidedError,\n savedCommonContext?: CommonContext\n ) => {\n const stackTrace = error instanceof Error ? computeStackTrace(error) : undefined\n const rawError = computeRawError({\n stackTrace,\n originalError: error,\n handlingStack,\n startClocks,\n nonErrorPrefix: NonErrorPrefix.PROVIDED,\n source: ErrorSource.CUSTOM,\n handling: ErrorHandling.HANDLED,\n })\n\n lifeCycle.notify(LifeCycleEventType.RAW_ERROR_COLLECTED, {\n customerContext,\n savedCommonContext,\n error: rawError,\n })\n },\n }\n}\n\nfunction processError(\n error: RawError,\n pageStateHistory: PageStateHistory,\n featureFlagContexts: FeatureFlagContexts\n): RawRumEventCollectedData<RawRumErrorEvent> {\n const rawRumEvent: RawRumErrorEvent = {\n date: error.startClocks.timeStamp,\n error: {\n id: generateUUID(),\n message: error.message,\n source: error.source,\n stack: error.stack,\n handling_stack: error.handlingStack,\n type: error.type,\n handling: error.handling,\n causes: error.causes,\n source_type: 'browser',\n fingerprint: error.fingerprint,\n csp: error.csp,\n },\n type: RumEventType.ERROR as const,\n view: { in_foreground: pageStateHistory.wasInPageStateAt(PageState.ACTIVE, error.startClocks.relative) },\n }\n\n const featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(error.startClocks.relative)\n if (featureFlagContext && !isEmptyObject(featureFlagContext)) {\n rawRumEvent.feature_flags = featureFlagContext\n }\n\n const domainContext: RumErrorEventDomainContext = {\n error: error.originalError,\n handlingStack: error.handlingStack,\n }\n\n return {\n rawRumEvent,\n startTime: error.startClocks.relative,\n domainContext,\n }\n}\n","import type { Observable, RawError } from '@datadog/browser-core'\nimport { clocksNow, ErrorHandling, initConsoleObservable, ErrorSource, ConsoleApiName } from '@datadog/browser-core'\n\nexport function trackConsoleError(errorObservable: Observable<RawError>) {\n const subscription = initConsoleObservable([ConsoleApiName.error]).subscribe((consoleError) =>\n errorObservable.notify({\n startClocks: clocksNow(),\n message: consoleError.message,\n stack: consoleError.stack,\n fingerprint: consoleError.fingerprint,\n source: ErrorSource.CONSOLE,\n handling: ErrorHandling.HANDLED,\n handlingStack: consoleError.handlingStack,\n })\n )\n\n return {\n stop: () => {\n subscription.unsubscribe()\n },\n }\n}\n","import type { Observable, RawError } from '@datadog/browser-core'\nimport { clocksNow, ErrorHandling, ErrorSource, initReportObservable, RawReportType } from '@datadog/browser-core'\nimport type { RumConfiguration } from '../configuration'\n\nexport function trackReportError(configuration: RumConfiguration, errorObservable: Observable<RawError>) {\n const subscription = initReportObservable(configuration, [\n RawReportType.cspViolation,\n RawReportType.intervention,\n ]).subscribe((reportError) => {\n const rawError: RawError = {\n startClocks: clocksNow(),\n message: reportError.message,\n stack: reportError.stack,\n type: reportError.subtype,\n source: ErrorSource.REPORT,\n handling: ErrorHandling.UNHANDLED,\n originalError: reportError.originalReport,\n }\n\n if (reportError.originalReport.type === 'securitypolicyviolation') {\n rawError.csp = {\n disposition: reportError.originalReport.disposition,\n }\n }\n\n return errorObservable.notify(rawError)\n })\n\n return {\n stop: () => {\n subscription.unsubscribe()\n },\n }\n}\n","import type { Duration, RelativeTime } from '@datadog/browser-core'\nimport { addDuration } from '@datadog/browser-core'\nimport type { RumPerformanceResourceTiming } from '../../browser/performanceObservable'\nimport type { RequestCompleteEvent } from '../requestCollection'\nimport { WeakSet } from '../../browser/polyfills'\nimport { isValidEntry } from './resourceUtils'\n\ninterface Timing {\n startTime: RelativeTime\n duration: Duration\n}\n\nconst alreadyMatchedEntries = new WeakSet<PerformanceEntry>()\n\n/**\n * Look for corresponding timing in resource timing buffer\n *\n * Observations:\n * - Timing (start, end) are nested inside the request (start, end)\n * - Some timing can be not exactly nested, being off by < 1 ms\n *\n * Strategy:\n * - from valid nested entries (with 1 ms error margin)\n * - filter out timing that were already matched to a request\n * - then, if a single timing match, return the timing\n * - otherwise we can't decide, return undefined\n */\nexport function matchRequestTiming(request: RequestCompleteEvent) {\n if (!performance || !('getEntriesByName' in performance)) {\n return\n }\n const sameNameEntries = performance.getEntriesByName(request.url, 'resource') as RumPerformanceResourceTiming[]\n\n if (!sameNameEntries.length || !('toJSON' in sameNameEntries[0])) {\n return\n }\n\n const candidates = sameNameEntries\n .filter((entry) => !alreadyMatchedEntries.has(entry))\n .filter((entry) => isValidEntry(entry))\n .filter((entry) =>\n isBetween(\n entry,\n request.startClocks.relative,\n endTime({ startTime: request.startClocks.relative, duration: request.duration })\n )\n )\n\n if (candidates.length === 1) {\n alreadyMatchedEntries.add(candidates[0])\n\n return candidates[0].toJSON() as RumPerformanceResourceTiming\n }\n\n return\n}\n\nfunction endTime(timing: Timing) {\n return addDuration(timing.startTime, timing.duration)\n}\n\nfunction isBetween(timing: Timing, start: RelativeTime, end: RelativeTime) {\n const errorMargin = 1 as Duration\n return timing.startTime >= start - errorMargin && endTime(timing) <= addDuration(end, errorMargin)\n}\n","import type { Configuration } from '../domain/configuration'\nimport { DOM_EVENT, addEventListener } from './addEventListener'\n\nexport function runOnReadyState(\n configuration: Configuration,\n expectedReadyState: 'complete' | 'interactive',\n callback: () => void\n) {\n if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n callback()\n } else {\n const eventName = expectedReadyState === 'complete' ? DOM_EVENT.LOAD : DOM_EVENT.DOM_CONTENT_LOADED\n addEventListener(configuration, window, eventName, callback, { once: true })\n }\n}\n","import type { TimeStamp } from '@datadog/browser-core'\nimport { dateNow, findCommaSeparatedValue, ONE_MINUTE } from '@datadog/browser-core'\nimport { isCommentNode, isTextNode } from '../../browser/htmlDomUtils'\n\ninterface DocumentTraceData {\n traceId: string\n traceTime: TimeStamp\n}\n\nexport const INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD = 2 * ONE_MINUTE\n\nexport function getDocumentTraceId(document: Document): string | undefined {\n const data = getDocumentTraceDataFromMeta(document) || getDocumentTraceDataFromComment(document)\n\n if (!data || data.traceTime <= dateNow() - INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD) {\n return undefined\n }\n\n return data.traceId\n}\n\nexport function getDocumentTraceDataFromMeta(document: Document): DocumentTraceData | undefined {\n const traceIdMeta = document.querySelector<HTMLMetaElement>('meta[name=dd-trace-id]')\n const traceTimeMeta = document.querySelector<HTMLMetaElement>('meta[name=dd-trace-time]')\n return createDocumentTraceData(traceIdMeta && traceIdMeta.content, traceTimeMeta && traceTimeMeta.content)\n}\n\nexport function getDocumentTraceDataFromComment(document: Document): DocumentTraceData | undefined {\n const comment = findTraceComment(document)\n if (!comment) {\n return undefined\n }\n return createDocumentTraceData(\n findCommaSeparatedValue(comment, 'trace-id'),\n findCommaSeparatedValue(comment, 'trace-time')\n )\n}\n\nexport function createDocumentTraceData(\n traceId: string | undefined | null,\n rawTraceTime: string | undefined | null\n): DocumentTraceData | undefined {\n const traceTime = rawTraceTime && (Number(rawTraceTime) as TimeStamp)\n if (!traceId || !traceTime) {\n return undefined\n }\n\n return {\n traceId,\n traceTime,\n }\n}\n\nexport function findTraceComment(document: Document): string | undefined {\n // 1. Try to find the comment as a direct child of the document\n // Note: TSLint advises to use a 'for of', but TS doesn't allow to use 'for of' if the iterated\n // value is not an array or string (here, a NodeList).\n for (let i = 0; i < document.childNodes.length; i += 1) {\n const comment = getTraceCommentFromNode(document.childNodes[i])\n if (comment) {\n return comment\n }\n }\n\n // 2. If the comment is placed after the </html> tag, but have some space or new lines before or\n // after, the DOM parser will lift it (and the surrounding text) at the end of the <body> tag.\n // Try to look for the comment at the end of the <body> by by iterating over its child nodes in\n // reverse order, stopping if we come across a non-text node.\n if (document.body) {\n for (let i = document.body.childNodes.length - 1; i >= 0; i -= 1) {\n const node = document.body.childNodes[i]\n const comment = getTraceCommentFromNode(node)\n if (comment) {\n return comment\n }\n if (!isTextNode(node)) {\n break\n }\n }\n }\n}\n\nfunction getTraceCommentFromNode(node: Node | null) {\n if (node && isCommentNode(node)) {\n const match = /^\\s*DATADOG;(.*?)\\s*$/.exec(node.data)\n if (match) {\n return match[1]\n }\n }\n}\n","import type { RelativeTime, TimeStamp } from '@datadog/browser-core'\nimport { getRelativeTime, isNumber } from '@datadog/browser-core'\n\nexport type RelativePerformanceTiming = {\n -readonly [key in keyof Omit<PerformanceTiming, 'toJSON'>]: RelativeTime\n}\n\nexport function computeRelativePerformanceTiming() {\n const result: Partial<RelativePerformanceTiming> = {}\n const timing = performance.timing\n\n for (const key in timing) {\n if (isNumber(timing[key as keyof PerformanceTiming])) {\n const numberKey = key as keyof RelativePerformanceTiming\n const timingElement = timing[numberKey] as TimeStamp\n result[numberKey] = timingElement === 0 ? (0 as RelativeTime) : getRelativeTime(timingElement)\n }\n }\n return result as RelativePerformanceTiming\n}\n","import type { RelativeTime } from '@datadog/browser-core'\nimport { assign, runOnReadyState } from '@datadog/browser-core'\nimport { supportPerformanceTimingEvent, RumPerformanceEntryType } from '../../browser/performanceObservable'\nimport type { RumPerformanceResourceTiming } from '../../browser/performanceObservable'\nimport type { RumConfiguration } from '../configuration'\nimport { getDocumentTraceId } from '../tracing/getDocumentTraceId'\nimport { computeRelativePerformanceTiming } from '../../browser/performanceUtils'\nimport { FAKE_INITIAL_DOCUMENT } from './resourceUtils'\n\nexport function retrieveInitialDocumentResourceTiming(\n configuration: RumConfiguration,\n callback: (timing: RumPerformanceResourceTiming) => void\n) {\n runOnReadyState(configuration, 'interactive', () => {\n let timing: RumPerformanceResourceTiming\n\n const forcedAttributes = {\n entryType: RumPerformanceEntryType.RESOURCE as const,\n initiatorType: FAKE_INITIAL_DOCUMENT,\n traceId: getDocumentTraceId(document),\n toJSON: () => assign({}, timing, { toJSON: undefined }),\n }\n if (\n supportPerformanceTimingEvent(RumPerformanceEntryType.NAVIGATION) &&\n performance.getEntriesByType(RumPerformanceEntryType.NAVIGATION).length > 0\n ) {\n const navigationEntry = performance.getEntriesByType(RumPerformanceEntryType.NAVIGATION)[0]\n timing = assign(navigationEntry.toJSON() as RumPerformanceResourceTiming, forcedAttributes)\n } else {\n const relativePerformanceTiming = computeRelativePerformanceTiming()\n timing = assign(\n relativePerformanceTiming,\n {\n decodedBodySize: 0,\n encodedBodySize: 0,\n transferSize: 0,\n renderBlockingStatus: 'non-blocking',\n duration: relativePerformanceTiming.responseEnd,\n name: window.location.href,\n startTime: 0 as RelativeTime,\n },\n forcedAttributes\n )\n }\n callback(timing)\n })\n}\n","import type { ClocksState, Duration } from '@datadog/browser-core'\nimport {\n combine,\n generateUUID,\n RequestType,\n ResourceType,\n toServerDuration,\n relativeToClocks,\n assign,\n isNumber,\n} from '@datadog/browser-core'\nimport type { RumConfiguration } from '../configuration'\nimport {\n RumPerformanceEntryType,\n createPerformanceObservable,\n type RumPerformanceResourceTiming,\n} from '../../browser/performanceObservable'\nimport type { RumXhrResourceEventDomainContext, RumFetchResourceEventDomainContext } from '../../domainContext.types'\nimport type { RawRumResourceEvent } from '../../rawRumEvent.types'\nimport { RumEventType } from '../../rawRumEvent.types'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport type { RawRumEventCollectedData, LifeCycle } from '../lifeCycle'\nimport type { RequestCompleteEvent } from '../requestCollection'\nimport type { PageStateHistory } from '../contexts/pageStateHistory'\nimport { PageState } from '../contexts/pageStateHistory'\nimport { createTraceIdentifier } from '../tracing/tracer'\nimport { matchRequestTiming } from './matchRequestTiming'\nimport {\n computePerformanceResourceDetails,\n computePerformanceResourceDuration,\n computeResourceKind,\n computeSize,\n isRequestKind,\n isLongDataUrl,\n sanitizeDataUrl,\n} from './resourceUtils'\nimport { retrieveInitialDocumentResourceTiming } from './retrieveInitialDocumentResourceTiming'\n\nexport function startResourceCollection(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n pageStateHistory: PageStateHistory,\n retrieveInitialDocumentResourceTimingImpl = retrieveInitialDocumentResourceTiming\n) {\n lifeCycle.subscribe(LifeCycleEventType.REQUEST_COMPLETED, (request: RequestCompleteEvent) => {\n const rawEvent = processRequest(request, configuration, pageStateHistory)\n if (rawEvent) {\n lifeCycle.notify(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, rawEvent)\n }\n })\n\n const performanceResourceSubscription = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.RESOURCE,\n buffered: true,\n }).subscribe((entries) => {\n for (const entry of entries) {\n if (!isRequestKind(entry)) {\n const rawEvent = processResourceEntry(entry, configuration)\n if (rawEvent) {\n lifeCycle.notify(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, rawEvent)\n }\n }\n }\n })\n\n retrieveInitialDocumentResourceTimingImpl(configuration, (timing) => {\n const rawEvent = processResourceEntry(timing, configuration)\n if (rawEvent) {\n lifeCycle.notify(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, rawEvent)\n }\n })\n\n return {\n stop: () => {\n performanceResourceSubscription.unsubscribe()\n },\n }\n}\n\nfunction processRequest(\n request: RequestCompleteEvent,\n configuration: RumConfiguration,\n pageStateHistory: PageStateHistory\n): RawRumEventCollectedData<RawRumResourceEvent> | undefined {\n const matchingTiming = matchRequestTiming(request)\n const startClocks = matchingTiming ? relativeToClocks(matchingTiming.startTime) : request.startClocks\n const tracingInfo = computeRequestTracingInfo(request, configuration)\n if (!configuration.trackResources && !tracingInfo) {\n return\n }\n\n const type = request.type === RequestType.XHR ? ResourceType.XHR : ResourceType.FETCH\n\n const correspondingTimingOverrides = matchingTiming ? computePerformanceEntryMetrics(matchingTiming) : undefined\n\n const duration = computeRequestDuration(pageStateHistory, startClocks, request.duration)\n\n const resourceEvent = combine(\n {\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n type,\n duration,\n method: request.method,\n status_code: request.status,\n url: isLongDataUrl(request.url) ? sanitizeDataUrl(request.url) : request.url,\n },\n type: RumEventType.RESOURCE as const,\n _dd: {\n discarded: !configuration.trackResources,\n },\n },\n tracingInfo,\n correspondingTimingOverrides\n )\n\n return {\n startTime: startClocks.relative,\n rawRumEvent: resourceEvent,\n domainContext: {\n performanceEntry: matchingTiming,\n xhr: request.xhr,\n response: request.response,\n requestInput: request.input,\n requestInit: request.init,\n error: request.error,\n isAborted: request.isAborted,\n handlingStack: request.handlingStack,\n } as RumFetchResourceEventDomainContext | RumXhrResourceEventDomainContext,\n }\n}\n\nfunction processResourceEntry(\n entry: RumPerformanceResourceTiming,\n configuration: RumConfiguration\n): RawRumEventCollectedData<RawRumResourceEvent> | undefined {\n const startClocks = relativeToClocks(entry.startTime)\n const tracingInfo = computeEntryTracingInfo(entry, configuration)\n if (!configuration.trackResources && !tracingInfo) {\n return\n }\n\n const type = computeResourceKind(entry)\n const entryMetrics = computePerformanceEntryMetrics(entry)\n\n const resourceEvent = combine(\n {\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n type,\n url: entry.name,\n status_code: discardZeroStatus(entry.responseStatus),\n },\n type: RumEventType.RESOURCE as const,\n _dd: {\n discarded: !configuration.trackResources,\n },\n },\n tracingInfo,\n entryMetrics\n )\n return {\n startTime: startClocks.relative,\n rawRumEvent: resourceEvent,\n domainContext: {\n performanceEntry: entry,\n },\n }\n}\n\nfunction computePerformanceEntryMetrics(timing: RumPerformanceResourceTiming) {\n const { renderBlockingStatus } = timing\n return {\n resource: assign(\n {\n duration: computePerformanceResourceDuration(timing),\n render_blocking_status: renderBlockingStatus,\n },\n computeSize(timing),\n computePerformanceResourceDetails(timing)\n ),\n }\n}\n\nfunction computeRequestTracingInfo(request: RequestCompleteEvent, configuration: RumConfiguration) {\n const hasBeenTraced = request.traceSampled && request.traceId && request.spanId\n if (!hasBeenTraced) {\n return undefined\n }\n return {\n _dd: {\n span_id: request.spanId!.toDecimalString(),\n trace_id: request.traceId!.toDecimalString(),\n rule_psr: getRulePsr(configuration),\n },\n }\n}\n\nfunction computeEntryTracingInfo(entry: RumPerformanceResourceTiming, configuration: RumConfiguration) {\n const hasBeenTraced = entry.traceId\n if (!hasBeenTraced) {\n return undefined\n }\n return {\n _dd: {\n trace_id: entry.traceId,\n span_id: createTraceIdentifier().toDecimalString(),\n rule_psr: getRulePsr(configuration),\n },\n }\n}\n\n/**\n * @returns number between 0 and 1 which represents trace sample rate\n */\nfunction getRulePsr(configuration: RumConfiguration) {\n return isNumber(configuration.traceSampleRate) ? configuration.traceSampleRate / 100 : undefined\n}\n\nfunction computeRequestDuration(pageStateHistory: PageStateHistory, startClocks: ClocksState, duration: Duration) {\n return !pageStateHistory.wasInPageStateDuringPeriod(PageState.FROZEN, startClocks.relative, duration)\n ? toServerDuration(duration)\n : undefined\n}\n\n/**\n * The status is 0 for cross-origin resources without CORS headers, so the status is meaningless, and we shouldn't report it\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStatus#cross-origin_response_status_codes\n */\nfunction discardZeroStatus(statusCode: number | undefined): number | undefined {\n return statusCode === 0 ? undefined : statusCode\n}\n","import type { RelativeTime } from '@datadog/browser-core'\nimport { ONE_MINUTE, find } from '@datadog/browser-core'\nimport type { LifeCycle } from '../../lifeCycle'\nimport { LifeCycleEventType } from '../../lifeCycle'\nimport type { RumPerformancePaintTiming } from '../../../browser/performanceObservable'\nimport { RumPerformanceEntryType } from '../../../browser/performanceObservable'\nimport type { FirstHidden } from './trackFirstHidden'\n\n// Discard FCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport const FCP_MAXIMUM_DELAY = 10 * ONE_MINUTE\n\nexport function trackFirstContentfulPaint(\n lifeCycle: LifeCycle,\n firstHidden: FirstHidden,\n callback: (fcpTiming: RelativeTime) => void\n) {\n const { unsubscribe: unsubscribeLifeCycle } = lifeCycle.subscribe(\n LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED,\n (entries) => {\n const fcpEntry = find(\n entries,\n (entry): entry is RumPerformancePaintTiming =>\n entry.entryType === RumPerformanceEntryType.PAINT &&\n entry.name === 'first-contentful-paint' &&\n entry.startTime < firstHidden.timeStamp &&\n entry.startTime < FCP_MAXIMUM_DELAY\n )\n if (fcpEntry) {\n callback(fcpEntry.startTime)\n }\n }\n )\n return {\n stop: unsubscribeLifeCycle,\n }\n}\n","import type { Duration } from '@datadog/browser-core'\nimport { forEach, setTimeout, noop, relativeNow, runOnReadyState } from '@datadog/browser-core'\nimport type { RelativePerformanceTiming } from '../../../browser/performanceUtils'\nimport { computeRelativePerformanceTiming } from '../../../browser/performanceUtils'\nimport type { RumPerformanceNavigationTiming } from '../../../browser/performanceObservable'\nimport {\n createPerformanceObservable,\n RumPerformanceEntryType,\n supportPerformanceTimingEvent,\n} from '../../../browser/performanceObservable'\nimport type { RumConfiguration } from '../../configuration'\n\nexport interface NavigationTimings {\n domComplete: Duration\n domContentLoaded: Duration\n domInteractive: Duration\n loadEvent: Duration\n firstByte: Duration | undefined\n}\n\nexport function trackNavigationTimings(\n configuration: RumConfiguration,\n callback: (timings: NavigationTimings) => void\n) {\n const processEntry = (entry: RumPerformanceNavigationTiming | RelativePerformanceTiming) => {\n if (!isIncompleteNavigation(entry)) {\n callback(processNavigationEntry(entry))\n }\n }\n\n let stop = noop\n if (supportPerformanceTimingEvent(RumPerformanceEntryType.NAVIGATION)) {\n ;({ unsubscribe: stop } = createPerformanceObservable(configuration, {\n type: RumPerformanceEntryType.NAVIGATION,\n buffered: true,\n }).subscribe((entries) => forEach(entries, processEntry)))\n } else {\n retrieveNavigationTiming(configuration, processEntry)\n }\n\n return { stop }\n}\n\nfunction processNavigationEntry(entry: RumPerformanceNavigationTiming | RelativePerformanceTiming): NavigationTimings {\n return {\n domComplete: entry.domComplete,\n domContentLoaded: entry.domContentLoadedEventEnd,\n domInteractive: entry.domInteractive,\n loadEvent: entry.loadEventEnd,\n // In some cases the value reported is negative or is larger\n // than the current page time. Ignore these cases:\n // https://github.com/GoogleChrome/web-vitals/issues/137\n // https://github.com/GoogleChrome/web-vitals/issues/162\n firstByte: entry.responseStart >= 0 && entry.responseStart <= relativeNow() ? entry.responseStart : undefined,\n }\n}\n\nfunction isIncompleteNavigation(entry: RumPerformanceNavigationTiming | RelativePerformanceTiming) {\n return entry.loadEventEnd <= 0\n}\n\nfunction retrieveNavigationTiming(\n configuration: RumConfiguration,\n callback: (timing: RelativePerformanceTiming) => void\n) {\n runOnReadyState(configuration, 'complete', () => {\n // Send it a bit after the actual load event, so the \"loadEventEnd\" timing is accurate\n setTimeout(() => callback(computeRelativePerformanceTiming()))\n })\n}\n","import type { RelativeTime } from '@datadog/browser-core'\nimport { DOM_EVENT, ONE_MINUTE, addEventListeners, findLast } from '@datadog/browser-core'\nimport { LifeCycleEventType } from '../../lifeCycle'\nimport type { LifeCycle } from '../../lifeCycle'\nimport type { RumConfiguration } from '../../configuration'\nimport { RumPerformanceEntryType } from '../../../browser/performanceObservable'\nimport type { RumLargestContentfulPaintTiming } from '../../../browser/performanceObservable'\nimport { getSelectorFromElement } from '../../getSelectorFromElement'\nimport type { FirstHidden } from './trackFirstHidden'\n\n// Discard LCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport const LCP_MAXIMUM_DELAY = 10 * ONE_MINUTE\n\nexport interface LargestContentfulPaint {\n value: RelativeTime\n targetSelector?: string\n}\n\n/**\n * Track the largest contentful paint (LCP) occurring during the initial View. This can yield\n * multiple values, only the most recent one should be used.\n * Documentation: https://web.dev/lcp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/onLCP.ts\n */\nexport function trackLargestContentfulPaint(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n firstHidden: FirstHidden,\n eventTarget: Window,\n callback: (largestContentfulPaint: LargestContentfulPaint) => void\n) {\n // Ignore entries that come after the first user interaction. According to the documentation, the\n // browser should not send largest-contentful-paint entries after a user interact with the page,\n // but the web-vitals reference implementation uses this as a safeguard.\n let firstInteractionTimestamp = Infinity\n const { stop: stopEventListener } = addEventListeners(\n configuration,\n eventTarget,\n [DOM_EVENT.POINTER_DOWN, DOM_EVENT.KEY_DOWN],\n (event) => {\n firstInteractionTimestamp = event.timeStamp\n },\n { capture: true, once: true }\n )\n\n let biggestLcpSize = 0\n const { unsubscribe: unsubscribeLifeCycle } = lifeCycle.subscribe(\n LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED,\n (entries) => {\n const lcpEntry = findLast(\n entries,\n (entry): entry is RumLargestContentfulPaintTiming =>\n entry.entryType === RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT &&\n entry.startTime < firstInteractionTimestamp &&\n entry.startTime < firstHidden.timeStamp &&\n entry.startTime < LCP_MAXIMUM_DELAY &&\n // Ensure to get the LCP entry with the biggest size, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1516655\n entry.size > biggestLcpSize\n )\n\n if (lcpEntry) {\n let lcpTargetSelector\n if (lcpEntry.element) {\n lcpTargetSelector = getSelectorFromElement(lcpEntry.element, configuration.actionNameAttribute)\n }\n\n callback({\n value: lcpEntry.startTime,\n targetSelector: lcpTargetSelector,\n })\n biggestLcpSize = lcpEntry.size\n }\n }\n )\n\n return {\n stop: () => {\n stopEventListener()\n unsubscribeLifeCycle()\n },\n }\n}\n","import type { Duration } from '@datadog/browser-core'\nimport type { RumConfiguration } from '../../configuration'\nimport type { LifeCycle } from '../../lifeCycle'\nimport { trackFirstContentfulPaint } from './trackFirstContentfulPaint'\nimport type { FirstInput } from './trackFirstInput'\nimport { trackFirstInput } from './trackFirstInput'\nimport type { NavigationTimings } from './trackNavigationTimings'\nimport { trackNavigationTimings } from './trackNavigationTimings'\nimport type { LargestContentfulPaint } from './trackLargestContentfulPaint'\nimport { trackLargestContentfulPaint } from './trackLargestContentfulPaint'\nimport { trackFirstHidden } from './trackFirstHidden'\n\nexport interface InitialViewMetrics {\n firstContentfulPaint?: Duration\n navigationTimings?: NavigationTimings\n largestContentfulPaint?: LargestContentfulPaint\n firstInput?: FirstInput\n}\n\nexport function trackInitialViewMetrics(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n setLoadEvent: (loadEnd: Duration) => void,\n scheduleViewUpdate: () => void\n) {\n const initialViewMetrics: InitialViewMetrics = {}\n\n const { stop: stopNavigationTracking } = trackNavigationTimings(configuration, (navigationTimings) => {\n setLoadEvent(navigationTimings.loadEvent)\n initialViewMetrics.navigationTimings = navigationTimings\n scheduleViewUpdate()\n })\n\n const firstHidden = trackFirstHidden(configuration)\n const { stop: stopFCPTracking } = trackFirstContentfulPaint(lifeCycle, firstHidden, (firstContentfulPaint) => {\n initialViewMetrics.firstContentfulPaint = firstContentfulPaint\n scheduleViewUpdate()\n })\n\n const { stop: stopLCPTracking } = trackLargestContentfulPaint(\n lifeCycle,\n configuration,\n firstHidden,\n window,\n (largestContentfulPaint) => {\n initialViewMetrics.largestContentfulPaint = largestContentfulPaint\n scheduleViewUpdate()\n }\n )\n\n const { stop: stopFIDTracking } = trackFirstInput(lifeCycle, configuration, firstHidden, (firstInput) => {\n initialViewMetrics.firstInput = firstInput\n scheduleViewUpdate()\n })\n\n function stop() {\n stopNavigationTracking()\n stopFCPTracking()\n stopLCPTracking()\n stopFIDTracking()\n firstHidden.stop()\n }\n\n return {\n stop,\n initialViewMetrics,\n }\n}\n","import type { RelativeTime } from '@datadog/browser-core'\nimport { addEventListeners, DOM_EVENT } from '@datadog/browser-core'\nimport type { RumConfiguration } from '../../configuration'\n\nexport type FirstHidden = ReturnType<typeof trackFirstHidden>\n\nexport function trackFirstHidden(configuration: RumConfiguration, eventTarget: Window = window) {\n let timeStamp: RelativeTime\n let stopListeners: () => void | undefined\n\n if (document.visibilityState === 'hidden') {\n timeStamp = 0 as RelativeTime\n } else {\n timeStamp = Infinity as RelativeTime\n ;({ stop: stopListeners } = addEventListeners(\n configuration,\n eventTarget,\n [DOM_EVENT.PAGE_HIDE, DOM_EVENT.VISIBILITY_CHANGE],\n (event) => {\n if (event.type === DOM_EVENT.PAGE_HIDE || document.visibilityState === 'hidden') {\n timeStamp = event.timeStamp as RelativeTime\n stopListeners()\n }\n },\n { capture: true }\n ))\n }\n\n return {\n get timeStamp() {\n return timeStamp\n },\n stop() {\n stopListeners?.()\n },\n }\n}\n","import type { Duration, RelativeTime } from '@datadog/browser-core'\nimport { elapsed, find } from '@datadog/browser-core'\nimport { isElementNode } from '../../../browser/htmlDomUtils'\nimport type { RumConfiguration } from '../../configuration'\nimport type { LifeCycle } from '../../lifeCycle'\nimport { LifeCycleEventType } from '../../lifeCycle'\nimport { RumPerformanceEntryType } from '../../../browser/performanceObservable'\nimport type { RumFirstInputTiming } from '../../../browser/performanceObservable'\nimport { getSelectorFromElement } from '../../getSelectorFromElement'\nimport type { FirstHidden } from './trackFirstHidden'\n\nexport interface FirstInput {\n delay: Duration\n time: RelativeTime\n targetSelector?: string\n}\n\n/**\n * Track the first input occurring during the initial View to return:\n * - First Input Delay\n * - First Input Time\n * Callback is called at most one time.\n * Documentation: https://web.dev/fid/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getFID.ts\n */\nexport function trackFirstInput(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n firstHidden: FirstHidden,\n callback: (firstInput: FirstInput) => void\n) {\n const { unsubscribe: unsubscribeLifeCycle } = lifeCycle.subscribe(\n LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED,\n (entries) => {\n const firstInputEntry = find(\n entries,\n (entry): entry is RumFirstInputTiming =>\n entry.entryType === RumPerformanceEntryType.FIRST_INPUT && entry.startTime < firstHidden.timeStamp\n )\n if (firstInputEntry) {\n const firstInputDelay = elapsed(firstInputEntry.startTime, firstInputEntry.processingStart)\n let firstInputTargetSelector\n\n if (firstInputEntry.target && isElementNode(firstInputEntry.target)) {\n firstInputTargetSelector = getSelectorFromElement(firstInputEntry.target, configuration.actionNameAttribute)\n }\n\n callback({\n // Ensure firstInputDelay to be positive, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1185815\n delay: firstInputDelay >= 0 ? firstInputDelay : (0 as Duration),\n time: firstInputEntry.startTime,\n targetSelector: firstInputTargetSelector,\n })\n }\n }\n )\n\n return {\n stop: unsubscribeLifeCycle,\n }\n}\n","import { round, find, ONE_SECOND, noop, elapsed } from '@datadog/browser-core'\nimport type { Duration, RelativeTime, WeakRef, WeakRefConstructor } from '@datadog/browser-core'\nimport { isElementNode } from '../../../browser/htmlDomUtils'\nimport type { LifeCycle } from '../../lifeCycle'\nimport { LifeCycleEventType } from '../../lifeCycle'\nimport type { RumLayoutShiftTiming } from '../../../browser/performanceObservable'\nimport { supportPerformanceTimingEvent, RumPerformanceEntryType } from '../../../browser/performanceObservable'\nimport { getSelectorFromElement } from '../../getSelectorFromElement'\nimport type { RumConfiguration } from '../../configuration'\n\nexport interface CumulativeLayoutShift {\n value: number\n targetSelector?: string\n time?: Duration\n}\n\ndeclare const WeakRef: WeakRefConstructor\n\n/**\n * Track the cumulative layout shifts (CLS).\n * Layout shifts are grouped into session windows.\n * The minimum gap between session windows is 1 second.\n * The maximum duration of a session window is 5 second.\n * The session window layout shift value is the sum of layout shifts inside it.\n * The CLS value is the max of session windows values.\n *\n * This yields a new value whenever the CLS value is updated (a higher session window value is computed).\n *\n * See isLayoutShiftSupported to check for browser support.\n *\n * Documentation:\n * https://web.dev/cls/\n * https://web.dev/evolving-cls/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getCLS.ts\n */\nexport function trackCumulativeLayoutShift(\n configuration: RumConfiguration,\n lifeCycle: LifeCycle,\n viewStart: RelativeTime,\n callback: (cumulativeLayoutShift: CumulativeLayoutShift) => void\n) {\n if (!isLayoutShiftSupported()) {\n return {\n stop: noop,\n }\n }\n\n let maxClsValue = 0\n // WeakRef is not supported in IE11 and Safari mobile, but so is the layout shift API, so this code won't be executed in these browsers\n let maxClsTarget: WeakRef<HTMLElement> | undefined\n let maxClsStartTime: Duration | undefined\n\n // if no layout shift happen the value should be reported as 0\n callback({\n value: 0,\n })\n\n const window = slidingSessionWindow()\n const { unsubscribe: stop } = lifeCycle.subscribe(LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED, (entries) => {\n for (const entry of entries) {\n if (entry.entryType === RumPerformanceEntryType.LAYOUT_SHIFT && !entry.hadRecentInput) {\n const { cumulatedValue, isMaxValue } = window.update(entry)\n\n if (isMaxValue) {\n const target = getTargetFromSource(entry.sources)\n maxClsTarget = target ? new WeakRef(target) : undefined\n maxClsStartTime = elapsed(viewStart, entry.startTime)\n }\n\n if (cumulatedValue > maxClsValue) {\n maxClsValue = cumulatedValue\n const target = maxClsTarget?.deref()\n\n callback({\n value: round(maxClsValue, 4),\n targetSelector: target && getSelectorFromElement(target, configuration.actionNameAttribute),\n time: maxClsStartTime,\n })\n }\n }\n }\n })\n\n return {\n stop,\n }\n}\n\nfunction getTargetFromSource(sources?: Array<{ node?: Node }>) {\n if (!sources) {\n return\n }\n\n return find(sources, (source): source is { node: HTMLElement } => !!source.node && isElementNode(source.node))?.node\n}\n\nexport const MAX_WINDOW_DURATION = 5 * ONE_SECOND\nconst MAX_UPDATE_GAP = ONE_SECOND\n\nfunction slidingSessionWindow() {\n let cumulatedValue = 0\n let startTime: RelativeTime\n let endTime: RelativeTime\n let maxValue = 0\n\n return {\n update: (entry: RumLayoutShiftTiming) => {\n const shouldCreateNewWindow =\n startTime === undefined ||\n entry.startTime - endTime >= MAX_UPDATE_GAP ||\n entry.startTime - startTime >= MAX_WINDOW_DURATION\n\n let isMaxValue: boolean\n\n if (shouldCreateNewWindow) {\n startTime = endTime = entry.startTime\n maxValue = cumulatedValue = entry.value\n isMaxValue = true\n } else {\n cumulatedValue += entry.value\n endTime = entry.startTime\n isMaxValue = entry.value > maxValue\n\n if (isMaxValue) {\n maxValue = entry.value\n }\n }\n\n return {\n cumulatedValue,\n isMaxValue,\n }\n },\n }\n}\n\n/**\n * Check whether `layout-shift` is supported by the browser.\n */\nexport function isLayoutShiftSupported() {\n return supportPerformanceTimingEvent(RumPerformanceEntryType.LAYOUT_SHIFT)\n}\n","/**\n * performance.interactionCount polyfill\n *\n * The interactionCount is an integer which counts the total number of distinct user interactions,\n * for which there was a unique interactionId.\n *\n * The interactionCount polyfill is an estimate based on a convention specific to Chrome. Cf: https://github.com/GoogleChrome/web-vitals/pull/213\n * This is currently not an issue as the polyfill is only used for INP which is currently only supported on Chrome.\n * Hopefully when/if other browsers will support INP, they will also implement performance.interactionCount at the same time, so we won't need that polyfill.\n *\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/lib/polyfills/interactionCountPolyfill.ts\n */\n\nimport { monitor } from '@datadog/browser-core'\nimport type {\n BrowserWindow,\n RumPerformanceEventTiming,\n RumPerformanceObserver,\n} from '../../../browser/performanceObservable'\n\nlet observer: RumPerformanceObserver | undefined\n\nlet interactionCountEstimate = 0\nlet minKnownInteractionId = Infinity\nlet maxKnownInteractionId = 0\n\nexport function initInteractionCountPolyfill() {\n if ('interactionCount' in performance || observer) {\n return\n }\n\n observer = new (window as BrowserWindow).PerformanceObserver(\n monitor((entries: PerformanceObserverEntryList) => {\n entries.getEntries().forEach((e) => {\n const entry = e as unknown as RumPerformanceEventTiming\n\n if (entry.interactionId) {\n minKnownInteractionId = Math.min(minKnownInteractionId, entry.interactionId)\n maxKnownInteractionId = Math.max(maxKnownInteractionId, entry.interactionId)\n\n interactionCountEstimate = (maxKnownInteractionId - minKnownInteractionId) / 7 + 1\n }\n })\n })\n )\n\n observer.observe({ type: 'event', buffered: true, durationThreshold: 0 })\n}\n\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nexport const getInteractionCount = () =>\n observer ? interactionCountEstimate : (window as BrowserWindow).performance.interactionCount! || 0\n","import { Observable, throttle, addEventListener, DOM_EVENT } from '@datadog/browser-core'\nimport type { RumConfiguration } from '../domain/configuration'\n\nexport interface ViewportDimension {\n height: number\n width: number\n}\n\nlet viewportObservable: Observable<ViewportDimension> | undefined\n\nexport function initViewportObservable(configuration: RumConfiguration) {\n if (!viewportObservable) {\n viewportObservable = createViewportObservable(configuration)\n }\n return viewportObservable\n}\n\nexport function createViewportObservable(configuration: RumConfiguration) {\n return new Observable<ViewportDimension>((observable) => {\n const { throttled: updateDimension } = throttle(() => {\n observable.notify(getViewportDimension())\n }, 200)\n\n return addEventListener(configuration, window, DOM_EVENT.RESIZE, updateDimension, { capture: true, passive: true })\n .stop\n })\n}\n\n// excludes the width and height of any rendered classic scrollbar that is fixed to the visual viewport\nexport function getViewportDimension(): ViewportDimension {\n const visual = window.visualViewport\n if (visual) {\n return {\n width: Number(visual.width * visual.scale),\n height: Number(visual.height * visual.scale),\n }\n }\n\n return {\n width: Number(window.innerWidth || 0),\n height: Number(window.innerHeight || 0),\n }\n}\n","import { elapsed, noop, ONE_MINUTE } from '@datadog/browser-core'\nimport type { Duration, RelativeTime } from '@datadog/browser-core'\nimport { RumPerformanceEntryType, supportPerformanceTimingEvent } from '../../../browser/performanceObservable'\nimport type { RumFirstInputTiming, RumPerformanceEventTiming } from '../../../browser/performanceObservable'\nimport { LifeCycleEventType } from '../../lifeCycle'\nimport type { LifeCycle } from '../../lifeCycle'\nimport { ViewLoadingType } from '../../../rawRumEvent.types'\nimport { getSelectorFromElement } from '../../getSelectorFromElement'\nimport { isElementNode } from '../../../browser/htmlDomUtils'\nimport type { RumConfiguration } from '../../configuration'\nimport { getInteractionCount, initInteractionCountPolyfill } from './interactionCountPolyfill'\n\n// Arbitrary value to prevent unnecessary memory usage on views with lots of interactions.\nconst MAX_INTERACTION_ENTRIES = 10\n// Arbitrary value to cap INP outliers\nexport const MAX_INP_VALUE = (1 * ONE_MINUTE) as Duration\n\nexport interface InteractionToNextPaint {\n value: Duration\n targetSelector?: string\n time?: Duration\n}\n/**\n * Track the interaction to next paint (INP).\n * To avoid outliers, return the p98 worst interaction of the view.\n * Documentation: https://web.dev/inp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/onINP.ts\n */\nexport function trackInteractionToNextPaint(\n configuration: RumConfiguration,\n viewStart: RelativeTime,\n viewLoadingType: ViewLoadingType,\n lifeCycle: LifeCycle\n) {\n if (!isInteractionToNextPaintSupported()) {\n return {\n getInteractionToNextPaint: () => undefined,\n setViewEnd: noop,\n stop: noop,\n }\n }\n\n const { getViewInteractionCount, stopViewInteractionCount } = trackViewInteractionCount(viewLoadingType)\n\n let viewEnd = Infinity as RelativeTime\n\n const longestInteractions = trackLongestInteractions(getViewInteractionCount)\n let interactionToNextPaint = -1 as Duration\n let interactionToNextPaintTargetSelector: string | undefined\n let interactionToNextPaintStartTime: Duration | undefined\n\n const { unsubscribe: stop } = lifeCycle.subscribe(LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED, (entries) => {\n for (const entry of entries) {\n if (\n (entry.entryType === RumPerformanceEntryType.EVENT ||\n entry.entryType === RumPerformanceEntryType.FIRST_INPUT) &&\n entry.interactionId &&\n // Check the entry start time is inside the view bounds because some view interactions can be reported after the view end (if long duration).\n entry.startTime >= viewStart &&\n entry.startTime <= viewEnd\n ) {\n longestInteractions.process(entry)\n }\n }\n\n const newInteraction = longestInteractions.estimateP98Interaction()\n if (newInteraction && newInteraction.duration !== interactionToNextPaint) {\n interactionToNextPaint = newInteraction.duration\n interactionToNextPaintStartTime = elapsed(viewStart, newInteraction.startTime)\n\n if (newInteraction.target && isElementNode(newInteraction.target)) {\n interactionToNextPaintTargetSelector = getSelectorFromElement(\n newInteraction.target,\n configuration.actionNameAttribute\n )\n } else {\n interactionToNextPaintTargetSelector = undefined\n }\n }\n })\n\n return {\n getInteractionToNextPaint: (): InteractionToNextPaint | undefined => {\n // If no INP duration where captured because of the performanceObserver 40ms threshold\n // but the view interaction count > 0 then report 0\n if (interactionToNextPaint >= 0) {\n return {\n value: Math.min(interactionToNextPaint, MAX_INP_VALUE) as Duration,\n targetSelector: interactionToNextPaintTargetSelector,\n time: interactionToNextPaintStartTime,\n }\n } else if (getViewInteractionCount()) {\n return {\n value: 0 as Duration,\n }\n }\n },\n setViewEnd: (viewEndTime: RelativeTime) => {\n viewEnd = viewEndTime\n stopViewInteractionCount()\n },\n stop,\n }\n}\n\nfunction trackLongestInteractions(getViewInteractionCount: () => number) {\n const longestInteractions: Array<RumPerformanceEventTiming | RumFirstInputTiming> = []\n\n function sortAndTrimLongestInteractions() {\n longestInteractions.sort((a, b) => b.duration - a.duration).splice(MAX_INTERACTION_ENTRIES)\n }\n\n return {\n /**\n * Process the performance entry:\n * - if its duration is long enough, add the performance entry to the list of worst interactions\n * - if an entry with the same interaction id exists and its duration is lower than the new one, then replace it in the list of worst interactions\n */\n process(entry: RumPerformanceEventTiming | RumFirstInputTiming) {\n const interactionIndex = longestInteractions.findIndex(\n (interaction) => entry.interactionId === interaction.interactionId\n )\n\n const minLongestInteraction = longestInteractions[longestInteractions.length - 1]\n\n if (interactionIndex !== -1) {\n if (entry.duration > longestInteractions[interactionIndex].duration) {\n longestInteractions[interactionIndex] = entry\n sortAndTrimLongestInteractions()\n }\n } else if (\n longestInteractions.length < MAX_INTERACTION_ENTRIES ||\n entry.duration > minLongestInteraction.duration\n ) {\n longestInteractions.push(entry)\n sortAndTrimLongestInteractions()\n }\n },\n /**\n * Compute the p98 longest interaction.\n * For better performance the computation is based on 10 longest interactions and the interaction count of the current view.\n */\n estimateP98Interaction(): RumPerformanceEventTiming | RumFirstInputTiming | undefined {\n const interactionIndex = Math.min(longestInteractions.length - 1, Math.floor(getViewInteractionCount() / 50))\n return longestInteractions[interactionIndex]\n },\n }\n}\n\nexport function trackViewInteractionCount(viewLoadingType: ViewLoadingType) {\n initInteractionCountPolyfill()\n const previousInteractionCount = viewLoadingType === ViewLoadingType.INITIAL_LOAD ? 0 : getInteractionCount()\n let state: { stopped: false } | { stopped: true; interactionCount: number } = { stopped: false }\n\n function computeViewInteractionCount() {\n return getInteractionCount() - previousInteractionCount\n }\n\n return {\n getViewInteractionCount: () => {\n if (state.stopped) {\n return state.interactionCount\n }\n\n return computeViewInteractionCount()\n },\n stopViewInteractionCount: () => {\n state = { stopped: true, interactionCount: computeViewInteractionCount() }\n },\n }\n}\n\nexport function isInteractionToNextPaintSupported() {\n return (\n supportPerformanceTimingEvent(RumPerformanceEntryType.EVENT) &&\n window.PerformanceEventTiming &&\n 'interactionId' in PerformanceEventTiming.prototype\n )\n}\n","export function getScrollX() {\n let scrollX\n const visual = window.visualViewport\n if (visual) {\n scrollX = visual.pageLeft - visual.offsetLeft\n } else if (window.scrollX !== undefined) {\n scrollX = window.scrollX\n } else {\n scrollX = window.pageXOffset || 0\n }\n return Math.round(scrollX)\n}\n\nexport function getScrollY() {\n let scrollY\n const visual = window.visualViewport\n if (visual) {\n scrollY = visual.pageTop - visual.offsetTop\n } else if (window.scrollY !== undefined) {\n scrollY = window.scrollY\n } else {\n scrollY = window.pageYOffset || 0\n }\n return Math.round(scrollY)\n}\n","import type { ClocksState, Duration } from '@datadog/browser-core'\nimport {\n Observable,\n ONE_SECOND,\n elapsed,\n relativeNow,\n throttle,\n addEventListener,\n DOM_EVENT,\n monitor,\n} from '@datadog/browser-core'\nimport type { RumConfiguration } from '../../configuration'\nimport { getScrollY } from '../../../browser/scroll'\nimport { getViewportDimension } from '../../../browser/viewportObservable'\n\n/** Arbitrary scroll throttle duration */\nexport const THROTTLE_SCROLL_DURATION = ONE_SECOND\n\nexport interface ScrollMetrics {\n maxDepth: number\n maxScrollHeight: number\n maxDepthScrollTop: number\n maxScrollHeightTime: Duration\n}\n\nexport function trackScrollMetrics(\n configuration: RumConfiguration,\n viewStart: ClocksState,\n callback: (scrollMetrics: ScrollMetrics) => void,\n scrollValues = createScrollValuesObservable(configuration)\n) {\n let maxScrollDepth = 0\n let maxScrollHeight = 0\n let maxScrollHeightTime = 0 as Duration\n\n const subscription = scrollValues.subscribe(({ scrollDepth, scrollTop, scrollHeight }) => {\n let shouldUpdate = false\n\n if (scrollDepth > maxScrollDepth) {\n maxScrollDepth = scrollDepth\n shouldUpdate = true\n }\n\n if (scrollHeight > maxScrollHeight) {\n maxScrollHeight = scrollHeight\n const now = relativeNow()\n maxScrollHeightTime = elapsed(viewStart.relative, now)\n shouldUpdate = true\n }\n\n if (shouldUpdate) {\n callback({\n maxDepth: Math.min(maxScrollDepth, maxScrollHeight),\n maxDepthScrollTop: scrollTop,\n maxScrollHeight,\n maxScrollHeightTime,\n })\n }\n })\n\n return {\n stop: () => subscription.unsubscribe(),\n }\n}\n\nexport interface ScrollValues {\n scrollDepth: number\n scrollTop: number\n scrollHeight: number\n}\n\nexport function computeScrollValues() {\n const scrollTop = getScrollY()\n\n const { height } = getViewportDimension()\n\n const scrollHeight = Math.round((document.scrollingElement || document.documentElement).scrollHeight)\n\n const scrollDepth = Math.round(height + scrollTop)\n\n return {\n scrollHeight,\n scrollDepth,\n scrollTop,\n }\n}\n\nexport function createScrollValuesObservable(\n configuration: RumConfiguration,\n throttleDuration = THROTTLE_SCROLL_DURATION\n): Observable<ScrollValues> {\n return new Observable<ScrollValues>((observable) => {\n function notify() {\n observable.notify(computeScrollValues())\n }\n\n if (window.ResizeObserver) {\n const throttledNotify = throttle(notify, throttleDuration, {\n leading: false,\n trailing: true,\n })\n\n const observerTarget = document.scrollingElement || document.documentElement\n const resizeObserver = new ResizeObserver(monitor(throttledNotify.throttled))\n resizeObserver.observe(observerTarget)\n const eventListener = addEventListener(configuration, window, DOM_EVENT.SCROLL, throttledNotify.throttled, {\n passive: true,\n })\n\n return () => {\n throttledNotify.cancel()\n resizeObserver.unobserve(observerTarget)\n eventListener.stop()\n }\n }\n })\n}\n","import type { ClocksState, Duration, Observable } from '@datadog/browser-core'\nimport type { ViewLoadingType } from '../../../rawRumEvent.types'\nimport type { RumConfiguration } from '../../configuration'\nimport type { LifeCycle } from '../../lifeCycle'\nimport type { CumulativeLayoutShift } from './trackCumulativeLayoutShift'\nimport { trackCumulativeLayoutShift } from './trackCumulativeLayoutShift'\nimport type { InteractionToNextPaint } from './trackInteractionToNextPaint'\nimport { trackInteractionToNextPaint } from './trackInteractionToNextPaint'\nimport { trackLoadingTime } from './trackLoadingTime'\nimport type { ScrollMetrics } from './trackScrollMetrics'\nimport { trackScrollMetrics } from './trackScrollMetrics'\n\nexport interface CommonViewMetrics {\n loadingTime?: Duration\n cumulativeLayoutShift?: CumulativeLayoutShift\n interactionToNextPaint?: InteractionToNextPaint\n scroll?: ScrollMetrics\n}\n\nexport function trackCommonViewMetrics(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable<void>,\n configuration: RumConfiguration,\n scheduleViewUpdate: () => void,\n loadingType: ViewLoadingType,\n viewStart: ClocksState\n) {\n const commonViewMetrics: CommonViewMetrics = {}\n\n const { stop: stopLoadingTimeTracking, setLoadEvent } = trackLoadingTime(\n lifeCycle,\n domMutationObservable,\n configuration,\n loadingType,\n viewStart,\n (newLoadingTime) => {\n commonViewMetrics.loadingTime = newLoadingTime\n scheduleViewUpdate()\n }\n )\n\n const { stop: stopScrollMetricsTracking } = trackScrollMetrics(configuration, viewStart, (newScrollMetrics) => {\n commonViewMetrics.scroll = newScrollMetrics\n })\n\n const { stop: stopCLSTracking } = trackCumulativeLayoutShift(\n configuration,\n lifeCycle,\n viewStart.relative,\n (cumulativeLayoutShift) => {\n commonViewMetrics.cumulativeLayoutShift = cumulativeLayoutShift\n scheduleViewUpdate()\n }\n )\n\n const {\n stop: stopINPTracking,\n getInteractionToNextPaint,\n setViewEnd,\n } = trackInteractionToNextPaint(configuration, viewStart.relative, loadingType, lifeCycle)\n\n return {\n stop: () => {\n stopLoadingTimeTracking()\n stopCLSTracking()\n stopScrollMetricsTracking()\n },\n stopINPTracking,\n setLoadEvent,\n setViewEnd,\n getCommonViewMetrics: () => {\n commonViewMetrics.interactionToNextPaint = getInteractionToNextPaint()\n return commonViewMetrics\n },\n }\n}\n","import type { ClocksState, Duration, Observable } from '@datadog/browser-core'\nimport { elapsed } from '@datadog/browser-core'\nimport { waitPageActivityEnd } from '../../waitPageActivityEnd'\nimport type { RumConfiguration } from '../../configuration'\nimport type { LifeCycle } from '../../lifeCycle'\nimport { ViewLoadingType } from '../../../rawRumEvent.types'\n\nexport function trackLoadingTime(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable<void>,\n configuration: RumConfiguration,\n loadType: ViewLoadingType,\n viewStart: ClocksState,\n callback: (loadingTime: Duration) => void\n) {\n let isWaitingForLoadEvent = loadType === ViewLoadingType.INITIAL_LOAD\n let isWaitingForActivityLoadingTime = true\n const loadingTimeCandidates: Duration[] = []\n\n function invokeCallbackIfAllCandidatesAreReceived() {\n if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {\n callback(Math.max(...loadingTimeCandidates) as Duration)\n }\n }\n\n const { stop } = waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, (event) => {\n if (isWaitingForActivityLoadingTime) {\n isWaitingForActivityLoadingTime = false\n if (event.hadActivity) {\n loadingTimeCandidates.push(elapsed(viewStart.timeStamp, event.end))\n }\n invokeCallbackIfAllCandidatesAreReceived()\n }\n })\n\n return {\n stop,\n setLoadEvent: (loadEvent: Duration) => {\n if (isWaitingForLoadEvent) {\n isWaitingForLoadEvent = false\n loadingTimeCandidates.push(loadEvent)\n invokeCallbackIfAllCandidatesAreReceived()\n }\n },\n }\n}\n","import type { Duration, ClocksState, TimeStamp, Subscription, RelativeTime } from '@datadog/browser-core'\nimport {\n noop,\n PageExitReason,\n shallowClone,\n elapsed,\n generateUUID,\n ONE_MINUTE,\n throttle,\n clocksNow,\n clocksOrigin,\n timeStampNow,\n display,\n looksLikeRelativeTime,\n setInterval,\n clearInterval,\n setTimeout,\n Observable,\n isExperimentalFeatureEnabled,\n ExperimentalFeature,\n} from '@datadog/browser-core'\nimport type { ViewCustomTimings } from '../../rawRumEvent.types'\nimport { ViewLoadingType } from '../../rawRumEvent.types'\nimport type { LifeCycle } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport type { EventCounts } from '../trackEventCounts'\nimport type { LocationChange } from '../../browser/locationChangeObservable'\nimport type { RumConfiguration, RumInitConfiguration } from '../configuration'\nimport { trackViewEventCounts } from './trackViewEventCounts'\nimport { trackInitialViewMetrics } from './viewMetrics/trackInitialViewMetrics'\nimport type { InitialViewMetrics } from './viewMetrics/trackInitialViewMetrics'\nimport type { CommonViewMetrics } from './viewMetrics/trackCommonViewMetrics'\nimport { trackCommonViewMetrics } from './viewMetrics/trackCommonViewMetrics'\n\nexport interface ViewEvent {\n id: string\n name?: string\n service?: string\n version?: string\n location: Readonly<Location>\n commonViewMetrics: CommonViewMetrics\n initialViewMetrics: InitialViewMetrics\n customTimings: ViewCustomTimings\n eventCounts: EventCounts\n documentVersion: number\n startClocks: ClocksState\n duration: Duration\n isActive: boolean\n sessionIsActive: boolean\n loadingType: ViewLoadingType\n}\n\nexport interface ViewCreatedEvent {\n id: string\n name?: string\n service?: string\n version?: string\n startClocks: ClocksState\n}\n\nexport interface ViewEndedEvent {\n endClocks: ClocksState\n}\n\nexport const THROTTLE_VIEW_UPDATE_PERIOD = 3000\nexport const SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE\n\n// Some events or metrics can be captured after the end of the view. To avoid missing those;\n// an arbitrary delay is added for stopping their tracking after the view ends.\n//\n// Ideally, we would not stop and keep tracking events or metrics until the end of the session.\n// But this might have a small performance impact if there are many many views.\n// So let's have a fairly short delay improving the situation in most cases and avoid impacting performances too much.\nexport const KEEP_TRACKING_AFTER_VIEW_DELAY = 5 * ONE_MINUTE\n\nexport interface ViewOptions {\n name?: string\n service?: RumInitConfiguration['service']\n version?: RumInitConfiguration['version']\n}\n\nexport function trackViews(\n location: Location,\n lifeCycle: LifeCycle,\n domMutationObservable: Observable<void>,\n configuration: RumConfiguration,\n locationChangeObservable: Observable<LocationChange>,\n areViewsTrackedAutomatically: boolean,\n initialViewOptions?: ViewOptions\n) {\n const activeViews: Set<ReturnType<typeof newView>> = new Set()\n let currentView = startNewView(ViewLoadingType.INITIAL_LOAD, clocksOrigin(), initialViewOptions)\n\n startViewLifeCycle()\n\n let locationChangeSubscription: Subscription\n if (areViewsTrackedAutomatically) {\n locationChangeSubscription = renewViewOnLocationChange(locationChangeObservable)\n }\n\n function startNewView(loadingType: ViewLoadingType, startClocks?: ClocksState, viewOptions?: ViewOptions) {\n const newlyCreatedView = newView(\n lifeCycle,\n domMutationObservable,\n configuration,\n location,\n loadingType,\n startClocks,\n viewOptions\n )\n activeViews.add(newlyCreatedView)\n newlyCreatedView.stopObservable.subscribe(() => {\n activeViews.delete(newlyCreatedView)\n })\n return newlyCreatedView\n }\n\n function startViewLifeCycle() {\n lifeCycle.subscribe(LifeCycleEventType.SESSION_RENEWED, () => {\n // Renew view on session renewal\n currentView = startNewView(ViewLoadingType.ROUTE_CHANGE, undefined, {\n name: currentView.name,\n service: currentView.service,\n version: currentView.version,\n })\n })\n\n lifeCycle.subscribe(LifeCycleEventType.SESSION_EXPIRED, () => {\n currentView.end({ sessionIsActive: false })\n })\n\n // End the current view on page unload\n lifeCycle.subscribe(LifeCycleEventType.PAGE_EXITED, (pageExitEvent) => {\n if (pageExitEvent.reason === PageExitReason.UNLOADING) {\n currentView.end()\n }\n })\n }\n\n function renewViewOnLocationChange(locationChangeObservable: Observable<LocationChange>) {\n return locationChangeObservable.subscribe(({ oldLocation, newLocation }) => {\n if (areDifferentLocation(oldLocation, newLocation)) {\n currentView.end()\n currentView = startNewView(ViewLoadingType.ROUTE_CHANGE)\n }\n })\n }\n\n return {\n addTiming: (name: string, time: RelativeTime | TimeStamp = timeStampNow()) => {\n currentView.addTiming(name, time)\n },\n startView: (options?: ViewOptions, startClocks?: ClocksState) => {\n currentView.end({ endClocks: startClocks })\n currentView = startNewView(ViewLoadingType.ROUTE_CHANGE, startClocks, options)\n },\n updateViewName: (name: string) => {\n currentView.updateViewName(name)\n },\n\n stop: () => {\n if (locationChangeSubscription) {\n locationChangeSubscription.unsubscribe()\n }\n currentView.end()\n activeViews.forEach((view) => view.stop())\n },\n }\n}\n\nfunction newView(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable<void>,\n configuration: RumConfiguration,\n initialLocation: Location,\n loadingType: ViewLoadingType,\n startClocks: ClocksState = clocksNow(),\n viewOptions?: ViewOptions\n) {\n // Setup initial values\n const id = generateUUID()\n const stopObservable = new Observable<void>()\n const customTimings: ViewCustomTimings = {}\n let documentVersion = 0\n let endClocks: ClocksState | undefined\n const location = shallowClone(initialLocation)\n\n let sessionIsActive = true\n let name: string | undefined\n let service: string | undefined\n let version: string | undefined\n if (viewOptions) {\n name = viewOptions.name\n service = viewOptions.service || undefined\n version = viewOptions.version || undefined\n }\n\n const viewCreatedEvent = {\n id,\n name,\n startClocks,\n service,\n version,\n }\n lifeCycle.notify(LifeCycleEventType.BEFORE_VIEW_CREATED, viewCreatedEvent)\n lifeCycle.notify(LifeCycleEventType.VIEW_CREATED, viewCreatedEvent)\n\n // Update the view every time the measures are changing\n const { throttled: scheduleViewUpdate, cancel: cancelScheduleViewUpdate } = throttle(\n triggerViewUpdate,\n THROTTLE_VIEW_UPDATE_PERIOD,\n {\n leading: false,\n }\n )\n\n const {\n setLoadEvent,\n setViewEnd,\n stop: stopCommonViewMetricsTracking,\n stopINPTracking,\n getCommonViewMetrics,\n } = trackCommonViewMetrics(\n lifeCycle,\n domMutationObservable,\n configuration,\n scheduleViewUpdate,\n loadingType,\n startClocks\n )\n\n const { stop: stopInitialViewMetricsTracking, initialViewMetrics } =\n loadingType === ViewLoadingType.INITIAL_LOAD\n ? trackInitialViewMetrics(lifeCycle, configuration, setLoadEvent, scheduleViewUpdate)\n : { stop: noop, initialViewMetrics: {} as InitialViewMetrics }\n\n const { stop: stopEventCountsTracking, eventCounts } = trackViewEventCounts(lifeCycle, id, scheduleViewUpdate)\n\n // Session keep alive\n const keepAliveIntervalId = setInterval(triggerViewUpdate, SESSION_KEEP_ALIVE_INTERVAL)\n\n // Initial view update\n triggerViewUpdate()\n\n function triggerViewUpdate() {\n cancelScheduleViewUpdate()\n documentVersion += 1\n const currentEnd = endClocks === undefined ? timeStampNow() : endClocks.timeStamp\n\n lifeCycle.notify(LifeCycleEventType.VIEW_UPDATED, {\n customTimings,\n documentVersion,\n id,\n name,\n service,\n version,\n loadingType,\n location,\n startClocks,\n commonViewMetrics: getCommonViewMetrics(),\n initialViewMetrics,\n duration: elapsed(startClocks.timeStamp, currentEnd),\n isActive: endClocks === undefined,\n sessionIsActive,\n eventCounts,\n })\n }\n\n return {\n get name() {\n return name\n },\n service,\n version,\n stopObservable,\n end(options: { endClocks?: ClocksState; sessionIsActive?: boolean } = {}) {\n if (endClocks) {\n // view already ended\n return\n }\n endClocks = options.endClocks ?? clocksNow()\n sessionIsActive = options.sessionIsActive ?? true\n\n lifeCycle.notify(LifeCycleEventType.VIEW_ENDED, { endClocks })\n lifeCycle.notify(LifeCycleEventType.AFTER_VIEW_ENDED, { endClocks })\n clearInterval(keepAliveIntervalId)\n setViewEnd(endClocks.relative)\n stopCommonViewMetricsTracking()\n triggerViewUpdate()\n setTimeout(() => {\n this.stop()\n }, KEEP_TRACKING_AFTER_VIEW_DELAY)\n },\n stop() {\n stopInitialViewMetricsTracking()\n stopEventCountsTracking()\n stopINPTracking()\n stopObservable.notify()\n },\n addTiming(name: string, time: RelativeTime | TimeStamp) {\n if (endClocks) {\n return\n }\n const relativeTime = looksLikeRelativeTime(time) ? time : elapsed(startClocks.timeStamp, time)\n customTimings[sanitizeTiming(name)] = relativeTime\n scheduleViewUpdate()\n },\n updateViewName(updatedName: string) {\n if (!isExperimentalFeatureEnabled(ExperimentalFeature.UPDATE_VIEW_NAME)) {\n return\n }\n name = updatedName\n triggerViewUpdate()\n },\n }\n}\n\n/**\n * Timing name is used as facet path that must contain only letters, digits, or the characters - _ . @ $\n */\nfunction sanitizeTiming(name: string) {\n const sanitized = name.replace(/[^a-zA-Z0-9-_.@$]/g, '_')\n if (sanitized !== name) {\n display.warn(`Invalid timing name: ${name}, sanitized to: ${sanitized}`)\n }\n return sanitized\n}\n\nfunction areDifferentLocation(currentLocation: Location, otherLocation: Location) {\n return (\n currentLocation.pathname !== otherLocation.pathname ||\n (!isHashAnAnchor(otherLocation.hash) &&\n getPathFromHash(otherLocation.hash) !== getPathFromHash(currentLocation.hash))\n )\n}\n\nfunction isHashAnAnchor(hash: string) {\n const correspondingId = hash.substring(1)\n // check if the correspondingId is empty because on Firefox an empty string passed to getElementById() prints a consol warning\n return correspondingId !== '' && !!document.getElementById(correspondingId)\n}\n\nfunction getPathFromHash(hash: string) {\n const index = hash.indexOf('?')\n return index < 0 ? hash : hash.slice(0, index)\n}\n","import type { LifeCycle } from '../lifeCycle'\nimport { trackEventCounts } from '../trackEventCounts'\n\nexport function trackViewEventCounts(lifeCycle: LifeCycle, viewId: string, onChange: () => void) {\n const { stop, eventCounts } = trackEventCounts({\n lifeCycle,\n isChildEvent: (event) => event.view.id === viewId,\n onChange,\n })\n\n return {\n stop,\n eventCounts,\n }\n}\n","import type { Duration, ServerDuration, Observable } from '@datadog/browser-core'\nimport { isEmptyObject, mapValues, toServerDuration } from '@datadog/browser-core'\nimport { discardNegativeDuration } from '../discardNegativeDuration'\nimport type { RecorderApi } from '../../boot/rumPublicApi'\nimport type { RawRumViewEvent } from '../../rawRumEvent.types'\nimport { RumEventType } from '../../rawRumEvent.types'\nimport type { LifeCycle, RawRumEventCollectedData } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport type { LocationChange } from '../../browser/locationChangeObservable'\nimport type { RumConfiguration } from '../configuration'\nimport type { FeatureFlagContexts } from '../contexts/featureFlagContext'\nimport type { PageStateHistory } from '../contexts/pageStateHistory'\nimport type { ViewEvent, ViewOptions } from './trackViews'\nimport { trackViews } from './trackViews'\n\nexport function startViewCollection(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n location: Location,\n domMutationObservable: Observable<void>,\n locationChangeObservable: Observable<LocationChange>,\n featureFlagContexts: FeatureFlagContexts,\n pageStateHistory: PageStateHistory,\n recorderApi: RecorderApi,\n initialViewOptions?: ViewOptions\n) {\n lifeCycle.subscribe(LifeCycleEventType.VIEW_UPDATED, (view) =>\n lifeCycle.notify(\n LifeCycleEventType.RAW_RUM_EVENT_COLLECTED,\n processViewUpdate(view, configuration, featureFlagContexts, recorderApi, pageStateHistory)\n )\n )\n return trackViews(\n location,\n lifeCycle,\n domMutationObservable,\n configuration,\n locationChangeObservable,\n !configuration.trackViewsManually,\n initialViewOptions\n )\n}\n\nfunction processViewUpdate(\n view: ViewEvent,\n configuration: RumConfiguration,\n featureFlagContexts: FeatureFlagContexts,\n recorderApi: RecorderApi,\n pageStateHistory: PageStateHistory\n): RawRumEventCollectedData<RawRumViewEvent> {\n const replayStats = recorderApi.getReplayStats(view.id)\n const featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(view.startClocks.relative)\n const pageStates = pageStateHistory.findAll(view.startClocks.relative, view.duration)\n const viewEvent: RawRumViewEvent = {\n _dd: {\n document_version: view.documentVersion,\n replay_stats: replayStats,\n page_states: pageStates,\n configuration: {\n start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n },\n },\n date: view.startClocks.timeStamp,\n type: RumEventType.VIEW,\n view: {\n action: {\n count: view.eventCounts.actionCount,\n },\n frustration: {\n count: view.eventCounts.frustrationCount,\n },\n cumulative_layout_shift: view.commonViewMetrics.cumulativeLayoutShift?.value,\n cumulative_layout_shift_time: toServerDuration(view.commonViewMetrics.cumulativeLayoutShift?.time),\n cumulative_layout_shift_target_selector: view.commonViewMetrics.cumulativeLayoutShift?.targetSelector,\n first_byte: toServerDuration(view.initialViewMetrics.navigationTimings?.firstByte),\n dom_complete: toServerDuration(view.initialViewMetrics.navigationTimings?.domComplete),\n dom_content_loaded: toServerDuration(view.initialViewMetrics.navigationTimings?.domContentLoaded),\n dom_interactive: toServerDuration(view.initialViewMetrics.navigationTimings?.domInteractive),\n error: {\n count: view.eventCounts.errorCount,\n },\n first_contentful_paint: toServerDuration(view.initialViewMetrics.firstContentfulPaint),\n first_input_delay: toServerDuration(view.initialViewMetrics.firstInput?.delay),\n first_input_time: toServerDuration(view.initialViewMetrics.firstInput?.time),\n first_input_target_selector: view.initialViewMetrics.firstInput?.targetSelector,\n interaction_to_next_paint: toServerDuration(view.commonViewMetrics.interactionToNextPaint?.value),\n interaction_to_next_paint_time: toServerDuration(view.commonViewMetrics.interactionToNextPaint?.time),\n interaction_to_next_paint_target_selector: view.commonViewMetrics.interactionToNextPaint?.targetSelector,\n is_active: view.isActive,\n name: view.name,\n largest_contentful_paint: toServerDuration(view.initialViewMetrics.largestContentfulPaint?.value),\n largest_contentful_paint_target_selector: view.initialViewMetrics.largestContentfulPaint?.targetSelector,\n load_event: toServerDuration(view.initialViewMetrics.navigationTimings?.loadEvent),\n loading_time: discardNegativeDuration(toServerDuration(view.commonViewMetrics.loadingTime)),\n loading_type: view.loadingType,\n long_task: {\n count: view.eventCounts.longTaskCount,\n },\n resource: {\n count: view.eventCounts.resourceCount,\n },\n time_spent: toServerDuration(view.duration),\n },\n feature_flags: featureFlagContext && !isEmptyObject(featureFlagContext) ? featureFlagContext : undefined,\n display: view.commonViewMetrics.scroll\n ? {\n scroll: {\n max_depth: view.commonViewMetrics.scroll.maxDepth,\n max_depth_scroll_top: view.commonViewMetrics.scroll.maxDepthScrollTop,\n max_scroll_height: view.commonViewMetrics.scroll.maxScrollHeight,\n max_scroll_height_time: toServerDuration(view.commonViewMetrics.scroll.maxScrollHeightTime),\n },\n }\n : undefined,\n session: {\n has_replay: replayStats ? true : undefined,\n is_active: view.sessionIsActive ? undefined : false,\n },\n privacy: {\n replay_level: configuration.defaultPrivacyLevel,\n },\n }\n if (!isEmptyObject(view.customTimings)) {\n viewEvent.view.custom_timings = mapValues(\n view.customTimings,\n toServerDuration as (duration: Duration) => ServerDuration\n )\n }\n return {\n rawRumEvent: viewEvent,\n startTime: view.startClocks.relative,\n domainContext: {\n location: view.location,\n },\n }\n}\n","import { Observable } from '../../tools/observable'\nimport type { Context } from '../../tools/serialisation/context'\nimport { createValueHistory } from '../../tools/valueHistory'\nimport type { RelativeTime } from '../../tools/utils/timeUtils'\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../../tools/utils/timeUtils'\nimport { DOM_EVENT, addEventListener, addEventListeners } from '../../browser/addEventListener'\nimport { clearInterval, setInterval } from '../../tools/timer'\nimport type { Configuration } from '../configuration'\nimport type { TrackingConsentState } from '../trackingConsent'\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants'\nimport { startSessionStore } from './sessionStore'\nimport type { SessionState } from './sessionState'\n\nexport interface SessionManager<TrackingType extends string> {\n findSession: (\n startTime?: RelativeTime,\n options?: { returnInactive: boolean }\n ) => SessionContext<TrackingType> | undefined\n renewObservable: Observable<void>\n expireObservable: Observable<void>\n sessionStateUpdateObservable: Observable<{ previousState: SessionState; newState: SessionState }>\n expire: () => void\n updateSessionState: (state: Partial<SessionState>) => void\n}\n\nexport interface SessionContext<TrackingType extends string> extends Context {\n id: string\n trackingType: TrackingType\n isReplayForced: boolean\n}\n\nexport const VISIBILITY_CHECK_DELAY = ONE_MINUTE\nconst SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY\nlet stopCallbacks: Array<() => void> = []\n\nexport function startSessionManager<TrackingType extends string>(\n configuration: Configuration,\n productKey: string,\n computeSessionState: (rawTrackingType?: string) => { trackingType: TrackingType; isTracked: boolean },\n trackingConsentState: TrackingConsentState\n): SessionManager<TrackingType> {\n const renewObservable = new Observable<void>()\n const expireObservable = new Observable<void>()\n\n // TODO - Improve configuration type and remove assertion\n const sessionStore = startSessionStore(configuration.sessionStoreStrategyType!, productKey, computeSessionState)\n stopCallbacks.push(() => sessionStore.stop())\n\n const sessionContextHistory = createValueHistory<SessionContext<TrackingType>>({\n expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY,\n })\n stopCallbacks.push(() => sessionContextHistory.stop())\n\n sessionStore.renewObservable.subscribe(() => {\n sessionContextHistory.add(buildSessionContext(), relativeNow())\n renewObservable.notify()\n })\n sessionStore.expireObservable.subscribe(() => {\n expireObservable.notify()\n sessionContextHistory.closeActive(relativeNow())\n })\n\n // We expand/renew session unconditionally as tracking consent is always granted when the session\n // manager is started.\n sessionStore.expandOrRenewSession()\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative)\n\n trackingConsentState.observable.subscribe(() => {\n if (trackingConsentState.isGranted()) {\n sessionStore.expandOrRenewSession()\n } else {\n sessionStore.expire()\n }\n })\n\n trackActivity(configuration, () => {\n if (trackingConsentState.isGranted()) {\n sessionStore.expandOrRenewSession()\n }\n })\n trackVisibility(configuration, () => sessionStore.expandSession())\n trackResume(configuration, () => sessionStore.restartSession())\n\n function buildSessionContext() {\n return {\n id: sessionStore.getSession().id!,\n trackingType: sessionStore.getSession()[productKey] as TrackingType,\n isReplayForced: !!sessionStore.getSession().forcedReplay,\n }\n }\n\n return {\n findSession: (startTime, options) => sessionContextHistory.find(startTime, options),\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,\n expire: sessionStore.expire,\n updateSessionState: sessionStore.updateSessionState,\n }\n}\n\nexport function stopSessionManager() {\n stopCallbacks.forEach((e) => e())\n stopCallbacks = []\n}\n\nfunction trackActivity(configuration: Configuration, expandOrRenewSession: () => void) {\n const { stop } = addEventListeners(\n configuration,\n window,\n [DOM_EVENT.CLICK, DOM_EVENT.TOUCH_START, DOM_EVENT.KEY_DOWN, DOM_EVENT.SCROLL],\n expandOrRenewSession,\n { capture: true, passive: true }\n )\n stopCallbacks.push(stop)\n}\n\nfunction trackVisibility(configuration: Configuration, expandSession: () => void) {\n const expandSessionWhenVisible = () => {\n if (document.visibilityState === 'visible') {\n expandSession()\n }\n }\n\n const { stop } = addEventListener(configuration, document, DOM_EVENT.VISIBILITY_CHANGE, expandSessionWhenVisible)\n stopCallbacks.push(stop)\n\n const visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY)\n stopCallbacks.push(() => {\n clearInterval(visibilityCheckInterval)\n })\n}\n\nfunction trackResume(configuration: Configuration, cb: () => void) {\n const { stop } = addEventListener(configuration, window, DOM_EVENT.RESUME, cb, { capture: true })\n stopCallbacks.push(stop)\n}\n","import type { RelativeTime, TrackingConsentState } from '@datadog/browser-core'\nimport {\n BridgeCapability,\n Observable,\n bridgeSupports,\n noop,\n performDraw,\n startSessionManager,\n} from '@datadog/browser-core'\nimport type { RumConfiguration } from './configuration'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\n\nexport const RUM_SESSION_KEY = 'rum'\n\nexport interface RumSessionManager {\n findTrackedSession: (startTime?: RelativeTime) => RumSession | undefined\n expire: () => void\n expireObservable: Observable<void>\n setForcedReplay: () => void\n}\n\nexport type RumSession = {\n id: string\n sessionReplay: SessionReplayState\n}\n\nexport const enum RumTrackingType {\n NOT_TRACKED = '0',\n TRACKED_WITH_SESSION_REPLAY = '1',\n TRACKED_WITHOUT_SESSION_REPLAY = '2',\n}\n\nexport const enum SessionReplayState {\n OFF,\n SAMPLED,\n FORCED,\n}\n\nexport function startRumSessionManager(\n configuration: RumConfiguration,\n lifeCycle: LifeCycle,\n trackingConsentState: TrackingConsentState\n): RumSessionManager {\n const sessionManager = startSessionManager(\n configuration,\n RUM_SESSION_KEY,\n (rawTrackingType) => computeSessionState(configuration, rawTrackingType),\n trackingConsentState\n )\n\n sessionManager.expireObservable.subscribe(() => {\n lifeCycle.notify(LifeCycleEventType.SESSION_EXPIRED)\n })\n\n sessionManager.renewObservable.subscribe(() => {\n lifeCycle.notify(LifeCycleEventType.SESSION_RENEWED)\n })\n\n sessionManager.sessionStateUpdateObservable.subscribe(({ previousState, newState }) => {\n if (!previousState.forcedReplay && newState.forcedReplay) {\n const sessionEntity = sessionManager.findSession()\n if (sessionEntity) {\n sessionEntity.isReplayForced = true\n }\n }\n })\n\n return {\n findTrackedSession: (startTime) => {\n const session = sessionManager.findSession(startTime)\n if (!session || !isTypeTracked(session.trackingType)) {\n return\n }\n return {\n id: session.id,\n sessionReplay:\n session.trackingType === RumTrackingType.TRACKED_WITH_SESSION_REPLAY\n ? SessionReplayState.SAMPLED\n : session.isReplayForced\n ? SessionReplayState.FORCED\n : SessionReplayState.OFF,\n }\n },\n expire: sessionManager.expire,\n expireObservable: sessionManager.expireObservable,\n setForcedReplay: () => sessionManager.updateSessionState({ forcedReplay: '1' }),\n }\n}\n\n/**\n * Start a tracked replay session stub\n */\nexport function startRumSessionManagerStub(): RumSessionManager {\n const session: RumSession = {\n id: '00000000-aaaa-0000-aaaa-000000000000',\n sessionReplay: bridgeSupports(BridgeCapability.RECORDS) ? SessionReplayState.SAMPLED : SessionReplayState.OFF,\n }\n return {\n findTrackedSession: () => session,\n expire: noop,\n expireObservable: new Observable(),\n setForcedReplay: noop,\n }\n}\n\nfunction computeSessionState(configuration: RumConfiguration, rawTrackingType?: string) {\n let trackingType: RumTrackingType\n if (hasValidRumSession(rawTrackingType)) {\n trackingType = rawTrackingType\n } else if (!performDraw(configuration.sessionSampleRate)) {\n trackingType = RumTrackingType.NOT_TRACKED\n } else if (!performDraw(configuration.sessionReplaySampleRate)) {\n trackingType = RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY\n } else {\n trackingType = RumTrackingType.TRACKED_WITH_SESSION_REPLAY\n }\n return {\n trackingType,\n isTracked: isTypeTracked(trackingType),\n }\n}\n\nfunction hasValidRumSession(trackingType?: string): trackingType is RumTrackingType {\n return (\n trackingType === RumTrackingType.NOT_TRACKED ||\n trackingType === RumTrackingType.TRACKED_WITH_SESSION_REPLAY ||\n trackingType === RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY\n )\n}\n\nfunction isTypeTracked(rumSessionType: RumTrackingType | undefined) {\n return (\n rumSessionType === RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY ||\n rumSessionType === RumTrackingType.TRACKED_WITH_SESSION_REPLAY\n )\n}\n","import { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../tools/display'\nimport type { Context } from '../tools/serialisation/context'\nimport { objectValues } from '../tools/utils/polyfills'\nimport { isPageExitReason } from '../browser/pageExitObservable'\nimport { jsonStringify } from '../tools/serialisation/jsonStringify'\nimport type { Encoder, EncoderResult } from '../tools/encoder'\nimport { computeBytesCount } from '../tools/utils/byteUtils'\nimport type { HttpRequest, Payload } from './httpRequest'\nimport type { FlushController, FlushEvent } from './flushController'\n\nexport interface Batch {\n flushController: FlushController\n add: (message: Context) => void\n upsert: (message: Context, key: string) => void\n stop: () => void\n}\n\nexport function createBatch({\n encoder,\n request,\n flushController,\n messageBytesLimit,\n}: {\n encoder: Encoder\n request: HttpRequest\n flushController: FlushController\n messageBytesLimit: number\n}): Batch {\n let upsertBuffer: { [key: string]: string } = {}\n const flushSubscription = flushController.flushObservable.subscribe((event) => flush(event))\n\n function push(serializedMessage: string, estimatedMessageBytesCount: number, key?: string) {\n flushController.notifyBeforeAddMessage(estimatedMessageBytesCount)\n\n if (key !== undefined) {\n upsertBuffer[key] = serializedMessage\n flushController.notifyAfterAddMessage()\n } else {\n encoder.write(encoder.isEmpty ? serializedMessage : `\\n${serializedMessage}`, (realMessageBytesCount) => {\n flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount)\n })\n }\n }\n\n function hasMessageFor(key?: string): key is string {\n return key !== undefined && upsertBuffer[key] !== undefined\n }\n\n function remove(key: string) {\n const removedMessage = upsertBuffer[key]\n delete upsertBuffer[key]\n const messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage)\n flushController.notifyAfterRemoveMessage(messageBytesCount)\n }\n\n function addOrUpdate(message: Context, key?: string) {\n const serializedMessage = jsonStringify(message)!\n\n const estimatedMessageBytesCount = encoder.estimateEncodedBytesCount(serializedMessage)\n\n if (estimatedMessageBytesCount >= messageBytesLimit) {\n display.warn(\n `Discarded a message whose size was bigger than the maximum allowed size ${messageBytesLimit}KB. ${MORE_DETAILS} ${DOCS_TROUBLESHOOTING}/#technical-limitations`\n )\n return\n }\n\n if (hasMessageFor(key)) {\n remove(key)\n }\n\n push(serializedMessage, estimatedMessageBytesCount, key)\n }\n\n function flush(event: FlushEvent) {\n const upsertMessages = objectValues(upsertBuffer).join('\\n')\n upsertBuffer = {}\n\n const isPageExit = isPageExitReason(event.reason)\n const send = isPageExit ? request.sendOnExit : request.send\n\n if (\n isPageExit &&\n // Note: checking that the encoder is async is not strictly needed, but it's an optimization:\n // if the encoder is async we need to send two requests in some cases (one for encoded data\n // and the other for non-encoded data). But if it's not async, we don't have to worry about\n // it and always send a single request.\n encoder.isAsync\n ) {\n const encoderResult = encoder.finishSync()\n\n // Send encoded messages\n if (encoderResult.outputBytesCount) {\n send(formatPayloadFromEncoder(encoderResult))\n }\n\n // Send messages that are not yet encoded at this point\n const pendingMessages = [encoderResult.pendingData, upsertMessages].filter(Boolean).join('\\n')\n if (pendingMessages) {\n send({\n data: pendingMessages,\n bytesCount: computeBytesCount(pendingMessages),\n })\n }\n } else {\n if (upsertMessages) {\n encoder.write(encoder.isEmpty ? upsertMessages : `\\n${upsertMessages}`)\n }\n encoder.finish((encoderResult) => {\n send(formatPayloadFromEncoder(encoderResult))\n })\n }\n }\n\n return {\n flushController,\n add: addOrUpdate,\n upsert: addOrUpdate,\n stop: flushSubscription.unsubscribe,\n }\n}\n\nfunction formatPayloadFromEncoder(encoderResult: EncoderResult): Payload {\n let data: string | Blob\n if (typeof encoderResult.output === 'string') {\n data = encoderResult.output\n } else {\n data = new Blob([encoderResult.output], {\n // This will set the 'Content-Type: text/plain' header. Reasoning:\n // * The intake rejects the request if there is no content type.\n // * The browser will issue CORS preflight requests if we set it to 'application/json', which\n // could induce higher intake load (and maybe has other impacts).\n // * Also it's not quite JSON, since we are concatenating multiple JSON objects separated by\n // new lines.\n type: 'text/plain',\n })\n }\n\n return {\n data,\n bytesCount: encoderResult.outputBytesCount,\n encoding: encoderResult.encoding,\n }\n}\n","import type { TrackType } from '../domain/configuration'\nimport { setTimeout } from '../tools/timer'\nimport { clocksNow, ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils'\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils'\nimport { isServerError } from '../tools/utils/responseUtils'\nimport type { RawError } from '../domain/error/error.types'\nimport { ErrorSource } from '../domain/error/error.types'\nimport type { Payload, HttpResponse } from './httpRequest'\n\nexport const MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE\nexport const MAX_ONGOING_REQUESTS = 32\nexport const MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE\nexport const MAX_BACKOFF_TIME = ONE_MINUTE\nexport const INITIAL_BACKOFF_TIME = ONE_SECOND\n\nconst enum TransportStatus {\n UP,\n FAILURE_DETECTED,\n DOWN,\n}\n\nconst enum RetryReason {\n AFTER_SUCCESS,\n AFTER_RESUME,\n}\n\nexport interface RetryState {\n transportStatus: TransportStatus\n currentBackoffTime: number\n bandwidthMonitor: ReturnType<typeof newBandwidthMonitor>\n queuedPayloads: ReturnType<typeof newPayloadQueue>\n queueFullReported: boolean\n}\n\ntype SendStrategy = (payload: Payload, onResponse: (r: HttpResponse) => void) => void\n\nexport function sendWithRetryStrategy(\n payload: Payload,\n state: RetryState,\n sendStrategy: SendStrategy,\n trackType: TrackType,\n reportError: (error: RawError) => void\n) {\n if (\n state.transportStatus === TransportStatus.UP &&\n state.queuedPayloads.size() === 0 &&\n state.bandwidthMonitor.canHandle(payload)\n ) {\n send(payload, state, sendStrategy, {\n onSuccess: () => retryQueuedPayloads(RetryReason.AFTER_SUCCESS, state, sendStrategy, trackType, reportError),\n onFailure: () => {\n state.queuedPayloads.enqueue(payload)\n scheduleRetry(state, sendStrategy, trackType, reportError)\n },\n })\n } else {\n state.queuedPayloads.enqueue(payload)\n }\n}\n\nfunction scheduleRetry(\n state: RetryState,\n sendStrategy: SendStrategy,\n trackType: TrackType,\n reportError: (error: RawError) => void\n) {\n if (state.transportStatus !== TransportStatus.DOWN) {\n return\n }\n setTimeout(() => {\n const payload = state.queuedPayloads.first()\n send(payload, state, sendStrategy, {\n onSuccess: () => {\n state.queuedPayloads.dequeue()\n state.currentBackoffTime = INITIAL_BACKOFF_TIME\n retryQueuedPayloads(RetryReason.AFTER_RESUME, state, sendStrategy, trackType, reportError)\n },\n onFailure: () => {\n state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2)\n scheduleRetry(state, sendStrategy, trackType, reportError)\n },\n })\n }, state.currentBackoffTime)\n}\n\nfunction send(\n payload: Payload,\n state: RetryState,\n sendStrategy: SendStrategy,\n { onSuccess, onFailure }: { onSuccess: () => void; onFailure: () => void }\n) {\n state.bandwidthMonitor.add(payload)\n sendStrategy(payload, (response) => {\n state.bandwidthMonitor.remove(payload)\n if (!shouldRetryRequest(response)) {\n state.transportStatus = TransportStatus.UP\n onSuccess()\n } else {\n // do not consider transport down if another ongoing request could succeed\n state.transportStatus =\n state.bandwidthMonitor.ongoingRequestCount > 0 ? TransportStatus.FAILURE_DETECTED : TransportStatus.DOWN\n payload.retry = {\n count: payload.retry ? payload.retry.count + 1 : 1,\n lastFailureStatus: response.status,\n }\n onFailure()\n }\n })\n}\n\nfunction retryQueuedPayloads(\n reason: RetryReason,\n state: RetryState,\n sendStrategy: SendStrategy,\n trackType: TrackType,\n reportError: (error: RawError) => void\n) {\n if (reason === RetryReason.AFTER_SUCCESS && state.queuedPayloads.isFull() && !state.queueFullReported) {\n reportError({\n message: `Reached max ${trackType} events size queued for upload: ${MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE}MiB`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n })\n state.queueFullReported = true\n }\n const previousQueue = state.queuedPayloads\n state.queuedPayloads = newPayloadQueue()\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(previousQueue.dequeue()!, state, sendStrategy, trackType, reportError)\n }\n}\n\nfunction shouldRetryRequest(response: HttpResponse) {\n return (\n response.type !== 'opaque' &&\n ((response.status === 0 && !navigator.onLine) ||\n response.status === 408 ||\n response.status === 429 ||\n isServerError(response.status))\n )\n}\n\nexport function newRetryState(): RetryState {\n return {\n transportStatus: TransportStatus.UP,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false,\n }\n}\n\nfunction newPayloadQueue() {\n const queue: Payload[] = []\n return {\n bytesCount: 0,\n enqueue(payload: Payload) {\n if (this.isFull()) {\n return\n }\n queue.push(payload)\n this.bytesCount += payload.bytesCount\n },\n first() {\n return queue[0]\n },\n dequeue() {\n const payload = queue.shift()\n if (payload) {\n this.bytesCount -= payload.bytesCount\n }\n return payload\n },\n size() {\n return queue.length\n },\n isFull() {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT\n },\n }\n}\n\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle(payload: Payload) {\n return (\n this.ongoingRequestCount === 0 ||\n (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n this.ongoingRequestCount < MAX_ONGOING_REQUESTS)\n )\n },\n add(payload: Payload) {\n this.ongoingRequestCount += 1\n this.ongoingByteCount += payload.bytesCount\n },\n remove(payload: Payload) {\n this.ongoingRequestCount -= 1\n this.ongoingByteCount -= payload.bytesCount\n },\n }\n}\n","import type { EndpointBuilder, Configuration } from '../domain/configuration'\nimport { addTelemetryError } from '../domain/telemetry'\nimport type { Context } from '../tools/serialisation/context'\nimport { monitor } from '../tools/monitor'\nimport { addEventListener } from '../browser/addEventListener'\nimport type { RawError } from '../domain/error/error.types'\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'\n\n/**\n * Use POST request without content type to:\n * - avoid CORS preflight requests\n * - allow usage of sendBeacon\n *\n * multiple elements are sent separated by \\n in order\n * to be parsed correctly without content type header\n */\n\nexport type HttpRequest = ReturnType<typeof createHttpRequest>\n\nexport interface HttpResponse extends Context {\n status: number\n type?: ResponseType\n}\n\nexport interface Payload {\n data: string | FormData | Blob\n bytesCount: number\n retry?: RetryInfo\n encoding?: 'deflate'\n}\n\nexport interface RetryInfo {\n count: number\n lastFailureStatus: number\n}\n\nexport function createHttpRequest(\n configuration: Configuration,\n endpointBuilder: EndpointBuilder,\n bytesLimit: number,\n reportError: (error: RawError) => void\n) {\n const retryState = newRetryState()\n const sendStrategyForRetry = (payload: Payload, onResponse: (r: HttpResponse) => void) =>\n fetchKeepAliveStrategy(configuration, endpointBuilder, bytesLimit, payload, onResponse)\n\n return {\n send: (payload: Payload) => {\n sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.trackType, reportError)\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: (payload: Payload) => {\n sendBeaconStrategy(configuration, endpointBuilder, bytesLimit, payload)\n },\n }\n}\n\nfunction sendBeaconStrategy(\n configuration: Configuration,\n endpointBuilder: EndpointBuilder,\n bytesLimit: number,\n payload: Payload\n) {\n const canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit\n if (canUseBeacon) {\n try {\n const beaconUrl = endpointBuilder.build('beacon', payload)\n const isQueued = navigator.sendBeacon(beaconUrl, payload.data)\n\n if (isQueued) {\n return\n }\n } catch (e) {\n reportBeaconError(e)\n }\n }\n\n const xhrUrl = endpointBuilder.build('xhr', payload)\n sendXHR(configuration, xhrUrl, payload.data)\n}\n\nlet hasReportedBeaconError = false\n\nfunction reportBeaconError(e: unknown) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true\n addTelemetryError(e)\n }\n}\n\nexport function fetchKeepAliveStrategy(\n configuration: Configuration,\n endpointBuilder: EndpointBuilder,\n bytesLimit: number,\n payload: Payload,\n onResponse?: (r: HttpResponse) => void\n) {\n const canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit\n if (canUseKeepAlive) {\n const fetchUrl = endpointBuilder.build('fetch', payload)\n fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' }).then(\n monitor((response: Response) => onResponse?.({ status: response.status, type: response.type })),\n monitor(() => {\n const xhrUrl = endpointBuilder.build('xhr', payload)\n // failed to queue the request\n sendXHR(configuration, xhrUrl, payload.data, onResponse)\n })\n )\n } else {\n const xhrUrl = endpointBuilder.build('xhr', payload)\n sendXHR(configuration, xhrUrl, payload.data, onResponse)\n }\n}\n\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a')\n } catch {\n return false\n }\n}\n\nexport function sendXHR(\n configuration: Configuration,\n url: string,\n data: Payload['data'],\n onResponse?: (r: HttpResponse) => void\n) {\n const request = new XMLHttpRequest()\n request.open('POST', url, true)\n if (data instanceof Blob) {\n // When using a Blob instance, IE does not use its 'type' to define the 'Content-Type' header\n // automatically, so the intake request ends up being rejected with an HTTP status 415\n // Defining the header manually fixes this issue.\n request.setRequestHeader('Content-Type', data.type)\n }\n addEventListener(\n configuration,\n request,\n 'loadend',\n () => {\n onResponse?.({ status: request.status })\n },\n {\n // prevent multiple onResponse callbacks\n // if the xhr instance is reused by a third party\n once: true,\n }\n )\n request.send(data)\n}\n","import type { PageExitEvent, PageExitReason } from '../browser/pageExitObservable'\nimport { Observable } from '../tools/observable'\nimport type { TimeoutId } from '../tools/timer'\nimport { clearTimeout, setTimeout } from '../tools/timer'\nimport type { Duration } from '../tools/utils/timeUtils'\n\nexport type FlushReason = PageExitReason | 'duration_limit' | 'bytes_limit' | 'messages_limit' | 'session_expire'\n\nexport type FlushController = ReturnType<typeof createFlushController>\nexport interface FlushEvent {\n reason: FlushReason\n bytesCount: number\n messagesCount: number\n}\n\ninterface FlushControllerOptions {\n messagesLimit: number\n bytesLimit: number\n durationLimit: Duration\n pageExitObservable: Observable<PageExitEvent>\n sessionExpireObservable: Observable<void>\n}\n\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController({\n messagesLimit,\n bytesLimit,\n durationLimit,\n pageExitObservable,\n sessionExpireObservable,\n}: FlushControllerOptions) {\n const pageExitSubscription = pageExitObservable.subscribe((event) => flush(event.reason))\n const sessionExpireSubscription = sessionExpireObservable.subscribe(() => flush('session_expire'))\n\n const flushObservable = new Observable<FlushEvent>(() => () => {\n pageExitSubscription.unsubscribe()\n sessionExpireSubscription.unsubscribe()\n })\n\n let currentBytesCount = 0\n let currentMessagesCount = 0\n\n function flush(flushReason: FlushReason) {\n if (currentMessagesCount === 0) {\n return\n }\n\n const messagesCount = currentMessagesCount\n const bytesCount = currentBytesCount\n\n currentMessagesCount = 0\n currentBytesCount = 0\n cancelDurationLimitTimeout()\n\n flushObservable.notify({\n reason: flushReason,\n messagesCount,\n bytesCount,\n })\n }\n\n let durationLimitTimeoutId: TimeoutId | undefined\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(() => {\n flush('duration_limit')\n }, durationLimit)\n }\n }\n\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId)\n durationLimitTimeoutId = undefined\n }\n\n return {\n flushObservable,\n get messagesCount() {\n return currentMessagesCount\n },\n\n /**\n * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right before adding the message, so no flush\n * event can happen after `notifyBeforeAddMessage` and before adding the message.\n *\n * @param estimatedMessageBytesCount: an estimation of the message bytes count once it is\n * actually added.\n */\n notifyBeforeAddMessage(estimatedMessageBytesCount: number) {\n if (currentBytesCount + estimatedMessageBytesCount >= bytesLimit) {\n flush('bytes_limit')\n }\n // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n // to notify when a flush is needed (for example on page exit).\n currentMessagesCount += 1\n currentBytesCount += estimatedMessageBytesCount\n scheduleDurationLimitTimeout()\n },\n\n /**\n * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n *\n * This function can be called asynchronously after the message was added, but in this case it\n * should not be called if a flush event occurred in between.\n *\n * @param messageBytesCountDiff: the difference between the estimated message bytes count and\n * its actual bytes count once added to the pool.\n */\n notifyAfterAddMessage(messageBytesCountDiff = 0) {\n currentBytesCount += messageBytesCountDiff\n\n if (currentMessagesCount >= messagesLimit) {\n flush('messages_limit')\n } else if (currentBytesCount >= bytesLimit) {\n flush('bytes_limit')\n }\n },\n\n /**\n * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right after removing the message, so no flush\n * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n *\n * @param messageBytesCount: the message bytes count that was added to the pool. Should\n * correspond to the sum of bytes counts passed to `notifyBeforeAddMessage` and\n * `notifyAfterAddMessage`.\n */\n notifyAfterRemoveMessage(messageBytesCount: number) {\n currentBytesCount -= messageBytesCount\n currentMessagesCount -= 1\n if (currentMessagesCount === 0) {\n cancelDurationLimitTimeout()\n }\n },\n }\n}\n","import type { Configuration, EndpointBuilder } from '../domain/configuration'\nimport type { Context } from '../tools/serialisation/context'\nimport type { Observable } from '../tools/observable'\nimport type { PageExitEvent } from '../browser/pageExitObservable'\nimport type { RawError } from '../domain/error/error.types'\nimport type { Encoder } from '../tools/encoder'\nimport { createBatch } from './batch'\nimport { createHttpRequest } from './httpRequest'\nimport { createFlushController } from './flushController'\n\nexport interface BatchConfiguration {\n endpoint: EndpointBuilder\n encoder: Encoder\n}\n\ninterface ReplicaBatchConfiguration<T> extends BatchConfiguration {\n transformMessage?: (message: T) => T\n}\n\nexport function startBatchWithReplica<T extends Context>(\n configuration: Configuration,\n primary: BatchConfiguration,\n replica: ReplicaBatchConfiguration<T> | undefined,\n reportError: (error: RawError) => void,\n pageExitObservable: Observable<PageExitEvent>,\n sessionExpireObservable: Observable<void>,\n batchFactoryImp = createBatch\n) {\n const primaryBatch = createBatchFromConfig(configuration, primary)\n const replicaBatch = replica && createBatchFromConfig(configuration, replica)\n\n function createBatchFromConfig(configuration: Configuration, { endpoint, encoder }: BatchConfiguration) {\n return batchFactoryImp({\n encoder,\n request: createHttpRequest(configuration, endpoint, configuration.batchBytesLimit, reportError),\n flushController: createFlushController({\n messagesLimit: configuration.batchMessagesLimit,\n bytesLimit: configuration.batchBytesLimit,\n durationLimit: configuration.flushTimeout,\n pageExitObservable,\n sessionExpireObservable,\n }),\n messageBytesLimit: configuration.messageBytesLimit,\n })\n }\n\n return {\n flushObservable: primaryBatch.flushController.flushObservable,\n\n add(message: T, replicated = true) {\n primaryBatch.add(message)\n if (replicaBatch && replicated) {\n replicaBatch.add(replica.transformMessage ? replica.transformMessage(message) : message)\n }\n },\n\n upsert: (message: T, key: string) => {\n primaryBatch.upsert(message, key)\n if (replicaBatch) {\n replicaBatch.upsert(replica.transformMessage ? replica.transformMessage(message) : message, key)\n }\n },\n\n stop: () => {\n primaryBatch.stop()\n if (replicaBatch) {\n replicaBatch.stop()\n }\n },\n }\n}\n","import type { RelativeTime, Observable } from '@datadog/browser-core'\nimport { SESSION_TIME_OUT_DELAY, relativeNow, createValueHistory } from '@datadog/browser-core'\nimport type { LocationChange } from '../../browser/locationChangeObservable'\nimport type { LifeCycle } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\n\n/**\n * We want to attach to an event:\n * - the url corresponding to its start\n * - the referrer corresponding to the previous view url (or document referrer for initial view)\n */\n\nexport const URL_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY\n\nexport interface UrlContext {\n url: string\n referrer: string\n}\n\nexport interface UrlContexts {\n findUrl: (startTime?: RelativeTime) => UrlContext | undefined\n stop: () => void\n}\n\nexport function startUrlContexts(\n lifeCycle: LifeCycle,\n locationChangeObservable: Observable<LocationChange>,\n location: Location\n) {\n const urlContextHistory = createValueHistory<UrlContext>({ expireDelay: URL_CONTEXT_TIME_OUT_DELAY })\n\n let previousViewUrl: string | undefined\n\n lifeCycle.subscribe(LifeCycleEventType.BEFORE_VIEW_CREATED, ({ startClocks }) => {\n const viewUrl = location.href\n urlContextHistory.add(\n buildUrlContext({\n url: viewUrl,\n referrer: !previousViewUrl ? document.referrer : previousViewUrl,\n }),\n startClocks.relative\n )\n previousViewUrl = viewUrl\n })\n\n lifeCycle.subscribe(LifeCycleEventType.AFTER_VIEW_ENDED, ({ endClocks }) => {\n urlContextHistory.closeActive(endClocks.relative)\n })\n\n const locationChangeSubscription = locationChangeObservable.subscribe(({ newLocation }) => {\n const current = urlContextHistory.find()\n if (current) {\n const changeTime = relativeNow()\n urlContextHistory.closeActive(changeTime)\n urlContextHistory.add(\n buildUrlContext({\n url: newLocation.href,\n referrer: current.referrer,\n }),\n changeTime\n )\n }\n })\n\n function buildUrlContext({ url, referrer }: { url: string; referrer: string }) {\n return {\n url,\n referrer,\n }\n }\n\n return {\n findUrl: (startTime?: RelativeTime) => urlContextHistory.find(startTime),\n stop: () => {\n locationChangeSubscription.unsubscribe()\n urlContextHistory.stop()\n },\n }\n}\n","import { addEventListener, DOM_EVENT, instrumentMethod, Observable, shallowClone } from '@datadog/browser-core'\nimport type { RumConfiguration } from '../domain/configuration'\n\nexport interface LocationChange {\n oldLocation: Readonly<Location>\n newLocation: Readonly<Location>\n}\n\nexport function createLocationChangeObservable(configuration: RumConfiguration, location: Location) {\n let currentLocation = shallowClone(location)\n\n return new Observable<LocationChange>((observable) => {\n const { stop: stopHistoryTracking } = trackHistory(configuration, onLocationChange)\n const { stop: stopHashTracking } = trackHash(configuration, onLocationChange)\n\n function onLocationChange() {\n if (currentLocation.href === location.href) {\n return\n }\n const newLocation = shallowClone(location)\n observable.notify({\n newLocation,\n oldLocation: currentLocation,\n })\n currentLocation = newLocation\n }\n\n return () => {\n stopHistoryTracking()\n stopHashTracking()\n }\n })\n}\n\nfunction trackHistory(configuration: RumConfiguration, onHistoryChange: () => void) {\n const { stop: stopInstrumentingPushState } = instrumentMethod(history, 'pushState', ({ onPostCall }) => {\n onPostCall(onHistoryChange)\n })\n const { stop: stopInstrumentingReplaceState } = instrumentMethod(history, 'replaceState', ({ onPostCall }) => {\n onPostCall(onHistoryChange)\n })\n const { stop: removeListener } = addEventListener(configuration, window, DOM_EVENT.POP_STATE, onHistoryChange)\n\n return {\n stop: () => {\n stopInstrumentingPushState()\n stopInstrumentingReplaceState()\n removeListener()\n },\n }\n}\n\nfunction trackHash(configuration: RumConfiguration, onHashChange: () => void) {\n return addEventListener(configuration, window, DOM_EVENT.HASH_CHANGE, onHashChange)\n}\n","import type { RelativeTime, ContextValue, Context, CustomerDataTracker } from '@datadog/browser-core'\nimport { SESSION_TIME_OUT_DELAY, createValueHistory } from '@datadog/browser-core'\nimport type { LifeCycle } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\n\nexport const FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY\nexport const BYTES_COMPUTATION_THROTTLING_DELAY = 200\n\nexport type FeatureFlagContext = Context\n\nexport interface FeatureFlagContexts {\n findFeatureFlagEvaluations: (startTime?: RelativeTime) => FeatureFlagContext | undefined\n addFeatureFlagEvaluation: (key: string, value: ContextValue) => void\n stop: () => void\n}\n\n/**\n * Start feature flag contexts\n *\n * Feature flag contexts follow the life of views.\n * A new context is added when a view is created and ended when the view is ended\n *\n * Note: we choose not to add a new context at each evaluation to save memory\n */\nexport function startFeatureFlagContexts(\n lifeCycle: LifeCycle,\n customerDataTracker: CustomerDataTracker\n): FeatureFlagContexts {\n const featureFlagContexts = createValueHistory<FeatureFlagContext>({\n expireDelay: FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY,\n })\n\n lifeCycle.subscribe(LifeCycleEventType.BEFORE_VIEW_CREATED, ({ startClocks }) => {\n featureFlagContexts.add({}, startClocks.relative)\n customerDataTracker.resetCustomerData()\n })\n\n lifeCycle.subscribe(LifeCycleEventType.AFTER_VIEW_ENDED, ({ endClocks }) => {\n featureFlagContexts.closeActive(endClocks.relative)\n })\n\n return {\n findFeatureFlagEvaluations: (startTime?: RelativeTime) => featureFlagContexts.find(startTime),\n addFeatureFlagEvaluation: (key: string, value: ContextValue) => {\n const currentContext = featureFlagContexts.find()\n if (currentContext) {\n currentContext[key] = value\n customerDataTracker.updateCustomerData(currentContext)\n }\n },\n stop: () => customerDataTracker.stop(),\n }\n}\n","import type { Context, CustomerDataTrackerManager, FlushEvent, Observable, Telemetry } from '@datadog/browser-core'\nimport {\n includes,\n performDraw,\n ONE_SECOND,\n addTelemetryDebug,\n setInterval,\n CustomerDataType,\n} from '@datadog/browser-core'\nimport { RumEventType } from '../rawRumEvent.types'\nimport type { RumEvent } from '../rumEvent.types'\nimport type { RumConfiguration } from './configuration'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\n\nexport const MEASURES_PERIOD_DURATION = 10 * ONE_SECOND\n\ntype Measure = {\n min: number\n max: number\n sum: number\n}\n\ntype CurrentPeriodMeasures = {\n batchCount: number\n batchBytesCount: Measure\n batchMessagesCount: Measure\n globalContextBytes: Measure\n userContextBytes: Measure\n featureFlagBytes: Measure\n}\n\ntype CurrentBatchMeasures = {\n globalContextBytes: Measure\n userContextBytes: Measure\n featureFlagBytes: Measure\n}\n\nlet currentPeriodMeasures: CurrentPeriodMeasures\nlet currentBatchMeasures: CurrentBatchMeasures\nlet batchHasRumEvent: boolean\n\nexport function startCustomerDataTelemetry(\n configuration: RumConfiguration,\n telemetry: Telemetry,\n lifeCycle: LifeCycle,\n customerDataTrackerManager: CustomerDataTrackerManager,\n batchFlushObservable: Observable<FlushEvent>\n) {\n const customerDataTelemetryEnabled = telemetry.enabled && performDraw(configuration.customerDataTelemetrySampleRate)\n if (!customerDataTelemetryEnabled) {\n return\n }\n\n initCurrentPeriodMeasures()\n initCurrentBatchMeasures()\n\n // We measure the data of every view updates even if there could only be one per batch due to the upsert\n // It means that contexts bytes count sums can be higher than it really is\n lifeCycle.subscribe(LifeCycleEventType.RUM_EVENT_COLLECTED, (event: RumEvent & Context) => {\n batchHasRumEvent = true\n updateMeasure(\n currentBatchMeasures.globalContextBytes,\n customerDataTrackerManager.getOrCreateTracker(CustomerDataType.GlobalContext).getBytesCount()\n )\n\n updateMeasure(\n currentBatchMeasures.userContextBytes,\n customerDataTrackerManager.getOrCreateTracker(CustomerDataType.User).getBytesCount()\n )\n\n updateMeasure(\n currentBatchMeasures.featureFlagBytes,\n includes([RumEventType.VIEW, RumEventType.ERROR], event.type)\n ? customerDataTrackerManager.getOrCreateTracker(CustomerDataType.FeatureFlag).getBytesCount()\n : 0\n )\n })\n\n batchFlushObservable.subscribe(({ bytesCount, messagesCount }) => {\n // Don't measure batch that only contains telemetry events to avoid batch sending loop\n // It could happen because after each batch we are adding a customer data measures telemetry event to the next one\n if (!batchHasRumEvent) {\n return\n }\n currentPeriodMeasures.batchCount += 1\n updateMeasure(currentPeriodMeasures.batchBytesCount, bytesCount)\n updateMeasure(currentPeriodMeasures.batchMessagesCount, messagesCount)\n mergeMeasure(currentPeriodMeasures.globalContextBytes, currentBatchMeasures.globalContextBytes)\n mergeMeasure(currentPeriodMeasures.userContextBytes, currentBatchMeasures.userContextBytes)\n mergeMeasure(currentPeriodMeasures.featureFlagBytes, currentBatchMeasures.featureFlagBytes)\n initCurrentBatchMeasures()\n })\n\n setInterval(sendCurrentPeriodMeasures, MEASURES_PERIOD_DURATION)\n}\n\nfunction sendCurrentPeriodMeasures() {\n if (currentPeriodMeasures.batchCount === 0) {\n return\n }\n\n addTelemetryDebug('Customer data measures', currentPeriodMeasures)\n initCurrentPeriodMeasures()\n}\n\nfunction createMeasure(): Measure {\n return { min: Infinity, max: 0, sum: 0 }\n}\n\nfunction updateMeasure(measure: Measure, value: number) {\n measure.sum += value\n measure.min = Math.min(measure.min, value)\n measure.max = Math.max(measure.max, value)\n}\n\nfunction mergeMeasure(target: Measure, source: Measure) {\n target.sum += source.sum\n target.min = Math.min(target.min, source.min)\n target.max = Math.max(target.max, source.max)\n}\n\nfunction initCurrentPeriodMeasures() {\n currentPeriodMeasures = {\n batchCount: 0,\n batchBytesCount: createMeasure(),\n batchMessagesCount: createMeasure(),\n globalContextBytes: createMeasure(),\n userContextBytes: createMeasure(),\n featureFlagBytes: createMeasure(),\n }\n}\n\nfunction initCurrentBatchMeasures() {\n batchHasRumEvent = false\n currentBatchMeasures = {\n globalContextBytes: createMeasure(),\n userContextBytes: createMeasure(),\n featureFlagBytes: createMeasure(),\n }\n}\n","import type { Duration, RelativeTime } from '@datadog/browser-core'\nimport {\n elapsed,\n createValueHistory,\n SESSION_TIME_OUT_DELAY,\n toServerDuration,\n addEventListeners,\n relativeNow,\n DOM_EVENT,\n} from '@datadog/browser-core'\nimport type { RumConfiguration } from '../configuration'\nimport type { PageStateServerEntry } from '../../rawRumEvent.types'\n\n// Arbitrary value to cap number of element for memory consumption in the browser\nexport const MAX_PAGE_STATE_ENTRIES = 4000\n// Arbitrary value to cap number of element for backend & to save bandwidth\nexport const MAX_PAGE_STATE_ENTRIES_SELECTABLE = 500\n\nexport const PAGE_STATE_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY\n\nexport const enum PageState {\n ACTIVE = 'active',\n PASSIVE = 'passive',\n HIDDEN = 'hidden',\n FROZEN = 'frozen',\n TERMINATED = 'terminated',\n}\n\nexport type PageStateEntry = { state: PageState; startTime: RelativeTime }\n\nexport interface PageStateHistory {\n findAll: (startTime: RelativeTime, duration: Duration) => PageStateServerEntry[] | undefined\n wasInPageStateAt: (state: PageState, startTime: RelativeTime) => boolean\n wasInPageStateDuringPeriod: (state: PageState, startTime: RelativeTime, duration: Duration) => boolean\n addPageState(nextPageState: PageState, startTime?: RelativeTime): void\n stop: () => void\n}\n\nexport function startPageStateHistory(\n configuration: RumConfiguration,\n maxPageStateEntriesSelectable = MAX_PAGE_STATE_ENTRIES_SELECTABLE\n): PageStateHistory {\n const pageStateEntryHistory = createValueHistory<PageStateEntry>({\n expireDelay: PAGE_STATE_CONTEXT_TIME_OUT_DELAY,\n maxEntries: MAX_PAGE_STATE_ENTRIES,\n })\n\n let currentPageState: PageState\n addPageState(getPageState(), relativeNow())\n\n const { stop: stopEventListeners } = addEventListeners(\n configuration,\n window,\n [\n DOM_EVENT.PAGE_SHOW,\n DOM_EVENT.FOCUS,\n DOM_EVENT.BLUR,\n DOM_EVENT.VISIBILITY_CHANGE,\n DOM_EVENT.RESUME,\n DOM_EVENT.FREEZE,\n DOM_EVENT.PAGE_HIDE,\n ],\n (event) => {\n addPageState(computePageState(event), event.timeStamp as RelativeTime)\n },\n { capture: true }\n )\n\n function addPageState(nextPageState: PageState, startTime = relativeNow()) {\n if (nextPageState === currentPageState) {\n return\n }\n\n currentPageState = nextPageState\n pageStateEntryHistory.closeActive(startTime)\n pageStateEntryHistory.add({ state: currentPageState, startTime }, startTime)\n }\n\n const pageStateHistory = {\n findAll: (eventStartTime: RelativeTime, duration: Duration): PageStateServerEntry[] | undefined => {\n const pageStateEntries = pageStateEntryHistory.findAll(eventStartTime, duration)\n\n if (pageStateEntries.length === 0) {\n return\n }\n\n const pageStateServerEntries = []\n // limit the number of entries to return\n const limit = Math.max(0, pageStateEntries.length - maxPageStateEntriesSelectable)\n\n // loop page state entries backward to return the selected ones in desc order\n for (let index = pageStateEntries.length - 1; index >= limit; index--) {\n const pageState = pageStateEntries[index]\n // compute the start time relative to the event start time (ex: to be relative to the view start time)\n const relativeStartTime = elapsed(eventStartTime, pageState.startTime)\n\n pageStateServerEntries.push({\n state: pageState.state,\n start: toServerDuration(relativeStartTime),\n })\n }\n\n return pageStateServerEntries\n },\n wasInPageStateAt: (state: PageState, startTime: RelativeTime) =>\n pageStateHistory.wasInPageStateDuringPeriod(state, startTime, 0 as Duration),\n wasInPageStateDuringPeriod: (state: PageState, startTime: RelativeTime, duration: Duration) =>\n pageStateEntryHistory.findAll(startTime, duration).some((pageState) => pageState.state === state),\n addPageState,\n stop: () => {\n stopEventListeners()\n pageStateEntryHistory.stop()\n },\n }\n return pageStateHistory\n}\n\nfunction computePageState(event: Event & { type: DOM_EVENT }) {\n if (event.type === DOM_EVENT.FREEZE) {\n return PageState.FROZEN\n } else if (event.type === DOM_EVENT.PAGE_HIDE) {\n return (event as PageTransitionEvent).persisted ? PageState.FROZEN : PageState.TERMINATED\n }\n return getPageState()\n}\n\nfunction getPageState() {\n if (document.visibilityState === 'hidden') {\n return PageState.HIDDEN\n }\n\n if (document.hasFocus()) {\n return PageState.ACTIVE\n }\n\n return PageState.PASSIVE\n}\n","import type { Configuration, CookieStore } from '@datadog/browser-core'\nimport {\n setInterval,\n clearInterval,\n Observable,\n addEventListener,\n ONE_SECOND,\n findCommaSeparatedValue,\n DOM_EVENT,\n find,\n} from '@datadog/browser-core'\n\nexport interface CookieStoreWindow extends Window {\n cookieStore?: CookieStore\n}\n\nexport type CookieObservable = ReturnType<typeof createCookieObservable>\n\nexport function createCookieObservable(configuration: Configuration, cookieName: string) {\n const detectCookieChangeStrategy = (window as CookieStoreWindow).cookieStore\n ? listenToCookieStoreChange(configuration)\n : watchCookieFallback\n\n return new Observable<string | undefined>((observable) =>\n detectCookieChangeStrategy(cookieName, (event) => observable.notify(event))\n )\n}\n\nfunction listenToCookieStoreChange(configuration: Configuration) {\n return (cookieName: string, callback: (event: string | undefined) => void) => {\n const listener = addEventListener(\n configuration,\n (window as CookieStoreWindow).cookieStore!,\n DOM_EVENT.CHANGE,\n (event) => {\n // Based on our experimentation, we're assuming that entries for the same cookie cannot be in both the 'changed' and 'deleted' arrays.\n // However, due to ambiguity in the specification, we asked for clarification: https://github.com/WICG/cookie-store/issues/226\n const changeEvent =\n find(event.changed, (event) => event.name === cookieName) ||\n find(event.deleted, (event) => event.name === cookieName)\n if (changeEvent) {\n callback(changeEvent.value)\n }\n }\n )\n return listener.stop\n }\n}\n\nexport const WATCH_COOKIE_INTERVAL_DELAY = ONE_SECOND\n\nfunction watchCookieFallback(cookieName: string, callback: (event: string | undefined) => void) {\n const previousCookieValue = findCommaSeparatedValue(document.cookie, cookieName)\n const watchCookieIntervalId = setInterval(() => {\n const cookieValue = findCommaSeparatedValue(document.cookie, cookieName)\n if (cookieValue !== previousCookieValue) {\n callback(cookieValue)\n }\n }, WATCH_COOKIE_INTERVAL_DELAY)\n\n return () => {\n clearInterval(watchCookieIntervalId)\n }\n}\n","import { getInitCookie, type Configuration } from '@datadog/browser-core'\n\nimport { createCookieObservable } from '../../browser/cookieObservable'\n\nexport const CI_VISIBILITY_TEST_ID_COOKIE_NAME = 'datadog-ci-visibility-test-execution-id'\n\nexport interface CiTestWindow extends Window {\n Cypress?: {\n env: (key: string) => string | undefined\n }\n}\n\nexport type CiVisibilityContext = ReturnType<typeof startCiVisibilityContext>\n\nexport function startCiVisibilityContext(\n configuration: Configuration,\n cookieObservable = createCookieObservable(configuration, CI_VISIBILITY_TEST_ID_COOKIE_NAME)\n) {\n let testExecutionId =\n getInitCookie(CI_VISIBILITY_TEST_ID_COOKIE_NAME) || (window as CiTestWindow).Cypress?.env('traceId')\n\n const cookieObservableSubscription = cookieObservable.subscribe((value) => {\n testExecutionId = value\n })\n\n return {\n get: () => {\n if (typeof testExecutionId === 'string') {\n return {\n test_execution_id: testExecutionId,\n }\n }\n },\n stop: () => cookieObservableSubscription.unsubscribe(),\n }\n}\n","import { INTAKE_SITE_STAGING, INTAKE_SITE_US1, INTAKE_SITE_EU1 } from '@datadog/browser-core'\nimport type { RumConfiguration } from './configuration'\nimport type { ViewContext } from './contexts/viewContexts'\nimport type { RumSession } from './rumSessionManager'\n\nexport function getSessionReplayUrl(\n configuration: RumConfiguration,\n {\n session,\n viewContext,\n errorType,\n }: {\n session?: RumSession\n viewContext?: ViewContext\n errorType?: string\n }\n): string {\n const sessionId = session ? session.id : 'no-session-id'\n const parameters: string[] = []\n if (errorType !== undefined) {\n parameters.push(`error-type=${errorType}`)\n }\n if (viewContext) {\n parameters.push(`seed=${viewContext.id}`)\n parameters.push(`from=${viewContext.startClocks.timeStamp}`)\n }\n\n const origin = getDatadogSiteUrl(configuration)\n const path = `/rum/replay/sessions/${sessionId}`\n return `${origin}${path}?${parameters.join('&')}`\n}\n\nexport function getDatadogSiteUrl(rumConfiguration: RumConfiguration) {\n const site = rumConfiguration.site\n const subdomain = rumConfiguration.subdomain || getSiteDefaultSubdomain(rumConfiguration)\n return `https://${subdomain ? `${subdomain}.` : ''}${site}`\n}\n\nfunction getSiteDefaultSubdomain(configuration: RumConfiguration): string | undefined {\n switch (configuration.site) {\n case INTAKE_SITE_US1:\n case INTAKE_SITE_EU1:\n return 'app'\n case INTAKE_SITE_STAGING:\n return 'dd'\n default:\n return undefined\n }\n}\n","import type { ReplayStats } from '@datadog/browser-rum-core'\n\nexport const MAX_STATS_HISTORY = 10\nlet statsPerView: Map<string, ReplayStats> | undefined\n\nexport function getSegmentsCount(viewId: string) {\n return getOrCreateReplayStats(viewId).segments_count\n}\n\nexport function addSegment(viewId: string) {\n getOrCreateReplayStats(viewId).segments_count += 1\n}\n\nexport function addRecord(viewId: string) {\n getOrCreateReplayStats(viewId).records_count += 1\n}\n\nexport function addWroteData(viewId: string, additionalBytesCount: number) {\n getOrCreateReplayStats(viewId).segments_total_raw_size += additionalBytesCount\n}\n\nexport function getReplayStats(viewId: string) {\n return statsPerView?.get(viewId)\n}\n\nexport function resetReplayStats() {\n statsPerView = undefined\n}\n\nfunction getOrCreateReplayStats(viewId: string) {\n if (!statsPerView) {\n statsPerView = new Map()\n }\n\n let replayStats: ReplayStats\n if (statsPerView.has(viewId)) {\n replayStats = statsPerView.get(viewId)!\n } else {\n replayStats = {\n records_count: 0,\n segments_count: 0,\n segments_total_raw_size: 0,\n }\n statsPerView.set(viewId, replayStats)\n if (statsPerView.size > MAX_STATS_HISTORY) {\n deleteOldestStats()\n }\n }\n\n return replayStats\n}\n\nfunction deleteOldestStats() {\n if (!statsPerView) {\n return\n }\n if (statsPerView.keys) {\n statsPerView.delete(statsPerView.keys().next().value)\n } else {\n // IE11 doesn't support map.keys\n let isFirst = true\n statsPerView.forEach((_value, key) => {\n if (isFirst) {\n statsPerView!.delete(key)\n isFirst = false\n }\n })\n }\n}\n","import { buildUrl } from '@datadog/browser-core'\nimport { getParentNode, isNodeShadowRoot, CENSORED_STRING_MARK, shouldMaskNode } from '@datadog/browser-rum-core'\nimport type { NodePrivacyLevel } from '@datadog/browser-rum-core'\nimport type { NodeWithSerializedNode } from './serialization.types'\n\nconst serializedNodeIds = new WeakMap<Node, number>()\n\nexport function hasSerializedNode(node: Node): node is NodeWithSerializedNode {\n return serializedNodeIds.has(node)\n}\n\nexport function nodeAndAncestorsHaveSerializedNode(node: Node): node is NodeWithSerializedNode {\n let current: Node | null = node\n while (current) {\n if (!hasSerializedNode(current) && !isNodeShadowRoot(current)) {\n return false\n }\n current = getParentNode(current)\n }\n return true\n}\n\nexport function getSerializedNodeId(node: NodeWithSerializedNode): number\nexport function getSerializedNodeId(node: Node): number | undefined\nexport function getSerializedNodeId(node: Node) {\n return serializedNodeIds.get(node)\n}\n\nexport function setSerializedNodeId(node: Node, serializeNodeId: number) {\n serializedNodeIds.set(node, serializeNodeId)\n}\n\n/**\n * Get the element \"value\" to be serialized as an attribute or an input update record. It respects\n * the input privacy mode of the element.\n * PERFROMANCE OPTIMIZATION: Assumes that privacy level `HIDDEN` is never encountered because of earlier checks.\n */\nexport function getElementInputValue(element: Element, nodePrivacyLevel: NodePrivacyLevel) {\n /*\n BROWSER SPEC NOTE: <input>, <select>\n For some <input> elements, the `value` is an exceptional property/attribute that has the\n value synced between el.value and el.getAttribute()\n input[type=button,checkbox,hidden,image,radio,reset,submit]\n */\n const tagName = element.tagName\n const value = (element as HTMLInputElement | HTMLTextAreaElement).value\n\n if (shouldMaskNode(element, nodePrivacyLevel)) {\n const type = (element as HTMLInputElement | HTMLTextAreaElement).type\n if (tagName === 'INPUT' && (type === 'button' || type === 'submit' || type === 'reset')) {\n // Overrule `MASK` privacy level for button-like element values, as they are used during replay\n // to display their label. They can still be hidden via the \"hidden\" privacy attribute or class name.\n return value\n } else if (!value || tagName === 'OPTION') {\n // <Option> value provides no benefit\n return\n }\n return CENSORED_STRING_MARK\n }\n\n if (tagName === 'OPTION' || tagName === 'SELECT') {\n return (element as HTMLOptionElement | HTMLSelectElement).value\n }\n\n if (tagName !== 'INPUT' && tagName !== 'TEXTAREA') {\n return\n }\n\n return value\n}\n\nexport const URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")([^\"]*)\"|([^)]*))\\)/gm\nexport const ABSOLUTE_URL = /^[A-Za-z]+:|^\\/\\//\nexport const DATA_URI = /^data:.*,/i\n\nexport function switchToAbsoluteUrl(cssText: string, cssHref: string | null): string {\n return cssText.replace(\n URL_IN_CSS_REF,\n (\n matchingSubstring: string,\n singleQuote: string | undefined,\n urlWrappedInSingleQuotes: string | undefined,\n doubleQuote: string | undefined,\n urlWrappedInDoubleQuotes: string | undefined,\n urlNotWrappedInQuotes: string | undefined\n ) => {\n const url = urlWrappedInSingleQuotes || urlWrappedInDoubleQuotes || urlNotWrappedInQuotes\n\n if (!cssHref || !url || ABSOLUTE_URL.test(url) || DATA_URI.test(url)) {\n return matchingSubstring\n }\n\n const quote = singleQuote || doubleQuote || ''\n return `url(${quote}${makeUrlAbsolute(url, cssHref)}${quote})`\n }\n )\n}\n\nexport function makeUrlAbsolute(url: string, baseUrl: string): string {\n try {\n return buildUrl(url, baseUrl).href\n } catch (_) {\n return url\n }\n}\n\nconst TAG_NAME_REGEX = /[^a-z1-6-_]/\nexport function getValidTagName(tagName: string): string {\n const processedTagName = tagName.toLowerCase().trim()\n\n if (TAG_NAME_REGEX.test(processedTagName)) {\n // if the tag name is odd and we cannot extract\n // anything from the string, then we return a\n // generic div\n return 'div'\n }\n\n return processedTagName\n}\n\nexport function censoredImageForSize(width: number, height: number) {\n return `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='${width}' height='${height}' style='background-color:silver'%3E%3C/svg%3E`\n}\n","import type * as SessionReplay from './sessionReplay'\n\nexport const RecordType: {\n FullSnapshot: SessionReplay.BrowserFullSnapshotRecord['type']\n IncrementalSnapshot: SessionReplay.BrowserIncrementalSnapshotRecord['type']\n Meta: SessionReplay.MetaRecord['type']\n Focus: SessionReplay.FocusRecord['type']\n ViewEnd: SessionReplay.ViewEndRecord['type']\n VisualViewport: SessionReplay.VisualViewportRecord['type']\n FrustrationRecord: SessionReplay.FrustrationRecord['type']\n} = {\n FullSnapshot: 2,\n IncrementalSnapshot: 3,\n Meta: 4,\n Focus: 6,\n ViewEnd: 7,\n VisualViewport: 8,\n FrustrationRecord: 9,\n} as const\n\nexport type RecordType = (typeof RecordType)[keyof typeof RecordType]\n\nexport const NodeType: {\n Document: SessionReplay.DocumentNode['type']\n DocumentType: SessionReplay.DocumentTypeNode['type']\n Element: SessionReplay.ElementNode['type']\n Text: SessionReplay.TextNode['type']\n CDATA: SessionReplay.CDataNode['type']\n DocumentFragment: SessionReplay.DocumentFragmentNode['type']\n} = {\n Document: 0,\n DocumentType: 1,\n Element: 2,\n Text: 3,\n CDATA: 4,\n DocumentFragment: 11,\n} as const\n\nexport type NodeType = (typeof NodeType)[keyof typeof NodeType]\n\nexport const IncrementalSource: {\n Mutation: SessionReplay.BrowserMutationData['source']\n MouseMove: Exclude<SessionReplay.MousemoveData['source'], 6>\n MouseInteraction: SessionReplay.MouseInteractionData['source']\n Scroll: SessionReplay.ScrollData['source']\n ViewportResize: SessionReplay.ViewportResizeData['source']\n Input: SessionReplay.InputData['source']\n TouchMove: Exclude<SessionReplay.MousemoveData['source'], 1>\n MediaInteraction: SessionReplay.MediaInteractionData['source']\n StyleSheetRule: SessionReplay.StyleSheetRuleData['source']\n} = {\n Mutation: 0,\n MouseMove: 1,\n MouseInteraction: 2,\n Scroll: 3,\n ViewportResize: 4,\n Input: 5,\n TouchMove: 6,\n MediaInteraction: 7,\n StyleSheetRule: 8,\n // CanvasMutation : 9,\n // Font : 10,\n} as const\n\nexport type IncrementalSource = (typeof IncrementalSource)[keyof typeof IncrementalSource]\n\nexport const MouseInteractionType = {\n MouseUp: 0,\n MouseDown: 1,\n Click: 2,\n ContextMenu: 3,\n DblClick: 4,\n Focus: 5,\n Blur: 6,\n TouchStart: 7,\n TouchEnd: 9,\n} as const\n\nexport type MouseInteractionType = (typeof MouseInteractionType)[keyof typeof MouseInteractionType]\n\nexport const MediaInteractionType = {\n Play: 0,\n Pause: 1,\n} as const\n\nexport type MediaInteractionType = (typeof MediaInteractionType)[keyof typeof MediaInteractionType]\n","import type { StyleSheet } from '../../../types'\n\nexport function serializeStyleSheets(cssStyleSheets: CSSStyleSheet[] | undefined): StyleSheet[] | undefined {\n if (cssStyleSheets === undefined || cssStyleSheets.length === 0) {\n return undefined\n }\n return cssStyleSheets.map((cssStyleSheet) => {\n const rules = cssStyleSheet.cssRules || cssStyleSheet.rules\n const cssRules = Array.from(rules, (cssRule) => cssRule.cssText)\n\n const styleSheet: StyleSheet = {\n cssRules,\n disabled: cssStyleSheet.disabled || undefined,\n media: cssStyleSheet.media.length > 0 ? Array.from(cssStyleSheet.media) : undefined,\n }\n return styleSheet\n })\n}\n","import { startsWith } from '@datadog/browser-core'\nimport {\n NodePrivacyLevel,\n PRIVACY_ATTR_NAME,\n CENSORED_STRING_MARK,\n CENSORED_IMG_MARK,\n STABLE_ATTRIBUTES,\n isLongDataUrl,\n sanitizeDataUrl,\n} from '@datadog/browser-rum-core'\nimport type { RumConfiguration } from '@datadog/browser-rum-core'\nimport { censoredImageForSize } from './serializationUtils'\n\nexport function serializeAttribute(\n element: Element,\n nodePrivacyLevel: NodePrivacyLevel,\n attributeName: string,\n configuration: RumConfiguration\n): string | number | boolean | null {\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n // dup condition for direct access case\n return null\n }\n const attributeValue = element.getAttribute(attributeName)\n if (\n nodePrivacyLevel === NodePrivacyLevel.MASK &&\n attributeName !== PRIVACY_ATTR_NAME &&\n !STABLE_ATTRIBUTES.includes(attributeName) &&\n attributeName !== configuration.actionNameAttribute\n ) {\n const tagName = element.tagName\n\n switch (attributeName) {\n // Mask Attribute text content\n case 'title':\n case 'alt':\n case 'placeholder':\n return CENSORED_STRING_MARK\n }\n\n // mask image URLs\n if (tagName === 'IMG' && (attributeName === 'src' || attributeName === 'srcset')) {\n // generate image with similar dimension than the original to have the same rendering behaviour\n const image = element as HTMLImageElement\n if (image.naturalWidth > 0) {\n return censoredImageForSize(image.naturalWidth, image.naturalHeight)\n }\n const { width, height } = element.getBoundingClientRect()\n if (width > 0 || height > 0) {\n return censoredImageForSize(width, height)\n }\n // if we can't get the image size, fallback to the censored image\n return CENSORED_IMG_MARK\n }\n\n // mask source URLs\n if (tagName === 'SOURCE' && (attributeName === 'src' || attributeName === 'srcset')) {\n return CENSORED_IMG_MARK\n }\n\n // mask <a> URLs\n if (tagName === 'A' && attributeName === 'href') {\n return CENSORED_STRING_MARK\n }\n\n // mask data-* attributes\n if (attributeValue && startsWith(attributeName, 'data-')) {\n // Exception: it's safe to reveal the `${PRIVACY_ATTR_NAME}` attr\n return CENSORED_STRING_MARK\n }\n\n // mask iframe srcdoc\n if (tagName === 'IFRAME' && attributeName === 'srcdoc') {\n return CENSORED_STRING_MARK\n }\n }\n\n if (!attributeValue || typeof attributeValue !== 'string') {\n return attributeValue\n }\n\n // Minimum Fix for customer.\n if (isLongDataUrl(attributeValue)) {\n return sanitizeDataUrl(attributeValue)\n }\n\n return attributeValue\n}\n","import { NodePrivacyLevel, shouldMaskNode } from '@datadog/browser-rum-core'\nimport { isSafari } from '@datadog/browser-core'\nimport { getElementInputValue, switchToAbsoluteUrl, getValidTagName } from './serializationUtils'\nimport type { SerializeOptions } from './serialization.types'\nimport { SerializationContextStatus } from './serialization.types'\nimport { serializeAttribute } from './serializeAttribute'\n\nexport function serializeAttributes(\n element: Element,\n nodePrivacyLevel: NodePrivacyLevel,\n options: SerializeOptions\n): Record<string, string | number | boolean> {\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n return {}\n }\n const safeAttrs: Record<string, string | number | boolean> = {}\n const tagName = getValidTagName(element.tagName)\n const doc = element.ownerDocument\n\n for (let i = 0; i < element.attributes.length; i += 1) {\n const attribute = element.attributes.item(i)!\n const attributeName = attribute.name\n const attributeValue = serializeAttribute(element, nodePrivacyLevel, attributeName, options.configuration)\n if (attributeValue !== null) {\n safeAttrs[attributeName] = attributeValue\n }\n }\n\n if (\n (element as HTMLInputElement).value &&\n (tagName === 'textarea' || tagName === 'select' || tagName === 'option' || tagName === 'input')\n ) {\n const formValue = getElementInputValue(element, nodePrivacyLevel)\n if (formValue !== undefined) {\n safeAttrs.value = formValue\n }\n }\n\n /**\n * <Option> can be selected, which occurs if its `value` matches ancestor `<Select>.value`\n */\n if (tagName === 'option' && nodePrivacyLevel === NodePrivacyLevel.ALLOW) {\n // For privacy=`MASK`, all the values would be the same, so skip.\n const optionElement = element as HTMLOptionElement\n if (optionElement.selected) {\n safeAttrs.selected = optionElement.selected\n }\n }\n\n // remote css\n if (tagName === 'link') {\n const stylesheet = Array.from(doc.styleSheets).find((s) => s.href === (element as HTMLLinkElement).href)\n const cssText = getCssRulesString(stylesheet)\n if (cssText && stylesheet) {\n safeAttrs._cssText = cssText\n }\n }\n\n // dynamic stylesheet\n if (tagName === 'style' && (element as HTMLStyleElement).sheet) {\n const cssText = getCssRulesString((element as HTMLStyleElement).sheet)\n if (cssText) {\n safeAttrs._cssText = cssText\n }\n }\n\n /**\n * Forms: input[type=checkbox,radio]\n * The `checked` property for <input> is a little bit special:\n * 1. el.checked is a setter that returns if truthy.\n * 2. getAttribute returns the string value\n * getAttribute('checked') does not sync with `Element.checked`, so use JS property\n * NOTE: `checked` property exists on `HTMLInputElement`. For serializer assumptions, we check for type=radio|check.\n */\n const inputElement = element as HTMLInputElement\n if (tagName === 'input' && (inputElement.type === 'radio' || inputElement.type === 'checkbox')) {\n if (nodePrivacyLevel === NodePrivacyLevel.ALLOW) {\n safeAttrs.checked = !!inputElement.checked\n } else if (shouldMaskNode(inputElement, nodePrivacyLevel)) {\n delete safeAttrs.checked\n }\n }\n\n /**\n * Serialize the media playback state\n */\n if (tagName === 'audio' || tagName === 'video') {\n const mediaElement = element as HTMLMediaElement\n safeAttrs.rr_mediaState = mediaElement.paused ? 'paused' : 'played'\n }\n\n /**\n * Serialize the scroll state for each element only for full snapshot\n */\n let scrollTop: number | undefined\n let scrollLeft: number | undefined\n const serializationContext = options.serializationContext\n switch (serializationContext.status) {\n case SerializationContextStatus.INITIAL_FULL_SNAPSHOT:\n scrollTop = Math.round(element.scrollTop)\n scrollLeft = Math.round(element.scrollLeft)\n if (scrollTop || scrollLeft) {\n serializationContext.elementsScrollPositions.set(element, { scrollTop, scrollLeft })\n }\n break\n case SerializationContextStatus.SUBSEQUENT_FULL_SNAPSHOT:\n if (serializationContext.elementsScrollPositions.has(element)) {\n ;({ scrollTop, scrollLeft } = serializationContext.elementsScrollPositions.get(element)!)\n }\n break\n }\n if (scrollLeft) {\n safeAttrs.rr_scrollLeft = scrollLeft\n }\n if (scrollTop) {\n safeAttrs.rr_scrollTop = scrollTop\n }\n\n return safeAttrs\n}\n\nexport function getCssRulesString(cssStyleSheet: CSSStyleSheet | undefined | null): string | null {\n if (!cssStyleSheet) {\n return null\n }\n let rules: CSSRuleList | undefined\n try {\n rules = cssStyleSheet.rules || cssStyleSheet.cssRules\n } catch {\n // if css is protected by CORS we cannot access cssRules see: https://www.w3.org/TR/cssom-1/#the-cssstylesheet-interface\n }\n if (!rules) {\n return null\n }\n const styleSheetCssText = Array.from(rules, isSafari() ? getCssRuleStringForSafari : getCssRuleString).join('')\n return switchToAbsoluteUrl(styleSheetCssText, cssStyleSheet.href)\n}\n\nfunction getCssRuleStringForSafari(rule: CSSRule): string {\n // Safari does not escape attribute selectors containing : properly\n // https://bugs.webkit.org/show_bug.cgi?id=184604\n if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\n // This regex replaces [foo:bar] by [foo\\\\:bar]\n const escapeColon = /(\\[[\\w-]+[^\\\\])(:[^\\]]+\\])/g\n return rule.cssText.replace(escapeColon, '$1\\\\$2')\n }\n\n return getCssRuleString(rule)\n}\n\nfunction getCssRuleString(rule: CSSRule): string {\n // If it's an @import rule, try to inline sub-rules recursively with `getCssRulesString`. This\n // operation can fail if the imported stylesheet is protected by CORS, in which case we fallback\n // to the @import rule CSS text.\n return (isCSSImportRule(rule) && getCssRulesString(rule.styleSheet)) || rule.cssText\n}\n\nfunction isCSSImportRule(rule: CSSRule): rule is CSSImportRule {\n return 'styleSheet' in rule\n}\n\nfunction isCSSStyleRule(rule: CSSRule): rule is CSSStyleRule {\n return 'selectorText' in rule\n}\n","import {\n reducePrivacyLevel,\n getNodeSelfPrivacyLevel,\n getTextContent,\n isNodeShadowRoot,\n hasChildNodes,\n forEachChildNodes,\n NodePrivacyLevel,\n PRIVACY_ATTR_NAME,\n PRIVACY_ATTR_VALUE_HIDDEN,\n} from '@datadog/browser-rum-core'\nimport { assign } from '@datadog/browser-core'\nimport type {\n DocumentFragmentNode,\n DocumentNode,\n SerializedNode,\n SerializedNodeWithId,\n CDataNode,\n DocumentTypeNode,\n ElementNode,\n TextNode,\n} from '../../../types'\nimport { NodeType } from '../../../types'\nimport { getSerializedNodeId, getValidTagName, setSerializedNodeId } from './serializationUtils'\nimport type { SerializeOptions } from './serialization.types'\nimport { serializeStyleSheets } from './serializeStyleSheets'\nimport { serializeAttributes } from './serializeAttributes'\n\nexport function serializeNodeWithId(node: Node, options: SerializeOptions): SerializedNodeWithId | null {\n const serializedNode = serializeNode(node, options)\n if (!serializedNode) {\n return null\n }\n\n // Try to reuse the previous id\n const id = getSerializedNodeId(node) || generateNextId()\n const serializedNodeWithId = serializedNode as SerializedNodeWithId\n serializedNodeWithId.id = id\n setSerializedNodeId(node, id)\n if (options.serializedNodeIds) {\n options.serializedNodeIds.add(id)\n }\n return serializedNodeWithId\n}\n\nlet _nextId = 1\nexport function generateNextId(): number {\n return _nextId++\n}\n\nexport function serializeChildNodes(node: Node, options: SerializeOptions): SerializedNodeWithId[] {\n const result: SerializedNodeWithId[] = []\n forEachChildNodes(node, (childNode) => {\n const serializedChildNode = serializeNodeWithId(childNode, options)\n if (serializedChildNode) {\n result.push(serializedChildNode)\n }\n })\n return result\n}\n\nfunction serializeNode(node: Node, options: SerializeOptions): SerializedNode | undefined {\n switch (node.nodeType) {\n case node.DOCUMENT_NODE:\n return serializeDocumentNode(node as Document, options)\n case node.DOCUMENT_FRAGMENT_NODE:\n return serializeDocumentFragmentNode(node as DocumentFragment, options)\n case node.DOCUMENT_TYPE_NODE:\n return serializeDocumentTypeNode(node as DocumentType)\n case node.ELEMENT_NODE:\n return serializeElementNode(node as Element, options)\n case node.TEXT_NODE:\n return serializeTextNode(node as Text, options)\n case node.CDATA_SECTION_NODE:\n return serializeCDataNode()\n }\n}\n\nexport function serializeDocumentNode(document: Document, options: SerializeOptions): DocumentNode {\n return {\n type: NodeType.Document,\n childNodes: serializeChildNodes(document, options),\n adoptedStyleSheets: serializeStyleSheets(document.adoptedStyleSheets),\n }\n}\n\nfunction serializeDocumentFragmentNode(\n element: DocumentFragment,\n options: SerializeOptions\n): DocumentFragmentNode | undefined {\n const isShadowRoot = isNodeShadowRoot(element)\n if (isShadowRoot) {\n options.serializationContext.shadowRootsController.addShadowRoot(element)\n }\n\n return {\n type: NodeType.DocumentFragment,\n childNodes: serializeChildNodes(element, options),\n isShadowRoot,\n adoptedStyleSheets: isShadowRoot ? serializeStyleSheets(element.adoptedStyleSheets) : undefined,\n }\n}\n\nfunction serializeDocumentTypeNode(documentType: DocumentType): DocumentTypeNode {\n return {\n type: NodeType.DocumentType,\n name: documentType.name,\n publicId: documentType.publicId,\n systemId: documentType.systemId,\n }\n}\n\n/**\n * Serializing Element nodes involves capturing:\n * 1. HTML ATTRIBUTES:\n * 2. JS STATE:\n * - scroll offsets\n * - Form fields (input value, checkbox checked, option selection, range)\n * - Canvas state,\n * - Media (video/audio) play mode + currentTime\n * - iframe contents\n * - webcomponents\n * 3. CUSTOM PROPERTIES:\n * - height+width for when `hidden` to cover the element\n * 4. EXCLUDED INTERACTION STATE:\n * - focus (possible, but not worth perf impact)\n * - hover (tracked only via mouse activity)\n * - fullscreen mode\n */\n\nfunction serializeElementNode(element: Element, options: SerializeOptions): ElementNode | undefined {\n const tagName = getValidTagName(element.tagName)\n const isSVG = isSVGElement(element) || undefined\n\n // For performance reason, we don't use getNodePrivacyLevel directly: we leverage the\n // parentNodePrivacyLevel option to avoid iterating over all parents\n const nodePrivacyLevel = reducePrivacyLevel(getNodeSelfPrivacyLevel(element), options.parentNodePrivacyLevel)\n\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n const { width, height } = element.getBoundingClientRect()\n return {\n type: NodeType.Element,\n tagName,\n attributes: {\n rr_width: `${width}px`,\n rr_height: `${height}px`,\n [PRIVACY_ATTR_NAME]: PRIVACY_ATTR_VALUE_HIDDEN,\n },\n childNodes: [],\n isSVG,\n }\n }\n\n // Ignore Elements like Script and some Link, Metas\n if (nodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n return\n }\n\n const attributes = serializeAttributes(element, nodePrivacyLevel, options)\n\n let childNodes: SerializedNodeWithId[] = []\n if (\n hasChildNodes(element) &&\n // Do not serialize style children as the css rules are already in the _cssText attribute\n tagName !== 'style'\n ) {\n // OBJECT POOLING OPTIMIZATION:\n // We should not create a new object systematically as it could impact performances. Try to reuse\n // the same object as much as possible, and clone it only if we need to.\n let childNodesSerializationOptions\n if (options.parentNodePrivacyLevel === nodePrivacyLevel && options.ignoreWhiteSpace === (tagName === 'head')) {\n childNodesSerializationOptions = options\n } else {\n childNodesSerializationOptions = assign({}, options, {\n parentNodePrivacyLevel: nodePrivacyLevel,\n ignoreWhiteSpace: tagName === 'head',\n })\n }\n childNodes = serializeChildNodes(element, childNodesSerializationOptions)\n }\n\n return {\n type: NodeType.Element,\n tagName,\n attributes,\n childNodes,\n isSVG,\n }\n}\n\nfunction isSVGElement(el: Element): boolean {\n return el.tagName === 'svg' || el instanceof SVGElement\n}\n\n/**\n * Text Nodes are dependant on Element nodes\n * Privacy levels are set on elements so we check the parentElement of a text node\n * for privacy level.\n */\n\nfunction serializeTextNode(textNode: Text, options: SerializeOptions): TextNode | undefined {\n const textContent = getTextContent(textNode, options.ignoreWhiteSpace || false, options.parentNodePrivacyLevel)\n if (textContent === undefined) {\n return\n }\n return {\n type: NodeType.Text,\n textContent,\n }\n}\n\nfunction serializeCDataNode(): CDataNode {\n return {\n type: NodeType.CDATA,\n textContent: '',\n }\n}\n","import type { RumConfiguration } from '@datadog/browser-rum-core'\nimport type { SerializedNodeWithId } from '../../../types'\nimport type { SerializationContext } from './serialization.types'\nimport { serializeNodeWithId } from './serializeNode'\n\nexport function serializeDocument(\n document: Document,\n configuration: RumConfiguration,\n serializationContext: SerializationContext\n): SerializedNodeWithId {\n // We are sure that Documents are never ignored, so this function never returns null\n return serializeNodeWithId(document, {\n serializationContext,\n parentNodePrivacyLevel: configuration.defaultPrivacyLevel,\n configuration,\n })!\n}\n","import { isNodeShadowHost } from '@datadog/browser-rum-core'\n\nexport function isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {\n return Boolean((event as TouchEvent).changedTouches)\n}\n\nexport function getEventTarget(event: Event): Node {\n if (event.composed === true && isNodeShadowHost(event.target as Node)) {\n return event.composedPath()[0] as Node\n }\n return event.target as Node\n}\n","/**\n * Browsers have not standardized various dimension properties. Mobile devices typically report\n * dimensions in reference to the visual viewport, while desktop uses the layout viewport. For example,\n * Mobile Chrome will change innerWidth when a pinch zoom takes place, while Chrome Desktop (mac) will not.\n *\n * With the new Viewport API, we now calculate and normalize dimension properties to the layout viewport.\n * If the VisualViewport API is not supported by a browser, it isn't reasonably possible to detect or normalize\n * which viewport is being measured. Therefore these exported functions will fallback to assuming that the layout\n * viewport is being measured by the browser\n */\n\nimport type { VisualViewportRecord } from '../../types'\n\n// Scrollbar widths vary across properties on different devices and browsers\nconst TOLERANCE = 25\n\n/**\n * Use the Visual Viewport API's properties to measure scrollX/Y in reference to the layout viewport\n * in order to determine if window.scrollX/Y is measuring the layout or visual viewport.\n * This finding corresponds to which viewport mouseEvent.clientX/Y and window.innerWidth/Height measures.\n */\nfunction isVisualViewportFactoredIn(visualViewport: VisualViewport) {\n return (\n Math.abs(visualViewport.pageTop - visualViewport.offsetTop - window.scrollY) > TOLERANCE ||\n Math.abs(visualViewport.pageLeft - visualViewport.offsetLeft - window.scrollX) > TOLERANCE\n )\n}\n\ninterface LayoutCoordinates {\n layoutViewportX: number\n layoutViewportY: number\n visualViewportX: number\n visualViewportY: number\n}\n\nexport const convertMouseEventToLayoutCoordinates = (clientX: number, clientY: number): LayoutCoordinates => {\n const visualViewport = window.visualViewport\n const normalized: LayoutCoordinates = {\n layoutViewportX: clientX,\n layoutViewportY: clientY,\n visualViewportX: clientX,\n visualViewportY: clientY,\n }\n\n if (!visualViewport) {\n // On old browsers, we cannot normalize, so fallback to clientX/Y\n return normalized\n } else if (isVisualViewportFactoredIn(visualViewport)) {\n // Typically Mobile Devices\n normalized.layoutViewportX = Math.round(clientX + visualViewport.offsetLeft)\n normalized.layoutViewportY = Math.round(clientY + visualViewport.offsetTop)\n } else {\n // Typically Desktop Devices\n normalized.visualViewportX = Math.round(clientX - visualViewport.offsetLeft)\n normalized.visualViewportY = Math.round(clientY - visualViewport.offsetTop)\n }\n return normalized\n}\n\nexport const getVisualViewport = (visualViewport: VisualViewport): VisualViewportRecord['data'] => ({\n scale: visualViewport.scale,\n offsetLeft: visualViewport.offsetLeft,\n offsetTop: visualViewport.offsetTop,\n pageLeft: visualViewport.pageLeft,\n pageTop: visualViewport.pageTop,\n height: visualViewport.height,\n width: visualViewport.width,\n})\n","import { assign, timeStampNow } from '@datadog/browser-core'\nimport type { BrowserIncrementalData, BrowserIncrementalSnapshotRecord } from '../../types'\nimport { RecordType } from '../../types'\n\nexport function assembleIncrementalSnapshot<Data extends BrowserIncrementalData>(\n source: Data['source'],\n data: Omit<Data, 'source'>\n): BrowserIncrementalSnapshotRecord {\n return {\n data: assign(\n {\n source,\n },\n data\n ) as Data,\n type: RecordType.IncrementalSnapshot,\n timestamp: timeStampNow(),\n }\n}\n","import { addEventListeners, addTelemetryDebug, DOM_EVENT, throttle } from '@datadog/browser-core'\nimport type { RumConfiguration } from '@datadog/browser-rum-core'\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization'\nimport type { BrowserIncrementalSnapshotRecord, MousemoveData, MousePosition } from '../../../types'\nimport { IncrementalSource } from '../../../types'\nimport { getEventTarget, isTouchEvent } from '../eventsUtils'\nimport { convertMouseEventToLayoutCoordinates } from '../viewports'\nimport { assembleIncrementalSnapshot } from '../assembly'\nimport type { Tracker } from './tracker.types'\n\nconst MOUSE_MOVE_OBSERVER_THRESHOLD = 50\n\nexport type MousemoveCallBack = (incrementalSnapshotRecord: BrowserIncrementalSnapshotRecord) => void\n\nexport function trackMove(configuration: RumConfiguration, moveCb: MousemoveCallBack): Tracker {\n const { throttled: updatePosition, cancel: cancelThrottle } = throttle(\n (event: MouseEvent | TouchEvent) => {\n const target = getEventTarget(event)\n if (hasSerializedNode(target)) {\n const coordinates = tryToComputeCoordinates(event)\n if (!coordinates) {\n return\n }\n const position: MousePosition = {\n id: getSerializedNodeId(target),\n timeOffset: 0,\n x: coordinates.x,\n y: coordinates.y,\n }\n\n moveCb(\n assembleIncrementalSnapshot<MousemoveData>(\n isTouchEvent(event) ? IncrementalSource.TouchMove : IncrementalSource.MouseMove,\n { positions: [position] }\n )\n )\n }\n },\n MOUSE_MOVE_OBSERVER_THRESHOLD,\n {\n trailing: false,\n }\n )\n\n const { stop: removeListener } = addEventListeners(\n configuration,\n document,\n [DOM_EVENT.MOUSE_MOVE, DOM_EVENT.TOUCH_MOVE],\n updatePosition,\n {\n capture: true,\n passive: true,\n }\n )\n\n return {\n stop: () => {\n removeListener()\n cancelThrottle()\n },\n }\n}\n\nexport function tryToComputeCoordinates(event: MouseEvent | TouchEvent) {\n let { clientX: x, clientY: y } = isTouchEvent(event) ? event.changedTouches[0] : event\n if (window.visualViewport) {\n const { visualViewportX, visualViewportY } = convertMouseEventToLayoutCoordinates(x, y)\n x = visualViewportX\n y = visualViewportY\n }\n if (!Number.isFinite(x) || !Number.isFinite(y)) {\n if (event.isTrusted) {\n addTelemetryDebug('mouse/touch event without x/y')\n }\n return undefined\n }\n return { x, y }\n}\n","import { assign, addEventListeners, DOM_EVENT } from '@datadog/browser-core'\nimport { getNodePrivacyLevel, NodePrivacyLevel } from '@datadog/browser-rum-core'\nimport type { RumConfiguration } from '@datadog/browser-rum-core'\nimport type { MouseInteraction, MouseInteractionData, BrowserIncrementalSnapshotRecord } from '../../../types'\nimport { IncrementalSource, MouseInteractionType } from '../../../types'\nimport { assembleIncrementalSnapshot } from '../assembly'\nimport { getEventTarget } from '../eventsUtils'\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization'\nimport type { RecordIds } from '../recordIds'\nimport { tryToComputeCoordinates } from './trackMove'\nimport type { Tracker } from './tracker.types'\n\nconst eventTypeToMouseInteraction = {\n // Listen for pointerup DOM events instead of mouseup for MouseInteraction/MouseUp records. This\n // allows to reference such records from Frustration records.\n //\n // In the context of supporting Mobile Session Replay, we introduced `PointerInteraction` records\n // used by the Mobile SDKs in place of `MouseInteraction`. In the future, we should replace\n // `MouseInteraction` by `PointerInteraction` in the Browser SDK so we have an uniform way to\n // convey such interaction. This would cleanly solve the issue since we would have\n // `PointerInteraction/Up` records that we could reference from `Frustration` records.\n [DOM_EVENT.POINTER_UP]: MouseInteractionType.MouseUp,\n\n [DOM_EVENT.MOUSE_DOWN]: MouseInteractionType.MouseDown,\n [DOM_EVENT.CLICK]: MouseInteractionType.Click,\n [DOM_EVENT.CONTEXT_MENU]: MouseInteractionType.ContextMenu,\n [DOM_EVENT.DBL_CLICK]: MouseInteractionType.DblClick,\n [DOM_EVENT.FOCUS]: MouseInteractionType.Focus,\n [DOM_EVENT.BLUR]: MouseInteractionType.Blur,\n [DOM_EVENT.TOUCH_START]: MouseInteractionType.TouchStart,\n [DOM_EVENT.TOUCH_END]: MouseInteractionType.TouchEnd,\n}\n\nexport type MouseInteractionCallback = (record: BrowserIncrementalSnapshotRecord) => void\n\nexport function trackMouseInteraction(\n configuration: RumConfiguration,\n mouseInteractionCb: MouseInteractionCallback,\n recordIds: RecordIds\n): Tracker {\n const handler = (event: MouseEvent | TouchEvent | FocusEvent) => {\n const target = getEventTarget(event)\n if (\n getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN ||\n !hasSerializedNode(target)\n ) {\n return\n }\n const id = getSerializedNodeId(target)\n const type = eventTypeToMouseInteraction[event.type as keyof typeof eventTypeToMouseInteraction]\n\n let interaction: MouseInteraction\n if (type !== MouseInteractionType.Blur && type !== MouseInteractionType.Focus) {\n const coordinates = tryToComputeCoordinates(event as MouseEvent | TouchEvent)\n if (!coordinates) {\n return\n }\n interaction = { id, type, x: coordinates.x, y: coordinates.y }\n } else {\n interaction = { id, type }\n }\n\n const record = assign(\n { id: recordIds.getIdForEvent(event) },\n assembleIncrementalSnapshot<MouseInteractionData>(IncrementalSource.MouseInteraction, interaction)\n )\n mouseInteractionCb(record)\n }\n return addEventListeners(\n configuration,\n document,\n Object.keys(eventTypeToMouseInteraction) as Array<keyof typeof eventTypeToMouseInteraction>,\n handler,\n {\n capture: true,\n passive: true,\n }\n )\n}\n","import { DOM_EVENT, throttle, addEventListener } from '@datadog/browser-core'\nimport type { RumConfiguration } from '@datadog/browser-rum-core'\nimport { getScrollX, getScrollY, getNodePrivacyLevel, NodePrivacyLevel } from '@datadog/browser-rum-core'\nimport type { ElementsScrollPositions } from '../elementsScrollPositions'\nimport { getEventTarget } from '../eventsUtils'\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization'\nimport { IncrementalSource } from '../../../types'\nimport type { BrowserIncrementalSnapshotRecord, ScrollData } from '../../../types'\nimport { assembleIncrementalSnapshot } from '../assembly'\nimport type { Tracker } from './tracker.types'\n\nconst SCROLL_OBSERVER_THRESHOLD = 100\n\nexport type ScrollCallback = (incrementalSnapshotRecord: BrowserIncrementalSnapshotRecord) => void\n\nexport function trackScroll(\n configuration: RumConfiguration,\n scrollCb: ScrollCallback,\n elementsScrollPositions: ElementsScrollPositions,\n target: Document | ShadowRoot = document\n): Tracker {\n const { throttled: updatePosition, cancel: cancelThrottle } = throttle((event: Event) => {\n const target = getEventTarget(event) as HTMLElement | Document\n if (\n !target ||\n getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN ||\n !hasSerializedNode(target)\n ) {\n return\n }\n const id = getSerializedNodeId(target)\n const scrollPositions =\n target === document\n ? {\n scrollTop: getScrollY(),\n scrollLeft: getScrollX(),\n }\n : {\n scrollTop: Math.round((target as HTMLElement).scrollTop),\n scrollLeft: Math.round((target as HTMLElement).scrollLeft),\n }\n elementsScrollPositions.set(target, scrollPositions)\n scrollCb(\n assembleIncrementalSnapshot<ScrollData>(IncrementalSource.Scroll, {\n id,\n x: scrollPositions.scrollLeft,\n y: scrollPositions.scrollTop,\n })\n )\n }, SCROLL_OBSERVER_THRESHOLD)\n\n const { stop: removeListener } = addEventListener(configuration, target, DOM_EVENT.SCROLL, updatePosition, {\n capture: true,\n passive: true,\n })\n\n return {\n stop: () => {\n removeListener()\n cancelThrottle()\n },\n }\n}\n","import { throttle, DOM_EVENT, addEventListeners, timeStampNow, noop } from '@datadog/browser-core'\nimport type { RumConfiguration, ViewportDimension } from '@datadog/browser-rum-core'\nimport { initViewportObservable } from '@datadog/browser-rum-core'\nimport { IncrementalSource, RecordType } from '../../../types'\nimport type { BrowserIncrementalSnapshotRecord, ViewportResizeData, VisualViewportRecord } from '../../../types'\nimport { getVisualViewport } from '../viewports'\nimport { assembleIncrementalSnapshot } from '../assembly'\nimport type { Tracker } from './tracker.types'\n\nconst VISUAL_VIEWPORT_OBSERVER_THRESHOLD = 200\n\nexport type ViewportResizeCallback = (incrementalSnapshotRecord: BrowserIncrementalSnapshotRecord) => void\n\nexport type VisualViewportResizeCallback = (visualViewportRecord: VisualViewportRecord) => void\n\nexport function trackViewportResize(\n configuration: RumConfiguration,\n viewportResizeCb: ViewportResizeCallback\n): Tracker {\n const viewportResizeSubscription = initViewportObservable(configuration).subscribe((data: ViewportDimension) => {\n viewportResizeCb(assembleIncrementalSnapshot<ViewportResizeData>(IncrementalSource.ViewportResize, data))\n })\n\n return {\n stop: () => {\n viewportResizeSubscription.unsubscribe()\n },\n }\n}\n\nexport function trackVisualViewportResize(\n configuration: RumConfiguration,\n visualViewportResizeCb: VisualViewportResizeCallback\n): Tracker {\n const visualViewport = window.visualViewport\n if (!visualViewport) {\n return { stop: noop }\n }\n const { throttled: updateDimension, cancel: cancelThrottle } = throttle(\n () => {\n visualViewportResizeCb({\n data: getVisualViewport(visualViewport),\n type: RecordType.VisualViewport,\n timestamp: timeStampNow(),\n })\n },\n VISUAL_VIEWPORT_OBSERVER_THRESHOLD,\n {\n trailing: false,\n }\n )\n const { stop: removeListener } = addEventListeners(\n configuration,\n visualViewport,\n [DOM_EVENT.RESIZE, DOM_EVENT.SCROLL],\n updateDimension,\n {\n capture: true,\n passive: true,\n }\n )\n\n return {\n stop: () => {\n removeListener()\n cancelThrottle()\n },\n }\n}\n","import { DOM_EVENT, addEventListeners } from '@datadog/browser-core'\nimport type { RumConfiguration } from '@datadog/browser-rum-core'\nimport { NodePrivacyLevel, getNodePrivacyLevel } from '@datadog/browser-rum-core'\nimport type { BrowserIncrementalSnapshotRecord, MediaInteractionData } from '../../../types'\nimport { IncrementalSource, MediaInteractionType } from '../../../types'\nimport { getEventTarget } from '../eventsUtils'\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization'\nimport { assembleIncrementalSnapshot } from '../assembly'\nimport type { Tracker } from './tracker.types'\n\nexport type MediaInteractionCallback = (incrementalSnapshotRecord: BrowserIncrementalSnapshotRecord) => void\n\nexport function trackMediaInteraction(\n configuration: RumConfiguration,\n mediaInteractionCb: MediaInteractionCallback\n): Tracker {\n return addEventListeners(\n configuration,\n document,\n [DOM_EVENT.PLAY, DOM_EVENT.PAUSE],\n (event) => {\n const target = getEventTarget(event)\n if (\n !target ||\n getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN ||\n !hasSerializedNode(target)\n ) {\n return\n }\n mediaInteractionCb(\n assembleIncrementalSnapshot<MediaInteractionData>(IncrementalSource.MediaInteraction, {\n id: getSerializedNodeId(target),\n type: event.type === DOM_EVENT.PLAY ? MediaInteractionType.Play : MediaInteractionType.Pause,\n })\n )\n },\n {\n capture: true,\n passive: true,\n }\n )\n}\n","import { instrumentMethod } from '@datadog/browser-core'\nimport { IncrementalSource } from '../../../types'\nimport type { StyleSheetRuleData, BrowserIncrementalSnapshotRecord } from '../../../types'\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization'\nimport { assembleIncrementalSnapshot } from '../assembly'\nimport type { Tracker } from './tracker.types'\n\ntype GroupingCSSRuleTypes = typeof CSSGroupingRule | typeof CSSMediaRule | typeof CSSSupportsRule\n\nexport type StyleSheetCallback = (incrementalSnapshotRecord: BrowserIncrementalSnapshotRecord) => void\n\nexport function trackStyleSheet(styleSheetCb: StyleSheetCallback): Tracker {\n function checkStyleSheetAndCallback(styleSheet: CSSStyleSheet | null, callback: (id: number) => void): void {\n if (styleSheet && hasSerializedNode(styleSheet.ownerNode!)) {\n callback(getSerializedNodeId(styleSheet.ownerNode))\n }\n }\n\n const instrumentationStoppers = [\n instrumentMethod(CSSStyleSheet.prototype, 'insertRule', ({ target: styleSheet, parameters: [rule, index] }) => {\n checkStyleSheetAndCallback(styleSheet, (id) =>\n styleSheetCb(\n assembleIncrementalSnapshot<StyleSheetRuleData>(IncrementalSource.StyleSheetRule, {\n id,\n adds: [{ rule, index }],\n })\n )\n )\n }),\n\n instrumentMethod(CSSStyleSheet.prototype, 'deleteRule', ({ target: styleSheet, parameters: [index] }) => {\n checkStyleSheetAndCallback(styleSheet, (id) =>\n styleSheetCb(\n assembleIncrementalSnapshot<StyleSheetRuleData>(IncrementalSource.StyleSheetRule, {\n id,\n removes: [{ index }],\n })\n )\n )\n }),\n ]\n\n if (typeof CSSGroupingRule !== 'undefined') {\n instrumentGroupingCSSRuleClass(CSSGroupingRule)\n } else {\n instrumentGroupingCSSRuleClass(CSSMediaRule)\n instrumentGroupingCSSRuleClass(CSSSupportsRule)\n }\n\n function instrumentGroupingCSSRuleClass(cls: GroupingCSSRuleTypes) {\n instrumentationStoppers.push(\n instrumentMethod(cls.prototype, 'insertRule', ({ target: styleSheet, parameters: [rule, index] }) => {\n checkStyleSheetAndCallback(styleSheet.parentStyleSheet, (id) => {\n const path = getPathToNestedCSSRule(styleSheet)\n if (path) {\n path.push(index || 0)\n styleSheetCb(\n assembleIncrementalSnapshot<StyleSheetRuleData>(IncrementalSource.StyleSheetRule, {\n id,\n adds: [{ rule, index: path }],\n })\n )\n }\n })\n }),\n\n instrumentMethod(cls.prototype, 'deleteRule', ({ target: styleSheet, parameters: [index] }) => {\n checkStyleSheetAndCallback(styleSheet.parentStyleSheet, (id) => {\n const path = getPathToNestedCSSRule(styleSheet)\n if (path) {\n path.push(index)\n styleSheetCb(\n assembleIncrementalSnapshot<StyleSheetRuleData>(IncrementalSource.StyleSheetRule, {\n id,\n removes: [{ index: path }],\n })\n )\n }\n })\n })\n )\n }\n\n return {\n stop: () => {\n instrumentationStoppers.forEach((stopper) => stopper.stop())\n },\n }\n}\n\nexport function getPathToNestedCSSRule(rule: CSSRule): number[] | undefined {\n const path: number[] = []\n let currentRule = rule\n while (currentRule.parentRule) {\n const rules = Array.from((currentRule.parentRule as CSSGroupingRule).cssRules)\n const index = rules.indexOf(currentRule)\n path.unshift(index)\n currentRule = currentRule.parentRule\n }\n // A rule may not be attached to a stylesheet\n if (!currentRule.parentStyleSheet) {\n return\n }\n\n const rules = Array.from(currentRule.parentStyleSheet.cssRules)\n const index = rules.indexOf(currentRule)\n path.unshift(index)\n\n return path\n}\n","import { DOM_EVENT, addEventListeners, timeStampNow } from '@datadog/browser-core'\nimport type { RumConfiguration } from '@datadog/browser-rum-core'\nimport { RecordType, type FocusRecord } from '../../../types'\nimport type { Tracker } from './tracker.types'\n\nexport type FocusCallback = (data: FocusRecord) => void\n\nexport function trackFocus(configuration: RumConfiguration, focusCb: FocusCallback): Tracker {\n return addEventListeners(configuration, window, [DOM_EVENT.FOCUS, DOM_EVENT.BLUR], () => {\n focusCb({\n data: { has_focus: document.hasFocus() },\n type: RecordType.Focus,\n timestamp: timeStampNow(),\n })\n })\n}\n","import type { LifeCycle } from '@datadog/browser-rum-core'\nimport { ActionType, RumEventType, LifeCycleEventType } from '@datadog/browser-rum-core'\nimport type { FrustrationRecord } from '../../../types'\nimport { RecordType } from '../../../types'\nimport type { RecordIds } from '../recordIds'\nimport type { Tracker } from './tracker.types'\n\nexport type FrustrationCallback = (record: FrustrationRecord) => void\n\nexport function trackFrustration(\n lifeCycle: LifeCycle,\n frustrationCb: FrustrationCallback,\n recordIds: RecordIds\n): Tracker {\n const frustrationSubscription = lifeCycle.subscribe(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, (data) => {\n if (\n data.rawRumEvent.type === RumEventType.ACTION &&\n data.rawRumEvent.action.type === ActionType.CLICK &&\n data.rawRumEvent.action.frustration?.type?.length &&\n 'events' in data.domainContext &&\n data.domainContext.events &&\n data.domainContext.events.length\n ) {\n frustrationCb({\n timestamp: data.rawRumEvent.date,\n type: RecordType.FrustrationRecord,\n data: {\n frustrationTypes: data.rawRumEvent.action.frustration.type,\n recordIds: data.domainContext.events.map((e) => recordIds.getIdForEvent(e)),\n },\n })\n }\n })\n\n return {\n stop: () => {\n frustrationSubscription.unsubscribe()\n },\n }\n}\n","import { timeStampNow } from '@datadog/browser-core'\nimport type { LifeCycle } from '@datadog/browser-rum-core'\nimport { LifeCycleEventType } from '@datadog/browser-rum-core'\nimport type { ViewEndRecord } from '../../../types'\nimport { RecordType } from '../../../types'\nimport type { Tracker } from './tracker.types'\n\nexport type ViewEndCallback = (record: ViewEndRecord) => void\n\nexport function trackViewEnd(lifeCycle: LifeCycle, viewEndCb: ViewEndCallback): Tracker {\n const viewEndSubscription = lifeCycle.subscribe(LifeCycleEventType.VIEW_ENDED, () => {\n viewEndCb({\n timestamp: timeStampNow(),\n type: RecordType.ViewEnd,\n })\n })\n\n return {\n stop: () => {\n viewEndSubscription.unsubscribe()\n },\n }\n}\n","import { instrumentSetter, assign, DOM_EVENT, addEventListeners, forEach, noop } from '@datadog/browser-core'\nimport { NodePrivacyLevel, getNodePrivacyLevel, shouldMaskNode, cssEscape } from '@datadog/browser-rum-core'\nimport type { RumConfiguration } from '@datadog/browser-rum-core'\nimport { IncrementalSource } from '../../../types'\nimport type { BrowserIncrementalSnapshotRecord, InputData, InputState } from '../../../types'\nimport { getEventTarget } from '../eventsUtils'\nimport { getElementInputValue, getSerializedNodeId, hasSerializedNode } from '../serialization'\nimport { assembleIncrementalSnapshot } from '../assembly'\nimport type { Tracker } from './tracker.types'\n\nexport type InputCallback = (incrementalSnapshotRecord: BrowserIncrementalSnapshotRecord) => void\n\nexport function trackInput(\n configuration: RumConfiguration,\n inputCb: InputCallback,\n target: Document | ShadowRoot = document\n): Tracker {\n const defaultPrivacyLevel = configuration.defaultPrivacyLevel\n const lastInputStateMap: WeakMap<Node, InputState> = new WeakMap()\n\n const isShadowRoot = target !== document\n\n const { stop: stopEventListeners } = addEventListeners(\n configuration,\n target,\n // The 'input' event bubbles across shadow roots, so we don't have to listen for it on shadow\n // roots since it will be handled by the event listener that we did add to the document. Only\n // the 'change' event is blocked and needs to be handled on shadow roots.\n isShadowRoot ? [DOM_EVENT.CHANGE] : [DOM_EVENT.INPUT, DOM_EVENT.CHANGE],\n (event) => {\n const target = getEventTarget(event)\n if (\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement\n ) {\n onElementChange(target)\n }\n },\n {\n capture: true,\n passive: true,\n }\n )\n\n let stopPropertySetterInstrumentation: () => void\n if (!isShadowRoot) {\n const instrumentationStoppers = [\n instrumentSetter(HTMLInputElement.prototype, 'value', onElementChange),\n instrumentSetter(HTMLInputElement.prototype, 'checked', onElementChange),\n instrumentSetter(HTMLSelectElement.prototype, 'value', onElementChange),\n instrumentSetter(HTMLTextAreaElement.prototype, 'value', onElementChange),\n instrumentSetter(HTMLSelectElement.prototype, 'selectedIndex', onElementChange),\n ]\n stopPropertySetterInstrumentation = () => {\n instrumentationStoppers.forEach((stopper) => stopper.stop())\n }\n } else {\n stopPropertySetterInstrumentation = noop\n }\n\n return {\n stop: () => {\n stopPropertySetterInstrumentation()\n stopEventListeners()\n },\n }\n\n function onElementChange(target: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement) {\n const nodePrivacyLevel = getNodePrivacyLevel(target, defaultPrivacyLevel)\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n return\n }\n\n const type = target.type\n\n let inputState: InputState\n if (type === 'radio' || type === 'checkbox') {\n if (shouldMaskNode(target, nodePrivacyLevel)) {\n return\n }\n inputState = { isChecked: (target as HTMLInputElement).checked }\n } else {\n const value = getElementInputValue(target, nodePrivacyLevel)\n if (value === undefined) {\n return\n }\n inputState = { text: value }\n }\n\n // Can be multiple changes on the same node within the same batched mutation observation.\n cbWithDedup(target, inputState)\n\n // If a radio was checked, other radios with the same name attribute will be unchecked.\n const name = target.name\n if (type === 'radio' && name && (target as HTMLInputElement).checked) {\n forEach(document.querySelectorAll(`input[type=\"radio\"][name=\"${cssEscape(name)}\"]`), (el: Element) => {\n if (el !== target) {\n // TODO: Consider the privacy implications for various differing input privacy levels\n cbWithDedup(el, { isChecked: false })\n }\n })\n }\n }\n\n /**\n * There can be multiple changes on the same node within the same batched mutation observation.\n */\n function cbWithDedup(target: Node, inputState: InputState) {\n if (!hasSerializedNode(target)) {\n return\n }\n const lastInputState = lastInputStateMap.get(target)\n if (\n !lastInputState ||\n (lastInputState as { text?: string }).text !== (inputState as { text?: string }).text ||\n (lastInputState as { isChecked?: boolean }).isChecked !== (inputState as { isChecked?: boolean }).isChecked\n ) {\n lastInputStateMap.set(target, inputState)\n inputCb(\n assembleIncrementalSnapshot<InputData>(\n IncrementalSource.Input,\n assign(\n {\n id: getSerializedNodeId(target),\n },\n inputState\n )\n )\n )\n }\n }\n}\n","import { noop, monitor, throttle } from '@datadog/browser-core'\nimport type { RumMutationRecord } from './trackers'\n\n/**\n * Maximum duration to wait before processing mutations. If the browser is idle, mutations will be\n * processed more quickly. If the browser is busy executing small tasks (ex: rendering frames), the\n * mutations will wait MUTATION_PROCESS_MAX_DELAY milliseconds before being processed. If the\n * browser is busy executing a longer task, mutations will be processed after this task.\n */\nconst MUTATION_PROCESS_MAX_DELAY = 100\n/**\n * Minimum duration to wait before processing mutations. This is used to batch mutations together\n * and be able to deduplicate them to save processing time and bandwidth.\n * 16ms is the duration of a frame at 60fps that ensure fluid UI.\n */\nexport const MUTATION_PROCESS_MIN_DELAY = 16\n\nexport function createMutationBatch(processMutationBatch: (mutations: RumMutationRecord[]) => void) {\n let cancelScheduledFlush = noop\n let pendingMutations: RumMutationRecord[] = []\n\n function flush() {\n cancelScheduledFlush()\n processMutationBatch(pendingMutations)\n pendingMutations = []\n }\n\n const { throttled: throttledFlush, cancel: cancelThrottle } = throttle(flush, MUTATION_PROCESS_MIN_DELAY, {\n leading: false,\n })\n\n return {\n addMutations: (mutations: RumMutationRecord[]) => {\n if (pendingMutations.length === 0) {\n cancelScheduledFlush = requestIdleCallback(throttledFlush, { timeout: MUTATION_PROCESS_MAX_DELAY })\n }\n pendingMutations.push(...mutations)\n },\n\n flush,\n\n stop: () => {\n cancelScheduledFlush()\n cancelThrottle()\n },\n }\n}\n\n/**\n * Use 'requestIdleCallback' when available: it will throttle the mutation processing if the\n * browser is busy rendering frames (ex: when frames are below 60fps). When not available, the\n * fallback on 'requestAnimationFrame' will still ensure the mutations are processed after any\n * browser rendering process (Layout, Recalculate Style, etc.), so we can serialize DOM nodes efficiently.\n *\n * Note: check both 'requestIdleCallback' and 'cancelIdleCallback' existence because some polyfills only implement 'requestIdleCallback'.\n */\nfunction requestIdleCallback(callback: () => void, opts?: { timeout?: number }) {\n if (window.requestIdleCallback && window.cancelIdleCallback) {\n const id = window.requestIdleCallback(monitor(callback), opts)\n return () => window.cancelIdleCallback(id)\n }\n const id = window.requestAnimationFrame(monitor(callback))\n return () => window.cancelAnimationFrame(id)\n}\n","import { monitor, noop } from '@datadog/browser-core'\nimport type { RumConfiguration, NodePrivacyLevelCache } from '@datadog/browser-rum-core'\nimport {\n isNodeShadowHost,\n getMutationObserverConstructor,\n getParentNode,\n forEachChildNodes,\n getNodePrivacyLevel,\n getTextContent,\n NodePrivacyLevel,\n} from '@datadog/browser-rum-core'\nimport { IncrementalSource } from '../../../types'\nimport type {\n BrowserMutationData,\n AddedNodeMutation,\n AttributeMutation,\n RemovedNodeMutation,\n TextMutation,\n BrowserIncrementalSnapshotRecord,\n} from '../../../types'\nimport type { NodeWithSerializedNode } from '../serialization'\nimport {\n getElementInputValue,\n getSerializedNodeId,\n hasSerializedNode,\n nodeAndAncestorsHaveSerializedNode,\n serializeNodeWithId,\n SerializationContextStatus,\n serializeAttribute,\n} from '../serialization'\nimport { createMutationBatch } from '../mutationBatch'\nimport type { ShadowRootCallBack, ShadowRootsController } from '../shadowRootsController'\nimport { assembleIncrementalSnapshot } from '../assembly'\nimport type { Tracker } from './tracker.types'\n\nexport type MutationCallBack = (incrementalSnapshotRecord: BrowserIncrementalSnapshotRecord) => void\n\ntype WithSerializedTarget<T> = T & { target: NodeWithSerializedNode }\n\n// https://dom.spec.whatwg.org/#interface-mutationrecord\ninterface RumCharacterDataMutationRecord {\n type: 'characterData'\n target: Node\n oldValue: string | null\n}\n\ninterface RumAttributesMutationRecord {\n type: 'attributes'\n target: Element\n oldValue: string | null\n attributeName: string | null\n}\n\ninterface RumChildListMutationRecord {\n type: 'childList'\n target: Node\n addedNodes: NodeList\n removedNodes: NodeList\n}\n\nexport type RumMutationRecord =\n | RumCharacterDataMutationRecord\n | RumAttributesMutationRecord\n | RumChildListMutationRecord\n\nexport type MutationTracker = Tracker & { flush: () => void }\n\n/**\n * Buffers and aggregate mutations generated by a MutationObserver into MutationPayload\n */\nexport function trackMutation(\n mutationCallback: MutationCallBack,\n configuration: RumConfiguration,\n shadowRootsController: ShadowRootsController,\n target: Node\n): MutationTracker {\n const MutationObserver = getMutationObserverConstructor()\n if (!MutationObserver) {\n return { stop: noop, flush: noop }\n }\n\n const mutationBatch = createMutationBatch((mutations) => {\n processMutations(\n mutations.concat(observer.takeRecords() as RumMutationRecord[]),\n mutationCallback,\n configuration,\n shadowRootsController\n )\n })\n\n const observer = new MutationObserver(monitor(mutationBatch.addMutations) as (callback: MutationRecord[]) => void)\n\n observer.observe(target, {\n attributeOldValue: true,\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n })\n\n return {\n stop: () => {\n observer.disconnect()\n mutationBatch.stop()\n },\n flush: () => {\n mutationBatch.flush()\n },\n }\n}\n\nfunction processMutations(\n mutations: RumMutationRecord[],\n mutationCallback: MutationCallBack,\n configuration: RumConfiguration,\n shadowRootsController: ShadowRootsController\n) {\n const nodePrivacyLevelCache: NodePrivacyLevelCache = new Map()\n\n mutations\n .filter((mutation): mutation is RumChildListMutationRecord => mutation.type === 'childList')\n .forEach((mutation) => {\n mutation.removedNodes.forEach((removedNode) => {\n traverseRemovedShadowDom(removedNode, shadowRootsController.removeShadowRoot)\n })\n })\n\n // Discard any mutation with a 'target' node that:\n // * isn't injected in the current document or isn't known/serialized yet: those nodes are likely\n // part of a mutation occurring in a parent Node\n // * should be hidden or ignored\n const filteredMutations = mutations.filter(\n (mutation): mutation is WithSerializedTarget<RumMutationRecord> =>\n mutation.target.isConnected &&\n nodeAndAncestorsHaveSerializedNode(mutation.target) &&\n getNodePrivacyLevel(mutation.target, configuration.defaultPrivacyLevel, nodePrivacyLevelCache) !==\n NodePrivacyLevel.HIDDEN\n )\n\n const { adds, removes, hasBeenSerialized } = processChildListMutations(\n filteredMutations.filter(\n (mutation): mutation is WithSerializedTarget<RumChildListMutationRecord> => mutation.type === 'childList'\n ),\n configuration,\n shadowRootsController,\n nodePrivacyLevelCache\n )\n\n const texts = processCharacterDataMutations(\n filteredMutations.filter(\n (mutation): mutation is WithSerializedTarget<RumCharacterDataMutationRecord> =>\n mutation.type === 'characterData' && !hasBeenSerialized(mutation.target)\n ),\n configuration,\n nodePrivacyLevelCache\n )\n\n const attributes = processAttributesMutations(\n filteredMutations.filter(\n (mutation): mutation is WithSerializedTarget<RumAttributesMutationRecord> =>\n mutation.type === 'attributes' && !hasBeenSerialized(mutation.target)\n ),\n configuration,\n nodePrivacyLevelCache\n )\n\n if (!texts.length && !attributes.length && !removes.length && !adds.length) {\n return\n }\n\n mutationCallback(\n assembleIncrementalSnapshot<BrowserMutationData>(IncrementalSource.Mutation, { adds, removes, texts, attributes })\n )\n}\n\nfunction processChildListMutations(\n mutations: Array<WithSerializedTarget<RumChildListMutationRecord>>,\n configuration: RumConfiguration,\n shadowRootsController: ShadowRootsController,\n nodePrivacyLevelCache: NodePrivacyLevelCache\n) {\n // First, we iterate over mutations to collect:\n //\n // * nodes that have been added in the document and not removed by a subsequent mutation\n // * nodes that have been removed from the document but were not added in a previous mutation\n //\n // For this second category, we also collect their previous parent (mutation.target) because we'll\n // need it to emit a 'remove' mutation.\n //\n // Those two categories may overlap: if a node moved from a position to another, it is reported as\n // two mutation records, one with a \"removedNodes\" and the other with \"addedNodes\". In this case,\n // the node will be in both sets.\n const addedAndMovedNodes = new Set<Node>()\n const removedNodes = new Map<Node, NodeWithSerializedNode>()\n for (const mutation of mutations) {\n mutation.addedNodes.forEach((node) => {\n addedAndMovedNodes.add(node)\n })\n mutation.removedNodes.forEach((node) => {\n if (!addedAndMovedNodes.has(node)) {\n removedNodes.set(node, mutation.target)\n }\n addedAndMovedNodes.delete(node)\n })\n }\n\n // Then, we sort nodes that are still in the document by topological order, for two reasons:\n //\n // * We will serialize each added nodes with their descendants. We don't want to serialize a node\n // twice, so we need to iterate over the parent nodes first and skip any node that is contained in\n // a precedent node.\n //\n // * To emit \"add\" mutations, we need references to the parent and potential next sibling of each\n // added node. So we need to iterate over the parent nodes first, and when multiple nodes are\n // siblings, we want to iterate from last to first. This will ensure that any \"next\" node is\n // already serialized and have an id.\n const sortedAddedAndMovedNodes = Array.from(addedAndMovedNodes)\n sortAddedAndMovedNodes(sortedAddedAndMovedNodes)\n\n // Then, we iterate over our sorted node sets to emit mutations. We collect the newly serialized\n // node ids in a set to be able to skip subsequent related mutations.\n const serializedNodeIds = new Set<number>()\n\n const addedNodeMutations: AddedNodeMutation[] = []\n for (const node of sortedAddedAndMovedNodes) {\n if (hasBeenSerialized(node)) {\n continue\n }\n\n const parentNodePrivacyLevel = getNodePrivacyLevel(\n node.parentNode!,\n configuration.defaultPrivacyLevel,\n nodePrivacyLevelCache\n )\n if (parentNodePrivacyLevel === NodePrivacyLevel.HIDDEN || parentNodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n continue\n }\n\n const serializedNode = serializeNodeWithId(node, {\n serializedNodeIds,\n parentNodePrivacyLevel,\n serializationContext: { status: SerializationContextStatus.MUTATION, shadowRootsController },\n configuration,\n })\n if (!serializedNode) {\n continue\n }\n\n const parentNode = getParentNode(node)!\n addedNodeMutations.push({\n nextId: getNextSibling(node),\n parentId: getSerializedNodeId(parentNode)!,\n node: serializedNode,\n })\n }\n // Finally, we emit remove mutations.\n const removedNodeMutations: RemovedNodeMutation[] = []\n removedNodes.forEach((parent, node) => {\n if (hasSerializedNode(node)) {\n removedNodeMutations.push({\n parentId: getSerializedNodeId(parent),\n id: getSerializedNodeId(node),\n })\n }\n })\n\n return { adds: addedNodeMutations, removes: removedNodeMutations, hasBeenSerialized }\n\n function hasBeenSerialized(node: Node) {\n return hasSerializedNode(node) && serializedNodeIds.has(getSerializedNodeId(node))\n }\n\n function getNextSibling(node: Node): null | number {\n let nextSibling = node.nextSibling\n while (nextSibling) {\n if (hasSerializedNode(nextSibling)) {\n return getSerializedNodeId(nextSibling)\n }\n nextSibling = nextSibling.nextSibling\n }\n\n return null\n }\n}\n\nfunction processCharacterDataMutations(\n mutations: Array<WithSerializedTarget<RumCharacterDataMutationRecord>>,\n configuration: RumConfiguration,\n nodePrivacyLevelCache: NodePrivacyLevelCache\n) {\n const textMutations: TextMutation[] = []\n\n // Deduplicate mutations based on their target node\n const handledNodes = new Set<Node>()\n const filteredMutations = mutations.filter((mutation) => {\n if (handledNodes.has(mutation.target)) {\n return false\n }\n handledNodes.add(mutation.target)\n return true\n })\n\n // Emit mutations\n for (const mutation of filteredMutations) {\n const value = mutation.target.textContent\n if (value === mutation.oldValue) {\n continue\n }\n\n const parentNodePrivacyLevel = getNodePrivacyLevel(\n getParentNode(mutation.target)!,\n configuration.defaultPrivacyLevel,\n nodePrivacyLevelCache\n )\n if (parentNodePrivacyLevel === NodePrivacyLevel.HIDDEN || parentNodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n continue\n }\n\n textMutations.push({\n id: getSerializedNodeId(mutation.target),\n // TODO: pass a valid \"ignoreWhiteSpace\" argument\n value: getTextContent(mutation.target, false, parentNodePrivacyLevel) ?? null,\n })\n }\n\n return textMutations\n}\n\nfunction processAttributesMutations(\n mutations: Array<WithSerializedTarget<RumAttributesMutationRecord>>,\n configuration: RumConfiguration,\n nodePrivacyLevelCache: NodePrivacyLevelCache\n) {\n const attributeMutations: AttributeMutation[] = []\n\n // Deduplicate mutations based on their target node and changed attribute\n const handledElements = new Map<Element, Set<string>>()\n const filteredMutations = mutations.filter((mutation) => {\n const handledAttributes = handledElements.get(mutation.target)\n if (handledAttributes && handledAttributes.has(mutation.attributeName!)) {\n return false\n }\n if (!handledAttributes) {\n handledElements.set(mutation.target, new Set([mutation.attributeName!]))\n } else {\n handledAttributes.add(mutation.attributeName!)\n }\n return true\n })\n\n // Emit mutations\n const emittedMutations = new Map<Element, AttributeMutation>()\n for (const mutation of filteredMutations) {\n const uncensoredValue = mutation.target.getAttribute(mutation.attributeName!)\n if (uncensoredValue === mutation.oldValue) {\n continue\n }\n const privacyLevel = getNodePrivacyLevel(mutation.target, configuration.defaultPrivacyLevel, nodePrivacyLevelCache)\n const attributeValue = serializeAttribute(mutation.target, privacyLevel, mutation.attributeName!, configuration)\n\n let transformedValue: string | null\n if (mutation.attributeName === 'value') {\n const inputValue = getElementInputValue(mutation.target, privacyLevel)\n if (inputValue === undefined) {\n continue\n }\n transformedValue = inputValue\n } else if (typeof attributeValue === 'string') {\n transformedValue = attributeValue\n } else {\n transformedValue = null\n }\n\n let emittedMutation = emittedMutations.get(mutation.target)\n if (!emittedMutation) {\n emittedMutation = {\n id: getSerializedNodeId(mutation.target),\n attributes: {},\n }\n attributeMutations.push(emittedMutation)\n emittedMutations.set(mutation.target, emittedMutation)\n }\n\n emittedMutation.attributes[mutation.attributeName!] = transformedValue\n }\n\n return attributeMutations\n}\n\nexport function sortAddedAndMovedNodes(nodes: Node[]) {\n nodes.sort((a, b) => {\n const position = a.compareDocumentPosition(b)\n /* eslint-disable no-bitwise */\n if (position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1\n } else if (position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1\n } else if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1\n } else if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n return -1\n }\n /* eslint-enable no-bitwise */\n return 0\n })\n}\n\nfunction traverseRemovedShadowDom(removedNode: Node, shadowDomRemovedCallback: ShadowRootCallBack) {\n if (isNodeShadowHost(removedNode)) {\n shadowDomRemovedCallback(removedNode.shadowRoot)\n }\n forEachChildNodes(removedNode, (childNode) => traverseRemovedShadowDom(childNode, shadowDomRemovedCallback))\n}\n","import type { RumConfiguration } from '@datadog/browser-rum-core'\nimport type { BrowserIncrementalSnapshotRecord } from '../../types'\nimport { trackInput, trackMutation, trackScroll } from './trackers'\nimport type { ElementsScrollPositions } from './elementsScrollPositions'\n\ninterface ShadowRootController {\n stop: () => void\n flush: () => void\n}\n\nexport type ShadowRootCallBack = (shadowRoot: ShadowRoot) => void\n\nexport interface ShadowRootsController {\n addShadowRoot: ShadowRootCallBack\n removeShadowRoot: ShadowRootCallBack\n stop: () => void\n flush: () => void\n}\n\nexport const initShadowRootsController = (\n configuration: RumConfiguration,\n callback: (record: BrowserIncrementalSnapshotRecord) => void,\n elementsScrollPositions: ElementsScrollPositions\n): ShadowRootsController => {\n const controllerByShadowRoot = new Map<ShadowRoot, ShadowRootController>()\n\n const shadowRootsController: ShadowRootsController = {\n addShadowRoot: (shadowRoot: ShadowRoot) => {\n if (controllerByShadowRoot.has(shadowRoot)) {\n return\n }\n const mutationTracker = trackMutation(callback, configuration, shadowRootsController, shadowRoot)\n // The change event does not bubble up across the shadow root, we have to listen on the shadow root\n const inputTracker = trackInput(configuration, callback, shadowRoot)\n // The scroll event does not bubble up across the shadow root, we have to listen on the shadow root\n const scrollTracker = trackScroll(configuration, callback, elementsScrollPositions, shadowRoot)\n controllerByShadowRoot.set(shadowRoot, {\n flush: () => mutationTracker.flush(),\n stop: () => {\n mutationTracker.stop()\n inputTracker.stop()\n scrollTracker.stop()\n },\n })\n },\n removeShadowRoot: (shadowRoot: ShadowRoot) => {\n const entry = controllerByShadowRoot.get(shadowRoot)\n if (!entry) {\n // unidentified root cause: observed in some cases with shadow DOM added by browser extensions\n return\n }\n entry.stop()\n controllerByShadowRoot.delete(shadowRoot)\n },\n stop: () => {\n controllerByShadowRoot.forEach(({ stop }) => stop())\n },\n flush: () => {\n controllerByShadowRoot.forEach(({ flush }) => flush())\n },\n }\n return shadowRootsController\n}\n","import { sendToExtension } from '@datadog/browser-core'\nimport type { LifeCycle, RumConfiguration, ViewContexts } from '@datadog/browser-rum-core'\nimport type { BrowserRecord } from '../../types'\nimport * as replayStats from '../replayStats'\nimport type { Tracker } from './trackers'\nimport {\n trackFocus,\n trackFrustration,\n trackInput,\n trackMediaInteraction,\n trackMouseInteraction,\n trackMove,\n trackMutation,\n trackScroll,\n trackStyleSheet,\n trackViewEnd,\n trackViewportResize,\n trackVisualViewportResize,\n} from './trackers'\nimport { createElementsScrollPositions } from './elementsScrollPositions'\nimport type { ShadowRootsController } from './shadowRootsController'\nimport { initShadowRootsController } from './shadowRootsController'\nimport { startFullSnapshots } from './startFullSnapshots'\nimport { initRecordIds } from './recordIds'\n\nexport interface RecordOptions {\n emit?: (record: BrowserRecord) => void\n configuration: RumConfiguration\n lifeCycle: LifeCycle\n viewContexts: ViewContexts\n}\n\nexport interface RecordAPI {\n stop: () => void\n flushMutations: () => void\n shadowRootsController: ShadowRootsController\n}\n\nexport function record(options: RecordOptions): RecordAPI {\n const { emit, configuration, lifeCycle } = options\n // runtime checks for user options\n if (!emit) {\n throw new Error('emit function is required')\n }\n\n const emitAndComputeStats = (record: BrowserRecord) => {\n emit(record)\n sendToExtension('record', { record })\n const view = options.viewContexts.findView()!\n replayStats.addRecord(view.id)\n }\n\n const elementsScrollPositions = createElementsScrollPositions()\n\n const shadowRootsController = initShadowRootsController(configuration, emitAndComputeStats, elementsScrollPositions)\n\n const { stop: stopFullSnapshots } = startFullSnapshots(\n elementsScrollPositions,\n shadowRootsController,\n lifeCycle,\n configuration,\n flushMutations,\n (records) => records.forEach((record) => emitAndComputeStats(record))\n )\n\n function flushMutations() {\n shadowRootsController.flush()\n mutationTracker.flush()\n }\n\n const recordIds = initRecordIds()\n const mutationTracker = trackMutation(emitAndComputeStats, configuration, shadowRootsController, document)\n const trackers: Tracker[] = [\n mutationTracker,\n trackMove(configuration, emitAndComputeStats),\n trackMouseInteraction(configuration, emitAndComputeStats, recordIds),\n trackScroll(configuration, emitAndComputeStats, elementsScrollPositions, document),\n trackViewportResize(configuration, emitAndComputeStats),\n trackInput(configuration, emitAndComputeStats),\n trackMediaInteraction(configuration, emitAndComputeStats),\n trackStyleSheet(emitAndComputeStats),\n trackFocus(configuration, emitAndComputeStats),\n trackVisualViewportResize(configuration, emitAndComputeStats),\n trackFrustration(lifeCycle, emitAndComputeStats, recordIds),\n trackViewEnd(lifeCycle, (viewEndRecord) => {\n flushMutations()\n emitAndComputeStats(viewEndRecord)\n }),\n ]\n\n return {\n stop: () => {\n shadowRootsController.stop()\n trackers.forEach((tracker) => tracker.stop())\n stopFullSnapshots()\n },\n flushMutations,\n shadowRootsController,\n }\n}\n","export type ElementsScrollPositions = ReturnType<typeof createElementsScrollPositions>\nexport type ScrollPositions = { scrollLeft: number; scrollTop: number }\n\nexport function createElementsScrollPositions() {\n const scrollPositionsByElement = new WeakMap<Element, ScrollPositions>()\n return {\n set(element: Element | Document, scrollPositions: ScrollPositions) {\n if (element === document && !document.scrollingElement) {\n // cf https://drafts.csswg.org/cssom-view/#dom-document-scrollingelement,\n // in some cases scrolling elements can not be defined, we don't support those for now\n return\n }\n scrollPositionsByElement.set(\n element === document ? document.scrollingElement! : (element as Element),\n scrollPositions\n )\n },\n get(element: Element) {\n return scrollPositionsByElement.get(element)\n },\n has(element: Element) {\n return scrollPositionsByElement.has(element)\n },\n }\n}\n","import { LifeCycleEventType, getScrollX, getScrollY, getViewportDimension } from '@datadog/browser-rum-core'\nimport type { RumConfiguration, LifeCycle } from '@datadog/browser-rum-core'\nimport { timeStampNow } from '@datadog/browser-core'\nimport type { BrowserRecord } from '../../types'\nimport { RecordType } from '../../types'\nimport type { ElementsScrollPositions } from './elementsScrollPositions'\nimport type { ShadowRootsController } from './shadowRootsController'\nimport { SerializationContextStatus, serializeDocument } from './serialization'\nimport { getVisualViewport } from './viewports'\n\nexport function startFullSnapshots(\n elementsScrollPositions: ElementsScrollPositions,\n shadowRootsController: ShadowRootsController,\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n flushMutations: () => void,\n fullSnapshotCallback: (records: BrowserRecord[]) => void\n) {\n const takeFullSnapshot = (\n timestamp = timeStampNow(),\n serializationContext = {\n status: SerializationContextStatus.INITIAL_FULL_SNAPSHOT,\n elementsScrollPositions,\n shadowRootsController,\n }\n ) => {\n const { width, height } = getViewportDimension()\n const records: BrowserRecord[] = [\n {\n data: {\n height,\n href: window.location.href,\n width,\n },\n type: RecordType.Meta,\n timestamp,\n },\n {\n data: {\n has_focus: document.hasFocus(),\n },\n type: RecordType.Focus,\n timestamp,\n },\n {\n data: {\n node: serializeDocument(document, configuration, serializationContext),\n initialOffset: {\n left: getScrollX(),\n top: getScrollY(),\n },\n },\n type: RecordType.FullSnapshot,\n timestamp,\n },\n ]\n\n if (window.visualViewport) {\n records.push({\n data: getVisualViewport(window.visualViewport),\n type: RecordType.VisualViewport,\n timestamp,\n })\n }\n return records\n }\n\n fullSnapshotCallback(takeFullSnapshot())\n\n const { unsubscribe } = lifeCycle.subscribe(LifeCycleEventType.VIEW_CREATED, (view) => {\n flushMutations()\n fullSnapshotCallback(\n takeFullSnapshot(view.startClocks.timeStamp, {\n shadowRootsController,\n status: SerializationContextStatus.SUBSEQUENT_FULL_SNAPSHOT,\n elementsScrollPositions,\n })\n )\n })\n\n return {\n stop: unsubscribe,\n }\n}\n","export type RecordIds = ReturnType<typeof initRecordIds>\n\nexport function initRecordIds() {\n const recordIds = new WeakMap<Event, number>()\n let nextId = 1\n\n return {\n getIdForEvent(event: Event): number {\n if (!recordIds.has(event)) {\n recordIds.set(event, nextId++)\n }\n return recordIds.get(event)!\n },\n }\n}\n","import type { Encoder, EncoderResult } from '@datadog/browser-core'\nimport { assign } from '@datadog/browser-core'\nimport type { BrowserRecord, BrowserSegmentMetadata, CreationReason, SegmentContext } from '../../types'\nimport { RecordType } from '../../types'\nimport * as replayStats from '../replayStats'\n\nexport type FlushReason = Exclude<CreationReason, 'init'> | 'stop'\nexport type FlushCallback = (metadata: BrowserSegmentMetadata, encoderResult: EncoderResult<Uint8Array>) => void\nexport type AddRecordCallback = (encodedBytesCount: number) => void\n\nexport interface Segment {\n addRecord: (record: BrowserRecord, callback: AddRecordCallback) => void\n flush: (callback: FlushCallback) => void\n}\n\nexport function createSegment({\n context,\n creationReason,\n encoder,\n}: {\n context: SegmentContext\n creationReason: CreationReason\n encoder: Encoder<Uint8Array>\n}): Segment {\n let encodedBytesCount = 0\n const viewId = context.view.id\n const metadata: BrowserSegmentMetadata = assign(\n {\n start: Infinity,\n end: -Infinity,\n creation_reason: creationReason,\n records_count: 0,\n has_full_snapshot: false,\n index_in_view: replayStats.getSegmentsCount(viewId),\n source: 'browser' as const,\n },\n context\n )\n replayStats.addSegment(viewId)\n\n function addRecord(record: BrowserRecord, callback: AddRecordCallback): void {\n metadata.start = Math.min(metadata.start, record.timestamp)\n metadata.end = Math.max(metadata.end, record.timestamp)\n metadata.records_count += 1\n metadata.has_full_snapshot ||= record.type === RecordType.FullSnapshot\n\n const prefix = encoder.isEmpty ? '{\"records\":[' : ','\n encoder.write(prefix + JSON.stringify(record), (additionalEncodedBytesCount) => {\n encodedBytesCount += additionalEncodedBytesCount\n callback(encodedBytesCount)\n })\n }\n\n function flush(callback: FlushCallback) {\n if (encoder.isEmpty) {\n throw new Error('Empty segment flushed')\n }\n\n encoder.write(`],${JSON.stringify(metadata).slice(1)}\\n`)\n encoder.finish((encoderResult) => {\n replayStats.addWroteData(metadata.view.id, encoderResult.rawBytesCount)\n callback(metadata, encoderResult)\n })\n }\n\n return { addRecord, flush }\n}\n","import type { DeflateEncoder, HttpRequest, TimeoutId } from '@datadog/browser-core'\nimport { isPageExitReason, ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core'\nimport type { LifeCycle, ViewContexts, RumSessionManager, RumConfiguration } from '@datadog/browser-rum-core'\nimport { LifeCycleEventType } from '@datadog/browser-rum-core'\nimport type { BrowserRecord, CreationReason, SegmentContext } from '../../types'\nimport { buildReplayPayload } from './buildReplayPayload'\nimport type { FlushReason, Segment } from './segment'\nimport { createSegment } from './segment'\n\nexport const SEGMENT_DURATION_LIMIT = 30 * ONE_SECOND\n/**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\nexport let SEGMENT_BYTES_LIMIT = 60_000\n\n// Segments are the main data structure for session replays. They contain context information used\n// for indexing or UI needs, and a list of records (RRWeb 'events', renamed to avoid confusing\n// namings). They are stored without any processing from the intake, and fetched one after the\n// other while a session is being replayed. Their encoding (deflate) are carefully crafted to allow\n// concatenating multiple segments together. Segments have a size overhead (metadata), so our goal is to\n// build segments containing as many records as possible while complying with the various flush\n// strategies to guarantee a good replay quality.\n//\n// When the recording starts, a segment is initially created. The segment is flushed (finalized and\n// sent) based on various events (non-exhaustive list):\n//\n// * the page visibility change or becomes to unload\n// * the segment duration reaches a limit\n// * the encoded segment bytes count reaches a limit\n// * ...\n//\n// A segment cannot be created without its context. If the RUM session ends and no session id is\n// available when creating a new segment, records will be ignored, until the session is renewed and\n// a new session id is available.\n//\n// Empty segments (segments with no record) aren't useful and should be ignored.\n//\n// To help investigate session replays issues, each segment is created with a \"creation reason\",\n// indicating why the session has been created.\n\nexport function startSegmentCollection(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n sessionManager: RumSessionManager,\n viewContexts: ViewContexts,\n httpRequest: HttpRequest,\n encoder: DeflateEncoder\n) {\n return doStartSegmentCollection(\n lifeCycle,\n () => computeSegmentContext(configuration.applicationId, sessionManager, viewContexts),\n httpRequest,\n encoder\n )\n}\n\nconst enum SegmentCollectionStatus {\n WaitingForInitialRecord,\n SegmentPending,\n Stopped,\n}\ntype SegmentCollectionState =\n | {\n status: SegmentCollectionStatus.WaitingForInitialRecord\n nextSegmentCreationReason: CreationReason\n }\n | {\n status: SegmentCollectionStatus.SegmentPending\n segment: Segment\n expirationTimeoutId: TimeoutId\n }\n | {\n status: SegmentCollectionStatus.Stopped\n }\n\nexport function doStartSegmentCollection(\n lifeCycle: LifeCycle,\n getSegmentContext: () => SegmentContext | undefined,\n httpRequest: HttpRequest,\n encoder: DeflateEncoder\n) {\n let state: SegmentCollectionState = {\n status: SegmentCollectionStatus.WaitingForInitialRecord,\n nextSegmentCreationReason: 'init',\n }\n\n const { unsubscribe: unsubscribeViewCreated } = lifeCycle.subscribe(LifeCycleEventType.VIEW_CREATED, () => {\n flushSegment('view_change')\n })\n\n const { unsubscribe: unsubscribePageExited } = lifeCycle.subscribe(\n LifeCycleEventType.PAGE_EXITED,\n (pageExitEvent) => {\n flushSegment(pageExitEvent.reason as FlushReason)\n }\n )\n\n function flushSegment(flushReason: FlushReason) {\n if (state.status === SegmentCollectionStatus.SegmentPending) {\n state.segment.flush((metadata, encoderResult) => {\n const payload = buildReplayPayload(encoderResult.output, metadata, encoderResult.rawBytesCount)\n\n if (isPageExitReason(flushReason)) {\n httpRequest.sendOnExit(payload)\n } else {\n httpRequest.send(payload)\n }\n })\n clearTimeout(state.expirationTimeoutId)\n }\n\n if (flushReason !== 'stop') {\n state = {\n status: SegmentCollectionStatus.WaitingForInitialRecord,\n nextSegmentCreationReason: flushReason,\n }\n } else {\n state = {\n status: SegmentCollectionStatus.Stopped,\n }\n }\n }\n\n return {\n addRecord: (record: BrowserRecord) => {\n if (state.status === SegmentCollectionStatus.Stopped) {\n return\n }\n\n if (state.status === SegmentCollectionStatus.WaitingForInitialRecord) {\n const context = getSegmentContext()\n if (!context) {\n return\n }\n\n state = {\n status: SegmentCollectionStatus.SegmentPending,\n segment: createSegment({ encoder, context, creationReason: state.nextSegmentCreationReason }),\n expirationTimeoutId: setTimeout(() => {\n flushSegment('segment_duration_limit')\n }, SEGMENT_DURATION_LIMIT),\n }\n }\n\n state.segment.addRecord(record, (encodedBytesCount) => {\n if (encodedBytesCount > SEGMENT_BYTES_LIMIT) {\n flushSegment('segment_bytes_limit')\n }\n })\n },\n\n stop: () => {\n flushSegment('stop')\n unsubscribeViewCreated()\n unsubscribePageExited()\n },\n }\n}\n\nexport function computeSegmentContext(\n applicationId: string,\n sessionManager: RumSessionManager,\n viewContexts: ViewContexts\n) {\n const session = sessionManager.findTrackedSession()\n const viewContext = viewContexts.findView()\n if (!session || !viewContext) {\n return undefined\n }\n return {\n application: {\n id: applicationId,\n },\n session: {\n id: session.id,\n },\n view: {\n id: viewContext.id,\n },\n }\n}\n\nexport function setSegmentBytesLimit(newSegmentBytesLimit = 60_000) {\n SEGMENT_BYTES_LIMIT = newSegmentBytesLimit\n}\n","import type { Payload } from '@datadog/browser-core'\nimport { assign } from '@datadog/browser-core'\nimport type { BrowserSegmentMetadata } from '../../types'\n\nexport type BrowserSegmentMetadataAndSegmentSizes = BrowserSegmentMetadata & {\n raw_segment_size: number\n compressed_segment_size: number\n}\n\nexport function buildReplayPayload(\n data: Uint8Array,\n metadata: BrowserSegmentMetadata,\n rawSegmentBytesCount: number\n): Payload {\n const formData = new FormData()\n\n formData.append(\n 'segment',\n new Blob([data], {\n type: 'application/octet-stream',\n }),\n `${metadata.session.id}-${metadata.start}`\n )\n\n const metadataAndSegmentSizes: BrowserSegmentMetadataAndSegmentSizes = assign(\n {\n raw_segment_size: rawSegmentBytesCount,\n compressed_segment_size: data.byteLength,\n },\n metadata\n )\n const serializedMetadataAndSegmentSizes = JSON.stringify(metadataAndSegmentSizes)\n formData.append('event', new Blob([serializedMetadataAndSegmentSizes], { type: 'application/json' }))\n\n return { data: formData, bytesCount: data.byteLength }\n}\n","/**\n * Test for Browser features used while recording\n */\nexport function isBrowserSupported() {\n return (\n // Array.from is a bit less supported by browsers than CSSSupportsRule, but has higher chances\n // to be polyfilled. Test for both to be more confident. We could add more things if we find out\n // this test is not sufficient.\n typeof Array.from === 'function' &&\n typeof CSSSupportsRule === 'function' &&\n typeof URL.createObjectURL === 'function' &&\n 'forEach' in NodeList.prototype\n )\n}\n","import type { RumConfiguration, RumSessionManager, ViewContexts, RumSession } from '@datadog/browser-rum-core'\nimport { getSessionReplayUrl, SessionReplayState } from '@datadog/browser-rum-core'\nimport { isBrowserSupported } from '../boot/isBrowserSupported'\n\nexport function getSessionReplayLink(\n configuration: RumConfiguration,\n sessionManager: RumSessionManager,\n viewContexts: ViewContexts,\n isRecordingStarted: boolean\n): string | undefined {\n const session = sessionManager.findTrackedSession()\n const errorType = getErrorType(session, isRecordingStarted)\n const viewContext = viewContexts.findView()\n\n return getSessionReplayUrl(configuration, {\n viewContext,\n errorType,\n session,\n })\n}\n\nfunction getErrorType(session: RumSession | undefined, isRecordingStarted: boolean) {\n if (!isBrowserSupported()) {\n return 'browser-not-supported'\n }\n if (!session) {\n // possibilities:\n // - rum sampled out\n // - session expired (edge case)\n return 'rum-not-tracked'\n }\n if (session.sessionReplay === SessionReplayState.OFF) {\n // possibilities\n // - replay sampled out\n return 'incorrect-session-plan'\n }\n if (!isRecordingStarted) {\n return 'replay-not-started'\n }\n}\n","import type {\n DeflateWorkerResponse,\n DeflateEncoder,\n DeflateEncoderStreamId,\n DeflateWorker,\n EncoderResult,\n} from '@datadog/browser-core'\nimport type { RumConfiguration } from '@datadog/browser-rum-core'\nimport { addEventListener, addTelemetryDebug, assign, concatBuffers } from '@datadog/browser-core'\n\nexport function createDeflateEncoder(\n configuration: RumConfiguration,\n worker: DeflateWorker,\n streamId: DeflateEncoderStreamId\n): DeflateEncoder {\n let rawBytesCount = 0\n let compressedData: Uint8Array[] = []\n let compressedDataTrailer: Uint8Array\n\n let nextWriteActionId = 0\n const pendingWriteActions: Array<{\n writeCallback?: (additionalEncodedBytesCount: number) => void\n finishCallback?: () => void\n id: number\n data: string\n }> = []\n\n const { stop: removeMessageListener } = addEventListener(\n configuration,\n worker,\n 'message',\n ({ data: workerResponse }: MessageEvent<DeflateWorkerResponse>) => {\n if (workerResponse.type !== 'wrote' || (workerResponse.streamId as DeflateEncoderStreamId) !== streamId) {\n return\n }\n\n rawBytesCount += workerResponse.additionalBytesCount\n compressedData.push(workerResponse.result)\n compressedDataTrailer = workerResponse.trailer\n\n const nextPendingAction = pendingWriteActions.shift()\n if (nextPendingAction && nextPendingAction.id === workerResponse.id) {\n if (nextPendingAction.writeCallback) {\n nextPendingAction.writeCallback(workerResponse.result.byteLength)\n } else if (nextPendingAction.finishCallback) {\n nextPendingAction.finishCallback()\n }\n } else {\n removeMessageListener()\n addTelemetryDebug('Worker responses received out of order.')\n }\n }\n )\n\n function consumeResult(): EncoderResult<Uint8Array> {\n const output =\n compressedData.length === 0 ? new Uint8Array(0) : concatBuffers(compressedData.concat(compressedDataTrailer))\n const result: EncoderResult<Uint8Array> = {\n rawBytesCount,\n output,\n outputBytesCount: output.byteLength,\n encoding: 'deflate',\n }\n rawBytesCount = 0\n compressedData = []\n return result\n }\n\n function sendResetIfNeeded() {\n if (nextWriteActionId > 0) {\n worker.postMessage({\n action: 'reset',\n streamId,\n })\n nextWriteActionId = 0\n }\n }\n\n return {\n isAsync: true,\n\n get isEmpty() {\n return nextWriteActionId === 0\n },\n\n write(data, callback) {\n worker.postMessage({\n action: 'write',\n id: nextWriteActionId,\n data,\n streamId,\n })\n pendingWriteActions.push({\n id: nextWriteActionId,\n writeCallback: callback,\n data,\n })\n nextWriteActionId += 1\n },\n\n finish(callback) {\n sendResetIfNeeded()\n\n if (!pendingWriteActions.length) {\n callback(consumeResult())\n } else {\n // Make sure we do not call any write callback\n pendingWriteActions.forEach((pendingWriteAction) => {\n delete pendingWriteAction.writeCallback\n })\n\n // Wait for the last action to finish before calling the finish callback\n pendingWriteActions[pendingWriteActions.length - 1].finishCallback = () => callback(consumeResult())\n }\n },\n\n finishSync() {\n sendResetIfNeeded()\n\n const pendingData = pendingWriteActions\n .map((pendingWriteAction) => {\n // Make sure we do not call any write or finish callback\n delete pendingWriteAction.writeCallback\n delete pendingWriteAction.finishCallback\n return pendingWriteAction.data\n })\n .join('')\n\n return assign(consumeResult(), {\n pendingData,\n })\n },\n\n estimateEncodedBytesCount(data) {\n // This is a rough estimation of the data size once it'll be encoded by deflate. We observed\n // that if it's the first chunk of data pushed to the stream, the ratio is lower (3-4), but\n // after that the ratio is greater (10+). We chose 8 here, which (on average) seems to produce\n // requests of the expected size.\n return data.length / 8\n },\n\n stop() {\n removeMessageListener()\n },\n }\n}\n","import type { DeflateWorker, DeflateWorkerResponse } from '@datadog/browser-core'\nimport {\n addTelemetryError,\n display,\n includes,\n addEventListener,\n setTimeout,\n ONE_SECOND,\n DOCS_ORIGIN,\n} from '@datadog/browser-core'\nimport type { RumConfiguration } from '@datadog/browser-rum-core'\n\nexport const INITIALIZATION_TIME_OUT_DELAY = 10 * ONE_SECOND\n\ndeclare const __BUILD_ENV__WORKER_STRING__: string\n\n/**\n * In order to be sure that the worker is correctly working, we need a round trip of\n * initialization messages, making the creation asynchronous.\n * These worker lifecycle states handle this case.\n */\nexport const enum DeflateWorkerStatus {\n Nil,\n Loading,\n Error,\n Initialized,\n}\n\ntype DeflateWorkerState =\n | {\n status: DeflateWorkerStatus.Nil\n }\n | {\n status: DeflateWorkerStatus.Loading\n worker: DeflateWorker\n stop: () => void\n initializationFailureCallbacks: Array<() => void>\n }\n | {\n status: DeflateWorkerStatus.Error\n }\n | {\n status: DeflateWorkerStatus.Initialized\n worker: DeflateWorker\n stop: () => void\n version: string\n }\n\nexport type CreateDeflateWorker = typeof createDeflateWorker\n\nfunction createDeflateWorker(configuration: RumConfiguration): DeflateWorker {\n return new Worker(configuration.workerUrl || URL.createObjectURL(new Blob([__BUILD_ENV__WORKER_STRING__])))\n}\n\nlet state: DeflateWorkerState = { status: DeflateWorkerStatus.Nil }\n\nexport function startDeflateWorker(\n configuration: RumConfiguration,\n source: string,\n onInitializationFailure: () => void,\n createDeflateWorkerImpl = createDeflateWorker\n) {\n if (state.status === DeflateWorkerStatus.Nil) {\n // doStartDeflateWorker updates the state to \"loading\" or \"error\"\n doStartDeflateWorker(configuration, source, createDeflateWorkerImpl)\n }\n\n switch (state.status) {\n case DeflateWorkerStatus.Loading:\n state.initializationFailureCallbacks.push(onInitializationFailure)\n return state.worker\n case DeflateWorkerStatus.Initialized:\n return state.worker\n }\n}\n\nexport function resetDeflateWorkerState() {\n if (state.status === DeflateWorkerStatus.Initialized || state.status === DeflateWorkerStatus.Loading) {\n state.stop()\n }\n state = { status: DeflateWorkerStatus.Nil }\n}\n\nexport function getDeflateWorkerStatus() {\n return state.status\n}\n\n/**\n * Starts the deflate worker and handle messages and errors\n *\n * The spec allow browsers to handle worker errors differently:\n * - Chromium throws an exception\n * - Firefox fires an error event\n *\n * more details: https://bugzilla.mozilla.org/show_bug.cgi?id=1736865#c2\n */\nexport function doStartDeflateWorker(\n configuration: RumConfiguration,\n source: string,\n createDeflateWorkerImpl = createDeflateWorker\n) {\n try {\n const worker = createDeflateWorkerImpl(configuration)\n const { stop: removeErrorListener } = addEventListener(configuration, worker, 'error', (error) => {\n onError(configuration, source, error)\n })\n const { stop: removeMessageListener } = addEventListener(\n configuration,\n worker,\n 'message',\n ({ data }: MessageEvent<DeflateWorkerResponse>) => {\n if (data.type === 'errored') {\n onError(configuration, source, data.error, data.streamId)\n } else if (data.type === 'initialized') {\n onInitialized(data.version)\n }\n }\n )\n worker.postMessage({ action: 'init' })\n setTimeout(() => onTimeout(source), INITIALIZATION_TIME_OUT_DELAY)\n const stop = () => {\n removeErrorListener()\n removeMessageListener()\n }\n\n state = { status: DeflateWorkerStatus.Loading, worker, stop, initializationFailureCallbacks: [] }\n } catch (error) {\n onError(configuration, source, error)\n }\n}\n\nfunction onTimeout(source: string) {\n if (state.status === DeflateWorkerStatus.Loading) {\n display.error(`${source} failed to start: a timeout occurred while initializing the Worker`)\n state.initializationFailureCallbacks.forEach((callback) => callback())\n state = { status: DeflateWorkerStatus.Error }\n }\n}\n\nfunction onInitialized(version: string) {\n if (state.status === DeflateWorkerStatus.Loading) {\n state = { status: DeflateWorkerStatus.Initialized, worker: state.worker, stop: state.stop, version }\n }\n}\n\nfunction onError(configuration: RumConfiguration, source: string, error: unknown, streamId?: number) {\n if (state.status === DeflateWorkerStatus.Loading || state.status === DeflateWorkerStatus.Nil) {\n display.error(`${source} failed to start: an error occurred while creating the Worker:`, error)\n if (error instanceof Event || (error instanceof Error && isMessageCspRelated(error.message))) {\n let baseMessage\n if (configuration.workerUrl) {\n baseMessage = `Please make sure the Worker URL ${configuration.workerUrl} is correct and CSP is correctly configured.`\n } else {\n baseMessage = 'Please make sure CSP is correctly configured.'\n }\n display.error(\n `${baseMessage} See documentation at ${DOCS_ORIGIN}/integrations/content_security_policy_logs/#use-csp-with-real-user-monitoring-and-session-replay`\n )\n } else {\n addTelemetryError(error)\n }\n if (state.status === DeflateWorkerStatus.Loading) {\n state.initializationFailureCallbacks.forEach((callback) => callback())\n }\n state = { status: DeflateWorkerStatus.Error }\n } else {\n addTelemetryError(error, {\n worker_version: state.status === DeflateWorkerStatus.Initialized && state.version,\n stream_id: streamId,\n })\n }\n}\n\nfunction isMessageCspRelated(message: string) {\n return (\n includes(message, 'Content Security Policy') ||\n // Related to `require-trusted-types-for` CSP: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/require-trusted-types-for\n includes(message, \"requires 'TrustedScriptURL'\")\n )\n}\n","// Keep the following in sync with packages/rum-slim/src/entries/main.ts\nimport { defineGlobal, getGlobalObject } from '@datadog/browser-core'\nimport type { RumPublicApi } from '@datadog/browser-rum-core'\nimport { makeRumPublicApi, startRum } from '@datadog/browser-rum-core'\n\nimport { startRecording } from '../boot/startRecording'\nimport { makeRecorderApi } from '../boot/recorderApi'\nimport { createDeflateEncoder, startDeflateWorker } from '../domain/deflate'\n\nexport {\n CommonProperties,\n RumPublicApi as RumGlobal,\n RumInitConfiguration,\n // Events\n RumEvent,\n RumActionEvent,\n RumErrorEvent,\n RumLongTaskEvent,\n RumResourceEvent,\n RumViewEvent,\n RumVitalEvent,\n // Events context\n RumEventDomainContext,\n RumViewEventDomainContext,\n RumErrorEventDomainContext,\n RumActionEventDomainContext,\n RumFetchResourceEventDomainContext,\n RumXhrResourceEventDomainContext,\n RumOtherResourceEventDomainContext,\n RumLongTaskEventDomainContext,\n} from '@datadog/browser-rum-core'\nexport { DefaultPrivacyLevel } from '@datadog/browser-core'\n\nconst recorderApi = makeRecorderApi(startRecording)\nexport const datadogRum = makeRumPublicApi(startRum, recorderApi, { startDeflateWorker, createDeflateEncoder })\n\ninterface BrowserWindow extends Window {\n DD_RUM?: RumPublicApi\n}\ndefineGlobal(getGlobalObject<BrowserWindow>(), 'DD_RUM', datadogRum)\n","import type { DeflateEncoder } from '@datadog/browser-core'\nimport {\n DeflateEncoderStreamId,\n canUseEventBridge,\n noop,\n runOnReadyState,\n PageExitReason,\n BridgeCapability,\n bridgeSupports,\n} from '@datadog/browser-core'\nimport type {\n LifeCycle,\n ViewContexts,\n RumSessionManager,\n RecorderApi,\n RumConfiguration,\n StartRecordingOptions,\n} from '@datadog/browser-rum-core'\nimport { LifeCycleEventType, SessionReplayState } from '@datadog/browser-rum-core'\nimport { getReplayStats as getReplayStatsImpl } from '../domain/replayStats'\nimport { getSessionReplayLink } from '../domain/getSessionReplayLink'\nimport type { CreateDeflateWorker } from '../domain/deflate'\nimport {\n createDeflateEncoder,\n startDeflateWorker,\n DeflateWorkerStatus,\n getDeflateWorkerStatus,\n} from '../domain/deflate'\n\nimport type { startRecording } from './startRecording'\nimport { isBrowserSupported } from './isBrowserSupported'\n\nexport type StartRecording = typeof startRecording\n\nconst enum RecorderStatus {\n // The recorder is stopped.\n Stopped,\n // The user started the recording while it wasn't possible yet. The recorder should start as soon\n // as possible.\n IntentToStart,\n // The recorder is starting. It does not record anything yet.\n Starting,\n // The recorder is started, it records the session.\n Started,\n}\ntype RecorderState =\n | {\n status: RecorderStatus.Stopped\n }\n | {\n status: RecorderStatus.IntentToStart\n }\n | {\n status: RecorderStatus.Starting\n }\n | {\n status: RecorderStatus.Started\n stopRecording: () => void\n }\n\ntype StartStrategyFn = (options?: StartRecordingOptions) => void\n\nexport function makeRecorderApi(\n startRecordingImpl: StartRecording,\n createDeflateWorkerImpl?: CreateDeflateWorker\n): RecorderApi {\n if ((canUseEventBridge() && !bridgeSupports(BridgeCapability.RECORDS)) || !isBrowserSupported()) {\n return {\n start: noop,\n stop: noop,\n getReplayStats: () => undefined,\n onRumStart: noop,\n isRecording: () => false,\n getSessionReplayLink: () => undefined,\n }\n }\n\n let state: RecorderState = {\n status: RecorderStatus.IntentToStart,\n }\n\n let startStrategy: StartStrategyFn = () => {\n state = { status: RecorderStatus.IntentToStart }\n }\n let stopStrategy = () => {\n state = { status: RecorderStatus.Stopped }\n }\n let getSessionReplayLinkStrategy = noop as () => string | undefined\n\n return {\n start: (options?: StartRecordingOptions) => startStrategy(options),\n stop: () => stopStrategy(),\n getSessionReplayLink: () => getSessionReplayLinkStrategy(),\n onRumStart: (\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n sessionManager: RumSessionManager,\n viewContexts: ViewContexts,\n worker\n ) => {\n if (configuration.startSessionReplayRecordingManually) {\n state = { status: RecorderStatus.Stopped }\n }\n lifeCycle.subscribe(LifeCycleEventType.SESSION_EXPIRED, () => {\n if (state.status === RecorderStatus.Starting || state.status === RecorderStatus.Started) {\n stopStrategy()\n state = { status: RecorderStatus.IntentToStart }\n }\n })\n\n // Stop the recorder on page unload to avoid sending records after the page is ended.\n lifeCycle.subscribe(LifeCycleEventType.PAGE_EXITED, (pageExitEvent) => {\n if (pageExitEvent.reason === PageExitReason.UNLOADING) {\n stopStrategy()\n }\n })\n\n lifeCycle.subscribe(LifeCycleEventType.SESSION_RENEWED, () => {\n if (state.status === RecorderStatus.IntentToStart) {\n startStrategy()\n }\n })\n\n let cachedDeflateEncoder: DeflateEncoder | undefined\n\n function getOrCreateDeflateEncoder() {\n if (!cachedDeflateEncoder) {\n if (!worker) {\n worker = startDeflateWorker(\n configuration,\n 'Datadog Session Replay',\n () => {\n stopStrategy()\n },\n createDeflateWorkerImpl\n )\n }\n if (worker) {\n cachedDeflateEncoder = createDeflateEncoder(configuration, worker, DeflateEncoderStreamId.REPLAY)\n }\n }\n return cachedDeflateEncoder\n }\n\n startStrategy = (options?: StartRecordingOptions) => {\n const session = sessionManager.findTrackedSession()\n if (!session || (session.sessionReplay === SessionReplayState.OFF && (!options || !options.force))) {\n state = { status: RecorderStatus.IntentToStart }\n return\n }\n\n if (state.status === RecorderStatus.Starting || state.status === RecorderStatus.Started) {\n return\n }\n\n state = { status: RecorderStatus.Starting }\n\n runOnReadyState(configuration, 'interactive', () => {\n if (state.status !== RecorderStatus.Starting) {\n return\n }\n\n const deflateEncoder = getOrCreateDeflateEncoder()\n if (!deflateEncoder) {\n state = {\n status: RecorderStatus.Stopped,\n }\n return\n }\n\n const { stop: stopRecording } = startRecordingImpl(\n lifeCycle,\n configuration,\n sessionManager,\n viewContexts,\n deflateEncoder\n )\n state = {\n status: RecorderStatus.Started,\n stopRecording,\n }\n })\n\n if (options && options.force && session.sessionReplay === SessionReplayState.OFF) {\n sessionManager.setForcedReplay()\n }\n }\n\n stopStrategy = () => {\n if (state.status === RecorderStatus.Stopped) {\n return\n }\n\n if (state.status === RecorderStatus.Started) {\n state.stopRecording()\n }\n\n state = {\n status: RecorderStatus.Stopped,\n }\n }\n\n getSessionReplayLinkStrategy = () =>\n getSessionReplayLink(configuration, sessionManager, viewContexts, state.status !== RecorderStatus.Stopped)\n\n if (state.status === RecorderStatus.IntentToStart) {\n startStrategy()\n }\n },\n\n isRecording: () =>\n // The worker is started optimistically, meaning we could have started to record but its\n // initialization fails a bit later. This could happen when:\n // * the worker URL (blob or plain URL) is blocked by CSP in Firefox only (Chromium and Safari\n // throw an exception when instantiating the worker, and IE doesn't care about CSP)\n // * the browser fails to load the worker in case the workerUrl is used\n // * an unexpected error occurs in the Worker before initialization, ex:\n // * a runtime exception collected by monitor()\n // * a syntax error notified by the browser via an error event\n // * the worker is unresponsive for some reason and timeouts\n //\n // It is not expected to happen often. Nonetheless, the \"replayable\" status on RUM events is\n // an important part of the Datadog App:\n // * If we have a false positive (we set has_replay: true even if no replay data is present),\n // we might display broken links to the Session Replay player.\n // * If we have a false negative (we don't set has_replay: true even if replay data is\n // available), it is less noticeable because no link will be displayed.\n //\n // Thus, it is better to have false negative, so let's make sure the worker is correctly\n // initialized before advertizing that we are recording.\n //\n // In the future, when the compression worker will also be used for RUM data, this will be\n // less important since no RUM event will be sent when the worker fails to initialize.\n getDeflateWorkerStatus() === DeflateWorkerStatus.Initialized && state.status === RecorderStatus.Started,\n\n getReplayStats: (viewId) =>\n getDeflateWorkerStatus() === DeflateWorkerStatus.Initialized ? getReplayStatsImpl(viewId) : undefined,\n }\n}\n","import type { RawError, HttpRequest, DeflateEncoder } from '@datadog/browser-core'\nimport { createHttpRequest, addTelemetryDebug, canUseEventBridge } from '@datadog/browser-core'\nimport type { LifeCycle, ViewContexts, RumConfiguration, RumSessionManager } from '@datadog/browser-rum-core'\nimport { LifeCycleEventType } from '@datadog/browser-rum-core'\n\nimport { record } from '../domain/record'\nimport { startSegmentCollection, SEGMENT_BYTES_LIMIT } from '../domain/segmentCollection'\nimport type { BrowserRecord } from '../types'\nimport { startRecordBridge } from '../domain/startRecordBridge'\n\nexport function startRecording(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n sessionManager: RumSessionManager,\n viewContexts: ViewContexts,\n encoder: DeflateEncoder,\n httpRequest?: HttpRequest\n) {\n const cleanupTasks: Array<() => void> = []\n\n const reportError = (error: RawError) => {\n lifeCycle.notify(LifeCycleEventType.RAW_ERROR_COLLECTED, { error })\n addTelemetryDebug('Error reported to customer', { 'error.message': error.message })\n }\n\n const replayRequest =\n httpRequest ||\n createHttpRequest(configuration, configuration.sessionReplayEndpointBuilder, SEGMENT_BYTES_LIMIT, reportError)\n\n let addRecord: (record: BrowserRecord) => void\n\n if (!canUseEventBridge()) {\n const segmentCollection = startSegmentCollection(\n lifeCycle,\n configuration,\n sessionManager,\n viewContexts,\n replayRequest,\n encoder\n )\n addRecord = segmentCollection.addRecord\n cleanupTasks.push(segmentCollection.stop)\n } else {\n ;({ addRecord } = startRecordBridge(viewContexts))\n }\n\n const { stop: stopRecording } = record({\n emit: addRecord,\n configuration,\n lifeCycle,\n viewContexts,\n })\n cleanupTasks.push(stopRecording)\n\n return {\n stop: () => {\n cleanupTasks.forEach((task) => task())\n },\n }\n}\n","import { getEventBridge } from '@datadog/browser-core'\nimport type { ViewContexts } from '@datadog/browser-rum-core'\nimport type { BrowserRecord } from '../types'\n\nexport function startRecordBridge(viewContexts: ViewContexts) {\n const bridge = getEventBridge<'record', BrowserRecord>()!\n\n return {\n addRecord: (record: BrowserRecord) => {\n // Get the current active view, not at the time of the record, aligning with the segment logic.\n // This approach could potentially associate the record to an incorrect view, in case the record date is in the past (e.g. frustration records).\n // However the risk is minimal. We could address the issue when potential negative impact are identified.\n const view = viewContexts.findView()!\n bridge.send('record', record, view.id)\n },\n }\n}\n","import type {\n Context,\n TimeStamp,\n RelativeTime,\n User,\n DeflateWorker,\n DeflateEncoderStreamId,\n DeflateEncoder,\n TrackingConsent,\n PublicApi,\n Duration,\n} from '@datadog/browser-core'\nimport {\n addTelemetryUsage,\n isExperimentalFeatureEnabled,\n ExperimentalFeature,\n CustomerDataType,\n assign,\n createContextManager,\n deepClone,\n makePublicApi,\n monitor,\n clocksNow,\n callMonitored,\n createHandlingStack,\n checkUser,\n sanitizeUser,\n sanitize,\n createIdentityEncoder,\n CustomerDataCompressionStatus,\n createCustomerDataTrackerManager,\n storeContextManager,\n displayAlreadyInitializedError,\n createTrackingConsentState,\n timeStampToClocks,\n noop,\n} from '@datadog/browser-core'\nimport type { LifeCycle } from '../domain/lifeCycle'\nimport type { ViewContexts } from '../domain/contexts/viewContexts'\nimport type { RumSessionManager } from '../domain/rumSessionManager'\nimport type { ReplayStats } from '../rawRumEvent.types'\nimport { ActionType, VitalType } from '../rawRumEvent.types'\nimport type { RumConfiguration, RumInitConfiguration } from '../domain/configuration'\nimport type { ViewOptions } from '../domain/view/trackViews'\nimport { buildCommonContext } from '../domain/contexts/commonContext'\nimport type { InternalContext } from '../domain/contexts/internalContext'\nimport { createPreStartStrategy } from './preStartRum'\nimport type { StartRum, StartRumResult } from './startRum'\n\nexport interface StartRecordingOptions {\n force: boolean\n}\nexport interface RumPublicApi extends PublicApi {\n /**\n * Init the RUM browser SDK.\n * @param initConfiguration Configuration options of the SDK\n *\n * See [RUM Browser Monitoring Setup](https://docs.datadoghq.com/real_user_monitoring/browser) for further information.\n */\n init: (initConfiguration: RumInitConfiguration) => void\n\n /**\n * Set the tracking consent of the current user.\n *\n * @param {\"granted\" | \"not-granted\"} trackingConsent The user tracking consent\n *\n * Data will be sent only if it is set to \"granted\". This value won't be stored by the library\n * across page loads: you will need to call this method or set the appropriate `trackingConsent`\n * field in the init() method at each page load.\n *\n * If this method is called before the init() method, the provided value will take precedence\n * over the one provided as initialization parameter.\n *\n * See [User tracking consent](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/#user-tracking-consent) for further information.\n */\n setTrackingConsent: (trackingConsent: TrackingConsent) => void\n /**\n * Set the global context information to all events, stored in `@context`\n *\n * @param context Global context\n *\n * See [Global context](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/#global-context) for further information.\n */\n setGlobalContext: (context: any) => void\n\n /**\n * Get the global Context\n *\n * See [Global context](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/#global-context) for further information.\n */\n getGlobalContext: () => Context\n\n /**\n * Set or update a global context property, stored in `@context.<key>`\n *\n * @param key Key of the property\n * @param property Value of the property\n *\n * See [Global context](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/#global-context) for further information.\n */\n setGlobalContextProperty: (key: any, value: any) => void\n\n /**\n * Remove a global context property\n *\n * See [Global context](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/#global-context) for further information.\n */\n removeGlobalContextProperty: (key: any) => void\n\n /**\n * Clear the global context\n *\n * See [Global context](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/#global-context) for further information.\n */\n clearGlobalContext: () => void\n\n /**\n * [Internal API] Get the internal SDK context\n */\n getInternalContext: (startTime?: number) => InternalContext | undefined\n\n /**\n * Get the init configuration\n */\n getInitConfiguration: () => RumInitConfiguration | undefined\n\n /**\n * Add a custom action, stored in `@action`\n * @param name Name of the action\n * @param context Context of the action\n *\n * See [Send RUM Custom Actions](https://docs.datadoghq.com/real_user_monitoring/guide/send-rum-custom-actions) for further information.\n */\n addAction: (name: string, context?: object) => void\n\n /**\n * Add a custom error, stored in `@error`.\n * @param error Error. Favor sending a [Javascript Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) to have a stack trace attached to the error event.\n * @param context Context of the error\n *\n * See [Send RUM Custom Actions](https://docs.datadoghq.com/real_user_monitoring/guide/send-rum-custom-actions) for further information.\n */\n addError: (error: unknown, context?: object) => void\n\n /**\n * Add a custom timing relative to the start of the current view,\n * stored in `@view.custom_timings.<timing_name>`\n *\n * @param name Name of the custom timing\n * @param [time] Epoch timestamp of the custom timing (if not set, will use current time)\n *\n * Note: passing a relative time is discouraged since it is actually used as-is but displayed relative to the view start.\n * We currently don't provide a way to retrieve the view start time, so it can be challenging to provide a timing relative to the view start.\n * see https://github.com/DataDog/browser-sdk/issues/2552\n */\n addTiming: (name: string, time?: number) => void\n\n /**\n * Set user information to all events, stored in `@usr`\n *\n * See [User session](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/#user-session) for further information.\n */\n setUser: (newUser: User) => void\n\n /**\n * Get user information\n *\n * See [User session](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/#user-session) for further information.\n */\n getUser: () => Context\n\n /**\n * Set or update the user property, stored in `@usr.<key>`\n *\n * @param key Key of the property\n * @param property Value of the property\n *\n * See [User session](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/#user-session) for further information.\n */\n setUserProperty: (key: any, property: any) => void\n\n /**\n * Remove a user property\n *\n * See [User session](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/#user-session) for further information.\n */\n removeUserProperty: (key: any) => void\n\n /**\n * Clear all user information\n *\n * See [User session](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/#user-session) for further information.\n */\n clearUser: () => void\n\n /**\n * Start a view manually.\n * Enable to manual start a view, use `trackViewManually: true` init parameter and call `startView()` to create RUM views and be aligned with how you’ve defined them in your SPA application routing.\n *\n * @param options.name name of the view\n * @param options.service service of the view\n * @param options.version version of the view\n *\n * See [Override default RUM view names](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/#override-default-rum-view-names) for further information.\n */\n startView: {\n (name?: string): void\n (options: ViewOptions): void\n }\n\n /**\n * Stop the session. A new session will start at the next user interaction with the page.\n */\n stopSession: () => void\n\n /**\n * Add a feature flag evaluation,\n * stored in `@feature_flags.<feature_flag_key>`\n *\n * @param {string} key The key of the feature flag.\n * @param {any} value The value of the feature flag.\n *\n * We recommend enabling the intake request compression when using feature flags `compressIntakeRequests: true`.\n *\n * See [Feature Flag Tracking](https://docs.datadoghq.com/real_user_monitoring/feature_flag_tracking/) for further information.\n */\n addFeatureFlagEvaluation: (key: string, value: any) => void\n\n /**\n * Get the Session Replay Link.\n *\n * See [Connect Session Replay To Your Third-Party Tools](https://docs.datadoghq.com/real_user_monitoring/guide/connect-session-replay-to-your-third-party-tools) for further information.\n */\n getSessionReplayLink: () => string | undefined\n\n /**\n * Start Session Replay recording.\n * Enable to conditionally start the recording, use the `startSessionReplayRecordingManually:true` init parameter and call `startSessionReplayRecording()`\n *\n * See [Browser Session Replay](https://docs.datadoghq.com/real_user_monitoring/session_replay/browser) for further information.\n */\n startSessionReplayRecording: (options?: StartRecordingOptions) => void\n\n /**\n * Stop Session Replay recording.\n *\n * See [Browser Session Replay](https://docs.datadoghq.com/real_user_monitoring/session_replay/browser) for further information.\n */\n stopSessionReplayRecording: () => void\n}\n\nexport interface RecorderApi {\n start: (options?: StartRecordingOptions) => void\n stop: () => void\n onRumStart: (\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n sessionManager: RumSessionManager,\n viewContexts: ViewContexts,\n deflateWorker: DeflateWorker | undefined\n ) => void\n isRecording: () => boolean\n getReplayStats: (viewId: string) => ReplayStats | undefined\n getSessionReplayLink: () => string | undefined\n}\n\nexport interface RumPublicApiOptions {\n ignoreInitIfSyntheticsWillInjectRum?: boolean\n startDeflateWorker?: (\n configuration: RumConfiguration,\n source: string,\n onInitializationFailure: () => void\n ) => DeflateWorker | undefined\n createDeflateEncoder?: (\n configuration: RumConfiguration,\n worker: DeflateWorker,\n streamId: DeflateEncoderStreamId\n ) => DeflateEncoder\n}\n\nconst RUM_STORAGE_KEY = 'rum'\n\nexport interface Strategy {\n init: (initConfiguration: RumInitConfiguration, publicApi: RumPublicApi) => void\n initConfiguration: RumInitConfiguration | undefined\n getInternalContext: StartRumResult['getInternalContext']\n stopSession: StartRumResult['stopSession']\n addTiming: StartRumResult['addTiming']\n startView: StartRumResult['startView']\n updateViewName: StartRumResult['updateViewName']\n addAction: StartRumResult['addAction']\n addError: StartRumResult['addError']\n addFeatureFlagEvaluation: StartRumResult['addFeatureFlagEvaluation']\n startDurationVital: StartRumResult['startDurationVital']\n addDurationVital: StartRumResult['addDurationVital']\n}\n\nexport function makeRumPublicApi(\n startRumImpl: StartRum,\n recorderApi: RecorderApi,\n options: RumPublicApiOptions = {}\n): RumPublicApi {\n const customerDataTrackerManager = createCustomerDataTrackerManager(CustomerDataCompressionStatus.Unknown)\n const globalContextManager = createContextManager(\n customerDataTrackerManager.getOrCreateTracker(CustomerDataType.GlobalContext)\n )\n const userContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(CustomerDataType.User))\n const trackingConsentState = createTrackingConsentState()\n\n function getCommonContext() {\n return buildCommonContext(globalContextManager, userContextManager, recorderApi)\n }\n\n let strategy = createPreStartStrategy(\n options,\n getCommonContext,\n trackingConsentState,\n\n (configuration, deflateWorker, initialViewOptions) => {\n if (isExperimentalFeatureEnabled(ExperimentalFeature.CUSTOM_VITALS)) {\n /**\n * Start a custom duration vital\n * stored in @vital.custom.<name>\n *\n * @param name name of the custom vital\n * @param options.context custom context attached to the vital\n * @param options.details Details of the vital.\n */\n ;(rumPublicApi as any).startDurationVital = monitor(\n (name: string, options?: { context?: object; details?: string }) => {\n addTelemetryUsage({ feature: 'start-duration-vital' })\n return strategy.startDurationVital({\n name: sanitize(name)!,\n context: sanitize(options && options.context) as Context,\n details: sanitize(options && options.details) as string | undefined,\n })\n }\n )\n\n /**\n * Add a custom duration vital\n * stored in @vital.custom.<name>\n *\n * @param name name of the custom vital\n * @param options.startTime epoch timestamp of the start of the custom vital\n * @param options.duration duration of the custom vital\n * @param options.context custom context attached to the vital\n * @param options.details Details of the vital.\n */\n ;(rumPublicApi as any).addDurationVital = monitor(\n (name: string, options: { startTime: number; duration: number; context?: object; details?: string }) => {\n addTelemetryUsage({ feature: 'add-duration-vital' })\n strategy.addDurationVital({\n name: sanitize(name)!,\n type: VitalType.DURATION,\n startClocks: timeStampToClocks(options.startTime as TimeStamp),\n duration: options.duration as Duration,\n context: sanitize(options && options.context) as Context,\n details: sanitize(options && options.details) as string | undefined,\n })\n }\n )\n\n /**\n * @deprecated\n * Stop a custom duration vital\n * stored in @vital.custom.<name>\n *\n * @param name name of the custom vital\n * @param options.context custom context attached to the vital\n * @param options.stopTime epoch timestamp of the stop of the custom vital (if not set, will use current time)\n */\n ;(rumPublicApi as any).stopDurationVital = noop\n }\n\n if (isExperimentalFeatureEnabled(ExperimentalFeature.UPDATE_VIEW_NAME)) {\n /**\n * Update View Name.\n *\n * Enable to manually change the name of the current view.\n * @param name name of the view\n * See [Override default RUM view names](https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/#override-default-rum-view-names) for further information.\n */\n ;(rumPublicApi as any).updateViewName = monitor((name: string) => {\n strategy.updateViewName(name)\n })\n }\n\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(configuration, globalContextManager, RUM_STORAGE_KEY, CustomerDataType.GlobalContext)\n storeContextManager(configuration, userContextManager, RUM_STORAGE_KEY, CustomerDataType.User)\n }\n\n customerDataTrackerManager.setCompressionStatus(\n deflateWorker ? CustomerDataCompressionStatus.Enabled : CustomerDataCompressionStatus.Disabled\n )\n\n const startRumResult = startRumImpl(\n configuration,\n recorderApi,\n customerDataTrackerManager,\n getCommonContext,\n initialViewOptions,\n deflateWorker && options.createDeflateEncoder\n ? (streamId) => options.createDeflateEncoder!(configuration, deflateWorker, streamId)\n : createIdentityEncoder,\n trackingConsentState\n )\n\n recorderApi.onRumStart(\n startRumResult.lifeCycle,\n configuration,\n startRumResult.session,\n startRumResult.viewContexts,\n deflateWorker\n )\n\n strategy = createPostStartStrategy(strategy, startRumResult)\n\n return startRumResult\n }\n )\n\n const startView: {\n (name?: string): void\n (options: ViewOptions): void\n } = monitor((options?: string | ViewOptions) => {\n const sanitizedOptions = typeof options === 'object' ? options : { name: options }\n strategy.startView(sanitizedOptions)\n addTelemetryUsage({ feature: 'start-view' })\n })\n const rumPublicApi: RumPublicApi = makePublicApi<RumPublicApi>({\n init: monitor((initConfiguration) => strategy.init(initConfiguration, rumPublicApi)),\n\n setTrackingConsent: monitor((trackingConsent) => {\n trackingConsentState.update(trackingConsent)\n addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent })\n }),\n\n setGlobalContext: monitor((context) => {\n globalContextManager.setContext(context)\n addTelemetryUsage({ feature: 'set-global-context' })\n }),\n\n getGlobalContext: monitor(() => globalContextManager.getContext()),\n\n setGlobalContextProperty: monitor((key, value) => {\n globalContextManager.setContextProperty(key, value)\n addTelemetryUsage({ feature: 'set-global-context' })\n }),\n\n removeGlobalContextProperty: monitor((key) => globalContextManager.removeContextProperty(key)),\n\n clearGlobalContext: monitor(() => globalContextManager.clearContext()),\n\n getInternalContext: monitor((startTime) => strategy.getInternalContext(startTime)),\n\n getInitConfiguration: monitor(() => deepClone(strategy.initConfiguration)),\n\n addAction: (name, context) => {\n const handlingStack = createHandlingStack()\n\n callMonitored(() => {\n strategy.addAction({\n name: sanitize(name)!,\n context: sanitize(context) as Context,\n startClocks: clocksNow(),\n type: ActionType.CUSTOM,\n handlingStack,\n })\n addTelemetryUsage({ feature: 'add-action' })\n })\n },\n\n addError: (error, context) => {\n const handlingStack = createHandlingStack()\n callMonitored(() => {\n strategy.addError({\n error, // Do not sanitize error here, it is needed unserialized by computeRawError()\n handlingStack,\n context: sanitize(context) as Context,\n startClocks: clocksNow(),\n })\n addTelemetryUsage({ feature: 'add-error' })\n })\n },\n\n addTiming: monitor((name, time) => {\n // TODO: next major decide to drop relative time support or update its behaviour\n strategy.addTiming(sanitize(name)!, time as RelativeTime | TimeStamp | undefined)\n }),\n\n setUser: monitor((newUser) => {\n if (checkUser(newUser)) {\n userContextManager.setContext(sanitizeUser(newUser as Context))\n }\n addTelemetryUsage({ feature: 'set-user' })\n }),\n\n getUser: monitor(() => userContextManager.getContext()),\n\n setUserProperty: monitor((key, property) => {\n const sanitizedProperty = sanitizeUser({ [key]: property })[key]\n userContextManager.setContextProperty(key, sanitizedProperty)\n addTelemetryUsage({ feature: 'set-user' })\n }),\n\n removeUserProperty: monitor((key) => userContextManager.removeContextProperty(key)),\n\n clearUser: monitor(() => userContextManager.clearContext()),\n\n startView,\n\n stopSession: monitor(() => {\n strategy.stopSession()\n addTelemetryUsage({ feature: 'stop-session' })\n }),\n\n addFeatureFlagEvaluation: monitor((key, value) => {\n strategy.addFeatureFlagEvaluation(sanitize(key)!, sanitize(value))\n addTelemetryUsage({ feature: 'add-feature-flag-evaluation' })\n }),\n\n getSessionReplayLink: monitor(() => recorderApi.getSessionReplayLink()),\n startSessionReplayRecording: monitor((options?: StartRecordingOptions) => {\n recorderApi.start(options)\n addTelemetryUsage({ feature: 'start-session-replay-recording', force: options && options.force })\n }),\n\n stopSessionReplayRecording: monitor(() => recorderApi.stop()),\n })\n\n return rumPublicApi\n}\n\nfunction createPostStartStrategy(preStartStrategy: Strategy, startRumResult: StartRumResult): Strategy {\n return assign(\n {\n init: (initConfiguration: RumInitConfiguration) => {\n displayAlreadyInitializedError('DD_RUM', initConfiguration)\n },\n initConfiguration: preStartStrategy.initConfiguration,\n },\n startRumResult\n )\n}\n","import type { Context, ContextManager, User } from '@datadog/browser-core'\nimport type { RecorderApi } from '../../boot/rumPublicApi'\n\nexport interface CommonContext {\n user: User\n context: Context\n hasReplay: true | undefined\n}\n\nexport function buildCommonContext(\n globalContextManager: ContextManager,\n userContextManager: ContextManager,\n recorderApi: RecorderApi\n): CommonContext {\n return {\n context: globalContextManager.getContext(),\n user: userContextManager.getContext(),\n hasReplay: recorderApi.isRecording() ? true : undefined,\n }\n}\n","import type {\n Observable,\n TelemetryEvent,\n RawError,\n DeflateEncoderStreamId,\n Encoder,\n CustomerDataTrackerManager,\n TrackingConsentState,\n} from '@datadog/browser-core'\nimport {\n sendToExtension,\n createPageExitObservable,\n TelemetryService,\n startTelemetry,\n canUseEventBridge,\n getEventBridge,\n addTelemetryDebug,\n CustomerDataType,\n drainPreStartTelemetry,\n} from '@datadog/browser-core'\nimport { createDOMMutationObservable } from '../browser/domMutationObservable'\nimport { startPerformanceCollection } from '../browser/performanceCollection'\nimport { startRumAssembly } from '../domain/assembly'\nimport { startInternalContext } from '../domain/contexts/internalContext'\nimport { LifeCycle, LifeCycleEventType } from '../domain/lifeCycle'\nimport { startViewContexts } from '../domain/contexts/viewContexts'\nimport { startRequestCollection } from '../domain/requestCollection'\nimport { startActionCollection } from '../domain/action/actionCollection'\nimport { startErrorCollection } from '../domain/error/errorCollection'\nimport { startLongTaskCollection } from '../domain/longTask/longTaskCollection'\nimport { startResourceCollection } from '../domain/resource/resourceCollection'\nimport { startViewCollection } from '../domain/view/viewCollection'\nimport type { RumSessionManager } from '../domain/rumSessionManager'\nimport { startRumSessionManager, startRumSessionManagerStub } from '../domain/rumSessionManager'\nimport { startRumBatch } from '../transport/startRumBatch'\nimport { startRumEventBridge } from '../transport/startRumEventBridge'\nimport { startUrlContexts } from '../domain/contexts/urlContexts'\nimport type { LocationChange } from '../browser/locationChangeObservable'\nimport { createLocationChangeObservable } from '../browser/locationChangeObservable'\nimport type { RumConfiguration } from '../domain/configuration'\nimport type { ViewOptions } from '../domain/view/trackViews'\nimport { startFeatureFlagContexts } from '../domain/contexts/featureFlagContext'\nimport { startCustomerDataTelemetry } from '../domain/startCustomerDataTelemetry'\nimport type { PageStateHistory } from '../domain/contexts/pageStateHistory'\nimport { startPageStateHistory } from '../domain/contexts/pageStateHistory'\nimport type { CommonContext } from '../domain/contexts/commonContext'\nimport { startDisplayContext } from '../domain/contexts/displayContext'\nimport { startVitalCollection } from '../domain/vital/vitalCollection'\nimport { startCiVisibilityContext } from '../domain/contexts/ciVisibilityContext'\nimport type { RecorderApi } from './rumPublicApi'\n\nexport type StartRum = typeof startRum\nexport type StartRumResult = ReturnType<StartRum>\n\nexport function startRum(\n configuration: RumConfiguration,\n recorderApi: RecorderApi,\n customerDataTrackerManager: CustomerDataTrackerManager,\n getCommonContext: () => CommonContext,\n initialViewOptions: ViewOptions | undefined,\n createEncoder: (streamId: DeflateEncoderStreamId) => Encoder,\n\n // `startRum` and its subcomponents assume tracking consent is granted initially and starts\n // collecting logs unconditionally. As such, `startRum` should be called with a\n // `trackingConsentState` set to \"granted\".\n trackingConsentState: TrackingConsentState\n) {\n const cleanupTasks: Array<() => void> = []\n const lifeCycle = new LifeCycle()\n\n lifeCycle.subscribe(LifeCycleEventType.RUM_EVENT_COLLECTED, (event) => sendToExtension('rum', event))\n\n const telemetry = startRumTelemetry(configuration)\n telemetry.setContextProvider(() => ({\n application: {\n id: configuration.applicationId,\n },\n session: {\n id: session.findTrackedSession()?.id,\n },\n view: {\n id: viewContexts.findView()?.id,\n },\n action: {\n id: actionContexts.findActionId(),\n },\n }))\n\n const reportError = (error: RawError) => {\n lifeCycle.notify(LifeCycleEventType.RAW_ERROR_COLLECTED, { error })\n addTelemetryDebug('Error reported to customer', { 'error.message': error.message })\n }\n const featureFlagContexts = startFeatureFlagContexts(\n lifeCycle,\n customerDataTrackerManager.getOrCreateTracker(CustomerDataType.FeatureFlag)\n )\n\n const pageExitObservable = createPageExitObservable(configuration)\n const pageExitSubscription = pageExitObservable.subscribe((event) => {\n lifeCycle.notify(LifeCycleEventType.PAGE_EXITED, event)\n })\n cleanupTasks.push(() => pageExitSubscription.unsubscribe())\n\n const session = !canUseEventBridge()\n ? startRumSessionManager(configuration, lifeCycle, trackingConsentState)\n : startRumSessionManagerStub()\n if (!canUseEventBridge()) {\n const batch = startRumBatch(\n configuration,\n lifeCycle,\n telemetry.observable,\n reportError,\n pageExitObservable,\n session.expireObservable,\n createEncoder\n )\n cleanupTasks.push(() => batch.stop())\n startCustomerDataTelemetry(configuration, telemetry, lifeCycle, customerDataTrackerManager, batch.flushObservable)\n } else {\n startRumEventBridge(lifeCycle)\n }\n\n const domMutationObservable = createDOMMutationObservable()\n const locationChangeObservable = createLocationChangeObservable(configuration, location)\n const pageStateHistory = startPageStateHistory(configuration)\n const {\n viewContexts,\n urlContexts,\n actionContexts,\n addAction,\n stop: stopRumEventCollection,\n } = startRumEventCollection(\n lifeCycle,\n configuration,\n location,\n session,\n pageStateHistory,\n locationChangeObservable,\n domMutationObservable,\n getCommonContext,\n reportError\n )\n cleanupTasks.push(stopRumEventCollection)\n\n drainPreStartTelemetry()\n\n const {\n addTiming,\n startView,\n updateViewName,\n stop: stopViewCollection,\n } = startViewCollection(\n lifeCycle,\n configuration,\n location,\n domMutationObservable,\n locationChangeObservable,\n featureFlagContexts,\n pageStateHistory,\n recorderApi,\n initialViewOptions\n )\n cleanupTasks.push(stopViewCollection)\n\n const { stop: stopResourceCollection } = startResourceCollection(lifeCycle, configuration, pageStateHistory)\n cleanupTasks.push(stopResourceCollection)\n\n startLongTaskCollection(lifeCycle, configuration)\n\n const { addError } = startErrorCollection(lifeCycle, configuration, pageStateHistory, featureFlagContexts)\n\n startRequestCollection(lifeCycle, configuration, session)\n const { stop: stopPerformanceCollection } = startPerformanceCollection(lifeCycle, configuration)\n cleanupTasks.push(stopPerformanceCollection)\n\n const vitalCollection = startVitalCollection(lifeCycle, pageStateHistory)\n const internalContext = startInternalContext(\n configuration.applicationId,\n session,\n viewContexts,\n actionContexts,\n urlContexts\n )\n\n return {\n addAction,\n addError,\n addTiming,\n addFeatureFlagEvaluation: featureFlagContexts.addFeatureFlagEvaluation,\n startView,\n updateViewName,\n lifeCycle,\n viewContexts,\n session,\n stopSession: () => session.expire(),\n getInternalContext: internalContext.get,\n startDurationVital: vitalCollection.startDurationVital,\n addDurationVital: vitalCollection.addDurationVital,\n stop: () => {\n cleanupTasks.forEach((task) => task())\n },\n }\n}\n\nfunction startRumTelemetry(configuration: RumConfiguration) {\n const telemetry = startTelemetry(TelemetryService.RUM, configuration)\n if (canUseEventBridge()) {\n const bridge = getEventBridge<'internal_telemetry', TelemetryEvent>()!\n telemetry.observable.subscribe((event) => bridge.send('internal_telemetry', event))\n }\n return telemetry\n}\n\nexport function startRumEventCollection(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n location: Location,\n sessionManager: RumSessionManager,\n pageStateHistory: PageStateHistory,\n locationChangeObservable: Observable<LocationChange>,\n domMutationObservable: Observable<void>,\n getCommonContext: () => CommonContext,\n reportError: (error: RawError) => void\n) {\n const viewContexts = startViewContexts(lifeCycle)\n const urlContexts = startUrlContexts(lifeCycle, locationChangeObservable, location)\n\n const { addAction, actionContexts } = startActionCollection(\n lifeCycle,\n domMutationObservable,\n configuration,\n pageStateHistory\n )\n\n const displayContext = startDisplayContext(configuration)\n const ciVisibilityContext = startCiVisibilityContext(configuration)\n\n startRumAssembly(\n configuration,\n lifeCycle,\n sessionManager,\n viewContexts,\n urlContexts,\n actionContexts,\n displayContext,\n ciVisibilityContext,\n getCommonContext,\n reportError\n )\n\n return {\n viewContexts,\n pageStateHistory,\n urlContexts,\n addAction,\n actionContexts,\n stop: () => {\n ciVisibilityContext.stop()\n displayContext.stop()\n pageStateHistory.stop()\n urlContexts.stop()\n viewContexts.stop()\n pageStateHistory.stop()\n },\n }\n}\n","import type { Context } from '@datadog/browser-core'\nimport { getEventBridge } from '@datadog/browser-core'\nimport type { LifeCycle } from '../domain/lifeCycle'\nimport { LifeCycleEventType } from '../domain/lifeCycle'\nimport type { RumEvent } from '../rumEvent.types'\n\nexport function startRumEventBridge(lifeCycle: LifeCycle) {\n const bridge = getEventBridge<'rum', RumEvent>()!\n\n lifeCycle.subscribe(LifeCycleEventType.RUM_EVENT_COLLECTED, (serverRumEvent: RumEvent & Context) => {\n bridge.send('rum', serverRumEvent)\n })\n}\n","import type { Context, TelemetryEvent, Observable, RawError, PageExitEvent, Encoder } from '@datadog/browser-core'\nimport {\n DeflateEncoderStreamId,\n combine,\n isTelemetryReplicationAllowed,\n startBatchWithReplica,\n} from '@datadog/browser-core'\nimport type { RumConfiguration } from '../domain/configuration'\nimport type { LifeCycle } from '../domain/lifeCycle'\nimport { LifeCycleEventType } from '../domain/lifeCycle'\nimport { RumEventType } from '../rawRumEvent.types'\nimport type { RumEvent } from '../rumEvent.types'\n\nexport function startRumBatch(\n configuration: RumConfiguration,\n lifeCycle: LifeCycle,\n telemetryEventObservable: Observable<TelemetryEvent & Context>,\n reportError: (error: RawError) => void,\n pageExitObservable: Observable<PageExitEvent>,\n sessionExpireObservable: Observable<void>,\n createEncoder: (streamId: DeflateEncoderStreamId) => Encoder\n) {\n const replica = configuration.replica\n\n const batch = startBatchWithReplica(\n configuration,\n {\n endpoint: configuration.rumEndpointBuilder,\n encoder: createEncoder(DeflateEncoderStreamId.RUM),\n },\n replica && {\n endpoint: replica.rumEndpointBuilder,\n transformMessage: (message) => combine(message, { application: { id: replica.applicationId } }),\n encoder: createEncoder(DeflateEncoderStreamId.RUM_REPLICA),\n },\n reportError,\n pageExitObservable,\n sessionExpireObservable\n )\n\n lifeCycle.subscribe(LifeCycleEventType.RUM_EVENT_COLLECTED, (serverRumEvent: RumEvent & Context) => {\n if (serverRumEvent.type === RumEventType.VIEW) {\n batch.upsert(serverRumEvent, serverRumEvent.view.id)\n } else {\n batch.add(serverRumEvent)\n }\n })\n\n telemetryEventObservable.subscribe((event) => batch.add(event, isTelemetryReplicationAllowed(configuration)))\n\n return batch\n}\n","import type { RumConfiguration } from '../configuration'\nimport { getViewportDimension, initViewportObservable } from '../../browser/viewportObservable'\n\nexport type DisplayContext = ReturnType<typeof startDisplayContext>\n\nexport function startDisplayContext(configuration: RumConfiguration) {\n let viewport = getViewportDimension()\n const unsubscribeViewport = initViewportObservable(configuration).subscribe((viewportDimension) => {\n viewport = viewportDimension\n }).unsubscribe\n\n return {\n get: () => ({ viewport }),\n stop: unsubscribeViewport,\n }\n}\n","import { toServerDuration, relativeToClocks, generateUUID } from '@datadog/browser-core'\nimport type { RawRumLongTaskEvent } from '../../rawRumEvent.types'\nimport { RumEventType } from '../../rawRumEvent.types'\nimport type { LifeCycle } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport { RumPerformanceEntryType } from '../../browser/performanceObservable'\nimport type { RumConfiguration } from '../configuration'\n\nexport function startLongTaskCollection(lifeCycle: LifeCycle, configuration: RumConfiguration) {\n lifeCycle.subscribe(LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED, (entries) => {\n for (const entry of entries) {\n if (entry.entryType !== RumPerformanceEntryType.LONG_TASK) {\n break\n }\n if (!configuration.trackLongTasks) {\n break\n }\n const startClocks = relativeToClocks(entry.startTime)\n const rawRumEvent: RawRumLongTaskEvent = {\n date: startClocks.timeStamp,\n long_task: {\n id: generateUUID(),\n duration: toServerDuration(entry.duration),\n },\n type: RumEventType.LONG_TASK,\n _dd: {\n discarded: false,\n },\n }\n lifeCycle.notify(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, {\n rawRumEvent,\n startTime: startClocks.relative,\n domainContext: { performanceEntry: entry },\n })\n }\n })\n}\n","import type { RelativeTime } from '@datadog/browser-core'\nimport type { ActionContexts } from '../action/actionCollection'\nimport type { RumSessionManager } from '../rumSessionManager'\nimport type { ViewContexts } from './viewContexts'\nimport type { UrlContexts } from './urlContexts'\n\nexport interface InternalContext {\n application_id: string\n session_id: string | undefined\n view?: {\n id: string\n url: string\n referrer: string\n name?: string\n }\n user_action?: {\n id: string | string[]\n }\n}\n\n/**\n * Internal context keep returning v1 format\n * to not break compatibility with logs data format\n */\nexport function startInternalContext(\n applicationId: string,\n sessionManager: RumSessionManager,\n viewContexts: ViewContexts,\n actionContexts: ActionContexts,\n urlContexts: UrlContexts\n) {\n return {\n get: (startTime?: number): InternalContext | undefined => {\n const viewContext = viewContexts.findView(startTime as RelativeTime)\n const urlContext = urlContexts.findUrl(startTime as RelativeTime)\n const session = sessionManager.findTrackedSession(startTime as RelativeTime)\n if (session && viewContext && urlContext) {\n const actionId = actionContexts.findActionId(startTime as RelativeTime)\n return {\n application_id: applicationId,\n session_id: session.id,\n user_action: actionId ? { id: actionId } : undefined,\n view: { id: viewContext.id, name: viewContext.name, referrer: urlContext.referrer, url: urlContext.url },\n }\n }\n },\n }\n}\n","import { includes } from '@datadog/browser-core'\nimport type { Logger, HandlerType } from '../logger'\n\nexport function isAuthorized(status: StatusType, handlerType: HandlerType, logger: Logger) {\n const loggerHandler = logger.getHandler()\n const sanitizedHandlerType = Array.isArray(loggerHandler) ? loggerHandler : [loggerHandler]\n return (\n STATUS_PRIORITIES[status] >= STATUS_PRIORITIES[logger.getLevel()] && includes(sanitizedHandlerType, handlerType)\n )\n}\n\nexport const StatusType = {\n ok: 'ok',\n debug: 'debug',\n info: 'info',\n notice: 'notice',\n warn: 'warn',\n error: 'error',\n critical: 'critical',\n alert: 'alert',\n emerg: 'emerg',\n} as const\n\nexport const STATUS_PRIORITIES: { [key in StatusType]: number } = {\n [StatusType.ok]: 0,\n [StatusType.debug]: 1,\n [StatusType.info]: 2,\n [StatusType.notice]: 4,\n [StatusType.warn]: 5,\n [StatusType.error]: 6,\n [StatusType.critical]: 7,\n [StatusType.alert]: 8,\n [StatusType.emerg]: 9,\n}\n\nexport type StatusType = (typeof StatusType)[keyof typeof StatusType]\n","import type { Context, ContextManager, CustomerDataTracker } from '@datadog/browser-core'\nimport {\n clocksNow,\n computeRawError,\n ErrorHandling,\n computeStackTrace,\n combine,\n createContextManager,\n ErrorSource,\n monitored,\n sanitize,\n NonErrorPrefix,\n createHandlingStack,\n} from '@datadog/browser-core'\n\nimport type { RawLoggerLogsEvent } from '../rawLogsEvent.types'\nimport { isAuthorized, StatusType } from './logger/isAuthorized'\n\nexport interface LogsMessage {\n message: string\n status: StatusType\n context?: Context\n}\n\nexport const HandlerType = {\n console: 'console',\n http: 'http',\n silent: 'silent',\n} as const\n\nexport type HandlerType = (typeof HandlerType)[keyof typeof HandlerType]\nexport const STATUSES = Object.keys(StatusType) as StatusType[]\n\n// note: it is safe to merge declarations as long as the methods are actually defined on the prototype\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging, no-restricted-syntax\nexport class Logger {\n private contextManager: ContextManager\n\n constructor(\n private handleLogStrategy: (logsMessage: LogsMessage, logger: Logger, handlingStack?: string) => void,\n customerDataTracker: CustomerDataTracker,\n name?: string,\n private handlerType: HandlerType | HandlerType[] = HandlerType.http,\n private level: StatusType = StatusType.debug,\n loggerContext: object = {}\n ) {\n this.contextManager = createContextManager(customerDataTracker)\n this.contextManager.setContext(loggerContext as Context)\n if (name) {\n this.contextManager.setContextProperty('logger', { name })\n }\n }\n\n @monitored\n logImplementation(\n message: string,\n messageContext?: object,\n status: StatusType = StatusType.info,\n error?: Error,\n handlingStack?: string\n ) {\n let errorContext: RawLoggerLogsEvent['error']\n\n if (error !== undefined && error !== null) {\n const stackTrace = error instanceof Error ? computeStackTrace(error) : undefined\n const rawError = computeRawError({\n stackTrace,\n originalError: error,\n nonErrorPrefix: NonErrorPrefix.PROVIDED,\n source: ErrorSource.LOGGER,\n handling: ErrorHandling.HANDLED,\n startClocks: clocksNow(),\n })\n\n errorContext = {\n stack: rawError.stack,\n kind: rawError.type,\n message: rawError.message,\n causes: rawError.causes,\n }\n }\n\n const sanitizedMessageContext = sanitize(messageContext) as Context\n\n const context = errorContext\n ? (combine({ error: errorContext }, sanitizedMessageContext) as Context)\n : sanitizedMessageContext\n\n this.handleLogStrategy(\n {\n message: sanitize(message)!,\n context,\n status,\n },\n this,\n handlingStack\n )\n }\n\n log(message: string, messageContext?: object, status: StatusType = StatusType.info, error?: Error) {\n let handlingStack: string | undefined\n\n if (isAuthorized(status, HandlerType.http, this)) {\n handlingStack = createHandlingStack()\n }\n\n this.logImplementation(message, messageContext, status, error, handlingStack)\n }\n\n setContext(context: object) {\n this.contextManager.setContext(context as Context)\n }\n\n getContext() {\n return this.contextManager.getContext()\n }\n\n setContextProperty(key: string, value: any) {\n this.contextManager.setContextProperty(key, value)\n }\n\n removeContextProperty(key: string) {\n this.contextManager.removeContextProperty(key)\n }\n\n clearContext() {\n this.contextManager.clearContext()\n }\n\n setHandler(handler: HandlerType | HandlerType[]) {\n this.handlerType = handler\n }\n\n getHandler() {\n return this.handlerType\n }\n\n setLevel(level: StatusType) {\n this.level = level\n }\n\n getLevel() {\n return this.level\n }\n}\n\n/* eslint-disable local-rules/disallow-side-effects */\nLogger.prototype.ok = createLoggerMethod(StatusType.ok)\nLogger.prototype.debug = createLoggerMethod(StatusType.debug)\nLogger.prototype.info = createLoggerMethod(StatusType.info)\nLogger.prototype.notice = createLoggerMethod(StatusType.notice)\nLogger.prototype.warn = createLoggerMethod(StatusType.warn)\nLogger.prototype.error = createLoggerMethod(StatusType.error)\nLogger.prototype.critical = createLoggerMethod(StatusType.critical)\nLogger.prototype.alert = createLoggerMethod(StatusType.alert)\nLogger.prototype.emerg = createLoggerMethod(StatusType.emerg)\n/* eslint-enable local-rules/disallow-side-effects */\n\n// note: it is safe to merge declarations as long as the methods are actually defined on the prototype\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport interface Logger {\n ok(message: string, messageContext?: object, error?: Error): void\n debug(message: string, messageContext?: object, error?: Error): void\n info(message: string, messageContext?: object, error?: Error): void\n notice(message: string, messageContext?: object, error?: Error): void\n warn(message: string, messageContext?: object, error?: Error): void\n error(message: string, messageContext?: object, error?: Error): void\n critical(message: string, messageContext?: object, error?: Error): void\n alert(message: string, messageContext?: object, error?: Error): void\n emerg(message: string, messageContext?: object, error?: Error): void\n}\n\nfunction createLoggerMethod(status: StatusType) {\n return function (this: Logger, message: string, messageContext?: object, error?: Error) {\n let handlingStack: string | undefined\n\n if (isAuthorized(status, HandlerType.http, this)) {\n handlingStack = createHandlingStack()\n }\n\n this.logImplementation(message, messageContext, status, error, handlingStack)\n }\n}\n","import type { Configuration, InitConfiguration, RawTelemetryConfiguration } from '@datadog/browser-core'\nimport {\n serializeConfiguration,\n assign,\n ONE_KIBI_BYTE,\n validateAndBuildConfiguration,\n display,\n removeDuplicates,\n ConsoleApiName,\n RawReportType,\n includes,\n objectValues,\n} from '@datadog/browser-core'\nimport type { LogsEvent } from '../logsEvent.types'\nimport type { LogsEventDomainContext } from '../domainContext.types'\n\nexport interface LogsInitConfiguration extends InitConfiguration {\n /**\n * Access to every logs collected by the Logs SDK before they are sent to Datadog.\n * It allows:\n * - Enrich your logs with additional context attributes\n * - Modify your logs to modify their content, or redact sensitive sequences (see the list of editable properties)\n * - Discard selected logs\n */\n beforeSend?: ((event: LogsEvent, context: LogsEventDomainContext) => boolean) | undefined\n /**\n * Forward console.error logs, uncaught exceptions and network errors to Datadog.\n * @default true\n */\n forwardErrorsToLogs?: boolean | undefined\n /**\n * Forward logs from console.* to Datadog. Use \"all\" to forward everything or an array of console API names to forward only a subset.\n */\n forwardConsoleLogs?: ConsoleApiName[] | 'all' | undefined\n /**\n * Forward reports from the [Reporting API](https://developer.mozilla.org/en-US/docs/Web/API/Reporting_API) to Datadog. Use \"all\" to forward everything or an array of report types to forward only a subset.\n */\n forwardReports?: RawReportType[] | 'all' | undefined\n /**\n * Use PCI-compliant intake. See [PCI DSS Compliance](https://docs.datadoghq.com/data_security/pci_compliance/?tab=logmanagement) for further information.\n * @default false\n */\n usePciIntake?: boolean\n /**\n * Keep sending logs after the session expiration.\n * @default false\n */\n sendLogsAfterSessionExpiration?: boolean | undefined // TODO next major: remove this option and make it the default behaviour\n}\n\nexport type HybridInitConfiguration = Omit<LogsInitConfiguration, 'clientToken'>\n\nexport interface LogsConfiguration extends Configuration {\n forwardErrorsToLogs: boolean\n forwardConsoleLogs: ConsoleApiName[]\n forwardReports: RawReportType[]\n requestErrorResponseLengthLimit: number\n sendLogsAfterSessionExpiration: boolean\n}\n\n/**\n * arbitrary value, byte precision not needed\n */\nexport const DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT = 32 * ONE_KIBI_BYTE\n\nexport function validateAndBuildLogsConfiguration(\n initConfiguration: LogsInitConfiguration\n): LogsConfiguration | undefined {\n if (initConfiguration.usePciIntake === true && initConfiguration.site && initConfiguration.site !== 'datadoghq.com') {\n display.warn(\n 'PCI compliance for Logs is only available for Datadog organizations in the US1 site. Default intake will be used.'\n )\n }\n\n const baseConfiguration = validateAndBuildConfiguration(initConfiguration)\n\n const forwardConsoleLogs = validateAndBuildForwardOption<ConsoleApiName>(\n initConfiguration.forwardConsoleLogs,\n objectValues(ConsoleApiName),\n 'Forward Console Logs'\n )\n\n const forwardReports = validateAndBuildForwardOption<RawReportType>(\n initConfiguration.forwardReports,\n objectValues(RawReportType),\n 'Forward Reports'\n )\n\n if (!baseConfiguration || !forwardConsoleLogs || !forwardReports) {\n return\n }\n\n if (initConfiguration.forwardErrorsToLogs && !includes(forwardConsoleLogs, ConsoleApiName.error)) {\n forwardConsoleLogs.push(ConsoleApiName.error)\n }\n\n return assign(\n {\n forwardErrorsToLogs: initConfiguration.forwardErrorsToLogs !== false,\n forwardConsoleLogs,\n forwardReports,\n requestErrorResponseLengthLimit: DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT,\n sendLogsAfterSessionExpiration: !!initConfiguration.sendLogsAfterSessionExpiration,\n },\n baseConfiguration\n )\n}\n\nexport function validateAndBuildForwardOption<T>(\n option: readonly T[] | 'all' | undefined,\n allowedValues: T[],\n label: string\n): T[] | undefined {\n if (option === undefined) {\n return []\n }\n\n if (!(option === 'all' || (Array.isArray(option) && option.every((api) => includes(allowedValues, api))))) {\n display.error(`${label} should be \"all\" or an array with allowed values \"${allowedValues.join('\", \"')}\"`)\n return\n }\n\n return option === 'all' ? allowedValues : removeDuplicates<T>(option)\n}\n\nexport function serializeLogsConfiguration(configuration: LogsInitConfiguration) {\n const baseSerializedInitConfiguration = serializeConfiguration(configuration)\n\n return assign(\n {\n forward_errors_to_logs: configuration.forwardErrorsToLogs,\n forward_console_logs: configuration.forwardConsoleLogs,\n forward_reports: configuration.forwardReports,\n use_pci_intake: configuration.usePciIntake,\n send_logs_after_session_expiration: configuration.sendLogsAfterSessionExpiration,\n },\n baseSerializedInitConfiguration\n ) satisfies RawTelemetryConfiguration\n}\n","import type { TrackingConsentState } from '@datadog/browser-core'\nimport {\n createBoundedBuffer,\n assign,\n canUseEventBridge,\n display,\n displayAlreadyInitializedError,\n initFeatureFlags,\n initFetchObservable,\n noop,\n timeStampNow,\n} from '@datadog/browser-core'\nimport {\n validateAndBuildLogsConfiguration,\n type LogsConfiguration,\n type LogsInitConfiguration,\n} from '../domain/configuration'\nimport type { CommonContext } from '../rawLogsEvent.types'\nimport type { Strategy } from './logsPublicApi'\nimport type { StartLogsResult } from './startLogs'\n\nexport function createPreStartStrategy(\n getCommonContext: () => CommonContext,\n trackingConsentState: TrackingConsentState,\n doStartLogs: (initConfiguration: LogsInitConfiguration, configuration: LogsConfiguration) => StartLogsResult\n): Strategy {\n const bufferApiCalls = createBoundedBuffer<StartLogsResult>()\n let cachedInitConfiguration: LogsInitConfiguration | undefined\n let cachedConfiguration: LogsConfiguration | undefined\n const trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartLogs)\n\n function tryStartLogs() {\n if (!cachedConfiguration || !cachedInitConfiguration || !trackingConsentState.isGranted()) {\n return\n }\n\n trackingConsentStateSubscription.unsubscribe()\n const startLogsResult = doStartLogs(cachedInitConfiguration, cachedConfiguration)\n\n bufferApiCalls.drain(startLogsResult)\n }\n\n return {\n init(initConfiguration) {\n if (!initConfiguration) {\n display.error('Missing configuration')\n return\n }\n // Set the experimental feature flags as early as possible, so we can use them in most places\n initFeatureFlags(initConfiguration.enableExperimentalFeatures)\n\n if (canUseEventBridge()) {\n initConfiguration = overrideInitConfigurationForBridge(initConfiguration)\n }\n\n // Expose the initial configuration regardless of initialization success.\n cachedInitConfiguration = initConfiguration\n\n if (cachedConfiguration) {\n displayAlreadyInitializedError('DD_LOGS', initConfiguration)\n return\n }\n\n const configuration = validateAndBuildLogsConfiguration(initConfiguration)\n if (!configuration) {\n return\n }\n\n cachedConfiguration = configuration\n // Instrumuent fetch to track network requests\n // This is needed in case the consent is not granted and some cutsomer\n // library (Apollo Client) is storing uninstrumented fetch to be used later\n // The subscrption is needed so that the instrumentation process is completed\n initFetchObservable().subscribe(noop)\n\n trackingConsentState.tryToInit(configuration.trackingConsent)\n tryStartLogs()\n },\n\n get initConfiguration() {\n return cachedInitConfiguration\n },\n\n getInternalContext: noop as () => undefined,\n\n handleLog(message, statusType, handlingStack, context = getCommonContext(), date = timeStampNow()) {\n bufferApiCalls.add((startLogsResult) =>\n startLogsResult.handleLog(message, statusType, handlingStack, context, date)\n )\n },\n }\n}\n\nfunction overrideInitConfigurationForBridge(initConfiguration: LogsInitConfiguration): LogsInitConfiguration {\n return assign({}, initConfiguration, { clientToken: 'empty' })\n}\n","import type { Context, TrackingConsent, User, PublicApi } from '@datadog/browser-core'\nimport {\n addTelemetryUsage,\n CustomerDataType,\n assign,\n createContextManager,\n makePublicApi,\n monitor,\n checkUser,\n sanitizeUser,\n sanitize,\n createCustomerDataTrackerManager,\n storeContextManager,\n displayAlreadyInitializedError,\n deepClone,\n createTrackingConsentState,\n} from '@datadog/browser-core'\nimport type { LogsInitConfiguration } from '../domain/configuration'\nimport type { HandlerType } from '../domain/logger'\nimport type { StatusType } from '../domain/logger/isAuthorized'\nimport { Logger } from '../domain/logger'\nimport { buildCommonContext } from '../domain/contexts/commonContext'\nimport type { InternalContext } from '../domain/contexts/internalContext'\nimport type { StartLogs, StartLogsResult } from './startLogs'\nimport { createPreStartStrategy } from './preStartLogs'\n\nexport interface LoggerConfiguration {\n level?: StatusType\n handler?: HandlerType | HandlerType[]\n context?: object\n}\n\nexport interface LogsPublicApi extends PublicApi {\n logger: Logger\n\n /**\n * Init the Logs browser SDK.\n * @param initConfiguration Configuration options of the SDK\n *\n * See [Browser Log Collection](https://docs.datadoghq.com/logs/log_collection/javascript) for further information.\n */\n init: (initConfiguration: LogsInitConfiguration) => void\n\n /**\n * Set the tracking consent of the current user.\n *\n * @param {\"granted\" | \"not-granted\"} trackingConsent The user tracking consent\n *\n * Logs will be sent only if it is set to \"granted\". This value won't be stored by the library\n * across page loads: you will need to call this method or set the appropriate `trackingConsent`\n * field in the init() method at each page load.\n *\n * If this method is called before the init() method, the provided value will take precedence\n * over the one provided as initialization parameter.\n */\n setTrackingConsent: (trackingConsent: TrackingConsent) => void\n\n /**\n * Get the global Context\n *\n * See [Overwrite context](https://docs.datadoghq.com/logs/log_collection/javascript/#overwrite-context) for further information.\n */\n getGlobalContext: () => Context\n\n /**\n * Set the global context information to all logs, stored in `@context`\n *\n * @param context Global context\n *\n * See [Overwrite context](https://docs.datadoghq.com/logs/log_collection/javascript/#overwrite-context) for further information.\n */\n setGlobalContext: (context: any) => void\n\n /**\n * Set or update a global context property, stored in `@context.<key>`\n *\n * @param key Key of the property\n * @param property Value of the property\n *\n * See [Overwrite context](https://docs.datadoghq.com/logs/log_collection/javascript/#overwrite-context) for further information.\n */\n setGlobalContextProperty: (key: any, value: any) => void\n\n /**\n * Remove a global context property\n *\n * See [Overwrite context](https://docs.datadoghq.com/logs/log_collection/javascript/#overwrite-context) for further information.\n */\n removeGlobalContextProperty: (key: any) => void\n\n /**\n * Clear the global context\n *\n * See [Overwrite context](https://docs.datadoghq.com/logs/log_collection/javascript/#overwrite-context) for further information.\n */\n clearGlobalContext: () => void\n\n /**\n * The Datadog browser logs SDK contains a default logger `DD_LOGS.logger`, but this API allows to create different ones.\n *\n * See [Define multiple loggers](https://docs.datadoghq.com/logs/log_collection/javascript/#define-multiple-loggers) for further information.\n */\n createLogger: (name: string, conf?: LoggerConfiguration) => Logger\n\n /**\n * Get a logger\n *\n * See [Define multiple loggers](https://docs.datadoghq.com/logs/log_collection/javascript/#define-multiple-loggers) for further information.\n */\n getLogger: (name: string) => Logger | undefined\n\n /**\n * Get the init configuration\n */\n getInitConfiguration: () => LogsInitConfiguration | undefined\n\n /**\n * [Internal API] Get the internal SDK context\n *\n * See [Access internal context](https://docs.datadoghq.com/logs/log_collection/javascript/#access-internal-context) for further information.\n */\n getInternalContext: (startTime?: number | undefined) => InternalContext | undefined\n\n /**\n * Set user information to all events, stored in `@usr`\n *\n * See [User context](https://docs.datadoghq.com/logs/log_collection/javascript/#user-context) for further information.\n */\n setUser: (newUser: User) => void\n\n /**\n * Get user information\n *\n * See [User context](https://docs.datadoghq.com/logs/log_collection/javascript/#user-context) for further information.\n */\n getUser: () => Context\n\n /**\n * Set or update the user property, stored in `@usr.<key>`\n *\n * @param key Key of the property\n * @param property Value of the property\n *\n * See [User context](https://docs.datadoghq.com/logs/log_collection/javascript/#user-context) for further information.\n */\n setUserProperty: (key: any, property: any) => void\n\n /**\n * Remove a user property\n *\n * See [User context](https://docs.datadoghq.com/logs/log_collection/javascript/#user-context) for further information.\n */\n removeUserProperty: (key: any) => void\n\n /**\n * Clear all user information\n *\n * See [User context](https://docs.datadoghq.com/logs/log_collection/javascript/#user-context) for further information.\n */\n clearUser: () => void\n}\n\nconst LOGS_STORAGE_KEY = 'logs'\n\nexport interface Strategy {\n init: (initConfiguration: LogsInitConfiguration) => void\n initConfiguration: LogsInitConfiguration | undefined\n getInternalContext: StartLogsResult['getInternalContext']\n handleLog: StartLogsResult['handleLog']\n}\n\nexport function makeLogsPublicApi(startLogsImpl: StartLogs): LogsPublicApi {\n const customerDataTrackerManager = createCustomerDataTrackerManager()\n const globalContextManager = createContextManager(\n customerDataTrackerManager.getOrCreateTracker(CustomerDataType.GlobalContext)\n )\n const userContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(CustomerDataType.User))\n const trackingConsentState = createTrackingConsentState()\n\n function getCommonContext() {\n return buildCommonContext(globalContextManager, userContextManager)\n }\n\n let strategy = createPreStartStrategy(getCommonContext, trackingConsentState, (initConfiguration, configuration) => {\n if (initConfiguration.storeContextsAcrossPages) {\n storeContextManager(configuration, globalContextManager, LOGS_STORAGE_KEY, CustomerDataType.GlobalContext)\n storeContextManager(configuration, userContextManager, LOGS_STORAGE_KEY, CustomerDataType.User)\n }\n\n const startLogsResult = startLogsImpl(initConfiguration, configuration, getCommonContext, trackingConsentState)\n\n strategy = createPostStartStrategy(initConfiguration, startLogsResult)\n return startLogsResult\n })\n\n const customLoggers: { [name: string]: Logger | undefined } = {}\n\n const mainLogger = new Logger(\n (...params) => strategy.handleLog(...params),\n customerDataTrackerManager.createDetachedTracker()\n )\n\n return makePublicApi<LogsPublicApi>({\n logger: mainLogger,\n\n init: monitor((initConfiguration) => strategy.init(initConfiguration)),\n\n setTrackingConsent: monitor((trackingConsent) => {\n trackingConsentState.update(trackingConsent)\n addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent })\n }),\n\n getGlobalContext: monitor(() => globalContextManager.getContext()),\n\n setGlobalContext: monitor((context) => globalContextManager.setContext(context)),\n\n setGlobalContextProperty: monitor((key, value) => globalContextManager.setContextProperty(key, value)),\n\n removeGlobalContextProperty: monitor((key) => globalContextManager.removeContextProperty(key)),\n\n clearGlobalContext: monitor(() => globalContextManager.clearContext()),\n\n createLogger: monitor((name, conf = {}) => {\n customLoggers[name] = new Logger(\n (...params) => strategy.handleLog(...params),\n customerDataTrackerManager.createDetachedTracker(),\n sanitize(name),\n conf.handler,\n conf.level,\n sanitize(conf.context) as object\n )\n\n return customLoggers[name]\n }),\n\n getLogger: monitor((name) => customLoggers[name]),\n\n getInitConfiguration: monitor(() => deepClone(strategy.initConfiguration)),\n\n getInternalContext: monitor((startTime) => strategy.getInternalContext(startTime)),\n\n setUser: monitor((newUser) => {\n if (checkUser(newUser)) {\n userContextManager.setContext(sanitizeUser(newUser as Context))\n }\n }),\n\n getUser: monitor(() => userContextManager.getContext()),\n\n setUserProperty: monitor((key, property) => {\n const sanitizedProperty = sanitizeUser({ [key]: property })[key]\n userContextManager.setContextProperty(key, sanitizedProperty)\n }),\n\n removeUserProperty: monitor((key) => userContextManager.removeContextProperty(key)),\n\n clearUser: monitor(() => userContextManager.clearContext()),\n })\n}\n\nfunction createPostStartStrategy(initConfiguration: LogsInitConfiguration, startLogsResult: StartLogsResult): Strategy {\n return assign(\n {\n init: (initConfiguration: LogsInitConfiguration) => {\n displayAlreadyInitializedError('DD_LOGS', initConfiguration)\n },\n initConfiguration,\n },\n startLogsResult\n )\n}\n","import type { RelativeTime, TrackingConsentState } from '@datadog/browser-core'\nimport { Observable, performDraw, startSessionManager } from '@datadog/browser-core'\nimport type { LogsConfiguration } from './configuration'\n\nexport const LOGS_SESSION_KEY = 'logs'\n\nexport interface LogsSessionManager {\n findTrackedSession: (startTime?: RelativeTime, options?: { returnInactive: boolean }) => LogsSession | undefined\n expireObservable: Observable<void>\n}\n\nexport type LogsSession = {\n id?: string // session can be tracked without id\n}\n\nexport const enum LoggerTrackingType {\n NOT_TRACKED = '0',\n TRACKED = '1',\n}\n\nexport function startLogsSessionManager(\n configuration: LogsConfiguration,\n trackingConsentState: TrackingConsentState\n): LogsSessionManager {\n const sessionManager = startSessionManager(\n configuration,\n LOGS_SESSION_KEY,\n (rawTrackingType) => computeSessionState(configuration, rawTrackingType),\n trackingConsentState\n )\n return {\n findTrackedSession: (startTime?: RelativeTime, options = { returnInactive: false }) => {\n const session = sessionManager.findSession(startTime, options)\n return session && session.trackingType === LoggerTrackingType.TRACKED\n ? {\n id: session.id,\n }\n : undefined\n },\n expireObservable: sessionManager.expireObservable,\n }\n}\n\nexport function startLogsSessionManagerStub(configuration: LogsConfiguration): LogsSessionManager {\n const isTracked = computeTrackingType(configuration) === LoggerTrackingType.TRACKED\n const session = isTracked ? {} : undefined\n return {\n findTrackedSession: () => session,\n expireObservable: new Observable(),\n }\n}\n\nfunction computeTrackingType(configuration: LogsConfiguration) {\n if (!performDraw(configuration.sessionSampleRate)) {\n return LoggerTrackingType.NOT_TRACKED\n }\n return LoggerTrackingType.TRACKED\n}\n\nfunction computeSessionState(configuration: LogsConfiguration, rawSessionType?: string) {\n const trackingType = hasValidLoggerSession(rawSessionType) ? rawSessionType : computeTrackingType(configuration)\n return {\n trackingType,\n isTracked: trackingType === LoggerTrackingType.TRACKED,\n }\n}\n\nfunction hasValidLoggerSession(trackingType?: string): trackingType is LoggerTrackingType {\n return trackingType === LoggerTrackingType.NOT_TRACKED || trackingType === LoggerTrackingType.TRACKED\n}\n","import type { RelativeTime, Context } from '@datadog/browser-core'\nimport {\n willSyntheticsInjectRum,\n addTelemetryDebug,\n getSyntheticsTestId,\n getSyntheticsResultId,\n} from '@datadog/browser-core'\n\ninterface Rum {\n getInternalContext?: (startTime?: RelativeTime) => Context | undefined\n}\n\ninterface BrowserWindow {\n DD_RUM?: Rum\n DD_RUM_SYNTHETICS?: Rum\n}\n\nlet logsSentBeforeRumInjectionTelemetryAdded = false\n\nexport function getRUMInternalContext(startTime?: RelativeTime): Context | undefined {\n const browserWindow = window as BrowserWindow\n\n if (willSyntheticsInjectRum()) {\n const context = getInternalContextFromRumGlobal(browserWindow.DD_RUM_SYNTHETICS)\n if (!context && !logsSentBeforeRumInjectionTelemetryAdded) {\n logsSentBeforeRumInjectionTelemetryAdded = true\n addTelemetryDebug('Logs sent before RUM is injected by the synthetics worker', {\n testId: getSyntheticsTestId(),\n resultId: getSyntheticsResultId(),\n })\n }\n return context\n }\n\n return getInternalContextFromRumGlobal(browserWindow.DD_RUM)\n\n function getInternalContextFromRumGlobal(rumGlobal?: Rum): Context | undefined {\n if (rumGlobal && rumGlobal.getInternalContext) {\n return rumGlobal.getInternalContext(startTime)\n }\n }\n}\n\nexport function resetRUMInternalContext() {\n logsSentBeforeRumInjectionTelemetryAdded = false\n}\n","import type { Context, ClocksState, ConsoleLog } from '@datadog/browser-core'\nimport { timeStampNow, ConsoleApiName, ErrorSource, initConsoleObservable } from '@datadog/browser-core'\nimport type { LogsConfiguration } from '../configuration'\nimport type { LifeCycle, RawLogsEventCollectedData } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport { StatusType } from '../logger/isAuthorized'\nimport type { RawLogsEvent } from '../../rawLogsEvent.types'\n\nexport interface ProvidedError {\n startClocks: ClocksState\n error: unknown\n context?: Context\n handlingStack: string\n}\n\nexport const LogStatusForApi = {\n [ConsoleApiName.log]: StatusType.info,\n [ConsoleApiName.debug]: StatusType.debug,\n [ConsoleApiName.info]: StatusType.info,\n [ConsoleApiName.warn]: StatusType.warn,\n [ConsoleApiName.error]: StatusType.error,\n}\nexport function startConsoleCollection(configuration: LogsConfiguration, lifeCycle: LifeCycle) {\n const consoleSubscription = initConsoleObservable(configuration.forwardConsoleLogs).subscribe((log: ConsoleLog) => {\n const collectedData: RawLogsEventCollectedData<RawLogsEvent> = {\n rawLogsEvent: {\n date: timeStampNow(),\n message: log.message,\n origin: ErrorSource.CONSOLE,\n error:\n log.api === ConsoleApiName.error\n ? {\n stack: log.stack,\n fingerprint: log.fingerprint,\n causes: log.causes,\n }\n : undefined,\n status: LogStatusForApi[log.api],\n },\n domainContext: {\n handlingStack: log.handlingStack,\n },\n }\n\n lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, collectedData)\n })\n\n return {\n stop: () => {\n consoleSubscription.unsubscribe()\n },\n }\n}\n","import type { Context, ClocksState, RawReport } from '@datadog/browser-core'\nimport {\n timeStampNow,\n ErrorSource,\n RawReportType,\n getFileFromStackTraceString,\n initReportObservable,\n} from '@datadog/browser-core'\nimport type { LogsConfiguration } from '../configuration'\nimport type { LifeCycle } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport { StatusType } from '../logger/isAuthorized'\n\nexport interface ProvidedError {\n startClocks: ClocksState\n error: unknown\n context?: Context\n handlingStack: string\n}\n\nconst LogStatusForReport = {\n [RawReportType.cspViolation]: StatusType.error,\n [RawReportType.intervention]: StatusType.error,\n [RawReportType.deprecation]: StatusType.warn,\n}\n\nexport function startReportCollection(configuration: LogsConfiguration, lifeCycle: LifeCycle) {\n const reportSubscription = initReportObservable(configuration, configuration.forwardReports).subscribe(\n (report: RawReport) => {\n let message = report.message\n const status = LogStatusForReport[report.type]\n let error\n if (status === StatusType.error) {\n error = {\n kind: report.subtype,\n stack: report.stack,\n }\n } else if (report.stack) {\n message += ` Found in ${getFileFromStackTraceString(report.stack)!}`\n }\n\n lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {\n rawLogsEvent: {\n date: timeStampNow(),\n message,\n origin: ErrorSource.REPORT,\n error,\n status,\n },\n })\n }\n )\n\n return {\n stop: () => {\n reportSubscription.unsubscribe()\n },\n }\n}\n","import type { FetchResolveContext, XhrCompleteContext } from '@datadog/browser-core'\nimport {\n ErrorSource,\n initXhrObservable,\n RequestType,\n initFetchObservable,\n computeStackTrace,\n toStackTraceString,\n monitor,\n noop,\n readBytesFromStream,\n tryToClone,\n isServerError,\n} from '@datadog/browser-core'\nimport type { LogsConfiguration } from '../configuration'\nimport type { LifeCycle } from '../lifeCycle'\nimport type { LogsEventDomainContext } from '../../domainContext.types'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport { StatusType } from '../logger/isAuthorized'\n\nexport function startNetworkErrorCollection(configuration: LogsConfiguration, lifeCycle: LifeCycle) {\n if (!configuration.forwardErrorsToLogs) {\n return { stop: noop }\n }\n\n const xhrSubscription = initXhrObservable(configuration).subscribe((context) => {\n if (context.state === 'complete') {\n handleResponse(RequestType.XHR, context)\n }\n })\n const fetchSubscription = initFetchObservable().subscribe((context) => {\n if (context.state === 'resolve') {\n handleResponse(RequestType.FETCH, context)\n }\n })\n\n function handleResponse(type: RequestType, request: XhrCompleteContext | FetchResolveContext) {\n if (!configuration.isIntakeUrl(request.url) && (isRejected(request) || isServerError(request.status))) {\n if ('xhr' in request) {\n computeXhrResponseData(request.xhr, configuration, onResponseDataAvailable)\n } else if (request.response) {\n computeFetchResponseText(request.response, configuration, onResponseDataAvailable)\n } else if (request.error) {\n computeFetchErrorText(request.error, configuration, onResponseDataAvailable)\n }\n }\n\n function onResponseDataAvailable(responseData: unknown) {\n const domainContext: LogsEventDomainContext<typeof ErrorSource.NETWORK> = {\n isAborted: request.isAborted,\n handlingStack: request.handlingStack,\n }\n\n lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {\n rawLogsEvent: {\n message: `${format(type)} error ${request.method} ${request.url}`,\n date: request.startClocks.timeStamp,\n error: {\n stack: (responseData as string) || 'Failed to load',\n },\n http: {\n method: request.method as any, // Cast resource method because of case mismatch cf issue RUMF-1152\n status_code: request.status,\n url: request.url,\n },\n status: StatusType.error,\n origin: ErrorSource.NETWORK,\n },\n domainContext,\n })\n }\n }\n\n return {\n stop: () => {\n xhrSubscription.unsubscribe()\n fetchSubscription.unsubscribe()\n },\n }\n}\n\n// TODO: ideally, computeXhrResponseData should always call the callback with a string instead of\n// `unknown`. But to keep backward compatibility, in the case of XHR with a `responseType` different\n// than \"text\", the response data should be whatever `xhr.response` is. This is a bit confusing as\n// Logs event 'stack' is expected to be a string. This should be changed in a future major version\n// as it could be a breaking change.\nexport function computeXhrResponseData(\n xhr: XMLHttpRequest,\n configuration: LogsConfiguration,\n callback: (responseData: unknown) => void\n) {\n if (typeof xhr.response === 'string') {\n callback(truncateResponseText(xhr.response, configuration))\n } else {\n callback(xhr.response)\n }\n}\n\nexport function computeFetchErrorText(\n error: Error,\n configuration: LogsConfiguration,\n callback: (errorText: string) => void\n) {\n callback(truncateResponseText(toStackTraceString(computeStackTrace(error)), configuration))\n}\n\nexport function computeFetchResponseText(\n response: Response,\n configuration: LogsConfiguration,\n callback: (responseText?: string) => void\n) {\n const clonedResponse = tryToClone(response)\n if (!clonedResponse || !clonedResponse.body) {\n // if the clone failed or if the body is null, let's not try to read it.\n callback()\n } else if (!window.TextDecoder) {\n // If the browser doesn't support TextDecoder, let's read the whole response then truncate it.\n //\n // This should only be the case on early versions of Edge (before they migrated to Chromium).\n // Even if it could be possible to implement a workaround for the missing TextDecoder API (using\n // a Blob and FileReader), we found another issue preventing us from reading only the first\n // bytes from the response: contrary to other browsers, when reading from the cloned response,\n // if the original response gets canceled, the cloned response is also canceled and we can't\n // know about it. In the following illustration, the promise returned by `reader.read()` may\n // never be fulfilled:\n //\n // fetch('/').then((response) => {\n // const reader = response.clone().body.getReader()\n // readMore()\n // function readMore() {\n // reader.read().then(\n // (result) => {\n // if (result.done) {\n // console.log('done')\n // } else {\n // readMore()\n // }\n // },\n // () => console.log('error')\n // )\n // }\n // response.body.getReader().cancel()\n // })\n clonedResponse.text().then(\n monitor((text) => callback(truncateResponseText(text, configuration))),\n monitor((error) => callback(`Unable to retrieve response: ${error as string}`))\n )\n } else {\n truncateResponseStream(\n clonedResponse.body,\n configuration.requestErrorResponseLengthLimit,\n (error, responseText) => {\n if (error) {\n callback(`Unable to retrieve response: ${error as unknown as string}`)\n } else {\n callback(responseText)\n }\n }\n )\n }\n}\n\nfunction isRejected(request: { status: number; responseType?: string }) {\n return request.status === 0 && request.responseType !== 'opaque'\n}\n\nfunction truncateResponseText(responseText: string, configuration: LogsConfiguration) {\n if (responseText.length > configuration.requestErrorResponseLengthLimit) {\n return `${responseText.substring(0, configuration.requestErrorResponseLengthLimit)}...`\n }\n return responseText\n}\n\nfunction format(type: RequestType) {\n if (RequestType.XHR === type) {\n return 'XHR'\n }\n return 'Fetch'\n}\n\nfunction truncateResponseStream(\n stream: ReadableStream<Uint8Array>,\n bytesLimit: number,\n callback: (error?: Error, responseText?: string) => void\n) {\n readBytesFromStream(\n stream,\n (error, bytes, limitExceeded) => {\n if (error) {\n callback(error)\n } else {\n let responseText = new TextDecoder().decode(bytes)\n if (limitExceeded) {\n responseText += '...'\n }\n callback(undefined, responseText)\n }\n },\n {\n bytesLimit,\n collectStreamBody: true,\n }\n )\n}\n","import { AbstractLifeCycle } from '@datadog/browser-core'\nimport type { Context } from '@datadog/browser-core'\nimport type { LogsEvent } from '../logsEvent.types'\nimport type { CommonContext, RawLogsEvent } from '../rawLogsEvent.types'\nimport type { LogsEventDomainContext } from '../domainContext.types'\n\nexport const enum LifeCycleEventType {\n RAW_LOG_COLLECTED,\n LOG_COLLECTED,\n}\n\ninterface LifeCycleEventMap {\n [LifeCycleEventType.RAW_LOG_COLLECTED]: RawLogsEventCollectedData\n [LifeCycleEventType.LOG_COLLECTED]: LogsEvent & Context\n}\n\nexport const LifeCycle = AbstractLifeCycle<LifeCycleEventMap>\nexport type LifeCycle = AbstractLifeCycle<LifeCycleEventMap>\n\nexport interface RawLogsEventCollectedData<E extends RawLogsEvent = RawLogsEvent> {\n rawLogsEvent: E\n messageContext?: object\n savedCommonContext?: CommonContext\n domainContext?: LogsEventDomainContext<E['origin']>\n}\n","import type { Context, TimeStamp } from '@datadog/browser-core'\nimport {\n combine,\n ErrorSource,\n timeStampNow,\n originalConsoleMethods,\n globalConsole,\n ConsoleApiName,\n} from '@datadog/browser-core'\nimport type { CommonContext, RawLogsEvent } from '../../rawLogsEvent.types'\nimport type { LifeCycle, RawLogsEventCollectedData } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport type { Logger, LogsMessage } from '../logger'\nimport { HandlerType } from '../logger'\nimport { isAuthorized, StatusType } from './isAuthorized'\n\nexport function startLoggerCollection(lifeCycle: LifeCycle) {\n function handleLog(\n logsMessage: LogsMessage,\n logger: Logger,\n handlingStack?: string,\n savedCommonContext?: CommonContext,\n savedDate?: TimeStamp\n ) {\n const messageContext = combine(logger.getContext(), logsMessage.context)\n\n if (isAuthorized(logsMessage.status, HandlerType.console, logger)) {\n displayInConsole(logsMessage, messageContext)\n }\n\n if (isAuthorized(logsMessage.status, HandlerType.http, logger)) {\n const rawLogEventData: RawLogsEventCollectedData<RawLogsEvent> = {\n rawLogsEvent: {\n date: savedDate || timeStampNow(),\n message: logsMessage.message,\n status: logsMessage.status,\n origin: ErrorSource.LOGGER,\n },\n messageContext,\n savedCommonContext,\n }\n\n if (handlingStack) {\n rawLogEventData.domainContext = { handlingStack }\n }\n\n lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, rawLogEventData)\n }\n }\n\n return {\n handleLog,\n }\n}\nconst loggerToConsoleApiName: { [key in StatusType]: ConsoleApiName } = {\n [StatusType.ok]: ConsoleApiName.debug,\n [StatusType.debug]: ConsoleApiName.debug,\n [StatusType.info]: ConsoleApiName.info,\n [StatusType.notice]: ConsoleApiName.info,\n [StatusType.warn]: ConsoleApiName.warn,\n [StatusType.error]: ConsoleApiName.error,\n [StatusType.critical]: ConsoleApiName.error,\n [StatusType.alert]: ConsoleApiName.error,\n [StatusType.emerg]: ConsoleApiName.error,\n}\n\nfunction displayInConsole({ status, message }: LogsMessage, messageContext: Context | undefined) {\n originalConsoleMethods[loggerToConsoleApiName[status]].call(globalConsole, message, messageContext)\n}\n","import type { RawError, Observable, PageExitEvent, TelemetryEvent, Context } from '@datadog/browser-core'\nimport {\n startTelemetry,\n TelemetryService,\n canUseEventBridge,\n getEventBridge,\n startBatchWithReplica,\n createIdentityEncoder,\n isTelemetryReplicationAllowed,\n addTelemetryConfiguration,\n drainPreStartTelemetry,\n} from '@datadog/browser-core'\nimport type { LogsConfiguration, LogsInitConfiguration } from './configuration'\nimport { getRUMInternalContext } from './contexts/rumInternalContext'\nimport type { LogsSessionManager } from './logsSessionManager'\nimport { serializeLogsConfiguration } from './configuration'\n\nexport function startLogsTelemetry(\n initConfiguration: LogsInitConfiguration,\n configuration: LogsConfiguration,\n reportError: (error: RawError) => void,\n pageExitObservable: Observable<PageExitEvent>,\n session: LogsSessionManager\n) {\n const telemetry = startTelemetry(TelemetryService.LOGS, configuration)\n telemetry.setContextProvider(() => ({\n application: {\n id: getRUMInternalContext()?.application_id,\n },\n session: {\n id: session.findTrackedSession()?.id,\n },\n view: {\n id: (getRUMInternalContext()?.view as Context)?.id,\n },\n action: {\n id: (getRUMInternalContext()?.user_action as Context)?.id,\n },\n }))\n const cleanupTasks: Array<() => void> = []\n if (canUseEventBridge()) {\n const bridge = getEventBridge<'internal_telemetry', TelemetryEvent>()!\n const telemetrySubscription = telemetry.observable.subscribe((event) => bridge.send('internal_telemetry', event))\n cleanupTasks.push(() => telemetrySubscription.unsubscribe())\n } else {\n const telemetryBatch = startBatchWithReplica(\n configuration,\n {\n endpoint: configuration.rumEndpointBuilder,\n encoder: createIdentityEncoder(),\n },\n configuration.replica && {\n endpoint: configuration.replica.rumEndpointBuilder,\n encoder: createIdentityEncoder(),\n },\n reportError,\n pageExitObservable,\n session.expireObservable\n )\n cleanupTasks.push(() => telemetryBatch.stop())\n const telemetrySubscription = telemetry.observable.subscribe((event) =>\n telemetryBatch.add(event, isTelemetryReplicationAllowed(configuration))\n )\n cleanupTasks.push(() => telemetrySubscription.unsubscribe())\n }\n drainPreStartTelemetry()\n addTelemetryConfiguration(serializeLogsConfiguration(initConfiguration))\n return {\n telemetry,\n stop: () => {\n cleanupTasks.forEach((task) => task())\n },\n }\n}\n","import { defineGlobal, getGlobalObject } from '@datadog/browser-core'\nimport type { LogsPublicApi } from '../boot/logsPublicApi'\nimport { makeLogsPublicApi } from '../boot/logsPublicApi'\nimport { startLogs } from '../boot/startLogs'\n\nexport { Logger, LogsMessage, HandlerType } from '../domain/logger'\nexport { StatusType } from '../domain/logger/isAuthorized'\nexport { LoggerConfiguration, LogsPublicApi as LogsGlobal } from '../boot/logsPublicApi'\nexport { LogsInitConfiguration } from '../domain/configuration'\nexport { LogsEvent } from '../logsEvent.types'\nexport { LogsEventDomainContext } from '../domainContext.types'\n\nexport const datadogLogs = makeLogsPublicApi(startLogs)\n\ninterface BrowserWindow extends Window {\n DD_LOGS?: LogsPublicApi\n}\ndefineGlobal(getGlobalObject<BrowserWindow>(), 'DD_LOGS', datadogLogs)\n","import type { ContextManager } from '@datadog/browser-core'\nimport type { CommonContext } from '../../rawLogsEvent.types'\n\nexport function buildCommonContext(\n globalContextManager: ContextManager,\n userContextManager: ContextManager\n): CommonContext {\n return {\n view: {\n referrer: document.referrer,\n url: window.location.href,\n },\n context: globalContextManager.getContext(),\n user: userContextManager.getContext(),\n }\n}\n","import type { TrackingConsentState } from '@datadog/browser-core'\nimport {\n sendToExtension,\n createPageExitObservable,\n willSyntheticsInjectRum,\n canUseEventBridge,\n} from '@datadog/browser-core'\nimport { startLogsSessionManager, startLogsSessionManagerStub } from '../domain/logsSessionManager'\nimport type { LogsConfiguration, LogsInitConfiguration } from '../domain/configuration'\nimport { startLogsAssembly } from '../domain/assembly'\nimport { startConsoleCollection } from '../domain/console/consoleCollection'\nimport { startReportCollection } from '../domain/report/reportCollection'\nimport { startNetworkErrorCollection } from '../domain/networkError/networkErrorCollection'\nimport { startRuntimeErrorCollection } from '../domain/runtimeError/runtimeErrorCollection'\nimport { LifeCycle, LifeCycleEventType } from '../domain/lifeCycle'\nimport { startLoggerCollection } from '../domain/logger/loggerCollection'\nimport { startLogsBatch } from '../transport/startLogsBatch'\nimport { startLogsBridge } from '../transport/startLogsBridge'\nimport { startInternalContext } from '../domain/contexts/internalContext'\nimport { startReportError } from '../domain/reportError'\nimport { startLogsTelemetry } from '../domain/logsTelemetry'\nimport type { CommonContext } from '../rawLogsEvent.types'\n\nexport type StartLogs = typeof startLogs\nexport type StartLogsResult = ReturnType<StartLogs>\n\nexport function startLogs(\n initConfiguration: LogsInitConfiguration,\n configuration: LogsConfiguration,\n getCommonContext: () => CommonContext,\n\n // `startLogs` and its subcomponents assume tracking consent is granted initially and starts\n // collecting logs unconditionally. As such, `startLogs` should be called with a\n // `trackingConsentState` set to \"granted\".\n trackingConsentState: TrackingConsentState\n) {\n const lifeCycle = new LifeCycle()\n const cleanupTasks: Array<() => void> = []\n\n lifeCycle.subscribe(LifeCycleEventType.LOG_COLLECTED, (log) => sendToExtension('logs', log))\n\n const reportError = startReportError(lifeCycle)\n const pageExitObservable = createPageExitObservable(configuration)\n\n const session =\n configuration.sessionStoreStrategyType && !canUseEventBridge() && !willSyntheticsInjectRum()\n ? startLogsSessionManager(configuration, trackingConsentState)\n : startLogsSessionManagerStub(configuration)\n\n const { stop: stopLogsTelemetry } = startLogsTelemetry(\n initConfiguration,\n configuration,\n reportError,\n pageExitObservable,\n session\n )\n cleanupTasks.push(() => stopLogsTelemetry())\n\n startNetworkErrorCollection(configuration, lifeCycle)\n startRuntimeErrorCollection(configuration, lifeCycle)\n startConsoleCollection(configuration, lifeCycle)\n startReportCollection(configuration, lifeCycle)\n const { handleLog } = startLoggerCollection(lifeCycle)\n\n startLogsAssembly(session, configuration, lifeCycle, getCommonContext, reportError)\n\n if (!canUseEventBridge()) {\n const { stop: stopLogsBatch } = startLogsBatch(configuration, lifeCycle, reportError, pageExitObservable, session)\n cleanupTasks.push(() => stopLogsBatch())\n } else {\n startLogsBridge(lifeCycle)\n }\n\n const internalContext = startInternalContext(session)\n\n return {\n handleLog,\n getInternalContext: internalContext.get,\n stop: () => {\n cleanupTasks.forEach((task) => task())\n },\n }\n}\n","import type { RawError } from '@datadog/browser-core'\nimport { ErrorSource, addTelemetryDebug } from '@datadog/browser-core'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\nimport { StatusType } from './logger/isAuthorized'\n\nexport function startReportError(lifeCycle: LifeCycle) {\n return (error: RawError) => {\n lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {\n rawLogsEvent: {\n message: error.message,\n date: error.startClocks.timeStamp,\n origin: ErrorSource.AGENT,\n status: StatusType.error,\n },\n })\n addTelemetryDebug('Error reported to customer', { 'error.message': error.message })\n }\n}\n","import type { Context, RawError, ClocksState } from '@datadog/browser-core'\nimport { noop, ErrorSource, trackRuntimeError, Observable } from '@datadog/browser-core'\nimport type { LogsConfiguration } from '../configuration'\nimport type { LifeCycle } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport { StatusType } from '../logger/isAuthorized'\n\nexport interface ProvidedError {\n startClocks: ClocksState\n error: unknown\n context?: Context\n handlingStack: string\n}\n\nexport function startRuntimeErrorCollection(configuration: LogsConfiguration, lifeCycle: LifeCycle) {\n if (!configuration.forwardErrorsToLogs) {\n return { stop: noop }\n }\n\n const rawErrorObservable = new Observable<RawError>()\n\n const { stop: stopRuntimeErrorTracking } = trackRuntimeError(rawErrorObservable)\n\n const rawErrorSubscription = rawErrorObservable.subscribe((rawError) => {\n lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {\n rawLogsEvent: {\n message: rawError.message,\n date: rawError.startClocks.timeStamp,\n error: {\n kind: rawError.type,\n stack: rawError.stack,\n causes: rawError.causes,\n },\n origin: ErrorSource.SOURCE,\n status: StatusType.error,\n },\n })\n })\n\n return {\n stop: () => {\n stopRuntimeErrorTracking()\n rawErrorSubscription.unsubscribe()\n },\n }\n}\n","import type { RelativeTime } from '@datadog/browser-core'\nimport type { LogsSessionManager } from '../logsSessionManager'\n\nexport interface InternalContext {\n session_id: string | undefined\n}\n\nexport function startInternalContext(sessionManager: LogsSessionManager) {\n return {\n get: (startTime?: number): InternalContext | undefined => {\n const trackedSession = sessionManager.findTrackedSession(startTime as RelativeTime)\n if (trackedSession) {\n return {\n session_id: trackedSession.id,\n }\n }\n },\n }\n}\n","import type { EventRateLimiter, RawError } from '@datadog/browser-core'\nimport { ErrorSource, combine, createEventRateLimiter, getRelativeTime, isEmptyObject } from '@datadog/browser-core'\nimport type { CommonContext } from '../rawLogsEvent.types'\nimport type { LogsConfiguration } from './configuration'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\nimport { STATUSES } from './logger'\nimport type { LogsSessionManager } from './logsSessionManager'\nimport { getRUMInternalContext } from './contexts/rumInternalContext'\n\nexport function startLogsAssembly(\n sessionManager: LogsSessionManager,\n configuration: LogsConfiguration,\n lifeCycle: LifeCycle,\n getCommonContext: () => CommonContext,\n reportError: (error: RawError) => void\n) {\n const statusWithCustom = (STATUSES as string[]).concat(['custom'])\n const logRateLimiters: { [key: string]: EventRateLimiter } = {}\n statusWithCustom.forEach((status) => {\n logRateLimiters[status] = createEventRateLimiter(status, configuration.eventRateLimiterThreshold, reportError)\n })\n\n lifeCycle.subscribe(\n LifeCycleEventType.RAW_LOG_COLLECTED,\n ({ rawLogsEvent, messageContext = undefined, savedCommonContext = undefined, domainContext }) => {\n const startTime = getRelativeTime(rawLogsEvent.date)\n const session = sessionManager.findTrackedSession(startTime)\n\n if (\n !session &&\n (!configuration.sendLogsAfterSessionExpiration ||\n !sessionManager.findTrackedSession(startTime, { returnInactive: true }))\n ) {\n return\n }\n\n const commonContext = savedCommonContext || getCommonContext()\n const log = combine(\n {\n service: configuration.service,\n session_id: session ? session.id : undefined,\n // Insert user first to allow overrides from global context\n usr: !isEmptyObject(commonContext.user) ? commonContext.user : undefined,\n view: commonContext.view,\n },\n commonContext.context,\n getRUMInternalContext(startTime),\n rawLogsEvent,\n messageContext\n )\n\n if (\n configuration.beforeSend?.(log, domainContext) === false ||\n (log.origin !== ErrorSource.AGENT &&\n (logRateLimiters[log.status] ?? logRateLimiters['custom']).isLimitReached())\n ) {\n return\n }\n\n lifeCycle.notify(LifeCycleEventType.LOG_COLLECTED, log)\n }\n )\n}\n","import type { Context } from '@datadog/browser-core'\nimport { getEventBridge } from '@datadog/browser-core'\nimport type { LifeCycle } from '../domain/lifeCycle'\nimport { LifeCycleEventType } from '../domain/lifeCycle'\nimport type { LogsEvent } from '../logsEvent.types'\n\nexport function startLogsBridge(lifeCycle: LifeCycle) {\n const bridge = getEventBridge<'log', LogsEvent>()!\n\n lifeCycle.subscribe(LifeCycleEventType.LOG_COLLECTED, (serverLogsEvent: LogsEvent & Context) => {\n bridge.send('log', serverLogsEvent)\n })\n}\n","import type { Context, Observable, PageExitEvent, RawError } from '@datadog/browser-core'\nimport { createIdentityEncoder, startBatchWithReplica } from '@datadog/browser-core'\nimport type { LogsConfiguration } from '../domain/configuration'\nimport type { LifeCycle } from '../domain/lifeCycle'\nimport { LifeCycleEventType } from '../domain/lifeCycle'\nimport type { LogsEvent } from '../logsEvent.types'\nimport type { LogsSessionManager } from '../domain/logsSessionManager'\n\nexport function startLogsBatch(\n configuration: LogsConfiguration,\n lifeCycle: LifeCycle,\n reportError: (error: RawError) => void,\n pageExitObservable: Observable<PageExitEvent>,\n session: LogsSessionManager\n) {\n const batch = startBatchWithReplica(\n configuration,\n {\n endpoint: configuration.logsEndpointBuilder,\n encoder: createIdentityEncoder(),\n },\n configuration.replica && {\n endpoint: configuration.replica.logsEndpointBuilder,\n encoder: createIdentityEncoder(),\n },\n reportError,\n pageExitObservable,\n session.expireObservable\n )\n\n lifeCycle.subscribe(LifeCycleEventType.LOG_COLLECTED, (serverLogsEvent: LogsEvent & Context) => {\n batch.add(serverLogsEvent)\n })\n\n return batch\n}\n","import tinycolor from 'tinycolor2';\n\n/**\n * Use to get the HSL format of a provided color.\n * @param {string|object} val\n * @param {boolean} isString - Use to return string instead of object\n */\nexport const convertColorToHSL = (val = '#000000', isString = false) => {\n const color = tinycolor(val);\n\n return isString ? color.toHslString() : color.toHsl();\n};\n\n/**\n * Use to get the Hex format of a provided color.\n * @param {string|object} val\n */\nexport const convertColorToHex = (val = { r: 0, g: 0, b: 0 }) => {\n const color = tinycolor(val);\n const alpha = color.getAlpha();\n const hex = alpha < 1 ? color.toHex8String() : color.toHexString();\n\n return hex;\n};\n\n/**\n * Use to get the RGB format of a provided color.\n * @param {string|object} val\n * @param {boolean} isString - Use to return string instead of object\n */\nexport const convertColorToRGB = (val = '#000000', isString = false) => {\n const color = tinycolor(val);\n\n return isString ? color.toRgbString() : color.toRgb();\n};\n\n/**\n * Use to convert hex value that need alpha transperancy to RGBA\n * @param {*} val\n * @param {*} alpha - alpha transparency (0 - 1)\n * @param {*} isString - When true will return rgba string instead of object\n * @returns string if isString is true, otherwise object \\{ r, g, b, a \\}\n */\nexport const convertColorToRGBA = (\n val = '#000000',\n alpha = 1,\n isString = false,\n) => {\n const color = tinycolor(val);\n color.setAlpha(alpha);\n\n return isString ? color.toRgbString() : color.toRgb();\n};\n","export const CORE_NEUTRAL_COLOR_TOKEN_NAMES = {\n CORE_COLOR_GREY_01: 'CORE_COLOR_GREY_01',\n CORE_COLOR_GREY_02: 'CORE_COLOR_GREY_02',\n CORE_COLOR_GREY_03: 'CORE_COLOR_GREY_03',\n CORE_COLOR_GREY_04: 'CORE_COLOR_GREY_04',\n CORE_COLOR_GREY_05: 'CORE_COLOR_GREY_05',\n CORE_COLOR_GREY_06: 'CORE_COLOR_GREY_06',\n CORE_COLOR_GREY_07: 'CORE_COLOR_GREY_07',\n CORE_COLOR_GREY_08: 'CORE_COLOR_GREY_08',\n CORE_COLOR_GREY_09: 'CORE_COLOR_GREY_09',\n CORE_COLOR_GREY_10: 'CORE_COLOR_GREY_10',\n CORE_COLOR_BLACK: 'CORE_COLOR_BLACK',\n CORE_COLOR_WHITE: 'CORE_COLOR_WHITE',\n};\n\nexport const CORE_COLOR_TOKEN_NAMES = {\n CORE_COLOR_AFFIRMATIVE: 'CORE_COLOR_AFFIRMATIVE',\n CORE_COLOR_BRAND: 'CORE_COLOR_BRAND',\n CORE_COLOR_CANVAS: 'CORE_COLOR_CANVAS',\n CORE_COLOR_CANVAS_ALT: 'CORE_COLOR_CANVAS_ALT',\n CORE_COLOR_CANVAS_BRAND: 'CORE_COLOR_CANVAS_BRAND',\n CORE_COLOR_CAUTIONARY: 'CORE_COLOR_CAUTIONARY',\n CORE_COLOR_DESTRUCTIVE: 'CORE_COLOR_DESTRUCTIVE',\n CORE_COLOR_ERROR: 'CORE_COLOR_ERROR',\n CORE_COLOR_HEADINGS_TEXT: 'CORE_COLOR_HEADINGS_TEXT',\n CORE_COLOR_INFO: 'CORE_COLOR_INFO',\n CORE_COLOR_PRIMARY: 'CORE_COLOR_PRIMARY',\n CORE_COLOR_TEXT: 'CORE_COLOR_TEXT',\n CORE_COLOR_TEXT_ALT: 'CORE_COLOR_TEXT_ALT',\n CORE_COLOR_TEXT_ON_CANVAS_BRAND: 'CORE_COLOR_TEXT_ON_CANVAS_BRAND',\n CORE_COLOR_TEXT_ERROR: 'CORE_COLOR_TEXT_ERROR',\n CORE_COLOR_UNIVERSAL_ACCESSIBLE_BORDER:\n 'CORE_COLOR_UNIVERSAL_ACCESSIBLE_BORDER',\n CORE_COLOR_UNIVERSAL_DECORATIVE_BORDER:\n 'CORE_COLOR_UNIVERSAL_DECORATIVE_BORDER',\n CORE_COLOR_UNIVERSAL_FOCUS_HALO: 'CORE_COLOR_UNIVERSAL_FOCUS_HALO',\n CORE_COLOR_UNIVERSAL_HOVER_BG: 'CORE_COLOR_UNIVERSAL_HOVER_BG',\n};\n\nexport const CORE_TYPOGRAPHY_STYLE_TOKEN_NAMES = {\n // Body Font Family\n CORE_TYPOGRAPHY_FONT_FAMILY: 'CORE_TYPOGRAPHY_FONT_FAMILY',\n // Body Font Family Fallback\n CORE_TYPOGRAPHY_FONT_FAMILY_FALLBACK:\n 'CORE_TYPOGRAPHY_FONT_FAMILY_FALLBACK',\n // Body Font Size\n CORE_TYPOGRAPHY_FONT_SIZE: 'CORE_TYPOGRAPHY_FONT_SIZE',\n // Font Size Scale\n CORE_TYPOGRAPHY_FONT_SIZE_SCALE: 'CORE_TYPOGRAPHY_FONT_SIZE_SCALE',\n // Body Font Weight\n CORE_TYPOGRAPHY_FONT_WEIGHT: 'CORE_TYPOGRAPHY_FONT_WEIGHT',\n // Footnotes\n CORE_TYPOGRAPHY_FOOTNOTE_FONT_SIZE: 'CORE_TYPOGRAPHY_FOOTNOTE_FONT_SIZE',\n // Body Font Size (Large)\n CORE_TYPOGRAPHY_LARGE_FONT_SIZE: 'CORE_TYPOGRAPHY_LARGE_FONT_SIZE',\n // Headings Font Family\n CORE_TYPOGRAPHY_HEADINGS_FONT_FAMILY:\n 'CORE_TYPOGRAPHY_HEADINGS_FONT_FAMILY',\n // Body Font Family Fallback\n CORE_TYPOGRAPHY_HEADINGS_FONT_FAMILY_FALLBACK:\n 'CORE_TYPOGRAPHY_HEADINGS_FONT_FAMILY_FALLBACK',\n // Headings Font Style\n CORE_TYPOGRAPHY_HEADINGS_FONT_STYLE: 'CORE_TYPOGRAPHY_HEADINGS_FONT_STYLE',\n // Headings Font Weight\n CORE_TYPOGRAPHY_HEADINGS_FONT_WEIGHT:\n 'CORE_TYPOGRAPHY_HEADINGS_FONT_WEIGHT',\n // H1\n CORE_TYPOGRAPHY_HEADINGS_LEVEL1_FONT_SIZE:\n 'CORE_TYPOGRAPHY_HEADINGS_LEVEL1_FONT_SIZE',\n // H2\n CORE_TYPOGRAPHY_HEADINGS_LEVEL2_FONT_SIZE:\n 'CORE_TYPOGRAPHY_HEADINGS_LEVEL2_FONT_SIZE',\n // H3\n CORE_TYPOGRAPHY_HEADINGS_LEVEL3_FONT_SIZE:\n 'CORE_TYPOGRAPHY_HEADINGS_LEVEL3_FONT_SIZE',\n // H4\n CORE_TYPOGRAPHY_HEADINGS_LEVEL4_FONT_SIZE:\n 'CORE_TYPOGRAPHY_HEADINGS_LEVEL4_FONT_SIZE',\n // H5\n CORE_TYPOGRAPHY_HEADINGS_LEVEL5_FONT_SIZE:\n 'CORE_TYPOGRAPHY_HEADINGS_LEVEL5_FONT_SIZE',\n // Headings Line Height\n CORE_TYPOGRAPHY_HEADINGS_LINE_HEIGHT:\n 'CORE_TYPOGRAPHY_HEADINGS_LINE_HEIGHT',\n // Body Line Height\n CORE_TYPOGRAPHY_LINE_HEIGHT: 'CORE_TYPOGRAPHY_LINE_HEIGHT',\n // Number Font Weight\n CORE_TYPOGRAPHY_NUMBER_FONT_WEIGHT: 'CORE_TYPOGRAPHY_NUMBER_FONT_WEIGHT',\n // Number (Medium)\n CORE_TYPOGRAPHY_NUMBER_MEDIUM_FONT_SIZE:\n 'CORE_TYPOGRAPHY_NUMBER_MEDIUM_FONT_SIZE',\n // Number (Small)\n CORE_TYPOGRAPHY_NUMBER_SMALL_FONT_SIZE:\n 'CORE_TYPOGRAPHY_NUMBER_SMALL_FONT_SIZE',\n // Sub-Text\n CORE_TYPOGRAPHY_SUB_TEXT_FONT_SIZE: 'CORE_TYPOGRAPHY_SUB_TEXT_FONT_SIZE',\n};\n\nexport const CORE_TYPOGRAPHY_MOBILE_STYLE_TOKEN_NAMES = {\n // Footnotes\n CORE_TYPOGRAPHY_FOOTNOTE_MOBILE_FONT_SIZE:\n 'CORE_TYPOGRAPHY_FOOTNOTE_MOBILE_FONT_SIZE',\n // H1\n CORE_TYPOGRAPHY_HEADINGS_LEVEL1_MOBILE_FONT_SIZE:\n 'CORE_TYPOGRAPHY_HEADINGS_LEVEL1_MOBILE_FONT_SIZE',\n // H2\n CORE_TYPOGRAPHY_HEADINGS_LEVEL2_MOBILE_FONT_SIZE:\n 'CORE_TYPOGRAPHY_HEADINGS_LEVEL2_MOBILE_FONT_SIZE',\n // H3\n CORE_TYPOGRAPHY_HEADINGS_LEVEL3_MOBILE_FONT_SIZE:\n 'CORE_TYPOGRAPHY_HEADINGS_LEVEL3_MOBILE_FONT_SIZE',\n // H4\n CORE_TYPOGRAPHY_HEADINGS_LEVEL4_MOBILE_FONT_SIZE:\n 'CORE_TYPOGRAPHY_HEADINGS_LEVEL4_MOBILE_FONT_SIZE',\n // H5\n CORE_TYPOGRAPHY_HEADINGS_LEVEL5_MOBILE_FONT_SIZE:\n 'CORE_TYPOGRAPHY_HEADINGS_LEVEL5_MOBILE_FONT_SIZE',\n // Body Font Size (Large)\n CORE_TYPOGRAPHY_LARGE_MOBILE_FONT_SIZE:\n 'CORE_TYPOGRAPHY_LARGE_MOBILE_FONT_SIZE',\n // Mobile Font Size Scale\n CORE_TYPOGRAPHY_MOBILE_FONT_SIZE_SCALE:\n 'CORE_TYPOGRAPHY_MOBILE_FONT_SIZE_SCALE',\n // Number (Medium)\n CORE_TYPOGRAPHY_NUMBER_MEDIUM_MOBILE_FONT_SIZE:\n 'CORE_TYPOGRAPHY_NUMBER_MEDIUM_MOBILE_FONT_SIZE',\n // Number (Small)\n CORE_TYPOGRAPHY_NUMBER_SMALL_MOBILE_FONT_SIZE:\n 'CORE_TYPOGRAPHY_NUMBER_SMALL_MOBILE_FONT_SIZE',\n // Sub-Text\n CORE_TYPOGRAPHY_SUB_TEXT_MOBILE_FONT_SIZE:\n 'CORE_TYPOGRAPHY_SUB_TEXT_MOBILE_FONT_SIZE',\n};\n\nexport const CORE_STATE_STYLE_TOKEN_NAMES = {\n CORE_STATE_DISABLED_OPACITY: 'CORE_STATE_DISABLED_OPACITY',\n};\n\nexport const CORE_SYSTEM_STYLE_TOKEN_NAMES = {\n CORE_SYSTEM_SCALE: 'CORE_SYSTEM_SCALE',\n};\n\nexport const CORE_STYLE_TOKEN_NAMES = {\n ...CORE_STATE_STYLE_TOKEN_NAMES,\n ...CORE_SYSTEM_STYLE_TOKEN_NAMES,\n ...CORE_TYPOGRAPHY_STYLE_TOKEN_NAMES,\n ...CORE_TYPOGRAPHY_MOBILE_STYLE_TOKEN_NAMES,\n};\n\nexport const CORE_TOKEN_NAMES = {\n ...CORE_COLOR_TOKEN_NAMES,\n ...CORE_NEUTRAL_COLOR_TOKEN_NAMES,\n ...CORE_STYLE_TOKEN_NAMES,\n};\n","import {\n genColorsData,\n getColorCorrelationsData,\n getRecommendedColor,\n convertColorToHex,\n} from '@Green-Dot-Corporation/eureka-lib-color-utils';\nimport {\n CORE_TYPOGRAPHY_STYLE_TOKEN_NAMES,\n CORE_TYPOGRAPHY_MOBILE_STYLE_TOKEN_NAMES,\n CORE_TOKEN_NAMES,\n} from '../const/tokens/coreTokens';\n// import { STYLE_TOKEN_NAMES } from '../const/styleTokensConst';\n\nexport const getThemeAPIKeyFromName = (name) => {\n if (!name) {\n return name;\n }\n\n const testRegEx = /_/g;\n\n return name.toLowerCase().replace(testRegEx, '.');\n};\n\nexport const getNameFromThemeAPIKey = (apiKey) => {\n if (!apiKey) {\n return apiKey;\n }\n\n const testRegEx = /\\./g;\n\n return apiKey.toUpperCase().replace(testRegEx, '_');\n};\n\n/**\n * This is used to create api key constants that\n * convert constant names using Underscore notation to\n * API key dot notation.\n * @param {object} names\n * @returns - Object with `CONSTANT_NAME: 'contsant.name'` pattern\n */\nexport const getThemeAPIKeysFromNames = (names = {}) => {\n const keysObj = {};\n const nameKeys = Object.keys(names);\n\n if (nameKeys.length === 0) {\n return keysObj;\n }\n\n for (let index = 0; index < nameKeys.length; index += 1) {\n const NAME = nameKeys[index];\n const testRegEx = /_/g;\n const VALUE = NAME.toLowerCase().replace(testRegEx, '.');\n\n keysObj[NAME] = VALUE;\n }\n\n return keysObj;\n};\n\nexport const mapThemeAPIKeysToDefaults = (\n NAMES = {},\n API_KEYS = {},\n DEFAULTS = {},\n) => {\n const finalMap = {};\n const nameKeys = Object.keys(NAMES);\n\n for (let index = 0; index < nameKeys.length; index += 1) {\n const NAME = nameKeys[index];\n const API_KEY = API_KEYS[NAME];\n const VALUE = DEFAULTS[NAME];\n\n if (VALUE) {\n finalMap[API_KEY] = VALUE;\n }\n }\n\n return finalMap;\n};\n\nexport const formatThemeBorderRadiusValsForWeb = (themeData = {}) => {\n const themeDataClone = { ...themeData };\n const themeKeys = Object.keys(themeDataClone);\n const borderRadiusKeys = themeKeys.filter((themeKey) =>\n themeKey.includes('.radius'),\n );\n\n for (let index = 0; index < borderRadiusKeys.length; index += 1) {\n const borderRadiusKey = borderRadiusKeys[index];\n const val = themeDataClone[borderRadiusKey];\n const valType = typeof val;\n const isString = valType === 'string';\n const isPercent = isString && val?.includes('%');\n\n themeDataClone[borderRadiusKey] = `${val}${isPercent ? '' : 'px'}`;\n }\n\n return themeDataClone;\n};\n\nexport const formatBorderWidthsForWeb = (themeData = {}) => {\n const themeDataClone = { ...themeData };\n const themeKeys = Object.keys(themeDataClone);\n const borderWidthKeys = themeKeys.filter((themeKey) =>\n themeKey.includes('border.width'),\n );\n\n for (let index = 0; index < borderWidthKeys.length; index += 1) {\n const borderWidthKey = borderWidthKeys[index];\n const val = themeDataClone[borderWidthKey];\n\n themeDataClone[borderWidthKey] = `${val}px`;\n }\n\n return themeDataClone;\n};\n\nexport const formatFontSizeValsForWeb = (themeData = {}) => {\n const themeDataClone = { ...themeData };\n const typographyTokenNames = [\n ...Object.keys(CORE_TYPOGRAPHY_STYLE_TOKEN_NAMES),\n ...Object.keys(CORE_TYPOGRAPHY_MOBILE_STYLE_TOKEN_NAMES),\n ];\n const fontSizeKeys = [\n ...typographyTokenNames\n .filter(\n (tokenName) =>\n tokenName.includes('FONT_SIZE') &&\n !tokenName.includes('CORE_TYPOGRAPHY_FONT_SIZE_SCALE') &&\n !tokenName.includes(\n 'CORE_TYPOGRAPHY_MOBILE_FONT_SIZE_SCALE',\n ),\n )\n .map((tokenName) => getThemeAPIKeyFromName(tokenName)),\n ];\n\n for (let index = 0; index < fontSizeKeys.length; index += 1) {\n const fontSizeKey = fontSizeKeys[index];\n const value = themeDataClone[fontSizeKey];\n\n if (value !== undefined) {\n themeDataClone[fontSizeKey] = `${value / 10}rem`;\n }\n }\n\n return themeDataClone;\n};\n\nexport const formatThemeColorValuesForWeb = (themeData = {}) => {\n const themeDataClone = { ...themeData };\n const themeKeys = Object.keys(themeDataClone);\n\n if (themeKeys.length === 0) {\n return themeDataClone;\n }\n const colorKeys = themeKeys.filter((themeKey) =>\n themeKey.startsWith('color.'),\n );\n\n for (let index = 0; index < colorKeys.length; index += 1) {\n const colorKey = colorKeys[index];\n const val = themeDataClone[colorKey] || '';\n\n const isRGB = val.includes('rgb(');\n\n if (isRGB) {\n themeDataClone[colorKey] = convertColorToHex(val);\n }\n }\n\n return themeDataClone;\n};\n\nexport const formatSpecValuesForWeb = (themeData = {}) => {\n const themeDataClone = { ...themeData };\n const GRID_BASE_API_KEY = getThemeAPIKeyFromName(\n CORE_TOKEN_NAMES.CORE_SYSTEM_SCALE,\n );\n themeDataClone[\n GRID_BASE_API_KEY\n ] = `${themeDataClone[GRID_BASE_API_KEY]}px`;\n\n return themeDataClone;\n};\n\n// Used to set web-related units for data that does not contain it\nexport const formatThemeDataForWeb = (themeData = {}) => {\n let themeDataClone = { ...themeData };\n const themeKeys = Object.keys(themeDataClone);\n\n if (themeKeys.length === 0) {\n return themeDataClone;\n }\n\n // Fix Web-Specific Formats\n themeDataClone = formatThemeColorValuesForWeb(\n formatBorderWidthsForWeb(\n formatFontSizeValsForWeb(\n formatThemeBorderRadiusValsForWeb(themeDataClone),\n ),\n ),\n );\n\n return themeDataClone;\n};\n\nexport const getCommonIds = (idList1 = [], idList2 = []) => {\n const isIdList1Shorter = idList2.length > idList1.length;\n const sourceArr = isIdList1Shorter ? idList1 : idList2;\n const testArr = isIdList1Shorter ? idList2 : idList1;\n\n return sourceArr.filter((id) => testArr.indexOf(id) > -1);\n};\n\nexport const getCommonColorCompatabilities = (\n color1Data = {},\n color2Data = {},\n) => {\n return {\n compatibleTextColors: getCommonIds(\n color1Data.compatibleTextColors,\n color2Data.compatibleTextColors,\n ),\n compatibleNonTextColors: getCommonIds(\n color1Data.compatibleNonTextColors,\n color2Data.compatibleNonTextColors,\n ),\n };\n};\n\nexport const getJuxtaposedColorAgainstCanvases = (\n colors,\n shouldEvalForText,\n) => {\n const {\n sourceColors = {},\n canvasColor = {},\n canvasAltColor = {},\n } = colors ?? {};\n let { base = {} } = sourceColors;\n const { variants = [] } = sourceColors;\n const canvasOptions = [base, ...variants];\n const evaluatedCanvasColor = getColorCorrelationsData(\n canvasColor,\n canvasOptions,\n );\n const evaluatedCanvasAltColor = getColorCorrelationsData(\n canvasAltColor,\n canvasOptions,\n );\n const { compatibleNonTextColors, compatibleTextColors } =\n getCommonColorCompatabilities(\n evaluatedCanvasColor,\n evaluatedCanvasAltColor,\n );\n\n const compatColors = shouldEvalForText\n ? compatibleTextColors\n : compatibleNonTextColors;\n const canUseBase = compatColors.indexOf('base') > -1;\n\n if (!canUseBase) {\n base = getRecommendedColor(\n {\n ...evaluatedCanvasColor,\n compatibleNonTextColors: compatColors,\n compatibleTextColors: compatColors,\n },\n canvasOptions.filter(\n (canvasOption) => compatColors.indexOf(canvasOption.id) !== -1,\n ),\n shouldEvalForText,\n );\n }\n\n return base || {};\n};\n\nexport const withRecommendedColors = (colors) => {\n const { sourceColors } = colors ?? {};\n const recommendedTextColor = getJuxtaposedColorAgainstCanvases(\n colors,\n true,\n );\n const recommendedNonTextColor = getJuxtaposedColorAgainstCanvases(colors);\n\n return {\n ...sourceColors,\n recommendedNonTextColor,\n recommendedTextColor,\n };\n};\n\nexport const getColorData = ({\n hex,\n tokenId,\n step,\n canvasColor,\n canvasAltColor,\n}) => {\n const shouldRecommendColors = !!canvasColor && !!canvasAltColor;\n const sourceColors = genColorsData({\n hex,\n tokenId,\n ...(!!step && { step }),\n });\n\n if (!shouldRecommendColors) {\n return sourceColors;\n }\n\n return withRecommendedColors({\n canvasAltColor,\n canvasColor,\n sourceColors,\n });\n};\n\nexport const getComponentSourceColor = ({\n fallback,\n overrideHex,\n canvasAltColor,\n canvasColor,\n}) => {\n if (!overrideHex) {\n return fallback;\n }\n\n const { tokenId } = fallback ?? {};\n\n return getColorData({\n hex: overrideHex,\n tokenId,\n canvasAltColor,\n canvasColor,\n });\n};\n","import { get, head } from '@Green-Dot-Corporation/eureka-lib-fetch-utils';\nimport { generateCSSVars } from '@Green-Dot-Corporation/eureka-lib-theme-utils';\nimport { cacheBranding, getCachedBranding } from './storageService';\nimport { buildTokenURL } from '../utils/urlUtils';\n\nconst brandingTokensStr = getCachedBranding();\nlet cachedBrandingConfig;\n\nif (brandingTokensStr) {\n try {\n cachedBrandingConfig = JSON.parse(brandingTokensStr);\n } catch (e) {\n console.log('error parsing cached bradning', e);\n }\n}\n\nconst BUILT_IN_FONTS = ['Bogle', 'Averta', 'Poppins'];\n\nconst FONT_PROPS = {\n 'core.typography.headings.font.family': [\n 'headingFontRegular',\n 'headingFontItalics',\n 'headingFontBold',\n 'headingFontBoldItalics',\n ],\n 'core.typography.font.family': [\n 'fontRegular',\n 'fontItalics',\n 'fontBold',\n 'fontBoldItalics',\n ],\n};\n\nconst FONT_ATTRIBUTES_MAP = [\n ['normal', 'normal'],\n ['italic', 'normal'],\n ['normal', 'bold'],\n ['italic', 'bold'],\n];\n\nconst getBrandingTokens = async (config) => {\n const themeFile = config.branding.isInDarkMode\n ? 'web-dark.json'\n : 'web.json';\n const tokensResponse = await get(buildTokenURL(config, themeFile), {\n shouldIncludeResponseAttributes: true,\n credentials: 'same-origin',\n });\n\n return tokensResponse;\n};\n\nconst getBrandingTokensLastModified = async (config) => {\n const themeFile = config.branding.isInDarkMode\n ? 'web-dark.json'\n : 'web.json';\n const response = await head(buildTokenURL(config, themeFile), {\n credentials: 'same-origin',\n });\n\n return response.headers;\n};\n\nconst getFontConfig = (brandingConfig, brandingTokens) => {\n const fonts = [];\n Object.getOwnPropertyNames(FONT_PROPS).forEach((fontNameProp) => {\n const fontName = brandingTokens[fontNameProp];\n const fontTypeProps = FONT_PROPS[fontNameProp];\n const [fontRegular, fontItalics, fontBold, fontBoldItalics] =\n fontTypeProps.map((prop) => brandingConfig[prop]);\n\n if (fontName && BUILT_IN_FONTS.indexOf(fontName) === -1) {\n const fontCSSVarName = `eureka-${fontNameProp.replaceAll(\n '.',\n '-',\n )}`;\n fonts.push({\n name: fontName,\n paths: [fontRegular, fontItalics, fontBold, fontBoldItalics],\n cssVarsName: fontCSSVarName,\n });\n }\n });\n\n return fonts;\n};\n\nconst loadFonts = async (fontConfigs, config) => {\n const { resourcePath, branding } = config;\n const { mediaPath } = branding;\n fontConfigs.forEach(({ name, paths }) => {\n paths.forEach((path, i) => {\n if (path) {\n const fontUrl = `${resourcePath}${mediaPath}${path}`;\n const fontFace = new FontFace(name, `url(${fontUrl})`);\n\n const [style, weight] = FONT_ATTRIBUTES_MAP[i];\n\n fontFace.weight = weight;\n fontFace.style = style;\n fontFace.display = 'fallback';\n document.fonts.add(fontFace);\n fontFace.load();\n }\n });\n });\n\n await document.fonts.ready;\n};\n\nconst addFontCSSVars = (fonts, cssVariableParam, fontsToLoad) => {\n let cssVariables = cssVariableParam;\n\n fonts.forEach((fontConfig) => {\n const { name, paths, cssVarsName } = fontConfig;\n\n const index = cssVariables.lastIndexOf('}');\n cssVariables = `${cssVariables.substring(\n 0,\n index,\n )}--${cssVarsName}: '${name}';\\n${cssVariables.substring(index)}`;\n\n fontsToLoad.push({\n name,\n paths,\n });\n });\n\n return cssVariables;\n};\n\nconst loadBranding = async (brandingTokens, appConfig) => {\n const fontsToLoad = [];\n\n let cssVariables = generateCSSVars(brandingTokens);\n const fonts = getFontConfig(appConfig.branding, brandingTokens);\n\n cssVariables = addFontCSSVars(fonts, cssVariables, fontsToLoad);\n\n await loadFonts(fontsToLoad, appConfig);\n\n const stylesheet = document.createElement('style');\n stylesheet.appendChild(document.createTextNode(cssVariables));\n\n document.head.appendChild(stylesheet);\n};\n\nconst updateCachedBranding = async (config) => {\n if (cachedBrandingConfig) {\n const headers = await getBrandingTokensLastModified(config);\n const cachedLastModified = cachedBrandingConfig.lastModified;\n const currentLastModified = (headers ?? {})['last-modified'];\n const currentIsInDarkMode = config.branding?.isInDarkMode;\n const cachedIsInDarkMode =\n cachedBrandingConfig.appConfig?.branding?.isInDarkMode;\n\n if (\n cachedLastModified !== currentLastModified ||\n currentIsInDarkMode !== cachedIsInDarkMode\n ) {\n const brandingTokensResponse = await getBrandingTokens(config);\n const { data: brandingTokens, headers: tokenHeaders } =\n brandingTokensResponse;\n const lastModified = tokenHeaders['last-modified'];\n\n cachedBrandingConfig = {\n tokens: brandingTokens,\n appConfig: config,\n lastModified,\n };\n\n cacheBranding(cachedBrandingConfig);\n }\n }\n};\n\nexport const setupBranding = async (config) => {\n const { branding } = config ?? {};\n\n if (!branding) {\n return;\n }\n\n if (cachedBrandingConfig) {\n const currentIsInDarkMode = config.branding.isInDarkMode;\n const cachedIsInDarkMode =\n cachedBrandingConfig.appConfig.branding.isInDarkMode;\n\n await updateCachedBranding(config);\n const { tokens: brandingTokens } = cachedBrandingConfig;\n\n if (currentIsInDarkMode !== cachedIsInDarkMode) {\n await loadBranding(brandingTokens, config);\n }\n\n return;\n }\n\n const brandingTokensResponse = await getBrandingTokens(config);\n const { data: brandingTokens, headers } = brandingTokensResponse;\n const lastModified = headers['last-modified'];\n\n cacheBranding({\n tokens: brandingTokens,\n appConfig: config,\n lastModified,\n });\n\n await loadBranding(brandingTokens, config);\n};\n\nexport const setupCachedBranding = async () => {\n if (cachedBrandingConfig) {\n const { tokens: brandingTokens, appConfig } = cachedBrandingConfig;\n await loadBranding(brandingTokens, appConfig);\n }\n};\n\nexport default {};\n","import { formatThemeDataForWeb } from './dataUtils';\n\n// This is used to convert an API key that uses dot notation\n// to the corresponding CSS variable if applicable. If provided\n// an API key of `core.color.text` this would return a string\n// formatted for the CSS variable: `--eureka-core-color-text`.\nexport const getThemeCSSVarFromAPIKey = (key) => {\n if (!key) {\n return undefined;\n }\n const cssVarPrefix = '--eureka-';\n const testRegEx = /\\./g;\n const formattedKey = key.replace(testRegEx, '-');\n\n return `${cssVarPrefix}${formattedKey}`;\n};\n\nexport const generateCSSVars = (themeData = {}, selector = ':root') => {\n const sanatizedThemeData = formatThemeDataForWeb(themeData);\n const themeKeys = Object.keys(sanatizedThemeData);\n\n if (themeKeys.length === 0) {\n return '';\n }\n\n return `${selector} {\n ${themeKeys\n .map((themeKey) => {\n const cssVar = getThemeCSSVarFromAPIKey(themeKey);\n const cssVarVal = sanatizedThemeData[themeKey];\n\n return `${cssVar}: ${cssVarVal};`;\n })\n .join('\\r\\n')}\n }`;\n};\n","export const LOG_LEVEL = {\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error',\n};\n\nexport default {};\n","import { post } from '@Green-Dot-Corporation/eureka-lib-fetch-utils';\nimport { v4 as uuidv4 } from 'uuid';\nimport { REQUEST_ID_HEADER } from '../../const/appConst';\n\nfunction formatRequest(request) {\n const { message, level, ...reset } = request;\n const { applicationId, productCode, programCode, defaultFeature } = reset;\n const errorCode = `Feature: [${defaultFeature}] ApplicationId: [${applicationId}] ProductCode: [${productCode}] ProgramCode: [${programCode}]`;\n\n return {\n errorseverity: level,\n errororiginatorid: window.location.href,\n errorbody: message,\n errorcode: errorCode,\n };\n}\n\nexport const sendLogToGateway = async (request) => {\n const url = `${window.location.origin}/api/v1/app/log`;\n\n try {\n const options = {\n headers: {\n 'Content-Type': 'application/json',\n [REQUEST_ID_HEADER]: uuidv4(),\n },\n body: formatRequest(request),\n };\n await post(url, options);\n } catch (error) {\n // We should ignore this exception\n }\n};\n\nexport default {};\n","import { LOG_LEVEL } from '../../const/loggerConst';\nimport { sendLogToGateway } from './LoggerService';\n\nconst { INFO, DEBUG, WARN, ERROR } = LOG_LEVEL;\nclass Logger {\n config;\n\n constructor(config) {\n this.config = config;\n }\n\n log(level, message) {\n if (!Object.values(LOG_LEVEL).includes(level)) return;\n const request = { message, level, ...this.config };\n sendLogToGateway(request);\n }\n\n info(message) {\n this.log(INFO, message);\n }\n\n debug(message) {\n this.log(DEBUG, message);\n }\n\n warn(message) {\n this.log(WARN, message);\n }\n\n error(message) {\n this.log(ERROR, message);\n }\n}\nexport default Logger;\n","import { PureComponent } from 'react';\nimport { LoadingFlow } from '@Green-Dot-Corporation/eureka-ui-loading';\n\nimport { BrowserRouter } from 'react-router-dom';\nimport AppLoader from './components/loaders/AppLoader';\nimport AnalyticEngine from './components/analytics/AnalyticEngine';\nimport ForterFraudDetection from './components/analytics/ForterFraudDetection';\n\nimport { setupDatadog } from './services/datadogService';\nimport { setupBranding } from './services/brandingService';\nimport { getAppConfig, loadConfigFromBootstrap } from './services/appService';\nimport Logger from './services/logger/Logger';\n\nimport { getFeatureModule } from './services/featureLoaderService';\n// Styles\nimport './styles/blue-sky-app.scss';\n\nexport default class BlueSkyApp extends PureComponent {\n state = {\n isLoading: true,\n hasError: false,\n };\n\n render() {\n const { isLoading, appConfig, hasError, layoutModule } = this.state;\n\n return (\n <LoadingFlow\n isLoading={isLoading}\n hasError={hasError}\n errorStateLocale={{ title: 'Error' }}\n loadingStateLocale={{ title: 'Loading' }}\n >\n <AnalyticEngine appConfig={appConfig} />\n <BrowserRouter>\n <AppLoader\n appConfig={appConfig}\n layoutModule={layoutModule}\n />\n </BrowserRouter>\n <ForterFraudDetection appConfig={appConfig} />\n </LoadingFlow>\n );\n }\n\n componentDidMount() {\n this.initializeApp();\n }\n\n initializeApp = async () => {\n const newState = {\n isLoading: false,\n };\n\n try {\n let appConfig = await getAppConfig();\n\n appConfig = await loadConfigFromBootstrap(appConfig);\n appConfig = this.setupDarkMode(appConfig);\n\n const promises = Promise.all([\n getFeatureModule(appConfig?.featureConfig?.layout),\n setupBranding(appConfig),\n ]);\n\n const [layoutModule] = await promises;\n setupDatadog(appConfig);\n newState.appConfig = appConfig;\n newState.layoutModule = layoutModule;\n this.registerGlobalLogger(appConfig);\n } catch (e) {\n console.log(e, e.errorDetails);\n newState.hasError = true;\n } finally {\n this.setState(newState);\n }\n };\n\n registerGlobalLogger = (appConfig) => {\n // Create a global blueSkyLogger in the application\n // How to use: window.blueSkyLogger.error('message')\n const logger = new Logger(appConfig);\n window.blueSkyLogger = logger;\n };\n\n setupDarkMode = (appConfig) => {\n const isInDarkMode = !!(\n appConfig.branding.darkModeEnabled &&\n window.matchMedia &&\n window.matchMedia('(prefers-color-scheme: dark)').matches\n );\n\n return {\n ...appConfig,\n branding: { ...appConfig.branding, isInDarkMode },\n };\n };\n}\n","import { datadogRum } from '@datadog/browser-rum';\nimport { datadogLogs } from '@datadog/browser-logs';\n\nconst getBaseInfo = (appConfig) => {\n const { programCode, featureConfig } = appConfig;\n const { datadog } = featureConfig ?? {};\n const { applicationId, clientToken, environment } = datadog ?? {};\n\n if (!(clientToken && applicationId && environment)) {\n return undefined;\n }\n\n return {\n clientToken,\n site: 'datadoghq.com',\n service: programCode,\n env: environment,\n version: '1.0.0',\n applicationId,\n };\n};\n\nexport const setupDatadog = (appConfig) => {\n const baseInfo = getBaseInfo(appConfig);\n\n if (!baseInfo) return;\n\n datadogLogs.init({\n ...baseInfo,\n forwardErrorsToLogs: true,\n sessionSampleRate: 100,\n });\n\n datadogRum.init({\n ...baseInfo,\n sessionSampleRate: 100,\n sessionReplaySampleRate: 20,\n trackUserInteractions: true,\n trackResources: true,\n trackLongTasks: true,\n defaultPrivacyLevel: 'mask-user-input',\n });\n};\n\nexport default {};\n","const reportWebVitals = (onPerfEntry) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(\n ({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n },\n );\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport initMirageServer from '@Green-Dot-Corporation/eureka-lib-mock-utils/src/initMirageServer';\nimport ReactDOM from 'react-dom/client';\nimport BlueSkyApp from './BlueSkyApp';\nimport reportWebVitals from './reportWebVitals';\nimport registerRoutes from './mock/registerRoutes';\nimport { setupCachedBranding } from './services/brandingService';\n\n// TODO: Do we need this here and in BlueSkyApp.js?\nimport './styles/blue-sky-app.scss';\n\nif (process.env.NODE_ENV === 'development') {\n // Shutdown any existing instance of server to avoid multiple pretender\n // instances error\n if (window.server && typeof window.server.shutdown === 'function') {\n window.server.shutdown();\n }\n\n // Create server and pass routes and other options\n window.server = initMirageServer({\n routes() {\n registerRoutes(this);\n },\n });\n}\n\n// Wait for the entire document to be fully loaded and parsed before initializing the React application.\n// This ensures that the target element 'root' is present in the DOM\nfunction ready(fn) {\n if (document.readyState !== 'loading') {\n fn();\n\n return;\n }\n document.addEventListener('DOMContentLoaded', fn);\n}\n\nready(() => {\n const root = ReactDOM.createRoot(document.getElementById('root'));\n\n const renderApp = () => {\n root.render(<BlueSkyApp />);\n };\n\n setupCachedBranding().then(renderApp).catch(renderApp);\n\n // If you want to start measuring performance in your app, pass a function\n // to log results (for example: reportWebVitals(console.log))\n // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n reportWebVitals();\n});\n","import { createContext } from 'react';\n\nconst defaultContextValue = {};\nconst RouterUtilsContext = createContext(defaultContextValue);\nRouterUtilsContext.displayName = 'EurekaLibRouterContext';\n\nexport default RouterUtilsContext;\n","import { useContext } from 'react';\nimport {\n useNavigate,\n useLocation,\n useParams,\n useSearchParams,\n} from 'react-router-dom';\nimport RouterUtilsContext from './RouterUtilsContext';\n\nexport const withRouter = (Component) => {\n const Wrapper = (props) => {\n const navigate = useNavigate();\n const location = useLocation();\n const params = useParams();\n const [searchParams, setSearchParams] = useSearchParams();\n const routerUtilsContext = useContext(RouterUtilsContext);\n\n const navigateWithinParent = (path, ...rest) => {\n const { routePath } = routerUtilsContext;\n navigate((routePath ?? '') + path, ...rest);\n };\n\n return (\n <Component\n {...props}\n navigate={navigate}\n navigateWithinParent={navigateWithinParent}\n location={location}\n params={params}\n searchParams={searchParams}\n setSearchParams={setSearchParams}\n />\n );\n };\n\n return Wrapper;\n};\n\nexport default {};\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","var c=\".eureka-hyperlink{border-radius:var(--eureka-link-border-radius,4px);color:var(--eureka-link-color-text,#2945ff);-webkit-text-decoration:var(--eureka-link-text-decoration,none);text-decoration:var(--eureka-link-text-decoration,none);transition:box-shadow .15s ease-in-out}.eureka-hyperlink:focus{outline:none}.eureka-hyperlink:focus-visible{box-shadow:0 0 0 3px var(--eureka-color-universal-focus-halo,rgba(0,0,0,.4))}.eureka-hyperlink:focus-visible{box-shadow:0 0 0 3px var(--eureka-link-focus-color-halo,rgba(41,69,255,.4))}@media (hover:hover){.eureka-hyperlink:hover{text-decoration:underline}}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zdHlsZXMvaHlwZXJsaW5rLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXRoZW1lLXV0aWxzL3NyYy9zdHlsZXMvbWl4aW5zL19zdGF0ZXMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItc3R5bGUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvX3Jlc2V0cy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLGtCQUlJLGtEQUFBLENBRkEsMkNBQUEsQ0FDQSwrREFBQSxDQUFBLHVEQUFBLENDRUEsc0NEUEosQ0NTSSx3QkNDQSxZRlBKLENDVUksZ0NBVkEsNEVER0osQ0FHSSxnQ0NOQSwyRURNSixDQUlJLHFCQUNJLHdCQUNJLHlCQUZWLENBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGVwZW5kZW5jaWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL3V0aWxzL3VuaXQtY29udmVyc2lvbi11dGlscy5zY3NzJztcbkBpbXBvcnQgJ35AR3JlZW4tRG90LUNvcnBvcmF0aW9uL2V1cmVrYS1saWItdGhlbWUtdXRpbHMvc3JjL3N0eWxlcy9taXhpbnMvc3RhdGVzLnNjc3MnO1xuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi10aGVtZS11dGlscy9zcmMvc3R5bGVzL3V0aWxzL3RoZW1lLXV0aWxzLnNjc3MnO1xuXG4uZXVyZWthLWh5cGVybGluaywgJWV1cmVrYS1oeXBlcmxpbmsge1xuICAgIEBpbmNsdWRlIGV1cmVrYS1mb2N1cy1zdGF0ZS1oYWxvO1xuICAgIGNvbG9yOiB2YXIoLS1ldXJla2EtbGluay1jb2xvci10ZXh0LCBldXJla2EtbGlnaHQtdGhlbWUoJ2xpbmstY29sb3ItdGV4dCcpKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IHZhcigtLWV1cmVrYS1saW5rLXRleHQtZGVjb3JhdGlvbiwgZXVyZWthLWxpZ2h0LXRoZW1lKCdsaW5rLXRleHQtZGVjb3JhdGlvbicpKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ldXJla2EtbGluay1ib3JkZXItcmFkaXVzLCAje2V1cmVrYS10by1weChldXJla2EtbGlnaHQtdGhlbWUoJ2xpbmstYm9yZGVyLXJhZGl1cycpKX0pO1xuICAgICR0aGlzOiAnLmV1cmVrYS1oeXBlcmxpbmsnO1xuXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWZvY3VzLXN0YXRlLWJveC1zaGFkb3codmFyKC0tZXVyZWthLWxpbmstZm9jdXMtY29sb3ItaGFsbywgZXVyZWthLWxpZ2h0LXRoZW1lKCdsaW5rLWZvY3VzLWNvbG9yLWhhbG8nKSkpO1xuICAgIH1cblxuICAgIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGVwZW5kZW5jaWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuQGltcG9ydCAnfkBHcmVlbi1Eb3QtQ29ycG9yYXRpb24vZXVyZWthLWxpYi1zdHlsZS11dGlscy9zcmMvc3R5bGVzL21peGlucy9yZXNldHMuc2Nzcyc7XG5AaW1wb3J0ICd+QEdyZWVuLURvdC1Db3Jwb3JhdGlvbi9ldXJla2EtbGliLXN0eWxlLXV0aWxzL3NyYy9zdHlsZXMvdXRpbHMvbWFwLXV0aWxzLnNjc3MnO1xuQGltcG9ydCAnLi4vdG9rZW5zL3N0eWxlLXRva2Vucy5zY3NzJztcblxuQG1peGluIGV1cmVrYS1mb2N1cy1zdGF0ZS1ib3gtc2hhZG93KCRjb2xvcjogdmFyKC0tZXVyZWthLWNvbG9yLXVuaXZlcnNhbC1mb2N1cy1oYWxvLCByZ2JhKDAsIDAsIDAsIDAuNCkpKSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4ICRjb2xvcjtcbn1cblxuQG1peGluIGV1cmVrYS1mb2N1cy1zdGF0ZS1oYWxvKCRjb2xvcjogdmFyKC0tZXVyZWthLWNvbG9yLXVuaXZlcnNhbC1mb2N1cy1oYWxvLCByZ2JhKDAsIDAsIDAsIDAuNCkpKSB7XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBAaW5jbHVkZSBldXJla2EtZm9jdXMtc3RhdGUtcmVzZXQ7XG4gICAgfVxuXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgQGluY2x1ZGUgZXVyZWthLWZvY3VzLXN0YXRlLWJveC1zaGFkb3coJGNvbG9yKTtcbiAgICB9XG59XG5cbkBtaXhpbiBldXJla2EtaG92ZXItc3RhdGUoKSB7XG4gICAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICAgICAgJjplbmFibGVkOmhvdmVyIHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1peGluIGV1cmVrYS1kaXNhYmxlZC1zdGF0ZSgkaGFzLWhvdmVyOiB0cnVlKSB7XG4gICAgJjpkaXNhYmxlZCB7XG4gICAgICAgIG9wYWNpdHk6IHZhcigtLWV1cmVrYS1jb3JlLXN0YXRlLWRpc2FibGVkLW9wYWNpdHksIGV1cmVrYS1nZXQtbWFwLXZhbHVlKCRldXJla2Etc3R5bGUtdG9rZW5zLCAnY29yZS1zdGF0ZS1kaXNhYmxlZC1vcGFjaXR5JykpO1xuXG4gICAgICAgIEBpZiAkaGFzLWhvdmVyIHtcbiAgICAgICAgICAgIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiQG1peGluIGV1cmVrYS1saXN0LXJlc2V0KCkge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xufVxuXG5AbWl4aW4gZXVyZWthLWJ1dHRvbi1yZXNldCgpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItd2lkdGg6IDA7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG5AbWl4aW4gZXVyZWthLWZvY3VzLXN0YXRlLXJlc2V0KCkge1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG4iXX0= */\",t=\"eureka-css-@Green-Dot-Corporation/eureka-ui-typography-1.0.9\";const l=document.getElementById(t);if(l)l.textContent&&-1===l.textContent.indexOf(c)&&l.appendChild(document.createTextNode(c));else{var b=document.getElementsByTagName(\"head\")[0],I=document.createElement(\"style\");I.setAttribute(\"type\",\"text/css\"),I.setAttribute(\"id\",t),I.dataset.eurekasrc=document.currentScript?document.currentScript.src:\"\",b.insertAdjacentElement(\"beforeend\",I),65279===c.charCodeAt(0)&&(c=c.substring(1)),I.styleSheet?I.styleSheet.cssText+=c:I.appendChild(document.createTextNode(c))}export{c as css};\n//# sourceMappingURL=hyperlink.scss.js.map\n","import{objectWithoutPropertiesLoose as e,extends as r}from\"../_virtual/_rollupPluginBabelHelpers.js\";import\"react\";import o from\"prop-types\";import n from\"classnames\";import\"./styles/hyperlink.scss.js\";import{jsx as s}from\"react/jsx-runtime\";var t=[\"href\",\"shouldOpenInNewWindow\",\"contextCls\",\"children\"],Hyperlink=function(o){var l=o.href,i=o.shouldOpenInNewWindow,p=o.contextCls,a=o.children,d=e(o,t),u=r({},d,{href:l},i&&{target:\"_blank\",rel:\"noopener noreferrer\"});return s(\"a\",r({},u,{className:n(\"eureka-hyperlink\",p),children:a}))};Hyperlink.defaultProps={shouldOpenInNewWindow:!1},Hyperlink.propTypes={contextCls:o.string,href:o.string.isRequired,shouldOpenInNewWindow:o.bool};var l=Hyperlink;export{l as default};\n//# sourceMappingURL=Hyperlink.js.map\n","import PropTypes from 'prop-types';\nimport { Hyperlink } from '@Green-Dot-Corporation/eureka-ui-typography';\n\nimport { useHref, useLinkClickHandler } from 'react-router-dom';\n\nconst NEW_WINDOW_TARGET = '_blank';\n\nconst RouteLink = ({\n onClick,\n shouldReplaceRoute = false,\n routeState,\n routeTarget,\n to,\n ...rest\n}) => {\n const href = useHref(to);\n const linkClickHandler = useLinkClickHandler(to, {\n replace: shouldReplaceRoute,\n state: routeState,\n target: routeTarget,\n });\n\n const handleClick = (event) => {\n if (onClick) {\n onClick(event);\n }\n\n const { defaultPrevented } = event ?? {};\n\n if (!defaultPrevented) {\n linkClickHandler(event);\n }\n };\n\n const shouldOpenInNewWindow = routeTarget === NEW_WINDOW_TARGET;\n\n return (\n <Hyperlink\n {...rest}\n href={href}\n onClick={handleClick}\n shouldOpenInNewWindow={shouldOpenInNewWindow}\n />\n );\n};\n\nRouteLink.propTypes = {\n onClick: PropTypes.func,\n shouldReplaceRoute: PropTypes.bool,\n routeState: PropTypes.object,\n routeTarget: PropTypes.string,\n to: PropTypes.string.isRequired,\n};\nRouteLink.defaultProps = {};\n\nexport default RouteLink;\n","import PropTypes from 'prop-types';\nimport { Outlet, Navigate } from 'react-router-dom';\n\nconst AuthorizedRoute = (props) => {\n const { redirectTo, isAuthorized } = props;\n\n return isAuthorized ? <Outlet /> : <Navigate to={redirectTo} />;\n};\n\nAuthorizedRoute.propTypes = {\n redirectTo: PropTypes.string.isRequired,\n isAuthorized: PropTypes.bool,\n};\n\nexport default AuthorizedRoute;\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;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.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[: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]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(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 qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(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 v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(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 ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!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(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.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]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<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(p(91));return A({},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(p(92));if(eb(c)){if(1<c.length)throw Error(p(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)}function kb(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\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=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(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(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(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(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 Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(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 Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(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(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"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 Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},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 Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){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){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else 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)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function 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)}\nfunction 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}A(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=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},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=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},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=A({},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=A({},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=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},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=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!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(ia){var xe;if(ia){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));Jb(re,b)}}\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;\nfunction Ie(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++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(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=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"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&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(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;nf(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;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"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 hd(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}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"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 $e:case af:case bf:k=Hd;break;case cf: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 t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,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 $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(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=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(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=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(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 Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];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(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(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,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}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){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(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 ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(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 gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(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(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(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?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(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&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kh(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||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(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(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}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=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=xh(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(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 Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return\"function\"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,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){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(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]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.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 si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(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}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Vh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c=\"\",d=b;do c+=Pa(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,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);\"function\"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(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=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?(\"function\"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?(\"function\"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:\"visible\",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);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}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case \"together\":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=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}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},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=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.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||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),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&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)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 S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;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,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,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.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(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 il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(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(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d=\"\",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\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(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version=\"18.2.0-next-9e3b772b8-20220608\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\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","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/** @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","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type { BrowserHistory, HashHistory, History } from \"history\";\nimport { createBrowserHistory, createHashHistory } from \"history\";\nimport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n resolvePath,\n renderMatches,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n} from \"react-router\";\nimport type { To } from \"react-router\";\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// RE-EXPORTS\n////////////////////////////////////////////////////////////////////////////////\n\n// Note: Keep in sync with react-router exports!\nexport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n renderMatches,\n resolvePath,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n};\n\nexport { NavigationType } from \"react-router\";\nexport type {\n Hash,\n Location,\n Path,\n To,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigator,\n OutletProps,\n Params,\n PathMatch,\n RouteMatch,\n RouteObject,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n Pathname,\n Search,\n RoutesProps,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from \"react-router\";\n\n////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef<BrowserHistory>();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef<HashHistory>();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport interface LinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function LinkWithRef(\n { onClick, reloadDocument, replace = false, state, target, to, ...rest },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, { replace, state, target });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n onClick={handleClick}\n ref={ref}\n target={target}\n />\n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit<LinkProps, \"className\" | \"style\" | \"children\"> {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: { isActive: boolean }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: { isActive: boolean }) => React.CSSProperties);\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef<HTMLAnchorElement, NavLinkProps>(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let location = useLocation();\n let path = useResolvedPath(to);\n\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for <NavLink />s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp({ isActive }) : styleProp;\n\n return (\n <Link\n {...rest}\n aria-current={ariaCurrent}\n className={className}\n ref={ref}\n style={style}\n to={to}\n >\n {typeof children === \"function\" ? children({ isActive }) : children}\n </Link>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nexport function useLinkClickHandler<E extends Element = HTMLAnchorElement>(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n\n return React.useCallback(\n (event: React.MouseEvent<E, MouseEvent>) => {\n if (\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\n // If the URL hasn't changed, a regular <a> will do a replace instead of\n // a push, so do the same here.\n let replace =\n !!replaceProp || createPath(location) === createPath(path);\n\n navigate(to, { replace, state });\n }\n },\n [location, navigate, path, replaceProp, state, target, to]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(defaultInit?: URLSearchParamsInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (\n nextInit: URLSearchParamsInit,\n navigateOptions?: { replace?: boolean; state?: any }\n ) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n },\n [navigate]\n );\n\n return [searchParams, setSearchParams] as const;\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record<string, string | string[]>\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n","import * as React from \"react\";\nimport type { History, Location } from \"history\";\nimport { Action as NavigationType } from \"history\";\n\nimport type { RouteMatch } from \"./router\";\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level <Router> API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport type Navigator = Pick<History, \"go\" | \"push\" | \"replace\" | \"createHref\">;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n","import type { Location, Path, To } from \"history\";\nimport { parsePath } from \"history\";\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\nexport function warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\ntype ParamParseFailed = { failed: true };\n\ntype ParamParseSegment<Segment extends string> =\n // Check here if there exists a forward slash in the string.\n Segment extends `${infer LeftSegment}/${infer RightSegment}`\n ? // If there is a forward slash, then attempt to parse each side of the\n // forward slash.\n ParamParseSegment<LeftSegment> extends infer LeftResult\n ? ParamParseSegment<RightSegment> extends infer RightResult\n ? LeftResult extends string\n ? // If the left side is successfully parsed as a param, then check if\n // the right side can be successfully parsed as well. If both sides\n // can be parsed, then the result is a union of the two sides\n // (read: \"foo\" | \"bar\").\n RightResult extends string\n ? LeftResult | RightResult\n : LeftResult\n : // If the left side is not successfully parsed as a param, then check\n // if only the right side can be successfully parse as a param. If it\n // can, then the result is just right, else it's a failure.\n RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If the left side didn't parse into a param, then just check the right\n // side.\n ParamParseSegment<RightSegment> extends infer RightResult\n ? RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If there's no forward slash, then check if this segment starts with a\n // colon. If it does, then this is a dynamic segment, so the result is\n // just the remainder of the string. Otherwise, it's a failure.\n Segment extends `:${infer Remaining}`\n ? Remaining\n : ParamParseFailed;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey<Segment extends string> =\n ParamParseSegment<Segment> extends string\n ? ParamParseSegment<Segment>\n : string;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params<Key extends string = string> = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, (_) =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial<Location> | string,\n basename = \"/\"\n): RouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObject;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<ParamKey extends string = string>(\n branch: RouteBranch,\n pathname: string\n): RouteMatch<ParamKey>[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern<Path extends string = string> {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchpath\n */\nexport function matchPath<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(\n pattern: PathPattern<Path> | Path,\n pathname: string\n): PathMatch<ParamKey> | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce<Mutable<Params>>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, match a word boundary or a proceeding /. The word boundary restricts\n // parent routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n // Additionally, allow paths starting with `.`, `-`, `~`, and url-encoded entities,\n // but do not consume the character in the matched path so they can match against\n // nested paths.\n \"(?:(?=[.~-]|%[0-9A-F]{2})|\\\\b|\\\\/|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\n\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `<Link to>` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n let from: string;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how <a href> works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original to value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n","import * as React from \"react\";\nimport type { Location, Path, To } from \"history\";\nimport { Action as NavigationType, parsePath } from \"history\";\n\nimport { LocationContext, NavigationContext, RouteContext } from \"./context\";\nimport type {\n ParamParseKey,\n Params,\n PathMatch,\n PathPattern,\n RouteMatch,\n RouteObject,\n} from \"./router\";\nimport {\n getToPathname,\n invariant,\n joinPaths,\n matchPath,\n matchRoutes,\n resolveTo,\n warning,\n warningOnce,\n} from \"./router\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usehref\n */\nexport function useHref(to: To): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a <Router>.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/api#uselocation\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a <Router> component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * <NavLink>.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usematch\n */\nexport function useMatch<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a <Router> component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath<ParamKey, Path>(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by <Link>s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname\n );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/api#useoutletcontext\n */\nexport function useOutletContext<Context = unknown>(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by <Outlet> to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useoutlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useparams\n */\nexport function useParams<\n ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an <Outlet> to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useroutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a <Router> component.`\n );\n\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different <Routes> under a <Route>\n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // <Routes>\n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // <Route path=\"blog\" element={<Blog />} />\n // <Route path=\"blog/feed\" element={<BlogFeed />} />\n // </Routes>\n //\n // function Blog() {\n // return (\n // <Routes>\n // <Route path=\"post/:id\" element={<Post />} />\n // </Routes>\n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n <RouteContext.Provider\n children={\n match.route.element !== undefined ? match.route.element : outlet\n }\n value={{\n outlet,\n matches: parentMatches.concat(matches.slice(0, index + 1)),\n }}\n />\n );\n }, null as React.ReactElement | null);\n}\n","import * as React from \"react\";\nimport type { InitialEntry, Location, MemoryHistory, To } from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath,\n} from \"history\";\n\nimport { LocationContext, NavigationContext, Navigator } from \"./context\";\nimport {\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\nimport type { RouteMatch, RouteObject } from \"./router\";\nimport { invariant, normalizePathname, stripBasename, warning } from \"./router\";\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A <Router> that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef<MemoryHistory>();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n `<Navigate> may be used only in the context of a <Router> component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n `This is a no-op, but you should modify your code so the <Navigate> is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactNode | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A <Route> is only ever to be used as the child of <Routes> element, ` +\n `never rendered directly. Please wrap your <Route> in a <Routes>.`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial<Location> | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a <Router> directly. Instead, you'll render a\n * router that is more specific to your environment such as a <BrowserRouter>\n * in web browsers or a <StaticRouter> for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a <Router> inside another <Router>.` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n `<Router basename=\"${basename}\"> is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the <Router> won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n <NavigationContext.Provider value={navigationContext}>\n <LocationContext.Provider\n children={children}\n value={{ location, navigationType }}\n />\n </NavigationContext.Provider>\n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of <Route> elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n );\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n","/**\n * @license React\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';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.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:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\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=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){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 l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\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","/**\n * @license React\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';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}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}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.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(){A||z||(A=!0,I(J))};\nexports.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\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=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:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=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","// TinyColor v1.4.2\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n mathRound = Math.round,\n mathMin = Math.min,\n mathMax = Math.max,\n mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n color = (color) ? color : '';\n opts = opts || { };\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n\n var rgb = inputToRGB(color);\n this._originalInput = color,\n this._r = rgb.r,\n this._g = rgb.g,\n this._b = rgb.b,\n this._a = rgb.a,\n this._roundA = mathRound(100*this._a) / 100,\n this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) { this._r = mathRound(this._r); }\n if (this._g < 1) { this._g = mathRound(this._g); }\n if (this._b < 1) { this._b = mathRound(this._b); }\n\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n isDark: function() {\n return this.getBrightness() < 128;\n },\n isLight: function() {\n return !this.isDark();\n },\n isValid: function() {\n return this._ok;\n },\n getOriginalInput: function() {\n return this._originalInput;\n },\n getFormat: function() {\n return this._format;\n },\n getAlpha: function() {\n return this._a;\n },\n getBrightness: function() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r/255;\n GsRGB = rgb.g/255;\n BsRGB = rgb.b/255;\n\n if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n },\n setAlpha: function(value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100*this._a) / 100;\n return this;\n },\n toHsv: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n return (this._a == 1) ?\n \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" :\n \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n },\n toHsl: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n return (this._a == 1) ?\n \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" :\n \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n },\n toHex: function(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function(allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function(allow4Char) {\n return '#' + this.toHex8(allow4Char);\n },\n toRgb: function() {\n return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n },\n toRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function() {\n return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n },\n toPercentageRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function() {\n if (this._a === 0) {\n return \"transparent\";\n }\n\n if (this._a < 1) {\n return false;\n }\n\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function(secondColor) {\n var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n\n return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n },\n toString: function(format) {\n var formatSet = !!format;\n format = format || this._format;\n\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n\n return formattedString || this.toHexString();\n },\n clone: function() {\n return tinycolor(this.toString());\n },\n\n _applyModification: function(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function() {\n return this._applyModification(lighten, arguments);\n },\n brighten: function() {\n return this._applyModification(brighten, arguments);\n },\n darken: function() {\n return this._applyModification(darken, arguments);\n },\n desaturate: function() {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function() {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function() {\n return this._applyModification(greyscale, arguments);\n },\n spin: function() {\n return this._applyModification(spin, arguments);\n },\n\n _applyCombination: function(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function() {\n return this._applyCombination(analogous, arguments);\n },\n complement: function() {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function() {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function() {\n return this._applyCombination(splitcomplement, arguments);\n },\n triad: function() {\n return this._applyCombination(triad, arguments);\n },\n tetrad: function() {\n return this._applyCombination(tetrad, arguments);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n }\n else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n\n if (typeof color == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if(max == min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if(t < 0) t += 1;\n if(t > 1) t -= 1;\n if(t < 1/6) return p + (q - p) * 6 * t;\n if(t < 1/2) return q;\n if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n }\n\n if(s === 0) {\n r = g = b = l; // achromatic\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if(max == min) {\n h = 0; // achromatic\n }\n else {\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n pad2(convertDecimalToHex(a))\n ];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) { return false; }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction desaturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\n\nfunction triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n ];\n}\n\nfunction analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\n\nfunction monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h, s = hsv.s, v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v}));\n v = (v + modification) % 1;\n }\n\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n amount = (amount === 0) ? 0 : (amount || 50);\n\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n\n var p = amount / 100;\n\n var rgba = {\n r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n };\n\n return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function(color1, color2) {\n var c1 = tinycolor(color1);\n var c2 = tinycolor(color2);\n return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n// the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n// the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n// tinycolor.isReadable(\"#000\", \"#111\") => false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n\n out = false;\n\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size ;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors ;\n level = args.level;\n size = args.size;\n\n for (var i= 0; i < colorList.length ; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n\n if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n return bestColor;\n }\n else {\n args.includeFallbackColors=false;\n return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n }\n};\n\n\n// Big List of Colors\n// ------------------\n// <http://www.w3.org/TR/css3-color/#svg-color>\nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = { };\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) { n = \"100%\"; }\n\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if ((Math.abs(n - max) < 0.000001)) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = (n * 100) + \"%\";\n }\n\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n // <http://www.w3.org/TR/css3-values/#integers>\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // <http://www.w3.org/TR/css3-values/#number-value>\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color == 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hsva.exec(color))) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if ((match = matchers.hex4.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n\n return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (typeof define === 'function' && define.amd) {\n define(function () {return tinycolor;});\n}\n// Browser: Expose to window\nelse {\n window.tinycolor = tinycolor;\n}\n\n})(Math);\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","// 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\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"87e4ea4a\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\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__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"web-bluesky-app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// 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__.S = {};\nvar initPromises = {};\nvar initTokens = {};\n__webpack_require__.I = (name, initScope) => {\n\tif(!initScope) initScope = [];\n\t// handling circular init calls\n\tvar initToken = initTokens[name];\n\tif(!initToken) initToken = initTokens[name] = {};\n\tif(initScope.indexOf(initToken) >= 0) return;\n\tinitScope.push(initToken);\n\t// only runs once\n\tif(initPromises[name]) return initPromises[name];\n\t// creates a new share scope if needed\n\tif(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {};\n\t// runs all init snippets from all modules reachable\n\tvar scope = __webpack_require__.S[name];\n\tvar warn = (msg) => {\n\t\tif (typeof console !== \"undefined\" && console.warn) console.warn(msg);\n\t};\n\tvar uniqueName = \"web-bluesky-app\";\n\tvar register = (name, version, factory, eager) => {\n\t\tvar versions = scope[name] = scope[name] || {};\n\t\tvar activeVersion = versions[version];\n\t\tif(!activeVersion || (!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName > activeVersion.from))) versions[version] = { get: factory, from: uniqueName, eager: !!eager };\n\t};\n\tvar initExternal = (id) => {\n\t\tvar handleError = (err) => (warn(\"Initialization of sharing external failed: \" + err));\n\t\ttry {\n\t\t\tvar module = __webpack_require__(id);\n\t\t\tif(!module) return;\n\t\t\tvar initFn = (module) => (module && module.init && module.init(__webpack_require__.S[name], initScope))\n\t\t\tif(module.then) return promises.push(module.then(initFn, handleError));\n\t\t\tvar initResult = initFn(module);\n\t\t\tif(initResult && initResult.then) return promises.push(initResult['catch'](handleError));\n\t\t} catch(err) { handleError(err); }\n\t}\n\tvar promises = [];\n\tswitch(name) {\n\t\tcase \"default\": {\n\t\t\tregister(\"@Green-Dot-Corporation/eureka-lib-router-utils\", \"1.1.6\", () => (() => (__webpack_require__(4))), 1);\n\t\t\tregister(\"react-dom\", \"18.2.0\", () => (() => (__webpack_require__(950))), 1);\n\t\t\tregister(\"react-router-dom\", \"6.3.0\", () => (() => (__webpack_require__(318))), 1);\n\t\t\tregister(\"react-router\", \"6.3.0\", () => (() => (__webpack_require__(971))), 1);\n\t\t\tregister(\"react\", \"18.2.0\", () => (() => (__webpack_require__(43))), 1);\n\t\t}\n\t\tbreak;\n\t}\n\tif(!promises.length) return initPromises[name] = 1;\n\treturn initPromises[name] = Promise.all(promises).then(() => (initPromises[name] = 1));\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl + \"../../\";","var parseVersion = (str) => {\n\t// see webpack/lib/util/semver.js for original code\n\tvar p=p=>{return p.split(\".\").map((p=>{return+p==p?+p:p}))},n=/^([^-+]+)?(?:-([^+]+))?(?:\\+(.+))?$/.exec(str),r=n[1]?p(n[1]):[];return n[2]&&(r.length++,r.push.apply(r,p(n[2]))),n[3]&&(r.push([]),r.push.apply(r,p(n[3]))),r;\n}\nvar versionLt = (a, b) => {\n\t// see webpack/lib/util/semver.js for original code\n\ta=parseVersion(a),b=parseVersion(b);for(var r=0;;){if(r>=a.length)return r<b.length&&\"u\"!=(typeof b[r])[0];var e=a[r],n=(typeof e)[0];if(r>=b.length)return\"u\"==n;var t=b[r],f=(typeof t)[0];if(n!=f)return\"o\"==n&&\"n\"==f||(\"s\"==f||\"u\"==n);if(\"o\"!=n&&\"u\"!=n&&e!=t)return e<t;r++}\n}\nvar rangeToString = (range) => {\n\t// see webpack/lib/util/semver.js for original code\n\tvar r=range[0],n=\"\";if(1===range.length)return\"*\";if(r+.5){n+=0==r?\">=\":-1==r?\"<\":1==r?\"^\":2==r?\"~\":r>0?\"=\":\"!=\";for(var e=1,a=1;a<range.length;a++){e--,n+=\"u\"==(typeof(t=range[a]))[0]?\"-\":(e>0?\".\":\"\")+(e=2,t)}return n}var g=[];for(a=1;a<range.length;a++){var t=range[a];g.push(0===t?\"not(\"+o()+\")\":1===t?\"(\"+o()+\" || \"+o()+\")\":2===t?g.pop()+\" \"+g.pop():rangeToString(t))}return o();function o(){return g.pop().replace(/^\\((.+)\\)$/,\"$1\")}\n}\nvar satisfy = (range, version) => {\n\t// see webpack/lib/util/semver.js for original code\n\tif(0 in range){version=parseVersion(version);var e=range[0],r=e<0;r&&(e=-e-1);for(var n=0,i=1,a=!0;;i++,n++){var f,s,g=i<range.length?(typeof range[i])[0]:\"\";if(n>=version.length||\"o\"==(s=(typeof(f=version[n]))[0]))return!a||(\"u\"==g?i>e&&!r:\"\"==g!=r);if(\"u\"==s){if(!a||\"u\"!=g)return!1}else if(a)if(g==s)if(i<=e){if(f!=range[i])return!1}else{if(r?f>range[i]:f<range[i])return!1;f!=range[i]&&(a=!1)}else if(\"s\"!=g&&\"n\"!=g){if(r||i<=e)return!1;a=!1,i--}else{if(i<=e||s<g!=r)return!1;a=!1}else\"s\"!=g&&\"n\"!=g&&(a=!1,i--)}}var t=[],o=t.pop.bind(t);for(n=1;n<range.length;n++){var u=range[n];t.push(1==u?o()|o():2==u?o()&o():u?satisfy(u,version):!o())}return!!o();\n}\nvar exists = (scope, key) => {\n\treturn scope && __webpack_require__.o(scope, key);\n}\nvar get = (entry) => {\n\tentry.loaded = 1;\n\treturn entry.get()\n};\nvar eagerOnly = (versions) => {\n\treturn Object.keys(versions).reduce((filtered, version) => {\n\t\t\tif (versions[version].eager) {\n\t\t\t\tfiltered[version] = versions[version];\n\t\t\t}\n\t\t\treturn filtered;\n\t}, {});\n};\nvar findLatestVersion = (scope, key, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key];\n};\nvar findSatisfyingVersion = (scope, key, requiredVersion, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\tif (!satisfy(requiredVersion, b)) return a;\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key]\n};\nvar findSingletonVersionKey = (scope, key, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\treturn Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;\n\t}, 0);\n};\nvar getInvalidSingletonVersionMessage = (scope, key, version, requiredVersion) => {\n\treturn \"Unsatisfied version \" + version + \" from \" + (version && scope[key][version].from) + \" of shared singleton module \" + key + \" (required \" + rangeToString(requiredVersion) + \")\"\n};\nvar getInvalidVersionMessage = (scope, scopeName, key, requiredVersion, eager) => {\n\tvar versions = scope[key];\n\treturn \"No satisfying version (\" + rangeToString(requiredVersion) + \")\" + (eager ? \" for eager consumption\" : \"\") + \" of shared module \" + key + \" found in shared scope \" + scopeName + \".\\n\" +\n\t\t\"Available versions: \" + Object.keys(versions).map((key) => {\n\t\treturn key + \" from \" + versions[key].from;\n\t}).join(\", \");\n};\nvar fail = (msg) => {\n\tthrow new Error(msg);\n}\nvar failAsNotExist = (scopeName, key) => {\n\treturn fail(\"Shared module \" + key + \" doesn't exist in shared scope \" + scopeName);\n}\nvar warn = /*#__PURE__*/ (msg) => {\n\tif (typeof console !== \"undefined\" && console.warn) console.warn(msg);\n};\nvar init = (fn) => (function(scopeName, key, eager, c, d) {\n\tvar promise = __webpack_require__.I(scopeName);\n\tif (promise && promise.then && !eager) {\n\t\treturn promise.then(fn.bind(fn, scopeName, __webpack_require__.S[scopeName], key, false, c, d));\n\t}\n\treturn fn(scopeName, __webpack_require__.S[scopeName], key, eager, c, d);\n});\n\nvar useFallback = (scopeName, key, fallback) => {\n\treturn fallback ? fallback() : failAsNotExist(scopeName, key);\n}\nvar load = /*#__PURE__*/ init((scopeName, scope, key, eager, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\treturn get(findLatestVersion(scope, key, eager));\n});\nvar loadVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);\n\tif (satisfyingVersion) return get(satisfyingVersion);\n\twarn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager))\n\treturn get(findLatestVersion(scope, key, eager));\n});\nvar loadStrictVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);\n\tif (satisfyingVersion) return get(satisfyingVersion);\n\tif (fallback) return fallback();\n\tfail(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager));\n});\nvar loadSingleton = /*#__PURE__*/ init((scopeName, scope, key, eager, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\treturn get(scope[key][version]);\n});\nvar loadSingletonVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\tif (!satisfy(requiredVersion, version)) {\n\t\twarn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\t}\n\treturn get(scope[key][version]);\n});\nvar loadStrictSingletonVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\tif (!satisfy(requiredVersion, version)) {\n\t\tfail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\t}\n\treturn get(scope[key][version]);\n});\nvar installedModules = {};\nvar moduleToHandlerMapping = {\n\t782: () => (loadSingletonVersion(\"default\", \"react\", true, [4,18,2,0], () => (() => (__webpack_require__(43))))),\n\t64: () => (loadSingletonVersion(\"default\", \"react-dom\", true, [4,18,2,0], () => (() => (__webpack_require__(950))))),\n\t430: () => (loadSingletonVersion(\"default\", \"react-router-dom\", true, [4,6,3,0], () => (() => (__webpack_require__(318))))),\n\t68: () => (loadSingletonVersion(\"default\", \"react-router\", true, [4,6,3,0], () => (() => (__webpack_require__(971))))),\n\t693: () => (loadSingletonVersion(\"default\", \"@Green-Dot-Corporation/eureka-lib-router-utils\", true, [1,1,1,6], () => (() => (__webpack_require__(4)))))\n};\nvar initialConsumes = [782,64,430,68,693];\ninitialConsumes.forEach((id) => {\n\t__webpack_require__.m[id] = (module) => {\n\t\t// Handle case when module is used sync\n\t\tinstalledModules[id] = 0;\n\t\tdelete __webpack_require__.c[id];\n\t\tvar factory = moduleToHandlerMapping[id]();\n\t\tif(typeof factory !== \"function\") throw new Error(\"Shared module is not available for eager consumption: \" + id);\n\t\tmodule.exports = factory();\n\t}\n});\nvar chunkMapping = {};\nvar startedInstallModules = {};\n__webpack_require__.f.consumes = (chunkId, promises) => {\n\tif(__webpack_require__.o(chunkMapping, chunkId)) {\n\t\tchunkMapping[chunkId].forEach((id) => {\n\t\t\tif(__webpack_require__.o(installedModules, id)) return promises.push(installedModules[id]);\n\t\t\tif(!startedInstallModules[id]) {\n\t\t\tvar onFactory = (factory) => {\n\t\t\t\tinstalledModules[id] = 0;\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tmodule.exports = factory();\n\t\t\t\t}\n\t\t\t};\n\t\t\tstartedInstallModules[id] = true;\n\t\t\tvar onError = (error) => {\n\t\t\t\tdelete installedModules[id];\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tvar promise = moduleToHandlerMapping[id]();\n\t\t\t\tif(promise.then) {\n\t\t\t\t\tpromises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));\n\t\t\t\t} else onFactory(promise);\n\t\t\t} catch(e) { onError(e); }\n\t\t\t}\n\t\t});\n\t}\n}","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkweb_bluesky_app\"] = self[\"webpackChunkweb_bluesky_app\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(601);\n"],"names":["e","t","c","document","getElementById","textContent","indexOf","appendChild","createTextNode","n","getElementsByTagName","T","createElement","setAttribute","dataset","eurekasrc","currentScript","src","insertAdjacentElement","charCodeAt","substring","styleSheet","cssText","ButtonIcon","a","renderIcon","s","baseCls","r","className","children","defaultProps","propTypes","isRequired","ButtonText","R","PRIMARY","PRIMARY_DESTRUCTIVE","SECONDARY","SECONDARY_DESTRUCTIVE","getBtnModCls","b","l","Z","g","LoadingDots","arguments","length","o","Array","call","apply","concat","renderDot","prototype","render","props","contextCls","i","m","Button","renderMain","text","isBusy","getShouldRenderBtnIcon","p","renderText","renderBusyIcon","u","d","handleClick","onClick","data","getModCls","variant","getExtantProps","type","isDisabled","disabled","Promise","resolve","f","CalloutActions","renderAction","onActionClick","getAction","actions","find","W","Heading","getControlledHeadingLevel","headingLvl","getIsHeadingLvlNum","getIsHeadingLvlInRange","getProps","getContainerCls","Number","isInteger","h","SVGWrapper","title","xmlns","IconSVGWrapper","strokeWidth","fill","viewBox","width","height","stroke","EurekaTriangleAlert","C","EurekaCircleCheck","Callout","renderStatusIcon","renderMessaging","msg","shouldPadContent","LoadingState","this","LoadingFlow","renderLoadingState","loadingStateLocale","renderErrorState","errorStateLocale","getShouldRenderLoadingState","isLoading","hasError","getShouldRenderErrorState","getShouldRenderContent","assign","target","source","key","api","init","converter","defaultAttributes","set","name","value","attributes","expires","Date","now","toUTCString","encodeURIComponent","replace","decodeURIComponent","escape","stringifiedAttributes","attributeName","split","cookie","write","Object","create","get","cookies","jar","parts","slice","join","found","read","remove","withAttributes","withConverter","freeze","path","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","keys","map","REACT_TAG_MAP","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","reduce","obj","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","_typeof","Symbol","iterator","constructor","createClass","defineProperties","descriptor","enumerable","configurable","writable","defineProperty","Constructor","protoProps","staticProps","_extends","hasOwnProperty","objectWithoutProperties","encodeSpecialCharacters","str","undefined","String","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","isArray","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","filter","tagAttrs","current","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","tag","lowerCaseAttributeKey","toLowerCase","getTagsFromPropsList","tagName","approvedSeenTags","warn","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","forEach","push","tagUnion","objectAssign","property","rafPolyfill","clock","callback","currentTime","setTimeout","cafPolyfill","id","clearTimeout","requestAnimationFrame","window","bind","webkitRequestAnimationFrame","mozRequestAnimationFrame","global","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","console","_helmetCallback","commitTagChanges","newState","cb","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","helmetAttributeString","getAttribute","helmetAttributes","attributesToRemove","attributeKeys","attribute","indexToSave","splice","_i","removeAttribute","tags","headElement","head","querySelector","tagNodes","querySelectorAll","indexToDelete","newElement","innerHTML","some","existingTag","index","isEqualNode","parentNode","removeChild","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","encode","toComponent","_initProps","React","generateTitleAsReactComponent","toString","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","content","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","string","tagContent","isSelfClosing","generateTagsAsString","mapStateOnServer","_ref","_ref$title","base","link","meta","noscript","script","style","HelmetExport","Component","_class","_temp","_React$Component","HelmetWrapper","instance","TypeError","classCallCheck","self","ReferenceError","possibleConstructorReturn","subClass","superClass","setPrototypeOf","__proto__","inherits","shouldComponentUpdate","nextProps","isEqual","mapNestedChildrenToProps","child","nestedChildren","Error","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_this2","_child$props","initAttributes","convertReactPropstoHtmlAttributes","_props","canUseDOM","PropTypes","defaultTitle","defer","titleTemplate","peek","rewind","mappedState","Helmet","withSideEffect","renderStatic","includes","_assertThisInitialized","invariant","condition","message","error","framesToPop","Context","LOADABLE_SHARED","initialChunks","STATUS_PENDING","STATUS_REJECTED","identity","v","createLoadable","_ref$defaultResolveCo","defaultResolveComponent","_render","onLoad","loadable","loadableConstructor","options","ctor","requireAsync","chunkName","resolveConstructor","cache","_getCacheKey","cacheKey","module","Loadable","resolveComponent","isValidElementType","hoistNonReactStatics","preload","cachedLoad","promise","status","then","fileName","InnerLoadable","_this","state","result","loading","__chunkExtractor","requireSync","ssr","loadSync","addChunk","isReady","_inheritsLoose","getDerivedStateFromProps","_proto","componentDidMount","mounted","cachedPromise","getCache","setCache","loadAsync","componentDidUpdate","prevProps","prevState","componentWillUnmount","safeSetState","nextState","setState","getCacheKey","triggerOnLoad","_this3","resolveAsync","loadedModule","_this$props","forwardedRef","_objectWithoutPropertiesLoose","_this$props2","propFallback","fallback","_this$state","suspense","ref","EnhancedInnerLoadable","LoadableWithChunkExtractor","Consumer","extractor","displayName","withChunkExtractor","load","lazy","_createLoadable","__esModule","_createLoadable$1","loadable$1","lazy$1","loadable$2","lib","getFeatureLoader","async","moduleSrc","moduleName","featureModuleName","subModuleName","featureSubModuleName","featureDef","modulePath","reject","element","url","onload","onerror","scope","__webpack_init_sharing__","container","__webpack_share_scopes__","default","loadComponent","getFeatureModule","featureLoader","FetchError","getPrototypeOf","errorDetails","getRandomValues","E","O","S","generateKey","method","storeInCache","getFromCache","deleteFromCache","isJSONResponse","isTextResponse","mark","_callee","x","k","w","j","y","wrap","prev","next","isCacheable","shouldIncludeResponseAttributes","interceptorHandler","t0","sent","t1","Response","Blob","JSON","stringify","statusText","headers","json","fromEntries","entries","ok","response","responseData","config","abrupt","stop","handleError","preventDefault","errorHandler","getURLWithParams","queryParams","URLSearchParams","getRequestBody","body","FormData","_","H","A","B","G","P","q","z","D","F","I","mode","credentials","abortControllerCallback","timeout","shouldOverwriteCache","AbortController","signal","Headers","abort","fetch","t2","catch","finish","_callee2","_callee3","_callee4","_callee5","_callee6","_callee7","_callee8","rnds8","Uint8Array","rng","crypto","msCrypto","uuid","REGEX","test","byteToHex","substr","arr","offset","validate","buf","rnds","random","BRANDING_CACHE_KEY","IS_APP_CONFIG_AUTHENTICATED_KEY","APP_CONFIG_STAGE_PARAM","REQUEST_ID_HEADER","DO_NOT_STORE_COOKIE_URLS","cacheBranding","localStorage","setItem","shouldGetAuthenticatedAppConfig","stageKeyValue","sessionStorage","getItem","bootstrapModule","appLayoutProps","FeatureLoader","PureComponent","super","currentFeature","feature","routerContext","routePath","route","Module","appConfig","isHidden","moduleProps","moduleRoutePath","_jsx","RouterUtilsContext","Provider","prevIsLoading","loadFeatureModule","featureRenderer","ErrorBoundary","getDerivedStateFromError","rest","layoutProps","VARIANTS","RegExp","navigator","userAgent","match","MSStream","top","isTablet","isMobile","isIOS","isAndroid","isIframe","isWebview","isSafari","isFirefox","isChrome","isEdge","Header","renderLogo","logoPath","getLogoPath","brandName","getBrandName","alt","resourcePath","branding","mediaPath","user","modCls","cx","deviceInfo","AppLayout","renderHeader","shouldHideHeader","location","search","_appConfig$branding","baseClass","isInDarkMode","_jsxs","PageNotFound","SDKFLOW","redeemToken","requestOptions","Authorization","token","uuidv4","origin","post","redirectUrl","flow","payload","server","applicationId","programCode","productCode","accessToken","platform","deviceType","client","completeUrl","buildAppsflyerURL","appsflyerStr","appsflyer","appsflyerJson","parse","mediaSource","media_source","campaign","afAdset","af_adset","queryString","extractedData","dataMigration","separator","exitWebview","_window$app","_window$webkit","_window$webkit$messag","app","webkit","messageHandlers","log","postMessage","SDKLanding","errorInfo","fetchData","href","errorCode","updatedState","removeSlash","startingPath","modifiedPath","endsWith","startsWith","buildURL","subpathProp","resourcePathPrefix","subpath","buildTokenURL","buildMediaURL","eventHandler","eventName","_window$dataLayer","dataLayer","eventOptions","eventType","pageName","accountIdentifier","evtName","restOptions","overvideOptions","gd_userID","gd_cardPartner","event","augmentPageInfo","page","pageInfo","channel","currentPageInfo","augmentUserInfo","info","profile","userProfile","profileInfo","currentProfile","account_id","augmentImpactInfo","impact","impactinfo","augmentEventOptions","preloadedEvents","_satellite","adobe","digitalData","track","shift","debug","handlers","blueSkyAnalytics","handleRegisterHandler","handleEvent","handler","blueSkyEventHandler","gtmEventHandler","adoceOptions","adobeEventHandler","RouteChangeListener","useLocation","useEffect","display","DESIRED_URL_COOKIE_NAME","AppLoader","initialURL","currentPathname","pathname","renderFeatureLoader","_Fragment","rel","handleDesiredURL","routedFeatures","isAuth","isAuthenticated","destinationFeature","getDestinationFeature","destination","Cookies","currentUrl","withinRoutes","absoluteUrl","features","isWithinRoutes","pathName","URL","getEnabledFeatures","featureConfig","sort","getFilteredFeatures","defaultFeature","enabledFeatures","hiddenFeatures","layoutModule","CustomLayout","DefaultLayout","renderFeatures","Navigate","to","Routes","Route","withRouter","VIEW_EVENT","ACTION_EVENT","viewHandlers","actionHandlers","eventValue","option","handleTrackingEvent","eventData","observer","isListenerInitialized","onEvent","root","addEventListener","ev","registerActionEventListener","MutationObserver","mutations","mutation","addedNodes","el","observe","childList","subtree","registerViewEventListener","useScript$1","adobeLaunchEventHandler","onInitialized","useScript","brand","site","siteRendered","modalName","custId","personID","AccountReferenceID","email","reg_status","cardtype","customerID","orderId","initialize","GTM_SITE_KEY","GTM_SCRIPT","GTM_NO_SCRIPT_SRC","replaceText","scriptText","sitekey","GoogleGtmManager","Script","noScriptSrc","append","noScriptEle","iframe","visibility","insertBefore","firstChild","AnalyticEngine","adobeLaunch","alUrl","alRest","googleTagManager","gtmUrl","gtmRest","googleGtm","siteKey","googleGtmRest","AnalyticObserver","AdobeLaunch","GoogleTagManager","kickstartForter","siteId","fromCharCode","Q","ex","X","uB","brave","isBrave","uBr","nIL","ftr__snp_cwc","blockedURI","removeEventListener","Math","floor","ftr__fdad","tt","dUAL","N","uAS","uF","cP","ftr__radd","uDAD","uDS","uFP","uDF","M","et","td","ts","eUoe","uS","eTlu","ftr__config","csp","si","U","ckDepth","min","abs","setTime","getTime","toGMTString","domain","unescape","L","V","fpi","ftr__startScriptLoad","isNaN","ckTTL","ftr__tt","createEvent","initEvent","detail","dispatchEvent","ftr__gt","safeGenerateNoDash","Uint32Array","d0","d1","d2","d3","charAt","isValidNumericalToken","parseInt","isValidUUIDToken","isValidFGUToken","mLd","tmos","tmosSecs","bIR","vr","ftr__ncd","$","Y","XMLHttpRequest","open","XDomainRequest","setRequestHeader","onprogress","ontimeout","send","getAllResponseHeaders","getResponseHeader","ftr__altd2","atob","dr","responseType","nextOffsetToProcess","getUint8","DataView","getUint16","qname","qtype","qclass","getUint32","TextDecoder","decode","ttl","transactionId","flags","questionCount","answerCount","authorityCount","additionalCount","questions","answers","decodedVal","jURL","eURL","ftr__altd3","nt","forter","ConsoleApiName","globalConsole","originalConsoleMethods","PREFIX","DOCS_ORIGIN","DOCS_TROUBLESHOOTING","MORE_DETAILS","catchUserErrors","fn","errorMsg","args","err","onMonitorErrorCollected","debugMode","setDebugMode","newDebugMode","monitored","__","originalMethod","monitor","callMonitored","context","displayIfDebugEnabled","__spreadArray","candidate","arrayFrom","arrayLike","from","array","Set","item","predicate","list","objectValues","object","objectEntries","toAssign","makePublicApi","stub","publicApi","version","onReady","defineGlobal","existingGlobalVariable","getGlobalObject","globalThis","globalObject","_dd_temp_","ONE_KIBI_BYTE","ONE_MEBI_BYTE","HAS_MULTI_BYTES_CHARACTERS","computeBytesCount","TextEncoder","size","getZoneJsOriginalValue","original","browserWindow","Zone","__symbol__","delay","timeoutId","setInterval","clearInterval","throttle","wait","pendingExecutionWithParameters","pendingTimeoutId","needLeadingExecution","leading","needTrailingExecution","trailing","inWaitPeriod","throttled","parameters","cancel","noop","jsonStringify","replacer","space","restoreObjectPrototypeToJson","detachToJsonMethod","restoreArrayPrototypeToJson","restoreValuePrototypeToJson","restoreValueToJson","_a","objectToJson","toJSON","shallowClone","objectHasValue","isEmptyObject","CUSTOMER_DATA_BYTES_LIMIT","CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT","BYTES_COMPUTATION_THROTTLING_DELAY","createCustomerDataTrackerManager","compressionStatus","customerDataTrackers","Map","alreadyWarned","checkCustomerDataLimit","initialBytesCount","bytesCountLimit","bytesCount","tracker","getBytesCount","displayCustomerDataLimitReachedWarning","createDetachedTracker","createCustomerDataTracker","getOrCreateTracker","has","setCompressionStatus","newCompressionStatus","getCompressionStatus","clear","bytesCountCache","computeBytesCountThrottled","cancelComputeBytesCount","resetBytesCount","updateCustomerData","resetCustomerData","getType","mergeInto","circularReferenceChecker","WeakSet","set_1","hasAlreadyBeenSeen","add","createCircularReferenceChecker","ignoreCase","multiline","sticky","unicode","merged_1","merged","deepClone","combine","sources","sources_1","SANITIZE_DEFAULT_MAX_CHARACTER_COUNT","JSON_PATH_ROOT_ELEMENT","KEY_DECORATION_LENGTH","sanitize","maxCharacterCount","containerQueue","visitedObjectsWithPath","WeakMap","sanitizedData","sanitizeProcessor","serializedSanitizedData","accumulatedCharacterCount","containerToProcess","separatorLength","targetData","warnOverCharacterLimit","parentPath","queue","sourceToSanitize","tryToApplyToJSON","description","sanitizePrimitivesAndFunctions","sanitizedSource","Event","isTrusted","sanitizeObjects","sourceAsObject","currentPath","changeType","Observable","onFirstSubscribe","observers","subscribe","onLastUnsubscribe","unsubscribe","other","notify","mergeObservables","observables","globalObservable","subscriptions","observable","subscription","createContextManager","customerDataTracker","changeObservable","contextManager","getContext","setContext","newContext","clearContext","setContextProperty","removeContextProperty","ExperimentalFeature","TrackingConsent","GRANTED","NOT_GRANTED","createTrackingConsentState","currentConsent","tryToInit","trackingConsent","update","isGranted","enabledExperimentalFeatures","initFeatureFlags","enableExperimentalFeatures","flag","isExperimentalFeatureEnabled","featureName","getExperimentalFeatures","UNKNOWN_FUNCTION","computeStackTrace","stack","stackProperty","tryToGetString","exString","line","stackFrame","CHROME_LINE_RE","exec","isNative","isEval","submatch","CHROME_EVAL_RE","column","func","parseChromeLine","CHROME_ANONYMOUS_FUNCTION_RE","parseChromeAnonymousLine","WINJS_LINE_RE","parseWinLine","GECKO_LINE_RE","GECKO_EVAL_RE","parseGeckoLine","fileUrl","filePosition","computeStackTraceFromOnErrorMessage","messageObj","ERROR_TYPES_RE","tryToParseMessage","createHandlingStack","formattedStack","stackTrace","toStackTraceString","formatErrorMessage","frame","NO_ERROR_STACK_PRESENT_MESSAGE","computeRawError","originalError","handlingStack","startClocks","nonErrorPrefix","handling","isErrorInstance","computeMessage","hasUsableStack","causes","flattenErrorCauses","fingerprint","tryToGetFingerprint","dd_fingerprint","parentSource","currentError","cause","INTAKE_SITE_STAGING","INTAKE_SITE_FED_STAGING","INTAKE_SITE_US1","INTAKE_SITE_EU1","PCI_INTAKE_HOST_US1","performDraw","threshold","round","num","decimals","toFixed","isNumber","navigationStart","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_YEAR","relativeToClocks","relative","timeStamp","getCorrectedTimeStamp","relativeTime","correctedOrigin","dateNow","performance","getNavigationStart","addDuration","getTimeStamp","toServerDuration","duration","timeStampNow","relativeNow","clocksNow","clocksOrigin","elapsed","start","end","getRelativeTime","timestamp","timing","sendToExtension","__ddBrowserSdkExtensionCallback","getConnectivity","onLine","interfaces","connection","effective_type","effectiveType","removeItem","BUFFER_LIMIT","createBoundedBuffer","buffer","drain","arg","TelemetryType","configuration","usage","ALLOWED_FRAME_URLS","TELEMETRY_EXCLUDED_SITES","preStartTelemetryBuffer","onRawTelemetryEventCollected","startTelemetry","telemetryService","contextProvider","alreadySentEvents","telemetryEnabled","telemetrySampleRate","telemetryEnabledPerType","telemetryConfigurationSampleRate","telemetryUsageSampleRate","runtimeEnvInfo","is_local_file","protocol","is_worker","rawEvent","stringifiedEvent","maxTelemetryEventsPerPage","event_1","date","service","_dd","format_version","telemetry","runtime_env","connectivity","experimental_features","toTelemetryEvent","addTelemetryError","setContextProvider","provider","enabled","drainPreStartTelemetry","isTelemetryReplicationAllowed","addTelemetryDebug","kind","scrubCustomerFrames","formatError","addTelemetryConfiguration","addTelemetryUsage","allowedFrameUrl","eventTarget","listener","addEventListeners","eventNames","_b","once","capture","passive","listenerWithMonitor","__ddIsTrusted","allowUntrustedEvents","CONTEXT_STORE_KEY_PREFIX","storageListeners","storeContextManager","productKey","customerDataType","storageKey","buildStorageKey","getFromStorage","rawContext","createIdentityEncoder","output","outputBytesCount","isAsync","isEmpty","additionalEncodedBytesCount","finishSync","rawBytesCount","pendingData","estimateEncodedBytesCount","sanitizeUser","newUser","checkUser","isValid","displayAlreadyInitializedError","sdkName","initConfiguration","silentMultipleInit","getEventBridge","eventBridgeGlobal","DatadogEventBridge","getCapabilities","getPrivacyLevel","getAllowedWebViewHosts","viewId","view","bridgeSupports","capability","bridge","canUseEventBridge","currentHost","hostname","allowedHost","instrumentMethod","targetPrototype","onPreCall","computeHandlingStack","stopped","instrumentation","postCallCallback","onPostCall","instrumentSetter","after","originalDescriptor","getOwnPropertyDescriptor","stoppedInstrumentation","instrumentationWrapper","normalizeUrl","buildUrl","supportedURL","isURLSupported","originalURL","getSupportedUrl","doc","anchorElement","baseElement","implementation","createHTMLDocument","fetchObservable","initFetchObservable","input","methodFromParams","Request","toUpperCase","responsePromise","startContext","reportFetch","partialContext","isAborted","aborted","DOMException","code","ABORT_ERR","afterSend","beforeSend","generateUUID","placeholder","initCookieParsed","getCurrentSiteCache","COMMA_SEPARATED_KEY_VALUE","findCommaSeparatedValue","rawString","lastIndex","safeTruncate","suffix","lastChar","correctedLength","setCookie","expireDelay","sameSite","crossSite","secure","partitioned","getCookie","getInitCookie","findCommaSeparatedValues","deleteCookie","browserCache","SYNTHETICS_TEST_ID_COOKIE_NAME","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","Boolean","_DATADOG_SYNTHETICS_INJECTS_RUM","getSyntheticsTestId","_DATADOG_SYNTHETICS_PUBLIC_ID","getSyntheticsResultId","_DATADOG_SYNTHETICS_RESULT_ID","detectBrowserCached","chrome","vendor","documentMode","detectBrowser","SESSION_STORE_KEY","SESSION_TIME_OUT_DELAY","SESSION_EXPIRATION_DELAY","SESSION_ENTRY_REGEXP","SESSION_ENTRY_SEPARATOR","EXPIRED","getExpiredSessionState","isExpired","isSessionInNotStartedState","session","isSessionStarted","isSessionInExpiredState","sessionState","created","expire","expandSessionState","toSessionString","toSessionState","sessionString","isValidSessionString","entry","matches","OLD_SESSION_COOKIE_NAME","OLD_RUM_COOKIE_NAME","OLD_LOGS_COOKIE_NAME","RUM_SESSION_KEY","LOGS_SESSION_KEY","selectCookieStrategy","cookieOptions","useSecureSessionCookie","usePartitionedCrossSiteSessionCookie","useCrossSiteSessionCookie","trackSessionAcrossSubdomains","testCookieName","domainLevels","candidateDomain","pop","getCurrentSite","buildCookieOptions","testCookieValue","isCookieCorrectlySet","areCookiesAuthorized","initCookieStrategy","cookieStore","isLockEnabled","persistSession","retrieveSession","retrieveSessionCookie","expireSession","expireSessionCookie","cookieStoreStrategy","oldSessionId","oldRumType","oldLogsType","tryOldCookiesMigration","LOCAL_STORAGE_TEST_KEY","persistInLocalStorage","retrieveSessionFromLocalStorage","expireSessionFromLocalStorage","ongoingOperations","LOCK_RETRY_DELAY","LOCK_MAX_TRIES","bufferedOperations","processSessionStoreOperations","operations","sessionStoreStrategy","numberOfRetries","persistWithLock","lock","currentLock","retrieveStore","currentStore","retryLater","processedSession","process","sessionStore","currentNumberOfRetries","nextOperations","STORAGE_POLL_DELAY","selectSessionStoreStrategyType","sessionStoreStrategyType","allowFallbackToLocalStorage","testKey","retrievedId","selectLocalStorageStrategy","startSessionStore","computeSessionState","sessionCache","renewObservable","expireObservable","sessionStateUpdateObservable","watchSessionTimeoutId","synchronizeSession","startSession","synchronizedSession","trackingType","isTracked","expandOrRenewSessionState","hasSessionInCache","renewSessionInCache","throttledExpandOrRenewSession","cancelExpandOrRenewSession","isSessionInCacheOutdated","previousState","expandOrRenewSession","expandSession","getSession","restartSession","updateSessionState","partialSessionState","createEndpointBuilder","trackType","configurationTags","buildUrlWithParameters","proxy","normalizedProxyUrl_1","host","internalAnalyticsSubdomain","usePciIntake","domainParts","extension","buildEndpointHost","createEndpointUrlWithParametersBuilder","build","clientToken","retry","encoding","count","lastFailureStatus","buildEndpointParameters","urlPrefix","TAG_SIZE_LIMIT","FORBIDDEN_CHARACTERS","buildTag","rawValue","valueSizeLimit","sanitizedValue","computeTransportConfiguration","env","datacenter","buildTags","endpointBuilders","logsEndpointBuilder","rumEndpointBuilder","sessionReplayEndpointBuilder","computeEndpointBuilders","intakeUrlPrefixes","builder","computeIntakeUrlPrefixes","replicaConfiguration","replica","replicaEndpointBuilders","computeReplicaConfiguration","isIntakeUrl","intakeEndpoint","DefaultPrivacyLevel","ALLOW","MASK","MASK_USER_INPUT","TraceContextInjection","ALL","SAMPLED","isString","isSampleRate","sampleRate","validateAndBuildConfiguration","sessionSampleRate","_c","_d","_e","storeContextsAcrossPages","batchBytesLimit","eventRateLimiterThreshold","flushTimeout","batchMessagesLimit","messageBytesLimit","serializeConfiguration","session_sample_rate","telemetry_sample_rate","telemetry_configuration_sample_rate","telemetry_usage_sample_rate","use_before_send","use_cross_site_session_cookie","use_partitioned_cross_site_session_cookie","use_secure_session_cookie","use_proxy","silent_multiple_init","track_session_across_subdomains","allow_fallback_to_local_storage","store_contexts_across_pages","allow_untrusted_events","tracking_consent","isMatchOption","itemType","matchList","useStartsWith","clearTracingIfNeeded","traceId","spanId","traceSampled","injectHeadersIfTracingAllowed","sessionManager","inject","getCrypto","findTrackedSession","tracingOption","allowedTracingUrls","traceSampleRate","traceContextInjection","createTraceIdentifier","propagatorTypes","tracingHeaders","propagatorType","toDecimalString","traceparent","toPaddedHexadecimalString","b3","makeTracingHeaders","readInt32","radix","high","low","mod","DEFAULT_PROPAGATOR_TYPES","validateAndBuildRumConfiguration","sessionReplaySampleRate","excludedActivityUrls","tracingOptions","expectedItem","isTracingOption","validateAndBuildTracingOptions","baseConfiguration","actionNameAttribute","startSessionReplayRecordingManually","workerUrl","compressIntakeRequests","trackUserInteractions","trackViewsManually","trackResources","trackLongTasks","subdomain","defaultPrivacyLevel","enablePrivacyForActionName","customerDataTelemetrySampleRate","plugins","betaPlugins","getSelectedTracingPropagators","usedTracingPropagators","startVitalCollection","lifeCycle","pageStateHistory","addDurationVital","vital","wasInPageStateDuringPeriod","valueComputedBySdk","rawRumEvent","details","computed_value","startTime","customerContext","domainContext","processVital","startDurationVital","startVital","createVitalInstance","stopCallback","vitalStart","stopClocks","vitalStop","buildDurationVital","REMOTE_CONFIGURATION_URL","fetchAndApplyRemoteConfiguration","xhr","responseText","displayRemoteConfigurationFetchingError","remoteConfigurationId","fetchRemoteConfiguration","remoteInitConfiguration","applyRemoteConfiguration","createPreStartStrategy","getCommonContext","trackingConsentState","doStartRum","firstStartViewCall","deflateWorker","cachedInitConfiguration","cachedConfiguration","ignoreInitIfSyntheticsWillInjectRum","startDeflateWorker","bufferApiCalls","trackingConsentStateSubscription","tryStartRum","initialViewOptions","startRumResult","doInit","eventBridgeAvailable","overrideInitConfigurationForBridge","baseSerializedConfiguration","session_replay_sample_rate","start_session_replay_recording_manually","trace_sample_rate","trace_context_injection","action_name_attribute","use_allowed_tracing_urls","selected_tracing_propagators","default_privacy_level","enable_privacy_for_action_name","use_excluded_activity_urls","use_worker_url","compress_intake_requests","track_views_manually","track_user_interactions","track_resources","track_long_task","plugin","getConfigurationTelemetry","serializeRumConfiguration","methodName","parameter","plugins_1","callPluginsMethod","REMOTE_CONFIGURATION","getInternalContext","stopSession","addTiming","time","startView","updateViewName","addAction","action","commonContext","addError","providedError","addFeatureFlagEvaluation","PageExitReason","HIDDEN","UNLOADING","PAGEHIDE","FROZEN","createPageExitObservable","stopListeners","visibilityState","reason","stopBeforeUnloadListener","isPageExitReason","getMutationObserverConstructor","originalInstance","FAKE_INITIAL_DOCUMENT","RESOURCE_TYPES","initiatorType","computeResourceKind","isValidUrl","getPathName","RESOURCE_TYPES_1","isType","areInOrder","numbers","computePerformanceResourceDuration","responseEnd","computePerformanceResourceDetails","isValidEntry","fetchStart","redirectStart","redirectEnd","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseStart","download","formatTiming","first_byte","connect","ssl","dns","redirect","TOLERANT_RESOURCE_TIMINGS","areCommonTimingsInOrder","areRedirectionTimingsInOrder","hasRedirection","computeSize","encodedBodySize","decodedBodySize","encoded_body_size","decoded_body_size","transfer_size","transferSize","isAllowedRequestUrl","RumPerformanceEntryType","resourceTimingBufferFullListener","DATA_URL_REGEX","MAX_ATTRIBUTE_VALUE_CHAR_LENGTH","isLongDataUrl","sanitizeDataUrl","createPerformanceObservable","PerformanceObserver","handlePerformanceEntries","rumPerformanceEntries","entryType","RESOURCE","isForbiddenResource","filterRumPerformanceEntries","isObserverInitializing","getEntries","NAVIGATION","LONG_TASK","PAINT","buffered","getEntriesByType","entryTypes","clearResourceTimings","manageResourceTimingBufferFull","disconnect","supportPerformanceTimingEvent","supportedEntryTypes","supportPerformanceObject","startPerformanceCollection","cleanupTasks","performanceEntries_1","handleRumPerformanceEntries","handlePerformanceEntryList_1","mainEntries","experimentalEntries","LARGEST_CONTENTFUL_PAINT","FIRST_INPUT","LAYOUT_SHIFT","EVENT","durationThreshold","mainObserver_1","removePerformanceListener","stopFirstInputTiming","startTimeStamp","timingSent","removeEventListeners","evt","cancelable","processingStart","processingEnd","sendTimingIfPointerIsNotCancelled","sendTiming","retrieveFirstInputTiming","task","ErrorSource","AGENT","CONSOLE","CUSTOM","LOGGER","NETWORK","SOURCE","REPORT","createEventRateLimiter","limit","onLimitReached","eventCount","allowNextEvent","isLimitReached","limitModification","modifiableFieldPaths","modifier","clone","fieldPath","fieldType","newValue","field","isValidObjectContaining","newType","fields","isValidObject","modifiableFieldPathsByEvent","VIEW_MODIFIABLE_FIELD_PATHS","USER_CUSTOMIZABLE_FIELD_PATHS","ROOT_MODIFIABLE_FIELD_PATHS","startRumAssembly","viewContexts","urlContexts","actionContexts","displayContext","ciVisibilityContext","reportError","WRITABLE_RESOURCE_GRAPHQL","eventRateLimiters","syntheticsContext","testId","resultId","test_id","result_id","injected","getSyntheticsContext","savedCommonContext","viewContext","findView","urlContext","findUrl","actionId","findActionId","serverRumEvent","drift","browser_sdk_version","application","referrer","synthetics","ci_test","has_replay","hasReplay","sampled_for_replay","sessionReplay","usr","rateLimitReached","shouldSend","AbstractLifeCycle","callbacks","eventCallbacks","LifeCycle","END_OF_TIMES","Infinity","CLEAR_OLD_VALUES_INTERVAL","createValueHistory","maxEntries","clearOldValuesInterval","oldTimeThreshold","endTime","clearOldValues","close","unshift","returnInactive","entries_1","closeActive","latestEntry","findAll","reset","xhrObservable","VIEW_CONTEXT_TIME_OUT_DELAY","xhrContexts","initXhrObservable","stopInstrumentingStart","openXhr","stopInstrumentingSend","hasBeenReported","stopInstrumentingOnReadyStateChange","readyState","DONE","onEnd","unsubscribeLoadEndListener","completeContext","sendXhr","stopInstrumentingAbort","abortXhr","createXhrObservable","isServerError","tryToClone","readBytesFromStream","stream","reader","getReader","chunks","readBytesCount","onDone","bytes","limitExceeded","collectStreamBody","completeBuffer_1","offset_1","chunk","bytesLimit","readMore","done","nextRequestIndex","startRequestCollection","tracer","traceFetch","headers_1","header","traceXhr","startTracer","requestIndex","getNextRequestIndex","trackXhr","clonedResponse","POSITIVE_INFINITY","waitForResponseToComplete","trackFetch","discardNegativeDuration","trackEventCounts","isChildEvent","onChange","eventCounts","errorCount","longTaskCount","resourceCount","actionCount","frustrationCount","frustration","discarded","PAGE_ACTIVITY_VALIDATION_DELAY","PAGE_ACTIVITY_END_DELAY","waitPageActivityEnd","domMutationObservable","pageActivityEndCallback","maxDuration","pageActivityObservable","firstRequestIndex","pendingRequestsCount","notifyPageActivity","isExcludedUrl","startEvent","request","stopTrackingWindowOpen","createPageActivityObservable","pageActivityEndTimeoutId","hasCompleted","validationTimeoutId","complete","hadActivity","maxDurationTimeoutId","pageActivitySubscription","lastChangeTime","doWaitPageActivityEnd","requestUrl","cssEscape","CSS","ch","asCodePoint","elementMatches","selector","msMatchesSelector","getParentElement","node","parentElement","nodeType","Node","ELEMENT_NODE","initialValues","delete","isTextNode","TEXT_NODE","isElementNode","isNodeShadowHost","shadowRoot","isNodeShadowRoot","DOCUMENT_FRAGMENT_NODE","forEachChildNodes","nextSibling","getParentNode","NodePrivacyLevel","IGNORE","PRIVACY_ATTR_NAME","PRIVACY_ATTR_VALUE_HIDDEN","PRIVACY_CLASS_PREFIX","CENSORED_STRING_MARK","CENSORED_IMG_MARK","FORM_PRIVATE_TAG_NAMES","INPUT","OUTPUT","TEXTAREA","SELECT","OPTION","DATALIST","OPTGROUP","getNodePrivacyLevel","parentNodePrivacyLevel","nodePrivacyLevel","reducePrivacyLevel","getNodeSelfPrivacyLevel","childPrivacyLevel","inputElement","autocomplete","getPrivacySelector","nodeName","relAttribute","getLowerCaseAttribute","nameAttribute","propertyAttribute","hasAttribute","shouldIgnoreElement","shouldMaskNode","privacyLevel","isFormElement","censorText","getTextContent","textNode","ignoreWhiteSpace","parentTagName","trim","DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE","ACTION_NAME_PLACEHOLDER","getActionNameFromElement","userProgrammaticAttribute","defaultActionName","getActionNameFromElementProgrammatically","getActionNameFromElementForStrategies","priorityStrategies","fallbackStrategies","targetElement","programmaticAttribute","elementWithAttribute","supportsElementClosestResult","HTMLElement","supportsElementClosest","closest","truncate","normalizeWhitespace","supportsLabelPropertyResult","privacy","HTMLInputElement","supportsLabelProperty","labels","getTextualContent","label","ownerDocument","htmlFor","privacyEnabledActionName","labelledByAttribute","refElement","MAX_PARENTS_TO_CONSIDER","strategies","recursionCounter","strategies_1","name_1","strategy","trimmedName","isContentEditable","text_1","innerText","removeTextFromElements","query","element_1","textToReplace","supportScopeSelectorCache","STABLE_ATTRIBUTES","GLOBALLY_UNIQUE_SELECTOR_GETTERS","getStableAttributeSelector","isGeneratedValue","UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS","classList","classes","getClassList","getSelectorFromElement","isConnected","documentElement","contains","targetElementSelector","currentElement","globallyUniqueSelector","findSelector","isSelectorUniqueGlobally","isSelectorUniqueAmongSiblings","combineSelector","getPositionSelector","getAttributeSelector","STABLE_ATTRIBUTES_1","sibling","firstElementChild","elementIndex","nextElementSibling","selectorGetters","childSelector","selectorGetters_1","elementSelector","selectorGetter","currentElementSelector","isSiblingMatching","scopedSelector_1","supportScopeSelector","parent","MAX_DURATION_BETWEEN_CLICKS","MAX_DISTANCE_BETWEEN_CLICKS","createClickChain","firstClick","onFinalize","maxDurationBetweenClicksTimeoutId","bufferedClicks","appendClick","click","stopObservable","tryFinalize","dontAcceptMoreClick","every","isStopped","tryAppend","first","second","sqrt","pow","clientX","clientY","areEventsSimilar","isSelectionEmpty","selection","getSelection","isCollapsed","isValidPointerEvent","Element","isPrimary","MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE","computeFrustration","clicks","rageClick","getUserActivity","scroll","isRage","addFrustration","isDead","hasSelectionChanged","DEAD_CLICK_EXCLUDE_SELECTOR","hasPageActivity","CLICK_ACTION_MAX_DURATION","ACTION_CONTEXT_TIME_OUT_DELAY","trackClickActions","currentClickChain","history","stopClickChain","stopActionEventsListener","selectionEmptyAtPointerDown","clickContext","onPointerDown","onPointerUp","userActivity","listeners","localUserActivity_1","listenActionEvents","pointerDownEvent","clickActionBase","rect","getBoundingClientRect","position","left","computeClickActionBase","hadActivityOnPointerDown","pageActivityEndEvent","processPointerDown","appendClickToClickChain","newClick","stopWaitPageActivityEnd","discard","viewEndedSubscription","endClocks","stopSubscription","startClickAction","rageClick_1","finalizeClicks","activityEndTime","historyEntry","eventCountsSubscription","frustrationTypes","newActivityEndTime","frustrationType","domEvents","clickAction","counts","events","processAction","autoActionProperties","isAutoAction","loading_time","long_task","resource","actionEvent","in_foreground","wasInPageStateAt","trackRuntimeError","errorObservable","handleRuntimeError","rawError","stopInstrumentingOnError","errorObj","stopInstrumentingOnUnhandledRejection","instrumentUnhandledRejection","consoleObservablesByApi","initConsoleObservable","apis","consoleObservables","originalConsoleApi","params","param","formatConsoleParameters","firstErrorParam","buildConsoleLog","createConsoleObservable","RawReportType","intervention","deprecation","cspViolation","initReportObservable","effectiveDirective","subtype","buildStack","originalPolicy","sourceFile","lineNumber","columnNumber","originalReport","buildRawReportFromCspViolation","createCspViolationReportObservable","reportTypes","ReportingObserver","handleReports","reports","report","buildRawReportFromReport","types","createReportObservable","startErrorCollection","featureFlagContexts","consoleError","trackConsoleError","disposition","trackReportError","handling_stack","source_type","featureFlagContext","findFeatureFlagEvaluations","feature_flags","processError","doStartErrorCollection","alreadyMatchedEntries","matchRequestTiming","sameNameEntries","getEntriesByName","candidates","errorMargin","isBetween","runOnReadyState","expectedReadyState","INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD","getDocumentTraceId","traceIdMeta","traceTimeMeta","createDocumentTraceData","getDocumentTraceDataFromMeta","comment","childNodes","getTraceCommentFromNode","findTraceComment","getDocumentTraceDataFromComment","traceTime","rawTraceTime","COMMENT_NODE","isCommentNode","computeRelativePerformanceTiming","numberKey","timingElement","retrieveInitialDocumentResourceTiming","forcedAttributes","navigationEntry","relativePerformanceTiming","renderBlockingStatus","startResourceCollection","retrieveInitialDocumentResourceTimingImpl","matchingTiming","tracingInfo","hasBeenTraced","span_id","trace_id","rule_psr","getRulePsr","computeRequestTracingInfo","correspondingTimingOverrides","computePerformanceEntryMetrics","computeRequestDuration","resourceEvent","status_code","performanceEntry","requestInput","requestInit","processRequest","performanceResourceSubscription","processResourceEntry","computeEntryTracingInfo","statusCode","entryMetrics","responseStatus","render_blocking_status","FCP_MAXIMUM_DELAY","trackNavigationTimings","processEntry","loadEventEnd","isIncompleteNavigation","domComplete","domContentLoaded","domContentLoadedEventEnd","domInteractive","loadEvent","firstByte","processNavigationEntry","retrieveNavigationTiming","LCP_MAXIMUM_DELAY","trackInitialViewMetrics","setLoadEvent","scheduleViewUpdate","initialViewMetrics","stopNavigationTracking","navigationTimings","firstHidden","trackFirstHidden","stopFCPTracking","fcpEntry","trackFirstContentfulPaint","firstContentfulPaint","stopLCPTracking","firstInteractionTimestamp","stopEventListener","biggestLcpSize","unsubscribeLifeCycle","lcpEntry","findLast","lcpTargetSelector","targetSelector","trackLargestContentfulPaint","largestContentfulPaint","stopFIDTracking","firstInputEntry","firstInputDelay","firstInputTargetSelector","trackFirstInput","firstInput","trackCumulativeLayoutShift","viewStart","maxClsTarget","maxClsStartTime","maxClsValue","cumulatedValue","maxValue","isMaxValue","MAX_UPDATE_GAP","MAX_WINDOW_DURATION","slidingSessionWindow","hadRecentInput","getTargetFromSource","WeakRef","deref","interactionCountEstimate","minKnownInteractionId","maxKnownInteractionId","viewportObservable","getInteractionCount","interactionCount","MAX_INTERACTION_ENTRIES","MAX_INP_VALUE","trackInteractionToNextPaint","viewLoadingType","PerformanceEventTiming","getInteractionToNextPaint","setViewEnd","interactionToNextPaintTargetSelector","interactionToNextPaintStartTime","interactionId","max","previousInteractionCount","computeViewInteractionCount","getViewInteractionCount","stopViewInteractionCount","trackViewInteractionCount","viewEnd","longestInteractions","sortAndTrimLongestInteractions","interactionIndex","findIndex","interaction","minLongestInteraction","estimateP98Interaction","trackLongestInteractions","interactionToNextPaint","viewEndTime","newInteraction","getScrollX","scrollX","visual","visualViewport","pageLeft","offsetLeft","pageXOffset","getScrollY","scrollY","pageTop","offsetTop","pageYOffset","initViewportObservable","updateDimension","getViewportDimension","createViewportObservable","scale","innerWidth","innerHeight","THROTTLE_SCROLL_DURATION","trackScrollMetrics","scrollValues","throttleDuration","scrollTop","scrollHeight","scrollingElement","scrollDepth","computeScrollValues","ResizeObserver","throttledNotify_1","observerTarget_1","resizeObserver_1","eventListener_1","unobserve","createScrollValuesObservable","maxScrollDepth","maxScrollHeight","maxScrollHeightTime","shouldUpdate","maxDepth","maxDepthScrollTop","trackCommonViewMetrics","loadingType","commonViewMetrics","loadType","isWaitingForLoadEvent","isWaitingForActivityLoadingTime","loadingTimeCandidates","invokeCallbackIfAllCandidatesAreReceived","trackLoadingTime","newLoadingTime","loadingTime","stopLoadingTimeTracking","stopScrollMetricsTracking","newScrollMetrics","stopCLSTracking","cumulativeLayoutShift","stopINPTracking","getCommonViewMetrics","THROTTLE_VIEW_UPDATE_PERIOD","SESSION_KEEP_ALIVE_INTERVAL","KEEP_TRACKING_AFTER_VIEW_DELAY","trackViews","locationChangeObservable","areViewsTrackedAutomatically","locationChangeSubscription","activeViews","currentView","startNewView","viewOptions","newlyCreatedView","initialLocation","customTimings","documentVersion","sessionIsActive","viewCreatedEvent","triggerViewUpdate","cancelScheduleViewUpdate","stopCommonViewMetricsTracking","stopInitialViewMetricsTracking","trackViewEventCounts","stopEventCountsTracking","keepAliveIntervalId","currentEnd","isActive","looksLikeRelativeTime","sanitized","sanitizeTiming","updatedName","UPDATE_VIEW_NAME","newView","pageExitEvent","currentLocation","otherLocation","oldLocation","newLocation","hash","correspondingId","isHashAnAnchor","getPathFromHash","renewViewOnLocationChange","startViewCollection","recorderApi","replayStats","getReplayStats","pageStates","viewEvent","document_version","replay_stats","page_states","cumulative_layout_shift","cumulative_layout_shift_time","cumulative_layout_shift_target_selector","dom_complete","dom_content_loaded","_f","dom_interactive","_g","first_contentful_paint","first_input_delay","_h","first_input_time","_j","first_input_target_selector","_k","interaction_to_next_paint","_l","interaction_to_next_paint_time","_m","interaction_to_next_paint_target_selector","_o","is_active","largest_contentful_paint","_p","largest_contentful_paint_target_selector","_q","load_event","_r","loading_type","time_spent","max_depth","max_depth_scroll_top","max_scroll_height","max_scroll_height_time","replay_level","custom_timings","newObject","mapValues","processViewUpdate","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","stopCallbacks","startSessionManager","sessionContextHistory","buildSessionContext","isReplayForced","forcedReplay","trackActivity","expandSessionWhenVisible","visibilityCheckInterval","trackVisibility","trackResume","findSession","startRumSessionManager","rawTrackingType","hasValidRumSession","isTypeTracked","sessionEntity","setForcedReplay","rumSessionType","createBatch","encoder","flushController","upsertBuffer","flushSubscription","flushObservable","upsertMessages","isPageExit","sendOnExit","encoderResult","formatPayloadFromEncoder","pendingMessages","flush","addOrUpdate","serializedMessage","estimatedMessageBytesCount","hasMessageFor","removedMessage","messageBytesCount","notifyAfterRemoveMessage","notifyBeforeAddMessage","notifyAfterAddMessage","realMessageBytesCount","upsert","MAX_ONGOING_BYTES_COUNT","MAX_ONGOING_REQUESTS","MAX_QUEUE_BYTES_COUNT","MAX_BACKOFF_TIME","INITIAL_BACKOFF_TIME","sendWithRetryStrategy","sendStrategy","transportStatus","queuedPayloads","bandwidthMonitor","canHandle","onSuccess","retryQueuedPayloads","onFailure","enqueue","scheduleRetry","dequeue","currentBackoffTime","shouldRetryRequest","ongoingRequestCount","isFull","queueFullReported","previousQueue","newPayloadQueue","createHttpRequest","endpointBuilder","retryState","ongoingByteCount","sendStrategyForRetry","onResponse","canUseKeepAlive","isKeepAliveSupported","fetchUrl","keepalive","xhrUrl","sendXHR","fetchKeepAliveStrategy","canUseBeacon","sendBeacon","beaconUrl","hasReportedBeaconError","reportBeaconError","sendBeaconStrategy","createFlushController","durationLimitTimeoutId","messagesLimit","durationLimit","pageExitObservable","sessionExpireObservable","pageExitSubscription","sessionExpireSubscription","currentBytesCount","currentMessagesCount","flushReason","messagesCount","cancelDurationLimitTimeout","messageBytesCountDiff","startBatchWithReplica","primary","batchFactoryImp","primaryBatch","createBatchFromConfig","replicaBatch","endpoint","replicated","transformMessage","URL_CONTEXT_TIME_OUT_DELAY","createLocationChangeObservable","stopHistoryTracking","onHistoryChange","stopInstrumentingPushState","stopInstrumentingReplaceState","removeListener","trackHistory","onLocationChange","stopHashTracking","onHashChange","trackHash","FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY","currentPeriodMeasures","currentBatchMeasures","batchHasRumEvent","MEASURES_PERIOD_DURATION","sendCurrentPeriodMeasures","batchCount","initCurrentPeriodMeasures","updateMeasure","measure","sum","mergeMeasure","batchBytesCount","batchMessagesCount","globalContextBytes","userContextBytes","featureFlagBytes","initCurrentBatchMeasures","MAX_PAGE_STATE_ENTRIES","MAX_PAGE_STATE_ENTRIES_SELECTABLE","PAGE_STATE_CONTEXT_TIME_OUT_DELAY","startPageStateHistory","maxPageStateEntriesSelectable","currentPageState","pageStateEntryHistory","addPageState","getPageState","stopEventListeners","persisted","computePageState","nextPageState","eventStartTime","pageStateEntries","pageStateServerEntries","pageState","relativeStartTime","hasFocus","createCookieObservable","cookieName","detectCookieChangeStrategy","changeEvent","changed","deleted","listenToCookieStoreChange","watchCookieFallback","WATCH_COOKIE_INTERVAL_DELAY","previousCookieValue","watchCookieIntervalId","cookieValue","CI_VISIBILITY_TEST_ID_COOKIE_NAME","getSessionReplayUrl","errorType","sessionId","rumConfiguration","getSiteDefaultSubdomain","getDatadogSiteUrl","statsPerView","MAX_STATS_HISTORY","getSegmentsCount","getOrCreateReplayStats","segments_count","records_count","segments_total_raw_size","isFirst_1","_value","deleteOldestStats","serializedNodeIds","hasSerializedNode","getSerializedNodeId","getElementInputValue","URL_IN_CSS_REF","ABSOLUTE_URL","DATA_URI","switchToAbsoluteUrl","cssHref","matchingSubstring","singleQuote","urlWrappedInSingleQuotes","doubleQuote","urlWrappedInDoubleQuotes","urlNotWrappedInQuotes","quote","baseUrl","makeUrlAbsolute","TAG_NAME_REGEX","getValidTagName","processedTagName","censoredImageForSize","RecordType","FullSnapshot","IncrementalSnapshot","Meta","Focus","ViewEnd","VisualViewport","FrustrationRecord","NodeType","Document","DocumentType","Text","CDATA","DocumentFragment","IncrementalSource","Mutation","MouseMove","MouseInteraction","Scroll","ViewportResize","Input","TouchMove","MediaInteraction","StyleSheetRule","MouseInteractionType","MouseUp","MouseDown","Click","ContextMenu","DblClick","Blur","TouchStart","TouchEnd","MediaInteractionType","Play","Pause","serializeStyleSheets","cssStyleSheets","cssStyleSheet","rules","cssRules","cssRule","media","serializeAttribute","attributeValue","image","naturalWidth","naturalHeight","getCssRulesString","getCssRuleStringForSafari","getCssRuleString","rule","isCSSStyleRule","selectorText","isCSSImportRule","serializeNodeWithId","serializedNode","DOCUMENT_NODE","serializeChildNodes","adoptedStyleSheets","serializeDocumentNode","isShadowRoot","serializationContext","shadowRootsController","addShadowRoot","serializeDocumentFragmentNode","DOCUMENT_TYPE_NODE","documentType","publicId","systemId","isSVG","SVGElement","rr_width","rr_height","safeAttrs","formValue","optionElement","selected","stylesheet","styleSheets","_cssText","sheet","scrollLeft","checked","mediaElement","rr_mediaState","paused","elementsScrollPositions","rr_scrollLeft","rr_scrollTop","serializeAttributes","hasChildNodes","serializeElementNode","serializeTextNode","CDATA_SECTION_NODE","serializeNode","_nextId","serializedNodeWithId","serializeNodeId","setSerializedNodeId","childNode","serializedChildNode","serializeDocument","isTouchEvent","changedTouches","getEventTarget","composed","composedPath","convertMouseEventToLayoutCoordinates","normalized","layoutViewportX","layoutViewportY","visualViewportX","visualViewportY","isVisualViewportFactoredIn","getVisualViewport","assembleIncrementalSnapshot","MOUSE_MOVE_OBSERVER_THRESHOLD","trackMove","moveCb","coordinates","tryToComputeCoordinates","timeOffset","positions","updatePosition","cancelThrottle","isFinite","eventTypeToMouseInteraction","trackMouseInteraction","mouseInteractionCb","recordIds","record","getIdForEvent","SCROLL_OBSERVER_THRESHOLD","trackScroll","scrollCb","scrollPositions","VISUAL_VIEWPORT_OBSERVER_THRESHOLD","trackViewportResize","viewportResizeCb","viewportResizeSubscription","trackVisualViewportResize","visualViewportResizeCb","trackMediaInteraction","mediaInteractionCb","trackStyleSheet","styleSheetCb","checkStyleSheetAndCallback","ownerNode","instrumentationStoppers","CSSStyleSheet","adds","removes","instrumentGroupingCSSRuleClass","cls","parentStyleSheet","getPathToNestedCSSRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","stopper","currentRule","parentRule","index_1","trackFocus","focusCb","has_focus","trackFrustration","frustrationCb","frustrationSubscription","trackViewEnd","viewEndCb","viewEndSubscription","trackInput","inputCb","stopPropertySetterInstrumentation","lastInputStateMap","HTMLTextAreaElement","HTMLSelectElement","onElementChange","instrumentationStoppers_1","inputState","isChecked","cbWithDedup","lastInputState","MUTATION_PROCESS_MAX_DELAY","MUTATION_PROCESS_MIN_DELAY","createMutationBatch","processMutationBatch","cancelScheduledFlush","pendingMutations","throttledFlush","addMutations","opts","requestIdleCallback","cancelIdleCallback","id_1","trackMutation","mutationCallback","mutationBatch","nodePrivacyLevelCache","removedNodes","removedNode","traverseRemovedShadowDom","removeShadowRoot","filteredMutations","nodeAndAncestorsHaveSerializedNode","addedAndMovedNodes","mutations_1","sortedAddedAndMovedNodes","nodes","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","addedNodeMutations","sortedAddedAndMovedNodes_1","hasBeenSerialized","nextId","getNextSibling","parentId","removedNodeMutations","processChildListMutations","texts","textMutations","handledNodes","filteredMutations_1","oldValue","processCharacterDataMutations","attributeMutations","handledElements","handledAttributes","emittedMutations","filteredMutations_2","transformedValue","inputValue","emittedMutation","processAttributesMutations","processMutations","takeRecords","attributeOldValue","characterData","characterDataOldValue","shadowDomRemovedCallback","initShadowRootsController","controllerByShadowRoot","mutationTracker","inputTracker","scrollTracker","emit","emitAndComputeStats","scrollPositionsByElement","createElementsScrollPositions","stopFullSnapshots","flushMutations","fullSnapshotCallback","takeFullSnapshot","records","initialOffset","startFullSnapshots","initRecordIds","trackers","viewEndRecord","createSegment","creationReason","encodedBytesCount","metadata","creation_reason","has_full_snapshot","index_in_view","addRecord","prefix","additionalBytesCount","SEGMENT_DURATION_LIMIT","SEGMENT_BYTES_LIMIT","startSegmentCollection","httpRequest","getSegmentContext","nextSegmentCreationReason","unsubscribeViewCreated","flushSegment","unsubscribePageExited","segment","rawSegmentBytesCount","formData","metadataAndSegmentSizes","raw_segment_size","compressed_segment_size","byteLength","serializedMetadataAndSegmentSizes","buildReplayPayload","expirationTimeoutId","doStartSegmentCollection","computeSegmentContext","isBrowserSupported","createObjectURL","NodeList","getSessionReplayLink","isRecordingStarted","getErrorType","createDeflateEncoder","worker","streamId","compressedDataTrailer","compressedData","nextWriteActionId","pendingWriteActions","removeMessageListener","workerResponse","trailer","nextPendingAction","writeCallback","finishCallback","consumeResult","buffers","total","buffers_1","concatBuffers","sendResetIfNeeded","pendingWriteAction","INITIALIZATION_TIME_OUT_DELAY","createDeflateWorker","Worker","onInitializationFailure","createDeflateWorkerImpl","removeErrorListener_1","onError","removeMessageListener_1","initializationFailureCallbacks","onTimeout","doStartDeflateWorker","getDeflateWorkerStatus","baseMessage","worker_version","stream_id","startRecordingImpl","onRumStart","isRecording","startStrategy","stopStrategy","getSessionReplayLinkStrategy","cachedDeflateEncoder","force","deflateEncoder","stopRecording","getReplayStatsImpl","makeRecorderApi","replayRequest","startRecordBridge","segmentCollection","datadogRum","startRumImpl","customerDataTrackerManager","globalContextManager","userContextManager","buildCommonContext","CUSTOM_VITALS","rumPublicApi","stopDurationVital","preStartStrategy","createPostStartStrategy","sanitizedOptions","setTrackingConsent","setGlobalContext","getGlobalContext","setGlobalContextProperty","removeGlobalContextProperty","clearGlobalContext","getInitConfiguration","setUser","getUser","setUserProperty","sanitizedProperty","removeUserProperty","clearUser","startSessionReplayRecording","stopSessionReplayRecording","makeRumPublicApi","createEncoder","bridge_1","startRumTelemetry","currentContext","startFeatureFlagContexts","startRumSessionManagerStub","startRumEventBridge","batch_1","telemetryEventObservable","batch","startRumBatch","batchFlushObservable","startCustomerDataTelemetry","createDOMMutationObservable","viewContextHistory","buildViewContext","viewUpdate","startViewContexts","previousViewUrl","urlContextHistory","viewUrl","buildUrlContext","changeTime","startUrlContexts","startActionCollection","viewport","viewportDimension","startDisplayContext","cookieObservable","testExecutionId","Cypress","cookieObservableSubscription","test_execution_id","startCiVisibilityContext","startRumEventCollection","stopRumEventCollection","stopViewCollection","stopResourceCollection","startLongTaskCollection","stopPerformanceCollection","vitalCollection","internalContext","application_id","session_id","user_action","startInternalContext","isAuthorized","handlerType","logger","loggerHandler","getHandler","sanitizedHandlerType","STATUS_PRIORITIES","getLevel","StatusType","notice","critical","alert","emerg","HandlerType","http","silent","STATUSES","Logger","handleLogStrategy","level","loggerContext","logImplementation","messageContext","errorContext","sanitizedMessageContext","setHandler","setLevel","__decorate","createLoggerMethod","DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT","validateAndBuildForwardOption","allowedValues","removeDuplicates","doStartLogs","tryStartLogs","startLogsResult","forwardConsoleLogs","forwardReports","forwardErrorsToLogs","requestErrorResponseLengthLimit","sendLogsAfterSessionExpiration","validateAndBuildLogsConfiguration","handleLog","statusType","LOGS_STORAGE_KEY","startLogsSessionManager","rawSessionType","hasValidLoggerSession","computeTrackingType","logsSentBeforeRumInjectionTelemetryAdded","getRUMInternalContext","getInternalContextFromRumGlobal","DD_RUM_SYNTHETICS","DD_RUM","rumGlobal","LogStatusForApi","LogStatusForReport","startNetworkErrorCollection","xhrSubscription","handleResponse","fetchSubscription","onResponseDataAvailable","rawLogsEvent","format","isRejected","truncateResponseText","computeXhrResponseData","truncateResponseStream","computeFetchResponseText","computeFetchErrorText","startLoggerCollection","logsMessage","savedDate","loggerToConsoleApiName","displayInConsole","rawLogEventData","startLogsTelemetry","telemetrySubscription_1","telemetryBatch_1","telemetrySubscription_2","baseSerializedInitConfiguration","forward_errors_to_logs","forward_console_logs","forward_reports","use_pci_intake","send_logs_after_session_expiration","serializeLogsConfiguration","datadogLogs","startLogsImpl","customLoggers","createLogger","conf","getLogger","makeLogsPublicApi","startReportError","startLogsSessionManagerStub","stopLogsTelemetry","rawErrorObservable","stopRuntimeErrorTracking","rawErrorSubscription","startRuntimeErrorCollection","consoleSubscription","collectedData","startConsoleCollection","reportSubscription","getFileFromStackTraceString","startReportCollection","statusWithCustom","logRateLimiters","startLogsAssembly","serverLogsEvent","startLogsBridge","stopLogsBatch_1","startLogsBatch","trackedSession","convertColorToHex","val","color","tinycolor","getAlpha","toHex8String","toHexString","CORE_TYPOGRAPHY_STYLE_TOKEN_NAMES","CORE_TYPOGRAPHY_FONT_FAMILY","CORE_TYPOGRAPHY_FONT_FAMILY_FALLBACK","CORE_TYPOGRAPHY_FONT_SIZE","CORE_TYPOGRAPHY_FONT_SIZE_SCALE","CORE_TYPOGRAPHY_FONT_WEIGHT","CORE_TYPOGRAPHY_FOOTNOTE_FONT_SIZE","CORE_TYPOGRAPHY_LARGE_FONT_SIZE","CORE_TYPOGRAPHY_HEADINGS_FONT_FAMILY","CORE_TYPOGRAPHY_HEADINGS_FONT_FAMILY_FALLBACK","CORE_TYPOGRAPHY_HEADINGS_FONT_STYLE","CORE_TYPOGRAPHY_HEADINGS_FONT_WEIGHT","CORE_TYPOGRAPHY_HEADINGS_LEVEL1_FONT_SIZE","CORE_TYPOGRAPHY_HEADINGS_LEVEL2_FONT_SIZE","CORE_TYPOGRAPHY_HEADINGS_LEVEL3_FONT_SIZE","CORE_TYPOGRAPHY_HEADINGS_LEVEL4_FONT_SIZE","CORE_TYPOGRAPHY_HEADINGS_LEVEL5_FONT_SIZE","CORE_TYPOGRAPHY_HEADINGS_LINE_HEIGHT","CORE_TYPOGRAPHY_LINE_HEIGHT","CORE_TYPOGRAPHY_NUMBER_FONT_WEIGHT","CORE_TYPOGRAPHY_NUMBER_MEDIUM_FONT_SIZE","CORE_TYPOGRAPHY_NUMBER_SMALL_FONT_SIZE","CORE_TYPOGRAPHY_SUB_TEXT_FONT_SIZE","CORE_TYPOGRAPHY_MOBILE_STYLE_TOKEN_NAMES","CORE_TYPOGRAPHY_FOOTNOTE_MOBILE_FONT_SIZE","CORE_TYPOGRAPHY_HEADINGS_LEVEL1_MOBILE_FONT_SIZE","CORE_TYPOGRAPHY_HEADINGS_LEVEL2_MOBILE_FONT_SIZE","CORE_TYPOGRAPHY_HEADINGS_LEVEL3_MOBILE_FONT_SIZE","CORE_TYPOGRAPHY_HEADINGS_LEVEL4_MOBILE_FONT_SIZE","CORE_TYPOGRAPHY_HEADINGS_LEVEL5_MOBILE_FONT_SIZE","CORE_TYPOGRAPHY_LARGE_MOBILE_FONT_SIZE","CORE_TYPOGRAPHY_MOBILE_FONT_SIZE_SCALE","CORE_TYPOGRAPHY_NUMBER_MEDIUM_MOBILE_FONT_SIZE","CORE_TYPOGRAPHY_NUMBER_SMALL_MOBILE_FONT_SIZE","CORE_TYPOGRAPHY_SUB_TEXT_MOBILE_FONT_SIZE","getThemeAPIKeyFromName","formatThemeDataForWeb","themeDataClone","themeKeys","colorKeys","themeKey","colorKey","formatThemeColorValuesForWeb","borderWidthKeys","borderWidthKey","formatBorderWidthsForWeb","fontSizeKeys","tokenName","fontSizeKey","formatFontSizeValsForWeb","borderRadiusKeys","borderRadiusKey","isPercent","formatThemeBorderRadiusValsForWeb","brandingTokensStr","cachedBrandingConfig","BUILT_IN_FONTS","FONT_PROPS","FONT_ATTRIBUTES_MAP","getBrandingTokens","themeFile","loadBranding","brandingTokens","fontsToLoad","cssVariables","sanatizedThemeData","getThemeCSSVarFromAPIKey","generateCSSVars","fonts","getFontConfig","brandingConfig","getOwnPropertyNames","fontNameProp","fontName","fontTypeProps","fontRegular","fontItalics","fontBold","fontBoldItalics","prop","fontCSSVarName","replaceAll","paths","cssVarsName","addFontCSSVars","cssVariableParam","fontConfig","lastIndexOf","fontConfigs","fontFace","FontFace","weight","ready","loadFonts","updateCachedBranding","_config$branding","_cachedBrandingConfig","_cachedBrandingConfig2","getBrandingTokensLastModified","cachedLastModified","lastModified","currentLastModified","currentIsInDarkMode","cachedIsInDarkMode","brandingTokensResponse","tokenHeaders","tokens","setupBranding","LOG_LEVEL","DEBUG","INFO","WARN","ERROR","formatRequest","errorseverity","errororiginatorid","errorbody","errorcode","values","sendLogToGateway","BlueSkyApp","initializeApp","_appConfig","_appConfig$featureCon","getAppConfig","bootstrapFeatureDef","bootstrap","loadConfigFromBootstrap","setupDarkMode","promises","all","layout","baseInfo","datadog","environment","getBaseInfo","setupDatadog","registerGlobalLogger","blueSkyLogger","darkModeEnabled","matchMedia","BrowserRouter","ForterFraudDetection","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","renderApp","setupCachedBranding","reportWebVitals","navigate","navigateWithinParent","searchParams","setSearchParams","classNames","exports","Hyperlink","shouldOpenInNewWindow","RouteLink","shouldReplaceRoute","routeState","routeTarget","defaultPrevented","AuthorizedRoute","redirectTo","hasOwn","argType","inner","reactIs","require","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","getOwnPropertySymbols","objectPrototype","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","propIsEnumerable","propertyIsEnumerable","test1","test2","test3","letter","shouldUseNative","symbols","toObject","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","bigint","bool","number","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","aa","ca","da","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Reflect","construct","Pa","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","eb","fb","defaultSelected","gb","hb","ib","jb","kb","lb","mb","nb","namespaceURI","valueOf","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","qb","rb","sb","setProperty","tb","menuitem","area","br","col","embed","hr","img","keygen","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","Wb","memoizedState","dehydrated","Xb","Zb","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","returnValue","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","ud","vd","Ad","screenX","screenY","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","MozPrintableKey","Nd","Od","Alt","Control","Shift","Pd","Qd","repeat","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","Vd","touches","targetTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","ce","de","ee","fe","ge","he","ie","le","datetime","month","password","range","tel","week","me","ne","oe","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","HTMLIFrameElement","contentWindow","Ne","contentEditable","Oe","focusedElem","selectionRange","selectionStart","selectionEnd","defaultView","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","of","pf","qf","rf","sf","J","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","queueMicrotask","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","eventTime","lane","dh","K","eh","fh","gh","hh","ih","jh","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","isPureReactComponent","ph","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","sh","_owner","_stringRef","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","qj","rj","tj","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onclick","createElementNS","autoFocus","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","Yj","Zj","ak","onCommitFiberUnmount","bk","ck","dk","ek","fk","gk","hk","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","ceil","nk","pk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","fl","gl","hl","il","jl","zj","$k","ll","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","supportsFiber","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","hasElementType","hasMap","hasSet","hasArrayBuffer","ArrayBuffer","isView","equal","it","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","typeOf","basename","historyRef","createBrowserHistory","listen","Router","navigationType","HashRouter","createHashHistory","HistoryRouter","_ref3","Link","forwardRef","_ref4","reloadDocument","_excluded","useHref","internalOnClick","useLinkClickHandler","NavLink","_ref5","ariaCurrentProp","caseSensitive","classNameProp","styleProp","_excluded2","useResolvedPath","locationPathname","toPathname","ariaCurrent","replaceProp","useNavigate","isModifiedEvent","createPath","useSearchParams","defaultInit","defaultSearchParamsRef","createSearchParams","getAll","nextInit","navigateOptions","memo","NavigationContext","createContext","LocationContext","RouteContext","outlet","cond","generatePath","matchRoutes","routes","locationArg","stripBasename","parsePath","branches","flattenRoutes","score","siblings","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","parentsMeta","relativePath","joinPaths","computeScore","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","segments","initialScore","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","pattern","matcher","paramNames","regexpSource","paramName","compilePath","captureGroups","splatValue","safelyDecodeURIComponent","resolvePath","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolveTo","toArg","routePathnames","routePathnameIndex","toSegments","nextChar","useInRouterContext","joinedPathname","getToPathname","endsWithSlash","createHref","useNavigationType","useMatch","routePathnamesJson","activeRef","go","OutletContext","useOutletContext","useOutlet","useParams","routeMatch","useRoutes","parentMatches","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","_renderMatches","reduceRight","MemoryRouter","initialEntries","initialIndex","createMemoryHistory","Outlet","basenameProp","locationProp","Action","Pop","static","staticProp","navigationContext","trailingPathname","createRoutesFromChildren","Children","isValidElement","renderMatches","React__default","_defineProperty","reducePropsToState","handleStateChangeOnClient","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","recordedState","getDisplayName","__self","__source","jsx","jsxs","forceUpdate","_status","_result","toArray","only","cloneElement","_currentValue2","_threadCount","_defaultValue","_globalName","createFactory","createRef","startTransition","unstable_act","sortIndex","setImmediate","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","trimLeft","trimRight","tinyCounter","mathRound","mathMin","mathMax","mathRandom","rgb","named","names","matchers","rgba","hsl","hsla","hsv","hsva","hex8","parseIntFromHex","convertHexToDecimal","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","bound01","convertToPercentage","hsvToRgb","hue2rgb","hslToRgb","boundAlpha","inputToRGB","_originalInput","_roundA","_format","_gradientType","gradientType","_ok","_tc_id","rgbToHsl","rgbToHsv","rgbToHex","allow3Char","hex","pad2","rgbaToArgbHex","convertDecimalToHex","desaturate","amount","toHsl","clamp01","saturate","greyscale","lighten","brighten","toRgb","darken","spin","hue","complement","triad","tetrad","splitcomplement","analogous","results","slices","part","ret","monochromatic","toHsv","modification","isDark","getBrightness","isLight","getOriginalInput","getFormat","getLuminance","RsRGB","GsRGB","BsRGB","setAlpha","toHsvString","toHslString","toHex","toHex8","allow4Char","rgbaToHex","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","_applyModification","_applyCombination","fromRatio","newColor","equals","color1","color2","mix","rgb1","rgb2","readability","c1","c2","isReadable","wcag2","wcag2Parms","out","parms","validateWCAG2Parms","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","flipped","flip","parseFloat","isOnePointZero","processPercent","isPercentage","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","define","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","chunkId","miniCssF","inProgress","dataWebpackPrefix","needAttach","scripts","nc","onScriptComplete","doneFns","toStringTag","initPromises","initTokens","initScope","initToken","uniqueName","register","factory","eager","versions","activeVersion","loaded","scriptUrl","importScripts","parseVersion","versionLt","rangeToString","satisfy","exists","eagerOnly","filtered","findSingletonVersionKey","getInvalidSingletonVersionMessage","requiredVersion","fail","scopeName","useFallback","failAsNotExist","loadSingletonVersion","installedModules","moduleToHandlerMapping","chunkMapping","startedInstallModules","consumes","onFactory","installedChunks","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal"],"sourceRoot":""}