File: //proc/self/root/usr/local/CyberCP/public/imunifyav/brought_by_package_manager/nav-root/main.js.map
{"version":3,"file":"main.js","mappings":"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AAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAKzvD6O,EAAOC,QAAUA,EAAQphE,QACzBmhE,EAAOC,QAAPD,QAAyBC,EAAQ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","sources":["webpack/runtime/create fake namespace object","webpack/runtime/load script","webpack/runtime/trusted types policy","./src/app/core/app-names.enum.ts","./src/app/core/misc.ts","./api/misc.ts","./src/app/utils/rxjs-zoned.ts","./src/app/core/app.service.ts","./node_modules/tslib/tslib.es6.js","./node_modules/jwt-decode/build/jwt-decode.esm.js","./src/app/utils/panel.ts","./api/server.ts","./src/app/interceptors/utils.ts","./api/auth.ts","./api/emails-settings.ts","./api/emails.ts","./src/app/services/auth.ts","./src/app/services/auth-state.ts","./api/license.ts","./api/eula.ts","./src/app/services/license-state.ts","./api/reputation.ts","./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","./node_modules/d3-format/src/formatDecimal.js","./node_modules/d3-format/src/formatSpecifier.js","./node_modules/d3-format/src/formatPrefixAuto.js","./node_modules/d3-format/src/formatRounded.js","./node_modules/d3-format/src/formatTypes.js","./node_modules/d3-format/src/identity.js","./node_modules/d3-format/src/locale.js","./node_modules/d3-format/src/defaultLocale.js","./node_modules/d3-format/src/formatGroup.js","./node_modules/d3-format/src/formatNumerals.js","./node_modules/d3-format/src/formatTrim.js","./node_modules/d3-format/src/exponent.js","./src/app/utils/helper.ts","./api/stubs/misc.ts","./api/blocked-rules.ts","./api/incidents.ts","./api/lists.ts","./node_modules/@sentry/core/build/esm/constants.js","./node_modules/@sentry/core/build/esm/utils-hoist/version.js","./node_modules/@sentry/core/build/esm/utils-hoist/worldwide.js","./node_modules/@sentry/core/build/esm/carrier.js","./node_modules/@sentry/core/build/esm/utils-hoist/is.js","./node_modules/@sentry/core/build/esm/utils-hoist/browser.js","./node_modules/@sentry/core/build/esm/utils-hoist/debug-build.js","./node_modules/@sentry/core/build/esm/utils-hoist/logger.js","./node_modules/@sentry/core/build/esm/utils-hoist/string.js","./node_modules/@sentry/core/build/esm/utils-hoist/object.js","./node_modules/@sentry/core/build/esm/utils-hoist/time.js","./node_modules/@sentry/core/build/esm/utils-hoist/misc.js","./node_modules/@sentry/core/build/esm/session.js","./node_modules/@sentry/core/build/esm/utils-hoist/propagationContext.js","./node_modules/@sentry/core/build/esm/utils/merge.js","./node_modules/@sentry/core/build/esm/utils/spanOnScope.js","./node_modules/@sentry/core/build/esm/scope.js","./node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js","./node_modules/@sentry/core/build/esm/defaultScopes.js","./node_modules/@sentry/core/build/esm/asyncContext/index.js","./node_modules/@sentry/core/build/esm/currentScopes.js","./node_modules/@sentry/core/build/esm/debug-build.js","./node_modules/@sentry/core/build/esm/utils-hoist/syncpromise.js","./node_modules/@sentry/core/build/esm/eventProcessors.js","./node_modules/@sentry/core/build/esm/utils-hoist/debug-ids.js","./node_modules/@sentry/core/build/esm/utils-hoist/stacktrace.js","./node_modules/@sentry/core/build/esm/utils-hoist/normalize.js","./node_modules/@sentry/core/build/esm/utils-hoist/memo.js","./node_modules/@sentry/core/build/esm/semanticAttributes.js","./node_modules/@sentry/core/build/esm/utils-hoist/baggage.js","./node_modules/@sentry/core/build/esm/metrics/metric-summary.js","./node_modules/@sentry/core/build/esm/utils/spanUtils.js","./node_modules/@sentry/core/build/esm/tracing/spanstatus.js","./node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js","./node_modules/@sentry/core/build/esm/utils/hasTracingEnabled.js","./node_modules/@sentry/core/build/esm/utils/applyScopeDataToEvent.js","./node_modules/@sentry/core/build/esm/utils/prepareEvent.js","./node_modules/@sentry/core/build/esm/exports.js","./node_modules/@ngx-translate/core/fesm2020/ngx-translate-core.mjs","./src/app/utils/translate/translate.service.ts","./src/app/services/country.ts","./api/stubs/dashboard.ts","./api/backup-systems.ts","./api/stubs/backup-systems.ts","./api/stubs/emails.ts","./api/stubs/blocked-ports.ts","./api/stubs/blocked-rules.ts","./api/features.ts","./api/stubs/features.ts","./api/features-management.ts","./api/stubs/features-management.ts","./api/malware.ts","./api/malicious.ts","./api/stubs/malicious.ts","./api/stubs/history.ts","./api/stubs/lists.ts","./api/stubs/ignore-list.ts","./api/stubs/installation.ts","./api/user-list.ts","./api/stubs/malware.ts","./api/permissions.ts","./api/stubs/permissions.ts","./api/proactive-defense.ts","./api/stubs/proactive-defense.ts","./api/stubs/reputation.ts","./api/notification-settings.ts","./src/app/utils/validator/validators.ts","./src/app/utils/config/malware-config.ts","./api/settings.ts","./api/stubs/settings.ts","./api/stubs/user-list.ts","./api/vulnerabilities.ts","./api/stubs/vulnerabilities.ts","./src/app/utils/xhr/mock-provider.ts","./src/app/services/notifications.ts","./src/app/utils/xhr/error-handler.ts","./src/app/utils/xhr/notificator.ts","./src/app/utils/xhr/xhr.ts","./src/app/services/reputation.ts","./api/package-versions.ts","./src/app/utils/cache.ts","./src/app/services/settings.ts","./src/app/services/user-features-status.ts","./src/app/services/requests-state.ts","./src/app/core/shared.ts","./src/app/services/my-imunify-state.ts","./src/app/components/lists/firewall-state.service.ts","./src/app/utils/translate/TranslateHttpLoader.ts","./src/app/utils/translate/translate.module.ts","./src/app/core/window.ts","./node_modules/@sentry/core/build/esm/utils-hoist/instrument/handlers.js","./node_modules/@sentry-internal/browser-utils/build/esm/types.js","./node_modules/@sentry-internal/browser-utils/build/esm/instrument/dom.js","./node_modules/@sentry-internal/browser-utils/build/esm/instrument/xhr.js","./node_modules/@sentry/core/build/esm/utils-hoist/vendor/supportsHistory.js","./node_modules/@sentry-internal/browser-utils/build/esm/instrument/history.js","./node_modules/@sentry/core/build/esm/utils-hoist/instrument/console.js","./node_modules/@sentry/core/build/esm/utils-hoist/supports.js","./node_modules/@sentry/core/build/esm/utils-hoist/instrument/fetch.js","./node_modules/@sentry/core/build/esm/integration.js","./node_modules/@sentry/core/build/esm/breadcrumbs.js","./node_modules/@sentry/core/build/esm/utils-hoist/severity.js","./node_modules/@sentry/core/build/esm/utils-hoist/breadcrumb-log-level.js","./node_modules/@sentry/core/build/esm/utils-hoist/url.js","./node_modules/@sentry/browser/build/npm/esm/debug-build.js","./node_modules/@sentry/browser/build/npm/esm/helpers.js","./node_modules/@sentry/browser/build/npm/esm/integrations/breadcrumbs.js","./node_modules/@sentry/core/build/esm/utils-hoist/instrument/globalError.js","./node_modules/@sentry/core/build/esm/utils-hoist/instrument/globalUnhandledRejection.js","./node_modules/@sentry/browser/build/npm/esm/eventbuilder.js","./node_modules/@sentry/browser/build/npm/esm/integrations/globalhandlers.js","./node_modules/@sentry/core/build/esm/utils-hoist/aggregate-errors.js","./node_modules/@sentry/browser/build/npm/esm/integrations/linkederrors.js","./node_modules/@sentry/browser/build/npm/esm/integrations/httpcontext.js","./node_modules/@sentry/browser/build/npm/esm/integrations/browsersession.js","./node_modules/@sentry/core/build/esm/integrations/inboundfilters.js","./node_modules/@sentry/core/build/esm/integrations/functiontostring.js","./node_modules/@sentry/core/build/esm/integrations/dedupe.js","./node_modules/@sentry/core/build/esm/sdk.js","./node_modules/@sentry/core/build/esm/api.js","./node_modules/@sentry/core/build/esm/utils-hoist/dsn.js","./node_modules/@sentry/core/build/esm/utils-hoist/envelope.js","./node_modules/@sentry/core/build/esm/envelope.js","./node_modules/@sentry/core/build/esm/utils-hoist/error.js","./node_modules/@sentry/core/build/esm/baseclient.js","./node_modules/@sentry/core/build/esm/utils/parseSampleRate.js","./node_modules/@sentry/core/build/esm/utils-hoist/clientreport.js","./node_modules/@sentry/core/build/esm/utils/sdkMetadata.js","./node_modules/@sentry/browser/build/npm/esm/client.js","./node_modules/@sentry/core/build/esm/utils-hoist/env.js","./node_modules/@sentry/browser/build/npm/esm/userfeedback.js","./node_modules/@sentry/browser/build/npm/esm/integrations/browserapierrors.js","./node_modules/@sentry/browser/build/npm/esm/stack-parsers.js","./node_modules/@sentry-internal/browser-utils/build/esm/debug-build.js","./node_modules/@sentry-internal/browser-utils/build/esm/getNativeImplementation.js","./node_modules/@sentry/core/build/esm/utils-hoist/promisebuffer.js","./node_modules/@sentry/core/build/esm/utils-hoist/ratelimit.js","./node_modules/@sentry/core/build/esm/transports/base.js","./node_modules/@sentry/browser/build/npm/esm/transports/fetch.js","./node_modules/@sentry/browser/build/npm/esm/sdk.js","./node_modules/@sentry/angular/fesm2020/sentry-angular.mjs","./src/app/errors.ts","./src/app/core/config-ref.ts","./src/app/services/sentry.ts","./src/app/utils/overlay-container.ts","./src/app/interceptors/url.interceptor.ts","./src/app/interceptors/json-header.interceptor.ts","./src/app/components/no-content/no-content.module.ts","./src/app/interceptors/sentry.interceptor.ts","./api/installation.ts","./src/app/components/installation/installation-backend.service.ts","./src/app/interceptors/imunify-status.interceptor.ts","./src/app/utils/validator/form-control.ts","./src/app/utils/validator/form-group.ts","./src/app/utils/validator/form-builder.ts","./src/app/utils/config/config.ts","./src/app/utils/configs-equal.ts","./src/app/services/license.ts","./src/app/components/nav-root/nav-root.service.ts","./src/app/components/nav-root/navbar-items.enum.ts","./src/app/utils/allowed-items.utils.ts","./src/app/components/lists/firewall.service.ts","./src/app/services/emails.ts","./src/app/components/eula/eula.service.ts","./src/app/utils/modals/entry.ts","./src/app/utils/modals/content/content.component.html","./src/app/utils/modals/content/content.component.ts","./src/app/utils/modals/items/items.component.ts","./src/app/utils/modals/confirm/confirm.component.html","./src/app/utils/modals/confirm/confirm.component.ts","./api/file.ts","./src/app/services/file.ts","./src/app/utils/modals/modal.service.ts","./src/app/services/permissions.ts","./api/myimunify.ts","./node_modules/ts-md5/dist/esm/md5.js","./src/app/services/cl-analytics.ts","./src/app/services/my-imunify.ts","./src/app/utils/modals/payment-success/payment-success.component.ts","./src/app/utils/modals/payment-success/payment-success.component.html","./src/app/utils/modals/protection-benefits/protection-benefits.component.html","./src/app/utils/modals/protection-benefits/protection-benefits.component.ts","./src/app/services/my-imunify-promo-dialog/my-imunify-promo-dialog.service.ts","./src/app/components/nav-root/nav-root.component.html","./src/app/utils/call-once.ts","./src/app/components/nav-root/nav-root.component.ts","./src/app/utils/modals/temp-dialog-template-wrapper.directive.ts","./src/app/utils/table/template.directive.ts","./src/app/utils/modals/modal-details/modal-details.component.html","./src/app/utils/modals/modal-details/modal-details.component.ts","./src/app/utils/modals/modal.module.ts","./src/app/utils/validator/error.pipe.ts","./src/app/utils/validator/error.component/error.component.ts","./src/app/utils/validator/extend-form-control-name.directive.ts","./src/app/utils/checkbox-group.directive.ts","./src/app/utils/datepicker/datepicker.component.ts","./src/app/utils/datepicker/datepicker.component.html","./src/app/utils/comma-separated-input/comma-separated-input.directive.ts","./src/app/utils/validator/extend-form-group.directive.ts","./src/app/utils/validator/validation.module.ts","./src/app/components/news/news-items/news-item.directive.ts","./src/app/components/news/news-notifications/news-notifications.component.ts","./src/app/utils/navigation/package-versions/package-versions.component.html","./src/app/utils/navigation/package-versions/package-versions.component.ts","./src/app/utils/navigation/navigation.component.html","./src/app/utils/navigation/navigation.component.ts","./src/app/components/news/news-overlay/news-overlay.component.ts","./api/news.ts","./src/app/components/news/news.service.ts","./src/app/utils/comma-separated-input/comma-separated-input.module.ts","./api/admin-contacts.ts","./src/app/services/admin-contacts.ts","./src/app/components/news/news.module.ts","./src/app/components/menu-profile/menu-profile.module.ts","./src/app/utils/navigation/navigation.module.ts","./src/app/components/notification/notifications.module.ts","./src/app/interceptors/license.interceptor.ts","./src/app/services/malicious.ts","./src/app/interceptors/malicious-count.interceptor.ts","./src/app/utils/config/user-config.ts","./api/history.ts","./src/app/services/history.ts","./src/app/core/zoned-hash-location-strategy.ts","./src/app/core/nav-root-routing.module.ts","./api/auth-cloud.ts","./src/app/services/auth-cloud.ts","./src/app/directives/upgrade-button/upgrade-button.service.ts","./src/app/directives/directives.module.ts","./src/app/utils/button/button.module.ts","./src/app/utils/table/template.module.ts","./src/app/components/eula/eula.interceptor.ts","./src/app/services/my-imunify-promo-dialog/my-imunify-promo-dialog.module.ts","./src/app/utils/datepicker/datepicker.module.ts","./src/app/components/installation/installation.service.ts","./src/app/directives/upgrade-button/upgrade-button.directive.ts","./src/app/components/news/news-items/news-license/news-license.component.ts","./src/app/components/news/news-items/news-message/news-message.component.ts","./src/app/components/news/news-items/news-admin-contacts/admin-contacts-history.service.ts","./src/app/components/news/admin-contacts-confirm-modal/admin-contacts-confirm-modal.component.ts","./src/app/components/news/admin-contacts-request-modal/admin-contacts-request-modal.component.html","./src/app/components/news/admin-contacts-request-modal/admin-contacts-request-modal.component.ts","./src/app/components/news/news-items/news-admin-contacts/admin-contacts-opener.service.ts","./src/app/components/news/news-items/news-admin-contacts/admin-contacts-opener-initial.service.ts","./src/app/components/news/news-items/news-admin-contacts/admin-contacts-opener-sequential.service.ts","./src/app/components/news/news-items/news-admin-contacts/admin-contacts-opener-never.service.ts","./src/app/components/news/news-items/news-admin-contacts/news-admin-contacts.constants.ts","./src/app/components/news/news-items/news-admin-contacts/admin-contacts-opener-periodical.service.ts","./src/app/components/news/news-items/news-admin-contacts/news-admin-contacts.component.ts","./src/app/components/news/news-component/news.component.ts","./src/app/components/menu-profile/menu-profile.component.html","./src/app/components/menu-profile/menu-profile.component.ts","./src/app/utils/button/button.component.ts","./src/app/components/notification/notification.component.html","./src/app/components/notification/notification.component.ts","./src/app/components/notification/notifications.component.ts","./src/app/utils/loader/decorators.ts","./src/app/core/nav-root.module.ts","./src/common.single-spa.ts","./src/nav-root.single-spa.ts","./node_modules/array-buffer-byte-length/index.js","./node_modules/call-bind-apply-helpers/actualApply.js","./node_modules/call-bind-apply-helpers/applyBind.js","./node_modules/call-bind-apply-helpers/functionApply.js","./node_modules/call-bind-apply-helpers/functionCall.js","./node_modules/call-bind-apply-helpers/index.js","./node_modules/call-bind-apply-helpers/reflectApply.js","./node_modules/call-bind/callBound.js","./node_modules/call-bind/index.js","./node_modules/call-bound/index.js","./node_modules/css-loader/dist/runtime/api.js","./node_modules/css-loader/dist/runtime/sourceMaps.js","./node_modules/dayjs/dayjs.min.js","./node_modules/dayjs/plugin/duration.js","./node_modules/dayjs/plugin/utc.js","./node_modules/deep-equal/index.js","./node_modules/define-data-property/index.js","./node_modules/define-properties/index.js","./node_modules/dunder-proto/get.js","./node_modules/es-define-property/index.js","./node_modules/es-errors/eval.js","./node_modules/es-errors/index.js","./node_modules/es-errors/range.js","./node_modules/es-errors/ref.js","./node_modules/es-errors/syntax.js","./node_modules/es-errors/type.js","./node_modules/es-errors/uri.js","./node_modules/es-object-atoms/index.js","./node_modules/for-each/index.js","./node_modules/function-bind/implementation.js","./node_modules/function-bind/index.js","./node_modules/functions-have-names/index.js","./node_modules/get-intrinsic/index.js","./node_modules/get-proto/Object.getPrototypeOf.js","./node_modules/get-proto/Reflect.getPrototypeOf.js","./node_modules/get-proto/index.js","./node_modules/gopd/gOPD.js","./node_modules/gopd/index.js","./node_modules/has-bigints/index.js","./node_modules/has-property-descriptors/index.js","./node_modules/has-symbols/index.js","./node_modules/has-symbols/shams.js","./node_modules/has-tostringtag/shams.js","./node_modules/hasown/index.js","./node_modules/internal-slot/index.js","./node_modules/is-arguments/index.js","./node_modules/is-array-buffer/index.js","./node_modules/is-bigint/index.js","./node_modules/is-boolean-object/index.js","./node_modules/is-callable/index.js","./node_modules/is-date-object/index.js","./node_modules/is-map/index.js","./node_modules/is-number-object/index.js","./node_modules/is-regex/index.js","./node_modules/is-set/index.js","./node_modules/is-shared-array-buffer/index.js","./node_modules/is-string/index.js","./node_modules/is-symbol/index.js","./node_modules/is-weakmap/index.js","./node_modules/is-weakset/index.js","./node_modules/isarray/index.js","./node_modules/math-intrinsics/abs.js","./node_modules/math-intrinsics/floor.js","./node_modules/math-intrinsics/isNaN.js","./node_modules/math-intrinsics/max.js","./node_modules/math-intrinsics/min.js","./node_modules/math-intrinsics/pow.js","./node_modules/math-intrinsics/round.js","./node_modules/math-intrinsics/sign.js","./node_modules/object-inspect/index.js","./node_modules/object-is/implementation.js","./node_modules/object-is/index.js","./node_modules/object-is/polyfill.js","./node_modules/object-is/shim.js","./node_modules/object-keys/implementation.js","./node_modules/object-keys/index.js","./node_modules/object-keys/isArguments.js","./node_modules/object.assign/implementation.js","./node_modules/object.assign/index.js","./node_modules/object.assign/polyfill.js","./node_modules/object.assign/shim.js","./node_modules/possible-typed-array-names/index.js","./node_modules/regexp.prototype.flags/implementation.js","./node_modules/regexp.prototype.flags/index.js","./node_modules/regexp.prototype.flags/polyfill.js","./node_modules/regexp.prototype.flags/shim.js","./node_modules/safe-regex-test/index.js","./node_modules/set-function-length/index.js","./node_modules/set-function-name/index.js","./node_modules/side-channel-list/index.js","./node_modules/side-channel-map/index.js","./node_modules/side-channel-weakmap/index.js","./node_modules/side-channel/index.js","./node_modules/stop-iteration-iterator/index.js","./node_modules/systemjs-webpack-interop/public-path.js","./node_modules/validator/index.js","./node_modules/validator/lib/alpha.js","./node_modules/validator/lib/blacklist.js","./node_modules/validator/lib/contains.js","./node_modules/validator/lib/equals.js","./node_modules/validator/lib/escape.js","./node_modules/validator/lib/isAbaRouting.js","./node_modules/validator/lib/isAfter.js","./node_modules/validator/lib/isAlpha.js","./node_modules/validator/lib/isAlphanumeric.js","./node_modules/validator/lib/isAscii.js","./node_modules/validator/lib/isBIC.js","./node_modules/validator/lib/isBase32.js","./node_modules/validator/lib/isBase58.js","./node_modules/validator/lib/isBase64.js","./node_modules/validator/lib/isBefore.js","./node_modules/validator/lib/isBoolean.js","./node_modules/validator/lib/isBtcAddress.js","./node_modules/validator/lib/isByteLength.js","./node_modules/validator/lib/isCreditCard.js","./node_modules/validator/lib/isCurrency.js","./node_modules/validator/lib/isDataURI.js","./node_modules/validator/lib/isDate.js","./node_modules/validator/lib/isDecimal.js","./node_modules/validator/lib/isDivisibleBy.js","./node_modules/validator/lib/isEAN.js","./node_modules/validator/lib/isEmail.js","./node_modules/validator/lib/isEmpty.js","./node_modules/validator/lib/isEthereumAddress.js","./node_modules/validator/lib/isFQDN.js","./node_modules/validator/lib/isFloat.js","./node_modules/validator/lib/isFullWidth.js","./node_modules/validator/lib/isHSL.js","./node_modules/validator/lib/isHalfWidth.js","./node_modules/validator/lib/isHash.js","./node_modules/validator/lib/isHexColor.js","./node_modules/validator/lib/isHexadecimal.js","./node_modules/validator/lib/isIBAN.js","./node_modules/validator/lib/isIMEI.js","./node_modules/validator/lib/isIP.js","./node_modules/validator/lib/isIPRange.js","./node_modules/validator/lib/isISBN.js","./node_modules/validator/lib/isISIN.js","./node_modules/validator/lib/isISO15924.js","./node_modules/validator/lib/isISO31661Alpha2.js","./node_modules/validator/lib/isISO31661Alpha3.js","./node_modules/validator/lib/isISO31661Numeric.js","./node_modules/validator/lib/isISO4217.js","./node_modules/validator/lib/isISO6346.js","./node_modules/validator/lib/isISO6391.js","./node_modules/validator/lib/isISO8601.js","./node_modules/validator/lib/isISRC.js","./node_modules/validator/lib/isISSN.js","./node_modules/validator/lib/isIdentityCard.js","./node_modules/validator/lib/isIn.js","./node_modules/validator/lib/isInt.js","./node_modules/validator/lib/isJSON.js","./node_modules/validator/lib/isJWT.js","./node_modules/validator/lib/isLatLong.js","./node_modules/validator/lib/isLength.js","./node_modules/validator/lib/isLicensePlate.js","./node_modules/validator/lib/isLocale.js","./node_modules/validator/lib/isLowercase.js","./node_modules/validator/lib/isLuhnNumber.js","./node_modules/validator/lib/isMACAddress.js","./node_modules/validator/lib/isMD5.js","./node_modules/validator/lib/isMagnetURI.js","./node_modules/validator/lib/isMailtoURI.js","./node_modules/validator/lib/isMimeType.js","./node_modules/validator/lib/isMobilePhone.js","./node_modules/validator/lib/isMongoId.js","./node_modules/validator/lib/isMultibyte.js","./node_modules/validator/lib/isNumeric.js","./node_modules/validator/lib/isOctal.js","./node_modules/validator/lib/isPassportNumber.js","./node_modules/validator/lib/isPort.js","./node_modules/validator/lib/isPostalCode.js","./node_modules/validator/lib/isRFC3339.js","./node_modules/validator/lib/isRgbColor.js","./node_modules/validator/lib/isSemVer.js","./node_modules/validator/lib/isSlug.js","./node_modules/validator/lib/isStrongPassword.js","./node_modules/validator/lib/isSurrogatePair.js","./node_modules/validator/lib/isTaxID.js","./node_modules/validator/lib/isTime.js","./node_modules/validator/lib/isULID.js","./node_modules/validator/lib/isURL.js","./node_modules/validator/lib/isUUID.js","./node_modules/validator/lib/isUppercase.js","./node_modules/validator/lib/isVAT.js","./node_modules/validator/lib/isVariableWidth.js","./node_modules/validator/lib/isWhitelisted.js","./node_modules/validator/lib/ltrim.js","./node_modules/validator/lib/matches.js","./node_modules/validator/lib/normalizeEmail.js","./node_modules/validator/lib/rtrim.js","./node_modules/validator/lib/stripLow.js","./node_modules/validator/lib/toBoolean.js","./node_modules/validator/lib/toDate.js","./node_modules/validator/lib/toFloat.js","./node_modules/validator/lib/toInt.js","./node_modules/validator/lib/trim.js","./node_modules/validator/lib/unescape.js","./node_modules/validator/lib/util/algorithms.js","./node_modules/validator/lib/util/assertString.js","./node_modules/validator/lib/util/checkHost.js","./node_modules/validator/lib/util/includesArray.js","./node_modules/validator/lib/util/includesString.js","./node_modules/validator/lib/util/merge.js","./node_modules/validator/lib/util/multilineRegex.js","./node_modules/validator/lib/util/nullUndefinedCheck.js","./node_modules/validator/lib/util/toString.js","./node_modules/validator/lib/whitelist.js","./node_modules/which-boxed-primitive/index.js","./node_modules/which-collection/index.js","./node_modules/which-typed-array/index.js","./src/app/styles/global/app.style.scss","./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","./node_modules/style-loader/dist/runtime/insertBySelector.js","./node_modules/style-loader/dist/runtime/insertStyleElement.js","./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","./node_modules/style-loader/dist/runtime/styleDomAPI.js","./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack:///./src/app/styles/global/app.style.scss?a2b5","./src/i18n/ lazy ^\\.\\/.*\\.i18n\\.txt$ namespace object","external system \"@angular/animations\"","external system \"@angular/cdk/a11y\"","external system \"@angular/cdk/bidi\"","external system \"@angular/cdk/overlay\"","external system \"@angular/cdk/platform\"","external system \"@angular/cdk/portal\"","external system \"@angular/common\"","external system \"@angular/common/http\"","external system \"@angular/core\"","external system \"@angular/forms\"","external system \"@angular/material/button\"","external system \"@angular/material/checkbox\"","external system \"@angular/material/core\"","external system \"@angular/material/dialog\"","external system \"@angular/material/form-field\"","external system \"@angular/material/icon\"","external system \"@angular/material/menu\"","external system \"@angular/material/select\"","external system \"@angular/material/slider\"","external system \"@angular/material/tooltip\"","external system \"@angular/platform-browser\"","external system \"@angular/platform-browser/animations\"","external system \"@angular/router\"","external system \"rxjs\"","external system \"rxjs/operators\"","external system \"single-spa-angular\"","./node_modules/available-typed-arrays/index.js","./node_modules/es-get-iterator/index.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/hasOwnProperty shorthand","webpack/runtime/make namespace object","webpack/runtime/trusted types script url","webpack/runtime/publicPath","webpack/runtime/jsonp chunk loading","webpack/runtime/nonce","webpack/startup"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nav-root:\";\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\t\tscript.type = \"module\";\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\t\tscript.src = __webpack_require__.tu(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};","var policy;\n__webpack_require__.tt = () => {\n\t// Create Trusted Type policy if Trusted Types are available and the policy doesn't exist yet.\n\tif (policy === undefined) {\n\t\tpolicy = {\n\t\t\tcreateScriptURL: (url) => (url)\n\t\t};\n\t\tif (typeof trustedTypes !== \"undefined\" && trustedTypes.createPolicy) {\n\t\t\tpolicy = trustedTypes.createPolicy(\"angular#bundler\", policy);\n\t\t}\n\t}\n\treturn policy;\n};","export enum APP_NAMES {\n OTHER_ROOT = 'other-root',\n NAV_ROOT = 'nav-root',\n EMAIL_ROOT = 'email-root',\n}\n","import { CommandReport, WindowInterface } from '@imunify360-api/misc';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { HttpEvent, HttpHandler, HttpInterceptor,\n HttpRequest, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { Inject, Optional, SkipSelf } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { APP_NAMES } from './app-names.enum';\ndeclare const window: WindowInterface;\n\nexport function loadTestInterceptor() {\n window.i360Test = {\n type: 'e2e',\n disableNews: true,\n disableStats: true,\n testMode: {},\n lastRequest: {} as CommandReport,\n requests: {},\n requestsHistory: [],\n mock: [],\n jq: null,\n };\n}\n\ndeclare const __webpack_public_path__: string;\nexport const getImagePath = () => `${__webpack_public_path__}images`;\n\nexport function enableSvgIcons(\n iconRegistry: MatIconRegistry,\n sanitizer: DomSanitizer,\n appName: APP_NAMES,\n) {\n const imagePath = getImagePath();\n const iconsByApp = {\n [APP_NAMES.NAV_ROOT]: [\n 'events-notifications',\n 'profile',\n ],\n [APP_NAMES.EMAIL_ROOT]: [\n 'email-spam',\n 'email-ratelimit',\n 'icon-exclamation-red',\n 'in-email',\n 'help-outline-black',\n 'out-email',\n ],\n [APP_NAMES.OTHER_ROOT]: [\n 'atoms',\n 'aquarium',\n 'add-ip',\n 'analyst-cleanup',\n 'broom',\n 'check-circle',\n 'chip',\n 'clock',\n 'dashboard-no-data-found',\n 'dmc',\n 'done',\n 'fish',\n 'full-access',\n 'icon-bell-in-circle',\n 'icon-delete',\n 'icon-exclamation',\n 'icon-info',\n 'icon-key',\n 'icon-question',\n 'ignore-all',\n 'logo-grey',\n 'new-features-management',\n 'play',\n 'read-more',\n 'rocket',\n 'shark',\n 'shield',\n 'shield-gray',\n 'shield-malware',\n 'storage',\n 'undraw-server-down',\n 'update',\n ]\n };\n const commonIcons = [\n 'loader',\n 'person',\n 'bell',\n 'ellipsis',\n 'configuration',\n 'key',\n 'logo-imunify',\n 'logo-imunifyAV',\n 'logo-imunifyAVPlus',\n 'logo-imunifyAVPlus-grey',\n 'logo-myimunify',\n 'support',\n 'vector',\n ];\n const icons = iconsByApp[appName] || [];\n\n for (const icon of icons) {\n iconRegistry.addSvgIcon(icon, sanitizer.bypassSecurityTrustResourceUrl(\n `${imagePath}/${appName}/${icon}.svg`,\n ));\n }\n for (const icon of commonIcons) {\n iconRegistry.addSvgIcon(icon, sanitizer.bypassSecurityTrustResourceUrl(\n `${imagePath}/common/${icon}.svg`,\n ));\n }\n}\n\nexport class AngularIssues18894Crutch implements HttpInterceptor {\n constructor(private interceptors: HttpInterceptor[]) {}\n intercept(req: HttpRequest<any>, next: HttpHandler):\n Observable<HttpEvent<any>> {\n return (this.interceptors || []).reduceRight(\n (next, interceptor) => ({\n // HttpInterceptorHandler not exported, so use duck typing\n handle(req: HttpRequest<any>) {\n return interceptor.intercept(req, next);\n },\n }), next).handle(req);\n }\n}\n\nexport function angular18894CrutchFactory(interceptors: HttpInterceptor[]) {\n return new AngularIssues18894Crutch(interceptors);\n}\nexport const angular18894CrutchProvider = {\n // https://github.com/angular/angular/issues/18894\n provide: HTTP_INTERCEPTORS,\n multi: true,\n useFactory: angular18894CrutchFactory,\n deps: [[new SkipSelf, new Optional, new Inject(HTTP_INTERCEPTORS)]],\n};\n\n\n/**\n * A hack to prevent Plesk from adding a csrf header to some requests.\n */\nexport function applyCsrfStrategy() {\n const csrfTokenMeta = document.getElementById('forgery_protection_token');\n const urls = ['https://api.imunify360.com', 'https://sentry.cloudlinux.com'];\n const oldSend = XMLHttpRequest.prototype.send;\n XMLHttpRequest.prototype.send = function (...args) {\n let skipHeader = false;\n try {\n if (urls.find(url => (this.__zone_symbol__xhrURL as string).startsWith(url))) {\n skipHeader = true; // this request shouldn't contain csrf header\n }\n } catch (e) { }\n if (skipHeader && csrfTokenMeta) {\n csrfTokenMeta.setAttribute('id', 'temporary-changed-for-sentry-request');\n const retVal = oldSend.apply(this, args);\n csrfTokenMeta.setAttribute('id', 'forgery_protection_token');\n return retVal;\n } else {\n return oldSend.apply(this, args);\n }\n };\n}\n","import { LicenseInBackend } from './license';\nimport { EulaInBackend } from './eula';\n\nexport type ApiMethod<E, R> = (parameters: E | undefined) => RequestParams<R>;\n\nexport class RequestParams<R = any> {\n // https://www.typescriptlang.org/docs/handbook/declaration-files/do-s-and-don-ts.html#generics\n anchor?: R;\n constructor(public method: string[], public params: { [k: string]: any } = {}) {\n }\n\n toString() {\n return JSON.stringify(this);\n }\n}\n\nexport class ExtendedRequestParams<R = any> extends RequestParams<R> {\n constructor(\n public command?: string,\n public method: string[] = [],\n public params: { [k: string]: any } = {},\n ) {\n super(method, params);\n }\n}\n\nexport enum Result {\n ERROR = 'error',\n WARNING = 'warnings',\n SUCCESS = 'success',\n}\n\nexport enum AgentStatus {\n OK = 'running',\n INSTALLING = 'installing',\n UPGRADING = 'upgrading',\n NOT_INSTALLED = 'not_installed',\n FAILED_TO_INSTALL = 'failed_to_install',\n SOCKET_INACCESSIBLE = 'socket_inaccessible',\n STOPPED = 'stopped',\n}\n\nexport interface AgentResponse<E = any> {\n data: E;\n result: Result;\n messages: string[] | string;\n status?: AgentStatus;\n}\n\nexport interface NormalizedAgentResponse<E> {\n data: E;\n result: Result;\n messages: string[];\n}\n\nexport type Subtract<U, V> = {\n [K in Exclude<keyof U, V>]: U[K];\n};\n\nexport interface AgentResponseData<E> {\n items: E;\n version: string;\n warnings?: string[];\n strategy?: string;\n license: LicenseInBackend & {\n expiration?: any;\n };\n eula?: EulaInBackend;\n}\n\nexport type ResponseDataExceptItems = Subtract<AgentResponseData<null>, 'items'>;\n\nexport type ResponseDataExceptItemsAndEula\n = Subtract<ResponseDataExceptItems, { eula: EulaInBackend }>;\n\nexport interface ListResponseData<E> extends AgentResponseData<E[]> {\n max_count?: number;\n}\n\ninterface SucceededFailedResponseData extends ResponseDataExceptItems {\n succeeded: string[];\n failed: string[];\n}\n\nexport type NumberAgentResponse = AgentResponse<AgentResponseData<number>>;\nexport type NoItemsAgentResponse = AgentResponse<ResponseDataExceptItems>;\nexport type NoItemsAndEulaAgentResponse = AgentResponse<ResponseDataExceptItemsAndEula>;\nexport type NullAgentResponse = AgentResponse<AgentResponseData<null>>;\nexport type StringAgentResponse = AgentResponse<AgentResponseData<string>>;\nexport type SucceededFailedAgentResponse = AgentResponse<SucceededFailedResponseData>;\n\nexport type DataFrom<T> = T extends AgentResponse<infer U> ? U : 'Wrong type';\n\nexport interface WindowInterface extends Window {\n i360Test: {\n type: string;\n disableNews: boolean;\n disableStats: boolean;\n lastRequest: CommandReport;\n requests: {};\n requestsHistory: CommandReport[];\n testMode: boolean | { [key: string]: any };\n mock: { [key: string]: any };\n jq: any;\n };\n}\n\nexport interface CommandReport {\n source: string;\n data: Partial<ExtendedRequestParams> | FormData;\n request: {\n response: string,\n startDate: number,\n endDate: number,\n };\n}\n","import { BehaviorSubject, Observable } from \"rxjs\";\n\n// Operator that preserves subscriber's zone for handlers (instead of the zone of whoever called\n// `next`).\nexport function zoned<T>(source: Observable<T>): Observable<T> {\n return new Observable(subscriber => {\n const zone = (window as any).Zone.current;\n source.subscribe({\n next: (...args) => zone.run(() => subscriber.next(...args)),\n complete: (...args) => zone.run(() => subscriber.complete(...args)),\n error: (...args) => zone.run(() => subscriber.error(...args)),\n });\n });\n}\n\n// `BehaviorSubject` that preserves subscriber's zone for handlers (instead of the zone of whoever\n// called `next`).\nexport class ZonedBehaviorSubject<T> extends BehaviorSubject<T> {\n subscribe(...args) {\n // implemented via custom pipe operator to avoid dealing with all possible formats of `args`\n return super.pipe((source: Observable<T>): Observable<T> => {\n return new Observable(subscriber => {\n const zone = (window as any).Zone.current;\n super.subscribe({\n next: (...args) => zone.run(() => subscriber.next(...args)),\n complete: (...args) => zone.run(() => subscriber.complete(...args)),\n error: (...args) => zone.run(() => subscriber.error(...args)),\n });\n });\n }).subscribe(...args);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AgentStatus } from '@imunify360-api/misc';\nimport { ZonedBehaviorSubject } from 'app/utils/rxjs-zoned';\n\n@Injectable()\nexport class AppState {\n version = VERSION;\n release = RELEASE;\n csf: boolean;\n imunifyStatus: ZonedBehaviorSubject<AgentStatus> = new ZonedBehaviorSubject(AgentStatus.OK);\n responseStatusCode: ZonedBehaviorSubject<number> = new ZonedBehaviorSubject(200);\n refresherEnabled = false;\n mousePositionY: number = 150; // initial value for DA, while no other mousemove events\n rpcReady$ = new ZonedBehaviorSubject(false); // true, when at least one RPC request is answered\n demo: boolean = false; // Server is running in demo mode: dashboard requests are mocked etc\n lang: ZonedBehaviorSubject<string|null> = new ZonedBehaviorSubject(null);\n notifications: ZonedBehaviorSubject<Notification[]> = new ZonedBehaviorSubject([]);\n lowResourcesMode$ = new ZonedBehaviorSubject(false);\n overlayContainer: HTMLElement;\n upgradingInProgress$ = new ZonedBehaviorSubject(false); // true, while the upgrade in progress\n sentryActive: boolean;\n isAllowedAssistedCleanup$ = new ZonedBehaviorSubject<boolean | null>(null);\n imunifyPatchPurchaseUrl: string| null;\n}\n\nexport class Notification {\n type: string;\n title: string;\n content: string;\n counter: number = 0;\n ticks: number = 0;\n\n constructor(item: {type: string, title: string, content: string}) {\n this.type = item.type;\n this.title = item.title;\n this.content = item.content;\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n","import { Injectable } from '@angular/core';\n\ndeclare const I360_PANEL: any;\ndeclare const i360lang: any;\n\nexport const LANGUAGE_KEY = 'lang';\nexport const PANEL_PLESK = 'Plesk';\nexport const PANEL_DA = 'DirectAdmin';\nexport const PANEL_CPANEL = 'cPanel';\nexport const PANEL_NOPANEL = 'noPanel';\n\n\nconst linksToLve = {\n cPanel: window.location.href.substring(\n window.location.href.search('/cpsess'),\n window.location.href.search('cgi')) + `cgi/CloudLinux.cgi`,\n Plesk: '/modules/plesk-lvemanager',\n // iframe=no needed to prevent double nested iframe\n DirectAdmin: `/CMD_PLUGINS_ADMIN/lvemanager_spa?iframe=no`,\n};\n\n@Injectable()\nexport class Panel {\n name: string;\n isPlesk: boolean;\n isCpanel: boolean;\n isDirectAdmin: boolean;\n isNoPanel: boolean;\n defaultScanFolder: string;\n csfInterfaceUrl: string;\n linkToLvePhpSelector: string;\n private readonly defaultScanFolders = {\n cPanel: '/home*/*',\n Plesk: '/var/www/vhosts/*',\n DirectAdmin: '/home*/*/',\n noPanel: '/home',\n };\n private readonly csfInterfaces = {\n cPanel: '../../../cgi/configserver/csf.cgi',\n Plesk: null,\n DirectAdmin: null,\n noPanel: null,\n };\n\n constructor() {\n this.name = I360_PANEL;\n this.isPlesk = this.name === PANEL_PLESK;\n this.isCpanel = this.name === PANEL_CPANEL;\n this.isDirectAdmin = this.name === PANEL_DA;\n this.isNoPanel = this.name === PANEL_NOPANEL;\n this.defaultScanFolder = this.defaultScanFolders[this.name];\n this.csfInterfaceUrl = this.csfInterfaces[this.name];\n this.linkToLvePhpSelector = `${linksToLve[this.name]}#/selector`;\n }\n\n getLang(document: Document): string {\n switch (I360_PANEL) {\n case PANEL_PLESK:\n case PANEL_CPANEL:\n return document.querySelector('html')!.lang;\n case PANEL_DA:\n return i360lang;\n case PANEL_NOPANEL:\n return localStorage.getItem(LANGUAGE_KEY) || '';\n default:\n return '';\n }\n }\n}\n","\n// export const server = 'http://192.168.248.20:9443'; // testing server\nexport const server = 'https://api.imunify360.com';\n\nexport const baseEndpoint = `${server}/api/`;\n\n// export const TEST_SERVER_ID = 'test-id';\nexport const TEST_SERVER_ID = undefined;\n","import { baseEndpoint } from '@imunify360-api/server';\n\nconst exceptions = [\n `${ baseEndpoint }ab-view`,\n `${ baseEndpoint }ab-event`,\n];\n\nexport const postOnly = (target: Object, propertyKey: string, descriptor: PropertyDescriptor) => {\n let originalMethod = descriptor.value;\n descriptor.value = function (req, next) {\n const shouldApply = req.method === 'POST' && !exceptions.includes(req.url);\n if (shouldApply) {\n return originalMethod.apply(this, [req, next]);\n } else {\n return next.handle(req);\n }\n };\n\n return descriptor;\n};\n","import { AgentResponse, AgentResponseData, DataFrom, RequestParams } from './misc';\n\nexport const INVALID_TOKEN_MESSAGE = 'INVALID_TOKEN';\n\nexport interface LoginCredentials {\n username: string;\n password: string;\n}\n\nexport interface LoginData {\n username: string;\n}\n\ntype TokenAgentResponse = AgentResponse<AgentResponseData<string>>;\n\nexport class AuthAPI {\n static login(credentials: LoginCredentials) {\n return new RequestParams<DataFrom<TokenAgentResponse>>(['login', 'pam'], credentials);\n }\n static get(loginData: LoginData) {\n return new RequestParams<DataFrom<TokenAgentResponse>>(['login', 'get'], loginData);\n }\n}\n","import {\n AgentResponse, AgentResponseData,\n DataFrom, ExtendedRequestParams,\n ListResponseData, NullAgentResponse,\n} from './misc';\nimport { requestCommandIE, requestMethod } from './emails';\n\nexport function cutOrderByParam(params) {\n let newParams = JSON.parse(JSON.stringify(params));\n if (newParams && newParams['order_by']) {\n newParams['order_by'] = newParams['order_by'][0];\n }\n return newParams;\n}\n\nexport enum AccountStatus {\n active = 'active',\n inactive = 'inactive',\n}\n\ninterface ServerSpace {\n total_space: number;\n account_space: number;\n}\n\ninterface ServerDefaultsLimits {\n limit_mode: number;\n account: number;\n domain: number;\n sender_email: number;\n script: number;\n}\n\ninterface IncomingEnabled {\n is_enabled: boolean\n}\n\nexport interface AccountDefaultSettingsUI {\n limit_bytes: number | null;\n releases_limit: number | null;\n incoming_filtration_enabled?: number | null;\n}\n\nexport type AccountSetting = {\n setting: string;\n int_value: number;\n};\n\nexport type AccountSettingFieldType = {\n default: boolean;\n value: number;\n};\n\n\nexport interface IEDefaultAccountSettings {\n settings: AccountSetting[]\n}\n\nexport interface ResponseEmailSettingsItem {\n name: string;\n limit_bytes: AccountSettingFieldType;\n used_bytes: number;\n releases_limit: AccountSettingFieldType;\n incoming_filtration_enabled?: AccountSettingFieldType;\n}\n\n\nexport class AccountItem {\n public name: string;\n public limitBytes: AccountSettingFieldType;\n public usedBytes: number;\n public releasesLimit: AccountSettingFieldType;\n public incomingFiltrationEnabled: AccountSettingFieldType;\n\n constructor(item: ResponseEmailSettingsItem) {\n this.name = item.name;\n this.limitBytes = item.limit_bytes;\n this.usedBytes = item.used_bytes;\n this.releasesLimit = item.releases_limit;\n if (item?.incoming_filtration_enabled) {\n this.incomingFiltrationEnabled = item?.incoming_filtration_enabled;\n }\n }\n}\n\n\nexport class EmailsSettingsApis {\n\n static list = (params) => <ExtendedRequestParams<DataFrom<AccountListResponseData>>>{\n command: requestCommandIE,\n method: ['accounts'],\n params: {\n ...cutOrderByParam(params),\n request_method: requestMethod.get,\n },\n };\n\n static updateAccount = ({\n limit_bytes,\n userName,\n account_name,\n incoming_filtration_enabled,\n releases_limit,\n }: {\n limit_bytes?: number,\n releases_limit?: number,\n incoming_filtration_enabled?: number,\n userName: string,\n account_name?: string,\n }) => <ExtendedRequestParams<DataFrom<AccountResponseData>>>{\n command: requestCommandIE,\n method: ['accounts', userName, 'settings'],\n params: {\n request_method: requestMethod.put,\n ...(account_name ? {account_name} : {}),\n ...(limit_bytes !== undefined ? {limit_bytes} : {}),\n ...(releases_limit !== undefined ? {releases_limit} : {}),\n ...(incoming_filtration_enabled !== undefined ? {incoming_filtration_enabled} : {}),\n },\n };\n\n static getAccountSettings = () => <ExtendedRequestParams<DataFrom<ServerSpaceResponse>>>{\n command: requestCommandIE,\n method: ['accounts', '{account_name}', 'settings'],\n params: {\n request_method: requestMethod.get,\n },\n };\n\n static getLimits = () => <ExtendedRequestParams<DataFrom<ServerLimitResponse>>>{\n command: requestCommandIE,\n method: ['so', 'limits', 'defaults'],\n params: {\n request_method: requestMethod.get,\n },\n };\n\n static isIncomingEnabled = () => <ExtendedRequestParams<DataFrom<ServerIsIncomingEnabled>>>{\n command: requestCommandIE,\n method: ['server', 'incoming', 'is-enabled'],\n params: {\n request_method: requestMethod.get,\n },\n };\n\n static updateLimits = (data) =>\n <ExtendedRequestParams<DataFrom<ServerLimitResponse>>>{\n command: requestCommandIE,\n method: ['so', 'limits', 'defaults'],\n params: {\n ...data,\n request_method: requestMethod.post,\n },\n };\n\n static getAccountSettingDefaults = () => <ExtendedRequestParams<DataFrom<AccountsSettingsResponse>>>{\n command: requestCommandIE,\n method: ['accounts', 'settings', 'default'],\n params: {\n request_method: requestMethod.get,\n },\n };\n\n static updateAccountSettingDefaults = (data: AccountDefaultSettingsUI) => {\n const settings: AccountSetting[] = Object.entries(data).map(([key, value]) => {\n if (key === 'limit_bytes') {\n value = value * (1024 ** 2);\n }\n if (key === 'incoming_filtration_enabled') {\n value = +value;\n }\n return {\n setting: key,\n int_value: value as number,\n };\n });\n return <ExtendedRequestParams<DataFrom<AccountsSettingsResponse>>>{\n command: requestCommandIE,\n method: ['accounts', 'settings', 'default'],\n params: {\n settings,\n request_method: requestMethod.post,\n },\n };\n };\n\n\n static getAccountList = () =>\n <ExtendedRequestParams<DataFrom<AgentResponse<ListResponseData<string>>>>>{\n command: requestCommandIE,\n method: ['unix-users'],\n params: {\n request_method: requestMethod.get,\n },\n };\n\n static deleteAccounts = ({userName}: {\n userName: string,\n }) => <ExtendedRequestParams<DataFrom<NullAgentResponse>>>{\n command: requestCommandIE,\n method: ['accounts', userName, 'settings'],\n params: {\n request_method: requestMethod.delete,\n },\n };\n static resetAccounts = ({userName}: {\n userName: string,\n }) => <ExtendedRequestParams<DataFrom<NullAgentResponse>>>{\n command: requestCommandIE,\n method: ['accounts', userName, 'settings', 'reset'],\n params: {\n request_method: requestMethod.patch,\n },\n };\n}\n\nexport type AccountListResponseData = AgentResponse<ListResponseData<ResponseEmailSettingsItem>>;\n\nexport type ServerSpaceResponse = AgentResponse<AgentResponseData<ServerSpace>>;\n\nexport type ServerLimitResponse = AgentResponse<AgentResponseData<ServerDefaultsLimits>>;\n\nexport type ServerIsIncomingEnabled = AgentResponse<AgentResponseData<IncomingEnabled>>;\n\nexport type AccountsSettingsResponse = AgentResponse<AgentResponseData<IEDefaultAccountSettings>>;\n\n\nexport type IESettingsResponse = {\n accountSettings: IEDefaultAccountSettings,\n limitSettings: ServerLimitResponse\n};\n\nexport type AccountResponseData = AgentResponse<AgentResponseData<ResponseEmailSettingsItem>>;\n","import {\n AgentResponse, AgentResponseData,\n DataFrom, ExtendedRequestParams,\n ListResponseData,\n} from './misc';\nimport { cutOrderByParam } from './emails-settings';\n\nexport const enum requestMethod {\n get = 'get',\n post = 'post',\n delete = 'delete',\n patch = 'patch',\n put = 'put',\n}\n\nexport const enum operationType {\n delete = 'delete',\n release = 'release',\n}\n\nexport const enum emailDirection {\n in = 'in',\n out = 'out',\n}\ntype emailReasons = 'spam' | 'rate-limited';\n\nexport const requestCommandIE = 'commandIE';\n\nfunction buildScriptPath(scriptHeader): string {\n let scriptPath = '';\n if (scriptHeader) {\n if (scriptHeader.domain) {\n scriptPath = scriptHeader.domain;\n }\n if (scriptHeader.path) {\n if (scriptPath) {\n scriptPath += ': ';\n }\n scriptPath += scriptHeader.path;\n }\n }\n return scriptPath;\n}\n\nexport class EmailItem {\n public emailId: string;\n public accountName: string;\n public reasons: string[];\n public sender: string;\n public recipients: string[];\n public subject: string;\n public receivedDate: number;\n public emailDirection: emailDirection;\n public scriptPath?: string;\n\n constructor(item: ResponseEmailItem) {\n this.emailId = item.email_id;\n this.accountName = item.account_name;\n this.reasons = item.reasons;\n this.recipients = item.recipients;\n this.sender = item.sender;\n this.subject = item.subject;\n this.emailDirection = item.email_direction;\n this.receivedDate = item.received_date;\n this.scriptPath = buildScriptPath(item.script_header);\n }\n}\n\nexport class EmailDetails {\n public emailId: string;\n public accountName: string;\n public sizeBytes: number;\n public sender: string;\n public recipients: string[];\n public reasons: string[];\n public subject: string;\n public body: string;\n public header: {[key: string]: string};\n public receivedDate: number;\n public plainText: string;\n public emailDirection: emailDirection;\n\n constructor(item: ResponseEmailDetails) {\n this.emailId = item.email_id;\n this.accountName = item.account_name;\n this.recipients = item.recipients;\n this.sender = item.sender;\n this.subject = item.subject;\n this.sizeBytes = item.size_bytes;\n this.body = item.body;\n this.emailDirection = item.email_direction;\n this.header = item.header;\n this.receivedDate = item.received_date;\n this.plainText = (item.raw) ? item.raw : '';\n }\n}\n\n\nexport interface ResponseEmailItem {\n email_id: string;\n account_name: string;\n reasons: string[];\n sender: string;\n recipients: string[];\n subject: string;\n body: string;\n email_direction: emailDirection;\n received_date: number;\n script_header?: {\n raw: string;\n path: string;\n domain: string;\n }\n}\n\ninterface EmailPackagesVersion {\n release: string,\n name: string,\n version: string,\n}\nexport interface ResponseEmailVersion {\n version: string,\n components: EmailPackagesVersion[]\n}\n\nexport interface ResponseEmailDetails {\n email_id: string;\n account_name: string;\n size_bytes: number;\n reasons: string[];\n domain: string;\n sender: string;\n raw?: string;\n recipients: string[];\n subject: string;\n body: string;\n header: {[key: string]: string};\n received_date: number;\n plainText?: string;\n email_direction: emailDirection;\n}\n\nexport interface ViewEmailParams {\n emailId: string,\n raw?: boolean\n}\n\nexport class EmailsApi {\n\n static list = (params) => <ExtendedRequestParams<DataFrom<EmailsListResponseData>>> {\n command: requestCommandIE,\n method: ['accounts', '{account_name}', 'emails'],\n params: {\n ...cutOrderByParam(params),\n request_method: requestMethod.get,\n },\n }\n\n static editEmails(params: {ids: string[], operation: operationType}) {\n return <ExtendedRequestParams>{\n command: requestCommandIE,\n method: ['accounts', '{account_name}', 'emails'],\n params: {\n ...params,\n request_method: requestMethod.put,\n },\n };\n }\n\n static viewEmail({emailId,raw}: ViewEmailParams) {\n return <ExtendedRequestParams<DataFrom<EmailsResponseData>>>{\n command: requestCommandIE,\n method: ['accounts', '{account_name}', 'emails', emailId],\n params: {\n ...(raw ? {raw: 'true'} : {}),\n request_method: requestMethod.get,\n },\n };\n }\n\n static imunifyEmailVersion() {\n return <ExtendedRequestParams<DataFrom<EmailsVersionResponse>>>{\n command: requestCommandIE,\n method: ['version'],\n params: {\n request_method: requestMethod.get,\n },\n };\n }\n}\n\nexport type EmailsListResponseData = AgentResponse<ListResponseData<ResponseEmailItem>>;\nexport type EmailsVersionResponse = AgentResponse<AgentResponseData<ResponseEmailVersion>>\nexport type EmailsResponseData = AgentResponse<AgentResponseData<ResponseEmailDetails>>\n | AgentResponse<ListResponseData<ResponseEmailDetails>>;\n","import { of, EMPTY, Observable, switchMap, catchError, throwError } from 'rxjs';\nimport jwtDecode from 'jwt-decode';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n CanLoad,\n PRIMARY_OUTLET,\n Route,\n Router,\n RouterStateSnapshot,\n UrlSegment,\n UrlTree,\n} from '@angular/router';\nimport { Location } from '@angular/common';\nimport { Panel } from 'app/utils/panel';\nimport {\n HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse,\n} from '@angular/common/http';\nimport { AgentResponse } from '@imunify360-api/misc';\nimport { Injectable, Injector } from '@angular/core';\nimport { postOnly } from 'app/interceptors/utils';\nimport { INVALID_TOKEN_MESSAGE } from '@imunify360-api/auth';\nimport { AuthState } from './auth-state';\nimport { requestCommandIE } from '@imunify360-api/emails';\n\nexport const TOKEN_FIELD_NAME = 'jwt';\nexport const TOKEN_LOCAL_STORAGE_FIELD_NAME = 'I360_AUTH_TOKEN';\ndeclare const i360role: any;\ndeclare const i360userName: any;\n\nexport enum I360Role {\n admin = 'admin',\n client = 'client',\n none = 'none',\n}\n\ntype TokenData = {\n user_type: I360Role,\n username: string,\n};\n\n@Injectable()\nexport class AuthService implements HttpInterceptor, CanActivate, CanLoad {\n constructor(\n private location: Location,\n private injector: Injector,\n private authState: AuthState,\n ) {\n this.discoverToken();\n }\n\n logout() {\n this.setToken('');\n this.goToLoginPage();\n }\n\n goToLoginPage() {\n // We should save queryParams in url\n const router = this.injector.get(Router);\n const url = this.location.path(false);\n if (url.startsWith('/login')) { // already there\n return;\n }\n router.navigate(['/', 'login'], {queryParams: {targetUrl: url}});\n }\n\n addTokenToRequest(req: HttpRequest<any>) {\n if (req.body) {\n // immutability!\n const token = this.getToken();\n if (token !== '') {\n const copyOfBody = JSON.parse(JSON.stringify(req.body));\n copyOfBody.params[TOKEN_FIELD_NAME] = token;\n req = req.clone({\n body: copyOfBody,\n });\n }\n }\n return req;\n }\n\n @postOnly\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const panel = this.injector.get(Panel);\n if (\n panel.isNoPanel\n // Imunify Email doesn't support GenericPanel auth yet, but we use it in dev & tests\n && req?.body?.command !== requestCommandIE\n ) {\n if (this.authState.role.value !== I360Role.none) {\n req = this.addTokenToRequest(req);\n return next.handle(req).pipe(\n catchError(error => {\n if (error?.error?.messages === INVALID_TOKEN_MESSAGE) {\n this.logout();\n return this.handleLogout();\n }\n\n return throwError(() => error);\n }),\n switchMap(event => {\n if (event instanceof HttpResponse) {\n const response: AgentResponse = event.body;\n if (response.messages === INVALID_TOKEN_MESSAGE) {\n this.logout();\n return this.handleLogout();\n }\n }\n return of(event);\n }),\n );\n }\n if (req.body?.method?.[0] !== 'login') {\n this.goToLoginPage();\n return this.handleLogout();\n }\n }\n\n return next.handle(req);\n }\n\n handleLogout() {\n return EMPTY;\n }\n\n getToken() {\n return localStorage.getItem(TOKEN_LOCAL_STORAGE_FIELD_NAME) || '';\n }\n\n setToken(newToken: string) {\n localStorage.setItem(TOKEN_LOCAL_STORAGE_FIELD_NAME, newToken);\n this.parseToken();\n }\n\n discoverToken() {\n if (typeof i360role !== 'undefined') {\n // for panels\n this.authState.updateRole(i360role, typeof i360userName !== 'undefined' ? i360userName : undefined);\n } else {\n // not for panel extension\n const router = this.injector.get(Router);\n const urlTree = router.parseUrl(this.location.path(false));\n // query params can not be accessed in service via activatedRoute\n const urlToken = urlTree.queryParams.token;\n if (urlToken) {\n localStorage.setItem(TOKEN_LOCAL_STORAGE_FIELD_NAME, urlToken);\n delete urlTree.queryParams.token;\n // can not use 'navigate' because router is not initialized\n // no queryParams - queryParamsHandling: merge will not work\n // no url at all - navigate([]) will not navigate to current url but will to root\n router.navigateByUrl(urlTree || '/', {\n replaceUrl: true,\n });\n }\n this.parseToken();\n }\n }\n\n parseToken() {\n let payload: TokenData;\n try {\n payload = jwtDecode<TokenData>(this.getToken());\n } catch (e) {\n payload = {user_type: I360Role.none, username: ''};\n }\n this.authState.updateRole(payload.user_type, payload.username);\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | UrlTree {\n const urlTree = this.injector.get(Router).parseUrl(state.url);\n return this.check(urlTree);\n }\n\n canLoad(route: Route, segments: UrlSegment[]): boolean | UrlTree {\n // Neither `route`, nor `segments` doesn't always contain the full path.\n // See https://github.com/angular/angular/issues/17359 for details.\n const currentNavigation = this.injector.get(Router).getCurrentNavigation();\n if (currentNavigation != null) {\n return this.check(currentNavigation.extractedUrl);\n }\n return true; // idk how this could be possible\n }\n\n check(urlTree: UrlTree) {\n // https://angular.io/api/router/UrlSegment#example\n const segments = urlTree.root.children?.[PRIMARY_OUTLET]?.segments;\n if (this.authState.role.value === I360Role.none) {\n // if not authorized, only `/login` is available\n if (segments?.[0].path === 'login') {\n return true;\n }\n const targetUrl = urlTree.toString();\n return this.injector.get(Router).createUrlTree(['/', 'login'], {\n queryParams: targetUrl === '/' ? {} : {targetUrl}},\n );\n }\n if (segments?.[0].path !== IMUNIFY_PACKAGE\n || segments?.[1].path !== this.authState.role.value) {\n return this.injector.get(Router)\n .createUrlTree(['/', IMUNIFY_PACKAGE, this.authState.role.value]);\n }\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Route } from '@angular/router';\nimport { ZonedBehaviorSubject } from 'app/utils/rxjs-zoned';\nimport { I360Role } from './auth';\nimport { Observable } from 'rxjs';\nimport { Permission } from '@imunify360-api/permissions';\n\n@Injectable()\nexport class AuthState {\n // Role related subjects\n loginChange: ZonedBehaviorSubject<boolean> = new ZonedBehaviorSubject(false);\n role: ZonedBehaviorSubject<I360Role> = new ZonedBehaviorSubject<I360Role>(I360Role.none);\n username: ZonedBehaviorSubject<string|undefined> = new ZonedBehaviorSubject<string|undefined>(undefined);\n // helpers, mostly for old code\n isAdmin: ZonedBehaviorSubject<boolean> = new ZonedBehaviorSubject<boolean>(false);\n isClient: ZonedBehaviorSubject<boolean> = new ZonedBehaviorSubject<boolean>(false);\n // can be used in templates as `authState.roles.none` to work with `role` subject directly, instead of `isAdmin`\n roles = I360Role;\n jwtToken: string | undefined;\n jwtTokenRequest$: Observable<string | undefined> | null;\n listPermission$: Observable<Array<Permission>>;\n\n updateRole(role: I360Role, username?: string) {\n if (this.role.value === role && this.username.value === username) {\n return;\n }\n this.username.next(username);\n this.role.next(role);\n this.isAdmin.next(role === I360Role.admin);\n this.isClient.next(role === I360Role.client);\n this.loginChange.next(this.role.value !== I360Role.none);\n }\n\n get featuresDisabledCommands(): string[] {\n return ['/', IMUNIFY_PACKAGE, I360Role.client, 'features-disabled'];\n }\n\n getDisabledRouteCommands(availableRoute: Route): string[] {\n return ['/', IMUNIFY_PACKAGE, I360Role.client, availableRoute.path!];\n }\n\n get featuresDisabledRedirectCommands() {\n return ['/', IMUNIFY_PACKAGE, I360Role.client];\n }\n}\n","import { AgentResponseData, RequestParams } from './misc';\n\n\nexport class LicenseAPI {\n static register = (licenseKey: string) => new RequestParams(['register'], {regkey: licenseKey});\n static unregister = () => new RequestParams<AgentResponseData<null>>(['unregister']);\n static version = () => new RequestParams(['version']);\n static rstatus = () => new RequestParams(['rstatus']);\n}\n\nexport enum Product {\n imunifyAV = 0,\n imunifyAVPlus = 1,\n imunify360 = 2,\n}\n\nexport enum LicenseType {\n imunifyAV = 'imunifyAV',\n imunifyAVPlus = 'imunifyAVPlus',\n imunify360Trial = 'imunify360Trial',\n imunify360 = 'imunify360',\n}\n\n/**\n * Used to distinguish which plugin and RPM/DEB package is currently installed.\n */\nexport enum Package {\n imunifyAV = 'AV',\n imunify360 = '360',\n}\ndeclare const IMUNIFY_PACKAGE: Package;\nconst productIdToReadableName = { // ugh\n [Product.imunifyAV]: 'ImunifyAV',\n [Product.imunifyAVPlus]: 'ImunifyAV+',\n [Product.imunify360]: 'Imunify360',\n};\n\n// FIXME: this should be reviewed during next bug fixing\ntype ValidLicenseInBackend = {\n id: string;\n license_type: LicenseType | null;\n message: string | null;\n redirect_url?: string | null;\n status: boolean;\n user_count: null | number;\n user_limit: number;\n ip_license?: boolean;\n pricing?: LicensePricing;\n expiration?: number | null;\n demo?: boolean | null;\n eligible_for_imunify_patch: boolean | null;\n upgrade_url_360: string | null;\n upgrade_url: string | null;\n};\n\nexport type LicenseInBackend = ValidLicenseInBackend | {\n// absent license root (no id, no license_type)\n// look at: src/asyncclient/defence360agent/rpc_tools/middleware.py\n// add_license\n status: false,\n redirect_url: null,\n upgrade_url_360: string | null;\n upgrade_url: string | null;\n eligible_for_imunify_patch: boolean | null;\n} | {\n// license from user responce\n// look at: src/asyncclient/defence360agent/rpc_tools/middleware.py\n// add_license_user\n status: boolean,\n license_type: LicenseType | null;\n eligible_for_imunify_patch: boolean | null;\n};\n\nexport type LicensePrice = {\n standard: string,\n bulk?: string,\n};\n\nexport const LicensePriceCounts = [1, 30, 250];\n\nexport type LicensePricing = {\n im_av?: LicensePrice,\n im_360_1?: LicensePrice,\n im_360_30?: LicensePrice,\n im_360_250?: LicensePrice,\n im_360_unlimited?: LicensePrice,\n};\n\nexport class License {\n /* Effective product (e.g. what logo to use). Depends on IMUNIFY_PACKAGE and license_type. */\n product: Product = Product.imunifyAV;\n productName: string;\n pricing?: LicensePricing;\n\n /**\n * The type of used license\n */\n license_type: LicenseType | null; // tslint:disable-line:variable-name\n\n user_limit: number; // tslint:disable-line:variable-name\n user_count: number | null; // tslint:disable-line:variable-name\n\n /**\n * Message from CLN\n */\n message: string = '';\n\n /**\n * In case of upgrade do not propose to enter license key\n */\n ip_license?: boolean = false; // tslint:disable-line:variable-name\n\n /**\n * Where to redirect when user clicks \"Upgrade\" for AV plus\n */\n upgrade_url: string | null; // tslint:disable-line:variable-name\n\n /**\n * Where to redirect when user clicks \"Upgrade\" for I360\n */\n upgrade_url_360: string | null; // tslint:disable-line:variable-name\n\n\n /**\n * When the imunify patch is enable\n */\n eligible_for_imunify_patch: boolean | null = false; // tslint:disable-line:variable-name\n\n /**\n * Where to redirect if user has troubles with license in Imunify360\n * FIXME: naming\n */\n redirect_url: string | null; // tslint:disable-line:variable-name\n\n /**\n * Whether the license is appropriate for the installed package or not\n */\n status: boolean;\n id: string;\n demo?: boolean | null;\n public constructor(data: any,\n /*Can not set to LicenseInBackend, because we do not know its type*/) {\n Object.assign(this, data);\n this.redirect_url = data.redirect_url || '';\n this.product = this.getProduct();\n this.productName = productIdToReadableName[this.product];\n }\n\n public isSame(otherLicense: License): boolean { // moved from NavigationComponent\n const keys1 = Object.keys(this);\n const keys2 = Object.keys(otherLicense);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (let key of keys1) {\n if (this[key] !== otherLicense[key]) {\n return false;\n }\n }\n return true;\n }\n\n public get isFreeVersion() {\n return this.product === Product.imunifyAV;\n }\n\n public get upgradeAvailable() {\n return this.product < Product.imunify360 && this.license_type !== LicenseType.imunify360;\n }\n\n /**\n * Applicable only to Package.imunify360 - we block the whole UI there\n * if the license is not sufficient.\n * While in ImunifyAV we are just forbidding cleanup actions.\n */\n public isFailed(): boolean {\n return IMUNIFY_PACKAGE === Package.imunify360 && !this.status;\n }\n\n public hasMessage(): boolean {\n return !!this.message;\n }\n\n public isPatchEnabled(): boolean {\n return !!this.eligible_for_imunify_patch;\n }\n\n public isLimitExceeded() {\n return this.user_count != null && this.user_count > this.user_limit;\n }\n\n private getProduct() {\n switch (IMUNIFY_PACKAGE) {\n case Package.imunify360:\n return Product.imunify360;\n case Package.imunifyAV:\n return !this.license_type || this.license_type === LicenseType.imunifyAV\n ? Product.imunifyAV\n : Product.imunifyAVPlus;\n default:\n throw new Error(`Unknown package ${IMUNIFY_PACKAGE}`);\n }\n }\n}\n","import { DataFrom, NullAgentResponse, RequestParams } from './misc';\n\n\nexport class EulaAPI {\n static accept = () => new RequestParams<DataFrom<NullAgentResponse>>(['eula', 'accept']);\n}\n\nexport type EulaInBackend = null | {\n message: string;\n text: string;\n updated: string;\n};\n\nexport class Eula {\n message: string;\n text: string;\n public constructor(data: EulaInBackend) {\n if (!data) {\n this.message = '';\n } else {\n this.message = data.message;\n this.text = data.text;\n }\n }\n\n public isFailed(): boolean {\n return !!this.message;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { License, Product } from '@imunify360-api/license';\nimport { AuthState } from 'app/services/auth-state';\nimport { testMode } from 'app/services/misc';\nimport { ZonedBehaviorSubject } from 'app/utils/rxjs-zoned';\nimport { Eula } from '@imunify360-api/eula';\nimport { map } from 'rxjs';\n\n\nconst SERVER_ID = \"I360_SERVER_ID\";\n\nconst day = 24 * 60 * 60 * 1000;\nconst getTestData = () => ({\n status: !window['i360LicenseFail'],\n ...(window['i360LicenseFail'] ? {} : {id: \"some_valid_id\"}),\n license_type: 'imunify360',\n expiration: (Date.now() + 2 * day) / 1000,\n user_limit: 10,\n user_count: 11,\n redirect_url: 'https://cln.cloudlinux.com',\n\n // message: 'test message from CLN',\n upgrade_url: 'https://ui-test-server:55555/test/test.html',\n upgrade_url_360: 'https://ui-test-server:55555/test/test.html',\n ip_license: false,\n eligible_for_imunify_patch: true,\n});\n\n@Injectable()\nexport class LicenseState {\n license: ZonedBehaviorSubject<License> = new ZonedBehaviorSubject(new License({status: true}));\n Product = Product;\n\n eula: ZonedBehaviorSubject<Eula> = new ZonedBehaviorSubject(new Eula(null));\n eulaFailed = this.eula.pipe(map((eula: Eula) => eula.isFailed()));\n\n constructor(\n private authState: AuthState,\n ) {}\n\n getLicense(data: {}): License {\n return new License(testMode(this.constructor.name) ? getTestData() : data);\n }\n\n getServerIdForTestMode() {\n return localStorage.getItem(SERVER_ID)\n }\n}\n","import { AgentResponse, DataFrom, ListResponseData, RequestParams } from './misc';\n\n\n\nexport class ReputationAPI {\n static checkDomains = (params = {}) => new RequestParams(['check-domains'], params);\n static infectedDomains = (params = {}) => {\n return new RequestParams<DataFrom<ReputationAgentResponse>>\n (['infected-domains'], params);\n }\n}\n\ntype ReputationAgentResponse = AgentResponse<ListResponseData<ReputationBackendItem>>;\n\nexport enum Vendor {\n google = 'google-safe-browsing',\n spamhaus = 'spamhaus',\n yandex = 'yandex-safe-browsing',\n phishtank = 'phishtank',\n openphish = 'openphish',\n mitchellkrogza = 'mitchellkrogza',\n}\n\nconst vendorToLinkMapping = {\n [Vendor.google]: 'https://developers.google.com/safe-browsing/',\n [Vendor.yandex]: 'https://tech.yandex.ru/safebrowsing/',\n [Vendor.spamhaus]: 'https://www.spamhaus.org/',\n [Vendor.phishtank]: 'https://www.phishtank.com/',\n [Vendor.openphish]: 'https://openphish.com/',\n [Vendor.mitchellkrogza]: 'https://github.com/mitchellkrogza/Phishing.Database/',\n};\n\nconst vendorToReadableTextMapping = {\n [Vendor.google]: 'Google',\n [Vendor.yandex]: 'Yandex',\n [Vendor.spamhaus]: 'Spamhaus',\n [Vendor.phishtank]: 'PhishTank',\n [Vendor.openphish]: 'OpenPhish',\n [Vendor.mitchellkrogza]: 'Mitchell Krog',\n};\n\nexport interface ReputationBackendItem {\n username: string;\n domain: string;\n threats: Array<{\n type: string | null,\n vendor: Vendor,\n timestamp: number, // seconds\n }>;\n}\n\nexport class ReputationItem {\n username: string;\n domain: string;\n threats: Array<{\n type: string | null,\n vendor: string,\n timestamp: number, // milliseconds\n link: string;\n }>;\n public constructor(data: ReputationBackendItem) {\n this.username = data.username;\n this.domain = data.domain;\n this.threats = data.threats.map(threat => ({\n vendor: vendorToReadableTextMapping[threat.vendor] || threat.vendor,\n timestamp: threat.timestamp * 1000,\n type: threat.type || 'THREAT_TYPE_UNSPECIFIED',\n link: vendorToLinkMapping[threat.vendor],\n }));\n }\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import { format } from 'd3-format';\n\nexport const ciFormatter = format('.3~s');\n\n// http://www.cse.yorku.ca/~oz/hash.html\n// djb2\nexport function hashCode(s: string) {\n if (!s) {\n return 0;\n }\n return s.split('').reduce(function(hash, c) {\n // eslint-disable-next-line no-bitwise\n return (((hash << 5) + hash) + c.charCodeAt(0));\n }, 0);\n}\n\nexport function getArrayInObject(arr, key) {\n if (arr && arr[key]\n && typeof arr[key] !== 'undefined' && (arr[key] || []).length) {\n return arr[key];\n }\n return null;\n}\n\nexport function getCaller() {\n return (new Error()).stack?.split(\"\\n\")[3].trim().split(\" \")[2] || '';\n}\n\nexport function filterObject(obj, fn) {\n return Object.fromEntries(Object.entries(obj).filter(fn))\n}\n\nexport function extractUrlParamValue(url: string, paramName: string): string {\n if (url?.includes('?')) {\n const queryParams = url.split('?')[1];\n const urlParams = new URLSearchParams(queryParams);\n\n if (urlParams.has(paramName)) {\n return urlParams.get(paramName) || '';\n }\n }\n\n return '';\n}\n","import { ResponseDataExceptItems } from '../misc';\nimport { LicenseType, LicenseInBackend } from '../license';\n\nexport const license: LicenseInBackend = {\n id: '123',\n license_type: LicenseType.imunify360,\n user_count: 5,\n message: '',\n expiration: null,\n pricing: {\n im_av: {standard: '$6'},\n im_360_1: {standard: '$1'},\n im_360_30: {standard: '$30'},\n im_360_250: {standard: '$250'},\n im_360_unlimited: {standard: '$1000'}\n },\n user_limit: 2147483647,\n status: true,\n redirect_url: 'https://cln.cloudlinux.com/clweb/public/imconv.xhtml?id=qwertyuiop',\n upgrade_url_360: 'upgrade_url_360_url',\n eligible_for_imunify_patch: true,\n};\n\nexport const DEFAULT_DATA: ResponseDataExceptItems = {\n strategy: 'PRIMARY_IDS',\n version: 'testing_ver',\n warnings: [],\n eula: null,\n license,\n};\n\nexport const DEFAULT_DATA_FREE_LICENSE: ResponseDataExceptItems = {\n ...DEFAULT_DATA,\n license: {\n ...license,\n license_type: LicenseType.imunifyAV,\n },\n};\n\nexport const noItemsResponse = {data: DEFAULT_DATA};\nexport const emptyListResponse = {data: {...DEFAULT_DATA, items: []}};\nexport const emptyResponse = {data: {...DEFAULT_DATA, items: null}};\n","import { AgentResponse, DataFrom, ListResponseData, RequestParams } from './misc';\n\nexport enum RulePlugin {\n ossec = 'ossec',\n modsec = 'modsec',\n lfd = 'lfd',\n cphulk = 'cphulk',\n unknown = 'unknown',\n cl_dos = 'cl_dos',\n enhanced_dos = 'enhanced_dos',\n control_panel_protector = 'control_panel_protector',\n}\n\nexport class BlockedRulesAPI {\n\n static list = (params: Object) =>\n new RequestParams<DataFrom<BlockedRulesAgentResponse>>\n (['rules', 'list-disabled'], params)\n\n static enable(rule: BlockedRule) {\n return new RequestParams(['rules', 'enable'], {\n id: rule.id,\n plugin: rule.plugin,\n });\n }\n\n static disable(rule: BlockedRule) {\n return new RequestParams(['rules', 'disable'], {\n id: rule.id,\n plugin: rule.plugin,\n name: rule.name,\n domains: rule.domains,\n });\n }\n}\n\ninterface BlockedRuleInBackend {\n domains?: string[] | string | null;\n id: string;\n name: string;\n plugin: RulePlugin;\n}\n\nexport class BlockedRule {\n id: string;\n plugin: RulePlugin;\n name: string;\n domains: string[];\n\n constructor({id, plugin, name, domains}: BlockedRuleInBackend) {\n this.id = id;\n this.plugin = plugin;\n this.name = name;\n this.setDomains(domains);\n }\n\n domainsAllowed() {\n return this.plugin === 'modsec';\n }\n\n setDomains(domains?: string | string[] | null) {\n if (!domains) {\n this.domains = [];\n return;\n }\n if (Array.isArray(domains)) {\n this.domains = domains;\n return;\n }\n if ('string' === typeof domains) {\n this.domains = domains.split(/[,\\n\\s]+/);\n }\n }\n}\n\ntype BlockedRulesAgentResponse = AgentResponse<ListResponseData<BlockedRuleInBackend>>;\n","import {\n AgentResponse,\n AgentResponseData,\n DataFrom,\n ListResponseData,\n RequestParams,\n} from './misc';\nimport { BlockedRule, RulePlugin } from './blocked-rules';\nimport { toIpListOrNull, Country, IPList } from './lists';\n\n\nexport class IncidentsAPI {\n static incidents = (params = {}) => new RequestParams<DataFrom<IncidentsAgentResponse>>\n (['get'], params)\n}\n\n\nconst severity = {\n [RulePlugin.modsec]: {\n low: [5, 7],\n medium: [4, 4],\n high: [0, 3],\n },\n [RulePlugin.ossec]: {\n low: [0, 3],\n medium: [4, 10],\n high: [11, 15],\n },\n};\n\n\nfunction getSeverityIconClass(incident: Incident) {\n if (incident.plugin in severity) {\n return Object.keys(<any>severity[<any>incident.plugin]).find(key => {\n let [min, max] = <any>severity[<any>incident.plugin][key];\n if (incident.severity === null) {\n return false;\n }\n return min <= incident.severity && max >= incident.severity;\n }) || 'hidden';\n }\n return 'hidden';\n}\n\ninterface IncidentInBackend {\n abuser: string | null;\n country: Partial<Country> | null; // why not string | null\n description: string;\n id: number;\n listname: IPList | null;\n name: string;\n plugin: RulePlugin;\n times: number;\n rule: string | null;\n severity: number | null;\n timestamp: number;\n purpose?: IPList | null;\n domain: string | null;\n}\n\nexport class Incident {\n public id: number;\n public name: string;\n public abuser: string | null;\n public description: string;\n public plugin: RulePlugin;\n public times: number;\n public rule: string | null;\n public severity: number | null;\n public severityIconClass: string;\n public country: Partial<Country>;\n public purpose: IPList | null;\n public listname: IPList | null;\n public timestamp: any;\n public canExpand = true;\n public domain: string | null;\n\n // additional params\n constructor(data: IncidentInBackend) {\n // sometimes in the response abuser is ''\n this.abuser = data.abuser || null;\n this.country = data.country || {code: ''};\n this.description = data.description;\n this.id = data.id;\n this.listname = toIpListOrNull(data.listname);\n this.name = data.name;\n this.plugin = data.plugin;\n this.times = data.times;\n this.rule = data.rule;\n this.purpose = (data.purpose) ? data.purpose : null;\n this.severity = data.severity;\n this.timestamp = data.timestamp;\n this.severityIconClass = getSeverityIconClass(this);\n this.domain = data.domain;\n }\n\n getRule(): BlockedRule {\n return new BlockedRule({\n id: this.rule!,\n name: this.name,\n plugin: this.plugin,\n domains: '',\n });\n }\n}\ntype IncidentsAgentResponse = AgentResponse<ListResponseData<IncidentInBackend>>;\n","import { AgentResponse,\n DataFrom,\n ListResponseData,\n RequestParams,\n ResponseDataExceptItems } from './misc';\nimport { OldListCountsResponse } from './blocked-ports';\n\n// FIXME: arguments are a bit inconsistent\n\nexport class ListsAPI {\n\n static getAllList({params = {}}: {params?: object}) {\n let method = ['ip-list', 'local', 'list'];\n return new RequestParams<DataFrom<IPListLocalAgentResponse>>(method, {\n ...params,\n });\n }\n\n static addOrUpdateItem({list, type, value, comment, scope, expiration, fullAccess,endpointType= 'add'}: {\n list: IPList | null;\n type?: ItemType;\n value: string | string[];\n comment?: string;\n scope?: string;\n expiration?: number;\n fullAccess?: boolean | null;\n endpointType?: 'add' | 'edit'\n }) {\n type = type || 'ip';\n list = type !== \"country\" && list === IPList.black ? IPList.drop : list;\n // TODO incident part show old list names\n const method = type === \"country\" && list\n ? [IPListMix[list] + 'list', type, endpointType]\n : [ 'ip-list', 'local', 'add'];\n return new RequestParams(\n method,\n {\n items: typeof value === 'string' ? [value] : value,\n ...(comment ? {comment} : {}),\n ...(scope ? {scope} : {}),\n ...(expiration ? {expiration} : {}),\n ...(list === IPList.white ? {full_access: fullAccess} : {}),\n ...(type === \"ip\" && list ? {purpose: list} : {}),\n },\n );\n }\n\n static deleteItems(\n {items, itemType, list}: {items: string[], itemType: ItemType, list: IPList | null},\n ) {\n list = itemType === \"country\" && list ? IPListMix[list] : list;\n const method = itemType === \"ip\"\n ? ['ip-list', 'local', 'delete']\n : [list + 'list', itemType, 'delete'];\n return new RequestParams(method, {\n items,\n ...(itemType === \"ip\" && list ? {purpose: list} : {}),\n });\n }\n\n static editItem({items, list, comment, type, scope, expiration, fullAccess}: {\n items: string[];\n list: IPList | null;\n comment?: string;\n type: string;\n scope?: string;\n expiration?: number | null;\n fullAccess?: boolean;\n }) {\n return new RequestParams<ResponseDataExceptItems>(\n [(list ? IPListMix[list] : null) + 'list', type, 'edit'],\n {\n items,\n ...(comment !== undefined ? {comment} : {}),\n ...(expiration !== undefined ? {expiration} : {}),\n ...(scope ? {scope} : {}),\n ...(list === IPList.white ? {full_access: fullAccess} : {}),\n });\n }\n}\n\n\nexport type ItemType = 'ip' | 'country';\n\nexport interface Country {\n code: string;\n\n // unused\n name: string;\n id?: string;\n}\n\nexport enum IPScope {\n local = 'local',\n group = 'group',\n}\n\nexport enum IPListMix {\n drop = 'black',\n black = 'black',\n white = 'white',\n captcha = 'gray',\n splashscreen = 'gray',\n}\n\nexport enum IPList {\n drop = 'drop',\n white = 'white',\n captcha = 'captcha',\n splashscreen = 'splashscreen',\n\n // for incident and proactive defense\n black = 'black',\n gray = 'gray',\n}\n\nexport const toIPList = (list: string): IPList => {\n list = list.toLowerCase();\n if (list in IPList) {\n return list as IPList;\n } else {\n throw new Error(`Unknown list ${list}`);\n }\n};\nexport const toIpListOrNull = (list: string | null): IPList | null => {\n return list ? toIPList(list) : null;\n};\n\n// FIXME: it should be IPListItem and CountryListItem\nexport class ListItem {\n public ip: any;\n public list: IPList | null;\n public checked: boolean = false;\n public importedFrom: string | null;\n public scope: IPScope | null;\n public comment: string;\n public country: Partial<Country>;\n public fullAccess: boolean = false;\n public autoWhitelisted: boolean | undefined = false;\n public expiration: number | null;\n public isCountry: boolean;\n public type: ItemType;\n\n constructor(item: ResponseItem) {\n this.ip = item.ip;\n this.scope = item.scope || null;\n this.importedFrom = item.imported_from || null;\n this.list = toIpListOrNull(item.purpose);\n this.comment = item.comment || '';\n this.fullAccess = Boolean(item.full_access);\n this.autoWhitelisted = Boolean(item.auto_whitelisted);\n this.expiration = item.expiration || 0; // TTL\n this.country = item.country || {code: '', name: ''};\n this.isCountry = !this.ip && Boolean(this.country.code);\n this.type = this.isCountry ? 'country' : 'ip';\n }\n}\n\ninterface ResponseItem {\n imported_from: string | null;\n ip: string | null;\n scope: IPScope | null;\n purpose: string | null; // responses are uppercase, but in incidents it is lowercase\n auto_whitelisted: boolean | null;\n comment: string | null;\n country: Partial<Country> | null;\n full_access: boolean | null;\n expiration: number | null;\n\n // unused\n deep: number | null;\n ctime?: number;\n network_address: number | null;\n netmask: number | null;\n version: number | null;\n manual: boolean | null;\n}\n\ninterface ResponseOldListItem {\n listname: string | null;\n imported_from?: string | null;\n ip?: string;\n scope?: IPScope | null;\n auto_whitelisted?: boolean | null;\n comment: string | null;\n country: Partial<Country> | null;\n full_access?: boolean | null;\n expiration?: number | null;\n deep?: number | null;\n ctime?: number;\n network_address?: number;\n netmask?: number;\n version?: number;\n manual?: boolean;\n}\n\nexport interface CountsListResponseData<E> extends ListResponseData<E> {\n counts: {\n cloud: {\n white: number,\n captcha: number,\n drop: number,\n splashscreen: number,\n },\n server: {\n white: number,\n captcha: number,\n drop: number,\n splashscreen: number,\n }\n };\n}\n\nexport interface ListsResponseData extends CountsListResponseData<ResponseItem> {}\nexport interface OldListsResponseData extends OldListCountsResponse<ResponseOldListItem> {}\n\ntype ListsAgentResponse = AgentResponse<OldListsResponseData>;\ntype IPListLocalAgentResponse = AgentResponse<ListsResponseData>;\n\nexport type GroupServerIdResponseInServer = {\n status: string,\n group_id: string | null,\n};\n","const DEFAULT_ENVIRONMENT = 'production';\n\nexport { DEFAULT_ENVIRONMENT };\n","// This is a magic string replaced by rollup\n\nconst SDK_VERSION = \"8.55.0\" ;\n\nexport { SDK_VERSION };\n","import { SDK_VERSION } from './version.js';\n\n/** Get's the global object for the current JavaScript runtime */\nconst GLOBAL_OBJ = globalThis ;\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__[]` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(name, creator, obj) {\n const gbl = (obj || GLOBAL_OBJ) ;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const versionedCarrier = (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\n return versionedCarrier[name] || (versionedCarrier[name] = creator());\n}\n\nexport { GLOBAL_OBJ, getGlobalSingleton };\n","import { SDK_VERSION } from './utils-hoist/version.js';\nimport { GLOBAL_OBJ } from './utils-hoist/worldwide.js';\n\n/**\n * An object that contains globally accessible properties and maintains a scope stack.\n * @hidden\n */\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nfunction getMainCarrier() {\n // This ensures a Sentry carrier exists\n getSentryCarrier(GLOBAL_OBJ);\n return GLOBAL_OBJ;\n}\n\n/** Will either get the existing sentry carrier, or create a new one. */\nfunction getSentryCarrier(carrier) {\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n\n // For now: First SDK that sets the .version property wins\n __SENTRY__.version = __SENTRY__.version || SDK_VERSION;\n\n // Intentionally populating and returning the version of \"this\" SDK instance\n // rather than what's set in .version so that \"this\" SDK always gets its carrier\n return (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\n}\n\nexport { getMainCarrier, getSentryCarrier };\n","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n case '[object WebAssembly.Exception]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isParameterizedString(wat) {\n return (\n typeof wat === 'object' &&\n wat !== null &&\n '__sentry_template_string__' in wat &&\n '__sentry_template_values__' in wat\n );\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isVueViewModel(wat) {\n // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n return !!(typeof wat === 'object' && wat !== null && ((wat ).__isVue || (wat )._isVue));\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isParameterizedString, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable, isVueViewModel };\n","import { isString } from './is.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction htmlTreeAsString(\n elem,\n options = {},\n) {\n if (!elem) {\n return '<unknown>';\n }\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem ;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '<unknown>';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el, keyAttrs) {\n const elem = el\n\n;\n\n const out = [];\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n // @ts-expect-error WINDOW has HTMLElement\n if (WINDOW.HTMLElement) {\n // If using the component name annotation plugin, this value may be available on the DOM node\n if (elem instanceof HTMLElement && elem.dataset) {\n if (elem.dataset['sentryComponent']) {\n return elem.dataset['sentryComponent'];\n }\n if (elem.dataset['sentryElement']) {\n return elem.dataset['sentryElement'];\n }\n }\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n const className = elem.className;\n if (className && isString(className)) {\n const classes = className.split(/\\s+/);\n for (const c of classes) {\n out.push(`.${c}`);\n }\n }\n }\n const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n for (const k of allowedAttrs) {\n const attr = elem.getAttribute(k);\n if (attr) {\n out.push(`[${k}=\"${attr}\"]`);\n }\n }\n\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n try {\n return WINDOW.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existence of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement<Element>('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n *\n * @deprecated This method is deprecated and will be removed in the next major version.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getDomElement(selector) {\n if (WINDOW.document && WINDOW.document.querySelector) {\n return WINDOW.document.querySelector(selector) ;\n }\n return null;\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` or `data-sentry-element` attribute with `data-sentry-component` taking\n * precedence. This attribute is added at build-time by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nfunction getComponentName(elem) {\n // @ts-expect-error WINDOW has HTMLElement\n if (!WINDOW.HTMLElement) {\n return null;\n }\n\n let currentElem = elem ;\n const MAX_TRAVERSE_HEIGHT = 5;\n for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n if (!currentElem) {\n return null;\n }\n\n if (currentElem instanceof HTMLElement) {\n if (currentElem.dataset['sentryComponent']) {\n return currentElem.dataset['sentryComponent'];\n }\n if (currentElem.dataset['sentryElement']) {\n return currentElem.dataset['sentryElement'];\n }\n }\n\n currentElem = currentElem.parentNode;\n }\n\n return null;\n}\n\nexport { getComponentName, getDomElement, getLocationHref, htmlTreeAsString };\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { getGlobalSingleton, GLOBAL_OBJ } from './worldwide.js';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nconst CONSOLE_LEVELS = [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'assert',\n 'trace',\n] ;\n\n/** This may be mutated by the console instrumentation. */\nconst originalConsoleMethods\n\n = {};\n\n/** JSDoc */\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console ;\n const wrappedFuncs = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) ;\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level] ;\n wrappedFuncs[level] = console[level] ;\n console[level] = originalConsoleMethod;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] ;\n });\n }\n}\n\nfunction makeLogger() {\n let enabled = false;\n const logger = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n isEnabled: () => enabled,\n };\n\n if (DEBUG_BUILD) {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = (...args) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger ;\n}\n\n/**\n * This is a logger singleton which either logs things or no-ops if logging is not enabled.\n * The logger is a singleton on the carrier, to ensure that a consistent logger is used throughout the SDK.\n */\nconst logger = getGlobalSingleton('logger', makeLogger);\n\nexport { CONSOLE_LEVELS, consoleSandbox, logger, originalConsoleMethods };\n","import { isVueViewModel, isString, isRegExp } from './is.js';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nfunction truncate(str, max = 0) {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nfunction snipLine(line, colno) {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\nfunction safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/8981\n if (isVueViewModel(value)) {\n output.push('[VueViewModel]');\n } else {\n output.push(String(value));\n }\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nfunction isMatchingPattern(\n value,\n pattern,\n requireExactStringMatch = false,\n) {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nfunction stringMatchesSomePattern(\n testString,\n patterns = [],\n requireExactStringMatch = false,\n) {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n\nexport { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate };\n","import { htmlTreeAsString } from './browser.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { isError, isEvent, isInstanceOf, isElement, isPlainObject, isPrimitive } from './is.js';\nimport { logger } from './logger.js';\nimport { truncate } from './string.js';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, <other\n * args>)` or `origMethod.apply(this, [<other args>])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] ;\n const wrapped = replacementFactory(original) ;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n markFunctionWrapped(wrapped, original);\n }\n\n try {\n source[name] = wrapped;\n } catch (e) {\n DEBUG_BUILD && logger.log(`Failed to replace method \"${name}\" in object`, source);\n }\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n try {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n } catch (o_O) {\n DEBUG_BUILD && logger.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\n }\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n try {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n } catch (o_O) {} // eslint-disable-line no-empty\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n *\n * @deprecated This function is deprecated and will be removed in the next major version of the SDK.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction urlEncode(object) {\n return Object.entries(object)\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argument itself, when value is neither an Event nor\n * an Error.\n */\nfunction convertToPlainObject(value)\n\n {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj\n\n = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '<unknown>';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj )[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n const firstKey = keys[0];\n\n if (!firstKey) {\n return '[object has no keys]';\n }\n\n if (firstKey.length >= maxLength) {\n return truncate(firstKey, maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nfunction dropUndefinedKeys(inputValue) {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if (isPojo(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.getOwnPropertyNames(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue ;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue ;\n }\n\n return inputValue;\n}\n\nfunction isPojo(input) {\n if (!isPlainObject(input)) {\n return false;\n }\n\n try {\n const name = (Object.getPrototypeOf(input) ).constructor.name;\n return !name || name === 'Object';\n } catch (e2) {\n return true;\n }\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n // this will catch both undefined and null\n case wat == undefined:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat ).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode };\n","import { GLOBAL_OBJ } from './worldwide.js';\n\nconst ONE_SECOND_IN_MS = 1000;\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n *\n * TODO(v8): Return type should be rounded.\n */\nfunction dateTimestampInSeconds() {\n return Date.now() / ONE_SECOND_IN_MS;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction createUnixTimestampInSecondsFunc() {\n const { performance } = GLOBAL_OBJ ;\n if (!performance || !performance.now) {\n return dateTimestampInSeconds;\n }\n\n // Some browser and environments don't have a timeOrigin, so we fallback to\n // using Date.now() to compute the starting time.\n const approxStartingTimeOrigin = Date.now() - performance.now();\n const timeOrigin = performance.timeOrigin == undefined ? approxStartingTimeOrigin : performance.timeOrigin;\n\n // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n //\n // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n // correct for this.\n // See: https://github.com/getsentry/sentry-javascript/issues/2590\n // See: https://github.com/mdn/content/issues/4713\n // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n return () => {\n return (timeOrigin + performance.now()) / ONE_SECOND_IN_MS;\n };\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nconst timestampInSeconds = createUnixTimestampInSecondsFunc();\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n *\n * @deprecated This variable will be removed in the next major version.\n */\nlet _browserPerformanceTimeOriginMode;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nconst browserPerformanceTimeOrigin = (() => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = GLOBAL_OBJ ;\n if (!performance || !performance.now) {\n // eslint-disable-next-line deprecation/deprecation\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n // eslint-disable-next-line deprecation/deprecation\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n // eslint-disable-next-line deprecation/deprecation\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n // eslint-disable-next-line deprecation/deprecation\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds };\n","import { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n const gbl = GLOBAL_OBJ ;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n let getRandomByte = () => Math.random() * 16;\n try {\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n if (crypto && crypto.getRandomValues) {\n getRandomByte = () => {\n // crypto.getRandomValues might return undefined instead of the typed array\n // in old Chromium versions (e.g. 23.0.1235.0 (151422))\n // However, `typedArray` is still filled in-place.\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#typedarray\n const typedArray = new Uint8Array(1);\n crypto.getRandomValues(typedArray);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return typedArray[0];\n };\n }\n } catch (_) {\n // some runtimes can crash invoking crypto\n // https://github.com/getsentry/sentry-javascript/issues/8935\n }\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '<unknown>';\n }\n return eventId || '<unknown>';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\nfunction _parseInt(input) {\n return parseInt(input || '', 10);\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = _parseInt(match[1]);\n const minor = _parseInt(match[2]);\n const patch = _parseInt(match[3]);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line) => snipLine(line, 0));\n\n // We guard here to ensure this is not larger than the existing number of lines\n const lineIndex = Math.min(maxLines - 1, sourceLine);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n frame.context_line = snipLine(lines[lineIndex], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n if (isAlreadyCaptured(exception)) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception , '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\nfunction isAlreadyCaptured(exception) {\n try {\n return (exception ).__sentry_captured__;\n } catch (e) {} // eslint-disable-line no-empty\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n *\n * @deprecated This function has been deprecated and will not be replaced.\n */\nfunction arrayify(maybeArray) {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 };\n","import './utils-hoist/debug-build.js';\nimport './utils-hoist/logger.js';\nimport { dropUndefinedKeys } from './utils-hoist/object.js';\nimport { timestampInSeconds } from './utils-hoist/time.js';\nimport { uuid4 } from './utils-hoist/misc.js';\nimport './utils-hoist/syncpromise.js';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nfunction makeSession(context) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nfunction updateSession(session, context = {}) {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.abnormal_mechanism) {\n session.abnormal_mechanism = context.abnormal_mechanism;\n }\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nfunction closeSession(session, status) {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session) {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n abnormal_mechanism: session.abnormal_mechanism,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n\nexport { closeSession, makeSession, updateSession };\n","import { uuid4 } from './misc.js';\n\n/**\n * Returns a new minimal propagation context.\n *\n * @deprecated Use `generateTraceId` and `generateSpanId` instead.\n */\nfunction generatePropagationContext() {\n return {\n traceId: generateTraceId(),\n spanId: generateSpanId(),\n };\n}\n\n/**\n * Generate a random, valid trace ID.\n */\nfunction generateTraceId() {\n return uuid4();\n}\n\n/**\n * Generate a random, valid span ID.\n */\nfunction generateSpanId() {\n return uuid4().substring(16);\n}\n\nexport { generatePropagationContext, generateSpanId, generateTraceId };\n","/**\n * Shallow merge two objects.\n * Does not mutate the passed in objects.\n * Undefined/empty values in the merge object will overwrite existing values.\n *\n * By default, this merges 2 levels deep.\n */\nfunction merge(initialObj, mergeObj, levels = 2) {\n // If the merge value is not an object, or we have no merge levels left,\n // we just set the value to the merge value\n if (!mergeObj || typeof mergeObj !== 'object' || levels <= 0) {\n return mergeObj;\n }\n\n // If the merge object is an empty object, and the initial object is not undefined, we return the initial object\n if (initialObj && mergeObj && Object.keys(mergeObj).length === 0) {\n return initialObj;\n }\n\n // Clone object\n const output = { ...initialObj };\n\n // Merge values into output, resursively\n for (const key in mergeObj) {\n if (Object.prototype.hasOwnProperty.call(mergeObj, key)) {\n output[key] = merge(output[key], mergeObj[key], levels - 1);\n }\n }\n\n return output;\n}\n\nexport { merge };\n","import { addNonEnumerableProperty } from '../utils-hoist/object.js';\n\nconst SCOPE_SPAN_FIELD = '_sentrySpan';\n\n/**\n * Set the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nfunction _setSpanForScope(scope, span) {\n if (span) {\n addNonEnumerableProperty(scope , SCOPE_SPAN_FIELD, span);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete (scope )[SCOPE_SPAN_FIELD];\n }\n}\n\n/**\n * Get the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nfunction _getSpanForScope(scope) {\n return scope[SCOPE_SPAN_FIELD];\n}\n\nexport { _getSpanForScope, _setSpanForScope };\n","import { updateSession } from './session.js';\nimport { isPlainObject } from './utils-hoist/is.js';\nimport { logger } from './utils-hoist/logger.js';\nimport { uuid4 } from './utils-hoist/misc.js';\nimport { generateTraceId, generateSpanId } from './utils-hoist/propagationContext.js';\nimport { dateTimestampInSeconds } from './utils-hoist/time.js';\nimport { merge } from './utils/merge.js';\nimport { _setSpanForScope, _getSpanForScope } from './utils/spanOnScope.js';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information.\n */\nclass ScopeClass {\n /** Flag if notifying is happening. */\n\n /** Callback for client to receive scope changes. */\n\n /** Callback list that will be called during event processing. */\n\n /** Array of breadcrumbs. */\n\n /** User */\n\n /** Tags */\n\n /** Extra */\n\n /** Contexts */\n\n /** Attachments */\n\n /** Propagation Context for distributed tracing */\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n\n /** Fingerprint */\n\n /** Severity */\n\n /**\n * Transaction Name\n *\n * IMPORTANT: The transaction name on the scope has nothing to do with root spans/transaction objects.\n * It's purpose is to assign a transaction to the scope that's added to non-transaction events.\n */\n\n /** Session */\n\n /** Request Mode Session Status */\n // eslint-disable-next-line deprecation/deprecation\n\n /** The client on this scope */\n\n /** Contains the last event id of a captured event. */\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = {\n traceId: generateTraceId(),\n spanId: generateSpanId(),\n };\n }\n\n /**\n * @inheritDoc\n */\n clone() {\n const newScope = new ScopeClass();\n newScope._breadcrumbs = [...this._breadcrumbs];\n newScope._tags = { ...this._tags };\n newScope._extra = { ...this._extra };\n newScope._contexts = { ...this._contexts };\n if (this._contexts.flags) {\n // We need to copy the `values` array so insertions on a cloned scope\n // won't affect the original array.\n newScope._contexts.flags = {\n values: [...this._contexts.flags.values],\n };\n }\n\n newScope._user = this._user;\n newScope._level = this._level;\n newScope._session = this._session;\n newScope._transactionName = this._transactionName;\n newScope._fingerprint = this._fingerprint;\n newScope._eventProcessors = [...this._eventProcessors];\n newScope._requestSession = this._requestSession;\n newScope._attachments = [...this._attachments];\n newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n newScope._propagationContext = { ...this._propagationContext };\n newScope._client = this._client;\n newScope._lastEventId = this._lastEventId;\n\n _setSpanForScope(newScope, _getSpanForScope(this));\n\n return newScope;\n }\n\n /**\n * @inheritDoc\n */\n setClient(client) {\n this._client = client;\n }\n\n /**\n * @inheritDoc\n */\n setLastEventId(lastEventId) {\n this._lastEventId = lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n getClient() {\n return this._client ;\n }\n\n /**\n * @inheritDoc\n */\n lastEventId() {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n addScopeListener(callback) {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n addEventProcessor(callback) {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n // If null is passed we want to unset everything, but still define keys,\n // so that later down in the pipeline any existing values are cleared.\n this._user = user || {\n email: undefined,\n id: undefined,\n ip_address: undefined,\n username: undefined,\n };\n\n if (this._session) {\n updateSession(this._session, { user });\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getUser() {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n getRequestSession() {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n setRequestSession(requestSession) {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setFingerprint(fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setLevel(level) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the transaction name on the scope so that the name of e.g. taken server route or\n * the page location is attached to future events.\n *\n * IMPORTANT: Calling this function does NOT change the name of the currently active\n * root span. If you want to change the name of the active root span, use\n * `Sentry.updateSpanName(rootSpan, 'new name')` instead.\n *\n * By default, the SDK updates the scope's transaction name automatically on sensible\n * occasions, such as a page navigation or when handling a new request on the server.\n */\n setTransactionName(name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setSession(session) {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSession() {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n update(captureContext) {\n if (!captureContext) {\n return this;\n }\n\n const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n const [scopeInstance, requestSession] =\n scopeToMerge instanceof Scope\n ? // eslint-disable-next-line deprecation/deprecation\n [scopeToMerge.getScopeData(), scopeToMerge.getRequestSession()]\n : isPlainObject(scopeToMerge)\n ? [captureContext , (captureContext ).requestSession]\n : [];\n\n const { tags, extra, user, contexts, level, fingerprint = [], propagationContext } = scopeInstance || {};\n\n this._tags = { ...this._tags, ...tags };\n this._extra = { ...this._extra, ...extra };\n this._contexts = { ...this._contexts, ...contexts };\n\n if (user && Object.keys(user).length) {\n this._user = user;\n }\n\n if (level) {\n this._level = level;\n }\n\n if (fingerprint.length) {\n this._fingerprint = fingerprint;\n }\n\n if (propagationContext) {\n this._propagationContext = propagationContext;\n }\n\n if (requestSession) {\n this._requestSession = requestSession;\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clear() {\n // client is not cleared here on purpose!\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._session = undefined;\n _setSpanForScope(this, undefined);\n this._attachments = [];\n this.setPropagationContext({ traceId: generateTraceId() });\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n\n this._breadcrumbs.push(mergedBreadcrumb);\n if (this._breadcrumbs.length > maxCrumbs) {\n this._breadcrumbs = this._breadcrumbs.slice(-maxCrumbs);\n if (this._client) {\n this._client.recordDroppedEvent('buffer_overflow', 'log_item');\n }\n }\n\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getLastBreadcrumb() {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n clearBreadcrumbs() {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addAttachment(attachment) {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clearAttachments() {\n this._attachments = [];\n return this;\n }\n\n /** @inheritDoc */\n getScopeData() {\n return {\n breadcrumbs: this._breadcrumbs,\n attachments: this._attachments,\n contexts: this._contexts,\n tags: this._tags,\n extra: this._extra,\n user: this._user,\n level: this._level,\n fingerprint: this._fingerprint || [],\n eventProcessors: this._eventProcessors,\n propagationContext: this._propagationContext,\n sdkProcessingMetadata: this._sdkProcessingMetadata,\n transactionName: this._transactionName,\n span: _getSpanForScope(this),\n };\n }\n\n /**\n * @inheritDoc\n */\n setSDKProcessingMetadata(newData) {\n this._sdkProcessingMetadata = merge(this._sdkProcessingMetadata, newData, 2);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setPropagationContext(\n context,\n ) {\n this._propagationContext = {\n // eslint-disable-next-line deprecation/deprecation\n spanId: generateSpanId(),\n ...context,\n };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getPropagationContext() {\n return this._propagationContext;\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint) {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture exception!');\n return eventId;\n }\n\n const syntheticException = new Error('Sentry syntheticException');\n\n this._client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(message, level, hint) {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture message!');\n return eventId;\n }\n\n const syntheticException = new Error(message);\n\n this._client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint) {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture event!');\n return eventId;\n }\n\n this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n return eventId;\n }\n\n /**\n * This will be called on every set call.\n */\n _notifyScopeListeners() {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n}\n\n/**\n * Holds additional event information.\n */\nconst Scope = ScopeClass;\n\n/**\n * Holds additional event information.\n */\n\nexport { Scope };\n","import { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes.js';\nimport { Scope } from '../scope.js';\nimport { isThenable } from '../utils-hoist/is.js';\nimport { getMainCarrier, getSentryCarrier } from '../carrier.js';\n\n/**\n * This is an object that holds a stack of scopes.\n */\nclass AsyncContextStack {\n\n constructor(scope, isolationScope) {\n let assignedScope;\n if (!scope) {\n assignedScope = new Scope();\n } else {\n assignedScope = scope;\n }\n\n let assignedIsolationScope;\n if (!isolationScope) {\n assignedIsolationScope = new Scope();\n } else {\n assignedIsolationScope = isolationScope;\n }\n\n // scope stack for domains or the process\n this._stack = [{ scope: assignedScope }];\n this._isolationScope = assignedIsolationScope;\n }\n\n /**\n * Fork a scope for the stack.\n */\n withScope(callback) {\n const scope = this._pushScope();\n\n let maybePromiseResult;\n try {\n maybePromiseResult = callback(scope);\n } catch (e) {\n this._popScope();\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n // @ts-expect-error - isThenable returns the wrong type\n return maybePromiseResult.then(\n res => {\n this._popScope();\n return res;\n },\n e => {\n this._popScope();\n throw e;\n },\n );\n }\n\n this._popScope();\n return maybePromiseResult;\n }\n\n /**\n * Get the client of the stack.\n */\n getClient() {\n return this.getStackTop().client ;\n }\n\n /**\n * Returns the scope of the top stack.\n */\n getScope() {\n return this.getStackTop().scope;\n }\n\n /**\n * Get the isolation scope for the stack.\n */\n getIsolationScope() {\n return this._isolationScope;\n }\n\n /**\n * Returns the topmost scope layer in the order domain > local > process.\n */\n getStackTop() {\n return this._stack[this._stack.length - 1] ;\n }\n\n /**\n * Push a scope to the stack.\n */\n _pushScope() {\n // We want to clone the content of prev scope\n const scope = this.getScope().clone();\n this._stack.push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * Pop a scope from the stack.\n */\n _popScope() {\n if (this._stack.length <= 1) return false;\n return !!this._stack.pop();\n }\n}\n\n/**\n * Get the global async context stack.\n * This will be removed during the v8 cycle and is only here to make migration easier.\n */\nfunction getAsyncContextStack() {\n const registry = getMainCarrier();\n const sentry = getSentryCarrier(registry);\n\n return (sentry.stack = sentry.stack || new AsyncContextStack(getDefaultCurrentScope(), getDefaultIsolationScope()));\n}\n\nfunction withScope(callback) {\n return getAsyncContextStack().withScope(callback);\n}\n\nfunction withSetScope(scope, callback) {\n const stack = getAsyncContextStack() ;\n return stack.withScope(() => {\n stack.getStackTop().scope = scope;\n return callback(scope);\n });\n}\n\nfunction withIsolationScope(callback) {\n return getAsyncContextStack().withScope(() => {\n return callback(getAsyncContextStack().getIsolationScope());\n });\n}\n\n/**\n * Get the stack-based async context strategy.\n */\nfunction getStackAsyncContextStrategy() {\n return {\n withIsolationScope,\n withScope,\n withSetScope,\n withSetIsolationScope: (_isolationScope, callback) => {\n return withIsolationScope(callback);\n },\n getCurrentScope: () => getAsyncContextStack().getScope(),\n getIsolationScope: () => getAsyncContextStack().getIsolationScope(),\n };\n}\n\nexport { AsyncContextStack, getStackAsyncContextStrategy };\n","import { Scope } from './scope.js';\nimport { getGlobalSingleton } from './utils-hoist/worldwide.js';\n\n/** Get the default current scope. */\nfunction getDefaultCurrentScope() {\n return getGlobalSingleton('defaultCurrentScope', () => new Scope());\n}\n\n/** Get the default isolation scope. */\nfunction getDefaultIsolationScope() {\n return getGlobalSingleton('defaultIsolationScope', () => new Scope());\n}\n\nexport { getDefaultCurrentScope, getDefaultIsolationScope };\n","import { getMainCarrier, getSentryCarrier } from '../carrier.js';\nimport { getStackAsyncContextStrategy } from './stackStrategy.js';\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nfunction setAsyncContextStrategy(strategy) {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n const sentry = getSentryCarrier(registry);\n sentry.acs = strategy;\n}\n\n/**\n * Get the current async context strategy.\n * If none has been setup, the default will be used.\n */\nfunction getAsyncContextStrategy(carrier) {\n const sentry = getSentryCarrier(carrier);\n\n if (sentry.acs) {\n return sentry.acs;\n }\n\n // Otherwise, use the default one (stack)\n return getStackAsyncContextStrategy();\n}\n\nexport { getAsyncContextStrategy, setAsyncContextStrategy };\n","import { getAsyncContextStrategy } from './asyncContext/index.js';\nimport { getMainCarrier } from './carrier.js';\nimport { Scope } from './scope.js';\nimport { dropUndefinedKeys } from './utils-hoist/object.js';\nimport { getGlobalSingleton } from './utils-hoist/worldwide.js';\n\n/**\n * Get the currently active scope.\n */\nfunction getCurrentScope() {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n return acs.getCurrentScope();\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current execution context.\n */\nfunction getIsolationScope() {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n return acs.getIsolationScope();\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nfunction getGlobalScope() {\n return getGlobalSingleton('globalScope', () => new Scope());\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n */\n\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nfunction withScope(\n ...rest\n) {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [scope, callback] = rest;\n\n if (!scope) {\n return acs.withScope(callback);\n }\n\n return acs.withSetScope(scope, callback);\n }\n\n return acs.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n */\n\n/**\n * Either creates a new active isolation scope, or sets the given isolation scope as active scope in the given callback.\n */\nfunction withIsolationScope(\n ...rest\n\n) {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [isolationScope, callback] = rest;\n\n if (!isolationScope) {\n return acs.withIsolationScope(callback);\n }\n\n return acs.withSetIsolationScope(isolationScope, callback);\n }\n\n return acs.withIsolationScope(rest[0]);\n}\n\n/**\n * Get the currently active client.\n */\nfunction getClient() {\n return getCurrentScope().getClient();\n}\n\n/**\n * Get a trace context for the given scope.\n */\nfunction getTraceContextFromScope(scope) {\n const propagationContext = scope.getPropagationContext();\n\n // TODO(v9): Use generateSpanId() instead of spanId\n // eslint-disable-next-line deprecation/deprecation\n const { traceId, spanId, parentSpanId } = propagationContext;\n\n const traceContext = dropUndefinedKeys({\n trace_id: traceId,\n span_id: spanId,\n parent_span_id: parentSpanId,\n });\n\n return traceContext;\n}\n\nexport { getClient, getCurrentScope, getGlobalScope, getIsolationScope, getTraceContextFromScope, withIsolationScope, withScope };\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n","import { isThenable } from './is.js';\n\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/** SyncPromise internal states */\nvar States; (function (States) {\n /** Pending */\n const PENDING = 0; States[States[\"PENDING\"] = PENDING] = \"PENDING\";\n /** Resolved / OK */\n const RESOLVED = 1; States[States[\"RESOLVED\"] = RESOLVED] = \"RESOLVED\";\n /** Rejected / Error */\n const REJECTED = 2; States[States[\"REJECTED\"] = REJECTED] = \"REJECTED\";\n})(States || (States = {}));\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nfunction resolvedSyncPromise(value) {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nfunction rejectedSyncPromise(reason) {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise {\n\n constructor(\n executor,\n ) {SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);\n this._state = States.PENDING;\n this._handlers = [];\n\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n then(\n onfulfilled,\n onrejected,\n ) {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result );\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n catch(\n onrejected,\n ) {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n finally(onfinally) {\n return new SyncPromise((resolve, reject) => {\n let val;\n let isRejected;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val );\n });\n });\n }\n\n /** JSDoc */\n __init() {this._resolve = (value) => {\n this._setResult(States.RESOLVED, value);\n };}\n\n /** JSDoc */\n __init2() {this._reject = (reason) => {\n this._setResult(States.REJECTED, reason);\n };}\n\n /** JSDoc */\n __init3() {this._setResult = (state, value) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value ).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };}\n\n /** JSDoc */\n __init4() {this._executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n handler[1](this._value );\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };}\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { isThenable } from './utils-hoist/is.js';\nimport { logger } from './utils-hoist/logger.js';\nimport { SyncPromise } from './utils-hoist/syncpromise.js';\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nfunction notifyEventProcessors(\n processors,\n event,\n hint,\n index = 0,\n) {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) ;\n\n DEBUG_BUILD && processor.id && result === null && logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n}\n\nexport { notifyEventProcessors };\n","import { GLOBAL_OBJ } from './worldwide.js';\n\nlet parsedStackResults;\nlet lastKeysCount;\nlet cachedFilenameDebugIds;\n\n/**\n * Returns a map of filenames to debug identifiers.\n */\nfunction getFilenameToDebugIdMap(stackParser) {\n const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n if (!debugIdMap) {\n return {};\n }\n\n const debugIdKeys = Object.keys(debugIdMap);\n\n // If the count of registered globals hasn't changed since the last call, we\n // can just return the cached result.\n if (cachedFilenameDebugIds && debugIdKeys.length === lastKeysCount) {\n return cachedFilenameDebugIds;\n }\n\n lastKeysCount = debugIdKeys.length;\n\n // Build a map of filename -> debug_id.\n cachedFilenameDebugIds = debugIdKeys.reduce((acc, stackKey) => {\n if (!parsedStackResults) {\n parsedStackResults = {};\n }\n\n const result = parsedStackResults[stackKey];\n\n if (result) {\n acc[result[0]] = result[1];\n } else {\n const parsedStack = stackParser(stackKey);\n\n for (let i = parsedStack.length - 1; i >= 0; i--) {\n const stackFrame = parsedStack[i];\n const filename = stackFrame && stackFrame.filename;\n const debugId = debugIdMap[stackKey];\n\n if (filename && debugId) {\n acc[filename] = debugId;\n parsedStackResults[stackKey] = [filename, debugId];\n break;\n }\n }\n }\n\n return acc;\n }, {});\n\n return cachedFilenameDebugIds;\n}\n\n/**\n * Returns a list of debug images for the given resources.\n */\nfunction getDebugImagesForResources(\n stackParser,\n resource_paths,\n) {\n const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n if (!filenameDebugIdMap) {\n return [];\n }\n\n const images = [];\n for (const path of resource_paths) {\n if (path && filenameDebugIdMap[path]) {\n images.push({\n type: 'sourcemap',\n code_file: path,\n debug_id: filenameDebugIdMap[path] ,\n });\n }\n }\n\n return images;\n}\n\nexport { getDebugImagesForResources, getFilenameToDebugIdMap };\n","const STACKTRACE_FRAME_LIMIT = 50;\nconst UNKNOWN_FUNCTION = '?';\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack, skipFirstLines = 0, framesToPop = 0) => {\n const frames = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirstLines; i < lines.length; i++) {\n const line = lines[i] ;\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue;\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT + framesToPop) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames.slice(framesToPop));\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (/sentryWrapped/.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the hub itself, making it:\n //\n // Sentry.captureException()\n // getCurrentHub().captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || getLastStackFrame(localStack).filename,\n function: frame.function || UNKNOWN_FUNCTION,\n }));\n}\n\nfunction getLastStackFrame(arr) {\n return arr[arr.length - 1] || {};\n}\n\nconst defaultFunctionName = '<anonymous>';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * Get's stack frames from an event without needing to check for undefined properties.\n */\nfunction getFramesFromEvent(event) {\n const exception = event.exception;\n\n if (exception) {\n const frames = [];\n try {\n // @ts-expect-error Object could be undefined\n exception.values.forEach(value => {\n // @ts-expect-error Value could be undefined\n if (value.stacktrace.frames) {\n // @ts-expect-error Value could be undefined\n frames.push(...value.stacktrace.frames);\n }\n });\n return frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n\nexport { UNKNOWN_FUNCTION, createStackParser, getFramesFromEvent, getFunctionName, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n","import { isVueViewModel, isSyntheticEvent } from './is.js';\nimport { memoBuilder } from './memo.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normalized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalize(input, depth = 100, maxProperties = +Infinity) {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object,\n // Default Node.js REPL depth\n depth = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize = 100 * 1024,\n) {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key,\n value,\n depth = +Infinity,\n maxProperties = +Infinity,\n // eslint-disable-next-line deprecation/deprecation\n memo = memoBuilder(),\n) {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (\n value == null || // this matches null and undefined -> eqeq not eqeqeq\n ['boolean', 'string'].includes(typeof value) ||\n (typeof value === 'number' && Number.isFinite(value))\n ) {\n return value ;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value )['__sentry_skip_normalization__']) {\n return value ;\n }\n\n // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n // We keep a certain amount of depth.\n // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n const remainingDepth =\n typeof (value )['__sentry_override_normalization_depth__'] === 'number'\n ? ((value )['__sentry_override_normalization_depth__'] )\n : depth;\n\n // We're also done if we've reached the max depth\n if (remainingDepth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value ;\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) ;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value );\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n numAdded++;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value,\n) {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n if (isVueViewModel(value)) {\n return '[VueViewModel]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && !Number.isFinite(value)) {\n return `[${value}]`;\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n const objName = getConstructorName(value);\n\n // Handle HTML Elements\n if (/^HTML(\\w*)Element$/.test(objName)) {\n return `[HTMLElement: ${objName}]`;\n }\n\n return `[object ${objName}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value) {\n const prototype = Object.getPrototypeOf(value);\n\n return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nfunction normalizeUrlToBase(url, basePath) {\n const escapedBase = basePath\n // Backslash to forward\n .replace(/\\\\/g, '/')\n // Escape RegExp special characters\n .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n let newUrl = url;\n try {\n newUrl = decodeURI(url);\n } catch (_Oo) {\n // Sometime this breaks\n }\n return (\n newUrl\n .replace(/\\\\/g, '/')\n .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n );\n}\n\nexport { normalize, normalizeToSize, normalizeUrlToBase };\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Helper to decycle json objects\n *\n * @deprecated This function is deprecated and will be removed in the next major version.\n */\n// TODO(v9): Move this function into normalize() directly\nfunction memoBuilder() {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner = hasWeakSet ? new WeakSet() : [];\n function memoize(obj) {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj) {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n\nexport { memoBuilder };\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Use this attribute to represent the sample rate used for a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/** The reason why an idle span finished. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = 'sentry.idle_span_finish_reason';\n\n/** The unit of a measurement, which may be stored as a TimedEvent. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = 'sentry.measurement_unit';\n\n/** The value of a measurement, which may be stored as a TimedEvent. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = 'sentry.measurement_value';\n\n/**\n * A custom span name set by users guaranteed to be taken over any automatically\n * inferred name. This attribute is removed before the span is sent.\n *\n * @internal only meant for internal SDK usage\n * @hidden\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = 'sentry.custom_span_name';\n\n/**\n * The id of the profile that this span occurred in.\n */\nconst SEMANTIC_ATTRIBUTE_PROFILE_ID = 'sentry.profile_id';\n\nconst SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = 'sentry.exclusive_time';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_HIT = 'cache.hit';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_KEY = 'cache.key';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = 'cache.item_size';\n\n/** TODO: Remove these once we update to latest semantic conventions */\nconst SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = 'http.request.method';\nconst SEMANTIC_ATTRIBUTE_URL_FULL = 'url.full';\n\nexport { SEMANTIC_ATTRIBUTE_CACHE_HIT, SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, SEMANTIC_ATTRIBUTE_CACHE_KEY, SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD, SEMANTIC_ATTRIBUTE_PROFILE_ID, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_URL_FULL };\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { isString } from './is.js';\nimport { logger } from './logger.js';\n\n/**\n * @deprecated Use a `\"baggage\"` string directly\n */\nconst BAGGAGE_HEADER_NAME = 'baggage';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nconst MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nfunction baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader,\n) {\n const baggageObject = parseBaggageHeader(baggageHeader);\n\n if (!baggageObject) {\n return undefined;\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => {\n if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext ;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nfunction dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext,\n) {\n if (!dynamicSamplingContext) {\n return undefined;\n }\n\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Take a baggage header and parse it into an object.\n */\nfunction parseBaggageHeader(\n baggageHeader,\n) {\n if (!baggageHeader || (!isString(baggageHeader) && !Array.isArray(baggageHeader))) {\n return undefined;\n }\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n return baggageHeader.reduce((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n Object.entries(currBaggageObject).forEach(([key, value]) => {\n acc[key] = value;\n });\n return acc;\n }, {});\n }\n\n return baggageHeaderToObject(baggageHeader);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader) {\n return baggageHeader\n .split(',')\n .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n .reduce((acc, [key, value]) => {\n if (key && value) {\n acc[key] = value;\n }\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object) {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n DEBUG_BUILD &&\n logger.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader, parseBaggageHeader };\n","import { dropUndefinedKeys } from '../utils-hoist/object.js';\n\n/**\n * key: bucketKey\n * value: [exportKey, MetricSummary]\n */\n\nconst METRICS_SPAN_FIELD = '_sentryMetrics';\n\n/**\n * Fetches the metric summary if it exists for the passed span\n */\nfunction getMetricSummaryJsonForSpan(span) {\n const storage = (span )[METRICS_SPAN_FIELD];\n\n if (!storage) {\n return undefined;\n }\n const output = {};\n\n for (const [, [exportKey, summary]] of storage) {\n const arr = output[exportKey] || (output[exportKey] = []);\n arr.push(dropUndefinedKeys(summary));\n }\n\n return output;\n}\n\n/**\n * Updates the metric summary on a span.\n */\nfunction updateMetricSummaryOnSpan(\n span,\n metricType,\n sanitizedName,\n value,\n unit,\n tags,\n bucketKey,\n) {\n const existingStorage = (span )[METRICS_SPAN_FIELD];\n const storage =\n existingStorage ||\n ((span )[METRICS_SPAN_FIELD] = new Map());\n\n const exportKey = `${metricType}:${sanitizedName}@${unit}`;\n const bucketItem = storage.get(bucketKey);\n\n if (bucketItem) {\n const [, summary] = bucketItem;\n storage.set(bucketKey, [\n exportKey,\n {\n min: Math.min(summary.min, value),\n max: Math.max(summary.max, value),\n count: (summary.count += 1),\n sum: (summary.sum += value),\n tags: summary.tags,\n },\n ]);\n } else {\n storage.set(bucketKey, [\n exportKey,\n {\n min: value,\n max: value,\n count: 1,\n sum: value,\n tags,\n },\n ]);\n }\n}\n\nexport { getMetricSummaryJsonForSpan, updateMetricSummaryOnSpan };\n","import { getAsyncContextStrategy } from '../asyncContext/index.js';\nimport { getMainCarrier } from '../carrier.js';\nimport { getCurrentScope } from '../currentScopes.js';\nimport { getMetricSummaryJsonForSpan, updateMetricSummaryOnSpan } from '../metrics/metric-summary.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME } from '../semanticAttributes.js';\nimport { SPAN_STATUS_UNSET, SPAN_STATUS_OK } from '../tracing/spanstatus.js';\nimport { consoleSandbox } from '../utils-hoist/logger.js';\nimport { dropUndefinedKeys, addNonEnumerableProperty } from '../utils-hoist/object.js';\nimport { generateSpanId } from '../utils-hoist/propagationContext.js';\nimport { timestampInSeconds } from '../utils-hoist/time.js';\nimport { generateSentryTraceHeader } from '../utils-hoist/tracing.js';\nimport { _getSpanForScope } from './spanOnScope.js';\n\n// These are aligned with OpenTelemetry trace flags\nconst TRACE_FLAG_NONE = 0x0;\nconst TRACE_FLAG_SAMPLED = 0x1;\n\n// todo(v9): Remove this once we've stopped dropping spans via `beforeSendSpan`\nlet hasShownSpanDropWarning = false;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n * By default, this will only include trace_id, span_id & parent_span_id.\n * If `includeAllData` is true, it will also include data, op, status & origin.\n */\nfunction spanToTransactionTraceContext(span) {\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n const { data, op, parent_span_id, status, origin } = spanToJSON(span);\n\n return dropUndefinedKeys({\n parent_span_id,\n span_id,\n trace_id,\n data,\n op,\n status,\n origin,\n });\n}\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in a non-transaction event.\n */\nfunction spanToTraceContext(span) {\n const { spanId, traceId: trace_id, isRemote } = span.spanContext();\n\n // If the span is remote, we use a random/virtual span as span_id to the trace context,\n // and the remote span as parent_span_id\n const parent_span_id = isRemote ? spanId : spanToJSON(span).parent_span_id;\n const span_id = isRemote ? generateSpanId() : spanId;\n\n return dropUndefinedKeys({\n parent_span_id,\n span_id,\n trace_id,\n });\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nfunction spanToTraceHeader(span) {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a span time input into a timestamp in seconds.\n */\nfunction spanTimeInputToSeconds(input) {\n if (typeof input === 'number') {\n return ensureTimestampInSeconds(input);\n }\n\n if (Array.isArray(input)) {\n // See {@link HrTime} for the array-based time format\n return input[0] + input[1] / 1e9;\n }\n\n if (input instanceof Date) {\n return ensureTimestampInSeconds(input.getTime());\n }\n\n return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp) {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n */\n// Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n// This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n// And `spanToJSON` needs the Span class from `span.ts` to check here.\nfunction spanToJSON(span) {\n if (spanIsSentrySpan(span)) {\n return span.getSpanJSON();\n }\n\n try {\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n\n // Handle a span from @opentelemetry/sdk-base-trace's `Span` class\n if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) {\n const { attributes, startTime, name, endTime, parentSpanId, status } = span;\n\n return dropUndefinedKeys({\n span_id,\n trace_id,\n data: attributes,\n description: name,\n parent_span_id: parentSpanId,\n start_timestamp: spanTimeInputToSeconds(startTime),\n // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n timestamp: spanTimeInputToSeconds(endTime) || undefined,\n status: getStatusMessage(status),\n op: attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n origin: attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] ,\n _metrics_summary: getMetricSummaryJsonForSpan(span),\n });\n }\n\n // Finally, at least we have `spanContext()`....\n return {\n span_id,\n trace_id,\n };\n } catch (e) {\n return {};\n }\n}\n\nfunction spanIsOpenTelemetrySdkTraceBaseSpan(span) {\n const castSpan = span ;\n return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status;\n}\n\n/** Exported only for tests. */\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSentrySpan(span) {\n return typeof (span ).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nfunction spanIsSampled(span) {\n // We align our trace flags with the ones OpenTelemetry use\n // So we also check for sampled the same way they do.\n const { traceFlags } = span.spanContext();\n return traceFlags === TRACE_FLAG_SAMPLED;\n}\n\n/** Get the status message to use for a JSON representation of a span. */\nfunction getStatusMessage(status) {\n if (!status || status.code === SPAN_STATUS_UNSET) {\n return undefined;\n }\n\n if (status.code === SPAN_STATUS_OK) {\n return 'ok';\n }\n\n return status.message || 'unknown_error';\n}\n\nconst CHILD_SPANS_FIELD = '_sentryChildSpans';\nconst ROOT_SPAN_FIELD = '_sentryRootSpan';\n\n/**\n * Adds an opaque child span reference to a span.\n */\nfunction addChildSpanToSpan(span, childSpan) {\n // We store the root span reference on the child span\n // We need this for `getRootSpan()` to work\n const rootSpan = span[ROOT_SPAN_FIELD] || span;\n addNonEnumerableProperty(childSpan , ROOT_SPAN_FIELD, rootSpan);\n\n // We store a list of child spans on the parent span\n // We need this for `getSpanDescendants()` to work\n if (span[CHILD_SPANS_FIELD]) {\n span[CHILD_SPANS_FIELD].add(childSpan);\n } else {\n addNonEnumerableProperty(span, CHILD_SPANS_FIELD, new Set([childSpan]));\n }\n}\n\n/** This is only used internally by Idle Spans. */\nfunction removeChildSpanFromSpan(span, childSpan) {\n if (span[CHILD_SPANS_FIELD]) {\n span[CHILD_SPANS_FIELD].delete(childSpan);\n }\n}\n\n/**\n * Returns an array of the given span and all of its descendants.\n */\nfunction getSpanDescendants(span) {\n const resultSet = new Set();\n\n function addSpanChildren(span) {\n // This exit condition is required to not infinitely loop in case of a circular dependency.\n if (resultSet.has(span)) {\n return;\n // We want to ignore unsampled spans (e.g. non recording spans)\n } else if (spanIsSampled(span)) {\n resultSet.add(span);\n const childSpans = span[CHILD_SPANS_FIELD] ? Array.from(span[CHILD_SPANS_FIELD]) : [];\n for (const childSpan of childSpans) {\n addSpanChildren(childSpan);\n }\n }\n }\n\n addSpanChildren(span);\n\n return Array.from(resultSet);\n}\n\n/**\n * Returns the root span of a given span.\n */\nfunction getRootSpan(span) {\n return span[ROOT_SPAN_FIELD] || span;\n}\n\n/**\n * Returns the currently active span.\n */\nfunction getActiveSpan() {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (acs.getActiveSpan) {\n return acs.getActiveSpan();\n }\n\n return _getSpanForScope(getCurrentScope());\n}\n\n/**\n * Updates the metric summary on the currently active span\n */\nfunction updateMetricSummaryOnActiveSpan(\n metricType,\n sanitizedName,\n value,\n unit,\n tags,\n bucketKey,\n) {\n const span = getActiveSpan();\n if (span) {\n updateMetricSummaryOnSpan(span, metricType, sanitizedName, value, unit, tags, bucketKey);\n }\n}\n\n/**\n * Logs a warning once if `beforeSendSpan` is used to drop spans.\n *\n * todo(v9): Remove this once we've stopped dropping spans via `beforeSendSpan`.\n */\nfunction showSpanDropWarning() {\n if (!hasShownSpanDropWarning) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[Sentry] Deprecation warning: Returning null from `beforeSendSpan` will be disallowed from SDK version 9.0.0 onwards. The callback will only support mutating spans. To drop certain spans, configure the respective integrations directly.',\n );\n });\n hasShownSpanDropWarning = true;\n }\n}\n\n/**\n * Updates the name of the given span and ensures that the span name is not\n * overwritten by the Sentry SDK.\n *\n * Use this function instead of `span.updateName()` if you want to make sure that\n * your name is kept. For some spans, for example root `http.server` spans the\n * Sentry SDK would otherwise overwrite the span name with a high-quality name\n * it infers when the span ends.\n *\n * Use this function in server code or when your span is started on the server\n * and on the client (browser). If you only update a span name on the client,\n * you can also use `span.updateName()` the SDK does not overwrite the name.\n *\n * @param span - The span to update the name of.\n * @param name - The name to set on the span.\n */\nfunction updateSpanName(span, name) {\n span.updateName(name);\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: name,\n });\n}\n\nexport { TRACE_FLAG_NONE, TRACE_FLAG_SAMPLED, addChildSpanToSpan, getActiveSpan, getRootSpan, getSpanDescendants, getStatusMessage, removeChildSpanFromSpan, showSpanDropWarning, spanIsSampled, spanTimeInputToSeconds, spanToJSON, spanToTraceContext, spanToTraceHeader, spanToTransactionTraceContext, updateMetricSummaryOnActiveSpan, updateSpanName };\n","const SPAN_STATUS_UNSET = 0;\nconst SPAN_STATUS_OK = 1;\nconst SPAN_STATUS_ERROR = 2;\n\n/**\n * Converts a HTTP status code into a sentry status with a message.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\n// https://develop.sentry.dev/sdk/event-payloads/span/\nfunction getSpanStatusFromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return { code: SPAN_STATUS_OK };\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return { code: SPAN_STATUS_ERROR, message: 'unauthenticated' };\n case 403:\n return { code: SPAN_STATUS_ERROR, message: 'permission_denied' };\n case 404:\n return { code: SPAN_STATUS_ERROR, message: 'not_found' };\n case 409:\n return { code: SPAN_STATUS_ERROR, message: 'already_exists' };\n case 413:\n return { code: SPAN_STATUS_ERROR, message: 'failed_precondition' };\n case 429:\n return { code: SPAN_STATUS_ERROR, message: 'resource_exhausted' };\n case 499:\n return { code: SPAN_STATUS_ERROR, message: 'cancelled' };\n default:\n return { code: SPAN_STATUS_ERROR, message: 'invalid_argument' };\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return { code: SPAN_STATUS_ERROR, message: 'unimplemented' };\n case 503:\n return { code: SPAN_STATUS_ERROR, message: 'unavailable' };\n case 504:\n return { code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' };\n default:\n return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n }\n }\n\n return { code: SPAN_STATUS_ERROR, message: 'unknown_error' };\n}\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nfunction setHttpStatus(span, httpStatus) {\n span.setAttribute('http.response.status_code', httpStatus);\n\n const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n if (spanStatus.message !== 'unknown_error') {\n span.setStatus(spanStatus);\n }\n}\n\nexport { SPAN_STATUS_ERROR, SPAN_STATUS_OK, SPAN_STATUS_UNSET, getSpanStatusFromHttpCode, setHttpStatus };\n","import { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getClient } from '../currentScopes.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js';\nimport { baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from '../utils-hoist/baggage.js';\nimport { dropUndefinedKeys, addNonEnumerableProperty } from '../utils-hoist/object.js';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled.js';\nimport { getRootSpan, spanToJSON, spanIsSampled } from '../utils/spanUtils.js';\n\n/**\n * If you change this value, also update the terser plugin config to\n * avoid minification of the object property!\n */\nconst FROZEN_DSC_FIELD = '_frozenDsc';\n\n/**\n * Freeze the given DSC on the given span.\n */\nfunction freezeDscOnSpan(span, dsc) {\n const spanWithMaybeDsc = span ;\n addNonEnumerableProperty(spanWithMaybeDsc, FROZEN_DSC_FIELD, dsc);\n}\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nfunction getDynamicSamplingContextFromClient(trace_id, client) {\n const options = client.getOptions();\n\n const { publicKey: public_key } = client.getDsn() || {};\n\n const dsc = dropUndefinedKeys({\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n public_key,\n trace_id,\n }) ;\n\n client.emit('createDsc', dsc);\n\n return dsc;\n}\n\n/**\n * Get the dynamic sampling context for the currently active scopes.\n */\nfunction getDynamicSamplingContextFromScope(client, scope) {\n const propagationContext = scope.getPropagationContext();\n return propagationContext.dsc || getDynamicSamplingContextFromClient(propagationContext.traceId, client);\n}\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nfunction getDynamicSamplingContextFromSpan(span) {\n const client = getClient();\n if (!client) {\n return {};\n }\n\n const rootSpan = getRootSpan(span);\n\n // For core implementation, we freeze the DSC onto the span as a non-enumerable property\n const frozenDsc = (rootSpan )[FROZEN_DSC_FIELD];\n if (frozenDsc) {\n return frozenDsc;\n }\n\n // For OpenTelemetry, we freeze the DSC on the trace state\n const traceState = rootSpan.spanContext().traceState;\n const traceStateDsc = traceState && traceState.get('sentry.dsc');\n\n // If the span has a DSC, we want it to take precedence\n const dscOnTraceState = traceStateDsc && baggageHeaderToDynamicSamplingContext(traceStateDsc);\n\n if (dscOnTraceState) {\n return dscOnTraceState;\n }\n\n // Else, we generate it from the span\n const dsc = getDynamicSamplingContextFromClient(span.spanContext().traceId, client);\n const jsonSpan = spanToJSON(rootSpan);\n const attributes = jsonSpan.data || {};\n const maybeSampleRate = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE];\n\n if (maybeSampleRate != null) {\n dsc.sample_rate = `${maybeSampleRate}`;\n }\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n // after JSON conversion, txn.name becomes jsonSpan.description\n const name = jsonSpan.description;\n if (source !== 'url' && name) {\n dsc.transaction = name;\n }\n\n // How can we even land here with hasTracingEnabled() returning false?\n // Otel creates a Non-recording span in Tracing Without Performance mode when handling incoming requests\n // So we end up with an active span that is not sampled (neither positively nor negatively)\n if (hasTracingEnabled()) {\n dsc.sampled = String(spanIsSampled(rootSpan));\n }\n\n client.emit('createDsc', dsc, rootSpan);\n\n return dsc;\n}\n\n/**\n * Convert a Span to a baggage header.\n */\nfunction spanToBaggageHeader(span) {\n const dsc = getDynamicSamplingContextFromSpan(span);\n return dynamicSamplingContextToSentryBaggageHeader(dsc);\n}\n\nexport { freezeDscOnSpan, getDynamicSamplingContextFromClient, getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan, spanToBaggageHeader };\n","import { getClient } from '../currentScopes.js';\n\n// Treeshakable guard to remove all code related to tracing\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nfunction hasTracingEnabled(\n maybeOptions,\n) {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const client = getClient();\n const options = maybeOptions || (client && client.getOptions());\n // eslint-disable-next-line deprecation/deprecation\n return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\nexport { hasTracingEnabled };\n","import { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext.js';\nimport { dropUndefinedKeys } from '../utils-hoist/object.js';\nimport { merge } from './merge.js';\nimport { spanToTraceContext, getRootSpan, spanToJSON } from './spanUtils.js';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nfunction applyScopeDataToEvent(event, data) {\n const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n // Apply general data\n applyDataToEvent(event, data);\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (span) {\n applySpanToEvent(event, span);\n }\n\n applyFingerprintToEvent(event, fingerprint);\n applyBreadcrumbsToEvent(event, breadcrumbs);\n applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nfunction mergeScopeData(data, mergeData) {\n const {\n extra,\n tags,\n user,\n contexts,\n level,\n sdkProcessingMetadata,\n breadcrumbs,\n fingerprint,\n eventProcessors,\n attachments,\n propagationContext,\n transactionName,\n span,\n } = mergeData;\n\n mergeAndOverwriteScopeData(data, 'extra', extra);\n mergeAndOverwriteScopeData(data, 'tags', tags);\n mergeAndOverwriteScopeData(data, 'user', user);\n mergeAndOverwriteScopeData(data, 'contexts', contexts);\n\n data.sdkProcessingMetadata = merge(data.sdkProcessingMetadata, sdkProcessingMetadata, 2);\n\n if (level) {\n data.level = level;\n }\n\n if (transactionName) {\n data.transactionName = transactionName;\n }\n\n if (span) {\n data.span = span;\n }\n\n if (breadcrumbs.length) {\n data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n }\n\n if (fingerprint.length) {\n data.fingerprint = [...data.fingerprint, ...fingerprint];\n }\n\n if (eventProcessors.length) {\n data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n }\n\n if (attachments.length) {\n data.attachments = [...data.attachments, ...attachments];\n }\n\n data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nfunction mergeAndOverwriteScopeData\n\n(data, prop, mergeVal) {\n data[prop] = merge(data[prop], mergeVal, 1);\n}\n\nfunction applyDataToEvent(event, data) {\n const { extra, tags, user, contexts, level, transactionName } = data;\n\n const cleanedExtra = dropUndefinedKeys(extra);\n if (cleanedExtra && Object.keys(cleanedExtra).length) {\n event.extra = { ...cleanedExtra, ...event.extra };\n }\n\n const cleanedTags = dropUndefinedKeys(tags);\n if (cleanedTags && Object.keys(cleanedTags).length) {\n event.tags = { ...cleanedTags, ...event.tags };\n }\n\n const cleanedUser = dropUndefinedKeys(user);\n if (cleanedUser && Object.keys(cleanedUser).length) {\n event.user = { ...cleanedUser, ...event.user };\n }\n\n const cleanedContexts = dropUndefinedKeys(contexts);\n if (cleanedContexts && Object.keys(cleanedContexts).length) {\n event.contexts = { ...cleanedContexts, ...event.contexts };\n }\n\n if (level) {\n event.level = level;\n }\n\n // transaction events get their `transaction` from the root span name\n if (transactionName && event.type !== 'transaction') {\n event.transaction = transactionName;\n }\n}\n\nfunction applyBreadcrumbsToEvent(event, breadcrumbs) {\n const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event, sdkProcessingMetadata) {\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...sdkProcessingMetadata,\n };\n}\n\nfunction applySpanToEvent(event, span) {\n event.contexts = {\n trace: spanToTraceContext(span),\n ...event.contexts,\n };\n\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n ...event.sdkProcessingMetadata,\n };\n\n const rootSpan = getRootSpan(span);\n const transactionName = spanToJSON(rootSpan).description;\n if (transactionName && !event.transaction && event.type === 'transaction') {\n event.transaction = transactionName;\n }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event, fingerprint) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (fingerprint) {\n event.fingerprint = event.fingerprint.concat(fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n}\n\nexport { applyScopeDataToEvent, mergeAndOverwriteScopeData, mergeScopeData };\n","import { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getGlobalScope } from '../currentScopes.js';\nimport { notifyEventProcessors } from '../eventProcessors.js';\nimport { Scope } from '../scope.js';\nimport { getFilenameToDebugIdMap } from '../utils-hoist/debug-ids.js';\nimport { uuid4, addExceptionMechanism } from '../utils-hoist/misc.js';\nimport { normalize } from '../utils-hoist/normalize.js';\nimport { truncate } from '../utils-hoist/string.js';\nimport { dateTimestampInSeconds } from '../utils-hoist/time.js';\nimport { mergeScopeData, applyScopeDataToEvent } from './applyScopeDataToEvent.js';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nfunction prepareEvent(\n options,\n event,\n hint,\n scope,\n client,\n isolationScope,\n) {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = options;\n const prepared = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n applyClientOptions(prepared, options);\n applyIntegrationsMetadata(prepared, integrations);\n\n if (client) {\n client.emit('applyFrameMetadata', event);\n }\n\n // Only put debug IDs onto frames for error events.\n if (event.type === undefined) {\n applyDebugIds(prepared, options.stackParser);\n }\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n const finalScope = getFinalScope(scope, hint.captureContext);\n\n if (hint.mechanism) {\n addExceptionMechanism(prepared, hint.mechanism);\n }\n\n const clientEventProcessors = client ? client.getEventProcessors() : [];\n\n // This should be the last thing called, since we want that\n // {@link Scope.addEventProcessor} gets the finished prepared event.\n // Merge scope data together\n const data = getGlobalScope().getScopeData();\n\n if (isolationScope) {\n const isolationData = isolationScope.getScopeData();\n mergeScopeData(data, isolationData);\n }\n\n if (finalScope) {\n const finalScopeData = finalScope.getScopeData();\n mergeScopeData(data, finalScopeData);\n }\n\n const attachments = [...(hint.attachments || []), ...data.attachments];\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n applyScopeDataToEvent(prepared, data);\n\n const eventProcessors = [\n ...clientEventProcessors,\n // Run scope event processors _after_ all other processors\n ...data.eventProcessors,\n ];\n\n const result = notifyEventProcessors(eventProcessors, prepared, hint);\n\n return result.then(evt => {\n if (evt) {\n // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n // any new data\n applyDebugMeta(evt);\n }\n\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n}\n\n/**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n *\n * Only exported for tests.\n *\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event, options) {\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n // empty strings do not make sense for environment, release, and dist\n // so we handle them the same as if they were not provided\n event.environment = event.environment || environment || DEFAULT_ENVIRONMENT;\n\n if (!event.release && release) {\n event.release = release;\n }\n\n if (!event.dist && dist) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n}\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nfunction applyDebugIds(event, stackParser) {\n // Build a map of filename -> debug_id\n const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace.frames.forEach(frame => {\n if (filenameDebugIdMap && frame.filename) {\n frame.debug_id = filenameDebugIdMap[frame.filename];\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nfunction applyDebugMeta(event) {\n // Extract debug IDs and filenames from the stack frames on the event.\n const filenameDebugIdMap = {};\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace.frames.forEach(frame => {\n if (frame.debug_id) {\n if (frame.abs_path) {\n filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n } else if (frame.filename) {\n filenameDebugIdMap[frame.filename] = frame.debug_id;\n }\n delete frame.debug_id;\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n\n if (Object.keys(filenameDebugIdMap).length === 0) {\n return;\n }\n\n // Fill debug_meta information\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = event.debug_meta.images || [];\n const images = event.debug_meta.images;\n Object.entries(filenameDebugIdMap).forEach(([filename, debug_id]) => {\n images.push({\n type: 'sourcemap',\n code_file: filename,\n debug_id,\n });\n });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event, integrationNames) {\n if (integrationNames.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event, depth, maxBreadth) {\n if (!event) {\n return null;\n }\n\n const normalized = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n return {\n ...span,\n ...(span.data && {\n data: normalize(span.data, depth, maxBreadth),\n }),\n };\n });\n }\n\n // event.contexts.flags (FeatureFlagContext) stores context for our feature\n // flag integrations. It has a greater nesting depth than our other typed\n // Contexts, so we re-normalize with a fixed depth of 3 here. We do not want\n // to skip this in case of conflicting, user-provided context.\n if (event.contexts && event.contexts.flags && normalized.contexts) {\n normalized.contexts.flags = normalize(event.contexts.flags, 3, maxBreadth);\n }\n\n return normalized;\n}\n\nfunction getFinalScope(\n scope,\n captureContext,\n) {\n if (!captureContext) {\n return scope;\n }\n\n const finalScope = scope ? scope.clone() : new Scope();\n finalScope.update(captureContext);\n return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nfunction parseEventHintOrCaptureContext(\n hint,\n) {\n if (!hint) {\n return undefined;\n }\n\n // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n if (hintIsScopeOrFunction(hint)) {\n return { captureContext: hint };\n }\n\n if (hintIsScopeContext(hint)) {\n return {\n captureContext: hint,\n };\n }\n\n return hint;\n}\n\nfunction hintIsScopeOrFunction(\n hint,\n) {\n return hint instanceof Scope || typeof hint === 'function';\n}\n\nconst captureContextKeys = [\n 'user',\n 'level',\n 'extra',\n 'contexts',\n 'tags',\n 'fingerprint',\n 'requestSession',\n 'propagationContext',\n] ;\n\nfunction hintIsScopeContext(hint) {\n return Object.keys(hint).some(key => captureContextKeys.includes(key ));\n}\n\nexport { applyClientOptions, applyDebugIds, applyDebugMeta, parseEventHintOrCaptureContext, prepareEvent };\n","import { DEFAULT_ENVIRONMENT } from './constants.js';\nimport { getCurrentScope, getIsolationScope, getClient, withIsolationScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { makeSession, updateSession, closeSession } from './session.js';\nimport { isThenable } from './utils-hoist/is.js';\nimport { logger } from './utils-hoist/logger.js';\nimport { uuid4 } from './utils-hoist/misc.js';\nimport { timestampInSeconds } from './utils-hoist/time.js';\nimport { GLOBAL_OBJ } from './utils-hoist/worldwide.js';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent.js';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nfunction captureException(exception, hint) {\n return getCurrentScope().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nfunction captureMessage(message, captureContext) {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentScope().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nfunction captureEvent(event, hint) {\n return getCurrentScope().captureEvent(event, hint);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\nfunction setContext(name, context) {\n getIsolationScope().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nfunction setExtras(extras) {\n getIsolationScope().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nfunction setExtra(key, extra) {\n getIsolationScope().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nfunction setTags(tags) {\n getIsolationScope().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nfunction setTag(key, value) {\n getIsolationScope().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nfunction setUser(user) {\n getIsolationScope().setUser(user);\n}\n\n/**\n * The last error event id of the isolation scope.\n *\n * Warning: This function really returns the last recorded error event id on the current\n * isolation scope. If you call this function after handling a certain error and another error\n * is captured in between, the last one is returned instead of the one you might expect.\n * Also, ids of events that were never sent to Sentry (for example because\n * they were dropped in `beforeSend`) could be returned.\n *\n * @returns The last event id of the isolation scope.\n */\nfunction lastEventId() {\n return getIsolationScope().lastEventId();\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction captureCheckIn(checkIn, upsertMonitorConfig) {\n const scope = getCurrentScope();\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. No client defined.');\n } else if (!client.captureCheckIn) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n\n return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction withMonitor(\n monitorSlug,\n callback,\n upsertMonitorConfig,\n) {\n const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n const now = timestampInSeconds();\n\n function finishCheckIn(status) {\n captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n }\n\n return withIsolationScope(() => {\n let maybePromiseResult;\n try {\n maybePromiseResult = callback();\n } catch (e) {\n finishCheckIn('error');\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n Promise.resolve(maybePromiseResult).then(\n () => {\n finishCheckIn('ok');\n },\n e => {\n finishCheckIn('error');\n throw e;\n },\n );\n } else {\n finishCheckIn('ok');\n }\n\n return maybePromiseResult;\n });\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nasync function flush(timeout) {\n const client = getClient();\n if (client) {\n return client.flush(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nasync function close(timeout) {\n const client = getClient();\n if (client) {\n return client.close(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nfunction isInitialized() {\n return !!getClient();\n}\n\n/** If the SDK is initialized & enabled. */\nfunction isEnabled() {\n const client = getClient();\n return !!client && client.getOptions().enabled !== false && !!client.getTransport();\n}\n\n/**\n * Add an event processor.\n * This will be added to the current isolation scope, ensuring any event that is processed in the current execution\n * context will have the processor applied.\n */\nfunction addEventProcessor(callback) {\n getIsolationScope().addEventProcessor(callback);\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nfunction startSession(context) {\n const client = getClient();\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: currentScope.getUser() || isolationScope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = isolationScope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n\n endSession();\n\n // Afterwards we set the new session on the scope\n isolationScope.setSession(session);\n\n // TODO (v8): Remove this and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n currentScope.setSession(session);\n\n return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nfunction endSession() {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session) {\n closeSession(session);\n }\n _sendSessionUpdate();\n\n // the session is over; take it off of the scope\n isolationScope.setSession();\n\n // TODO (v8): Remove this and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n currentScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate() {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n const client = getClient();\n // TODO (v8): Remove currentScope and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session && client) {\n client.captureSession(session);\n }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n * Defaults to `false`.\n */\nfunction captureSession(end = false) {\n // both send the update and pull the session from the scope\n if (end) {\n endSession();\n return;\n }\n\n // only send the update\n _sendSessionUpdate();\n}\n\nexport { addEventProcessor, captureCheckIn, captureEvent, captureException, captureMessage, captureSession, close, endSession, flush, isEnabled, isInitialized, lastEventId, setContext, setExtra, setExtras, setTag, setTags, setUser, startSession, withMonitor };\n","import * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, InjectionToken, Inject, Directive, Input, Pipe, NgModule } from '@angular/core';\nimport { of, isObservable, forkJoin, concat, defer } from 'rxjs';\nimport { take, shareReplay, map, concatMap, switchMap } from 'rxjs/operators';\n\nclass TranslateLoader {\r\n}\r\n/**\r\n * This loader is just a placeholder that does nothing, in case you don't need a loader at all\r\n */\r\nclass TranslateFakeLoader extends TranslateLoader {\r\n getTranslation(lang) {\r\n return of({});\r\n }\r\n}\r\nTranslateFakeLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateFakeLoader, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\r\nTranslateFakeLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateFakeLoader });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateFakeLoader, decorators: [{\r\n type: Injectable\r\n }] });\n\nclass MissingTranslationHandler {\r\n}\r\n/**\r\n * This handler is just a placeholder that does nothing, in case you don't need a missing translation handler at all\r\n */\r\nclass FakeMissingTranslationHandler {\r\n handle(params) {\r\n return params.key;\r\n }\r\n}\r\nFakeMissingTranslationHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: FakeMissingTranslationHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nFakeMissingTranslationHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: FakeMissingTranslationHandler });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: FakeMissingTranslationHandler, decorators: [{\r\n type: Injectable\r\n }] });\n\n/* tslint:disable */\r\n/**\r\n * Determines if two objects or two values are equivalent.\r\n *\r\n * Two objects or values are considered equivalent if at least one of the following is true:\r\n *\r\n * * Both objects or values pass `===` comparison.\r\n * * Both objects or values are of the same type and all of their properties are equal by\r\n * comparing them with `equals`.\r\n *\r\n * @param o1 Object or value to compare.\r\n * @param o2 Object or value to compare.\r\n * @returns true if arguments are equal.\r\n */\r\nfunction equals(o1, o2) {\r\n if (o1 === o2)\r\n return true;\r\n if (o1 === null || o2 === null)\r\n return false;\r\n if (o1 !== o1 && o2 !== o2)\r\n return true; // NaN === NaN\r\n let t1 = typeof o1, t2 = typeof o2, length, key, keySet;\r\n if (t1 == t2 && t1 == 'object') {\r\n if (Array.isArray(o1)) {\r\n if (!Array.isArray(o2))\r\n return false;\r\n if ((length = o1.length) == o2.length) {\r\n for (key = 0; key < length; key++) {\r\n if (!equals(o1[key], o2[key]))\r\n return false;\r\n }\r\n return true;\r\n }\r\n }\r\n else {\r\n if (Array.isArray(o2)) {\r\n return false;\r\n }\r\n keySet = Object.create(null);\r\n for (key in o1) {\r\n if (!equals(o1[key], o2[key])) {\r\n return false;\r\n }\r\n keySet[key] = true;\r\n }\r\n for (key in o2) {\r\n if (!(key in keySet) && typeof o2[key] !== 'undefined') {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/* tslint:enable */\r\nfunction isDefined(value) {\r\n return typeof value !== 'undefined' && value !== null;\r\n}\r\nfunction isObject(item) {\r\n return (item && typeof item === 'object' && !Array.isArray(item));\r\n}\r\nfunction mergeDeep(target, source) {\r\n let output = Object.assign({}, target);\r\n if (isObject(target) && isObject(source)) {\r\n Object.keys(source).forEach((key) => {\r\n if (isObject(source[key])) {\r\n if (!(key in target)) {\r\n Object.assign(output, { [key]: source[key] });\r\n }\r\n else {\r\n output[key] = mergeDeep(target[key], source[key]);\r\n }\r\n }\r\n else {\r\n Object.assign(output, { [key]: source[key] });\r\n }\r\n });\r\n }\r\n return output;\r\n}\n\nclass TranslateParser {\r\n}\r\nclass TranslateDefaultParser extends TranslateParser {\r\n constructor() {\r\n super(...arguments);\r\n this.templateMatcher = /{{\\s?([^{}\\s]*)\\s?}}/g;\r\n }\r\n interpolate(expr, params) {\r\n let result;\r\n if (typeof expr === 'string') {\r\n result = this.interpolateString(expr, params);\r\n }\r\n else if (typeof expr === 'function') {\r\n result = this.interpolateFunction(expr, params);\r\n }\r\n else {\r\n // this should not happen, but an unrelated TranslateService test depends on it\r\n result = expr;\r\n }\r\n return result;\r\n }\r\n getValue(target, key) {\r\n let keys = typeof key === 'string' ? key.split('.') : [key];\r\n key = '';\r\n do {\r\n key += keys.shift();\r\n if (isDefined(target) && isDefined(target[key]) && (typeof target[key] === 'object' || !keys.length)) {\r\n target = target[key];\r\n key = '';\r\n }\r\n else if (!keys.length) {\r\n target = undefined;\r\n }\r\n else {\r\n key += '.';\r\n }\r\n } while (keys.length);\r\n return target;\r\n }\r\n interpolateFunction(fn, params) {\r\n return fn(params);\r\n }\r\n interpolateString(expr, params) {\r\n if (!params) {\r\n return expr;\r\n }\r\n return expr.replace(this.templateMatcher, (substring, b) => {\r\n let r = this.getValue(params, b);\r\n return isDefined(r) ? r : substring;\r\n });\r\n }\r\n}\r\nTranslateDefaultParser.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateDefaultParser, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\r\nTranslateDefaultParser.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateDefaultParser });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateDefaultParser, decorators: [{\r\n type: Injectable\r\n }] });\n\nclass TranslateCompiler {\r\n}\r\n/**\r\n * This compiler is just a placeholder that does nothing, in case you don't need a compiler at all\r\n */\r\nclass TranslateFakeCompiler extends TranslateCompiler {\r\n compile(value, lang) {\r\n return value;\r\n }\r\n compileTranslations(translations, lang) {\r\n return translations;\r\n }\r\n}\r\nTranslateFakeCompiler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateFakeCompiler, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\r\nTranslateFakeCompiler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateFakeCompiler });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateFakeCompiler, decorators: [{\r\n type: Injectable\r\n }] });\n\nclass TranslateStore {\r\n constructor() {\r\n /**\r\n * The lang currently used\r\n */\r\n this.currentLang = this.defaultLang;\r\n /**\r\n * a list of translations per lang\r\n */\r\n this.translations = {};\r\n /**\r\n * an array of langs\r\n */\r\n this.langs = [];\r\n /**\r\n * An EventEmitter to listen to translation change events\r\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\r\n * // do something\r\n * });\r\n */\r\n this.onTranslationChange = new EventEmitter();\r\n /**\r\n * An EventEmitter to listen to lang change events\r\n * onLangChange.subscribe((params: LangChangeEvent) => {\r\n * // do something\r\n * });\r\n */\r\n this.onLangChange = new EventEmitter();\r\n /**\r\n * An EventEmitter to listen to default lang change events\r\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\r\n * // do something\r\n * });\r\n */\r\n this.onDefaultLangChange = new EventEmitter();\r\n }\r\n}\n\nconst USE_STORE = new InjectionToken('USE_STORE');\r\nconst USE_DEFAULT_LANG = new InjectionToken('USE_DEFAULT_LANG');\r\nconst DEFAULT_LANGUAGE = new InjectionToken('DEFAULT_LANGUAGE');\r\nconst USE_EXTEND = new InjectionToken('USE_EXTEND');\r\nclass TranslateService {\r\n /**\r\n *\r\n * @param store an instance of the store (that is supposed to be unique)\r\n * @param currentLoader An instance of the loader currently used\r\n * @param compiler An instance of the compiler currently used\r\n * @param parser An instance of the parser currently used\r\n * @param missingTranslationHandler A handler for missing translations.\r\n * @param useDefaultLang whether we should use default language translation when current language translation is missing.\r\n * @param isolate whether this service should use the store or not\r\n * @param extend To make a child module extend (and use) translations from parent modules.\r\n * @param defaultLanguage Set the default language using configuration\r\n */\r\n constructor(store, currentLoader, compiler, parser, missingTranslationHandler, useDefaultLang = true, isolate = false, extend = false, defaultLanguage) {\r\n this.store = store;\r\n this.currentLoader = currentLoader;\r\n this.compiler = compiler;\r\n this.parser = parser;\r\n this.missingTranslationHandler = missingTranslationHandler;\r\n this.useDefaultLang = useDefaultLang;\r\n this.isolate = isolate;\r\n this.extend = extend;\r\n this.pending = false;\r\n this._onTranslationChange = new EventEmitter();\r\n this._onLangChange = new EventEmitter();\r\n this._onDefaultLangChange = new EventEmitter();\r\n this._langs = [];\r\n this._translations = {};\r\n this._translationRequests = {};\r\n /** set the default language from configuration */\r\n if (defaultLanguage) {\r\n this.setDefaultLang(defaultLanguage);\r\n }\r\n }\r\n /**\r\n * An EventEmitter to listen to translation change events\r\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\r\n * // do something\r\n * });\r\n */\r\n get onTranslationChange() {\r\n return this.isolate ? this._onTranslationChange : this.store.onTranslationChange;\r\n }\r\n /**\r\n * An EventEmitter to listen to lang change events\r\n * onLangChange.subscribe((params: LangChangeEvent) => {\r\n * // do something\r\n * });\r\n */\r\n get onLangChange() {\r\n return this.isolate ? this._onLangChange : this.store.onLangChange;\r\n }\r\n /**\r\n * An EventEmitter to listen to default lang change events\r\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\r\n * // do something\r\n * });\r\n */\r\n get onDefaultLangChange() {\r\n return this.isolate ? this._onDefaultLangChange : this.store.onDefaultLangChange;\r\n }\r\n /**\r\n * The default lang to fallback when translations are missing on the current lang\r\n */\r\n get defaultLang() {\r\n return this.isolate ? this._defaultLang : this.store.defaultLang;\r\n }\r\n set defaultLang(defaultLang) {\r\n if (this.isolate) {\r\n this._defaultLang = defaultLang;\r\n }\r\n else {\r\n this.store.defaultLang = defaultLang;\r\n }\r\n }\r\n /**\r\n * The lang currently used\r\n */\r\n get currentLang() {\r\n return this.isolate ? this._currentLang : this.store.currentLang;\r\n }\r\n set currentLang(currentLang) {\r\n if (this.isolate) {\r\n this._currentLang = currentLang;\r\n }\r\n else {\r\n this.store.currentLang = currentLang;\r\n }\r\n }\r\n /**\r\n * an array of langs\r\n */\r\n get langs() {\r\n return this.isolate ? this._langs : this.store.langs;\r\n }\r\n set langs(langs) {\r\n if (this.isolate) {\r\n this._langs = langs;\r\n }\r\n else {\r\n this.store.langs = langs;\r\n }\r\n }\r\n /**\r\n * a list of translations per lang\r\n */\r\n get translations() {\r\n return this.isolate ? this._translations : this.store.translations;\r\n }\r\n set translations(translations) {\r\n if (this.isolate) {\r\n this._translations = translations;\r\n }\r\n else {\r\n this.store.translations = translations;\r\n }\r\n }\r\n /**\r\n * Sets the default language to use as a fallback\r\n */\r\n setDefaultLang(lang) {\r\n if (lang === this.defaultLang) {\r\n return;\r\n }\r\n let pending = this.retrieveTranslations(lang);\r\n if (typeof pending !== \"undefined\") {\r\n // on init set the defaultLang immediately\r\n if (this.defaultLang == null) {\r\n this.defaultLang = lang;\r\n }\r\n pending.pipe(take(1))\r\n .subscribe((res) => {\r\n this.changeDefaultLang(lang);\r\n });\r\n }\r\n else { // we already have this language\r\n this.changeDefaultLang(lang);\r\n }\r\n }\r\n /**\r\n * Gets the default language used\r\n */\r\n getDefaultLang() {\r\n return this.defaultLang;\r\n }\r\n /**\r\n * Changes the lang currently used\r\n */\r\n use(lang) {\r\n // don't change the language if the language given is already selected\r\n if (lang === this.currentLang) {\r\n return of(this.translations[lang]);\r\n }\r\n let pending = this.retrieveTranslations(lang);\r\n if (typeof pending !== \"undefined\") {\r\n // on init set the currentLang immediately\r\n if (!this.currentLang) {\r\n this.currentLang = lang;\r\n }\r\n pending.pipe(take(1))\r\n .subscribe((res) => {\r\n this.changeLang(lang);\r\n });\r\n return pending;\r\n }\r\n else { // we have this language, return an Observable\r\n this.changeLang(lang);\r\n return of(this.translations[lang]);\r\n }\r\n }\r\n /**\r\n * Retrieves the given translations\r\n */\r\n retrieveTranslations(lang) {\r\n let pending;\r\n // if this language is unavailable or extend is true, ask for it\r\n if (typeof this.translations[lang] === \"undefined\" || this.extend) {\r\n this._translationRequests[lang] = this._translationRequests[lang] || this.getTranslation(lang);\r\n pending = this._translationRequests[lang];\r\n }\r\n return pending;\r\n }\r\n /**\r\n * Gets an object of translations for a given language with the current loader\r\n * and passes it through the compiler\r\n */\r\n getTranslation(lang) {\r\n this.pending = true;\r\n const loadingTranslations = this.currentLoader.getTranslation(lang).pipe(shareReplay(1), take(1));\r\n this.loadingTranslations = loadingTranslations.pipe(map((res) => this.compiler.compileTranslations(res, lang)), shareReplay(1), take(1));\r\n this.loadingTranslations\r\n .subscribe({\r\n next: (res) => {\r\n this.translations[lang] = this.extend && this.translations[lang] ? { ...res, ...this.translations[lang] } : res;\r\n this.updateLangs();\r\n this.pending = false;\r\n },\r\n error: (err) => {\r\n this.pending = false;\r\n }\r\n });\r\n return loadingTranslations;\r\n }\r\n /**\r\n * Manually sets an object of translations for a given language\r\n * after passing it through the compiler\r\n */\r\n setTranslation(lang, translations, shouldMerge = false) {\r\n translations = this.compiler.compileTranslations(translations, lang);\r\n if ((shouldMerge || this.extend) && this.translations[lang]) {\r\n this.translations[lang] = mergeDeep(this.translations[lang], translations);\r\n }\r\n else {\r\n this.translations[lang] = translations;\r\n }\r\n this.updateLangs();\r\n this.onTranslationChange.emit({ lang: lang, translations: this.translations[lang] });\r\n }\r\n /**\r\n * Returns an array of currently available langs\r\n */\r\n getLangs() {\r\n return this.langs;\r\n }\r\n /**\r\n * Add available langs\r\n */\r\n addLangs(langs) {\r\n langs.forEach((lang) => {\r\n if (this.langs.indexOf(lang) === -1) {\r\n this.langs.push(lang);\r\n }\r\n });\r\n }\r\n /**\r\n * Update the list of available langs\r\n */\r\n updateLangs() {\r\n this.addLangs(Object.keys(this.translations));\r\n }\r\n /**\r\n * Returns the parsed result of the translations\r\n */\r\n getParsedResult(translations, key, interpolateParams) {\r\n let res;\r\n if (key instanceof Array) {\r\n let result = {}, observables = false;\r\n for (let k of key) {\r\n result[k] = this.getParsedResult(translations, k, interpolateParams);\r\n if (isObservable(result[k])) {\r\n observables = true;\r\n }\r\n }\r\n if (observables) {\r\n const sources = key.map(k => isObservable(result[k]) ? result[k] : of(result[k]));\r\n return forkJoin(sources).pipe(map((arr) => {\r\n let obj = {};\r\n arr.forEach((value, index) => {\r\n obj[key[index]] = value;\r\n });\r\n return obj;\r\n }));\r\n }\r\n return result;\r\n }\r\n if (translations) {\r\n res = this.parser.interpolate(this.parser.getValue(translations, key), interpolateParams);\r\n }\r\n if (typeof res === \"undefined\" && this.defaultLang != null && this.defaultLang !== this.currentLang && this.useDefaultLang) {\r\n res = this.parser.interpolate(this.parser.getValue(this.translations[this.defaultLang], key), interpolateParams);\r\n }\r\n if (typeof res === \"undefined\") {\r\n let params = { key, translateService: this };\r\n if (typeof interpolateParams !== 'undefined') {\r\n params.interpolateParams = interpolateParams;\r\n }\r\n res = this.missingTranslationHandler.handle(params);\r\n }\r\n return typeof res !== \"undefined\" ? res : key;\r\n }\r\n /**\r\n * Gets the translated value of a key (or an array of keys)\r\n * @returns the translated key, or an object of translated keys\r\n */\r\n get(key, interpolateParams) {\r\n if (!isDefined(key) || !key.length) {\r\n throw new Error(`Parameter \"key\" required`);\r\n }\r\n // check if we are loading a new translation to use\r\n if (this.pending) {\r\n return this.loadingTranslations.pipe(concatMap((res) => {\r\n res = this.getParsedResult(res, key, interpolateParams);\r\n return isObservable(res) ? res : of(res);\r\n }));\r\n }\r\n else {\r\n let res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\r\n return isObservable(res) ? res : of(res);\r\n }\r\n }\r\n /**\r\n * Returns a stream of translated values of a key (or an array of keys) which updates\r\n * whenever the translation changes.\r\n * @returns A stream of the translated key, or an object of translated keys\r\n */\r\n getStreamOnTranslationChange(key, interpolateParams) {\r\n if (!isDefined(key) || !key.length) {\r\n throw new Error(`Parameter \"key\" required`);\r\n }\r\n return concat(defer(() => this.get(key, interpolateParams)), this.onTranslationChange.pipe(switchMap((event) => {\r\n const res = this.getParsedResult(event.translations, key, interpolateParams);\r\n if (typeof res.subscribe === 'function') {\r\n return res;\r\n }\r\n else {\r\n return of(res);\r\n }\r\n })));\r\n }\r\n /**\r\n * Returns a stream of translated values of a key (or an array of keys) which updates\r\n * whenever the language changes.\r\n * @returns A stream of the translated key, or an object of translated keys\r\n */\r\n stream(key, interpolateParams) {\r\n if (!isDefined(key) || !key.length) {\r\n throw new Error(`Parameter \"key\" required`);\r\n }\r\n return concat(defer(() => this.get(key, interpolateParams)), this.onLangChange.pipe(switchMap((event) => {\r\n const res = this.getParsedResult(event.translations, key, interpolateParams);\r\n return isObservable(res) ? res : of(res);\r\n })));\r\n }\r\n /**\r\n * Returns a translation instantly from the internal state of loaded translation.\r\n * All rules regarding the current language, the preferred language of even fallback languages will be used except any promise handling.\r\n */\r\n instant(key, interpolateParams) {\r\n if (!isDefined(key) || !key.length) {\r\n throw new Error(`Parameter \"key\" required`);\r\n }\r\n let res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\r\n if (isObservable(res)) {\r\n if (key instanceof Array) {\r\n let obj = {};\r\n key.forEach((value, index) => {\r\n obj[key[index]] = key[index];\r\n });\r\n return obj;\r\n }\r\n return key;\r\n }\r\n else {\r\n return res;\r\n }\r\n }\r\n /**\r\n * Sets the translated value of a key, after compiling it\r\n */\r\n set(key, value, lang = this.currentLang) {\r\n this.translations[lang][key] = this.compiler.compile(value, lang);\r\n this.updateLangs();\r\n this.onTranslationChange.emit({ lang: lang, translations: this.translations[lang] });\r\n }\r\n /**\r\n * Changes the current lang\r\n */\r\n changeLang(lang) {\r\n this.currentLang = lang;\r\n this.onLangChange.emit({ lang: lang, translations: this.translations[lang] });\r\n // if there is no default lang, use the one that we just set\r\n if (this.defaultLang == null) {\r\n this.changeDefaultLang(lang);\r\n }\r\n }\r\n /**\r\n * Changes the default lang\r\n */\r\n changeDefaultLang(lang) {\r\n this.defaultLang = lang;\r\n this.onDefaultLangChange.emit({ lang: lang, translations: this.translations[lang] });\r\n }\r\n /**\r\n * Allows to reload the lang file from the file\r\n */\r\n reloadLang(lang) {\r\n this.resetLang(lang);\r\n return this.getTranslation(lang);\r\n }\r\n /**\r\n * Deletes inner translation\r\n */\r\n resetLang(lang) {\r\n this._translationRequests[lang] = undefined;\r\n this.translations[lang] = undefined;\r\n }\r\n /**\r\n * Returns the language code name from the browser, e.g. \"de\"\r\n */\r\n getBrowserLang() {\r\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\r\n return undefined;\r\n }\r\n let browserLang = window.navigator.languages ? window.navigator.languages[0] : null;\r\n browserLang = browserLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\r\n if (typeof browserLang === 'undefined') {\r\n return undefined;\r\n }\r\n if (browserLang.indexOf('-') !== -1) {\r\n browserLang = browserLang.split('-')[0];\r\n }\r\n if (browserLang.indexOf('_') !== -1) {\r\n browserLang = browserLang.split('_')[0];\r\n }\r\n return browserLang;\r\n }\r\n /**\r\n * Returns the culture language code name from the browser, e.g. \"de-DE\"\r\n */\r\n getBrowserCultureLang() {\r\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\r\n return undefined;\r\n }\r\n let browserCultureLang = window.navigator.languages ? window.navigator.languages[0] : null;\r\n browserCultureLang = browserCultureLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\r\n return browserCultureLang;\r\n }\r\n}\r\nTranslateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateService, deps: [{ token: TranslateStore }, { token: TranslateLoader }, { token: TranslateCompiler }, { token: TranslateParser }, { token: MissingTranslationHandler }, { token: USE_DEFAULT_LANG }, { token: USE_STORE }, { token: USE_EXTEND }, { token: DEFAULT_LANGUAGE }], target: i0.ɵɵFactoryTarget.Injectable });\r\nTranslateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateService });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateService, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: TranslateStore }, { type: TranslateLoader }, { type: TranslateCompiler }, { type: TranslateParser }, { type: MissingTranslationHandler }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [USE_DEFAULT_LANG]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [USE_STORE]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [USE_EXTEND]\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [DEFAULT_LANGUAGE]\r\n }] }]; } });\n\nclass TranslateDirective {\r\n constructor(translateService, element, _ref) {\r\n this.translateService = translateService;\r\n this.element = element;\r\n this._ref = _ref;\r\n // subscribe to onTranslationChange event, in case the translations of the current lang change\r\n if (!this.onTranslationChangeSub) {\r\n this.onTranslationChangeSub = this.translateService.onTranslationChange.subscribe((event) => {\r\n if (event.lang === this.translateService.currentLang) {\r\n this.checkNodes(true, event.translations);\r\n }\r\n });\r\n }\r\n // subscribe to onLangChange event, in case the language changes\r\n if (!this.onLangChangeSub) {\r\n this.onLangChangeSub = this.translateService.onLangChange.subscribe((event) => {\r\n this.checkNodes(true, event.translations);\r\n });\r\n }\r\n // subscribe to onDefaultLangChange event, in case the default language changes\r\n if (!this.onDefaultLangChangeSub) {\r\n this.onDefaultLangChangeSub = this.translateService.onDefaultLangChange.subscribe((event) => {\r\n this.checkNodes(true);\r\n });\r\n }\r\n }\r\n set translate(key) {\r\n if (key) {\r\n this.key = key;\r\n this.checkNodes();\r\n }\r\n }\r\n set translateParams(params) {\r\n if (!equals(this.currentParams, params)) {\r\n this.currentParams = params;\r\n this.checkNodes(true);\r\n }\r\n }\r\n ngAfterViewChecked() {\r\n this.checkNodes();\r\n }\r\n checkNodes(forceUpdate = false, translations) {\r\n let nodes = this.element.nativeElement.childNodes;\r\n // if the element is empty\r\n if (!nodes.length) {\r\n // we add the key as content\r\n this.setContent(this.element.nativeElement, this.key);\r\n nodes = this.element.nativeElement.childNodes;\r\n }\r\n for (let i = 0; i < nodes.length; ++i) {\r\n let node = nodes[i];\r\n if (node.nodeType === 3) { // node type 3 is a text node\r\n let key;\r\n if (forceUpdate) {\r\n node.lastKey = null;\r\n }\r\n if (isDefined(node.lookupKey)) {\r\n key = node.lookupKey;\r\n }\r\n else if (this.key) {\r\n key = this.key;\r\n }\r\n else {\r\n let content = this.getContent(node);\r\n let trimmedContent = content.trim();\r\n if (trimmedContent.length) {\r\n node.lookupKey = trimmedContent;\r\n // we want to use the content as a key, not the translation value\r\n if (content !== node.currentValue) {\r\n key = trimmedContent;\r\n // the content was changed from the user, we'll use it as a reference if needed\r\n node.originalContent = content || node.originalContent;\r\n }\r\n else if (node.originalContent) { // the content seems ok, but the lang has changed\r\n // the current content is the translation, not the key, use the last real content as key\r\n key = node.originalContent.trim();\r\n }\r\n else if (content !== node.currentValue) {\r\n // we want to use the content as a key, not the translation value\r\n key = trimmedContent;\r\n // the content was changed from the user, we'll use it as a reference if needed\r\n node.originalContent = content || node.originalContent;\r\n }\r\n }\r\n }\r\n this.updateValue(key, node, translations);\r\n }\r\n }\r\n }\r\n updateValue(key, node, translations) {\r\n if (key) {\r\n if (node.lastKey === key && this.lastParams === this.currentParams) {\r\n return;\r\n }\r\n this.lastParams = this.currentParams;\r\n let onTranslation = (res) => {\r\n if (res !== key) {\r\n node.lastKey = key;\r\n }\r\n if (!node.originalContent) {\r\n node.originalContent = this.getContent(node);\r\n }\r\n node.currentValue = isDefined(res) ? res : (node.originalContent || key);\r\n // we replace in the original content to preserve spaces that we might have trimmed\r\n this.setContent(node, this.key ? node.currentValue : node.originalContent.replace(key, node.currentValue));\r\n this._ref.markForCheck();\r\n };\r\n if (isDefined(translations)) {\r\n let res = this.translateService.getParsedResult(translations, key, this.currentParams);\r\n if (isObservable(res)) {\r\n res.subscribe({ next: onTranslation });\r\n }\r\n else {\r\n onTranslation(res);\r\n }\r\n }\r\n else {\r\n this.translateService.get(key, this.currentParams).subscribe(onTranslation);\r\n }\r\n }\r\n }\r\n getContent(node) {\r\n return isDefined(node.textContent) ? node.textContent : node.data;\r\n }\r\n setContent(node, content) {\r\n if (isDefined(node.textContent)) {\r\n node.textContent = content;\r\n }\r\n else {\r\n node.data = content;\r\n }\r\n }\r\n ngOnDestroy() {\r\n if (this.onLangChangeSub) {\r\n this.onLangChangeSub.unsubscribe();\r\n }\r\n if (this.onDefaultLangChangeSub) {\r\n this.onDefaultLangChangeSub.unsubscribe();\r\n }\r\n if (this.onTranslationChangeSub) {\r\n this.onTranslationChangeSub.unsubscribe();\r\n }\r\n }\r\n}\r\nTranslateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateDirective, deps: [{ token: TranslateService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\r\nTranslateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.0\", type: TranslateDirective, selector: \"[translate],[ngx-translate]\", inputs: { translate: \"translate\", translateParams: \"translateParams\" }, ngImport: i0 });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateDirective, decorators: [{\r\n type: Directive,\r\n args: [{\r\n selector: '[translate],[ngx-translate]'\r\n }]\r\n }], ctorParameters: function () { return [{ type: TranslateService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { translate: [{\r\n type: Input\r\n }], translateParams: [{\r\n type: Input\r\n }] } });\n\nclass TranslatePipe {\r\n constructor(translate, _ref) {\r\n this.translate = translate;\r\n this._ref = _ref;\r\n this.value = '';\r\n this.lastKey = null;\r\n this.lastParams = [];\r\n }\r\n updateValue(key, interpolateParams, translations) {\r\n let onTranslation = (res) => {\r\n this.value = res !== undefined ? res : key;\r\n this.lastKey = key;\r\n this._ref.markForCheck();\r\n };\r\n if (translations) {\r\n let res = this.translate.getParsedResult(translations, key, interpolateParams);\r\n if (isObservable(res.subscribe)) {\r\n res.subscribe(onTranslation);\r\n }\r\n else {\r\n onTranslation(res);\r\n }\r\n }\r\n this.translate.get(key, interpolateParams).subscribe(onTranslation);\r\n }\r\n transform(query, ...args) {\r\n if (!query || !query.length) {\r\n return query;\r\n }\r\n // if we ask another time for the same key, return the last value\r\n if (equals(query, this.lastKey) && equals(args, this.lastParams)) {\r\n return this.value;\r\n }\r\n let interpolateParams = undefined;\r\n if (isDefined(args[0]) && args.length) {\r\n if (typeof args[0] === 'string' && args[0].length) {\r\n // we accept objects written in the template such as {n:1}, {'n':1}, {n:'v'}\r\n // which is why we might need to change it to real JSON objects such as {\"n\":1} or {\"n\":\"v\"}\r\n let validArgs = args[0]\r\n .replace(/(\\')?([a-zA-Z0-9_]+)(\\')?(\\s)?:/g, '\"$2\":')\r\n .replace(/:(\\s)?(\\')(.*?)(\\')/g, ':\"$3\"');\r\n try {\r\n interpolateParams = JSON.parse(validArgs);\r\n }\r\n catch (e) {\r\n throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);\r\n }\r\n }\r\n else if (typeof args[0] === 'object' && !Array.isArray(args[0])) {\r\n interpolateParams = args[0];\r\n }\r\n }\r\n // store the query, in case it changes\r\n this.lastKey = query;\r\n // store the params, in case they change\r\n this.lastParams = args;\r\n // set the value\r\n this.updateValue(query, interpolateParams);\r\n // if there is a subscription to onLangChange, clean it\r\n this._dispose();\r\n // subscribe to onTranslationChange event, in case the translations change\r\n if (!this.onTranslationChange) {\r\n this.onTranslationChange = this.translate.onTranslationChange.subscribe((event) => {\r\n if (this.lastKey && event.lang === this.translate.currentLang) {\r\n this.lastKey = null;\r\n this.updateValue(query, interpolateParams, event.translations);\r\n }\r\n });\r\n }\r\n // subscribe to onLangChange event, in case the language changes\r\n if (!this.onLangChange) {\r\n this.onLangChange = this.translate.onLangChange.subscribe((event) => {\r\n if (this.lastKey) {\r\n this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\r\n this.updateValue(query, interpolateParams, event.translations);\r\n }\r\n });\r\n }\r\n // subscribe to onDefaultLangChange event, in case the default language changes\r\n if (!this.onDefaultLangChange) {\r\n this.onDefaultLangChange = this.translate.onDefaultLangChange.subscribe(() => {\r\n if (this.lastKey) {\r\n this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\r\n this.updateValue(query, interpolateParams);\r\n }\r\n });\r\n }\r\n return this.value;\r\n }\r\n /**\r\n * Clean any existing subscription to change events\r\n */\r\n _dispose() {\r\n if (typeof this.onTranslationChange !== 'undefined') {\r\n this.onTranslationChange.unsubscribe();\r\n this.onTranslationChange = undefined;\r\n }\r\n if (typeof this.onLangChange !== 'undefined') {\r\n this.onLangChange.unsubscribe();\r\n this.onLangChange = undefined;\r\n }\r\n if (typeof this.onDefaultLangChange !== 'undefined') {\r\n this.onDefaultLangChange.unsubscribe();\r\n this.onDefaultLangChange = undefined;\r\n }\r\n }\r\n ngOnDestroy() {\r\n this._dispose();\r\n }\r\n}\r\nTranslatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslatePipe, deps: [{ token: TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });\r\nTranslatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslatePipe, name: \"translate\", pure: false });\r\nTranslatePipe.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslatePipe });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslatePipe, decorators: [{\r\n type: Injectable\r\n }, {\r\n type: Pipe,\r\n args: [{\r\n name: 'translate',\r\n pure: false // required to update the value when the promise is resolved\r\n }]\r\n }], ctorParameters: function () { return [{ type: TranslateService }, { type: i0.ChangeDetectorRef }]; } });\n\nclass TranslateModule {\r\n /**\r\n * Use this method in your root module to provide the TranslateService\r\n */\r\n static forRoot(config = {}) {\r\n return {\r\n ngModule: TranslateModule,\r\n providers: [\r\n config.loader || { provide: TranslateLoader, useClass: TranslateFakeLoader },\r\n config.compiler || { provide: TranslateCompiler, useClass: TranslateFakeCompiler },\r\n config.parser || { provide: TranslateParser, useClass: TranslateDefaultParser },\r\n config.missingTranslationHandler || { provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler },\r\n TranslateStore,\r\n { provide: USE_STORE, useValue: config.isolate },\r\n { provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang },\r\n { provide: USE_EXTEND, useValue: config.extend },\r\n { provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage },\r\n TranslateService\r\n ]\r\n };\r\n }\r\n /**\r\n * Use this method in your other (non root) modules to import the directive/pipe\r\n */\r\n static forChild(config = {}) {\r\n return {\r\n ngModule: TranslateModule,\r\n providers: [\r\n config.loader || { provide: TranslateLoader, useClass: TranslateFakeLoader },\r\n config.compiler || { provide: TranslateCompiler, useClass: TranslateFakeCompiler },\r\n config.parser || { provide: TranslateParser, useClass: TranslateDefaultParser },\r\n config.missingTranslationHandler || { provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler },\r\n { provide: USE_STORE, useValue: config.isolate },\r\n { provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang },\r\n { provide: USE_EXTEND, useValue: config.extend },\r\n { provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage },\r\n TranslateService\r\n ]\r\n };\r\n }\r\n}\r\nTranslateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nTranslateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateModule, declarations: [TranslatePipe,\r\n TranslateDirective], exports: [TranslatePipe,\r\n TranslateDirective] });\r\nTranslateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateModule });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TranslateModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [\r\n TranslatePipe,\r\n TranslateDirective\r\n ],\r\n exports: [\r\n TranslatePipe,\r\n TranslateDirective\r\n ]\r\n }]\r\n }] });\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { DEFAULT_LANGUAGE, FakeMissingTranslationHandler, MissingTranslationHandler, TranslateCompiler, TranslateDefaultParser, TranslateDirective, TranslateFakeCompiler, TranslateFakeLoader, TranslateLoader, TranslateModule, TranslateParser, TranslatePipe, TranslateService, TranslateStore, USE_DEFAULT_LANG, USE_EXTEND, USE_STORE };\n","import { Inject, Injectable, NgZone } from '@angular/core';\nimport * as Sentry from '@sentry/angular';\nimport * as parent from '@ngx-translate/core';\nimport { LANGUAGE_KEY, Panel } from 'app/utils/panel';\nimport { AppState } from 'app/core/app.service';\nimport { DOCUMENT } from '@angular/common';\nimport { noop, Observable, firstValueFrom, map } from 'rxjs';\nimport dayjs from 'dayjs';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { Directionality } from '@angular/cdk/bidi';\n\nconst translateGetParsedResult = parent.TranslateService.prototype.getParsedResult;\n\nconst DEFAULT_LANGUAGE = 'en';\n\nexport const PANEL_DEFAULT_LANGUAGE = 'panelLang';\n\nexport class UntranslatableString {\n static for(value: string) {\n return new this(value || '') as any as string;\n }\n\n get length() {\n return this.value.length;\n }\n\n toString() {\n return this.value;\n }\n\n private constructor(public value: string) {\n }\n}\n\nconst ignoreSentryPatterns: RegExp[] = [\n /^One or more domains provided do not exist.*/,\n /^malware\\.onDemand\\.status.*/,\n /Path .* should be absolute/,\n /^IP [0-9a-fA-F\\.\\/\\:]* is already in [A-Z]* list/,\n /^[0-9]*\\/[0-9]* ip\\(s\\) were successfully deleted/,\n /has host bits set$/,\n /^Noop: /,\n /^Authentication failed/,\n /^User name not found/,\n /^Feature '[a-zA-Z]*' is disabled for user/,\n /^\\[Errno 104\\] Connection reset by peer$/,\n /^Kernel is unsupported/,\n /^Can't delete KernelCare, because it's not installed$/,\n /^Request timeout$/,\n /^Empty response from socket$/,\n /^Request processing error$/,\n /^Licenses limit exceeded$/,\n /^On-demand scan is already running$/,\n /Too many open files/,\n /Connection refused$/,\n /^400 Client Error: BAD REQUEST for url/,\n /^No implementation for feature:*/,\n /^(Country|IP) \\S+ is already in (BLACK|WHITE) list$/,\n /^.*error: must be of ip type$/\n];\nparent.TranslateService.prototype.getParsedResult = function(translations,\n key, interpolateParams) {\n if (key instanceof UntranslatableString) {\n return key.value;\n }\n const result = translateGetParsedResult.call(this, translations, key, interpolateParams);\n if (ENV !== 'test' && result === key\n && !ignoreSentryPatterns.some(pattern => pattern.test(key))) {\n const error = {\n reason: 'Can not find translation',\n key,\n interpolateParams,\n };\n console.error(error);\n Sentry.captureException(new Error(JSON.stringify(error)));\n }\n return result;\n};\n\nexport type TranslateParams = {\n [key: string]: any,\n};\n\n@Injectable()\nexport class TranslateService {\n readonly langs = [{\n code: 'en',\n dayjs: 'en',\n name: 'English',\n }, {\n code: 'es',\n dayjs: 'es',\n name: 'Español',\n }, {\n code: 'ru',\n dayjs: 'ru',\n name: 'Русский',\n }, {\n code: 'ja',\n dayjs: 'ja',\n name: '日本語',\n }, {\n code: 'de',\n dayjs: 'de',\n name: 'Deutsch',\n }, {\n code: 'fr',\n dayjs: 'fr',\n name: 'Français',\n }, {\n code: 'it',\n dayjs: 'it',\n name: 'Italiano',\n }, {\n code: 'nl',\n dayjs: 'nl',\n name: 'Nederlands',\n }, {\n code: 'pt',\n dayjs: 'pt',\n name: 'Português',\n }, {\n code: 'tr',\n dayjs: 'tr',\n name: 'Türkçe',\n }, {\n code: 'zh-cn',\n dayjs: 'zh-cn',\n name: '简体中文',\n }];\n\n readonly rtlLangs: string[] = [\n // 'es',\n ];\n\n public currentLang: string;\n public logicalLang: string;\n\n panelLang: string;\n html: HTMLHtmlElement | null;\n dirContainer: HTMLElement | null;\n\n getDir(lang: string) {\n return this.rtlLangs.includes(lang) ? 'rtl' : 'ltr';\n }\n\n constructor(\n public translate: parent.TranslateService,\n private panel: Panel,\n private appState: AppState,\n private zone: NgZone,\n @Inject(DOCUMENT) private document: Document,\n ) {\n this.translate.onLangChange.subscribe(({lang}) => this.setDayjsLocale(lang));\n // if `<defaultLang>.i18n` file is finished loading after `<currentLang>.i18n` -\n // dayjs global locale wil get reset during import (due to `getSetGlobalLocale` call in\n // `defineLocale`)\n // We need to force it back after the import is done:\n this.translate.onDefaultLangChange.subscribe(() => this.setDayjsLocale(this.currentLang));\n\n this.html = this.document.querySelector('html');\n this.dirContainer = this.html!.getElementsByClassName('i360-app')[0] as HTMLElement;\n this.panelLang = this.panel.getLang(this.document);\n\n this.initLanguages();\n\n const create = Overlay.prototype.create;\n let dir;\n Object.defineProperty(Directionality.prototype, 'value', {\n get: () => dir,\n set: noop,\n configurable: true,\n });\n Object.defineProperty(Directionality.prototype, 'change', {\n get: () => dirChanged,\n set: noop,\n configurable: true,\n });\n const dirChanged = this.translate.onLangChange.pipe(\n map(({lang}) => this.getDir(lang)),\n );\n dirChanged.subscribe(d => dir = d);\n Overlay.prototype.create = function(config?: OverlayConfig) {\n const ref: OverlayRef = create.call(this, config);\n Object.defineProperty((ref as any)._config, 'direction', {\n get: () => dir,\n set: noop,\n });\n return ref;\n };\n\n this.appState.lang.subscribe(lang => { // pick up lang changes from other SPAs\n if (lang && lang !== this.currentLang) {\n this.use(lang);\n }\n });\n }\n\n use(lang: string) {\n localStorage.setItem(LANGUAGE_KEY, lang);\n this.logicalLang = lang;\n if (lang === PANEL_DEFAULT_LANGUAGE || !lang) {\n lang = this.panelLang;\n }\n this.currentLang = this.getAppropriateLang(\n lang,\n this.langs.map(lang => lang.code),\n DEFAULT_LANGUAGE);\n this.translate.use(this.currentLang);\n this.ensureRtl(this.currentLang);\n this.appState.lang.next(this.currentLang); // update global state for all SPAs\n }\n\n setDayjsLocale(lang: string): void {\n let item = this.langs.find(i => i.code === lang);\n lang = item ? item.dayjs : lang;\n dayjs.locale(lang);\n }\n\n t(key: string | string[], interpolateParams?: Object): Promise<string> {\n return firstValueFrom(this.translate.get(key, interpolateParams));\n }\n\n stream(key: string | string[], interpolateParams?: Object): Observable<string | any> {\n return this.translate.stream(key, interpolateParams);\n }\n\n getAppropriateLang(lang: string, langs: string[], defaultLang: string): string {\n if (langs.includes(lang)) {\n return lang;\n }\n const [standardLang, dialect] = lang.split('-');\n if (dialect && langs.includes(standardLang)) {\n return standardLang;\n }\n return defaultLang;\n }\n\n initLanguages() {\n const currentleng = localStorage.getItem(LANGUAGE_KEY) || '';\n this.translate.addLangs(this.langs.map(lang => lang.code));\n this.translate.setDefaultLang(DEFAULT_LANGUAGE);\n this.use(currentleng);\n }\n\n private ensureRtl(lang: string) {\n if (this.html) {\n const dir = this.getDir(lang);\n this.html.classList.remove('rtl', 'ltr');\n this.html.classList.add(dir);\n if (this.dirContainer) {\n this.dirContainer.dir = dir;\n }\n }\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { identity, of, BehaviorSubject, first, map } from 'rxjs';\nimport { TranslateService } from 'app/utils/translate/translate.service';\n\n\n@Injectable()\nexport class CountryService implements OnDestroy {\n public static codes: string[] = [\n 'AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX',\n 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ',\n 'BR', 'BS', 'BT', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL',\n 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO',\n 'DZ', 'EC', 'EE', 'EG', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB',\n 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU',\n 'GW', 'GY', 'HK', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR',\n 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW',\n 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC',\n 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT',\n 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP',\n 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS',\n 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG',\n 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ',\n 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW',\n 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF',\n 'WS', 'XK', 'YE', 'YT', 'ZA', 'ZM', 'ZW',\n ];\n\n loaded = new BehaviorSubject(false);\n countries: {[key: string]: string} = {};\n countriesTranslated: {[key: string]: string};\n private langChangeSubscription = this.translate.translate.onLangChange.subscribe(event => {\n this.init();\n });\n constructor(private translate: TranslateService) {\n for (const code of CountryService.codes) {\n this.countries[code] = `country.${code}`;\n }\n\n this.init();\n }\n\n async init() {\n const countriesTranslated = {};\n for (const [code, key] of Object.entries(this.countries)) {\n countriesTranslated[code] = await this.translate.t(key);\n }\n this.countriesTranslated = countriesTranslated;\n this.loaded.next(true);\n }\n\n ngOnDestroy() {\n this.langChangeSubscription.unsubscribe();\n }\n\n searchCountryCodeByName(name: string): string {\n for (const [code, value] of Object.entries(this.countriesTranslated)) {\n if (value.toLowerCase() === name.toLowerCase()) {\n return code;\n }\n }\n\n return '';\n }\n\n getCountryNameByCode(code: string): string {\n return this.countriesTranslated[code] || '';\n }\n\n validator(required) {\n const noExisting = of({country: {}});\n const countryRequired = of({required: {what: 'country'}});\n const ofNull = of(null);\n const validate = (value) => this.searchCountryCodeByName(value) ? ofNull : noExisting;\n\n return ({value}) => {\n if (!value) {\n return required ? countryRequired : ofNull;\n }\n\n if (this.loaded.getValue()) {\n return validate(value);\n } else {\n return this.loaded.pipe(\n first(identity),\n map(() => validate(value)),\n );\n }\n };\n }\n\n async translateCountryInUrl(urlParam) {\n let countryCode = '';\n if (this.countriesTranslated && urlParam && this.getCountryNameByCode(urlParam)) {\n countryCode = await this.translate.t(`country.${urlParam}`);\n }\n return countryCode;\n }\n\n getCountryCode(text) {\n text = text.toLowerCase();\n return Object.keys(this.countriesTranslated).find(key => {\n return this.countriesTranslated[key].toLowerCase() === text;\n });\n }\n}\n\n","import { DEFAULT_DATA } from './misc';\nimport { RulePlugin } from '../blocked-rules';\nimport { IPList } from '../lists';\nimport {\n AdvicesListsResponseInServer,\n ChartName,\n DashboardAddServerResponseInServer,\n DashboardServerIdsResponseInServer,\n} from '../dashboard';\nimport { CountryService } from '../../src/app/services/country';\n\nconst rand = (max: number) => Math.floor(Math.random() * max + 1);\n\nconst getHistogramForMonth = (max: number, groupBy: string = 'day') => {\n const periods = {hour: 3_600, '6h': 21_600, day: 86_400}[groupBy] || 86_400;\n const start = Math.round(Date.now() / 1000);\n return [\n ...Array(...Array(groupBy === 'hour' ? 25 : 31))\n .map((_, i) => ([start - i * periods, rand(max)]))\n ].reverse();\n};\n\nconst getHeatmapForMonth = (max: number) => {\n const quantity = rand(30);\n let codes: [string, number][] = [];\n for(let i = 0; i < quantity; i++) {\n codes.push([CountryService.codes[rand(246)], rand(max)]);\n }\n return codes;\n};\n\nexport const responses = {\n // FIXME: implement stubs validation\n get errorAddServerId(): DashboardAddServerResponseInServer {\n return {\n ...this.serverIds,\n errors: [{\n server_id: 'SSqqqqqqqqqqqqqq',\n msg: 'qwerty',\n }],\n };\n },\n settingsAdvices: <AdvicesListsResponseInServer>{\n result: [{\n type: 'the_type',\n snoozed_until: 0,\n popup: true,\n dashboard: false,\n description: '',\n severity: 0,\n link_text: '',\n link: '',\n popup_title: 'Turn on \"Rapid Scan\"',\n popup_description: 'Improves the speed of repeated scans by up to 20x times',\n config_action: {\n MALWARE_SCANNING: {\n rapid_scan: true,\n },\n },\n ignore: {\n MALWARE_SCANNING: {\n rapid_scan: [true],\n },\n },\n }],\n },\n noAdvices: <AdvicesListsResponseInServer>{\n result: [],\n },\n advices: <AdvicesListsResponseInServer>{\n result: [\n {\n type: 'type1',\n snoozed_until: 1594326014,\n dashboard: true,\n popup: true,\n popup_title: '\"Background Malware Scan\" to \"Once a week\"',\n popup_description: 'Minimize the time of new malicious...',\n config_action: {\n MALWARE_SCAN_SCHEDULE: {\n interval: 'week',\n day_of_month: 0,\n },\n },\n ignore: {\n WEBSHIELD: {\n enable: [false],\n },\n },\n },\n {\n type: 'type2',\n snoozed_until: 1594326014,\n dashboard: true,\n popup: true,\n popup_title: 'Malware Scan 2',\n popup_description: 'description 2',\n config_action: {\n MALWARE_SCAN_SCHEDULE: {\n hour: 3,\n },\n },\n ignore: {\n MALWARE_SCAN_SCHEDULE: {\n hour: [2],\n },\n },\n },\n {\n type: 'type3',\n snoozed_until: 1594326014,\n dashboard: true,\n popup: true,\n popup_title: 'Malware Scan 3',\n popup_description: 'description 3',\n config_action: {\n MALWARE_SCAN_SCHEDULE: {\n hour: 3,\n },\n },\n ignore: {\n MALWARE_SCAN_SCHEDULE: {\n hour: [2],\n },\n },\n description: 'It is recommended to set a background scan to weekly or daily.',\n severity: 2,\n link_text: 'Check Imunify360 settings.',\n link: 'https://docs.imunify360.com/dashboard/#background-scanning',\n },\n ],\n },\n serverIds: {\n result: [{\n server_id: '123',\n ip: 'ip',\n nodename: 'domain1',\n }, {\n server_id: 'server_id2',\n ip: 'ip',\n nodename: 'domain2',\n }, {\n server_id: 'server_id3',\n ip: 'ip',\n nodename: 'domain3',\n }, {\n server_id: 'SSqqqqqqqqqqqqq2',\n ip: 'ip',\n nodename: null,\n }, {\n server_id: 'server_id5',\n ip: null,\n nodename: null,\n }],\n error: [],\n } as DashboardServerIdsResponseInServer,\n serverIdsWithIdenticalDomains: {\n result: [{\n server_id: 'id1',\n ip: 'ip',\n nodename: 'domain1',\n }, {\n server_id: 'id2',\n ip: 'ip',\n nodename: 'domain1',\n }],\n } as DashboardServerIdsResponseInServer,\n get histogram() {\n return this.histogramGrouped('day');\n },\n histogramGrouped (groupBy: string) {\n return {\n ossec_alerts: getHistogramForMonth(100, groupBy),\n waf_alerts: getHistogramForMonth(300, groupBy),\n bruteforce_attacks: getHistogramForMonth(600, groupBy),\n captcha_blocked: getHistogramForMonth(1000, groupBy),\n num_of_alerts: getHistogramForMonth(800, groupBy),\n denied_bot_attacks: getHistogramForMonth(300, groupBy),\n num_of_mrs: getHistogramForMonth(50, groupBy),\n num_of_cleanups: getHistogramForMonth(50, groupBy),\n ham: getHistogramForMonth(50, groupBy),\n spam: getHistogramForMonth(50, groupBy),\n };\n },\n get noDataFound() {\n // trapped on circular dependency\n return Object.keys(ChartName).reduce((res, key) => {\n res[key] = <string[]>[];\n return res;\n }, {});\n },\n heatmap: {\n ossec_alerts: getHeatmapForMonth(100),\n waf_alerts: getHeatmapForMonth(300),\n bruteforce_attacks: getHeatmapForMonth(600),\n captcha_blocked: getHeatmapForMonth(1000),\n num_of_alerts: getHeatmapForMonth(800),\n denied_bot_attacks: getHeatmapForMonth(300),\n num_of_mrs: getHeatmapForMonth(50),\n num_of_cleanups: getHeatmapForMonth(50),\n },\n incidents: {\n data: {\n ...DEFAULT_DATA,\n items: [\n {\n severity: 5,\n id: 68,\n name: 'Possible attack on the cpanel services',\n rule: '11001',\n description: '[2016-12-05 08:21:10 -0500] info [cpsrvd] 192.168.123.123 - root \"POST /cgi/imunify360/handlers/sendRequest.cgi HTTP/1.1\" FAILED LOGIN whostmgrd: cookie ip check: IP address has changed', // tslint:disable-line:max-line-length\n times: 2,\n abuser: null,\n timestamp: 1480944074.4472556,\n listname: null,\n purpose: null,\n plugin: RulePlugin.ossec,\n country: null,\n domain: null,\n },\n {\n severity: 5,\n id: 68,\n name: 'Possible attack on the cpanel services',\n rule: '11001',\n description: '[2016-12-05 08:21:10 -0500] info [cpsrvd] 192.168.123.123 - root \"POST /cgi/imunify360/handlers/sendRequest.cgi HTTP/1.1\" FAILED LOGIN whostmgrd: cookie ip check: IP address has changed', // tslint:disable-line:max-line-length\n times: 2,\n abuser: '1234:5678:9abc:def0::',\n timestamp: 1480944074.4472556,\n purpose: null,\n listname: null,\n domain: 'test2.com',\n plugin: RulePlugin.modsec,\n country: {\n name: 'United States of America',\n code: 'US',\n },\n },\n {\n severity: 4,\n id: 14,\n name: 'First time user executed sudo.',\n rule: '5403',\n description: 'Dec 5 07:46:40 centos7-x64 sudo: root : TTY=pts/1 ; PWD=/root ; USER=root ; COMMAND=/bin/bash -l', // tslint:disable-line:max-line-length\n times: 1,\n abuser: '1234:5678:9abc::',\n timestamp: 1480942002.3256857,\n purpose: IPList.captcha,\n listname: IPList.captcha,\n plugin: RulePlugin.ossec,\n country: {\n name: 'Albania',\n code: 'AL',\n },\n domain: null,\n },\n {\n severity: 4,\n id: 14,\n name: 'First time user executed sudo.',\n rule: '5403',\n description: 'Dec 5 07:46:40 centos7-x64 sudo: root : TTY=pts/1 ; PWD=/root ; USER=root ; COMMAND=/bin/bash -l', // tslint:disable-line:max-line-length\n times: 1,\n abuser: '1::',\n timestamp: 1480942002.3256857,\n purpose: IPList.captcha,\n listname: IPList.captcha,\n plugin: RulePlugin.ossec,\n country: {\n name: 'United States',\n code: 'US',\n },\n domain: null,\n },\n {\n severity: 7,\n id: 11,\n name: 'New Yum package installed.',\n rule: '2932',\n description: 'Dec 5 07:33:16 centos7-x64 yum[6291]: Installed: 2:nodejs-6.9.1-1nodesource.el7.centos.x86_64', // tslint:disable-line:max-line-length\n times: 1,\n abuser: '101.1.1.3',\n timestamp: 1480941200.7609231,\n purpose: IPList.drop,\n listname: IPList.drop,\n plugin: RulePlugin.ossec,\n country: {\n name: 'Brazil',\n code: 'BR',\n },\n domain: null,\n },\n {\n severity: 4,\n id: 1,\n name: 'First time user logged in.',\n rule: '10100',\n description: 'Dec 5 07:20:47 centos7-x64 sshd[4834]: Accepted publickey for root from', // tslint:disable-line:max-line-length\n times: 1,\n abuser: '10.101.1.5',\n timestamp: 1480940450.2248483,\n purpose: IPList.white,\n listname: IPList.white,\n plugin: RulePlugin.ossec,\n country: {\n name: 'Ukraine',\n code: 'UA',\n },\n domain: null,\n },\n {\n severity: 4,\n id: 1,\n name: 'First time user logged in.',\n rule: '10100',\n description: 'Dec 5 07:20:47 centos7-x64 sshd[4834]: Accepted publickey for root from', // tslint:disable-line:max-line-length\n times: 1,\n abuser: '10.101.1.6',\n timestamp: 1480940450.2248483,\n purpose: null,\n listname: null,\n plugin: RulePlugin.ossec,\n country: {\n name: 'Ukraine',\n code: 'UA',\n },\n domain: null,\n },\n {\n severity: 4,\n id: 1,\n name: 'First time user logged in.',\n rule: '10100',\n description: 'Dec 5 07:20:47 centos7-x64 sshd[4834]: Accepted publickey for root from', // tslint:disable-line:max-line-length\n times: 1,\n abuser: '10.101.1.6',\n timestamp: 1480940450.2248483,\n purpose: null,\n listname: null,\n plugin: RulePlugin.ossec,\n country: {},\n domain: null,\n },\n {\n severity: null,\n id: 1,\n name: 'name',\n rule: null,\n description: 'desc',\n times: 1,\n abuser: null,\n timestamp: 123,\n purpose: null,\n listname: null,\n plugin: RulePlugin.cl_dos,\n domain: null,\n country: null,\n },\n {\n severity: 3,\n id: 1,\n name: 'enhanced_dos incident',\n rule: '10100',\n description: 'description for enhanced_dos',\n times: 1,\n abuser: '10.111.21.6',\n timestamp: 123,\n purpose: null,\n listname: null,\n plugin: RulePlugin.enhanced_dos,\n country: {},\n domain: null,\n },\n ],\n max_count: 26,\n },\n },\n noIncidents: {\n data: {\n ...DEFAULT_DATA,\n items: [],\n max_count: 26,\n }\n },\n get recommendations() {\n // tslint:disable:max-line-length\n return {\n result: [\n {link: 'link', link_text: 'str2', description: 'description', parameters: [{1: 20}, {2: 30}], severity: 3, date: 1556280915, type: 20, id: 10, server_id: 'server_id5', ts: 1556280915.8048308},\n {link: 'link', link_text: 'domain2link1', description: 'domain2descr1', parameters: [{1: 20}, {2: 30}], severity: 2, date: 1556280915, type: 20, id: 10, server_id: 'server_id2', ts: 1556280915.3432958},\n {link: 'link', link_text: 'str2', description: 'description', parameters: [{1: 20}, {2: 30}], severity: 2, date: 1556280914, type: 20, id: 10, server_id: 'SSqqqqqqqqqqqqq2', ts: 1556280914.9061892},\n {link: 'link', link_text: 'str2', description: 'description', parameters: [{1: 20}, {2: 30}], severity: 1, date: 1556280914, type: 20, id: 10, server_id: 'server_id3', ts: 1556280914.4573584},\n {link: 'link', link_text: 'str2', description: 'description', parameters: [{1: 20}, {2: 30}], severity: 1, date: 1556280708, type: 20, id: 10, server_id: 'server_id3', ts: 1556280708.8022974},\n {link: 'link', link_text: 'domain2link2', description: 'domain2descr2', parameters: [{1: 20}, {2: 30}], severity: 2, date: 1556280708, type: 20, id: 10, server_id: 'server_id2', ts: 1556280708.3060849},\n {link: 'link', link_text: 'str3', description: 'description3', parameters: [{1: 20}, {2: 30}], severity: 1, date: 1556280707, type: 20, id: 10, server_id: '123', ts: 1556280707.727882},\n {link: null, link_text: null, description: 'description2', parameters: [{1: 20}, {2: 30}], severity: 2, date: 1556380706, type: 20, id: 10, server_id: '123', ts: 1556280707.1226282},\n {link: 'link', link_text: 'str1', description: 'description1', parameters: [{1: 20}, {2: 30}], severity: 3, date: 1556180706, type: 20, id: 10, server_id: '123', ts: 1556280707.1226282},\n ],\n };\n // tslint:enable:max-line-length\n },\n};\n","import { AgentResponse, AgentResponseData, DataFrom,\n NullAgentResponse, RequestParams } from './misc';\n\nexport enum BackupSystem {\n cpanel = 'cpanel',\n plesk = 'plesk',\n directadmin = 'directadmin',\n acronis = 'acronis',\n sample = 'sample',\n cloudlinux = 'cloudlinux',\n cloudlinux_on_premise = 'cloudlinux_on_premise',\n r1soft = 'r1soft',\n clusterlogics = 'clusterlogics',\n}\nexport type LocalBackupSystem = BackupSystem.cpanel | BackupSystem.plesk | BackupSystem.directadmin\n | BackupSystem.sample;\nexport type BackupSystemWithCredentials = BackupSystem.cloudlinux_on_premise | BackupSystem.acronis;\n\nexport enum ScheduleType {\n monthlyByDaysOfMonth = 'monthlyByDaysOfMonth',\n monthlyByDaysOfWeek = 'monthlyByDaysOfWeek',\n weekly = 'weekly',\n daily = 'daily',\n hourly = 'hourly',\n timeSinceBackup = 'timeSinceBackup',\n onStartup = 'onStartup',\n onShutdown = 'onShutdown',\n}\nexport type ScheduleCommon = {\n preventFromSleeping: boolean,\n runLater: boolean,\n machineWake: boolean,\n};\ntype ScheduleDayNumbers = Array<number | string>;\ntype ScheduleDayOfWeek = 'sunday' | 'monday' | 'tuesday' | 'wednesday'\n | 'thursday' | 'friday' | 'saturday';\nexport type ScheduleTime = { minute: number, second: number, hour: number };\ntype ScheduleDate = { year: number, day: number, month: number };\ntype ScheduleEffectiveDates = {\n to: ScheduleDate;\n from: ScheduleDate;\n};\ntype ScheduleIntervalSince = {\n value: number,\n type: 'days'|'hours',\n};\ninterface ScheduleMonthlyByDaysOfMonth extends ScheduleCommon {\n type: ScheduleType.monthlyByDaysOfMonth;\n startAt: ScheduleTime;\n effectiveDates: ScheduleEffectiveDates;\n multipleDaysAllowed: true;\n dayNumbers: ScheduleDayNumbers;\n}\ninterface ScheduleMonthlyByDaysOfWeek extends ScheduleCommon {\n type: ScheduleType.monthlyByDaysOfWeek;\n startAt: ScheduleTime;\n daysOfWeek: ScheduleDayOfWeek[];\n effectiveDates: ScheduleEffectiveDates;\n multipleDaysAllowed: true;\n occurence: ['second', 'last'];\n}\ninterface ScheduleWeekly extends ScheduleCommon {\n type: ScheduleType.weekly;\n daysOfWeek: ScheduleDayOfWeek[];\n startAt: ScheduleTime;\n effectiveDates: ScheduleEffectiveDates;\n}\ninterface ScheduleDaily extends ScheduleCommon {\n type: ScheduleType.daily;\n effectiveDates: ScheduleEffectiveDates;\n startAt: ScheduleTime;\n daysOfWeek: ScheduleDayOfWeek[];\n}\ninterface ScheduleHourly extends ScheduleCommon {\n type: ScheduleType.hourly;\n from: ScheduleTime;\n effectiveDates: ScheduleEffectiveDates;\n daysOfWeek: ScheduleDayOfWeek[];\n to: ScheduleTime;\n repeatInterval: { type: 'hours'|'minutes', value: number };\n}\ninterface ScheduleTimeSinceBackup extends ScheduleCommon {\n type: ScheduleType.timeSinceBackup;\n intervalSinceLastBackup: ScheduleIntervalSince;\n}\ninterface ScheduleOnStartup {\n type: ScheduleType.onStartup;\n}\ninterface ScheduleOnShutdown {\n type: ScheduleType.onShutdown;\n}\n\nexport type Schedule = ScheduleMonthlyByDaysOfMonth\n | ScheduleMonthlyByDaysOfWeek\n | ScheduleWeekly\n | ScheduleDaily\n | ScheduleHourly\n | ScheduleTimeSinceBackup\n | ScheduleOnStartup\n | ScheduleOnShutdown;\n\nexport enum BackupSystemState {\n done = 'done',\n init = 'init',\n backup = 'backup',\n not_running = 'not_running',\n activation = 'activation',\n}\n\ninterface CloudlinuxBackupCheckPaidResponseDataItems {\n status: ClPaymentStatus.paid;\n size?: number,\n}\n\ninterface CloudlinuxBackupCheckUnpaidResponseDataItems {\n status: ClPaymentStatus.unpaid;\n size?: number,\n url: string;\n}\n\ntype BackupSystemCloudlinuxCheckAgentResponse = AgentResponse<AgentResponseData<\n CloudlinuxBackupCheckPaidResponseDataItems | CloudlinuxBackupCheckUnpaidResponseDataItems>>;\n\nexport enum ClPaymentStatus {\n paid = 'paid',\n unpaid = 'unpaid',\n}\n\nexport type ExtendedBackupSystemStatusAgentResponse = AgentResponse<AgentResponseData<\n CloudlinuxStatusBackupData\n | ClusterLogicsStatusDoneData\n | AcronisStatusDoneData\n | BackupSystemStatusDisabledData\n | StatusInitData\n | BackupSystemLocalStatusData\n | CloudlinuxStatusDoneData\n | CloudlinuxOnPremiseStatusBackupData\n | CloudlinuxOnPremiseStatusDoneData\n | CloudlinuxStatusNotRunningLikeDoneWithErrorData>>;\n\nexport type NarrowBackupSystemStatusAgentResponse = AgentResponse<AgentResponseData<\n NarrowBackupSystemStatusData>>;\n\ninterface NarrowBackupSystemStatusData {\n backup_system: BackupSystem | null;\n enabled: boolean;\n}\n\ninterface BackupSystemLocalStatusData {\n backup_system: LocalBackupSystem;\n state: BackupSystemState;\n error: any;\n enabled: boolean;\n log_path: null;\n}\n\ninterface BackupSystemStatusDisabledData {\n backup_system: null;\n enabled: false;\n state: BackupSystemState.not_running;\n error?: string | null;\n log_path: null;\n}\n\ninterface StatusInitData {\n backup_system: BackupSystem.cloudlinux | BackupSystem.cloudlinux_on_premise\n | BackupSystem.acronis | BackupSystem.clusterlogics;\n state: BackupSystemState.init;\n log_path: string;\n error: any;\n enabled: boolean;\n}\n\ninterface CloudlinuxStatusExtendedData {\n backup_system: BackupSystem.cloudlinux;\n enabled: boolean;\n error: null|string;\n purchased_backup_gb: number;\n backup_space_used_bytes: number;\n login_url: string;\n timestamp: number;\n username: string;\n region: string;\n schedule: Schedule | null;\n resize_url: string;\n}\ninterface CloudlinuxOnPremiseStatusExtendedData {\n backup_system: BackupSystem.cloudlinux_on_premise;\n enabled: boolean;\n error: null|string;\n login_url: string;\n username: string;\n schedule: Schedule | null;\n log_path?: string,\n}\ninterface CloudlinuxOnPremiseStatusDoneData\n extends CloudlinuxOnPremiseStatusExtendedData {\n state: BackupSystemState.done;\n}\n\ninterface CloudlinuxOnPremiseStatusBackupData\n extends CloudlinuxOnPremiseStatusExtendedData {\n progress: null | number;\n state: BackupSystemState.backup;\n}\ninterface CloudlinuxStatusDoneData\n extends CloudlinuxStatusExtendedData {\n state: BackupSystemState.done;\n}\nexport interface CloudlinuxStatusNotRunningLikeDoneWithErrorData\n extends CloudlinuxStatusExtendedData {\n state: BackupSystemState.not_running;\n error: string;\n}\ninterface CloudlinuxStatusBackupData\n extends CloudlinuxStatusExtendedData {\n progress: null | number;\n state: BackupSystemState.backup;\n}\n\ntype BackupSystemListAgentResponse = AgentResponse<AgentResponseData<BackupSystem[]>>;\n\nexport type InitArgs = {\n backend: BackupSystem.cloudlinux | LocalBackupSystem,\n} | {\n backend: BackupSystemWithCredentials,\n username: string,\n password: string,\n} | {\n backend: BackupSystem.clusterlogics,\n username: string,\n apikey: string,\n url?: string,\n};\n\ninterface AcronisStatusDoneData {\n backup_system: BackupSystem.acronis;\n state: BackupSystemState.done;\n error: null | string;\n enabled: boolean;\n username: string;\n\n // not used\n timestamp: number;\n log_path: string;\n}\n\ninterface ClusterLogicsStatusDoneData {\n backup_system: BackupSystem.clusterlogics;\n state: BackupSystemState.done;\n error: null | string;\n enabled: boolean;\n username: string;\n log_path: null;\n url: string;\n apikey: string;\n}\n\ntype BackupSystemInitAgentResponse = AgentResponse<AgentResponseData<string>>;\n\nexport class BackupSystemsAPI {\n static status = () =>\n new RequestParams<DataFrom<ExtendedBackupSystemStatusAgentResponse>>\n (['backup-systems', 'extended-status'])\n\n static narrowStatus = () =>\n new RequestParams<DataFrom<NarrowBackupSystemStatusAgentResponse>>\n (['backup-systems', 'status'])\n\n static list = () =>\n new RequestParams<DataFrom<BackupSystemListAgentResponse>>(['backup-systems', 'list'])\n\n static disable(backend: Exclude<BackupSystem, BackupSystem.cloudlinux>) {\n return new RequestParams<DataFrom<NullAgentResponse>>(\n ['backup-systems', 'disable'],\n {backend},\n );\n }\n\n static disableCloudlinux(destroyBackups: boolean) {\n return new RequestParams<DataFrom<NullAgentResponse>>(\n ['backup-systems', 'disable'], {\n backend: BackupSystem.cloudlinux,\n delete_backups: destroyBackups,\n },\n );\n }\n\n static checkCloudlinux() {\n return new RequestParams<DataFrom<BackupSystemCloudlinuxCheckAgentResponse>>(\n ['backup-systems', 'check'], {backend: BackupSystem.cloudlinux});\n }\n\n static init(args: InitArgs) {\n return new RequestParams<DataFrom<BackupSystemInitAgentResponse>>(\n ['backup-systems', 'init'], {\n ...args,\n force: true,\n });\n }\n}\n","import {\n BackupSystem,\n BackupSystemState,\n ClPaymentStatus, LocalBackupSystem,\n Schedule,\n} from '../backup-systems';\nimport { DEFAULT_DATA } from './misc';\n\nconst LOG_FILE = '/path/to/log/file';\nconst listResponse = (backend: LocalBackupSystem) => ({\n data: {\n ...DEFAULT_DATA,\n items: [\n backend,\n BackupSystem.acronis,\n BackupSystem.cloudlinux,\n BackupSystem.cloudlinux_on_premise,\n BackupSystem.clusterlogics,\n ],\n },\n});\nexport const responses = {\n null: {\n data: {\n ...DEFAULT_DATA,\n items: null,\n },\n },\n init: {\n data: {\n ...DEFAULT_DATA,\n items: 'Backup initialization process is in progress',\n },\n },\n list: {\n cpanel: listResponse(BackupSystem.cpanel),\n plesk: listResponse(BackupSystem.plesk),\n da: listResponse(BackupSystem.directadmin),\n },\n statusDisabled: {\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: false as false,\n backup_system: null,\n state: BackupSystemState.not_running as BackupSystemState.not_running,\n error: null,\n log_path: null,\n },\n },\n },\n narrowStatus: {\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: false,\n backup_system: null,\n },\n },\n },\n acronis: {\n status: {\n init: {\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: false,\n error: null,\n log_path: LOG_FILE,\n backup_system: BackupSystem.acronis as BackupSystem.acronis,\n state: BackupSystemState.init as BackupSystemState.init,\n },\n },\n },\n done: {\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: true,\n error: null,\n backup_system: <BackupSystem.acronis>BackupSystem.acronis,\n state: <BackupSystemState.done>BackupSystemState.done,\n username: 'username',\n timestamp: 0,\n log_path: 'unused',\n },\n },\n },\n error: {\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: false,\n error: 'error',\n log_path: '',\n backup_system: <BackupSystem.acronis>BackupSystem.acronis,\n state: <BackupSystemState.init>BackupSystemState.init,\n },\n },\n },\n },\n },\n local: {\n done: {\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: true,\n error: null,\n state: <BackupSystemState.done>BackupSystemState.done,\n backup_system: <BackupSystem.cpanel>BackupSystem.cpanel,\n log_path: null,\n },\n },\n },\n },\n cl: {\n status: {\n notRunningLikeDoneErrorAllDataPresent: {\n data: {\n ...DEFAULT_DATA,\n items: {\n username: 'AB-1124',\n timestamp: 1531711741,\n log_path: '/var/log/imunify360/acronis-installer.log',\n region: 'eu',\n login_url: 'https://cloud.acronis.com?jwt=',\n error: 'No backups found!',\n purchased_backup_gb: 200,\n backup_system: BackupSystem.cloudlinux as BackupSystem.cloudlinux,\n schedule: {\n startAt: {hour: 5, second: 0, minute: 0},\n effectiveDates: {\n from: {month: 0, day: 0, year: 0},\n to: {month: 0, day: 0, year: 0},\n },\n daysOfWeek: ['sunday', 'monday', 'tuesday',\n 'wednesday', 'thursday', 'friday', 'saturday'],\n type: 'weekly',\n } as Schedule,\n resize_url: 'https://cln.cloudlinux.com/clweb/account/ab_resize.xhtml?id=',\n backup_space_used_bytes: 111104831488,\n state: BackupSystemState.not_running as BackupSystemState.not_running,\n enabled: true,\n },\n },\n },\n doneNoSchedule: {\n data: {\n ...DEFAULT_DATA,\n items: {\n backup_space_used_bytes: 658712047616,\n timestamp: 1530525957,\n state: <BackupSystemState.done>BackupSystemState.done,\n username: 'username',\n log_path: '/var/log/imunify360/acronis-installer.log',\n login_url: 'https://cloud.acronis.com?jwt=',\n resize_url: 'https://cln.cloudlinux.com/clweb/account/ab_resize.xhtml?id=',\n backup_system: <BackupSystem.cloudlinux>BackupSystem.cloudlinux,\n schedule: null,\n enabled: true,\n purchased_backup_gb: 810,\n error: null,\n region: 'eu',\n },\n },\n },\n backupNoSchedule: {\n data: {\n ...DEFAULT_DATA,\n items: {\n state: <BackupSystemState.backup>BackupSystemState.backup,\n enabled: true,\n backup_system: <BackupSystem.cloudlinux>BackupSystem.cloudlinux,\n error: 'Backup is unpaid!',\n },\n },\n },\n init: {\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: false,\n error: null,\n backup_system: <BackupSystem.cloudlinux>BackupSystem.cloudlinux,\n log_path: LOG_FILE,\n state: <BackupSystemState.init>BackupSystemState.init,\n },\n },\n },\n error: {\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: false,\n error: 'error',\n backup_system: <BackupSystem.cloudlinux>BackupSystem.cloudlinux,\n log_path: LOG_FILE,\n state: <BackupSystemState.init>BackupSystemState.init,\n },\n },\n },\n done: {\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: true,\n error: null,\n state: <BackupSystemState.done>BackupSystemState.done,\n backup_system: <BackupSystem.cloudlinux>BackupSystem.cloudlinux,\n region: 'eu',\n purchased_backup_gb: 10,\n timestamp: 1523948175,\n schedule: {\n startAt: {hour: 18, minute: 0, second: 0},\n effectiveDates: {\n to: {year: 0, month: 0, day: 0},\n from: {year: 0, month: 0, day: 0},\n },\n daysOfWeek: ['monday', 'tuesday', 'wednesday', 'thursday', 'friday'],\n type: 'weekly',\n } as Schedule,\n // tslint:disable-next-line:max-line-length\n login_url: 'https://cloud.acronis.com?jwt=jwt',\n resize_url: 'https://cln.cloudlinux.com/clweb/account/ab_resize.xhtml?id=i',\n username: 'AB-123456-7890',\n backup_space_used_bytes: 0,\n },\n },\n },\n backup: (progress: number|null) => ({\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: true,\n error: null,\n // type validation not working\n state: <BackupSystemState.done>BackupSystemState.backup,\n progress,\n backup_system: <BackupSystem.cloudlinux>BackupSystem.cloudlinux,\n region: 'eu',\n purchased_backup_gb: 10,\n timestamp: 1523948175,\n schedule: {\n startAt: {hour: 18, minute: 0, second: 0},\n effectiveDates: {\n to: {year: 0, month: 0, day: 0},\n from: {year: 0, month: 0, day: 0},\n },\n daysOfWeek: ['monday', 'tuesday', 'wednesday', 'thursday', 'friday'],\n type: 'weekly',\n } as Schedule,\n // tslint:disable-next-line:max-line-length\n login_url: 'https://cloud.acronis.com?jwt=jvt',\n resize_url: 'https://cln.cloudlinux.com/clweb/account/ab_resize.xhtml?id=i',\n username: 'AB-123456-7890',\n backup_space_used_bytes: 0,\n },\n },\n }),\n },\n check: {\n unpaid: {\n data: {\n ...DEFAULT_DATA,\n items: {\n status: <ClPaymentStatus.unpaid>ClPaymentStatus.unpaid,\n url: 'https://cln.cloudlinux.com/clweb/cb/',\n },\n },\n },\n paid: {\n data: {\n ...DEFAULT_DATA,\n items: {\n status: <ClPaymentStatus.paid>ClPaymentStatus.paid,\n },\n },\n },\n },\n },\n clOnPremise: {\n status: {\n init: {\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: false,\n error: null,\n backup_system: <BackupSystem.cloudlinux_on_premise>\n BackupSystem.cloudlinux_on_premise,\n log_path: LOG_FILE,\n state: <BackupSystemState.init>BackupSystemState.init,\n },\n },\n },\n error: {\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: false,\n error: 'error',\n backup_system: <BackupSystem.cloudlinux_on_premise>\n BackupSystem.cloudlinux_on_premise,\n log_path: LOG_FILE,\n state: <BackupSystemState.init>BackupSystemState.init,\n },\n },\n },\n done: {\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: true,\n error: null,\n state: <BackupSystemState.done>BackupSystemState.done,\n backup_system: <BackupSystem.cloudlinux_on_premise>\n BackupSystem.cloudlinux_on_premise,\n schedule: {\n startAt: {hour: 18, minute: 0, second: 0},\n effectiveDates: {\n to: {year: 0, month: 0, day: 0},\n from: {year: 0, month: 0, day: 0},\n },\n daysOfWeek: ['monday', 'tuesday', 'wednesday', 'thursday', 'friday'],\n type: 'weekly',\n } as Schedule,\n // tslint:disable-next-line:max-line-length\n login_url: 'https://cloud.acronis.com?jwt=jwt',\n username: 'AB-123123123',\n },\n },\n },\n backup: (progress: number|null) => ({\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: true,\n error: null,\n state: <BackupSystemState.backup>BackupSystemState.backup,\n progress,\n backup_system: <BackupSystem.cloudlinux_on_premise>\n BackupSystem.cloudlinux_on_premise,\n schedule: {\n startAt: {hour: 18, minute: 0, second: 0},\n effectiveDates: {\n to: {year: 0, month: 0, day: 0},\n from: {year: 0, month: 0, day: 0},\n },\n daysOfWeek: ['monday', 'tuesday', 'wednesday', 'thursday', 'friday'],\n type: 'weekly',\n } as Schedule,\n // tslint:disable-next-line:max-line-length\n login_url: 'https://cloud.acronis.com?jwt=jwt',\n username: 'AB-123123123',\n },\n },\n }),\n\n },\n },\n clusterlogics: {\n status: {\n done: {\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: true,\n error: null,\n state: <BackupSystemState.done>BackupSystemState.done,\n backup_system: <BackupSystem.clusterlogics>\n BackupSystem.clusterlogics,\n username: 'username',\n apikey: 'apikey',\n url: 'url',\n log_path: null,\n },\n },\n },\n error: {\n data: {\n ...DEFAULT_DATA,\n items: {\n enabled: false,\n error: 'error',\n backup_system: <BackupSystem.clusterlogics>\n BackupSystem.clusterlogics,\n log_path: LOG_FILE,\n state: <BackupSystemState.init>BackupSystemState.init,\n },\n },\n },\n },\n },\n};\n","import { DEFAULT_DATA } from './misc';\nimport { AccountStatus } from '../emails-settings';\nimport {\n EmailActivityAccount,\n EmailActivityAccountDomain,\n EmailActivityAccountDomainEmail,\n EmailActivityAccountDomainScript\n} from '../emails-activity-monitor';\nimport { emailDirection } from '../emails';\n\nexport const activityMonitorEmail = (i) => ({\n id: 'email_620527c04a84ecd9ac78f622' + i,\n name: i + '_some@email.test',\n messages: i + 100,\n quarantined: i + 200,\n limit: 0+i,\n exclusion: i % 3 === 0,\n rateLimited: i % 3 === 0,\n whitelisted: i % 3 === 0,\n}) as EmailActivityAccountDomainEmail;\n\nexport const activityMonitorScript = (i) => ({\n id: 'script_620527c04a84ecd9ac78f622' + i,\n name: 'script_name_' + i,\n messages: i + 100,\n quarantined: i + 200,\n limit: i * 2000,\n exclusion: i % 3 === 0,\n rateLimited: i % 3 === 0,\n whitelisted: i % 3 === 0,\n}) as EmailActivityAccountDomainScript;\n\nexport const activityMonitorDomain = (i) => ({\n id: 'domain_3fa85f64-5717-4562-b3fc-2c963f66afa6 ' + i,\n name: 'domain_' + i,\n limit: 1000 * i + i,\n exclusion: i % 3 === 0,\n whitelisted: i % 3 === 0,\n rateLimited: i % 3 === 0,\n messages: i + 100,\n quarantined: i + 200,\n sender_emails: [...Array(...Array(5)).map((_, idx) => activityMonitorEmail(idx))],\n}) as EmailActivityAccountDomain;\n\nexport const activityMonitorAccount = (i) => ({\n id: 'account_3fa85f64-5717-4562-b3fc-2c963f66afa6 ' + i,\n name: 'account_name_' + i,\n messages: i + 100,\n quarantined: i + 200, limit: 5000 * i + i,\n exclusion: i % 5 === 0,\n rateLimited: i % 5 === 0,\n whitelisted: i % 5 === 0,\n domains: [...Array(...Array(5)).map((_, idx) => activityMonitorDomain(idx))],\n scripts: [...Array(...Array(5)).map((_, idx) => activityMonitorScript(idx))]\n}) as EmailActivityAccount;\n\nconst activityMonitorItems = [...Array(...Array(35)).map((_, i) => activityMonitorAccount(i))];\nconst incomingStatisticList = [\n ...Array(...Array(35)).map((_, i) => {\n return {\n date: 1637136742,\n total: i + 100,\n ham: i + 200,\n spam: 5000 * i + i,\n }\n })];\n\nconst accountItem = {\n name: 'account ',\n limit_bytes: {\n value: 15,\n default: true\n },\n releases_limit: {\n value: 15,\n default: true\n },\n used_bytes: 5,\n state: AccountStatus.active,\n description: 'deleted 1300 messages since 10 Aug',\n};\n\nconst emailItems = [\n ...Array(...Array(15)).map((_, i) => ({\n email_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6 ' + i,\n email_direction: emailDirection.in,\n account_name: 'account ' + i,\n sender: `Subject 703032ae41831eeeb01a1e2e3c56278d178f14af56bc4d020222d0d39c2c6c77`,\n recipients: ['rcp@gmail.com', 'test1@gmail.com', 'test2@gmail.com', 'test1@gmail.com', 'test2@gmail.com', 'test1@gmail.com', 'test2@gmail.com', 'test1@gmail.com', 'test2@gmail.com', 'test1@gmail.com', 'test2@gmail.com', 'test1@gmail.com', 'test2@gmail.com'],\n subject: 'Subject 703032ae41831eeeb01a1e2e3c56278d178f14af56bc4d020222d0d39c2c6c77',\n body: 'Subject 703032ae41831eeeb01a1e2e3c56278d178f14af56bc4d020222d0d39c2c6c77',\n reasons: [\"spam\"],\n received_date: 1637136742,\n script_header: {\n raw: \"X-PHP-whateverheader\",\n domain: \"test-domain.null\",\n path: \"/root/email.php\"\n }\n })),\n];\n\n\nconst usedBytes = [\n 0.2,\n 1.234,\n 2.30003,\n];\n\nconst accountsItems = [\n ...Array(...Array(15)).map((_, i) => ({\n name: 'account ' + i,\n limit_bytes: {\n value: (i > (usedBytes.length - 1) ? i : usedBytes[i]) * 1_048_570006,\n default: i % 3 === 0,\n },\n releases_limit: {\n value: (i > (usedBytes.length - 1) ? i : usedBytes[i]) * 1_048_576,\n default: i % 3 === 0\n },\n incoming_filtration_enabled: {\n value: i % 3,\n default: i % 3 === 0\n },\n used_bytes: (i > (usedBytes.length - 1) ? i : usedBytes[i]) * 1_048_576,\n })),\n];\n\nconst accountsLists = [\n ...Array(...Array(15)).map((_, i) => (\n 'Account ' + i\n )),\n];\n\nexport const responses = {\n activityMonitor: {\n data: {\n ...DEFAULT_DATA,\n max_count: 11,\n items: activityMonitorItems,\n }\n },\n incomingStatisticList: {\n data: {\n ...DEFAULT_DATA,\n items: incomingStatisticList,\n max_count: 11,\n }\n },\n emails: {\n data: {\n ...DEFAULT_DATA,\n max_count: 11,\n items: emailItems,\n },\n },\n releaseWarning: {\n result: 'error',\n data: {\n ...DEFAULT_DATA,\n items: '',\n },\n messages: [\n 'Something went wrong please try again'\n ],\n status: 429,\n },\n honestResultWarning: {\n result: 'error',\n data: {\n ...DEFAULT_DATA,\n items: {\n successItemCount: 1,\n failItemCount: 2,\n total: 3\n }\n\n },\n status: 207,\n },\n version: {\n data: {\n ...DEFAULT_DATA,\n max_count: 11,\n items: {\n version: \"1.1\",\n components: [\n {\n release: \"Whatever that will\",\n name: \"original name, e.g. imunifyemail\",\n version: \"0.5-0.el8.noarch\"\n },\n {\n release: \"Whatever that will\",\n name: \"original name, e.g. imunifyemail-rspamd\",\n version: \"3.1-5.el8.1642765025.x86_64\"\n },\n {\n release: \"Whatever that will\",\n name: \"original name, e.g. imunifyemail-rspamd\",\n version: \"3.1-5.el8.1642765025.x86_64\"\n },\n ]\n },\n },\n },\n accounts: {\n data: {\n ...DEFAULT_DATA,\n max_count: 11,\n items: accountsItems,\n },\n },\n isIncomingEnabled: {\n data: {\n ...DEFAULT_DATA,\n max_count: 11,\n items: {\n is_enabled: true\n },\n },\n },\n accountList: {\n data: {\n ...DEFAULT_DATA,\n max_count: 11,\n items: accountsLists,\n },\n },\n account: {\n data: {\n ...DEFAULT_DATA,\n max_count: 11,\n items: accountItem,\n },\n },\n spaces: {\n data: {\n ...DEFAULT_DATA,\n max_count: 11,\n items: {\n total_space: 22,\n account_space: 833,\n },\n },\n },\n defaultLimits: {\n data: {\n ...DEFAULT_DATA,\n max_count: 11,\n items: {\n limit_mode: 1,\n account: 50000,\n domain: 25000,\n sender_email: 5,\n script: 500\n },\n },\n },\n accountSettingDefaults: {\n data: {\n ...DEFAULT_DATA,\n items: {\n settings: [\n {\n setting: \"limit_bytes\",\n int_value: 1000000024\n },\n {\n setting: \"releases_limit\",\n int_value: 10\n },\n {\n setting: \"incoming_filtration_enabled\",\n int_value: 0\n }\n ]\n },\n },\n },\n null: {\n data: {\n ...DEFAULT_DATA,\n items: null,\n },\n },\n details: {\n data: {\n ...DEFAULT_DATA,\n max_count: 11,\n items: {\n email_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',\n account_name: 'account1',\n reasons: ['spam'],\n domain: 'domain.com',\n sender: 'from@gmail.com',\n recipients: ['rcp@gmail.com',\n 'test1@gmail.com', 'test2@gmail.com', 'test1@gmail.com', 'test2@gmail.com',\n 'test1@gmail.com', 'test2@gmail.com', 'test1@gmail.com', 'test2@gmail.com',\n 'test1@gmail.com', 'test2@gmail.com', 'test1@gmail.com', 'test2@gmail.com'],\n subject: 'Hey, Long time no see',\n body: 'PGh0bWw+CjxoZWFkPgo8dGl0bGU+Q2hyaXN0aWFuIEhlYWx0aCBQbGFuIGNoYXJzZXQ9aXNvLTg4NTktMSI+L2JvZHk+CjwvaHRtbD4KCgoK',\n header: { header: 'test'},\n received_date: 1637136742,\n size_bytes: 1637136742,\n email_direction: emailDirection.in,\n raw: 'RGVsaXZlcmVkLVRvOiBhc2VtZW5pa2hpbkBjbG91ZGxpbnV4LmNvbQpSZWNlaXZlZDogYnkgMjAwMjphNmI6N2Q0YzowOjA6MDowOjAgd2l0aCBTTVRQIGlkIHAyOTU4OTBpb3E7CiAgICAgICAgV2VkLCAxMCBOb3YgMjAyMTA'\n\n },\n },\n },\n};\n","import { DEFAULT_DATA } from './misc';\n\nexport const responses = {\n list: {\n data: {\n ...DEFAULT_DATA,\n items: [\n {\n port: 5431,\n proto: 'tcp',\n comment: 'Some description',\n ips: [\n {\n ip: '2.3.2.1',\n comment: 'asdasd',\n },\n {\n ip: '1234:5678:9abc:def0::',\n comment: 'ipv6',\n },\n {\n ip: '1234:5678:9abc::',\n comment: 'ipv6',\n },\n ],\n },\n {\n port: 5432,\n proto: 'tcp',\n comment: 'Some description2',\n ips: [\n {\n ip: '222.222.222.222',\n comment: 'asdasd2',\n },\n ],\n },\n {\n port: 5435,\n proto: 'udp',\n comment: 'Some other description',\n ips: Array(...Array(101)).map((_, i) => {\n return {\n ip: `10.9.27.${i}`,\n comment: 'wwwwwwww wwwwwwwwwwwwwwwwwwww wwwwwwwww '.repeat(2),\n };\n }),\n },\n ],\n max_count: 100,\n },\n },\n};\n","import { DEFAULT_DATA } from './misc';\nimport { RulePlugin } from '../blocked-rules';\n\nexport const responses = {\n list: {\n data: {\n ...DEFAULT_DATA,\n max_count: 100,\n items: [\n {\n id: '123',\n plugin: RulePlugin.modsec,\n name: 'SQL Inejctions for Joomla super advanced detection',\n domains: [],\n },\n {\n id: '124',\n plugin: RulePlugin.modsec,\n name: 'bill1',\n domains: null,\n },\n {\n id: '125',\n plugin: RulePlugin.modsec,\n name: 'bill2',\n domains: [\n 'mycoolsite.com',\n 'website.ru',\n 'exclude.com',\n ],\n },\n {\n id: '126',\n plugin: RulePlugin.modsec,\n name: 'bill3',\n domains: [\n 'zzz.com',\n ],\n },\n {\n id: '127',\n plugin: RulePlugin.modsec,\n name: 'Some wordpress',\n domains: [\n 'example.com',\n 'example1.com',\n ],\n },\n ],\n },\n },\n};\n","import { AgentResponse, AgentResponseData, DataFrom,\n RequestParams, StringAgentResponse } from './misc';\n\n\nexport enum FeatureStatus {\n error = 'error',\n installed = 'installed',\n installing = 'installing',\n removing = 'removing',\n not_supported_by_cl_solo = 'not-supported-by-cl-solo',\n not_installed = 'not_installed',\n managed_by_lve = 'managed_by_lve',\n detecting = 'detecting',\n}\n\nexport type FeatureStatusDict = ({\n message?: string,\n} & ({\n lve_installed: boolean,\n status: FeatureStatus.managed_by_lve,\n} | {\n status: FeatureStatus.installed,\n // for kernelcare only, it can not be validated for now\n // there is a way, for example: to put 'name' (kernelcare, hardened-php) into response, create\n // type for each response, and join them as union type. But setStatus call\n // in the bottom of the feature.component.ts can not be validated due to bug,\n // which is not reproduced only in 3.5.1 (+?) version of typescript\n // demo of bug:\n // tslint:disable-next-line:max-line-length\n // https://www.typescriptlang.org/play/#code/C4TwDgpgBAglC8UoG8CwAoJSwC4oHIBDfAGgwF8BuDDUSKAIQRQyylwICNSLr0MAZgFcAdgGNgASwD2IqAIAUEPEXxQAPl3wBKFpiwAbCMChC8cTU0Rp9bbHghlbUKhQxA\n edf_supported: boolean,\n} | {\n status: Exclude<FeatureStatus, FeatureStatus.managed_by_lve>,\n}));\n\ntype FeatureStatusAgentResponse = AgentResponse<AgentResponseData<FeatureStatusDict>>;\n\nexport class FeaturesAPI {\n static status(name: string) {\n return new RequestParams<DataFrom<FeatureStatusAgentResponse>>(\n ['features', 'status'], {name},\n );\n }\n static action({action, name}: {action: 'install' | 'remove', name: string}) {\n return new RequestParams<DataFrom<StringAgentResponse>>(['features', action], {name});\n }\n}\n","import { DEFAULT_DATA } from './misc';\nimport { FeatureStatus } from '../features';\n\nexport const responses = {\n kernelCareUnsupported: {\n result: 'error',\n data: {\n ...DEFAULT_DATA,\n items: '',\n },\n messages: [\n 'Kernel is unsupported!',\n ],\n },\n kernelCareInstalled: {\n data: {\n ...DEFAULT_DATA,\n items: {\n status: FeatureStatus.installed as FeatureStatus.installed,\n message: 'KernelCare is installed',\n },\n },\n },\n kcarectl: {\n data: {\n items: {\n autoUpdate: true,\n license: 1,\n uptime: '181820',\n realKernel: '3.10.0-957.1.3.el7.x86_64',\n loadedPatchLevel: 7,\n effectiveKernel: '3.10.0-957.1.3.el7',\n updateCode: 0,\n },\n },\n },\n};\n","import {\n AgentResponse, AgentResponseData, DataFrom, ListResponseData,\n NullAgentResponse, RequestParams,\n} from './misc';\n\nexport interface NativeFeaturesManagementStatus {\n supported: boolean;\n enabled: boolean;\n}\n\ninterface FeaturesManagementResponseItem {\n name: string;\n domains: string[];\n features: FeaturesStatus;\n}\n\nexport enum BoolFeature {\n full = 'full',\n na = 'na',\n}\n\nexport enum ReportableFeature {\n full = 'full',\n na = 'na',\n report = 'report',\n}\n\nexport enum FeatureName {\n av = 'av',\n proactive = 'proactive',\n}\n\nexport interface FeaturesStatus {\n proactive: boolean;\n av: boolean;\n}\n\nexport interface ClientFeatures {\n proactive: BoolFeature;\n // why \"or\"\n // FIXME https://cloudlinux.atlassian.net/browse/DEF-7620\n av: ReportableFeature | BoolFeature;\n}\n\nexport class FeaturesManagementAPI {\n static allowed = () =>\n new RequestParams<DataFrom<FeaturesManagementListAgentResponse>>\n (['feature-management', 'list'])\n\n static nativeStatus = () =>\n new RequestParams<DataFrom<FeaturesManagementNativeStatusAgentResponse>>\n (['feature-management', 'native', 'status'])\n\n static nativeEnable = () =>\n new RequestParams<DataFrom<NullAgentResponse>>(['feature-management', 'native', 'enable'])\n\n static list = (params = {}) =>\n new RequestParams<DataFrom<FeaturesManagementShowAgentResponse>>\n (['feature-management', 'show'], params)\n\n static editUserFeatures = ({action, feature, items}:\n {action: string, feature: string, items: string[]}) =>\n new RequestParams<DataFrom<FeaturesManagementEditUsersAgentResponse>>\n // this response is ignored...\n (['feature-management', action], {users: items, feature: feature})\n\n static editDefaultFeature({action, feature}: {action: 'enable' | 'disable', feature: string}) {\n return new RequestParams<DataFrom<FeaturesManagementEditDefaultsAgentResponse>>(\n ['feature-management', action], {feature: feature});\n }\n\n static defaults() {\n return new RequestParams<DataFrom<FeaturesManagementDefaultsAgentResponse>>(\n ['feature-management', 'defaults']);\n }\n\n static clientFeatures() {\n return new RequestParams<DataFrom<FeaturesManagementGetAgentResponse>>(\n ['feature-management', 'get']);\n }\n}\n\nexport class FeaturesManagementItem {\n name: string;\n domains: string[];\n proactive: boolean;\n av: boolean;\n\n constructor({name, domains, features}: FeaturesManagementResponseItem) {\n this.name = name;\n this.domains = domains;\n this.proactive = features.proactive;\n this.av = features.av;\n }\n}\n\ntype FeaturesManagementShowAgentResponse\n = AgentResponse<ListResponseData<FeaturesManagementResponseItem>>;\n\ntype FeaturesManagementListAgentResponse\n = AgentResponse<AgentResponseData<Array<keyof FeaturesStatus>>>;\n\ntype FeaturesManagementNativeStatusAgentResponse\n = AgentResponse<AgentResponseData<NativeFeaturesManagementStatus>>;\n\ntype FeaturesManagementEditDefaultsAgentResponse\n = AgentResponse<AgentResponseData<'succeed'>>;\n\ntype FeaturesManagementEditUsersAgentResponse\n = AgentResponse<AgentResponseData<{succeeded: string[], failed: string[]}>>;\n\ntype FeaturesManagementDefaultsAgentResponse\n = AgentResponse<AgentResponseData<FeaturesStatus>>;\n\ntype FeaturesManagementGetAgentResponse\n = AgentResponse<AgentResponseData<ClientFeatures>>;\n\ntype FeaturesManagementEditAgentResponse = FeaturesManagementEditDefaultsAgentResponse\n | FeaturesManagementEditUsersAgentResponse;\n","import {\n BoolFeature, FeatureName, ReportableFeature,\n} from '../features-management';\nimport { DEFAULT_DATA } from './misc';\n\nexport const responses = {\n featuresManagementAllowed: {\n data: {\n ...DEFAULT_DATA,\n items: [\n FeatureName.av,\n FeatureName.proactive,\n ],\n },\n },\n featuresManagementNative: {\n data: {\n ...DEFAULT_DATA,\n items: {\n supported: true,\n enabled: false,\n },\n },\n },\n featuresManagementGet: {\n data: {\n ...DEFAULT_DATA,\n items: {\n proactive: BoolFeature.full,\n av: ReportableFeature.full,\n },\n },\n },\n featuresManagementDefaults: {\n data: {\n ...DEFAULT_DATA,\n items: {\n proactive: true,\n av: true,\n webshield: false,\n },\n },\n },\n featuresManagementUsers: {\n data: {\n ...DEFAULT_DATA,\n items: [\n {\n name: 'user1',\n domains: [\n 'just.domains.list',\n 'just.domains1.list',\n 'just.domains2.list',\n 'just.domains3.list',\n 'just.domains4.list',\n 'just.domains5.list',\n 'just.domains6.list',\n 'just.domains7.list',\n 'just.domains8.list',\n ],\n features: {\n proactive: true,\n av: true,\n webshield: false,\n },\n },\n {\n name: 'user2',\n domains: [\n 'just.domains9.list',\n 'just.domains10.list',\n 'just.domains11.list',\n 'just.domains12.list',\n 'just.domains13.list',\n 'just.domains14.list',\n 'just.domains15.list',\n 'just.domains16.list',\n ],\n features: {\n proactive: false,\n av: false,\n webshield: true,\n },\n },\n {\n name: 'user3',\n domains: [\n 'just.domains17.list',\n 'just.domains18.list',\n 'just.domains19.list',\n 'just.domains20.list',\n 'just.domains21.list',\n 'just.domains22.list',\n 'just.domains23.list',\n 'just.domains24.list',\n ],\n features: {\n proactive: false,\n av: false,\n webshield: false,\n },\n },\n {\n name: 'user4',\n domains: [\n 'just.domains25.list',\n ],\n features: {\n proactive: true,\n av: false,\n webshield: false,\n },\n },\n ],\n max_count: 100,\n },\n },\n};\n","import {\n AgentResponse, AgentResponseData, DataFrom, ListResponseData,\n NullAgentResponse, RequestParams, SucceededFailedAgentResponse,\n} from './misc';\nimport { MalwareScanStatus } from './user-list';\n\nexport enum ResourceType {\n file = 'file',\n db = 'db',\n}\n\ntype MdsResourceTypeRelatedData = {\n resource_type: ResourceType.db;\n app_name: string | null;\n db_host: string | null;\n db_port: string | null;\n db_name: string | null;\n};\n\ntype FileResourceTypeRelatedData = {\n resource_type: ResourceType.file;\n};\n\nexport type ResourceTypeLocationRelatedData\n = MdsResourceTypeRelatedData | FileResourceTypeRelatedData;\n\nexport enum ScanState {\n Stopped = 'stopped',\n Running = 'running',\n}\n\nexport enum MalwareScanType {\n ondemand = 'on-demand',\n background = 'background',\n user = 'user',\n}\n\ntype OnDemandRunningStatus = {\n status: ScanState.Running;\n scan_type: MalwareScanType;\n created: number;\n path: string;\n phase: string;\n progress: number;\n file_patterns?: string[] | null;\n exclude_patterns?: string[] | null;\n follow_symlinks?: boolean;\n intensity_io: number;\n intensity_cpu: number;\n intensity_ram: number;\n // unused:\n [k: string]: any;\n};\n\ntype OnDemandStoppedStatus = {\n status: ScanState.Stopped;\n\n // unused\n queued: number;\n};\n\ntype OnDemandStatus = OnDemandRunningStatus | OnDemandStoppedStatus;\ntype OnDemandUserStatus = {\n progress?: number;\n status: MalwareScanStatus;\n};\n\ninterface StartParams {\n path: string;\n file_mask?: string;\n ignore_mask?: string;\n follow_symlinks?: boolean;\n intensity_cpu?: number;\n intensity_io?: number;\n}\n\ninterface CleanupParams {\n user: string[];\n}\n\ninterface QueueAddParams {\n paths: string[];\n detect_elf: boolean;\n}\n\ninterface QueueRemoveParams {\n scan_ids: string[];\n}\n\ninterface RestoreParams extends CleanupParams {}\n\ninterface OnDemandScanItemInBackend {\n path: string;\n scan_type?: MalwareScanType;\n scan_status: MalwareScanStatus;\n scanid: string;\n started: number;\n total_resources: number;\n resource_type: ResourceType;\n total_malicious: number;\n error: string | null;\n // unused\n [k: string]: any;\n}\n\nexport class OnDemandScanItem {\n total_malicious: number; // tslint:disable-line:variable-name\n scan_type?: MalwareScanType; // tslint:disable-line:variable-name\n scan_status: MalwareScanStatus; // tslint:disable-line:variable-name\n total_resources: number; // tslint:disable-line:variable-name\n resource_type: ResourceType; // tslint:disable-line:variable-name\n path: string;\n started: number;\n scanid: string;\n error: string | null;\n constructor(data: OnDemandScanItemInBackend) {\n this.total_malicious = data.total_malicious;\n this.scan_status = data.scan_status;\n this.total_resources = data.total_resources;\n this.resource_type = data.resource_type;\n this.path = data.path;\n this.started = data.started;\n this.scanid = data.scanid;\n this.scan_type = data.scan_type;\n this.error = data.error;\n }\n}\n\nexport class MalwareAPI {\n\n static list = (params = {}) => new RequestParams<DataFrom<OnDemandScanListAgentResponse>>\n (['malware', 'on-demand', 'list'], params)\n\n static listForUser = (params = {}) => new RequestParams<DataFrom<OnDemandScanListAgentResponse>>\n (['malware', 'on-demand', 'list-user'], params)\n\n /**\n * TODO: move to user-list\n */\n static cleanup = (params: CleanupParams = { user: [] }) =>\n new RequestParams<DataFrom<NullAgentResponse>>(['malware', 'user', 'cleanup'], params)\n\n /**\n * TODO: move to user-list\n */\n static restore = (params: RestoreParams = { user: [] }) =>\n new RequestParams<DataFrom<SucceededFailedAgentResponse>>\n (['malware', 'user', 'restore-original'], params)\n\n /**\n * TODO: move to user-list\n */\n static queueAdd = (params: QueueAddParams = { paths: [], detect_elf: false }) =>\n new RequestParams<DataFrom<NullAgentResponse>>\n (['malware', 'on-demand', 'queue', 'put'], params)\n\n /**\n * TODO: move to user-list\n */\n static queueRemove = (params: QueueRemoveParams = { scan_ids: [] }) =>\n new RequestParams<DataFrom<NullAgentResponse>>\n (['malware', 'on-demand', 'queue', 'remove'], params)\n static start = (params: StartParams = {path: ''}) =>\n new RequestParams<DataFrom<NullAgentResponse>>(['malware', 'on-demand', 'start'], params)\n static stop = (params = {}) =>\n new RequestParams<DataFrom<NullAgentResponse>>(['malware', 'on-demand', 'stop'], params)\n static status = () =>\n new RequestParams<DataFrom<OnDemandScanStatusAgentResponse>>\n (['malware', 'on-demand', 'status'])\n static userStatus = () =>\n new RequestParams<DataFrom<OnDemandUserScanStatusAgentResponse>>\n (['malware', 'on-demand', 'status-user'])\n static userStart = () =>\n new RequestParams<DataFrom<NullAgentResponse>>\n (['malware', 'on-demand', 'start-user'])\n static userStop = () =>\n new RequestParams<DataFrom<NullAgentResponse>>\n (['malware', 'on-demand', 'stop-user'])\n}\n\ntype OnDemandScanListAgentResponse = AgentResponse<ListResponseData<OnDemandScanItemInBackend>>;\n\ntype OnDemandScanStatusAgentResponse = AgentResponse<AgentResponseData<OnDemandStatus>>;\ntype OnDemandUserScanStatusAgentResponse = AgentResponse<AgentResponseData<OnDemandUserStatus>>;\n","import {\n AgentResponse,\n DataFrom,\n ListResponseData,\n RequestParams,\n SucceededFailedAgentResponse,\n} from './misc';\nimport { ResourceType } from './malware';\n\n\nexport class MaliciousAPI {\n\n static list = (params = {}) =>\n new RequestParams<DataFrom<MaliciousListAgentResponse>>\n (['malware', 'malicious', 'list'], params)\n\n static cleanupAll() {\n return new RequestParams(['malware', 'malicious', 'cleanup-all']);\n }\n\n static action({action, items, params = {}}: MaliciousActionInterface) {\n return new RequestParams<DataFrom<SucceededFailedAgentResponse>>(\n ['malware', 'malicious', action], {\n items: items.map(i => i.id),\n ...params,\n });\n }\n\n static submit({action, item, params = {}}: MaliciousSubmitInterface) {\n return new RequestParams<DataFrom<SucceededFailedAgentResponse>>(\n ['submit', action], {\n reason: item.type,\n filename: item.file,\n ...params,\n });\n }\n}\n\nexport enum MaliciousFileStatus {\n cleanup_started = 'cleanup_started',\n cleanup_done = 'cleanup_done',\n cleanup_removed = 'cleanup_removed',\n cleanup_requires_myimunify_protection = 'cleanup_requires_myimunify_protection',\n quarantined = 'quarantined',\n restore_from_backup_started = 'restore_from_backup_started',\n cleanup_restore_started = 'cleanup_restore_started',\n cleanup_pending = 'cleanup_pending',\n found = 'found', // =infected\n}\nexport type MdsResourceTypeMaliciousList = {\n resource_type: ResourceType;\n app_name?: string | null;\n db_host?: string | null;\n db_port?: string | null;\n db_name?: string | null;\n snippet?: string | null;\n};\n\ntype MdsTableField = {\n table_name: string | null;\n table_field: string | null;\n table_row_inf: number | null;\n}\n\nexport type MaliciousItemInBackend = {\n id: number;\n username: string;\n file: string;\n created: number;\n type: string;\n status: MaliciousFileStatus;\n scan_type: string;\n cleaned_at: number | null;\n // unused\n size?: any;\n hash?: any;\n extra_data?: any;\n malicious?: any;\n scan_id?: any;\n table_fields?: MdsTableField[];\n} & MdsResourceTypeMaliciousList;\n\n// tslint:disable:variable-name\nexport class MaliciousItem {\n public id: number;\n public username: string;\n public resource_type: ResourceType;\n public file: string;\n public created: number;\n public type: string;\n public status: MaliciousFileStatus;\n\n // class can not implement type(\n // at least response validation will work\n public app_name?: string | null;\n public db_host?: string | null;\n public db_port?: string | null;\n public db_name?: string | null;\n public snippet?: string | null;\n // extra data\n public scan_type: string;\n public cleaned_at: number | null;\n\n // misc\n public readonly canExpand = true;\n\n constructor(data: MaliciousItemInBackend) {\n this.id = data.id;\n this.username = data.username;\n this.resource_type = data.resource_type;\n if (data.resource_type === ResourceType.db) {\n this.app_name = data.app_name;\n this.db_host = data.db_host;\n this.db_port = data.db_port;\n this.db_name = data.db_name;\n this.snippet = data.snippet;\n }\n this.file = data.file;\n this.created = data.created;\n this.type = data.type;\n this.status = data.status;\n this.scan_type = data.scan_type;\n this.cleaned_at = data.cleaned_at;\n }\n}\n// tslint:enable:variable-name\n\n\nexport interface MaliciousActionInterface {\n action: string;\n items: MaliciousItem[];\n params?: {};\n}\n\n\nexport interface MaliciousSubmitInterface {\n action: string;\n item: MaliciousItem;\n params?: {};\n}\n\ninterface MaliciousListResponseData extends ListResponseData<MaliciousItemInBackend> {\n malicious_count: number;\n}\n\ntype MaliciousListAgentResponse = AgentResponse<MaliciousListResponseData>;\n","import { MaliciousFileStatus } from '../malicious';\nimport { DEFAULT_DATA } from './misc';\nimport { ResourceType } from '../malware';\n\nexport const simpleItem = {\n id: 1,\n username: 'marco1982',\n file: '/home/marco1983/public_html/tools/ksjbrvgiwgevbou.php',\n resource_type: ResourceType.file as ResourceType.file,\n created: 1488180905,\n size: 100,\n hash: '100',\n extra_data: {},\n malicious: 0,\n type: 'YARA.WebShell_cgi.UNOFFICIAL',\n status: MaliciousFileStatus.found,\n scan_type: 'on-demand',\n cleaned_at: null,\n};\nexport const simpleItemDb = {\n id: 1,\n username: 'marco1982',\n file: '/home/marco1983/public_html/tools/ksjbrvgiwgevbou.php',\n resource_type: ResourceType.db as ResourceType.db,\n created: 1488180905,\n size: 100,\n hash: '100',\n extra_data: {},\n malicious: 0,\n type: 'YARA.WebShell_cgi.UNOFFICIAL',\n status: MaliciousFileStatus.found,\n scan_type: 'on-demand',\n cleaned_at: null,\n app_name: 'mysql',\n db_host: 'localhost',\n db_port: '8888',\n db_name: 'test',\n snippet: '$b_2017921717=base64_decode('NTVjNGNhZTMwNTY1NDc0MzI5NjMwZjYyY2IyZWY5ZmM=');__AI_MARKER__if(current_user_can(base64_decode('YWRtaW5pc3RyYXRvcg=='))&&!array_key_exists(base64_decode('c2hvd19hbGw='),$_GET)){add',\n table_fields: [{\n table_name: 'wp0j_options',\n table_field: 'option_value',\n table_row_inf: 80113,\n }],\n};\n\n\nexport const responses = {\n list: {\n data: {\n ...DEFAULT_DATA,\n max_count: 20,\n malicious_count: 100,\n items: [\n {\n ...simpleItem,\n status: MaliciousFileStatus.cleanup_started,\n },\n {\n ...simpleItem,\n id: 2,\n scan_type: 'realtime',\n },\n {\n ...simpleItemDb,\n id: 3,\n type: '64444 - Exec.request',\n },\n {\n ...simpleItem,\n id: 4,\n type: '64444 - Exec.request',\n },\n {\n ...simpleItem,\n id: 5,\n status: MaliciousFileStatus.quarantined,\n },\n {\n ...simpleItem,\n id: 6,\n status: MaliciousFileStatus.cleanup_done,\n cleaned_at: 1536062665,\n },\n {\n ...simpleItem,\n id: 7,\n status: MaliciousFileStatus.cleanup_removed,\n cleaned_at: 1536062665,\n },\n {\n ...simpleItem,\n id: 8,\n status: MaliciousFileStatus.cleanup_requires_myimunify_protection,\n cleaned_at: 1536062665,\n }\n ],\n },\n },\n\n listDBTypes: {\n data: {\n ...DEFAULT_DATA,\n max_count: 20,\n malicious_count: 100,\n items: [\n {\n ...simpleItemDb,\n status: MaliciousFileStatus.cleanup_started,\n snippet: '<script src=\"https://searchgear.pro\" type=text/javascript></script>'\n },\n {\n ...simpleItemDb,\n id: 2,\n status: MaliciousFileStatus.cleanup_removed,\n snippet: null\n },\n {\n ...simpleItemDb,\n id: 3,\n status: MaliciousFileStatus.cleanup_done,\n cleaned_at: 1536062665,\n },\n {\n ...simpleItemDb,\n id: 4,\n status: MaliciousFileStatus.cleanup_removed,\n cleaned_at: 1536062665,\n snippet: ''\n },\n {\n ...simpleItemDb,\n id: 5,\n type: '64444 - Exec.request',\n },\n ],\n },\n },\n\n restore: {\n data: {\n ...DEFAULT_DATA,\n failed: [\n '/some/file/that/was/not/restored',\n '/another/file/that/was/not/restored',\n ],\n succeeded: [\n '/some/file/that/was/restored',\n '/another/file/that/was/restored',\n ],\n },\n },\n};\n","import { ResourceType } from '../malware';\n\n\nconst simpleEvent = {\n ctime: 1488180905,\n path: '/home/somelloscom/public_html/loja/in-ड्deed-smart-dos bons/admin/noerror.php',\n initiator: 'root',\n file_owner: 'john1234',\n file_user: 'john1234',\n cause: 'on-demand',\n event: 'found',\n resource_type: ResourceType.file,\n};\n\nconst events = [\n 'not_exist',\n 'cleanup_started',\n 'cleanup_pending',\n 'cleanup_done',\n 'unable_to_cleanup',\n 'restored_original',\n 'restored_from_backup',\n 'added_to_ignore',\n 'submitted_for_analysis',\n 'restored_from_quarantine',\n 'deleted_from_ignore',\n 'found',\n 'failed_to_cleanup',\n 'failed_to_restore_original',\n 'failed_to_restore_from_backup',\n 'failed_to_delete',\n 'failed_to_quarantine',\n 'failed_to_restore_from_quarantine',\n 'failed_to_ignore',\n 'failed_to_delete_from_ignore',\n 'requires_myimunify_protection',\n];\n\nexport const responses = {\n adminSideList: {\n data: {\n max_count: 1000,\n items: [\n {\n ctime: 1488180905,\n path: '/domain.name/public_html/wp-content',\n initiator: 'root',\n cause: 'background',\n event: 'deleted',\n resource_type: ResourceType.db,\n app_name: 'mysql',\n db_host: 'localhost',\n table_name: 'user3_wp_umrkc',\n table_field: 'wp_options.options_value',\n table_row_inf: 15,\n db_port: 8888,\n db_name: 'test',\n scan_id: 'd38099c6cd794ba091bfd685795b5932',\n },\n ...(events.map(event => ({...simpleEvent, event}))),\n ],\n },\n },\n userSideList: {\n data: {\n max_count: 200,\n items: [\n {\n ctime: 1488180905,\n path: '/domain.name/public_html/wp-content',\n initiator: 'root',\n cause: 'on-demand',\n event: 'Failed to restore: file has no clean backup version',\n },\n {\n ctime: 223343567,\n path: '/domain.name/public_html/wp-content',\n initiator: 'root',\n cause: 'on-demand',\n event: 'Failed to restore: file has no clean backup version',\n },\n {\n ctime: 323534567,\n path: '/domain.name/public_html/wp-content',\n initiator: 'root',\n cause: 'on-demand',\n event: 'Failed to restore: file has no clean backup version',\n },\n {\n ctime: 423414567,\n path: '/domain.name/public_html/wp-content',\n initiator: 'root',\n cause: 'on-demand',\n event: 'Failed to restore: file has no clean backup version',\n },\n {\n ctime: 542353567,\n path: '/domain.name/public_html/wp-content',\n initiator: 'root',\n cause: 'realtime',\n event: 'Failed to restore: file has no clean backup version',\n },\n {\n ctime: 623245672,\n path: '/domain.name/public_html/wp-content',\n initiator: 'root',\n cause: 'realtime',\n event: 'Failed to restore: file has no clean backup version',\n },\n ],\n },\n },\n};\n","import { DEFAULT_DATA } from './misc';\nimport { IPScope } from '../lists';\n\nexport const formData = {\n list : '',\n type : 'ip',\n ttlUnits: 'days',\n ttl: '1',\n comment : 'Newly created IP with comment',\n fullAccess : false,\n value : '223.21.1.1',\n scope: IPScope.group,\n};\nconst listData = {\n no_captcha: false,\n ip: '1.1.210.66',\n ctime: 1522908698,\n deep: 4,\n purpose: 'WHITE',\n manual: true,\n auto_whitelisted: false,\n comment: 'Special for blacklist',\n country: {\n name: 'Thailand',\n code: 'TH',\n },\n version: 4,\n scope: null,\n full_access: null,\n network_address: 16896578,\n netmask: 4294967295,\n imported_from: null,\n expiration: 1523037066,\n};\nconst listItems = [\n {\n ...listData,\n comment: null,\n scope: IPScope.group,\n manual: false,\n },\n {\n ...listData,\n comment: null,\n scope: IPScope.local,\n manual: false,\n },\n {\n ...listData,\n ip: '1234:5678:9abc::',\n country: {},\n purpose: 'WHITE',\n scope: IPScope.local,\n },\n {\n ...listData,\n ip: '1234:5678:9abc:def0::',\n full_access: true,\n country: {},\n purpose: 'WHITE',\n },\n {\n ...listData,\n ip: '10.101.1.14',\n purpose: 'CAPTCHA',\n comment: 'Special for blacklist',\n country: {\n name: 'Thailand',\n code: 'TH',\n id: '1605651',\n },\n },\n {\n ...listData,\n ip: '10.101.1.15',\n country: null,\n purpose: 'CAPTCHA',\n comment: 'Special for blacklist',\n },\n {\n ...listData,\n ip: '10.101.1.58',\n country: {\n name: 'Brazil',\n code: 'BR',\n },\n purpose: 'CAPTCHA',\n },\n {\n ...listData,\n ip: '11.11.11.11',\n country: {\n name: 'United States of America',\n code: 'US',\n },\n purpose: 'CAPTCHA',\n },\n {\n ...listData,\n ip: '11.11.11.11/32',\n country: {\n name: 'Ukraine',\n code: 'UA',\n },\n purpose: 'drop',\n },\n];\n\nexport const responses = {\n ipAlreadyExists: {\n data: {\n messages: [\n 'IP 1.162.36.148 is already in captcha list',\n 'Imunify360 protection is running concurrently with cPHulk',\n ],\n result: 'warnings',\n },\n },\n groupId: {\n status: 'ok',\n group_id: 'groupId',\n },\n list: {\n data: {\n ...DEFAULT_DATA,\n max_count: 11,\n items: listItems,\n counts: {\n 'server': {\n 'white': 23,\n 'captcha': 434,\n 'drop': 34,\n 'splashscreen': 34,\n },\n 'cloud': {\n 'white': 23,\n 'captcha': 434,\n 'drop': 34,\n 'splashscreen': 34,\n }\n },\n },\n },\n listsPagination: {\n data: {\n ...DEFAULT_DATA,\n max_count: 999,\n items: [\n ...listItems,\n ...listItems,\n ...listItems,\n ...listItems,\n ],\n counts: {\n 'server': {\n 'white': 23,\n 'captcha': 434,\n 'drop': 34,\n 'splashscreen': 34,\n },\n 'cloud': {\n 'white': 23,\n 'captcha': 434,\n 'drop': 34,\n 'splashscreen': 34,\n }\n },\n },\n },\n blacklist: {\n data: {\n ...DEFAULT_DATA,\n max_count: 11,\n items: [\n {\n imported_from: null,\n ip: '10.101.1.58',\n no_captcha: false,\n ctime: 1522908698,\n deep: 4,\n manual: true,\n purpose: 'captcha',\n auto_whitelisted: false,\n comment: 'Special for blacklist',\n country: {\n name: 'Thailand',\n code: 'TH',\n id: '1605651',\n },\n version: 4,\n full_access: null,\n network_address: 16896578,\n netmask: 4294967295,\n expiration: 1523037066,\n },\n ],\n counts: {\n 'server': {\n 'all': 100,\n 'white': 23,\n 'captcha': 434,\n 'black': 34,\n 'splashscreen': 34,\n },\n 'cloud': {\n 'white': 23,\n 'captcha': 434,\n 'black': 34,\n 'splashscreen': 34,\n }\n },\n },\n },\n};\n","import { DEFAULT_DATA } from './misc';\nimport { ResourceType } from './../malware';\n\nexport const responses = {\n malware: {\n data: {\n ...DEFAULT_DATA,\n max_count: 44,\n items: [\n ...Array.from(new Array(8), (n, index) => {\n return {\n path: `/home/user-a-0${index}/ignore.gzip`,\n added_date: 1528272138,\n id: index,\n resource_type: ResourceType.file,\n };\n }),\n ...[{\n path: `/domain.name/public_html/wp-content/${'long/'.repeat(100)}long.jpeg`,\n added_date: Date.now() / 1000,\n id: 1,\n resource_type: ResourceType.db,\n }],\n ],\n },\n },\n\n userside: {\n data: {\n ...DEFAULT_DATA,\n max_count: 36,\n items: [\n ...Array.from(new Array(8), (n, index) => {\n return {\n path: `/domain.name/public_html/theme_name/function_${index}/ignore.gzip`,\n id: index,\n added_date: 1528817623,\n resource_type: ResourceType.file,\n };\n }),\n ...[{\n path: `/domain.name/public_html/wp-content/${'long/'.repeat(100)}long.jpeg`,\n id: 1,\n added_date: Date.now() / 1000,\n resource_type: ResourceType.file,\n }],\n ],\n },\n },\n};\n","import { AgentStatus, Result } from '../misc';\nimport { license } from './misc';\n\nexport const responses = {\n serviceInstalling: {\n result: Result.SUCCESS,\n status: AgentStatus.INSTALLING,\n messages: [],\n data: undefined,\n },\n serviceFailedToInstall: {\n result: Result.SUCCESS,\n status: AgentStatus.FAILED_TO_INSTALL,\n messages: [],\n data: undefined,\n },\n serviceNotInstalled: {\n result: Result.SUCCESS,\n status: AgentStatus.NOT_INSTALLED,\n messages: [],\n data: undefined,\n },\n pieceOfLog: {\n result: Result.SUCCESS,\n status: AgentStatus.FAILED_TO_INSTALL,\n messages: [],\n data: {\n items: {\n offset: 0,\n log: 'log row #1\\nlog row #2',\n },\n },\n },\n serviceRunning: {\n result: Result.SUCCESS,\n status: AgentStatus.OK,\n messages: [],\n data: undefined,\n },\n};\n","import { MalwareScanType } from './malware';\nimport { AgentResponse, DataFrom, ListResponseData,\n NullAgentResponse, RequestParams } from './misc';\nimport { AnalystCleanupStatus } from './analyst-cleanup';\n\nexport enum MalwareScanStatus { // it the same as ScanState, but with queued....\n running = 'running',\n queued = 'queued',\n stopped = 'stopped',\n}\n\nexport enum MalwareCleanStatus {\n running = 'running',\n stopped = 'stopped',\n}\n\n\nexport interface UserListItemBackend {\n home: string;\n user: string;\n infected: number;\n infected_db: number;\n scan_id: string | null;\n scan_status: MalwareScanStatus | null;\n scan_date: number | null;\n scan_type?: MalwareScanType;\n cleanup_status: MalwareCleanStatus | null;\n analyst_status: AnalystCleanupStatus | null;\n}\n\n// tslint:disable:variable-name\nexport class UserListItem implements UserListItemBackend {\n home: string;\n user: string;\n infected: number;\n infected_db: number;\n scan_id: string | null;\n scan_status: MalwareScanStatus | null;\n scan_date: number | null;\n scan_type?: MalwareScanType;\n cleanup_status: MalwareCleanStatus | null;\n analyst_status: AnalystCleanupStatus | null;\n isAnalystCleanupInProgress: boolean = false;\n\n scanAvailable: boolean;\n cleanAvailable: boolean;\n restoreAvailable: boolean;\n stopAvailable: boolean;\n reportAvailable: boolean;\n\n public constructor(data: UserListItemBackend) {\n this.home = data.home;\n this.user = data.user;\n this.infected = data.infected;\n this.scan_id = data.scan_id;\n this.scan_status = data.scan_status;\n this.scan_date = data.scan_date;\n this.cleanup_status = data.cleanup_status;\n this.analyst_status = data.analyst_status;\n this.isAnalystCleanupInProgress = this.checkIsInProgressAnalystCleanup(this.analyst_status);\n this.infected_db = data.infected_db;\n this.scan_type = data.scan_type;\n this.scanAvailable = ![\n MalwareScanStatus.running,\n MalwareScanStatus.queued,\n ].includes(this.scan_status!) && this.cleanup_status !== MalwareCleanStatus.running;\n this.stopAvailable = !this.scanAvailable\n && this.cleanup_status !== MalwareCleanStatus.running;\n this.cleanAvailable = (this.infected > 0 || this.infected_db > 0) &&\n this.cleanup_status !== MalwareCleanStatus.running;\n this.restoreAvailable = this.cleanup_status === MalwareCleanStatus.stopped;\n this.reportAvailable = !!this.cleanup_status || this.infected > 0 || this.infected_db > 0;\n }\n\n private checkIsInProgressAnalystCleanup(analystStatus: AnalystCleanupStatus | null): boolean {\n if (!analystStatus) return false;\n\n return analystStatus !== AnalystCleanupStatus.completed;\n }\n}\n\nexport class UserListAPI {\n\n static list = (params = {}) =>\n new RequestParams<DataFrom<MalwareUserListAgentResponse>>\n (['malware', 'user', 'list'], params)\n\n static scanAll(params: {detect_elf: boolean}) {\n return new RequestParams<DataFrom<NullAgentResponse>>(['malware', 'user', 'scan'], params);\n }\n}\n\ntype MalwareUserListAgentResponse = AgentResponse<ListResponseData<UserListItemBackend> & {\n malicious_count: number,\n}>;\n","import { DEFAULT_DATA } from './misc';\nimport { MalwareScanStatus } from '../user-list';\nimport { ResourceType, MalwareScanType, ScanState } from '../malware';\nimport { Result } from '../misc';\n\n\nconst list = [\n {\n error: null,\n quarantined: 0,\n resource_type: ResourceType.file,\n scan_type: MalwareScanType.ondemand,\n scan_status: MalwareScanStatus.running,\n created: 1553111711,\n started: 1553111711,\n path: '/home/user1',\n scanid: '08796906dace42de8d251d167ab4eefc',\n malicious: 0,\n total: 6,\n total_resources: 6,\n total_malicious: 0,\n },\n {\n error: null,\n quarantined: 0,\n resource_type: ResourceType.file,\n scan_type: MalwareScanType.background,\n scan_status: MalwareScanStatus.running,\n created: 1553111711,\n started: 1553111711,\n path: '/home/user6',\n scanid: '688b88d41cb144f3b977595e848ed440',\n malicious: 0,\n total: 4,\n total_resources: 4,\n total_malicious: 0,\n },\n {\n error: null,\n quarantined: 0,\n resource_type: ResourceType.db,\n scan_type: MalwareScanType.ondemand,\n scan_status: MalwareScanStatus.queued,\n created: 1553111711,\n started: 1553111711,\n path: '/home/user2',\n scanid: '08796906dace42de8d251d167ab4eefc',\n malicious: 0,\n total: 6,\n total_resources: 6,\n total_malicious: 0,\n },\n {\n error: null,\n quarantined: 0,\n resource_type: ResourceType.file,\n scan_type: MalwareScanType.background,\n scan_status: MalwareScanStatus.queued,\n created: 1553111711,\n started: 1553111711,\n path: '/home/user5',\n scanid: '688b88d41cb144f3b977595e848ed440',\n malicious: 0,\n total: 0,\n total_resources: 0,\n total_malicious: 0,\n },\n {\n error: null,\n scan_status: MalwareScanStatus.stopped,\n resource_type: ResourceType.file,\n created: 1553112483,\n started: 1553112483,\n path: '/home/user4',\n scanid: '688b88d41cb144f3b977595e848ed440',\n malicious: 0,\n total: 12,\n total_resources: 12,\n total_malicious: 8,\n },\n {\n error: null,\n scan_status: MalwareScanStatus.stopped,\n resource_type: ResourceType.file,\n created: 1553112483,\n started: 1553112483,\n path: '/home/user7',\n scanid: 'e957a5358051497da0dbf3603977bd25',\n total: 0,\n total_resources: 0,\n total_malicious: 0,\n },\n {\n error: null,\n scan_status: MalwareScanStatus.stopped,\n resource_type: ResourceType.db,\n created: 1553112483,\n started: 1553112483,\n path: '/home/user3',\n scanid: 'e957a5358051497da0dbf3603977bd25',\n total: 5,\n total_resources: 5,\n total_malicious: 9,\n },\n];\n\nconst status = {\n created: 1526376334.3316534,\n eula: null,\n path: '/var/www/vhosts/*',\n status: ScanState.Running as ScanState.Running,\n scan_type: MalwareScanType.ondemand,\n progress: 50,\n phase: 'aibolit scanning',\n file_patterns: null,\n exclude_patterns: null,\n intensity_cpu: 2,\n intensity_io: 2,\n intensity_ram: 1024,\n follow_symlinks: false,\n queued: 0,\n scanid: '123',\n started: 0,\n};\n\nexport const responses = {\n list: {\n data: {\n ...DEFAULT_DATA,\n max_count: 30,\n items: list,\n },\n },\n\n running: {\n data: {\n ...DEFAULT_DATA,\n items: status,\n },\n },\n\n runningScheduled: {\n data: {\n ...DEFAULT_DATA,\n items: {\n ...status,\n scan_type: MalwareScanType.background,\n },\n },\n },\n\n runningModerate: {\n data: {\n ...DEFAULT_DATA,\n items: {\n ...status,\n exclude_patterns: ['ex'],\n file_patterns: ['fi'],\n intensity_cpu: 7,\n intensity_io: 7,\n follow_symlinks: true,\n scanid: 'e83c183a743741698ce470c9c53d5817',\n },\n },\n },\n\n stopped: {\n data: {\n ...DEFAULT_DATA,\n items: {\n status: ScanState.Stopped as ScanState.Stopped,\n queued: 0,\n },\n },\n },\n statusUserStartRateLimit: {\n result: Result.ERROR,\n messages: ['malware_scanner.on_demand.user_scan.rate_limit_reached'],\n data: null as any,\n },\n statusUserStopped: {\n data: {\n ...DEFAULT_DATA,\n items: {\n status: MalwareScanStatus.stopped,\n },\n },\n },\n statusUserRunning: {\n data: {\n ...DEFAULT_DATA,\n items: {\n status: MalwareScanStatus.running,\n },\n },\n },\n statusUserQueued: {\n data: {\n ...DEFAULT_DATA,\n items: {\n status: MalwareScanStatus.queued,\n },\n },\n },\n start: {\n data: {\n ...DEFAULT_DATA,\n items: null,\n }\n }\n};\n","import { AgentResponse, AgentResponseData, DataFrom, RequestParams } from './misc';\n\nexport enum Permission {\n MS_VIEW = 'malware_scanner.view',\n MS_CLEAN = 'malware_scanner.clean',\n MS_CLEAN_REQUIRES_MYIMUNIFY_PROTECTION = 'malware_scanner.clean_requires_myimunify_protection',\n MS_PATCH_HAS_SUBSCRIBE = 'malware_scanner.imunify_patch.enabled',\n MS_PATCH_ENABLED = 'malware_scanner.imunify_patch.eligible_to_purchase',\n MS_ON_DEMAND_SCAN = 'malware_scanner.on_demand.scan',\n MS_ON_DEMAND_SCAN_WITHOUT_RATE_LIMIT = 'malware_scanner.on_demand.scan_without_rate_limit',\n MS_IGNORE_LIST_EDIT = 'malware_scanner.ignore_list.edit',\n MS_CONFIG_DEFAULT_ACTION_EDIT = 'malware_scanner.config.default_action.edit',\n PD_VIEW = 'proactive_defense.view',\n PD_CONFIG_MODE_EDIT = 'proactive_defense.config.mode.edit',\n}\n\ntype PermissionsListAgentResponse\n = DataFrom<AgentResponse<AgentResponseData<Array<Permission>>>>;\n\nexport class PermissionsAPI {\n static list = () => new RequestParams<PermissionsListAgentResponse>(['permissions', 'list']);\n}\n","import { DEFAULT_DATA } from './misc';\nimport { Permission } from '../permissions';\n\nconst items: Array<Permission> = [\n Permission.MS_VIEW,\n Permission.MS_CLEAN,\n Permission.MS_CLEAN_REQUIRES_MYIMUNIFY_PROTECTION,\n Permission.MS_ON_DEMAND_SCAN,\n Permission.MS_ON_DEMAND_SCAN_WITHOUT_RATE_LIMIT,\n Permission.MS_PATCH_HAS_SUBSCRIBE,\n Permission.MS_PATCH_ENABLED,\n Permission.MS_IGNORE_LIST_EDIT,\n Permission.MS_CONFIG_DEFAULT_ACTION_EDIT,\n Permission.PD_VIEW,\n Permission.PD_CONFIG_MODE_EDIT,\n];\n\nexport const responses = {\n list: {\n data: {\n ...DEFAULT_DATA,\n items,\n },\n },\n listNotAllowed: {\n data: {\n ...DEFAULT_DATA,\n items: [],\n },\n },\n};\n","import {\n AgentResponse, AgentResponseData, DataFrom, ListResponseData,\n NullAgentResponse, RequestParams,\n} from './misc';\nimport { toIpListOrNull, IPList } from './lists';\n\n\nexport enum Mode {\n disabled = 'DISABLED',\n log = 'LOG',\n kill = 'KILL',\n block = 'BLOCK',\n}\n\n\nexport interface ProactiveDefenseIgnoreData { // data used to add an item to ignore list\n path: string;\n rule_id?: number;\n rule_name?: string;\n}\n\ninterface ProactiveDefenseItemInBackend {\n id: number;\n timestamp: number;\n rule_id: number | null; // tslint:disable-line:variable-name\n rule_name: string; // tslint:disable-line:variable-name\n path: string;\n count: number;\n host: string | null;\n ip: string | null;\n // here listname is uppercase, but in incidents it is lowercase...\n listname: string | null;\n purpose?: IPList | null;\n action: Mode;\n}\n\nexport class ProactiveDefenseItem {\n id: number;\n timestamp: number;\n rule_id: number | null; // tslint:disable-line:variable-name\n rule_name: string; // tslint:disable-line:variable-name\n path: string;\n count: number;\n host: string | null;\n ip: string | null;\n listname: IPList | null;\n purpose: IPList | null;\n action: Mode;\n constructor(data: ProactiveDefenseItemInBackend) {\n this.id = data.id;\n this.timestamp = data.timestamp;\n this.rule_id = data.rule_id;\n this.rule_name = data.rule_name;\n this.path = data.path;\n this.count = data.count;\n this.host = data.host;\n this.ip = data.ip;\n this.action = data.action;\n this.purpose = (data.purpose)? toIpListOrNull(data.purpose) : null;\n this.listname = toIpListOrNull(data.listname);\n }\n}\ninterface DetailsInBackend {\n id: number;\n timestamp: number;\n rule_id: number | null;\n rule_name: string;\n description: string | null;\n path: string;\n url: string | null;\n ip: string | null;\n country: string | null;\n count: number;\n listname: string | null;\n purpose: string | null;\n action: string;\n env: {[k: string]: string};\n}\nexport class ProactiveDefenseDetails {\n id: number;\n timestamp: number;\n rule_id: number | null; // tslint:disable-line:variable-name\n rule_name: string; // tslint:disable-line:variable-name\n description: string | null;\n path: string;\n url: string | null;\n ip: string | null;\n country: string | null;\n count: number;\n listname: IPList | null;\n purpose: IPList | null;\n action: string;\n env: Array<{\n name: string,\n value: string,\n }>;\n constructor({id, timestamp, rule_id, rule_name, description, path, url, ip, country, count, env,\n action, listname, purpose}\n : DetailsInBackend) {\n this.id = id;\n this.timestamp = timestamp;\n this.rule_id = rule_id;\n this.rule_name = rule_name;\n this.description = description;\n this.path = path;\n this.url = url;\n this.ip = ip;\n this.country = country;\n this.count = count;\n this.listname = toIpListOrNull(listname);\n this.purpose = (purpose)? toIpListOrNull(purpose) : null;\n this.action = action;\n this.env = Object.entries(env).map(([name, value]) => ({name, value}));\n }\n}\n\ninterface ProactiveDefenseIgnoreItemInBackend {\n path: string;\n timestamp: number;\n rules: Array<{\n id: number,\n name: string,\n }>;\n}\n\nexport class ProactiveDefenseIgnoreItem {\n path: string;\n timestamp: number;\n rules: Array<{\n id: number,\n name: string,\n }>;\n constructor(data: ProactiveDefenseIgnoreItemInBackend) {\n this.path = data.path;\n this.timestamp = data.timestamp;\n this.rules = data.rules;\n }\n}\n\n\nexport class ProactiveDefenseAPI {\n static list = (params = {}) =>\n new RequestParams<DataFrom<ProactiveDefenseListAgentResponse>>\n (['proactive', 'list'], params)\n static details = (id: any) =>\n new RequestParams<DataFrom<ProactiveDefenseDetailsAgentResponse>>\n (['proactive', 'details'], {id})\n\n static ignoreList(params = {}) {\n return new RequestParams<DataFrom<ProactiveDefenseIgnoreAgentResponse>>(\n ['proactive', 'ignore', 'list'],\n params);\n }\n static ignoreAdd = (\n params: {items: ProactiveDefenseIgnoreData[]} = {items: []},\n ) => new RequestParams<DataFrom<NullAgentResponse>>(['proactive', 'ignore', 'addmany'], params)\n static ignoreDeletePaths = (params: {paths: string[]}) =>\n new RequestParams<DataFrom<NullAgentResponse>>\n (['proactive', 'ignore', 'delete', 'path'], params)\n static ignoreDeleteRule = (params = {}) => new RequestParams<DataFrom<NullAgentResponse>>\n (['proactive', 'ignore', 'delete', 'rule'], params)\n}\n\ntype ProactiveDefenseListAgentResponse\n = AgentResponse<AgentResponseData<ProactiveDefenseItemInBackend[]>>;\n\ntype ProactiveDefenseDetailsAgentResponse = AgentResponse<AgentResponseData<DetailsInBackend>>;\n\ntype ProactiveDefenseIgnoreAgentResponse\n = AgentResponse<ListResponseData<ProactiveDefenseIgnoreItemInBackend>>;\n","import { IPList } from '../lists';\nimport { Mode } from '../proactive-defense';\nimport { DEFAULT_DATA } from './misc';\n\nexport const responses = {\n list: {\n data: {\n ...DEFAULT_DATA,\n max_count: 10,\n items: [\n {\n id: 20,\n timestamp: 1525759128,\n rule_id: null,\n rule_name: 'PHP.Inject',\n path: '/home/customer/public_html/index.php',\n count: 3,\n host: 'customer.com',\n ip: '10.10.0.1',\n listname: IPList.white,\n purpose: IPList.white,\n action: Mode.log,\n },\n {\n id: 21,\n timestamp: 1525759321,\n rule_id: 1,\n rule_name: 'PHP.Inject',\n path: '/home/example/public_html/index-zero.php',\n count: 5,\n host: 'example.com',\n ip: '192.168.1.3',\n purpose: null,\n listname: null,\n action: Mode.kill,\n },\n ...Array(...Array(10)).map((_, i) => ({\n id: 100 + i,\n timestamp: 1525759321 + i * 10000,\n rule_id: 2,\n rule_name: 'FS.Deploy',\n path: `/home/example/public_html/index-${i}.php`,\n count: i % 5 + 1,\n host: 'example.com',\n ip: '192.168.1.3',\n purpose: null,\n listname: null,\n action: Mode.kill,\n })),\n {\n id: 42,\n timestamp: 43,\n rule_id: 44,\n rule_name: '45',\n path: '46',\n count: 47,\n host: null,\n ip: null,\n purpose: null,\n listname: null,\n action: Mode.log,\n },\n ],\n },\n },\n details: {\n data: {\n ...DEFAULT_DATA,\n items: {\n id: 20,\n timestamp: 1525759128,\n rule_id: 1,\n rule_name: `PHP.${'InjectPHP'.repeat(10)}`,\n description: 'Long description on what exactly that recognizer.'.repeat(15),\n path: `/var/www/vhosts/auser1.com/${'long'.repeat(100)}/hack1526573364.php`,\n url: '/index.php',\n ip: '10.10.0.1',\n country: 'CN',\n count: 3,\n action: 'LOG',\n purpose: 'white',\n listname: 'gray',\n env: {\n HTTP_HOST: 'example.com',\n REMOTE_ADDR2: '10.10.0.1',\n HTTP_HOST2: 'example.com',\n REM23OTE_ADDR: '10.10.0.1',\n HTTP_swHOST: 'example.com',\n REMOTEs_ADDR: '10.10.0.1',\n HTTP_HdsOST: 'example.com',\n REMOTE_sADDR: '10.10.0.1',\n HTTP_HOSdT: 'example.com',\n REMOTE_AwDDR: '10.10.0.1',\n ['LONG_REMOTE_ADDR'.repeat(10)]: `10.10.0.1${'REMOTE_ADDR'.repeat(10)}`,\n },\n },\n },\n },\n detailsShort: {\n data: {\n ...DEFAULT_DATA,\n items: {\n id: 20,\n timestamp: 1525759128,\n rule_id: 12,\n rule_name: `PHP.InjectPHP`,\n description: 'some description',\n path: `/var/www/vhosts/auser1.com/hack1526573364.php`,\n url: '/index.php',\n ip: '10.10.0.1',\n country: 'CN',\n count: 4,\n action: 'KILL',\n purpose: 'gray',\n listname: 'gray',\n env: {\n HTTP_HOST: 'example.com',\n REMOTE_ADDR2: '10.10.0.1',\n HTTP_HOST2: 'example.com',\n REM23OTE_ADDR: '10.10.0.1',\n HTTP_swHOST: 'example.com',\n REMOTEs_ADDR: '10.10.0.1',\n HTTP_HdsOST: 'example.com',\n REMOTE_sADDR: '10.10.0.1',\n HTTP_HOSdT: 'example.com',\n REMOTE_AwDDR: '10.10.0.1',\n },\n },\n },\n },\n detailsNoIp: {\n data: {\n ...DEFAULT_DATA,\n items: {\n id: 20,\n timestamp: 1525759128,\n rule_id: 12,\n rule_name: `PHP.InjectPHP`,\n description: 'some description',\n path: `/var/www/vhosts/auser1.com/hack1526573364.php`,\n url: '/index.php',\n ip: null,\n country: null,\n count: 4,\n action: 'KILL',\n purpose: null,\n listname: null,\n env: {\n HTTP_HOST: 'example.com',\n REMOTE_ADDR2: '10.10.0.1',\n HTTP_HOST2: 'example.com',\n REM23OTE_ADDR: '10.10.0.1',\n HTTP_swHOST: 'example.com',\n REMOTEs_ADDR: '10.10.0.1',\n HTTP_HdsOST: 'example.com',\n REMOTE_sADDR: '10.10.0.1',\n HTTP_HOSdT: 'example.com',\n REMOTE_AwDDR: '10.10.0.1',\n },\n },\n },\n },\n ignoreList: {\n data: {\n ...DEFAULT_DATA,\n max_count: 10,\n items: [\n {\n timestamp: 1525759128,\n path: '/home/customer/public_html/index.php',\n user: 'john',\n rules: [...Array(...Array(10)).map((_, i) => ({\n id: i,\n name: `Rule ${i}`,\n })), {\n id: 10,\n name: 'Really-really-really-really-really-really-really-really long rule',\n }],\n },\n {\n timestamp: 1525759321,\n path: '/var/www/vhosts/auser1.com/httpdocs/index.html',\n user: 'bob',\n rules: [],\n },\n ],\n },\n },\n};\n","import { DEFAULT_DATA } from './misc';\nimport { Vendor } from '../reputation';\n\nexport const responses = {\n infectedDomains: {\n data: {\n ...DEFAULT_DATA,\n max_count: 99,\n limit: 50,\n offset: 0,\n items: [\n {\n username: 'bill',\n domain: 'yyy_strange_domain_name.com',\n threats: [{\n type: 'MALWARE',\n vendor: Vendor.google,\n timestamp: 1469692074,\n }],\n },\n {\n username: 'john',\n domain: 'john.snow',\n threats: [{\n type: 'MALWARE',\n vendor: Vendor.google,\n timestamp: 1469692074,\n }, {\n type: 'SOCIAL_ENGINEERING',\n vendor: Vendor.google,\n timestamp: 1469692074,\n }, {\n type: 'UNWANTED_SOFTWARE',\n vendor: Vendor.google,\n timestamp: 1469692074,\n }, {\n type: 'THREAT_TYPE_UNSPECIFIED',\n vendor: Vendor.google,\n timestamp: 1469692074,\n }, {\n type: 'POTENTIALLY_HARMFUL_APPLICATION',\n vendor: Vendor.google,\n timestamp: 1469692074,\n }, {\n type: 'MALWARE',\n vendor: Vendor.yandex,\n timestamp: 1469692074,\n }, {\n type: 'SOCIAL_ENGINEERING',\n vendor: Vendor.yandex,\n timestamp: 1469692074,\n }, {\n type: 'UNWANTED_SOFTWARE',\n vendor: Vendor.yandex,\n timestamp: 1469692074,\n }, {\n type: 'spam domain',\n vendor: Vendor.spamhaus,\n timestamp: 1469692074,\n }, {\n type: 'phish domain',\n vendor: Vendor.spamhaus,\n timestamp: 1469692074,\n }, {\n type: 'malware domain',\n vendor: Vendor.spamhaus,\n timestamp: 1469692074,\n }, {\n type: 'botnet C&C domain',\n vendor: Vendor.spamhaus,\n timestamp: 1469692074,\n }, {\n type: 'abused legit spam',\n vendor: Vendor.spamhaus,\n timestamp: 1469692074,\n }, {\n type: 'abused spammed redirector domain',\n vendor: Vendor.spamhaus,\n timestamp: 1469692074,\n }, {\n type: 'abused legit phish',\n vendor: Vendor.spamhaus,\n timestamp: 1469692074,\n }, {\n type: 'abused legit malware',\n vendor: Vendor.spamhaus,\n timestamp: 1469692074,\n }, {\n type: 'abused legit botnet C&C',\n vendor: Vendor.spamhaus,\n timestamp: 1469692074,\n }, {\n type: 'phish domain',\n vendor: Vendor.phishtank,\n timestamp: 1469692074,\n }, {\n type: 'phish domain',\n vendor: Vendor.openphish,\n timestamp: 1469692074,\n }, {\n type: null,\n vendor: Vendor.openphish,\n timestamp: 1469692074,\n }, {\n type: 'ANY',\n vendor: Vendor.yandex,\n timestamp: 1469692074,\n }, {\n type: 'ANY',\n vendor: Vendor.openphish,\n timestamp: 1469692074,\n }, {\n type: 'ANY',\n vendor: Vendor.mitchellkrogza,\n timestamp: 1469692074,\n }, {\n type: 'ANY',\n vendor: 'new vendor',\n timestamp: 1469692074,\n }\n ],\n },\n ],\n },\n } as any,\n};\n","import { AgentResponse, AgentResponseData, DataFrom, RequestParams } from './misc';\n\n\nexport class NotificationSettingsAPI {\n\n static show() {\n return new RequestParams<DataFrom<NotificationConfigAgentResponse>>(\n ['notifications-config', 'show']);\n }\n\n static save(params: Object) {\n return new RequestParams<DataFrom<NotificationConfigAgentResponse>>(\n ['notifications-config', 'patch'], { data: params });\n }\n}\n\nexport const DEFAULT_EMAIL = 'default';\n\ntype AdminType = {\n ADMIN?: {\n admin_emails: string[],\n enabled: boolean,\n period?: number,\n },\n};\n\ntype ScriptType = {\n SCRIPT: {\n scripts: string[],\n enabled: boolean,\n period?: number,\n },\n};\n\ntype AdminAndScriptTypes = AdminType & ScriptType;\n\nexport type NotificationRulesType = {\n REALTIME_MALWARE_FOUND?: AdminAndScriptTypes,\n USER_SCAN_STARTED: ScriptType,\n CUSTOM_SCAN_STARTED: ScriptType,\n USER_SCAN_FINISHED: ScriptType,\n CUSTOM_SCAN_FINISHED: ScriptType,\n CUSTOM_SCAN_MALWARE_FOUND: AdminAndScriptTypes,\n USER_SCAN_MALWARE_FOUND: AdminAndScriptTypes,\n SCRIPT_BLOCKED?: AdminAndScriptTypes,\n};\n\nexport type NotificationConfigType = {\n admin?: {\n default_emails: string[],\n notify_from_email: string | null,\n locale?: string,\n [k: string]: any,\n },\n rules: NotificationRulesType;\n};\n\ntype NotificationConfigAgentResponse = AgentResponse<AgentResponseData<NotificationConfigType>>;\n\n","import { isFQDN, isEmail } from 'validator';\nimport { DEFAULT_EMAIL } from '@imunify360-api/notification-settings';\n\nconst portRegex = /^(\\d+)([:|-](\\d+))?$/;\nconst integerRegex = /^-?\\d*$/;\nconst floatRegex = /^(?:[1-9]\\d*|0)?(?:\\.\\d+)?$/;\n/* eslint-disable max-len */\nconst ipv4WithCIDRRegex = /^(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9])[.]){3}(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9]))\\b(\\/\\b([0-9]|[12][0-9]|3[0-2]))?$/;\nconst ipv6WithCIDRRegex = /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?(\\/([0-9]|[1-5][0-9]|6[0-4]))\\s*$/;\nconst ipv6RegexArray = [ipv4WithCIDRRegex, ipv6WithCIDRRegex];\n\nconst serverIdRegex = /(^\\s*SS[a-zA-Z0-9]{14}\\s*$)|(^\\s*IP-\\d*-\\d*-[a-zA-Z0-9]{8}\\s*$)/;\n/* eslint-enable max-len */\n\nexport class I360Validators {\n static integer = required => {\n return ({value}) => {\n if (!value && value !== 0) {\n return required ? {required: {what: 'integer'} } : null;\n }\n return integerRegex.test(value) ? null : {integer: {}};\n };\n }\n\n static float = required => {\n return ({value}) => {\n if (!value || value === '0') {\n return required ? {required: {what: 'integer'} } : null;\n }\n return floatRegex.test(value) ? null : {integer: {}};\n };\n }\n\n static floatPerforation = ({value}) => {\n return floatRegex.test(value) || value === -1 ? null : {integer: {}};\n };\n\n static ipWithCIDR = required => {\n return ({value}) => {\n if (!value) {\n return required ? {required: {what: 'ip'}} : null;\n }\n return ipv6RegexArray.some(regex => regex.test(value))\n ? null\n : {ipWithCIDR: {}};\n };\n }\n\n static pathToFile = ({value}) => {\n return /\\u0000/.test(value) ? {pathToFile: {}} : null;\n }\n\n static absolutePath = ({value}) => {\n return /^\\//.test(value) ? null : {absolutePath: {}};\n }\n\n static listOfAbsolutePaths = ({ value }: { value: string[] }) => {\n if (!Array.isArray(value)) return null;\n\n const valid = value.every(\n (path) => I360Validators.absolutePath({ value: path }) === null,\n );\n\n return valid ? null : { absolutePath: {} };\n }\n\n static partOfIP = ({value}) => {\n return !value || /^[0-9a-fA-F.:\\/]+$/.test(value) ? null : {partOfIP: {}};\n }\n\n static commaSeparatedDomains = ({value}) => {\n if (!value) return null;\n const check = i => isFQDN(i.trim());\n return value.every(item => {\n return item.includes(',') ? item.split(',').every(i => check(i)) : check(item);\n }) ? null : {domains: {}};\n }\n\n static listOfIPWithCIDR = ({value}) => {\n if (!value) return null;\n const ipWithCIDRValidator = I360Validators.ipWithCIDR(false);\n const anyFails = value.split(',').reduce((res, ip) => ipWithCIDRValidator({value: ip.trim()}), true);\n return anyFails ? {listOfIP: {}} : null;\n }\n\n static email = ({value}) => {\n return !value || isEmail(value) ? null : {email: {}};\n }\n\n static emails = ({ value }: { value: string[] }) => {\n if (!Array.isArray(value)) return null;\n\n const valid = value.every(\n (email) => I360Validators.email({ value: email }) === null,\n );\n\n return valid ? null : { emails: {} };\n }\n\n static emailsWithDefault = ({ value }: { value: string[] }) => {\n if (!Array.isArray(value)) return null;\n\n const valid = value.every(\n (email) => {\n if (email === DEFAULT_EMAIL) return true;\n\n return I360Validators.email({ value: email }) === null;\n },\n );\n\n return valid ? null : { emails: {} };\n }\n\n static required = what => {\n return ({value}) => {\n if (Array.isArray(value)) {\n if (value.length > 0) {\n return null;\n }\n } else if (value || Number.isFinite(value)) {\n return null;\n }\n return {required: {what}};\n };\n }\n\n static fileSize = (size: number) => {\n return ({value}) => {\n if (!value || Array.isArray(value) && !value.length) {\n return null;\n }\n\n let sizeExceeded: string[] = [];\n for (let file of (value as File[])) {\n if (file.size > size) {\n sizeExceeded.push(file.name);\n }\n }\n if (sizeExceeded.length) {\n return {fileSize: {\n files: sizeExceeded.join(', '),\n count: sizeExceeded.length,\n maxSize: String(Math.round(size / (1024 * 1024))),\n }};\n }\n return null;\n };\n }\n\n static maxFiles = (size: number) => {\n return ({value}) => {\n if (value && value.length > size) {\n return {maxFiles: {size}};\n }\n return null;\n };\n }\n\n static listOfServerId({value}: {value: string[]}) {\n if (value.length === 0) {\n return {serverId: {}};\n }\n const results = value.map(v => serverIdRegex.test(v));\n if (results.every(v => v)) {\n return null;\n } else {\n const invalid = value.filter((id, i) => !results[i]);\n if (value.length === 1) {\n return {serverId: {}};\n }\n return {\n listOfServerId: {\n ids: invalid,\n },\n };\n }\n }\n static listPortOrRange = () => {\n return ({value}: {value}) => {\n const invalid = value.filter(val => {\n const ports = val.split(portRegex);\n const notInRange = (port) => {\n return !integerRegex.test(port) || Number(port) < 1 || Number(port) > 65_535;\n };\n return !ports.length || notInRange(ports[1]) ||\n (ports[3] !== undefined && notInRange(ports[3]));\n });\n if (invalid.length) {\n return {\n listOfIntegers: {\n invalid,\n },\n };\n } else {\n return null;\n }\n };\n }\n\n static listOfIntegers = (min: number, max: number) => {\n return ({value}: {value}) => {\n const invalid = value.filter(val => {\n return !integerRegex.test(val) || Number(val) < min || Number(val) > max;\n });\n if (invalid.length) {\n return {\n listOfIntegers: {\n invalid,\n },\n };\n } else {\n return null;\n }\n };\n }\n}\n","import { I360Validators } from '../validator/validators';\nimport { I360FormBuilder } from 'app/utils/validator/form-builder';\n\nexport enum DefaultAction {\n notify = 'notify',\n cleanup = 'cleanup',\n}\n\nexport const getAdminEnduserMalwareCommonConfig = (formBuilder: I360FormBuilder) => {\n return {\n try_restore_from_backup_first: formBuilder.control(false),\n default_action: formBuilder.control<DefaultAction | null>({\n value: null,\n allowedValues: [{\n value: DefaultAction.notify,\n title: 'settings.malware.general.defaultAction.options.notify',\n removed: false,\n }, {\n value: DefaultAction.cleanup,\n title: 'settings.malware.general.defaultAction.options.cleanup',\n removed: false,\n }],\n }, I360Validators.required('default_action')),\n };\n};\n","import { AgentResponse, AgentResponseData, DataFrom, RequestParams } from './misc';\n\nexport enum RuleSet {\n FULL = 'FULL',\n MINIMAL = 'MINIMAL',\n}\n\nexport type I360Conflicts = {\n [key: string]: boolean,\n};\n\nexport enum ScheduleInterval {\n none = 'none',\n day = 'day',\n week = 'week',\n month = 'month',\n}\n\nexport enum PortBlockingMode {\n allow = 'ALLOW',\n deny = 'DENY',\n}\n\nexport class SettingsAPI {\n\n static conflicts = () => new RequestParams<AgentResponseData<I360Conflicts>>(['3rdparty', 'conflicts'])\n\n static show() {\n return new RequestParams<DataFrom<ConfigAgentResponse>>(['config', 'show']);\n }\n\n static save(params: Object) {\n return new RequestParams<DataFrom<ConfigAgentResponse>>(['config', 'patch'], {\n data: params,\n });\n }\n}\n\nexport type I360ConfigDataItems = {\n [S: string]: {\n [K: string]: any;\n };\n};\n\nexport type ConfigAgentResponse = AgentResponse<AgentResponseData<I360ConfigDataItems>>;\n\n","import { Mode } from '../proactive-defense';\nimport { DEFAULT_DATA } from './misc';\nimport { AdminConfigType } from '../../src/app/utils/config/admin-config';\nimport { UserConfigType } from '../../src/app/utils/config/user-config';\nimport { DefaultAction } from '../../src/app/utils/config/malware-config';\nimport { PortBlockingMode, RuleSet, ScheduleInterval } from '../settings';\nimport { NotificationRulesType } from '../notification-settings';\n\nconst permissions = {\n PERMISSIONS: {\n support_form: true,\n user_ignore_list: true,\n upgrade_button: true,\n allow_malware_scan: false,\n advisor: false,\n user_override_proactive_defense: false,\n user_override_malware_actions: false,\n allow_local_malware_ignore_list_management: true,\n },\n};\n\nconst userConfig: UserConfigType = {\n CONTROL_PANEL: {\n generic_user_notifications: true,\n },\n BACKUP_RESTORE: {\n max_days_in_backup: 10,\n },\n MALWARE_CLEANUP: {\n keep_original_files_days: 14,\n trim_file_instead_of_removal: false,\n },\n MALWARE_SCANNING: {\n try_restore_from_backup_first: true,\n default_action: DefaultAction.notify,\n },\n PROACTIVE_DEFENCE: {\n mode: Mode.disabled,\n blamer: false,\n },\n ERROR_REPORTING: {\n enable: false,\n },\n ...permissions,\n};\n\nconst notificationRules: NotificationRulesType = {\n REALTIME_MALWARE_FOUND: {\n ADMIN: {\n admin_emails: ['admin@gmail.com', 'default'],\n enabled: true,\n period: 60,\n },\n SCRIPT: {\n enabled: true,\n scripts: ['/qwe'],\n period: 1,\n\n },\n },\n USER_SCAN_STARTED: {\n SCRIPT: {\n enabled: true,\n scripts: ['/qwe'],\n\n },\n },\n CUSTOM_SCAN_STARTED: {\n SCRIPT: {\n enabled: true,\n scripts: ['/qwe'],\n\n },\n },\n USER_SCAN_FINISHED: {\n SCRIPT: {\n enabled: true,\n scripts: ['/qwe'],\n\n },\n },\n CUSTOM_SCAN_FINISHED: {\n SCRIPT: {\n enabled: true,\n scripts: ['/qwe'],\n\n },\n },\n CUSTOM_SCAN_MALWARE_FOUND: {\n ADMIN: {\n admin_emails: ['admin@gmail.com', 'default'],\n enabled: true,\n },\n SCRIPT: {\n enabled: true,\n scripts: ['/qwe'],\n\n },\n },\n USER_SCAN_MALWARE_FOUND: {\n ADMIN: {\n admin_emails: ['admin@gmail.com', 'default'],\n enabled: true,\n },\n SCRIPT: {\n enabled: true,\n scripts: ['/qwe'],\n\n },\n },\n SCRIPT_BLOCKED: {\n ADMIN: {\n admin_emails: ['admin@gmail.com', 'default'],\n enabled: true,\n period: 60,\n },\n SCRIPT: {\n enabled: true,\n period: 1,\n scripts: ['/qwe'],\n },\n },\n};\n\nconst common = {\n DOS: {\n enabled: true,\n default_limit: 250,\n interval: 30,\n },\n AUTO_WHITELIST: {\n timeout: 24,\n },\n INCIDENT_LOGGING: {\n limit: 100000,\n num_days: 100,\n min_log_level: 4,\n ui_autorefresh_timeout: 5,\n },\n MALWARE_CLEANUP: {\n trim_file_instead_of_removal: true,\n keep_original_files_days: 14,\n },\n MALWARE_SCANNING: {\n rapid_scan: false,\n enable_scan_inotify: true,\n optimize_realtime_scan: true,\n enable_scan_modsec: true,\n enable_scan_pure_ftpd: false,\n default_action: DefaultAction.cleanup,\n try_restore_from_backup_first: true,\n notify_on_detect: false,\n sends_file_for_analysis: true,\n detect_elf: false,\n hyperscan: false,\n enable_scan_cpanel: true,\n crontabs: false,\n },\n MALWARE_SCAN_INTENSITY: {\n cpu: 4,\n io: 2,\n },\n PROACTIVE_DEFENCE: {\n mode: Mode.disabled,\n blamer: false,\n php_immunity: false,\n },\n MALWARE_SCAN_SCHEDULE: {\n interval: ScheduleInterval.none,\n day_of_month: 1,\n day_of_week: 1,\n hour: 1,\n },\n BACKUP_RESTORE: {\n max_days_in_backup: 90,\n },\n MALWARE_DATABASE_SCAN: {\n enable: true,\n },\n ERROR_REPORTING: {\n enable: false,\n },\n SEND_ADDITIONAL_DATA: {\n enable: false,\n },\n WEBSHIELD: {\n enable: false,\n known_proxies_support: false,\n splash_screen: true,\n panel_protection: true,\n },\n OSSEC: {\n active_response: false,\n },\n ADMIN_CONTACTS: {\n emails: ['admin@panel.com'],\n },\n CSF_INTEGRATION: {\n catch_lfd_events: false,\n },\n PAM: {\n enable: true,\n exim_dovecot_protection: true,\n ftp_protection: false,\n },\n KERNELCARE: {\n edf: true,\n },\n MOD_SEC: {\n app_specific_ruleset: false,\n ruleset: RuleSet.FULL,\n cms_account_compromise_prevention: false,\n },\n SMTP_BLOCKING: {\n enable: false,\n ports: ['1', '2'],\n allow_users: ['u1', 'u2'],\n allow_groups: ['g1', 'g2'],\n allow_local: false,\n redirect: false,\n },\n FIREWALL: {\n port_blocking_mode: PortBlockingMode.allow,\n TCP_IN_IPv4: [],\n TCP_OUT_IPv4: [],\n UDP_IN_IPv4: [],\n UDP_OUT_IPv4: [],\n },\n MY_IMUNIFY: {\n enable: false,\n purchase_page_url: '',\n },\n WORDPRESS: {\n security_plugin_enabled: false,\n },\n ...permissions,\n};\n\nconst adminConfig: AdminConfigType = {\n ...common,\n ADMIN_CONTACTS: {\n emails: ['admin@panel.com'],\n },\n};\n\nconst noAdminContactsAdminConfig: AdminConfigType = {\n ...common,\n ADMIN_CONTACTS: {\n emails: [],\n },\n};\n\nexport const responses = {\n malwareHasConflicts: {\n data: {\n ...DEFAULT_DATA,\n items: {\n csf_dos_protector: true,\n scan_inotify_control_panel: true,\n scan_modsec: true,\n scan_pure_ftpd: true,\n webshield_ssl_cache_not_configured: true,\n },\n },\n },\n SMTPBlokingProblems: {\n data: {\n ...DEFAULT_DATA,\n items: {\n smtp_blocking_kernel_support: true,\n smtp_blocking_ip6table_nat: true,\n pam_ftp_not_available: true,\n },\n },\n },\n SMTPWarningProblems: {\n data: {\n ...DEFAULT_DATA,\n items: {\n smtp_blocking_ip6table_nat: true,\n },\n },\n },\n LVEOrcGroupsWarningProblems: {\n data: {\n ...DEFAULT_DATA,\n items: {\n scan_intensity_io_cfq: true,\n },\n },\n },\n malwareHasNoConflicts: {\n data: {\n ...DEFAULT_DATA,\n items: {},\n },\n },\n // not to mix mocks for unit and e2e tests\n showUI: {\n data: {\n ...DEFAULT_DATA,\n items: {\n ...adminConfig,\n PERMISSIONS: {\n ...permissions,\n advisor: true,\n },\n },\n },\n },\n show: {\n data: {\n ...DEFAULT_DATA,\n items: adminConfig,\n },\n },\n showWithNotify: {\n data: {\n ...DEFAULT_DATA,\n items: {\n ...adminConfig,\n MALWARE_SCANNING: {\n enable: true,\n ports: ['4', '5'],\n allow_users: ['user1', 'user2'],\n allow_groups: ['group1', 'group2'],\n allow_local: true,\n redirect: true,\n },\n },\n },\n },\n enableSmtp: {\n data: {\n ...DEFAULT_DATA,\n items: {\n ...adminConfig,\n SMTP_BLOCKING: {\n enable: true,\n ports: ['4', '5'],\n allow_users: ['user1', 'user2'],\n allow_groups: ['group1', 'group2'],\n allow_local: true,\n redirect: true,\n },\n },\n },\n },\n showRestoreFromBackupFirstTrue: {\n data: {\n ...DEFAULT_DATA,\n items: {\n ...adminConfig,\n MALWARE_SCANNING: {\n try_restore_from_backup_first: true,\n default_action: DefaultAction.notify,\n },\n },\n },\n },\n notification: {\n data: {\n ...DEFAULT_DATA,\n items: {\n admin: {\n default_emails: ['admin@panel.com'],\n notify_from_email: 'admin@panel.com',\n locale: 'en',\n },\n rules: notificationRules,\n },\n },\n },\n noLocaleNotification: {\n data: {\n ...DEFAULT_DATA,\n items: {\n admin: {\n default_emails: ['admin@panel.com'],\n notify_from_email: 'admin@panel.com',\n },\n rules: notificationRules,\n },\n },\n },\n notificationForAv: {\n data: {\n ...DEFAULT_DATA,\n items: {\n rules: {\n USER_SCAN_STARTED: {\n SCRIPT: {\n enabled: true,\n scripts: ['/qwe'],\n },\n },\n CUSTOM_SCAN_STARTED: {\n SCRIPT: {\n enabled: true,\n scripts: ['/qwe'],\n },\n },\n USER_SCAN_FINISHED: {\n SCRIPT: {\n enabled: true,\n scripts: ['/qwe'],\n },\n },\n CUSTOM_SCAN_FINISHED: {\n SCRIPT: {\n enabled: true,\n scripts: ['/qwe'],\n },\n },\n CUSTOM_SCAN_MALWARE_FOUND: {\n SCRIPT: {\n enabled: true,\n scripts: ['/qwe'],\n },\n },\n USER_SCAN_MALWARE_FOUND: {\n SCRIPT: {\n enabled: true,\n scripts: ['/qwe'],\n },\n },\n },\n },\n },\n },\n showNoAdminContacts: {\n data: {\n ...DEFAULT_DATA,\n items: noAdminContactsAdminConfig,\n },\n },\n webshieldEnabledAndMinimalModSec: {\n data: {\n ...DEFAULT_DATA,\n items: {\n ...adminConfig,\n WEBSHIELD: {\n enable: true,\n known_proxies_support: false,\n splash_screen: true,\n panel_protection: true,\n },\n MOD_SEC: {\n ruleset: RuleSet.MINIMAL,\n },\n },\n },\n },\n\n minimalModSec: {\n data: {\n ...DEFAULT_DATA,\n items: {\n ...adminConfig,\n MOD_SEC: {\n ruleset: RuleSet.MINIMAL,\n },\n },\n },\n },\n rapidScanEnabled: {\n data: {\n ...DEFAULT_DATA,\n items: {\n ...adminConfig,\n MALWARE_SCANNING: {\n rapid_scan: true,\n },\n },\n },\n },\n\n webshieldEnabled: {\n data: {\n ...DEFAULT_DATA,\n items: {\n ...adminConfig,\n WEBSHIELD: {\n enable: true,\n known_proxies_support: false,\n splash_screen: true,\n panel_protection: true,\n },\n },\n },\n },\n\n firewallBlockingModeDeny: {\n data: {\n ...DEFAULT_DATA,\n items: {\n ...adminConfig,\n FIREWALL: {\n port_blocking_mode: PortBlockingMode.deny,\n },\n },\n },\n },\n\n firewallBlockingModeDenywithPorts: {\n data: {\n ...DEFAULT_DATA,\n items: {\n ...adminConfig,\n FIREWALL: {\n port_blocking_mode: PortBlockingMode.deny,\n TCP_IN_IPv4: [ '1234-43', '12313-123' ],\n TCP_OUT_IPv4: [ '1234-43', '12313-123' ],\n UDP_IN_IPv4: [ '1234-43', '12313-123' ],\n UDP_OUT_IPv4: [ '1234-43', '12313-123' ],\n },\n },\n },\n },\n\n userside: {\n data: {\n ...DEFAULT_DATA,\n items: userConfig,\n },\n },\n\n av: {\n data: {\n ...DEFAULT_DATA,\n items: {\n ERROR_REPORTING: {\n enable: true,\n },\n MALWARE_SCAN_SCHEDULE: {\n interval: ScheduleInterval.none,\n },\n MALWARE_CLEANUP: {\n trim_file_instead_of_removal: true,\n keep_original_files_days: 14,\n },\n MALWARE_SCANNING: {\n rapid_scan: false,\n sends_file_for_analysis: true,\n },\n MALWARE_SCAN_INTENSITY: {\n cpu: 7,\n io: 7,\n },\n },\n },\n },\n\n};\n","import { MalwareScanType } from '../malware';\nimport { MalwareCleanStatus, MalwareScanStatus } from '../user-list';\nimport { DEFAULT_DATA } from './misc';\n\nfunction stubItem (scan: MalwareScanStatus|null, clean: MalwareCleanStatus|null, infected: number,\n infectedDB: number) {\n return {scan, clean, infected, infectedDB};\n}\n\nexport let statuses = [\n stubItem(null, null, 0, 1),\n stubItem( MalwareScanStatus.running, null, 0, 3),\n stubItem( MalwareScanStatus.queued, null, 0, 2),\n stubItem( MalwareScanStatus.stopped, null, 0, 0),\n stubItem( MalwareScanStatus.stopped, null, 10, 2),\n\n stubItem( MalwareScanStatus.running, MalwareCleanStatus.stopped, 0, 0),\n stubItem( MalwareScanStatus.running, MalwareCleanStatus.stopped, 77, 44),\n stubItem( MalwareScanStatus.queued, MalwareCleanStatus.stopped, 0, 0),\n stubItem( MalwareScanStatus.queued, MalwareCleanStatus.stopped, 88, 68),\n stubItem( MalwareScanStatus.stopped, MalwareCleanStatus.stopped, 0, 0),\n stubItem( MalwareScanStatus.stopped, MalwareCleanStatus.stopped, 0, 11),\n stubItem( MalwareScanStatus.stopped, MalwareCleanStatus.stopped, 99, 0),\n\n stubItem( MalwareScanStatus.stopped, MalwareCleanStatus.running, 20, 0),\n];\n\nconst userListItem = (status, index) => {\n return {\n home: `/home/user${index}`,\n user: `user${index}`,\n infected: status.infected,\n infected_db: status.infectedDB,\n scan_id: index.toString(),\n scan_status: status.scan,\n scan_date: index > 1 ? 1525759321 : null,\n scan_type: MalwareScanType.ondemand,\n cleanup_status: status.clean,\n analyst_status: null,\n }\n};\n\nexport const responses = {\n adminside: {\n data: {\n ...DEFAULT_DATA,\n malicious_count: 100,\n max_count: statuses.length,\n items: [\n ...Array.from(statuses, userListItem),\n ],\n },\n },\n one: {\n data: {\n ...DEFAULT_DATA,\n malicious_count: 100,\n max_count: statuses.length,\n items: [userListItem(statuses[11], 1)],\n },\n }\n};\n","import {\n AgentResponse,\n DataFrom,\n ListResponseData,\n RequestParams, ResponseDataExceptItems,\n} from './misc';\n\nexport enum VulnerabilitiesFileStatus {\n patched = 'patched',\n vulnerable = 'vulnerable',\n vulnerable_patch_reverted = 'vulnerable_patch_reverted',\n patch_in_progress = 'patch_in_progress',\n revert_in_progress = 'revert_in_progress',\n}\n\n\ninterface Vulnerability {\n cve_id: string;\n vulnerability_type: string; // e.g., \"XSS\"\n vulnerability_description: string;\n}\n\ninterface VulnerabilitiesItemInBackend {\n id: number;\n app_name: string; // e.g., \"WordPress\", \"WordPress plugin 'FormsPRO++ ...'\"\n username: string;\n file_path: string;\n subscribed?: boolean;\n imunify_patch_user_id?: string;\n purchase_url?: string;\n status: VulnerabilitiesFileStatus;\n vulnerabilities: Vulnerability[];\n}\n\nexport class VulnerabilitiesApi {\n\n static list = (params = {}) =>\n new RequestParams<DataFrom<VulnerabilitiesListAgentResponse>>\n (['vulnerabilities', 'file', 'list'], params)\n\n static applyPatch(\n {items}: {items: string[]},\n ) {\n return new RequestParams<ResponseDataExceptItems>(\n ['vulnerabilities', 'file', 'patch'], {\n paths: items,\n });\n }\n\n static revertPatch(\n {items}: {items: string[]},\n ) {\n return new RequestParams<ResponseDataExceptItems>(\n ['vulnerabilities', 'file', 'revert'], {\n paths: items,\n });\n }\n}\n\nexport class VulnerabilitiesItem {\n public canExpand = true;\n public appName: string;\n public id: number;\n public userName: string;\n public filePath: string;\n public imunify_patch_user_id: string;\n public subscribed: boolean;\n public purchaseUrl: string | null;\n public status: VulnerabilitiesFileStatus;\n public vulnerabilities: Vulnerability[];\n constructor(data: VulnerabilitiesItemInBackend) {\n this.id = data.id;\n this.appName = data.app_name;\n this.userName = data.username;\n this.status = data.status;\n if (data?.imunify_patch_user_id) {\n this.imunify_patch_user_id = data.imunify_patch_user_id;\n }\n if (data?.subscribed) {\n this.subscribed = data.subscribed;\n }\n this.purchaseUrl = data?.purchase_url ?? null;\n this.filePath = data.file_path;\n this.vulnerabilities = data.vulnerabilities;\n }\n}\n\n\ntype VulnerabilitiesListAgentResponse = AgentResponse<ListResponseData<VulnerabilitiesItemInBackend>>;\n","import { VulnerabilitiesFileStatus } from '../vulnerabilities';\nimport { DEFAULT_DATA } from './misc';\n\n\nconst VulnerabilitiesList = (i: number) => ({\n app_name: \"asssssssssssssssWordPress plugin 'FormsPRO++'\"+ i,\n id: i,\n username: \"john_doe\"+ i,\n subscribe: !!(i % 2),\n file_path: \"/var/www/html/wp-content/plugins/formspro/formspro.php\"+ i,\n status: i % 3 ? VulnerabilitiesFileStatus.vulnerable : VulnerabilitiesFileStatus.patched,\n ...(i % 2 ? {purchase_url : 'https://www.cloudlinux.com/purchase-imunify-patch?iaid=<iaid>&imunify_patch_user_id=<imunify_patch_user_id>&server_ip=12.23.34.45&username=johndoe&websites=example.com,anotherexample.com'} : {}),\n vulnerabilities: [\n ...Array(...Array(5)).map((_, idx) => listOfRelevantVulnerabilities(idx)),\n ]\n});\n\nconst listOfRelevantVulnerabilities = (i: number) => ({\n cve_id: \"CVE-2024-12345\" + i,\n vulnerability_type: \"XSS\" + i,\n vulnerability_description: \"Cross-site scripting vulnerability in FormsPRO plugin allows attackers to inject malicious scripts.\" + i,\n})\n\n\nconst mockVulnerableFile = [\n ...Array(...Array(15)).map((_, idx) => VulnerabilitiesList(idx)),\n];\n\nexport const responses = {\n list: {\n data: {\n ...DEFAULT_DATA,\n max_count: 20,\n vulnerable_count: 100,\n items: mockVulnerableFile\n }\n },\n listWithPurchaseUrl: {\n data: {\n ...DEFAULT_DATA,\n max_count: 20,\n vulnerable_count: 100,\n items: [\n {\n app_name: \"WordPress plugin 'FormsPRO++'\",\n id: 112,\n username: \"john_doe\",\n file_path: \"/var/www/html/wp-content/plugins/formspro/formspro.php\",\n status: VulnerabilitiesFileStatus.vulnerable,\n purchase_url : 'https://www.cloudlinux.com/purchase-imunify-patch?iaid=<iaid>&imunify_patch_user_id=<imunify_patch_user_id>&server_ip=12.23.34.45&username=johndoe&websites=example.com,anotherexample.com',\n vulnerabilities: [\n ...Array(...Array(5)).map((_, idx) => listOfRelevantVulnerabilities(idx)),\n ]\n }\n ]\n }\n },\n listWithoutPurchaseUrl: {\n data: {\n ...DEFAULT_DATA,\n max_count: 20,\n vulnerable_count: 100,\n items: [\n {\n app_name: \"WordPress plugin 'FormsPRO++'\",\n id: 112,\n username: \"john_doe\",\n file_path: \"/var/www/html/wp-content/plugins/formspro/formspro.php\",\n status: VulnerabilitiesFileStatus.vulnerable,\n vulnerabilities: [\n ...Array(...Array(5)).map((_, idx) => listOfRelevantVulnerabilities(idx)),\n ]\n }\n ]\n }\n }\n}\n","import { Observable, timer, map } from 'rxjs';\nimport { ExtendedRequestParams, RequestParams, WindowInterface } from '@imunify360-api/misc';\nimport { testMode } from 'app/services/misc';\nimport { defaultMockList, Mock } from 'app/services/mock';\nimport { requestCommandIE } from '@imunify360-api/emails';\n\ndeclare var window: WindowInterface;\n\nexport class MockProvider {\n\n static getMock<R, T>(requestParams: RequestParams<R>,\n sourceParams: T,\n className: string): Observable<R> | null {\n // DO NOT REPLACE THIS WITH if(!TEST) { return null; }\n // positive condition is needed for tree-shaking of `Mock`\n if (TEST && testMode(className) && requestParams.method !== void 0) {\n const method = requestParams.method.join(' ');\n const hasMock: boolean = !!window.i360Test.mock[method];\n\n const mock = hasMock ? window.i360Test.mock[method]\n : MockProvider.getDefaultMock(requestParams, sourceParams);\n\n const result = {\n ...{result: 'success', messages: []},\n ...mock,\n ...{\n data: {...Mock.defaultData, ...mock.data},\n },\n };\n\n console.log(`XHR request:`, requestParams);\n console.log(`XHR ${hasMock ? '' : 'default '}mock: %c${method}`, `color:green`, result);\n\n // simulating asynchronous run\n return timer(0).pipe(\n map(() => result),\n );\n }\n\n return null;\n }\n\n static getDefaultMock<R, T>(\n requestParams: RequestParams<R> & ExtendedRequestParams<R>,\n sourceParams: T,\n ): { data: any } | null {\n if (!TEST) {\n return null;\n }\n\n for (let item of defaultMockList()) {\n try {\n const source = item.api(sourceParams);\n const notVoid = source.method !== void 0 && requestParams.method !== void 0;\n const equal = source.method.join(' ') === requestParams.method.join(' ');\n if (notVoid && equal) {\n if (requestParams?.command === requestCommandIE &&\n requestParams.params?.request_method !== source?.params?.request_method) {\n continue;\n }\n return item.response;\n }\n } catch {\n }\n }\n\n return {data: {}};\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AppState, Notification } from 'app/core/app.service';\nimport { AuthState } from 'app/services/auth-state';\nimport { TranslateParams, TranslateService } from 'app/utils/translate/translate.service';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotificationsService {\n notifications: Notification[] = [];\n\n constructor(\n private appState: AppState,\n private authState: AuthState,\n private translate: TranslateService,\n ) {\n // remove all notifications on role change\n this.authState.role.subscribe(() => this.appState.notifications.next([]));\n }\n\n success(content: string, title: string|null = null, params?: TranslateParams) {\n return this.add(title || `notifications.success`, content, 'success', params);\n }\n\n error(content: string, title: string|null = null, params?: TranslateParams) {\n return this.add(title || `notifications.error`, content, 'error', params);\n }\n\n warning(content: string, title: string|null = null, params?: TranslateParams) {\n return this.error(content, title || `notifications.warning`, params);\n }\n\n remove(item: Notification): void {\n this.appState.notifications.next(\n this.appState.notifications.value.filter(i => !this.equal(i, item)),\n );\n }\n\n private async add(title: string,\n content: string,\n type: string,\n params: TranslateParams|undefined): Promise<void> {\n const item = new Notification({\n title: await this.translate.t(title, params),\n content: await this.translate.t(content, params),\n type,\n });\n\n for (let i of this.appState.notifications.value) {\n if (this.equal(i, item)) {\n i.counter++;\n i.ticks = 0;\n return;\n }\n }\n\n item.counter = 1;\n this.appState.notifications.next([...this.appState.notifications.value, item])\n }\n\n private equal(a: Notification, b: Notification) {\n return a.type === b.type\n && a.title === b.title\n && a.content === b.content;\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { NotificationsService } from 'app/services/notifications';\nimport { throwError as _throw } from 'rxjs';\n\n/**\n * @returns {string} JSON-like string with a lot of escaping when converting circular values,\n * but it is short\n */\nfunction toString(this, deepness = 0) {\n return JSON.stringify(this, function replacer(key, value) {\n try {\n JSON.stringify(value);\n return value;\n } catch (e) {\n if (deepness >= 3) {\n return 'Circular';\n }\n let res = {};\n Object.keys(value).forEach(key => {\n res[key] = toString.call(value[key], deepness + 1);\n });\n return res;\n }\n });\n}\n\nfunction addToString(error) {\n Object.defineProperty(error, 'toString', {\n value: toString,\n enumerable: false,\n });\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ErrorHandler {\n\n constructor(\n private injector: Injector,\n private notifications: NotificationsService,\n ) {}\n\n // for mock in test\n public _throw(error) {\n addToString(error);\n return _throw(error);\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { AgentResponse, Result } from '@imunify360-api/misc';\nimport { NotificationsService } from 'app/services/notifications';\nimport { UntranslatableString } from 'app/utils/translate/translate.service';\nimport { Type } from '@angular/core';\nimport { LicenseState } from 'app/services/license-state';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class XhrNotificator {\n\n constructor(\n private injector: Injector,\n private notifications: NotificationsService,\n ) {}\n\n showResponseErrors(response: AgentResponse | HttpErrorResponse): void {\n const messages = (response as HttpErrorResponse)?.error?.messages || (response as AgentResponse)?.messages || [];\n\n if (typeof messages === 'string') {\n this.notifications.error(UntranslatableString.for(messages));\n return;\n }\n\n if (messages.length) {\n let license = {};\n try {\n license = this.injector\n .get<LicenseState>(LicenseState as Type<LicenseState>).license.value;\n } catch (e) {\n // license service is not available in login module\n }\n for (let msg of messages) {\n const result = (response as HttpErrorResponse)?.error?.result || (response as AgentResponse)?.result || 'error';\n this.notifications.error(msg, `notifications.${result}`, license);\n }\n return;\n }\n\n if ('message' in response) {\n const errorText = response.error?.text || response.error;\n let content = (new DOMParser()).parseFromString(errorText, 'text/html')['body']\n .innerText;\n if (content === '[object Object]') {\n console.log(response);\n content = 'System error';\n }\n this.notifications.error(UntranslatableString.for(content.trim()),\n `notifications.${Result.ERROR}`);\n }\n }\n}\n","import { of, timer, Observable, catchError, map, retryWhen, scan, switchMap, firstValueFrom } from 'rxjs';\nimport { EventEmitter, Injectable } from '@angular/core';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport {\n AgentResponse, ApiMethod, ExtendedRequestParams, ListResponseData, NormalizedAgentResponse,\n Result,\n} from '@imunify360-api/misc';\nimport { XhrReporterService } from 'app/services/xhr-reporter';\nimport { XhrNotificator } from 'app/utils/xhr/notificator';\nimport { ErrorHandler } from 'app/utils/xhr/error-handler';\nimport { getCaller } from 'app/utils/helper';\nimport { MockProvider } from 'app/utils/xhr/mock-provider';\n\n\ndeclare let ENV: string;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class XHR {\n loaded = new EventEmitter();\n\n constructor(\n public http: HttpClient,\n public errorHandler: ErrorHandler,\n public xhrNotificator: XhrNotificator,\n ) {}\n\n post<R = any>(\n params: ExtendedRequestParams<R> | FormData,\n mock: () => Observable<R> | null = () => null,\n notifyOnWarning = true,\n notifyOnError = true,\n ): Observable<NormalizedAgentResponse<R>> {\n let startDate: number = 0;\n let post = of(null).pipe(\n switchMap(() => {\n startDate = Date.now();\n // fast attempt to call interceptors when testMode=true\n // can be broken with async interceptors and parallel requests\n // but for now all interceptors are sync, so request should not be called\n // when mock is applied\n const mocked = mock();\n if (mocked) {\n const prevHandle = this.http['handler'].backend.handle;\n this.http['handler'].backend.handle = () => {\n this.http['handler'].backend.handle = prevHandle;\n return mocked.pipe(\n switchMap(res => {\n return of(new HttpResponse({\n body: res,\n }));\n }),\n );\n };\n }\n return this.http.post('', params);\n }),\n );\n if (ENV === 'development') {\n post = post.pipe(retryWhen(error => {\n return error.pipe(\n scan((acc, res: any | null) => {\n acc.res = res;\n acc.acc += 1;\n return acc;\n }, {acc: 0, res: null}),\n switchMap((acc: any) => {\n if (acc.acc < 3) {\n return timer(2000);\n } else {\n throw acc.res;\n }\n }),\n );\n }));\n }\n\n return post.pipe(\n catchError(async err => {\n if (notifyOnError) {\n this.xhrNotificator.showResponseErrors(err);\n }\n throw err;\n }),\n map((rawResponse: AgentResponse<R>) => {\n const messages = rawResponse.messages;\n const response: ExtendedAgentResponse<R> = {\n data: rawResponse.data,\n result: rawResponse.result,\n messages: messages\n ? typeof messages === 'string' ? [messages] : messages\n : [],\n };\n\n if (TEST) {\n XhrReporterService.report(params, response, startDate);\n }\n this.loaded.emit();\n switch (response.result) {\n case Result.SUCCESS:\n return response;\n case Result.WARNING:\n response.noSentry = true;\n if (notifyOnWarning) {\n this.xhrNotificator.showResponseErrors(response);\n }\n throw response;\n case Result.ERROR:\n response.noSentry = true;\n if (notifyOnError) {\n this.xhrNotificator.showResponseErrors(response);\n }\n throw response;\n default:\n // For success cli may not return result key\n return response;\n }\n }),\n catchError(error => {\n return this.errorHandler._throw(error);\n }),\n );\n }\n\n /**\n * Wraps API method to create a service method.\n */\n rx<T, R>(\n api: ApiMethod<T, R>,\n notifyOnWarningDefault: boolean = true,\n notifyOnErrorDefault: boolean = true,\n ) {\n const className = getCaller();\n return (\n params?: T,\n notifyOnWarning: boolean = notifyOnWarningDefault,\n notifyOnError: boolean = notifyOnErrorDefault,\n ) => {\n const requestParams = api(params);\n return this.post<R>(\n requestParams,\n () => MockProvider.getMock(requestParams, params, className),\n notifyOnWarning,\n notifyOnError,\n );\n };\n }\n\n /**\n * @deprecated Use rx instead\n */\n request<T, R>(\n api: ApiMethod<T, R>,\n notifyOnWarningDefault: boolean = true,\n notifyOnErrorDefault: boolean = true,\n ) {\n const className = getCaller();\n // NOTE: we cannot use \"...args\" instead of \"parameters\", because of this:\n // https://github.com/Microsoft/TypeScript/issues/5453\n // So, we won't be able to pass types unless we do smth like this:\n // https://github.com/Microsoft/TypeScript/blob/master/lib/lib.es2015.promise.d.ts#L41-L113\n return (\n params?: T,\n notifyOnWarning: boolean = notifyOnWarningDefault,\n notifyOnError: boolean = notifyOnErrorDefault,\n ) => {\n const requestParams = api(params);\n return firstValueFrom(this.post<R>(\n requestParams,\n () => MockProvider.getMock(requestParams, params, className),\n notifyOnWarning,\n notifyOnError,\n ), { defaultValue: {} as R });\n };\n }\n\n /**\n * converts items in AgentResponse from list of P to list of itemClass\n */\n wrap<E, P, R>(serviceMethod: (params: E) => Observable<AgentResponse<ListResponseData<P>>>,\n itemClass: {new(data: P): R}):\n (params: E) => Observable<AgentResponse<ListResponseData<R>>> {\n return (params: E) => {\n return serviceMethod(params).pipe(\n map(({data, result, messages}) => {\n data = data ?? { items: [] } as unknown;\n return {\n data: {\n items: data.items.map(item => new itemClass(item)),\n version: data.version,\n strategy: data.strategy,\n license: data.license,\n eula: data.eula,\n max_count: 'max_count' in data ? data.max_count : data.items.length,\n },\n result,\n messages,\n };\n })\n );\n };\n }\n}\n\nexport interface ExtendedAgentResponse<R> extends NormalizedAgentResponse<R> {\n noSentry?: boolean;\n}\n","import { Injectable } from '@angular/core';\nimport { XHR } from 'app/utils/xhr/xhr';\nimport { ReputationAPI, ReputationItem } from '@imunify360-api/reputation';\nimport { AgentResponse, ListResponseData } from '@imunify360-api/misc';\nimport { Observable, tap } from 'rxjs';\nimport { RequestsState } from 'app/services/requests-state';\n\n\n@Injectable()\nexport class ReputationService {\n _infectedDomains = this.xhr.rx(ReputationAPI.infectedDomains);\n infectedDomains = this.xhr.wrap(this._infectedDomains, ReputationItem);\n infectedDomainsCount: number;\n\n constructor(\n public xhr: XHR,\n private requestsState: RequestsState,\n ) {}\n\n load = (params = {}): Observable<AgentResponse<ListResponseData<ReputationItem>>> => {\n return this.infectedDomains(params).pipe(\n tap(result => result.data.items.sort((a, b) => a.username < b.username ? -1 : 1)),\n tap(res => this.requestsState.infectedDomainsCount.push.next(res.data.max_count || 0)),\n );\n }\n}\n","import { AgentResponse, AgentResponseData, DataFrom, RequestParams } from './misc';\n\n\nexport interface PackageVersions {\n 'imunify-ui': string | null;\n 'imunify-antivirus': string | null;\n 'imunify360-firewall': string | null;\n 'imunify-core': string | null;\n [key: string]: string | null;\n}\n\ntype GetPackageVersionsAgentResponse = AgentResponse<AgentResponseData<PackageVersions | null>>;\n\n\nexport class ImunifyPackageVersions {\n static getPackageVersion = () =>\n new RequestParams<DataFrom<GetPackageVersionsAgentResponse>>(['get-package-versions']);\n}\n","import {\n of,\n Subscription,\n BehaviorSubject,\n MonoTypeOperatorFunction,\n Observable,\n Subject,\n debounceTime,\n finalize,\n merge,\n skip,\n switchMap,\n take,\n tap,\n mergeWith,\n} from 'rxjs';\n\n/**\n * @param {number} ttl in seconds\n * @param additionalChanges - operator can take changes from this Observable but will never\n * force changes from it.\n */\nexport function cache<E>(ttl: number, additionalChanges: Observable<E> = new Subject):\n MonoTypeOperatorFunction<E> {\n let item: E;\n let expired = true;\n const subject = new BehaviorSubject<null>(null);\n let subscribed = false; // should subscribe to source only one time\n let pendingRequestExists = false; // should not subscribe to source if already subscribed\n if (isFinite(ttl)) {\n subject.pipe(\n skip(1), // should not start expiring on init (subject is BehaviourSubject)\n debounceTime(ttl * 1000), // our tests can not mock Date.now(), but can mock setTimeout\n // so cache expiration implemented this way\n ).subscribe(() => expired = true);\n }\n\n return function cacheOperatorFunction(source: Observable<E>): Observable<E> {\n const sourceForUpdate = source.pipe(\n finalize(() => { // we should mark ourselves as unsubscribed if main source completed\n // in case of using merge before finalize we will never be notified that main\n // source was completed during force subscription\n // It matters for cases when source completes without emitting anything.\n pendingRequestExists = false;\n subscribed = false;\n }),\n mergeWith(additionalChanges),\n tap(newItem => {\n item = newItem;\n expired = false;\n subject.next(null); // trigger emission of current item and start expiration time\n pendingRequestExists = false;\n }),\n );\n const updateItem = (): Observable<E> => {\n let justSubscribed = false; // prevents calling source multiple times in case of\n // synchronous source\n if (!subscribed) {\n pendingRequestExists = true;\n justSubscribed = true;\n subscribed = true;\n sourceForUpdate.subscribe();\n }\n // should not subscribe to source if already subscribed\n if (!pendingRequestExists && !justSubscribed) {\n pendingRequestExists = true;\n return sourceForUpdate.pipe(\n take(1),\n switchMap(() => new Subject<E>()),\n );\n } else {\n return new Subject<E>(); // new Subject because we need Observable that will never\n // emit value, but will be able to propagate completion\n }\n };\n return subject.pipe(\n // if cache expired return Observable that will never emit. Then, when new value\n // arrived, of Observable will be emitted and subscriber will unsubscribe from our\n // fake observable\n switchMap(() => expired ? updateItem() : of(item)),\n );\n };\n}\n\n// More explicit version of `cache` above.\n// TODO: if you are going to make changes in this code - cover it with tests first,\n// similar to the `cache` above.\nexport function cache2<E>(\n // General behavior is similar - cache the last emitted value for `ttl` seconds.\n ttl: number,\n // Emit&cache then new value on `push`, reset `ttl` timer too.\n push: Observable<any> = new Subject,\n // Force-resubscribe to the source (e.g. make a new request) when `refresh` emits.\n refresh: Observable<any> = new Subject,\n // Forget cached value on `reset`.\n reset: Observable<any> = new Subject,\n): MonoTypeOperatorFunction<E> {\n return function cacheOperatorFunction(request: Observable<E>): Observable<E> {\n const emptyCache = Symbol('Empty cache');\n let cachedValue: E|typeof emptyCache = emptyCache;\n let requestSubscription: Subscription|undefined = undefined;\n let refreshSubscription: Subscription|undefined = undefined;\n let resetSubscription: Subscription|undefined = undefined;\n let pushSubscription: Subscription|undefined = undefined;\n const sharedEmitter = new Subject<E>();\n\n const makeRequest = () => {\n if (!requestSubscription) {\n // If request is not in progress yet, start it.\n requestSubscription = request.pipe(\n debounceTime(0), // force async, just in case?\n finalize(() => requestSubscription = undefined),\n tap((value) => {\n cachedValue = value;\n sharedEmitter.next(value);\n }),\n ).subscribe();\n }\n }\n\n return new Observable<E>((subscriber) => {\n if (!resetSubscription) {\n const mergedObservables = isFinite(ttl)\n ? merge(reset, sharedEmitter.pipe(debounceTime(ttl * 1000)))\n : reset;\n\n resetSubscription = mergedObservables\n .pipe(tap(() => (cachedValue = emptyCache))).subscribe();\n }\n if (!refreshSubscription) {\n refreshSubscription = refresh.pipe(\n tap(() => makeRequest()),\n ).subscribe();\n }\n if (!pushSubscription) {\n pushSubscription = push.pipe(\n tap((value) => {\n cachedValue = value;\n sharedEmitter.next(value);\n }),\n ).subscribe();\n }\n\n if (cachedValue !== emptyCache) {\n return merge(of(cachedValue), sharedEmitter).subscribe(subscriber);\n } else {\n makeRequest();\n return sharedEmitter.subscribe(subscriber);\n }\n });\n };\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsAPI } from '@imunify360-api/settings';\nimport { NotificationSettingsAPI } from '@imunify360-api/notification-settings';\nimport { XHR } from 'app/utils/xhr/xhr';\nimport { ImunifyPackageVersions } from '@imunify360-api/package-versions';\nimport { catchError, map, Observable, of, take } from 'rxjs';\nimport { cache } from 'app/utils/cache';\nimport { HttpErrorResponse } from '@angular/common/http';\n\nexport interface IPackageVersions {\n packages: string,\n count: number;\n}\n\n@Injectable()\nexport class SettingsService {\n constructor(public xhr: XHR) {}\n\n show = this.xhr.rx(SettingsAPI.show);\n saveSettings = this.xhr.rx(SettingsAPI.save);\n notificationShow = this.xhr.rx(NotificationSettingsAPI.show);\n saveNotificationSettings = this.xhr.rx(NotificationSettingsAPI.save);\n conflicts = this.xhr.rx(SettingsAPI.conflicts);\n packageVersions: Observable<IPackageVersions|null> = this.xhr.rx(ImunifyPackageVersions.getPackageVersion, false, false)()\n .pipe(\n map(result => {\n let components: string[] = [];\n let count = 0;\n if (result.data.items) {\n const packages = result.data.items;\n components = Object.keys(packages).reduce((acc, key) => {\n if (packages[key] !== null) {\n acc.push(key + ' - ' + packages[key]);\n }\n count++;\n return acc;\n }, [] as string[]);\n }\n return {\n packages: components.join('\\r\\n'),\n count\n };\n }),\n take(1),\n cache(300),\n catchError((e: HttpErrorResponse) => {\n console.error('Caught error:', e);\n return of(null);\n }),\n );\n}\n","import { Injectable } from '@angular/core';\nimport { FeaturesManagementAPI } from '@imunify360-api/features-management';\nimport { XHR } from 'app/utils/xhr/xhr';\n\n\n@Injectable()\nexport class UserFeaturesStatusService {\n public getClientFeatures = this.xhr.rx(FeaturesManagementAPI.clientFeatures);\n\n constructor(\n public xhr: XHR,\n ) {}\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { zoned } from 'app/utils/rxjs-zoned';\nimport { AppState } from 'app/core/app.service';\nimport { AuthState } from 'app/services/auth-state';\nimport { LicenseState } from 'app/services/license-state';\nimport {\n BehaviorSubject, combineLatest, Observable, ReplaySubject, Subject, merge, identity,\n distinctUntilChanged, filter, map, switchMap, take,\n} from 'rxjs';\nimport { AgentStatus } from '@imunify360-api/misc';\nimport { ReputationService } from './reputation';\nimport { SettingsService } from './settings';\nimport { cache2 } from 'app/utils/cache';\nimport { AdminConfigType } from 'app/utils/config/admin-config';\nimport { I360Conflicts } from '@imunify360-api/settings';\nimport { BoolFeature, ClientFeatures, ReportableFeature } from '@imunify360-api/features-management';\nimport { UserFeaturesStatusService } from './user-features-status';\nimport { I360Role } from './auth';\n\nclass CachedRequest<T> {\n // Use this Subject to forcefully put a new value into the cache.\n // Emitting it will:\n // * Set the cached value to emitted value\n // * Notify all subscribers\n // * Restart `ttl` timer\n push: Subject<T> = new Subject<T>();\n // Emitting it will force re-subscribe on the source. (i.e. it will trigger the request)\n refresh: BehaviorSubject<any> = new BehaviorSubject<any>(undefined);\n // Emitting it will drop the current cached value.\n // Next subscription to cache will trigger a subscription on the source. (i.e. a request)\n reset: Subject<any> = new Subject<any>();\n // The actual cached observable\n cache: Observable<T>;\n constructor({ttl, request, push, refresh, reset}: {\n ttl: number,\n request: Observable<T>,\n push?: Observable<T>,\n refresh?: Observable<any>,\n reset?: Observable<any>,\n }) {\n push = push ? merge(this.push, push) : this.push;\n refresh = refresh ? merge(this.refresh, refresh) : this.refresh;\n reset = reset ? merge(this.reset, reset) : this.reset;\n this.cache = request.pipe(cache2(ttl, push, refresh, reset), zoned);\n }\n}\n\n@Injectable()\nexport class RequestsState {\n navRootInjector = new ReplaySubject<Injector>(1);\n\n private _acceptableStateForConfig = combineLatest(\n [this.authState.role, this.appState.imunifyStatus]\n ).pipe(\n // User must be logged in, Agent must be running\n filter(([role, status]) => role !== I360Role.none && status === AgentStatus.OK),\n );\n config = new CachedRequest<AdminConfigType>({\n ttl: 300,\n request: combineLatest([this.navRootInjector, this._acceptableStateForConfig]).pipe(\n take(1),\n switchMap(([navRootInjector, ...rest]) => navRootInjector.get(SettingsService).show()),\n map(res => res.data.items as AdminConfigType),\n ),\n refresh: this._acceptableStateForConfig,\n reset: this.authState.role,\n });\n\n private _acceptableStateForConflicts = this._acceptableStateForConfig.pipe(\n filter(([role, ...rest]) => role === I360Role.admin),\n );\n conflicts = new CachedRequest<I360Conflicts>({\n ttl: 300,\n request: combineLatest([this.navRootInjector, this._acceptableStateForConflicts]).pipe(\n take(1),\n switchMap(([navRootInjector, ...rest]) => navRootInjector.get(SettingsService).conflicts()),\n map(res => res.data.items as I360Conflicts),\n ),\n refresh: this._acceptableStateForConflicts,\n reset: this.authState.role,\n });\n\n private _acceptableStateForInfectedDomains = combineLatest([\n this.licenseState.license.pipe(\n map(license => license.isFreeVersion),\n distinctUntilChanged(),\n ),\n this.authState.role,\n this.appState.imunifyStatus,\n ]).pipe(\n // User must be logged in, Agent must be running, license must allow Reputation Management\n filter(([isFreeVersion, role, status]) => {\n return !isFreeVersion && role === I360Role.admin && status === AgentStatus.OK;\n }),\n );\n infectedDomainsCount = new CachedRequest<number>({\n ttl: 300,\n request: combineLatest([\n this.navRootInjector,\n this._acceptableStateForInfectedDomains,\n ]).pipe(\n take(1),\n switchMap(([navRootInjector, ...rest]) => navRootInjector.get(ReputationService).infectedDomains({limit: 1})),\n map(res => res.data.max_count || 0),\n ),\n refresh: this._acceptableStateForInfectedDomains,\n reset: combineLatest([\n this.licenseState.license.pipe( // reset if license is lost (e.g. becomes invalid)\n map(license => license.isFreeVersion),\n distinctUntilChanged(),\n filter(identity),\n ),\n this.authState.role, // reset on any auth change\n ]),\n });\n\n private _acceptableStateForClientFeatures = this._acceptableStateForConfig.pipe(\n // User must be logged in not as admin\n filter(([role, status]) => {\n return role === I360Role.client;\n }),\n );\n clientFeatures = new CachedRequest<ClientFeatures>({\n ttl: Infinity,\n request: combineLatest([\n this.navRootInjector,\n this._acceptableStateForClientFeatures,\n ]).pipe(\n take(1),\n switchMap(([navRootInjector, ...rest]) => navRootInjector.get(UserFeaturesStatusService).getClientFeatures()),\n map(res => res.data.items),\n ),\n refresh: this._acceptableStateForClientFeatures,\n reset: this.authState.role, // reset on any auth change\n });\n // TODO: replace with stuff from `permissions list` endpoint.\n hasEnabledFeatures = this.clientFeatures.cache.pipe(\n map(f => f == null ? null : (f.av !== BoolFeature.na || f.proactive !== BoolFeature.na)),\n );\n hasAv = this.clientFeatures.cache.pipe(\n map(f => f == null ? null : f.av !== BoolFeature.na),\n );\n hasAvFull = this.clientFeatures.cache.pipe(\n map(f => f == null ? null : f.av === ReportableFeature.full),\n );\n hasProactive = this.clientFeatures.cache.pipe(\n map(f => f == null ? null : f.proactive !== BoolFeature.na),\n );\n\n constructor(\n private appState: AppState,\n private authState: AuthState,\n private licenseState: LicenseState,\n ) {}\n}\n","// Here we can keep self-contained shared services with their own Injector.\n// NavRoot SPA must import it locally as `from 'app/core/shared'`, while every other SPA must\n// import it from `@imunify/nav-root`.\n\nimport { Injector } from '@angular/core';\nimport { AppState } from 'app/core/app.service';\nimport { AuthState } from 'app/services/auth-state';\nimport { LicenseState } from 'app/services/license-state';\nimport { RequestsState } from 'app/services/requests-state';\nimport { MyImunifyState } from 'app/services/my-imunify-state';\nimport { FirewallState } from 'app/components/lists/firewall-state.service';\n\n// Injector with services that we want to share between SPAs.\n// It contains instances of classes from NavRoot SPA.\nlet sharedInjector: Injector;\n\n// Exported, so we can reset (re-create) these services in tests without page reload.\nexport const resetSharedInjector = () => {\n sharedInjector = Injector.create({\n providers: [\n {provide: AppState, useClass: AppState, deps: []},\n {provide: AuthState, useClass: AuthState, deps: []},\n {provide: LicenseState, useClass: LicenseState, deps: [AuthState]},\n {provide: RequestsState, useClass: RequestsState, deps: [AppState, AuthState, LicenseState]},\n {provide: MyImunifyState, useClass: MyImunifyState, deps: []},\n {provide: FirewallState, useClass: FirewallState, deps: []},\n ]\n });\n};\nresetSharedInjector();\n\nexport const getSharedInjector = () => sharedInjector;\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subscription, Subject } from 'rxjs';\n\nexport interface IMyImunifyState {\n enabled: boolean;\n protection: boolean;\n username?: string;\n is_freemium: boolean;\n purchase_page_url: string;\n}\n\n@Injectable()\nexport class MyImunifyState {\n changes$ = new BehaviorSubject<IMyImunifyState>({\n enabled: false,\n protection: false,\n username: '',\n is_freemium: false,\n purchase_page_url: '',\n });\n myImunifyStateSubscription: Subscription | undefined;\n isEnabledWithProtection$ = new Subject<void>();\n\n constructor() {}\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class FirewallState {\n isFirewallEnabled$ = new BehaviorSubject<boolean>(false);\n checkStarted: boolean = false;\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { from, Observable } from 'rxjs';\nimport { TranslateLoader } from '@ngx-translate/core';\n\n\n@Injectable()\nexport class TranslateHttpLoader extends TranslateLoader {\n getTranslation(lang: string): Observable<object> {\n return from(import(`i18n/${lang}.i18n.txt`));\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { TranslateService } from 'app/utils/translate/translate.service';\nimport { TranslateCutPipe } from 'app/utils/translate/translate-cut';\nimport { TranslateModule, TranslateService as LibTranslateService } from '@ngx-translate/core';\nimport { DefaultIfNotTranslatedComponent } from './default-if-not-translated.component';\nimport { CommonModule } from '@angular/common';\n\n\n@NgModule({\n imports: [\n TranslateModule,\n CommonModule,\n ],\n declarations: [\n TranslateCutPipe,\n DefaultIfNotTranslatedComponent,\n ],\n exports: [\n TranslateCutPipe,\n TranslateModule,\n DefaultIfNotTranslatedComponent,\n ],\n})\nexport class I360TranslateModule {\n static forRoot(): ModuleWithProviders<I360TranslateModule> {\n return {\n ngModule: I360TranslateModule,\n providers: [\n TranslateService,\n // LibTranslateService, // why???\n ],\n };\n }\n}\n","export const WindowToken = 'Window'; // eslint-disable-line @typescript-eslint/naming-convention, no-underscore-dangle, id-denylist, id-match\n\nexport function getWindow() {\n return window;\n}\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { logger } from '../logger.js';\nimport { getFunctionName } from '../stacktrace.js';\n\n// We keep the handlers globally\nconst handlers = {};\nconst instrumented = {};\n\n/** Add a handler function. */\nfunction addHandler(type, handler) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nfunction resetInstrumentationHandlers() {\n Object.keys(handlers).forEach(key => {\n handlers[key ] = undefined;\n });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nfunction maybeInstrument(type, instrumentFn) {\n if (!instrumented[type]) {\n instrumented[type] = true;\n try {\n instrumentFn();\n } catch (e) {\n DEBUG_BUILD && logger.error(`Error while instrumenting ${type}`, e);\n }\n }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nfunction triggerHandlers(type, data) {\n const typeHandlers = type && handlers[type];\n if (!typeHandlers) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\nexport { addHandler, maybeInstrument, resetInstrumentationHandlers, triggerHandlers };\n","import { GLOBAL_OBJ } from '@sentry/core';\n\nconst WINDOW = GLOBAL_OBJ\n\n;\n\nexport { WINDOW };\n","import { addHandler, maybeInstrument, triggerHandlers, fill, addNonEnumerableProperty, uuid4 } from '@sentry/core';\nimport { WINDOW } from '../types.js';\n\nconst DEBOUNCE_DURATION = 1000;\n\nlet debounceTimerID;\nlet lastCapturedEventType;\nlet lastCapturedEventTargetId;\n\n/**\n * Add an instrumentation handler for when a click or a keypress happens.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addClickKeypressInstrumentationHandler(handler) {\n const type = 'dom';\n addHandler(type, handler);\n maybeInstrument(type, instrumentDOM);\n}\n\n/** Exported for tests only. */\nfunction instrumentDOM() {\n if (!WINDOW.document) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target) => {\n const globalObject = WINDOW ;\n const targetObj = globalObject[target];\n const proto = targetObj && targetObj.prototype;\n\n // eslint-disable-next-line no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener) {\n return function ( type, listener, options) {\n if (type === 'click' || type == 'keypress') {\n try {\n const handlers = (this.__sentry_instrumentation_handlers__ =\n this.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount++;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListeners` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener) {\n return function ( type, listener, options) {\n if (type === 'click' || type == 'keypress') {\n try {\n const handlers = this.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount--;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete this.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListeners` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\n/**\n * Check whether the event is similar to the last captured one. For example, two click events on the same button.\n */\nfunction isSimilarToLastCapturedEvent(event) {\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (event.type !== lastCapturedEventType) {\n return false;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (!event.target || (event.target )._sentryId !== lastCapturedEventTargetId) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return true;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(eventType, target) {\n // We are only interested in filtering `keypress` events for now.\n if (eventType !== 'keypress') {\n return false;\n }\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n */\nfunction makeDOMEventHandler(\n handler,\n globalListener = false,\n) {\n return (event) => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || event['_sentryCaptured']) {\n return;\n }\n\n const target = getEventTarget(event);\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event.type, target)) {\n return;\n }\n\n // Mark event as \"seen\"\n addNonEnumerableProperty(event, '_sentryCaptured', true);\n\n if (target && !target._sentryId) {\n // Add UUID to event target so we can identify if\n addNonEnumerableProperty(target, '_sentryId', uuid4());\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no last captured event, it means that we can safely capture the new event and store it for future comparisons.\n // If there is a last captured event, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n if (!isSimilarToLastCapturedEvent(event)) {\n const handlerData = { event, name, global: globalListener };\n handler(handlerData);\n lastCapturedEventType = event.type;\n lastCapturedEventTargetId = target ? target._sentryId : undefined;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = WINDOW.setTimeout(() => {\n lastCapturedEventTargetId = undefined;\n lastCapturedEventType = undefined;\n }, DEBOUNCE_DURATION);\n };\n}\n\nfunction getEventTarget(event) {\n try {\n return event.target ;\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n return null;\n }\n}\n\nexport { addClickKeypressInstrumentationHandler, instrumentDOM };\n","import { addHandler, maybeInstrument, timestampInSeconds, isString, triggerHandlers } from '@sentry/core';\nimport { WINDOW } from '../types.js';\n\nconst SENTRY_XHR_DATA_KEY = '__sentry_xhr_v3__';\n\n/**\n * Add an instrumentation handler for when an XHR request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addXhrInstrumentationHandler(handler) {\n const type = 'xhr';\n addHandler(type, handler);\n maybeInstrument(type, instrumentXHR);\n}\n\n/** Exported only for tests. */\nfunction instrumentXHR() {\n if (!(WINDOW ).XMLHttpRequest) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n xhrproto.open = new Proxy(xhrproto.open, {\n apply(originalOpen, xhrOpenThisArg, xhrOpenArgArray) {\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the error, that was caused by your XHR call did not\n // have a stack trace. If you are using HttpClient integration,\n // this is the expected behavior, as we are using this virtual error to capture\n // the location of your XHR call, and group your HttpClient events accordingly.\n const virtualError = new Error();\n\n const startTimestamp = timestampInSeconds() * 1000;\n\n // open() should always be called with two or more arguments\n // But to be on the safe side, we actually validate this and bail out if we don't have a method & url\n const method = isString(xhrOpenArgArray[0]) ? xhrOpenArgArray[0].toUpperCase() : undefined;\n const url = parseUrl(xhrOpenArgArray[1]);\n\n if (!method || !url) {\n return originalOpen.apply(xhrOpenThisArg, xhrOpenArgArray);\n }\n\n xhrOpenThisArg[SENTRY_XHR_DATA_KEY] = {\n method,\n url,\n request_headers: {},\n };\n\n // if Sentry key appears in URL, don't capture it as a request\n if (method === 'POST' && url.match(/sentry_key/)) {\n xhrOpenThisArg.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = () => {\n // For whatever reason, this is not the same instance here as from the outer method\n const xhrInfo = xhrOpenThisArg[SENTRY_XHR_DATA_KEY];\n\n if (!xhrInfo) {\n return;\n }\n\n if (xhrOpenThisArg.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhrOpenThisArg.status;\n } catch (e) {\n /* do nothing */\n }\n\n const handlerData = {\n endTimestamp: timestampInSeconds() * 1000,\n startTimestamp,\n xhr: xhrOpenThisArg,\n virtualError,\n };\n triggerHandlers('xhr', handlerData);\n }\n };\n\n if ('onreadystatechange' in xhrOpenThisArg && typeof xhrOpenThisArg.onreadystatechange === 'function') {\n xhrOpenThisArg.onreadystatechange = new Proxy(xhrOpenThisArg.onreadystatechange, {\n apply(originalOnreadystatechange, onreadystatechangeThisArg, onreadystatechangeArgArray) {\n onreadystatechangeHandler();\n return originalOnreadystatechange.apply(onreadystatechangeThisArg, onreadystatechangeArgArray);\n },\n });\n } else {\n xhrOpenThisArg.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n xhrOpenThisArg.setRequestHeader = new Proxy(xhrOpenThisArg.setRequestHeader, {\n apply(\n originalSetRequestHeader,\n setRequestHeaderThisArg,\n setRequestHeaderArgArray,\n ) {\n const [header, value] = setRequestHeaderArgArray;\n\n const xhrInfo = setRequestHeaderThisArg[SENTRY_XHR_DATA_KEY];\n\n if (xhrInfo && isString(header) && isString(value)) {\n xhrInfo.request_headers[header.toLowerCase()] = value;\n }\n\n return originalSetRequestHeader.apply(setRequestHeaderThisArg, setRequestHeaderArgArray);\n },\n });\n\n return originalOpen.apply(xhrOpenThisArg, xhrOpenArgArray);\n },\n });\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n xhrproto.send = new Proxy(xhrproto.send, {\n apply(originalSend, sendThisArg, sendArgArray) {\n const sentryXhrData = sendThisArg[SENTRY_XHR_DATA_KEY];\n\n if (!sentryXhrData) {\n return originalSend.apply(sendThisArg, sendArgArray);\n }\n\n if (sendArgArray[0] !== undefined) {\n sentryXhrData.body = sendArgArray[0];\n }\n\n const handlerData = {\n startTimestamp: timestampInSeconds() * 1000,\n xhr: sendThisArg,\n };\n triggerHandlers('xhr', handlerData);\n\n return originalSend.apply(sendThisArg, sendArgArray);\n },\n });\n}\n\nfunction parseUrl(url) {\n if (isString(url)) {\n return url;\n }\n\n try {\n // url can be a string or URL\n // but since URL is not available in IE11, we do not check for it,\n // but simply assume it is an URL and return `toString()` from it (which returns the full URL)\n // If that fails, we just return undefined\n return (url ).toString();\n } catch (e2) {} // eslint-disable-line no-empty\n\n return undefined;\n}\n\nexport { SENTRY_XHR_DATA_KEY, addXhrInstrumentationHandler, instrumentXHR };\n","import { GLOBAL_OBJ } from '../worldwide.js';\n\n// Based on https://github.com/angular/angular.js/pull/13945/files\n// The MIT License\n\n\nconst WINDOW = GLOBAL_OBJ ;\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n // TODO(v9): Remove this custom check, it is pretty old and likely not needed anymore\n const chromeVar = (WINDOW ).chrome;\n const isChromePackagedApp = chromeVar && chromeVar.app && chromeVar.app.runtime;\n const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n\nexport { supportsHistory };\n","import { addHandler, maybeInstrument, supportsHistory, triggerHandlers, fill } from '@sentry/core';\nimport { WINDOW } from '../types.js';\n\nlet lastHref;\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addHistoryInstrumentationHandler(handler) {\n const type = 'history';\n addHandler(type, handler);\n maybeInstrument(type, instrumentHistory);\n}\n\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = WINDOW.onpopstate;\n WINDOW.onpopstate = function ( ...args) {\n const to = WINDOW.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n const handlerData = { from, to };\n triggerHandlers('history', handlerData);\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n function historyReplacementFunction(originalHistoryFunction) {\n return function ( ...args) {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n const handlerData = { from, to };\n triggerHandlers('history', handlerData);\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(WINDOW.history, 'pushState', historyReplacementFunction);\n fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n\nexport { addHistoryInstrumentationHandler };\n","import { CONSOLE_LEVELS, originalConsoleMethods } from '../logger.js';\nimport { fill } from '../object.js';\nimport { GLOBAL_OBJ } from '../worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addConsoleInstrumentationHandler(handler) {\n const type = 'console';\n addHandler(type, handler);\n maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole() {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level) {\n if (!(level in GLOBAL_OBJ.console)) {\n return;\n }\n\n fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod) {\n originalConsoleMethods[level] = originalConsoleMethod;\n\n return function (...args) {\n const handlerData = { args, level };\n triggerHandlers('console', handlerData);\n\n const log = originalConsoleMethods[level];\n log && log.apply(GLOBAL_OBJ.console, args);\n };\n });\n });\n}\n\nexport { addConsoleInstrumentationHandler };\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { logger } from './logger.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst WINDOW = GLOBAL_OBJ ;\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-expect-error It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMException() {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsFetch() {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * isNative checks if the given function is a native implementation\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isNativeFunction(func) {\n return func && /^function\\s+\\w+\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nfunction supportsNativeFetch() {\n if (typeof EdgeRuntime === 'string') {\n return true;\n }\n\n if (!supportsFetch()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFunction(WINDOW.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement ) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFunction(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n DEBUG_BUILD &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReportingObserver() {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' ,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\nexport { isNativeFunction, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver };\n","import { isError } from '../is.js';\nimport { fill, addNonEnumerableProperty } from '../object.js';\nimport { supportsNativeFetch } from '../supports.js';\nimport { timestampInSeconds } from '../time.js';\nimport { GLOBAL_OBJ } from '../worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addFetchInstrumentationHandler(\n handler,\n skipNativeFetchCheck,\n) {\n const type = 'fetch';\n addHandler(type, handler);\n maybeInstrument(type, () => instrumentFetch(undefined, skipNativeFetchCheck));\n}\n\n/**\n * Add an instrumentation handler for long-lived fetch requests, like consuming server-sent events (SSE) via fetch.\n * The handler will resolve the request body and emit the actual `endTimestamp`, so that the\n * span can be updated accordingly.\n *\n * Only used internally\n * @hidden\n */\nfunction addFetchEndInstrumentationHandler(handler) {\n const type = 'fetch-body-resolved';\n addHandler(type, handler);\n maybeInstrument(type, () => instrumentFetch(streamHandler));\n}\n\nfunction instrumentFetch(onFetchResolved, skipNativeFetchCheck = false) {\n if (skipNativeFetchCheck && !supportsNativeFetch()) {\n return;\n }\n\n fill(GLOBAL_OBJ, 'fetch', function (originalFetch) {\n return function (...args) {\n // We capture the error right here and not in the Promise error callback because Safari (and probably other\n // browsers too) will wipe the stack trace up to this point, only leaving us with this file which is useless.\n\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the error, that was caused by your fetch call did not\n // have a stack trace, so the SDK backfilled the stack trace so\n // you can see which fetch call failed.\n const virtualError = new Error();\n\n const { method, url } = parseFetchArgs(args);\n const handlerData = {\n args,\n fetchData: {\n method,\n url,\n },\n startTimestamp: timestampInSeconds() * 1000,\n // // Adding the error to be able to fingerprint the failed fetch event in HttpClient instrumentation\n virtualError,\n };\n\n // if there is no callback, fetch is instrumented directly\n if (!onFetchResolved) {\n triggerHandlers('fetch', {\n ...handlerData,\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(GLOBAL_OBJ, args).then(\n async (response) => {\n if (onFetchResolved) {\n onFetchResolved(response);\n } else {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: timestampInSeconds() * 1000,\n response,\n });\n }\n\n return response;\n },\n (error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: timestampInSeconds() * 1000,\n error,\n });\n\n if (isError(error) && error.stack === undefined) {\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the error, that was caused by your fetch call did not\n // have a stack trace, so the SDK backfilled the stack trace so\n // you can see which fetch call failed.\n error.stack = virtualError.stack;\n addNonEnumerableProperty(error, 'framesToPop', 1);\n }\n\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\nasync function resolveResponse(res, onFinishedResolving) {\n if (res && res.body) {\n const body = res.body;\n const responseReader = body.getReader();\n\n // Define a maximum duration after which we just cancel\n const maxFetchDurationTimeout = setTimeout(\n () => {\n body.cancel().then(null, () => {\n // noop\n });\n },\n 90 * 1000, // 90s\n );\n\n let readingActive = true;\n while (readingActive) {\n let chunkTimeout;\n try {\n // abort reading if read op takes more than 5s\n chunkTimeout = setTimeout(() => {\n body.cancel().then(null, () => {\n // noop on error\n });\n }, 5000);\n\n // This .read() call will reject/throw when we abort due to timeouts through `body.cancel()`\n const { done } = await responseReader.read();\n\n clearTimeout(chunkTimeout);\n\n if (done) {\n onFinishedResolving();\n readingActive = false;\n }\n } catch (error) {\n readingActive = false;\n } finally {\n clearTimeout(chunkTimeout);\n }\n }\n\n clearTimeout(maxFetchDurationTimeout);\n\n responseReader.releaseLock();\n body.cancel().then(null, () => {\n // noop on error\n });\n }\n}\n\nfunction streamHandler(response) {\n // clone response for awaiting stream\n let clonedResponseForResolving;\n try {\n clonedResponseForResolving = response.clone();\n } catch (e) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n resolveResponse(clonedResponseForResolving, () => {\n triggerHandlers('fetch-body-resolved', {\n endTimestamp: timestampInSeconds() * 1000,\n response,\n });\n });\n}\n\nfunction hasProp(obj, prop) {\n return !!obj && typeof obj === 'object' && !!(obj )[prop];\n}\n\nfunction getUrlFromResource(resource) {\n if (typeof resource === 'string') {\n return resource;\n }\n\n if (!resource) {\n return '';\n }\n\n if (hasProp(resource, 'url')) {\n return resource.url;\n }\n\n if (resource.toString) {\n return resource.toString();\n }\n\n return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request.\n * Exported for tests only.\n */\nfunction parseFetchArgs(fetchArgs) {\n if (fetchArgs.length === 0) {\n return { method: 'GET', url: '' };\n }\n\n if (fetchArgs.length === 2) {\n const [url, options] = fetchArgs ;\n\n return {\n url: getUrlFromResource(url),\n method: hasProp(options, 'method') ? String(options.method).toUpperCase() : 'GET',\n };\n }\n\n const arg = fetchArgs[0];\n return {\n url: getUrlFromResource(arg ),\n method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n };\n}\n\nexport { addFetchEndInstrumentationHandler, addFetchInstrumentationHandler, parseFetchArgs };\n","import { getClient } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { logger } from './utils-hoist/logger.js';\n\nconst installedIntegrations = [];\n\n/** Map of integrations assigned to a client */\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preserve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations) {\n const integrationsByName = {};\n\n integrations.forEach((currentInstance) => {\n const { name } = currentInstance;\n\n const existingInstance = integrationsByName[name];\n\n // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n // default instance to overwrite an existing user instance\n if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n return;\n }\n\n integrationsByName[name] = currentInstance;\n });\n\n return Object.values(integrationsByName);\n}\n\n/** Gets integrations to install */\nfunction getIntegrationsToSetup(options) {\n const defaultIntegrations = options.defaultIntegrations || [];\n const userIntegrations = options.integrations;\n\n // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n defaultIntegrations.forEach((integration) => {\n integration.isDefaultInstance = true;\n });\n\n let integrations;\n\n if (Array.isArray(userIntegrations)) {\n integrations = [...defaultIntegrations, ...userIntegrations];\n } else if (typeof userIntegrations === 'function') {\n const resolvedUserIntegrations = userIntegrations(defaultIntegrations);\n integrations = Array.isArray(resolvedUserIntegrations) ? resolvedUserIntegrations : [resolvedUserIntegrations];\n } else {\n integrations = defaultIntegrations;\n }\n\n const finalIntegrations = filterDuplicates(integrations);\n\n // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n const debugIndex = finalIntegrations.findIndex(integration => integration.name === 'Debug');\n if (debugIndex > -1) {\n const [debugInstance] = finalIntegrations.splice(debugIndex, 1) ;\n finalIntegrations.push(debugInstance);\n }\n\n return finalIntegrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nfunction setupIntegrations(client, integrations) {\n const integrationIndex = {};\n\n integrations.forEach(integration => {\n // guard against empty provided integrations\n if (integration) {\n setupIntegration(client, integration, integrationIndex);\n }\n });\n\n return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nfunction afterSetupIntegrations(client, integrations) {\n for (const integration of integrations) {\n // guard against empty provided integrations\n if (integration && integration.afterAllSetup) {\n integration.afterAllSetup(client);\n }\n }\n}\n\n/** Setup a single integration. */\nfunction setupIntegration(client, integration, integrationIndex) {\n if (integrationIndex[integration.name]) {\n DEBUG_BUILD && logger.log(`Integration skipped because it was already installed: ${integration.name}`);\n return;\n }\n integrationIndex[integration.name] = integration;\n\n // `setupOnce` is only called the first time\n if (installedIntegrations.indexOf(integration.name) === -1 && typeof integration.setupOnce === 'function') {\n integration.setupOnce();\n installedIntegrations.push(integration.name);\n }\n\n // `setup` is run for each client\n if (integration.setup && typeof integration.setup === 'function') {\n integration.setup(client);\n }\n\n if (typeof integration.preprocessEvent === 'function') {\n const callback = integration.preprocessEvent.bind(integration) ;\n client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n }\n\n if (typeof integration.processEvent === 'function') {\n const callback = integration.processEvent.bind(integration) ;\n\n const processor = Object.assign((event, hint) => callback(event, hint, client), {\n id: integration.name,\n });\n\n client.addEventProcessor(processor);\n }\n\n DEBUG_BUILD && logger.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current scope's client. */\nfunction addIntegration(integration) {\n const client = getClient();\n\n if (!client) {\n DEBUG_BUILD && logger.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n return;\n }\n\n client.addIntegration(integration);\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nfunction defineIntegration(fn) {\n return fn;\n}\n\nexport { addIntegration, afterSetupIntegrations, defineIntegration, getIntegrationsToSetup, installedIntegrations, setupIntegration, setupIntegrations };\n","import { getClient, getIsolationScope } from './currentScopes.js';\nimport { consoleSandbox } from './utils-hoist/logger.js';\nimport { dateTimestampInSeconds } from './utils-hoist/time.js';\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n */\nfunction addBreadcrumb(breadcrumb, hint) {\n const client = getClient();\n const isolationScope = getIsolationScope();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = client.getOptions();\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) )\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n isolationScope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n}\n\nexport { addBreadcrumb };\n","/**\n * @deprecated This variable has been deprecated and will be removed in the next major version.\n */\nconst validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nfunction severityLevelFromString(level) {\n return (\n level === 'warn' ? 'warning' : ['fatal', 'error', 'warning', 'log', 'info', 'debug'].includes(level) ? level : 'log'\n ) ;\n}\n\nexport { severityLevelFromString, validSeverityLevels };\n","/**\n * Determine a breadcrumb's log level (only `warning` or `error`) based on an HTTP status code.\n */\nfunction getBreadcrumbLogLevelFromHttpStatusCode(statusCode) {\n // NOTE: undefined defaults to 'info' in Sentry\n if (statusCode === undefined) {\n return undefined;\n } else if (statusCode >= 400 && statusCode < 500) {\n return 'warning';\n } else if (statusCode >= 500) {\n return 'error';\n } else {\n return undefined;\n }\n}\n\nexport { getBreadcrumbLogLevelFromHttpStatusCode };\n","/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not <a/> href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nfunction parseUrl(url) {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n search: query,\n hash: fragment,\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nfunction stripUrlQueryAndFragment(urlPath) {\n return (urlPath.split(/[?#]/, 1) )[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n *\n * @deprecated This function will be removed in the next major version.\n */\n// TODO(v9): Hoist this function into the places where we use it. (as it stands only react router v6 instrumentation)\nfunction getNumberOfUrlSegments(url) {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span name\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nfunction getSanitizedUrlString(url) {\n const { protocol, host, path } = url;\n\n const filteredHost =\n (host &&\n host\n // Always filter out authority\n .replace(/^.*@/, '[filtered]:[filtered]@')\n // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n // TODO: Use new URL global if it exists\n .replace(/(:80)$/, '')\n .replace(/(:443)$/, '')) ||\n '';\n\n return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n\nexport { getNumberOfUrlSegments, getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment };\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n","import { GLOBAL_OBJ, getOriginalFunction, markFunctionWrapped, addNonEnumerableProperty, withScope, addExceptionTypeValue, addExceptionMechanism, captureException } from '@sentry/core';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nlet ignoreOnError = 0;\n\n/**\n * @hidden\n */\nfunction shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nfunction ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError++;\n setTimeout(() => {\n ignoreOnError--;\n });\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nfunction wrap(\n fn,\n options\n\n = {},\n) {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n function isFunction(fn) {\n return typeof fn === 'function';\n }\n\n if (!isFunction(fn)) {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = (fn ).__sentry_wrapped__;\n if (wrapper) {\n if (typeof wrapper === 'function') {\n return wrapper;\n } else {\n // If we find that the `__sentry_wrapped__` function is not a function at the time of accessing it, it means\n // that something messed with it. In that case we want to return the originally passed function.\n return fn;\n }\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n // Wrap the function itself\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped = function ( ...args) {\n try {\n // Also wrap arguments that are themselves functions\n const wrappedArguments = args.map(arg => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n } ;\n\n // Wrap the wrapped function in a proxy, to ensure any other properties of the original function remain available\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property ] = fn[property ];\n }\n }\n } catch (e2) {\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n }\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name');\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get() {\n return fn.name;\n },\n });\n }\n } catch (e3) {\n // This may throw if e.g. the descriptor does not exist, or a browser does not allow redefining `name`.\n // to save some bytes we simply try-catch this\n }\n\n return sentryWrapped;\n}\n\nexport { WINDOW, ignoreNextOnError, shouldIgnoreOnError, wrap };\n","import { addClickKeypressInstrumentationHandler, addXhrInstrumentationHandler, addHistoryInstrumentationHandler, SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';\nimport { defineIntegration, addConsoleInstrumentationHandler, addFetchInstrumentationHandler, getClient, addBreadcrumb, getEventDescription, logger, htmlTreeAsString, getComponentName, severityLevelFromString, safeJoin, getBreadcrumbLogLevelFromHttpStatusCode, parseUrl } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\n\n/* eslint-disable max-lines */\n\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst INTEGRATION_NAME = 'Breadcrumbs';\n\nconst _breadcrumbsIntegration = ((options = {}) => {\n const _options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n if (_options.console) {\n addConsoleInstrumentationHandler(_getConsoleBreadcrumbHandler(client));\n }\n if (_options.dom) {\n addClickKeypressInstrumentationHandler(_getDomBreadcrumbHandler(client, _options.dom));\n }\n if (_options.xhr) {\n addXhrInstrumentationHandler(_getXhrBreadcrumbHandler(client));\n }\n if (_options.fetch) {\n addFetchInstrumentationHandler(_getFetchBreadcrumbHandler(client));\n }\n if (_options.history) {\n addHistoryInstrumentationHandler(_getHistoryBreadcrumbHandler(client));\n }\n if (_options.sentry) {\n client.on('beforeSendEvent', _getSentryBreadcrumbHandler(client));\n }\n },\n };\n}) ;\n\nconst breadcrumbsIntegration = defineIntegration(_breadcrumbsIntegration);\n\n/**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\nfunction _getSentryBreadcrumbHandler(client) {\n return function addSentryBreadcrumb(event) {\n if (getClient() !== client) {\n return;\n }\n\n addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n };\n}\n\n/**\n * A HOC that creates a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _getDomBreadcrumbHandler(\n client,\n dom,\n) {\n return function _innerDomBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\n }\n\n let target;\n let componentName;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n let maxStringLength =\n typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n DEBUG_BUILD &&\n logger.warn(\n `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n );\n maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n }\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n const event = handlerData.event ;\n const element = _isEvent(event) ? event.target : event;\n\n target = htmlTreeAsString(element, { keyAttrs, maxStringLength });\n componentName = getComponentName(element);\n } catch (e) {\n target = '<unknown>';\n }\n\n if (target.length === 0) {\n return;\n }\n\n const breadcrumb = {\n category: `ui.${handlerData.name}`,\n message: target,\n };\n\n if (componentName) {\n breadcrumb.data = { 'ui.component_name': componentName };\n }\n\n addBreadcrumb(breadcrumb, {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n });\n };\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _getConsoleBreadcrumbHandler(client) {\n return function _consoleBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\n }\n\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n };\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _getXhrBreadcrumbHandler(client) {\n return function _xhrBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\n }\n\n const { startTimestamp, endTimestamp } = handlerData;\n\n const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n\n // We only capture complete, non-sentry requests\n if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n return;\n }\n\n const { method, url, status_code, body } = sentryXhrData;\n\n const data = {\n method,\n url,\n status_code,\n };\n\n const hint = {\n xhr: handlerData.xhr,\n input: body,\n startTimestamp,\n endTimestamp,\n };\n\n const level = getBreadcrumbLogLevelFromHttpStatusCode(status_code);\n\n addBreadcrumb(\n {\n category: 'xhr',\n data,\n type: 'http',\n level,\n },\n hint,\n );\n };\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _getFetchBreadcrumbHandler(client) {\n return function _fetchBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\n }\n\n const { startTimestamp, endTimestamp } = handlerData;\n\n // We only capture complete fetch requests\n if (!endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n const data = handlerData.fetchData;\n const hint = {\n data: handlerData.error,\n input: handlerData.args,\n startTimestamp,\n endTimestamp,\n };\n\n addBreadcrumb(\n {\n category: 'fetch',\n data,\n level: 'error',\n type: 'http',\n },\n hint,\n );\n } else {\n const response = handlerData.response ;\n const data = {\n ...handlerData.fetchData,\n status_code: response && response.status,\n };\n const hint = {\n input: handlerData.args,\n response,\n startTimestamp,\n endTimestamp,\n };\n const level = getBreadcrumbLogLevelFromHttpStatusCode(data.status_code);\n\n addBreadcrumb(\n {\n category: 'fetch',\n data,\n type: 'http',\n level,\n },\n hint,\n );\n }\n };\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _getHistoryBreadcrumbHandler(client) {\n return function _historyBreadcrumb(handlerData) {\n if (getClient() !== client) {\n return;\n }\n\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(WINDOW.location.href);\n let parsedFrom = from ? parseUrl(from) : undefined;\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom || !parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n };\n}\n\nfunction _isEvent(event) {\n return !!event && !!(event ).target;\n}\n\nexport { breadcrumbsIntegration };\n","import { GLOBAL_OBJ } from '../worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\nlet _oldOnErrorHandler = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addGlobalErrorInstrumentationHandler(handler) {\n const type = 'error';\n addHandler(type, handler);\n maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError() {\n _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n // Note: The reason we are doing window.onerror instead of window.addEventListener('error')\n // is that we are using this handler in the Loader Script, to handle buffered errors consistently\n GLOBAL_OBJ.onerror = function (\n msg,\n url,\n line,\n column,\n error,\n ) {\n const handlerData = {\n column,\n error,\n line,\n msg,\n url,\n };\n triggerHandlers('error', handlerData);\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { addGlobalErrorInstrumentationHandler };\n","import { GLOBAL_OBJ } from '../worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\nlet _oldOnUnhandledRejectionHandler = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addGlobalUnhandledRejectionInstrumentationHandler(\n handler,\n) {\n const type = 'unhandledrejection';\n addHandler(type, handler);\n maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n // Note: The reason we are doing window.onunhandledrejection instead of window.addEventListener('unhandledrejection')\n // is that we are using this handler in the Loader Script, to handle buffered rejections consistently\n GLOBAL_OBJ.onunhandledrejection = function (e) {\n const handlerData = e;\n triggerHandlers('unhandledrejection', handlerData);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { addGlobalUnhandledRejectionInstrumentationHandler };\n","import { addExceptionMechanism, resolvedSyncPromise, isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject, isEvent, isParameterizedString, getClient, normalizeToSize, extractExceptionKeysForMessage } from '@sentry/core';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nfunction exceptionFromError(stackParser, ex) {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception = {\n type: extractType(ex),\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\nfunction eventFromPlainObject(\n stackParser,\n exception,\n syntheticException,\n isUnhandledRejection,\n) {\n const client = getClient();\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n // If we can, we extract an exception from the object properties\n const errorFromProp = getErrorPropertyFromObject(exception);\n\n const extra = {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n };\n\n if (errorFromProp) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, errorFromProp)],\n },\n extra,\n };\n }\n\n const event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n } ,\n ],\n },\n extra,\n } ;\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\nfunction eventFromError(stackParser, ex) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n stackParser,\n ex,\n) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const skipLines = getSkipFirstStackStringLines(ex);\n const framesToPop = getPopFirstTopFrames(ex);\n\n try {\n return stackParser(stacktrace, skipLines, framesToPop);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\n/**\n * Certain known React errors contain links that would be falsely\n * parsed as frames. This function check for these errors and\n * returns number of the stack string lines to skip.\n */\nfunction getSkipFirstStackStringLines(ex) {\n if (ex && reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n\n return 0;\n}\n\n/**\n * If error has `framesToPop` property, it means that the\n * creator tells us the first x frames will be useless\n * and should be discarded. Typically error from wrapper function\n * which don't point to the actual location in the developer's code.\n *\n * Example: https://github.com/zertosh/invariant/blob/master/invariant.js#L46\n */\nfunction getPopFirstTopFrames(ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n return 0;\n}\n\n// https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Exception\n// @ts-expect-error - WebAssembly.Exception is a valid class\nfunction isWebAssemblyException(exception) {\n // Check for support\n // @ts-expect-error - WebAssembly.Exception is a valid class\n if (typeof WebAssembly !== 'undefined' && typeof WebAssembly.Exception !== 'undefined') {\n // @ts-expect-error - WebAssembly.Exception is a valid class\n return exception instanceof WebAssembly.Exception;\n } else {\n return false;\n }\n}\n\n/**\n * Extracts from errors what we use as the exception `type` in error events.\n *\n * Usually, this is the `name` property on Error objects but WASM errors need to be treated differently.\n */\nfunction extractType(ex) {\n const name = ex && ex.name;\n\n // The name for WebAssembly.Exception Errors needs to be extracted differently.\n // Context: https://github.com/getsentry/sentry-javascript/issues/13787\n if (!name && isWebAssemblyException(ex)) {\n // Emscripten sets array[type, message] to the \"message\" property on the WebAssembly.Exception object\n const hasTypeInMessage = ex.message && Array.isArray(ex.message) && ex.message.length == 2;\n return hasTypeInMessage ? ex.message[0] : 'WebAssembly.Exception';\n }\n\n return name;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex) {\n const message = ex && ex.message;\n\n if (!message) {\n return 'No error message';\n }\n\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n\n // Emscripten sets array[type, message] to the \"message\" property on the WebAssembly.Exception object\n if (isWebAssemblyException(ex) && Array.isArray(ex.message) && ex.message.length == 2) {\n return ex.message[1];\n }\n\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nfunction eventFromException(\n stackParser,\n exception,\n hint,\n attachStacktrace,\n) {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n level = 'info',\n hint,\n attachStacktrace,\n) {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nfunction eventFromUnknownInput(\n stackParser,\n exception,\n syntheticException,\n attachStacktrace,\n isUnhandledRejection,\n) {\n let event;\n\n if (isErrorEvent(exception ) && (exception ).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception ;\n return eventFromError(stackParser, errorEvent.error );\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception) || isDOMException(exception )) {\n const domException = exception ;\n\n if ('stack' in (exception )) {\n event = eventFromError(stackParser, exception );\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n // eslint-disable-next-line deprecation/deprecation\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception ;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\nfunction eventFromString(\n stackParser,\n message,\n syntheticException,\n attachStacktrace,\n) {\n const event = {};\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: message, stacktrace: { frames } }],\n };\n }\n addExceptionMechanism(event, { synthetic: true });\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n exception,\n { isUnhandledRejection },\n) {\n const keys = extractExceptionKeysForMessage(exception);\n const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n }\n\n if (isEvent(exception)) {\n const className = getObjectClassName(exception);\n return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n }\n\n return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch (e) {\n // ignore errors here\n }\n}\n\n/** If a plain object has a property that is an `Error`, return this error. */\nfunction getErrorPropertyFromObject(obj) {\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (value instanceof Error) {\n return value;\n }\n }\n }\n\n return undefined;\n}\n\nexport { eventFromException, eventFromMessage, eventFromUnknownInput, exceptionFromError, extractMessage, extractType };\n","import { defineIntegration, addGlobalErrorInstrumentationHandler, getClient, captureEvent, addGlobalUnhandledRejectionInstrumentationHandler, isPrimitive, isString, getLocationHref, UNKNOWN_FUNCTION, logger } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { eventFromUnknownInput } from '../eventbuilder.js';\nimport { shouldIgnoreOnError } from '../helpers.js';\n\nconst INTEGRATION_NAME = 'GlobalHandlers';\n\nconst _globalHandlersIntegration = ((options = {}) => {\n const _options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n Error.stackTraceLimit = 50;\n },\n setup(client) {\n if (_options.onerror) {\n _installGlobalOnErrorHandler(client);\n globalHandlerLog('onerror');\n }\n if (_options.onunhandledrejection) {\n _installGlobalOnUnhandledRejectionHandler(client);\n globalHandlerLog('onunhandledrejection');\n }\n },\n };\n}) ;\n\nconst globalHandlersIntegration = defineIntegration(_globalHandlersIntegration);\n\nfunction _installGlobalOnErrorHandler(client) {\n addGlobalErrorInstrumentationHandler(data => {\n const { stackParser, attachStacktrace } = getOptions();\n\n if (getClient() !== client || shouldIgnoreOnError()) {\n return;\n }\n\n const { msg, url, line, column, error } = data;\n\n const event = _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n captureEvent(event, {\n originalException: error,\n mechanism: {\n handled: false,\n type: 'onerror',\n },\n });\n });\n}\n\nfunction _installGlobalOnUnhandledRejectionHandler(client) {\n addGlobalUnhandledRejectionInstrumentationHandler(e => {\n const { stackParser, attachStacktrace } = getOptions();\n\n if (getClient() !== client || shouldIgnoreOnError()) {\n return;\n }\n\n const error = _getUnhandledRejectionError(e );\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n captureEvent(event, {\n originalException: error,\n mechanism: {\n handled: false,\n type: 'onunhandledrejection',\n },\n });\n });\n}\n\nfunction _getUnhandledRejectionError(error) {\n if (isPrimitive(error)) {\n return error;\n }\n\n // dig the object of the rejection out of known event types\n try {\n\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in (error )) {\n return (error ).reason;\n }\n\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n if ('detail' in (error ) && 'reason' in (error ).detail) {\n return (error ).detail.reason;\n }\n } catch (e2) {} // eslint-disable-line no-empty\n\n return error;\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\nfunction _enhanceEventWithInitialFrame(\n event,\n url,\n line,\n column,\n) {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = column;\n const lineno = line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: UNKNOWN_FUNCTION,\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type) {\n DEBUG_BUILD && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction getOptions() {\n const client = getClient();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return options;\n}\n\nexport { globalHandlersIntegration };\n","import { isInstanceOf } from './is.js';\nimport { truncate } from './string.js';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nfunction applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation,\n parser,\n maxValueLimit = 250,\n key,\n limit,\n event,\n hint,\n) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return;\n }\n\n // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n const originalException =\n event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n // We only create exception grouping if there is an exception in the event.\n if (originalException) {\n event.exception.values = truncateAggregateExceptions(\n aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n hint.originalException ,\n key,\n event.exception.values,\n originalException,\n 0,\n ),\n maxValueLimit,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error,\n key,\n prevExceptions,\n exception,\n exceptionId,\n) {\n if (prevExceptions.length >= limit + 1) {\n return prevExceptions;\n }\n\n let newExceptions = [...prevExceptions];\n\n // Recursively call this function in order to walk down a chain of errors\n if (isInstanceOf(error[key], Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, error[key]);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key],\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n\n // This will create exception grouping for AggregateErrors\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n if (Array.isArray(error.errors)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, childError);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception, exceptionId) {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n ...(exception.type === 'AggregateError' && { is_exception_group: true }),\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception,\n source,\n exceptionId,\n parentId,\n) {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n type: 'chained',\n source,\n exception_id: exceptionId,\n parent_id: parentId,\n };\n}\n\n/**\n * Truncate the message (exception.value) of all exceptions in the event.\n * Because this event processor is ran after `applyClientOptions`,\n * we need to truncate the message of the added exceptions here.\n */\nfunction truncateAggregateExceptions(exceptions, maxValueLength) {\n return exceptions.map(exception => {\n if (exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n return exception;\n });\n}\n\nexport { applyAggregateErrorsToEvent };\n","import { defineIntegration, applyAggregateErrorsToEvent } from '@sentry/core';\nimport { exceptionFromError } from '../eventbuilder.js';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(\n // This differs from the LinkedErrors integration in core by using a different exceptionFromError function\n exceptionFromError,\n options.stackParser,\n options.maxValueLength,\n key,\n limit,\n event,\n hint,\n );\n },\n };\n}) ;\n\n/**\n * Aggregrate linked errors in an event.\n */\nconst linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\nexport { linkedErrorsIntegration };\n","import { defineIntegration } from '@sentry/core';\nimport { WINDOW } from '../helpers.js';\n\n/**\n * Collects information about HTTP request headers and\n * attaches them to the event.\n */\nconst httpContextIntegration = defineIntegration(() => {\n return {\n name: 'HttpContext',\n preprocessEvent(event) {\n // if none of the information we want exists, don't bother\n if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n return;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n const { referrer } = WINDOW.document || {};\n const { userAgent } = WINDOW.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...event.request, ...(url && { url }), headers };\n\n event.request = request;\n },\n };\n});\n\nexport { httpContextIntegration };\n","import { addHistoryInstrumentationHandler } from '@sentry-internal/browser-utils';\nimport { defineIntegration, logger, startSession, captureSession } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { WINDOW } from '../helpers.js';\n\n/**\n * When added, automatically creates sessions which allow you to track adoption and crashes (crash free rate) in your Releases in Sentry.\n * More information: https://docs.sentry.io/product/releases/health/\n *\n * Note: In order for session tracking to work, you need to set up Releases: https://docs.sentry.io/product/releases/\n */\nconst browserSessionIntegration = defineIntegration(() => {\n return {\n name: 'BrowserSession',\n setupOnce() {\n if (typeof WINDOW.document === 'undefined') {\n DEBUG_BUILD &&\n logger.warn('Using the `browserSessionIntegration` in non-browser environments is not supported.');\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSession({ ignoreDuration: true });\n captureSession();\n\n // We want to create a session for every navigation as well\n addHistoryInstrumentationHandler(({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (from !== undefined && from !== to) {\n startSession({ ignoreDuration: true });\n captureSession();\n }\n });\n },\n };\n});\n\nexport { browserSessionIntegration };\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { defineIntegration } from '../integration.js';\nimport { logger } from '../utils-hoist/logger.js';\nimport { getEventDescription } from '../utils-hoist/misc.js';\nimport { stringMatchesSomePattern } from '../utils-hoist/string.js';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [\n /^Script error\\.?$/,\n /^Javascript error: Script error\\.? on line 0$/,\n /^ResizeObserver loop completed with undelivered notifications.$/, // The browser logs this when a ResizeObserver handler takes a bit longer. Usually this is not an actual issue though. It indicates slowness.\n /^Cannot redefine property: googletag$/, // This is thrown when google tag manager is used in combination with an ad blocker\n \"undefined is not an object (evaluating 'a.L')\", // Random error that happens but not actionable or noticeable to end-users.\n 'can\\'t redefine non-configurable property \"solana\"', // Probably a browser extension or custom browser (Brave) throwing this error\n \"vv().getRestrictions is not a function. (In 'vv().getRestrictions(1,a)', 'vv().getRestrictions' is undefined)\", // Error thrown by GTM, seemingly not affecting end-users\n \"Can't find variable: _AutofillCallbackHandler\", // Unactionable error in instagram webview https://developers.facebook.com/community/threads/320013549791141/\n /^Non-Error promise rejection captured with value: Object Not Found Matching Id:\\d+, MethodName:simulateEvent, ParamCount:\\d+$/, // unactionable error from CEFSharp, a .NET library that embeds chromium in .NET apps\n];\n\n/** Options for the InboundFilters integration */\n\nconst INTEGRATION_NAME = 'InboundFilters';\nconst _inboundFiltersIntegration = ((options = {}) => {\n return {\n name: INTEGRATION_NAME,\n processEvent(event, _hint, client) {\n const clientOptions = client.getOptions();\n const mergedOptions = _mergeOptions(options, clientOptions);\n return _shouldDropEvent(event, mergedOptions) ? null : event;\n },\n };\n}) ;\n\nconst inboundFiltersIntegration = defineIntegration(_inboundFiltersIntegration);\n\nfunction _mergeOptions(\n internalOptions = {},\n clientOptions = {},\n) {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n ],\n ignoreTransactions: [...(internalOptions.ignoreTransactions || []), ...(clientOptions.ignoreTransactions || [])],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\nfunction _shouldDropEvent(event, options) {\n if (options.ignoreInternal && _isSentryError(event)) {\n DEBUG_BUILD &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isUselessError(event)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to not having an error message, error type or stacktrace.\\nEvent: ${getEventDescription(\n event,\n )}`,\n );\n return true;\n }\n if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event, ignoreErrors) {\n // If event.type, this is not an error\n if (event.type || !ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event, ignoreTransactions) {\n if (event.type !== 'transaction' || !ignoreTransactions || !ignoreTransactions.length) {\n return false;\n }\n\n const name = event.transaction;\n return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event, denyUrls) {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event, allowUrls) {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event) {\n const possibleMessages = [];\n\n if (event.message) {\n possibleMessages.push(event.message);\n }\n\n let lastException;\n try {\n // @ts-expect-error Try catching to save bundle size\n lastException = event.exception.values[event.exception.values.length - 1];\n } catch (e) {\n // try catching to save bundle size checking existence of variables\n }\n\n if (lastException) {\n if (lastException.value) {\n possibleMessages.push(lastException.value);\n if (lastException.type) {\n possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n }\n }\n }\n\n return possibleMessages;\n}\n\nfunction _isSentryError(event) {\n try {\n // @ts-expect-error can't be a sentry error if undefined\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames = []) {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '<anonymous>' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event) {\n try {\n let frames;\n try {\n // @ts-expect-error we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n DEBUG_BUILD && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n\nfunction _isUselessError(event) {\n if (event.type) {\n // event is not an error\n return false;\n }\n\n // We only want to consider events for dropping that actually have recorded exception values.\n if (!event.exception || !event.exception.values || event.exception.values.length === 0) {\n return false;\n }\n\n return (\n // No top-level message\n !event.message &&\n // There are no exception values that have a stacktrace, a non-generic-Error type or value\n !event.exception.values.some(value => value.stacktrace || (value.type && value.type !== 'Error') || value.value)\n );\n}\n\nexport { inboundFiltersIntegration };\n","import { getClient } from '../currentScopes.js';\nimport { defineIntegration } from '../integration.js';\nimport { getOriginalFunction } from '../utils-hoist/object.js';\n\nlet originalFunctionToString;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap();\n\nconst _functionToStringIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // intrinsics (like Function.prototype) might be immutable in some environments\n // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n try {\n Function.prototype.toString = function ( ...args) {\n const originalFunction = getOriginalFunction(this);\n const context =\n SETUP_CLIENTS.has(getClient() ) && originalFunction !== undefined ? originalFunction : this;\n return originalFunctionToString.apply(context, args);\n };\n } catch (e) {\n // ignore errors here, just don't patch this\n }\n },\n setup(client) {\n SETUP_CLIENTS.set(client, true);\n },\n };\n}) ;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n * integrations: [\n * functionToStringIntegration(),\n * ],\n * });\n * ```\n */\nconst functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n\nexport { functionToStringIntegration };\n","import { defineIntegration } from '../integration.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { logger } from '../utils-hoist/logger.js';\nimport { getFramesFromEvent } from '../utils-hoist/stacktrace.js';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n let previousEvent;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(currentEvent) {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, previousEvent)) {\n DEBUG_BUILD && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n return (previousEvent = currentEvent);\n },\n };\n}) ;\n\n/**\n * Deduplication filter.\n */\nconst dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/** only exported for tests. */\nfunction _shouldDropEvent(currentEvent, previousEvent) {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\nfunction _isSameMessageEvent(currentEvent, previousEvent) {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\nfunction _isSameExceptionEvent(currentEvent, previousEvent) {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\nfunction _isSameStacktrace(currentEvent, previousEvent) {\n let currentFrames = getFramesFromEvent(currentEvent);\n let previousFrames = getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames ;\n previousFrames = previousFrames ;\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const frameA = previousFrames[i];\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction _isSameFingerprint(currentEvent, previousEvent) {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint ;\n previousFingerprint = previousFingerprint ;\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\nfunction _getExceptionFromEvent(event) {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\nexport { _shouldDropEvent, dedupeIntegration };\n","import { getCurrentScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { logger, consoleSandbox } from './utils-hoist/logger.js';\n\n/** A class object that can instantiate Client objects. */\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nfunction initAndBind(\n clientClass,\n options,\n) {\n if (options.debug === true) {\n if (DEBUG_BUILD) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n });\n }\n }\n const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n const client = new clientClass(options);\n setCurrentClient(client);\n client.init();\n return client;\n}\n\n/**\n * Make the given client the current client.\n */\nfunction setCurrentClient(client) {\n getCurrentScope().setClient(client);\n}\n\nexport { initAndBind, setCurrentClient };\n","import { makeDsn, dsnToString } from './utils-hoist/dsn.js';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn) {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn, sdkInfo) {\n const params = {\n sentry_version: SENTRY_API_VERSION,\n };\n\n if (dsn.publicKey) {\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n params.sentry_key = dsn.publicKey;\n }\n\n if (sdkInfo) {\n params.sentry_client = `${sdkInfo.name}/${sdkInfo.version}`;\n }\n\n return new URLSearchParams(params).toString();\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nfunction getEnvelopeEndpointWithUrlEncodedAuth(dsn, tunnel, sdkInfo) {\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nfunction getReportDialogEndpoint(\n dsnLike,\n dialogOptions\n\n,\n) {\n const dsn = makeDsn(dsnLike);\n if (!dsn) {\n return '';\n }\n\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'onClose') {\n continue;\n }\n\n if (key === 'user') {\n const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint };\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { consoleSandbox, logger } from './logger.js';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol) {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nfunction dsnToString(dsn, withPassword = false) {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nfunction dsnFromString(str) {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n // This should be logged to the console\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(`Invalid Sentry Dsn: ${str}`);\n });\n return undefined;\n }\n\n const [protocol, publicKey, pass = '', host = '', port = '', lastPath = ''] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() ;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey });\n}\n\nfunction dsnFromComponents(components) {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn) {\n if (!DEBUG_BUILD) {\n return true;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n const hasMissingRequiredComponent = requiredComponents.find(component => {\n if (!dsn[component]) {\n logger.error(`Invalid Sentry Dsn: ${component} missing`);\n return true;\n }\n return false;\n });\n\n if (hasMissingRequiredComponent) {\n return false;\n }\n\n if (!projectId.match(/^\\d+$/)) {\n logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n return false;\n }\n\n if (!isValidProtocol(protocol)) {\n logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n return false;\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n logger.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n return false;\n }\n\n return true;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nfunction makeDsn(from) {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n if (!components || !validateDsn(components)) {\n return undefined;\n }\n return components;\n}\n\nexport { dsnFromString, dsnToString, makeDsn };\n","import { dsnToString } from './dsn.js';\nimport { normalize } from './normalize.js';\nimport { dropUndefinedKeys } from './object.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction createEnvelope(headers, items = []) {\n return [headers, items] ;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction addItemToEnvelope(envelope, newItem) {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] ;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n *\n * If the callback returns true, the rest of the items will be skipped.\n */\nfunction forEachEnvelopeItem(\n envelope,\n callback,\n) {\n const envelopeItems = envelope[1];\n\n for (const envelopeItem of envelopeItems) {\n const envelopeItemType = envelopeItem[0].type;\n const result = callback(envelopeItem, envelopeItemType);\n\n if (result) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nfunction envelopeContainsItemType(envelope, types) {\n return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8 array.\n */\nfunction encodeUTF8(input) {\n return GLOBAL_OBJ.__SENTRY__ && GLOBAL_OBJ.__SENTRY__.encodePolyfill\n ? GLOBAL_OBJ.__SENTRY__.encodePolyfill(input)\n : new TextEncoder().encode(input);\n}\n\n/**\n * Decode a UTF8 array to string.\n */\nfunction decodeUTF8(input) {\n return GLOBAL_OBJ.__SENTRY__ && GLOBAL_OBJ.__SENTRY__.decodePolyfill\n ? GLOBAL_OBJ.__SENTRY__.decodePolyfill(input)\n : new TextDecoder().decode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nfunction serializeEnvelope(envelope) {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts = JSON.stringify(envHeaders);\n\n function append(next) {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch (e) {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.stringify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers) {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Parses an envelope\n */\nfunction parseEnvelope(env) {\n let buffer = typeof env === 'string' ? encodeUTF8(env) : env;\n\n function readBinary(length) {\n const bin = buffer.subarray(0, length);\n // Replace the buffer with the remaining data excluding trailing newline\n buffer = buffer.subarray(length + 1);\n return bin;\n }\n\n function readJson() {\n let i = buffer.indexOf(0xa);\n // If we couldn't find a newline, we must have found the end of the buffer\n if (i < 0) {\n i = buffer.length;\n }\n\n return JSON.parse(decodeUTF8(readBinary(i))) ;\n }\n\n const envelopeHeader = readJson();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items = [];\n\n while (buffer.length) {\n const itemHeader = readJson();\n const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n }\n\n return [envelopeHeader, items];\n}\n\n/**\n * Creates envelope item for a single span\n */\nfunction createSpanEnvelopeItem(spanJson) {\n const spanHeaders = {\n type: 'span',\n };\n\n return [spanHeaders, spanJson];\n}\n\n/**\n * Creates attachment envelope items\n */\nfunction createAttachmentEnvelopeItem(attachment) {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n profile: 'profile',\n profile_chunk: 'profile',\n replay_event: 'replay',\n replay_recording: 'replay',\n check_in: 'monitor',\n feedback: 'feedback',\n span: 'span',\n statsd: 'metric_bucket',\n raw_security: 'security',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nfunction envelopeItemTypeToDataCategory(type) {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n/** Extracts the minimal SDK info from the metadata or an events */\nfunction getSdkMetadataForEnvelopeHeader(metadataOrEvent) {\n if (!metadataOrEvent || !metadataOrEvent.sdk) {\n return;\n }\n const { name, version } = metadataOrEvent.sdk;\n return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nfunction createEventEnvelopeHeaders(\n event,\n sdkInfo,\n tunnel,\n dsn,\n) {\n const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext;\n return {\n event_id: event.event_id ,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n ...(dynamicSamplingContext && {\n trace: dropUndefinedKeys({ ...dynamicSamplingContext }),\n }),\n };\n}\n\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, createSpanEnvelopeItem, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope };\n","import { getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext.js';\nimport { dsnToString } from './utils-hoist/dsn.js';\nimport { getSdkMetadataForEnvelopeHeader, createEnvelope, createEventEnvelopeHeaders, createSpanEnvelopeItem } from './utils-hoist/envelope.js';\nimport './utils-hoist/debug-build.js';\nimport './utils-hoist/logger.js';\nimport { spanToJSON, showSpanDropWarning } from './utils/spanUtils.js';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event, sdkInfo) {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n return event;\n}\n\n/** Creates an envelope from a Session */\nfunction createSessionEnvelope(\n session,\n dsn,\n metadata,\n tunnel,\n) {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n const envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n };\n\n const envelopeItem =\n 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nfunction createEventEnvelope(\n event,\n dsn,\n metadata,\n tunnel,\n) {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n /*\n Note: Due to TS, event.type may be `replay_event`, theoretically.\n In practice, we never call `createEventEnvelope` with `replay_event` type,\n and we'd have to adjust a looot of types to make this work properly.\n We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n So the safe choice is to really guard against the replay_event type here.\n */\n const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete event.sdkProcessingMetadata;\n\n const eventItem = [{ type: eventType }, event];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\n/**\n * Create envelope from Span item.\n *\n * Takes an optional client and runs spans through `beforeSendSpan` if available.\n */\nfunction createSpanEnvelope(spans, client) {\n function dscHasRequiredProps(dsc) {\n return !!dsc.trace_id && !!dsc.public_key;\n }\n\n // For the moment we'll obtain the DSC from the first span in the array\n // This might need to be changed if we permit sending multiple spans from\n // different segments in one envelope\n const dsc = getDynamicSamplingContextFromSpan(spans[0]);\n\n const dsn = client && client.getDsn();\n const tunnel = client && client.getOptions().tunnel;\n\n const headers = {\n sent_at: new Date().toISOString(),\n ...(dscHasRequiredProps(dsc) && { trace: dsc }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n };\n\n const beforeSendSpan = client && client.getOptions().beforeSendSpan;\n const convertToSpanJSON = beforeSendSpan\n ? (span) => {\n const spanJson = beforeSendSpan(spanToJSON(span) );\n if (!spanJson) {\n showSpanDropWarning();\n }\n return spanJson;\n }\n : (span) => spanToJSON(span);\n\n const items = [];\n for (const span of spans) {\n const spanJson = convertToSpanJSON(span);\n if (spanJson) {\n items.push(createSpanEnvelopeItem(spanJson));\n }\n }\n\n return createEnvelope(headers, items);\n}\n\nexport { createEventEnvelope, createSessionEnvelope, createSpanEnvelope };\n","/** An error emitted by Sentry SDKs and related utilities. */\nclass SentryError extends Error {\n\n constructor(\n message,\n logLevel = 'warn',\n ) {\n super(message);this.message = message;\n this.logLevel = logLevel;\n }\n}\n\nexport { SentryError };\n","import { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { getTraceContextFromScope, getCurrentScope, getIsolationScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { setupIntegration, afterSetupIntegrations, setupIntegrations } from './integration.js';\nimport { updateSession } from './session.js';\nimport { getDynamicSamplingContextFromScope } from './tracing/dynamicSamplingContext.js';\nimport { createClientReportEnvelope } from './utils-hoist/clientreport.js';\nimport { makeDsn, dsnToString } from './utils-hoist/dsn.js';\nimport { addItemToEnvelope, createAttachmentEnvelopeItem } from './utils-hoist/envelope.js';\nimport { SentryError } from './utils-hoist/error.js';\nimport { isPrimitive, isThenable, isPlainObject, isParameterizedString } from './utils-hoist/is.js';\nimport { logger, consoleSandbox } from './utils-hoist/logger.js';\nimport { uuid4, checkOrSetAlreadyCaught } from './utils-hoist/misc.js';\nimport { resolvedSyncPromise, SyncPromise, rejectedSyncPromise } from './utils-hoist/syncpromise.js';\nimport { parseSampleRate } from './utils/parseSampleRate.js';\nimport { prepareEvent } from './utils/prepareEvent.js';\nimport { showSpanDropWarning } from './utils/spanUtils.js';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient<NodeOptions> {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nclass BaseClient {\n /** Options passed to the SDK. */\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n\n /** Array of set up integrations. */\n\n /** Number of calls being processed */\n\n /** Holds flushable */\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n constructor(options) {\n this._options = options;\n this._integrations = {};\n this._numProcessing = 0;\n this._outcomes = {};\n this._hooks = {};\n this._eventProcessors = [];\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n } else {\n DEBUG_BUILD && logger.warn('No DSN provided, client will not send events.');\n }\n\n if (this._dsn) {\n const url = getEnvelopeEndpointWithUrlEncodedAuth(\n this._dsn,\n options.tunnel,\n options._metadata ? options._metadata.sdk : undefined,\n );\n this._transport = options.transport({\n tunnel: this._options.tunnel,\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n }\n\n // TODO(v9): Remove this deprecation warning\n const tracingOptions = ['enableTracing', 'tracesSampleRate', 'tracesSampler'] ;\n const undefinedOption = tracingOptions.find(option => option in options && options[option] == undefined);\n if (undefinedOption) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] Deprecation warning: \\`${undefinedOption}\\` is set to undefined, which leads to tracing being enabled. In v9, a value of \\`undefined\\` will result in tracing being disabled.`,\n );\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint, scope) {\n const eventId = uuid4();\n\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return eventId;\n }\n\n const hintWithEventId = {\n event_id: eventId,\n ...hint,\n };\n\n this._process(\n this.eventFromException(exception, hintWithEventId).then(event =>\n this._captureEvent(event, hintWithEventId, scope),\n ),\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n level,\n hint,\n currentScope,\n ) {\n const hintWithEventId = {\n event_id: uuid4(),\n ...hint,\n };\n\n const eventMessage = isParameterizedString(message) ? message : String(message);\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(eventMessage, level, hintWithEventId)\n : this.eventFromException(message, hintWithEventId);\n\n this._process(promisedEvent.then(event => this._captureEvent(event, hintWithEventId, currentScope)));\n\n return hintWithEventId.event_id;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint, currentScope) {\n const eventId = uuid4();\n\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return eventId;\n }\n\n const hintWithEventId = {\n event_id: eventId,\n ...hint,\n };\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanScope = sdkProcessingMetadata.capturedSpanScope;\n\n this._process(this._captureEvent(event, hintWithEventId, capturedSpanScope || currentScope));\n\n return hintWithEventId.event_id;\n }\n\n /**\n * @inheritDoc\n */\n captureSession(session) {\n if (!(typeof session.release === 'string')) {\n DEBUG_BUILD && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n getDsn() {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n getOptions() {\n return this._options;\n }\n\n /**\n * @see SdkMetadata\n *\n * @return The metadata of the SDK\n */\n getSdkMetadata() {\n return this._options._metadata;\n }\n\n /**\n * @inheritDoc\n */\n getTransport() {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n flush(timeout) {\n const transport = this._transport;\n if (transport) {\n this.emit('flush');\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n close(timeout) {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n this.emit('close');\n return result;\n });\n }\n\n /** Get all installed event processors. */\n getEventProcessors() {\n return this._eventProcessors;\n }\n\n /** @inheritDoc */\n addEventProcessor(eventProcessor) {\n this._eventProcessors.push(eventProcessor);\n }\n\n /** @inheritdoc */\n init() {\n if (\n this._isEnabled() ||\n // Force integrations to be setup even if no DSN was set when we have\n // Spotlight enabled. This is particularly important for browser as we\n // don't support the `spotlight` option there and rely on the users\n // adding the `spotlightBrowserIntegration()` to their integrations which\n // wouldn't get initialized with the check below when there's no DSN set.\n this._options.integrations.some(({ name }) => name.startsWith('Spotlight'))\n ) {\n this._setupIntegrations();\n }\n }\n\n /**\n * Gets an installed integration by its name.\n *\n * @returns The installed integration or `undefined` if no integration with that `name` was installed.\n */\n getIntegrationByName(integrationName) {\n return this._integrations[integrationName] ;\n }\n\n /**\n * @inheritDoc\n */\n addIntegration(integration) {\n const isAlreadyInstalled = this._integrations[integration.name];\n\n // This hook takes care of only installing if not already installed\n setupIntegration(this, integration, this._integrations);\n // Here we need to check manually to make sure to not run this multiple times\n if (!isAlreadyInstalled) {\n afterSetupIntegrations(this, [integration]);\n }\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint = {}) {\n this.emit('beforeSendEvent', event, hint);\n\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(env, createAttachmentEnvelopeItem(attachment));\n }\n\n const promise = this.sendEnvelope(env);\n if (promise) {\n promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n }\n }\n\n /**\n * @inheritDoc\n */\n sendSession(session) {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(env);\n }\n\n /**\n * @inheritDoc\n */\n recordDroppedEvent(reason, category, eventOrCount) {\n if (this._options.sendClientReports) {\n // TODO v9: We do not need the `event` passed as third argument anymore, and can possibly remove this overload\n // If event is passed as third argument, we assume this is a count of 1\n const count = typeof eventOrCount === 'number' ? eventOrCount : 1;\n\n // We want to track each category (error, transaction, session, replay_event) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial<Record<SentryRequestType, Partial<Record<Outcome, number>>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n DEBUG_BUILD && logger.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : ''}`);\n this._outcomes[key] = (this._outcomes[key] || 0) + count;\n }\n }\n\n // Keep on() & emit() signatures in sync with types' client.ts interface\n /* eslint-disable @typescript-eslint/unified-signatures */\n\n /** @inheritdoc */\n\n /** @inheritdoc */\n on(hook, callback) {\n const hooks = (this._hooks[hook] = this._hooks[hook] || []);\n\n // @ts-expect-error We assume the types are correct\n hooks.push(callback);\n\n // This function returns a callback execution handler that, when invoked,\n // deregisters a callback. This is crucial for managing instances where callbacks\n // need to be unregistered to prevent self-referencing in callback closures,\n // ensuring proper garbage collection.\n return () => {\n // @ts-expect-error We assume the types are correct\n const cbIndex = hooks.indexOf(callback);\n if (cbIndex > -1) {\n hooks.splice(cbIndex, 1);\n }\n };\n }\n\n /** @inheritdoc */\n\n /** @inheritdoc */\n emit(hook, ...rest) {\n const callbacks = this._hooks[hook];\n if (callbacks) {\n callbacks.forEach(callback => callback(...rest));\n }\n }\n\n /**\n * @inheritdoc\n */\n sendEnvelope(envelope) {\n this.emit('beforeEnvelope', envelope);\n\n if (this._isEnabled() && this._transport) {\n return this._transport.send(envelope).then(null, reason => {\n DEBUG_BUILD && logger.error('Error while sending envelope:', reason);\n return reason;\n });\n }\n\n DEBUG_BUILD && logger.error('Transport disabled');\n\n return resolvedSyncPromise({});\n }\n\n /* eslint-enable @typescript-eslint/unified-signatures */\n\n /** Setup integrations for this client. */\n _setupIntegrations() {\n const { integrations } = this._options;\n this._integrations = setupIntegrations(this, integrations);\n afterSetupIntegrations(this, integrations);\n }\n\n /** Updates existing session based on the provided event */\n _updateSessionFromEvent(session, event) {\n let crashed = event.level === 'fatal';\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n _isClientDoneProcessing(timeout) {\n return new SyncPromise(resolve => {\n let ticked = 0;\n const tick = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a transport is present. */\n _isEnabled() {\n return this.getOptions().enabled !== false && this._transport !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param currentScope A scope containing event metadata.\n * @returns A new event with more information.\n */\n _prepareEvent(\n event,\n hint,\n currentScope = getCurrentScope(),\n isolationScope = getIsolationScope(),\n ) {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations.length > 0) {\n hint.integrations = integrations;\n }\n\n this.emit('preprocessEvent', event, hint);\n\n if (!event.type) {\n isolationScope.setLastEventId(event.event_id || hint.event_id);\n }\n\n return prepareEvent(options, event, hint, currentScope, this, isolationScope).then(evt => {\n if (evt === null) {\n return evt;\n }\n\n evt.contexts = {\n trace: getTraceContextFromScope(currentScope),\n ...evt.contexts,\n };\n\n const dynamicSamplingContext = getDynamicSamplingContextFromScope(this, currentScope);\n\n evt.sdkProcessingMetadata = {\n dynamicSamplingContext,\n ...evt.sdkProcessingMetadata,\n };\n\n return evt;\n });\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n _captureEvent(event, hint = {}, scope) {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if (DEBUG_BUILD) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n if (reason instanceof SentryError && reason.logLevel === 'log') {\n logger.log(reason.message);\n } else {\n logger.warn(reason);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param currentScope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n _processEvent(event, hint, currentScope) {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n const parsedSampleRate = typeof sampleRate === 'undefined' ? undefined : parseSampleRate(sampleRate);\n if (isError && typeof parsedSampleRate === 'number' && Math.random() > parsedSampleRate) {\n this.recordDroppedEvent('sample_rate', 'error', event);\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n const dataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanIsolationScope = sdkProcessingMetadata.capturedSpanIsolationScope;\n\n return this._prepareEvent(event, hint, currentScope, capturedSpanIsolationScope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory, event);\n throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n }\n\n const isInternalException = hint.data && (hint.data ).__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(this, options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory, event);\n if (isTransaction) {\n const spans = event.spans || [];\n // the transaction itself counts as one span, plus all the child spans that are added\n const spanCount = 1 + spans.length;\n this.recordDroppedEvent('before_send', 'span', spanCount);\n }\n throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n }\n\n const session = currentScope && currentScope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n if (isTransaction) {\n const spanCountBefore =\n (processedEvent.sdkProcessingMetadata && processedEvent.sdkProcessingMetadata.spanCountBeforeProcessing) ||\n 0;\n const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0;\n\n const droppedSpanCount = spanCountBefore - spanCountAfter;\n if (droppedSpanCount > 0) {\n this.recordDroppedEvent('before_send', 'span', droppedSpanCount);\n }\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n _process(promise) {\n this._numProcessing++;\n void promise.then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n return reason;\n },\n );\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n _clearOutcomes() {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.entries(outcomes).map(([key, quantity]) => {\n const [reason, category] = key.split(':') ;\n return {\n reason,\n category,\n quantity,\n };\n });\n }\n\n /**\n * Sends client reports as an envelope.\n */\n _flushOutcomes() {\n DEBUG_BUILD && logger.log('Flushing outcomes...');\n\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n DEBUG_BUILD && logger.log('No outcomes to send');\n return;\n }\n\n // This is really the only place where we want to check for a DSN and only send outcomes then\n if (!this._dsn) {\n DEBUG_BUILD && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n DEBUG_BUILD && logger.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(envelope);\n }\n\n /**\n * @inheritDoc\n */\n\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult,\n beforeSendLabel,\n) {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw new SentryError(invalidValueError);\n }\n return event;\n },\n e => {\n throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw new SentryError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n client,\n options,\n event,\n hint,\n) {\n const { beforeSend, beforeSendTransaction, beforeSendSpan } = options;\n\n if (isErrorEvent(event) && beforeSend) {\n return beforeSend(event, hint);\n }\n\n if (isTransactionEvent(event)) {\n if (event.spans && beforeSendSpan) {\n const processedSpans = [];\n for (const span of event.spans) {\n const processedSpan = beforeSendSpan(span);\n if (processedSpan) {\n processedSpans.push(processedSpan);\n } else {\n showSpanDropWarning();\n client.recordDroppedEvent('before_send', 'span');\n }\n }\n event.spans = processedSpans;\n }\n\n if (beforeSendTransaction) {\n if (event.spans) {\n // We store the # of spans before processing in SDK metadata,\n // so we can compare it afterwards to determine how many spans were dropped\n const spanCountBefore = event.spans.length;\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n spanCountBeforeProcessing: spanCountBefore,\n };\n }\n return beforeSendTransaction(event, hint);\n }\n }\n\n return event;\n}\n\nfunction isErrorEvent(event) {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event) {\n return event.type === 'transaction';\n}\n\nexport { BaseClient };\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { logger } from '../utils-hoist/logger.js';\n\n/**\n * Parse a sample rate from a given value.\n * This will either return a boolean or number sample rate, if the sample rate is valid (between 0 and 1).\n * If a string is passed, we try to convert it to a number.\n *\n * Any invalid sample rate will return `undefined`.\n */\nfunction parseSampleRate(sampleRate) {\n if (typeof sampleRate === 'boolean') {\n return Number(sampleRate);\n }\n\n const rate = typeof sampleRate === 'string' ? parseFloat(sampleRate) : sampleRate;\n if (typeof rate !== 'number' || isNaN(rate) || rate < 0 || rate > 1) {\n DEBUG_BUILD &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n sampleRate,\n )} of type ${JSON.stringify(typeof sampleRate)}.`,\n );\n return undefined;\n }\n\n return rate;\n}\n\nexport { parseSampleRate };\n","import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n discarded_events,\n dsn,\n timestamp,\n) {\n const clientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n","import { SDK_VERSION } from '../utils-hoist/version.js';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nfunction applySdkMetadata(options, name, names = [name], source = 'npm') {\n const metadata = options._metadata || {};\n\n if (!metadata.sdk) {\n metadata.sdk = {\n name: `sentry.javascript.${name}`,\n packages: names.map(name => ({\n name: `${source}:@sentry/${name}`,\n version: SDK_VERSION,\n })),\n version: SDK_VERSION,\n };\n }\n\n options._metadata = metadata;\n}\n\nexport { applySdkMetadata };\n","import { BaseClient, getSDKSource, applySdkMetadata, logger } from '@sentry/core';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { WINDOW } from './helpers.js';\nimport { createUserFeedbackEnvelope } from './userfeedback.js';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/core Options for more information.\n */\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nclass BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n constructor(options) {\n const opts = {\n // We default this to true, as it is the safer scenario\n parentSpanIsAlwaysRootSpan: true,\n ...options,\n };\n const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n applySdkMetadata(opts, 'browser', ['browser'], sdkSource);\n\n super(opts);\n\n if (opts.sendClientReports && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n if (WINDOW.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n eventFromException(exception, hint) {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n eventFromMessage(\n message,\n level = 'info',\n hint,\n ) {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * Sends user feedback to Sentry.\n *\n * @deprecated Use `captureFeedback` instead.\n */\n captureUserFeedback(feedback) {\n if (!this._isEnabled()) {\n DEBUG_BUILD && logger.warn('SDK not enabled, will not capture user feedback.');\n return;\n }\n\n const envelope = createUserFeedbackEnvelope(feedback, {\n metadata: this.getSdkMetadata(),\n dsn: this.getDsn(),\n tunnel: this.getOptions().tunnel,\n });\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(envelope);\n }\n\n /**\n * @inheritDoc\n */\n _prepareEvent(event, hint, scope) {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n}\n\nexport { BrowserClient };\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nfunction isBrowserBundle() {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nfunction getSDKSource() {\n // This comment is used to identify this line in the CDN bundle build step and replace this with \"return 'cdn';\"\n /* __SENTRY_SDK_SOURCE__ */ return 'npm';\n}\n\nexport { getSDKSource, isBrowserBundle };\n","import { dsnToString, createEnvelope } from '@sentry/core';\n\n/**\n * Creates an envelope from a user feedback.\n */\nfunction createUserFeedbackEnvelope(\n feedback,\n {\n metadata,\n tunnel,\n dsn,\n }\n\n,\n) {\n const headers = {\n event_id: feedback.event_id,\n sent_at: new Date().toISOString(),\n ...(metadata &&\n metadata.sdk && {\n sdk: {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n },\n }),\n ...(!!tunnel && !!dsn && { dsn: dsnToString(dsn) }),\n };\n const item = createUserFeedbackEnvelopeItem(feedback);\n\n return createEnvelope(headers, [item]);\n}\n\nfunction createUserFeedbackEnvelopeItem(feedback) {\n const feedbackHeaders = {\n type: 'user_report',\n };\n return [feedbackHeaders, feedback];\n}\n\nexport { createUserFeedbackEnvelope };\n","import { defineIntegration, fill, getFunctionName, getOriginalFunction } from '@sentry/core';\nimport { WINDOW, wrap } from '../helpers.js';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'BroadcastChannel',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'SharedWorker',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\nconst INTEGRATION_NAME = 'BrowserApiErrors';\n\nconst _browserApiErrorsIntegration = ((options = {}) => {\n const _options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n // TODO: This currently only works for the first client this is setup\n // We may want to adjust this to check for client etc.\n setupOnce() {\n if (_options.setTimeout) {\n fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n }\n\n if (_options.setInterval) {\n fill(WINDOW, 'setInterval', _wrapTimeFunction);\n }\n\n if (_options.requestAnimationFrame) {\n fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (_options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = _options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n },\n };\n}) ;\n\n/**\n * Wrap timer functions and event targets to catch errors and provide better meta data.\n */\nconst browserApiErrorsIntegration = defineIntegration(_browserApiErrorsIntegration);\n\nfunction _wrapTimeFunction(original) {\n return function ( ...args) {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: false,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\nfunction _wrapRAF(original) {\n return function ( callback) {\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: false,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\nfunction _wrapXHR(originalSend) {\n return function ( ...args) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n fill(xhr, prop, function (original) {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: false,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before BrowserApiErrors, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\nfunction _wrapEventTarget(target) {\n const globalObject = WINDOW ;\n const targetObj = globalObject[target];\n const proto = targetObj && targetObj.prototype;\n\n // eslint-disable-next-line no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original)\n\n {\n return function ( eventName, fn, options) {\n try {\n if (isEventListenerObject(fn)) {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: false,\n type: 'instrument',\n },\n });\n }\n } catch (e2) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n wrap(fn, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: false,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(proto, 'removeEventListener', function (originalRemoveEventListener)\n\n {\n return function ( eventName, fn, options) {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n try {\n const originalEventHandler = (fn ).__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, fn, options);\n };\n });\n}\n\nfunction isEventListenerObject(obj) {\n return typeof (obj ).handleEvent === 'function';\n}\n\nexport { browserApiErrorsIntegration };\n","import { createStackParser, UNKNOWN_FUNCTION } from '@sentry/core';\n\n// This was originally forked from https://github.com/csnover/TraceKit, and was largely\n// re - written as part of raven - js.\n//\n// This code was later copied to the JavaScript mono - repo and further modified and\n// refactored over the years.\n\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename, func, lineno, colno) {\n const frame = {\n filename,\n function: func === '<anonymous>' ? UNKNOWN_FUNCTION : func,\n in_app: true, // All browser frames are considered in_app\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// This regex matches frames that have no function name (ie. are at the top level of a module).\n// For example \"at http://localhost:5000//script.js:1:126\"\n// Frames _with_ function names usually look as follows: \"at commitLayoutEffects (react-dom.development.js:23426:1)\"\nconst chromeRegexNoFnName = /^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i;\n\n// This regex matches all the frames that have a function name.\nconst chromeRegex =\n /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\n// We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments\n// See: https://github.com/getsentry/sentry-javascript/issues/6880\nconst chromeStackParserFn = line => {\n // If the stack line has no function name, we need to parse it differently\n const noFnParts = chromeRegexNoFnName.exec(line) ;\n\n if (noFnParts) {\n const [, filename, line, col] = noFnParts;\n return createFrame(filename, UNKNOWN_FUNCTION, +line, +col);\n }\n\n const parts = chromeRegex.exec(line) ;\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]) ;\n\n if (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\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nconst chromeStackLineParser = [CHROME_PRIORITY, chromeStackParserFn];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko = line => {\n const parts = geckoREgex.exec(line) ;\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]) ;\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nconst geckoStackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs = line => {\n const parts = winjsRegex.exec(line) ;\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nconst winjsStackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10 = line => {\n const parts = opera10Regex.exec(line) ;\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nconst opera10StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11 = line => {\n const parts = opera11Regex.exec(line) ;\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nconst opera11StackLineParser = [OPERA11_PRIORITY, opera11];\n\nconst defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser];\n\nconst defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func, filename) => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? (func.split('@')[0] ) : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n\nexport { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser };\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n","import { isNativeFunction, logger } from '@sentry/core';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { WINDOW } from './types.js';\n\n/**\n * We generally want to use window.fetch / window.setTimeout.\n * However, in some cases this may be wrapped (e.g. by Zone.js for Angular),\n * so we try to get an unpatched version of this from a sandboxed iframe.\n */\n\nconst cachedImplementations = {};\n\n/**\n * Get the native implementation of a browser function.\n *\n * This can be used to ensure we get an unwrapped version of a function, in cases where a wrapped function can lead to problems.\n *\n * The following methods can be retrieved:\n * - `setTimeout`: This can be wrapped by e.g. Angular, causing change detection to be triggered.\n * - `fetch`: This can be wrapped by e.g. ad-blockers, causing an infinite loop when a request is blocked.\n */\nfunction getNativeImplementation(\n name,\n) {\n const cached = cachedImplementations[name];\n if (cached) {\n return cached;\n }\n\n let impl = WINDOW[name] ;\n\n // Fast path to avoid DOM I/O\n if (isNativeFunction(impl)) {\n return (cachedImplementations[name] = impl.bind(WINDOW) );\n }\n\n const document = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow[name]) {\n impl = contentWindow[name] ;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n // Could not create sandbox iframe, just use window.xxx\n DEBUG_BUILD && logger.warn(`Could not create sandbox iframe for ${name} check, bailing to window.${name}: `, e);\n }\n }\n\n // Sanity check: This _should_ not happen, but if it does, we just skip caching...\n // This can happen e.g. in tests where fetch may not be available in the env, or similar.\n if (!impl) {\n return impl;\n }\n\n return (cachedImplementations[name] = impl.bind(WINDOW) );\n}\n\n/** Clear a cached implementation. */\nfunction clearCachedImplementation(name) {\n cachedImplementations[name] = undefined;\n}\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nfunction fetch(...rest) {\n return getNativeImplementation('fetch')(...rest);\n}\n\n/**\n * Get an unwrapped `setTimeout` method.\n * This ensures that even if e.g. Angular wraps `setTimeout`, we get the native implementation,\n * avoiding triggering change detection.\n */\nfunction setTimeout(...rest) {\n return getNativeImplementation('setTimeout')(...rest);\n}\n\nexport { clearCachedImplementation, fetch, getNativeImplementation, setTimeout };\n","import { SentryError } from './error.js';\nimport { rejectedSyncPromise, SyncPromise, resolvedSyncPromise } from './syncpromise.js';\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nfunction makePromiseBuffer(limit) {\n const buffer = [];\n\n function isReady() {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike<T>\n * @returns Removed promise.\n */\n function remove(task) {\n return buffer.splice(buffer.indexOf(task), 1)[0] || Promise.resolve(undefined);\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike<T>; In previous versions this used to be `task:\n * PromiseLike<T>`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer) {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout) {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n\nexport { makePromiseBuffer };\n","// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\n\nconst DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nfunction parseRetryAfterHeader(header, now = Date.now()) {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nfunction disabledUntil(limits, dataCategory) {\n return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nfunction isRateLimited(limits, dataCategory, now = Date.now()) {\n return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nfunction updateRateLimits(\n limits,\n { statusCode, headers },\n now = Date.now(),\n) {\n const updatedRateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n * <header>,<header>,..\n * where each <header> is of the form\n * <retry_after>: <categories>: <scope>: <reason_code>: <namespaces>\n * where\n * <retry_after> is a delay in seconds\n * <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * <category>;<category>;...\n * <scope> is what's being limited (org, project, or key) - ignored by SDK\n * <reason_code> is an arbitrary string like \"org_quota\" - ignored by SDK\n * <namespaces> Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected.\n * Only present if rate limit applies to the metric_bucket data category.\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories, , , namespaces] = limit.split(':', 5) ;\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n if (category === 'metric_bucket') {\n // namespaces will be present when category === 'metric_bucket'\n if (!namespaces || namespaces.split(';').includes('custom')) {\n updatedRateLimits[category] = now + delay;\n }\n } else {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits };\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { forEachEnvelopeItem, envelopeItemTypeToDataCategory, createEnvelope, serializeEnvelope } from '../utils-hoist/envelope.js';\nimport { SentryError } from '../utils-hoist/error.js';\nimport { logger } from '../utils-hoist/logger.js';\nimport { makePromiseBuffer } from '../utils-hoist/promisebuffer.js';\nimport { isRateLimited, updateRateLimits } from '../utils-hoist/ratelimit.js';\nimport { resolvedSyncPromise } from '../utils-hoist/syncpromise.js';\n\nconst DEFAULT_TRANSPORT_BUFFER_SIZE = 64;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nfunction createTransport(\n options,\n makeRequest,\n buffer = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n) {\n let rateLimits = {};\n const flush = (timeout) => buffer.drain(timeout);\n\n function send(envelope) {\n const filteredEnvelopeItems = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const dataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, dataCategory)) {\n const event = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent('ratelimit_backoff', dataCategory, event);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise({});\n }\n\n const filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems );\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason) => {\n forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n const event = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event);\n });\n };\n\n const requestTask = () =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n DEBUG_BUILD && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n return response;\n },\n error => {\n recordEnvelopeLoss('network_error');\n throw error;\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n DEBUG_BUILD && logger.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise({});\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n\nfunction getEventForEnvelopeItem(item, type) {\n if (type !== 'event' && type !== 'transaction') {\n return undefined;\n }\n\n return Array.isArray(item) ? (item )[1] : undefined;\n}\n\nexport { DEFAULT_TRANSPORT_BUFFER_SIZE, createTransport };\n","import { getNativeImplementation, clearCachedImplementation } from '@sentry-internal/browser-utils';\nimport { createTransport, rejectedSyncPromise } from '@sentry/core';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nfunction makeFetchTransport(\n options,\n nativeFetch = getNativeImplementation('fetch'),\n) {\n let pendingBodySize = 0;\n let pendingCount = 0;\n\n function makeRequest(request) {\n const requestSize = request.body.length;\n pendingBodySize += requestSize;\n pendingCount++;\n\n const requestOptions = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n // frequently sending events right before the user is switching pages (eg. when finishing navigation transactions).\n // Gotchas:\n // - `keepalive` isn't supported by Firefox\n // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n // If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n // We will therefore only activate the flag when we're below that limit.\n // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n keepalive: pendingBodySize <= 60000 && pendingCount < 15,\n ...options.fetchOptions,\n };\n\n if (!nativeFetch) {\n clearCachedImplementation('fetch');\n return rejectedSyncPromise('No fetch implementation available');\n }\n\n try {\n // TODO: This may need a `suppressTracing` call in the future when we switch the browser SDK to OTEL\n return nativeFetch(options.url, requestOptions).then(response => {\n pendingBodySize -= requestSize;\n pendingCount--;\n return {\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n };\n });\n } catch (e) {\n clearCachedImplementation('fetch');\n pendingBodySize -= requestSize;\n pendingCount--;\n return rejectedSyncPromise(e);\n }\n }\n\n return createTransport(options, makeRequest);\n}\n\nexport { makeFetchTransport };\n","import { inboundFiltersIntegration, functionToStringIntegration, dedupeIntegration, consoleSandbox, supportsFetch, logger, stackParserFromStackParserOptions, getIntegrationsToSetup, initAndBind, getCurrentScope, lastEventId, getReportDialogEndpoint, getClient } from '@sentry/core';\nimport { BrowserClient } from './client.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { WINDOW } from './helpers.js';\nimport { breadcrumbsIntegration } from './integrations/breadcrumbs.js';\nimport { browserApiErrorsIntegration } from './integrations/browserapierrors.js';\nimport { browserSessionIntegration } from './integrations/browsersession.js';\nimport { globalHandlersIntegration } from './integrations/globalhandlers.js';\nimport { httpContextIntegration } from './integrations/httpcontext.js';\nimport { linkedErrorsIntegration } from './integrations/linkederrors.js';\nimport { defaultStackParser } from './stack-parsers.js';\nimport { makeFetchTransport } from './transports/fetch.js';\n\n/** Get the default integrations for the browser SDK. */\nfunction getDefaultIntegrations(options) {\n /**\n * Note: Please make sure this stays in sync with Angular SDK, which re-exports\n * `getDefaultIntegrations` but with an adjusted set of integrations.\n */\n const integrations = [\n inboundFiltersIntegration(),\n functionToStringIntegration(),\n browserApiErrorsIntegration(),\n breadcrumbsIntegration(),\n globalHandlersIntegration(),\n linkedErrorsIntegration(),\n dedupeIntegration(),\n httpContextIntegration(),\n ];\n\n // eslint-disable-next-line deprecation/deprecation\n if (options.autoSessionTracking !== false) {\n integrations.push(browserSessionIntegration());\n }\n\n return integrations;\n}\n\nfunction applyDefaultOptions(optionsArg = {}) {\n const defaultOptions = {\n defaultIntegrations: getDefaultIntegrations(optionsArg),\n release:\n typeof __SENTRY_RELEASE__ === 'string' // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n ? __SENTRY_RELEASE__\n : WINDOW.SENTRY_RELEASE && WINDOW.SENTRY_RELEASE.id // This supports the variable that sentry-webpack-plugin injects\n ? WINDOW.SENTRY_RELEASE.id\n : undefined,\n autoSessionTracking: true,\n sendClientReports: true,\n };\n\n // TODO: Instead of dropping just `defaultIntegrations`, we should simply\n // call `dropUndefinedKeys` on the entire `optionsArg`.\n // However, for this to work we need to adjust the `hasTracingEnabled()` logic\n // first as it differentiates between `undefined` and the key not being in the object.\n if (optionsArg.defaultIntegrations == null) {\n delete optionsArg.defaultIntegrations;\n }\n\n return { ...defaultOptions, ...optionsArg };\n}\n\nfunction shouldShowBrowserExtensionError() {\n const windowWithMaybeExtension =\n typeof WINDOW.window !== 'undefined' && (WINDOW );\n if (!windowWithMaybeExtension) {\n // No need to show the error if we're not in a browser window environment (e.g. service workers)\n return false;\n }\n\n const extensionKey = windowWithMaybeExtension.chrome ? 'chrome' : 'browser';\n const extensionObject = windowWithMaybeExtension[extensionKey];\n\n const runtimeId = extensionObject && extensionObject.runtime && extensionObject.runtime.id;\n const href = (WINDOW.location && WINDOW.location.href) || '';\n\n const extensionProtocols = ['chrome-extension:', 'moz-extension:', 'ms-browser-extension:', 'safari-web-extension:'];\n\n // Running the SDK in a dedicated extension page and calling Sentry.init is fine; no risk of data leakage\n const isDedicatedExtensionPage =\n !!runtimeId && WINDOW === WINDOW.top && extensionProtocols.some(protocol => href.startsWith(`${protocol}//`));\n\n // Running the SDK in NW.js, which appears like a browser extension but isn't, is also fine\n // see: https://github.com/getsentry/sentry-javascript/issues/12668\n const isNWjs = typeof windowWithMaybeExtension.nw !== 'undefined';\n\n return !!runtimeId && !isDedicatedExtensionPage && !isNWjs;\n}\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nfunction init(browserOptions = {}) {\n const options = applyDefaultOptions(browserOptions);\n\n if (!options.skipBrowserExtensionCheck && shouldShowBrowserExtensionError()) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(\n '[Sentry] You cannot run Sentry this way in a browser extension, check: https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/',\n );\n });\n return;\n }\n\n if (DEBUG_BUILD) {\n if (!supportsFetch()) {\n logger.warn(\n 'No Fetch API detected. The Sentry SDK requires a Fetch API compatible environment to send events. Please add a Fetch API polyfill.',\n );\n }\n }\n const clientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || makeFetchTransport,\n };\n\n return initAndBind(BrowserClient, clientOptions);\n}\n\n/**\n * All properties the report dialog supports\n */\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nfunction showReportDialog(options = {}) {\n // doesn't work without a document (React Native)\n if (!WINDOW.document) {\n DEBUG_BUILD && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const scope = getCurrentScope();\n const client = scope.getClient();\n const dsn = client && client.getDsn();\n\n if (!dsn) {\n DEBUG_BUILD && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n const eventId = lastEventId();\n if (eventId) {\n options.eventId = eventId;\n }\n }\n\n const script = WINDOW.document.createElement('script');\n script.async = true;\n script.crossOrigin = 'anonymous';\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n const { onClose } = options;\n if (onClose) {\n const reportDialogClosedMessageHandler = (event) => {\n if (event.data === '__sentry_reportdialog_closed__') {\n try {\n onClose();\n } finally {\n WINDOW.removeEventListener('message', reportDialogClosedMessageHandler);\n }\n }\n };\n WINDOW.addEventListener('message', reportDialogClosedMessageHandler);\n }\n\n const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n DEBUG_BUILD && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction forceLoad() {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction onLoad(callback) {\n callback();\n}\n\n/**\n * Captures user feedback and sends it to Sentry.\n *\n * @deprecated Use `captureFeedback` instead.\n */\nfunction captureUserFeedback(feedback) {\n const client = getClient();\n if (client) {\n // eslint-disable-next-line deprecation/deprecation\n client.captureUserFeedback(feedback);\n }\n}\n\nexport { captureUserFeedback, forceLoad, getDefaultIntegrations, init, onLoad, showReportDialog };\n","import * as Sentry from '@sentry/browser';\nimport { breadcrumbsIntegration, globalHandlersIntegration, linkedErrorsIntegration, httpContextIntegration, browserSessionIntegration, init as init$1, setContext, browserTracingIntegration as browserTracingIntegration$1, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, getClient, startBrowserTracingNavigationSpan, startInactiveSpan, getCurrentScope, getActiveSpan, getRootSpan } from '@sentry/browser';\nexport * from '@sentry/browser';\nimport * as i0 from '@angular/core';\nimport { VERSION, Injectable, Inject, Directive, Input, NgModule } from '@angular/core';\nimport { inboundFiltersIntegration, functionToStringIntegration, dedupeIntegration, applySdkMetadata, logger, isString, consoleSandbox, stripUrlQueryAndFragment, timestampInSeconds } from '@sentry/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport * as i1 from '@angular/router';\nimport { NavigationStart, ResolveEnd, NavigationEnd, NavigationCancel, NavigationError } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { filter, tap } from 'rxjs/operators';\n\n/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * We define \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during our, or the user's\n * build process. Take care when introducing new flags - they must not throw if they are not replaced. See the Debug\n * Build Flags section in CONTRIBUTING.md.\n */\n/** Flag that is true for debug builds, false otherwise. */\nconst IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n\n/**\n * Get the default integrations for the Angular SDK.\n */\nfunction getDefaultIntegrations(options = {}) {\n // Don't include the BrowserApiErrors integration as it interferes with the Angular SDK's `ErrorHandler`:\n // BrowserApiErrors would catch certain errors before they reach the `ErrorHandler` and\n // thus provide a lower fidelity error than what `SentryErrorHandler`\n // (see errorhandler.ts) would provide.\n //\n // see:\n // - https://github.com/getsentry/sentry-javascript/issues/5417#issuecomment-1453407097\n // - https://github.com/getsentry/sentry-javascript/issues/2744\n const integrations = [\n inboundFiltersIntegration(),\n functionToStringIntegration(),\n breadcrumbsIntegration(),\n globalHandlersIntegration(),\n linkedErrorsIntegration(),\n dedupeIntegration(),\n httpContextIntegration(),\n ];\n // eslint-disable-next-line deprecation/deprecation\n if (options.autoSessionTracking !== false) {\n integrations.push(browserSessionIntegration());\n }\n return integrations;\n}\n/**\n * Inits the Angular SDK\n */\nfunction init(options) {\n const opts = {\n defaultIntegrations: getDefaultIntegrations(),\n ...options,\n };\n applySdkMetadata(opts, 'angular');\n checkAndSetAngularVersion();\n return init$1(opts);\n}\nfunction checkAndSetAngularVersion() {\n const ANGULAR_MINIMUM_VERSION = 14;\n const angularVersion = VERSION && VERSION.major ? parseInt(VERSION.major, 10) : undefined;\n if (angularVersion) {\n if (angularVersion < ANGULAR_MINIMUM_VERSION) {\n IS_DEBUG_BUILD &&\n logger.warn(`This Sentry SDK does not officially support Angular ${angularVersion}.`, `This SDK only supports Angular ${ANGULAR_MINIMUM_VERSION} and above.`, \"If you're using lower Angular versions, check the Angular Version Compatibility table in our docs: https://docs.sentry.io/platforms/javascript/guides/angular/#angular-version-compatibility.\", 'Otherwise, please consider upgrading your Angular version.');\n }\n setContext('angular', { version: angularVersion });\n }\n}\n\n// In Angular 17 and future versions, zoneless support is forthcoming.\n// Therefore, it's advisable to safely check whether the `run` function is\n// available in the `<root>` context.\n// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\nconst isNgZoneEnabled = typeof Zone !== 'undefined' && Zone.root && Zone.root.run;\n/**\n * The function that does the same job as `NgZone.runOutsideAngular`.\n *\n * ⚠️ Note: All of the Sentry functionality called from inside the Angular\n * execution context must be wrapped in this function. Angular's rendering\n * relies on asynchronous tasks being scheduled within its execution context.\n * Since Sentry schedules tasks that do not interact with Angular's rendering,\n * it may prevent Angular from functioning reliably. Consequently, it may disrupt\n * processes such as server-side rendering or client-side hydration.\n */\nfunction runOutsideAngular(callback) {\n // Running the `callback` within the root execution context enables Angular\n // processes (such as SSR and hydration) to continue functioning normally without\n // timeouts and delays that could affect the user experience. This approach is\n // necessary because some of the Sentry functionality continues to run in the background.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return isNgZoneEnabled ? Zone.root.run(callback) : callback();\n}\n\n// https://github.com/angular/angular/blob/master/packages/core/src/util/errors.ts\nfunction tryToUnwrapZonejsError(error) {\n // TODO: once Angular14 is the minimum requirement ERROR_ORIGINAL_ERROR and\n // getOriginalError from error.ts can be used directly.\n return error && error.ngOriginalError\n ? error.ngOriginalError\n : error;\n}\nfunction extractHttpModuleError(error) {\n // The `error` property of http exception can be either an `Error` object, which we can use directly...\n if (isErrorOrErrorLikeObject(error.error)) {\n return error.error;\n }\n // ... or an`ErrorEvent`, which can provide us with the message but no stack...\n // guarding `ErrorEvent` against `undefined` as it's not defined in Node environments\n if (typeof ErrorEvent !== 'undefined' && error.error instanceof ErrorEvent && error.error.message) {\n return error.error.message;\n }\n // ...or the request body itself, which we can use as a message instead.\n if (typeof error.error === 'string') {\n return `Server returned code ${error.status} with body \"${error.error}\"`;\n }\n // If we don't have any detailed information, fallback to the request message itself.\n return error.message;\n}\nfunction isErrorOrErrorLikeObject(value) {\n if (value instanceof Error) {\n return true;\n }\n if (value === null || typeof value !== 'object') {\n return false;\n }\n const candidate = value;\n return (isString(candidate.name) &&\n isString(candidate.message) &&\n (undefined === candidate.stack || isString(candidate.stack)));\n}\n/**\n * Implementation of Angular's ErrorHandler provider that can be used as a drop-in replacement for the stock one.\n */\nclass SentryErrorHandler {\n constructor(options) {\n this._options = {\n logErrors: true,\n ...options,\n };\n }\n /**\n * Method executed when the injector is destroyed.\n */\n ngOnDestroy() {\n if (this._removeAfterSendEventListener) {\n this._removeAfterSendEventListener();\n }\n }\n /**\n * Method called for every value captured through the ErrorHandler\n */\n handleError(error) {\n const extractedError = this._extractError(error) || 'Handled unknown error';\n // Capture handled exception and send it to Sentry.\n const eventId = runOutsideAngular(() => Sentry.captureException(extractedError, {\n mechanism: { type: 'angular', handled: false },\n }));\n // When in development mode, log the error to console for immediate feedback.\n if (this._options.logErrors) {\n // eslint-disable-next-line no-console\n consoleSandbox(() => console.error(extractedError));\n }\n // Optionally show user dialog to provide details on what happened.\n if (this._options.showDialog) {\n const client = Sentry.getClient();\n if (client && !this._removeAfterSendEventListener) {\n this._removeAfterSendEventListener = client.on('afterSendEvent', (event) => {\n if (!event.type && event.event_id) {\n runOutsideAngular(() => {\n Sentry.showReportDialog({ ...this._options.dialogOptions, eventId: event.event_id });\n });\n }\n });\n }\n else if (!client) {\n runOutsideAngular(() => {\n Sentry.showReportDialog({ ...this._options.dialogOptions, eventId });\n });\n }\n }\n }\n /**\n * Used to pull a desired value that will be used to capture an event out of the raw value captured by ErrorHandler.\n */\n _extractError(error) {\n // Allow custom overrides of extracting function\n if (this._options.extractor) {\n const defaultExtractor = this._defaultExtractor.bind(this);\n return this._options.extractor(error, defaultExtractor);\n }\n return this._defaultExtractor(error);\n }\n /**\n * Default implementation of error extraction that handles default error wrapping, HTTP responses, ErrorEvent and few other known cases.\n */\n _defaultExtractor(errorCandidate) {\n const error = tryToUnwrapZonejsError(errorCandidate);\n // If it's http module error, extract as much information from it as we can.\n if (error instanceof HttpErrorResponse) {\n return extractHttpModuleError(error);\n }\n // We can handle messages and Error objects directly.\n if (typeof error === 'string' || isErrorOrErrorLikeObject(error)) {\n return error;\n }\n // Nothing was extracted, fallback to default error message.\n return null;\n }\n}\nSentryErrorHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: SentryErrorHandler, deps: [{ token: 'errorHandlerOptions' }], target: i0.ɵɵFactoryTarget.Injectable });\nSentryErrorHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: SentryErrorHandler, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: SentryErrorHandler, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: ['errorHandlerOptions']\n }] }]; } });\n/**\n * Factory function that creates an instance of a preconfigured ErrorHandler provider.\n */\nfunction createErrorHandler(config) {\n return new SentryErrorHandler(config);\n}\n\nconst ANGULAR_ROUTING_OP = 'ui.angular.routing';\nconst ANGULAR_INIT_OP = 'ui.angular.init';\nconst ANGULAR_OP = 'ui.angular';\n\nlet instrumentationInitialized;\n/**\n * A custom browser tracing integration for Angular.\n *\n * Use this integration in combination with `TraceService`\n */\nfunction browserTracingIntegration(options = {}) {\n // If the user opts out to set this up, we just don't initialize this.\n // That way, the TraceService will not actually do anything, functionally disabling this.\n if (options.instrumentNavigation !== false) {\n instrumentationInitialized = true;\n }\n return browserTracingIntegration$1({\n ...options,\n instrumentNavigation: false,\n });\n}\n/**\n * This function is extracted to make unit testing easier.\n */\nfunction _updateSpanAttributesForParametrizedUrl(route, span) {\n const attributes = (span && spanToJSON(span).data) || {};\n if (span && attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'url') {\n span.updateName(route);\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'route');\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, `auto.${spanToJSON(span).op}.angular`);\n }\n}\n/**\n * Angular's Service responsible for hooking into Angular Router and tracking current navigation process.\n * Creates a new transaction for every route change and measures a duration of routing process.\n */\nclass TraceService {\n constructor(_router) {\n this._router = _router;\n this.navStart$ = this._router.events.pipe(filter((event) => event instanceof NavigationStart), tap(navigationEvent => {\n if (!instrumentationInitialized) {\n IS_DEBUG_BUILD &&\n logger.error('Angular integration has tracing enabled, but Tracing integration is not configured');\n return;\n }\n if (this._routingSpan) {\n this._routingSpan.end();\n this._routingSpan = null;\n }\n const client = getClient();\n const strippedUrl = stripUrlQueryAndFragment(navigationEvent.url);\n if (client) {\n // see comment in `_isPageloadOngoing` for rationale\n if (!this._isPageloadOngoing()) {\n runOutsideAngular(() => {\n startBrowserTracingNavigationSpan(client, {\n name: strippedUrl,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.navigation.angular',\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n },\n });\n });\n }\n else {\n // The first time we end up here, we set the pageload flag to false\n // Subsequent navigations are going to get their own navigation root span\n // even if the pageload root span is still ongoing.\n this._pageloadOngoing = false;\n }\n this._routingSpan =\n runOutsideAngular(() => startInactiveSpan({\n name: `${navigationEvent.url}`,\n op: ANGULAR_ROUTING_OP,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ui.angular',\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n url: strippedUrl,\n ...(navigationEvent.navigationTrigger && {\n navigationTrigger: navigationEvent.navigationTrigger,\n }),\n },\n })) || null;\n return;\n }\n }));\n // The ResolveEnd event is fired when the Angular router has resolved the URL and\n // the parameter<->value mapping. It holds the new resolved router state with\n // the mapping and the new URL.\n // Only After this event, the route is activated, meaning that the transaction\n // can be updated with the parameterized route name before e.g. the route's root\n // component is initialized. This should be early enough before outgoing requests\n // are made from the new route, with the exceptions of requests being made during\n // a navigation.\n this.resEnd$ = this._router.events.pipe(filter((event) => event instanceof ResolveEnd), tap(event => {\n const route = getParameterizedRouteFromSnapshot(event.state.root);\n if (route) {\n getCurrentScope().setTransactionName(route);\n }\n const activeSpan = getActiveSpan();\n const rootSpan = activeSpan && getRootSpan(activeSpan);\n _updateSpanAttributesForParametrizedUrl(route, rootSpan);\n }));\n this.navEnd$ = this._router.events.pipe(filter(event => event instanceof NavigationEnd || event instanceof NavigationCancel || event instanceof NavigationError), tap(() => {\n if (this._routingSpan) {\n runOutsideAngular(() => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._routingSpan.end();\n });\n this._routingSpan = null;\n }\n }));\n this._routingSpan = null;\n this._pageloadOngoing = true;\n this._subscription = new Subscription();\n this._subscription.add(this.navStart$.subscribe());\n this._subscription.add(this.resEnd$.subscribe());\n this._subscription.add(this.navEnd$.subscribe());\n }\n /**\n * This is used to prevent memory leaks when the root view is created and destroyed multiple times,\n * since `subscribe` callbacks capture `this` and prevent many resources from being GC'd.\n */\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n /**\n * We only _avoid_ creating a navigation root span in one case:\n *\n * There is an ongoing pageload span AND the router didn't yet emit the first navigation start event\n *\n * The first navigation start event will create the child routing span\n * and update the pageload root span name on ResolveEnd.\n *\n * There's an edge case we need to avoid here: If the router fires the first navigation start event\n * _after_ the pageload root span finished. This is why we check for the pageload root span.\n * Possible real-world scenario: Angular application and/or router is bootstrapped after the pageload\n * idle root span finished\n *\n * The overall rationale is:\n * - if we already avoided creating a navigation root span once, we don't avoid it again\n * (i.e. set `_pageloadOngoing` to `false`)\n * - if `_pageloadOngoing` is already `false`, create a navigation root span\n * - if there's no active/pageload root span, create a navigation root span\n * - only if there's an ongoing pageload root span AND `_pageloadOngoing` is still `true,\n * don't create a navigation root span\n */\n _isPageloadOngoing() {\n if (!this._pageloadOngoing) {\n // pageload is already finished, no need to update\n return false;\n }\n const activeSpan = getActiveSpan();\n if (!activeSpan) {\n this._pageloadOngoing = false;\n return false;\n }\n const rootSpan = getRootSpan(activeSpan);\n this._pageloadOngoing = spanToJSON(rootSpan).op === 'pageload';\n return this._pageloadOngoing;\n }\n}\nTraceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: TraceService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });\nTraceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: TraceService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: TraceService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Router }]; } });\n/**\n * Captures the initialization lifecycle of the component this directive is applied to.\n * Specifically, this directive measures the time between `ngOnInit` and `ngAfterViewInit`\n * of the component.\n *\n * Falls back to the component's selector if no name is provided.\n *\n * @example\n * ```html\n * <app-my-component trace=\"myComponent\"></app-my-component>\n * ```\n */\nclass TraceDirective {\n constructor(_host) {\n this._host = _host;\n }\n /**\n * Implementation of OnInit lifecycle method\n * @inheritdoc\n */\n ngOnInit() {\n if (!this.componentName) {\n // Technically, the `trace` binding should always be provided.\n // However, if it is incorrectly declared on the element without a\n // value (e.g., `<app-component trace />`), we fall back to using `tagName`\n // (which is e.g. `APP-COMPONENT`).\n this.componentName = this._host.nativeElement.tagName.toLowerCase();\n }\n if (getActiveSpan()) {\n this._tracingSpan = runOutsideAngular(() => startInactiveSpan({\n name: `<${this.componentName}>`,\n op: ANGULAR_INIT_OP,\n attributes: { [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ui.angular.trace_directive' },\n }));\n }\n }\n /**\n * Implementation of AfterViewInit lifecycle method\n * @inheritdoc\n */\n ngAfterViewInit() {\n const span = this._tracingSpan;\n if (span) {\n runOutsideAngular(() => span.end());\n }\n }\n}\nTraceDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: TraceDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nTraceDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.3.0\", type: TraceDirective, selector: \"[trace]\", inputs: { componentName: [\"trace\", \"componentName\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: TraceDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[trace]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { componentName: [{\n type: Input,\n args: ['trace']\n }] } });\n/**\n * A module serves as a single compilation unit for the `TraceDirective` and can be re-used by any other module.\n */\nclass TraceModule {\n}\nTraceModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: TraceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTraceModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.3.0\", ngImport: i0, type: TraceModule, declarations: [TraceDirective], exports: [TraceDirective] });\nTraceModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: TraceModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.3.0\", ngImport: i0, type: TraceModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [TraceDirective],\n exports: [TraceDirective],\n }]\n }] });\n/**\n * Decorator function that can be used to capture initialization lifecycle of the whole component.\n */\nfunction TraceClass(options) {\n let tracingSpan;\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n return target => {\n const originalOnInit = target.prototype.ngOnInit;\n target.prototype.ngOnInit = function (...args) {\n tracingSpan = runOutsideAngular(() => startInactiveSpan({\n onlyIfParent: true,\n name: `<${options && options.name ? options.name : 'unnamed'}>`,\n op: ANGULAR_INIT_OP,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ui.angular.trace_class_decorator',\n },\n }));\n if (originalOnInit) {\n return originalOnInit.apply(this, args);\n }\n };\n const originalAfterViewInit = target.prototype.ngAfterViewInit;\n target.prototype.ngAfterViewInit = function (...args) {\n if (tracingSpan) {\n runOutsideAngular(() => tracingSpan.end());\n }\n if (originalAfterViewInit) {\n return originalAfterViewInit.apply(this, args);\n }\n };\n };\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n}\n/**\n * Decorator function that can be used to capture a single lifecycle methods of the component.\n */\nfunction TraceMethod(options) {\n return (_target, propertyKey, descriptor) => {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args) {\n const now = timestampInSeconds();\n runOutsideAngular(() => {\n startInactiveSpan({\n onlyIfParent: true,\n name: `<${options && options.name ? options.name : 'unnamed'}>`,\n op: `${ANGULAR_OP}.${String(propertyKey)}`,\n startTime: now,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ui.angular.trace_method_decorator',\n },\n }).end(now);\n });\n if (originalMethod) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalMethod.apply(this, args);\n }\n };\n return descriptor;\n };\n}\n/**\n * Takes the parameterized route from a given ActivatedRouteSnapshot and concatenates the snapshot's\n * child route with its parent to produce the complete parameterized URL of the activated route.\n * This happens recursively until the last child (i.e. the end of the URL) is reached.\n *\n * @param route the ActivatedRouteSnapshot of which its path and its child's path is concatenated\n *\n * @returns the concatenated parameterized route string\n */\nfunction getParameterizedRouteFromSnapshot(route) {\n const parts = [];\n let currentRoute = route && route.firstChild;\n while (currentRoute) {\n const path = currentRoute && currentRoute.routeConfig && currentRoute.routeConfig.path;\n if (path === null || path === undefined) {\n break;\n }\n parts.push(path);\n currentRoute = currentRoute.firstChild;\n }\n const fullPath = parts.filter(part => part).join('/');\n return fullPath ? `/${fullPath}/` : '/';\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SentryErrorHandler, TraceClass, TraceDirective, TraceMethod, TraceModule, TraceService, browserTracingIntegration, createErrorHandler, getDefaultIntegrations, init };\n","export const noSentryErrorMessage: string = 'noSentryErrorMessage';\n\nexport class NoSentryError extends Error {\n noSentry = true;\n constructor() {\n super(noSentryErrorMessage);\n\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, NoSentryError.prototype);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { I360Config } from 'app/utils/config/config';\nimport { BehaviorSubject, Observable, filter } from 'rxjs';\nimport { AdminConfigType } from 'app/utils/config/admin-config';\n\n\n\n@Injectable()\nexport class ConfigRef {\n config: I360Config;\n _configChange = new BehaviorSubject<AdminConfigType | null>(null);\n configChange: Observable<AdminConfigType> = this._configChange.pipe(\n // typescript can not determine if function is predicate..\n filter((data): data is AdminConfigType => data !== null),\n );\n constructor() {}\n\n setConfig(config: I360Config) {\n this.config = config;\n config.changes.subscribe((config) => {\n this._configChange.next(config);\n });\n }\n}\n","import { ErrorHandler, Injectable, Inject } from '@angular/core';\nimport * as Sentry from '@sentry/angular';\nimport { StackFrame, Transport, BaseTransportOptions } from '@sentry/core';\nimport { noSentryErrorMessage } from '../errors';\nimport { Panel } from 'app/utils/panel';\nimport { AuthState } from 'app/services/auth-state';\nimport { TranslateService } from 'app/utils/translate/translate.service';\nimport { ConfigRef } from 'app/core/config-ref';\nimport { AppState } from 'app/core/app.service';\n\nconst URL_FOR_ASSETS = 'http://10.192.48.25:8000/fs/assets-by-version';\n\n@Injectable()\nexport class RootErrorHandler implements ErrorHandler {\n constructor(public configRef: ConfigRef,\n private panel: Panel,\n private appState: AppState,\n private authState: AuthState,\n @Inject('Window') private window: Window,\n private translateService: TranslateService) {\n this.configRef.configChange.subscribe(config => {\n this.tryInitSentry(config);\n });\n }\n\n log(msg: string) {\n // do not log in karma\n if (typeof I360_HEADLESS === 'undefined') {\n console.log(msg);\n }\n }\n\n /**\n * method needed to allow track its call in tests\n * but ravenjs breaks tests down\n */\n tryInitSentry(config) {\n try {\n if (config.ERROR_REPORTING.enable) {\n this.initSentry();\n } else {\n this.terminateSentry();\n }\n } catch (e) {\n // ERROR_REPORTING section is not present\n }\n }\n initSentry() {\n if (typeof I360_HEADLESS !== 'undefined' || TEST) {\n return;\n }\n\n if (Sentry.getClient()) {\n if (!this.appState.sentryActive) {\n this.appState.sentryActive = true;\n this.log('SENTRY resumed');\n }\n return;\n }\n\n Sentry.init({\n dsn: 'https://6369d23c9e9b48a2af3f56c2bd639c24@im360.sentry.cloudlinux.com/18',\n release: VERSION,\n integrations: [\n Sentry.globalHandlersIntegration({\n onerror: true, // Capture global errors\n onunhandledrejection: false, // Do not capture unhandled promise rejections\n }),\n ],\n transport: makeBeaconTransport,\n tracesSampleRate: 1,\n ignoreErrors: [\n noSentryErrorMessage,\n \"Cannot read properties of null (reading 'firstChild')\",\n \"Cannot read properties of null (reading 'shadowRoot')\",\n \"t is null\",\n ],\n beforeSend: (event, hint) => {\n const originalError = hint?.originalException as any;\n\n if (originalError?.name === 'HttpErrorResponse') {\n const statusesToSkip = [0, 502, 500];\n if (statusesToSkip.includes(originalError.status)) {\n return null;\n }\n }\n\n if (event.exception?.values?.[0]?.stacktrace?.frames) {\n event.exception.values[0].stacktrace.frames =\n event.exception.values[0].stacktrace.frames.map((frame: StackFrame) => ({\n ...frame,\n filename: this.fixPaths(frame.filename)\n }));\n }\n\n if (event.request && event.request.headers) {\n for (const key of Object.keys(event.request.headers)) {\n if (['password', 'chunk'].includes(key.toLowerCase())) {\n event.request.headers[key] = '[REDACTED]';\n }\n }\n }\n\n if (event.request && event.request.data) {\n for (const key of Object.keys(event.request.data)) {\n if (['password', 'chunk'].includes(key.toLowerCase())) {\n event.request.data[key] = '[REDACTED]';\n }\n }\n }\n\n return event;\n },\n beforeBreadcrumb: breadcrumb => {\n // Filter out XHR breadcrumbs\n if (breadcrumb.category === 'xhr') {\n return null;\n }\n return breadcrumb;\n },\n initialScope: {\n tags: {\n role: this.authState.role.value,\n panel: this.panel.name,\n lang: this.translateService.currentLang,\n panelLang: this.translateService.panelLang || this.translateService.currentLang,\n }\n },\n maxBreadcrumbs: 50,\n autoSessionTracking: false\n });\n\n console.assert(Sentry.getClient() !== undefined, 'Sentry did not setup');\n this.log('SENTRY initialized');\n this.appState.sentryActive = true;\n }\n\n terminateSentry() {\n if (Sentry.getClient()) {\n Sentry.close()\n .then(() => {\n this.log('SENTRY terminated');\n this.appState.sentryActive = false;\n });\n }\n }\n\n private fixPaths(text?: string): string | undefined {\n // Bundles and sourcemaps are not retrievable for sentry due to cpanel auth and IP\n // restrictions, so we replace paths with the path to UI build server\n if (!text || !VERSION || !RELEASE) {\n return text;\n }\n const uiVersion = `${VERSION}-${RELEASE}`;\n\n return text.replace(\n /https?:\\/\\/.*\\/imunify(?:360|av)?\\/assets\\/static\\//g,\n `${URL_FOR_ASSETS}/${uiVersion}/assets/static/`,\n );\n }\n\n public handleError(error: any): void {\n if (this.panel.isPlesk && !this.window.location.href.includes('imunify')) {\n // skip errors in Plesk, when the plugin is hidden\n return;\n }\n\n this.log('handle error');\n if (error.noSentry || (error.rejection && error.rejection.noSentry)) {\n return;\n }\n\n if (TEST || !this.appState.sentryActive) {\n throw error;\n }\n\n let originalError = error.originalError;\n if (!originalError) {\n if (error.originalStack) {\n // Sometimes \"originalError\" is missing,\n // but we still have \"originalStack\" and \"message\"\n originalError = new Error(error.message);\n originalError.name = error.name || originalError.name;\n originalError.stack = error.originalStack;\n } else {\n originalError = error;\n }\n }\n Sentry.captureException(originalError);\n }\n\n}\n\nfunction makeBeaconTransport(options: BaseTransportOptions): Transport {\n function makeRequest(request: { body: string }) {\n return new Promise<{ statusCode: number }>(resolve => {\n const success = navigator.sendBeacon(options.url, request.body);\n resolve({\n statusCode: success ? 200 : 0,\n });\n });\n }\n\n return Sentry.createTransport(options, makeRequest);\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { OverlayContainer } from '@angular/cdk/overlay';\nimport { Platform } from '@angular/cdk/platform';\nimport { AppState } from 'app/core/app.service';\n\n@Injectable()\nexport class I360OverlayContainer extends OverlayContainer implements OnDestroy {\n constructor(\n private platform: Platform,\n private appState: AppState,\n ) {\n super(document, platform);\n }\n protected _createContainer() {\n if (this.appState.overlayContainer) { // use one overlay for the whole app\n this._containerElement = this.appState.overlayContainer;\n } else {\n super._createContainer();\n const app = document.querySelector('.i360-app-outer');\n if (app) {\n app.appendChild(this._containerElement);\n }\n this.appState.overlayContainer = this._containerElement;\n }\n }\n\n // no-op, do not remove the container, because it is used by other SPAs too\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n ngOnDestroy() {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable, filter, switchMap, take } from 'rxjs';\nimport { AuthState } from 'app/services/auth-state';\nimport { postOnly } from 'app/interceptors/utils';\nimport { I360Role } from 'app/services/auth';\n\ndeclare const clientAction: string;\ndeclare const adminAction: string;\n\n@Injectable()\nexport class UrlInterceptor implements HttpInterceptor {\n constructor(\n private authState: AuthState,\n ) {}\n\n @postOnly\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n // this code should be present in xhr.\n if (req.url.startsWith('http')) { // role matters only for requests to the Agent\n return next.handle(req);\n }\n return this.authState.role.pipe(\n // `UrlInterceptor` may get triggered in the middle of `AuthState.role.next(...)` call.\n // Make sure it waits until the role is either `admin` or `client` before choosing\n // the `adminAction`/`clientAction` base URL.\n // Login requests can be performed regardless of the role.\n filter(role => role !== I360Role.none || req.body?.method?.[0] === 'login'),\n take(1),\n switchMap(role => {\n const newUrl = (role === I360Role.admin ? adminAction : clientAction) + req.url;\n return next.handle(req.clone({url: newUrl}))\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { postOnly } from 'app/interceptors/utils';\n\n@Injectable()\nexport class JsonHeaderInterceptor implements HttpInterceptor {\n @postOnly\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n let headers;\n if (!(req.body instanceof FormData)) {\n headers = req.headers\n .set('Content-type', 'application/json; charset=utf-8');\n }\n return next.handle(req.clone({headers}));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { I360TranslateModule } from 'app/utils/translate/translate.module';\nimport { NoContentComponent } from './no-content.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n I360TranslateModule,\n ],\n declarations: [\n NoContentComponent,\n ],\n exports: [\n NoContentComponent,\n ],\n})\nexport class I360NoContentModule { }\n","import {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n HttpResponse,\n} from '@angular/common/http';\nimport { throwError as _throw, Observable, catchError, tap } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport * as Sentry from '@sentry/angular';\n\nconst truncateLongValues = data => {\n if (data && typeof data === 'object') {\n Object.entries(data).forEach(([key, value]: any[]) => {\n if (typeof value === 'string' && value.length > 100) {\n data[key] = value.slice(0, 100) + '*****';\n }\n if (Array.isArray(value) && value.length > 5) {\n value.length = 5;\n value.push('*****');\n }\n truncateLongValues(value);\n });\n }\n return data;\n};\nconst captureRequest = (data: any) => {\n Sentry.addBreadcrumb({\n message: 'XHR started',\n category: 'action',\n data,\n level: 'info'\n });\n};\n\nconst captureResponse = (response: any) => {\n const data = truncateLongValues(JSON.parse(JSON.stringify(response)));\n Sentry.addBreadcrumb({\n message: 'XHR finished',\n category: 'action',\n data,\n level: 'info'\n });\n};\n\n@Injectable()\nexport class SentryInterceptor implements HttpInterceptor {\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n captureRequest({\n requestBody: req.body,\n url: req.urlWithParams,\n });\n return next.handle(req).pipe(\n tap(res => {\n if (res instanceof HttpResponse) {\n captureResponse({\n responseBody: res.body,\n requestBody: req.body,\n url: req.urlWithParams,\n });\n }\n }),\n catchError(e => {\n captureResponse(e);\n Sentry.captureException(e);\n return _throw(e);\n }),\n );\n }\n}\n","import { AgentResponse, DataFrom, ExtendedRequestParams } from './misc';\n\n\nexport interface InstallationStatus {\n log: string;\n offset: number;\n}\n\ntype InstallationStatusAgentResponse = AgentResponse<{items: InstallationStatus}>;\n\nexport class InstallationAPI {\n\n static start = () => <ExtendedRequestParams<undefined>> {\n command: 'installation',\n method: ['start'],\n params: {},\n }\n\n static status = ({offset, limit}: {offset: number, limit: number}) => <ExtendedRequestParams<\n DataFrom<InstallationStatusAgentResponse>>> {\n command: 'installation',\n method: ['status'],\n params: { offset, limit },\n }\n}\n","import { InstallationAPI, InstallationStatus } from '@imunify360-api/installation';\nimport { Injectable } from '@angular/core';\nimport { XHR } from 'app/utils/xhr/xhr';\nimport { ExtendedRequestParams, DataFrom, AgentResponse } from '@imunify360-api/misc';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InstallationBackendService {\n constructor(public xhr: XHR) {}\n\n status = this.xhr.rx(InstallationAPI.status);\n start = this.xhr.rx(InstallationAPI.start);\n\n upgradeStatus({offset, limit}: {offset: number, limit: number}) {\n const statusApi = ({offset, limit}: {offset: number, limit: number}) => <ExtendedRequestParams<\n DataFrom<AgentResponse<{items: InstallationStatus}>>>> {\n method: ['upgrading', 'status'],\n params: { offset, limit },\n };\n\n return this.xhr.rx(statusApi, false, false)({ offset, limit });\n }\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse, } from '@angular/common/http';\nimport { Injectable, Injector } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AgentResponse, AgentStatus } from '@imunify360-api/misc';\nimport { InstallationBackendService } from 'app/components/installation/installation-backend.service';\nimport { AppState } from 'app/core/app.service';\nimport { AuthState } from 'app/services/auth-state';\nimport { catchError, EMPTY, Observable, of, share, switchMap } from 'rxjs';\nimport { postOnly } from './utils';\nimport { Panel } from 'app/utils/panel';\nimport { NotificationsService } from 'app/services/notifications';\nimport { Package } from '@imunify360-api/license';\n\nconst systemErrorMessage = 'System error 2: No such file or directory';\nconst importErrorMessage = 'Error: No module named';\nexport const logTabUrl = `/installation/progress/log`;\nexport const slidesTabUrl = `/installation/progress/slides`;\nconst installationStopped = `/installation/stopped-service`;\n\n@Injectable()\nexport class ImunifyStatusInterceptor implements HttpInterceptor {\n private getInstallationStatus: Observable<any>;\n\n constructor(\n private router: Router,\n private injector: Injector,\n private appState: AppState,\n private panel: Panel,\n public notifications: NotificationsService,\n ) {}\n\n @postOnly\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n // NOTE: The route at the moment of the request matters, not at the moment of the response.\n // We want to cancel all requests that get non-OK status, except for the ones originated\n // on the installation page itself.\n const route = this.router.url;\n return next.handle(req).pipe(\n catchError((error) => {\n try {\n const errorMessage = (error.error?.includes ? error.error : error.error?.text) || '';\n\n // Here we are processing case when the agent is not completely installed\n if (error?.error?.status) {\n this.updateAndCheckStatus(error.error.status, route);\n return EMPTY;\n }\n if (errorMessage.includes(importErrorMessage)) {\n if (this.appState.imunifyStatus.value !== AgentStatus.INSTALLING) {\n const r = this.updateAndCheckStatus(AgentStatus.NOT_INSTALLED, route);\n if (r) return r;\n }\n }\n if (errorMessage.includes(systemErrorMessage)) {\n if (this.injector.get(AuthState).isClient.value) {\n this.updateAndCheckStatus(AgentStatus.INSTALLING, route);\n return EMPTY;\n }\n if (!this.getInstallationStatus) {\n this.getInstallationStatus = this.injector\n .get(InstallationBackendService).status({\n offset: 0,\n limit : 1,\n }).pipe(share());\n }\n this.getInstallationStatus.subscribe();\n return EMPTY;\n }\n } catch {}\n throw error;\n }),\n switchMap((event) => {\n if (event instanceof HttpResponse) {\n const res: AgentResponse<any> = event.body;\n let status: AgentStatus;\n\n if (\n typeof res.status === 'string'\n && Object.values(AgentStatus).includes(res.status)\n ) {\n this.appState.upgradingInProgress$.next(res.status === AgentStatus.INSTALLING)\n status = res.status;\n } else {\n if (this.appState.upgradingInProgress$.value && this.panel.isPlesk) {\n return EMPTY\n }\n status = AgentStatus.OK;\n if ((res.status as any) === 200) {\n // FIXME: Imunify Email returns HTTP status code instead of AgentStatus\n } else if (res.status) {\n console.warn(\n 'unexpected value for the `status` field in the response:',\n res.status,\n );\n }\n }\n this.updateRPCStatus();\n const result = this.updateAndCheckStatus(status, route);\n this.updateStatusCode((res.status as any));\n if (result) return result;\n }\n\n return of(event);\n }),\n );\n }\n\n\n reload() {\n location.reload();\n }\n /**\n * This method was extracted from previous one because one more place of usage was needed\n * `return EMPTY` means return from parent method. And `return;` looks like analog of `break;`\n */\n private updateAndCheckStatus(status: AgentStatus, route: string): Observable<never>|undefined {\n if (this.appState.imunifyStatus.value !== status) {\n this.appState.imunifyStatus.next(status);\n }\n if (this.checkStandaloneWarning(status)) {\n this.router.navigateByUrl('/standalone-warning', { replaceUrl: true });\n return EMPTY;\n }\n switch (this.appState.imunifyStatus.value) {\n case AgentStatus.OK:\n if (route.startsWith('/installation')) {\n this.router.navigateByUrl('/', { replaceUrl: true }).then(() => this.reload());\n }\n return;\n case AgentStatus.UPGRADING:\n if (!route.startsWith('/installation')) {\n this.router.navigateByUrl(slidesTabUrl, { replaceUrl: true });\n return EMPTY;\n }\n return;\n case AgentStatus.INSTALLING:\n if (!route.startsWith('/installation')) {\n const tabUrl = IMUNIFY_PACKAGE === Package.imunifyAV ? logTabUrl : slidesTabUrl;\n this.router.navigateByUrl(tabUrl, { replaceUrl: true });\n return EMPTY;\n }\n return;\n case AgentStatus.SOCKET_INACCESSIBLE:\n case AgentStatus.NOT_INSTALLED:\n if (route !== '/installation') {\n if (this.injector.get(AuthState).isClient.value) {\n this.router.navigateByUrl(slidesTabUrl, {replaceUrl: true});\n } else {\n this.router.navigateByUrl('/installation', {replaceUrl: true});\n }\n return EMPTY;\n }\n return;\n case AgentStatus.FAILED_TO_INSTALL:\n if (route !== logTabUrl) {\n if (this.injector.get(AuthState).isClient.value) {\n this.router.navigateByUrl(slidesTabUrl, {replaceUrl: true});\n } else {\n this.router.navigateByUrl(logTabUrl, { replaceUrl: true });\n }\n return EMPTY;\n }\n return;\n case AgentStatus.STOPPED:\n this.router.navigateByUrl(installationStopped, {\n replaceUrl: true,\n });\n return EMPTY;\n default:\n return;\n }\n }\n\n private updateRPCStatus(): void {\n if (this.appState.rpcReady$.value === false) {\n this.appState.rpcReady$.next(true);\n }\n }\n\n checkStandaloneWarning(status: AgentStatus): boolean {\n return this.panel.isNoPanel &&\n (status === AgentStatus.NOT_INSTALLED || status === AgentStatus.SOCKET_INACCESSIBLE);\n }\n\n updateStatusCode(status: number) {\n if (this.appState.responseStatusCode.value !== status) {\n this.appState.responseStatusCode.next(status);\n }\n }\n}\n","import { UntypedFormControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\nlet counter = 0;\ntype ExtendedState<E> = {\n value: E,\n allowedValues?: any[],\n disabled?: boolean,\n};\nexport type FormControlState<E> = ExtendedState<E>|E;\nexport class I360FormControl<E> extends UntypedFormControl {\n value: E;\n valueChanges: Observable<E>;\n i360DefaultValue: E;\n /**\n * cases:\n * 1. custom input disabling with ngIf (on-demand-scan => start => trigger advanced)\n * 2. ONLY disable validation if input hidden with ngIf (\n * lists => let dirty ip input => add country submit,\n * lists => let dirty ip input => trigger tabs => ip input has same value\n * disabled-rules => let dirty domains input => change plugin => submit (should not send\n * domains)\n */\n i360DisabledByUser;\n allowedValues: E[];\n readonly i360Id;\n constructor(state: FormControlState<E> | null, validators?, asyncValidators?) {\n let allowedValues;\n if (state && (state as any).allowedValues) {\n state = state as ExtendedState<E>;\n allowedValues = state.allowedValues;\n delete state.allowedValues;\n if (!state.disabled) {\n state = state.value;\n }\n }\n super(state, validators, asyncValidators);\n this.allowedValues = allowedValues;\n this.i360Id = counter++;\n this.i360DefaultValue = JSON.parse(JSON.stringify(state));\n this.disable({i360: true});\n }\n reset(value?: Partial<E>, options?) {\n super.reset(value || this.i360DefaultValue, options);\n this.setErrors(null);\n }\n disable(opts?) {\n if (!opts || !opts.i360) {\n this.i360DisabledByUser = true;\n }\n super.disable(opts);\n }\n enable(opts?) {\n if (!opts || !opts.i360) {\n this.i360DisabledByUser = false;\n }\n if (!this.i360DisabledByUser) {\n super.enable(opts);\n }\n }\n}\n","import { AbstractControl, UntypedFormGroup } from '@angular/forms';\n\ninterface Control<E> extends AbstractControl {\n value: E;\n}\n\ntype Field<E, K extends keyof E> = E[K];\n\nexport type FormGroupConfig<E> = {\n [K in keyof E]: Control<E[K]>;\n};\n\nexport type Value<E, C extends FormGroupConfig<E>> = {\n [K in keyof C]: Field<C[K], 'value'>;\n};\n\nenum MarkAsCmd {\n markAsPristine = 'markAsPristine',\n markAsDirty = 'markAsDirty',\n}\n\nexport class I360FormGroup<E, C extends FormGroupConfig<E>> extends UntypedFormGroup {\n value: Value<E, C>;\n controls: C;\n constructor(controls: C, ...args) {\n super(controls, ...args);\n }\n markAs(cmd: MarkAsCmd, opts?) {\n super[cmd](opts);\n if (opts && opts.children) {\n Object.keys(this.controls).forEach(key => {\n const control = this.controls[key];\n control[cmd]({onlySelf: true, ...opts});\n // this is actually event emitter\n (<any>control.statusChanges).emit(control.value);\n });\n }\n }\n markAsDirty(opts?) {\n this.markAs(MarkAsCmd.markAsDirty, opts);\n }\n markAsPristine(opts?) {\n this.markAs(MarkAsCmd.markAsPristine, opts);\n }\n getDirtyValues(form = this) {\n let dirtyValues = {};\n Object.keys(form.controls)\n .forEach(key => {\n const currentControl = form.controls[key];\n if (currentControl.dirty) {\n dirtyValues[key] = currentControl.controls\n ? this.getDirtyValues(currentControl)\n : currentControl.value;\n }\n });\n return dirtyValues;\n }\n setValue(value: Value<E, C>) {\n return super.setValue(value);\n }\n patchValue(\n value: Partial<Value<E, C>>,\n options?: {onlySelf?: boolean; emitEvent?: boolean; }): void {\n return super.patchValue(value);\n }\n}\n","import { UntypedFormBuilder } from '@angular/forms';\nimport { Injectable } from '@angular/core';\nimport { FormControlState, I360FormControl } from 'app/utils/validator/form-control';\nimport { FormGroupConfig, I360FormGroup } from 'app/utils/validator/form-group';\n\n@Injectable()\nexport class I360FormBuilder extends UntypedFormBuilder {\n control<E>(state: FormControlState<E> | null, validators?, asyncValidators?) {\n return new I360FormControl(state, validators, asyncValidators);\n }\n group<E, C extends FormGroupConfig<E>>(value: C, extra?) {\n const validator = extra != null ? extra['validator'] : null;\n const asyncValidator = extra != null ? extra['asyncValidator'] : null;\n return new I360FormGroup<E, C>(value, validator, asyncValidator);\n }\n}\n","import { Inject, Injectable, InjectionToken, NgZone, OnDestroy } from '@angular/core';\nimport { Observable, Subject, takeUntil, tap } from 'rxjs';\nimport { FormGroupConfig, I360FormGroup } from 'app/utils/validator/form-group';\nimport { I360FormBuilder } from 'app/utils/validator/form-builder';\nimport { SettingsService } from 'app/services/settings';\nimport { ConfigRef } from 'app/core/config-ref';\nimport { TranslateService } from '@ngx-translate/core';\nimport { configsEqual } from 'app/utils/configs-equal';\nimport { LicenseState } from 'app/services/license-state';\nimport { testMode } from 'app/services/misc';\nimport { RequestsState } from 'app/services/requests-state';\nimport { AdminConfigType } from './admin-config';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-denylist, id-match\nexport const GetConfigSchema = new InjectionToken('GetConfigSchema');\nexport type GetSchemaFn = <E>(builder: I360FormBuilder)\n => FormGroupConfig<E>;\n\n\n@Injectable()\nexport class I360Config implements OnDestroy {\n destroyed = new Subject<void>();\n changes: Observable<AdminConfigType> = this.requestsState.config.cache.pipe(\n takeUntil(this.destroyed),\n );\n schema: I360FormGroup<AdminConfigType, FormGroupConfig<AdminConfigType>>;\n constructor(private settingsService: SettingsService,\n private zone: NgZone,\n private formBuilder: I360FormBuilder,\n public translateService: TranslateService,\n public requestsState: RequestsState,\n public licenseState: LicenseState,\n private configRef: ConfigRef,\n @Inject(GetConfigSchema) private getSchema: GetSchemaFn) {\n configRef.setConfig(this);\n this.resetSchema();\n }\n\n /**\n * there are memory leaks in angular/forms,\n * need to reset model after creating new controller\n */\n resetSchema() {\n this.schema = this.formBuilder.group(this.getSchema(this.formBuilder));\n }\n\n save(dirty: boolean = true) {\n const values = dirty ? this.schema.getDirtyValues() : this.schema.value;\n return this.settingsService.saveSettings(values).pipe(\n tap(result => {\n this.schema.markAsPristine({children: true});\n this.zone.runOutsideAngular(() =>\n this.requestsState.config.push.next(result.data.items as AdminConfigType));\n }),\n );\n }\n\n ngOnDestroy() {\n this.destroyed.next();\n }\n\n public formConfirmed(): boolean {\n if (this.licenseState.license.value.status &&\n this.isNotTest() &&\n this.configChanged() &&\n this.confirmNeeded()\n ) {\n return confirm(this.translateService.instant('reload-page'));\n }\n return true;\n }\n\n private configChanged() {\n const originalConfig = this.configRef._configChange.getValue();\n if (!originalConfig) {\n return false;\n }\n return !configsEqual(originalConfig, this.schema.value);\n }\n\n private isNotTest() {\n return !testMode('I360Config');\n }\n\n private confirmNeeded() {\n return !localStorage.getItem('I360_UNSAVED_CONFIG_LEAVING_PAGE_CONFIRM_DISABLED');\n }\n}\n","import * as deepEqual from 'deep-equal';\n\nexport function configsEqual(original = {}, currentConf): boolean {\n const originalConf = JSON.parse(JSON.stringify(original));\n for (const section of Object.keys(originalConf)) {\n if (!(section in currentConf)) {\n delete originalConf[section];\n } else {\n for (const field of Object.keys(originalConf[section])) {\n if (!(field in currentConf[section])) {\n delete originalConf[section][field];\n }\n }\n }\n\n }\n return deepEqual(originalConf, currentConf);\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ExtendedRequestParams } from '@imunify360-api/misc';\nimport { XHR } from 'app/utils/xhr/xhr';\nimport { LicenseAPI, Product } from '@imunify360-api/license';\nimport { AuthState } from 'app/services/auth-state';\nimport { AuthAPI } from '@imunify360-api/auth';\nimport { ConfigRef } from 'app/core/config-ref';\nimport { LicenseState } from './license-state';\n\n@Injectable()\nexport class LicenseService {\n Product = Product;\n register = this.xhr.request(LicenseAPI.register);\n getToken = this.xhr.rx(AuthAPI.get);\n\n constructor(\n public xhr: XHR,\n private router: Router,\n private authState: AuthState,\n private licenseState: LicenseState,\n public configRef: ConfigRef,\n ) {}\n\n get cleanupBlocked() {\n let config = this.configRef._configChange.getValue();\n if (config) {\n return this.authState.isAdmin.value\n && this.licenseState.license.value.product === this.Product.imunifyAV\n && config.PERMISSIONS.upgrade_button;\n }\n return false;\n }\n\n get cleanupBlockedEndUser() {\n return this.authState.isClient.value\n && this.licenseState.license.value.product === this.Product.imunifyAV;\n }\n\n registerViaPanel() {\n return this.xhr.post(new ExtendedRequestParams('applyLicenseFromPanel'));\n }\n\n checkLicense(data: {}): boolean {\n const newLicense = this.licenseState.getLicense(data);\n\n /**\n * Replace the upgrade URL with URLs with buyUrl from the Plesk Settings if extension installed from the\n * Plesk market\n **/\n if (typeof i360PleskSettings !== 'undefined'\n &&\n i360PleskSettings?.marketplace\n &&\n i360PleskSettings?.buyUrl\n ) {\n newLicense.upgrade_url = i360PleskSettings.buyUrl;\n const upgradeUrl = i360PleskSettings.upgradeUrl || i360PleskSettings.buyUrl;\n newLicense.upgrade_url_360 = newLicense.product === Product.imunifyAVPlus ? upgradeUrl : i360PleskSettings.buyUrl;\n }\n\n if (!this.licenseState.license.value.isSame(newLicense)) {\n this.licenseState.license.next(newLicense);\n }\n if (this.authState.isClient.value) {\n return true;\n }\n const failed = this.licenseState.license.value.isFailed();\n if (failed && this.authState.isAdmin.value) {\n if (this.router.url !== '/360/admin/license' && this.router.url !== '' && this.router.url !== '/') {\n this.router.navigate(['/', IMUNIFY_PACKAGE, 'admin', 'license']);\n }\n return false;\n } else if (!failed && this.router.url === '/360/admin/license') {\n this.router.navigate(['/']);\n } else if (\n !this.licenseState.license.value.upgradeAvailable\n && this.router.url === '/AV/admin/upgrade'\n ) {\n this.router.navigate(['/']);\n }\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { combineLatest, switchMap, Observable, map, of, noop } from 'rxjs';\nimport { LicenseType, Package } from '@imunify360-api/license';\nimport { SettingsService } from 'app/services/settings';\nimport { NotificationsService } from 'app/services/notifications';\nimport { LicenseState } from 'app/services/license-state';\nimport { LicenseService } from 'app/services/license';\nimport { InstallationBackendService } from 'app/components/installation/installation-backend.service';\nimport { AgentStatus } from '@imunify360-api/misc';\nimport { AppState } from 'app/core/app.service';\n\n@Injectable()\nexport class NavRootService {\n constructor(\n private appState: AppState,\n private licenseState: LicenseState,\n private licenseService: LicenseService,\n private settingsService: SettingsService,\n private notifications: NotificationsService,\n private installationBackendService: InstallationBackendService,\n ) {\n }\n\n checkInstallationStatusAndLicense(): Observable<void> {\n return this.checkInstallationStatus()\n .pipe(switchMap(() => {\n if (this.appState.imunifyStatus.value === AgentStatus.OK) {\n return this.checkAndRetrieveThePleskLicense();\n }\n\n return of(undefined);\n }));\n }\n\n private checkInstallationStatus(): Observable<void> {\n // If we are in the installation process - interceptor should redirect to the installation page\n return this.installationBackendService.status({ offset: 0, limit: 1 }, false, false)\n .pipe(map(noop));\n }\n\n // Retrieve the license if the license type in plesk settings does not match the license type in the agent response\n private checkAndRetrieveThePleskLicense(): Observable<void> {\n return combineLatest([this.licenseState.license, this.settingsService.packageVersions]).pipe(\n switchMap(([license, versions]) => {\n const packages = versions?.packages || '';\n\n if (typeof i360PleskSettings !== 'undefined' && i360PleskSettings) {\n if (license?.license_type && i360PleskSettings.licenseType) {\n const fromMarketPlace = i360PleskSettings.marketplace;\n const licenseTypeFromPlesk = fromMarketPlace\n ? i360PleskSettings.licenseType : '';\n const licenseTypeFromAgent = license.license_type;\n const isInstalledImunify360License = licenseTypeFromAgent === LicenseType.imunify360 \n && i360PleskSettings.licenseType === LicenseType.imunify360;\n const isImunify360Installed = packages.includes('imunify360-firewall');\n\n if (fromMarketPlace && (licenseTypeFromPlesk !== licenseTypeFromAgent)) {\n return this.licenseService.registerViaPanel().pipe(map(() => {}));\n }\n if (isInstalledImunify360License && !isImunify360Installed) {\n return this.installationBackendService.start()\n .pipe(switchMap(() => this.checkInstallationStatus()));\n }\n }\n }\n\n if (packages.includes('imunify360-firewall') && IMUNIFY_PACKAGE === Package.imunifyAV) {\n this.notifications.warning('license.noValidLicenseForImunify360Installation');\n }\n\n return of(undefined);\n })\n );\n }\n}\n","export enum NAVBAR_FEATURES {\n News = 'news',\n MenuProfile = 'menuProfile'\n}\n\nexport enum NAVBAR_TABS {\n Home = '',\n Dashboard = 'dashboard',\n Incidents = 'incidents',\n Firewall = 'firewall',\n Email = 'email',\n Vulnerabilities = 'vulnerabilities',\n MalwareScanner = 'malware',\n ProactiveDefense = 'proactive-defense',\n ReputationManagement = 'reputation-management',\n KernelCare = 'kernelcare',\n Support = 'support',\n Settings = 'settings',\n Upgrade = 'upgrade',\n}\n\nexport type NAVBAR_ITEMS = NAVBAR_TABS | NAVBAR_FEATURES;\n","import { NAVBAR_TABS, NAVBAR_ITEMS } from 'app/components/nav-root/navbar-items.enum';\nimport { MALWARE_TABS } from 'app/components/malware/malware-tabs.enum';\nimport { PROACTIVE_DEFENCE_TABS } from 'app/components/proactive-defense/proactive-defence-tabs.enum';\nimport { ProactiveDefenseActions } from 'app/components/proactive-defense/proactive-defense-actions.enum';\nimport { MalwareActionNames } from 'app/components/malware/actions/misc';\n\nexport function isNavbarItemAllowed(item: NAVBAR_ITEMS): boolean {\n if (typeof I360_ALLOWED_ITEMS === 'undefined') return true;\n\n return !!I360_ALLOWED_ITEMS?.[item];\n}\n\nexport function isSubTabAllowed(tab: NAVBAR_TABS, subTab: PROACTIVE_DEFENCE_TABS | MALWARE_TABS): boolean {\n if (typeof I360_ALLOWED_ITEMS === 'undefined') return true;\n if (I360_ALLOWED_ITEMS?.[tab] === true) return true;\n\n return !!I360_ALLOWED_ITEMS?.[tab]?.[subTab];\n}\n\nexport function getFirstAllowedMalwareTab(): MALWARE_TABS | null {\n for (const value of Object.values(MALWARE_TABS)) {\n if (isSubTabAllowed(NAVBAR_TABS.MalwareScanner, value)) {\n return value;\n }\n }\n\n return null;\n}\n\nconst defaultConfig: ISubTabItemsConfig = {\n hideFilters: false,\n hideCheckboxes: false,\n};\n\nexport function getSubTabItemsConfig(tab: NAVBAR_TABS, subTab: MALWARE_TABS | PROACTIVE_DEFENCE_TABS): ISubTabItemsConfig {\n if (typeof I360_ALLOWED_ITEMS === 'undefined') return defaultConfig;\n\n const tabConfig = I360_ALLOWED_ITEMS?.[tab]?.[subTab];\n\n if (tabConfig && tabConfig !== true) {\n return {\n hideFilters: tabConfig?.hideFilters === true,\n hideCheckboxes: tabConfig?.hideCheckboxes === true,\n allowedActions: tabConfig?.allowedActions,\n };\n }\n\n return defaultConfig;\n}\n\nexport function isActionAllowed(tabConfig: ISubTabItemsConfig, actionName: ProactiveDefenseActions | MalwareActionNames): boolean {\n if (typeof I360_ALLOWED_ITEMS === 'undefined') return true;\n if (tabConfig?.allowedActions?.includes) {\n return tabConfig.allowedActions.includes(actionName);\n }\n\n return true;\n}\n\nexport function isProactiveViewFileOnly(tabConfig: ISubTabItemsConfig): boolean {\n if (tabConfig?.allowedActions?.includes && tabConfig.allowedActions.includes(ProactiveDefenseActions.ViewFile)) {\n return !([ProactiveDefenseActions.IgnoreDetected, ProactiveDefenseActions.IgnoreAll]\n .some(action => tabConfig.allowedActions?.includes(action)));\n }\n\n return false;\n}\n\n","import { Injectable } from '@angular/core';\nimport { CanActivate } from '@angular/router';\nimport { Observable, of } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class FirewallService implements CanActivate {\n canActivate(): Observable<boolean> {\n return this.isFirewallEnabled();\n }\n\n isFirewallEnabled(): Observable<boolean> {\n const isFirewallDisabled = window['IMUNIFY_FIREWALL_DISABLED'];\n if (isFirewallDisabled === true || isFirewallDisabled === false) {\n return of(!isFirewallDisabled);\n }\n\n return of(true);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EmailsApi, ViewEmailParams } from '@imunify360-api/emails';\nimport { EmailItem } from '@imunify360-api/emails';\nimport { CanActivate, Router } from '@angular/router';\nimport { Observable, of, catchError, map, BehaviorSubject, take } from 'rxjs';\nimport { cache } from 'app/utils/cache';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { XHR } from 'app/utils/xhr/xhr';\nimport { EmailsSettingsApis } from '@imunify360-api/emails-settings';\n\ndeclare const i360ieExist: any;\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EmailsService implements CanActivate {\n constructor(\n private router: Router,\n public xhr: XHR,\n ) {}\n\n private emailFilterBy: {\n sender: string,\n account_name?: string,\n any: string,\n recipients: string,\n received_date_from: string,\n received_date_to: string,\n reason: string,\n subject: string,\n } = {\n sender: 'emails.quarantine.headers.sender',\n account_name: 'emails.quarantine.headers.account',\n reason: 'emails.quarantine.filters.reason',\n recipients: 'emails.quarantine.headers.recipients',\n any: 'emails.quarantine.headers.any',\n received_date_from: 'emails.quarantine.filters.receivedDateFrom',\n received_date_to: 'emails.quarantine.filters.receivedDateTo',\n subject: 'emails.quarantine.headers.subject',\n };\n list = this.xhr.wrap(this.xhr.rx(EmailsApi.list), EmailItem);\n editEmails = this.xhr.request(EmailsApi.editEmails);\n viewEmail = this.xhr.rx<ViewEmailParams, any>(EmailsApi.viewEmail);\n getIncomingStatus = this.xhr.rx(EmailsSettingsApis.isIncomingEnabled);\n emailVersions: Observable<{\n version: string,\n components: string,\n } | null> = this.xhr.rx(EmailsApi.imunifyEmailVersion, false, false)()\n .pipe(\n map(result => {\n let components: string[] = [];\n if (result.data.items) {\n components = result.data.items.components.map((component) => {\n return component.name + ' - ' + component.version;\n })\n }\n return {\n version: result.data.items.version,\n components: components.join('\\r\\n')\n };\n }),\n cache(300),\n catchError((e: HttpErrorResponse) => {\n return of(null);\n }),\n );\n isIncomingEnabled: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n emailPageOnInit() {\n this.getIncomingStatus().pipe(take(1)).subscribe(result => {\n this.isIncomingEnabled.next(result?.data?.items?.is_enabled || false)\n })\n }\n\n getAvailableKeys(isAdmin: boolean) {\n if (!isAdmin && this.emailFilterBy.account_name) {\n delete this.emailFilterBy.account_name;\n }\n return this.emailFilterBy;\n }\n\n canActivate(): Observable<boolean> | boolean {\n if (this.imunifyEmailExist()) {\n return true;\n } else {\n this.router.navigate(['/']);\n return false;\n }\n }\n\n imunifyEmailExist = () => typeof i360ieExist !== 'undefined' && i360ieExist === '1';\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Eula, EulaAPI, EulaInBackend } from '@imunify360-api/eula';\nimport { testMode } from 'app/services/misc';\nimport { XHR } from 'app/utils/xhr/xhr';\nimport { LicenseState } from 'app/services/license-state';\n\nconst testData = {\n message: 'That is test mode for EULA license',\n text: 'Just test message',\n updated: '2017-11-30',\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EulaService {\n accept = this.xhr.request(EulaAPI.accept);\n\n constructor(\n private router: Router,\n public xhr: XHR,\n private route: ActivatedRoute,\n public licenseState: LicenseState,\n ) {}\n\n getEula(data: EulaInBackend): Eula {\n return new Eula(testMode(this.constructor.name) ? testData : data);\n }\n\n checkEulaStatus(data: EulaInBackend) {\n const oldStatus = this.licenseState.eula.value.isFailed();\n const eula = this.getEula(data);\n if (oldStatus !== eula.isFailed()) {\n this.licenseState.eula.next(eula);\n }\n\n const eulaUrl = ['/', IMUNIFY_PACKAGE, 'admin', 'eula'];\n const eulaUrlString = `/${eulaUrl.slice(1).join('/')}`;\n if (this.licenseState.eula.value.isFailed() && this.router.url !== eulaUrlString) {\n this.router.navigate(eulaUrl, {\n relativeTo: this.route\n });\n return false;\n } else if (!this.licenseState.eula.value.isFailed() && this.router.url === eulaUrlString) {\n this.router.navigate(['/']);\n }\n return true;\n }\n}\n","export class ModalEntry<E, R> {\n _paramenterTypeAnchor: E;\n _resultTypeAnchor: R;\n}\n","<div mat-dialog-title>\n <div class=\"title-text\">\n <ng-content select=\"[modal-title]\"></ng-content>\n <div class=\"i360-subtitle\">\n <ng-content select=\"[modal-subtitle]\"></ng-content>\n </div>\n </div>\n <button *ngIf=\"showClose\"\n mat-icon-button\n mat-dialog-close>\n <i class=\"material-icons\">close</i>\n </button>\n</div>\n<div mat-dialog-content>\n <ng-content select=\"[modal-body]\"></ng-content>\n</div>\n<div mat-dialog-actions *ngIf=\"!hideActions\">\n <ng-content select=\"[modal-actions]\"></ng-content>\n <button class=\"cancel-button\"\n [class.uppercase]=\"uppercaseButtons\"\n mat-button\n *ngIf=\"showCancel\"\n mat-dialog-close\n color=\"primary\">\n {{ cancelText | translate }}\n </button>\n <button class=\"confirm-button\"\n *ngIf=\"showConfirm\"\n color=\"primary\"\n type=\"button\"\n (click)=\"close()\"\n mat-button\n cdkFocusInitial\n [class.uppercase]=\"uppercaseButtons\"\n [disabled]=\"confirmDisabled || confirmDisabledAlways\">\n <ng-container *ngIf=\"confirmNote && confirmDisabledAlways; else confirmTextTpl\">\n <span [matTooltip]=\"confirmNote\"><ng-container *ngTemplateOutlet=\"confirmTextTpl\"></ng-container></span>\n </ng-container>\n <ng-template #confirmTextTpl>{{ confirmText | translate }}</ng-template>\n </button>\n</div>\n","import {\n Component,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'i360-modal-content',\n encapsulation: ViewEncapsulation.None,\n templateUrl: './content.component.html',\n styleUrls: ['./content.component.scss'],\n})\nexport class ModalContentComponent {\n @Input() confirmText: string = 'utils.modals.content.confirm';\n @Input() cancelText: string = 'utils.modals.content.cancel';\n @Input() confirmDisabled: boolean = false;\n @Input() confirmDisabledAlways: boolean = false; // some else reason to disable except invalid form\n @Input() confirmNote: string = '';\n @Input() uppercaseButtons: boolean = true;\n @Input() showCancel = true;\n @Input() showConfirm = true;\n @Input() showClose = true;\n @Input() hideActions = false;\n dialogResult = true;\n\n constructor(private dialogRef: MatDialogRef<any>) {}\n\n close() {\n this.dialogRef.close(this.dialogResult);\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'i360-modal-items',\n template: `\n <div *ngFor=\"let item of items\" class=\"item rtl-except\">{{item}}</div>\n `,\n styleUrls: ['./items.component.scss'],\n})\nexport class ModalItemsComponent {\n @Input() items: string[];\n}\n","<i360-modal-content\n confirmText=\"utils.modals.confirm.confirms.{{action}}\">\n <ng-container modal-title>{{ 'utils.modals.confirm.titles.' + action | translate }}</ng-container>\n <ng-container modal-body>\n <div *ngIf=\"description\">\n {{ 'utils.modals.confirm.descriptions.' + action | translate : descriptionArg}}\n </div>\n <i360-modal-items [items]=\"items\"></i360-modal-items>\n </ng-container>\n</i360-modal-content>\n","import { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { ModalEntry } from 'app/utils/modals/entry';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport type ConfirmOptions = {\n action: string,\n descriptionArg?: {\n [k: string]: string,\n },\n description?: string,\n items: string[],\n};\n\n@Component({\n templateUrl: './confirm.component.html',\n styleUrls: ['./confirm.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ConfirmComponent extends ModalEntry<ConfirmOptions, true> {\n items: string[];\n action: string;\n description?: string;\n descriptionArg?: {\n [k: string]: string\n };\n constructor(\n public translateService: TranslateService,\n @Inject(MAT_DIALOG_DATA) {\n action,\n items,\n description,\n descriptionArg,\n }: ConfirmOptions,\n ) {\n super();\n this.items = [...items];\n this.action = action;\n this.description = description;\n this.descriptionArg = descriptionArg;\n }\n}\n","import { AgentResponse, DataFrom, RequestParams, ResponseDataExceptItems } from './misc';\n\n\ninterface MalwareReadAgentResponseData extends ResponseDataExceptItems {\n data: {\n size: number;\n chunk: string;\n limit: number;\n offset: number;\n eof: boolean;\n };\n}\n\ninterface MalwareFileDiffAgentResponseData extends ResponseDataExceptItems {\n diff: string;\n}\n\n\ntype MalwareReadAgentResponse = AgentResponse<MalwareReadAgentResponseData>;\ntype MalwareDiffAgentResponse = AgentResponse<MalwareFileDiffAgentResponseData>;\n\nexport class FileAPI {\n static CHUNK_LENGTH = 100 * 1024; // File chunk length (Bytes)\n static load({path, limit, offset}: FileInterface) {\n return new RequestParams<DataFrom<MalwareReadAgentResponse>>(\n ['malware', 'read'],\n {\n path,\n limit: limit || FileAPI.CHUNK_LENGTH,\n offset: offset || 0,\n },\n );\n }\n\n static loadDiff(id: number) {\n return new RequestParams<DataFrom<MalwareDiffAgentResponse>>(\n ['malware', 'malicious', 'diff'],\n {\n id,\n },\n );\n }\n}\n\ninterface FileInterface {\n path: string;\n limit?: number;\n offset?: number;\n}\n","import { Injectable } from '@angular/core';\nimport { FileAPI } from '@imunify360-api/file';\nimport { Result } from '@imunify360-api/misc';\nimport { of, Observable, map } from 'rxjs';\nimport { XHR } from 'app/utils/xhr/xhr';\n\n\n@Injectable()\nexport class FileService {\n constructor(\n public xhr: XHR,\n ) {}\n\n public limit: number = FileAPI.CHUNK_LENGTH;\n public offset: number = 0;\n public notifyOnError = true;\n\n loadDiff = this.xhr.rx(FileAPI.loadDiff,\n this.notifyOnError, this.notifyOnError);\n\n load = this.xhr.rx(FileAPI.load,\n this.notifyOnError, this.notifyOnError);\n\n private _load = this.xhr.rx(FileAPI.load,\n this.notifyOnError, this.notifyOnError);\n\n loadChunk(logFile) {\n return this._load({\n path: logFile,\n offset: this.offset,\n limit: this.limit,\n }).pipe(\n map(response => {\n const data = response.data.data;\n if (data.offset === 0 && data.size > data.limit) {\n this.offset = data.limit;\n this.limit = (data.size - data.limit);\n } else {\n this.offset = data.size;\n }\n\n return data.chunk.replace(/(?:\\r\\n|\\r|\\n)/g, '<br/>');\n }),\n );\n }\n\n public upload(files: File[] = []): Observable<{result: Result, data: string} | null> {\n let formData: FormData = new FormData();\n\n if (!files.length) {\n return of(null);\n }\n formData.append('command', 'uploadFile');\n for (let f of files) {\n formData.append('files[]', f);\n }\n\n return this.xhr.post(formData, () => null, this.notifyOnError, this.notifyOnError);\n }\n}\n","import { Injectable, Optional, TemplateRef } from '@angular/core';\nimport { map, firstValueFrom, catchError, forkJoin, of } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { ConfirmComponent } from 'app/utils/modals/confirm/confirm.component';\nimport { FileService } from 'app/services/file';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { ModalEntry } from 'app/utils/modals/entry';\nimport { AppState } from 'app/core/app.service';\nimport { Panel } from 'app/utils/panel';\n\n@Injectable()\nexport class ModalService {\n constructor(\n private panel: Panel,\n private dialogService: MatDialog,\n private fileService: FileService,\n @Optional() private appState: AppState,\n ) {}\n getDialogRef<T, D>(component: ComponentType<T> | TemplateRef<D>,\n options: MatDialogConfig<D> = {}) {\n this.addPanelClass(options, 'i360-modal-dialog-panel');\n try {\n this.addPanelClass(options, 'i360-' + (<any>component).prototype.constructor.name);\n } catch (e) {}\n // looks like there is wrong type declaration\n return this.dialogService.open(component as any, options);\n }\n dialogRefToPromise<R>(ref: MatDialogRef<any>) {\n // this is kind of crutch for DirectAdmin\n if (this.panel.isDirectAdmin && this.appState?.mousePositionY) {\n if (window.innerHeight / 2 > this.appState.mousePositionY) {\n ref.updatePosition({ top: this.appState.mousePositionY + 'px'});\n } else {\n ref.updatePosition({\n bottom: window.innerHeight - this.appState.mousePositionY + 'px',\n });\n }\n }\n return firstValueFrom<R | false>(ref.afterClosed().pipe(\n map(result => result || false),\n ));\n }\n open<R, D>(component: {new(...args): ModalEntry<D, R>} | TemplateRef<D>,\n options: MatDialogConfig<D> = {}) {\n return this.dialogRefToPromise<R>(this.getDialogRef(component, options));\n }\n\n confirm(action: string, items: string[], description?: string, descriptionArg?: {}) {\n return this.open(ConfirmComponent, {\n panelClass: ['i360-confirm-dialog-panel'],\n data: {\n action, items, description, descriptionArg\n },\n });\n }\n\n public addPanelClass(options: MatDialogConfig, cls: string) {\n if (typeof options.panelClass === 'string') {\n options.panelClass = [options.panelClass];\n }\n if (!options.panelClass) {\n options.panelClass = [];\n }\n if (Array.isArray(options.panelClass)) {\n options.panelClass.push(cls);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { XHR } from 'app/utils/xhr/xhr';\nimport { Permission, PermissionsAPI } from '@imunify360-api/permissions';\nimport { AuthState } from 'app/services/auth-state';\nimport { identity, Observable, filter, map, takeUntil } from 'rxjs';\nimport { cache } from 'app/utils/cache';\nimport { Router } from '@angular/router';\nimport { ModalService } from 'app/utils/modals/modal.service';\n\n\n@Injectable()\nexport class PermissionsService {\n list: Observable<Array<Permission>>;\n MS_ON_DEMAND_SCAN: Observable<boolean>;\n MS_PATCH_ENABLED: Observable<boolean>;\n MS_PATCH_HAS_SUBSCRIBE: Observable<boolean>;\n MS_CONFIG_DEFAULT_ACTION_EDIT: Observable<boolean>;\n MS_CLEAN: Observable<boolean>;\n\n MS_CLEAN_REQUIRES_MYIMUNIFY_PROTECTION: Observable<boolean>;\n\n get = this.xhr.rx(PermissionsAPI.list);\n\n constructor(\n public xhr: XHR,\n public authState: AuthState,\n public modalService: ModalService,\n public router: Router,\n ) {\n authState.loginChange.pipe(filter(identity)).subscribe(() => {\n if (!this.authState.listPermission$) {\n this.authState.listPermission$ = this.get().pipe(\n map(res => res.data.items),\n takeUntil(this.authState.loginChange.pipe(filter(x => !x))),\n cache(Infinity),\n );\n }\n\n this.MS_ON_DEMAND_SCAN = this.has(Permission.MS_ON_DEMAND_SCAN);\n this.MS_CONFIG_DEFAULT_ACTION_EDIT = this.has(Permission.MS_CONFIG_DEFAULT_ACTION_EDIT);\n this.MS_CLEAN = this.has(Permission.MS_CLEAN);\n this.MS_PATCH_HAS_SUBSCRIBE = this.has(Permission.MS_PATCH_HAS_SUBSCRIBE);\n this.MS_PATCH_ENABLED = this.has(Permission.MS_PATCH_ENABLED);\n this.MS_CLEAN_REQUIRES_MYIMUNIFY_PROTECTION = this.has(Permission.MS_CLEAN_REQUIRES_MYIMUNIFY_PROTECTION);\n });\n }\n\n has(item: Permission): Observable<boolean> {\n return this.authState.listPermission$.pipe(\n map((list) => list.includes(item),\n ));\n }\n\n async openUpgradeWarning(UpgradeWarningModalComponent) {\n if (await this.modalService.open(UpgradeWarningModalComponent, {data: {}})) {\n await this.router.navigate(['/', IMUNIFY_PACKAGE, 'admin', 'upgrade']);\n }\n }\n}\n","import {\n AgentResponse,\n AgentResponseData,\n RequestParams,\n DataFrom,\n} from './misc';\n\nexport interface MyImunifyResult extends AgentResponseData<MyImunifyItem[]> {\n myimunify_enabled: boolean;\n is_freemium: boolean;\n purchase_page_url: string;\n}\n\n\ninterface MyImunifyItem {\n username: string;\n protection: boolean;\n}\n\ntype MyImunifyStatusAgentResponse = AgentResponse<MyImunifyResult>;\n\nexport class MyImunifyAPI {\n\n static status(params = {}) {\n return new RequestParams<DataFrom<MyImunifyStatusAgentResponse>>(['myimunify', 'status'], params);\n }\n\n static update(params) {\n return new RequestParams<DataFrom<void>>(['myimunify', 'update'], params);\n }\n\n static enableAll() {\n return new RequestParams<DataFrom<void>>(['myimunify', 'enable-all']);\n }\n}\n","/*\n\nTypeScript Md5\n==============\n\nBased on work by\n* Joseph Myers: http://www.myersdaily.org/joseph/javascript/md5-text.html\n* André Cruz: https://github.com/satazor/SparkMD5\n* Raymond Hill: https://github.com/gorhill/yamd5.js\n\nEffectively a TypeScrypt re-write of Raymond Hill JS Library\n\nThe MIT License (MIT)\n\nCopyright (C) 2014 Raymond Hill\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n\n\n DO WHAT YOU WANT TO PUBLIC LICENSE\n Version 2, December 2004\n\n Copyright (C) 2015 André Cruz <amdfcruz@gmail.com>\n\n Everyone is permitted to copy and distribute verbatim or modified\n copies of this license document, and changing it is allowed as long\n as the name is changed.\n\n DO WHAT YOU WANT TO PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT YOU WANT TO.\n\n\n*/\n;\nexport class Md5 {\n constructor() {\n this._dataLength = 0;\n this._bufferLength = 0;\n this._state = new Int32Array(4);\n this._buffer = new ArrayBuffer(68);\n this._buffer8 = new Uint8Array(this._buffer, 0, 68);\n this._buffer32 = new Uint32Array(this._buffer, 0, 17);\n this.start();\n }\n static hashStr(str, raw = false) {\n return this.onePassHasher\n .start()\n .appendStr(str)\n .end(raw);\n }\n static hashAsciiStr(str, raw = false) {\n return this.onePassHasher\n .start()\n .appendAsciiStr(str)\n .end(raw);\n }\n static _hex(x) {\n const hc = Md5.hexChars;\n const ho = Md5.hexOut;\n let n;\n let offset;\n let j;\n let i;\n for (i = 0; i < 4; i += 1) {\n offset = i * 8;\n n = x[i];\n for (j = 0; j < 8; j += 2) {\n ho[offset + 1 + j] = hc.charAt(n & 0x0F);\n n >>>= 4;\n ho[offset + 0 + j] = hc.charAt(n & 0x0F);\n n >>>= 4;\n }\n }\n return ho.join('');\n }\n static _md5cycle(x, k) {\n let a = x[0];\n let b = x[1];\n let c = x[2];\n let d = x[3];\n // ff()\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n // gg()\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n // hh()\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n // ii()\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n /**\n * Initialise buffer to be hashed\n */\n start() {\n this._dataLength = 0;\n this._bufferLength = 0;\n this._state.set(Md5.stateIdentity);\n return this;\n }\n // Char to code point to to array conversion:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n // #Example.3A_Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_characters_if_their_presence_earlier_in_the_string_is_unknown\n /**\n * Append a UTF-8 string to the hash buffer\n * @param str String to append\n */\n appendStr(str) {\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n let bufLen = this._bufferLength;\n let code;\n let i;\n for (i = 0; i < str.length; i += 1) {\n code = str.charCodeAt(i);\n if (code < 128) {\n buf8[bufLen++] = code;\n }\n else if (code < 0x800) {\n buf8[bufLen++] = (code >>> 6) + 0xC0;\n buf8[bufLen++] = code & 0x3F | 0x80;\n }\n else if (code < 0xD800 || code > 0xDBFF) {\n buf8[bufLen++] = (code >>> 12) + 0xE0;\n buf8[bufLen++] = (code >>> 6 & 0x3F) | 0x80;\n buf8[bufLen++] = (code & 0x3F) | 0x80;\n }\n else {\n code = ((code - 0xD800) * 0x400) + (str.charCodeAt(++i) - 0xDC00) + 0x10000;\n if (code > 0x10FFFF) {\n throw new Error('Unicode standard supports code points up to U+10FFFF');\n }\n buf8[bufLen++] = (code >>> 18) + 0xF0;\n buf8[bufLen++] = (code >>> 12 & 0x3F) | 0x80;\n buf8[bufLen++] = (code >>> 6 & 0x3F) | 0x80;\n buf8[bufLen++] = (code & 0x3F) | 0x80;\n }\n if (bufLen >= 64) {\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen -= 64;\n buf32[0] = buf32[16];\n }\n }\n this._bufferLength = bufLen;\n return this;\n }\n /**\n * Append an ASCII string to the hash buffer\n * @param str String to append\n */\n appendAsciiStr(str) {\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n let bufLen = this._bufferLength;\n let i;\n let j = 0;\n for (;;) {\n i = Math.min(str.length - j, 64 - bufLen);\n while (i--) {\n buf8[bufLen++] = str.charCodeAt(j++);\n }\n if (bufLen < 64) {\n break;\n }\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen = 0;\n }\n this._bufferLength = bufLen;\n return this;\n }\n /**\n * Append a byte array to the hash buffer\n * @param input array to append\n */\n appendByteArray(input) {\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n let bufLen = this._bufferLength;\n let i;\n let j = 0;\n for (;;) {\n i = Math.min(input.length - j, 64 - bufLen);\n while (i--) {\n buf8[bufLen++] = input[j++];\n }\n if (bufLen < 64) {\n break;\n }\n this._dataLength += 64;\n Md5._md5cycle(this._state, buf32);\n bufLen = 0;\n }\n this._bufferLength = bufLen;\n return this;\n }\n /**\n * Get the state of the hash buffer\n */\n getState() {\n const s = this._state;\n return {\n buffer: String.fromCharCode.apply(null, Array.from(this._buffer8)),\n buflen: this._bufferLength,\n length: this._dataLength,\n state: [s[0], s[1], s[2], s[3]]\n };\n }\n /**\n * Override the current state of the hash buffer\n * @param state New hash buffer state\n */\n setState(state) {\n const buf = state.buffer;\n const x = state.state;\n const s = this._state;\n let i;\n this._dataLength = state.length;\n this._bufferLength = state.buflen;\n s[0] = x[0];\n s[1] = x[1];\n s[2] = x[2];\n s[3] = x[3];\n for (i = 0; i < buf.length; i += 1) {\n this._buffer8[i] = buf.charCodeAt(i);\n }\n }\n /**\n * Hash the current state of the hash buffer and return the result\n * @param raw Whether to return the value as an `Int32Array`\n */\n end(raw = false) {\n const bufLen = this._bufferLength;\n const buf8 = this._buffer8;\n const buf32 = this._buffer32;\n const i = (bufLen >> 2) + 1;\n this._dataLength += bufLen;\n const dataBitsLen = this._dataLength * 8;\n buf8[bufLen] = 0x80;\n buf8[bufLen + 1] = buf8[bufLen + 2] = buf8[bufLen + 3] = 0;\n buf32.set(Md5.buffer32Identity.subarray(i), i);\n if (bufLen > 55) {\n Md5._md5cycle(this._state, buf32);\n buf32.set(Md5.buffer32Identity);\n }\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n if (dataBitsLen <= 0xFFFFFFFF) {\n buf32[14] = dataBitsLen;\n }\n else {\n const matches = dataBitsLen.toString(16).match(/(.*?)(.{0,8})$/);\n if (matches === null) {\n return;\n }\n const lo = parseInt(matches[2], 16);\n const hi = parseInt(matches[1], 16) || 0;\n buf32[14] = lo;\n buf32[15] = hi;\n }\n Md5._md5cycle(this._state, buf32);\n return raw ? this._state : Md5._hex(this._state);\n }\n}\n// Private Static Variables\nMd5.stateIdentity = new Int32Array([1732584193, -271733879, -1732584194, 271733878]);\nMd5.buffer32Identity = new Int32Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\nMd5.hexChars = '0123456789abcdef';\nMd5.hexOut = [];\n// Permanent instance is to use for one-call hashing\nMd5.onePassHasher = new Md5();\nif (Md5.hashStr('hello') !== '5d41402abc4b2a76b9719d911017c592') {\n throw new Error('Md5 self test failed.');\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Md5 } from 'ts-md5';\nimport { Panel } from 'app/utils/panel';\nimport { map, noop, Observable, of } from 'rxjs';\nimport { extractUrlParamValue } from 'app/utils/helper';\nimport { LicenseState } from './license-state';\n\ninterface IAnalyticsSession {\n target_id: string;\n user_hash?: string;\n username?: string;\n journey_id?: string;\n variant_id?: string;\n created_at?: number;\n}\n\ninterface IAnalyticsEvent {\n target_id: string;\n target_type: string;\n journey_id: string;\n user_hash: string;\n source: string;\n event_name: string;\n variant_id?: string;\n username?: string;\n system_id?: string;\n app: string;\n}\n\nclass Session {\n constructor(public data: IAnalyticsSession) {}\n}\n\nexport const CL_ANALYTICS_ENDPOINT = 'https://x-ray-advice.cloudlinux.com/api/analytics/v2';\n\n@Injectable({ providedIn: 'root' })\nexport class ClAnalytics {\n private endpointEvent = '/events';\n private sessionTtl = 24 * 60 * 60 * 1000;\n\n constructor(\n private http: HttpClient,\n private panel: Panel,\n private licenseState: LicenseState,\n @Inject('Window') private window: Window,\n ) {\n }\n\n private get endpoint(): string {\n const endpointForOverride = localStorage.getItem('clAnalyticsMicroserviceEndpoint');\n return endpointForOverride || CL_ANALYTICS_ENDPOINT;\n }\n\n sendBuyButtonClickEvent(userName: string): Observable<void> {\n const event = 'awp_purchase_button_clicked';\n const session = this.generateNewSession(userName);\n\n return this.sendEvent(event, session.data);\n }\n\n sendMyImunifyPurchaseEvent(userName: string): Observable<void> {\n const event = 'awp_purchase_done';\n const session = this.getSession(userName) || this.generateNewSession(userName);\n\n return this.sendEvent(event, session.data);\n }\n\n private generateNewSession(userName: string): Session {\n const timestamp = Date.now();\n const search = this.window.location.search;\n const journey_id = extractUrlParamValue(search, 'journey_id');\n const user_hash = extractUrlParamValue(search, 'user_hash');\n const variant_id = extractUrlParamValue(search, 'variant_id');\n const target_id = extractUrlParamValue(search, 'target_id');\n const session = new Session({\n username: userName,\n target_id,\n user_hash: user_hash || Md5.hashStr(userName),\n journey_id: journey_id || Md5.hashStr(Math.floor(timestamp / 1000) + '|' + userName),\n variant_id: variant_id || '',\n created_at: timestamp,\n });\n this.saveSession(session);\n\n return session;\n }\n\n private saveSession(session: Session): void {\n const data = JSON.stringify(session.data);\n localStorage.setItem(`imAnalyticsSessionFor_${session.data.username}`, data);\n }\n\n private getSession(userName: string): Session | null {\n try {\n const data = JSON.parse(localStorage.getItem(`imAnalyticsSessionFor_${userName}`) || '');\n const _created_at = data.created_at ?? Date.now()\n const ttl = Date.now() - this.sessionTtl;\n if (_created_at >= ttl) {\n return new Session({ ...data });\n }\n } catch (e) {\n console.log(e);\n }\n\n return null;\n }\n\n private sendEvent(event: string, session: IAnalyticsSession): Observable<void> {\n if (!session.target_id) return of(undefined);\n\n const model: IAnalyticsEvent = {\n target_id: session.target_id,\n target_type: 'advice',\n journey_id: session.journey_id as string,\n user_hash: session.user_hash as string,\n source: this.panel.name.toLowerCase(),\n event_name: event,\n variant_id: session.variant_id,\n username: session.username,\n system_id: this.licenseState.license.getValue().id,\n app: 'imunify',\n };\n\n const report = Object.entries(model).reduce((acc, [key, value]) => {\n if (value !== undefined && value !== null && value !== '') {\n acc[key] = value;\n }\n return acc;\n }, {});\n\n const endpoint = this.endpoint + this.endpointEvent;\n const headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n });\n\n return this.http.post(endpoint, JSON.stringify(report), {headers: headers})\n .pipe(map(noop));\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { isURL } from 'validator';\nimport { XHR } from 'app/utils/xhr/xhr';\nimport {\n Observable, noop, timer, of,\n switchMap, map, take, catchError, takeUntil, BehaviorSubject,\n} from 'rxjs';\nimport {\n MyImunifyAPI,\n MyImunifyResult,\n} from '@imunify360-api/myimunify';\nimport { AuthState } from 'app/services/auth-state';\nimport { MyImunifyState, IMyImunifyState } from 'app/services/my-imunify-state';\nimport { NotificationsService } from 'app/services/notifications';\nimport { Package } from '@imunify360-api/license';\nimport { ClAnalytics } from './cl-analytics';\n\nexport const MYIMUNIFY_UPDATE_INTERVAL = 10000;\n\n@Injectable()\nexport class MyImunifyService implements OnDestroy {\n status = this.xhr.rx(MyImunifyAPI.status);\n update = this.xhr.rx(MyImunifyAPI.update);\n enableProtectionForAll = this.xhr.rx(MyImunifyAPI.enableAll);\n\n // This behaviour subject is used to mark when the myimunify state loaded\n myImunifyStateLoaded$ = new BehaviorSubject<boolean>(false);\n\n // Store the opened purchase window\n purchaseWindow: Window | null;\n\n constructor(\n private xhr: XHR,\n private authState: AuthState,\n private state: MyImunifyState,\n private clAnalytics: ClAnalytics,\n private notifications: NotificationsService,\n ) {}\n\n ngOnDestroy(): void {\n this.state.myImunifyStateSubscription?.unsubscribe();\n this.state.myImunifyStateSubscription = undefined;\n }\n\n openUpgradePage(sendAnalytics: boolean = false): void {\n this.getMyImunifyState().pipe(take(1)).subscribe(state => {\n if (this.purchaseWindow) return;\n const purchasePageUrl = this.getFixedPurchaseUrl(state.purchase_page_url);\n if (!isURL(purchasePageUrl)) {\n this.notifications.error('notifications.myImunifyPageNotSpecified');\n return;\n }\n if (sendAnalytics) {\n this.clAnalytics.sendBuyButtonClickEvent(state.username as string)\n .subscribe({ next: noop, error: noop });\n }\n // Open the purchaseWindow in new window and check until closed\n this.purchaseWindow = window.open(purchasePageUrl, '', 'toolbar=0,status=0,width=1100,height=640');\n const checkIfPurchaseWindowClosed = () => {\n if (this.purchaseWindow?.closed) {\n this.purchaseWindow = null;\n clearInterval(checkWindowClosedInterval);\n }\n };\n const checkWindowClosedInterval = setInterval(checkIfPurchaseWindowClosed.bind(this), 500);\n });\n }\n\n getMyImunifyState(): Observable<IMyImunifyState> {\n if (window['MYIMUNIFY_DISABLED']) {\n if (!this.myImunifyStateLoaded$.getValue()) {\n this.myImunifyStateLoaded$.next(true);\n }\n return this.state.changes$.asObservable();\n }\n\n if (!this.state.myImunifyStateSubscription) {\n this.state.myImunifyStateSubscription = this.authState.isClient\n .pipe(\n switchMap(isClient => {\n if (isClient && IMUNIFY_PACKAGE === Package.imunify360) {\n return this.poolMyImunifyStatus();\n } else {\n this.state.myImunifyStateSubscription?.unsubscribe();\n this.state.myImunifyStateSubscription = undefined;\n this.myImunifyStateLoaded$.next(true);\n return of(null);\n }\n }),\n )\n .subscribe({ next: noop, error: noop });\n }\n\n return this.state.changes$.asObservable();\n }\n\n getStatus(): Observable<MyImunifyResult> {\n const params = {items: []};\n return this.status(params).pipe(map(result => result?.data));\n }\n\n private poolMyImunifyStatus(): Observable<void> {\n return timer(0, MYIMUNIFY_UPDATE_INTERVAL).pipe(\n switchMap(() => this.getStatus()),\n catchError(() => of(undefined)),\n map(result => this.handleMyImunifyStatusResult(result)),\n takeUntil(this.state.isEnabledWithProtection$),\n );\n }\n\n private handleMyImunifyStatusResult(result: MyImunifyResult | undefined): void {\n if (!result) return;\n\n const state = this.state.changes$.getValue();\n const item = result.items.length ? result.items[0] : null;\n\n this.myImunifyStateLoaded$.next(true);\n\n if (state.enabled !== result.myimunify_enabled ||\n state.protection !== item?.protection ||\n state.purchase_page_url !== result.purchase_page_url) {\n\n this.state.changes$.next({\n enabled: result.myimunify_enabled,\n protection: !!item?.protection,\n username: item?.username,\n purchase_page_url: result.purchase_page_url,\n is_freemium: result.is_freemium,\n });\n if (result.myimunify_enabled && !!item?.protection) {\n this.state.isEnabledWithProtection$.next();\n }\n }\n }\n\n public getFixedPurchaseUrl(urlToFix: string): string {\n if (!urlToFix) return '';\n\n if (urlToFix.startsWith('http')) {\n return urlToFix;\n }\n\n return 'https://' + urlToFix;\n }\n}\n","import { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { ModalEntry } from 'app/utils/modals/entry';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\ninterface ModalDetailsComponentParams {\n details: string;\n}\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n templateUrl: './payment-success.component.html',\n styleUrls: ['./payment-success.component.scss'],\n})\nexport class PaymentSuccessComponent extends ModalEntry<ModalDetailsComponentParams, false> {\n constructor(@Inject(MAT_DIALOG_DATA) public data: ModalDetailsComponentParams) {\n super();\n }\n}\n","<i360-modal-content\n [showConfirm]=\"false\"\n [showCancel]=\"false\">\n <ng-container modal-body>\n <div class=\"my-imunify-payment\">\n <div class=\"my-imunify-payment__image\">\n <svg width=\"50\" height=\"50\" viewBox=\"0 0 50 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M33.1731 36.6415L36.6407 33.1738L27.4762 24.0093V12.6156H22.5225V25.9908L33.1731 36.6415ZM24.9994 49.769C21.573 49.769 18.353 49.1188 15.3395 47.8184C12.3259 46.518 9.70457 44.7533 7.47537 42.5241C5.24617 40.2949 3.48138 37.6735 2.18102 34.6599C0.880652 31.6464 0.230469 28.4264 0.230469 25.0001C0.230469 21.5737 0.880652 18.3538 2.18102 15.3402C3.48138 12.3267 5.24617 9.7053 7.47537 7.4761C9.70457 5.2469 12.3259 3.48212 15.3395 2.18175C18.353 0.881384 21.573 0.231201 24.9994 0.231201C28.4257 0.231201 31.6457 0.881384 34.6592 2.18175C37.6728 3.48212 40.2941 5.2469 42.5233 7.4761C44.7525 9.7053 46.5173 12.3267 47.8177 15.3402C49.118 18.3538 49.7682 21.5737 49.7682 25.0001C49.7682 28.4264 49.118 31.6464 47.8177 34.6599C46.5173 37.6735 44.7525 40.2949 42.5233 42.5241C40.2941 44.7533 37.6728 46.518 34.6592 47.8184C31.6457 49.1188 28.4257 49.769 24.9994 49.769Z\" fill=\"#FFAA5B\"/>\n </svg>\n </div>\n <div class=\"my-imunify-payment__details\">{{data.details | translate}}</div>\n </div>\n </ng-container>\n</i360-modal-content>\n","<i360-modal-content [hideActions]=\"true\" class=\"protection__benefits\">\n <ng-container modal-title>\n {{ 'utils.modals.myImunifyUpsell.modalTitle' | translate }}\n </ng-container>\n <ng-container modal-body>\n <div class=\"my-imunify-protection\">\n <div class=\"my-imunify-protection-disabled\">\n <div class=\"my-imunify-protection-disabled__label\">\n {{'utils.modals.myImunifyUpsell.protectionDisabledLabel' | translate}}\n </div>\n <div class=\"my-imunify-protection-disabled__logo\">\n <mat-icon svgIcon=\"logo-myimunify\" class=\"my-imunify-icon\"></mat-icon>\n </div>\n <div class=\"my-imunify-protection-disabled__list\">\n <h3 class=\"my-imunify-protection-disabled__list-title\">\n {{'utils.modals.myImunifyUpsell.manualCleanup.title' | translate}}\n </h3>\n <ul>\n <li *ngFor=\"let item of manualCleanupItems\" class=\"my-imunify-protection-disabled__list-item\">\n {{item | translate}}\n </li>\n </ul>\n </div>\n\n <hr>\n\n <div class=\"my-imunify-protection-disabled__list\">\n <h3 class=\"my-imunify-protection-disabled__list-title\">\n {{'utils.modals.myImunifyUpsell.risks.title' | translate}}\n </h3>\n <ul>\n <li *ngFor=\"let item of risksItems\" class=\"my-imunify-protection-disabled__list-item\">\n {{item | translate}}\n </li>\n </ul>\n </div>\n <span class=\"my-imunify-protection-disabled__button\">{{'utils.modals.myImunifyUpsell.current' | translate}}</span>\n </div>\n <div class=\"my-imunify-protection-enabled\">\n <div class=\"my-imunify-protection-enabled__label\">\n {{'utils.modals.myImunifyUpsell.protectionEnabledLabel' | translate}}\n </div>\n <div class=\"my-imunify-protection-enabled__logo\">\n <mat-icon svgIcon=\"logo-myimunify\" class=\"my-imunify-icon\"></mat-icon>\n </div>\n <div class=\"my-imunify-protection-enabled__list\">\n <h3 class=\"my-imunify-protection-enabled__list-title\">\n {{'utils.modals.myImunifyUpsell.autoCleanup.title' | translate}}\n </h3>\n <ul>\n <li *ngFor=\"let item of autoCleanupItems\" class=\"my-imunify-protection-enabled__list-item\">\n {{item | translate}}\n </li>\n </ul>\n </div>\n\n <hr>\n\n <div class=\"my-imunify-protection-enabled__list\">\n <h3 class=\"my-imunify-protection-enabled__list-title\">\n {{'utils.modals.myImunifyUpsell.benefits.title' | translate}}\n </h3>\n <ul class=\"in-two-columns\">\n <li *ngFor=\"let item of benefitsItems\" class=\"my-imunify-protection-enabled__list-item\">\n {{item | translate}}\n </li>\n </ul>\n </div>\n <span class=\"my-imunify-protection-enabled__button\"\n (click)=\"myImunifyService.openUpgradePage(data.sendAnalytics)\"\n >{{'utils.modals.myImunifyUpsell.buyNow' | translate}}</span>\n </div>\n </div>\n </ng-container>\n</i360-modal-content>\n","import { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { ModalEntry } from 'app/utils/modals/entry';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MyImunifyService } from 'app/services/my-imunify';\n\ninterface ModalDetailsComponentParams {\n sendAnalytics: boolean;\n}\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n templateUrl: './protection-benefits.component.html',\n styleUrls: ['./protection-benefits.component.scss'],\n})\nexport class ProtectionBenefitsComponent extends ModalEntry<ModalDetailsComponentParams, false> {\n\n // Here all needed items from the translations json\n manualCleanupItems = [\n 'utils.modals.myImunifyUpsell.manualCleanup.item_1',\n 'utils.modals.myImunifyUpsell.manualCleanup.item_2',\n 'utils.modals.myImunifyUpsell.manualCleanup.item_3',\n 'utils.modals.myImunifyUpsell.manualCleanup.item_4',\n ];\n\n risksItems = [\n 'utils.modals.myImunifyUpsell.risks.item_1',\n 'utils.modals.myImunifyUpsell.risks.item_2',\n 'utils.modals.myImunifyUpsell.risks.item_3',\n 'utils.modals.myImunifyUpsell.risks.item_4',\n 'utils.modals.myImunifyUpsell.risks.item_5',\n 'utils.modals.myImunifyUpsell.risks.item_6',\n 'utils.modals.myImunifyUpsell.risks.item_7',\n 'utils.modals.myImunifyUpsell.risks.item_8',\n 'utils.modals.myImunifyUpsell.risks.item_9',\n ];\n\n autoCleanupItems = [\n 'utils.modals.myImunifyUpsell.autoCleanup.item_1',\n 'utils.modals.myImunifyUpsell.autoCleanup.item_2',\n 'utils.modals.myImunifyUpsell.autoCleanup.item_3',\n 'utils.modals.myImunifyUpsell.autoCleanup.item_4',\n 'utils.modals.myImunifyUpsell.autoCleanup.item_5',\n ];\n\n benefitsItems = [\n 'utils.modals.myImunifyUpsell.benefits.item_1',\n 'utils.modals.myImunifyUpsell.benefits.item_2',\n 'utils.modals.myImunifyUpsell.benefits.item_3',\n 'utils.modals.myImunifyUpsell.benefits.item_4',\n 'utils.modals.myImunifyUpsell.benefits.item_5',\n 'utils.modals.myImunifyUpsell.benefits.item_6',\n 'utils.modals.myImunifyUpsell.benefits.item_7',\n 'utils.modals.myImunifyUpsell.benefits.item_8',\n 'utils.modals.myImunifyUpsell.benefits.item_9',\n 'utils.modals.myImunifyUpsell.benefits.item_10',\n ];\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: ModalDetailsComponentParams,\n public myImunifyService: MyImunifyService\n ) {\n super();\n }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { IMyImunifyState } from 'app/services/my-imunify-state';\nimport { PaymentSuccessComponent } from 'app/utils/modals/payment-success/payment-success.component';\nimport { PAYMENT_SUCCESS_DELAY_MS } from 'app/components/nav-root/nav-root.component';\nimport { MyImunifyService } from 'app/services/my-imunify';\nimport { CallOnce } from 'app/utils/call-once';\nimport { ProtectionBenefitsComponent } from 'app/utils/modals/protection-benefits/protection-benefits.component';\nimport { ModalService } from 'app/utils/modals/modal.service';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { ClAnalytics } from 'app/services/cl-analytics';\n\n@Injectable()\nexport class MyImunifyPromoDialogService {\n private promoModalRef: MatDialogRef<any>;\n\n constructor(\n @Inject('Window') private window: Window,\n private clAnalytics: ClAnalytics,\n private modalService: ModalService,\n private myImunifyService: MyImunifyService,\n ) {}\n\n openPromoModal(sendAnalytics = false): void {\n this.promoModalRef = this.modalService.getDialogRef(ProtectionBenefitsComponent, {\n data: { sendAnalytics },\n width: '978px',\n autoFocus: false,\n });\n }\n\n @CallOnce()\n checkNeedToShowMyImunifyUpgradeDialog(username: string): void {\n const showDialog = this.window.location.search.includes('show_cleanup_dialog=true');\n if (showDialog && !localStorage.getItem(`myImunifyUpgradeDialogWasShownFor_${username}`)) {\n localStorage.setItem(`myImunifyUpgradeDialogWasShownFor_${username}`, 'true');\n setTimeout(() => {\n this.openPromoModal(true);\n }, 1000);\n }\n }\n\n handlePayoutEvent(event: MessageEvent, myImunifyState: IMyImunifyState): void {\n if (event.data === 'PAYMENT_SUCCESS') {\n const purchasePageURL = new URL(\n this.myImunifyService.getFixedPurchaseUrl(myImunifyState.purchase_page_url)\n );\n const eventURL = new URL(event.origin);\n\n // Validate the URL\n if (eventURL.origin !== purchasePageURL.origin) {\n return;\n }\n if (this.myImunifyService.purchaseWindow) {\n setTimeout(() => {\n this.myImunifyService.purchaseWindow?.close();\n this.modalService.open(PaymentSuccessComponent, {data: {\n details: 'userside.my_imunify_payment_success_modal.details'\n }});\n this.clAnalytics.sendMyImunifyPurchaseEvent(myImunifyState.username as string);\n this.promoModalRef.close();\n }, PAYMENT_SUCCESS_DELAY_MS);\n }\n }\n }\n}\n","<i360-navigation #navigation\n *ngIf=\"(userRole !== authState.roles.none) && (appState.imunifyStatus|async) === AgentStatus.OK\">\n <ng-container *ngIf=\"imunifyPackage === '360'\">\n <a (click)=\"navigateToTab(NAVBAR_TABS.Home)\"\n attr.aria-label=\"{{ 'menu.logo' | translate}}\"\n *i360Template=\"'logo'\"\n data-element=\"test-imunify360-logo\"\n class=\"i360-logo\">\n <!-- Show logo only if the myimunify state was loaded -->\n <ng-container *ngIf=\"myImunifyService.myImunifyStateLoaded$ | async\">\n <mat-icon svgIcon=\"logo-myimunify\"\n *ngIf=\"isClient && myImunifyState?.enabled; else standardLogo\">\n </mat-icon>\n <ng-template #standardLogo>\n <mat-icon svgIcon=\"logo-imunify\"></mat-icon>\n </ng-template>\n </ng-container>\n </a>\n <ng-container *ngIf=\"isVisibleMyImunifyUpgradeBtn\">\n <button i360-button\n [primary]=\"true\"\n class=\"upgrade-button\"\n (click)=\"myImunifyPromoDialog.openPromoModal()\"\n *i360Template=\"'button'\">\n {{ 'menu.enableProtection' | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"!(licenseState.license|async)?.isFailed() && !(licenseState.eulaFailed|async) && (appState.rpcReady$|async)\">\n <ng-container *ngIf=\"isAdmin\">\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_TABS.Dashboard)\">\n <a (click)=\"navigateToTab(NAVBAR_TABS.Dashboard)\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.Dashboard) }\"\n data-element=\"dashboard-tab-link\"\n *i360Template>\n {{ 'menu.dashboard' | translate }}\n </a>\n </ng-container>\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_TABS.Incidents)\">\n <a (click)=\"navigateToTab(NAVBAR_TABS.Incidents)\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.Incidents) }\"\n data-element=\"incidents-tab-link\"\n *i360Template>\n {{ 'menu.incidents' | translate }}\n </a>\n </ng-container>\n <ng-container *ngIf=\"(firewallService.isFirewallEnabled()|async) && isNavbarItemAllowed(NAVBAR_TABS.Firewall)\">\n <a (click)=\"navigateToTab(NAVBAR_TABS.Firewall)\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.Firewall) }\"\n data-element=\"firewall-tab-link\"\n *i360Template>\n {{ 'menu.firewall' | translate }}\n </a>\n </ng-container>\n <ng-container *ngIf=\"(showImunifyPatch$|async) && isNavbarItemAllowed(NAVBAR_TABS.Vulnerabilities)\">\n <a\n (click)=\"navigateToTab('vulnerabilities')\"\n [ngClass]=\"{ 'active': isActive('vulnerabilities') }\"\n data-element=\"vulnerabilities-tab-link\"\n *i360Template>\n {{ 'menu.vulnerabilities' | translate }}\n </a>\n </ng-container>\n <ng-container *ngIf=\"emailsService.imunifyEmailExist() && isNavbarItemAllowed(NAVBAR_TABS.Email)\">\n <a (click)=\"navigateToTab(NAVBAR_TABS.Email)\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.Email) }\"\n data-element=\"email-tab-link\"\n *i360Template>\n {{ 'menu.email' | translate }}\n </a>\n </ng-container>\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_TABS.MalwareScanner)\">\n <a (click)=\"navigateToTab(NAVBAR_TABS.MalwareScanner)\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.MalwareScanner) }\"\n data-element=\"malware-tab-link\"\n *i360Template>\n {{ 'menu.malwareScanner' | translate }}\n </a>\n </ng-container>\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_TABS.ProactiveDefense)\">\n <a (click)=\"navigateToTab(NAVBAR_TABS.ProactiveDefense)\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.ProactiveDefense) }\"\n data-element=\"proactive-defense-tab-link\"\n *i360Template>\n {{ 'menu.proactiveDefense' | translate }}\n </a>\n </ng-container>\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_TABS.ReputationManagement)\">\n <a (click)=\"navigateToTab(NAVBAR_TABS.ReputationManagement)\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.ReputationManagement) }\"\n data-element=\"reputation-management-tab-link\"\n *i360Template>\n {{ 'menu.reputationManagement' | translate }}\n <span class=\"i360-nav-badge\"\n (cdkObserveContent)=\"navigation.forceNormalize.next()\"\n *ngIf=\"requestsState.infectedDomainsCount.cache|async\">\n {{ requestsState.infectedDomainsCount.cache|async }}\n </span>\n </a>\n </ng-container>\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_TABS.KernelCare)\">\n <a (click)=\"navigateToTab(NAVBAR_TABS.KernelCare)\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.KernelCare) }\"\n data-element=\"kernelcare-tab-link\"\n *i360Template>\n {{ 'menu.kernelCare' | translate }}\n </a>\n </ng-container>\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_FEATURES.News)\">\n <i360-news *i360Template=\"'right'\"></i360-news>\n </ng-container>\n <ng-container *ngIf=\"(support|async) && isNavbarItemAllowed(NAVBAR_TABS.Support)\">\n <ng-template i360Template=\"right\">\n <a attr.aria-label=\"{{ 'menu.support' | translate }}\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.Support) }\"\n (click)=\"navigateToTab(NAVBAR_TABS.Support)\"\n data-element=\"support-tab-link\">\n <mat-icon class=\"support\" svgIcon=\"support\"></mat-icon>\n </a>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_TABS.Settings)\">\n <a class=\"settings-button\"\n attr.aria-label=\"{{ 'menu.settings' | translate }}\"\n *i360Template=\"'right'\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.Settings) }\"\n (click)=\"navigateToTab(NAVBAR_TABS.Settings)\"\n data-element=\"settings-tab-link\">\n <i class=\"material-icons hidden-xs\">settings</i>\n </a>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"isClient\">\n <ng-container *ngIf=\"(requestsState.hasAv|async) && isNavbarItemAllowed(NAVBAR_TABS.MalwareScanner)\">\n <a [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.MalwareScanner) }\"\n (click)=\"navigateToTab(NAVBAR_TABS.MalwareScanner)\"\n data-element=\"malware-tab-link\"\n *i360Template>\n {{ 'menu.malwareScanner' | translate }}\n </a>\n </ng-container>\n <ng-container *ngIf=\"emailsService.imunifyEmailExist() && isNavbarItemAllowed(NAVBAR_TABS.Email)\">\n <a (click)=\"navigateToTab(NAVBAR_TABS.Email)\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.Email) }\"\n data-element=\"email-tab-link\"\n *i360Template>\n {{ 'menu.email' | translate }}\n </a>\n </ng-container>\n <ng-container *ngIf=\"(requestsState.hasProactive|async) && isNavbarItemAllowed(NAVBAR_TABS.ProactiveDefense)\">\n <a (click)=\"navigateToTab(NAVBAR_TABS.ProactiveDefense)\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.ProactiveDefense) }\"\n data-element=\"proactive-defense-tab-link\"\n *i360Template>\n {{ 'menu.proactiveDefense' | translate }}\n </a>\n </ng-container>\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_TABS.Settings)\">\n <a class=\"settings-button\"\n attr.aria-label=\"{{ 'menu.settings' | translate }}\"\n *i360Template=\"'right'\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.Settings) }\"\n (click)=\"navigateToTab(NAVBAR_TABS.Settings)\"\n data-element=\"settings-tab-link\">\n <i class=\"material-icons hidden-xs\">settings</i>\n </a>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"imunifyPackage === 'AV'\">\n <a (click)=\"navigateToTab(NAVBAR_TABS.Home)\"\n attr.aria-label=\"{{ 'menu.logo' | translate }}\"\n *i360Template=\"'logo'\"\n class=\"i360-logo\"\n data-element=\"test-imunifyAV-logo\"\n [class.imunifyav-logo]=\"(licenseState.license|async)?.product === Product.imunifyAV\"\n [class.imunifyavplus-logo]=\"(licenseState.license|async)?.product === Product.imunifyAVPlus\">\n <mat-icon svgIcon=\"logo-imunifyAV{{(licenseState.license|async)?.product === Product.imunifyAVPlus ? 'Plus' : ''}}\">\n </mat-icon>\n </a>\n\n <ng-container *ngIf=\"!licenseState.eula.value.isFailed() && (appState.rpcReady$|async)\">\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_TABS.MalwareScanner)\">\n <a [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.MalwareScanner) }\"\n (click)=\"navigateToTab(NAVBAR_TABS.MalwareScanner)\"\n data-element=\"malware-tab-link\"\n *i360Template>\n {{ 'menu.malwareScanner' | translate }}\n </a>\n </ng-container>\n <ng-container *ngIf=\"isAdmin\">\n <ng-container *ngIf=\"(showImunifyPatch$|async) && isNavbarItemAllowed(NAVBAR_TABS.Vulnerabilities)\">\n <a\n (click)=\"navigateToTab('vulnerabilities')\"\n [ngClass]=\"{ 'active': isActive('vulnerabilities') }\"\n data-element=\"vulnerabilities-tab-link\"\n *i360Template>\n {{ 'menu.vulnerabilities' | translate }}\n </a>\n </ng-container>\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_TABS.ReputationManagement)\">\n <a [ngClass]=\"{ 'active': isActive( NAVBAR_TABS.ReputationManagement) }\"\n (click)=\"navigateToTab( NAVBAR_TABS.ReputationManagement)\"\n data-element=\"reputation-management-tab-link\"\n *i360Template>\n {{ 'menu.reputationManagement' | translate }}\n <ng-container *ngIf=\"!(licenseState.license|async)?.isFreeVersion\">\n <span class=\"i360-nav-badge\"\n *ngIf=\"requestsState.infectedDomainsCount.cache|async\"\n (cdkObserveContent)=\"navigation.forceNormalize.next()\">\n {{ requestsState.infectedDomainsCount.cache|async }}\n </span>\n </ng-container>\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"(firewallService.isFirewallEnabled()|async) && isNavbarItemAllowed(NAVBAR_TABS.Firewall)\">\n <a [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.Firewall) }\"\n (click)=\"navigateToTab(NAVBAR_TABS.Firewall)\"\n data-element=\"firewall-tab-link\"\n *i360Template>\n {{ 'menu.firewall' | translate }}\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_TABS.ProactiveDefense)\">\n <a (click)=\"navigateToTab(NAVBAR_TABS.ProactiveDefense)\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.ProactiveDefense) }\"\n data-element=\"proactive-defense-tab-link\"\n *i360Template>\n {{ 'menu.proactiveDefense' | translate }}\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_TABS.KernelCare)\">\n <a (click)=\"navigateToTab(NAVBAR_TABS.KernelCare)\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.KernelCare) }\"\n data-element=\"kernelcare-tab-link\"\n *i360Template>\n {{ 'menu.kernelCare' | translate }}\n </a>\n </ng-container>\n\n <i360-news *i360Template=\"'right'\"></i360-news>\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_TABS.Support)\">\n <a attr.aria-label=\"{{ 'menu.support' | translate }}\"\n *i360Template=\"'right'\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.Support) }\"\n (click)=\"navigateToTab(NAVBAR_TABS.Support)\"\n data-element=\"support-tab-link\">\n <mat-icon class=\"support\" svgIcon=\"support\"></mat-icon>\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_TABS.Settings)\">\n <a class=\"settings-button\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.Settings) }\"\n (click)=\"navigateToTab(NAVBAR_TABS.Settings)\"\n attr.aria-label=\"{{ 'menu.settings' | translate }}\"\n data-element=\"settings-tab-link\"\n *i360Template=\"'right'\">\n <i class=\"material-icons hidden-xs\">settings</i>\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"(licenseState.license|async)?.upgradeAvailable && (config.changes|async)?.PERMISSIONS?.upgrade_button && isNavbarItemAllowed(NAVBAR_TABS.Upgrade)\">\n <button i360-button\n i360UpgradeButton=\"menu.upgrade\"\n [round]=\"true\"\n [primary]=\"true\"\n class=\"upgrade-button\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.Upgrade) }\"\n (click)=\"navigateToTab(NAVBAR_TABS.Upgrade)\"\n *i360Template=\"'button'\">\n </button>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!isAdmin && showUpgradeButtonForEndUser\">\n <ng-container *ngIf=\"(licenseState.license|async)?.upgradeAvailable && (config.changes|async)?.PERMISSIONS?.upgrade_button\">\n <button i360-button\n i360UpgradeButton=\"menu.upgrade\"\n [round]=\"true\"\n [primary]=\"true\"\n class=\"upgrade-button\"\n [ngClass]=\"{ 'active': isActive(NAVBAR_TABS.Upgrade) }\"\n (click)=\"navigateToTab(NAVBAR_TABS.Upgrade)\"\n *i360Template=\"'button'\">\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isNavbarItemAllowed(NAVBAR_FEATURES.MenuProfile)\">\n <i360-menu-profile *i360Template=\"'right'\"></i360-menu-profile>\n </ng-container>\n</i360-navigation>\n\n<notifications></notifications>\n","/**\n * This decorator allows a method to be executed only once\n */\nexport function CallOnce() {\n return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n const originalMethod = descriptor.value;\n let hasBeenCalled = false;\n\n descriptor.value = function (...args: any[]) {\n if (hasBeenCalled) return;\n\n hasBeenCalled = true;\n return originalMethod.apply(this, args);\n };\n\n return descriptor;\n };\n}\n","import {\n Component,\n Optional,\n ViewEncapsulation,\n OnDestroy,\n ChangeDetectorRef,\n HostListener,\n OnInit\n} from '@angular/core';\nimport { Location } from '@angular/common';\nimport { AuthState } from 'app/services/auth-state';\nimport { Panel } from 'app/utils/panel';\nimport { ReputationService } from 'app/services/reputation';\nimport { LicenseState } from 'app/services/license-state';\nimport { RequestsState } from 'app/services/requests-state';\nimport { EulaService } from 'app/components/eula/eula.service';\nimport { I360Config } from 'app/utils/config/config';\nimport { AppState } from 'app/core/app.service';\nimport {\n fromEvent,\n Subject,\n bufferCount,\n filter,\n map,\n takeUntil,\n noop,\n Observable,\n combineLatest,\n} from 'rxjs';\nimport { I360ConfigDataItems } from '@imunify360-api/settings';\nimport { EmailsService } from 'app/services/emails';\nimport { AuthService, I360Role } from \"app/services/auth\";\nimport { Product, Package } from '@imunify360-api/license';\nimport { UserFeaturesStatusService } from 'app/services/user-features-status';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { AgentStatus } from '@imunify360-api/misc';\nimport { MyImunifyService } from 'app/services/my-imunify';\nimport { IMyImunifyState } from 'app/services/my-imunify-state';\nimport { FirewallService } from 'app/components/lists/firewall.service';\nimport { LicenseService } from 'app/services/license';\nimport { MyImunifyPromoDialogService } from 'app/services/my-imunify-promo-dialog/my-imunify-promo-dialog.service';\nimport { PermissionsService } from 'app/services/permissions';\nimport { NavRootService } from './nav-root.service';\nimport { NAVBAR_TABS, NAVBAR_FEATURES } from './navbar-items.enum';\nimport { isNavbarItemAllowed } from 'app/utils/allowed-items.utils';\n\nexport const PAYMENT_SUCCESS_DELAY_MS = 1500;\n\n@Component({\n selector: 'nav-root',\n templateUrl: './nav-root.component.html',\n providers: [\n I360Config,\n NavRootService,\n ],\n styleUrls: ['./nav-root.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NavRootComponent implements OnDestroy, OnInit {\n support = this.config.changes.pipe(\n map((c: I360ConfigDataItems) => {\n return c.PERMISSIONS.support_form\n }),\n );\n imunifyPackage = IMUNIFY_PACKAGE;\n AgentStatus = AgentStatus;\n Product = Product;\n userRole: I360Role = this.authState.role.value;\n isClient: boolean;\n isAdmin: boolean;\n myImunifyState: IMyImunifyState;\n showImunifyPatch$: Observable<boolean>;\n showUpgradeButtonForEndUser = false;\n NAVBAR_TABS = NAVBAR_TABS;\n NAVBAR_FEATURES = NAVBAR_FEATURES;\n isNavbarItemAllowed = isNavbarItemAllowed;\n\n // Listener to catch the payment event and handle it\n @HostListener('window:message', ['$event']) onPayout(event) {\n this.myImunifyPromoDialog.handlePayoutEvent(event, this.myImunifyState);\n }\n\n private destroy$ = new Subject<void>();\n\n constructor(\n private cdr: ChangeDetectorRef,\n public panel: Panel,\n public firewallService: FirewallService,\n public emailsService: EmailsService,\n public authState: AuthState,\n public authService: AuthService,\n public appState: AppState,\n public licenseState: LicenseState,\n public licenseService: LicenseService,\n public requestsState: RequestsState,\n @Optional() public eulaService: EulaService,\n // looks like component level providers are lazy loaded\n @Optional() public reputationService: ReputationService,\n public config: I360Config,\n userFeaturesStatusService: UserFeaturesStatusService,\n private router: Router,\n private location: Location,\n public permissions: PermissionsService,\n public myImunifyService: MyImunifyService,\n public myImunifyPromoDialog: MyImunifyPromoDialogService,\n private navRootService: NavRootService,\n ) {\n if (authState.role.value === I360Role.none) {\n authService.goToLoginPage();\n }\n\n if (typeof I360_SHOW_UPGRADE_BUTTON_FOR_END_USER === 'boolean') {\n this.showUpgradeButtonForEndUser = I360_SHOW_UPGRADE_BUTTON_FOR_END_USER;\n }\n\n // Need for login\n this.router.events.pipe(takeUntil(this.destroy$)).subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.userRole = this.authState.role.value;\n\n // if we are inside an iframe,\n // it's good to provide the current location to the parent window\n if (window.parent) {\n window.parent.postMessage({\n type: 'imunify-url-hash-changed',\n hash: `#${event.urlAfterRedirects}`\n }, '*');\n }\n }\n });\n\n // Need for iframe in DirectAdmin panel\n if (this.panel.isDirectAdmin && document.querySelector('#iframe-container')) {\n fromEvent(window, 'mousemove').pipe(\n map((event: MouseEvent) => event.clientY),\n bufferCount(20, 1),\n filter((clientY) => {\n return ((this.appState.mousePositionY + 30 < clientY[0]) ||\n (this.appState.mousePositionY - 30 > clientY[0]));\n }),\n takeUntil(this.destroy$),\n ).subscribe((position) => {\n this.appState.mousePositionY = position[0];\n });\n }\n this.showImunifyPatch$ = combineLatest([\n this.authState.isAdmin,\n this.permissions.MS_PATCH_ENABLED\n ]).pipe(\n takeUntil(this.destroy$),\n map(([isAdmin, MS_PATCH_ENABLED]) => {\n return isAdmin && MS_PATCH_ENABLED;\n })\n );\n\n this.authState.isClient.pipe(takeUntil(this.destroy$)).subscribe(isClient => {\n this.isClient = isClient;\n this.cdr.markForCheck();\n });\n this.authState.isAdmin.pipe(takeUntil(this.destroy$)).subscribe(isAdmin => {\n this.isAdmin = isAdmin;\n this.cdr.markForCheck();\n });\n this.authState.role.pipe(takeUntil(this.destroy$)).subscribe(authRole => {\n this.userRole = authRole;\n this.cdr.markForCheck();\n });\n if (this.imunifyPackage === Package.imunify360) {\n this.listenMyImunifyState();\n }\n }\n\n get isVisibleMyImunifyUpgradeBtn(): boolean {\n return this.isClient && this.myImunifyState?.enabled && !this.myImunifyState.protection;\n }\n\n ngOnInit() {\n if (this.panel.isPlesk && this.isAdmin) {\n this.navRootService.checkInstallationStatusAndLicense()\n .pipe(takeUntil(this.destroy$))\n .subscribe({ next: noop, error: noop });\n }\n }\n\n private listenMyImunifyState(): void {\n this.myImunifyService.getMyImunifyState()\n .pipe(takeUntil(this.destroy$))\n .subscribe(state => {\n this.myImunifyState = state;\n if (this.isVisibleMyImunifyUpgradeBtn) {\n this.myImunifyPromoDialog.checkNeedToShowMyImunifyUpgradeDialog(state.username as string);\n }\n this.cdr.markForCheck();\n });\n }\n\n isActive(tab: string): boolean {\n const destinationPath = [this.imunifyPackage, this.userRole, tab].join('/');\n return this.location.path().includes(destinationPath);\n }\n\n navigateToTab(tab: string): void {\n const command = tab ? [this.imunifyPackage, this.userRole, tab] : [''];\n\n this.router.navigate(command);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n/**\n * TODO: remove this after migrating to @angular/material6\n */\n@Directive({\n selector: '[i360-dialog-template]',\n providers: [{\n provide: MatDialogRef,\n useExisting: TempDialogTemplateWrapperDirective,\n }],\n})\nexport class TempDialogTemplateWrapperDirective {\n @Input('i360-dialog-template') id: string; // eslint-disable-line @angular-eslint/no-input-rename\n constructor(private dialogService: MatDialog) {}\n close(result: any) {\n let dialog: MatDialogRef<any> | undefined;\n if (this.id) {\n dialog = this.dialogService.getDialogById(this.id);\n } else {\n dialog = this.dialogService.openDialogs[0];\n }\n if (dialog) {\n dialog.close(result);\n }\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[i360Template]',\n})\nexport class ImunifyTemplateDirective {\n @Input() set i360Template(val) {\n this.name = val;\n }\n name: string;\n constructor(public template: TemplateRef<any>) {}\n}\n","<i360-modal-content\n [showConfirm]=\"false\">\n <ng-container modal-title>\n <div [class]=\"data.details.type+'-modal-details'\">\n <i class=\"material-icons error-icon\"\n *ngIf=\"data.details.type === 'error'\">info_outline</i> {{ data.details.title}}\n </div>\n </ng-container>\n <ng-container modal-body>\n <textarea id=\"notification-details\" readonly>{{ data.details.content }}</textarea>\n </ng-container>\n</i360-modal-content>","import { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { ModalEntry } from 'app/utils/modals/entry';\nimport { Notification } from 'app/core/app.service';\n\ninterface ModalDetailsComponentParams {\n details: Notification;\n}\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n templateUrl: './modal-details.component.html',\n styleUrls: ['./modal-details.component.scss'],\n})\nexport class ModalDetailsComponent extends ModalEntry<ModalDetailsComponentParams, false> {\n constructor(@Inject(MAT_DIALOG_DATA) public data: ModalDetailsComponentParams) {\n super();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ModalContentComponent } from './content/content.component';\nimport { ModalService } from './modal.service';\nimport { ConfirmComponent } from './confirm/confirm.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { TempDialogTemplateWrapperDirective } from './temp-dialog-template-wrapper.directive';\nimport { CheckboxesComponent } from './checkboxes/checkboxes.component';\nimport { ModalItemsComponent } from './items/items.component';\nimport { ModalDetailsComponent } from './modal-details/modal-details.component';\nimport { PaymentSuccessComponent } from './payment-success/payment-success.component';\nimport { I360TranslateModule } from 'app/utils/translate/translate.module';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ProtectionBenefitsComponent } from './protection-benefits/protection-benefits.component';\nimport { MatIconModule } from '@angular/material/icon';\n\n\nconst publicDirectives = [\n ConfirmComponent,\n ModalContentComponent,\n TempDialogTemplateWrapperDirective,\n CheckboxesComponent,\n ModalItemsComponent,\n ModalDetailsComponent,\n PaymentSuccessComponent,\n ProtectionBenefitsComponent\n];\nconst privateDirectives = [\n];\n\n@NgModule({\n imports: [\n MatDialogModule,\n MatButtonModule,\n MatIconModule,\n CommonModule,\n A11yModule,\n I360TranslateModule,\n MatTooltipModule,\n ],\n declarations: [\n ...publicDirectives,\n ...privateDirectives,\n ],\n exports: [\n ...publicDirectives,\n ],\n providers: [\n ModalService,\n ]\n})\nexport class I360ModalModule {\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateParams, TranslateService } from 'app/utils/translate/translate.service';\nimport { Observable, of } from 'rxjs';\n\n\n@Pipe({\n name: 'i360Error',\n})\nexport class ErrorPipe implements PipeTransform {\n constructor(private translate: TranslateService) {}\n\n /**\n * Validator should return an error in format: { ruleName: params }\n *\n * @example {required: {what: 'Country'}}\n * @example {integer: {}}\n */\n transform(value: null|{[key: string]: TranslateParams}): Observable<string> {\n if (!value) return of('');\n\n const firstKey = Object.keys(value)[0];\n return this.translate.translate.get(`validators.${firstKey}`, value[firstKey]);\n }\n}\n","import { Component, HostBinding } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n\n@Component({\n selector: 'i360-error',\n template: `\n {{control.errors|i360Error|async}}\n `,\n styleUrls: ['./error.component.scss'],\n inputs: ['control'], // eslint-disable-line\n})\nexport class ErrorComponent {\n @HostBinding('class') hostClass = 'error-message'; // for tests\n\n control: NgControl\n}\n","import {\n ChangeDetectorRef,\n ComponentRef,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef,\n} from '@angular/core';\nimport { FormControlName } from '@angular/forms';\nimport { debounceTime } from 'rxjs';\n\nimport { ErrorComponent } from 'app/utils/validator/error.component/error.component';\n\n@Directive({\n selector: '[formControlName]',\n exportAs: 'formControlName',\n})\nexport class ExtendFormControlNameDirective implements OnInit, OnDestroy {\n @Input() i360Errors = true;\n\n private errorRef: ComponentRef<ErrorComponent> | null;\n\n get value() {\n return this.control.value;\n }\n set value(value) {\n this.control.control.setValue(value);\n }\n constructor(\n private control: FormControlName,\n private detector: ChangeDetectorRef,\n private viewContainer: ViewContainerRef\n ) {}\n\n ngOnInit() {\n if (!this.control.value) {\n this.control.control.markAsPristine();\n }\n if (this.control.statusChanges) {\n this.control.statusChanges.pipe(debounceTime(20)).subscribe(() => this.renderError());\n }\n Promise.resolve().then(() => {\n this.control.control.enable(<any>{i360: true});\n });\n }\n\n renderError() {\n if (this.i360Errors) {\n if (this.control.invalid && !this.errorRef && this.control.dirty) {\n this.errorRef = this.viewContainer.createComponent(ErrorComponent);\n this.errorRef.instance.control = this.control;\n this.detector.markForCheck();\n } else {\n if ((this.control.valid || this.control.pristine) && this.errorRef) {\n this.errorRef.destroy();\n this.errorRef = null;\n }\n }\n }\n }\n async ngOnDestroy() {\n if (this.errorRef) {\n this.errorRef.destroy();\n }\n await Promise.resolve();\n if (this.control.control) {\n this.control.control.disable(<any>{i360: true});\n }\n }\n}\n","import {\n forwardRef, AfterContentInit, ContentChildren, Directive, QueryList,\n} from '@angular/core';\n\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n\n@Directive({\n selector: 'i360-checkbox-group',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxGroupDirective),\n multi: true,\n }],\n})\nexport class CheckboxGroupDirective implements AfterContentInit, ControlValueAccessor {\n values: string[];\n @ContentChildren(MatCheckbox) checkboxes: QueryList<MatCheckbox>;\n forEachQueue: any[] = [];\n onChangeFn = val => {};\n\n writeValue(obj: string[]): void {\n if (!Array.isArray(obj)) {\n obj = [];\n }\n this.values = obj;\n this.forEachCheckbox(checkbox => {\n checkbox.checked = this.values.includes(checkbox.name);\n });\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.forEachCheckbox(checkbox => checkbox.registerOnTouched(fn));\n }\n setDisabledState(isDisabled: boolean): void {\n this.forEachCheckbox(checkbox => checkbox.setDisabledState(isDisabled));\n }\n ngAfterContentInit() {\n this.forEachCheckbox(checkbox => {\n checkbox.checked = this.values.includes(checkbox.name);\n checkbox.change.subscribe(({checked}) => {\n if (checked) {\n this.values = [...this.values, checkbox.name];\n } else {\n this.values = this.values.filter(value => value !== checkbox.name);\n }\n this.onChangeFn(this.values);\n });\n });\n }\n\n /**\n * can be called before content initialized. anyway, function will be executed after\n * ngAfterContentInit\n */\n forEachCheckbox(fn: any) {\n this.forEachQueue.push(fn);\n if (this.checkboxes) {\n this.checkboxes.forEach((...args) => this.forEachQueue.forEach(fn => fn(...args)));\n this.forEachQueue = [];\n }\n }\n}\n","import { forwardRef, Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport {\n AbstractControl, ControlValueAccessor, NgModel, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator,\n Validators,\n} from '@angular/forms';\nimport dayjs from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\nimport utc from 'dayjs/plugin/utc';\nimport { I360Validators } from 'app/utils/validator/validators';\n\ndayjs.extend(duration);\ndayjs.extend(utc);\n\n@Component({\n selector: 'i360-datepicker',\n templateUrl: './datepicker.component.html',\n styleUrls: ['./datepicker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatepickerComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatepickerComponent),\n multi: true,\n },\n ],\n})\nexport class DatepickerComponent implements ControlValueAccessor, Validator {\n @Input() placeholder = 'utils.datepicker.placeholder';\n @ViewChild('input', {static: true}) input: ElementRef;\n @ViewChild(NgModel, {static: true}) inputNgModel: NgModel;\n maxDays = 24;\n ttl: number | undefined;\n type: DatepickerUnit;\n datepickerUnit = DatepickerUnit;\n validator;\n propagateChange: Function = () => {};\n\n constructor() {\n this.type = this.datepickerUnit.Days;\n this.setValidator();\n }\n\n writeValue(value: number) {\n if (value) {\n const diff = (timestamp: dayjs.Dayjs, type: DatepickerUnit) =>\n Math.round(timestamp.diff(dayjs(), type, true));\n const timestamp = dayjs.unix(value);\n const hours = diff(timestamp, this.datepickerUnit.Hours);\n if (hours < 24) {\n this.ttl = hours;\n this.type = this.datepickerUnit.Hours;\n } else {\n this.ttl = diff(timestamp, this.datepickerUnit.Days);\n this.type = this.datepickerUnit.Days;\n }\n } else {\n this.ttl = undefined;\n this.type = this.datepickerUnit.Days;\n }\n }\n\n validate(c: AbstractControl) {\n const validation = this.validator({value: this.ttl});\n this.inputNgModel.control.setErrors(validation);\n return validation;\n }\n\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n registerOnTouched() {}\n\n setValidator() {\n this.validator = Validators.compose(\n [I360Validators.integer(false),\n Validators.min(1),\n Validators.max(\n this.type === this.datepickerUnit.Days ? this.maxDays : this.maxDays * 24)]);\n }\n\n onChange(value: DatepickerUnit) {\n const expiration = this.ttl\n ? dayjs().add(this.ttl, this.type).unix()\n : null;\n\n this.setValidator();\n this.propagateChange(expiration);\n }\n}\n\nenum DatepickerUnit {\n Days = 'days',\n Hours = 'hours',\n}\n","<div class=\"flexer flex-nowrap\">\n <input #input\n placeholder=\"{{ placeholder | translate }}\"\n attr.aria-label=\"{{ placeholder | translate }}\"\n class=\"form-control\"\n (input)=\"onChange($any($event))\"\n [(ngModel)]=\"ttl\">\n <mat-form-field appearance=\"outline\">\n <mat-select [(value)]=\"type\" (valueChange)=\"onChange($event)\"\n aria-label=\"{{ placeholder | translate }}\">\n <mat-option value=\"{{datepickerUnit.Days}}\">\n {{ 'utils.datepicker.days' | translate }}\n </mat-option>\n <mat-option value=\"{{datepickerUnit.Hours}}\">\n {{ 'utils.datepicker.hours' | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n","import { forwardRef, Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { identity } from 'rxjs';\n\nconst separatedRegExp = {\n byComma: {\n joinBy: ', ',\n splitBy: /[,\\n\\s]/,\n },\n byEnter: {\n joinBy: '\\n',\n splitBy: /[\\n]/,\n },\n};\n\nexport enum SeparatedBy {\n byComma = 'byComma',\n byEnter = 'byEnter',\n}\n\n@Directive({\n selector: '[commaSeparatedInput][formControlName], [commaSeparatedInput][formControl]',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CommaSeparatedInputDirective),\n multi: true,\n }],\n})\nexport class CommaSeparatedInputDirective implements ControlValueAccessor {\n @Input() splitBy: SeparatedBy = SeparatedBy.byComma;\n @Input() isFilter: boolean = false;\n private onChangeFn = identity;\n\n constructor(\n public element: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n writeValue(value: string[]): void {\n if (!Array.isArray(value)) {\n if (this.isFilter) {\n value = [value];\n } else {\n value = [];\n }\n }\n\n this.renderer\n .setProperty(this.element.nativeElement, 'value', value.join(\n separatedRegExp[this.splitBy].joinBy,\n ));\n }\n\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n }\n\n @HostListener('input', ['$event'])\n handleInput(event) {\n const emails = event.target.value\n .split(\n separatedRegExp[this.splitBy].splitBy,\n ).map((value) => value.trim())\n .filter(identity);\n\n this.onChangeFn(emails);\n }\n}\n","import {\n Directive, EventEmitter, HostBinding, Input, NgZone, OnInit, Optional, Output,\n} from '@angular/core';\nimport { DefaultValueAccessor, FormGroupDirective } from '@angular/forms';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatSelect } from '@angular/material/select';\nimport { MatSlider } from '@angular/material/slider';\n\nimport { CheckboxGroupDirective } from 'app/utils/checkbox-group.directive';\nimport { DatepickerComponent } from 'app/utils/datepicker/datepicker.component';\nimport { ModalContentComponent } from 'app/utils/modals/content/content.component';\nimport {\n CommaSeparatedInputDirective,\n} from 'app/utils/comma-separated-input/comma-separated-input.directive';\nimport { I360FormControl } from './form-control';\n\n/**\n * disable form submitting on Enter by default\n * focus on next input element on enter key pressed, like tab\n * submit if this is last input\n * focus on invalid input on submit\n */\n@Directive({\n selector: 'form[formGroup]',\n})\nexport class ExtendFormGroupDirective implements OnInit {\n @HostBinding('style.display') styleDisplay = '';\n @Output() i360Submit = new EventEmitter<ExtendFormGroupDirective>();\n @Input() allowSubmitWhenSubmitting = false;\n constructor(public formGroup: FormGroupDirective,\n @Optional() private modalContent: ModalContentComponent,\n private ngZone: NgZone) {}\n\n ngOnInit(): void {\n if (this.modalContent) {\n this.formGroup.statusChanges!.subscribe(() => {\n this.modalContent.confirmDisabled = !!this.formGroup.invalid;\n });\n this.formGroup.valueChanges!.subscribe(value => {\n this.modalContent.dialogResult = value;\n });\n }\n this.formGroup.ngSubmit.subscribe(() => {\n this.formGroup.form.updateValueAndValidity();\n if (this.formGroup.invalid) {\n this.focusOnInvalidDirective(this.formGroup);\n } else {\n this.i360Submit.emit(this);\n if (this.modalContent) {\n this.modalContent.close();\n }\n }\n });\n // allow use ngIf with formControlName and do not loose order of focusing on keypress.enter\n const oldPush = this.formGroup.directives.push;\n const ngZone = this.ngZone;\n this.formGroup.directives.push = function (...args) {\n const retVal = oldPush.apply(this, args);\n ngZone.runOutsideAngular(() => {\n setTimeout(() => this.sort((a, b) => (a.control as I360FormControl<any>).i360Id\n - (b.control as I360FormControl<any>).i360Id));\n });\n return retVal;\n };\n }\n\n focusOnInvalidDirective(formGroup: FormGroupDirective) {\n formGroup.form.markAsDirty({children: true} as any);\n // focus on first invalid directive\n return formGroup.directives.some((directive): boolean => {\n const found = directive.invalid && this.focusOnDirective(directive);\n if (found) {\n directive.control.markAsDirty();\n directive.control.statusChanges['emit']();\n } else {\n return false;\n }\n return found;\n });\n }\n\n focusOnDirective(directive = this.formGroup.directives[0]): boolean|void {\n const valueAccessor = directive.valueAccessor;\n if (valueAccessor instanceof DefaultValueAccessor) {\n const nativeElement = valueAccessor['_elementRef'].nativeElement;\n nativeElement.focus();\n nativeElement.select();\n return true;\n }\n if (valueAccessor instanceof MatCheckbox) {\n if (!valueAccessor.disabled) { // skip disabled checkboxes\n valueAccessor.focus(); // will be good to have focus() on each valueAccessor\n return true;\n }\n }\n if (valueAccessor instanceof MatSlider) {\n valueAccessor['_elementRef'].nativeElement.focus();\n return true;\n }\n if (valueAccessor instanceof CheckboxGroupDirective) {\n valueAccessor.checkboxes.first.focus();\n return true;\n }\n if (valueAccessor instanceof MatSelect) {\n valueAccessor.focus();\n return true;\n }\n\n if (valueAccessor instanceof DatepickerComponent) {\n valueAccessor.input.nativeElement.focus();\n return true;\n }\n\n if (valueAccessor instanceof CommaSeparatedInputDirective) {\n valueAccessor.element.nativeElement.focus();\n }\n }\n saveLastInputValuesToBrowser() {\n this.styleDisplay = 'none';\n setTimeout(() => {\n history.replaceState(null, '', location.href);\n this.styleDisplay = '';\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule, UntypedFormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { ErrorComponent } from 'app/utils/validator/error.component/error.component';\nimport { ErrorPipe } from 'app/utils/validator/error.pipe';\nimport { I360FormBuilder } from 'app/utils/validator/form-builder';\nimport { ExtendFormControlNameDirective }\nfrom 'app/utils/validator/extend-form-control-name.directive';\nimport { ExtendFormGroupDirective } from 'app/utils/validator/extend-form-group.directive';\nimport { CommonModule } from '@angular/common';\nimport { SelectFormControlNameDirective } from 'app/utils/validator/select-form-control-name';\n\n\nconst publicDirectives = [\n ExtendFormControlNameDirective,\n ExtendFormGroupDirective,\n SelectFormControlNameDirective,\n ErrorComponent,\n];\nconst privateDirectives = [\n ErrorPipe,\n];\n\n\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n ReactiveFormsModule,\n ],\n exports: [\n ReactiveFormsModule,\n FormsModule,\n ...publicDirectives,\n ],\n declarations: [\n ...publicDirectives, ...privateDirectives,\n ],\n providers: [\n { provide: UntypedFormBuilder, useExisting: I360FormBuilder },\n I360FormBuilder,\n ]\n})\nexport class I360ValidationModule {}\n","import { Directive, TemplateRef, ViewChild } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n\n@Directive({})\nexport abstract class NewsItemDirective {\n isUnread: Observable<boolean>;\n isCountable: Observable<boolean>;\n openOverlay: Observable<boolean>;\n blockOverlayAutoOpen = new BehaviorSubject(false);\n @ViewChild('tpl', {static: true}) template: TemplateRef<any>;\n\n abstract markAsRead(): void;\n}\n","import { Component, ContentChildren, ElementRef, OnDestroy, QueryList } from '@angular/core';\nimport {\n combineLatest, identity, merge, NEVER, Observable, Subject,\n debounceTime, filter, takeUntil\n} from 'rxjs';\nimport { NewsItemDirective } from '../news-items/news-item.directive';\n\nexport const NEWS_AUTO_OPEN_DELAY = 2000;\n\n@Component({\n selector: 'i360-news-notifications',\n template: `\n <ng-container *ngIf=\"newsCount > 0\">\n <mat-icon\n fontSet=\"i360-icon\"\n fontIcon=\"i360-icon-bell\"\n id=\"i360-notification-events-button\"\n tabindex=\"0\"\n (keyup.enter)=\"toggleOverlay()\"></mat-icon>\n <div class=\"notification-events-count\" *ngIf=\"unreadNewsCount > 0\">\n {{ unreadNewsCount }}\n </div>\n <i360-news-overlay *ngIf=\"overlayVisible\">\n <ng-container *ngFor=\"let news of _news\"\n [ngTemplateOutlet]=\"news.template\">\n </ng-container>\n </i360-news-overlay>\n </ng-container>\n `,\n styleUrls: ['news-notifications.component.scss'],\n})\nexport class NewsNotificationsComponent implements OnDestroy {\n newsCount: number = 0;\n unreadNewsCount: number = 0;\n _news: NewsItemDirective[] = [];\n overlayVisible: boolean = false;\n overlayAutoOpenBlocked: boolean = false;\n private unsubscribe = new Subject<void>();\n\n constructor(\n public element: ElementRef,\n ) {}\n\n @ContentChildren(NewsItemDirective)\n set news(value: QueryList<NewsItemDirective>) {\n this._news = value.toArray();\n this.unsubscribe.next();\n\n this.updateNewsCount();\n this.updateUnreadNewsCount();\n this.updateOverlayAutoOpenBlocked();\n this.openOverlayIfNeeded();\n }\n\n ngOnDestroy(): void {\n this.unsubscribe.next();\n this.unsubscribe.complete();\n }\n\n toggleOverlay() {\n if (this.newsCount === 0) return;\n\n this.overlayVisible = !this.overlayVisible;\n\n if (!this.overlayVisible) {\n this._news.forEach((news) => {\n news.markAsRead();\n });\n }\n }\n\n private combineLatestUntilUnsubscribed(input: Array<Observable<boolean>>) {\n return combineLatest(input).pipe(takeUntil(this.unsubscribe));\n }\n\n private updateNewsCount() {\n this.combineLatestUntilUnsubscribed(\n this._news.map((news) => news.isCountable),\n ).subscribe((countableStatuses) => {\n this.newsCount = countableStatuses.filter(identity).length;\n });\n }\n\n private updateUnreadNewsCount() {\n this.combineLatestUntilUnsubscribed(\n this._news.map((news) => news.isUnread),\n ).subscribe((unreadStatuses) => {\n this.unreadNewsCount = unreadStatuses.filter(identity).length;\n });\n }\n\n private updateOverlayAutoOpenBlocked() {\n this.combineLatestUntilUnsubscribed(\n this._news.map((news) => news.blockOverlayAutoOpen),\n ).subscribe((blockStatuses) => {\n this.overlayAutoOpenBlocked = blockStatuses.some(identity);\n });\n }\n\n private openOverlayIfNeeded() {\n // We need NEVER because some NewsItem's openOverlay may complete immediately\n // which lead to merge's completion and debounceTime next and complete calls\n // and we get ExpressionChangedAfterItHasBeenCheckedError\n merge(NEVER, ...this._news.map((news) => news.openOverlay))\n .pipe(\n filter(identity),\n debounceTime(NEWS_AUTO_OPEN_DELAY), // wait for i360-navigation cmp\n takeUntil(this.unsubscribe),\n )\n .subscribe(() => {\n if (!this.overlayAutoOpenBlocked) {\n this.overlayVisible = true;\n }\n });\n }\n}\n","<div class=\"i360-version\">\n <ng-container *ngIf=\"(settingsService.packageVersions | async) as versionData; else appVersionBlock\">\n <div\n class=\"i360-package-versions\"\n matTooltip=\"{{ versionData?.packages }}\"\n matTooltipClass=\"version-tooltip\">\n <ng-container *ngTemplateOutlet=\"appVersionBlock\"></ng-container> {{ 'menu.packageVersions' | translate: { count: versionData?.count - 1 } }}\n </div>\n </ng-container>\n <ng-template #appVersionBlock>v{{appVersion}}</ng-template>\n\n</div>\n","import {\n Component, Input,\n} from '@angular/core';\nimport { SettingsService } from 'app/services/settings';\n\n\n@Component({\n selector: 'i360-package-versions',\n templateUrl: './package-versions.component.html',\n})\nexport class PackageVersionsComponent {\n @Input() public appVersion:string;\n\n constructor(\n public settingsService: SettingsService,\n ) {}\n\n}\n","<div class=\"i360-low-resources-badge-wrapper\" *ngIf=\"appState.lowResourcesMode$ | async\">\n <div class=\"i360-low-resources-badge\">\n <a href=\"https://docs.imunify360.com/features/#low-resource-usage-mode\" target=\"_blank\">\n <mat-icon fontSet=\"i360-icon\" fontIcon=\"i360-icon-leaf\"></mat-icon>\n {{ 'menu.lowResourcesUsage' | translate }}\n </a>\n </div>\n</div>\n\n<div class=\"i360-navigation-wrapper\" [class.i360-low-resources]=\"appState.lowResourcesMode$ | async\">\n <div class=\"i360-main-nav\" #navWrapper>\n\n <div class=\"i360-logo-container\">\n <ng-template [ngTemplateOutlet]=\"logoTemplate\"></ng-template>\n\n <ng-container *ngIf=\"(authState.isClient|async) && myImunifyState?.enabled; else standardVersion\">\n <div class=\"i360-myimunify-status\">{{\n myImunifyState?.protection ? ('menu.protectionEnabled' | translate) : ('menu.protectionDisabled' | translate)\n }}</div>\n </ng-container>\n <ng-template #standardVersion>\n <i360-package-versions [appVersion]=\"appState.version\"></i360-package-versions>\n </ng-template>\n\n <button mat-icon-button\n (click)=\"closed = !closed\"\n aria-haspopup=\"true\"\n attr.aria-label=\"{{ 'menu.open' | translate }}\"\n [attr.aria-expanded]=\"!closed\"\n class=\"i360-nav-trigger\">\n <mat-icon color=\"primary\">{{closed ? 'menu' : 'close'}}</mat-icon>\n </button>\n </div>\n\n <div *ngFor=\"let template of leftTemplates\" class=\"i360-main-nav-item\">\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <div class=\"i360-main-nav-item-border\"></div>\n </div>\n\n <div class=\"i360-main-nav-item menu-trigger\" *ngIf=\"dropTemplates.length\">\n <button #menuTrigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"dropMenu\"\n title=\"{{ 'menu.more' | translate }}\">\n <mat-icon svgIcon=\"ellipsis\"></mat-icon>\n </button>\n <div class=\"i360-main-nav-item-border\"></div>\n </div>\n\n <div class=\"i360-nav-separator\" #separator></div>\n\n <div *ngFor=\"let template of rightTemplates\" class=\"i360-main-nav-item right-icons\">\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <div class=\"i360-main-nav-item-border\"></div>\n <div class=\"right-icons-separator\"></div>\n </div>\n\n <div class=\"button-wrapper\" *ngFor=\"let template of buttonTemplates\">\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <div class=\"i360-main-nav-item-border\"></div>\n </div>\n\n </div>\n</div>\n\n<mat-menu #dropMenu=\"matMenu\">\n <button #menuItem mat-menu-item\n (click)=\"clickMenuItem(menuItem)\"\n *ngFor=\"let template of copyOfDropTemplates\">\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n </button>\n</mat-menu>\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren,\n ElementRef,\n HostBinding,\n OnDestroy,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n ChangeDetectorRef,\n} from '@angular/core';\nimport {\n fromEvent,\n timer,\n Subject,\n combineLatest,\n interval,\n EMPTY,\n firstValueFrom,\n debounceTime,\n switchMap,\n takeUntil,\n mergeWith\n} from 'rxjs';\nimport { ImunifyTemplateDirective } from 'app/utils/table/template.directive';\nimport { animate, transition, trigger } from '@angular/animations';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MatMenuItem } from '@angular/material/menu';\nimport { I360Config } from 'app/utils/config/config';\nimport { RuleSet } from '@imunify360-api/settings';\nimport { AppState } from 'app/core/app.service';\nimport { Panel } from 'app/utils/panel';\nimport { LicenseState } from 'app/services/license-state';\nimport { LicenseService } from 'app/services/license';\nimport { AuthState } from 'app/services/auth-state';\nimport { AuthService, I360Role } from 'app/services/auth';\nimport { MyImunifyService } from 'app/services/my-imunify';\nimport { IMyImunifyState } from 'app/services/my-imunify-state';\n\nexport const updateTokenInterval = 150000;\n\n@Component({\n selector: 'i360-navigation',\n templateUrl: './navigation.component.html',\n styleUrls: ['./navigation.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('navClosed', [\n // angular animations can not use media queries but can animate transition\n // css animations can use media queries but can not animate transitions...\n transition(':leave', [\n animate(0)\n ]),\n transition('* => *', [animate(600)]),\n ]),\n ],\n})\nexport class NavigationComponent implements AfterContentInit, AfterViewInit, OnDestroy {\n @ViewChild('separator', {static: true}) separator: ElementRef;\n @ViewChild('navWrapper', {static: true}) navWrapper: ElementRef;\n @HostBinding('attr.role') readonly role = 'navigation';\n @ContentChildren(ImunifyTemplateDirective, {descendants: true})\n templates: QueryList<ImunifyTemplateDirective>\n @HostBinding('class.i360-nav-closed') @HostBinding('@navClosed') closed: boolean = true;\n leftTemplates: Array<TemplateRef<any>> = [];\n rightTemplates: Array<TemplateRef<any>> = [];\n buttonTemplates: Array<TemplateRef<any>> = [];\n dropTemplates: Array<TemplateRef<any>> = [];\n // https://github.com/angular/material.angular.io/issues/577\n copyOfDropTemplates: Array<TemplateRef<any>> = [];\n logoTemplate?: TemplateRef<any>;\n forceNormalize = new Subject<void>();\n myImunifyState: IMyImunifyState;\n\n protection: string;\n\n private destroyed = new Subject<void>();\n\n constructor(public elementRef: ElementRef,\n private cdr: ChangeDetectorRef,\n private translateService: TranslateService,\n public appState: AppState,\n public authState: AuthState,\n public config: I360Config,\n public licenseState: LicenseState,\n public licenseService: LicenseService,\n public panel: Panel,\n public authService: AuthService,\n private myImunifyService: MyImunifyService,\n ) {\n this.listenMyImunifyState();\n this.checkLowResourceMode();\n }\n\n addToMain(): void|true {\n if (this.dropTemplates.length) {\n let template = this.dropTemplates.shift();\n if (template) {\n this.leftTemplates.push(template);\n }\n return true;\n }\n }\n\n addToDrop(): void|true {\n if (this.leftTemplates.length) {\n let template = this.leftTemplates.pop();\n if (template) {\n this.dropTemplates.unshift(template);\n }\n return true;\n }\n }\n\n ngOnDestroy() {\n this.destroyed.next();\n }\n\n ngAfterContentInit() {\n this.rebuild();\n this.templates.changes.subscribe(() => this.rebuild());\n }\n rebuild() {\n this.leftTemplates.length = 0;\n this.rightTemplates.length = 0;\n this.buttonTemplates.length = 0;\n this.dropTemplates.length = 0;\n this.logoTemplate = undefined;\n this.templates.forEach(template => {\n switch (template.name) {\n case 'button':\n this.buttonTemplates.push(template.template);\n break;\n case 'right':\n this.rightTemplates.push(template.template);\n break;\n case 'logo':\n this.logoTemplate = template.template;\n break;\n default:\n this.leftTemplates.push(template.template);\n break;\n }\n });\n this.forceNormalize.next();\n }\n\n ngAfterViewInit() {\n let width: number;\n fromEvent(window, 'resize')\n .pipe(\n mergeWith(this.forceNormalize),\n // merge(this.interval.interval10),\n mergeWith(this.translateService.onLangChange),\n debounceTime(400),\n takeUntil(this.destroyed),\n ).subscribe(async () => {\n if (width !== this.getSeparatorWidth()) {\n await this.normalize();\n this.copyOfDropTemplates = [...this.dropTemplates];\n await firstValueFrom(timer(0)); // wait for change detection\n width = this.getSeparatorWidth();\n }\n });\n if (this.panel.isNoPanel) {\n this.autoUpdateToken();\n }\n }\n\n autoUpdateToken() {\n combineLatest([\n this.authState.username,\n this.authState.role,\n interval(updateTokenInterval),\n ]).pipe(\n switchMap(([username, role, _]: [string, I360Role, number]) => {\n // TODO: remove this role check after DEF-16117 fix\n return !!username && role === I360Role.admin\n ? this.licenseService.getToken({username}): EMPTY;\n }),\n takeUntil(this.destroyed),\n ).subscribe(response => {\n this.authService.setToken(response.data.items);\n });\n }\n\n clickMenuItem(matMenuItem: MatMenuItem) {\n matMenuItem['_elementRef'].nativeElement.querySelector('a')!.click();\n }\n\n async normalize() {\n let changed;\n do {\n changed = false;\n if (window.innerWidth < 768) {\n changed = this.addToMain();\n } else if (!this.isMainNavHeightOk()) {\n changed = this.addToDrop();\n await firstValueFrom(timer(0)); // wait for change detection\n } else {\n changed = this.addToMain();\n await firstValueFrom(timer(0)); // wait for change detection\n if (!this.isMainNavHeightOk()) {\n this.addToDrop();\n return;\n }\n }\n } while (changed);\n }\n\n private listenMyImunifyState(): void {\n this.myImunifyService.getMyImunifyState().pipe(\n takeUntil(this.destroyed),\n ).subscribe(myImunifyState => {\n this.myImunifyState = myImunifyState;\n this.cdr.markForCheck();\n });\n }\n\n private checkLowResourceMode(): void {\n this.config.changes\n .pipe(takeUntil(this.destroyed))\n .subscribe(config => {\n if (!config) return;\n\n const isMinimalRuleSet = config.MOD_SEC?.ruleset === RuleSet.MINIMAL;\n const lowResourcesMode = (!config.WEBSHIELD?.enable || this.panel.isNoPanel) && isMinimalRuleSet;\n\n if (this.appState.lowResourcesMode$.getValue() !== lowResourcesMode) {\n this.appState.lowResourcesMode$.next(lowResourcesMode);\n }\n });\n }\n\n private getSeparatorWidth() {\n return this.separator.nativeElement.offsetWidth;\n }\n private isMainNavHeightOk() {\n return this.navWrapper.nativeElement.offsetHeight <= 85;\n }\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { CdkPortal } from '@angular/cdk/portal';\nimport { AfterViewInit, Component, OnDestroy, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { merge, Subject, filter, takeUntil } from 'rxjs';\nimport { NavigationComponent } from 'app/utils/navigation/navigation.component';\nimport { NewsNotificationsComponent } from '../news-notifications/news-notifications.component';\n\n\n@Component({\n selector: 'i360-news-overlay',\n template: `\n <div class=\"notification-events-container\" *cdkPortal>\n <div class=\"notification-events-wrapper\">\n <div class=\"notification-events\">\n <h3 translate>news.takeALook</h3>\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./news-overlay.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NewsOverlayComponent implements AfterViewInit, OnDestroy {\n @ViewChild(CdkPortal, {static: false}) portal: CdkPortal;\n private overlayRef: OverlayRef;\n private destroyed = new Subject<void>();\n\n constructor(\n private overlay: Overlay,\n private newsNotificationsComponent: NewsNotificationsComponent,\n private navigationComponent: NavigationComponent,\n private router: Router,\n ) {}\n\n ngAfterViewInit(): void {\n const config = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n positionStrategy: this.overlay.position()\n .flexibleConnectedTo(this.navigationComponent.elementRef)\n .withLockedPosition()\n .withPositions([{\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n }]),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n this.overlayRef = this.overlay.create(config);\n this.overlayRef.attach(this.portal);\n merge(\n this.overlayRef.backdropClick(),\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)),\n ).pipe(\n takeUntil(this.destroyed),\n ).subscribe(() => {\n this.newsNotificationsComponent.toggleOverlay();\n });\n }\n\n ngOnDestroy(): void {\n this.destroyed.next();\n this.destroyed.complete();\n this.overlayRef.detach();\n }\n}\n","import { AgentResponse, AgentResponseData, DataFrom, RequestParams } from './misc';\n\n\nexport interface NewsItem {\n title: string;\n pubDate: string;\n guid: string;\n link: string;\n}\n\ntype GetNewsAgentResponse = AgentResponse<AgentResponseData<NewsItem[]>>;\n\nexport class NewsAPI {\n static getNews = () => new RequestParams<DataFrom<GetNewsAgentResponse>>(['get-news']);\n}\n","import { Injectable } from '@angular/core';\nimport { AgentStatus, WindowInterface } from '@imunify360-api/misc';\nimport { NewsAPI, NewsItem } from '@imunify360-api/news';\nimport {\n of, Observable, EMPTY,\n combineLatest, filter, map, switchMap, takeUntil\n} from 'rxjs';\nimport { XHR } from 'app/utils/xhr/xhr';\nimport { AppState } from 'app/core/app.service';\nimport { AuthState } from 'app/services/auth-state';\nimport { I360Role } from 'app/services/auth';\n\n\ndeclare var window: WindowInterface;\n\n@Injectable()\nexport class NewsService {\n constructor(\n public xhr: XHR,\n public appState: AppState,\n public authState: AuthState,\n ) {}\n\n private storageKey: string = 'imunify-news-ids';\n private getNews = this.xhr.rx(NewsAPI.getNews, false, false);\n\n getNews$(): Observable<NewsItem[]> {\n const skipLoading = window.i360Test && window.i360Test.disableNews;\n if (skipLoading) {\n return of([]);\n }\n\n return combineLatest([this.authState.role, this.appState.imunifyStatus]).pipe(\n switchMap(([role, status]) => {\n return role !== I360Role.none && status === AgentStatus.OK ? this.getNews() : EMPTY;\n }),\n map((response) => response.data.items),\n takeUntil(this.authState.role.pipe(filter(role => role === I360Role.none))),\n );\n }\n\n saveAsRead(id: string) {\n const readMessages = this.getReadMessages();\n readMessages.add(id);\n localStorage.setItem(this.storageKey, JSON.stringify([...readMessages.values()]));\n }\n\n isRead(id: string) {\n const readMessages = this.getReadMessages();\n\n return readMessages.has(id);\n }\n\n private getReadMessages() {\n return new Set<string>(\n JSON.parse(localStorage.getItem(this.storageKey) || '[]'),\n );\n }\n}\n","import { CommaSeparatedInputDirective } from './comma-separated-input.directive';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n declarations: [CommaSeparatedInputDirective],\n exports: [CommaSeparatedInputDirective],\n})\nexport class I360CommaSeparatedInputModule {}\n","import { RequestParams } from './misc';\n\n\nexport interface AdminEmailResponse {\n items: string[];\n}\n\nexport class AdminContactsAPI {\n static getEmails = () => new RequestParams<AdminEmailResponse>(['admin-emails']);\n}\n","import { AdminContactsAPI } from '@imunify360-api/admin-contacts';\nimport { Injectable } from '@angular/core';\nimport { XHR } from 'app/utils/xhr/xhr';\n\n\n@Injectable()\nexport class AdminContactsService {\n constructor(public xhr: XHR) {}\n\n getEmails = this.xhr.rx(AdminContactsAPI.getEmails, false, false);\n}\n","import { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterModule } from '@angular/router';\nimport { I360TranslateModule } from 'app/utils/translate/translate.module';\nimport { I360ModalModule } from 'app/utils/modals/modal.module';\nimport { I360ValidationModule } from 'app/utils/validator/validation.module';\nimport {\n AdminContactsConfirmModalComponent,\n} from './admin-contacts-confirm-modal/admin-contacts-confirm-modal.component';\nimport {\n AdminContactsRequestModalComponent,\n} from './admin-contacts-request-modal/admin-contacts-request-modal.component';\nimport {\n NewsAdminContactsComponent,\n} from './news-items/news-admin-contacts/news-admin-contacts.component';\nimport { NewsLicenseComponent } from './news-items/news-license/news-license.component';\nimport { NewsNotificationsComponent } from './news-notifications/news-notifications.component';\nimport { NewsOverlayComponent } from './news-overlay/news-overlay.component';\nimport { NewsMessageComponent } from './news-items/news-message/news-message.component';\nimport { NewsComponent } from './news-component/news.component';\nimport { NewsService } from './news.service';\nimport {\n I360CommaSeparatedInputModule,\n} from 'app/utils/comma-separated-input/comma-separated-input.module';\nimport { AdminContactsService } from 'app/services/admin-contacts';\n\n\n@NgModule({\n imports: [\n CommonModule,\n I360ValidationModule,\n I360TranslateModule,\n PortalModule,\n RouterModule,\n I360ModalModule,\n MatIconModule,\n I360CommaSeparatedInputModule,\n ],\n declarations: [\n NewsComponent,\n NewsNotificationsComponent,\n NewsOverlayComponent,\n AdminContactsRequestModalComponent,\n AdminContactsConfirmModalComponent,\n NewsLicenseComponent,\n NewsMessageComponent,\n NewsAdminContactsComponent,\n ],\n providers: [\n AdminContactsService,\n NewsService,\n ],\n exports: [\n NewsComponent,\n ]\n})\nexport class NewsModule {}\n","import { NgModule } from '@angular/core';\nimport { MenuProfileComponent } from 'app/components/menu-profile/menu-profile.component';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [\n CommonModule,\n MatMenuModule,\n TranslateModule,\n MatIconModule,\n ],\n declarations: [\n MenuProfileComponent,\n ],\n exports: [\n MenuProfileComponent,\n ],\n})\nexport class I360MenuProfileModule {\n}\n","import { NgModule } from '@angular/core';\nimport {\n NavigationComponent,\n} from 'app/utils/navigation/navigation.component';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { I360TranslateModule } from 'app/utils/translate/translate.module';\nimport { EulaService } from 'app/components/eula/eula.service';\nimport { PackageVersionsComponent } from 'app/utils/navigation/package-versions/package-versions.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatMenuModule,\n MatIconModule,\n MatTooltipModule,\n I360TranslateModule,\n ],\n providers: [\n EulaService,\n ],\n declarations: [\n NavigationComponent,\n PackageVersionsComponent\n ],\n exports: [\n NavigationComponent,\n PackageVersionsComponent\n ],\n})\nexport class I360NavigationModule {}\n","import { NgModule } from '@angular/core';\nimport { NotificationsComponent } from 'app/components/notification/notifications.component';\nimport { NotificationComponent } from 'app/components/notification/notification.component';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { I360TranslateModule } from 'app/utils/translate/translate.module';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n I360TranslateModule,\n ],\n declarations: [\n NotificationsComponent,\n NotificationComponent,\n ],\n exports: [\n NotificationsComponent,\n ],\n})\nexport class I360NotificationsModule {}\n","import { Injectable } from '@angular/core';\nimport { HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { of, EMPTY, Observable, switchMap } from 'rxjs';\nimport { LicenseService } from 'app/services/license';\nimport { postOnly } from './utils';\nimport { NotificationsService } from 'app/services/notifications';\nimport { UntranslatableString } from 'app/utils/translate/translate.service';\nimport { AppState } from 'app/core/app.service';\n\n\n@Injectable()\nexport class LicenseInterceptor implements HttpInterceptor {\n constructor(\n private notifications: NotificationsService,\n private appState: AppState,\n private licenseService: LicenseService,\n ) {}\n\n @postOnly\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<any> {\n return next.handle(req).pipe(\n switchMap(event => {\n if (event instanceof HttpResponse && event.body) {\n const version = event.body.data?.version;\n if (!!version && this.appState.version !== version) {\n this.appState.version = version;\n }\n const license = event.body.data ? event.body.data.license : event.body.license;\n if (license) {\n if (!this.licenseService.checkLicense(license)) {\n const messages = event.body.messages instanceof Array\n ? event.body.messages.join()\n : event.body.messages;\n if (messages) {\n this.notifications.error(UntranslatableString.for(messages));\n }\n return EMPTY;\n }\n }\n }\n return of(event);\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MaliciousAPI, MaliciousItem, MaliciousItemInBackend, MaliciousFileStatus } from '@imunify360-api/malicious';\nimport { XHR } from 'app/utils/xhr/xhr';\nimport { BehaviorSubject } from 'rxjs';\n\n\n@Injectable()\nexport class MaliciousService {\n constructor(public xhr: XHR) {}\n\n maliciousCount$: BehaviorSubject<number> = new BehaviorSubject<number>(0);\n\n get = this.xhr.wrap(this.xhr.rx(MaliciousAPI.list), MaliciousItem);\n\n list = this.xhr.rx(MaliciousAPI.list);\n\n cleanupAll = this.xhr.rx(MaliciousAPI.cleanupAll);\n action = this.xhr.rx(MaliciousAPI.action);\n submit = this.xhr.rx(MaliciousAPI.submit);\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n HttpResponse,\n} from '@angular/common/http';\nimport { Observable, tap } from 'rxjs';\nimport { AgentResponse } from '@imunify360-api/misc';\nimport { postOnly } from 'app/interceptors/utils';\nimport { MaliciousService } from 'app/services/malicious';\n\n@Injectable()\nexport class MaliciousCountInterceptor implements HttpInterceptor {\n\n constructor(\n private maliciousService: MaliciousService,\n ) {}\n\n @postOnly\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(req).pipe(\n tap(event => {\n if (event instanceof HttpResponse) {\n try {\n const res = event.body as AgentResponse;\n const data = res.data;\n if ('malicious_count' in data) {\n this.maliciousService.maliciousCount$.next(data.malicious_count);\n }\n } catch (e) {\n // responses are not standardized...\n }\n }\n }),\n );\n }\n}\n","import { I360Validators } from '../validator/validators';\nimport { Mode } from '@imunify360-api/proactive-defense';\nimport { getAdminEnduserMalwareCommonConfig } from './malware-config';\nimport { ConfigTypeExtractingHelper, PermissionsType } from './misc';\nimport { I360FormBuilder } from 'app/utils/validator/form-builder';\nimport { Validators } from '@angular/forms';\n\n\nexport const getSchema = (formBuilder: I360FormBuilder) => ({\n CONTROL_PANEL: formBuilder.group({\n generic_user_notifications: formBuilder.control(true),\n }),\n MALWARE_SCANNING: formBuilder.group(getAdminEnduserMalwareCommonConfig(formBuilder)),\n BACKUP_RESTORE: formBuilder.group({\n max_days_in_backup: formBuilder.control(0,\n [I360Validators.integer(true), Validators.min(1)]),\n }),\n PROACTIVE_DEFENCE: formBuilder.group({\n mode: formBuilder.control<Mode>(null),\n blamer: formBuilder.control(false),\n }),\n ERROR_REPORTING: formBuilder.group({\n enable: formBuilder.control(true),\n }),\n MALWARE_CLEANUP: formBuilder.group({\n trim_file_instead_of_removal: formBuilder.control(true),\n keep_original_files_days: formBuilder.control(14,\n [I360Validators.integer(true), Validators.min(1)]),\n }),\n});\n\n\nconst a = () => (null as any as I360FormBuilder).group(getSchema(null as any));\nexport type UserConfigType = ConfigTypeExtractingHelper<typeof a> & PermissionsType;\n","import { AgentResponse, ListResponseData, RequestParams } from './misc';\nimport { ResourceType } from './malware';\nimport { MdsResourceTypeMaliciousList } from './malicious';\n\ntype MalwareHistoryItemInBackend = {\n ctime: number;\n path: string;\n event: string;\n initiator: string;\n cause: string;\n file_owner: string;\n file_user: string;\n id: number;\n table_name?: string | null;\n table_field?: string | null;\n table_row_inf?: number | null;\n scan_id?: string | null;\n} & Omit<MdsResourceTypeMaliciousList, 'snippet'>;\n\nexport class HistoryAPI {\n\n static list = (params: Object) => new RequestParams(['malware', 'history', 'list'], params);\n}\n\nexport class MalwareHistoryItem {\n ctime: number;\n path: string;\n event: string;\n initiator: string;\n cause: string;\n owner: string;\n\n // tslint:disable:variable-name\n resource_type: ResourceType;\n app_name?: string | null;\n db_host?: string | null;\n db_port?: string | null;\n db_name?: string | null;\n table_name?: string | null;\n table_field?: string | null;\n table_row_inf?: number | null;\n constructor(item: MalwareHistoryItemInBackend) {\n this.ctime = item.ctime;\n this.path = item.path;\n this.event = item.event;\n this.initiator = item.initiator;\n this.cause = item.cause;\n this.owner = item.file_user;\n this.resource_type = item.resource_type;\n if (item.resource_type === ResourceType.db) {\n this.app_name = item.app_name;\n this.db_host = item.db_host;\n this.db_port = item.db_port;\n this.db_name = item.db_name;\n this.table_name = item.table_name || null;\n this.table_field = item.table_field || null;\n this.table_row_inf = item.table_row_inf || null;\n }\n }\n}\n\ntype MalwareHistoryListAgentResponse = AgentResponse<ListResponseData<MalwareHistoryItemInBackend>>;\n","import { Injectable } from '@angular/core';\nimport { HistoryAPI, MalwareHistoryItem } from '@imunify360-api/history';\nimport { of, timer, Observable, Subject, debounceTime, map, switchMap, tap } from 'rxjs';\nimport { XHR } from 'app/utils/xhr/xhr';\n\nexport const HISTORY_COUNTER_KEY = 'history-counter';\nconst HISTORY_COUNT_REQUEST_INTERVAL = 20000;\n\n@Injectable()\nexport class HistoryService {\n constructor(public xhr: XHR) {}\n\n test = this.xhr.rx(HistoryAPI.list);\n list = this.xhr.wrap(this.xhr.rx(HistoryAPI.list), MalwareHistoryItem);\n public updateHistoryCount = new Subject<void>();\n public historyCount?: Observable<number | undefined> = this.updateHistoryCount.pipe(\n debounceTime(100),\n switchMap(ev => {\n const time = HISTORY_COUNT_REQUEST_INTERVAL + this.last - Date.now();\n if (time > 0) {\n return timer(time);\n } else {\n return of(null);\n }\n }),\n tap(() => {\n this.last = Date.now();\n }),\n switchMap(() => {\n return this.list({limit: 1, since: this._getHistorySinceFromStorage() + 1});\n }),\n map(response => {\n return response.data.max_count;\n }),\n );\n private last: number = 0;\n\n getHistory = (arg) => {\n return this.list(arg).pipe(\n tap((response) => {\n let max = Math.max(this._getHistorySinceFromStorage(),\n ...response.data.items.map(item => item.ctime));\n if (max > this._getHistorySinceFromStorage()) {\n localStorage.setItem(HISTORY_COUNTER_KEY, String(max));\n this.last = 0;\n this.updateHistoryCount.next();\n }\n }),\n );\n }\n\n updateCounter() {\n this.updateHistoryCount.next();\n }\n\n _getHistorySinceFromStorage() {\n return Number(localStorage.getItem(HISTORY_COUNTER_KEY) || '0');\n }\n}\n","import { HashLocationStrategy, LocationChangeListener, PlatformLocation } from \"@angular/common\";\nimport { Injectable, NgZone } from \"@angular/core\";\n\n\n@Injectable()\nexport class ZonedHashLocationStrategy extends HashLocationStrategy {\n constructor(\n private ngZone: NgZone,\n platformLocation: PlatformLocation,\n ) {\n super(platformLocation);\n }\n onPopState(fn: LocationChangeListener): void {\n // Single-Spa triggers the `popstate` event on every navigation to force re-render in other\n // apps: https://single-spa.js.org/docs/api/#popstateevent\n // We must ensure that we stay in our angular zone, whenever it's triggered - otherwise,\n // Angular's change detection will break.\n return super.onPopState((...args) => this.ngZone.run(() => fn(...args)));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { APP_BASE_HREF, LocationStrategy } from '@angular/common';\nimport { ZonedHashLocationStrategy } from './zoned-hash-location-strategy';\n\nexport const navRootRoutes: Routes = [\n // Avoid route guards here.\n // It's better if only one mounted SPA can use route guards.\n // Otherwise, there is undetermined behavior, when one navigation may get rejected in 2 different ways, both async.\n // So, we can have guards either in `nav-root` SPA, or in all others (since they never co-exist with each other,\n // but always co-exist with `nav-root`).\n // I think it will be easier to avoid route-guards in `nav-root`, and just duplicate them in others if needed.\n {\n path: '**',\n loadChildren: () => import('app/empty-route/empty-route.module').then(m => m.EmptyRouteModule),\n },\n];\n\n@NgModule({\n imports: [\n RouterModule.forRoot(\n navRootRoutes,\n { useHash: true, relativeLinkResolution: 'legacy', onSameUrlNavigation: 'ignore' },\n ),\n ],\n exports: [RouterModule],\n providers: [\n { provide: LocationStrategy, useClass: ZonedHashLocationStrategy },\n { provide: APP_BASE_HREF, useValue: '/' },\n ],\n})\nexport class NavRootRoutingModule { }\n","import { AgentResponse, AgentResponseData, DataFrom, RequestParams } from './misc';\n\ntype TokenAgentResponse = AgentResponse<AgentResponseData<string>>;\n\nexport class AuthCloudAPI {\n static getJwtToken() {\n return new RequestParams<DataFrom<TokenAgentResponse>>(['auth-cloud']);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { XHR } from 'app/utils/xhr/xhr';\nimport { AuthCloudAPI } from '@imunify360-api/auth-cloud';\nimport { Observable, of, Subject, catchError, take, finalize } from 'rxjs';\nimport { AuthState } from 'app/services/auth-state';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthCloudService {\n constructor(\n private xhr: XHR,\n private authState: AuthState,\n ) {}\n\n getJwtToken(): Observable<string | undefined> {\n if (this.authState.jwtToken) {\n return of(this.authState.jwtToken);\n }\n\n if (this.authState.jwtTokenRequest$) {\n return this.authState.jwtTokenRequest$;\n }\n\n const tokenRequest$ = new Subject<string | undefined>();\n this.authState.jwtTokenRequest$ = tokenRequest$;\n\n this.xhr.rx(AuthCloudAPI.getJwtToken, false, false)()\n .pipe(\n take(1),\n catchError(() => of(undefined)),\n finalize(() => {\n this.authState.jwtTokenRequest$ = null;\n })\n ).subscribe(result => {\n this.authState.jwtToken = result?.data?.items;\n tokenRequest$.next(this.authState.jwtToken);\n });\n\n return tokenRequest$.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of, map, switchMap } from 'rxjs';\nimport { baseEndpoint } from '@imunify360-api/server';\nimport { LicenseState } from 'app/services/license-state';\nimport { cache } from 'app/utils/cache';\nimport { AuthCloudService } from 'app/services/auth-cloud';\n\nexport enum ABEvent {\n VIEW = 'upgrade_link_view',\n CLICK = 'upgrade_link_click',\n}\n\nexport interface UpgradeButtonText {\n tests: {\n upgrade_link_text: string;\n }\n}\n\n@Injectable()\nexport class UpgradeButtonService {\n\n private serverId: string;\n private view = of(null).pipe(\n switchMap(() => this.http.post<UpgradeButtonText>(\n `${ baseEndpoint }ab-view`,\n {data: {server_id: this.serverId}},\n )),\n cache(Infinity),\n );\n\n constructor(\n private http: HttpClient,\n private licenseState: LicenseState,\n private authCloudService: AuthCloudService,\n ) {}\n\n getABText(): Observable<string> {\n this.serverId = this.licenseState.license.value.id;\n return this.view.pipe(\n map((response: UpgradeButtonText) => {\n return response.tests?.upgrade_link_text;\n })\n );\n }\n\n sendABEventView(upgradeLinkText: string): Observable<void> {\n return this.sendABEvent(upgradeLinkText, ABEvent.VIEW);\n }\n\n sendABEventClick(upgradeLinkText: string): Observable<void> {\n return this.sendABEvent(upgradeLinkText, ABEvent.CLICK);\n }\n\n private sendABEvent(upgradeLinkText: string, event: ABEvent): Observable<void> {\n return this.authCloudService.getJwtToken().pipe(switchMap(token => {\n return this.sendEvent(upgradeLinkText, event, token || '');\n }));\n }\n\n private sendEvent(upgradeLinkText: string, event: ABEvent, token: string): Observable<void> {\n const eventData = {\n event,\n variant_id: upgradeLinkText,\n params: {},\n user_ids: {\n server_id: this.serverId,\n }\n };\n\n return this.http.post<void>(\n `${ baseEndpoint }customer-event`,\n eventData,\n {\n headers: { 'X-Auth': token }\n }\n )\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpgradeButtonDirective } from 'app/directives/upgrade-button/upgrade-button.directive';\nimport { LicenseService } from 'app/services/license';\nimport { UpgradeButtonService } from 'app/directives/upgrade-button/upgrade-button.service';\n\n\n@NgModule({\n declarations: [\n UpgradeButtonDirective\n ],\n imports: [\n CommonModule,\n ],\n providers: [\n LicenseService,\n UpgradeButtonService,\n ],\n exports: [\n UpgradeButtonDirective\n ]\n})\nexport class DirectivesModule {\n}\n","import { NgModule } from '@angular/core';\nimport { I360ButtonComponent } from 'app/utils/button/button.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\n@NgModule({\n imports: [\n MatFormFieldModule,\n ],\n declarations: [I360ButtonComponent],\n exports: [\n I360ButtonComponent,\n MatFormFieldModule,\n ],\n})\nexport class I360ButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { ImunifyTemplateDirective } from './template.directive';\n\n@NgModule({\n declarations: [ImunifyTemplateDirective],\n exports: [ImunifyTemplateDirective],\n})\nexport class I360TemplateModule {}\n","import { Injectable, Injector } from '@angular/core';\nimport {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n HttpResponse,\n} from '@angular/common/http';\nimport { of, EMPTY, Observable, switchMap } from 'rxjs';\nimport { EulaService } from 'app/components/eula/eula.service';\nimport { AuthState } from 'app/services/auth-state';\nimport { AgentResponse, ResponseDataExceptItems } from '@imunify360-api/misc';\nimport { postOnly } from 'app/interceptors/utils';\n\n\n@Injectable()\nexport class EulaInterceptor implements HttpInterceptor {\n constructor(\n private injector: Injector,\n private authState: AuthState,\n ) {}\n\n @postOnly\n intercept(req: HttpRequest<AgentResponse<ResponseDataExceptItems>>, next: HttpHandler):\n Observable<HttpEvent<AgentResponse<ResponseDataExceptItems>>> {\n return next.handle(req).pipe(\n switchMap((event) => {\n if (this.authState.isAdmin.value && event instanceof HttpResponse) {\n const body: AgentResponse<ResponseDataExceptItems> = event.body;\n if (body.data) {\n const eulaStatus = body.data.eula;\n if (eulaStatus !== undefined\n && !this.injector.get(EulaService).checkEulaStatus(eulaStatus)) {\n return EMPTY;\n }\n }\n }\n return of(event);\n }),\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { MyImunifyPromoDialogService } from './my-imunify-promo-dialog.service';\nimport { I360ModalModule } from 'app/utils/modals/modal.module';\n\n@NgModule({\n imports: [I360ModalModule],\n providers: [MyImunifyPromoDialogService],\n})\nexport class MyImunifyPromoDialogModule {}\n","import { DatepickerComponent } from './datepicker.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { I360TranslateModule } from 'app/utils/translate/translate.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatSelectModule,\n MatOptionModule,\n I360TranslateModule\n ],\n declarations: [\n DatepickerComponent\n ],\n exports: [\n DatepickerComponent\n ]\n})\nexport class DatepickerModule {}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { timer, BehaviorSubject, Subscription, catchError, switchMap, tap, repeat, firstValueFrom } from 'rxjs';\nimport { AgentStatus } from '@imunify360-api/misc';\nimport { AppState } from 'app/core/app.service';\nimport { InstallationBackendService } from './installation-backend.service';\nimport { LogChunk } from 'app/utils/log-box/log-box.component';\n\n\nexport const LOG_REFRESH_INTERVAL = 3000;\nexport const STATUS_REFRESH_INTERVAL = 5000;\nexport const LOG_CHUNK_SIZE = 1024 * 1024;\n\n@Injectable()\nexport class InstallationService {\n accumulatedLog = new BehaviorSubject<LogChunk[]>([]);\n shownSlidesCount = 0;\n private logCollector$ = timer(0).pipe(\n switchMap(() => this.installationBackendService.status({\n offset: this.offset,\n limit: LOG_CHUNK_SIZE,\n })),\n tap(res => {\n const items = res.data.items;\n const offsetDiff = items.offset - this.offset;\n this.offset = items.offset;\n const chunk = items.log;\n if (chunk) {\n this.accumulatedLog.next(this.accumulatedLog.getValue().concat([{text: chunk}]));\n }\n if (offsetDiff === 0 && this.appState.imunifyStatus.value !== AgentStatus.INSTALLING) {\n this.stopWatchingLog();\n }\n if (this.appState.imunifyStatus.value === AgentStatus.OK) {\n this.router.navigate(['/'], {\n replaceUrl: true,\n });\n }\n }),\n catchError(() => timer(LOG_REFRESH_INTERVAL)),\n repeat({ delay: LOG_REFRESH_INTERVAL }),\n );\n private statusWatcher$ = timer(0).pipe(\n switchMap(() => this.installationBackendService.status({\n offset: this.offset,\n limit: LOG_CHUNK_SIZE,\n })),\n tap(res => {\n if (this.appState.imunifyStatus.value !== AgentStatus.INSTALLING) {\n this.stopWatchingStatus();\n }\n }),\n catchError(() => timer(STATUS_REFRESH_INTERVAL)),\n repeat({ delay: STATUS_REFRESH_INTERVAL }),\n );\n private logCollectorSubscription = Subscription.EMPTY;\n private statusCollectorSubscription = Subscription.EMPTY;\n private offset = 0;\n\n constructor(\n private router: Router,\n private appState: AppState,\n private installationBackendService: InstallationBackendService,\n ) {}\n\n start() {\n this.offset = 0;\n this.accumulatedLog.next([]);\n return firstValueFrom(this.installationBackendService.start(), { defaultValue: undefined });\n }\n\n startWatchingLog() {\n this.logCollectorSubscription = this.logCollector$.subscribe();\n }\n\n startWatchingStatus() {\n this.statusCollectorSubscription = this.statusWatcher$.subscribe();\n }\n\n stopWatchingLog() {\n this.logCollectorSubscription.unsubscribe();\n }\n\n stopWatchingStatus() {\n this.statusCollectorSubscription.unsubscribe();\n }\n}\n","import { Directive, ElementRef, HostListener, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { TranslateService } from 'app/utils/translate/translate.service';\nimport { UpgradeButtonService } from 'app/directives/upgrade-button/upgrade-button.service';\nimport {\n Subscription, Subject, race, timer, Observable, throwError, of,\n takeUntil, take, switchMap, catchError\n} from 'rxjs';\nimport { NavigationComponent } from 'app/utils/navigation/navigation.component';\n\nconst ENGLISH = 'en';\n\n@Directive({\n selector: '[i360UpgradeButton]'\n})\nexport class UpgradeButtonDirective implements OnInit, OnDestroy {\n @Input() i360UpgradeButton: string;\n\n private titleSub: Subscription;\n private abText: string;\n private isSentViewEvent: boolean = false;\n private destroy$ = new Subject<void>();\n\n constructor(\n private upgradeButtonService: UpgradeButtonService,\n private translate: TranslateService,\n private el: ElementRef,\n private renderer: Renderer2,\n private navigation: NavigationComponent\n ) {\n }\n\n ngOnInit(): void {\n this.setDisplay('none');\n this.translate.translate.onLangChange\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.renderButtonText();\n });\n\n this.renderButtonText();\n }\n\n ngOnDestroy(): void {\n this.titleSub.unsubscribe();\n this.destroy$.next();\n }\n\n @HostListener('click') onClick() {\n if (this.needABTest && this.abText) {\n this.upgradeButtonService.sendABEventClick(this.abText)\n .pipe(take(1)).subscribe();\n }\n }\n\n private renderButtonText(): void {\n this.titleSub?.unsubscribe();\n this.titleSub = this.getUpgradeButtonText().subscribe((title) => {\n this.setDisplay('block');\n this.setText(title);\n this.navigation.rebuild();\n\n if (this.needABTest && this.abText && !this.isSentViewEvent) {\n this.upgradeButtonService.sendABEventView(this.abText)\n .pipe(take(1)).subscribe(() => { this.isSentViewEvent = true; });\n }\n });\n }\n\n private getUpgradeButtonText(): Observable<string> {\n if (this.needABTest) {\n return race(\n this.upgradeButtonService.getABText().pipe(\n switchMap(text => {\n if (!text) {\n return throwError(null);\n }\n\n this.abText = text;\n return of(text);\n }),\n catchError(() => this.translate.stream(this.i360UpgradeButton))\n ),\n timer(3000).pipe(switchMap(() => this.translate.stream(this.i360UpgradeButton)))\n );\n }\n\n return this.translate.stream(this.i360UpgradeButton);\n }\n\n private setText(title: string): void {\n this.renderer.setProperty(this.el.nativeElement, 'innerText', title);\n }\n\n private setDisplay(value: string): void {\n this.renderer.setStyle(this.el.nativeElement, 'display', value);\n }\n\n private get needABTest(): boolean {\n return this.translate.currentLang === ENGLISH;\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\nimport { License } from '@imunify360-api/license';\nimport { LicenseState } from 'app/services/license-state';\nimport { identity, first, map } from 'rxjs';\nimport { NewsItemDirective } from '../news-item.directive';\n\n@Component({\n selector: 'i360-news-license',\n template: `\n <ng-template #tpl>\n <div *ngIf=\"isCountable | async\" class=\"event-item i360-license\">\n <i class=\"material-icons feed\">rss_feed</i>\n <div>\n <p class=\"attention\" translate>news.attention</p>\n <p class=\"i360-license_message\">{{ (licenseState.license|async).message }}</p>\n <p class=\"i360-license_link\" *ngIf=\"!!(licenseState.license|async).redirect_url\">\n <a class=\"i360-license_redirect-link\"\n [href]=\"(licenseState.license|async).redirect_url\"\n target=\"_blank\" translate>news.fixLicense</a>\n </p>\n <p>\n {{ 'news.supportEmail' | translate }}\n <a href=\"mailto:helpdesk@imunify360.com\">helpdesk@imunify360.com</a>\n </p>\n </div>\n </div>\n </ng-template>\n `,\n styleUrls: ['./news-license.component.scss'],\n encapsulation: ViewEncapsulation.None, // because we use ngTemplateOutlet in news-notifications\n providers: [\n { provide: NewsItemDirective, useExisting: NewsLicenseComponent },\n ],\n})\nexport class NewsLicenseComponent extends NewsItemDirective {\n isCountable = this.licenseState.license.pipe(\n map((license: License) => license.hasMessage()),\n );\n isUnread = this.isCountable;\n openOverlay = this.isCountable.pipe(first(identity));\n\n constructor(public licenseState: LicenseState) {\n super();\n }\n\n markAsRead(): void {}\n}\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NewsItem } from '@imunify360-api/news';\nimport { of, BehaviorSubject } from 'rxjs';\nimport { NewsService } from '../../news.service';\nimport { NewsItemDirective } from '../news-item.directive';\n\n\n@Component({\n selector: 'i360-news-message',\n template: `\n <ng-template #tpl>\n <div class=\"event-item i360-message\">\n <i class=\"material-icons feed\">rss_feed</i>\n <div class=\"news-message_content\">\n <div class=\"news-message_content_time\">{{ message.pubDate | date }}</div>\n <div class=\"attention news-message_content_title\">{{ message.title }}</div>\n <a [href]=\"message.link\" target=\"_blank\" translate>readMore.readMore</a>\n </div>\n </div>\n </ng-template>\n `,\n styleUrls: ['./news-message.component.scss'],\n encapsulation: ViewEncapsulation.None, // because we use ngTemplateOutlet in news-notifications\n providers: [\n { provide: NewsItemDirective, useExisting: NewsMessageComponent },\n ],\n})\nexport class NewsMessageComponent extends NewsItemDirective implements OnInit {\n @Input() message: NewsItem;\n isCountable = of(true);\n isUnread: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n openOverlay = this.isUnread;\n\n constructor(private newsService: NewsService) {\n super();\n }\n\n ngOnInit(): void {\n this.isUnread.next(this._isUnread());\n }\n\n markAsRead(): void {\n if (this._isUnread()) {\n this.newsService.saveAsRead(this.message.guid);\n }\n\n this.isUnread.next(this._isUnread());\n }\n\n _isUnread() {\n return !this.newsService.isRead(this.message.guid);\n }\n}\n","import { Injectable } from '@angular/core';\n\ninterface HistoryRecord {\n timestamp: number;\n}\n\n@Injectable()\nexport class AdminContactsHistoryService {\n private contactsHistory: HistoryRecord[];\n private storageKey: string = 'imunify-admin-contacts-history';\n\n constructor() {\n this.contactsHistory = TEST && window['i360Test'] && window['i360Test'].disableNews ?\n [0, 0, 0, 0, 0] : this._getHistoryFromStorage();\n }\n\n addHistoryRecord(record: HistoryRecord) {\n this.contactsHistory.push(record);\n\n localStorage.setItem(this.storageKey, JSON.stringify(this.contactsHistory));\n }\n\n getHistory() {\n return this.contactsHistory;\n }\n\n _getHistoryFromStorage() {\n return JSON.parse(localStorage.getItem(this.storageKey) || '[]');\n }\n}\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { Package } from '@imunify360-api/license';\nimport { ModalEntry } from 'app/utils/modals/entry';\n\n\n@Component({\n selector: 'admin-contacts-confirm-modal',\n template: `\n <i360-modal-content [confirmText]=\"'utils.modals.confirm.confirms.done'\"\n [showCancel]=\"false\">\n <div class=\"contacts-confirm-modal_container\" modal-body>\n <div>\n <mat-icon class=\"check-circle-icon\" svgIcon=\"check-circle\"></mat-icon>\n </div>\n\n <div class=\"contacts-confirm-modal_content\">\n <h2 translate>news.adminContacts.confirmation.title</h2>\n <p class=\"contacts-confirm-modal_content_description\">\n <span translate>news.adminContacts.confirmation.description</span>\n <a class=\"i360-dashboard-link\"\n [routerLink]=\"['/', imunify360Package, 'admin', 'settings', 'general']\"\n (click)=\"handleLinkClick()\"\n translate>news.adminContacts.confirmation.descriptionLink</a>.\n </p>\n </div>\n </div>\n </i360-modal-content>\n `,\n styleUrls: ['./admin-contacts-confirm-modal.component.scss'],\n})\nexport class AdminContactsConfirmModalComponent extends ModalEntry<any, boolean> {\n imunify360Package = Package.imunify360;\n\n constructor(private dialogRef: MatDialogRef<AdminContactsConfirmModalComponent>) {\n super();\n }\n\n handleLinkClick() {\n this.dialogRef.close();\n }\n}\n","<i360-modal-content [confirmText]=\"'utils.modals.confirm.confirms.save'\"\n [cancelText]=\"'utils.modals.content.skip'\">\n <div class=\"contacts-request-modal_container\" modal-body>\n <div>\n <mat-icon class=\"events-notifications-icon\" svgIcon=\"events-notifications\"></mat-icon>\n </div>\n\n <div class=\"contacts-request-modal_content\">\n <h2 translate>news.adminContacts.request.title</h2>\n <p class=\"contacts-request-modal_content_description\"\n translate>news.adminContacts.request.line1</p>\n <h3 class=\"contacts-request-modal_content_emails-heading\"\n translate>news.adminContacts.request.specifyEmail</h3>\n <form [formGroup]=\"contactsForm\">\n <input type=\"text\"\n autocomplete=\"email\"\n commaSeparatedInput\n class=\"underline-input\"\n cdkFocusInitial\n placeholder=\"{{ 'news.adminContacts.request.emailPlaceholder' | translate }}\"\n formControlName=\"emails\">\n </form>\n <p class=\"contacts-request-modal_content_hint\"\n *ngIf=\"contactsForm.pristine || contactsForm.valid\"\n translate>news.adminContacts.request.specifyEmailHint</p>\n <p class=\"contacts-request-modal_content_note\"\n translate>news.adminContacts.request.note</p>\n </div>\n </div>\n</i360-modal-content>\n","import { Component, OnInit } from '@angular/core';\nimport { AdminContactsService } from 'app/services/admin-contacts';\nimport { ModalEntry } from 'app/utils/modals/entry';\nimport { I360FormBuilder } from 'app/utils/validator/form-builder';\nimport { I360Validators } from 'app/utils/validator/validators';\n\n\n@Component({\n selector: 'admin-contacts-request-modal',\n templateUrl: './admin-contacts-request-modal.component.html',\n styleUrls: ['./admin-contacts-request-modal.component.scss'],\n})\nexport class AdminContactsRequestModalComponent\n extends ModalEntry<any, { emails: string[] }>\n implements OnInit {\n contactsForm = this.formBuilder.group({\n emails: this.formBuilder.control<string[]>([], [\n I360Validators.required('emails'),\n I360Validators.emails,\n ]),\n });\n\n constructor(\n private formBuilder: I360FormBuilder,\n private adminContactsService: AdminContactsService,\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.adminContactsService.getEmails().subscribe((value) => {\n this.contactsForm.controls.emails.reset(value.data.items);\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AdminContactsHistoryService } from './admin-contacts-history.service';\nimport { NewsAdminContactsComponent } from './news-admin-contacts.component';\n\n\n@Injectable()\nexport abstract class AdminContactsOpenerService {\n protected newsAdminContactsComponent: NewsAdminContactsComponent;\n\n constructor(\n protected adminContactsHistoryService: AdminContactsHistoryService,\n ) {}\n\n get blockOverlayAutoOpen() {\n return false;\n }\n\n init(newsAdminContactsComponent: NewsAdminContactsComponent) {\n this.newsAdminContactsComponent = newsAdminContactsComponent;\n }\n\n abstract openIfNeeded(): void;\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from 'app/services/settings';\nimport { I360Config } from 'app/utils/config/config';\nimport { ModalService } from 'app/utils/modals/modal.service';\nimport { filter, take, tap } from 'rxjs';\nimport {\n AdminContactsConfirmModalComponent,\n} from '../../admin-contacts-confirm-modal/admin-contacts-confirm-modal.component';\nimport {\n AdminContactsRequestModalComponent,\n} from '../../admin-contacts-request-modal/admin-contacts-request-modal.component';\nimport { AdminContactsHistoryService } from './admin-contacts-history.service';\nimport { AdminContactsOpenerService } from './admin-contacts-opener.service';\n\n\n@Injectable()\nexport class AdminContactsOpenerInitialService extends AdminContactsOpenerService {\n constructor(\n private modalService: ModalService,\n private settingsService: SettingsService,\n private i360Config: I360Config,\n protected adminContactsHistoryService: AdminContactsHistoryService,\n ) {\n super(adminContactsHistoryService);\n }\n\n get blockOverlayAutoOpen() {\n return true;\n }\n\n openIfNeeded(): void {\n this.newsAdminContactsComponent.isCountable.pipe(\n take(1),\n filter(value => !!value),\n ).subscribe(() => {\n this.modalService.open(AdminContactsRequestModalComponent, {\n viewContainerRef: this.newsAdminContactsComponent.viewContainerRef,\n width: '890px',\n }).then((result) => {\n if (result) {\n this.saveAdminContacts(result.emails);\n }\n });\n this.adminContactsHistoryService.addHistoryRecord({ timestamp: Date.now() });\n });\n }\n\n private saveAdminContacts(emails: string[]) {\n this.settingsService\n .saveSettings({\n ADMIN_CONTACTS: {\n emails,\n },\n })\n .pipe(tap((result) => {\n this.i360Config.requestsState.config.push.next(result.data.items as any);\n }))\n .subscribe(() => {\n this.modalService.open(\n AdminContactsConfirmModalComponent,\n {\n viewContainerRef: this.newsAdminContactsComponent.viewContainerRef,\n width: '677px',\n },\n ).then(() => {\n this.newsAdminContactsComponent.blockOverlayAutoOpen.next(false);\n });\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { identity, filter, take } from 'rxjs';\nimport { AdminContactsOpenerService } from './admin-contacts-opener.service';\n\n\n@Injectable()\nexport class AdminContactsOpenerSequentialService extends AdminContactsOpenerService {\n openIfNeeded(): void {\n this.newsAdminContactsComponent.isCountable.pipe(\n take(1),\n filter(identity),\n ).subscribe(() => {\n this.newsAdminContactsComponent.openOverlay.next(true);\n this.adminContactsHistoryService.addHistoryRecord({ timestamp: Date.now() });\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AdminContactsOpenerService } from './admin-contacts-opener.service';\n\n\n@Injectable()\nexport class AdminContactsOpenerNeverService extends AdminContactsOpenerService {\n openIfNeeded(): void {}\n}\n","export const sequentialNotificationsCount = 3;\nexport const periodicalNotificationsCount = 2;\nexport const maxNotificationsCount = sequentialNotificationsCount + periodicalNotificationsCount;\n\nexport const daysShouldPassPerNotification = [30, 90];\n","import { Injectable } from '@angular/core';\nimport { identity, filter, take } from 'rxjs';\nimport { AdminContactsOpenerService } from './admin-contacts-opener.service';\nimport {\n daysShouldPassPerNotification,\n sequentialNotificationsCount,\n} from './news-admin-contacts.constants';\n\nconst msInDay = 24 * 60 * 60 * 1000;\n\n@Injectable()\nexport class AdminContactsOpenerPeriodicalService extends AdminContactsOpenerService {\n openIfNeeded(): void {\n this.newsAdminContactsComponent.isCountable.pipe(\n take(1),\n filter(identity),\n ).subscribe(() => {\n const history = this.adminContactsHistoryService.getHistory();\n const lastOpenRecord = history[history.length - 1];\n const frequencyIndex = history.length % sequentialNotificationsCount;\n const daysShouldPass = daysShouldPassPerNotification[frequencyIndex];\n const msShouldPass = lastOpenRecord.timestamp + daysShouldPass * msInDay;\n\n if (Date.now() >= msShouldPass) {\n this.newsAdminContactsComponent.openOverlay.next(true);\n this.adminContactsHistoryService.addHistoryRecord({ timestamp: Date.now() });\n }\n });\n }\n}\n","import { Component, Injector, OnDestroy, OnInit,\n ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { Package } from '@imunify360-api/license';\nimport { of, BehaviorSubject, Subject, map, takeUntil } from 'rxjs';\nimport { I360Config } from 'app/utils/config/config';\nimport { NewsItemDirective } from '../news-item.directive';\nimport { AdminContactsHistoryService } from './admin-contacts-history.service';\nimport { AdminContactsOpenerInitialService } from './admin-contacts-opener-initial.service';\nimport { AdminContactsOpenerSequentialService } from './admin-contacts-opener-sequential.service';\nimport { AdminContactsOpenerNeverService } from './admin-contacts-opener-never.service';\nimport { AdminContactsOpenerPeriodicalService } from './admin-contacts-opener-periodical.service';\nimport { AdminContactsOpenerService } from './admin-contacts-opener.service';\nimport {\n maxNotificationsCount,\n sequentialNotificationsCount,\n} from './news-admin-contacts.constants';\n\nexport function adminContactsOpenerServiceFactory(\n injector: Injector,\n adminContactsHistoryService: AdminContactsHistoryService,\n) {\n const history = adminContactsHistoryService.getHistory();\n\n if (history.length === 0) {\n return injector.get(AdminContactsOpenerInitialService);\n } else if (history.length < sequentialNotificationsCount) {\n return injector.get(AdminContactsOpenerSequentialService);\n } else if (history.length < maxNotificationsCount) {\n return injector.get(AdminContactsOpenerPeriodicalService);\n } else {\n return injector.get(AdminContactsOpenerNeverService);\n }\n}\n\n@Component({\n selector: 'i360-news-admin-contacts',\n template: `\n <ng-template #tpl>\n <div *ngIf=\"isCountable | async\" class=\"event-item i360-admin-contacts\">\n <i class=\"material-icons feed\">rss_feed</i>\n <div>\n <p class=\"attention i360-admin-contacts_message\">\n {{ 'news.adminContacts.notificationText' | translate }}\n </p>\n <p class=\"i360-admin-contacts_link\">\n <a class=\"i360-license_redirect-link\"\n [routerLink]=\"['/', imunify360Package, 'admin', 'settings', 'general']\">\n {{ 'news.adminContacts.specifyEmail' | translate }}\n </a>\n </p>\n </div>\n </div>\n </ng-template>\n `,\n styleUrls: ['./news-admin-contacts.component.scss'],\n encapsulation: ViewEncapsulation.None, // because we use ngTemplateOutlet in news-notifications\n providers: [\n { provide: NewsItemDirective, useExisting: NewsAdminContactsComponent },\n AdminContactsHistoryService,\n AdminContactsOpenerInitialService,\n AdminContactsOpenerSequentialService,\n AdminContactsOpenerPeriodicalService,\n AdminContactsOpenerNeverService,\n {\n provide: AdminContactsOpenerService,\n useFactory: adminContactsOpenerServiceFactory,\n deps: [Injector, AdminContactsHistoryService],\n },\n ],\n})\nexport class NewsAdminContactsComponent extends NewsItemDirective implements OnInit, OnDestroy {\n destroyed = new Subject<void>();\n isCountable = TEST && window['i360Test'] && window['i360Test'].disableNews\n ? of(false) : this.i360Config.changes.pipe(\n map((config) => !config.ADMIN_CONTACTS || config.ADMIN_CONTACTS.emails.length === 0),\n takeUntil(this.destroyed),\n );\n isUnread = this.isCountable;\n openOverlay = new BehaviorSubject(false);\n imunify360Package = Package.imunify360;\n\n constructor(\n private i360Config: I360Config,\n private notificationsOpenerService: AdminContactsOpenerService,\n public viewContainerRef: ViewContainerRef,\n ) {\n super();\n\n this.blockOverlayAutoOpen = new BehaviorSubject(\n this.notificationsOpenerService.blockOverlayAutoOpen,\n );\n }\n\n ngOnInit(): void {\n this.notificationsOpenerService.init(this);\n this.notificationsOpenerService.openIfNeeded();\n }\n\n ngOnDestroy() {\n this.destroyed.next();\n }\n\n markAsRead(): void {}\n}\n","import { Component, HostListener, ViewChild } from '@angular/core';\nimport { Package } from '@imunify360-api/license';\nimport { NewsItem } from '@imunify360-api/news';\nimport { Observable } from 'rxjs';\nimport { NewsNotificationsComponent } from '../news-notifications/news-notifications.component';\nimport { NewsService } from '../news.service';\nimport { AppState } from '@imunify/nav-root';\n\n\n@Component({\n selector: 'i360-news',\n template: `\n <i360-news-notifications>\n <i360-news-license></i360-news-license>\n <i360-news-admin-contacts *ngIf=\"is360Package\"></i360-news-admin-contacts>\n <i360-news-message *ngFor=\"let message of news$ | async\" [message]=\"message\">\n </i360-news-message>\n </i360-news-notifications>\n `,\n host: {\n '[class.i360-news-active]': 'newsNotificationsComponent.overlayVisible && !appState.lowResourcesMode$.getValue()'\n },\n styleUrls: ['./news.component.scss'],\n})\nexport class NewsComponent {\n @ViewChild(NewsNotificationsComponent, {static: true})\n newsNotificationsComponent: NewsNotificationsComponent;\n news$: Observable<NewsItem[]>;\n is360Package = IMUNIFY_PACKAGE === Package.imunify360;\n\n constructor(newsService: NewsService, public appState: AppState) {\n this.news$ = newsService.getNews$();\n }\n\n @HostListener('click')\n handleHostClick() {\n this.newsNotificationsComponent.toggleOverlay();\n }\n}\n","<button id=\"i360-profile\"\n attr.aria-label=\"{{ 'menu.profileMenu' | translate }}\"\n [matMenuTriggerFor]=\"profileMenu\">\n <mat-icon class=\"i360-profile\" svgIcon=\"profile\"></mat-icon>\n</button>\n<mat-menu xPosition=\"before\" #profileMenu=\"matMenu\">\n <div class=\"username\" *ngIf=\"(authState.username|async) && panel.isNoPanel\">{{ authState.username|async }}</div>\n <button mat-menu-item\n [matMenuTriggerFor]=\"langsMenu\"\n class=\"i360-language\">\n <mat-icon>language</mat-icon>\n <span translate>menu.changeLanguage</span>\n </button>\n <button mat-menu-item\n *ngIf=\"panel.isNoPanel\"\n (click)=\"authService.logout()\"\n class=\"i360-logout\">\n <mat-icon>exit_to_app</mat-icon>\n <span translate>menu.logout</span>\n </button>\n</mat-menu>\n<mat-menu #langsMenu=\"matMenu\" classList=\"i360-nav-menu-container\">\n <button mat-menu-item *ngIf=\"!panel.isNoPanel\"\n [class.mat-selected]=\"translate.logicalLang === panelLang\"\n (click)=\"translate.use(panelLang)\">\n {{ 'menu.panelLanguage' | translate }}\n </button>\n <button mat-menu-item *ngFor=\"let lang of translate.langs\"\n [class.mat-selected]=\"translate.currentLang === lang.code\"\n (click)=\"translate.use(lang.code)\">\n {{lang.name}}\n </button>\n</mat-menu>\n","import { PANEL_DEFAULT_LANGUAGE, TranslateService } from 'app/utils/translate/translate.service';\nimport { AuthState } from 'app/services/auth-state';\nimport { AuthService } from 'app/services/auth';\nimport { Component } from '@angular/core';\nimport { Panel } from 'app/utils/panel';\n\n@Component({\n templateUrl: './menu-profile.component.html',\n styleUrls: ['./menu-profile.component.scss'],\n selector: 'i360-menu-profile',\n})\nexport class MenuProfileComponent {\n\n panelLang = PANEL_DEFAULT_LANGUAGE;\n\n constructor(\n public translate: TranslateService,\n public authState: AuthState,\n public authService: AuthService,\n public panel: Panel,\n ) {}\n}\n","import {\n AfterContentInit, Component, ContentChild,\n ElementRef, Input, OnChanges, Renderer2, ViewEncapsulation,\n} from '@angular/core';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: '[i360-button]',\n encapsulation: ViewEncapsulation.None,\n template: `\n <div class=\"i360-button-root\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrls: ['./button.component.scss'],\n host: { /* eslint-disable */\n '[attr.disabled]': 'disabled || null',\n },\n})\nexport class I360ButtonComponent implements AfterContentInit, OnChanges {\n @ContentChild(MatPrefix, {static: true}) prefix: MatPrefix;\n @ContentChild(MatSuffix, {static: true}) suffix: MatSuffix;\n @ContentChild(MatIcon, {static: true}) icon: MatIcon;\n @Input() primary: boolean;\n @Input() round: boolean;\n @Input() disabled: boolean;\n constructor(focusMonitor: FocusMonitor,\n private renderer: Renderer2,\n private element: ElementRef) {\n focusMonitor.monitor(element, true);\n }\n ngAfterContentInit() {\n const el = this.element.nativeElement;\n if (this.prefix) {\n this.renderer.addClass(el, 'i360-prefixed-button');\n }\n if (this.suffix) {\n this.renderer.addClass(el, 'i360-suffixed-button');\n }\n if (this.icon && !this.prefix && !this.suffix) {\n this.renderer.addClass(el, 'i360-icon-button');\n }\n if (!this.icon && !this.prefix && !this.suffix) {\n this.renderer.addClass(el, 'i360-basic-button');\n }\n this.ngOnChanges();\n }\n\n ngOnChanges(): void {\n const el = this.element.nativeElement;\n if (this.primary) {\n this.renderer.addClass(el, 'i360-primary-color');\n this.renderer.removeClass(el, 'i360-basic-color');\n } else {\n this.renderer.addClass(el, 'i360-basic-color');\n this.renderer.removeClass(el, 'i360-primary-color');\n }\n if (this.round) {\n this.renderer.addClass(el, 'i360-round');\n } else {\n this.renderer.removeClass(el, 'i360-round');\n }\n }\n}\n","<div class=\"notification {{ item.type }}\"\n [@enterLeave]=\"state\"\n (mouseenter)=\"onEnter()\"\n (mouseleave)=\"onLeave()\">\n\n <div class=\"title\">{{item.title}}</div>\n <div class=\"content\">{{item.content.slice(0, messageMaxLength)}}<span *ngIf=\"item.content.length > 98\">...</span>\n <a class=\"i360-notifications-details-button\"\n *ngIf=\"item.content.length > 98\"\n translate\n (click)=\"showErrorDetails(item)\">notifications.details</a>\n </div>\n <div class=\"icon\"><i class=\"material-icons icon-link\">{{ this.icons[item.type] }}</i></div>\n <div class=\"counter\" *ngIf=\"item.counter!==1\">{{ item.counter }}</div>\n <div class=\"close\" (click)=\"close()\">\n <button mat-icon-button><mat-icon>close</mat-icon></button>\n </div>\n</div>","import { Component, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Notification } from 'app/core/app.service';\nimport { NotificationsService } from 'app/services/notifications';\nimport { useLoader } from 'app/utils/loader/decorators';\nimport { ModalService } from 'app/utils/modals/modal.service';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { ModalDetailsComponent } from 'app/utils/modals/modal-details/modal-details.component';\n\nconst ANIMATE_TIME = 200;\nconst STATE_ACTIVE = 'active';\nconst STATE_INACTIVE = 'inactive';\n\n@Component({\n selector: 'notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n animations: [\n trigger('enterLeave', [\n state(STATE_ACTIVE, style({opacity: 1, transform: 'translateX(0)'})),\n transition('* => ' + STATE_ACTIVE, [\n style({opacity: 0, transform: 'translateX(-5%)'}),\n animate(ANIMATE_TIME),\n ]),\n state(STATE_INACTIVE, style({opacity: 0, transform: 'translateX(5%)'})),\n transition('* => ' + STATE_INACTIVE, [\n style({opacity: 1, transform: 'translateX(0)'}),\n animate(ANIMATE_TIME),\n ]),\n ]),\n ],\n})\nexport class NotificationComponent implements OnInit, OnDestroy {\n @Input() item: Notification;\n\n icons = {\n error: 'info_outline',\n success: 'done',\n };\n\n state: string;\n stopTime: boolean = false;\n timer: number;\n speed: number = 100;\n timeOut: number = 5000;\n messageMaxLength: number = 98;\n\n constructor(\n private service: NotificationsService,\n public modalService: ModalService,\n ) {}\n\n @HostListener('mouseup', ['$event']) onClick(event) {\n event.stopPropagation();\n }\n\n ngOnInit(): void {\n this.state = STATE_ACTIVE;\n if (this.timeOut !== 0 && this.itemHasTimeout()) {\n this.item.ticks = 0;\n this.setTimer();\n }\n }\n\n itemHasTimeout() {\n return !['error'].includes(this.item.type);\n }\n\n onEnter(): void {\n if (this.itemHasTimeout()) {\n this.stopTime = true;\n }\n }\n\n onLeave(): void {\n if (this.itemHasTimeout()) {\n this.stopTime = false;\n this.setTimer();\n }\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.timer);\n }\n\n setTimer() {\n const tick = () => {\n if (this.item.ticks++ > this.timeOut / this.speed) {\n this.close();\n } else if (!this.stopTime) {\n this.setTimer();\n }\n };\n\n this.timer = window.setTimeout(tick, this.speed);\n }\n\n close() {\n this.state = STATE_INACTIVE;\n setTimeout(() => this.service.remove(this.item), ANIMATE_TIME);\n }\n\n @useLoader\n public async showErrorDetails(details: Notification) {\n this.close();\n const panelClass = 'i360-details-panel-' + details.type;\n let options: MatDialogConfig = {\n data: {details},\n panelClass: panelClass};\n return this.modalService.open(ModalDetailsComponent, options);\n }\n}\n","import { Component } from '@angular/core';\nimport { AppState } from 'app/core/app.service';\n\n@Component({\n selector: 'notifications',\n styleUrls: ['./notifications.component.scss'],\n template: `\n <div class=\"abs\">\n <div class=\"fix\">\n <notification *ngFor=\"let i of (appState.notifications|async);\" [item]=\"i\"></notification>\n </div>\n </div>\n `,\n})\nexport class NotificationsComponent {\n constructor(public appState: AppState) {}\n}\n","import { LoaderDirective } from 'app/utils/loader/loader.directive';\n\nconst getLoader = (self): LoaderDirective => self.loader\n || (self.table && self.table.loader)\n || (self.request && self.request.loader);\nconst generateUniqueKey = (propertyKey: string): string => {\n return `${propertyKey}_${Math.random().toString(36).slice(2)}`;\n};\n\nexport function useLoader(this: any, ...args: any[]) {\n const customLoader = args.length === 2 ? args[1] : null;\n const f = (target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) => {\n let originalMethod = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n const key = generateUniqueKey(propertyKey);\n let loader = customLoader ? customLoader(this) : getLoader(this);\n if (!loader) {\n loader = {show: (e?) => {}, hide: (e?) => {}};\n }\n loader.show(key);\n let result;\n try {\n result = await originalMethod.apply(this, args);\n } catch (e) {\n throw e;\n } finally {\n loader.hide(key);\n }\n return result;\n };\n\n return descriptor;\n };\n if (args.length === 1) {\n return f;\n } else {\n return f.apply(this, args);\n }\n}\n","import '../styles/global/app.style.scss';\n\nimport { AppState } from 'app/core/app.service';\nimport { AuthState } from 'app/services/auth-state';\nimport { LicenseState } from 'app/services/license-state';\nimport { RequestsState } from 'app/services/requests-state';\nimport { getSharedInjector } from 'app/core/shared';\n\nimport { ErrorHandler, Injector, NgModule } from '@angular/core';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { TranslateHttpLoader } from 'app/utils/translate/TranslateHttpLoader';\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { I360TranslateModule } from 'app/utils/translate/translate.module';\nimport { AuthService } from 'app/services/auth';\nimport { getWindow, WindowToken } from 'app/core/window';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { OverlayContainer } from '@angular/cdk/overlay';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { RootErrorHandler } from 'app/services/sentry';\nimport { I360OverlayContainer } from 'app/utils/overlay-container';\nimport { UrlInterceptor } from 'app/interceptors/url.interceptor';\nimport { JsonHeaderInterceptor } from 'app/interceptors/json-header.interceptor';\nimport { Panel } from 'app/utils/panel';\nimport { I360NoContentModule } from 'app/components/no-content/no-content.module';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { applyCsrfStrategy, enableSvgIcons } from 'app/core/misc';\nimport { SentryInterceptor } from 'app/interceptors/sentry.interceptor';\nimport { ImunifyStatusInterceptor } from 'app/interceptors/imunify-status.interceptor';\nimport { ConfigRef } from 'app/core/config-ref';\nimport { NavRootComponent } from \"app/components/nav-root/nav-root.component\";\nimport { NewsModule } from 'app/components/news/news.module';\nimport { I360MenuProfileModule } from 'app/components/menu-profile/menu-profile.module';\nimport { I360NavigationModule } from 'app/utils/navigation/navigation.module';\nimport { I360NotificationsModule } from \"../components/notification/notifications.module\";\nimport { LicenseInterceptor } from 'app/interceptors/license.interceptor';\nimport { SettingsService } from \"../services/settings\";\nimport { LicenseService } from \"../services/license\";\nimport { FileService } from \"../services/file\";\nimport { MaliciousCountInterceptor } from \"../interceptors/malicious-count.interceptor\";\nimport { GetConfigSchema } from \"../utils/config/config\";\nimport { getSchema } from 'app/utils/config/user-config';\nimport { HistoryService } from \"../services/history\";\nimport { ReputationService } from '../services/reputation';\nimport { APP_BASE_HREF } from '@angular/common';\nimport { UserFeaturesStatusService } from 'app/services/user-features-status';\nimport { NavRootRoutingModule } from './nav-root-routing.module';\nimport { DirectivesModule } from 'app/directives/directives.module';\nimport { I360ButtonModule } from 'app/utils/button/button.module';\nimport { I360TemplateModule } from 'app/utils/table/template.module';\nimport { EulaInterceptor } from 'app/components/eula/eula.interceptor';\nimport { MyImunifyService } from 'app/services/my-imunify';\nimport { MyImunifyState } from 'app/services/my-imunify-state';\nimport { MyImunifyPromoDialogModule } from 'app/services/my-imunify-promo-dialog/my-imunify-promo-dialog.module';\nimport { FirewallState } from 'app/components/lists/firewall-state.service';\nimport { DatepickerModule } from '../utils/datepicker/datepicker.module';\nimport { InstallationService } from 'app/components/installation/installation.service';\nimport { PermissionsService } from 'app/services/permissions';\nimport { APP_NAMES } from './app-names.enum';\n\n\n@NgModule({\n bootstrap: [ NavRootComponent ],\n declarations: [\n NavRootComponent,\n ],\n exports: [ // for uniq/app tests\n NavRootComponent,\n ],\n imports: [\n BrowserAnimationsModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useClass: TranslateHttpLoader,\n },\n }),\n NavRootRoutingModule,\n DirectivesModule,\n I360TranslateModule.forRoot(),\n HttpClientModule,\n I360NoContentModule,\n MatIconModule,\n NewsModule,\n I360MenuProfileModule,\n I360NavigationModule,\n I360ButtonModule,\n I360NotificationsModule,\n MyImunifyPromoDialogModule,\n I360TemplateModule,\n DatepickerModule, // todo temp\n ],\n providers: [\n { provide: AppState, useFactory: () => getSharedInjector().get(AppState) },\n { provide: AuthState, useFactory: () => getSharedInjector().get(AuthState) },\n { provide: LicenseState, useFactory: () => getSharedInjector().get(LicenseState) },\n { provide: RequestsState, useFactory: () => getSharedInjector().get(RequestsState) },\n { provide: MyImunifyState, useFactory: () => getSharedInjector().get(MyImunifyState) },\n { provide: FirewallState, useFactory: () => getSharedInjector().get(FirewallState) },\n\n AuthService,\n UserFeaturesStatusService,\n ConfigRef,\n // fixme: both nav-root and content SPAs need to request settings (and other data too, in general),\n // but we don't want to duplicate requests.\n // Make config cache shared?\n SettingsService,\n LicenseService,\n MaliciousCountInterceptor,\n FileService,\n Panel,\n HistoryService,\n ReputationService,\n PermissionsService,\n MyImunifyService,\n InstallationService,\n // fixme: admin/user/av have different config schemas\n // instead of resolving it via DI, resolve it in runtime?\n { provide: GetConfigSchema, useValue: getSchema},\n { provide: WindowToken, useFactory: getWindow },\n { provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: { floatLabel: 'never' } },\n { provide: OverlayContainer, useClass: I360OverlayContainer},\n { provide: HTTP_INTERCEPTORS, useExisting: AuthService, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: UrlInterceptor, multi: true},\n { provide: HTTP_INTERCEPTORS, useClass: JsonHeaderInterceptor, multi: true},\n { provide: HTTP_INTERCEPTORS, useClass: SentryInterceptor, multi: true},\n { provide: HTTP_INTERCEPTORS, useClass: ImunifyStatusInterceptor, multi: true},\n { provide: HTTP_INTERCEPTORS, useClass: LicenseInterceptor, multi: true},\n { provide: HTTP_INTERCEPTORS, useClass: EulaInterceptor, multi: true},\n RootErrorHandler,\n { provide: ErrorHandler, useExisting: RootErrorHandler},\n { provide: APP_BASE_HREF, useValue: '/' },\n ],\n})\nexport class NavRootModule {\n constructor(\n iconRegistry: MatIconRegistry,\n sanitizer: DomSanitizer,\n requestsState: RequestsState,\n injector: Injector,\n panel: Panel\n ) {\n if (panel.isPlesk) {\n applyCsrfStrategy();\n }\n enableSvgIcons(iconRegistry, sanitizer, APP_NAMES.NAV_ROOT);\n requestsState.navRootInjector.next(injector);\n }\n}\n","declare let Zone; // window.Zone provided by externally loaded ZoneJS module\n\nexport const wrapLifecycleMethod = (method, appName) => {\n const patched = (...args) => {\n // console.log(`${appName}`, method, args);\n return new Promise((resolve, reject) => {\n if ((Zone.current as any)._properties[`single-spa-angular:${appName}`] && Zone.current.parent) {\n // console.log(`${appName}: not out of Angular zone yet, let's try parent`);\n Zone.current.parent.run(() => { resolve(patched(...args)); })\n } else {\n // console.log(`${appName}: safe out of Angular zone`);\n resolve(method(...args))\n }\n });\n }\n return patched;\n}\n","import { setPublicPath } from 'systemjs-webpack-interop';\n\n/* Make sure your import map has the name of your module in it. Example:\n{\n \"imports\": {\n \"@org-name/my-module\": \"https://example.com/dist/js/main.js\"\n }\n}\n */\n\n// __webpack_public_path__ will be set to https://example.com/dist/js/\nsetPublicPath('@imunify/nav-root');\n\n\nimport { enableProdMode, NgZone } from '@angular/core';\n\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { singleSpaAngular } from 'single-spa-angular';\n\nimport { environment } from './environments/environment';\nimport { loadTestInterceptor } from './app/core/misc';\nimport { NavRootModule } from './app/core/nav-root.module';\nimport { wrapLifecycleMethod } from 'common.single-spa';\n\nif (environment.production) {\n try {\n // The `enableProdMode` will throw an error if it's called multiple times,\n // but it may be called multiple times when dependencies are shared.\n enableProdMode();\n } catch {\n // Nothing to do here.\n }\n}\n\nif (TEST) {\n loadTestInterceptor();\n}\n\n// Export a service class (injection token) and the shared injector, so that others can get the same\n// instance from the injector.\nimport { AppState } from 'app/core/app.service';\nimport { AuthState } from 'app/services/auth-state';\nimport { LicenseState } from 'app/services/license-state';\nimport { RequestsState } from 'app/services/requests-state';\nimport { MyImunifyState } from 'app/services/my-imunify-state';\nimport { FirewallState } from 'app/components/lists/firewall-state.service';\nimport { getSharedInjector } from 'app/core/shared';\n\nexport { AppState, AuthState, LicenseState, RequestsState, MyImunifyState, FirewallState, getSharedInjector };\n\nconst lifecycles = singleSpaAngular({\n bootstrapFunction: () => platformBrowserDynamic().bootstrapModule(NavRootModule),\n template: '<nav-root />',\n // Do not provide these. If provided, Single-Spa tries to \"fix\" angular routing to let multiple\n // apps coexist. However, their \"fix\" brings more issues than benefits.\n // For the same reason, we don't need `getSingleSpaExtraProviders` above.\n // Router,\n // NavigationStart,\n NgZone,\n});\n\nexport const bootstrap = wrapLifecycleMethod(lifecycles.bootstrap, '@imunify/nav-root');\nexport const mount = wrapLifecycleMethod(lifecycles.mount, '@imunify/nav-root');\nexport const unmount = wrapLifecycleMethod(lifecycles.unmount, '@imunify/nav-root');\n","'use strict';\n\nvar callBound = require('call-bound');\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\n\nvar isArrayBuffer = require('is-array-buffer');\n\n/** @type {import('.')} */\nmodule.exports = function byteLength(ab) {\n\tif (!isArrayBuffer(ab)) {\n\t\treturn NaN;\n\t}\n\treturn $byteLength ? $byteLength(ab) : ab.byteLength;\n}; // in node < 0.11, byteLength is an own nonconfigurable property\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n\n content += cssWithMappingToString(item);\n\n if (needLayer) {\n content += \"}\";\n }\n\n if (item[2]) {\n content += \"}\";\n }\n\n if (item[4]) {\n content += \"}\";\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n\n\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t)};var r=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else r.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s,o=this;if(f)return o.$offset=u,o.$u=0===s,o;if(0!==s){var r=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(u+r,t)).$offset=u,o.$x.$localOffset=r}else o=this.utc();return o};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","'use strict';\n\nvar assign = require('object.assign');\nvar callBound = require('call-bind/callBound');\nvar flags = require('regexp.prototype.flags');\nvar GetIntrinsic = require('get-intrinsic');\nvar getIterator = require('es-get-iterator');\nvar getSideChannel = require('side-channel');\nvar is = require('object-is');\nvar isArguments = require('is-arguments');\nvar isArray = require('isarray');\nvar isArrayBuffer = require('is-array-buffer');\nvar isDate = require('is-date-object');\nvar isRegex = require('is-regex');\nvar isSharedArrayBuffer = require('is-shared-array-buffer');\nvar objectKeys = require('object-keys');\nvar whichBoxedPrimitive = require('which-boxed-primitive');\nvar whichCollection = require('which-collection');\nvar whichTypedArray = require('which-typed-array');\nvar byteLength = require('array-buffer-byte-length');\n\nvar sabByteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\nvar $getTime = callBound('Date.prototype.getTime');\nvar gPO = Object.getPrototypeOf;\nvar $objToString = callBound('Object.prototype.toString');\n\nvar $Set = GetIntrinsic('%Set%', true);\nvar $mapHas = callBound('Map.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSize = callBound('Map.prototype.size', true);\nvar $setAdd = callBound('Set.prototype.add', true);\nvar $setDelete = callBound('Set.prototype.delete', true);\nvar $setHas = callBound('Set.prototype.has', true);\nvar $setSize = callBound('Set.prototype.size', true);\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L401-L414\nfunction setHasEqualElement(set, val1, opts, channel) {\n var i = getIterator(set);\n var result;\n while ((result = i.next()) && !result.done) {\n if (internalDeepEqual(val1, result.value, opts, channel)) { // eslint-disable-line no-use-before-define\n // Remove the matching element to make sure we do not check that again.\n $setDelete(set, result.value);\n return true;\n }\n }\n\n return false;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L416-L439\nfunction findLooseMatchingPrimitives(prim) {\n if (typeof prim === 'undefined') {\n return null;\n }\n if (typeof prim === 'object') { // Only pass in null as object!\n return void 0;\n }\n if (typeof prim === 'symbol') {\n return false;\n }\n if (typeof prim === 'string' || typeof prim === 'number') {\n // Loose equal entries exist only if the string is possible to convert to a regular number and not NaN.\n return +prim === +prim; // eslint-disable-line no-implicit-coercion\n }\n return true;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L449-L460\nfunction mapMightHaveLoosePrim(a, b, prim, item, opts, channel) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = $mapGet(b, altValue);\n var looseOpts = assign({}, opts, { strict: false });\n if (\n (typeof curB === 'undefined' && !$mapHas(b, altValue))\n // eslint-disable-next-line no-use-before-define\n || !internalDeepEqual(item, curB, looseOpts, channel)\n ) {\n return false;\n }\n // eslint-disable-next-line no-use-before-define\n return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L441-L447\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n\n return $setHas(b, altValue) && !$setHas(a, altValue);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L518-L533\nfunction mapHasEqualEntry(set, map, key1, item1, opts, channel) {\n var i = getIterator(set);\n var result;\n var key2;\n while ((result = i.next()) && !result.done) {\n key2 = result.value;\n if (\n // eslint-disable-next-line no-use-before-define\n internalDeepEqual(key1, key2, opts, channel)\n // eslint-disable-next-line no-use-before-define\n && internalDeepEqual(item1, $mapGet(map, key2), opts, channel)\n ) {\n $setDelete(set, key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction internalDeepEqual(actual, expected, options, channel) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n var actualBoxed = whichBoxedPrimitive(actual);\n var expectedBoxed = whichBoxedPrimitive(expected);\n if (actualBoxed !== expectedBoxed) {\n return false;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected; // eslint-disable-line eqeqeq\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // see https://github.com/nodejs/node/commit/d3aafd02efd3a403d646a3044adcf14e63a88d32 for memos/channel inspiration\n\n var hasActual = channel.has(actual);\n var hasExpected = channel.has(expected);\n var sentinel;\n if (hasActual && hasExpected) {\n if (channel.get(actual) === channel.get(expected)) {\n return true;\n }\n } else {\n sentinel = {};\n }\n if (!hasActual) { channel.set(actual, sentinel); }\n if (!hasExpected) { channel.set(expected, sentinel); }\n\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts, channel);\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n\n return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x));\n}\n\nfunction setEquiv(a, b, opts, channel) {\n if ($setSize(a) !== $setSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n while ((resultA = iA.next()) && !resultA.done) {\n if (resultA.value && typeof resultA.value === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n } else if (!$setHas(b, resultA.value)) {\n if (opts.strict) { return false; }\n if (!setMightHaveLoosePrim(a, b, resultA.value)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n }\n }\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n // We have to check if a primitive value is already matching and only if it's not, go hunting for it.\n if (resultB.value && typeof resultB.value === 'object') {\n if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && !$setHas(a, resultB.value)\n && !setHasEqualElement(set, resultB.value, opts.strict, channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction mapEquiv(a, b, opts, channel) {\n if ($mapSize(a) !== $mapSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n var key;\n var item1;\n var item2;\n while ((resultA = iA.next()) && !resultA.done) {\n key = resultA.value[0];\n item1 = resultA.value[1];\n if (key && typeof key === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n } else {\n item2 = $mapGet(b, key);\n if ((typeof item2 === 'undefined' && !$mapHas(b, key)) || !internalDeepEqual(item1, item2, opts, channel)) {\n if (opts.strict) {\n return false;\n }\n if (!mapMightHaveLoosePrim(a, b, key, item1, opts, channel)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n }\n }\n }\n\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n key = resultB.value[0];\n item2 = resultB.value[1];\n if (key && typeof key === 'object') {\n if (!mapHasEqualEntry(set, a, key, item2, opts, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && (!a.has(key) || !internalDeepEqual($mapGet(a, key), item2, opts, channel))\n && !mapHasEqualEntry(set, a, key, item2, assign({}, opts, { strict: false }), channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts, channel) {\n /* eslint max-statements: [2, 100], max-lines-per-function: [2, 120], max-depth: [2, 5], max-lines: [2, 400] */\n var i, key;\n\n if (typeof a !== typeof b) { return false; }\n if (a == null || b == null) { return false; }\n\n if ($objToString(a) !== $objToString(b)) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsArray = isArray(a);\n var bIsArray = isArray(b);\n if (aIsArray !== bIsArray) { return false; }\n\n // TODO: replace when a cross-realm brand check is available\n var aIsError = a instanceof Error;\n var bIsError = b instanceof Error;\n if (aIsError !== bIsError) { return false; }\n if (aIsError || bIsError) {\n if (a.name !== b.name || a.message !== b.message) { return false; }\n }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) {\n return false;\n }\n\n var aIsDate = isDate(a);\n var bIsDate = isDate(b);\n if (aIsDate !== bIsDate) { return false; }\n if (aIsDate || bIsDate) { // && would work too, because both are true or both false here\n if ($getTime(a) !== $getTime(b)) { return false; }\n }\n if (opts.strict && gPO && gPO(a) !== gPO(b)) { return false; }\n\n var aWhich = whichTypedArray(a);\n var bWhich = whichTypedArray(b);\n if (aWhich !== bWhich) {\n return false;\n }\n if (aWhich || bWhich) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n var aIsArrayBuffer = isArrayBuffer(a);\n var bIsArrayBuffer = isArrayBuffer(b);\n if (aIsArrayBuffer !== bIsArrayBuffer) { return false; }\n if (aIsArrayBuffer || bIsArrayBuffer) { // && would work too, because both are true or both false here\n if (byteLength(a) !== byteLength(b)) { return false; }\n return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n }\n\n var aIsSAB = isSharedArrayBuffer(a);\n var bIsSAB = isSharedArrayBuffer(b);\n if (aIsSAB !== bIsSAB) { return false; }\n if (aIsSAB || bIsSAB) { // && would work too, because both are true or both false here\n if (sabByteLength(a) !== sabByteLength(b)) { return false; }\n return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n }\n\n if (typeof a !== typeof b) { return false; }\n\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; } // eslint-disable-line eqeqeq\n }\n\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!internalDeepEqual(a[key], b[key], opts, channel)) { return false; }\n }\n\n var aCollection = whichCollection(a);\n var bCollection = whichCollection(b);\n if (aCollection !== bCollection) {\n return false;\n }\n if (aCollection === 'Set' || bCollection === 'Set') { // aCollection === bCollection\n return setEquiv(a, b, opts, channel);\n }\n if (aCollection === 'Map') { // aCollection === bCollection\n return mapEquiv(a, b, opts, channel);\n }\n\n return true;\n}\n\nmodule.exports = function deepEqual(a, b, opts) {\n return internalDeepEqual(a, b, opts, getSideChannel());\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {<This, A extends readonly unknown[]>(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\n/** @type {<This, S extends string>(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\n/** @type {<This, O>(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (isArray(list)) {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $BigInt = typeof BigInt !== 'undefined' && BigInt;\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeBigInts() {\n\treturn typeof $BigInt === 'function'\n\t\t&& typeof BigInt === 'function'\n\t\t&& typeof $BigInt(42) === 'bigint' // eslint-disable-line no-magic-numbers\n\t\t&& typeof BigInt(42) === 'bigint'; // eslint-disable-line no-magic-numbers\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\n/** @typedef {`$${import('.').InternalSlot}`} SaltedInternalSlot */\n/** @typedef {{ [k in SaltedInternalSlot]?: unknown }} SlotsObject */\n\nvar hasOwn = require('hasown');\n/** @type {import('side-channel').Channel<object, SlotsObject>} */\nvar channel = require('side-channel')();\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nvar SLOT = {\n\tassert: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tchannel.assert(O);\n\t\tif (!SLOT.has(O, slot)) {\n\t\t\tthrow new $TypeError('`' + slot + '` is not present on `O`');\n\t\t}\n\t},\n\tget: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\t// eslint-disable-next-line no-extra-parens\n\t\treturn slots && slots[/** @type {SaltedInternalSlot} */ ('$' + slot)];\n\t},\n\thas: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\t// eslint-disable-next-line no-extra-parens\n\t\treturn !!slots && hasOwn(slots, /** @type {SaltedInternalSlot} */ ('$' + slot));\n\t},\n\tset: function (O, slot, V) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\tif (!slots) {\n\t\t\tslots = {};\n\t\t\tchannel.set(O, slots);\n\t\t}\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tslots[/** @type {SaltedInternalSlot} */ ('$' + slot)] = V;\n\t}\n};\n\nif (Object.freeze) {\n\tObject.freeze(SLOT);\n}\n\nmodule.exports = SLOT;\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $ArrayBuffer = GetIntrinsic('%ArrayBuffer%', true);\n/** @type {undefined | ((receiver: ArrayBuffer) => number) | ((receiver: unknown) => never)} */\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\nvar $toString = callBound('Object.prototype.toString');\n\n// in node 0.10, ArrayBuffers have no prototype methods, but have an own slot-checking `slice` method\nvar abSlice = !!$ArrayBuffer && !$byteLength && new $ArrayBuffer(0).slice;\nvar $abSlice = !!abSlice && callBind(abSlice);\n\n/** @type {import('.')} */\nmodule.exports = $byteLength || $abSlice\n\t? function isArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\tif ($byteLength) {\n\t\t\t\t// @ts-expect-error no idea why TS can't handle the overload\n\t\t\t\t$byteLength(obj);\n\t\t\t} else {\n\t\t\t\t// @ts-expect-error TS chooses not to type-narrow inside a closure\n\t\t\t\t$abSlice(obj, 0);\n\t\t\t}\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: $ArrayBuffer\n\t\t// in node 0.8, ArrayBuffers have no prototype or own methods, but also no Symbol.toStringTag\n\t\t? function isArrayBuffer(obj) {\n\t\t\treturn $toString(obj) === '[object ArrayBuffer]';\n\t\t}\n\t\t// @ts-expect-error\n\t\t: function isArrayBuffer(obj) { // eslint-disable-line no-unused-vars\n\t\t\treturn false;\n\t\t};\n","'use strict';\n\nvar hasBigInts = require('has-bigints')();\n\nif (hasBigInts) {\n\tvar bigIntValueOf = BigInt.prototype.valueOf;\n\t/** @type {(value: object) => value is BigInt} */\n\tvar tryBigInt = function tryBigIntObject(value) {\n\t\ttry {\n\t\t\tbigIntValueOf.call(value);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t}\n\t\treturn false;\n\t};\n\n\t/** @type {import('.')} */\n\tmodule.exports = function isBigInt(value) {\n\t\tif (\n\t\t\tvalue === null\n\t\t\t|| typeof value === 'undefined'\n\t\t\t|| typeof value === 'boolean'\n\t\t\t|| typeof value === 'string'\n\t\t\t|| typeof value === 'number'\n\t\t\t|| typeof value === 'symbol'\n\t\t\t|| typeof value === 'function'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof value === 'bigint') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn tryBigInt(value);\n\t};\n} else {\n\t/** @type {import('.')} */\n\tmodule.exports = function isBigInt(value) {\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar callBound = require('call-bound');\nvar $boolToStr = callBound('Boolean.prototype.toString');\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar tryBooleanObject = function booleanBrandCheck(value) {\n\ttry {\n\t\t$boolToStr(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar boolClass = '[object Boolean]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isBoolean(value) {\n\tif (typeof value === 'boolean') {\n\t\treturn true;\n\t}\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryBooleanObject(value) : $toString(value) === boolClass;\n};\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar callBound = require('call-bound');\n\nvar getDay = callBound('Date.prototype.getDay');\n/** @type {import('.')} */\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\n/** @type {(value: unknown) => string} */\nvar toStr = callBound('Object.prototype.toString');\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr(value) === dateClass;\n};\n","'use strict';\n\n/** @const */\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Map) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$mapHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $Map is always truthy here\n\t\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\n\nvar $numToStr = callBound('Number.prototype.toString');\n\n/** @type {import('.')} */\nvar tryNumberObject = function tryNumberObject(value) {\n\ttry {\n\t\t$numToStr(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar $toString = callBound('Object.prototype.toString');\nvar numClass = '[object Number]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isNumberObject(value) {\n\tif (typeof value === 'number') {\n\t\treturn true;\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryNumberObject(value) : $toString(value) === numClass;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType<typeof RegExp.prototype.exec>, ...args: Parameters<typeof RegExp.prototype.exec>) => ReturnType<typeof RegExp.prototype.exec>} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable<typeof gOPD>} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Set) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$setHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isSet(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$setHas.call(x);\n\t\tif ($mapHas) {\n\t\t\ttry {\n\t\t\t\t$mapHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $Set is always truthy here\n\t\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\n\n/** @type {undefined | ((thisArg: SharedArrayBuffer) => number)} */\nvar $byteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\n/** @type {import('.')} */\nmodule.exports = $byteLength\n\t? function isSharedArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t// @ts-expect-error TS can't figure out this closed-over variable is non-nullable, and it's fine that `obj` might not be a SAB\n\t\t\t$byteLength(obj);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: function isSharedArrayBuffer(_obj) { // eslint-disable-line no-unused-vars\n\t\treturn false;\n\t};\n","'use strict';\n\nvar callBound = require('call-bound');\n\n/** @type {(receiver: ThisParameterType<typeof String.prototype.valueOf>, ...args: Parameters<typeof String.prototype.valueOf>) => ReturnType<typeof String.prototype.valueOf>} */\nvar $strValueOf = callBound('String.prototype.valueOf');\n\n/** @type {import('.')} */\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\t$strValueOf(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n/** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */\nvar $toString = callBound('Object.prototype.toString');\nvar strClass = '[object String]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : $toString(value) === strClass;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar $toString = callBound('Object.prototype.toString');\nvar hasSymbols = require('has-symbols')();\nvar safeRegexTest = require('safe-regex-test');\n\nif (hasSymbols) {\n\tvar $symToStr = callBound('Symbol.prototype.toString');\n\tvar isSymString = safeRegexTest(/^Symbol\\(.*\\)$/);\n\n\t/** @type {(value: object) => value is Symbol} */\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn isSymString($symToStr(value));\n\t};\n\n\t/** @type {import('.')} */\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (!value || typeof value !== 'object' || $toString(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\t/** @type {import('.')} */\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\n\nvar exported;\n\nif (!$WeakMap) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\nif (!exported && !$mapHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isWeakMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x, $mapHas);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x, $setHas);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $WeakMap is always truthy here\n\t\treturn x instanceof $WeakMap; // core-js workaround, pre-v3\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\n\nvar $WeakSet = GetIntrinsic('%WeakSet%', true);\n\n/** @type {undefined | (<V>(thisArg: Set<V>, value: V) => boolean)} */\nvar $setHas = callBound('WeakSet.prototype.has', true);\n\nif ($setHas) {\n\t/** @type {undefined | (<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean)} */\n\tvar $mapHas = callBound('WeakMap.prototype.has', true);\n\n\t/** @type {import('.')} */\n\tmodule.exports = function isWeakSet(x) {\n\t\tif (!x || typeof x !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t// @ts-expect-error TS can't figure out that $setHas is always truthy here\n\t\t\t$setHas(x, $setHas);\n\t\t\tif ($mapHas) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error this indeed might not be a weak collection\n\t\t\t\t\t$mapHas(x, $mapHas);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't figure out that $WeakSet is always truthy here\n\t\t\treturn x instanceof $WeakSet; // core-js workaround, pre-v3\n\t\t} catch (e) {}\n\t\treturn false;\n\t};\n} else {\n\t/** @type {import('.')} */\n\t// @ts-expect-error\n\tmodule.exports = function isWeakSet(x) { // eslint-disable-line no-unused-vars\n\t\t// `WeakSet` does not exist, or does not have a `has` method\n\t\treturn false;\n\t};\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n __proto__: null,\n 'double': '\"',\n single: \"'\"\n};\nvar quoteREs = {\n __proto__: null,\n 'double': /([\"\\\\])/g,\n single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (\n (typeof globalThis !== 'undefined' && obj === globalThis)\n || (typeof global !== 'undefined' && obj === global)\n ) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var style = opts.quoteStyle || defaultStyle;\n var quoteChar = quotes[style];\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction canTrustToString(obj) {\n return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n quoteRE.lastIndex = 0;\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar objectKeys = require('object-keys');\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bound');\nvar $Object = require('es-object-atoms');\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? $Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (target == null) { throw new TypeError('target must be an object'); }\n\tvar to = $Object(target); // step 1\n\tif (arguments.length === 1) {\n\t\treturn to; // step 2\n\t}\n\tfor (var s = 1; s < arguments.length; ++s) {\n\t\tvar from = $Object(arguments[s]); // step 3.a.i\n\n\t\t// step 3.a.ii:\n\t\tvar keys = objectKeys(from);\n\t\tvar getSymbols = hasSymbols && ($Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tvar syms = getSymbols(from);\n\t\t\tfor (var j = 0; j < syms.length; ++j) {\n\t\t\t\tvar key = syms[j];\n\t\t\t\tif ($propIsEnumerable(from, key)) {\n\t\t\t\t\t$push(keys, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// step 3.a.iii:\n\t\tfor (var i = 0; i < keys.length; ++i) {\n\t\t\tvar nextKey = keys[i];\n\t\t\tif ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2\n\t\t\t\tvar propValue = from[nextKey]; // step 3.a.iii.2.a\n\t\t\t\tto[nextKey] = propValue; // step 3.a.iii.2.b\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to; // step 4\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind.apply(getPolyfill());\n// eslint-disable-next-line no-unused-vars\nvar bound = function assign(target, source1) {\n\treturn polyfill(Object, arguments);\n};\n\ndefineProperties(bound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = bound;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","'use strict';\n\nvar setFunctionName = require('set-function-name');\nvar $TypeError = require('es-errors/type');\n\nvar $Object = Object;\n\nmodule.exports = setFunctionName(function flags() {\n\tif (this == null || this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.unicodeSets) {\n\t\tresult += 'v';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n}, 'get flags', true);\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& 'dotAll' in RegExp.prototype\n\t\t\t&& 'hasIndices' in RegExp.prototype\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdescriptor.get.call(o);\n\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = require('gopd');\nvar defineProperty = Object.defineProperty;\nvar $TypeError = require('es-errors');\nvar getProto = require('get-proto');\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new $TypeError('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionName(fn, name) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\tif (!loose || functionsHaveConfigurableNames) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'name', name, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'name', name);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode<typeof value, typeof key>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType<typeof getSideChannelList>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode<V, K> | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable<typeof $o>} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {<K, V>(thisArg: Map<K, V>) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude<import('.'), false>} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType<typeof getSideChannelMap>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {Map<K, V> | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude<import('.'), false>} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType<typeof getSideChannelWeakMap>} Channel */\n\t\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t\t/** @type {WeakMap<K & object, V> | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable<typeof $m>} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType<typeof getSideChannel>} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar SLOT = require('internal-slot');\nvar $SyntaxError = require('es-errors/syntax');\n\nvar $StopIteration = typeof StopIteration === 'object' ? StopIteration : null;\n\n/** @type {import('.')} */\nmodule.exports = function getStopIterationIterator(origIterator) {\n\tif (!$StopIteration) {\n\t\tthrow new $SyntaxError('this environment lacks StopIteration');\n\t}\n\n\tSLOT.set(origIterator, '[[Done]]', false);\n\n\t/** @template T @typedef {T extends Iterator<infer U> ? U : never} IteratorType */\n\t/** @typedef {IteratorType<ReturnType<typeof getStopIterationIterator>>} T */\n\tvar siIterator = {\n\t\tnext: /** @type {() => IteratorResult<T>} */ function next() {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tvar iterator = /** @type {typeof origIterator} */ (SLOT.get(this, '[[Iterator]]'));\n\t\t\tvar done = !!SLOT.get(iterator, '[[Done]]');\n\t\t\ttry {\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\tvalue: done ? void undefined : /** @type {T} */ (iterator.next())\n\t\t\t\t};\n\t\t\t} catch (e) {\n\t\t\t\tSLOT.set(iterator, '[[Done]]', true);\n\t\t\t\tif (e !== $StopIteration) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n\n\tSLOT.set(siIterator, '[[Iterator]]', origIterator);\n\n\t// @ts-expect-error TODO FIXME\n\treturn siIterator;\n};\n","exports.setPublicPath = function setPublicPath(\n systemjsModuleName,\n rootDirectoryLevel\n) {\n if (!rootDirectoryLevel) {\n rootDirectoryLevel = 1;\n }\n if (\n typeof systemjsModuleName !== \"string\" ||\n systemjsModuleName.trim().length === 0\n ) {\n throw Error(\n \"systemjs-webpack-interop: setPublicPath(systemjsModuleName) must be called with a non-empty string 'systemjsModuleName'\"\n );\n }\n\n if (\n typeof rootDirectoryLevel !== \"number\" ||\n rootDirectoryLevel <= 0 ||\n isNaN(rootDirectoryLevel) ||\n !isInteger(rootDirectoryLevel)\n ) {\n throw Error(\n \"systemjs-webpack-interop: setPublicPath(systemjsModuleName, rootDirectoryLevel) must be called with a positive integer 'rootDirectoryLevel'\"\n );\n }\n\n var moduleUrl;\n try {\n moduleUrl = window.System.resolve(systemjsModuleName);\n if (!moduleUrl) {\n throw Error();\n }\n } catch (err) {\n throw Error(\n \"systemjs-webpack-interop: There is no such module '\" +\n systemjsModuleName +\n \"' in the SystemJS registry. Did you misspell the name of your module?\"\n );\n }\n\n __webpack_public_path__ = resolveDirectory(moduleUrl, rootDirectoryLevel);\n};\n\nfunction resolveDirectory(urlString, rootDirectoryLevel) {\n // Our friend IE11 doesn't support new URL()\n // https://github.com/single-spa/single-spa/issues/612\n // https://gist.github.com/jlong/2428561\n\n var a = document.createElement(\"a\");\n a.href = urlString;\n\n var pathname = a.pathname[0] === \"/\" ? a.pathname : \"/\" + a.pathname;\n var numDirsProcessed = 0,\n index = pathname.length;\n while (numDirsProcessed !== rootDirectoryLevel && index >= 0) {\n var char = pathname[--index];\n if (char === \"/\") {\n numDirsProcessed++;\n }\n }\n\n if (numDirsProcessed !== rootDirectoryLevel) {\n throw Error(\n \"systemjs-webpack-interop: rootDirectoryLevel (\" +\n rootDirectoryLevel +\n \") is greater than the number of directories (\" +\n numDirsProcessed +\n \") in the URL path \" +\n urlString\n );\n }\n\n var finalPath = pathname.slice(0, index + 1);\n\n return a.protocol + \"//\" + a.host + finalPath;\n}\n\nexports.resolveDirectory = resolveDirectory;\n\n// borrowed from https://github.com/parshap/js-is-integer/blob/master/index.js\nvar isInteger =\n Number.isInteger ||\n function isInteger(val) {\n return typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n };\n","\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _toDate = _interopRequireDefault(require(\"./lib/toDate\"));\nvar _toFloat = _interopRequireDefault(require(\"./lib/toFloat\"));\nvar _toInt = _interopRequireDefault(require(\"./lib/toInt\"));\nvar _toBoolean = _interopRequireDefault(require(\"./lib/toBoolean\"));\nvar _equals = _interopRequireDefault(require(\"./lib/equals\"));\nvar _contains = _interopRequireDefault(require(\"./lib/contains\"));\nvar _matches = _interopRequireDefault(require(\"./lib/matches\"));\nvar _isEmail = _interopRequireDefault(require(\"./lib/isEmail\"));\nvar _isURL = _interopRequireDefault(require(\"./lib/isURL\"));\nvar _isMACAddress = _interopRequireDefault(require(\"./lib/isMACAddress\"));\nvar _isIP = _interopRequireDefault(require(\"./lib/isIP\"));\nvar _isIPRange = _interopRequireDefault(require(\"./lib/isIPRange\"));\nvar _isFQDN = _interopRequireDefault(require(\"./lib/isFQDN\"));\nvar _isDate = _interopRequireDefault(require(\"./lib/isDate\"));\nvar _isTime = _interopRequireDefault(require(\"./lib/isTime\"));\nvar _isBoolean = _interopRequireDefault(require(\"./lib/isBoolean\"));\nvar _isLocale = _interopRequireDefault(require(\"./lib/isLocale\"));\nvar _isAbaRouting = _interopRequireDefault(require(\"./lib/isAbaRouting\"));\nvar _isAlpha = _interopRequireWildcard(require(\"./lib/isAlpha\"));\nvar _isAlphanumeric = _interopRequireWildcard(require(\"./lib/isAlphanumeric\"));\nvar _isNumeric = _interopRequireDefault(require(\"./lib/isNumeric\"));\nvar _isPassportNumber = _interopRequireWildcard(require(\"./lib/isPassportNumber\"));\nvar _isPort = _interopRequireDefault(require(\"./lib/isPort\"));\nvar _isLowercase = _interopRequireDefault(require(\"./lib/isLowercase\"));\nvar _isUppercase = _interopRequireDefault(require(\"./lib/isUppercase\"));\nvar _isIMEI = _interopRequireDefault(require(\"./lib/isIMEI\"));\nvar _isAscii = _interopRequireDefault(require(\"./lib/isAscii\"));\nvar _isFullWidth = _interopRequireDefault(require(\"./lib/isFullWidth\"));\nvar _isHalfWidth = _interopRequireDefault(require(\"./lib/isHalfWidth\"));\nvar _isVariableWidth = _interopRequireDefault(require(\"./lib/isVariableWidth\"));\nvar _isMultibyte = _interopRequireDefault(require(\"./lib/isMultibyte\"));\nvar _isSemVer = _interopRequireDefault(require(\"./lib/isSemVer\"));\nvar _isSurrogatePair = _interopRequireDefault(require(\"./lib/isSurrogatePair\"));\nvar _isInt = _interopRequireDefault(require(\"./lib/isInt\"));\nvar _isFloat = _interopRequireWildcard(require(\"./lib/isFloat\"));\nvar _isDecimal = _interopRequireDefault(require(\"./lib/isDecimal\"));\nvar _isHexadecimal = _interopRequireDefault(require(\"./lib/isHexadecimal\"));\nvar _isOctal = _interopRequireDefault(require(\"./lib/isOctal\"));\nvar _isDivisibleBy = _interopRequireDefault(require(\"./lib/isDivisibleBy\"));\nvar _isHexColor = _interopRequireDefault(require(\"./lib/isHexColor\"));\nvar _isRgbColor = _interopRequireDefault(require(\"./lib/isRgbColor\"));\nvar _isHSL = _interopRequireDefault(require(\"./lib/isHSL\"));\nvar _isISRC = _interopRequireDefault(require(\"./lib/isISRC\"));\nvar _isIBAN = _interopRequireWildcard(require(\"./lib/isIBAN\"));\nvar _isBIC = _interopRequireDefault(require(\"./lib/isBIC\"));\nvar _isMD = _interopRequireDefault(require(\"./lib/isMD5\"));\nvar _isHash = _interopRequireDefault(require(\"./lib/isHash\"));\nvar _isJWT = _interopRequireDefault(require(\"./lib/isJWT\"));\nvar _isJSON = _interopRequireDefault(require(\"./lib/isJSON\"));\nvar _isEmpty = _interopRequireDefault(require(\"./lib/isEmpty\"));\nvar _isLength = _interopRequireDefault(require(\"./lib/isLength\"));\nvar _isByteLength = _interopRequireDefault(require(\"./lib/isByteLength\"));\nvar _isULID = _interopRequireDefault(require(\"./lib/isULID\"));\nvar _isUUID = _interopRequireDefault(require(\"./lib/isUUID\"));\nvar _isMongoId = _interopRequireDefault(require(\"./lib/isMongoId\"));\nvar _isAfter = _interopRequireDefault(require(\"./lib/isAfter\"));\nvar _isBefore = _interopRequireDefault(require(\"./lib/isBefore\"));\nvar _isIn = _interopRequireDefault(require(\"./lib/isIn\"));\nvar _isLuhnNumber = _interopRequireDefault(require(\"./lib/isLuhnNumber\"));\nvar _isCreditCard = _interopRequireDefault(require(\"./lib/isCreditCard\"));\nvar _isIdentityCard = _interopRequireDefault(require(\"./lib/isIdentityCard\"));\nvar _isEAN = _interopRequireDefault(require(\"./lib/isEAN\"));\nvar _isISIN = _interopRequireDefault(require(\"./lib/isISIN\"));\nvar _isISBN = _interopRequireDefault(require(\"./lib/isISBN\"));\nvar _isISSN = _interopRequireDefault(require(\"./lib/isISSN\"));\nvar _isTaxID = _interopRequireDefault(require(\"./lib/isTaxID\"));\nvar _isMobilePhone = _interopRequireWildcard(require(\"./lib/isMobilePhone\"));\nvar _isEthereumAddress = _interopRequireDefault(require(\"./lib/isEthereumAddress\"));\nvar _isCurrency = _interopRequireDefault(require(\"./lib/isCurrency\"));\nvar _isBtcAddress = _interopRequireDefault(require(\"./lib/isBtcAddress\"));\nvar _isISO = require(\"./lib/isISO6346\");\nvar _isISO2 = _interopRequireDefault(require(\"./lib/isISO6391\"));\nvar _isISO3 = _interopRequireDefault(require(\"./lib/isISO8601\"));\nvar _isRFC = _interopRequireDefault(require(\"./lib/isRFC3339\"));\nvar _isISO4 = _interopRequireDefault(require(\"./lib/isISO15924\"));\nvar _isISO31661Alpha = _interopRequireDefault(require(\"./lib/isISO31661Alpha2\"));\nvar _isISO31661Alpha2 = _interopRequireDefault(require(\"./lib/isISO31661Alpha3\"));\nvar _isISO31661Numeric = _interopRequireDefault(require(\"./lib/isISO31661Numeric\"));\nvar _isISO5 = _interopRequireDefault(require(\"./lib/isISO4217\"));\nvar _isBase = _interopRequireDefault(require(\"./lib/isBase32\"));\nvar _isBase2 = _interopRequireDefault(require(\"./lib/isBase58\"));\nvar _isBase3 = _interopRequireDefault(require(\"./lib/isBase64\"));\nvar _isDataURI = _interopRequireDefault(require(\"./lib/isDataURI\"));\nvar _isMagnetURI = _interopRequireDefault(require(\"./lib/isMagnetURI\"));\nvar _isMailtoURI = _interopRequireDefault(require(\"./lib/isMailtoURI\"));\nvar _isMimeType = _interopRequireDefault(require(\"./lib/isMimeType\"));\nvar _isLatLong = _interopRequireDefault(require(\"./lib/isLatLong\"));\nvar _isPostalCode = _interopRequireWildcard(require(\"./lib/isPostalCode\"));\nvar _ltrim = _interopRequireDefault(require(\"./lib/ltrim\"));\nvar _rtrim = _interopRequireDefault(require(\"./lib/rtrim\"));\nvar _trim = _interopRequireDefault(require(\"./lib/trim\"));\nvar _escape = _interopRequireDefault(require(\"./lib/escape\"));\nvar _unescape = _interopRequireDefault(require(\"./lib/unescape\"));\nvar _stripLow = _interopRequireDefault(require(\"./lib/stripLow\"));\nvar _whitelist = _interopRequireDefault(require(\"./lib/whitelist\"));\nvar _blacklist = _interopRequireDefault(require(\"./lib/blacklist\"));\nvar _isWhitelisted = _interopRequireDefault(require(\"./lib/isWhitelisted\"));\nvar _normalizeEmail = _interopRequireDefault(require(\"./lib/normalizeEmail\"));\nvar _isSlug = _interopRequireDefault(require(\"./lib/isSlug\"));\nvar _isLicensePlate = _interopRequireDefault(require(\"./lib/isLicensePlate\"));\nvar _isStrongPassword = _interopRequireDefault(require(\"./lib/isStrongPassword\"));\nvar _isVAT = _interopRequireDefault(require(\"./lib/isVAT\"));\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) \"default\" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar version = '13.15.15';\nvar validator = {\n version: version,\n toDate: _toDate.default,\n toFloat: _toFloat.default,\n toInt: _toInt.default,\n toBoolean: _toBoolean.default,\n equals: _equals.default,\n contains: _contains.default,\n matches: _matches.default,\n isEmail: _isEmail.default,\n isURL: _isURL.default,\n isMACAddress: _isMACAddress.default,\n isIP: _isIP.default,\n isIPRange: _isIPRange.default,\n isFQDN: _isFQDN.default,\n isBoolean: _isBoolean.default,\n isIBAN: _isIBAN.default,\n isBIC: _isBIC.default,\n isAbaRouting: _isAbaRouting.default,\n isAlpha: _isAlpha.default,\n isAlphaLocales: _isAlpha.locales,\n isAlphanumeric: _isAlphanumeric.default,\n isAlphanumericLocales: _isAlphanumeric.locales,\n isNumeric: _isNumeric.default,\n isPassportNumber: _isPassportNumber.default,\n passportNumberLocales: _isPassportNumber.locales,\n isPort: _isPort.default,\n isLowercase: _isLowercase.default,\n isUppercase: _isUppercase.default,\n isAscii: _isAscii.default,\n isFullWidth: _isFullWidth.default,\n isHalfWidth: _isHalfWidth.default,\n isVariableWidth: _isVariableWidth.default,\n isMultibyte: _isMultibyte.default,\n isSemVer: _isSemVer.default,\n isSurrogatePair: _isSurrogatePair.default,\n isInt: _isInt.default,\n isIMEI: _isIMEI.default,\n isFloat: _isFloat.default,\n isFloatLocales: _isFloat.locales,\n isDecimal: _isDecimal.default,\n isHexadecimal: _isHexadecimal.default,\n isOctal: _isOctal.default,\n isDivisibleBy: _isDivisibleBy.default,\n isHexColor: _isHexColor.default,\n isRgbColor: _isRgbColor.default,\n isHSL: _isHSL.default,\n isISRC: _isISRC.default,\n isMD5: _isMD.default,\n isHash: _isHash.default,\n isJWT: _isJWT.default,\n isJSON: _isJSON.default,\n isEmpty: _isEmpty.default,\n isLength: _isLength.default,\n isLocale: _isLocale.default,\n isByteLength: _isByteLength.default,\n isULID: _isULID.default,\n isUUID: _isUUID.default,\n isMongoId: _isMongoId.default,\n isAfter: _isAfter.default,\n isBefore: _isBefore.default,\n isIn: _isIn.default,\n isLuhnNumber: _isLuhnNumber.default,\n isCreditCard: _isCreditCard.default,\n isIdentityCard: _isIdentityCard.default,\n isEAN: _isEAN.default,\n isISIN: _isISIN.default,\n isISBN: _isISBN.default,\n isISSN: _isISSN.default,\n isMobilePhone: _isMobilePhone.default,\n isMobilePhoneLocales: _isMobilePhone.locales,\n isPostalCode: _isPostalCode.default,\n isPostalCodeLocales: _isPostalCode.locales,\n isEthereumAddress: _isEthereumAddress.default,\n isCurrency: _isCurrency.default,\n isBtcAddress: _isBtcAddress.default,\n isISO6346: _isISO.isISO6346,\n isFreightContainerID: _isISO.isFreightContainerID,\n isISO6391: _isISO2.default,\n isISO8601: _isISO3.default,\n isISO15924: _isISO4.default,\n isRFC3339: _isRFC.default,\n isISO31661Alpha2: _isISO31661Alpha.default,\n isISO31661Alpha3: _isISO31661Alpha2.default,\n isISO31661Numeric: _isISO31661Numeric.default,\n isISO4217: _isISO5.default,\n isBase32: _isBase.default,\n isBase58: _isBase2.default,\n isBase64: _isBase3.default,\n isDataURI: _isDataURI.default,\n isMagnetURI: _isMagnetURI.default,\n isMailtoURI: _isMailtoURI.default,\n isMimeType: _isMimeType.default,\n isLatLong: _isLatLong.default,\n ltrim: _ltrim.default,\n rtrim: _rtrim.default,\n trim: _trim.default,\n escape: _escape.default,\n unescape: _unescape.default,\n stripLow: _stripLow.default,\n whitelist: _whitelist.default,\n blacklist: _blacklist.default,\n isWhitelisted: _isWhitelisted.default,\n normalizeEmail: _normalizeEmail.default,\n toString: toString,\n isSlug: _isSlug.default,\n isStrongPassword: _isStrongPassword.default,\n isTaxID: _isTaxID.default,\n isDate: _isDate.default,\n isTime: _isTime.default,\n isLicensePlate: _isLicensePlate.default,\n isVAT: _isVAT.default,\n ibanLocales: _isIBAN.locales\n};\nvar _default = exports.default = validator;\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.farsiLocales = exports.englishLocales = exports.dotDecimal = exports.decimal = exports.commaDecimal = exports.bengaliLocales = exports.arabicLocales = exports.alphanumeric = exports.alpha = void 0;\nvar alpha = exports.alpha = {\n 'en-US': /^[A-Z]+$/i,\n 'az-AZ': /^[A-VXYZÇƏĞİıÖŞÜ]+$/i,\n 'bg-BG': /^[А-Я]+$/i,\n 'cs-CZ': /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,\n 'da-DK': /^[A-ZÆØÅ]+$/i,\n 'de-DE': /^[A-ZÄÖÜß]+$/i,\n 'el-GR': /^[Α-ώ]+$/i,\n 'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i,\n 'fa-IR': /^[ابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$/i,\n 'fi-FI': /^[A-ZÅÄÖ]+$/i,\n 'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,\n 'it-IT': /^[A-ZÀÉÈÌÎÓÒÙ]+$/i,\n 'ja-JP': /^[ぁ-んァ-ヶヲ-゚一-龠ー・。、]+$/i,\n 'nb-NO': /^[A-ZÆØÅ]+$/i,\n 'nl-NL': /^[A-ZÁÉËÏÓÖÜÚ]+$/i,\n 'nn-NO': /^[A-ZÆØÅ]+$/i,\n 'hu-HU': /^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i,\n 'pl-PL': /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i,\n 'pt-PT': /^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,\n 'ru-RU': /^[А-ЯЁ]+$/i,\n 'kk-KZ': /^[А-ЯЁ\\u04D8\\u04B0\\u0406\\u04A2\\u0492\\u04AE\\u049A\\u04E8\\u04BA]+$/i,\n 'sl-SI': /^[A-ZČĆĐŠŽ]+$/i,\n 'sk-SK': /^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,\n 'sr-RS@latin': /^[A-ZČĆŽŠĐ]+$/i,\n 'sr-RS': /^[А-ЯЂЈЉЊЋЏ]+$/i,\n 'sv-SE': /^[A-ZÅÄÖ]+$/i,\n 'th-TH': /^[ก-๐\\s]+$/i,\n 'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i,\n 'uk-UA': /^[А-ЩЬЮЯЄIЇҐі]+$/i,\n 'vi-VN': /^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,\n 'ko-KR': /^[ㄱ-ㅎㅏ-ㅣ가-힣]*$/,\n 'ku-IQ': /^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,\n he: /^[א-ת]+$/,\n fa: /^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i,\n bn: /^['ঀঁংঃঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ়ঽািীুূৃৄেৈোৌ্ৎৗড়ঢ়য়ৠৡৢৣৰৱ৲৳৴৵৶৷৸৹৺৻']+$/,\n eo: /^[ABCĈD-GĜHĤIJĴK-PRSŜTUŬVZ]+$/i,\n 'hi-IN': /^[\\u0900-\\u0961]+[\\u0972-\\u097F]*$/i,\n 'si-LK': /^[\\u0D80-\\u0DFF]+$/\n};\nvar alphanumeric = exports.alphanumeric = {\n 'en-US': /^[0-9A-Z]+$/i,\n 'az-AZ': /^[0-9A-VXYZÇƏĞİıÖŞÜ]+$/i,\n 'bg-BG': /^[0-9А-Я]+$/i,\n 'cs-CZ': /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,\n 'da-DK': /^[0-9A-ZÆØÅ]+$/i,\n 'de-DE': /^[0-9A-ZÄÖÜß]+$/i,\n 'el-GR': /^[0-9Α-ω]+$/i,\n 'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i,\n 'fi-FI': /^[0-9A-ZÅÄÖ]+$/i,\n 'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,\n 'it-IT': /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i,\n 'ja-JP': /^[0-90-9ぁ-んァ-ヶヲ-゚一-龠ー・。、]+$/i,\n 'hu-HU': /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i,\n 'nb-NO': /^[0-9A-ZÆØÅ]+$/i,\n 'nl-NL': /^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i,\n 'nn-NO': /^[0-9A-ZÆØÅ]+$/i,\n 'pl-PL': /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i,\n 'pt-PT': /^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,\n 'ru-RU': /^[0-9А-ЯЁ]+$/i,\n 'kk-KZ': /^[0-9А-ЯЁ\\u04D8\\u04B0\\u0406\\u04A2\\u0492\\u04AE\\u049A\\u04E8\\u04BA]+$/i,\n 'sl-SI': /^[0-9A-ZČĆĐŠŽ]+$/i,\n 'sk-SK': /^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,\n 'sr-RS@latin': /^[0-9A-ZČĆŽŠĐ]+$/i,\n 'sr-RS': /^[0-9А-ЯЂЈЉЊЋЏ]+$/i,\n 'sv-SE': /^[0-9A-ZÅÄÖ]+$/i,\n 'th-TH': /^[ก-๙\\s]+$/i,\n 'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i,\n 'uk-UA': /^[0-9А-ЩЬЮЯЄIЇҐі]+$/i,\n 'ko-KR': /^[0-9ㄱ-ㅎㅏ-ㅣ가-힣]*$/,\n 'ku-IQ': /^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,\n 'vi-VN': /^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,\n he: /^[0-9א-ת]+$/,\n fa: /^['0-9آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i,\n bn: /^['ঀঁংঃঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ়ঽািীুূৃৄেৈোৌ্ৎৗড়ঢ়য়ৠৡৢৣ০১২৩৪৫৬৭৮৯ৰৱ৲৳৴৵৶৷৸৹৺৻']+$/,\n eo: /^[0-9ABCĈD-GĜHĤIJĴK-PRSŜTUŬVZ]+$/i,\n 'hi-IN': /^[\\u0900-\\u0963]+[\\u0966-\\u097F]*$/i,\n 'si-LK': /^[0-9\\u0D80-\\u0DFF]+$/\n};\nvar decimal = exports.decimal = {\n 'en-US': '.',\n ar: '٫'\n};\nvar englishLocales = exports.englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM'];\nfor (var locale, i = 0; i < englishLocales.length; i++) {\n locale = \"en-\".concat(englishLocales[i]);\n alpha[locale] = alpha['en-US'];\n alphanumeric[locale] = alphanumeric['en-US'];\n decimal[locale] = decimal['en-US'];\n}\n\n// Source: http://www.localeplanet.com/java/\nvar arabicLocales = exports.arabicLocales = ['AE', 'BH', 'DZ', 'EG', 'IQ', 'JO', 'KW', 'LB', 'LY', 'MA', 'QM', 'QA', 'SA', 'SD', 'SY', 'TN', 'YE'];\nfor (var _locale, _i = 0; _i < arabicLocales.length; _i++) {\n _locale = \"ar-\".concat(arabicLocales[_i]);\n alpha[_locale] = alpha.ar;\n alphanumeric[_locale] = alphanumeric.ar;\n decimal[_locale] = decimal.ar;\n}\nvar farsiLocales = exports.farsiLocales = ['IR', 'AF'];\nfor (var _locale2, _i2 = 0; _i2 < farsiLocales.length; _i2++) {\n _locale2 = \"fa-\".concat(farsiLocales[_i2]);\n alphanumeric[_locale2] = alphanumeric.fa;\n decimal[_locale2] = decimal.ar;\n}\nvar bengaliLocales = exports.bengaliLocales = ['BD', 'IN'];\nfor (var _locale3, _i3 = 0; _i3 < bengaliLocales.length; _i3++) {\n _locale3 = \"bn-\".concat(bengaliLocales[_i3]);\n alpha[_locale3] = alpha.bn;\n alphanumeric[_locale3] = alphanumeric.bn;\n decimal[_locale3] = decimal['en-US'];\n}\n\n// Source: https://en.wikipedia.org/wiki/Decimal_mark\nvar dotDecimal = exports.dotDecimal = ['ar-EG', 'ar-LB', 'ar-LY'];\nvar commaDecimal = exports.commaDecimal = ['bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-ZM', 'eo', 'es-ES', 'fr-CA', 'fr-FR', 'id-ID', 'it-IT', 'ku-IQ', 'hi-IN', 'hu-HU', 'nb-NO', 'nn-NO', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'kk-KZ', 'si-LK', 'sl-SI', 'sr-RS@latin', 'sr-RS', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN'];\nfor (var _i4 = 0; _i4 < dotDecimal.length; _i4++) {\n decimal[dotDecimal[_i4]] = decimal['en-US'];\n}\nfor (var _i5 = 0; _i5 < commaDecimal.length; _i5++) {\n decimal[commaDecimal[_i5]] = ',';\n}\nalpha['fr-CA'] = alpha['fr-FR'];\nalphanumeric['fr-CA'] = alphanumeric['fr-FR'];\nalpha['pt-BR'] = alpha['pt-PT'];\nalphanumeric['pt-BR'] = alphanumeric['pt-PT'];\ndecimal['pt-BR'] = decimal['pt-PT'];\n\n// see #862\nalpha['pl-Pl'] = alpha['pl-PL'];\nalphanumeric['pl-Pl'] = alphanumeric['pl-PL'];\ndecimal['pl-Pl'] = decimal['pl-PL'];\n\n// see #1455\nalpha['fa-AF'] = alpha.fa;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = blacklist;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction blacklist(str, chars) {\n (0, _assertString.default)(str);\n return str.replace(new RegExp(\"[\".concat(chars, \"]+\"), 'g'), '');\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = contains;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _toString = _interopRequireDefault(require(\"./util/toString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar defaultContainsOptions = {\n ignoreCase: false,\n minOccurrences: 1\n};\nfunction contains(str, elem, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, defaultContainsOptions);\n if (options.ignoreCase) {\n return str.toLowerCase().split((0, _toString.default)(elem).toLowerCase()).length > options.minOccurrences;\n }\n return str.split((0, _toString.default)(elem)).length > options.minOccurrences;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = equals;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction equals(str, comparison) {\n (0, _assertString.default)(str);\n return str === comparison;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = escape;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction escape(str) {\n (0, _assertString.default)(str);\n return str.replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>').replace(/\\//g, '/').replace(/\\\\/g, '\').replace(/`/g, '`');\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAbaRouting;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n// http://www.brainjar.com/js/validation/\n// https://www.aba.com/news-research/research-analysis/routing-number-policy-procedures\n// series reserved for future use are excluded\nvar isRoutingReg = /^(?!(1[3-9])|(20)|(3[3-9])|(4[0-9])|(5[0-9])|(60)|(7[3-9])|(8[1-9])|(9[0-2])|(9[3-9]))[0-9]{9}$/;\nfunction isAbaRouting(str) {\n (0, _assertString.default)(str);\n if (!isRoutingReg.test(str)) return false;\n var checkSumVal = 0;\n for (var i = 0; i < str.length; i++) {\n if (i % 3 === 0) checkSumVal += str[i] * 3;else if (i % 3 === 1) checkSumVal += str[i] * 7;else checkSumVal += str[i] * 1;\n }\n return checkSumVal % 10 === 0;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAfter;\nvar _toDate = _interopRequireDefault(require(\"./toDate\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction isAfter(date, options) {\n // For backwards compatibility:\n // isAfter(str [, date]), i.e. `options` could be used as argument for the legacy `date`\n var comparisonDate = (_typeof(options) === 'object' ? options.comparisonDate : options) || Date().toString();\n var comparison = (0, _toDate.default)(comparisonDate);\n var original = (0, _toDate.default)(date);\n return !!(original && comparison && original > comparison);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAlpha;\nexports.locales = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _alpha = require(\"./alpha\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction isAlpha(_str) {\n var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n (0, _assertString.default)(_str);\n var str = _str;\n var ignore = options.ignore;\n if (ignore) {\n if (ignore instanceof RegExp) {\n str = str.replace(ignore, '');\n } else if (typeof ignore === 'string') {\n str = str.replace(new RegExp(\"[\".concat(ignore.replace(/[-[\\]{}()*+?.,\\\\^$|#\\\\s]/g, '\\\\$&'), \"]\"), 'g'), ''); // escape regex for ignore\n } else {\n throw new Error('ignore should be instance of a String or RegExp');\n }\n }\n if (locale in _alpha.alpha) {\n return _alpha.alpha[locale].test(str);\n }\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\nvar locales = exports.locales = Object.keys(_alpha.alpha);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAlphanumeric;\nexports.locales = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _alpha = require(\"./alpha\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction isAlphanumeric(_str) {\n var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n (0, _assertString.default)(_str);\n var str = _str;\n var ignore = options.ignore;\n if (ignore) {\n if (ignore instanceof RegExp) {\n str = str.replace(ignore, '');\n } else if (typeof ignore === 'string') {\n str = str.replace(new RegExp(\"[\".concat(ignore.replace(/[-[\\]{}()*+?.,\\\\^$|#\\\\s]/g, '\\\\$&'), \"]\"), 'g'), ''); // escape regex for ignore\n } else {\n throw new Error('ignore should be instance of a String or RegExp');\n }\n }\n if (locale in _alpha.alphanumeric) {\n return _alpha.alphanumeric[locale].test(str);\n }\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\nvar locales = exports.locales = Object.keys(_alpha.alphanumeric);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAscii;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n/* eslint-disable no-control-regex */\nvar ascii = /^[\\x00-\\x7F]+$/;\n/* eslint-enable no-control-regex */\n\nfunction isAscii(str) {\n (0, _assertString.default)(str);\n return ascii.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBIC;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isISO31661Alpha = require(\"./isISO31661Alpha2\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n// https://en.wikipedia.org/wiki/ISO_9362\nvar isBICReg = /^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/;\nfunction isBIC(str) {\n (0, _assertString.default)(str);\n\n // toUpperCase() should be removed when a new major version goes out that changes\n // the regex to [A-Z] (per the spec).\n var countryCode = str.slice(4, 6).toUpperCase();\n if (!_isISO31661Alpha.CountryCodes.has(countryCode) && countryCode !== 'XK') {\n return false;\n }\n return isBICReg.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBase32;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar base32 = /^[A-Z2-7]+=*$/;\nvar crockfordBase32 = /^[A-HJKMNP-TV-Z0-9]+$/;\nvar defaultBase32Options = {\n crockford: false\n};\nfunction isBase32(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, defaultBase32Options);\n if (options.crockford) {\n return crockfordBase32.test(str);\n }\n var len = str.length;\n if (len % 8 === 0 && base32.test(str)) {\n return true;\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBase58;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n// Accepted chars - 123456789ABCDEFGH JKLMN PQRSTUVWXYZabcdefghijk mnopqrstuvwxyz\nvar base58Reg = /^[A-HJ-NP-Za-km-z1-9]*$/;\nfunction isBase58(str) {\n (0, _assertString.default)(str);\n if (base58Reg.test(str)) {\n return true;\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBase64;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar base64WithPadding = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$/;\nvar base64WithoutPadding = /^[A-Za-z0-9+/]+$/;\nvar base64UrlWithPadding = /^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2}==|[A-Za-z0-9_-]{3}=|[A-Za-z0-9_-]{4})$/;\nvar base64UrlWithoutPadding = /^[A-Za-z0-9_-]+$/;\nfunction isBase64(str, options) {\n var _options;\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, {\n urlSafe: false,\n padding: !((_options = options) !== null && _options !== void 0 && _options.urlSafe)\n });\n if (str === '') return true;\n var regex;\n if (options.urlSafe) {\n regex = options.padding ? base64UrlWithPadding : base64UrlWithoutPadding;\n } else {\n regex = options.padding ? base64WithPadding : base64WithoutPadding;\n }\n return (!options.padding || str.length % 4 === 0) && regex.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBefore;\nvar _toDate = _interopRequireDefault(require(\"./toDate\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction isBefore(date, options) {\n // For backwards compatibility:\n // isBefore(str [, date]), i.e. `options` could be used as argument for the legacy `date`\n var comparisonDate = (_typeof(options) === 'object' ? options.comparisonDate : options) || Date().toString();\n var comparison = (0, _toDate.default)(comparisonDate);\n var original = (0, _toDate.default)(date);\n return !!(original && comparison && original < comparison);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBoolean;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _includesArray = _interopRequireDefault(require(\"./util/includesArray\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar defaultOptions = {\n loose: false\n};\nvar strictBooleans = ['true', 'false', '1', '0'];\nvar looseBooleans = [].concat(strictBooleans, ['yes', 'no']);\nfunction isBoolean(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions;\n (0, _assertString.default)(str);\n if (options.loose) {\n return (0, _includesArray.default)(looseBooleans, str.toLowerCase());\n }\n return (0, _includesArray.default)(strictBooleans, str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBtcAddress;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar bech32 = /^(bc1|tb1|bc1p|tb1p)[ac-hj-np-z02-9]{39,58}$/;\nvar base58 = /^(1|2|3|m)[A-HJ-NP-Za-km-z1-9]{25,39}$/;\nfunction isBtcAddress(str) {\n (0, _assertString.default)(str);\n return bech32.test(str) || base58.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isByteLength;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/* eslint-disable prefer-rest-params */\nfunction isByteLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isByteLength(str, min [, max])\n min = arguments[1];\n max = arguments[2];\n }\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isCreditCard;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isLuhnNumber = _interopRequireDefault(require(\"./isLuhnNumber\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar cards = {\n amex: /^3[47][0-9]{13}$/,\n dinersclub: /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/,\n discover: /^6(?:011|5[0-9][0-9])[0-9]{12,15}$/,\n jcb: /^(?:2131|1800|35\\d{3})\\d{11}$/,\n mastercard: /^5[1-5][0-9]{2}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/,\n // /^[25][1-7][0-9]{14}$/;\n unionpay: /^(6[27][0-9]{14}|^(81[0-9]{14,17}))$/,\n visa: /^(?:4[0-9]{12})(?:[0-9]{3,6})?$/\n};\nvar allCards = function () {\n var tmpCardsArray = [];\n for (var cardProvider in cards) {\n // istanbul ignore else\n if (cards.hasOwnProperty(cardProvider)) {\n tmpCardsArray.push(cards[cardProvider]);\n }\n }\n return tmpCardsArray;\n}();\nfunction isCreditCard(card) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _assertString.default)(card);\n var provider = options.provider;\n var sanitized = card.replace(/[- ]+/g, '');\n if (provider && provider.toLowerCase() in cards) {\n // specific provider in the list\n if (!cards[provider.toLowerCase()].test(sanitized)) {\n return false;\n }\n } else if (provider && !(provider.toLowerCase() in cards)) {\n /* specific provider not in the list */\n throw new Error(\"\".concat(provider, \" is not a valid credit card provider.\"));\n } else if (!allCards.some(function (cardProvider) {\n return cardProvider.test(sanitized);\n })) {\n // no specific provider\n return false;\n }\n return (0, _isLuhnNumber.default)(card);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isCurrency;\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction currencyRegex(options) {\n var decimal_digits = \"\\\\d{\".concat(options.digits_after_decimal[0], \"}\");\n options.digits_after_decimal.forEach(function (digit, index) {\n if (index !== 0) decimal_digits = \"\".concat(decimal_digits, \"|\\\\d{\").concat(digit, \"}\");\n });\n var symbol = \"(\".concat(options.symbol.replace(/\\W/, function (m) {\n return \"\\\\\".concat(m);\n }), \")\").concat(options.require_symbol ? '' : '?'),\n negative = '-?',\n whole_dollar_amount_without_sep = '[1-9]\\\\d*',\n whole_dollar_amount_with_sep = \"[1-9]\\\\d{0,2}(\\\\\".concat(options.thousands_separator, \"\\\\d{3})*\"),\n valid_whole_dollar_amounts = ['0', whole_dollar_amount_without_sep, whole_dollar_amount_with_sep],\n whole_dollar_amount = \"(\".concat(valid_whole_dollar_amounts.join('|'), \")?\"),\n decimal_amount = \"(\\\\\".concat(options.decimal_separator, \"(\").concat(decimal_digits, \"))\").concat(options.require_decimal ? '' : '?');\n var pattern = whole_dollar_amount + (options.allow_decimal || options.require_decimal ? decimal_amount : '');\n\n // default is negative sign before symbol, but there are two other options (besides parens)\n if (options.allow_negatives && !options.parens_for_negatives) {\n if (options.negative_sign_after_digits) {\n pattern += negative;\n } else if (options.negative_sign_before_digits) {\n pattern = negative + pattern;\n }\n }\n\n // South African Rand, for example, uses R 123 (space) and R-123 (no space)\n if (options.allow_negative_sign_placeholder) {\n pattern = \"( (?!\\\\-))?\".concat(pattern);\n } else if (options.allow_space_after_symbol) {\n pattern = \" ?\".concat(pattern);\n } else if (options.allow_space_after_digits) {\n pattern += '( (?!$))?';\n }\n if (options.symbol_after_digits) {\n pattern += symbol;\n } else {\n pattern = symbol + pattern;\n }\n if (options.allow_negatives) {\n if (options.parens_for_negatives) {\n pattern = \"(\\\\(\".concat(pattern, \"\\\\)|\").concat(pattern, \")\");\n } else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) {\n pattern = negative + pattern;\n }\n }\n\n // ensure there's a dollar and/or decimal amount, and that\n // it doesn't start with a space or a negative sign followed by a space\n return new RegExp(\"^(?!-? )(?=.*\\\\d)\".concat(pattern, \"$\"));\n}\nvar default_currency_options = {\n symbol: '$',\n require_symbol: false,\n allow_space_after_symbol: false,\n symbol_after_digits: false,\n allow_negatives: true,\n parens_for_negatives: false,\n negative_sign_before_digits: false,\n negative_sign_after_digits: false,\n allow_negative_sign_placeholder: false,\n thousands_separator: ',',\n decimal_separator: '.',\n allow_decimal: true,\n require_decimal: false,\n digits_after_decimal: [2],\n allow_space_after_digits: false\n};\nfunction isCurrency(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_currency_options);\n return currencyRegex(options).test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDataURI;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar validMediaType = /^[a-z]+\\/[a-z0-9\\-\\+\\._]+$/i;\nvar validAttribute = /^[a-z\\-]+=[a-z0-9\\-]+$/i;\nvar validData = /^[a-z0-9!\\$&'\\(\\)\\*\\+,;=\\-\\._~:@\\/\\?%\\s]*$/i;\nfunction isDataURI(str) {\n (0, _assertString.default)(str);\n var data = str.split(',');\n if (data.length < 2) {\n return false;\n }\n var attributes = data.shift().trim().split(';');\n var schemeAndMediaType = attributes.shift();\n if (schemeAndMediaType.slice(0, 5) !== 'data:') {\n return false;\n }\n var mediaType = schemeAndMediaType.slice(5);\n if (mediaType !== '' && !validMediaType.test(mediaType)) {\n return false;\n }\n for (var i = 0; i < attributes.length; i++) {\n if (!(i === attributes.length - 1 && attributes[i].toLowerCase() === 'base64') && !validAttribute.test(attributes[i])) {\n return false;\n }\n }\n for (var _i = 0; _i < data.length; _i++) {\n if (!validData.test(data[_i])) {\n return false;\n }\n }\n return true;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDate;\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar default_date_options = {\n format: 'YYYY/MM/DD',\n delimiters: ['/', '-'],\n strictMode: false\n};\nfunction isValidFormat(format) {\n return /(^(y{4}|y{2})[.\\/-](m{1,2})[.\\/-](d{1,2})$)|(^(m{1,2})[.\\/-](d{1,2})[.\\/-]((y{4}|y{2})$))|(^(d{1,2})[.\\/-](m{1,2})[.\\/-]((y{4}|y{2})$))/gi.test(format);\n}\nfunction zip(date, format) {\n var zippedArr = [],\n len = Math.max(date.length, format.length);\n for (var i = 0; i < len; i++) {\n zippedArr.push([date[i], format[i]]);\n }\n return zippedArr;\n}\nfunction isDate(input, options) {\n if (typeof options === 'string') {\n // Allow backward compatibility for old format isDate(input [, format])\n options = (0, _merge.default)({\n format: options\n }, default_date_options);\n } else {\n options = (0, _merge.default)(options, default_date_options);\n }\n if (typeof input === 'string' && isValidFormat(options.format)) {\n if (options.strictMode && input.length !== options.format.length) return false;\n var formatDelimiter = options.delimiters.find(function (delimiter) {\n return options.format.indexOf(delimiter) !== -1;\n });\n var dateDelimiter = options.strictMode ? formatDelimiter : options.delimiters.find(function (delimiter) {\n return input.indexOf(delimiter) !== -1;\n });\n var dateAndFormat = zip(input.split(dateDelimiter), options.format.toLowerCase().split(formatDelimiter));\n var dateObj = {};\n var _iterator = _createForOfIteratorHelper(dateAndFormat),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n dateWord = _step$value[0],\n formatWord = _step$value[1];\n if (!dateWord || !formatWord || dateWord.length !== formatWord.length) {\n return false;\n }\n dateObj[formatWord.charAt(0)] = dateWord;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var fullYear = dateObj.y;\n\n // Check if the year starts with a hyphen\n if (fullYear.startsWith('-')) {\n return false; // Hyphen before year is not allowed\n }\n if (dateObj.y.length === 2) {\n var parsedYear = parseInt(dateObj.y, 10);\n if (isNaN(parsedYear)) {\n return false;\n }\n var currentYearLastTwoDigits = new Date().getFullYear() % 100;\n if (parsedYear < currentYearLastTwoDigits) {\n fullYear = \"20\".concat(dateObj.y);\n } else {\n fullYear = \"19\".concat(dateObj.y);\n }\n }\n var month = dateObj.m;\n if (dateObj.m.length === 1) {\n month = \"0\".concat(dateObj.m);\n }\n var day = dateObj.d;\n if (dateObj.d.length === 1) {\n day = \"0\".concat(dateObj.d);\n }\n return new Date(\"\".concat(fullYear, \"-\").concat(month, \"-\").concat(day, \"T00:00:00.000Z\")).getUTCDate() === +dateObj.d;\n }\n if (!options.strictMode) {\n return Object.prototype.toString.call(input) === '[object Date]' && isFinite(input);\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDecimal;\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _includesArray = _interopRequireDefault(require(\"./util/includesArray\"));\nvar _alpha = require(\"./alpha\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction decimalRegExp(options) {\n var regExp = new RegExp(\"^[-+]?([0-9]+)?(\\\\\".concat(_alpha.decimal[options.locale], \"[0-9]{\").concat(options.decimal_digits, \"})\").concat(options.force_decimal ? '' : '?', \"$\"));\n return regExp;\n}\nvar default_decimal_options = {\n force_decimal: false,\n decimal_digits: '1,',\n locale: 'en-US'\n};\nvar blacklist = ['', '-', '+'];\nfunction isDecimal(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_decimal_options);\n if (options.locale in _alpha.decimal) {\n return !(0, _includesArray.default)(blacklist, str.replace(/ /g, '')) && decimalRegExp(options).test(str);\n }\n throw new Error(\"Invalid locale '\".concat(options.locale, \"'\"));\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDivisibleBy;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _toFloat = _interopRequireDefault(require(\"./toFloat\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction isDivisibleBy(str, num) {\n (0, _assertString.default)(str);\n return (0, _toFloat.default)(str) % parseInt(num, 10) === 0;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEAN;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n/**\n * The most commonly used EAN standard is\n * the thirteen-digit EAN-13, while the\n * less commonly used 8-digit EAN-8 barcode was\n * introduced for use on small packages.\n * Also EAN/UCC-14 is used for Grouping of individual\n * trade items above unit level(Intermediate, Carton or Pallet).\n * For more info about EAN-14 checkout: https://www.gtin.info/itf-14-barcodes/\n * EAN consists of:\n * GS1 prefix, manufacturer code, product code and check digit\n * Reference: https://en.wikipedia.org/wiki/International_Article_Number\n * Reference: https://www.gtin.info/\n */\n\n/**\n * Define EAN Lengths; 8 for EAN-8; 13 for EAN-13; 14 for EAN-14\n * and Regular Expression for valid EANs (EAN-8, EAN-13, EAN-14),\n * with exact numeric matching of 8 or 13 or 14 digits [0-9]\n */\nvar LENGTH_EAN_8 = 8;\nvar LENGTH_EAN_14 = 14;\nvar validEanRegex = /^(\\d{8}|\\d{13}|\\d{14})$/;\n\n/**\n * Get position weight given:\n * EAN length and digit index/position\n *\n * @param {number} length\n * @param {number} index\n * @return {number}\n */\nfunction getPositionWeightThroughLengthAndIndex(length, index) {\n if (length === LENGTH_EAN_8 || length === LENGTH_EAN_14) {\n return index % 2 === 0 ? 3 : 1;\n }\n return index % 2 === 0 ? 1 : 3;\n}\n\n/**\n * Calculate EAN Check Digit\n * Reference: https://en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit\n *\n * @param {string} ean\n * @return {number}\n */\nfunction calculateCheckDigit(ean) {\n var checksum = ean.slice(0, -1).split('').map(function (char, index) {\n return Number(char) * getPositionWeightThroughLengthAndIndex(ean.length, index);\n }).reduce(function (acc, partialSum) {\n return acc + partialSum;\n }, 0);\n var remainder = 10 - checksum % 10;\n return remainder < 10 ? remainder : 0;\n}\n\n/**\n * Check if string is valid EAN:\n * Matches EAN-8/EAN-13/EAN-14 regex\n * Has valid check digit.\n *\n * @param {string} str\n * @return {boolean}\n */\nfunction isEAN(str) {\n (0, _assertString.default)(str);\n var actualCheckDigit = Number(str.slice(-1));\n return validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEmail;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _checkHost = _interopRequireDefault(require(\"./util/checkHost\"));\nvar _isByteLength = _interopRequireDefault(require(\"./isByteLength\"));\nvar _isFQDN = _interopRequireDefault(require(\"./isFQDN\"));\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar default_email_options = {\n allow_display_name: false,\n allow_underscores: false,\n require_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true,\n blacklisted_chars: '',\n ignore_max_length: false,\n host_blacklist: [],\n host_whitelist: []\n};\n\n/* eslint-disable max-len */\n/* eslint-disable no-control-regex */\nvar splitNameAddress = /^([^\\x00-\\x1F\\x7F-\\x9F\\cX]+)</i;\nvar emailUserPart = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]+$/i;\nvar gmailUserPart = /^[a-z\\d]+$/;\nvar quotedEmailUser = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]))*$/i;\nvar emailUserUtf8Part = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\u00A1-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+$/i;\nvar quotedEmailUserUtf8 = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))*$/i;\nvar defaultMaxEmailLength = 254;\n/* eslint-enable max-len */\n/* eslint-enable no-control-regex */\n\n/**\n * Validate display name according to the RFC2822: https://tools.ietf.org/html/rfc2822#appendix-A.1.2\n * @param {String} display_name\n */\nfunction validateDisplayName(display_name) {\n var display_name_without_quotes = display_name.replace(/^\"(.+)\"$/, '$1');\n // display name with only spaces is not valid\n if (!display_name_without_quotes.trim()) {\n return false;\n }\n\n // check whether display name contains illegal character\n var contains_illegal = /[\\.\";<>]/.test(display_name_without_quotes);\n if (contains_illegal) {\n // if contains illegal characters,\n // must to be enclosed in double-quotes, otherwise it's not a valid display name\n if (display_name_without_quotes === display_name) {\n return false;\n }\n\n // the quotes in display name must start with character symbol \\\n var all_start_with_back_slash = display_name_without_quotes.split('\"').length === display_name_without_quotes.split('\\\\\"').length;\n if (!all_start_with_back_slash) {\n return false;\n }\n }\n return true;\n}\nfunction isEmail(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_email_options);\n if (options.require_display_name || options.allow_display_name) {\n var display_email = str.match(splitNameAddress);\n if (display_email) {\n var display_name = display_email[1];\n\n // Remove display name and angle brackets to get email address\n // Can be done in the regex but will introduce a ReDOS (See #1597 for more info)\n str = str.replace(display_name, '').replace(/(^<|>$)/g, '');\n\n // sometimes need to trim the last space to get the display name\n // because there may be a space between display name and email address\n // eg. myname <address@gmail.com>\n // the display name is `myname` instead of `myname `, so need to trim the last space\n if (display_name.endsWith(' ')) {\n display_name = display_name.slice(0, -1);\n }\n if (!validateDisplayName(display_name)) {\n return false;\n }\n } else if (options.require_display_name) {\n return false;\n }\n }\n if (!options.ignore_max_length && str.length > defaultMaxEmailLength) {\n return false;\n }\n var parts = str.split('@');\n var domain = parts.pop();\n var lower_domain = domain.toLowerCase();\n if (options.host_blacklist.length > 0 && (0, _checkHost.default)(lower_domain, options.host_blacklist)) {\n return false;\n }\n if (options.host_whitelist.length > 0 && !(0, _checkHost.default)(lower_domain, options.host_whitelist)) {\n return false;\n }\n var user = parts.join('@');\n if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {\n /*\n Previously we removed dots for gmail addresses before validating.\n This was removed because it allows `multiple..dots@gmail.com`\n to be reported as valid, but it is not.\n Gmail only normalizes single dots, removing them from here is pointless,\n should be done in normalizeEmail\n */\n user = user.toLowerCase();\n\n // Removing sub-address from username before gmail validation\n var username = user.split('+')[0];\n\n // Dots are not included in gmail length restriction\n if (!(0, _isByteLength.default)(username.replace(/\\./g, ''), {\n min: 6,\n max: 30\n })) {\n return false;\n }\n var _user_parts = username.split('.');\n for (var i = 0; i < _user_parts.length; i++) {\n if (!gmailUserPart.test(_user_parts[i])) {\n return false;\n }\n }\n }\n if (options.ignore_max_length === false && (!(0, _isByteLength.default)(user, {\n max: 64\n }) || !(0, _isByteLength.default)(domain, {\n max: 254\n }))) {\n return false;\n }\n if (!(0, _isFQDN.default)(domain, {\n require_tld: options.require_tld,\n ignore_max_length: options.ignore_max_length,\n allow_underscores: options.allow_underscores\n })) {\n if (!options.allow_ip_domain) {\n return false;\n }\n if (!(0, _isIP.default)(domain)) {\n if (!domain.startsWith('[') || !domain.endsWith(']')) {\n return false;\n }\n var noBracketdomain = domain.slice(1, -1);\n if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) {\n return false;\n }\n }\n }\n if (options.blacklisted_chars) {\n if (user.search(new RegExp(\"[\".concat(options.blacklisted_chars, \"]+\"), 'g')) !== -1) return false;\n }\n if (user[0] === '\"' && user[user.length - 1] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n }\n var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n var user_parts = user.split('.');\n for (var _i = 0; _i < user_parts.length; _i++) {\n if (!pattern.test(user_parts[_i])) {\n return false;\n }\n }\n return true;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEmpty;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar default_is_empty_options = {\n ignore_whitespace: false\n};\nfunction isEmpty(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_is_empty_options);\n return (options.ignore_whitespace ? str.trim().length : str.length) === 0;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEthereumAddress;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar eth = /^(0x)[0-9a-f]{40}$/i;\nfunction isEthereumAddress(str) {\n (0, _assertString.default)(str);\n return eth.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFQDN;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_numeric_tld: false,\n allow_wildcard: false,\n ignore_max_length: false\n};\nfunction isFQDN(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_fqdn_options);\n\n /* Remove the optional trailing dot before checking validity */\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n\n /* Remove the optional wildcard before checking validity */\n if (options.allow_wildcard === true && str.indexOf('*.') === 0) {\n str = str.substring(2);\n }\n var parts = str.split('.');\n var tld = parts[parts.length - 1];\n if (options.require_tld) {\n // disallow fqdns without tld\n if (parts.length < 2) {\n return false;\n }\n if (!options.allow_numeric_tld && !/^([a-z\\u00A1-\\u00A8\\u00AA-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n }\n\n // disallow spaces\n if (/\\s/.test(tld)) {\n return false;\n }\n }\n\n // reject numeric TLDs\n if (!options.allow_numeric_tld && /^\\d+$/.test(tld)) {\n return false;\n }\n return parts.every(function (part) {\n if (part.length > 63 && !options.ignore_max_length) {\n return false;\n }\n if (!/^[a-z_\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n }\n\n // disallow full-width chars\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n }\n\n // disallow parts starting or ending with hyphen\n if (/^-|-$/.test(part)) {\n return false;\n }\n if (!options.allow_underscores && /_/.test(part)) {\n return false;\n }\n return true;\n });\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFloat;\nexports.locales = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _nullUndefinedCheck = _interopRequireDefault(require(\"./util/nullUndefinedCheck\"));\nvar _alpha = require(\"./alpha\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction isFloat(str, options) {\n (0, _assertString.default)(str);\n options = options || {};\n var float = new RegExp(\"^(?:[-+])?(?:[0-9]+)?(?:\\\\\".concat(options.locale ? _alpha.decimal[options.locale] : '.', \"[0-9]*)?(?:[eE][\\\\+\\\\-]?(?:[0-9]+))?$\"));\n if (str === '' || str === '.' || str === ',' || str === '-' || str === '+') {\n return false;\n }\n var value = parseFloat(str.replace(',', '.'));\n return float.test(str) && (!options.hasOwnProperty('min') || (0, _nullUndefinedCheck.default)(options.min) || value >= options.min) && (!options.hasOwnProperty('max') || (0, _nullUndefinedCheck.default)(options.max) || value <= options.max) && (!options.hasOwnProperty('lt') || (0, _nullUndefinedCheck.default)(options.lt) || value < options.lt) && (!options.hasOwnProperty('gt') || (0, _nullUndefinedCheck.default)(options.gt) || value > options.gt);\n}\nvar locales = exports.locales = Object.keys(_alpha.decimal);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFullWidth;\nexports.fullWidth = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar fullWidth = exports.fullWidth = /[^\\u0020-\\u007E\\uFF61-\\uFF9F\\uFFA0-\\uFFDC\\uFFE8-\\uFFEE0-9a-zA-Z]/;\nfunction isFullWidth(str) {\n (0, _assertString.default)(str);\n return fullWidth.test(str);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHSL;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar hslComma = /^hsla?\\(((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%){2}(,((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%?))?\\)$/i;\nvar hslSpace = /^hsla?\\(((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?))(deg|grad|rad|turn)?(\\s(\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%){2}\\s?(\\/\\s((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%?)\\s?)?\\)$/i;\nfunction isHSL(str) {\n (0, _assertString.default)(str);\n\n // Strip duplicate spaces before calling the validation regex (See #1598 for more info)\n var strippedStr = str.replace(/\\s+/g, ' ').replace(/\\s?(hsla?\\(|\\)|,)\\s?/ig, '$1');\n if (strippedStr.indexOf(',') !== -1) {\n return hslComma.test(strippedStr);\n }\n return hslSpace.test(strippedStr);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHalfWidth;\nexports.halfWidth = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar halfWidth = exports.halfWidth = /[\\u0020-\\u007E\\uFF61-\\uFF9F\\uFFA0-\\uFFDC\\uFFE8-\\uFFEE0-9a-zA-Z]/;\nfunction isHalfWidth(str) {\n (0, _assertString.default)(str);\n return halfWidth.test(str);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHash;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar lengths = {\n md5: 32,\n md4: 32,\n sha1: 40,\n sha256: 64,\n sha384: 96,\n sha512: 128,\n ripemd128: 32,\n ripemd160: 40,\n tiger128: 32,\n tiger160: 40,\n tiger192: 48,\n crc32: 8,\n crc32b: 8\n};\nfunction isHash(str, algorithm) {\n (0, _assertString.default)(str);\n var hash = new RegExp(\"^[a-fA-F0-9]{\".concat(lengths[algorithm], \"}$\"));\n return hash.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHexColor;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i;\nfunction isHexColor(str) {\n (0, _assertString.default)(str);\n return hexcolor.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHexadecimal;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar hexadecimal = /^(0x|0h)?[0-9A-F]+$/i;\nfunction isHexadecimal(str) {\n (0, _assertString.default)(str);\n return hexadecimal.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIBAN;\nexports.locales = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _includesArray = _interopRequireDefault(require(\"./util/includesArray\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n/**\n * List of country codes with\n * corresponding IBAN regular expression\n * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n */\nvar ibanRegexThroughCountryCode = {\n AD: /^(AD[0-9]{2})\\d{8}[A-Z0-9]{12}$/,\n AE: /^(AE[0-9]{2})\\d{3}\\d{16}$/,\n AL: /^(AL[0-9]{2})\\d{8}[A-Z0-9]{16}$/,\n AT: /^(AT[0-9]{2})\\d{16}$/,\n AZ: /^(AZ[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\n BA: /^(BA[0-9]{2})\\d{16}$/,\n BE: /^(BE[0-9]{2})\\d{12}$/,\n BG: /^(BG[0-9]{2})[A-Z]{4}\\d{6}[A-Z0-9]{8}$/,\n BH: /^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/,\n BR: /^(BR[0-9]{2})\\d{23}[A-Z]{1}[A-Z0-9]{1}$/,\n BY: /^(BY[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\n CH: /^(CH[0-9]{2})\\d{5}[A-Z0-9]{12}$/,\n CR: /^(CR[0-9]{2})\\d{18}$/,\n CY: /^(CY[0-9]{2})\\d{8}[A-Z0-9]{16}$/,\n CZ: /^(CZ[0-9]{2})\\d{20}$/,\n DE: /^(DE[0-9]{2})\\d{18}$/,\n DK: /^(DK[0-9]{2})\\d{14}$/,\n DO: /^(DO[0-9]{2})[A-Z]{4}\\d{20}$/,\n DZ: /^(DZ\\d{24})$/,\n EE: /^(EE[0-9]{2})\\d{16}$/,\n EG: /^(EG[0-9]{2})\\d{25}$/,\n ES: /^(ES[0-9]{2})\\d{20}$/,\n FI: /^(FI[0-9]{2})\\d{14}$/,\n FO: /^(FO[0-9]{2})\\d{14}$/,\n FR: /^(FR[0-9]{2})\\d{10}[A-Z0-9]{11}\\d{2}$/,\n GB: /^(GB[0-9]{2})[A-Z]{4}\\d{14}$/,\n GE: /^(GE[0-9]{2})[A-Z0-9]{2}\\d{16}$/,\n GI: /^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/,\n GL: /^(GL[0-9]{2})\\d{14}$/,\n GR: /^(GR[0-9]{2})\\d{7}[A-Z0-9]{16}$/,\n GT: /^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/,\n HR: /^(HR[0-9]{2})\\d{17}$/,\n HU: /^(HU[0-9]{2})\\d{24}$/,\n IE: /^(IE[0-9]{2})[A-Z]{4}\\d{14}$/,\n IL: /^(IL[0-9]{2})\\d{19}$/,\n IQ: /^(IQ[0-9]{2})[A-Z]{4}\\d{15}$/,\n IR: /^(IR[0-9]{2})0\\d{2}0\\d{18}$/,\n IS: /^(IS[0-9]{2})\\d{22}$/,\n IT: /^(IT[0-9]{2})[A-Z]{1}\\d{10}[A-Z0-9]{12}$/,\n JO: /^(JO[0-9]{2})[A-Z]{4}\\d{22}$/,\n KW: /^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/,\n KZ: /^(KZ[0-9]{2})\\d{3}[A-Z0-9]{13}$/,\n LB: /^(LB[0-9]{2})\\d{4}[A-Z0-9]{20}$/,\n LC: /^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/,\n LI: /^(LI[0-9]{2})\\d{5}[A-Z0-9]{12}$/,\n LT: /^(LT[0-9]{2})\\d{16}$/,\n LU: /^(LU[0-9]{2})\\d{3}[A-Z0-9]{13}$/,\n LV: /^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/,\n MA: /^(MA[0-9]{26})$/,\n MC: /^(MC[0-9]{2})\\d{10}[A-Z0-9]{11}\\d{2}$/,\n MD: /^(MD[0-9]{2})[A-Z0-9]{20}$/,\n ME: /^(ME[0-9]{2})\\d{18}$/,\n MK: /^(MK[0-9]{2})\\d{3}[A-Z0-9]{10}\\d{2}$/,\n MR: /^(MR[0-9]{2})\\d{23}$/,\n MT: /^(MT[0-9]{2})[A-Z]{4}\\d{5}[A-Z0-9]{18}$/,\n MU: /^(MU[0-9]{2})[A-Z]{4}\\d{19}[A-Z]{3}$/,\n MZ: /^(MZ[0-9]{2})\\d{21}$/,\n NL: /^(NL[0-9]{2})[A-Z]{4}\\d{10}$/,\n NO: /^(NO[0-9]{2})\\d{11}$/,\n PK: /^(PK[0-9]{2})[A-Z0-9]{4}\\d{16}$/,\n PL: /^(PL[0-9]{2})\\d{24}$/,\n PS: /^(PS[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,\n PT: /^(PT[0-9]{2})\\d{21}$/,\n QA: /^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,\n RO: /^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/,\n RS: /^(RS[0-9]{2})\\d{18}$/,\n SA: /^(SA[0-9]{2})\\d{2}[A-Z0-9]{18}$/,\n SC: /^(SC[0-9]{2})[A-Z]{4}\\d{20}[A-Z]{3}$/,\n SE: /^(SE[0-9]{2})\\d{20}$/,\n SI: /^(SI[0-9]{2})\\d{15}$/,\n SK: /^(SK[0-9]{2})\\d{20}$/,\n SM: /^(SM[0-9]{2})[A-Z]{1}\\d{10}[A-Z0-9]{12}$/,\n SV: /^(SV[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\n TL: /^(TL[0-9]{2})\\d{19}$/,\n TN: /^(TN[0-9]{2})\\d{20}$/,\n TR: /^(TR[0-9]{2})\\d{5}[A-Z0-9]{17}$/,\n UA: /^(UA[0-9]{2})\\d{6}[A-Z0-9]{19}$/,\n VA: /^(VA[0-9]{2})\\d{18}$/,\n VG: /^(VG[0-9]{2})[A-Z]{4}\\d{16}$/,\n XK: /^(XK[0-9]{2})\\d{16}$/\n};\n\n/**\n * Check if the country codes passed are valid using the\n * ibanRegexThroughCountryCode as a reference\n *\n * @param {array} countryCodeArray\n * @return {boolean}\n */\n\nfunction hasOnlyValidCountryCodes(countryCodeArray) {\n var countryCodeArrayFilteredWithObjectIbanCode = countryCodeArray.filter(function (countryCode) {\n return !(countryCode in ibanRegexThroughCountryCode);\n });\n if (countryCodeArrayFilteredWithObjectIbanCode.length > 0) {\n return false;\n }\n return true;\n}\n\n/**\n * Check whether string has correct universal IBAN format\n * The IBAN consists of up to 34 alphanumeric characters, as follows:\n * Country Code using ISO 3166-1 alpha-2, two letters\n * check digits, two digits and\n * Basic Bank Account Number (BBAN), up to 30 alphanumeric characters.\n * NOTE: Permitted IBAN characters are: digits [0-9] and the 26 latin alphabetic [A-Z]\n *\n * @param {string} str - string under validation\n * @param {object} options - object to pass the countries to be either whitelisted or blacklisted\n * @return {boolean}\n */\nfunction hasValidIbanFormat(str, options) {\n // Strip white spaces and hyphens\n var strippedStr = str.replace(/[\\s\\-]+/gi, '').toUpperCase();\n var isoCountryCode = strippedStr.slice(0, 2).toUpperCase();\n var isoCountryCodeInIbanRegexCodeObject = isoCountryCode in ibanRegexThroughCountryCode;\n if (options.whitelist) {\n if (!hasOnlyValidCountryCodes(options.whitelist)) {\n return false;\n }\n var isoCountryCodeInWhiteList = (0, _includesArray.default)(options.whitelist, isoCountryCode);\n if (!isoCountryCodeInWhiteList) {\n return false;\n }\n }\n if (options.blacklist) {\n var isoCountryCodeInBlackList = (0, _includesArray.default)(options.blacklist, isoCountryCode);\n if (isoCountryCodeInBlackList) {\n return false;\n }\n }\n return isoCountryCodeInIbanRegexCodeObject && ibanRegexThroughCountryCode[isoCountryCode].test(strippedStr);\n}\n\n/**\n * Check whether string has valid IBAN Checksum\n * by performing basic mod-97 operation and\n * the remainder should equal 1\n * -- Start by rearranging the IBAN by moving the four initial characters to the end of the string\n * -- Replace each letter in the string with two digits, A -> 10, B = 11, Z = 35\n * -- Interpret the string as a decimal integer and\n * -- compute the remainder on division by 97 (mod 97)\n * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n *\n * @param {string} str\n * @return {boolean}\n */\nfunction hasValidIbanChecksum(str) {\n var strippedStr = str.replace(/[^A-Z0-9]+/gi, '').toUpperCase(); // Keep only digits and A-Z latin alphabetic\n var rearranged = strippedStr.slice(4) + strippedStr.slice(0, 4);\n var alphaCapsReplacedWithDigits = rearranged.replace(/[A-Z]/g, function (char) {\n return char.charCodeAt(0) - 55;\n });\n var remainder = alphaCapsReplacedWithDigits.match(/\\d{1,7}/g).reduce(function (acc, value) {\n return Number(acc + value) % 97;\n }, '');\n return remainder === 1;\n}\nfunction isIBAN(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _assertString.default)(str);\n return hasValidIbanFormat(str, options) && hasValidIbanChecksum(str);\n}\nvar locales = exports.locales = Object.keys(ibanRegexThroughCountryCode);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIMEI;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar imeiRegexWithoutHyphens = /^[0-9]{15}$/;\nvar imeiRegexWithHyphens = /^\\d{2}-\\d{6}-\\d{6}-\\d{1}$/;\nfunction isIMEI(str, options) {\n (0, _assertString.default)(str);\n options = options || {};\n\n // default regex for checking imei is the one without hyphens\n\n var imeiRegex = imeiRegexWithoutHyphens;\n if (options.allow_hyphens) {\n imeiRegex = imeiRegexWithHyphens;\n }\n if (!imeiRegex.test(str)) {\n return false;\n }\n str = str.replace(/-/g, '');\n var sum = 0,\n mul = 2,\n l = 14;\n for (var i = 0; i < l; i++) {\n var digit = str.substring(l - i - 1, l - i);\n var tp = parseInt(digit, 10) * mul;\n if (tp >= 10) {\n sum += tp % 10 + 1;\n } else {\n sum += tp;\n }\n if (mul === 1) {\n mul += 1;\n } else {\n mul -= 1;\n }\n }\n var chk = (10 - sum % 10) % 10;\n if (chk !== parseInt(str.substring(14, 15), 10)) {\n return false;\n }\n return true;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIP;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/**\n11.3. Examples\n\n The following addresses\n\n fe80::1234 (on the 1st link of the node)\n ff02::5678 (on the 5th link of the node)\n ff08::9abc (on the 10th organization of the node)\n\n would be represented as follows:\n\n fe80::1234%1\n ff02::5678%5\n ff08::9abc%10\n\n (Here we assume a natural translation from a zone index to the\n <zone_id> part, where the Nth zone of any scope is translated into\n \"N\".)\n\n If we use interface names as <zone_id>, those addresses could also be\n represented as follows:\n\n fe80::1234%ne0\n ff02::5678%pvc1.3\n ff08::9abc%interface10\n\n where the interface \"ne0\" belongs to the 1st link, \"pvc1.3\" belongs\n to the 5th link, and \"interface10\" belongs to the 10th organization.\n * * */\nvar IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';\nvar IPv4AddressFormat = \"(\".concat(IPv4SegmentFormat, \"[.]){3}\").concat(IPv4SegmentFormat);\nvar IPv4AddressRegExp = new RegExp(\"^\".concat(IPv4AddressFormat, \"$\"));\nvar IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})';\nvar IPv6AddressRegExp = new RegExp('^(' + \"(?:\".concat(IPv6SegmentFormat, \":){7}(?:\").concat(IPv6SegmentFormat, \"|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){6}(?:\").concat(IPv4AddressFormat, \"|:\").concat(IPv6SegmentFormat, \"|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){5}(?::\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,2}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){4}(?:(:\").concat(IPv6SegmentFormat, \"){0,1}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,3}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){3}(?:(:\").concat(IPv6SegmentFormat, \"){0,2}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,4}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){2}(?:(:\").concat(IPv6SegmentFormat, \"){0,3}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,5}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){1}(?:(:\").concat(IPv6SegmentFormat, \"){0,4}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,6}|:)|\") + \"(?::((?::\".concat(IPv6SegmentFormat, \"){0,5}:\").concat(IPv4AddressFormat, \"|(?::\").concat(IPv6SegmentFormat, \"){1,7}|:))\") + ')(%[0-9a-zA-Z.]{1,})?$');\nfunction isIP(ipAddress) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _assertString.default)(ipAddress);\n\n // accessing 'arguments' for backwards compatibility: isIP(ipAddress [, version])\n // eslint-disable-next-line prefer-rest-params\n var version = (_typeof(options) === 'object' ? options.version : arguments[1]) || '';\n if (!version) {\n return isIP(ipAddress, {\n version: 4\n }) || isIP(ipAddress, {\n version: 6\n });\n }\n if (version.toString() === '4') {\n return IPv4AddressRegExp.test(ipAddress);\n }\n if (version.toString() === '6') {\n return IPv6AddressRegExp.test(ipAddress);\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIPRange;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar subnetMaybe = /^\\d{1,3}$/;\nvar v4Subnet = 32;\nvar v6Subnet = 128;\nfunction isIPRange(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (0, _assertString.default)(str);\n var parts = str.split('/');\n\n // parts[0] -> ip, parts[1] -> subnet\n if (parts.length !== 2) {\n return false;\n }\n if (!subnetMaybe.test(parts[1])) {\n return false;\n }\n\n // Disallow preceding 0 i.e. 01, 02, ...\n if (parts[1].length > 1 && parts[1].startsWith('0')) {\n return false;\n }\n var isValidIP = (0, _isIP.default)(parts[0], version);\n if (!isValidIP) {\n return false;\n }\n\n // Define valid subnet according to IP's version\n var expectedSubnet = null;\n switch (String(version)) {\n case '4':\n expectedSubnet = v4Subnet;\n break;\n case '6':\n expectedSubnet = v6Subnet;\n break;\n default:\n expectedSubnet = (0, _isIP.default)(parts[0], '6') ? v6Subnet : v4Subnet;\n }\n return parts[1] <= expectedSubnet && parts[1] >= 0;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISBN;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar possibleIsbn10 = /^(?:[0-9]{9}X|[0-9]{10})$/;\nvar possibleIsbn13 = /^(?:[0-9]{13})$/;\nvar factor = [1, 3];\nfunction isISBN(isbn, options) {\n (0, _assertString.default)(isbn);\n\n // For backwards compatibility:\n // isISBN(str [, version]), i.e. `options` could be used as argument for the legacy `version`\n var version = String((options === null || options === void 0 ? void 0 : options.version) || options);\n if (!(options !== null && options !== void 0 && options.version || options)) {\n return isISBN(isbn, {\n version: 10\n }) || isISBN(isbn, {\n version: 13\n });\n }\n var sanitizedIsbn = isbn.replace(/[\\s-]+/g, '');\n var checksum = 0;\n if (version === '10') {\n if (!possibleIsbn10.test(sanitizedIsbn)) {\n return false;\n }\n for (var i = 0; i < version - 1; i++) {\n checksum += (i + 1) * sanitizedIsbn.charAt(i);\n }\n if (sanitizedIsbn.charAt(9) === 'X') {\n checksum += 10 * 10;\n } else {\n checksum += 10 * sanitizedIsbn.charAt(9);\n }\n if (checksum % 11 === 0) {\n return true;\n }\n } else if (version === '13') {\n if (!possibleIsbn13.test(sanitizedIsbn)) {\n return false;\n }\n for (var _i = 0; _i < 12; _i++) {\n checksum += factor[_i % 2] * sanitizedIsbn.charAt(_i);\n }\n if (sanitizedIsbn.charAt(12) - (10 - checksum % 10) % 10 === 0) {\n return true;\n }\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISIN;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/;\n\n// this link details how the check digit is calculated:\n// https://www.isin.org/isin-format/. it is a little bit\n// odd in that it works with digits, not numbers. in order\n// to make only one pass through the ISIN characters, the\n// each alpha character is handled as 2 characters within\n// the loop.\n\nfunction isISIN(str) {\n (0, _assertString.default)(str);\n if (!isin.test(str)) {\n return false;\n }\n var double = true;\n var sum = 0;\n // convert values\n for (var i = str.length - 2; i >= 0; i--) {\n if (str[i] >= 'A' && str[i] <= 'Z') {\n var value = str[i].charCodeAt(0) - 55;\n var lo = value % 10;\n var hi = Math.trunc(value / 10);\n // letters have two digits, so handle the low order\n // and high order digits separately.\n for (var _i = 0, _arr = [lo, hi]; _i < _arr.length; _i++) {\n var digit = _arr[_i];\n if (double) {\n if (digit >= 5) {\n sum += 1 + (digit - 5) * 2;\n } else {\n sum += digit * 2;\n }\n } else {\n sum += digit;\n }\n double = !double;\n }\n } else {\n var _digit = str[i].charCodeAt(0) - '0'.charCodeAt(0);\n if (double) {\n if (_digit >= 5) {\n sum += 1 + (_digit - 5) * 2;\n } else {\n sum += _digit * 2;\n }\n } else {\n sum += _digit;\n }\n double = !double;\n }\n }\n var check = Math.trunc((sum + 9) / 10) * 10 - sum;\n return +str[str.length - 1] === check;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ScriptCodes = void 0;\nexports.default = isISO15924;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n// from https://www.unicode.org/iso15924/iso15924-codes.html\nvar validISO15924Codes = new Set(['Adlm', 'Afak', 'Aghb', 'Ahom', 'Arab', 'Aran', 'Armi', 'Armn', 'Avst', 'Bali', 'Bamu', 'Bass', 'Batk', 'Beng', 'Bhks', 'Blis', 'Bopo', 'Brah', 'Brai', 'Bugi', 'Buhd', 'Cakm', 'Cans', 'Cari', 'Cham', 'Cher', 'Chis', 'Chrs', 'Cirt', 'Copt', 'Cpmn', 'Cprt', 'Cyrl', 'Cyrs', 'Deva', 'Diak', 'Dogr', 'Dsrt', 'Dupl', 'Egyd', 'Egyh', 'Egyp', 'Elba', 'Elym', 'Ethi', 'Gara', 'Geok', 'Geor', 'Glag', 'Gong', 'Gonm', 'Goth', 'Gran', 'Grek', 'Gujr', 'Gukh', 'Guru', 'Hanb', 'Hang', 'Hani', 'Hano', 'Hans', 'Hant', 'Hatr', 'Hebr', 'Hira', 'Hluw', 'Hmng', 'Hmnp', 'Hrkt', 'Hung', 'Inds', 'Ital', 'Jamo', 'Java', 'Jpan', 'Jurc', 'Kali', 'Kana', 'Kawi', 'Khar', 'Khmr', 'Khoj', 'Kitl', 'Kits', 'Knda', 'Kore', 'Kpel', 'Krai', 'Kthi', 'Lana', 'Laoo', 'Latf', 'Latg', 'Latn', 'Leke', 'Lepc', 'Limb', 'Lina', 'Linb', 'Lisu', 'Loma', 'Lyci', 'Lydi', 'Mahj', 'Maka', 'Mand', 'Mani', 'Marc', 'Maya', 'Medf', 'Mend', 'Merc', 'Mero', 'Mlym', 'Modi', 'Mong', 'Moon', 'Mroo', 'Mtei', 'Mult', 'Mymr', 'Nagm', 'Nand', 'Narb', 'Nbat', 'Newa', 'Nkdb', 'Nkgb', 'Nkoo', 'Nshu', 'Ogam', 'Olck', 'Onao', 'Orkh', 'Orya', 'Osge', 'Osma', 'Ougr', 'Palm', 'Pauc', 'Pcun', 'Pelm', 'Perm', 'Phag', 'Phli', 'Phlp', 'Phlv', 'Phnx', 'Plrd', 'Piqd', 'Prti', 'Psin', 'Qaaa', 'Qaab', 'Qaac', 'Qaad', 'Qaae', 'Qaaf', 'Qaag', 'Qaah', 'Qaai', 'Qaaj', 'Qaak', 'Qaal', 'Qaam', 'Qaan', 'Qaao', 'Qaap', 'Qaaq', 'Qaar', 'Qaas', 'Qaat', 'Qaau', 'Qaav', 'Qaaw', 'Qaax', 'Qaay', 'Qaaz', 'Qaba', 'Qabb', 'Qabc', 'Qabd', 'Qabe', 'Qabf', 'Qabg', 'Qabh', 'Qabi', 'Qabj', 'Qabk', 'Qabl', 'Qabm', 'Qabn', 'Qabo', 'Qabp', 'Qabq', 'Qabr', 'Qabs', 'Qabt', 'Qabu', 'Qabv', 'Qabw', 'Qabx', 'Ranj', 'Rjng', 'Rohg', 'Roro', 'Runr', 'Samr', 'Sara', 'Sarb', 'Saur', 'Sgnw', 'Shaw', 'Shrd', 'Shui', 'Sidd', 'Sidt', 'Sind', 'Sinh', 'Sogd', 'Sogo', 'Sora', 'Soyo', 'Sund', 'Sunu', 'Sylo', 'Syrc', 'Syre', 'Syrj', 'Syrn', 'Tagb', 'Takr', 'Tale', 'Talu', 'Taml', 'Tang', 'Tavt', 'Tayo', 'Telu', 'Teng', 'Tfng', 'Tglg', 'Thaa', 'Thai', 'Tibt', 'Tirh', 'Tnsa', 'Todr', 'Tols', 'Toto', 'Tutg', 'Ugar', 'Vaii', 'Visp', 'Vith', 'Wara', 'Wcho', 'Wole', 'Xpeo', 'Xsux', 'Yezi', 'Yiii', 'Zanb', 'Zinh', 'Zmth', 'Zsye', 'Zsym', 'Zxxx', 'Zyyy', 'Zzzz']);\nfunction isISO15924(str) {\n (0, _assertString.default)(str);\n return validISO15924Codes.has(str);\n}\nvar ScriptCodes = exports.ScriptCodes = validISO15924Codes;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CountryCodes = void 0;\nexports.default = isISO31661Alpha2;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\nvar validISO31661Alpha2CountriesCodes = new Set(['AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW']);\nfunction isISO31661Alpha2(str) {\n (0, _assertString.default)(str);\n return validISO31661Alpha2CountriesCodes.has(str.toUpperCase());\n}\nvar CountryCodes = exports.CountryCodes = validISO31661Alpha2CountriesCodes;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISO31661Alpha3;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3\nvar validISO31661Alpha3CountriesCodes = new Set(['AFG', 'ALA', 'ALB', 'DZA', 'ASM', 'AND', 'AGO', 'AIA', 'ATA', 'ATG', 'ARG', 'ARM', 'ABW', 'AUS', 'AUT', 'AZE', 'BHS', 'BHR', 'BGD', 'BRB', 'BLR', 'BEL', 'BLZ', 'BEN', 'BMU', 'BTN', 'BOL', 'BES', 'BIH', 'BWA', 'BVT', 'BRA', 'IOT', 'BRN', 'BGR', 'BFA', 'BDI', 'KHM', 'CMR', 'CAN', 'CPV', 'CYM', 'CAF', 'TCD', 'CHL', 'CHN', 'CXR', 'CCK', 'COL', 'COM', 'COG', 'COD', 'COK', 'CRI', 'CIV', 'HRV', 'CUB', 'CUW', 'CYP', 'CZE', 'DNK', 'DJI', 'DMA', 'DOM', 'ECU', 'EGY', 'SLV', 'GNQ', 'ERI', 'EST', 'ETH', 'FLK', 'FRO', 'FJI', 'FIN', 'FRA', 'GUF', 'PYF', 'ATF', 'GAB', 'GMB', 'GEO', 'DEU', 'GHA', 'GIB', 'GRC', 'GRL', 'GRD', 'GLP', 'GUM', 'GTM', 'GGY', 'GIN', 'GNB', 'GUY', 'HTI', 'HMD', 'VAT', 'HND', 'HKG', 'HUN', 'ISL', 'IND', 'IDN', 'IRN', 'IRQ', 'IRL', 'IMN', 'ISR', 'ITA', 'JAM', 'JPN', 'JEY', 'JOR', 'KAZ', 'KEN', 'KIR', 'PRK', 'KOR', 'KWT', 'KGZ', 'LAO', 'LVA', 'LBN', 'LSO', 'LBR', 'LBY', 'LIE', 'LTU', 'LUX', 'MAC', 'MKD', 'MDG', 'MWI', 'MYS', 'MDV', 'MLI', 'MLT', 'MHL', 'MTQ', 'MRT', 'MUS', 'MYT', 'MEX', 'FSM', 'MDA', 'MCO', 'MNG', 'MNE', 'MSR', 'MAR', 'MOZ', 'MMR', 'NAM', 'NRU', 'NPL', 'NLD', 'NCL', 'NZL', 'NIC', 'NER', 'NGA', 'NIU', 'NFK', 'MNP', 'NOR', 'OMN', 'PAK', 'PLW', 'PSE', 'PAN', 'PNG', 'PRY', 'PER', 'PHL', 'PCN', 'POL', 'PRT', 'PRI', 'QAT', 'REU', 'ROU', 'RUS', 'RWA', 'BLM', 'SHN', 'KNA', 'LCA', 'MAF', 'SPM', 'VCT', 'WSM', 'SMR', 'STP', 'SAU', 'SEN', 'SRB', 'SYC', 'SLE', 'SGP', 'SXM', 'SVK', 'SVN', 'SLB', 'SOM', 'ZAF', 'SGS', 'SSD', 'ESP', 'LKA', 'SDN', 'SUR', 'SJM', 'SWZ', 'SWE', 'CHE', 'SYR', 'TWN', 'TJK', 'TZA', 'THA', 'TLS', 'TGO', 'TKL', 'TON', 'TTO', 'TUN', 'TUR', 'TKM', 'TCA', 'TUV', 'UGA', 'UKR', 'ARE', 'GBR', 'USA', 'UMI', 'URY', 'UZB', 'VUT', 'VEN', 'VNM', 'VGB', 'VIR', 'WLF', 'ESH', 'YEM', 'ZMB', 'ZWE']);\nfunction isISO31661Alpha3(str) {\n (0, _assertString.default)(str);\n return validISO31661Alpha3CountriesCodes.has(str.toUpperCase());\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISO31661Numeric;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n// from https://en.wikipedia.org/wiki/ISO_3166-1_numeric\nvar validISO31661NumericCountriesCodes = new Set(['004', '008', '010', '012', '016', '020', '024', '028', '031', '032', '036', '040', '044', '048', '050', '051', '052', '056', '060', '064', '068', '070', '072', '074', '076', '084', '086', '090', '092', '096', '100', '104', '108', '112', '116', '120', '124', '132', '136', '140', '144', '148', '152', '156', '158', '162', '166', '170', '174', '175', '178', '180', '184', '188', '191', '192', '196', '203', '204', '208', '212', '214', '218', '222', '226', '231', '232', '233', '234', '238', '239', '242', '246', '248', '250', '254', '258', '260', '262', '266', '268', '270', '275', '276', '288', '292', '296', '300', '304', '308', '312', '316', '320', '324', '328', '332', '334', '336', '340', '344', '348', '352', '356', '360', '364', '368', '372', '376', '380', '384', '388', '392', '398', '400', '404', '408', '410', '414', '417', '418', '422', '426', '428', '430', '434', '438', '440', '442', '446', '450', '454', '458', '462', '466', '470', '474', '478', '480', '484', '492', '496', '498', '499', '500', '504', '508', '512', '516', '520', '524', '528', '531', '533', '534', '535', '540', '548', '554', '558', '562', '566', '570', '574', '578', '580', '581', '583', '584', '585', '586', '591', '598', '600', '604', '608', '612', '616', '620', '624', '626', '630', '634', '638', '642', '643', '646', '652', '654', '659', '660', '662', '663', '666', '670', '674', '678', '682', '686', '688', '690', '694', '702', '703', '704', '705', '706', '710', '716', '724', '728', '729', '732', '740', '744', '748', '752', '756', '760', '762', '764', '768', '772', '776', '780', '784', '788', '792', '795', '796', '798', '800', '804', '807', '818', '826', '831', '832', '833', '834', '840', '850', '854', '858', '860', '862', '876', '882', '887', '894']);\nfunction isISO31661Numeric(str) {\n (0, _assertString.default)(str);\n return validISO31661NumericCountriesCodes.has(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CurrencyCodes = void 0;\nexports.default = isISO4217;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n// from https://en.wikipedia.org/wiki/ISO_4217\nvar validISO4217CurrencyCodes = new Set(['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BOV', 'BRL', 'BSD', 'BTN', 'BWP', 'BYN', 'BZD', 'CAD', 'CDF', 'CHE', 'CHF', 'CHW', 'CLF', 'CLP', 'CNY', 'COP', 'COU', 'CRC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HTG', 'HUF', 'IDR', 'ILS', 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRU', 'MUR', 'MVR', 'MWK', 'MXN', 'MXV', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLE', 'SLL', 'SOS', 'SRD', 'SSP', 'STN', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'USN', 'UYI', 'UYU', 'UYW', 'UZS', 'VED', 'VES', 'VND', 'VUV', 'WST', 'XAF', 'XAG', 'XAU', 'XBA', 'XBB', 'XBC', 'XBD', 'XCD', 'XDR', 'XOF', 'XPD', 'XPF', 'XPT', 'XSU', 'XTS', 'XUA', 'XXX', 'YER', 'ZAR', 'ZMW', 'ZWL']);\nfunction isISO4217(str) {\n (0, _assertString.default)(str);\n return validISO4217CurrencyCodes.has(str.toUpperCase());\n}\nvar CurrencyCodes = exports.CurrencyCodes = validISO4217CurrencyCodes;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isFreightContainerID = void 0;\nexports.isISO6346 = isISO6346;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n// https://en.wikipedia.org/wiki/ISO_6346\n// according to ISO6346 standard, checksum digit is mandatory for freight container but recommended\n// for other container types (J and Z)\nvar isISO6346Str = /^[A-Z]{3}(U[0-9]{7})|([J,Z][0-9]{6,7})$/;\nvar isDigit = /^[0-9]$/;\nfunction isISO6346(str) {\n (0, _assertString.default)(str);\n str = str.toUpperCase();\n if (!isISO6346Str.test(str)) return false;\n if (str.length === 11) {\n var sum = 0;\n for (var i = 0; i < str.length - 1; i++) {\n if (!isDigit.test(str[i])) {\n var convertedCode = void 0;\n var letterCode = str.charCodeAt(i) - 55;\n if (letterCode < 11) convertedCode = letterCode;else if (letterCode >= 11 && letterCode <= 20) convertedCode = 12 + letterCode % 11;else if (letterCode >= 21 && letterCode <= 30) convertedCode = 23 + letterCode % 21;else convertedCode = 34 + letterCode % 31;\n sum += convertedCode * Math.pow(2, i);\n } else sum += str[i] * Math.pow(2, i);\n }\n var checkSumDigit = sum % 11;\n if (checkSumDigit === 10) checkSumDigit = 0;\n return Number(str[str.length - 1]) === checkSumDigit;\n }\n return true;\n}\nvar isFreightContainerID = exports.isFreightContainerID = isISO6346;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISO6391;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar isISO6391Set = new Set(['aa', 'ab', 'ae', 'af', 'ak', 'am', 'an', 'ar', 'as', 'av', 'ay', 'az', 'az', 'ba', 'be', 'bg', 'bh', 'bi', 'bm', 'bn', 'bo', 'br', 'bs', 'ca', 'ce', 'ch', 'co', 'cr', 'cs', 'cu', 'cv', 'cy', 'da', 'de', 'dv', 'dz', 'ee', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fa', 'ff', 'fi', 'fj', 'fo', 'fr', 'fy', 'ga', 'gd', 'gl', 'gn', 'gu', 'gv', 'ha', 'he', 'hi', 'ho', 'hr', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'io', 'is', 'it', 'iu', 'ja', 'jv', 'ka', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', 'kr', 'ks', 'ku', 'kv', 'kw', 'ky', 'la', 'lb', 'lg', 'li', 'ln', 'lo', 'lt', 'lu', 'lv', 'mg', 'mh', 'mi', 'mk', 'ml', 'mn', 'mr', 'ms', 'mt', 'my', 'na', 'nb', 'nd', 'ne', 'ng', 'nl', 'nn', 'no', 'nr', 'nv', 'ny', 'oc', 'oj', 'om', 'or', 'os', 'pa', 'pi', 'pl', 'ps', 'pt', 'qu', 'rm', 'rn', 'ro', 'ru', 'rw', 'sa', 'sc', 'sd', 'se', 'sg', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'ss', 'st', 'su', 'sv', 'sw', 'ta', 'te', 'tg', 'th', 'ti', 'tk', 'tl', 'tn', 'to', 'tr', 'ts', 'tt', 'tw', 'ty', 'ug', 'uk', 'ur', 'uz', 've', 'vi', 'vo', 'wa', 'wo', 'xh', 'yi', 'yo', 'za', 'zh', 'zu']);\nfunction isISO6391(str) {\n (0, _assertString.default)(str);\n return isISO6391Set.has(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISO8601;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n/* eslint-disable max-len */\n// from http://goo.gl/0ejHHW\nvar iso8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\n// same as above, except with a strict 'T' separator between date and time\nvar iso8601StrictSeparator = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\n/* eslint-enable max-len */\nvar isValidDate = function isValidDate(str) {\n // str must have passed the ISO8601 check\n // this check is meant to catch invalid dates\n // like 2009-02-31\n // first check for ordinal dates\n var ordinalMatch = str.match(/^(\\d{4})-?(\\d{3})([ T]{1}\\.*|$)/);\n if (ordinalMatch) {\n var oYear = Number(ordinalMatch[1]);\n var oDay = Number(ordinalMatch[2]);\n // if is leap year\n if (oYear % 4 === 0 && oYear % 100 !== 0 || oYear % 400 === 0) return oDay <= 366;\n return oDay <= 365;\n }\n var match = str.match(/(\\d{4})-?(\\d{0,2})-?(\\d*)/).map(Number);\n var year = match[1];\n var month = match[2];\n var day = match[3];\n var monthString = month ? \"0\".concat(month).slice(-2) : month;\n var dayString = day ? \"0\".concat(day).slice(-2) : day;\n\n // create a date object and compare\n var d = new Date(\"\".concat(year, \"-\").concat(monthString || '01', \"-\").concat(dayString || '01'));\n if (month && day) {\n return d.getUTCFullYear() === year && d.getUTCMonth() + 1 === month && d.getUTCDate() === day;\n }\n return true;\n};\nfunction isISO8601(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _assertString.default)(str);\n var check = options.strictSeparator ? iso8601StrictSeparator.test(str) : iso8601.test(str);\n if (check && options.strict) return isValidDate(str);\n return check;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISRC;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n// see http://isrc.ifpi.org/en/isrc-standard/code-syntax\nvar isrc = /^[A-Z]{2}[0-9A-Z]{3}\\d{2}\\d{5}$/;\nfunction isISRC(str) {\n (0, _assertString.default)(str);\n return isrc.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISSN;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar issn = '^\\\\d{4}-?\\\\d{3}[\\\\dX]$';\nfunction isISSN(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _assertString.default)(str);\n var testIssn = issn;\n testIssn = options.require_hyphen ? testIssn.replace('?', '') : testIssn;\n testIssn = options.case_sensitive ? new RegExp(testIssn) : new RegExp(testIssn, 'i');\n if (!testIssn.test(str)) {\n return false;\n }\n var digits = str.replace('-', '').toUpperCase();\n var checksum = 0;\n for (var i = 0; i < digits.length; i++) {\n var digit = digits[i];\n checksum += (digit === 'X' ? 10 : +digit) * (8 - i);\n }\n return checksum % 11 === 0;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIdentityCard;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _includesArray = _interopRequireDefault(require(\"./util/includesArray\"));\nvar _isInt = _interopRequireDefault(require(\"./isInt\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar validators = {\n PL: function PL(str) {\n (0, _assertString.default)(str);\n var weightOfDigits = {\n 1: 1,\n 2: 3,\n 3: 7,\n 4: 9,\n 5: 1,\n 6: 3,\n 7: 7,\n 8: 9,\n 9: 1,\n 10: 3,\n 11: 0\n };\n if (str != null && str.length === 11 && (0, _isInt.default)(str, {\n allow_leading_zeroes: true\n })) {\n var digits = str.split('').slice(0, -1);\n var sum = digits.reduce(function (acc, digit, index) {\n return acc + Number(digit) * weightOfDigits[index + 1];\n }, 0);\n var modulo = sum % 10;\n var lastDigit = Number(str.charAt(str.length - 1));\n if (modulo === 0 && lastDigit === 0 || lastDigit === 10 - modulo) {\n return true;\n }\n }\n return false;\n },\n ES: function ES(str) {\n (0, _assertString.default)(str);\n var DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/;\n var charsValue = {\n X: 0,\n Y: 1,\n Z: 2\n };\n var controlDigits = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'];\n\n // sanitize user input\n var sanitized = str.trim().toUpperCase();\n\n // validate the data structure\n if (!DNI.test(sanitized)) {\n return false;\n }\n\n // validate the control digit\n var number = sanitized.slice(0, -1).replace(/[X,Y,Z]/g, function (char) {\n return charsValue[char];\n });\n return sanitized.endsWith(controlDigits[number % 23]);\n },\n FI: function FI(str) {\n // https://dvv.fi/en/personal-identity-code#:~:text=control%20character%20for%20a-,personal,-identity%20code%20calculated\n (0, _assertString.default)(str);\n if (str.length !== 11) {\n return false;\n }\n if (!str.match(/^\\d{6}[\\-A\\+]\\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/)) {\n return false;\n }\n var checkDigits = '0123456789ABCDEFHJKLMNPRSTUVWXY';\n var idAsNumber = parseInt(str.slice(0, 6), 10) * 1000 + parseInt(str.slice(7, 10), 10);\n var remainder = idAsNumber % 31;\n var checkDigit = checkDigits[remainder];\n return checkDigit === str.slice(10, 11);\n },\n IN: function IN(str) {\n var DNI = /^[1-9]\\d{3}\\s?\\d{4}\\s?\\d{4}$/;\n\n // multiplication table\n var d = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];\n\n // permutation table\n var p = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]];\n\n // sanitize user input\n var sanitized = str.trim();\n\n // validate the data structure\n if (!DNI.test(sanitized)) {\n return false;\n }\n var c = 0;\n var invertedArray = sanitized.replace(/\\s/g, '').split('').map(Number).reverse();\n invertedArray.forEach(function (val, i) {\n c = d[c][p[i % 8][val]];\n });\n return c === 0;\n },\n IR: function IR(str) {\n if (!str.match(/^\\d{10}$/)) return false;\n str = \"0000\".concat(str).slice(str.length - 6);\n if (parseInt(str.slice(3, 9), 10) === 0) return false;\n var lastNumber = parseInt(str.slice(9, 10), 10);\n var sum = 0;\n for (var i = 0; i < 9; i++) {\n sum += parseInt(str.slice(i, i + 1), 10) * (10 - i);\n }\n sum %= 11;\n return sum < 2 && lastNumber === sum || sum >= 2 && lastNumber === 11 - sum;\n },\n IT: function IT(str) {\n if (str.length !== 9) return false;\n if (str === 'CA00000AA') return false; // https://it.wikipedia.org/wiki/Carta_d%27identit%C3%A0_elettronica_italiana\n return str.search(/C[A-Z]\\d{5}[A-Z]{2}/i) > -1;\n },\n NO: function NO(str) {\n var sanitized = str.trim();\n if (isNaN(Number(sanitized))) return false;\n if (sanitized.length !== 11) return false;\n if (sanitized === '00000000000') return false;\n\n // https://no.wikipedia.org/wiki/F%C3%B8dselsnummer\n var f = sanitized.split('').map(Number);\n var k1 = (11 - (3 * f[0] + 7 * f[1] + 6 * f[2] + 1 * f[3] + 8 * f[4] + 9 * f[5] + 4 * f[6] + 5 * f[7] + 2 * f[8]) % 11) % 11;\n var k2 = (11 - (5 * f[0] + 4 * f[1] + 3 * f[2] + 2 * f[3] + 7 * f[4] + 6 * f[5] + 5 * f[6] + 4 * f[7] + 3 * f[8] + 2 * k1) % 11) % 11;\n if (k1 !== f[9] || k2 !== f[10]) return false;\n return true;\n },\n TH: function TH(str) {\n if (!str.match(/^[1-8]\\d{12}$/)) return false;\n\n // validate check digit\n var sum = 0;\n for (var i = 0; i < 12; i++) {\n sum += parseInt(str[i], 10) * (13 - i);\n }\n return str[12] === ((11 - sum % 11) % 10).toString();\n },\n LK: function LK(str) {\n var old_nic = /^[1-9]\\d{8}[vx]$/i;\n var new_nic = /^[1-9]\\d{11}$/i;\n if (str.length === 10 && old_nic.test(str)) return true;else if (str.length === 12 && new_nic.test(str)) return true;\n return false;\n },\n 'he-IL': function heIL(str) {\n var DNI = /^\\d{9}$/;\n\n // sanitize user input\n var sanitized = str.trim();\n\n // validate the data structure\n if (!DNI.test(sanitized)) {\n return false;\n }\n var id = sanitized;\n var sum = 0,\n incNum;\n for (var i = 0; i < id.length; i++) {\n incNum = Number(id[i]) * (i % 2 + 1); // Multiply number by 1 or 2\n sum += incNum > 9 ? incNum - 9 : incNum; // Sum the digits up and add to total\n }\n return sum % 10 === 0;\n },\n 'ar-LY': function arLY(str) {\n // Libya National Identity Number NIN is 12 digits, the first digit is either 1 or 2\n var NIN = /^(1|2)\\d{11}$/;\n\n // sanitize user input\n var sanitized = str.trim();\n\n // validate the data structure\n if (!NIN.test(sanitized)) {\n return false;\n }\n return true;\n },\n 'ar-TN': function arTN(str) {\n var DNI = /^\\d{8}$/;\n\n // sanitize user input\n var sanitized = str.trim();\n\n // validate the data structure\n if (!DNI.test(sanitized)) {\n return false;\n }\n return true;\n },\n 'zh-CN': function zhCN(str) {\n var provincesAndCities = ['11',\n // 北京\n '12',\n // 天津\n '13',\n // 河北\n '14',\n // 山西\n '15',\n // 内蒙古\n '21',\n // 辽宁\n '22',\n // 吉林\n '23',\n // 黑龙江\n '31',\n // 上海\n '32',\n // 江苏\n '33',\n // 浙江\n '34',\n // 安徽\n '35',\n // 福建\n '36',\n // 江西\n '37',\n // 山东\n '41',\n // 河南\n '42',\n // 湖北\n '43',\n // 湖南\n '44',\n // 广东\n '45',\n // 广西\n '46',\n // 海南\n '50',\n // 重庆\n '51',\n // 四川\n '52',\n // 贵州\n '53',\n // 云南\n '54',\n // 西藏\n '61',\n // 陕西\n '62',\n // 甘肃\n '63',\n // 青海\n '64',\n // 宁夏\n '65',\n // 新疆\n '71',\n // 台湾\n '81',\n // 香港\n '82',\n // 澳门\n '91' // 国外\n ];\n var powers = ['7', '9', '10', '5', '8', '4', '2', '1', '6', '3', '7', '9', '10', '5', '8', '4', '2'];\n var parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];\n var checkAddressCode = function checkAddressCode(addressCode) {\n return (0, _includesArray.default)(provincesAndCities, addressCode);\n };\n var checkBirthDayCode = function checkBirthDayCode(birDayCode) {\n var yyyy = parseInt(birDayCode.substring(0, 4), 10);\n var mm = parseInt(birDayCode.substring(4, 6), 10);\n var dd = parseInt(birDayCode.substring(6), 10);\n var xdata = new Date(yyyy, mm - 1, dd);\n if (xdata > new Date()) {\n return false;\n // eslint-disable-next-line max-len\n } else if (xdata.getFullYear() === yyyy && xdata.getMonth() === mm - 1 && xdata.getDate() === dd) {\n return true;\n }\n return false;\n };\n var getParityBit = function getParityBit(idCardNo) {\n var id17 = idCardNo.substring(0, 17);\n var power = 0;\n for (var i = 0; i < 17; i++) {\n power += parseInt(id17.charAt(i), 10) * parseInt(powers[i], 10);\n }\n var mod = power % 11;\n return parityBit[mod];\n };\n var checkParityBit = function checkParityBit(idCardNo) {\n return getParityBit(idCardNo) === idCardNo.charAt(17).toUpperCase();\n };\n var check15IdCardNo = function check15IdCardNo(idCardNo) {\n var check = /^[1-9]\\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\\d{3}$/.test(idCardNo);\n if (!check) return false;\n var addressCode = idCardNo.substring(0, 2);\n check = checkAddressCode(addressCode);\n if (!check) return false;\n var birDayCode = \"19\".concat(idCardNo.substring(6, 12));\n check = checkBirthDayCode(birDayCode);\n if (!check) return false;\n return true;\n };\n var check18IdCardNo = function check18IdCardNo(idCardNo) {\n var check = /^[1-9]\\d{5}[1-9]\\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\\d{3}(\\d|x|X)$/.test(idCardNo);\n if (!check) return false;\n var addressCode = idCardNo.substring(0, 2);\n check = checkAddressCode(addressCode);\n if (!check) return false;\n var birDayCode = idCardNo.substring(6, 14);\n check = checkBirthDayCode(birDayCode);\n if (!check) return false;\n return checkParityBit(idCardNo);\n };\n var checkIdCardNo = function checkIdCardNo(idCardNo) {\n var check = /^\\d{15}|(\\d{17}(\\d|x|X))$/.test(idCardNo);\n if (!check) return false;\n if (idCardNo.length === 15) {\n return check15IdCardNo(idCardNo);\n }\n return check18IdCardNo(idCardNo);\n };\n return checkIdCardNo(str);\n },\n 'zh-HK': function zhHK(str) {\n // sanitize user input\n str = str.trim();\n\n // HKID number starts with 1 or 2 letters, followed by 6 digits,\n // then a checksum contained in square / round brackets or nothing\n var regexHKID = /^[A-Z]{1,2}[0-9]{6}((\\([0-9A]\\))|(\\[[0-9A]\\])|([0-9A]))$/;\n var regexIsDigit = /^[0-9]$/;\n\n // convert the user input to all uppercase and apply regex\n str = str.toUpperCase();\n if (!regexHKID.test(str)) return false;\n str = str.replace(/\\[|\\]|\\(|\\)/g, '');\n if (str.length === 8) str = \"3\".concat(str);\n var checkSumVal = 0;\n for (var i = 0; i <= 7; i++) {\n var convertedChar = void 0;\n if (!regexIsDigit.test(str[i])) convertedChar = (str[i].charCodeAt(0) - 55) % 11;else convertedChar = str[i];\n checkSumVal += convertedChar * (9 - i);\n }\n checkSumVal %= 11;\n var checkSumConverted;\n if (checkSumVal === 0) checkSumConverted = '0';else if (checkSumVal === 1) checkSumConverted = 'A';else checkSumConverted = String(11 - checkSumVal);\n if (checkSumConverted === str[str.length - 1]) return true;\n return false;\n },\n 'zh-TW': function zhTW(str) {\n var ALPHABET_CODES = {\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15,\n G: 16,\n H: 17,\n I: 34,\n J: 18,\n K: 19,\n L: 20,\n M: 21,\n N: 22,\n O: 35,\n P: 23,\n Q: 24,\n R: 25,\n S: 26,\n T: 27,\n U: 28,\n V: 29,\n W: 32,\n X: 30,\n Y: 31,\n Z: 33\n };\n var sanitized = str.trim().toUpperCase();\n if (!/^[A-Z][0-9]{9}$/.test(sanitized)) return false;\n return Array.from(sanitized).reduce(function (sum, number, index) {\n if (index === 0) {\n var code = ALPHABET_CODES[number];\n return code % 10 * 9 + Math.floor(code / 10);\n }\n if (index === 9) {\n return (10 - sum % 10 - Number(number)) % 10 === 0;\n }\n return sum + Number(number) * (9 - index);\n }, 0);\n },\n PK: function PK(str) {\n // Pakistani National Identity Number CNIC is 13 digits\n var CNIC = /^[1-7][0-9]{4}-[0-9]{7}-[1-9]$/;\n\n // sanitize user input\n var sanitized = str.trim();\n\n // validate the data structure\n return CNIC.test(sanitized);\n }\n};\nfunction isIdentityCard(str, locale) {\n (0, _assertString.default)(str);\n if (locale in validators) {\n return validators[locale](str);\n } else if (locale === 'any') {\n for (var key in validators) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if (validators.hasOwnProperty(key)) {\n var validator = validators[key];\n if (validator(str)) {\n return true;\n }\n }\n }\n return false;\n }\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIn;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _toString = _interopRequireDefault(require(\"./util/toString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction isIn(str, options) {\n (0, _assertString.default)(str);\n var i;\n if (Object.prototype.toString.call(options) === '[object Array]') {\n var array = [];\n for (i in options) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if ({}.hasOwnProperty.call(options, i)) {\n array[i] = (0, _toString.default)(options[i]);\n }\n }\n return array.indexOf(str) >= 0;\n } else if (_typeof(options) === 'object') {\n return options.hasOwnProperty(str);\n } else if (options && typeof options.indexOf === 'function') {\n return options.indexOf(str) >= 0;\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isInt;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _nullUndefinedCheck = _interopRequireDefault(require(\"./util/nullUndefinedCheck\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/;\nvar intLeadingZeroes = /^[-+]?[0-9]+$/;\nfunction isInt(str, options) {\n (0, _assertString.default)(str);\n options = options || {};\n\n // Get the regex to use for testing, based on whether\n // leading zeroes are allowed or not.\n var regex = options.allow_leading_zeroes === false ? int : intLeadingZeroes;\n\n // Check min/max/lt/gt\n var minCheckPassed = !options.hasOwnProperty('min') || (0, _nullUndefinedCheck.default)(options.min) || str >= options.min;\n var maxCheckPassed = !options.hasOwnProperty('max') || (0, _nullUndefinedCheck.default)(options.max) || str <= options.max;\n var ltCheckPassed = !options.hasOwnProperty('lt') || (0, _nullUndefinedCheck.default)(options.lt) || str < options.lt;\n var gtCheckPassed = !options.hasOwnProperty('gt') || (0, _nullUndefinedCheck.default)(options.gt) || str > options.gt;\n return regex.test(str) && minCheckPassed && maxCheckPassed && ltCheckPassed && gtCheckPassed;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isJSON;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _includesArray = _interopRequireDefault(require(\"./util/includesArray\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar default_json_options = {\n allow_primitives: false\n};\nfunction isJSON(str, options) {\n (0, _assertString.default)(str);\n try {\n options = (0, _merge.default)(options, default_json_options);\n var primitives = [];\n if (options.allow_primitives) {\n primitives = [null, false, true];\n }\n var obj = JSON.parse(str);\n return (0, _includesArray.default)(primitives, obj) || !!obj && _typeof(obj) === 'object';\n } catch (e) {/* ignore */}\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isJWT;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isBase = _interopRequireDefault(require(\"./isBase64\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction isJWT(str) {\n (0, _assertString.default)(str);\n var dotSplit = str.split('.');\n var len = dotSplit.length;\n if (len !== 3) {\n return false;\n }\n return dotSplit.reduce(function (acc, currElem) {\n return acc && (0, _isBase.default)(currElem, {\n urlSafe: true\n });\n }, true);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLatLong;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nvar _includesString = _interopRequireDefault(require(\"./util/includesString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar lat = /^\\(?[+-]?(90(\\.0+)?|[1-8]?\\d(\\.\\d+)?)$/;\nvar long = /^\\s?[+-]?(180(\\.0+)?|1[0-7]\\d(\\.\\d+)?|\\d{1,2}(\\.\\d+)?)\\)?$/;\nvar latDMS = /^(([1-8]?\\d)\\D+([1-5]?\\d|60)\\D+([1-5]?\\d|60)(\\.\\d+)?|90\\D+0\\D+0)\\D+[NSns]?$/i;\nvar longDMS = /^\\s*([1-7]?\\d{1,2}\\D+([1-5]?\\d|60)\\D+([1-5]?\\d|60)(\\.\\d+)?|180\\D+0\\D+0)\\D+[EWew]?$/i;\nvar defaultLatLongOptions = {\n checkDMS: false\n};\nfunction isLatLong(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, defaultLatLongOptions);\n if (!(0, _includesString.default)(str, ',')) return false;\n var pair = str.split(',');\n if (pair[0].startsWith('(') && !pair[1].endsWith(')') || pair[1].endsWith(')') && !pair[0].startsWith('(')) return false;\n if (options.checkDMS) {\n return latDMS.test(pair[0]) && longDMS.test(pair[1]);\n }\n return lat.test(pair[0]) && long.test(pair[1]);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLength;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/* eslint-disable prefer-rest-params */\nfunction isLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isLength(str, min [, max])\n min = arguments[1] || 0;\n max = arguments[2];\n }\n var presentationSequences = str.match(/(\\uFE0F|\\uFE0E)/g) || [];\n var surrogatePairs = str.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g) || [];\n var len = str.length - presentationSequences.length - surrogatePairs.length;\n var isInsideRange = len >= min && (typeof max === 'undefined' || len <= max);\n if (isInsideRange && Array.isArray(options === null || options === void 0 ? void 0 : options.discreteLengths)) {\n return options.discreteLengths.some(function (discreteLen) {\n return discreteLen === len;\n });\n }\n return isInsideRange;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLicensePlate;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar validators = {\n 'cs-CZ': function csCZ(str) {\n return /^(([ABCDEFHIJKLMNPRSTUVXYZ]|[0-9])-?){5,8}$/.test(str);\n },\n 'de-DE': function deDE(str) {\n return /^((A|AA|AB|AC|AE|AH|AK|AM|AN|AÖ|AP|AS|AT|AU|AW|AZ|B|BA|BB|BC|BE|BF|BH|BI|BK|BL|BM|BN|BO|BÖ|BS|BT|BZ|C|CA|CB|CE|CO|CR|CW|D|DA|DD|DE|DH|DI|DL|DM|DN|DO|DU|DW|DZ|E|EA|EB|ED|EE|EF|EG|EH|EI|EL|EM|EN|ER|ES|EU|EW|F|FB|FD|FF|FG|FI|FL|FN|FO|FR|FS|FT|FÜ|FW|FZ|G|GA|GC|GD|GE|GF|GG|GI|GK|GL|GM|GN|GÖ|GP|GR|GS|GT|GÜ|GV|GW|GZ|H|HA|HB|HC|HD|HE|HF|HG|HH|HI|HK|HL|HM|HN|HO|HP|HR|HS|HU|HV|HX|HY|HZ|IK|IL|IN|IZ|J|JE|JL|K|KA|KB|KC|KE|KF|KG|KH|KI|KK|KL|KM|KN|KO|KR|KS|KT|KU|KW|KY|L|LA|LB|LC|LD|LF|LG|LH|LI|LL|LM|LN|LÖ|LP|LR|LU|M|MA|MB|MC|MD|ME|MG|MH|MI|MK|ML|MM|MN|MO|MQ|MR|MS|MÜ|MW|MY|MZ|N|NB|ND|NE|NF|NH|NI|NK|NM|NÖ|NP|NR|NT|NU|NW|NY|NZ|OA|OB|OC|OD|OE|OF|OG|OH|OK|OL|OP|OS|OZ|P|PA|PB|PE|PF|PI|PL|PM|PN|PR|PS|PW|PZ|R|RA|RC|RD|RE|RG|RH|RI|RL|RM|RN|RO|RP|RS|RT|RU|RV|RW|RZ|S|SB|SC|SE|SG|SI|SK|SL|SM|SN|SO|SP|SR|ST|SU|SW|SY|SZ|TE|TF|TG|TO|TP|TR|TS|TT|TÜ|ÜB|UE|UH|UL|UM|UN|V|VB|VG|VK|VR|VS|W|WA|WB|WE|WF|WI|WK|WL|WM|WN|WO|WR|WS|WT|WÜ|WW|WZ|Z|ZE|ZI|ZP|ZR|ZW|ZZ)[- ]?[A-Z]{1,2}[- ]?\\d{1,4}|(ABG|ABI|AIB|AIC|ALF|ALZ|ANA|ANG|ANK|APD|ARN|ART|ASL|ASZ|AUR|AZE|BAD|BAR|BBG|BCH|BED|BER|BGD|BGL|BID|BIN|BIR|BIT|BIW|BKS|BLB|BLK|BNA|BOG|BOH|BOR|BOT|BRA|BRB|BRG|BRK|BRL|BRV|BSB|BSK|BTF|BÜD|BUL|BÜR|BÜS|BÜZ|CAS|CHA|CLP|CLZ|COC|COE|CUX|DAH|DAN|DAU|DBR|DEG|DEL|DGF|DIL|DIN|DIZ|DKB|DLG|DON|DUD|DÜW|EBE|EBN|EBS|ECK|EIC|EIL|EIN|EIS|EMD|EMS|ERB|ERH|ERK|ERZ|ESB|ESW|FDB|FDS|FEU|FFB|FKB|FLÖ|FOR|FRG|FRI|FRW|FTL|FÜS|GAN|GAP|GDB|GEL|GEO|GER|GHA|GHC|GLA|GMN|GNT|GOA|GOH|GRA|GRH|GRI|GRM|GRZ|GTH|GUB|GUN|GVM|HAB|HAL|HAM|HAS|HBN|HBS|HCH|HDH|HDL|HEB|HEF|HEI|HER|HET|HGN|HGW|HHM|HIG|HIP|HMÜ|HOG|HOH|HOL|HOM|HOR|HÖS|HOT|HRO|HSK|HST|HVL|HWI|IGB|ILL|JÜL|KEH|KEL|KEM|KIB|KLE|KLZ|KÖN|KÖT|KÖZ|KRU|KÜN|KUS|KYF|LAN|LAU|LBS|LBZ|LDK|LDS|LEO|LER|LEV|LIB|LIF|LIP|LÖB|LOS|LRO|LSZ|LÜN|LUP|LWL|MAB|MAI|MAK|MAL|MED|MEG|MEI|MEK|MEL|MER|MET|MGH|MGN|MHL|MIL|MKK|MOD|MOL|MON|MOS|MSE|MSH|MSP|MST|MTK|MTL|MÜB|MÜR|MYK|MZG|NAB|NAI|NAU|NDH|NEA|NEB|NEC|NEN|NES|NEW|NMB|NMS|NOH|NOL|NOM|NOR|NVP|NWM|OAL|OBB|OBG|OCH|OHA|ÖHR|OHV|OHZ|OPR|OSL|OVI|OVL|OVP|PAF|PAN|PAR|PCH|PEG|PIR|PLÖ|PRÜ|QFT|QLB|RDG|REG|REH|REI|RID|RIE|ROD|ROF|ROK|ROL|ROS|ROT|ROW|RSL|RÜD|RÜG|SAB|SAD|SAN|SAW|SBG|SBK|SCZ|SDH|SDL|SDT|SEB|SEE|SEF|SEL|SFB|SFT|SGH|SHA|SHG|SHK|SHL|SIG|SIM|SLE|SLF|SLK|SLN|SLS|SLÜ|SLZ|SMÜ|SOB|SOG|SOK|SÖM|SON|SPB|SPN|SRB|SRO|STA|STB|STD|STE|STL|SUL|SÜW|SWA|SZB|TBB|TDO|TET|TIR|TÖL|TUT|UEM|UER|UFF|USI|VAI|VEC|VER|VIB|VIE|VIT|VOH|WAF|WAK|WAN|WAR|WAT|WBS|WDA|WEL|WEN|WER|WES|WHV|WIL|WIS|WIT|WIZ|WLG|WMS|WND|WOB|WOH|WOL|WOR|WOS|WRN|WSF|WST|WSW|WTL|WTM|WUG|WÜM|WUN|WUR|WZL|ZEL|ZIG)[- ]?(([A-Z][- ]?\\d{1,4})|([A-Z]{2}[- ]?\\d{1,3})))[- ]?(E|H)?$/.test(str);\n },\n 'de-LI': function deLI(str) {\n return /^FL[- ]?\\d{1,5}[UZ]?$/.test(str);\n },\n 'en-IN': function enIN(str) {\n return /^[A-Z]{2}[ -]?[0-9]{1,2}(?:[ -]?[A-Z])(?:[ -]?[A-Z]*)?[ -]?[0-9]{4}$/.test(str);\n },\n 'en-SG': function enSG(str) {\n return /^[A-Z]{3}[ -]?[\\d]{4}[ -]?[A-Z]{1}$/.test(str);\n },\n 'es-AR': function esAR(str) {\n return /^(([A-Z]{2} ?[0-9]{3} ?[A-Z]{2})|([A-Z]{3} ?[0-9]{3}))$/.test(str);\n },\n 'fi-FI': function fiFI(str) {\n return /^(?=.{4,7})(([A-Z]{1,3}|[0-9]{1,3})[\\s-]?([A-Z]{1,3}|[0-9]{1,5}))$/.test(str);\n },\n 'hu-HU': function huHU(str) {\n return /^((((?!AAA)(([A-NPRSTVZWXY]{1})([A-PR-Z]{1})([A-HJ-NPR-Z]))|(A[ABC]I)|A[ABC]O|A[A-W]Q|BPI|BPO|UCO|UDO|XAO)-(?!000)\\d{3})|(M\\d{6})|((CK|DT|CD|HC|H[ABEFIKLMNPRSTVX]|MA|OT|R[A-Z]) \\d{2}-\\d{2})|(CD \\d{3}-\\d{3})|(C-(C|X) \\d{4})|(X-(A|B|C) \\d{4})|(([EPVZ]-\\d{5}))|(S A[A-Z]{2} \\d{2})|(SP \\d{2}-\\d{2}))$/.test(str);\n },\n 'pt-BR': function ptBR(str) {\n return /^[A-Z]{3}[ -]?[0-9][A-Z][0-9]{2}|[A-Z]{3}[ -]?[0-9]{4}$/.test(str);\n },\n 'pt-PT': function ptPT(str) {\n return /^(([A-Z]{2}[ -·]?[0-9]{2}[ -·]?[0-9]{2})|([0-9]{2}[ -·]?[A-Z]{2}[ -·]?[0-9]{2})|([0-9]{2}[ -·]?[0-9]{2}[ -·]?[A-Z]{2})|([A-Z]{2}[ -·]?[0-9]{2}[ -·]?[A-Z]{2}))$/.test(str);\n },\n 'sq-AL': function sqAL(str) {\n return /^[A-Z]{2}[- ]?((\\d{3}[- ]?(([A-Z]{2})|T))|(R[- ]?\\d{3}))$/.test(str);\n },\n 'sv-SE': function svSE(str) {\n return /^[A-HJ-PR-UW-Z]{3} ?[\\d]{2}[A-HJ-PR-UW-Z1-9]$|(^[A-ZÅÄÖ ]{2,7}$)/.test(str.trim());\n },\n 'en-PK': function enPK(str) {\n return /(^[A-Z]{2}((\\s|-){0,1})[0-9]{3,4}((\\s|-)[0-9]{2}){0,1}$)|(^[A-Z]{3}((\\s|-){0,1})[0-9]{3,4}((\\s|-)[0-9]{2}){0,1}$)|(^[A-Z]{4}((\\s|-){0,1})[0-9]{3,4}((\\s|-)[0-9]{2}){0,1}$)|(^[A-Z]((\\s|-){0,1})[0-9]{4}((\\s|-)[0-9]{2}){0,1}$)/.test(str.trim());\n }\n};\nfunction isLicensePlate(str, locale) {\n (0, _assertString.default)(str);\n if (locale in validators) {\n return validators[locale](str);\n } else if (locale === 'any') {\n for (var key in validators) {\n /* eslint guard-for-in: 0 */\n var validator = validators[key];\n if (validator(str)) {\n return true;\n }\n }\n return false;\n }\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLocale;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n/*\n = 3ALPHA ; selected ISO 639 codes\n *2(\"-\" 3ALPHA) ; permanently reserved\n */\nvar extlang = '([A-Za-z]{3}(-[A-Za-z]{3}){0,2})';\n\n/*\n = 2*3ALPHA ; shortest ISO 639 code\n [\"-\" extlang] ; sometimes followed by\n ; extended language subtags\n / 4ALPHA ; or reserved for future use\n / 5*8ALPHA ; or registered language subtag\n */\nvar language = \"(([a-zA-Z]{2,3}(-\".concat(extlang, \")?)|([a-zA-Z]{5,8}))\");\n\n/*\n = 4ALPHA ; ISO 15924 code\n */\nvar script = '([A-Za-z]{4})';\n\n/*\n = 2ALPHA ; ISO 3166-1 code\n / 3DIGIT ; UN M.49 code\n */\nvar region = '([A-Za-z]{2}|\\\\d{3})';\n\n/*\n = 5*8alphanum ; registered variants\n / (DIGIT 3alphanum)\n */\nvar variant = '([A-Za-z0-9]{5,8}|(\\\\d[A-Z-a-z0-9]{3}))';\n\n/*\n = DIGIT ; 0 - 9\n / %x41-57 ; A - W\n / %x59-5A ; Y - Z\n / %x61-77 ; a - w\n / %x79-7A ; y - z\n */\nvar singleton = '(\\\\d|[A-W]|[Y-Z]|[a-w]|[y-z])';\n\n/*\n = singleton 1*(\"-\" (2*8alphanum))\n ; Single alphanumerics\n ; \"x\" reserved for private use\n */\nvar extension = \"(\".concat(singleton, \"(-[A-Za-z0-9]{2,8})+)\");\n\n/*\n = \"x\" 1*(\"-\" (1*8alphanum))\n */\nvar privateuse = '(x(-[A-Za-z0-9]{1,8})+)';\n\n// irregular tags do not match the 'langtag' production and would not\n// otherwise be considered 'well-formed'. These tags are all valid, but\n// most are deprecated in favor of more modern subtags or subtag combination\n\nvar irregular = '((en-GB-oed)|(i-ami)|(i-bnn)|(i-default)|(i-enochian)|' + '(i-hak)|(i-klingon)|(i-lux)|(i-mingo)|(i-navajo)|(i-pwn)|(i-tao)|' + '(i-tay)|(i-tsu)|(sgn-BE-FR)|(sgn-BE-NL)|(sgn-CH-DE))';\n\n// regular tags match the 'langtag' production, but their subtags are not\n// extended language or variant subtags: their meaning is defined by\n// their registration and all of these are deprecated in favor of a more\n// modern subtag or sequence of subtags\n\nvar regular = '((art-lojban)|(cel-gaulish)|(no-bok)|(no-nyn)|(zh-guoyu)|' + '(zh-hakka)|(zh-min)|(zh-min-nan)|(zh-xiang))';\n\n/*\n = irregular ; non-redundant tags registered\n / regular ; during the RFC 3066 era\n\n */\nvar grandfathered = \"(\".concat(irregular, \"|\").concat(regular, \")\");\n\n/*\n RFC 5646 defines delimitation of subtags via a hyphen:\n\n \"Subtag\" refers to a specific section of a tag, delimited by a\n hyphen, such as the subtags 'zh', 'Hant', and 'CN' in the tag \"zh-\n Hant-CN\". Examples of subtags in this document are enclosed in\n single quotes ('Hant')\n\n However, we need to add \"_\" to maintain the existing behaviour.\n */\nvar delimiter = '(-|_)';\n\n/*\n = language\n [\"-\" script]\n [\"-\" region]\n *(\"-\" variant)\n *(\"-\" extension)\n [\"-\" privateuse]\n */\nvar langtag = \"\".concat(language, \"(\").concat(delimiter).concat(script, \")?(\").concat(delimiter).concat(region, \")?(\").concat(delimiter).concat(variant, \")*(\").concat(delimiter).concat(extension, \")*(\").concat(delimiter).concat(privateuse, \")?\");\n\n/*\n Regex implementation based on BCP RFC 5646\n Tags for Identifying Languages\n https://www.rfc-editor.org/rfc/rfc5646.html\n */\nvar languageTagRegex = new RegExp(\"(^\".concat(privateuse, \"$)|(^\").concat(grandfathered, \"$)|(^\").concat(langtag, \"$)\"));\nfunction isLocale(str) {\n (0, _assertString.default)(str);\n return languageTagRegex.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLowercase;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction isLowercase(str) {\n (0, _assertString.default)(str);\n return str === str.toLowerCase();\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLuhnNumber;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction isLuhnNumber(str) {\n (0, _assertString.default)(str);\n var sanitized = str.replace(/[- ]+/g, '');\n var sum = 0;\n var digit;\n var tmpNum;\n var shouldDouble;\n for (var i = sanitized.length - 1; i >= 0; i--) {\n digit = sanitized.substring(i, i + 1);\n tmpNum = parseInt(digit, 10);\n if (shouldDouble) {\n tmpNum *= 2;\n if (tmpNum >= 10) {\n sum += tmpNum % 10 + 1;\n } else {\n sum += tmpNum;\n }\n } else {\n sum += tmpNum;\n }\n shouldDouble = !shouldDouble;\n }\n return !!(sum % 10 === 0 ? sanitized : false);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMACAddress;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar macAddress48 = /^(?:[0-9a-fA-F]{2}([-:\\s]))([0-9a-fA-F]{2}\\1){4}([0-9a-fA-F]{2})$/;\nvar macAddress48NoSeparators = /^([0-9a-fA-F]){12}$/;\nvar macAddress48WithDots = /^([0-9a-fA-F]{4}\\.){2}([0-9a-fA-F]{4})$/;\nvar macAddress64 = /^(?:[0-9a-fA-F]{2}([-:\\s]))([0-9a-fA-F]{2}\\1){6}([0-9a-fA-F]{2})$/;\nvar macAddress64NoSeparators = /^([0-9a-fA-F]){16}$/;\nvar macAddress64WithDots = /^([0-9a-fA-F]{4}\\.){3}([0-9a-fA-F]{4})$/;\nfunction isMACAddress(str, options) {\n (0, _assertString.default)(str);\n if (options !== null && options !== void 0 && options.eui) {\n options.eui = String(options.eui);\n }\n /**\n * @deprecated `no_colons` TODO: remove it in the next major\n */\n if (options !== null && options !== void 0 && options.no_colons || options !== null && options !== void 0 && options.no_separators) {\n if (options.eui === '48') {\n return macAddress48NoSeparators.test(str);\n }\n if (options.eui === '64') {\n return macAddress64NoSeparators.test(str);\n }\n return macAddress48NoSeparators.test(str) || macAddress64NoSeparators.test(str);\n }\n if ((options === null || options === void 0 ? void 0 : options.eui) === '48') {\n return macAddress48.test(str) || macAddress48WithDots.test(str);\n }\n if ((options === null || options === void 0 ? void 0 : options.eui) === '64') {\n return macAddress64.test(str) || macAddress64WithDots.test(str);\n }\n return isMACAddress(str, {\n eui: '48'\n }) || isMACAddress(str, {\n eui: '64'\n });\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMD5;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar md5 = /^[a-f0-9]{32}$/;\nfunction isMD5(str) {\n (0, _assertString.default)(str);\n return md5.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMagnetURI;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar magnetURIComponent = /(?:^magnet:\\?|[^?&]&)xt(?:\\.1)?=urn:(?:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?|btmh:1220[a-z0-9]{64})(?:$|&)/i;\nfunction isMagnetURI(url) {\n (0, _assertString.default)(url);\n if (url.indexOf('magnet:?') !== 0) {\n return false;\n }\n return magnetURIComponent.test(url);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMailtoURI;\nvar _trim = _interopRequireDefault(require(\"./trim\"));\nvar _isEmail = _interopRequireDefault(require(\"./isEmail\"));\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction parseMailtoQueryString(queryString) {\n var allowedParams = new Set(['subject', 'body', 'cc', 'bcc']),\n query = {\n cc: '',\n bcc: ''\n };\n var isParseFailed = false;\n var queryParams = queryString.split('&');\n if (queryParams.length > 4) {\n return false;\n }\n var _iterator = _createForOfIteratorHelper(queryParams),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var q = _step.value;\n var _q$split = q.split('='),\n _q$split2 = _slicedToArray(_q$split, 2),\n key = _q$split2[0],\n value = _q$split2[1];\n\n // checked for invalid and duplicated query params\n if (key && !allowedParams.has(key)) {\n isParseFailed = true;\n break;\n }\n if (value && (key === 'cc' || key === 'bcc')) {\n query[key] = value;\n }\n if (key) {\n allowedParams.delete(key);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return isParseFailed ? false : query;\n}\nfunction isMailtoURI(url, options) {\n (0, _assertString.default)(url);\n if (url.indexOf('mailto:') !== 0) {\n return false;\n }\n var _url$replace$split = url.replace('mailto:', '').split('?'),\n _url$replace$split2 = _slicedToArray(_url$replace$split, 2),\n to = _url$replace$split2[0],\n _url$replace$split2$ = _url$replace$split2[1],\n queryString = _url$replace$split2$ === void 0 ? '' : _url$replace$split2$;\n if (!to && !queryString) {\n return true;\n }\n var query = parseMailtoQueryString(queryString);\n if (!query) {\n return false;\n }\n return \"\".concat(to, \",\").concat(query.cc, \",\").concat(query.bcc).split(',').every(function (email) {\n email = (0, _trim.default)(email, ' ');\n if (email) {\n return (0, _isEmail.default)(email, options);\n }\n return true;\n });\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMimeType;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n/*\n Checks if the provided string matches to a correct Media type format (MIME type)\n\n This function only checks is the string format follows the\n established rules by the according RFC specifications.\n This function supports 'charset' in textual media types\n (https://tools.ietf.org/html/rfc6657).\n\n This function does not check against all the media types listed\n by the IANA (https://www.iana.org/assignments/media-types/media-types.xhtml)\n because of lightness purposes : it would require to include\n all these MIME types in this library, which would weigh it\n significantly. This kind of effort maybe is not worth for the use that\n this function has in this entire library.\n\n More information in the RFC specifications :\n - https://tools.ietf.org/html/rfc2045\n - https://tools.ietf.org/html/rfc2046\n - https://tools.ietf.org/html/rfc7231#section-3.1.1.1\n - https://tools.ietf.org/html/rfc7231#section-3.1.1.5\n*/\n\n// Match simple MIME types\n// NB :\n// Subtype length must not exceed 100 characters.\n// This rule does not comply to the RFC specs (what is the max length ?).\nvar mimeTypeSimple = /^(application|audio|font|image|message|model|multipart|text|video)\\/[a-zA-Z0-9\\.\\-\\+_]{1,100}$/i; // eslint-disable-line max-len\n\n// Handle \"charset\" in \"text/*\"\nvar mimeTypeText = /^text\\/[a-zA-Z0-9\\.\\-\\+]{1,100};\\s?charset=(\"[a-zA-Z0-9\\.\\-\\+\\s]{0,70}\"|[a-zA-Z0-9\\.\\-\\+]{0,70})(\\s?\\([a-zA-Z0-9\\.\\-\\+\\s]{1,20}\\))?$/i; // eslint-disable-line max-len\n\n// Handle \"boundary\" in \"multipart/*\"\nvar mimeTypeMultipart = /^multipart\\/[a-zA-Z0-9\\.\\-\\+]{1,100}(;\\s?(boundary|charset)=(\"[a-zA-Z0-9\\.\\-\\+\\s]{0,70}\"|[a-zA-Z0-9\\.\\-\\+]{0,70})(\\s?\\([a-zA-Z0-9\\.\\-\\+\\s]{1,20}\\))?){0,2}$/i; // eslint-disable-line max-len\n\nfunction isMimeType(str) {\n (0, _assertString.default)(str);\n return mimeTypeSimple.test(str) || mimeTypeText.test(str) || mimeTypeMultipart.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMobilePhone;\nexports.locales = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n/* eslint-disable max-len */\nvar phones = {\n 'am-AM': /^(\\+?374|0)(33|4[134]|55|77|88|9[13-689])\\d{6}$/,\n 'ar-AE': /^((\\+?971)|0)?5[024568]\\d{7}$/,\n 'ar-BH': /^(\\+?973)?(3|6)\\d{7}$/,\n 'ar-DZ': /^(\\+?213|0)(5|6|7)\\d{8}$/,\n 'ar-LB': /^(\\+?961)?((3|81)\\d{6}|7\\d{7})$/,\n 'ar-EG': /^((\\+?20)|0)?1[0125]\\d{8}$/,\n 'ar-IQ': /^(\\+?964|0)?7[0-9]\\d{8}$/,\n 'ar-JO': /^(\\+?962|0)?7[789]\\d{7}$/,\n 'ar-KW': /^(\\+?965)([569]\\d{7}|41\\d{6})$/,\n 'ar-LY': /^((\\+?218)|0)?(9[1-6]\\d{7}|[1-8]\\d{7,9})$/,\n 'ar-MA': /^(?:(?:\\+|00)212|0)[5-7]\\d{8}$/,\n 'ar-OM': /^((\\+|00)968)?([79][1-9])\\d{6}$/,\n 'ar-PS': /^(\\+?970|0)5[6|9](\\d{7})$/,\n 'ar-SA': /^(!?(\\+?966)|0)?5\\d{8}$/,\n 'ar-SD': /^((\\+?249)|0)?(9[012369]|1[012])\\d{7}$/,\n 'ar-SY': /^(!?(\\+?963)|0)?9\\d{8}$/,\n 'ar-TN': /^(\\+?216)?[2459]\\d{7}$/,\n 'az-AZ': /^(\\+994|0)(10|5[015]|7[07]|99)\\d{7}$/,\n 'bs-BA': /^((((\\+|00)3876)|06))((([0-3]|[5-6])\\d{6})|(4\\d{7}))$/,\n 'be-BY': /^(\\+?375)?(24|25|29|33|44)\\d{7}$/,\n 'bg-BG': /^(\\+?359|0)?8[789]\\d{7}$/,\n 'bn-BD': /^(\\+?880|0)1[13456789][0-9]{8}$/,\n 'ca-AD': /^(\\+376)?[346]\\d{5}$/,\n 'cs-CZ': /^(\\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,\n 'da-DK': /^(\\+?45)?\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}$/,\n 'de-DE': /^((\\+49|0)1)(5[0-25-9]\\d|6([23]|0\\d?)|7([0-57-9]|6\\d))\\d{7,9}$/,\n 'de-AT': /^(\\+43|0)\\d{1,4}\\d{3,12}$/,\n 'de-CH': /^(\\+41|0)([1-9])\\d{1,9}$/,\n 'de-LU': /^(\\+352)?((6\\d1)\\d{6})$/,\n 'dv-MV': /^(\\+?960)?(7[2-9]|9[1-9])\\d{5}$/,\n 'el-GR': /^(\\+?30|0)?6(8[5-9]|9(?![26])[0-9])\\d{7}$/,\n 'el-CY': /^(\\+?357?)?(9(9|7|6|5|4)\\d{6})$/,\n 'en-AI': /^(\\+?1|0)264(?:2(35|92)|4(?:6[1-2]|76|97)|5(?:3[6-9]|8[1-4])|7(?:2(4|9)|72))\\d{4}$/,\n 'en-AU': /^(\\+?61|0)4\\d{8}$/,\n 'en-AG': /^(?:\\+1|1)268(?:464|7(?:1[3-9]|[28]\\d|3[0246]|64|7[0-689]))\\d{4}$/,\n 'en-BM': /^(\\+?1)?441(((3|7)\\d{6}$)|(5[0-3][0-9]\\d{4}$)|(59\\d{5}$))/,\n 'en-BS': /^(\\+?1[-\\s]?|0)?\\(?242\\)?[-\\s]?\\d{3}[-\\s]?\\d{4}$/,\n 'en-GB': /^(\\+?44|0)7[1-9]\\d{8}$/,\n 'en-GG': /^(\\+?44|0)1481\\d{6}$/,\n 'en-GH': /^(\\+233|0)(20|50|24|54|27|57|26|56|23|53|28|55|59)\\d{7}$/,\n 'en-GY': /^(\\+592|0)6\\d{6}$/,\n 'en-HK': /^(\\+?852[-\\s]?)?[456789]\\d{3}[-\\s]?\\d{4}$/,\n 'en-MO': /^(\\+?853[-\\s]?)?[6]\\d{3}[-\\s]?\\d{4}$/,\n 'en-IE': /^(\\+?353|0)8[356789]\\d{7}$/,\n 'en-IN': /^(\\+?91|0)?[6789]\\d{9}$/,\n 'en-JM': /^(\\+?876)?\\d{7}$/,\n 'en-KE': /^(\\+?254|0)(7|1)\\d{8}$/,\n 'fr-CF': /^(\\+?236| ?)(70|75|77|72|21|22)\\d{6}$/,\n 'en-SS': /^(\\+?211|0)(9[1257])\\d{7}$/,\n 'en-KI': /^((\\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/,\n 'en-KN': /^(?:\\+1|1)869(?:46\\d|48[89]|55[6-8]|66\\d|76[02-7])\\d{4}$/,\n 'en-LS': /^(\\+?266)(22|28|57|58|59|27|52)\\d{6}$/,\n 'en-MT': /^(\\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/,\n 'en-MU': /^(\\+?230|0)?\\d{8}$/,\n 'en-MW': /^(\\+?265|0)(((77|88|31|99|98|21)\\d{7})|(((111)|1)\\d{6})|(32000\\d{4}))$/,\n 'en-NA': /^(\\+?264|0)(6|8)\\d{7}$/,\n 'en-NG': /^(\\+?234|0)?[789]\\d{9}$/,\n 'en-NZ': /^(\\+?64|0)[28]\\d{7,9}$/,\n 'en-PG': /^(\\+?675|0)?(7\\d|8[18])\\d{6}$/,\n 'en-PK': /^((00|\\+)?92|0)3[0-6]\\d{8}$/,\n 'en-PH': /^(09|\\+639)\\d{9}$/,\n 'en-RW': /^(\\+?250|0)?[7]\\d{8}$/,\n 'en-SG': /^(\\+65)?[3689]\\d{7}$/,\n 'en-SL': /^(\\+?232|0)\\d{8}$/,\n 'en-TZ': /^(\\+?255|0)?[67]\\d{8}$/,\n 'en-UG': /^(\\+?256|0)?[7]\\d{8}$/,\n 'en-US': /^((\\+1|1)?( |-)?)?(\\([2-9][0-9]{2}\\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/,\n 'en-ZA': /^(\\+?27|0)\\d{9}$/,\n 'en-ZM': /^(\\+?26)?0[79][567]\\d{7}$/,\n 'en-ZW': /^(\\+263)[0-9]{9}$/,\n 'en-BW': /^(\\+?267)?(7[1-8]{1})\\d{6}$/,\n 'es-AR': /^\\+?549(11|[2368]\\d)\\d{8}$/,\n 'es-BO': /^(\\+?591)?(6|7)\\d{7}$/,\n 'es-CO': /^(\\+?57)?3(0(0|1|2|4|5)|1\\d|2[0-4]|5(0|1))\\d{7}$/,\n 'es-CL': /^(\\+?56|0)[2-9]\\d{1}\\d{7}$/,\n 'es-CR': /^(\\+506)?[2-8]\\d{7}$/,\n 'es-CU': /^(\\+53|0053)?5\\d{7}$/,\n 'es-DO': /^(\\+?1)?8[024]9\\d{7}$/,\n 'es-HN': /^(\\+?504)?[9|8|3|2]\\d{7}$/,\n 'es-EC': /^(\\+?593|0)([2-7]|9[2-9])\\d{7}$/,\n 'es-ES': /^(\\+?34)?[6|7]\\d{8}$/,\n 'es-GT': /^(\\+?502)?[2|6|7]\\d{7}$/,\n 'es-PE': /^(\\+?51)?9\\d{8}$/,\n 'es-MX': /^(\\+?52)?(1|01)?\\d{10,11}$/,\n 'es-NI': /^(\\+?505)\\d{7,8}$/,\n 'es-PA': /^(\\+?507)\\d{7,8}$/,\n 'es-PY': /^(\\+?595|0)9[9876]\\d{7}$/,\n 'es-SV': /^(\\+?503)?[67]\\d{7}$/,\n 'es-UY': /^(\\+598|0)9[1-9][\\d]{6}$/,\n 'es-VE': /^(\\+?58)?(2|4)\\d{9}$/,\n 'et-EE': /^(\\+?372)?\\s?(5|8[1-4])\\s?([0-9]\\s?){6,7}$/,\n 'fa-IR': /^(\\+?98[\\-\\s]?|0)9[0-39]\\d[\\-\\s]?\\d{3}[\\-\\s]?\\d{4}$/,\n 'fi-FI': /^(\\+?358|0)\\s?(4[0-6]|50)\\s?(\\d\\s?){4,8}$/,\n 'fj-FJ': /^(\\+?679)?\\s?\\d{3}\\s?\\d{4}$/,\n 'fo-FO': /^(\\+?298)?\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}$/,\n 'fr-BF': /^(\\+226|0)[67]\\d{7}$/,\n 'fr-BJ': /^(\\+229)\\d{8}$/,\n 'fr-CD': /^(\\+?243|0)?(8|9)\\d{8}$/,\n 'fr-CM': /^(\\+?237)6[0-9]{8}$/,\n 'fr-FR': /^(\\+?33|0)[67]\\d{8}$/,\n 'fr-GF': /^(\\+?594|0|00594)[67]\\d{8}$/,\n 'fr-GP': /^(\\+?590|0|00590)[67]\\d{8}$/,\n 'fr-MQ': /^(\\+?596|0|00596)[67]\\d{8}$/,\n 'fr-PF': /^(\\+?689)?8[789]\\d{6}$/,\n 'fr-RE': /^(\\+?262|0|00262)[67]\\d{8}$/,\n 'fr-WF': /^(\\+681)?\\d{6}$/,\n 'he-IL': /^(\\+972|0)([23489]|5[012345689]|77)[1-9]\\d{6}$/,\n 'hu-HU': /^(\\+?36|06)(20|30|31|50|70)\\d{7}$/,\n 'id-ID': /^(\\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\\s?|\\d]{5,11})$/,\n 'ir-IR': /^(\\+98|0)?9\\d{9}$/,\n 'it-IT': /^(\\+?39)?\\s?3\\d{2} ?\\d{6,7}$/,\n 'it-SM': /^((\\+378)|(0549)|(\\+390549)|(\\+3780549))?6\\d{5,9}$/,\n 'ja-JP': /^(\\+81[ \\-]?(\\(0\\))?|0)[6789]0[ \\-]?\\d{4}[ \\-]?\\d{4}$/,\n 'ka-GE': /^(\\+?995)?(79\\d{7}|5\\d{8})$/,\n 'kk-KZ': /^(\\+?7|8)?7\\d{9}$/,\n 'kl-GL': /^(\\+?299)?\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}$/,\n 'ko-KR': /^((\\+?82)[ \\-]?)?0?1([0|1|6|7|8|9]{1})[ \\-]?\\d{3,4}[ \\-]?\\d{4}$/,\n 'ky-KG': /^(\\+996\\s?)?(22[0-9]|50[0-9]|55[0-9]|70[0-9]|75[0-9]|77[0-9]|880|990|995|996|997|998)\\s?\\d{3}\\s?\\d{3}$/,\n 'lt-LT': /^(\\+370|8)\\d{8}$/,\n 'lv-LV': /^(\\+?371)2\\d{7}$/,\n 'mg-MG': /^((\\+?261|0)(2|3)\\d)?\\d{7}$/,\n 'mn-MN': /^(\\+|00|011)?976(77|81|88|91|94|95|96|99)\\d{6}$/,\n 'my-MM': /^(\\+?959|09|9)(2[5-7]|3[1-2]|4[0-5]|6[6-9]|7[5-9]|9[6-9])[0-9]{7}$/,\n 'ms-MY': /^(\\+?60|0)1(([0145](-|\\s)?\\d{7,8})|([236-9](-|\\s)?\\d{7}))$/,\n 'mz-MZ': /^(\\+?258)?8[234567]\\d{7}$/,\n 'nb-NO': /^(\\+?47)?[49]\\d{7}$/,\n 'ne-NP': /^(\\+?977)?9[78]\\d{8}$/,\n 'nl-BE': /^(\\+?32|0)4\\d{8}$/,\n 'nl-NL': /^(((\\+|00)?31\\(0\\))|((\\+|00)?31)|0)6{1}\\d{8}$/,\n 'nl-AW': /^(\\+)?297(56|59|64|73|74|99)\\d{5}$/,\n 'nn-NO': /^(\\+?47)?[49]\\d{7}$/,\n 'pl-PL': /^(\\+?48)? ?([5-8]\\d|45) ?\\d{3} ?\\d{2} ?\\d{2}$/,\n 'pt-BR': /^((\\+?55\\ ?[1-9]{2}\\ ?)|(\\+?55\\ ?\\([1-9]{2}\\)\\ ?)|(0[1-9]{2}\\ ?)|(\\([1-9]{2}\\)\\ ?)|([1-9]{2}\\ ?))((\\d{4}\\-?\\d{4})|(9[1-9]{1}\\d{3}\\-?\\d{4}))$/,\n 'pt-PT': /^(\\+?351)?9[1236]\\d{7}$/,\n 'pt-AO': /^(\\+?244)?9\\d{8}$/,\n 'ro-MD': /^(\\+?373|0)((6(0|1|2|6|7|8|9))|(7(6|7|8|9)))\\d{6}$/,\n 'ro-RO': /^(\\+?40|0)\\s?7\\d{2}(\\/|\\s|\\.|-)?\\d{3}(\\s|\\.|-)?\\d{3}$/,\n 'ru-RU': /^(\\+?7|8)?9\\d{9}$/,\n 'si-LK': /^(?:0|94|\\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\\d{7}$/,\n 'sl-SI': /^(\\+386\\s?|0)(\\d{1}\\s?\\d{3}\\s?\\d{2}\\s?\\d{2}|\\d{2}\\s?\\d{3}\\s?\\d{3})$/,\n 'sk-SK': /^(\\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,\n 'so-SO': /^(\\+?252|0)((6[0-9])\\d{7}|(7[1-9])\\d{7})$/,\n 'sq-AL': /^(\\+355|0)6[2-9]\\d{7}$/,\n 'sr-RS': /^(\\+3816|06)[- \\d]{5,9}$/,\n 'sv-SE': /^(\\+?46|0)[\\s\\-]?7[\\s\\-]?[02369]([\\s\\-]?\\d){7}$/,\n 'tg-TJ': /^(\\+?992)?[5][5]\\d{7}$/,\n 'th-TH': /^(\\+66|66|0)\\d{9}$/,\n 'tr-TR': /^(\\+?90|0)?5\\d{9}$/,\n 'tk-TM': /^(\\+993|993|8)\\d{8}$/,\n 'uk-UA': /^(\\+?38)?0(50|6[36-8]|7[357]|9[1-9])\\d{7}$/,\n 'uz-UZ': /^(\\+?998)?(6[125-79]|7[1-69]|88|9\\d)\\d{7}$/,\n 'vi-VN': /^((\\+?84)|0)((3([2-9]))|(5([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/,\n 'zh-CN': /^((\\+|00)86)?(1[3-9]|9[28])\\d{9}$/,\n 'zh-TW': /^(\\+?886\\-?|0)?9\\d{8}$/,\n 'dz-BT': /^(\\+?975|0)?(17|16|77|02)\\d{6}$/,\n 'ar-YE': /^(((\\+|00)9677|0?7)[0137]\\d{7}|((\\+|00)967|0)[1-7]\\d{6})$/,\n 'ar-EH': /^(\\+?212|0)[\\s\\-]?(5288|5289)[\\s\\-]?\\d{5}$/,\n 'fa-AF': /^(\\+93|0)?(2{1}[0-8]{1}|[3-5]{1}[0-4]{1})(\\d{7})$/,\n 'mk-MK': /^(\\+?389|0)?((?:2[2-9]\\d{6}|(?:3[1-4]|4[2-8])\\d{6}|500\\d{5}|5[2-9]\\d{6}|7[0-9][2-9]\\d{5}|8[1-9]\\d{6}|800\\d{5}|8009\\d{4}))$/\n};\n/* eslint-enable max-len */\n\n// aliases\nphones['en-CA'] = phones['en-US'];\nphones['fr-CA'] = phones['en-CA'];\nphones['fr-BE'] = phones['nl-BE'];\nphones['zh-HK'] = phones['en-HK'];\nphones['zh-MO'] = phones['en-MO'];\nphones['ga-IE'] = phones['en-IE'];\nphones['fr-CH'] = phones['de-CH'];\nphones['it-CH'] = phones['fr-CH'];\nfunction isMobilePhone(str, locale, options) {\n (0, _assertString.default)(str);\n if (options && options.strictMode && !str.startsWith('+')) {\n return false;\n }\n if (Array.isArray(locale)) {\n return locale.some(function (key) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if (phones.hasOwnProperty(key)) {\n var phone = phones[key];\n if (phone.test(str)) {\n return true;\n }\n }\n return false;\n });\n } else if (locale in phones) {\n return phones[locale].test(str);\n // alias falsey locale as 'any'\n } else if (!locale || locale === 'any') {\n for (var key in phones) {\n // istanbul ignore else\n if (phones.hasOwnProperty(key)) {\n var phone = phones[key];\n if (phone.test(str)) {\n return true;\n }\n }\n }\n return false;\n }\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\nvar locales = exports.locales = Object.keys(phones);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMongoId;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isHexadecimal = _interopRequireDefault(require(\"./isHexadecimal\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction isMongoId(str) {\n (0, _assertString.default)(str);\n return (0, _isHexadecimal.default)(str) && str.length === 24;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMultibyte;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n/* eslint-disable no-control-regex */\nvar multibyte = /[^\\x00-\\x7F]/;\n/* eslint-enable no-control-regex */\n\nfunction isMultibyte(str) {\n (0, _assertString.default)(str);\n return multibyte.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isNumeric;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _alpha = require(\"./alpha\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar numericNoSymbols = /^[0-9]+$/;\nfunction isNumeric(str, options) {\n (0, _assertString.default)(str);\n if (options && options.no_symbols) {\n return numericNoSymbols.test(str);\n }\n return new RegExp(\"^[+-]?([0-9]*[\".concat((options || {}).locale ? _alpha.decimal[options.locale] : '.', \"])?[0-9]+$\")).test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isOctal;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar octal = /^(0o)?[0-7]+$/i;\nfunction isOctal(str) {\n (0, _assertString.default)(str);\n return octal.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPassportNumber;\nexports.locales = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n/**\n * Reference:\n * https://en.wikipedia.org/ -- Wikipedia\n * https://docs.microsoft.com/en-us/microsoft-365/compliance/eu-passport-number -- EU Passport Number\n * https://countrycode.org/ -- Country Codes\n */\nvar passportRegexByCountryCode = {\n AM: /^[A-Z]{2}\\d{7}$/,\n // ARMENIA\n AR: /^[A-Z]{3}\\d{6}$/,\n // ARGENTINA\n AT: /^[A-Z]\\d{7}$/,\n // AUSTRIA\n AU: /^[A-Z]\\d{7}$/,\n // AUSTRALIA\n AZ: /^[A-Z]{1}\\d{8}$/,\n // AZERBAIJAN\n BE: /^[A-Z]{2}\\d{6}$/,\n // BELGIUM\n BG: /^\\d{9}$/,\n // BULGARIA\n BR: /^[A-Z]{2}\\d{6}$/,\n // BRAZIL\n BY: /^[A-Z]{2}\\d{7}$/,\n // BELARUS\n CA: /^[A-Z]{2}\\d{6}$|^[A-Z]\\d{6}[A-Z]{2}$/,\n // CANADA\n CH: /^[A-Z]\\d{7}$/,\n // SWITZERLAND\n CN: /^G\\d{8}$|^E(?![IO])[A-Z0-9]\\d{7}$/,\n // CHINA [G=Ordinary, E=Electronic] followed by 8-digits, or E followed by any UPPERCASE letter (except I and O) followed by 7 digits\n CY: /^[A-Z](\\d{6}|\\d{8})$/,\n // CYPRUS\n CZ: /^\\d{8}$/,\n // CZECH REPUBLIC\n DE: /^[CFGHJKLMNPRTVWXYZ0-9]{9}$/,\n // GERMANY\n DK: /^\\d{9}$/,\n // DENMARK\n DZ: /^\\d{9}$/,\n // ALGERIA\n EE: /^([A-Z]\\d{7}|[A-Z]{2}\\d{7})$/,\n // ESTONIA (K followed by 7-digits), e-passports have 2 UPPERCASE followed by 7 digits\n ES: /^[A-Z0-9]{2}([A-Z0-9]?)\\d{6}$/,\n // SPAIN\n FI: /^[A-Z]{2}\\d{7}$/,\n // FINLAND\n FR: /^\\d{2}[A-Z]{2}\\d{5}$/,\n // FRANCE\n GB: /^\\d{9}$/,\n // UNITED KINGDOM\n GR: /^[A-Z]{2}\\d{7}$/,\n // GREECE\n HR: /^\\d{9}$/,\n // CROATIA\n HU: /^[A-Z]{2}(\\d{6}|\\d{7})$/,\n // HUNGARY\n IE: /^[A-Z0-9]{2}\\d{7}$/,\n // IRELAND\n IN: /^[A-Z]{1}-?\\d{7}$/,\n // INDIA\n ID: /^[A-C]\\d{7}$/,\n // INDONESIA\n IR: /^[A-Z]\\d{8}$/,\n // IRAN\n IS: /^(A)\\d{7}$/,\n // ICELAND\n IT: /^[A-Z0-9]{2}\\d{7}$/,\n // ITALY\n JM: /^[Aa]\\d{7}$/,\n // JAMAICA\n JP: /^[A-Z]{2}\\d{7}$/,\n // JAPAN\n KR: /^[MS]\\d{8}$/,\n // SOUTH KOREA, REPUBLIC OF KOREA, [S=PS Passports, M=PM Passports]\n KZ: /^[a-zA-Z]\\d{7}$/,\n // KAZAKHSTAN\n LI: /^[a-zA-Z]\\d{5}$/,\n // LIECHTENSTEIN\n LT: /^[A-Z0-9]{8}$/,\n // LITHUANIA\n LU: /^[A-Z0-9]{8}$/,\n // LUXEMBURG\n LV: /^[A-Z0-9]{2}\\d{7}$/,\n // LATVIA\n LY: /^[A-Z0-9]{8}$/,\n // LIBYA\n MT: /^\\d{7}$/,\n // MALTA\n MZ: /^([A-Z]{2}\\d{7})|(\\d{2}[A-Z]{2}\\d{5})$/,\n // MOZAMBIQUE\n MY: /^[AHK]\\d{8}$/,\n // MALAYSIA\n MX: /^\\d{10,11}$/,\n // MEXICO\n NL: /^[A-Z]{2}[A-Z0-9]{6}\\d$/,\n // NETHERLANDS\n NZ: /^([Ll]([Aa]|[Dd]|[Ff]|[Hh])|[Ee]([Aa]|[Pp])|[Nn])\\d{6}$/,\n // NEW ZEALAND\n PH: /^([A-Z](\\d{6}|\\d{7}[A-Z]))|([A-Z]{2}(\\d{6}|\\d{7}))$/,\n // PHILIPPINES\n PK: /^[A-Z]{2}\\d{7}$/,\n // PAKISTAN\n PL: /^[A-Z]{2}\\d{7}$/,\n // POLAND\n PT: /^[A-Z]\\d{6}$/,\n // PORTUGAL\n RO: /^\\d{8,9}$/,\n // ROMANIA\n RU: /^\\d{9}$/,\n // RUSSIAN FEDERATION\n SE: /^\\d{8}$/,\n // SWEDEN\n SL: /^(P)[A-Z]\\d{7}$/,\n // SLOVENIA\n SK: /^[0-9A-Z]\\d{7}$/,\n // SLOVAKIA\n TH: /^[A-Z]{1,2}\\d{6,7}$/,\n // THAILAND\n TR: /^[A-Z]\\d{8}$/,\n // TURKEY\n UA: /^[A-Z]{2}\\d{6}$/,\n // UKRAINE\n US: /^\\d{9}$|^[A-Z]\\d{8}$/,\n // UNITED STATES\n ZA: /^[TAMD]\\d{8}$/ // SOUTH AFRICA\n};\nvar locales = exports.locales = Object.keys(passportRegexByCountryCode);\n\n/**\n * Check if str is a valid passport number\n * relative to provided ISO Country Code.\n *\n * @param {string} str\n * @param {string} countryCode\n * @return {boolean}\n */\nfunction isPassportNumber(str, countryCode) {\n (0, _assertString.default)(str);\n /** Remove All Whitespaces, Convert to UPPERCASE */\n var normalizedStr = str.replace(/\\s/g, '').toUpperCase();\n return countryCode.toUpperCase() in passportRegexByCountryCode && passportRegexByCountryCode[countryCode].test(normalizedStr);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPort;\nvar _isInt = _interopRequireDefault(require(\"./isInt\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction isPort(str) {\n return (0, _isInt.default)(str, {\n allow_leading_zeroes: false,\n min: 0,\n max: 65535\n });\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPostalCode;\nexports.locales = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n// common patterns\nvar threeDigit = /^\\d{3}$/;\nvar fourDigit = /^\\d{4}$/;\nvar fiveDigit = /^\\d{5}$/;\nvar sixDigit = /^\\d{6}$/;\nvar patterns = {\n AD: /^AD\\d{3}$/,\n AT: fourDigit,\n AU: fourDigit,\n AZ: /^AZ\\d{4}$/,\n BA: /^([7-8]\\d{4}$)/,\n BD: /^([1-8][0-9]{3}|9[0-4][0-9]{2})$/,\n BE: fourDigit,\n BG: fourDigit,\n BR: /^\\d{5}-?\\d{3}$/,\n BY: /^2[1-4]\\d{4}$/,\n CA: /^[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z][\\s\\-]?\\d[ABCEGHJ-NPRSTV-Z]\\d$/i,\n CH: fourDigit,\n CN: /^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\\d{4}$/,\n CO: /^(05|08|11|13|15|17|18|19|20|23|25|27|41|44|47|50|52|54|63|66|68|70|73|76|81|85|86|88|91|94|95|97|99)(\\d{4})$/,\n CZ: /^\\d{3}\\s?\\d{2}$/,\n DE: fiveDigit,\n DK: fourDigit,\n DO: fiveDigit,\n DZ: fiveDigit,\n EE: fiveDigit,\n ES: /^(5[0-2]{1}|[0-4]{1}\\d{1})\\d{3}$/,\n FI: fiveDigit,\n FR: /^(?:(?:0[1-9]|[1-8]\\d|9[0-5])\\d{3}|97[1-46]\\d{2})$/,\n GB: /^(gir\\s?0aa|[a-z]{1,2}\\d[\\da-z]?\\s?(\\d[a-z]{2})?)$/i,\n GR: /^\\d{3}\\s?\\d{2}$/,\n HR: /^([1-5]\\d{4}$)/,\n HT: /^HT\\d{4}$/,\n HU: fourDigit,\n ID: fiveDigit,\n IE: /^(?!.*(?:o))[A-Za-z]\\d[\\dw]\\s\\w{4}$/i,\n IL: /^(\\d{5}|\\d{7})$/,\n IN: /^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/,\n IR: /^(?!(\\d)\\1{3})[13-9]{4}[1346-9][013-9]{5}$/,\n IS: threeDigit,\n IT: fiveDigit,\n JP: /^\\d{3}\\-\\d{4}$/,\n KE: fiveDigit,\n KR: /^(\\d{5}|\\d{6})$/,\n LI: /^(948[5-9]|949[0-7])$/,\n LT: /^LT\\-\\d{5}$/,\n LU: fourDigit,\n LV: /^LV\\-\\d{4}$/,\n LK: fiveDigit,\n MG: threeDigit,\n MX: fiveDigit,\n MT: /^[A-Za-z]{3}\\s{0,1}\\d{4}$/,\n MY: fiveDigit,\n NL: /^[1-9]\\d{3}\\s?(?!sa|sd|ss)[a-z]{2}$/i,\n NO: fourDigit,\n NP: /^(10|21|22|32|33|34|44|45|56|57)\\d{3}$|^(977)$/i,\n NZ: fourDigit,\n // https://www.pakpost.gov.pk/postcodes.php\n PK: fiveDigit,\n PL: /^\\d{2}\\-\\d{3}$/,\n PR: /^00[679]\\d{2}([ -]\\d{4})?$/,\n PT: /^\\d{4}\\-\\d{3}?$/,\n RO: sixDigit,\n RU: sixDigit,\n SA: fiveDigit,\n SE: /^[1-9]\\d{2}\\s?\\d{2}$/,\n SG: sixDigit,\n SI: fourDigit,\n SK: /^\\d{3}\\s?\\d{2}$/,\n TH: fiveDigit,\n TN: fourDigit,\n TW: /^\\d{3}(\\d{2,3})?$/,\n UA: fiveDigit,\n US: /^\\d{5}(-\\d{4})?$/,\n ZA: fourDigit,\n ZM: fiveDigit\n};\nvar locales = exports.locales = Object.keys(patterns);\nfunction isPostalCode(str, locale) {\n (0, _assertString.default)(str);\n if (locale in patterns) {\n return patterns[locale].test(str);\n } else if (locale === 'any') {\n for (var key in patterns) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if (patterns.hasOwnProperty(key)) {\n var pattern = patterns[key];\n if (pattern.test(str)) {\n return true;\n }\n }\n }\n return false;\n }\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isRFC3339;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n/* Based on https://tools.ietf.org/html/rfc3339#section-5.6 */\n\nvar dateFullYear = /[0-9]{4}/;\nvar dateMonth = /(0[1-9]|1[0-2])/;\nvar dateMDay = /([12]\\d|0[1-9]|3[01])/;\nvar timeHour = /([01][0-9]|2[0-3])/;\nvar timeMinute = /[0-5][0-9]/;\nvar timeSecond = /([0-5][0-9]|60)/;\nvar timeSecFrac = /(\\.[0-9]+)?/;\nvar timeNumOffset = new RegExp(\"[-+]\".concat(timeHour.source, \":\").concat(timeMinute.source));\nvar timeOffset = new RegExp(\"([zZ]|\".concat(timeNumOffset.source, \")\"));\nvar partialTime = new RegExp(\"\".concat(timeHour.source, \":\").concat(timeMinute.source, \":\").concat(timeSecond.source).concat(timeSecFrac.source));\nvar fullDate = new RegExp(\"\".concat(dateFullYear.source, \"-\").concat(dateMonth.source, \"-\").concat(dateMDay.source));\nvar fullTime = new RegExp(\"\".concat(partialTime.source).concat(timeOffset.source));\nvar rfc3339 = new RegExp(\"^\".concat(fullDate.source, \"[ tT]\").concat(fullTime.source, \"$\"));\nfunction isRFC3339(str) {\n (0, _assertString.default)(str);\n return rfc3339.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isRgbColor;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); } /* eslint-disable prefer-rest-params */\nvar rgbColor = /^rgb\\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\)$/;\nvar rgbaColor = /^rgba\\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\\.\\d\\d?|1(\\.0)?|0(\\.0)?)\\)$/;\nvar rgbColorPercent = /^rgb\\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\\)$/;\nvar rgbaColorPercent = /^rgba\\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\\.\\d\\d?|1(\\.0)?|0(\\.0)?)\\)$/;\nvar startsWithRgb = /^rgba?/;\nfunction isRgbColor(str, options) {\n (0, _assertString.default)(str);\n // default options to true for percent and false for spaces\n var allowSpaces = false;\n var includePercentValues = true;\n if (_typeof(options) !== 'object') {\n if (arguments.length >= 2) {\n includePercentValues = arguments[1];\n }\n } else {\n allowSpaces = options.allowSpaces !== undefined ? options.allowSpaces : allowSpaces;\n includePercentValues = options.includePercentValues !== undefined ? options.includePercentValues : includePercentValues;\n }\n if (allowSpaces) {\n // make sure it starts with continous rgba? without spaces before stripping\n if (!startsWithRgb.test(str)) {\n return false;\n }\n // strip all whitespace\n str = str.replace(/\\s/g, '');\n }\n if (!includePercentValues) {\n return rgbColor.test(str) || rgbaColor.test(str);\n }\n return rgbColor.test(str) || rgbaColor.test(str) || rgbColorPercent.test(str) || rgbaColorPercent.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isSemVer;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _multilineRegex = _interopRequireDefault(require(\"./util/multilineRegex\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\n/**\n * Regular Expression to match\n * semantic versioning (SemVer)\n * built from multi-line, multi-parts regexp\n * Reference: https://semver.org/\n */\nvar semanticVersioningRegex = (0, _multilineRegex.default)(['^(0|[1-9]\\\\d*)\\\\.(0|[1-9]\\\\d*)\\\\.(0|[1-9]\\\\d*)', '(?:-((?:0|[1-9]\\\\d*|\\\\d*[a-z-][0-9a-z-]*)(?:\\\\.(?:0|[1-9]\\\\d*|\\\\d*[a-z-][0-9a-z-]*))*))', '?(?:\\\\+([0-9a-z-]+(?:\\\\.[0-9a-z-]+)*))?$'], 'i');\nfunction isSemVer(str) {\n (0, _assertString.default)(str);\n return semanticVersioningRegex.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isSlug;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar charsetRegex = /^[^\\s-_](?!.*?[-_]{2,})[a-z0-9-\\\\][^\\s]*[^-_\\s]$/;\nfunction isSlug(str) {\n (0, _assertString.default)(str);\n return charsetRegex.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isStrongPassword;\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar upperCaseRegex = /^[A-Z]$/;\nvar lowerCaseRegex = /^[a-z]$/;\nvar numberRegex = /^[0-9]$/;\nvar symbolRegex = /^[-#!$@£%^&*()_+|~=`{}\\[\\]:\";'<>?,.\\/\\\\ ]$/;\nvar defaultOptions = {\n minLength: 8,\n minLowercase: 1,\n minUppercase: 1,\n minNumbers: 1,\n minSymbols: 1,\n returnScore: false,\n pointsPerUnique: 1,\n pointsPerRepeat: 0.5,\n pointsForContainingLower: 10,\n pointsForContainingUpper: 10,\n pointsForContainingNumber: 10,\n pointsForContainingSymbol: 10\n};\n\n/* Counts number of occurrences of each char in a string\n * could be moved to util/ ?\n*/\nfunction countChars(str) {\n var result = {};\n Array.from(str).forEach(function (char) {\n var curVal = result[char];\n if (curVal) {\n result[char] += 1;\n } else {\n result[char] = 1;\n }\n });\n return result;\n}\n\n/* Return information about a password */\nfunction analyzePassword(password) {\n var charMap = countChars(password);\n var analysis = {\n length: password.length,\n uniqueChars: Object.keys(charMap).length,\n uppercaseCount: 0,\n lowercaseCount: 0,\n numberCount: 0,\n symbolCount: 0\n };\n Object.keys(charMap).forEach(function (char) {\n /* istanbul ignore else */\n if (upperCaseRegex.test(char)) {\n analysis.uppercaseCount += charMap[char];\n } else if (lowerCaseRegex.test(char)) {\n analysis.lowercaseCount += charMap[char];\n } else if (numberRegex.test(char)) {\n analysis.numberCount += charMap[char];\n } else if (symbolRegex.test(char)) {\n analysis.symbolCount += charMap[char];\n }\n });\n return analysis;\n}\nfunction scorePassword(analysis, scoringOptions) {\n var points = 0;\n points += analysis.uniqueChars * scoringOptions.pointsPerUnique;\n points += (analysis.length - analysis.uniqueChars) * scoringOptions.pointsPerRepeat;\n if (analysis.lowercaseCount > 0) {\n points += scoringOptions.pointsForContainingLower;\n }\n if (analysis.uppercaseCount > 0) {\n points += scoringOptions.pointsForContainingUpper;\n }\n if (analysis.numberCount > 0) {\n points += scoringOptions.pointsForContainingNumber;\n }\n if (analysis.symbolCount > 0) {\n points += scoringOptions.pointsForContainingSymbol;\n }\n return points;\n}\nfunction isStrongPassword(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n (0, _assertString.default)(str);\n var analysis = analyzePassword(str);\n options = (0, _merge.default)(options || {}, defaultOptions);\n if (options.returnScore) {\n return scorePassword(analysis, options);\n }\n return analysis.length >= options.minLength && analysis.lowercaseCount >= options.minLowercase && analysis.uppercaseCount >= options.minUppercase && analysis.numberCount >= options.minNumbers && analysis.symbolCount >= options.minSymbols;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isSurrogatePair;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar surrogatePair = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/;\nfunction isSurrogatePair(str) {\n (0, _assertString.default)(str);\n return surrogatePair.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isTaxID;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar algorithms = _interopRequireWildcard(require(\"./util/algorithms\"));\nvar _isDate = _interopRequireDefault(require(\"./isDate\"));\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) \"default\" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n/**\n * TIN Validation\n * Validates Tax Identification Numbers (TINs) from the US, EU member states and the United Kingdom.\n *\n * EU-UK:\n * National TIN validity is calculated using public algorithms as made available by DG TAXUD.\n *\n * See `https://ec.europa.eu/taxation_customs/tin/specs/FS-TIN%20Algorithms-Public.docx` for more information.\n *\n * US:\n * An Employer Identification Number (EIN), also known as a Federal Tax Identification Number,\n * is used to identify a business entity.\n *\n * NOTES:\n * - Prefix 47 is being reserved for future use\n * - Prefixes 26, 27, 45, 46 and 47 were previously assigned by the Philadelphia campus.\n *\n * See `http://www.irs.gov/Businesses/Small-Businesses-&-Self-Employed/How-EINs-are-Assigned-and-Valid-EIN-Prefixes`\n * for more information.\n */\n\n// Locale functions\n\n/*\n * bg-BG validation function\n * (Edinen graždanski nomer (EGN/ЕГН), persons only)\n * Checks if birth date (first six digits) is valid and calculates check (last) digit\n */\nfunction bgBgCheck(tin) {\n // Extract full year, normalize month and check birth date validity\n var century_year = tin.slice(0, 2);\n var month = parseInt(tin.slice(2, 4), 10);\n if (month > 40) {\n month -= 40;\n century_year = \"20\".concat(century_year);\n } else if (month > 20) {\n month -= 20;\n century_year = \"18\".concat(century_year);\n } else {\n century_year = \"19\".concat(century_year);\n }\n if (month < 10) {\n month = \"0\".concat(month);\n }\n var date = \"\".concat(century_year, \"/\").concat(month, \"/\").concat(tin.slice(4, 6));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // split digits into an array for further processing\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n\n // Calculate checksum by multiplying digits with fixed values\n var multip_lookup = [2, 4, 8, 5, 10, 9, 7, 3, 6];\n var checksum = 0;\n for (var i = 0; i < multip_lookup.length; i++) {\n checksum += digits[i] * multip_lookup[i];\n }\n checksum = checksum % 11 === 10 ? 0 : checksum % 11;\n return checksum === digits[9];\n}\n\n/**\n * Check if an input is a valid Canadian SIN (Social Insurance Number)\n *\n * The Social Insurance Number (SIN) is a 9 digit number that\n * you need to work in Canada or to have access to government programs and benefits.\n *\n * https://en.wikipedia.org/wiki/Social_Insurance_Number\n * https://www.canada.ca/en/employment-social-development/services/sin.html\n * https://www.codercrunch.com/challenge/819302488/sin-validator\n *\n * @param {string} input\n * @return {boolean}\n */\nfunction isCanadianSIN(input) {\n var digitsArray = input.split('');\n var even = digitsArray.filter(function (_, idx) {\n return idx % 2;\n }).map(function (i) {\n return Number(i) * 2;\n }).join('').split('');\n var total = digitsArray.filter(function (_, idx) {\n return !(idx % 2);\n }).concat(even).map(function (i) {\n return Number(i);\n }).reduce(function (acc, cur) {\n return acc + cur;\n });\n return total % 10 === 0;\n}\n\n/*\n * cs-CZ validation function\n * (Rodné číslo (RČ), persons only)\n * Checks if birth date (first six digits) is valid and divisibility by 11\n * Material not in DG TAXUD document sourced from:\n * -`https://lorenc.info/3MA381/overeni-spravnosti-rodneho-cisla.htm`\n * -`https://www.mvcr.cz/clanek/rady-a-sluzby-dokumenty-rodne-cislo.aspx`\n */\nfunction csCzCheck(tin) {\n tin = tin.replace(/\\W/, '');\n\n // Extract full year from TIN length\n var full_year = parseInt(tin.slice(0, 2), 10);\n if (tin.length === 10) {\n if (full_year < 54) {\n full_year = \"20\".concat(full_year);\n } else {\n full_year = \"19\".concat(full_year);\n }\n } else {\n if (tin.slice(6) === '000') {\n return false;\n } // Three-zero serial not assigned before 1954\n if (full_year < 54) {\n full_year = \"19\".concat(full_year);\n } else {\n return false; // No 18XX years seen in any of the resources\n }\n }\n // Add missing zero if needed\n if (full_year.length === 3) {\n full_year = [full_year.slice(0, 2), '0', full_year.slice(2)].join('');\n }\n\n // Extract month from TIN and normalize\n var month = parseInt(tin.slice(2, 4), 10);\n if (month > 50) {\n month -= 50;\n }\n if (month > 20) {\n // Month-plus-twenty was only introduced in 2004\n if (parseInt(full_year, 10) < 2004) {\n return false;\n }\n month -= 20;\n }\n if (month < 10) {\n month = \"0\".concat(month);\n }\n\n // Check date validity\n var date = \"\".concat(full_year, \"/\").concat(month, \"/\").concat(tin.slice(4, 6));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // Verify divisibility by 11\n if (tin.length === 10) {\n if (parseInt(tin, 10) % 11 !== 0) {\n // Some numbers up to and including 1985 are still valid if\n // check (last) digit equals 0 and modulo of first 9 digits equals 10\n var checkdigit = parseInt(tin.slice(0, 9), 10) % 11;\n if (parseInt(full_year, 10) < 1986 && checkdigit === 10) {\n if (parseInt(tin.slice(9), 10) !== 0) {\n return false;\n }\n } else {\n return false;\n }\n }\n }\n return true;\n}\n\n/*\n * de-AT validation function\n * (Abgabenkontonummer, persons/entities)\n * Verify TIN validity by calling luhnCheck()\n */\nfunction deAtCheck(tin) {\n return algorithms.luhnCheck(tin);\n}\n\n/*\n * de-DE validation function\n * (Steueridentifikationsnummer (Steuer-IdNr.), persons only)\n * Tests for single duplicate/triplicate value, then calculates ISO 7064 check (last) digit\n * Partial implementation of spec (same result with both algorithms always)\n */\nfunction deDeCheck(tin) {\n // Split digits into an array for further processing\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n\n // Fill array with strings of number positions\n var occurrences = [];\n for (var i = 0; i < digits.length - 1; i++) {\n occurrences.push('');\n for (var j = 0; j < digits.length - 1; j++) {\n if (digits[i] === digits[j]) {\n occurrences[i] += j;\n }\n }\n }\n\n // Remove digits with one occurrence and test for only one duplicate/triplicate\n occurrences = occurrences.filter(function (a) {\n return a.length > 1;\n });\n if (occurrences.length !== 2 && occurrences.length !== 3) {\n return false;\n }\n\n // In case of triplicate value only two digits are allowed next to each other\n if (occurrences[0].length === 3) {\n var trip_locations = occurrences[0].split('').map(function (a) {\n return parseInt(a, 10);\n });\n var recurrent = 0; // Amount of neighbor occurrences\n for (var _i = 0; _i < trip_locations.length - 1; _i++) {\n if (trip_locations[_i] + 1 === trip_locations[_i + 1]) {\n recurrent += 1;\n }\n }\n if (recurrent === 2) {\n return false;\n }\n }\n return algorithms.iso7064Check(tin);\n}\n\n/*\n * dk-DK validation function\n * (CPR-nummer (personnummer), persons only)\n * Checks if birth date (first six digits) is valid and assigned to century (seventh) digit,\n * and calculates check (last) digit\n */\nfunction dkDkCheck(tin) {\n tin = tin.replace(/\\W/, '');\n\n // Extract year, check if valid for given century digit and add century\n var year = parseInt(tin.slice(4, 6), 10);\n var century_digit = tin.slice(6, 7);\n switch (century_digit) {\n case '0':\n case '1':\n case '2':\n case '3':\n year = \"19\".concat(year);\n break;\n case '4':\n case '9':\n if (year < 37) {\n year = \"20\".concat(year);\n } else {\n year = \"19\".concat(year);\n }\n break;\n default:\n if (year < 37) {\n year = \"20\".concat(year);\n } else if (year > 58) {\n year = \"18\".concat(year);\n } else {\n return false;\n }\n break;\n }\n // Add missing zero if needed\n if (year.length === 3) {\n year = [year.slice(0, 2), '0', year.slice(2)].join('');\n }\n // Check date validity\n var date = \"\".concat(year, \"/\").concat(tin.slice(2, 4), \"/\").concat(tin.slice(0, 2));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // Split digits into an array for further processing\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n var checksum = 0;\n var weight = 4;\n // Multiply by weight and add to checksum\n for (var i = 0; i < 9; i++) {\n checksum += digits[i] * weight;\n weight -= 1;\n if (weight === 1) {\n weight = 7;\n }\n }\n checksum %= 11;\n if (checksum === 1) {\n return false;\n }\n return checksum === 0 ? digits[9] === 0 : digits[9] === 11 - checksum;\n}\n\n/*\n * el-CY validation function\n * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons only)\n * Verify TIN validity by calculating ASCII value of check (last) character\n */\nfunction elCyCheck(tin) {\n // split digits into an array for further processing\n var digits = tin.slice(0, 8).split('').map(function (a) {\n return parseInt(a, 10);\n });\n var checksum = 0;\n // add digits in even places\n for (var i = 1; i < digits.length; i += 2) {\n checksum += digits[i];\n }\n\n // add digits in odd places\n for (var _i2 = 0; _i2 < digits.length; _i2 += 2) {\n if (digits[_i2] < 2) {\n checksum += 1 - digits[_i2];\n } else {\n checksum += 2 * (digits[_i2] - 2) + 5;\n if (digits[_i2] > 4) {\n checksum += 2;\n }\n }\n }\n return String.fromCharCode(checksum % 26 + 65) === tin.charAt(8);\n}\n\n/*\n * el-GR validation function\n * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons/entities)\n * Verify TIN validity by calculating check (last) digit\n * Algorithm not in DG TAXUD document- sourced from:\n * - `http://epixeirisi.gr/%CE%9A%CE%A1%CE%99%CE%A3%CE%99%CE%9C%CE%91-%CE%98%CE%95%CE%9C%CE%91%CE%A4%CE%91-%CE%A6%CE%9F%CE%A1%CE%9F%CE%9B%CE%9F%CE%93%CE%99%CE%91%CE%A3-%CE%9A%CE%91%CE%99-%CE%9B%CE%9F%CE%93%CE%99%CE%A3%CE%A4%CE%99%CE%9A%CE%97%CE%A3/23791/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82-%CE%A6%CE%BF%CF%81%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CE%BA%CE%BF%CF%8D-%CE%9C%CE%B7%CF%84%CF%81%CF%8E%CE%BF%CF%85`\n */\nfunction elGrCheck(tin) {\n // split digits into an array for further processing\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n var checksum = 0;\n for (var i = 0; i < 8; i++) {\n checksum += digits[i] * Math.pow(2, 8 - i);\n }\n return checksum % 11 % 10 === digits[8];\n}\n\n/*\n * en-GB validation function (should go here if needed)\n * (National Insurance Number (NINO) or Unique Taxpayer Reference (UTR),\n * persons/entities respectively)\n */\n\n/*\n * en-IE validation function\n * (Personal Public Service Number (PPS No), persons only)\n * Verify TIN validity by calculating check (second to last) character\n */\nfunction enIeCheck(tin) {\n var checksum = algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) {\n return parseInt(a, 10);\n }), 8);\n if (tin.length === 9 && tin[8] !== 'W') {\n checksum += (tin[8].charCodeAt(0) - 64) * 9;\n }\n checksum %= 23;\n if (checksum === 0) {\n return tin[7].toUpperCase() === 'W';\n }\n return tin[7].toUpperCase() === String.fromCharCode(64 + checksum);\n}\n\n// Valid US IRS campus prefixes\nvar enUsCampusPrefix = {\n andover: ['10', '12'],\n atlanta: ['60', '67'],\n austin: ['50', '53'],\n brookhaven: ['01', '02', '03', '04', '05', '06', '11', '13', '14', '16', '21', '22', '23', '25', '34', '51', '52', '54', '55', '56', '57', '58', '59', '65'],\n cincinnati: ['30', '32', '35', '36', '37', '38', '61'],\n fresno: ['15', '24'],\n internet: ['20', '26', '27', '45', '46', '47'],\n kansas: ['40', '44'],\n memphis: ['94', '95'],\n ogden: ['80', '90'],\n philadelphia: ['33', '39', '41', '42', '43', '46', '48', '62', '63', '64', '66', '68', '71', '72', '73', '74', '75', '76', '77', '81', '82', '83', '84', '85', '86', '87', '88', '91', '92', '93', '98', '99'],\n sba: ['31']\n};\n\n// Return an array of all US IRS campus prefixes\nfunction enUsGetPrefixes() {\n var prefixes = [];\n for (var location in enUsCampusPrefix) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if (enUsCampusPrefix.hasOwnProperty(location)) {\n prefixes.push.apply(prefixes, _toConsumableArray(enUsCampusPrefix[location]));\n }\n }\n return prefixes;\n}\n\n/*\n * en-US validation function\n * Verify that the TIN starts with a valid IRS campus prefix\n */\nfunction enUsCheck(tin) {\n return enUsGetPrefixes().indexOf(tin.slice(0, 2)) !== -1;\n}\n\n/*\n * es-AR validation function\n * Clave Única de Identificación Tributaria (CUIT/CUIL)\n * Sourced from:\n * - https://servicioscf.afip.gob.ar/publico/abc/ABCpaso2.aspx?id_nivel1=3036&id_nivel2=3040&p=Conceptos%20b%C3%A1sicos\n * - https://es.wikipedia.org/wiki/Clave_%C3%9Anica_de_Identificaci%C3%B3n_Tributaria\n */\n\nfunction esArCheck(tin) {\n var accum = 0;\n var digits = tin.split('');\n var digit = parseInt(digits.pop(), 10);\n for (var i = 0; i < digits.length; i++) {\n accum += digits[9 - i] * (2 + i % 6);\n }\n var verif = 11 - accum % 11;\n if (verif === 11) {\n verif = 0;\n } else if (verif === 10) {\n verif = 9;\n }\n return digit === verif;\n}\n\n/*\n * es-ES validation function\n * (Documento Nacional de Identidad (DNI)\n * or Número de Identificación de Extranjero (NIE), persons only)\n * Verify TIN validity by calculating check (last) character\n */\nfunction esEsCheck(tin) {\n // Split characters into an array for further processing\n var chars = tin.toUpperCase().split('');\n\n // Replace initial letter if needed\n if (isNaN(parseInt(chars[0], 10)) && chars.length > 1) {\n var lead_replace = 0;\n switch (chars[0]) {\n case 'Y':\n lead_replace = 1;\n break;\n case 'Z':\n lead_replace = 2;\n break;\n default:\n }\n chars.splice(0, 1, lead_replace);\n // Fill with zeros if smaller than proper\n } else {\n while (chars.length < 9) {\n chars.unshift(0);\n }\n }\n\n // Calculate checksum and check according to lookup\n var lookup = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'];\n chars = chars.join('');\n var checksum = parseInt(chars.slice(0, 8), 10) % 23;\n return chars[8] === lookup[checksum];\n}\n\n/*\n * et-EE validation function\n * (Isikukood (IK), persons only)\n * Checks if birth date (century digit and six following) is valid and calculates check (last) digit\n * Material not in DG TAXUD document sourced from:\n * - `https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Estonia-TIN.pdf`\n */\nfunction etEeCheck(tin) {\n // Extract year and add century\n var full_year = tin.slice(1, 3);\n var century_digit = tin.slice(0, 1);\n switch (century_digit) {\n case '1':\n case '2':\n full_year = \"18\".concat(full_year);\n break;\n case '3':\n case '4':\n full_year = \"19\".concat(full_year);\n break;\n default:\n full_year = \"20\".concat(full_year);\n break;\n }\n // Check date validity\n var date = \"\".concat(full_year, \"/\").concat(tin.slice(3, 5), \"/\").concat(tin.slice(5, 7));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // Split digits into an array for further processing\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n var checksum = 0;\n var weight = 1;\n // Multiply by weight and add to checksum\n for (var i = 0; i < 10; i++) {\n checksum += digits[i] * weight;\n weight += 1;\n if (weight === 10) {\n weight = 1;\n }\n }\n // Do again if modulo 11 of checksum is 10\n if (checksum % 11 === 10) {\n checksum = 0;\n weight = 3;\n for (var _i3 = 0; _i3 < 10; _i3++) {\n checksum += digits[_i3] * weight;\n weight += 1;\n if (weight === 10) {\n weight = 1;\n }\n }\n if (checksum % 11 === 10) {\n return digits[10] === 0;\n }\n }\n return checksum % 11 === digits[10];\n}\n\n/*\n * fi-FI validation function\n * (Henkilötunnus (HETU), persons only)\n * Checks if birth date (first six digits plus century symbol) is valid\n * and calculates check (last) digit\n */\nfunction fiFiCheck(tin) {\n // Extract year and add century\n var full_year = tin.slice(4, 6);\n var century_symbol = tin.slice(6, 7);\n switch (century_symbol) {\n case '+':\n full_year = \"18\".concat(full_year);\n break;\n case '-':\n full_year = \"19\".concat(full_year);\n break;\n default:\n full_year = \"20\".concat(full_year);\n break;\n }\n // Check date validity\n var date = \"\".concat(full_year, \"/\").concat(tin.slice(2, 4), \"/\").concat(tin.slice(0, 2));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // Calculate check character\n var checksum = parseInt(tin.slice(0, 6) + tin.slice(7, 10), 10) % 31;\n if (checksum < 10) {\n return checksum === parseInt(tin.slice(10), 10);\n }\n checksum -= 10;\n var letters_lookup = ['A', 'B', 'C', 'D', 'E', 'F', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y'];\n return letters_lookup[checksum] === tin.slice(10);\n}\n\n/*\n * fr/nl-BE validation function\n * (Numéro national (N.N.), persons only)\n * Checks if birth date (first six digits) is valid and calculates check (last two) digits\n */\nfunction frBeCheck(tin) {\n // Zero month/day value is acceptable\n if (tin.slice(2, 4) !== '00' || tin.slice(4, 6) !== '00') {\n // Extract date from first six digits of TIN\n var date = \"\".concat(tin.slice(0, 2), \"/\").concat(tin.slice(2, 4), \"/\").concat(tin.slice(4, 6));\n if (!(0, _isDate.default)(date, 'YY/MM/DD')) {\n return false;\n }\n }\n var checksum = 97 - parseInt(tin.slice(0, 9), 10) % 97;\n var checkdigits = parseInt(tin.slice(9, 11), 10);\n if (checksum !== checkdigits) {\n checksum = 97 - parseInt(\"2\".concat(tin.slice(0, 9)), 10) % 97;\n if (checksum !== checkdigits) {\n return false;\n }\n }\n return true;\n}\n\n/*\n * fr-FR validation function\n * (Numéro fiscal de référence (numéro SPI), persons only)\n * Verify TIN validity by calculating check (last three) digits\n */\nfunction frFrCheck(tin) {\n tin = tin.replace(/\\s/g, '');\n var checksum = parseInt(tin.slice(0, 10), 10) % 511;\n var checkdigits = parseInt(tin.slice(10, 13), 10);\n return checksum === checkdigits;\n}\n\n/*\n * fr/lb-LU validation function\n * (numéro d’identification personnelle, persons only)\n * Verify birth date validity and run Luhn and Verhoeff checks\n */\nfunction frLuCheck(tin) {\n // Extract date and check validity\n var date = \"\".concat(tin.slice(0, 4), \"/\").concat(tin.slice(4, 6), \"/\").concat(tin.slice(6, 8));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // Run Luhn check\n if (!algorithms.luhnCheck(tin.slice(0, 12))) {\n return false;\n }\n // Remove Luhn check digit and run Verhoeff check\n return algorithms.verhoeffCheck(\"\".concat(tin.slice(0, 11)).concat(tin[12]));\n}\n\n/*\n * hr-HR validation function\n * (Osobni identifikacijski broj (OIB), persons/entities)\n * Verify TIN validity by calling iso7064Check(digits)\n */\nfunction hrHrCheck(tin) {\n return algorithms.iso7064Check(tin);\n}\n\n/*\n * hu-HU validation function\n * (Adóazonosító jel, persons only)\n * Verify TIN validity by calculating check (last) digit\n */\nfunction huHuCheck(tin) {\n // split digits into an array for further processing\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n var checksum = 8;\n for (var i = 1; i < 9; i++) {\n checksum += digits[i] * (i + 1);\n }\n return checksum % 11 === digits[9];\n}\n\n/*\n * lt-LT validation function (should go here if needed)\n * (Asmens kodas, persons/entities respectively)\n * Current validation check is alias of etEeCheck- same format applies\n */\n\n/*\n * it-IT first/last name validity check\n * Accepts it-IT TIN-encoded names as a three-element character array and checks their validity\n * Due to lack of clarity between resources (\"Are only Italian consonants used?\n * What happens if a person has X in their name?\" etc.) only two test conditions\n * have been implemented:\n * Vowels may only be followed by other vowels or an X character\n * and X characters after vowels may only be followed by other X characters.\n */\nfunction itItNameCheck(name) {\n // true at the first occurrence of a vowel\n var vowelflag = false;\n\n // true at the first occurrence of an X AFTER vowel\n // (to properly handle last names with X as consonant)\n var xflag = false;\n for (var i = 0; i < 3; i++) {\n if (!vowelflag && /[AEIOU]/.test(name[i])) {\n vowelflag = true;\n } else if (!xflag && vowelflag && name[i] === 'X') {\n xflag = true;\n } else if (i > 0) {\n if (vowelflag && !xflag) {\n if (!/[AEIOU]/.test(name[i])) {\n return false;\n }\n }\n if (xflag) {\n if (!/X/.test(name[i])) {\n return false;\n }\n }\n }\n }\n return true;\n}\n\n/*\n * it-IT validation function\n * (Codice fiscale (TIN-IT), persons only)\n * Verify name, birth date and codice catastale validity\n * and calculate check character.\n * Material not in DG-TAXUD document sourced from:\n * `https://en.wikipedia.org/wiki/Italian_fiscal_code`\n */\nfunction itItCheck(tin) {\n // Capitalize and split characters into an array for further processing\n var chars = tin.toUpperCase().split('');\n\n // Check first and last name validity calling itItNameCheck()\n if (!itItNameCheck(chars.slice(0, 3))) {\n return false;\n }\n if (!itItNameCheck(chars.slice(3, 6))) {\n return false;\n }\n\n // Convert letters in number spaces back to numbers if any\n var number_locations = [6, 7, 9, 10, 12, 13, 14];\n var number_replace = {\n L: '0',\n M: '1',\n N: '2',\n P: '3',\n Q: '4',\n R: '5',\n S: '6',\n T: '7',\n U: '8',\n V: '9'\n };\n for (var _i4 = 0, _number_locations = number_locations; _i4 < _number_locations.length; _i4++) {\n var i = _number_locations[_i4];\n if (chars[i] in number_replace) {\n chars.splice(i, 1, number_replace[chars[i]]);\n }\n }\n\n // Extract month and day, and check date validity\n var month_replace = {\n A: '01',\n B: '02',\n C: '03',\n D: '04',\n E: '05',\n H: '06',\n L: '07',\n M: '08',\n P: '09',\n R: '10',\n S: '11',\n T: '12'\n };\n var month = month_replace[chars[8]];\n var day = parseInt(chars[9] + chars[10], 10);\n if (day > 40) {\n day -= 40;\n }\n if (day < 10) {\n day = \"0\".concat(day);\n }\n var date = \"\".concat(chars[6]).concat(chars[7], \"/\").concat(month, \"/\").concat(day);\n if (!(0, _isDate.default)(date, 'YY/MM/DD')) {\n return false;\n }\n\n // Calculate check character by adding up even and odd characters as numbers\n var checksum = 0;\n for (var _i5 = 1; _i5 < chars.length - 1; _i5 += 2) {\n var char_to_int = parseInt(chars[_i5], 10);\n if (isNaN(char_to_int)) {\n char_to_int = chars[_i5].charCodeAt(0) - 65;\n }\n checksum += char_to_int;\n }\n var odd_convert = {\n // Maps of characters at odd places\n A: 1,\n B: 0,\n C: 5,\n D: 7,\n E: 9,\n F: 13,\n G: 15,\n H: 17,\n I: 19,\n J: 21,\n K: 2,\n L: 4,\n M: 18,\n N: 20,\n O: 11,\n P: 3,\n Q: 6,\n R: 8,\n S: 12,\n T: 14,\n U: 16,\n V: 10,\n W: 22,\n X: 25,\n Y: 24,\n Z: 23,\n 0: 1,\n 1: 0\n };\n for (var _i6 = 0; _i6 < chars.length - 1; _i6 += 2) {\n var _char_to_int = 0;\n if (chars[_i6] in odd_convert) {\n _char_to_int = odd_convert[chars[_i6]];\n } else {\n var multiplier = parseInt(chars[_i6], 10);\n _char_to_int = 2 * multiplier + 1;\n if (multiplier > 4) {\n _char_to_int += 2;\n }\n }\n checksum += _char_to_int;\n }\n if (String.fromCharCode(65 + checksum % 26) !== chars[15]) {\n return false;\n }\n return true;\n}\n\n/*\n * lv-LV validation function\n * (Personas kods (PK), persons only)\n * Check validity of birth date and calculate check (last) digit\n * Support only for old format numbers (not starting with '32', issued before 2017/07/01)\n * Material not in DG TAXUD document sourced from:\n * `https://boot.ritakafija.lv/forums/index.php?/topic/88314-personas-koda-algoritms-%C4%8Deksumma/`\n */\nfunction lvLvCheck(tin) {\n tin = tin.replace(/\\W/, '');\n // Extract date from TIN\n var day = tin.slice(0, 2);\n if (day !== '32') {\n // No date/checksum check if new format\n var month = tin.slice(2, 4);\n if (month !== '00') {\n // No date check if unknown month\n var full_year = tin.slice(4, 6);\n switch (tin[6]) {\n case '0':\n full_year = \"18\".concat(full_year);\n break;\n case '1':\n full_year = \"19\".concat(full_year);\n break;\n default:\n full_year = \"20\".concat(full_year);\n break;\n }\n // Check date validity\n var date = \"\".concat(full_year, \"/\").concat(tin.slice(2, 4), \"/\").concat(day);\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n }\n\n // Calculate check digit\n var checksum = 1101;\n var multip_lookup = [1, 6, 3, 7, 9, 10, 5, 8, 4, 2];\n for (var i = 0; i < tin.length - 1; i++) {\n checksum -= parseInt(tin[i], 10) * multip_lookup[i];\n }\n return parseInt(tin[10], 10) === checksum % 11;\n }\n return true;\n}\n\n/*\n * mt-MT validation function\n * (Identity Card Number or Unique Taxpayer Reference, persons/entities)\n * Verify Identity Card Number structure (no other tests found)\n */\nfunction mtMtCheck(tin) {\n if (tin.length !== 9) {\n // No tests for UTR\n var chars = tin.toUpperCase().split('');\n // Fill with zeros if smaller than proper\n while (chars.length < 8) {\n chars.unshift(0);\n }\n // Validate format according to last character\n switch (tin[7]) {\n case 'A':\n case 'P':\n if (parseInt(chars[6], 10) === 0) {\n return false;\n }\n break;\n default:\n {\n var first_part = parseInt(chars.join('').slice(0, 5), 10);\n if (first_part > 32000) {\n return false;\n }\n var second_part = parseInt(chars.join('').slice(5, 7), 10);\n if (first_part === second_part) {\n return false;\n }\n }\n }\n }\n return true;\n}\n\n/*\n * nl-NL validation function\n * (Burgerservicenummer (BSN) or Rechtspersonen Samenwerkingsverbanden Informatie Nummer (RSIN),\n * persons/entities respectively)\n * Verify TIN validity by calculating check (last) digit (variant of MOD 11)\n */\nfunction nlNlCheck(tin) {\n return algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {\n return parseInt(a, 10);\n }), 9) % 11 === parseInt(tin[8], 10);\n}\n\n/*\n * pl-PL validation function\n * (Powszechny Elektroniczny System Ewidencji Ludności (PESEL)\n * or Numer identyfikacji podatkowej (NIP), persons/entities)\n * Verify TIN validity by validating birth date (PESEL) and calculating check (last) digit\n */\nfunction plPlCheck(tin) {\n // NIP\n if (tin.length === 10) {\n // Calculate last digit by multiplying with lookup\n var lookup = [6, 5, 7, 2, 3, 4, 5, 6, 7];\n var _checksum = 0;\n for (var i = 0; i < lookup.length; i++) {\n _checksum += parseInt(tin[i], 10) * lookup[i];\n }\n _checksum %= 11;\n if (_checksum === 10) {\n return false;\n }\n return _checksum === parseInt(tin[9], 10);\n }\n\n // PESEL\n // Extract full year using month\n var full_year = tin.slice(0, 2);\n var month = parseInt(tin.slice(2, 4), 10);\n if (month > 80) {\n full_year = \"18\".concat(full_year);\n month -= 80;\n } else if (month > 60) {\n full_year = \"22\".concat(full_year);\n month -= 60;\n } else if (month > 40) {\n full_year = \"21\".concat(full_year);\n month -= 40;\n } else if (month > 20) {\n full_year = \"20\".concat(full_year);\n month -= 20;\n } else {\n full_year = \"19\".concat(full_year);\n }\n // Add leading zero to month if needed\n if (month < 10) {\n month = \"0\".concat(month);\n }\n // Check date validity\n var date = \"\".concat(full_year, \"/\").concat(month, \"/\").concat(tin.slice(4, 6));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // Calculate last digit by multiplying with odd one-digit numbers except 5\n var checksum = 0;\n var multiplier = 1;\n for (var _i7 = 0; _i7 < tin.length - 1; _i7++) {\n checksum += parseInt(tin[_i7], 10) * multiplier % 10;\n multiplier += 2;\n if (multiplier > 10) {\n multiplier = 1;\n } else if (multiplier === 5) {\n multiplier += 2;\n }\n }\n checksum = 10 - checksum % 10;\n return checksum === parseInt(tin[10], 10);\n}\n\n/*\n* pt-BR validation function\n* (Cadastro de Pessoas Físicas (CPF, persons)\n* Cadastro Nacional de Pessoas Jurídicas (CNPJ, entities)\n* Both inputs will be validated\n*/\n\nfunction ptBrCheck(tin) {\n if (tin.length === 11) {\n var _sum;\n var remainder;\n _sum = 0;\n if (\n // Reject known invalid CPFs\n tin === '11111111111' || tin === '22222222222' || tin === '33333333333' || tin === '44444444444' || tin === '55555555555' || tin === '66666666666' || tin === '77777777777' || tin === '88888888888' || tin === '99999999999' || tin === '00000000000') return false;\n for (var i = 1; i <= 9; i++) _sum += parseInt(tin.substring(i - 1, i), 10) * (11 - i);\n remainder = _sum * 10 % 11;\n if (remainder === 10) remainder = 0;\n if (remainder !== parseInt(tin.substring(9, 10), 10)) return false;\n _sum = 0;\n for (var _i8 = 1; _i8 <= 10; _i8++) _sum += parseInt(tin.substring(_i8 - 1, _i8), 10) * (12 - _i8);\n remainder = _sum * 10 % 11;\n if (remainder === 10) remainder = 0;\n if (remainder !== parseInt(tin.substring(10, 11), 10)) return false;\n return true;\n }\n if (\n // Reject know invalid CNPJs\n tin === '00000000000000' || tin === '11111111111111' || tin === '22222222222222' || tin === '33333333333333' || tin === '44444444444444' || tin === '55555555555555' || tin === '66666666666666' || tin === '77777777777777' || tin === '88888888888888' || tin === '99999999999999') {\n return false;\n }\n var length = tin.length - 2;\n var identifiers = tin.substring(0, length);\n var verificators = tin.substring(length);\n var sum = 0;\n var pos = length - 7;\n for (var _i9 = length; _i9 >= 1; _i9--) {\n sum += identifiers.charAt(length - _i9) * pos;\n pos -= 1;\n if (pos < 2) {\n pos = 9;\n }\n }\n var result = sum % 11 < 2 ? 0 : 11 - sum % 11;\n if (result !== parseInt(verificators.charAt(0), 10)) {\n return false;\n }\n length += 1;\n identifiers = tin.substring(0, length);\n sum = 0;\n pos = length - 7;\n for (var _i0 = length; _i0 >= 1; _i0--) {\n sum += identifiers.charAt(length - _i0) * pos;\n pos -= 1;\n if (pos < 2) {\n pos = 9;\n }\n }\n result = sum % 11 < 2 ? 0 : 11 - sum % 11;\n if (result !== parseInt(verificators.charAt(1), 10)) {\n return false;\n }\n return true;\n}\n\n/*\n * pt-PT validation function\n * (Número de identificação fiscal (NIF), persons/entities)\n * Verify TIN validity by calculating check (last) digit (variant of MOD 11)\n */\nfunction ptPtCheck(tin) {\n var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {\n return parseInt(a, 10);\n }), 9) % 11;\n if (checksum > 9) {\n return parseInt(tin[8], 10) === 0;\n }\n return checksum === parseInt(tin[8], 10);\n}\n\n/*\n * ro-RO validation function\n * (Cod Numeric Personal (CNP) or Cod de înregistrare fiscală (CIF),\n * persons only)\n * Verify CNP validity by calculating check (last) digit (test not found for CIF)\n * Material not in DG TAXUD document sourced from:\n * `https://en.wikipedia.org/wiki/National_identification_number#Romania`\n */\nfunction roRoCheck(tin) {\n if (tin.slice(0, 4) !== '9000') {\n // No test found for this format\n // Extract full year using century digit if possible\n var full_year = tin.slice(1, 3);\n switch (tin[0]) {\n case '1':\n case '2':\n full_year = \"19\".concat(full_year);\n break;\n case '3':\n case '4':\n full_year = \"18\".concat(full_year);\n break;\n case '5':\n case '6':\n full_year = \"20\".concat(full_year);\n break;\n default:\n }\n\n // Check date validity\n var date = \"\".concat(full_year, \"/\").concat(tin.slice(3, 5), \"/\").concat(tin.slice(5, 7));\n if (date.length === 8) {\n if (!(0, _isDate.default)(date, 'YY/MM/DD')) {\n return false;\n }\n } else if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n\n // Calculate check digit\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n var multipliers = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9];\n var checksum = 0;\n for (var i = 0; i < multipliers.length; i++) {\n checksum += digits[i] * multipliers[i];\n }\n if (checksum % 11 === 10) {\n return digits[12] === 1;\n }\n return digits[12] === checksum % 11;\n }\n return true;\n}\n\n/*\n * sk-SK validation function\n * (Rodné číslo (RČ) or bezvýznamové identifikačné číslo (BIČ), persons only)\n * Checks validity of pre-1954 birth numbers (rodné číslo) only\n * Due to the introduction of the pseudo-random BIČ it is not possible to test\n * post-1954 birth numbers without knowing whether they are BIČ or RČ beforehand\n */\nfunction skSkCheck(tin) {\n if (tin.length === 9) {\n tin = tin.replace(/\\W/, '');\n if (tin.slice(6) === '000') {\n return false;\n } // Three-zero serial not assigned before 1954\n\n // Extract full year from TIN length\n var full_year = parseInt(tin.slice(0, 2), 10);\n if (full_year > 53) {\n return false;\n }\n if (full_year < 10) {\n full_year = \"190\".concat(full_year);\n } else {\n full_year = \"19\".concat(full_year);\n }\n\n // Extract month from TIN and normalize\n var month = parseInt(tin.slice(2, 4), 10);\n if (month > 50) {\n month -= 50;\n }\n if (month < 10) {\n month = \"0\".concat(month);\n }\n\n // Check date validity\n var date = \"\".concat(full_year, \"/\").concat(month, \"/\").concat(tin.slice(4, 6));\n if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n }\n return true;\n}\n\n/*\n * sl-SI validation function\n * (Davčna številka, persons/entities)\n * Verify TIN validity by calculating check (last) digit (variant of MOD 11)\n */\nfunction slSiCheck(tin) {\n var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) {\n return parseInt(a, 10);\n }), 8) % 11;\n if (checksum === 10) {\n return parseInt(tin[7], 10) === 0;\n }\n return checksum === parseInt(tin[7], 10);\n}\n\n/*\n * sv-SE validation function\n * (Personnummer or samordningsnummer, persons only)\n * Checks validity of birth date and calls luhnCheck() to validate check (last) digit\n */\nfunction svSeCheck(tin) {\n // Make copy of TIN and normalize to two-digit year form\n var tin_copy = tin.slice(0);\n if (tin.length > 11) {\n tin_copy = tin_copy.slice(2);\n }\n\n // Extract date of birth\n var full_year = '';\n var month = tin_copy.slice(2, 4);\n var day = parseInt(tin_copy.slice(4, 6), 10);\n if (tin.length > 11) {\n full_year = tin.slice(0, 4);\n } else {\n full_year = tin.slice(0, 2);\n if (tin.length === 11 && day < 60) {\n // Extract full year from centenarian symbol\n // Should work just fine until year 10000 or so\n var current_year = new Date().getFullYear().toString();\n var current_century = parseInt(current_year.slice(0, 2), 10);\n current_year = parseInt(current_year, 10);\n if (tin[6] === '-') {\n if (parseInt(\"\".concat(current_century).concat(full_year), 10) > current_year) {\n full_year = \"\".concat(current_century - 1).concat(full_year);\n } else {\n full_year = \"\".concat(current_century).concat(full_year);\n }\n } else {\n full_year = \"\".concat(current_century - 1).concat(full_year);\n if (current_year - parseInt(full_year, 10) < 100) {\n return false;\n }\n }\n }\n }\n\n // Normalize day and check date validity\n if (day > 60) {\n day -= 60;\n }\n if (day < 10) {\n day = \"0\".concat(day);\n }\n var date = \"\".concat(full_year, \"/\").concat(month, \"/\").concat(day);\n if (date.length === 8) {\n if (!(0, _isDate.default)(date, 'YY/MM/DD')) {\n return false;\n }\n } else if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {\n return false;\n }\n return algorithms.luhnCheck(tin.replace(/\\W/, ''));\n}\n\n/**\n * uk-UA validation function\n * Verify TIN validity by calculating check (last) digit (variant of MOD 11)\n */\nfunction ukUaCheck(tin) {\n // Calculate check digit\n var digits = tin.split('').map(function (a) {\n return parseInt(a, 10);\n });\n var multipliers = [-1, 5, 7, 9, 4, 6, 10, 5, 7];\n var checksum = 0;\n for (var i = 0; i < multipliers.length; i++) {\n checksum += digits[i] * multipliers[i];\n }\n return checksum % 11 === 10 ? digits[9] === 0 : digits[9] === checksum % 11;\n}\n\n// Locale lookup objects\n\n/*\n * Tax id regex formats for various locales\n *\n * Where not explicitly specified in DG-TAXUD document both\n * uppercase and lowercase letters are acceptable.\n */\nvar taxIdFormat = {\n 'bg-BG': /^\\d{10}$/,\n 'cs-CZ': /^\\d{6}\\/{0,1}\\d{3,4}$/,\n 'de-AT': /^\\d{9}$/,\n 'de-DE': /^[1-9]\\d{10}$/,\n 'dk-DK': /^\\d{6}-{0,1}\\d{4}$/,\n 'el-CY': /^[09]\\d{7}[A-Z]$/,\n 'el-GR': /^([0-4]|[7-9])\\d{8}$/,\n 'en-CA': /^\\d{9}$/,\n 'en-GB': /^\\d{10}$|^(?!GB|NK|TN|ZZ)(?![DFIQUV])[A-Z](?![DFIQUVO])[A-Z]\\d{6}[ABCD ]$/i,\n 'en-IE': /^\\d{7}[A-W][A-IW]{0,1}$/i,\n 'en-US': /^\\d{2}[- ]{0,1}\\d{7}$/,\n 'es-AR': /(20|23|24|27|30|33|34)[0-9]{8}[0-9]/,\n 'es-ES': /^(\\d{0,8}|[XYZKLM]\\d{7})[A-HJ-NP-TV-Z]$/i,\n 'et-EE': /^[1-6]\\d{6}(00[1-9]|0[1-9][0-9]|[1-6][0-9]{2}|70[0-9]|710)\\d$/,\n 'fi-FI': /^\\d{6}[-+A]\\d{3}[0-9A-FHJ-NPR-Y]$/i,\n 'fr-BE': /^\\d{11}$/,\n 'fr-FR': /^[0-3]\\d{12}$|^[0-3]\\d\\s\\d{2}(\\s\\d{3}){3}$/,\n // Conforms both to official spec and provided example\n 'fr-LU': /^\\d{13}$/,\n 'hr-HR': /^\\d{11}$/,\n 'hu-HU': /^8\\d{9}$/,\n 'it-IT': /^[A-Z]{6}[L-NP-V0-9]{2}[A-EHLMPRST][L-NP-V0-9]{2}[A-ILMZ][L-NP-V0-9]{3}[A-Z]$/i,\n 'lv-LV': /^\\d{6}-{0,1}\\d{5}$/,\n // Conforms both to DG TAXUD spec and original research\n 'mt-MT': /^\\d{3,7}[APMGLHBZ]$|^([1-8])\\1\\d{7}$/i,\n 'nl-NL': /^\\d{9}$/,\n 'pl-PL': /^\\d{10,11}$/,\n 'pt-BR': /(?:^\\d{11}$)|(?:^\\d{14}$)/,\n 'pt-PT': /^\\d{9}$/,\n 'ro-RO': /^\\d{13}$/,\n 'sk-SK': /^\\d{6}\\/{0,1}\\d{3,4}$/,\n 'sl-SI': /^[1-9]\\d{7}$/,\n 'sv-SE': /^(\\d{6}[-+]{0,1}\\d{4}|(18|19|20)\\d{6}[-+]{0,1}\\d{4})$/,\n 'uk-UA': /^\\d{10}$/\n};\n// taxIdFormat locale aliases\ntaxIdFormat['lb-LU'] = taxIdFormat['fr-LU'];\ntaxIdFormat['lt-LT'] = taxIdFormat['et-EE'];\ntaxIdFormat['nl-BE'] = taxIdFormat['fr-BE'];\ntaxIdFormat['fr-CA'] = taxIdFormat['en-CA'];\n\n// Algorithmic tax id check functions for various locales\nvar taxIdCheck = {\n 'bg-BG': bgBgCheck,\n 'cs-CZ': csCzCheck,\n 'de-AT': deAtCheck,\n 'de-DE': deDeCheck,\n 'dk-DK': dkDkCheck,\n 'el-CY': elCyCheck,\n 'el-GR': elGrCheck,\n 'en-CA': isCanadianSIN,\n 'en-IE': enIeCheck,\n 'en-US': enUsCheck,\n 'es-AR': esArCheck,\n 'es-ES': esEsCheck,\n 'et-EE': etEeCheck,\n 'fi-FI': fiFiCheck,\n 'fr-BE': frBeCheck,\n 'fr-FR': frFrCheck,\n 'fr-LU': frLuCheck,\n 'hr-HR': hrHrCheck,\n 'hu-HU': huHuCheck,\n 'it-IT': itItCheck,\n 'lv-LV': lvLvCheck,\n 'mt-MT': mtMtCheck,\n 'nl-NL': nlNlCheck,\n 'pl-PL': plPlCheck,\n 'pt-BR': ptBrCheck,\n 'pt-PT': ptPtCheck,\n 'ro-RO': roRoCheck,\n 'sk-SK': skSkCheck,\n 'sl-SI': slSiCheck,\n 'sv-SE': svSeCheck,\n 'uk-UA': ukUaCheck\n};\n// taxIdCheck locale aliases\ntaxIdCheck['lb-LU'] = taxIdCheck['fr-LU'];\ntaxIdCheck['lt-LT'] = taxIdCheck['et-EE'];\ntaxIdCheck['nl-BE'] = taxIdCheck['fr-BE'];\ntaxIdCheck['fr-CA'] = taxIdCheck['en-CA'];\n\n// Regexes for locales where characters should be omitted before checking format\nvar allsymbols = /[-\\\\\\/!@#$%\\^&\\*\\(\\)\\+\\=\\[\\]]+/g;\nvar sanitizeRegexes = {\n 'de-AT': allsymbols,\n 'de-DE': /[\\/\\\\]/g,\n 'fr-BE': allsymbols\n};\n// sanitizeRegexes locale aliases\nsanitizeRegexes['nl-BE'] = sanitizeRegexes['fr-BE'];\n\n/*\n * Validator function\n * Return true if the passed string is a valid tax identification number\n * for the specified locale.\n * Throw an error exception if the locale is not supported.\n */\nfunction isTaxID(str) {\n var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';\n (0, _assertString.default)(str);\n // Copy TIN to avoid replacement if sanitized\n var strcopy = str.slice(0);\n if (locale in taxIdFormat) {\n if (locale in sanitizeRegexes) {\n strcopy = strcopy.replace(sanitizeRegexes[locale], '');\n }\n if (!taxIdFormat[locale].test(strcopy)) {\n return false;\n }\n if (locale in taxIdCheck) {\n return taxIdCheck[locale](strcopy);\n }\n // Fallthrough; not all locales have algorithmic checks\n return true;\n }\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isTime;\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar default_time_options = {\n hourFormat: 'hour24',\n mode: 'default'\n};\nvar formats = {\n hour24: {\n default: /^([01]?[0-9]|2[0-3]):([0-5][0-9])$/,\n withSeconds: /^([01]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/,\n withOptionalSeconds: /^([01]?[0-9]|2[0-3]):([0-5][0-9])(?::([0-5][0-9]))?$/\n },\n hour12: {\n default: /^(0?[1-9]|1[0-2]):([0-5][0-9]) (A|P)M$/,\n withSeconds: /^(0?[1-9]|1[0-2]):([0-5][0-9]):([0-5][0-9]) (A|P)M$/,\n withOptionalSeconds: /^(0?[1-9]|1[0-2]):([0-5][0-9])(?::([0-5][0-9]))? (A|P)M$/\n }\n};\nfunction isTime(input, options) {\n options = (0, _merge.default)(options, default_time_options);\n if (typeof input !== 'string') return false;\n return formats[options.hourFormat][options.mode].test(input);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isULID;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction isULID(str) {\n (0, _assertString.default)(str);\n return /^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isURL;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _checkHost = _interopRequireDefault(require(\"./util/checkHost\"));\nvar _includesString = _interopRequireDefault(require(\"./util/includesString\"));\nvar _isFQDN = _interopRequireDefault(require(\"./isFQDN\"));\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n/*\noptions for isURL method\n\nprotocols - valid protocols can be modified with this option.\nrequire_tld - If set to false isURL will not check if the URL's host includes a top-level domain.\nrequire_protocol - if set to true isURL will return false if protocol is not present in the URL.\nrequire_host - if set to false isURL will not check if host is present in the URL.\nrequire_port - if set to true isURL will check if port is present in the URL.\nrequire_valid_protocol - isURL will check if the URL's protocol is present in the protocols option.\nallow_underscores - if set to true, the validator will allow underscores in the URL.\nhost_whitelist - if set to an array of strings or regexp, and the domain matches none of the strings\n defined in it, the validation fails.\nhost_blacklist - if set to an array of strings or regexp, and the domain matches any of the strings\n defined in it, the validation fails.\nallow_trailing_dot - if set to true, the validator will allow the domain to end with\n a `.` character.\nallow_protocol_relative_urls - if set to true protocol relative URLs will be allowed.\nallow_fragments - if set to false isURL will return false if fragments are present.\nallow_query_components - if set to false isURL will return false if query components are present.\ndisallow_auth - if set to true, the validator will fail if the URL contains an authentication\n component, e.g. `http://username:password@example.com`\nvalidate_length - if set to false isURL will skip string length validation. `max_allowed_length`\n will be ignored if this is set as `false`.\nmax_allowed_length - if set, isURL will not allow URLs longer than the specified value (default is\n 2084 that IE maximum URL length).\n\n*/\n\nvar default_url_options = {\n protocols: ['http', 'https', 'ftp'],\n require_tld: true,\n require_protocol: false,\n require_host: true,\n require_port: false,\n require_valid_protocol: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_protocol_relative_urls: false,\n allow_fragments: true,\n allow_query_components: true,\n validate_length: true,\n max_allowed_length: 2084\n};\nvar wrapped_ipv6 = /^\\[([^\\]]+)\\](?::([0-9]+))?$/;\nfunction isURL(url, options) {\n (0, _assertString.default)(url);\n if (!url || /[\\s<>]/.test(url)) {\n return false;\n }\n if (url.indexOf('mailto:') === 0) {\n return false;\n }\n options = (0, _merge.default)(options, default_url_options);\n if (options.validate_length && url.length > options.max_allowed_length) {\n return false;\n }\n if (!options.allow_fragments && (0, _includesString.default)(url, '#')) {\n return false;\n }\n if (!options.allow_query_components && ((0, _includesString.default)(url, '?') || (0, _includesString.default)(url, '&'))) {\n return false;\n }\n var protocol, auth, host, hostname, port, port_str, split, ipv6;\n split = url.split('#');\n url = split.shift();\n split = url.split('?');\n url = split.shift();\n split = url.split('://');\n if (split.length > 1) {\n protocol = split.shift().toLowerCase();\n if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n return false;\n }\n } else if (options.require_protocol) {\n return false;\n } else if (url.slice(0, 2) === '//') {\n if (!options.allow_protocol_relative_urls) {\n return false;\n }\n split[0] = url.slice(2);\n }\n url = split.join('://');\n if (url === '') {\n return false;\n }\n split = url.split('/');\n url = split.shift();\n if (url === '' && !options.require_host) {\n return true;\n }\n split = url.split('@');\n if (split.length > 1) {\n if (options.disallow_auth) {\n return false;\n }\n if (split[0] === '') {\n return false;\n }\n auth = split.shift();\n if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n return false;\n }\n var _auth$split = auth.split(':'),\n _auth$split2 = _slicedToArray(_auth$split, 2),\n user = _auth$split2[0],\n password = _auth$split2[1];\n if (user === '' && password === '') {\n return false;\n }\n }\n hostname = split.join('@');\n port_str = null;\n ipv6 = null;\n var ipv6_match = hostname.match(wrapped_ipv6);\n if (ipv6_match) {\n host = '';\n ipv6 = ipv6_match[1];\n port_str = ipv6_match[2] || null;\n } else {\n split = hostname.split(':');\n host = split.shift();\n if (split.length) {\n port_str = split.join(':');\n }\n }\n if (port_str !== null && port_str.length > 0) {\n port = parseInt(port_str, 10);\n if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n return false;\n }\n } else if (options.require_port) {\n return false;\n }\n if (options.host_whitelist) {\n return (0, _checkHost.default)(host, options.host_whitelist);\n }\n if (host === '' && !options.require_host) {\n return true;\n }\n if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) {\n return false;\n }\n host = host || ipv6;\n if (options.host_blacklist && (0, _checkHost.default)(host, options.host_blacklist)) {\n return false;\n }\n return true;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isUUID;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar uuid = {\n 1: /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n 2: /^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n 3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n 4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n 5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n 6: /^[0-9A-F]{8}-[0-9A-F]{4}-6[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n 7: /^[0-9A-F]{8}-[0-9A-F]{4}-7[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n 8: /^[0-9A-F]{8}-[0-9A-F]{4}-8[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n nil: /^00000000-0000-0000-0000-000000000000$/i,\n max: /^ffffffff-ffff-ffff-ffff-ffffffffffff$/i,\n loose: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n // From https://github.com/uuidjs/uuid/blob/main/src/regex.js\n all: /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i\n};\nfunction isUUID(str, version) {\n (0, _assertString.default)(str);\n if (version === undefined || version === null) {\n version = 'all';\n }\n return version in uuid ? uuid[version].test(str) : false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isUppercase;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction isUppercase(str) {\n (0, _assertString.default)(str);\n return str === str.toUpperCase();\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isVAT;\nexports.vatMatchers = void 0;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar algorithms = _interopRequireWildcard(require(\"./util/algorithms\"));\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) \"default\" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar AU = function AU(str) {\n var match = str.match(/^(AU)?(\\d{11})$/);\n if (!match) {\n return false;\n }\n // @see {@link https://abr.business.gov.au/Help/AbnFormat}\n var weights = [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19];\n str = str.replace(/^AU/, '');\n var ABN = (parseInt(str.slice(0, 1), 10) - 1).toString() + str.slice(1);\n var total = 0;\n for (var i = 0; i < 11; i++) {\n total += weights[i] * ABN.charAt(i);\n }\n return total !== 0 && total % 89 === 0;\n};\nvar CH = function CH(str) {\n // @see {@link https://www.ech.ch/de/ech/ech-0097/5.2.0}\n var hasValidCheckNumber = function hasValidCheckNumber(digits) {\n var lastDigit = digits.pop(); // used as check number\n var weights = [5, 4, 3, 2, 7, 6, 5, 4];\n var calculatedCheckNumber = (11 - digits.reduce(function (acc, el, idx) {\n return acc + el * weights[idx];\n }, 0) % 11) % 11;\n return lastDigit === calculatedCheckNumber;\n };\n\n // @see {@link https://www.estv.admin.ch/estv/de/home/mehrwertsteuer/uid/mwst-uid-nummer.html}\n return /^(CHE[- ]?)?(\\d{9}|(\\d{3}\\.\\d{3}\\.\\d{3})|(\\d{3} \\d{3} \\d{3})) ?(TVA|MWST|IVA)?$/.test(str) && hasValidCheckNumber(str.match(/\\d/g).map(function (el) {\n return +el;\n }));\n};\nvar PT = function PT(str) {\n var match = str.match(/^(PT)?(\\d{9})$/);\n if (!match) {\n return false;\n }\n var tin = match[2];\n var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {\n return parseInt(a, 10);\n }), 9) % 11;\n if (checksum > 9) {\n return parseInt(tin[8], 10) === 0;\n }\n return checksum === parseInt(tin[8], 10);\n};\nvar vatMatchers = exports.vatMatchers = {\n /**\r\n * European Union VAT identification numbers\r\n */\n AT: function AT(str) {\n return /^(AT)?U\\d{8}$/.test(str);\n },\n BE: function BE(str) {\n return /^(BE)?\\d{10}$/.test(str);\n },\n BG: function BG(str) {\n return /^(BG)?\\d{9,10}$/.test(str);\n },\n HR: function HR(str) {\n return /^(HR)?\\d{11}$/.test(str);\n },\n CY: function CY(str) {\n return /^(CY)?\\w{9}$/.test(str);\n },\n CZ: function CZ(str) {\n return /^(CZ)?\\d{8,10}$/.test(str);\n },\n DK: function DK(str) {\n return /^(DK)?\\d{8}$/.test(str);\n },\n EE: function EE(str) {\n return /^(EE)?\\d{9}$/.test(str);\n },\n FI: function FI(str) {\n return /^(FI)?\\d{8}$/.test(str);\n },\n FR: function FR(str) {\n return /^(FR)?\\w{2}\\d{9}$/.test(str);\n },\n DE: function DE(str) {\n return /^(DE)?\\d{9}$/.test(str);\n },\n EL: function EL(str) {\n return /^(EL)?\\d{9}$/.test(str);\n },\n HU: function HU(str) {\n return /^(HU)?\\d{8}$/.test(str);\n },\n IE: function IE(str) {\n return /^(IE)?\\d{7}\\w{1}(W)?$/.test(str);\n },\n IT: function IT(str) {\n return /^(IT)?\\d{11}$/.test(str);\n },\n LV: function LV(str) {\n return /^(LV)?\\d{11}$/.test(str);\n },\n LT: function LT(str) {\n return /^(LT)?\\d{9,12}$/.test(str);\n },\n LU: function LU(str) {\n return /^(LU)?\\d{8}$/.test(str);\n },\n MT: function MT(str) {\n return /^(MT)?\\d{8}$/.test(str);\n },\n NL: function NL(str) {\n return /^(NL)?\\d{9}B\\d{2}$/.test(str);\n },\n PL: function PL(str) {\n return /^(PL)?(\\d{10}|(\\d{3}-\\d{3}-\\d{2}-\\d{2})|(\\d{3}-\\d{2}-\\d{2}-\\d{3}))$/.test(str);\n },\n PT: PT,\n RO: function RO(str) {\n return /^(RO)?\\d{2,10}$/.test(str);\n },\n SK: function SK(str) {\n return /^(SK)?\\d{10}$/.test(str);\n },\n SI: function SI(str) {\n return /^(SI)?\\d{8}$/.test(str);\n },\n ES: function ES(str) {\n return /^(ES)?\\w\\d{7}[A-Z]$/.test(str);\n },\n SE: function SE(str) {\n return /^(SE)?\\d{12}$/.test(str);\n },\n /**\r\n * VAT numbers of non-EU countries\r\n */\n AL: function AL(str) {\n return /^(AL)?\\w{9}[A-Z]$/.test(str);\n },\n MK: function MK(str) {\n return /^(MK)?\\d{13}$/.test(str);\n },\n AU: AU,\n BY: function BY(str) {\n return /^(УНП )?\\d{9}$/.test(str);\n },\n CA: function CA(str) {\n return /^(CA)?\\d{9}$/.test(str);\n },\n IS: function IS(str) {\n return /^(IS)?\\d{5,6}$/.test(str);\n },\n IN: function IN(str) {\n return /^(IN)?\\d{15}$/.test(str);\n },\n ID: function ID(str) {\n return /^(ID)?(\\d{15}|(\\d{2}.\\d{3}.\\d{3}.\\d{1}-\\d{3}.\\d{3}))$/.test(str);\n },\n IL: function IL(str) {\n return /^(IL)?\\d{9}$/.test(str);\n },\n KZ: function KZ(str) {\n return /^(KZ)?\\d{12}$/.test(str);\n },\n NZ: function NZ(str) {\n return /^(NZ)?\\d{9}$/.test(str);\n },\n NG: function NG(str) {\n return /^(NG)?(\\d{12}|(\\d{8}-\\d{4}))$/.test(str);\n },\n NO: function NO(str) {\n return /^(NO)?\\d{9}MVA$/.test(str);\n },\n PH: function PH(str) {\n return /^(PH)?(\\d{12}|\\d{3} \\d{3} \\d{3} \\d{3})$/.test(str);\n },\n RU: function RU(str) {\n return /^(RU)?(\\d{10}|\\d{12})$/.test(str);\n },\n SM: function SM(str) {\n return /^(SM)?\\d{5}$/.test(str);\n },\n SA: function SA(str) {\n return /^(SA)?\\d{15}$/.test(str);\n },\n RS: function RS(str) {\n return /^(RS)?\\d{9}$/.test(str);\n },\n CH: CH,\n TR: function TR(str) {\n return /^(TR)?\\d{10}$/.test(str);\n },\n UA: function UA(str) {\n return /^(UA)?\\d{12}$/.test(str);\n },\n GB: function GB(str) {\n return /^GB((\\d{3} \\d{4} ([0-8][0-9]|9[0-6]))|(\\d{9} \\d{3})|(((GD[0-4])|(HA[5-9]))[0-9]{2}))$/.test(str);\n },\n UZ: function UZ(str) {\n return /^(UZ)?\\d{9}$/.test(str);\n },\n /**\r\n * VAT numbers of Latin American countries\r\n */\n AR: function AR(str) {\n return /^(AR)?\\d{11}$/.test(str);\n },\n BO: function BO(str) {\n return /^(BO)?\\d{7}$/.test(str);\n },\n BR: function BR(str) {\n return /^(BR)?((\\d{2}.\\d{3}.\\d{3}\\/\\d{4}-\\d{2})|(\\d{3}.\\d{3}.\\d{3}-\\d{2}))$/.test(str);\n },\n CL: function CL(str) {\n return /^(CL)?\\d{8}-\\d{1}$/.test(str);\n },\n CO: function CO(str) {\n return /^(CO)?\\d{10}$/.test(str);\n },\n CR: function CR(str) {\n return /^(CR)?\\d{9,12}$/.test(str);\n },\n EC: function EC(str) {\n return /^(EC)?\\d{13}$/.test(str);\n },\n SV: function SV(str) {\n return /^(SV)?\\d{4}-\\d{6}-\\d{3}-\\d{1}$/.test(str);\n },\n GT: function GT(str) {\n return /^(GT)?\\d{7}-\\d{1}$/.test(str);\n },\n HN: function HN(str) {\n return /^(HN)?$/.test(str);\n },\n MX: function MX(str) {\n return /^(MX)?\\w{3,4}\\d{6}\\w{3}$/.test(str);\n },\n NI: function NI(str) {\n return /^(NI)?\\d{3}-\\d{6}-\\d{4}\\w{1}$/.test(str);\n },\n PA: function PA(str) {\n return /^(PA)?$/.test(str);\n },\n PY: function PY(str) {\n return /^(PY)?\\d{6,8}-\\d{1}$/.test(str);\n },\n PE: function PE(str) {\n return /^(PE)?\\d{11}$/.test(str);\n },\n DO: function DO(str) {\n return /^(DO)?(\\d{11}|(\\d{3}-\\d{7}-\\d{1})|[1,4,5]{1}\\d{8}|([1,4,5]{1})-\\d{2}-\\d{5}-\\d{1})$/.test(str);\n },\n UY: function UY(str) {\n return /^(UY)?\\d{12}$/.test(str);\n },\n VE: function VE(str) {\n return /^(VE)?[J,G,V,E]{1}-(\\d{9}|(\\d{8}-\\d{1}))$/.test(str);\n }\n};\nfunction isVAT(str, countryCode) {\n (0, _assertString.default)(str);\n (0, _assertString.default)(countryCode);\n if (countryCode in vatMatchers) {\n return vatMatchers[countryCode](str);\n }\n throw new Error(\"Invalid country code: '\".concat(countryCode, \"'\"));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isVariableWidth;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _isFullWidth = require(\"./isFullWidth\");\nvar _isHalfWidth = require(\"./isHalfWidth\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction isVariableWidth(str) {\n (0, _assertString.default)(str);\n return _isFullWidth.fullWidth.test(str) && _isHalfWidth.halfWidth.test(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isWhitelisted;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction isWhitelisted(str, chars) {\n (0, _assertString.default)(str);\n for (var i = str.length - 1; i >= 0; i--) {\n if (chars.indexOf(str[i]) === -1) {\n return false;\n }\n }\n return true;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ltrim;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction ltrim(str, chars) {\n (0, _assertString.default)(str);\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\n var pattern = chars ? new RegExp(\"^[\".concat(chars.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), \"]+\"), 'g') : /^\\s+/g;\n return str.replace(pattern, '');\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = matches;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction matches(str, pattern, modifiers) {\n (0, _assertString.default)(str);\n if (Object.prototype.toString.call(pattern) !== '[object RegExp]') {\n pattern = new RegExp(pattern, modifiers);\n }\n return !!str.match(pattern);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = normalizeEmail;\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar default_normalize_email_options = {\n // The following options apply to all email addresses\n // Lowercases the local part of the email address.\n // Please note this may violate RFC 5321 as per http://stackoverflow.com/a/9808332/192024).\n // The domain is always lowercased, as per RFC 1035\n all_lowercase: true,\n // The following conversions are specific to GMail\n // Lowercases the local part of the GMail address (known to be case-insensitive)\n gmail_lowercase: true,\n // Removes dots from the local part of the email address, as that's ignored by GMail\n gmail_remove_dots: true,\n // Removes the subaddress (e.g. \"+foo\") from the email address\n gmail_remove_subaddress: true,\n // Conversts the googlemail.com domain to gmail.com\n gmail_convert_googlemaildotcom: true,\n // The following conversions are specific to Outlook.com / Windows Live / Hotmail\n // Lowercases the local part of the Outlook.com address (known to be case-insensitive)\n outlookdotcom_lowercase: true,\n // Removes the subaddress (e.g. \"+foo\") from the email address\n outlookdotcom_remove_subaddress: true,\n // The following conversions are specific to Yahoo\n // Lowercases the local part of the Yahoo address (known to be case-insensitive)\n yahoo_lowercase: true,\n // Removes the subaddress (e.g. \"-foo\") from the email address\n yahoo_remove_subaddress: true,\n // The following conversions are specific to Yandex\n // Lowercases the local part of the Yandex address (known to be case-insensitive)\n yandex_lowercase: true,\n // all yandex domains are equal, this explicitly sets the domain to 'yandex.ru'\n yandex_convert_yandexru: true,\n // The following conversions are specific to iCloud\n // Lowercases the local part of the iCloud address (known to be case-insensitive)\n icloud_lowercase: true,\n // Removes the subaddress (e.g. \"+foo\") from the email address\n icloud_remove_subaddress: true\n};\n\n// List of domains used by iCloud\nvar icloud_domains = ['icloud.com', 'me.com'];\n\n// List of domains used by Outlook.com and its predecessors\n// This list is likely incomplete.\n// Partial reference:\n// https://blogs.office.com/2013/04/17/outlook-com-gets-two-step-verification-sign-in-by-alias-and-new-international-domains/\nvar outlookdotcom_domains = ['hotmail.at', 'hotmail.be', 'hotmail.ca', 'hotmail.cl', 'hotmail.co.il', 'hotmail.co.nz', 'hotmail.co.th', 'hotmail.co.uk', 'hotmail.com', 'hotmail.com.ar', 'hotmail.com.au', 'hotmail.com.br', 'hotmail.com.gr', 'hotmail.com.mx', 'hotmail.com.pe', 'hotmail.com.tr', 'hotmail.com.vn', 'hotmail.cz', 'hotmail.de', 'hotmail.dk', 'hotmail.es', 'hotmail.fr', 'hotmail.hu', 'hotmail.id', 'hotmail.ie', 'hotmail.in', 'hotmail.it', 'hotmail.jp', 'hotmail.kr', 'hotmail.lv', 'hotmail.my', 'hotmail.ph', 'hotmail.pt', 'hotmail.sa', 'hotmail.sg', 'hotmail.sk', 'live.be', 'live.co.uk', 'live.com', 'live.com.ar', 'live.com.mx', 'live.de', 'live.es', 'live.eu', 'live.fr', 'live.it', 'live.nl', 'msn.com', 'outlook.at', 'outlook.be', 'outlook.cl', 'outlook.co.il', 'outlook.co.nz', 'outlook.co.th', 'outlook.com', 'outlook.com.ar', 'outlook.com.au', 'outlook.com.br', 'outlook.com.gr', 'outlook.com.pe', 'outlook.com.tr', 'outlook.com.vn', 'outlook.cz', 'outlook.de', 'outlook.dk', 'outlook.es', 'outlook.fr', 'outlook.hu', 'outlook.id', 'outlook.ie', 'outlook.in', 'outlook.it', 'outlook.jp', 'outlook.kr', 'outlook.lv', 'outlook.my', 'outlook.ph', 'outlook.pt', 'outlook.sa', 'outlook.sg', 'outlook.sk', 'passport.com'];\n\n// List of domains used by Yahoo Mail\n// This list is likely incomplete\nvar yahoo_domains = ['rocketmail.com', 'yahoo.ca', 'yahoo.co.uk', 'yahoo.com', 'yahoo.de', 'yahoo.fr', 'yahoo.in', 'yahoo.it', 'ymail.com'];\n\n// List of domains used by yandex.ru\nvar yandex_domains = ['yandex.ru', 'yandex.ua', 'yandex.kz', 'yandex.com', 'yandex.by', 'ya.ru'];\n\n// replace single dots, but not multiple consecutive dots\nfunction dotsReplacer(match) {\n if (match.length > 1) {\n return match;\n }\n return '';\n}\nfunction normalizeEmail(email, options) {\n options = (0, _merge.default)(options, default_normalize_email_options);\n var raw_parts = email.split('@');\n var domain = raw_parts.pop();\n var user = raw_parts.join('@');\n var parts = [user, domain];\n\n // The domain is always lowercased, as it's case-insensitive per RFC 1035\n parts[1] = parts[1].toLowerCase();\n if (parts[1] === 'gmail.com' || parts[1] === 'googlemail.com') {\n // Address is GMail\n if (options.gmail_remove_subaddress) {\n parts[0] = parts[0].split('+')[0];\n }\n if (options.gmail_remove_dots) {\n // this does not replace consecutive dots like example..email@gmail.com\n parts[0] = parts[0].replace(/\\.+/g, dotsReplacer);\n }\n if (!parts[0].length) {\n return false;\n }\n if (options.all_lowercase || options.gmail_lowercase) {\n parts[0] = parts[0].toLowerCase();\n }\n parts[1] = options.gmail_convert_googlemaildotcom ? 'gmail.com' : parts[1];\n } else if (icloud_domains.indexOf(parts[1]) >= 0) {\n // Address is iCloud\n if (options.icloud_remove_subaddress) {\n parts[0] = parts[0].split('+')[0];\n }\n if (!parts[0].length) {\n return false;\n }\n if (options.all_lowercase || options.icloud_lowercase) {\n parts[0] = parts[0].toLowerCase();\n }\n } else if (outlookdotcom_domains.indexOf(parts[1]) >= 0) {\n // Address is Outlook.com\n if (options.outlookdotcom_remove_subaddress) {\n parts[0] = parts[0].split('+')[0];\n }\n if (!parts[0].length) {\n return false;\n }\n if (options.all_lowercase || options.outlookdotcom_lowercase) {\n parts[0] = parts[0].toLowerCase();\n }\n } else if (yahoo_domains.indexOf(parts[1]) >= 0) {\n // Address is Yahoo\n if (options.yahoo_remove_subaddress) {\n var components = parts[0].split('-');\n parts[0] = components.length > 1 ? components.slice(0, -1).join('-') : components[0];\n }\n if (!parts[0].length) {\n return false;\n }\n if (options.all_lowercase || options.yahoo_lowercase) {\n parts[0] = parts[0].toLowerCase();\n }\n } else if (yandex_domains.indexOf(parts[1]) >= 0) {\n if (options.all_lowercase || options.yandex_lowercase) {\n parts[0] = parts[0].toLowerCase();\n }\n parts[1] = options.yandex_convert_yandexru ? 'yandex.ru' : parts[1];\n } else if (options.all_lowercase) {\n // Any other address\n parts[0] = parts[0].toLowerCase();\n }\n return parts.join('@');\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rtrim;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction rtrim(str, chars) {\n (0, _assertString.default)(str);\n if (chars) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\n var pattern = new RegExp(\"[\".concat(chars.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), \"]+$\"), 'g');\n return str.replace(pattern, '');\n }\n // Use a faster and more safe than regex trim method https://blog.stevenlevithan.com/archives/faster-trim-javascript\n var strIndex = str.length - 1;\n while (/\\s/.test(str.charAt(strIndex))) {\n strIndex -= 1;\n }\n return str.slice(0, strIndex + 1);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = stripLow;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _blacklist = _interopRequireDefault(require(\"./blacklist\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction stripLow(str, keep_new_lines) {\n (0, _assertString.default)(str);\n var chars = keep_new_lines ? '\\\\x00-\\\\x09\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F' : '\\\\x00-\\\\x1F\\\\x7F';\n return (0, _blacklist.default)(str, chars);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toBoolean;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction toBoolean(str, strict) {\n (0, _assertString.default)(str);\n if (strict) {\n return str === '1' || /^true$/i.test(str);\n }\n return str !== '0' && !/^false$/i.test(str) && str !== '';\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toDate;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction toDate(date) {\n (0, _assertString.default)(date);\n date = Date.parse(date);\n return !isNaN(date) ? new Date(date) : null;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toFloat;\nvar _isFloat = _interopRequireDefault(require(\"./isFloat\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction toFloat(str) {\n if (!(0, _isFloat.default)(str)) return NaN;\n return parseFloat(str);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toInt;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction toInt(str, radix) {\n (0, _assertString.default)(str);\n return parseInt(str, radix || 10);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = trim;\nvar _rtrim = _interopRequireDefault(require(\"./rtrim\"));\nvar _ltrim = _interopRequireDefault(require(\"./ltrim\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction trim(str, chars) {\n return (0, _rtrim.default)((0, _ltrim.default)(str, chars), chars);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = unescape;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction unescape(str) {\n (0, _assertString.default)(str);\n return str.replace(/"/g, '\"').replace(/'/g, \"'\").replace(/</g, '<').replace(/>/g, '>').replace(///g, '/').replace(/\/g, '\\\\').replace(/`/g, '`').replace(/&/g, '&');\n // & replacement has to be the last one to prevent\n // bugs with intermediate strings containing escape sequences\n // See: https://github.com/validatorjs/validator.js/issues/1827\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.iso7064Check = iso7064Check;\nexports.luhnCheck = luhnCheck;\nexports.reverseMultiplyAndSum = reverseMultiplyAndSum;\nexports.verhoeffCheck = verhoeffCheck;\n/**\n * Algorithmic validation functions\n * May be used as is or implemented in the workflow of other validators.\n */\n\n/*\n * ISO 7064 validation function\n * Called with a string of numbers (incl. check digit)\n * to validate according to ISO 7064 (MOD 11, 10).\n */\nfunction iso7064Check(str) {\n var checkvalue = 10;\n for (var i = 0; i < str.length - 1; i++) {\n checkvalue = (parseInt(str[i], 10) + checkvalue) % 10 === 0 ? 10 * 2 % 11 : (parseInt(str[i], 10) + checkvalue) % 10 * 2 % 11;\n }\n checkvalue = checkvalue === 1 ? 0 : 11 - checkvalue;\n return checkvalue === parseInt(str[10], 10);\n}\n\n/*\n * Luhn (mod 10) validation function\n * Called with a string of numbers (incl. check digit)\n * to validate according to the Luhn algorithm.\n */\nfunction luhnCheck(str) {\n var checksum = 0;\n var second = false;\n for (var i = str.length - 1; i >= 0; i--) {\n if (second) {\n var product = parseInt(str[i], 10) * 2;\n if (product > 9) {\n // sum digits of product and add to checksum\n checksum += product.toString().split('').map(function (a) {\n return parseInt(a, 10);\n }).reduce(function (a, b) {\n return a + b;\n }, 0);\n } else {\n checksum += product;\n }\n } else {\n checksum += parseInt(str[i], 10);\n }\n second = !second;\n }\n return checksum % 10 === 0;\n}\n\n/*\n * Reverse TIN multiplication and summation helper function\n * Called with an array of single-digit integers and a base multiplier\n * to calculate the sum of the digits multiplied in reverse.\n * Normally used in variations of MOD 11 algorithmic checks.\n */\nfunction reverseMultiplyAndSum(digits, base) {\n var total = 0;\n for (var i = 0; i < digits.length; i++) {\n total += digits[i] * (base - i);\n }\n return total;\n}\n\n/*\n * Verhoeff validation helper function\n * Called with a string of numbers\n * to validate according to the Verhoeff algorithm.\n */\nfunction verhoeffCheck(str) {\n var d_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];\n var p_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]];\n\n // Copy (to prevent replacement) and reverse\n var str_copy = str.split('').reverse().join('');\n var checksum = 0;\n for (var i = 0; i < str_copy.length; i++) {\n checksum = d_table[checksum][p_table[i % 8][parseInt(str_copy[i], 10)]];\n }\n return checksum === 0;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertString;\nfunction assertString(input) {\n if (input === undefined || input === null) throw new TypeError(\"Expected a string but received a \".concat(input));\n if (input.constructor.name !== 'String') throw new TypeError(\"Expected a string but received a \".concat(input.constructor.name));\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = checkHost;\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\nfunction checkHost(host, matches) {\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i];\n if (host === match || isRegExp(match) && match.test(host)) {\n return true;\n }\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar includes = function includes(arr, val) {\n return arr.some(function (arrVal) {\n return val === arrVal;\n });\n};\nvar _default = exports.default = includes;\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar includes = function includes(str, val) {\n return str.indexOf(val) !== -1;\n};\nvar _default = exports.default = includes;\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = merge;\nfunction merge() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults = arguments.length > 1 ? arguments[1] : undefined;\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n return obj;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = multilineRegexp;\n/**\n * Build RegExp object from an array\n * of multiple/multi-line regexp parts\n *\n * @param {string[]} parts\n * @param {string} flags\n * @return {object} - RegExp object\n */\nfunction multilineRegexp(parts, flags) {\n var regexpAsStringLiteral = parts.join('');\n return new RegExp(regexpAsStringLiteral, flags);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isNullOrUndefined;\nfunction isNullOrUndefined(value) {\n return value === null || value === undefined;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toString;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction toString(input) {\n if (_typeof(input) === 'object' && input !== null) {\n if (typeof input.toString === 'function') {\n input = input.toString();\n } else {\n input = '[object Object]';\n }\n } else if (input === null || typeof input === 'undefined' || isNaN(input) && !input.length) {\n input = '';\n }\n return String(input);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = whitelist;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction whitelist(str, chars) {\n (0, _assertString.default)(str);\n return str.replace(new RegExp(\"[^\".concat(chars, \"]+\"), 'g'), '');\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","'use strict';\n\nvar isString = require('is-string');\nvar isNumber = require('is-number-object');\nvar isBoolean = require('is-boolean-object');\nvar isSymbol = require('is-symbol');\nvar isBigInt = require('is-bigint');\n\n/** @type {import('.')} */\n// eslint-disable-next-line consistent-return\nmodule.exports = function whichBoxedPrimitive(value) {\n\t// eslint-disable-next-line eqeqeq\n\tif (value == null || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\treturn null;\n\t}\n\tif (isString(value)) {\n\t\treturn 'String';\n\t}\n\tif (isNumber(value)) {\n\t\treturn 'Number';\n\t}\n\tif (isBoolean(value)) {\n\t\treturn 'Boolean';\n\t}\n\tif (isSymbol(value)) {\n\t\treturn 'Symbol';\n\t}\n\tif (isBigInt(value)) {\n\t\treturn 'BigInt';\n\t}\n};\n","'use strict';\n\nvar isMap = require('is-map');\nvar isSet = require('is-set');\nvar isWeakMap = require('is-weakmap');\nvar isWeakSet = require('is-weakset');\n\n/** @type {import('.')} */\nmodule.exports = function whichCollection(/** @type {unknown} */ value) {\n\tif (value && typeof value === 'object') {\n\t\tif (isMap(value)) {\n\t\t\treturn 'Map';\n\t\t}\n\t\tif (isSet(value)) {\n\t\t\treturn 'Set';\n\t\t}\n\t\tif (isWeakMap(value)) {\n\t\t\treturn 'WeakMap';\n\t\t}\n\t\tif (isWeakSet(value)) {\n\t\t\treturn 'WeakSet';\n\t\t}\n\t}\n\treturn false;\n};\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\n\n/** @type {<T = unknown>(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType<typeof tryAllTypedArrays>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType<typeof tryAllSlices>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"body #txtCpanelVersion {\\n z-index: 0 !important;\\n}\\nbody #contentContainer {\\n padding-top: 20px;\\n}\\n.i360-app.i360-cpanel i360-tabs > div > a {\\n color: #1d1d1d;\\n}\\n.i360-app.i360-cpanel i360-tabs > div > a:hover, .i360-app.i360-cpanel i360-tabs > div > a:focus {\\n color: #1d1d1d;\\n text-decoration: none;\\n}\\n/* Fixes for global styles */\\nbody .modal-backdrop {\\n opacity: 0.4;\\n background: #4c4c4c;\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n z-index: 1040;\\n}\\nbody .modal-backdrop.fade {\\n transition: opacity 0.15s linear;\\n}\\nbody.modal-open {\\n overflow: visible;\\n}\\n/* Fixes for plugin content */\\n.i360-app.i360-plesk .add_item {\\n color: #333;\\n}\\n.i360-app.i360-plesk .pagination_nav ul.pagination {\\n margin-bottom: 16px;\\n}\\n.i360-app.i360-plesk .scanner-status-widget {\\n color: #333;\\n}\\n.i360-app.i360-plesk table > tbody tr td.expander-column > div {\\n transform: translateY(2px);\\n}\\n.i360-app.i360-plesk table > tbody tr:hover > th {\\n box-shadow: none;\\n background-color: #f8f8f8;\\n}\\n.i360-app.i360-plesk table > tbody tr:hover > td {\\n box-shadow: none;\\n background-color: #eff8f2;\\n}\\n.i360-app.i360-plesk .notification {\\n outline: none;\\n}\\n.i360-app.i360-plesk .search_block .cross_icon {\\n background-color: inherit;\\n}\\n.i360-app.i360-plesk .form-control:focus {\\n color: #1d1d1d;\\n}\\n.i360-app.i360-plesk input[type=radio]:disabled {\\n opacity: 0;\\n}\\n/* Fixes for plugin content */\\n.i360-app.i360-directadmin {\\n margin: auto 10px;\\n}\\n.i360-app.i360-directadmin * {\\n /* For limit widget, but it causes a problems with focused fields */\\n font-size: inherit;\\n font-family: inherit;\\n line-height: inherit;\\n}\\n.i360-app.i360-directadmin * .cdk-overlay-pane {\\n pointer-events: none !important;\\n height: fit-content;\\n}\\n.i360-app.i360-directadmin * .cdk-overlay-pane:not(.i360-modal-dialog-panel) {\\n bottom: 0 !important;\\n height: auto;\\n max-height: fit-content;\\n}\\n.i360-app.i360-directadmin * .cdk-overlay-pane > mat-dialog-container {\\n max-height: 80%;\\n}\\n.i360-app.i360-directadmin * .cdk-overlay-pane > * {\\n pointer-events: auto;\\n}\\n:host-context(.ltr) .i360-app.i360-directadmin * .add-item-container textarea, :host-context(.ltr) .i360-app.i360-directadmin * .add-item-container input {\\n padding-left: 14px;\\n}\\n:host-context(.rtl) .i360-app.i360-directadmin * .add-item-container textarea, :host-context(.rtl) .i360-app.i360-directadmin * .add-item-container input {\\n padding-right: 14px;\\n}\\n.i360-app.i360-directadmin * .i360-title {\\n font-size: 22px;\\n}\\n.i360-app.i360-directadmin * .list-tabs {\\n font-size: 16px;\\n}\\n.i360-app.i360-directadmin * h1 {\\n font-family: \\\"Open Sans\\\", sans-serif;\\n font-size: 22px;\\n}\\n.i360-app.i360-directadmin * .title, .i360-app.i360-directadmin * .warning {\\n font-weight: normal;\\n color: inherit;\\n}\\n.i360-app.i360-directadmin * a {\\n cursor: pointer;\\n}\\n.i360-app.i360-directadmin * div.checkbox_block {\\n padding-top: 2px;\\n}\\n.i360-app.i360-directadmin * i360-error {\\n font-size: 11px;\\n}\\n.i360-app.i360-directadmin .mat-select-placeholder {\\n line-height: 0.8;\\n color: transparent;\\n}\\n.i360-app.i360-directadmin i360-tabs > div > a {\\n color: #1d1d1d;\\n font-size: 16px;\\n font-family: Open Sans, sans-serif;\\n}\\n.i360-app.i360-directadmin i360-tabs > div > a:hover, .i360-app.i360-directadmin i360-tabs > div > a:focus {\\n color: #1d1d1d;\\n text-decoration: none;\\n}\\n@media (min-width: 890px) {\\n .i360-app.i360-directadmin {\\n width: calc(890px - 100px);\\n }\\n}\\n@media (min-width: 920px) {\\n .i360-app.i360-directadmin {\\n width: calc(920px - 100px);\\n }\\n}\\n@media (min-width: 950px) {\\n .i360-app.i360-directadmin {\\n width: calc(950px - 100px);\\n }\\n}\\n@media (min-width: 980px) {\\n .i360-app.i360-directadmin {\\n width: calc(980px - 100px);\\n }\\n}\\n@media (min-width: 1010px) {\\n .i360-app.i360-directadmin {\\n width: calc(1010px - 100px);\\n }\\n}\\n@media (min-width: 1040px) {\\n .i360-app.i360-directadmin {\\n width: calc(1040px - 100px);\\n }\\n}\\n@media (min-width: 1070px) {\\n .i360-app.i360-directadmin {\\n width: calc(1070px - 100px);\\n }\\n}\\n@media (min-width: 1100px) {\\n .i360-app.i360-directadmin {\\n width: calc(1100px - 100px);\\n }\\n}\\n@media (min-width: 1130px) {\\n .i360-app.i360-directadmin {\\n width: calc(1130px - 100px);\\n }\\n}\\n@media (min-width: 1160px) {\\n .i360-app.i360-directadmin {\\n width: calc(1160px - 100px);\\n }\\n}\\n@media (min-width: 1190px) {\\n .i360-app.i360-directadmin {\\n width: calc(1190px - 100px);\\n }\\n}\\n@media (min-width: 1220px) {\\n .i360-app.i360-directadmin {\\n width: calc(1220px - 100px);\\n }\\n}\\n@media (min-width: 1250px) {\\n .i360-app.i360-directadmin {\\n width: calc(1250px - 100px);\\n }\\n}\\n@media (min-width: 1280px) {\\n .i360-app.i360-directadmin {\\n width: calc(1280px - 100px);\\n }\\n}\\n@media (max-width: 789px) {\\n .i360-app.i360-directadmin {\\n margin: auto 0;\\n }\\n}\\n#iframe-container .i360-app.i360-directadmin {\\n height: auto;\\n min-height: 400px;\\n padding-bottom: 50px;\\n}\\n@font-face {\\n font-family: \\\"i360-icon-font\\\";\\n src: url(\\\"data:application/x-font-woff;charset=utf-8;base64,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\\\") format(\\\"woff\\\");\\n}\\n.i360-app .i360-icon::before {\\n font-family: i360-icon-font, monospace !important;\\n font-size: 22px;\\n line-height: 1;\\n font-style: normal;\\n font-weight: normal;\\n font-variant: normal;\\n text-decoration: inherit;\\n text-rendering: optimizeLegibility;\\n text-transform: none;\\n -moz-osx-font-smoothing: grayscale;\\n -webkit-font-smoothing: antialiased;\\n}\\n.i360-app .i360-icon-add-to-ignore::before {\\n content: \\\"\\\\f101\\\";\\n}\\n.i360-app .i360-icon-add-to-quarantine::before {\\n content: \\\"\\\\f102\\\";\\n}\\n.i360-app .i360-icon-add::before {\\n content: \\\"\\\\f103\\\";\\n}\\n.i360-app .i360-icon-arrow-right::before {\\n content: \\\"\\\\f104\\\";\\n}\\n.i360-app .i360-icon-arrow::before {\\n content: \\\"\\\\f105\\\";\\n}\\n.i360-app .i360-icon-bell::before {\\n content: \\\"\\\\f106\\\";\\n}\\n.i360-app .i360-icon-block::before {\\n content: \\\"\\\\f107\\\";\\n}\\n.i360-app .i360-icon-cancel::before {\\n content: \\\"\\\\f108\\\";\\n}\\n.i360-app .i360-icon-cleanup::before {\\n content: \\\"\\\\f109\\\";\\n}\\n.i360-app .i360-icon-close::before {\\n content: \\\"\\\\f10a\\\";\\n}\\n.i360-app .i360-icon-copy::before {\\n content: \\\"\\\\f10b\\\";\\n}\\n.i360-app .i360-icon-country::before {\\n content: \\\"\\\\f10c\\\";\\n}\\n.i360-app .i360-icon-delete::before {\\n content: \\\"\\\\f10d\\\";\\n}\\n.i360-app .i360-icon-done::before {\\n content: \\\"\\\\f10e\\\";\\n}\\n.i360-app .i360-icon-edit::before {\\n content: \\\"\\\\f10f\\\";\\n}\\n.i360-app .i360-icon-info::before {\\n content: \\\"\\\\f110\\\";\\n}\\n.i360-app .i360-icon-ip::before {\\n content: \\\"\\\\f111\\\";\\n}\\n.i360-app .i360-icon-key::before {\\n content: \\\"\\\\f112\\\";\\n}\\n.i360-app .i360-icon-leaf::before {\\n content: \\\"\\\\f113\\\";\\n}\\n.i360-app .i360-icon-link::before {\\n content: \\\"\\\\f114\\\";\\n}\\n.i360-app .i360-icon-more::before {\\n content: \\\"\\\\f115\\\";\\n}\\n.i360-app .i360-icon-port::before {\\n content: \\\"\\\\f116\\\";\\n}\\n.i360-app .i360-icon-question::before {\\n content: \\\"\\\\f117\\\";\\n}\\n.i360-app .i360-icon-refresh::before {\\n content: \\\"\\\\f118\\\";\\n}\\n.i360-app .i360-icon-remove-from-quarantine::before {\\n content: \\\"\\\\f119\\\";\\n}\\n.i360-app .i360-icon-remove-from::before {\\n content: \\\"\\\\f11a\\\";\\n}\\n.i360-app .i360-icon-restore-original::before {\\n content: \\\"\\\\f11b\\\";\\n}\\n.i360-app .i360-icon-restore::before {\\n content: \\\"\\\\f11c\\\";\\n}\\n.i360-app .i360-icon-scan::before {\\n content: \\\"\\\\f11d\\\";\\n}\\n.i360-app .i360-icon-search::before {\\n content: \\\"\\\\f11e\\\";\\n}\\n.i360-app .i360-icon-settings::before {\\n content: \\\"\\\\f11f\\\";\\n}\\n.i360-app .i360-icon-stop::before {\\n content: \\\"\\\\f120\\\";\\n}\\n.i360-app .i360-icon-support::before {\\n content: \\\"\\\\f121\\\";\\n}\\n.i360-app .i360-icon-upload::before {\\n content: \\\"\\\\f122\\\";\\n}\\n.i360-app .i360-icon-users::before {\\n content: \\\"\\\\f123\\\";\\n}\\n.i360-app .i360-icon-view-report::before {\\n content: \\\"\\\\f124\\\";\\n}\\n.i360-app .i360-icon-view::before {\\n content: \\\"\\\\f125\\\";\\n}\\n.i360-app {\\n /*TODO: get rid of !important*/\\n /**\\n to override\\n img {\\n vertical-align: middle;\\n }\\n from scaffolding.less:81 for task WEB-402\\n */\\n position: relative;\\n min-height: 100%;\\n font: 13px \\\"Open Sans\\\", sans-serif;\\n line-height: 18px;\\n}\\n.i360-app #doctitle h1 img {\\n top: 0 !important;\\n}\\n.i360-app .error_block {\\n color: red;\\n}\\n.i360-app #doctitle {\\n display: none;\\n}\\n.i360-app .dropdown .dropdown-toggle {\\n background-color: #fafafa;\\n border: solid 1px #cecece;\\n border-radius: 2px;\\n outline: none;\\n color: #000;\\n font-size: 13px;\\n height: 32px;\\n line-height: 1;\\n transition: all 0.4s;\\n font-family: \\\"Open Sans\\\", sans-serif;\\n}\\n.ltr .i360-app .dropdown .dropdown-toggle {\\n margin-right: 3px;\\n}\\n.rtl .i360-app .dropdown .dropdown-toggle {\\n margin-left: 3px;\\n}\\n.i360-app .dropdown .dropdown-toggle::after {\\n font-size: 14px;\\n vertical-align: 0.2em;\\n}\\n.i360-app .dropdown .dropdown-toggle:hover {\\n background-color: #e7e7e7;\\n}\\n.i360-app .search_input, .i360-app .search_block input {\\n border-color: #d8d8d8 !important;\\n height: 32px !important;\\n}\\n.i360-app .b_dropdown-menu {\\n background-color: #ffffff;\\n box-shadow: 0 2px 14px 0 rgba(0, 0, 0, 0.24), 0 0 2px 0 rgba(0, 0, 0, 0.12);\\n border-width: 0px;\\n border-radius: 0;\\n padding: 0;\\n}\\n.i360-app .b_dropdown-menu > li > a {\\n height: 35px;\\n font-size: 13px;\\n color: #4d4d4e;\\n line-height: 30px;\\n font-family: \\\"Open Sans\\\", sans-serif;\\n}\\n.ltr .i360-app .b_dropdown-menu > li > a {\\n text-align: left;\\n}\\n.rtl .i360-app .b_dropdown-menu > li > a {\\n text-align: right;\\n}\\n.ltr .i360-app .b_dropdown-menu > li > a {\\n padding-left: 40px;\\n}\\n.rtl .i360-app .b_dropdown-menu > li > a {\\n padding-right: 40px;\\n}\\n.i360-app .b_dropdown-menu > li > a:focus, .i360-app .b_dropdown-menu > li > a:hover,\\n.i360-app .b_dropdown-menu > li.active > a, .i360-app .b_dropdown-menu > li.active > a:focus, .i360-app .b_dropdown-menu > li.active > a:hover {\\n color: #4d4d4e;\\n background-color: rgba(55, 171, 99, 0.11);\\n}\\n.i360-app .btn-filter {\\n height: 27px !important;\\n border-radius: 2px;\\n background-color: #e2f7e9;\\n border: solid 1px #cecece;\\n color: #000 !important;\\n font-size: 13px;\\n line-height: 32px;\\n transition: all 0.4s;\\n min-width: 120px;\\n font-family: \\\"Open Sans\\\", sans-serif;\\n padding: 0 10px;\\n position: relative;\\n}\\n.ltr .i360-app .btn-filter {\\n margin-right: 2px;\\n}\\n.rtl .i360-app .btn-filter {\\n margin-left: 2px;\\n}\\n.i360-app .btn-filter:hover {\\n background-color: #eff8f2;\\n border: solid 1px #cecece;\\n color: #000 !important;\\n}\\n.i360-app .dropdown .selected {\\n background-color: rgba(55, 171, 99, 0.11);\\n}\\n.i360-app .dropdown .selected.disabled {\\n cursor: not-allowed;\\n}\\n.i360-app .dropdown .selected::before {\\n content: \\\"check\\\";\\n opacity: 1;\\n color: #787878;\\n position: absolute;\\n padding-top: 2px;\\n}\\n.ltr .i360-app .dropdown .selected::before {\\n left: 8px;\\n}\\n.rtl .i360-app .dropdown .selected::before {\\n right: 8px;\\n}\\n.i360-app body .form-control {\\n border-radius: 2px;\\n background-color: #fff;\\n box-shadow: none;\\n border: solid 1px #d8d8d8;\\n}\\n.i360-app :not(.cl-field-input) > input:focus,\\n.i360-app .form-control:focus {\\n box-shadow: inset 0 0 4px 0 #11cb84 !important;\\n border-color: #11cb84 !important;\\n background-color: #ffffff !important;\\n}\\n.i360-app select.form-control {\\n font-weight: bold;\\n font-size: 12px;\\n color: #5e5e5e;\\n font-family: \\\"Open Sans\\\", sans-serif;\\n outline: none;\\n box-shadow: none;\\n border-color: #d7d7d7;\\n border-radius: 2px;\\n}\\n.i360-app .form-control:focus {\\n border-color: #d7d7d7;\\n box-shadow: none;\\n}\\n.i360-app input.form-control {\\n color: #1d1d1d;\\n padding: 5px 7px;\\n box-shadow: none;\\n}\\n.i360-app .flexer {\\n list-style: none;\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: flex-start;\\n}\\n.i360-app table.table {\\n background-color: #f8f8f8;\\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.17);\\n border-style: solid;\\n border-width: 1px;\\n border-image-source: linear-gradient(to bottom, #e8e5e5, #dcdcdc);\\n border-image-slice: 1;\\n border-spacing: 0;\\n border-collapse: collapse;\\n}\\n.i360-app table.table tr {\\n background-color: #ffffff;\\n border: solid 1px #dcdcdc;\\n}\\n.i360-app table.table tr, .i360-app .attributions-container table.table td {\\n height: 50px;\\n}\\n.i360-app .table > tr > th, .i360-app .table > tr > td {\\n font-size: 13px;\\n font-weight: normal;\\n font-style: normal;\\n font-stretch: normal;\\n padding: 15px 10px;\\n vertical-align: middle;\\n}\\n.ltr .i360-app .table > tr > th:first-child, .ltr .i360-app .table > tr > td:first-child {\\n padding-left: 37px;\\n}\\n.rtl .i360-app .table > tr > th:first-child, .rtl .i360-app .table > tr > td:first-child {\\n padding-right: 37px;\\n}\\n.i360-app .table td {\\n color: #535353;\\n font-family: \\\"Open Sans\\\", sans-serif;\\n}\\n.i360-app .table th {\\n color: #4e5665;\\n background-color: #f8f8f8;\\n vertical-align: middle;\\n}\\n.ltr .i360-app .table th {\\n text-align: left;\\n}\\n.rtl .i360-app .table th {\\n text-align: right;\\n}\\n.i360-app .b_btn {\\n position: relative;\\n height: 32px;\\n line-height: 1 !important;\\n padding: 0 15px;\\n}\\n.i360-app [hidden] {\\n display: none !important;\\n}\\n.i360-app .rotate90 { /* IE 9 */ /* Safari */\\n transform: rotate(90deg);\\n opacity: 1;\\n}\\n.i360-app .rotate180 { /* IE 9 */ /* Safari */\\n transform: rotate(180deg);\\n opacity: 1;\\n}\\n.i360-app .no_list {\\n color: #299aed;\\n border: solid 2px #fff;\\n}\\n.i360-app .white_list {\\n background-color: #ffffff;\\n box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.27);\\n color: #4d4d4e;\\n border: solid 2px #fff;\\n}\\n.i360-app .gray_list {\\n background-color: #9f9f9f;\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.46);\\n border: solid 2px #9e9e9e;\\n color: #fff;\\n}\\n.i360-app .black_list {\\n background-color: #000000;\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.46);\\n border: solid 2px #000000;\\n color: #fff;\\n}\\n.i360-app .list-type-circle {\\n line-height: 14px;\\n}\\n.ltr .i360-app .list-type-circle {\\n padding-left: 22px;\\n}\\n.rtl .i360-app .list-type-circle {\\n padding-right: 22px;\\n}\\n.i360-app .list-type-circle:before {\\n content: \\\"\\\";\\n width: 14px;\\n height: 14px;\\n position: absolute;\\n border-radius: 100%;\\n}\\n.ltr .i360-app .list-type-circle:before {\\n margin-left: -22px;\\n}\\n.rtl .i360-app .list-type-circle:before {\\n margin-right: -22px;\\n}\\n.i360-app .list-type-white:before {\\n background-color: #ffffff;\\n box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.27);\\n}\\n.i360-app .list-type-black:before {\\n background-color: #000;\\n}\\n.i360-app .list-type-gray:before {\\n background-color: #b5bbc1;\\n}\\n.i360-app .plus_ip {\\n color: #299aed;\\n}\\n.i360-app .time {\\n height: 18px;\\n font-size: 13px;\\n color: #404040;\\n margin-top: 16px;\\n}\\n.ltr .i360-app .time {\\n float: left;\\n}\\n.rtl .i360-app .time {\\n float: right;\\n}\\n.ltr .i360-app .time {\\n margin-left: 10px;\\n}\\n.rtl .i360-app .time {\\n margin-right: 10px;\\n}\\n.i360-app .country {\\n width: 20px;\\n height: 12px;\\n margin-top: 18px;\\n}\\n.ltr .i360-app .country {\\n float: right;\\n}\\n.rtl .i360-app .country {\\n float: left;\\n}\\n.ltr .i360-app .country {\\n margin-left: 26px;\\n}\\n.rtl .i360-app .country {\\n margin-right: 26px;\\n}\\n.i360-app .name {\\n font-size: 13px;\\n font-weight: 600;\\n color: #000000;\\n margin-top: 16px;\\n}\\n.i360-app .retries {\\n font-size: 13px;\\n color: #404040;\\n margin-top: 16px;\\n}\\n.ltr .i360-app .retries {\\n float: left;\\n}\\n.rtl .i360-app .retries {\\n float: right;\\n}\\n.ltr .i360-app .retries {\\n margin-left: 10px;\\n}\\n.rtl .i360-app .retries {\\n margin-right: 10px;\\n}\\n.i360-app .incident {\\n min-height: 50px;\\n /* transition: all 0.s; */\\n}\\n.i360-app table.table tbody tr {\\n transition: background-color 0.3s;\\n}\\n.i360-app .collapsed:hover, .i360-app table.table tbody tr:hover {\\n background-color: #eff8f2;\\n}\\n.i360-app .clr {\\n clear: both;\\n}\\n.i360-app .additions {\\n margin-top: 8px;\\n}\\n.i360-app .description {\\n font-size: 13px;\\n line-height: 1.5;\\n color: #565656;\\n font-family: \\\"Open Sans\\\", sans-serif;\\n}\\n.i360-app .additions > div {\\n width: 150px;\\n margin-bottom: 3px;\\n}\\n.ltr .i360-app .additions > div {\\n float: left;\\n}\\n.rtl .i360-app .additions > div {\\n float: right;\\n}\\n.ltr .i360-app .additions > div {\\n text-align: left;\\n}\\n.rtl .i360-app .additions > div {\\n text-align: right;\\n}\\n.i360-app .addition_title {\\n font-size: 11px;\\n color: #828282;\\n}\\n.i360-app .addition_value {\\n opacity: 0.9;\\n font-size: 12px;\\n color: #1e1e1e;\\n}\\n.i360-app .main_info {\\n min-height: 50px;\\n}\\n.i360-app .table tr.selected td {\\n background-color: #eff8f2;\\n}\\n.i360-app .table > tbody > tr > td, .i360-app .table > tfoot > tr > td, .i360-app .table > thead > tr > td {\\n vertical-align: middle;\\n}\\n.i360-app app h1, .i360-app client-app h1, .i360-app h1.i360-title {\\n font-family: \\\"Open Sans\\\", sans-serif;\\n font-size: 22px;\\n font-weight: normal;\\n font-style: normal;\\n font-stretch: normal;\\n color: #1d1d1d;\\n}\\n.i360-app .flexbox {\\n display: flex;\\n}\\n.i360-app .flex_item {\\n padding: 10px;\\n /* flex: 1 100%; */\\n flex-grow: 1;\\n flex-basis: 100%;\\n}\\n.i360-app .time_column {\\n flex-grow: 1;\\n flex-basis: 100%;\\n}\\n.i360-app .abuser_column {\\n flex-grow: 1;\\n flex-basis: 100%;\\n}\\n.i360-app .retries_column {\\n flex-grow: 1;\\n flex-basis: 100%;\\n}\\n.i360-app .name_column {\\n flex-grow: 1;\\n flex-basis: 100%;\\n}\\n.i360-app .actions_column {\\n flex-grow: 1;\\n flex-basis: 100%;\\n}\\n.i360-app .no_result {\\n height: 88px;\\n line-height: 88px;\\n font-family: \\\"Open Sans\\\", sans-serif;\\n font-size: 16px;\\n color: #9e9e9e;\\n text-align: center;\\n}\\n@media all and (max-width: 1087px) {\\n .i360-app .incident .row > div {\\n padding: 5px;\\n }\\n}\\n@media all and (max-width: 1240px) {\\n .i360-app .retry_span {\\n display: none;\\n }\\n}\\n.i360-app img {\\n vertical-align: inherit !important;\\n}\\n.i360-app .modal-backdrop {\\n background: #4c4c4c;\\n}\\n.i360-app .modal-backdrop.in {\\n opacity: 0.55;\\n}\\n.i360-app textarea.underline-input,\\n.i360-app input.underline-input[type=text],\\n.i360-app input.underline-input[type=password] {\\n border-width: 0 0 2px 0;\\n border-style: solid;\\n border-color: #ccc;\\n width: 100%;\\n padding: 0;\\n font-size: 13px;\\n height: 42px;\\n color: #161616;\\n box-shadow: none !important;\\n outline: none;\\n background-color: transparent;\\n}\\n.i360-app textarea.underline-input:focus,\\n.i360-app input.underline-input[type=text]:focus,\\n.i360-app input.underline-input[type=password]:focus {\\n border-color: #11cb84;\\n}\\n.i360-app textarea.underline-input {\\n resize: none;\\n height: 87px;\\n min-height: 57px;\\n box-sizing: content-box;\\n transition: none;\\n}\\n.i360-app input[type=text] {\\n background-color: #ffffff;\\n}\\n.i360-app .i360-dashboard-link {\\n text-decoration: underline;\\n color: inherit;\\n}\\n.i360-app .i360-dashboard-link:hover, .i360-app .i360-dashboard-link:active {\\n text-decoration: underline;\\n color: inherit !important;\\n}\\n.i360-app .i360-logo {\\n width: 182px;\\n height: 47px;\\n position: relative;\\n margin: 0 14px;\\n display: block;\\n}\\n.i360-app .i360-logo .mat-icon {\\n width: auto;\\n height: auto;\\n}\\n.i360-app .i360-logo.imunifyav-logo {\\n width: 159px;\\n}\\n.i360-app .i360-logo.imunifyavplus-logo {\\n width: 170px;\\n}\\n.i360-app .material-icons, .i360-app .dropdown_list ul li.selected::before, .i360-app .dropdown_list ul li.active::before, .i360-app .dropdown .selected::before {\\n font-family: \\\"Material Icons\\\";\\n font-weight: normal;\\n font-style: normal;\\n font-size: 24px; /* Preferred icon size */\\n display: inline-block;\\n line-height: 1;\\n text-transform: none;\\n letter-spacing: normal;\\n word-wrap: normal;\\n white-space: nowrap;\\n /* Support for all WebKit browsers. */\\n -webkit-font-smoothing: antialiased;\\n /* Support for Safari and Chrome. */\\n text-rendering: optimizeLegibility;\\n /* Support for Firefox. */\\n -moz-osx-font-smoothing: grayscale;\\n /* Support for IE. */\\n font-feature-settings: \\\"liga\\\";\\n}\\n.i360-app .hoverable-button {\\n color: #535353;\\n cursor: pointer;\\n opacity: 0.5;\\n transition: all 0.3s;\\n}\\n.i360-app .hoverable-button:hover {\\n opacity: 1 !important;\\n}\\n.i360-app .disabled-button {\\n cursor: default;\\n opacity: 0.3;\\n}\\n.i360-app button.flat-button {\\n background: transparent;\\n border: 0;\\n border-radius: 2px;\\n color: #11cb84;\\n font-size: 15px;\\n height: 36px;\\n margin: 0 8px;\\n min-width: 88px;\\n outline: none;\\n padding: 0 8px;\\n}\\n.i360-app button.flat-button:focus, .i360-app button.flat-button:hover {\\n background-color: rgba(153, 153, 153, 0.2);\\n}\\n.i360-app button.flat-button:active {\\n background-color: rgba(153, 153, 153, 0.4);\\n}\\n.i360-app button.flat-button[disabled] {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.i360-app .incident .actions-wrapper {\\n margin-top: 16px;\\n}\\n.i360-app .flex-nowrap {\\n flex-wrap: nowrap;\\n}\\n.i360-app textarea[autosize] {\\n resize: none;\\n color: #161616;\\n}\\n.i360-app .position-relative {\\n position: relative;\\n}\\n.i360-app .position-absolute {\\n position: absolute;\\n}\\n.i360-app .display-block {\\n display: block;\\n}\\n.i360-app .display-flex-column {\\n display: flex;\\n flex-direction: column;\\n}\\n.i360-app .display-flex-row {\\n display: flex;\\n flex-direction: row;\\n}\\n.i360-app .flex-auto {\\n flex: auto;\\n}\\n.i360-app .align-center {\\n align-items: center;\\n}\\n.i360-app .align-self-center {\\n align-self: center;\\n}\\n.i360-app .text-align-center {\\n text-align: center !important;\\n}\\n.i360-app .as_link {\\n cursor: pointer;\\n}\\n.i360-app .dropdown_list {\\n position: relative;\\n}\\n.i360-app .dropdown_list ul {\\n position: absolute;\\n list-style: none;\\n width: fit-content;\\n white-space: nowrap;\\n background-color: #ffffff;\\n box-shadow: 0 2px 14px 0 #c2c2c2, 0 0 2px 0 #e0e0e0;\\n border: solid 1px #ffffff;\\n padding: 0;\\n top: 35px;\\n z-index: 99;\\n}\\n.ltr .i360-app .dropdown_list ul {\\n right: 0;\\n}\\n.rtl .i360-app .dropdown_list ul {\\n left: 0;\\n}\\n.i360-app .dropdown_list ul li {\\n font-family: \\\"Open Sans\\\", sans-serif;\\n font-size: 13px;\\n height: 35px;\\n line-height: 35px;\\n color: #4d4d4e;\\n cursor: pointer;\\n padding: 0 40px;\\n}\\n.ltr .i360-app .dropdown_list ul li {\\n text-align: left;\\n}\\n.rtl .i360-app .dropdown_list ul li {\\n text-align: right;\\n}\\n.i360-app .dropdown_list ul li:hover {\\n background-color: #e9f6ee;\\n}\\n.i360-app .dropdown_list ul li.selected, .i360-app .dropdown_list ul li.active {\\n background-color: rgba(55, 171, 99, 0.11);\\n}\\n.i360-app .dropdown_list ul li.selected::before, .i360-app .dropdown_list ul li.active::before {\\n content: \\\"check\\\";\\n opacity: 1;\\n color: #787878;\\n position: absolute;\\n padding-top: 4px;\\n}\\n.ltr .i360-app .dropdown_list ul li.selected::before, .ltr .i360-app .dropdown_list ul li.active::before {\\n left: 8px;\\n}\\n.rtl .i360-app .dropdown_list ul li.selected::before, .rtl .i360-app .dropdown_list ul li.active::before {\\n right: 8px;\\n}\\n.i360-app actions div.dropdown_list ul li {\\n padding: 0 20px;\\n}\\n.i360-app .dropdown {\\n position: relative;\\n}\\n.i360-app .dropdown .dropdown-toggle {\\n white-space: nowrap;\\n}\\n.i360-app .dropdown .dropdown-menu {\\n position: absolute;\\n left: 0;\\n z-index: 1000;\\n display: none;\\n float: left;\\n min-width: 12rem;\\n margin: 0.125rem 0 0;\\n list-style: none;\\n top: 100%;\\n background-color: #ffffff;\\n box-shadow: 0 2px 14px 0 #c2c2c2, 0 0 2px 0 #e0e0e0;\\n border-width: 0;\\n border-radius: 0;\\n padding: 0;\\n}\\n.ltr .i360-app .dropdown .dropdown-menu {\\n left: 0;\\n}\\n.rtl .i360-app .dropdown .dropdown-menu {\\n right: 0;\\n}\\n.i360-app .dropdown .dropdown-menu.show {\\n display: block;\\n}\\n.i360-app .dropdown .dropdown-menu > li:hover {\\n cursor: pointer;\\n}\\n.i360-app .dropdown .dropdown-menu > li > a {\\n margin: 0;\\n height: 35px;\\n font-size: 13px;\\n color: #4d4d4e;\\n line-height: 30px;\\n box-sizing: border-box;\\n display: block;\\n}\\n.ltr .i360-app .dropdown .dropdown-menu > li > a {\\n padding: 3px 20px 5px 40px;\\n}\\n.rtl .i360-app .dropdown .dropdown-menu > li > a {\\n padding: 3px 40px 5px 20px;\\n}\\n.ltr .i360-app .dropdown .dropdown-menu > li > a {\\n text-align: left;\\n}\\n.rtl .i360-app .dropdown .dropdown-menu > li > a {\\n text-align: right;\\n}\\n.i360-app .dropdown .dropdown-menu > li > a:hover, .i360-app .dropdown .dropdown-menu > li > a:active {\\n background-color: #e9f6ee;\\n color: inherit;\\n}\\n.i360-app .dropdown.selector {\\n width: 100%;\\n}\\n.i360-app .dropdown.selector button {\\n color: #535353;\\n}\\n.ltr .i360-app .dropdown.selector button {\\n text-align: left;\\n}\\n.rtl .i360-app .dropdown.selector button {\\n text-align: right;\\n}\\n.ltr .i360-app .dropdown.selector button {\\n padding-left: 14px;\\n}\\n.rtl .i360-app .dropdown.selector button {\\n padding-right: 14px;\\n}\\n.ltr .i360-app .dropdown.selector button .dropup {\\n float: right;\\n}\\n.rtl .i360-app .dropdown.selector button .dropup {\\n float: left;\\n}\\n.i360-app .dropdown.selector button .dropup .caret.up {\\n margin-bottom: 8px;\\n}\\n.i360-app .dropdown.selector button .dropup .caret.down {\\n position: absolute;\\n border-top: 4px dashed;\\n border-bottom: 0;\\n bottom: 0;\\n}\\n.ltr .i360-app .dropdown.selector button .dropup .caret.down {\\n left: 0;\\n}\\n.rtl .i360-app .dropdown.selector button .dropup .caret.down {\\n right: 0;\\n}\\n@media (max-width: 767px) {\\n .i360-app .upgrade-button {\\n margin: 11px 13px;\\n }\\n}\\n@media (min-width: 768px) and (max-width: 1500px) {\\n .i360-app .upgrade-button {\\n margin: 20px 8px;\\n }\\n}\\n@media (min-width: 1501px) {\\n .i360-app .upgrade-button {\\n margin: 20px 20px;\\n }\\n}\\n.i360-app .typeahead .dropdown-menu {\\n display: table;\\n}\\n.i360-app .typeahead .dropdown-menu li > a {\\n padding: 7px 0;\\n line-height: 20px;\\n}\\n.i360-app .typeahead .dropdown-menu .active > a {\\n background-color: #e9f6ee;\\n}\\n.i360-app .table > tbody > tr > td, .i360-app .table > tbody > tr > th, .i360-app .table > thead > tr > td, .i360-app .table > thead > tr > th {\\n vertical-align: middle;\\n}\\n.i360-app .table > tbody > tr > td.i360-vertical-align-top, .i360-app .table > tbody > tr > th.i360-vertical-align-top, .i360-app .table > thead > tr > td.i360-vertical-align-top, .i360-app .table > thead > tr > th.i360-vertical-align-top {\\n vertical-align: top;\\n}\\n.i360-app .btn-link {\\n padding: 0;\\n color: #11cb84;\\n}\\n.i360-app .btn-link:hover, .i360-app .btn-link:focus, .i360-app .btn-link:active {\\n color: #257142;\\n outline: none;\\n text-decoration: none;\\n}\\n.i360-app .modal-backdrop.in {\\n opacity: 0.4;\\n}\\n.i360-app .form-control {\\n border-radius: 2px;\\n background-color: #ffffff;\\n border: solid 1px #d8d8d8;\\n width: 100%;\\n}\\n.i360-app .form-control:focus-visible {\\n outline: none;\\n}\\n.i360-app .flexer {\\n flex-direction: row;\\n}\\n.i360-app .flexer.justify-beetween {\\n justify-content: space-between;\\n}\\n.i360-app ::-webkit-scrollbar {\\n width: 13px;\\n}\\n.i360-app ::-webkit-scrollbar-thumb {\\n border-width: 1px;\\n background-color: #53b076;\\n}\\n.i360-app ::-webkit-scrollbar-track {\\n background-color: #e1f0e7;\\n}\\n.i360-app ::-webkit-scrollbar-track:hover {\\n box-shadow: 0 6px 6px 0 rgba(0, 0, 0, 0.13), 0 0 6px 0 rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .i360-settings-title-column {\\n display: flex;\\n flex-direction: column;\\n position: relative;\\n max-width: 25%;\\n min-width: 300px;\\n flex-grow: 1;\\n flex-shrink: 0;\\n padding-right: 15px;\\n padding-left: 15px;\\n}\\n.i360-app .i360-settings-value-column {\\n display: flex;\\n flex-direction: row;\\n flex: auto;\\n position: relative;\\n padding-right: 15px;\\n padding-left: 15px;\\n}\\n.i360-app mat-slide-toggle .mat-slide-toggle-thumb-container {\\n width: 18px;\\n height: 18px;\\n top: 2px;\\n transform: translate3d(2px, 0, 0);\\n}\\n.i360-app mat-slide-toggle.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container {\\n transform: translate3d(26px, 0, 0);\\n}\\n.rtl .i360-app mat-slide-toggle.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container {\\n transform: translate3d(-26px, 0, 0);\\n}\\n.i360-app mat-slide-toggle .mat-slide-toggle-bar {\\n width: 46px;\\n height: 22px;\\n display: flex;\\n align-items: center;\\n border-radius: 12px;\\n}\\n.i360-app mat-slide-toggle.mat-slide-toggle.mat-checked .mat-slide-toggle-bar::before {\\n opacity: 0.62;\\n font-size: 10px;\\n font-weight: 600;\\n letter-spacing: -0.1px;\\n content: \\\"on\\\";\\n position: absolute;\\n}\\n.ltr .i360-app mat-slide-toggle.mat-slide-toggle.mat-checked .mat-slide-toggle-bar::before {\\n right: 24px;\\n}\\n.rtl .i360-app mat-slide-toggle.mat-slide-toggle.mat-checked .mat-slide-toggle-bar::before {\\n left: 24px;\\n}\\n.i360-app mat-slide-toggle.mat-slide-toggle:not(.mat-checked) .mat-slide-toggle-bar::after {\\n opacity: 0.62;\\n font-size: 10px;\\n font-weight: 600;\\n letter-spacing: -0.1px;\\n content: \\\"off\\\";\\n position: absolute;\\n}\\n.ltr .i360-app mat-slide-toggle.mat-slide-toggle:not(.mat-checked) .mat-slide-toggle-bar::after {\\n left: 24px;\\n}\\n.rtl .i360-app mat-slide-toggle.mat-slide-toggle:not(.mat-checked) .mat-slide-toggle-bar::after {\\n right: 24px;\\n}\\n.i360-app mat-slide-toggle .mat-slide-toggle-thumb {\\n height: 18px;\\n width: 18px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.ltr .i360-app mat-slide-toggle .mat-slide-toggle-input {\\n left: 9px;\\n}\\n.rtl .i360-app mat-slide-toggle .mat-slide-toggle-input {\\n right: 9px;\\n}\\n.mat-slide-toggle.cdk-keyboard-focused .cdk-high-contrast-active .i360-app mat-slide-toggle .mat-slide-toggle-bar {\\n outline-offset: 1px;\\n}\\n.mat-slide-toggle.cdk-keyboard-focused .cdk-high-contrast-active :host .i360-app mat-slide-toggle .mat-slide-toggle-bar {\\n outline-offset: 1px;\\n}\\n.i360-app mat-slide-toggle .mat-ripple-element.mat-slide-toggle-persistent-ripple {\\n transform: none;\\n}\\n.i360-app mat-checkbox .mat-checkbox-frame {\\n border-width: 1px;\\n}\\n.i360-app mat-checkbox .mat-ripple-element.mat-checkbox-persistent-ripple {\\n transform: none;\\n}\\n.i360-app mat-radio-button .mat-radio-inner-circle,\\n.i360-app mat-radio-button .mat-radio-outer-circle,\\n.i360-app mat-radio-button .mat-radio-container {\\n height: 16px;\\n width: 16px;\\n}\\n.i360-app mat-radio-button .mat-radio-outer-circle {\\n border-width: 1px;\\n}\\n.i360-app mat-radio-button.mat-radio-checked .mat-radio-inner-circle {\\n transform: scale(0.375);\\n}\\n.i360-app mat-radio-button .mat-ripple-element.mat-radio-persistent-ripple {\\n transform: none;\\n}\\n.i360-app .mat-badge-content {\\n font-weight: 600;\\n font-size: 12px;\\n font-family: 'Open Sans', sans-serif;\\n}\\n.i360-app .mat-badge-small .mat-badge-content {\\n font-size: 9px;\\n}\\n.i360-app .mat-badge-large .mat-badge-content {\\n font-size: 24px;\\n}\\n.i360-app .mat-h1,\\n.i360-app .mat-headline,\\n.i360-app .mat-typography .mat-h1,\\n.i360-app .mat-typography .mat-headline,\\n.i360-app .mat-typography h1 {\\n font: 400 24px / 32px 'Open Sans', sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.i360-app .mat-h2,\\n.i360-app .mat-title,\\n.i360-app .mat-typography .mat-h2,\\n.i360-app .mat-typography .mat-title,\\n.i360-app .mat-typography h2 {\\n font: 500 20px / 32px 'Open Sans', sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.i360-app .mat-h3,\\n.i360-app .mat-subheading-2,\\n.i360-app .mat-typography .mat-h3,\\n.i360-app .mat-typography .mat-subheading-2,\\n.i360-app .mat-typography h3 {\\n font: 400 16px / 28px 'Open Sans', sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.i360-app .mat-h4,\\n.i360-app .mat-subheading-1,\\n.i360-app .mat-typography .mat-h4,\\n.i360-app .mat-typography .mat-subheading-1,\\n.i360-app .mat-typography h4 {\\n font: 400 15px / 24px 'Open Sans', sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.i360-app .mat-h5,\\n.i360-app .mat-typography .mat-h5,\\n.i360-app .mat-typography h5 {\\n font: 400 calc(14px * 0.83) / 20px 'Open Sans', sans-serif;\\n margin: 0 0 12px;\\n}\\n.i360-app .mat-h6,\\n.i360-app .mat-typography .mat-h6,\\n.i360-app .mat-typography h6 {\\n font: 400 calc(14px * 0.67) / 20px 'Open Sans', sans-serif;\\n margin: 0 0 12px;\\n}\\n.i360-app .mat-body-strong,\\n.i360-app .mat-body-2,\\n.i360-app .mat-typography .mat-body-strong,\\n.i360-app .mat-typography .mat-body-2 {\\n font: 500 14px / 24px 'Open Sans', sans-serif;\\n letter-spacing: normal;\\n}\\n.i360-app .mat-body,\\n.i360-app .mat-body-1,\\n.i360-app .mat-typography .mat-body,\\n.i360-app .mat-typography .mat-body-1,\\n.i360-app .mat-typography {\\n font: 400 14px / 20px 'Open Sans', sans-serif;\\n letter-spacing: normal;\\n}\\n.i360-app .mat-body p,\\n.i360-app .mat-body-1 p,\\n.i360-app .mat-typography .mat-body p,\\n.i360-app .mat-typography .mat-body-1 p,\\n.i360-app .mat-typography p {\\n margin: 0 0 12px;\\n}\\n.i360-app .mat-small,\\n.i360-app .mat-caption,\\n.i360-app .mat-typography .mat-small,\\n.i360-app .mat-typography .mat-caption {\\n font: 400 12px / 20px 'Open Sans', sans-serif;\\n letter-spacing: normal;\\n}\\n.i360-app .mat-display-4,\\n.i360-app .mat-typography .mat-display-4 {\\n font: 300 112px / 112px 'Open Sans', sans-serif;\\n letter-spacing: -0.05em;\\n margin: 0 0 56px;\\n}\\n.i360-app .mat-display-3,\\n.i360-app .mat-typography .mat-display-3 {\\n font: 400 56px / 56px 'Open Sans', sans-serif;\\n letter-spacing: -0.02em;\\n margin: 0 0 64px;\\n}\\n.i360-app .mat-display-2,\\n.i360-app .mat-typography .mat-display-2 {\\n font: 400 45px / 48px 'Open Sans', sans-serif;\\n letter-spacing: -0.005em;\\n margin: 0 0 64px;\\n}\\n.i360-app .mat-display-1,\\n.i360-app .mat-typography .mat-display-1 {\\n font: 400 34px / 40px 'Open Sans', sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 64px;\\n}\\n.i360-app .mat-bottom-sheet-container {\\n font: 400 14px / 20px 'Open Sans', sans-serif;\\n letter-spacing: normal;\\n}\\n.i360-app .mat-button, .i360-app .mat-raised-button, .i360-app .mat-icon-button, .i360-app .mat-stroked-button,\\n.i360-app .mat-flat-button, .i360-app .mat-fab, .i360-app .mat-mini-fab {\\n font-family: 'Open Sans', sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.i360-app .mat-button-toggle {\\n font-family: 'Open Sans', sans-serif;\\n}\\n.i360-app .mat-card {\\n font-family: 'Open Sans', sans-serif;\\n}\\n.i360-app .mat-card-title {\\n font-size: 24px;\\n font-weight: 500;\\n}\\n.i360-app .mat-card-header .mat-card-title {\\n font-size: 20px;\\n}\\n.i360-app .mat-card-subtitle,\\n.i360-app .mat-card-content {\\n font-size: 14px;\\n}\\n.i360-app .mat-checkbox {\\n font-family: 'Open Sans', sans-serif;\\n}\\n.i360-app .mat-checkbox-layout .mat-checkbox-label {\\n line-height: 24px;\\n}\\n.i360-app .mat-chip {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.i360-app .mat-chip .mat-chip-trailing-icon.mat-icon,\\n.i360-app .mat-chip .mat-chip-remove.mat-icon {\\n font-size: 18px;\\n}\\n.i360-app .mat-table {\\n font-family: 'Open Sans', sans-serif;\\n}\\n.i360-app .mat-header-cell {\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.i360-app .mat-cell, .i360-app .mat-footer-cell {\\n font-size: 14px;\\n}\\n.i360-app .mat-calendar {\\n font-family: 'Open Sans', sans-serif;\\n}\\n.i360-app .mat-calendar-body {\\n font-size: 13px;\\n}\\n.i360-app .mat-calendar-body-label,\\n.i360-app .mat-calendar-period-button {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.i360-app .mat-calendar-table-header th {\\n font-size: 11px;\\n font-weight: 400;\\n}\\n.i360-app .mat-dialog-title {\\n font: 500 20px / 32px 'Open Sans', sans-serif;\\n letter-spacing: normal;\\n}\\n.i360-app .mat-expansion-panel-header {\\n font-family: 'Open Sans', sans-serif;\\n font-size: 15px;\\n font-weight: 400;\\n}\\n.i360-app .mat-expansion-panel-content {\\n font: 400 14px / 20px 'Open Sans', sans-serif;\\n letter-spacing: normal;\\n}\\n.i360-app .mat-form-field {\\n font-size: inherit;\\n font-weight: 400;\\n line-height: 1.125;\\n font-family: 'Open Sans', sans-serif;\\n letter-spacing: normal;\\n}\\n.i360-app .mat-form-field-wrapper {\\n padding-bottom: 1.34375em;\\n}\\n.i360-app .mat-form-field-prefix .mat-icon,\\n.i360-app .mat-form-field-suffix .mat-icon {\\n font-size: 150%;\\n line-height: 1.125;\\n}\\n.i360-app .mat-form-field-prefix .mat-icon-button,\\n.i360-app .mat-form-field-suffix .mat-icon-button {\\n height: 1.5em;\\n width: 1.5em;\\n}\\n.i360-app .mat-form-field-prefix .mat-icon-button .mat-icon,\\n.i360-app .mat-form-field-suffix .mat-icon-button .mat-icon {\\n height: 1.125em;\\n line-height: 1.125;\\n}\\n.i360-app .mat-form-field-infix {\\n padding: 0.5em 0;\\n border-top: 0.84375em solid transparent;\\n}\\n.i360-app .mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.i360-app .mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.i360-app .mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.i360-app .mat-form-field-label-wrapper {\\n top: -0.84375em;\\n padding-top: 0.84375em;\\n}\\n.i360-app .mat-form-field-label {\\n top: 1.34375em;\\n}\\n.i360-app .mat-form-field-underline {\\n bottom: 1.34375em;\\n}\\n.i360-app .mat-form-field-subscript-wrapper {\\n font-size: 75%;\\n margin-top: 0.6666666667em;\\n top: calc(100% - 1.7916666667em);\\n}\\n.i360-app .mat-form-field-appearance-legacy .mat-form-field-wrapper {\\n padding-bottom: 1.25em;\\n}\\n.i360-app .mat-form-field-appearance-legacy .mat-form-field-infix {\\n padding: 0.4375em 0;\\n}\\n.i360-app .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.i360-app .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.001px);\\n width: 133.3333333333%;\\n}\\n.i360-app .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00101px);\\n width: 133.3333433333%;\\n}\\n.i360-app .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00102px);\\n width: 133.3333533333%;\\n}\\n.i360-app .mat-form-field-appearance-legacy .mat-form-field-label {\\n top: 1.28125em;\\n}\\n.i360-app .mat-form-field-appearance-legacy .mat-form-field-underline {\\n bottom: 1.25em;\\n}\\n.i360-app .mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {\\n margin-top: 0.5416666667em;\\n top: calc(100% - 1.6666666667em);\\n}\\n@media print {\\n .i360-app .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.i360-app .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28122em) scale(0.75);\\n }\\n .i360-app .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28121em) scale(0.75);\\n }\\n .i360-app .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.2812em) scale(0.75);\\n }\\n}\\n.i360-app .mat-form-field-appearance-fill .mat-form-field-infix {\\n padding: 0.25em 0 0.75em 0;\\n}\\n.i360-app .mat-form-field-appearance-fill .mat-form-field-label {\\n top: 1.09375em;\\n margin-top: -0.5em;\\n}\\n.i360-app .mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.i360-app .mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.i360-app .mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.i360-app .mat-form-field-appearance-outline .mat-form-field-infix {\\n padding: 1em 0 1em 0;\\n}\\n.i360-app .mat-form-field-appearance-outline .mat-form-field-label {\\n top: 1.84375em;\\n margin-top: -0.25em;\\n}\\n.i360-app .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.i360-app .mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.i360-app .mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.i360-app .mat-grid-tile-header,\\n.i360-app .mat-grid-tile-footer {\\n font-size: 14px;\\n}\\n.i360-app .mat-grid-tile-header .mat-line,\\n.i360-app .mat-grid-tile-footer .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.i360-app .mat-grid-tile-header .mat-line:nth-child(n+2),\\n.i360-app .mat-grid-tile-footer .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.i360-app input.mat-input-element {\\n margin-top: -0.0625em;\\n}\\n.i360-app .mat-menu-item {\\n font-family: 'Open Sans', sans-serif;\\n font-size: 14px;\\n font-weight: 400;\\n}\\n.i360-app .mat-paginator,\\n.i360-app .mat-paginator-page-size .mat-select-trigger {\\n font-family: 'Open Sans', sans-serif;\\n font-size: 12px;\\n}\\n.i360-app .mat-radio-button {\\n font-family: 'Open Sans', sans-serif;\\n}\\n.i360-app .mat-select {\\n font-family: 'Open Sans', sans-serif;\\n}\\n.i360-app .mat-select-trigger {\\n height: 1.125em;\\n}\\n.i360-app .mat-slide-toggle-content {\\n font-family: 'Open Sans', sans-serif;\\n}\\n.i360-app .mat-slider-thumb-label-text {\\n font-family: 'Open Sans', sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.i360-app .mat-stepper-vertical, .i360-app .mat-stepper-horizontal {\\n font-family: 'Open Sans', sans-serif;\\n}\\n.i360-app .mat-step-label {\\n font-size: 14px;\\n font-weight: 400;\\n}\\n.i360-app .mat-step-sub-label-error {\\n font-weight: normal;\\n}\\n.i360-app .mat-step-label-error {\\n font-size: 14px;\\n}\\n.i360-app .mat-step-label-selected {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.i360-app .mat-tab-group {\\n font-family: 'Open Sans', sans-serif;\\n}\\n.i360-app .mat-tab-label, .i360-app .mat-tab-link {\\n font-family: 'Open Sans', sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.i360-app .mat-toolbar,\\n.i360-app .mat-toolbar h1,\\n.i360-app .mat-toolbar h2,\\n.i360-app .mat-toolbar h3,\\n.i360-app .mat-toolbar h4,\\n.i360-app .mat-toolbar h5,\\n.i360-app .mat-toolbar h6 {\\n font: 500 20px / 32px 'Open Sans', sans-serif;\\n letter-spacing: normal;\\n margin: 0;\\n}\\n.i360-app .mat-tooltip {\\n font-family: 'Open Sans', sans-serif;\\n font-size: 10px;\\n padding-top: 6px;\\n padding-bottom: 6px;\\n}\\n.i360-app .mat-tooltip-handset {\\n font-size: 14px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n.i360-app .mat-list-item {\\n font-family: 'Open Sans', sans-serif;\\n}\\n.i360-app .mat-list-option {\\n font-family: 'Open Sans', sans-serif;\\n}\\n.i360-app .mat-list-base .mat-list-item {\\n font-size: 16px;\\n}\\n.i360-app .mat-list-base .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.i360-app .mat-list-base .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 14px;\\n}\\n.i360-app .mat-list-base .mat-list-option {\\n font-size: 16px;\\n}\\n.i360-app .mat-list-base .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.i360-app .mat-list-base .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 14px;\\n}\\n.i360-app .mat-list-base .mat-subheader {\\n font-family: 'Open Sans', sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.i360-app .mat-list-base[dense] .mat-list-item {\\n font-size: 12px;\\n}\\n.i360-app .mat-list-base[dense] .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.i360-app .mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.i360-app .mat-list-base[dense] .mat-list-option {\\n font-size: 12px;\\n}\\n.i360-app .mat-list-base[dense] .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.i360-app .mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.i360-app .mat-list-base[dense] .mat-subheader {\\n font-family: 'Open Sans', sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.i360-app .mat-option {\\n font-family: 'Open Sans', sans-serif;\\n font-size: 16px;\\n}\\n.i360-app .mat-optgroup-label {\\n font: 500 14px / 24px 'Open Sans', sans-serif;\\n letter-spacing: normal;\\n}\\n.i360-app .mat-simple-snackbar {\\n font-family: 'Open Sans', sans-serif;\\n font-size: 14px;\\n}\\n.i360-app .mat-simple-snackbar-action {\\n line-height: 1;\\n font-family: inherit;\\n font-size: inherit;\\n font-weight: 500;\\n}\\n.i360-app .mat-tree {\\n font-family: 'Open Sans', sans-serif;\\n}\\n.i360-app .mat-tree-node,\\n.i360-app .mat-nested-tree-node {\\n font-weight: 400;\\n font-size: 14px;\\n}\\n.i360-app .mat-ripple {\\n overflow: hidden;\\n position: relative;\\n}\\n.i360-app .mat-ripple:not(:empty) {\\n transform: translateZ(0);\\n}\\n.i360-app .mat-ripple.mat-ripple-unbounded {\\n overflow: visible;\\n}\\n.i360-app .mat-ripple-element {\\n position: absolute;\\n border-radius: 50%;\\n pointer-events: none;\\n transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1);\\n transform: scale3d(0, 0, 0);\\n}\\n.cdk-high-contrast-active .i360-app .mat-ripple-element {\\n display: none;\\n}\\n.i360-app .cdk-visually-hidden {\\n border: 0;\\n clip: rect(0 0 0 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n white-space: nowrap;\\n outline: 0;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n left: 0;\\n}\\n[dir=rtl] .i360-app .cdk-visually-hidden {\\n left: auto;\\n right: 0;\\n}\\n.i360-app .cdk-overlay-container, .i360-app .cdk-global-overlay-wrapper {\\n pointer-events: none;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n}\\n.i360-app .cdk-overlay-container {\\n position: fixed;\\n z-index: 1000;\\n}\\n.i360-app .cdk-overlay-container:empty {\\n display: none;\\n}\\n.i360-app .cdk-global-overlay-wrapper {\\n display: flex;\\n position: absolute;\\n z-index: 1000;\\n}\\n.i360-app .cdk-overlay-pane {\\n position: absolute;\\n pointer-events: auto;\\n box-sizing: border-box;\\n z-index: 1000;\\n display: flex;\\n max-width: 100%;\\n max-height: 100%;\\n}\\n.i360-app .cdk-overlay-backdrop {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 1000;\\n pointer-events: auto;\\n -webkit-tap-highlight-color: transparent;\\n transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);\\n opacity: 0;\\n}\\n.i360-app .cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 1;\\n}\\n.cdk-high-contrast-active .i360-app .cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 0.6;\\n}\\n.i360-app .cdk-overlay-dark-backdrop {\\n background: rgba(0, 0, 0, 0.32);\\n}\\n.i360-app .cdk-overlay-transparent-backdrop {\\n transition: visibility 1ms linear, opacity 1ms linear;\\n visibility: hidden;\\n opacity: 1;\\n}\\n.i360-app .cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 0;\\n visibility: visible;\\n}\\n.i360-app .cdk-overlay-backdrop-noop-animation {\\n transition: none;\\n}\\n.i360-app .cdk-overlay-connected-position-bounding-box {\\n position: absolute;\\n z-index: 1000;\\n display: flex;\\n flex-direction: column;\\n min-width: 1px;\\n min-height: 1px;\\n}\\n.i360-app .cdk-global-scrollblock {\\n position: fixed;\\n width: 100%;\\n overflow-y: scroll;\\n}\\n.i360-app textarea.cdk-textarea-autosize {\\n resize: none;\\n}\\n.i360-app textarea.cdk-textarea-autosize-measuring {\\n padding: 2px 0 !important;\\n box-sizing: content-box !important;\\n height: auto !important;\\n overflow: hidden !important;\\n}\\n.i360-app textarea.cdk-textarea-autosize-measuring-firefox {\\n padding: 2px 0 !important;\\n box-sizing: content-box !important;\\n height: 0 !important;\\n}\\n@keyframes cdk-text-field-autofill-start { /*!*/ }\\n@keyframes cdk-text-field-autofill-end { /*!*/ }\\n.i360-app .cdk-text-field-autofill-monitored:-webkit-autofill {\\n animation: cdk-text-field-autofill-start 0s 1ms;\\n}\\n.i360-app .cdk-text-field-autofill-monitored:not(:-webkit-autofill) {\\n animation: cdk-text-field-autofill-end 0s 1ms;\\n}\\n.i360-app .mat-focus-indicator {\\n position: relative;\\n}\\n.i360-app .mat-focus-indicator::before {\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n position: absolute;\\n box-sizing: border-box;\\n pointer-events: none;\\n display: var(--mat-focus-indicator-display, none);\\n border: var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);\\n border-radius: var(--mat-focus-indicator-border-radius, 4px);\\n}\\n.i360-app .mat-focus-indicator:focus::before {\\n content: \\\"\\\";\\n}\\n.i360-app .cdk-high-contrast-active .i360-app {\\n --mat-focus-indicator-display: block;\\n}\\n.i360-app .mat-mdc-focus-indicator {\\n position: relative;\\n}\\n.i360-app .mat-mdc-focus-indicator::before {\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n position: absolute;\\n box-sizing: border-box;\\n pointer-events: none;\\n display: var(--mat-mdc-focus-indicator-display, none);\\n border: var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);\\n border-radius: var(--mat-mdc-focus-indicator-border-radius, 4px);\\n}\\n.i360-app .mat-mdc-focus-indicator:focus::before {\\n content: \\\"\\\";\\n}\\n.i360-app .cdk-high-contrast-active .i360-app {\\n --mat-mdc-focus-indicator-display: block;\\n}\\n.i360-app .mat-ripple-element {\\n background-color: rgba(0, 0, 0, 0.1);\\n}\\n.i360-app .mat-option {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-option:hover:not(.mat-option-disabled), .i360-app .mat-option:focus:not(.mat-option-disabled) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.i360-app .mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.i360-app .mat-option.mat-active {\\n background: rgba(0, 0, 0, 0.04);\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-option.mat-option-disabled {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-primary .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #11cb84;\\n}\\n.i360-app .mat-accent .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #f77c00;\\n}\\n.i360-app .mat-warn .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #ea7474;\\n}\\n.i360-app .mat-optgroup-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-optgroup-disabled .mat-optgroup-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-pseudo-checkbox {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-pseudo-checkbox::after {\\n color: #fafafa;\\n}\\n.i360-app .mat-pseudo-checkbox-disabled {\\n color: #b0b0b0;\\n}\\n.i360-app .mat-primary .mat-pseudo-checkbox-checked,\\n.i360-app .mat-primary .mat-pseudo-checkbox-indeterminate {\\n background: #11cb84;\\n}\\n.i360-app .mat-pseudo-checkbox-checked,\\n.i360-app .mat-pseudo-checkbox-indeterminate,\\n.i360-app .mat-accent .mat-pseudo-checkbox-checked,\\n.i360-app .mat-accent .mat-pseudo-checkbox-indeterminate {\\n background: #f77c00;\\n}\\n.i360-app .mat-warn .mat-pseudo-checkbox-checked,\\n.i360-app .mat-warn .mat-pseudo-checkbox-indeterminate {\\n background: #ea7474;\\n}\\n.i360-app .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,\\n.i360-app .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled {\\n background: #b0b0b0;\\n}\\n.i360-app .mat-app-background, .i360-app.mat-app-background {\\n background-color: #fafafa;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-elevation-z0 {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z1 {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z2 {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z3 {\\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z4 {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z5 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z6 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z7 {\\n box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z8 {\\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z9 {\\n box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z10 {\\n box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z11 {\\n box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z12 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z13 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z14 {\\n box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z15 {\\n box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z16 {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z17 {\\n box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z18 {\\n box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z19 {\\n box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z20 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z21 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z22 {\\n box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z23 {\\n box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-elevation-z24 {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-theme-loaded-marker {\\n display: none;\\n}\\n.i360-app .mat-autocomplete-panel {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-autocomplete-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) {\\n background: white;\\n}\\n.i360-app .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-badge {\\n position: relative;\\n}\\n.i360-app .mat-badge.mat-badge {\\n overflow: visible;\\n}\\n.i360-app .mat-badge-hidden .mat-badge-content {\\n display: none;\\n}\\n.i360-app .mat-badge-content {\\n position: absolute;\\n text-align: center;\\n display: inline-block;\\n border-radius: 50%;\\n transition: transform 200ms ease-in-out;\\n transform: scale(0.6);\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n pointer-events: none;\\n}\\n.i360-app .ng-animate-disabled .mat-badge-content,\\n.i360-app .mat-badge-content._mat-animation-noopable {\\n transition: none;\\n}\\n.i360-app .mat-badge-content.mat-badge-active {\\n transform: none;\\n}\\n.i360-app .mat-badge-small .mat-badge-content {\\n width: 16px;\\n height: 16px;\\n line-height: 16px;\\n}\\n.i360-app .mat-badge-small.mat-badge-above .mat-badge-content {\\n top: -8px;\\n}\\n.i360-app .mat-badge-small.mat-badge-below .mat-badge-content {\\n bottom: -8px;\\n}\\n.i360-app .mat-badge-small.mat-badge-before .mat-badge-content {\\n left: -16px;\\n}\\n[dir=rtl] .i360-app .mat-badge-small.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -16px;\\n}\\n.i360-app .mat-badge-small.mat-badge-after .mat-badge-content {\\n right: -16px;\\n}\\n[dir=rtl] .i360-app .mat-badge-small.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -16px;\\n}\\n.i360-app .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -8px;\\n}\\n[dir=rtl] .i360-app .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -8px;\\n}\\n.i360-app .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -8px;\\n}\\n[dir=rtl] .i360-app .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -8px;\\n}\\n.i360-app .mat-badge-medium .mat-badge-content {\\n width: 22px;\\n height: 22px;\\n line-height: 22px;\\n}\\n.i360-app .mat-badge-medium.mat-badge-above .mat-badge-content {\\n top: -11px;\\n}\\n.i360-app .mat-badge-medium.mat-badge-below .mat-badge-content {\\n bottom: -11px;\\n}\\n.i360-app .mat-badge-medium.mat-badge-before .mat-badge-content {\\n left: -22px;\\n}\\n[dir=rtl] .i360-app .mat-badge-medium.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -22px;\\n}\\n.i360-app .mat-badge-medium.mat-badge-after .mat-badge-content {\\n right: -22px;\\n}\\n[dir=rtl] .i360-app .mat-badge-medium.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -22px;\\n}\\n.i360-app .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -11px;\\n}\\n[dir=rtl] .i360-app .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -11px;\\n}\\n.i360-app .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -11px;\\n}\\n[dir=rtl] .i360-app .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -11px;\\n}\\n.i360-app .mat-badge-large .mat-badge-content {\\n width: 28px;\\n height: 28px;\\n line-height: 28px;\\n}\\n.i360-app .mat-badge-large.mat-badge-above .mat-badge-content {\\n top: -14px;\\n}\\n.i360-app .mat-badge-large.mat-badge-below .mat-badge-content {\\n bottom: -14px;\\n}\\n.i360-app .mat-badge-large.mat-badge-before .mat-badge-content {\\n left: -28px;\\n}\\n[dir=rtl] .i360-app .mat-badge-large.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -28px;\\n}\\n.i360-app .mat-badge-large.mat-badge-after .mat-badge-content {\\n right: -28px;\\n}\\n[dir=rtl] .i360-app .mat-badge-large.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -28px;\\n}\\n.i360-app .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -14px;\\n}\\n[dir=rtl] .i360-app .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -14px;\\n}\\n.i360-app .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -14px;\\n}\\n[dir=rtl] .i360-app .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -14px;\\n}\\n.i360-app .mat-badge-content {\\n color: white;\\n background: #11cb84;\\n}\\n.cdk-high-contrast-active .i360-app .mat-badge-content {\\n outline: solid 1px;\\n border-radius: 0;\\n}\\n.i360-app .mat-badge-accent .mat-badge-content {\\n background: #f77c00;\\n color: white;\\n}\\n.i360-app .mat-badge-warn .mat-badge-content {\\n color: white;\\n background: #ea7474;\\n}\\n.i360-app .mat-badge-disabled .mat-badge-content {\\n background: #b9b9b9;\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-bottom-sheet-container {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-button, .i360-app .mat-icon-button, .i360-app .mat-stroked-button {\\n color: inherit;\\n background: transparent;\\n}\\n.i360-app .mat-button.mat-primary, .i360-app .mat-icon-button.mat-primary, .i360-app .mat-stroked-button.mat-primary {\\n color: #11cb84;\\n}\\n.i360-app .mat-button.mat-accent, .i360-app .mat-icon-button.mat-accent, .i360-app .mat-stroked-button.mat-accent {\\n color: #f77c00;\\n}\\n.i360-app .mat-button.mat-warn, .i360-app .mat-icon-button.mat-warn, .i360-app .mat-stroked-button.mat-warn {\\n color: #ea7474;\\n}\\n.i360-app .mat-button.mat-primary.mat-button-disabled, .i360-app .mat-button.mat-accent.mat-button-disabled, .i360-app .mat-button.mat-warn.mat-button-disabled, .i360-app .mat-button.mat-button-disabled.mat-button-disabled, .i360-app .mat-icon-button.mat-primary.mat-button-disabled, .i360-app .mat-icon-button.mat-accent.mat-button-disabled, .i360-app .mat-icon-button.mat-warn.mat-button-disabled, .i360-app .mat-icon-button.mat-button-disabled.mat-button-disabled, .i360-app .mat-stroked-button.mat-primary.mat-button-disabled, .i360-app .mat-stroked-button.mat-accent.mat-button-disabled, .i360-app .mat-stroked-button.mat-warn.mat-button-disabled, .i360-app .mat-stroked-button.mat-button-disabled.mat-button-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.i360-app .mat-button.mat-primary .mat-button-focus-overlay, .i360-app .mat-icon-button.mat-primary .mat-button-focus-overlay, .i360-app .mat-stroked-button.mat-primary .mat-button-focus-overlay {\\n background-color: #11cb84;\\n}\\n.i360-app .mat-button.mat-accent .mat-button-focus-overlay, .i360-app .mat-icon-button.mat-accent .mat-button-focus-overlay, .i360-app .mat-stroked-button.mat-accent .mat-button-focus-overlay {\\n background-color: #f77c00;\\n}\\n.i360-app .mat-button.mat-warn .mat-button-focus-overlay, .i360-app .mat-icon-button.mat-warn .mat-button-focus-overlay, .i360-app .mat-stroked-button.mat-warn .mat-button-focus-overlay {\\n background-color: #ea7474;\\n}\\n.i360-app .mat-button.mat-button-disabled .mat-button-focus-overlay, .i360-app .mat-icon-button.mat-button-disabled .mat-button-focus-overlay, .i360-app .mat-stroked-button.mat-button-disabled .mat-button-focus-overlay {\\n background-color: transparent;\\n}\\n.i360-app .mat-button .mat-ripple-element, .i360-app .mat-icon-button .mat-ripple-element, .i360-app .mat-stroked-button .mat-ripple-element {\\n opacity: 0.1;\\n background-color: currentColor;\\n}\\n.i360-app .mat-button-focus-overlay {\\n background: black;\\n}\\n.i360-app .mat-stroked-button:not(.mat-button-disabled) {\\n border-color: rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-flat-button, .i360-app .mat-raised-button, .i360-app .mat-fab, .i360-app .mat-mini-fab {\\n color: rgba(0, 0, 0, 0.87);\\n background-color: white;\\n}\\n.i360-app .mat-flat-button.mat-primary, .i360-app .mat-raised-button.mat-primary, .i360-app .mat-fab.mat-primary, .i360-app .mat-mini-fab.mat-primary {\\n color: white;\\n}\\n.i360-app .mat-flat-button.mat-accent, .i360-app .mat-raised-button.mat-accent, .i360-app .mat-fab.mat-accent, .i360-app .mat-mini-fab.mat-accent {\\n color: white;\\n}\\n.i360-app .mat-flat-button.mat-warn, .i360-app .mat-raised-button.mat-warn, .i360-app .mat-fab.mat-warn, .i360-app .mat-mini-fab.mat-warn {\\n color: white;\\n}\\n.i360-app .mat-flat-button.mat-primary.mat-button-disabled, .i360-app .mat-flat-button.mat-accent.mat-button-disabled, .i360-app .mat-flat-button.mat-warn.mat-button-disabled, .i360-app .mat-flat-button.mat-button-disabled.mat-button-disabled, .i360-app .mat-raised-button.mat-primary.mat-button-disabled, .i360-app .mat-raised-button.mat-accent.mat-button-disabled, .i360-app .mat-raised-button.mat-warn.mat-button-disabled, .i360-app .mat-raised-button.mat-button-disabled.mat-button-disabled, .i360-app .mat-fab.mat-primary.mat-button-disabled, .i360-app .mat-fab.mat-accent.mat-button-disabled, .i360-app .mat-fab.mat-warn.mat-button-disabled, .i360-app .mat-fab.mat-button-disabled.mat-button-disabled, .i360-app .mat-mini-fab.mat-primary.mat-button-disabled, .i360-app .mat-mini-fab.mat-accent.mat-button-disabled, .i360-app .mat-mini-fab.mat-warn.mat-button-disabled, .i360-app .mat-mini-fab.mat-button-disabled.mat-button-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.i360-app .mat-flat-button.mat-primary, .i360-app .mat-raised-button.mat-primary, .i360-app .mat-fab.mat-primary, .i360-app .mat-mini-fab.mat-primary {\\n background-color: #11cb84;\\n}\\n.i360-app .mat-flat-button.mat-accent, .i360-app .mat-raised-button.mat-accent, .i360-app .mat-fab.mat-accent, .i360-app .mat-mini-fab.mat-accent {\\n background-color: #f77c00;\\n}\\n.i360-app .mat-flat-button.mat-warn, .i360-app .mat-raised-button.mat-warn, .i360-app .mat-fab.mat-warn, .i360-app .mat-mini-fab.mat-warn {\\n background-color: #ea7474;\\n}\\n.i360-app .mat-flat-button.mat-primary.mat-button-disabled, .i360-app .mat-flat-button.mat-accent.mat-button-disabled, .i360-app .mat-flat-button.mat-warn.mat-button-disabled, .i360-app .mat-flat-button.mat-button-disabled.mat-button-disabled, .i360-app .mat-raised-button.mat-primary.mat-button-disabled, .i360-app .mat-raised-button.mat-accent.mat-button-disabled, .i360-app .mat-raised-button.mat-warn.mat-button-disabled, .i360-app .mat-raised-button.mat-button-disabled.mat-button-disabled, .i360-app .mat-fab.mat-primary.mat-button-disabled, .i360-app .mat-fab.mat-accent.mat-button-disabled, .i360-app .mat-fab.mat-warn.mat-button-disabled, .i360-app .mat-fab.mat-button-disabled.mat-button-disabled, .i360-app .mat-mini-fab.mat-primary.mat-button-disabled, .i360-app .mat-mini-fab.mat-accent.mat-button-disabled, .i360-app .mat-mini-fab.mat-warn.mat-button-disabled, .i360-app .mat-mini-fab.mat-button-disabled.mat-button-disabled {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-flat-button.mat-primary .mat-ripple-element, .i360-app .mat-raised-button.mat-primary .mat-ripple-element, .i360-app .mat-fab.mat-primary .mat-ripple-element, .i360-app .mat-mini-fab.mat-primary .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.i360-app .mat-flat-button.mat-accent .mat-ripple-element, .i360-app .mat-raised-button.mat-accent .mat-ripple-element, .i360-app .mat-fab.mat-accent .mat-ripple-element, .i360-app .mat-mini-fab.mat-accent .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.i360-app .mat-flat-button.mat-warn .mat-ripple-element, .i360-app .mat-raised-button.mat-warn .mat-ripple-element, .i360-app .mat-fab.mat-warn .mat-ripple-element, .i360-app .mat-mini-fab.mat-warn .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.i360-app .mat-stroked-button:not([class*=mat-elevation-z]), .i360-app .mat-flat-button:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-raised-button:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-raised-button:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-raised-button.mat-button-disabled:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-fab:not([class*=mat-elevation-z]), .i360-app .mat-mini-fab:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]), .i360-app .mat-mini-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-fab.mat-button-disabled:not([class*=mat-elevation-z]), .i360-app .mat-mini-fab.mat-button-disabled:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-button-toggle-standalone:not([class*=mat-elevation-z]),\\n.i360-app .mat-button-toggle-group:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),\\n.i360-app .mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]) {\\n box-shadow: none;\\n}\\n.i360-app .mat-button-toggle {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-button-toggle .mat-button-toggle-focus-overlay {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-button-toggle-appearance-standard {\\n color: rgba(0, 0, 0, 0.87);\\n background: white;\\n}\\n.i360-app .mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay {\\n background-color: black;\\n}\\n.i360-app .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\\n border-left: solid 1px #e0e0e0;\\n}\\n.i360-app [dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\\n border-left: none;\\n border-right: solid 1px #e0e0e0;\\n}\\n.i360-app .mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle {\\n border-left: none;\\n border-right: none;\\n border-top: solid 1px #e0e0e0;\\n}\\n.i360-app .mat-button-toggle-checked {\\n background-color: #e0e0e0;\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-button-toggle-checked.mat-button-toggle-appearance-standard {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-button-toggle-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n background-color: #eeeeee;\\n}\\n.i360-app .mat-button-toggle-disabled.mat-button-toggle-appearance-standard {\\n background: white;\\n}\\n.i360-app .mat-button-toggle-disabled.mat-button-toggle-checked {\\n background-color: #bdbdbd;\\n}\\n.i360-app .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\\n.i360-app .mat-button-toggle-group-appearance-standard {\\n border: solid 1px #e0e0e0;\\n}\\n.i360-app .mat-button-toggle-appearance-standard .mat-button-toggle-label-content {\\n line-height: 48px;\\n}\\n.i360-app .mat-card {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-card:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-card.mat-card-flat:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-card-subtitle {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-checkbox-frame {\\n border-color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-checkbox-checkmark {\\n fill: #fafafa;\\n}\\n.i360-app .mat-checkbox-checkmark-path {\\n stroke: #fafafa !important;\\n}\\n.i360-app .mat-checkbox-mixedmark {\\n background-color: #fafafa;\\n}\\n.i360-app .mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .i360-app .mat-checkbox-checked.mat-primary .mat-checkbox-background {\\n background-color: #11cb84;\\n}\\n.i360-app .mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .i360-app .mat-checkbox-checked.mat-accent .mat-checkbox-background {\\n background-color: #f77c00;\\n}\\n.i360-app .mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .i360-app .mat-checkbox-checked.mat-warn .mat-checkbox-background {\\n background-color: #ea7474;\\n}\\n.i360-app .mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .i360-app .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background {\\n background-color: #b0b0b0;\\n}\\n.i360-app .mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame {\\n border-color: #b0b0b0;\\n}\\n.i360-app .mat-checkbox-disabled .mat-checkbox-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-checkbox .mat-ripple-element {\\n background-color: black;\\n}\\n.i360-app .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element,\\n.i360-app .mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element {\\n background: #11cb84;\\n}\\n.i360-app .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element,\\n.i360-app .mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element {\\n background: #f77c00;\\n}\\n.i360-app .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element,\\n.i360-app .mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element {\\n background: #ea7474;\\n}\\n.i360-app .mat-chip.mat-standard-chip {\\n background-color: #e0e0e0;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-chip.mat-standard-chip .mat-chip-remove {\\n color: rgba(0, 0, 0, 0.87);\\n opacity: 0.4;\\n}\\n.i360-app .mat-chip.mat-standard-chip:not(.mat-chip-disabled):active {\\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover {\\n opacity: 0.54;\\n}\\n.i360-app .mat-chip.mat-standard-chip.mat-chip-disabled {\\n opacity: 0.4;\\n}\\n.i360-app .mat-chip.mat-standard-chip::after {\\n background: black;\\n}\\n.i360-app .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary {\\n background-color: #11cb84;\\n color: white;\\n}\\n.i360-app .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.i360-app .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.i360-app .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn {\\n background-color: #ea7474;\\n color: white;\\n}\\n.i360-app .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.i360-app .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.i360-app .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent {\\n background-color: #f77c00;\\n color: white;\\n}\\n.i360-app .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.i360-app .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.i360-app .mat-table {\\n background: white;\\n}\\n.i360-app .mat-table thead, .i360-app .mat-table tbody, .i360-app .mat-table tfoot,\\n.i360-app mat-header-row, .i360-app mat-row, .i360-app mat-footer-row,\\n.i360-app [mat-header-row], .i360-app [mat-row], .i360-app [mat-footer-row],\\n.i360-app .mat-table-sticky {\\n background: inherit;\\n}\\n.i360-app mat-row, .i360-app mat-header-row, .i360-app mat-footer-row,\\n.i360-app th.mat-header-cell, .i360-app td.mat-cell, .i360-app td.mat-footer-cell {\\n border-bottom-color: rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-header-cell {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-cell, .i360-app .mat-footer-cell {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-calendar-arrow {\\n fill: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-datepicker-toggle,\\n.i360-app .mat-datepicker-content .mat-calendar-next-button,\\n.i360-app .mat-datepicker-content .mat-calendar-previous-button {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-calendar-table-header-divider::after {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-calendar-table-header,\\n.i360-app .mat-calendar-body-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-calendar-body-cell-content,\\n.i360-app .mat-date-range-input-separator {\\n color: rgba(0, 0, 0, 0.87);\\n border-color: transparent;\\n}\\n.i360-app .mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-form-field-disabled .mat-date-range-input-separator {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-calendar-body-in-preview {\\n color: rgba(0, 0, 0, 0.24);\\n}\\n.i360-app .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n border-color: rgba(0, 0, 0, 0.18);\\n}\\n.i360-app .mat-calendar-body-in-range::before {\\n background: rgba(17, 203, 132, 0.2);\\n}\\n.i360-app .mat-calendar-body-comparison-identical,\\n.i360-app .mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.i360-app .mat-calendar-body-comparison-bridge-start::before,\\n.i360-app [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(17, 203, 132, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.i360-app .mat-calendar-body-comparison-bridge-end::before,\\n.i360-app [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(17, 203, 132, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.i360-app .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.i360-app .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.i360-app .mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.i360-app .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.i360-app .mat-calendar-body-selected {\\n background-color: #11cb84;\\n color: white;\\n}\\n.i360-app .mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(17, 203, 132, 0.4);\\n}\\n.i360-app .mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.i360-app .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.i360-app .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(17, 203, 132, 0.3);\\n}\\n@media (hover: hover) {\\n .i360-app .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(17, 203, 132, 0.3);\\n }\\n}\\n.i360-app .mat-datepicker-content {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n background-color: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-datepicker-content.mat-accent .mat-calendar-body-in-range::before {\\n background: rgba(247, 124, 0, 0.2);\\n}\\n.i360-app .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,\\n.i360-app .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.i360-app .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start::before,\\n.i360-app .mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(247, 124, 0, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.i360-app .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end::before,\\n.i360-app .mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(247, 124, 0, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.i360-app .mat-datepicker-content.mat-accent .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.i360-app .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.i360-app .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.i360-app .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.i360-app .mat-datepicker-content.mat-accent .mat-calendar-body-selected {\\n background-color: #f77c00;\\n color: white;\\n}\\n.i360-app .mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(247, 124, 0, 0.4);\\n}\\n.i360-app .mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.i360-app .mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.i360-app .mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(247, 124, 0, 0.3);\\n}\\n@media (hover: hover) {\\n .i360-app .mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(247, 124, 0, 0.3);\\n }\\n}\\n.i360-app .mat-datepicker-content.mat-warn .mat-calendar-body-in-range::before {\\n background: rgba(234, 116, 116, 0.2);\\n}\\n.i360-app .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,\\n.i360-app .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.i360-app .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start::before,\\n.i360-app .mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(234, 116, 116, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.i360-app .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end::before,\\n.i360-app .mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(234, 116, 116, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.i360-app .mat-datepicker-content.mat-warn .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.i360-app .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.i360-app .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.i360-app .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.i360-app .mat-datepicker-content.mat-warn .mat-calendar-body-selected {\\n background-color: #ea7474;\\n color: white;\\n}\\n.i360-app .mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(234, 116, 116, 0.4);\\n}\\n.i360-app .mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.i360-app .mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.i360-app .mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(234, 116, 116, 0.3);\\n}\\n@media (hover: hover) {\\n .i360-app .mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(234, 116, 116, 0.3);\\n }\\n}\\n.i360-app .mat-datepicker-content-touch {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-datepicker-toggle-active {\\n color: #11cb84;\\n}\\n.i360-app .mat-datepicker-toggle-active.mat-accent {\\n color: #f77c00;\\n}\\n.i360-app .mat-datepicker-toggle-active.mat-warn {\\n color: #ea7474;\\n}\\n.i360-app .mat-date-range-input-inner[disabled] {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-dialog-container {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-divider {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-divider-vertical {\\n border-right-color: rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-expansion-panel {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-expansion-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-action-row {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]), .i360-app .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]), .i360-app .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n@media (hover: none) {\\n .i360-app .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover {\\n background: white;\\n }\\n}\\n.i360-app .mat-expansion-panel-header-title {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-expansion-panel-header-description,\\n.i360-app .mat-expansion-indicator::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-expansion-panel-header[aria-disabled=true] {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.i360-app .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,\\n.i360-app .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description {\\n color: inherit;\\n}\\n.i360-app .mat-expansion-panel-header {\\n height: 48px;\\n}\\n.i360-app .mat-expansion-panel-header.mat-expanded {\\n height: 64px;\\n}\\n.i360-app .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.6);\\n}\\n.i360-app .mat-hint {\\n color: rgba(0, 0, 0, 0.6);\\n}\\n.i360-app .mat-form-field.mat-focused .mat-form-field-label {\\n color: #11cb84;\\n}\\n.i360-app .mat-form-field.mat-focused .mat-form-field-label.mat-accent {\\n color: #f77c00;\\n}\\n.i360-app .mat-form-field.mat-focused .mat-form-field-label.mat-warn {\\n color: #ea7474;\\n}\\n.i360-app .mat-focused .mat-form-field-required-marker {\\n color: #f77c00;\\n}\\n.i360-app .mat-form-field-ripple {\\n background-color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-form-field.mat-focused .mat-form-field-ripple {\\n background-color: #11cb84;\\n}\\n.i360-app .mat-form-field.mat-focused .mat-form-field-ripple.mat-accent {\\n background-color: #f77c00;\\n}\\n.i360-app .mat-form-field.mat-focused .mat-form-field-ripple.mat-warn {\\n background-color: #ea7474;\\n}\\n.i360-app .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after {\\n color: #11cb84;\\n}\\n.i360-app .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after {\\n color: #f77c00;\\n}\\n.i360-app .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after {\\n color: #ea7474;\\n}\\n.i360-app .mat-form-field.mat-form-field-invalid .mat-form-field-label {\\n color: #ea7474;\\n}\\n.i360-app .mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent,\\n.i360-app .mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker {\\n color: #ea7474;\\n}\\n.i360-app .mat-form-field.mat-form-field-invalid .mat-form-field-ripple,\\n.i360-app .mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent {\\n background-color: #ea7474;\\n}\\n.i360-app .mat-error {\\n color: #ea7474;\\n}\\n.i360-app .mat-form-field-appearance-legacy .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-form-field-appearance-legacy .mat-hint {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-form-field-appearance-legacy .mat-form-field-underline {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.i360-app .mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);\\n background-size: 4px 100%;\\n background-repeat: repeat-x;\\n}\\n.i360-app .mat-form-field-appearance-standard .mat-form-field-underline {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.i360-app .mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);\\n background-size: 4px 100%;\\n background-repeat: repeat-x;\\n}\\n.i360-app .mat-form-field-appearance-fill .mat-form-field-flex {\\n background-color: rgba(0, 0, 0, 0.04);\\n}\\n.i360-app .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex {\\n background-color: rgba(0, 0, 0, 0.02);\\n}\\n.i360-app .mat-form-field-appearance-fill .mat-form-field-underline::before {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.i360-app .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before {\\n background-color: transparent;\\n}\\n.i360-app .mat-form-field-appearance-outline .mat-form-field-outline {\\n color: rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-form-field-appearance-outline .mat-form-field-outline-thick {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick {\\n color: #11cb84;\\n}\\n.i360-app .mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick {\\n color: #f77c00;\\n}\\n.i360-app .mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick {\\n color: #ea7474;\\n}\\n.i360-app .mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick {\\n color: #ea7474;\\n}\\n.i360-app .mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline {\\n color: rgba(0, 0, 0, 0.06);\\n}\\n.i360-app .mat-icon.mat-primary {\\n color: #11cb84;\\n}\\n.i360-app .mat-icon.mat-accent {\\n color: #f77c00;\\n}\\n.i360-app .mat-icon.mat-warn {\\n color: #ea7474;\\n}\\n.i360-app .mat-form-field-type-mat-native-select .mat-form-field-infix::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-input-element:disabled,\\n.i360-app .mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-input-element {\\n caret-color: #11cb84;\\n}\\n.i360-app .mat-input-element::placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.i360-app .mat-input-element::-moz-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.i360-app .mat-input-element::-webkit-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.i360-app .mat-input-element:-ms-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.i360-app .mat-form-field.mat-accent .mat-input-element {\\n caret-color: #f77c00;\\n}\\n.i360-app .mat-form-field.mat-warn .mat-input-element,\\n.i360-app .mat-form-field-invalid .mat-input-element {\\n caret-color: #ea7474;\\n}\\n.i360-app .mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after {\\n color: #ea7474;\\n}\\n.i360-app .mat-list-base .mat-list-item {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-list-base .mat-list-option {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-list-base .mat-subheader {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-list-base .mat-list-item-disabled {\\n background-color: #eeeeee;\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-list-option:hover, .i360-app .mat-list-option:focus,\\n.i360-app .mat-nav-list .mat-list-item:hover,\\n.i360-app .mat-nav-list .mat-list-item:focus,\\n.i360-app .mat-action-list .mat-list-item:hover,\\n.i360-app .mat-action-list .mat-list-item:focus {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.i360-app .mat-list-single-selected-option, .i360-app .mat-list-single-selected-option:hover, .i360-app .mat-list-single-selected-option:focus {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-menu-panel {\\n background: white;\\n}\\n.i360-app .mat-menu-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-menu-item {\\n background: transparent;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-menu-item[disabled],\\n.i360-app .mat-menu-item[disabled] .mat-menu-submenu-icon,\\n.i360-app .mat-menu-item[disabled] .mat-icon-no-color {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-menu-item .mat-icon-no-color,\\n.i360-app .mat-menu-submenu-icon {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-menu-item:hover:not([disabled]),\\n.i360-app .mat-menu-item.cdk-program-focused:not([disabled]),\\n.i360-app .mat-menu-item.cdk-keyboard-focused:not([disabled]),\\n.i360-app .mat-menu-item-highlighted:not([disabled]) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.i360-app .mat-paginator {\\n background: white;\\n}\\n.i360-app .mat-paginator,\\n.i360-app .mat-paginator-page-size .mat-select-trigger {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-paginator-decrement,\\n.i360-app .mat-paginator-increment {\\n border-top: 2px solid rgba(0, 0, 0, 0.54);\\n border-right: 2px solid rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-paginator-first,\\n.i360-app .mat-paginator-last {\\n border-top: 2px solid rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-icon-button[disabled] .mat-paginator-decrement,\\n.i360-app .mat-icon-button[disabled] .mat-paginator-increment,\\n.i360-app .mat-icon-button[disabled] .mat-paginator-first,\\n.i360-app .mat-icon-button[disabled] .mat-paginator-last {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-paginator-container {\\n min-height: 56px;\\n}\\n.i360-app .mat-progress-bar-background {\\n fill: #c0eedd;\\n}\\n.i360-app .mat-progress-bar-buffer {\\n background-color: #c0eedd;\\n}\\n.i360-app .mat-progress-bar-fill::after {\\n background-color: #11cb84;\\n}\\n.i360-app .mat-progress-bar.mat-accent .mat-progress-bar-background {\\n fill: #f9dbbc;\\n}\\n.i360-app .mat-progress-bar.mat-accent .mat-progress-bar-buffer {\\n background-color: #f9dbbc;\\n}\\n.i360-app .mat-progress-bar.mat-accent .mat-progress-bar-fill::after {\\n background-color: #f77c00;\\n}\\n.i360-app .mat-progress-bar.mat-warn .mat-progress-bar-background {\\n fill: #f6d9d9;\\n}\\n.i360-app .mat-progress-bar.mat-warn .mat-progress-bar-buffer {\\n background-color: #f6d9d9;\\n}\\n.i360-app .mat-progress-bar.mat-warn .mat-progress-bar-fill::after {\\n background-color: #ea7474;\\n}\\n.i360-app .mat-progress-spinner circle, .i360-app .mat-spinner circle {\\n stroke: #11cb84;\\n}\\n.i360-app .mat-progress-spinner.mat-accent circle, .i360-app .mat-spinner.mat-accent circle {\\n stroke: #f77c00;\\n}\\n.i360-app .mat-progress-spinner.mat-warn circle, .i360-app .mat-spinner.mat-warn circle {\\n stroke: #ea7474;\\n}\\n.i360-app .mat-radio-outer-circle {\\n border-color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #11cb84;\\n}\\n.i360-app .mat-radio-button.mat-primary .mat-radio-inner-circle,\\n.i360-app .mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .i360-app .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, .i360-app .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple {\\n background-color: #11cb84;\\n}\\n.i360-app .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #f77c00;\\n}\\n.i360-app .mat-radio-button.mat-accent .mat-radio-inner-circle,\\n.i360-app .mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .i360-app .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, .i360-app .mat-radio-button.mat-accent:active .mat-radio-persistent-ripple {\\n background-color: #f77c00;\\n}\\n.i360-app .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #ea7474;\\n}\\n.i360-app .mat-radio-button.mat-warn .mat-radio-inner-circle,\\n.i360-app .mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .i360-app .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, .i360-app .mat-radio-button.mat-warn:active .mat-radio-persistent-ripple {\\n background-color: #ea7474;\\n}\\n.i360-app .mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle,\\n.i360-app .mat-radio-button.mat-radio-disabled .mat-radio-outer-circle {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element,\\n.i360-app .mat-radio-button.mat-radio-disabled .mat-radio-inner-circle {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-radio-button.mat-radio-disabled .mat-radio-label-content {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-radio-button .mat-ripple-element {\\n background-color: black;\\n}\\n.i360-app .mat-select-value {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-select-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.i360-app .mat-select-disabled .mat-select-value {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-select-arrow {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-select-panel {\\n background: white;\\n}\\n.i360-app .mat-select-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-form-field.mat-focused.mat-primary .mat-select-arrow {\\n color: #11cb84;\\n}\\n.i360-app .mat-form-field.mat-focused.mat-accent .mat-select-arrow {\\n color: #f77c00;\\n}\\n.i360-app .mat-form-field.mat-focused.mat-warn .mat-select-arrow {\\n color: #ea7474;\\n}\\n.i360-app .mat-form-field .mat-select.mat-select-invalid .mat-select-arrow {\\n color: #ea7474;\\n}\\n.i360-app .mat-form-field .mat-select.mat-select-disabled .mat-select-arrow {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-drawer-container {\\n background-color: #fafafa;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-drawer {\\n background-color: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-drawer.mat-drawer-push {\\n background-color: white;\\n}\\n.i360-app .mat-drawer:not(.mat-drawer-side) {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-drawer-side {\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-drawer-side.mat-drawer-end {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n border-right: none;\\n}\\n.i360-app [dir=rtl] .mat-drawer-side {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n border-right: none;\\n}\\n.i360-app [dir=rtl] .mat-drawer-side.mat-drawer-end {\\n border-left: none;\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-drawer-backdrop.mat-drawer-shown {\\n background-color: rgba(0, 0, 0, 0.6);\\n}\\n.i360-app .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb {\\n background-color: #f77c00;\\n}\\n.i360-app .mat-slide-toggle.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(247, 124, 0, 0.54);\\n}\\n.i360-app .mat-slide-toggle.mat-checked .mat-ripple-element {\\n background-color: #f77c00;\\n}\\n.i360-app .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb {\\n background-color: #11cb84;\\n}\\n.i360-app .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(17, 203, 132, 0.54);\\n}\\n.i360-app .mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element {\\n background-color: #11cb84;\\n}\\n.i360-app .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb {\\n background-color: #ea7474;\\n}\\n.i360-app .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(234, 116, 116, 0.54);\\n}\\n.i360-app .mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element {\\n background-color: #ea7474;\\n}\\n.i360-app .mat-slide-toggle:not(.mat-checked) .mat-ripple-element {\\n background-color: black;\\n}\\n.i360-app .mat-slide-toggle-thumb {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n background-color: #fafafa;\\n}\\n.i360-app .mat-slide-toggle-bar {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.i360-app .mat-slider.mat-primary .mat-slider-track-fill,\\n.i360-app .mat-slider.mat-primary .mat-slider-thumb,\\n.i360-app .mat-slider.mat-primary .mat-slider-thumb-label {\\n background-color: #11cb84;\\n}\\n.i360-app .mat-slider.mat-primary .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.i360-app .mat-slider.mat-primary .mat-slider-focus-ring {\\n background-color: rgba(17, 203, 132, 0.2);\\n}\\n.i360-app .mat-slider.mat-accent .mat-slider-track-fill,\\n.i360-app .mat-slider.mat-accent .mat-slider-thumb,\\n.i360-app .mat-slider.mat-accent .mat-slider-thumb-label {\\n background-color: #f77c00;\\n}\\n.i360-app .mat-slider.mat-accent .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.i360-app .mat-slider.mat-accent .mat-slider-focus-ring {\\n background-color: rgba(247, 124, 0, 0.2);\\n}\\n.i360-app .mat-slider.mat-warn .mat-slider-track-fill,\\n.i360-app .mat-slider.mat-warn .mat-slider-thumb,\\n.i360-app .mat-slider.mat-warn .mat-slider-thumb-label {\\n background-color: #ea7474;\\n}\\n.i360-app .mat-slider.mat-warn .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.i360-app .mat-slider.mat-warn .mat-slider-focus-ring {\\n background-color: rgba(234, 116, 116, 0.2);\\n}\\n.i360-app .mat-slider:hover .mat-slider-track-background,\\n.i360-app .mat-slider.cdk-focused .mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-slider.mat-slider-disabled .mat-slider-track-background,\\n.i360-app .mat-slider.mat-slider-disabled .mat-slider-track-fill,\\n.i360-app .mat-slider.mat-slider-disabled .mat-slider-thumb {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.i360-app .mat-slider.mat-slider-disabled:hover .mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.i360-app .mat-slider.mat-slider-min-value .mat-slider-focus-ring {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-slider.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb,\\n.i360-app .mat-slider.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label {\\n background-color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-slider.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb,\\n.i360-app .mat-slider.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.i360-app .mat-slider.mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.26);\\n background-color: transparent;\\n}\\n.i360-app .mat-slider.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .i360-app .mat-slider.mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-slider.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .i360-app .mat-slider.mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.26);\\n}\\n.i360-app .mat-slider-has-ticks .mat-slider-wrapper::after {\\n border-color: rgba(0, 0, 0, 0.7);\\n}\\n.i360-app .mat-slider-horizontal .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n}\\n.i360-app .mat-slider-vertical .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n}\\n.i360-app .mat-step-header.cdk-keyboard-focused, .i360-app .mat-step-header.cdk-program-focused, .i360-app .mat-step-header:hover:not([aria-disabled]), .i360-app .mat-step-header:hover[aria-disabled=false] {\\n background-color: rgba(0, 0, 0, 0.04);\\n}\\n.i360-app .mat-step-header:hover[aria-disabled=true] {\\n cursor: default;\\n}\\n@media (hover: none) {\\n .i360-app .mat-step-header:hover {\\n background: none;\\n }\\n}\\n.i360-app .mat-step-header .mat-step-label,\\n.i360-app .mat-step-header .mat-step-optional {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.i360-app .mat-step-header .mat-step-icon {\\n background-color: rgba(0, 0, 0, 0.54);\\n color: white;\\n}\\n.i360-app .mat-step-header .mat-step-icon-selected,\\n.i360-app .mat-step-header .mat-step-icon-state-done,\\n.i360-app .mat-step-header .mat-step-icon-state-edit {\\n background-color: #11cb84;\\n color: white;\\n}\\n.i360-app .mat-step-header.mat-accent .mat-step-icon {\\n color: white;\\n}\\n.i360-app .mat-step-header.mat-accent .mat-step-icon-selected,\\n.i360-app .mat-step-header.mat-accent .mat-step-icon-state-done,\\n.i360-app .mat-step-header.mat-accent .mat-step-icon-state-edit {\\n background-color: #f77c00;\\n color: white;\\n}\\n.i360-app .mat-step-header.mat-warn .mat-step-icon {\\n color: white;\\n}\\n.i360-app .mat-step-header.mat-warn .mat-step-icon-selected,\\n.i360-app .mat-step-header.mat-warn .mat-step-icon-state-done,\\n.i360-app .mat-step-header.mat-warn .mat-step-icon-state-edit {\\n background-color: #ea7474;\\n color: white;\\n}\\n.i360-app .mat-step-header .mat-step-icon-state-error {\\n background-color: transparent;\\n color: #ea7474;\\n}\\n.i360-app .mat-step-header .mat-step-label.mat-step-label-active {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-step-header .mat-step-label.mat-step-label-error {\\n color: #ea7474;\\n}\\n.i360-app .mat-stepper-horizontal, .i360-app .mat-stepper-vertical {\\n background-color: white;\\n}\\n.i360-app .mat-stepper-vertical-line::before {\\n border-left-color: rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-horizontal-stepper-header::before,\\n.i360-app .mat-horizontal-stepper-header::after,\\n.i360-app .mat-stepper-horizontal-line {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-horizontal-stepper-header {\\n height: 72px;\\n}\\n.i360-app .mat-stepper-label-position-bottom .mat-horizontal-stepper-header,\\n.i360-app .mat-vertical-stepper-header {\\n padding: 24px 24px;\\n}\\n.i360-app .mat-stepper-vertical-line::before {\\n top: -16px;\\n bottom: -16px;\\n}\\n.i360-app .mat-stepper-label-position-bottom .mat-horizontal-stepper-header::after, .i360-app .mat-stepper-label-position-bottom .mat-horizontal-stepper-header::before {\\n top: 36px;\\n}\\n.i360-app .mat-stepper-label-position-bottom .mat-stepper-horizontal-line {\\n top: 36px;\\n}\\n.i360-app .mat-sort-header-arrow {\\n color: #757575;\\n}\\n.i360-app .mat-tab-nav-bar,\\n.i360-app .mat-tab-header {\\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-tab-group-inverted-header .mat-tab-nav-bar,\\n.i360-app .mat-tab-group-inverted-header .mat-tab-header {\\n border-top: 1px solid rgba(0, 0, 0, 0.12);\\n border-bottom: none;\\n}\\n.i360-app .mat-tab-label, .i360-app .mat-tab-link {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-tab-label.mat-tab-disabled, .i360-app .mat-tab-link.mat-tab-disabled {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-tab-header-pagination-chevron {\\n border-color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.i360-app .mat-tab-group[class*=mat-background-] > .mat-tab-header,\\n.i360-app .mat-tab-nav-bar[class*=mat-background-] {\\n border-bottom: none;\\n border-top: none;\\n}\\n.i360-app .mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .i360-app .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .i360-app .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .i360-app .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(239, 248, 242, 0.3);\\n}\\n.i360-app .mat-tab-group.mat-primary .mat-ink-bar, .i360-app .mat-tab-nav-bar.mat-primary .mat-ink-bar {\\n background-color: #11cb84;\\n}\\n.i360-app .mat-tab-group.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .i360-app .mat-tab-group.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar, .i360-app .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .i360-app .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.i360-app .mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .i360-app .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .i360-app .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .i360-app .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 204, 188, 0.3);\\n}\\n.i360-app .mat-tab-group.mat-accent .mat-ink-bar, .i360-app .mat-tab-nav-bar.mat-accent .mat-ink-bar {\\n background-color: #f77c00;\\n}\\n.i360-app .mat-tab-group.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .i360-app .mat-tab-group.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar, .i360-app .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .i360-app .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.i360-app .mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .i360-app .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .i360-app .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .i360-app .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 205, 210, 0.3);\\n}\\n.i360-app .mat-tab-group.mat-warn .mat-ink-bar, .i360-app .mat-tab-nav-bar.mat-warn .mat-ink-bar {\\n background-color: #ea7474;\\n}\\n.i360-app .mat-tab-group.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .i360-app .mat-tab-group.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar, .i360-app .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .i360-app .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.i360-app .mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .i360-app .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .i360-app .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .i360-app .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(239, 248, 242, 0.3);\\n}\\n.i360-app .mat-tab-group.mat-background-primary > .mat-tab-header, .i360-app .mat-tab-group.mat-background-primary > .mat-tab-link-container, .i360-app .mat-tab-group.mat-background-primary > .mat-tab-header-pagination, .i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-header, .i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container, .i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination {\\n background-color: #11cb84;\\n}\\n.i360-app .mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label, .i360-app .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link, .i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label, .i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.i360-app .mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .i360-app .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.i360-app .mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-group.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-focus-indicator::before,\\n.i360-app .mat-tab-group.mat-background-primary > .mat-tab-header .mat-focus-indicator::before, .i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-focus-indicator::before,\\n.i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.i360-app .mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-group.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: white;\\n opacity: 0.4;\\n}\\n.i360-app .mat-tab-group.mat-background-primary > .mat-tab-header .mat-ripple-element,\\n.i360-app .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-ripple-element,\\n.i360-app .mat-tab-group.mat-background-primary > .mat-tab-header-pagination .mat-ripple-element, .i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-ripple-element,\\n.i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-ripple-element,\\n.i360-app .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: white;\\n opacity: 0.12;\\n}\\n.i360-app .mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .i360-app .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .i360-app .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .i360-app .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 204, 188, 0.3);\\n}\\n.i360-app .mat-tab-group.mat-background-accent > .mat-tab-header, .i360-app .mat-tab-group.mat-background-accent > .mat-tab-link-container, .i360-app .mat-tab-group.mat-background-accent > .mat-tab-header-pagination, .i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-header, .i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container, .i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination {\\n background-color: #f77c00;\\n}\\n.i360-app .mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label, .i360-app .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link, .i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label, .i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.i360-app .mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .i360-app .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.i360-app .mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-group.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-focus-indicator::before,\\n.i360-app .mat-tab-group.mat-background-accent > .mat-tab-header .mat-focus-indicator::before, .i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-focus-indicator::before,\\n.i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.i360-app .mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-group.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: white;\\n opacity: 0.4;\\n}\\n.i360-app .mat-tab-group.mat-background-accent > .mat-tab-header .mat-ripple-element,\\n.i360-app .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-ripple-element,\\n.i360-app .mat-tab-group.mat-background-accent > .mat-tab-header-pagination .mat-ripple-element, .i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-ripple-element,\\n.i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-ripple-element,\\n.i360-app .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: white;\\n opacity: 0.12;\\n}\\n.i360-app .mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .i360-app .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .i360-app .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .i360-app .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.i360-app .mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 205, 210, 0.3);\\n}\\n.i360-app .mat-tab-group.mat-background-warn > .mat-tab-header, .i360-app .mat-tab-group.mat-background-warn > .mat-tab-link-container, .i360-app .mat-tab-group.mat-background-warn > .mat-tab-header-pagination, .i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-header, .i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container, .i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination {\\n background-color: #ea7474;\\n}\\n.i360-app .mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label, .i360-app .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link, .i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label, .i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.i360-app .mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .i360-app .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.i360-app .mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-group.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-focus-indicator::before,\\n.i360-app .mat-tab-group.mat-background-warn > .mat-tab-header .mat-focus-indicator::before, .i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-focus-indicator::before,\\n.i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.i360-app .mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-group.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: white;\\n opacity: 0.4;\\n}\\n.i360-app .mat-tab-group.mat-background-warn > .mat-tab-header .mat-ripple-element,\\n.i360-app .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-ripple-element,\\n.i360-app .mat-tab-group.mat-background-warn > .mat-tab-header-pagination .mat-ripple-element, .i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-ripple-element,\\n.i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-ripple-element,\\n.i360-app .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: white;\\n opacity: 0.12;\\n}\\n.i360-app .mat-toolbar {\\n background: whitesmoke;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-toolbar.mat-primary {\\n background: #11cb84;\\n color: white;\\n}\\n.i360-app .mat-toolbar.mat-accent {\\n background: #f77c00;\\n color: white;\\n}\\n.i360-app .mat-toolbar.mat-warn {\\n background: #ea7474;\\n color: white;\\n}\\n.i360-app .mat-toolbar .mat-form-field-underline,\\n.i360-app .mat-toolbar .mat-form-field-ripple,\\n.i360-app .mat-toolbar .mat-focused .mat-form-field-ripple {\\n background-color: currentColor;\\n}\\n.i360-app .mat-toolbar .mat-form-field-label,\\n.i360-app .mat-toolbar .mat-focused .mat-form-field-label,\\n.i360-app .mat-toolbar .mat-select-value,\\n.i360-app .mat-toolbar .mat-select-arrow,\\n.i360-app .mat-toolbar .mat-form-field.mat-focused .mat-select-arrow {\\n color: inherit;\\n}\\n.i360-app .mat-toolbar .mat-input-element {\\n caret-color: currentColor;\\n}\\n.i360-app .mat-toolbar-multiple-rows {\\n min-height: 64px;\\n}\\n.i360-app .mat-toolbar-row, .i360-app .mat-toolbar-single-row {\\n height: 64px;\\n}\\n@media (max-width: 599px) {\\n .i360-app .mat-toolbar-multiple-rows {\\n min-height: 56px;\\n }\\n .i360-app .mat-toolbar-row, .i360-app .mat-toolbar-single-row {\\n height: 56px;\\n }\\n}\\n.i360-app .mat-tooltip {\\n background: rgba(97, 97, 97, 0.9);\\n}\\n.i360-app .mat-tree {\\n background: white;\\n}\\n.i360-app .mat-tree-node,\\n.i360-app .mat-nested-tree-node {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-tree-node {\\n min-height: 48px;\\n}\\n.i360-app .mat-snack-bar-container {\\n color: rgba(255, 255, 255, 0.7);\\n background: #323232;\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.i360-app .mat-simple-snackbar-action {\\n color: #f77c00;\\n}\\n.i360-app .mat-slider-track-background {\\n background-color: #bebebe;\\n}\\n.i360-app .mat-slider.mat-primary .mat-slider-track-fill,\\n.i360-app .mat-slider.mat-primary .mat-slider-thumb,\\n.i360-app .mat-slider.mat-primary .mat-slider-thumb-label {\\n background-color: #11cb84;\\n}\\n.i360-app .mat-slider.mat-primary .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.i360-app .mat-slider.mat-primary .mat-slider-focus-ring {\\n background-color: rgba(17, 203, 132, 0.2);\\n}\\n.i360-app .mat-slider.mat-accent .mat-slider-track-fill,\\n.i360-app .mat-slider.mat-accent .mat-slider-thumb,\\n.i360-app .mat-slider.mat-accent .mat-slider-thumb-label {\\n background-color: #11cb84;\\n}\\n.i360-app .mat-slider.mat-accent .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.i360-app .mat-slider.mat-accent .mat-slider-focus-ring {\\n background-color: rgba(17, 203, 132, 0.2);\\n}\\n.i360-app .mat-slider.mat-warn .mat-slider-track-fill,\\n.i360-app .mat-slider.mat-warn .mat-slider-thumb,\\n.i360-app .mat-slider.mat-warn .mat-slider-thumb-label {\\n background-color: #ea7474;\\n}\\n.i360-app .mat-slider.mat-warn .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.i360-app .mat-slider.mat-warn .mat-slider-focus-ring {\\n background-color: rgba(234, 116, 116, 0.2);\\n}\\n.i360-app .mat-slider:hover .mat-slider-track-background,\\n.i360-app .mat-slider.cdk-focused .mat-slider-track-background {\\n background-color: #bebebe;\\n}\\n.i360-app .mat-slider.mat-slider-disabled .mat-slider-track-background,\\n.i360-app .mat-slider.mat-slider-disabled .mat-slider-track-fill,\\n.i360-app .mat-slider.mat-slider-disabled .mat-slider-thumb {\\n background-color: #bebebe;\\n}\\n.i360-app .mat-slider.mat-slider-disabled:hover .mat-slider-track-background {\\n background-color: #bebebe;\\n}\\n.i360-app .mat-slider.mat-slider-min-value .mat-slider-focus-ring {\\n background-color: rgba(132, 132, 132, 0.12);\\n}\\n.i360-app .mat-slider.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb,\\n.i360-app .mat-slider.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label {\\n background-color: white;\\n}\\n.i360-app .mat-slider.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb,\\n.i360-app .mat-slider.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label {\\n background-color: #bebebe;\\n}\\n.i360-app .mat-slider.mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb {\\n border-color: #bebebe;\\n background-color: transparent;\\n}\\n.i360-app .mat-slider.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .i360-app .mat-slider.mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb {\\n border-color: #bebebe;\\n}\\n.i360-app .mat-slider.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .i360-app .mat-slider.mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb {\\n border-color: #bebebe;\\n}\\n.i360-app .mat-slider-has-ticks .mat-slider-wrapper::after {\\n border-color: rgba(132, 132, 132, 0.7);\\n}\\n.i360-app .mat-slider-horizontal .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to right, rgba(132, 132, 132, 0.7), rgba(132, 132, 132, 0.7) 2px, transparent 0, transparent);\\n background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(132, 132, 132, 0.7), rgba(132, 132, 132, 0.7) 2px, transparent 0, transparent);\\n}\\n.i360-app .mat-slider-vertical .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to bottom, rgba(132, 132, 132, 0.7), rgba(132, 132, 132, 0.7) 2px, transparent 0, transparent);\\n}\\n.i360-app .mat-slide-toggle.mat-primary:not(.mat-checked) .mat-slide-toggle-bar {\\n background-color: #e3e3e3;\\n}\\n.i360-app .mat-slide-toggle.mat-primary:not(.mat-checked) .mat-slide-toggle-bar::after {\\n color: #8a9298;\\n}\\n.i360-app .mat-slide-toggle.mat-primary:not(.mat-checked) .mat-slide-toggle-thumb {\\n background-color: #fff;\\n}\\n.i360-app .mat-slide-toggle.mat-primary.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar {\\n background-color: #c8f5e4;\\n}\\n.i360-app .mat-slide-toggle.mat-primary.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar::before {\\n color: #11cb84;\\n}\\n.i360-app .mat-slide-toggle.mat-primary.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb {\\n background-color: #11cb84;\\n}\\n.i360-app .mat-radio-button .mat-radio-outer-circle {\\n border-color: #11cb84;\\n}\\n.i360-app .mat-checkbox .mat-checkbox-frame {\\n border-color: #dee1ec !important;\\n}\\n.i360-app .mat-radio-button, .i360-app .mat-checkbox {\\n font: 13px \\\"Open Sans\\\", Helvetica, sans-serif;\\n}\\n.i360-app .mat-select-panel {\\n max-width: 100%;\\n}\\n.i360-app .mat-select-trigger span,\\n.i360-app .mat-option-text {\\n font-size: 14px;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.i360-app .mat-option-text {\\n display: flex;\\n align-items: center;\\n}\\n.i360-app .mat-menu-content {\\n line-height: 48px;\\n}\\n.i360-app .mat-menu-content .mat-menu-item a {\\n margin: 0 -16px;\\n padding: 0 16px;\\n}\\n.i360-app .mat-menu-content a, .i360-app .mat-menu-content a:hover, .i360-app .mat-menu-content a:focus {\\n outline: none;\\n color: #535353;\\n text-decoration: none;\\n font-size: 13px;\\n font-family: \\\"Open Sans\\\", Helvetica, sans-serif;\\n display: flex;\\n align-items: center;\\n flex-wrap: nowrap;\\n}\\n.i360-app .mat-menu-content a.active, .i360-app .mat-menu-content a:hover.active, .i360-app .mat-menu-content a:focus.active {\\n background-color: rgba(55, 171, 99, 0.11);\\n}\\n.i360-app .mat-ripple {\\n position: absolute;\\n}\\n.i360-app .i360-modal-tabs .mat-ripple {\\n position: relative;\\n}\\n.i360-app .i360-modal-tabs .mat-tab-label {\\n font-family: \\\"Noto Sans\\\", sans-serif;\\n font-style: normal;\\n opacity: 1;\\n font-weight: normal;\\n font-size: 16px;\\n line-height: 22px;\\n /* identical to box height */\\n text-transform: uppercase;\\n color: #000000;\\n flex-grow: 0;\\n min-width: 80px;\\n padding: 0 10px;\\n min-height: 15px;\\n}\\n.i360-app .i360-modal-tabs .mat-tab-label.mat-tab-label-active {\\n font-weight: bold;\\n}\\n.i360-app .i360-modal-tabs .mat-tab-body-content {\\n padding-top: 15px;\\n}\\n.i360-app .mat-form-field-placeholder-wrapper,\\n.i360-app .mat-form-field-label-wrapper {\\n box-sizing: content-box;\\n}\\n.i360-app .mat-form-field-label {\\n display: none;\\n}\\n.i360-app .mat-form-field-empty.mat-form-field-label {\\n display: block;\\n}\\n.i360-app .mat-raised-button, .i360-app .mat-button {\\n border-radius: 4px;\\n line-height: 32px;\\n height: 32px;\\n font-family: \\\"Open Sans\\\", sans-serif;\\n}\\n.i360-app .mat-raised-button.mat-raised-button:not(:active), .i360-app .mat-button.mat-raised-button:not(:active) {\\n box-shadow: 0 6px 6px 0 rgba(0, 0, 0, 0.13), 0 0 6px 0 rgba(0, 0, 0, 0.12) !important;\\n}\\n.i360-app .mat-raised-button.mat-raised-button:not(:active):hover, .i360-app .mat-button.mat-raised-button:not(:active):hover {\\n box-shadow: 0 7px 6px 0 rgba(0, 0, 0, 0.13), 0 0 6px 0 rgba(0, 0, 0, 0.12) !important;\\n}\\n.i360-app .mat-raised-button .material-icons, .i360-app .mat-raised-button .dropdown .selected::before, .i360-app .dropdown .mat-raised-button .selected::before, .i360-app .mat-raised-button .dropdown_list ul li.selected::before, .i360-app .dropdown_list ul .mat-raised-button li.selected::before, .i360-app .mat-raised-button .dropdown_list ul li.active::before, .i360-app .dropdown_list ul .mat-raised-button li.active::before, .i360-app .mat-button .material-icons, .i360-app .mat-button .dropdown .selected::before, .i360-app .dropdown .mat-button .selected::before, .i360-app .mat-button .dropdown_list ul li.selected::before, .i360-app .dropdown_list ul .mat-button li.selected::before, .i360-app .mat-button .dropdown_list ul li.active::before, .i360-app .dropdown_list ul .mat-button li.active::before {\\n margin-top: -2px;\\n}\\n.ltr .i360-app .mat-raised-button .material-icons, .ltr .i360-app .mat-raised-button .dropdown .selected::before, .ltr .i360-app .dropdown .mat-raised-button .selected::before, .ltr .i360-app .mat-raised-button .dropdown_list ul li.selected::before, .ltr .i360-app .dropdown_list ul .mat-raised-button li.selected::before, .ltr .i360-app .mat-raised-button .dropdown_list ul li.active::before, .ltr .i360-app .dropdown_list ul .mat-raised-button li.active::before, .ltr .i360-app .mat-button .material-icons, .ltr .i360-app .mat-button .dropdown .selected::before, .ltr .i360-app .dropdown .mat-button .selected::before, .ltr .i360-app .mat-button .dropdown_list ul li.selected::before, .ltr .i360-app .dropdown_list ul .mat-button li.selected::before, .ltr .i360-app .mat-button .dropdown_list ul li.active::before, .ltr .i360-app .dropdown_list ul .mat-button li.active::before {\\n margin-right: 10px;\\n}\\n.rtl .i360-app .mat-raised-button .material-icons, .rtl .i360-app .mat-raised-button .dropdown .selected::before, .rtl .i360-app .dropdown .mat-raised-button .selected::before, .rtl .i360-app .mat-raised-button .dropdown_list ul li.selected::before, .rtl .i360-app .dropdown_list ul .mat-raised-button li.selected::before, .rtl .i360-app .mat-raised-button .dropdown_list ul li.active::before, .rtl .i360-app .dropdown_list ul .mat-raised-button li.active::before, .rtl .i360-app .mat-button .material-icons, .rtl .i360-app .mat-button .dropdown .selected::before, .rtl .i360-app .dropdown .mat-button .selected::before, .rtl .i360-app .mat-button .dropdown_list ul li.selected::before, .rtl .i360-app .dropdown_list ul .mat-button li.selected::before, .rtl .i360-app .mat-button .dropdown_list ul li.active::before, .rtl .i360-app .dropdown_list ul .mat-button li.active::before {\\n margin-left: 10px;\\n}\\n.ltr .i360-app .mat-raised-button .material-icons, .ltr .i360-app .mat-raised-button .dropdown .selected::before, .ltr .i360-app .dropdown .mat-raised-button .selected::before, .ltr .i360-app .mat-raised-button .dropdown_list ul li.selected::before, .ltr .i360-app .dropdown_list ul .mat-raised-button li.selected::before, .ltr .i360-app .mat-raised-button .dropdown_list ul li.active::before, .ltr .i360-app .dropdown_list ul .mat-raised-button li.active::before, .ltr .i360-app .mat-button .material-icons, .ltr .i360-app .mat-button .dropdown .selected::before, .ltr .i360-app .dropdown .mat-button .selected::before, .ltr .i360-app .mat-button .dropdown_list ul li.selected::before, .ltr .i360-app .dropdown_list ul .mat-button li.selected::before, .ltr .i360-app .mat-button .dropdown_list ul li.active::before, .ltr .i360-app .dropdown_list ul .mat-button li.active::before {\\n margin-left: -15px;\\n}\\n.rtl .i360-app .mat-raised-button .material-icons, .rtl .i360-app .mat-raised-button .dropdown .selected::before, .rtl .i360-app .dropdown .mat-raised-button .selected::before, .rtl .i360-app .mat-raised-button .dropdown_list ul li.selected::before, .rtl .i360-app .dropdown_list ul .mat-raised-button li.selected::before, .rtl .i360-app .mat-raised-button .dropdown_list ul li.active::before, .rtl .i360-app .dropdown_list ul .mat-raised-button li.active::before, .rtl .i360-app .mat-button .material-icons, .rtl .i360-app .mat-button .dropdown .selected::before, .rtl .i360-app .dropdown .mat-button .selected::before, .rtl .i360-app .mat-button .dropdown_list ul li.selected::before, .rtl .i360-app .dropdown_list ul .mat-button li.selected::before, .rtl .i360-app .mat-button .dropdown_list ul li.active::before, .rtl .i360-app .dropdown_list ul .mat-button li.active::before {\\n margin-right: -15px;\\n}\\n.i360-app .mat-raised-button.capitalize, .i360-app .mat-button.capitalize {\\n text-transform: capitalize;\\n}\\n.i360-app mat-chip-list.i360-chips mat-chip[i360-chip] {\\n background-color: #e2f7e9;\\n height: 27px;\\n border: solid 1px #cecece;\\n border-radius: 2px;\\n cursor: pointer;\\n}\\n.i360-app mat-chip-list.i360-chips mat-chip[i360-chip][i360-chip] {\\n margin: 3px 2.5px;\\n}\\n.i360-app mat-chip-list.i360-chips mat-chip[i360-chip] i360-ellipsis {\\n max-width: 276px;\\n}\\n.ltr .i360-app .mat-form-field-type-mat-input .mat-form-field-prefix + .mat-form-field-infix i360-error {\\n left: -48px;\\n}\\n.rtl .i360-app .mat-form-field-type-mat-input .mat-form-field-prefix + .mat-form-field-infix i360-error {\\n right: -48px;\\n}\\n.i360-app .mat-form-field-type-mat-input .mat-form-field-wrapper {\\n margin: 0;\\n}\\n.i360-app .mat-form-field-type-mat-input.mat-form-field-should-float .mat-form-field-label-wrapper {\\n overflow: visible;\\n margin-top: 3px;\\n}\\n.i360-app .mat-form-field-type-mat-input .mat-form-field-label, .i360-app .mat-form-field-type-mat-input.mat-form-field.mat-form-field-invalid.ng-pristine .mat-form-field-label {\\n margin-top: -4px;\\n font-size: 12px;\\n color: #a8abae;\\n}\\n.i360-app .mat-form-field-type-mat-input .mat-form-field-flex {\\n height: 40px;\\n margin-top: 0;\\n}\\n.i360-app .mat-form-field-type-mat-input .mat-form-field-infix {\\n margin-top: -8px;\\n}\\n.ltr .i360-app .mat-form-field-type-mat-input .mat-form-field-infix {\\n margin-left: 10px;\\n}\\n.rtl .i360-app .mat-form-field-type-mat-input .mat-form-field-infix {\\n margin-right: 10px;\\n}\\n.i360-app .mat-form-field-type-mat-input .mat-form-field-prefix {\\n font-size: 16px;\\n}\\n.ltr .i360-app .mat-form-field-type-mat-input .mat-form-field-prefix {\\n margin-left: 7px;\\n}\\n.rtl .i360-app .mat-form-field-type-mat-input .mat-form-field-prefix {\\n margin-right: 7px;\\n}\\n.ltr .i360-app .mat-form-field-type-mat-input .mat-form-field-prefix {\\n margin-right: 7px;\\n}\\n.rtl .i360-app .mat-form-field-type-mat-input .mat-form-field-prefix {\\n margin-left: 7px;\\n}\\n.i360-app .mat-form-field-type-mat-input .mat-form-field-prefix mat-icon {\\n font-size: 30px;\\n transform: rotate(90deg);\\n}\\n.i360-app .mat-form-field-type-mat-input input {\\n font-size: 12px;\\n margin-top: -5px;\\n margin-bottom: 9px;\\n caret-color: #535353;\\n border: none !important;\\n box-shadow: none !important;\\n padding: 0;\\n background: transparent;\\n height: auto;\\n}\\n.i360-app .mat-form-field-type-mat-input.mat-focused .mat-form-field-outline {\\n background-image: linear-gradient(to bottom, #ffffff, #fbfcff);\\n}\\n.i360-app .mat-form-field-type-mat-input.mat-focused .mat-form-field-outline > * {\\n border-color: #11cb84;\\n}\\n.i360-app .mat-form-field-type-mat-input.mat-focused .mat-form-field-label {\\n color: #11cb84;\\n}\\n.i360-app .mat-form-field-type-mat-input.mat-form-field-invalid.ng-dirty .mat-form-field-outline {\\n box-shadow: 0 1px 1px 0 #f4f4f3, 0 1px 1px 0 #f4f4f3;\\n background-image: linear-gradient(to bottom, #ffffff, #fbfcff);\\n}\\n.i360-app .mat-form-field-type-mat-input.mat-form-field-invalid.ng-dirty .mat-form-field-outline > * {\\n border-color: #fc4c4c;\\n}\\n.i360-app .mat-form-field-type-mat-input.mat-form-field-invalid.ng-dirty .mat-form-field-label {\\n color: #fc4c4c;\\n}\\n.i360-app .mat-form-field-type-mat-input.mat-form-field-should-float .mat-form-field-outline-gap {\\n border-top-color: transparent !important;\\n}\\n.i360-app .mat-form-field-type-mat-input .mat-form-field-outline {\\n top: 0;\\n box-shadow: 0 1px 1px 0 #f4f4f3;\\n}\\n.i360-app .mat-form-field-type-mat-input .mat-form-field-outline > * {\\n background-color: #ffffff;\\n border-color: #dee1ec;\\n}\\n.i360-app .mat-form-field-type-mat-input .mat-form-field-outline > *.mat-form-field-outline-start {\\n border-left-width: 1px;\\n border-top-width: 1px;\\n border-bottom-width: 1px;\\n}\\n.i360-app .mat-form-field-type-mat-input .mat-form-field-outline > *.mat-form-field-outline-end {\\n border-right-width: 1px;\\n border-top-width: 1px;\\n border-bottom-width: 1px;\\n}\\n.i360-app .mat-form-field-type-mat-input .mat-form-field-outline > *.mat-form-field-outline-gap {\\n border-bottom-width: 1px;\\n border-top-width: 1px;\\n}\\n.i360-app mat-icon svg {\\n height: inherit;\\n}\\n.i360-app * {\\n box-sizing: border-box;\\n}\\n.i360-app a {\\n color: #337ab7;\\n text-decoration: none;\\n}\\n.i360-app input:-webkit-autofill {\\n -webkit-box-shadow: 0 0 0 1000px white inset;\\n}\\n.i360-app input, .i360-app button, .i360-app select, .i360-app textarea {\\n font-family: \\\"Open Sans\\\", sans-serif !important;\\n font-size: inherit;\\n line-height: inherit;\\n}\\n.i360-app label {\\n font-weight: normal;\\n margin: auto;\\n display: inline-flex;\\n}\\n.i360-app span.active {\\n background-color: gray;\\n}\\n.i360-app h1 {\\n margin-bottom: 0;\\n height: 35px;\\n font-size: 33px;\\n font-weight: 400;\\n color: #404040;\\n}\\n.i360-app .b_btn {\\n font-size: 14px;\\n outline: none;\\n}\\n.i360-app .b_btn:disabled {\\n box-shadow: none;\\n}\\nhtml.rtl .i360-app :not(th).rtl-except {\\n direction: ltr;\\n text-align: right;\\n}\\n.i360-app .canvas {\\n min-height: 50px;\\n background-color: #ffffff;\\n box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.24), 0 0 2px 0 rgba(0, 0, 0, 0.12);\\n border-style: solid;\\n border-width: 0;\\n border-image-source: linear-gradient(0deg, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.1) 5%, rgba(255, 255, 255, 0) 20%, rgba(255, 255, 255, 0));\\n border-image-slice: 1;\\n}\\n.i360-app .canvas.no-border {\\n border: none;\\n box-shadow: none;\\n}\\n.i360-app a {\\n cursor: pointer;\\n}\\n.i360-app .coming-soon_element a {\\n color: #9E9E9E !important;\\n}\\n.i360-app .filters-actions-wrapper {\\n align-items: flex-end;\\n justify-content: space-between;\\n}\\n.i360-app .mat-tooltip {\\n font-family: \\\"Open Sans\\\";\\n font-size: 11px;\\n font-weight: normal;\\n font-style: normal;\\n font-stretch: normal;\\n}\\n.i360-app .mat-tooltip.white-space {\\n white-space: pre-wrap;\\n}\\n.i360-app .mat-tooltip.wide-tooltip {\\n max-width: 600px !important;\\n}\\n.i360-app .mat-tooltip.version-tooltip {\\n min-width: 200px;\\n white-space: pre-line;\\n background: rgba(34, 32, 32, 0.9);\\n}\\n.i360-app .lineBreakable {\\n white-space: pre-line;\\n}\\n.i360-app .i360-header {\\n display: flex;\\n align-items: baseline;\\n justify-content: space-between;\\n vertical-align: middle;\\n line-height: 1;\\n}\\n.i360-app .i360-header h1 {\\n height: initial;\\n margin-top: 0;\\n margin-bottom: 16px;\\n}\\n.i360-app .i360-header-section {\\n display: flex;\\n width: 100%;\\n align-items: center;\\n}\\n.i360-app .i360-header-section i360-header {\\n flex-grow: 1;\\n}\\n.i360-app .uppercase {\\n text-transform: uppercase;\\n}\\n.i360-app .support {\\n display: inline-block;\\n width: 25px;\\n height: 24px;\\n}\\n.i360-app .severity-icon {\\n display: inline-block;\\n width: 8px;\\n height: 8px;\\n border-radius: 8px;\\n}\\n.ltr .i360-app .severity-icon {\\n margin-right: 8px;\\n}\\n.rtl .i360-app .severity-icon {\\n margin-left: 8px;\\n}\\n.i360-app .severity-icon.high {\\n background-color: #fc4c4c;\\n}\\n.i360-app .severity-icon.low {\\n background-color: #36b081;\\n}\\n.i360-app .severity-icon.medium {\\n background-color: #ffa83d;\\n}\\n.i360-app .severity-icon.log {\\n background-color: #9a9a9a;\\n}\\n.i360-app .severity-icon.block {\\n background-color: #ffa83d;\\n}\\n.i360-app .severity-icon.kill {\\n background-color: #fc4c4c;\\n}\\n.i360-app svg {\\n vertical-align: baseline;\\n}\\n.i360-app .text-uppercase {\\n text-transform: uppercase;\\n}\\n.cdk-visually-hidden {\\n display: none;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/styles/global/cpanel.scss\",\"webpack://./src/app/styles/global/app.style.scss\",\"webpack://./src/app/styles/common/variables.scss\",\"webpack://./src/app/styles/global/plesk.scss\",\"webpack://./src/app/styles/global/directadmin.scss\",\"webpack://./src/app/styles/common/rtl.scss\",\"webpack://./src/app/styles/global/i360-icons/i360-icon-font.css\",\"webpack://./src/app/styles/global/main.scss\",\"webpack://./src/app/styles/common/common.scss\",\"webpack://./src/app/styles/common/media.scss\",\"webpack://./src/app/utils/material/slide-toggle.component.scss\",\"webpack://./src/app/utils/material/checkbox.component.scss\",\"webpack://./src/app/utils/material/radio-button.component.scss\",\"webpack://./node_modules/@angular/material/badge/_badge-theme.scss\",\"webpack://./node_modules/@angular/material/core/typography/_typography.scss\",\"webpack://./node_modules/@angular/material/core/typography/_typography-utils.scss\",\"webpack://./node_modules/@angular/material/bottom-sheet/_bottom-sheet-theme.scss\",\"webpack://./node_modules/@angular/material/button/_button-theme.scss\",\"webpack://./node_modules/@angular/material/button-toggle/_button-toggle-theme.scss\",\"webpack://./node_modules/@angular/material/card/_card-theme.scss\",\"webpack://./node_modules/@angular/material/checkbox/_checkbox-theme.scss\",\"webpack://./node_modules/@angular/material/chips/_chips-theme.scss\",\"webpack://./node_modules/@angular/material/table/_table-theme.scss\",\"webpack://./node_modules/@angular/material/datepicker/_datepicker-theme.scss\",\"webpack://./node_modules/@angular/material/dialog/_dialog-theme.scss\",\"webpack://./node_modules/@angular/material/expansion/_expansion-theme.scss\",\"webpack://./node_modules/@angular/material/form-field/_form-field-theme.scss\",\"webpack://./node_modules/@angular/material/form-field/_form-field-legacy-theme.scss\",\"webpack://./node_modules/@angular/material/form-field/_form-field-fill-theme.scss\",\"webpack://./node_modules/@angular/material/form-field/_form-field-outline-theme.scss\",\"webpack://./node_modules/@angular/material/grid-list/_grid-list-theme.scss\",\"webpack://./node_modules/@angular/material/core/style/_list-common.scss\",\"webpack://./node_modules/@angular/material/input/_input-theme.scss\",\"webpack://./node_modules/@angular/material/menu/_menu-theme.scss\",\"webpack://./node_modules/@angular/material/paginator/_paginator-theme.scss\",\"webpack://./node_modules/@angular/material/radio/_radio-theme.scss\",\"webpack://./node_modules/@angular/material/select/_select-theme.scss\",\"webpack://./node_modules/@angular/material/slide-toggle/_slide-toggle-theme.scss\",\"webpack://./node_modules/@angular/material/slider/_slider-theme.scss\",\"webpack://./node_modules/@angular/material/stepper/_stepper-theme.scss\",\"webpack://./node_modules/@angular/material/tabs/_tabs-theme.scss\",\"webpack://./node_modules/@angular/material/toolbar/_toolbar-theme.scss\",\"webpack://./node_modules/@angular/material/tooltip/_tooltip-theme.scss\",\"webpack://./node_modules/@angular/material/list/_list-theme.scss\",\"webpack://./node_modules/@angular/material/core/option/_option-theme.scss\",\"webpack://./node_modules/@angular/material/core/option/_optgroup-theme.scss\",\"webpack://./node_modules/@angular/material/snack-bar/_snack-bar-theme.scss\",\"webpack://./node_modules/@angular/material/tree/_tree-theme.scss\",\"webpack://./node_modules/@angular/material/core/ripple/_ripple.scss\",\"webpack://./node_modules/@angular/cdk/a11y/_index.scss\",\"webpack://./node_modules/@angular/cdk/overlay/_index.scss\",\"webpack://./node_modules/@angular/cdk/text-field/_index.scss\",\"webpack://./node_modules/@angular/material/core/focus-indicators/_private.scss\",\"webpack://./node_modules/@angular/material/core/style/_layout-common.scss\",\"webpack://./node_modules/@angular/material/core/ripple/_ripple-theme.scss\",\"webpack://./node_modules/@angular/material/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss\",\"webpack://./node_modules/@angular/material/core/_core-theme.scss\",\"webpack://./node_modules/@angular/material/core/style/_elevation.scss\",\"webpack://./node_modules/@angular/material/autocomplete/_autocomplete-theme.scss\",\"webpack://./node_modules/@angular/material/divider/_divider-theme.scss\",\"webpack://./node_modules/@angular/material/expansion/_expansion-mixins.scss\",\"webpack://./node_modules/@angular/material/core/style/_form-common.scss\",\"webpack://./node_modules/@angular/material/form-field/_form-field-standard-theme.scss\",\"webpack://./node_modules/@angular/material/icon/_icon-theme.scss\",\"webpack://./node_modules/@angular/material/core/style/_vendor-prefixes.scss\",\"webpack://./node_modules/@angular/material/progress-bar/_progress-bar-theme.scss\",\"webpack://./node_modules/@angular/material/progress-spinner/_progress-spinner-theme.scss\",\"webpack://./node_modules/@angular/material/sidenav/_sidenav-theme.scss\",\"webpack://./node_modules/@angular/material/sort/_sort-theme.scss\",\"webpack://./src/app/styles/global/material-theme.scss\"],\"names\":[],\"mappings\":\"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DI;EGKE,oCAAA;AnD65DN;AmDx8DE;EACE,kBAAA;AnD08DJ;AmDx8DI;ECbF,MAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,kBAAA;EDWI,sBAAA;EACA,oBAAA;EACA,qDAAA;EACA,oKAAA;EAYA,gEAAA;AnDm8DN;AmD37DI;EACE,WAAA;AnD67DN;AgDp7DI;EGKE,wCAAA;AnDk7DN;AqD99DE;EAII,oCAAA;ArD69DN;A2C/9DE;EACE,0BAAA;A3Ci+DJ;A2C/9DI;EAEE,+BAAA;A3Cg+DN;A2C59DI;EACE,+BAAA;A3C89DN;A2C39DI;EACE,+BAAA;EACA,0BAAA;A3C69DN;A2C19DI;EACE,0BAAA;A3C49DN;A2Cx9DE;EACE,cAAA;A3C09DJ;A2Cv9DE;EACE,cAAA;A3Cy9DJ;A2Ct9DE;EACE,cAAA;A3Cw9DJ;A4C5/DE;EACE,0BAAA;A5C8/DJ;A4C3/DE;EACE,0BAAA;A5C6/DJ;AsDx/DE;EACE,0BAAA;AtD0/DJ;AsDx/DI;EACE,cAAA;AtD0/DN;AsDt/DE;EACE,cAZe;AtDogEnB;AsDr/DE;;EAEE,mBAAA;AtDu/DJ;AsD/+DE;;;;EAIE,mBAAA;AtDi/DJ;AsD9+DE;;EAEE,mBAAA;AtDg/DJ;AsD3+DI;;EACE,mBAxCa;AtDshEnB;AuDvhEE;EAIE,yBAAA;EACA,0BAAA;AvDshEJ;AuD/gEI;ECkIF,wHAAA;AxDg5DF;AuDlhEI;ECkIF,yHAAA;AxDm5DF;AuDrhEI;ECkIF,yHAAA;AxDs5DF;AuDxhEI;ECkIF,yHAAA;AxDy5DF;AuD3hEI;ECkIF,0HAAA;AxD45DF;AuD9hEI;ECkIF,0HAAA;AxD+5DF;AuDjiEI;ECkIF,2HAAA;AxDk6DF;AuDpiEI;ECkIF,2HAAA;AxDq6DF;AuDviEI;ECkIF,2HAAA;AxDw6DF;AuD1iEI;ECkIF,2HAAA;AxD26DF;AuD7iEI;ECkIF,4HAAA;AxD86DF;AuDhjEI;ECkIF,4HAAA;AxDi7DF;AuDnjEI;ECkIF,4HAAA;AxDo7DF;AuDtjEI;ECkIF,4HAAA;AxDu7DF;AuDzjEI;ECkIF,4HAAA;AxD07DF;AuD5jEI;ECkIF,4HA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5B43FJ;A4B32FM;EACE,cAjBkB;A5B83F1B;A4B12FM;EACE,cApBiB;A5Bg4FzB;A4Bz2FM;EACE,cAvBe;A5Bk4FvB;A4Br2FM;EACE,cA9Be;A5Bq4FvB;A4Bl2FM;EACE,0BA3CiB;A5B+4FzB;A4Bj2FM;EACE,0BAtCJ;A5By4FJ;A8Dv5FI;EACE,cAAA;A9Dy5FN;A8Dt5FI;EACE,cAAA;A9Dw5FN;A8Dr5FI;EACE,cAAA;A9Du5FN;A+B35FE;EACE,0BAAA;A/B65FJ;A+B15FE;;EAEE,0BAAA;A/B45FJ;A+Bz5FE;EACE,oBAAA;A/B25FJ;A+D/6FE;EhCuBI,0BAAA;A/B25FN;A+D96FE;EhCmBI,0BAAA;A/B85FN;A+D76FE;EhCeI,0BAAA;A/Bi6FN;A+D16FE;EhCSI,0BAAA;A/Bo6FN;A+B/4FE;EACE,oBAAA;A/Bi5FJ;A+B94FE;;EAEE,oBAAA;A/Bg5FJ;A+B74FE;EACE,cAAA;A/B+4FJ;A0C/7FI;EACE,0BAAA;A1Ci8FN;A0C97FI;EACE,0BAAA;A1Cg8FN;A0C77FI;EACE,0BAAA;A1C+7FN;A0C57FI;EACE,yBAAA;EACA,0BAAA;A1C87FN;A0Cv7FI;;;;;EACE,+BAAA;A1C67FN;A0Cx7FI;EACE,+BAAA;A1C07FN;AgCv9FE;EAEE,iBAAA;AhCw9FJ;AwD9zFE;EAXA,0HAAA;AxD40FF;AgCx9FE;EACE,uBAAA;EACA,0BAAA;AhC09FJ;AgCv9FM;;;EAGE,0BAAA;AhCy9FR;AgCp9FE;;EAEE,0BAAA;AhCs9FJ;AgC/8FI;;;;EACE,+BAAA;AhCo9FN;AiCh/FE;EACE,iBAAA;AjCk/FJ;AiC/+FE;;EAEE,0BAAA;AjCi/FJ;AiC9+FE;;EAEE,yCAAA;EACA,2CAAA;AjCg/FJ;AiC7+FE;;EAEE,yCAAA;AjC++FJ;AiC3+FI;;;;EAIE,iCAAA;AjC6+FN;AiCt9FI;EACE,gBALK;AjC69FX;AgE9/FE;EACE,aAAA;AhEggGJ;AgE7/FE;EACE,yBAAA;AhE+/FJ;AgE5/FE;EACE,yBAAA;AhE8/FJ;AgE1/FI;EACE,aAAA;AhE4/FN;AgEz/FI;EACE,yBAAA;AhE2/F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\",\"sourcesContent\":[\"@import \\\"app/styles/common/variables\\\";\\n\\nbody {\\n // Version are visible over dropdown (client area)\\n #txtCpanelVersion {\\n z-index: 0 !important;\\n }\\n #contentContainer {\\n padding-top: 20px;\\n }\\n}\\n\\n.i360-app.i360-cpanel {\\n i360-tabs > div > a {\\n color: $header-color;\\n &:hover, &:focus {\\n color: $header-color;\\n text-decoration: none;\\n }\\n }\\n}\\n\",\"@import './cpanel';\\n@import './plesk';\\n@import './directadmin';\\n@import './i360-icons/i360-icon-font';\\n\\n.i360-app {\\n\\n @import './main';\\n @import '../common/common';\\n @import './material-theme';\\n\\n * {\\n box-sizing: border-box;\\n }\\n a {\\n color: #337ab7;\\n text-decoration: none;\\n }\\n input:-webkit-autofill {\\n -webkit-box-shadow: 0 0 0 1000px white inset;\\n }\\n input, button, select, textarea {\\n font-family: 'Open Sans', sans-serif!important;\\n font-size: inherit;\\n line-height: inherit;\\n }\\n\\n label {\\n font-weight: normal;\\n margin: auto;\\n display: inline-flex;\\n }\\n position: relative;\\n min-height: 100%;\\n font: 13px 'Open Sans', sans-serif;\\n line-height: 18px;\\n\\n span.active {\\n background-color: gray;\\n }\\n\\n h1 {\\n margin-bottom: 0;\\n height: 35px;\\n font-size: 33px;\\n font-weight: 400;\\n color: #404040;\\n }\\n\\n .b_btn {\\n font-size: 14px;\\n outline: none;\\n\\n &:disabled {\\n box-shadow: none;\\n }\\n }\\n\\n html.rtl & :not(th).rtl-except {\\n direction: ltr;\\n text-align: right;\\n }\\n\\n .canvas {\\n min-height: 50px;\\n background-color: #ffffff;\\n box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.24), 0 0 2px 0 rgba(0, 0, 0, 0.12);\\n border-style: solid;\\n border-width: 0;\\n border-image-source: linear-gradient(0deg, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.1) 5%, rgba(255, 255, 255, 0) 20%, rgba(255, 255, 255, 0));\\n border-image-slice: 1;\\n &.no-border {\\n border: none;\\n box-shadow: none;\\n }\\n }\\n\\n a {\\n cursor: pointer;\\n }\\n .coming-soon_element a {\\n color: #9E9E9E !important;\\n }\\n\\n .filters-actions-wrapper {\\n align-items: flex-end;\\n justify-content: space-between;\\n }\\n\\n .mat-tooltip {\\n font-family: 'Open Sans';\\n font-size: 11px;\\n font-weight: normal;\\n font-style: normal;\\n font-stretch: normal;\\n\\n &.white-space {\\n white-space: pre-wrap;\\n }\\n\\n &.wide-tooltip {\\n max-width: 600px!important;\\n }\\n &.version-tooltip {\\n min-width: 200px;\\n white-space: pre-line;\\n background: rgb(34 32 32 / 90%);\\n }\\n }\\n\\n .lineBreakable {\\n white-space: pre-line;\\n }\\n\\n .i360-header {\\n display: flex;\\n align-items: baseline;\\n justify-content: space-between;\\n vertical-align: middle;\\n line-height: 1;\\n\\n h1 {\\n height: initial;\\n margin-top: 0;\\n margin-bottom: 16px;\\n }\\n }\\n\\n .i360-header-section {\\n display: flex;\\n width: 100%;\\n align-items: center;\\n\\n i360-header {\\n flex-grow: 1;\\n }\\n }\\n\\n .uppercase {\\n text-transform: uppercase;\\n }\\n\\n .support {\\n display: inline-block;\\n width: 25px;\\n height: 24px;\\n }\\n .severity-icon {\\n display: inline-block;\\n @include rtl-margin-right(8px);\\n width: 8px;\\n height: 8px;\\n border-radius: 8px;\\n &.high {\\n background-color: $severity-red;\\n }\\n\\n &.low {\\n background-color: $severity-green;\\n }\\n\\n &.medium {\\n background-color: $severity-orange;\\n }\\n\\n &.log {\\n background-color: #9a9a9a;\\n }\\n\\n &.block {\\n background-color: $severity-orange;\\n }\\n\\n &.kill {\\n background-color: $severity-red;\\n }\\n }\\n svg { // plesk, ?\\n vertical-align: baseline;\\n }\\n .text-uppercase {\\n text-transform: uppercase;\\n }\\n}\\n\\n.cdk-visually-hidden\\n{\\n display: none;\\n}\\n\",\"$primary-color: #11cb84;\\n$header-color: #1d1d1d;\\n$focused-bg: rgba(153, 153, 153, 0.2);\\n$pressed-bg: rgba(153, 153, 153, 0.4);\\n$disabled-fg: rgba(0, 0, 0, 0.26);\\n$scroll-color: #53b076;\\n$gray-hover-bg: #f1f1f1;\\n$table-hover-bg: #f8f9fb;\\n$primary-hover-bg: #e9f6ee;\\n$primary-bg: #eff8f2;\\n$navbar-bg: #fafafa;\\n$gray: #afafaf;\\n$alert-red: #ef5870;\\n$error-color: #fc4c4c;\\n$error-text: #ea7474;\\n$success-color: #43a047;\\n$gray-fg: #535353;\\n$gray-dc: #616161;\\n$gray-title: #4e5665;\\n$btn-primary-border: #e8e8e8;\\n\\n$unremarkable: #b9b9b9;\\n\\n$gray-bg-v2: #f4f5f7;\\n$box-shadow: #f4f4f3;\\n\\n$severity-red: #fc4c4c;\\n$severity-orange: #ffa83d;\\n$severity-green: #36b081;\\n\\n$border-style: 1px solid #eceef1;\\n$input-border-color: #dee1ec;\\n\\n$padding-base-vertical: 6px !default;\\n$padding-base-horizontal: 12px !default;\\n\\n$border-radius-base: 4px !default;\\n$line-height-base: 1.428571429 !default; // 20/14\\n$pagination-bg: #fff !default;\\n$pagination-border: #ddd !default;\\n$pagination-hover-border: #ddd !default;\\n$pagination-active-color: #fff !default;\\n$pagination-disabled-bg: #fff !default;\\n$pagination-disabled-border: #ddd !default;\\n$pagination-active-border: #337ab7 !default;\\n$cursor-disabled: not-allowed !default;\\n\",\"@import '../common/variables';\\n\\n/* Fixes for global styles */\\nbody .modal-backdrop {\\n opacity: 0.4;\\n background: #4c4c4c;\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n z-index: 1040;\\n\\n &.fade {\\n -webkit-transition: opacity 0.15s linear;\\n transition: opacity 0.15s linear;\\n }\\n}\\n\\nbody.modal-open {\\n overflow: visible;\\n}\\n\\n/* Fixes for plugin content */\\n.i360-app.i360-plesk {\\n .add_item {\\n color: #333;\\n }\\n\\n .pagination_nav {\\n ul.pagination {\\n margin-bottom: 16px;\\n }\\n }\\n\\n .scanner-status-widget {\\n color: #333;\\n }\\n\\n table > tbody {\\n tr {\\n td {\\n &.expander-column>div {\\n transform: translateY(2px);\\n }\\n }\\n\\n // Fix for Plesk v17.5\\n &:hover {\\n > th {\\n box-shadow: none;\\n background-color: #f8f8f8;\\n }\\n\\n > td {\\n box-shadow: none;\\n background-color: $primary-bg;\\n }\\n }\\n }\\n }\\n\\n .notification {\\n outline: none;\\n }\\n\\n .search_block .cross_icon {\\n background-color: inherit;\\n }\\n\\n .form-control {\\n &:focus {\\n color: $header-color;\\n }\\n }\\n\\n input[type=radio]:disabled {\\n opacity: 0;\\n }\\n}\\n\",\"@import '../common/variables';\\n@import '../common/rtl';\\n\\n/* Fixes for plugin content */\\n.i360-app.i360-directadmin {\\n margin: auto 10px;\\n\\n * {\\n /* For limit widget, but it causes a problems with focused fields */\\n .cdk-overlay-pane {\\n &:not(.i360-modal-dialog-panel) {\\n bottom: 0 !important; // forbid overflow at the bottom\\n height: auto;\\n max-height: fit-content; // don't stretch to the bottom\\n }\\n\\n pointer-events: none !important;\\n height: fit-content; // Fix pop-up height for Chrome\\n\\n > mat-dialog-container {\\n max-height: 80%; // Fix pop-up height for Edge\\n }\\n\\n > * {\\n pointer-events: auto;\\n }\\n\\n }\\n\\n .add-item-container {\\n textarea, input {\\n @include rtl-padding-left(14px);\\n }\\n }\\n\\n\\n font-size: inherit;\\n font-family: inherit;\\n line-height: inherit;\\n\\n .i360-title {\\n font-size: 22px;\\n }\\n\\n .list-tabs {\\n font-size: 16px;\\n }\\n\\n h1 {\\n font-family: 'Open Sans', sans-serif;\\n font-size: 22px;\\n }\\n\\n .title, .warning {\\n font-weight: normal;\\n color: inherit;\\n }\\n\\n a {\\n cursor: pointer;\\n }\\n\\n div.checkbox_block {\\n padding-top: 2px;\\n }\\n\\n i360-error {\\n font-size: 11px;\\n }\\n }\\n\\n .mat-select-placeholder {\\n line-height: 0.8;\\n color: transparent;\\n }\\n\\n i360-tabs > div > a {\\n color: $header-color;\\n font-size: 16px;\\n font-family: Open Sans, sans-serif;\\n\\n &:hover, &:focus {\\n color: $header-color;\\n text-decoration: none;\\n }\\n }\\n\\n $width: 890;\\n $max-width: 1300;\\n $step: 30;\\n\\n @while $width <= $max-width {\\n @media (min-width: #{$width}px) {\\n width: calc(#{$width}px - 100px);\\n }\\n\\n $width: $width + $step;\\n }\\n\\n @media (max-width: 789px) {\\n margin: auto 0;\\n }\\n}\\n\\n// For Evolution theme where plugins are displayed inside of an iframe\\n#iframe-container .i360-app.i360-directadmin {\\n height: auto;\\n min-height: 400px;\\n padding-bottom: 50px;\\n}\\n\",\"\\n@function hasAppParent($ampersand) {\\n @return nth(nth(&, 1), 1) == '.i360-app' or nth(nth(&, 1), 1) == ':not-i360-app-isolated';\\n}\\n\\n@mixin dir($dir) {\\n // TODO: specify explicitly whether to use :host-context or not, because \\\"hasAppParent\\\" is imperfect\\n @if hasAppParent(&) {\\n .#{$dir} & {@content};\\n } @else {\\n :host-context(.#{$dir}) & {@content};\\n }\\n}\\n\\n@mixin ltr {\\n @include dir(ltr) {@content};\\n}\\n\\n@mixin rtl {\\n @include dir(rtl) {@content};\\n}\\n\\n@mixin rtl-wrapper($ltr, $rtl, $value) {\\n @include ltr {#{$ltr}: $value};\\n @include rtl {#{$rtl}: $value};\\n}\\n\\n@mixin rtl-wrapper-shorthand($cmd, $top, $right, $bottom, $left) {\\n @include ltr {#{$cmd}: $top $right $bottom $left};\\n @include rtl {#{$cmd}: $top $left $bottom $right};\\n}\\n\\n@mixin rtl-margin($top, $right, $bottom, $left) {\\n @include rtl-wrapper-shorthand(margin, $top, $right, $bottom, $left);\\n}\\n\\n@mixin rtl-margin-left($value) {\\n @include rtl-wrapper(margin-left, margin-right, $value);\\n}\\n\\n@mixin rtl-margin-right($value) {\\n @include rtl-wrapper(margin-right, margin-left, $value);\\n}\\n\\n@mixin rtl-padding($top, $right, $bottom, $left) {\\n @include rtl-wrapper-shorthand(padding, $top, $right, $bottom, $left);\\n}\\n\\n@mixin rtl-padding-left($value) {\\n @include rtl-wrapper(padding-left, padding-right, $value);\\n}\\n\\n@mixin rtl-padding-right($value) {\\n @include rtl-wrapper(padding-right, padding-left, $value);\\n}\\n\\n@mixin rtl-right($value) {\\n @include rtl-wrapper(right, left, $value);\\n}\\n\\n@mixin rtl-left($value) {\\n @include rtl-wrapper(left, right, $value);\\n}\\n\\n@mixin rtl-cmd-right($cmd) {\\n @include ltr {#{$cmd}: right};\\n @include rtl {#{$cmd}: left};\\n}\\n\\n@mixin rtl-cmd-left($cmd) {\\n @include ltr {#{$cmd}: left};\\n @include rtl {#{$cmd}: right};\\n}\\n\\n@mixin rtl-border-radius($top, $right, $bottom, $left) {\\n @include rtl-wrapper-shorthand(border-radius, $top, $right, $bottom, $left);\\n}\\n\\n@mixin rtl-border-width($top, $right, $bottom, $left) {\\n @include rtl-wrapper-shorthand(border-width, $top, $right, $bottom, $left);\\n}\\n\\n@mixin rtl-border-left($value) {\\n @include rtl-wrapper(border-left, border-right, $value);\\n}\\n\",\"\\n@font-face {\\n font-family: \\\"i360-icon-font\\\";\\n src: url(\\\"data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAABQgAAsAAAAAISgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAAQAAAAFZHdU8GY21hcAAAAYQAAADlAAADaPPVq1VnbHlmAAACbAAADpUAABcAMGcZKWhlYWQAABEEAAAALgAAADYWhk5vaGhlYQAAETQAAAAZAAAAJAgBBFdobXR4AAARUAAAABQAAACYlDAAAGxvY2EAABFkAAAATgAAAE5tRmaybWF4cAAAEbQAAAAfAAAAIAE1AI9uYW1lAAAR1AAAATgAAAJezwFNFnBvc3QAABMMAAABFAAAAZLF1RMWeJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGR+xjiBgZWBgYGX6QyQ7IfQjK8ZjBg5GBiYGFiZGbCCgDTXFAaHj4wfVVlA3BgWRgZ2IM0I4gAAui0JC3ic7dHZbcQgAEXR6zHj2Tz7vq/8pbIUlK+UlGaoYMLjpYxYOlwZYWQB0AXq7CMLUH1Toecrz1ZlvmZY5gOfZU3QfIrvdx4rjfk9lLGT14a8Y0OPPoP83YiWMROmzJizYMmKNRu27Nhz4MiJMxeu3Ljz4MmLmLdq+H9aDdXP31vUaVs5/46h1qZ7TMF0I6lruuPUGGrPUPuGOjDUoenu08hQW9PfpbGhTgx1aqgzQ50b6sJQl4a6MtS1oW4MdWuoO0PdG+rBUI+GejLUs6FeDPVqqDdDvRvqw1Cfhvoy1GjEX7MKWnIAAAB4nJVYeWwc13mfN7Nz7c7s7uzMzuzJPYY7Q3LJXe45y2t5r0SJ1EkdpLwUpUSKZdkWxVBu4iRO4Ap2YSlBgMaObAetAcIQDCNFHVhxQbdKIcM1ovif6A8XBRr4DydtCKMtijZGi4irfm+WpEiJCpqd4eP3vft95+8N4SDgR/0HdYfwEDEiSxwgCJRIGgOoWC4k8moUuRH1AP9geyrJaH49yShqH/IrLShfRQOoAGUxg9KoVDSof7w7zbtFJ/Vj3o3c/N1pp7jBNHatfU5zHE2qNIc45JXDaEYOheQZQQn4BSgFeGdCaFUSa4LPJ9RECT2Oaa8kjgvSWhaqBAlXSP8Fo0Kp0Izgd7nwUL8GpS8MxyPtMy5Ty4RCHCcIWdFUTc1bZatcNA3TSLIMy9CGmUGYYxlNVaAGc5huPgrDqnhA89FgQAta56o2gYfWeyonT/361MlKzyZBnjNlQXPJibCDZGmumBAOtnXKqt+riSGFcYVaEkG/zyXLghyIGD6eR4okqzxHOxgtUIpkHFQqRBKL26bEhMhLzqwgu4WwNx30CeF2X5p3Cp50MuRRvJw72ZflXHzAndDdAQejMJHgYCvv7PYGfazTTYu+SGdC9W7I5Q7oXiHioHdbEA8IR9b9ekkvFUoFf4EknnvqXHVwsHruqbsbxPmVuRV4qV9uq7WJBoFbVravk3rUOiyTNIqDIPRiOR9DqrLTYvoNsTUkvvKyGNLFG8KOa3rfFUOt4ssvi61B4V1RJxBem7xKXsW7QGwCrS6jGnl1lWjaxb17YBd3CJqIEERKUfPlkiUVsSWA2SYZsG7SL7H+RAktW5PWZ/HYxVq6mt61MPglqlY3y2XzA+TZMzI0KyVi6XQsIZ14fqLxn1/K5eC4W86cIDKPODUqYrKQVzWUQShpmKgFXAh33On4DXc+P33szNBS99oXRhtaAoJ0Gm24ckdZZM8cm87n21NrX+QuNW63p0hn7lLVriOacqFqVI1wEQSPWB5pPLJ4ZJJE43d9yGUXyNXX+B0UZJ9NbWvY9KvnIIScIZ7HJ2Q8yMCb33zccBpQZkEdRGULKvwMcHnM2KwtD1xjlXGdEkWqBzF+BddBl5ItnUHSdi5TLmdInc2rLMWsOyWbsj3QXqBsyWVq1BvhfpDtbkv4PR3xcDJldecZ1nWeZiia8is040CuSVpgOEnkOBJaKAdJ9zEiQzkQxyISkQw9xMk0xQuaEjrECIj0y5FXWOQJexDPOd6gKIZ3xgTe0ficZkKxdtPhoBiR+kvKQUjuNQ9N+93KYDIaisTCQcoFE+91IIQoluNpRuRKDooWvU6XW5Rlxk1TVIfDgWjE8xRL87yDphgn1UU7oG/MzFpdme+6IrHOVCKIkBgLeTpFtvHvjMfB8bHWaOgvHA4P6fDAnhkaeditPqYS+Q1rgygFqsvbQcp2MohjySza7mpWOa8qMBPx3JNgNAiN/+lbc5RNk4MDTzw5zvtC/KvX+JDMv/oqL4f4a00aLG7g3JPfqr99eTcmfv/UE9Whta3dXsX0a03a9gfwtU/AVjjYYdDOMoxfKkgJFkkKo0NOKUmQU1ACkf+2dscs18lMBmmWsXbPAD9DGiLuEQ4C+CXyar2x2sgYlmWQVw2rsYJtebu/VR/hbxSO6mBWGthYIbWenvREqZAv45QFRQvSVOyBO/nfj2df6Ujzn1oGGnF2xzIRubFal8NzhjV2LtoSCu7kg3dvuh7ff6jelv40Y5Yj0dYrSrgeVuplU458ZWx8atfIIGybbvoR7L2DKBMjxD5iDvYPWmH0HAiJciMsHhM2DzwoDVQK/lJF8B97SoGV7Mgl4ZDFyjZNYZqmIBuDY2DahNNlET4x9lJGpU64FcVN0QGy1NqYaC2RAeSgcNV1ikYurhz/RsziXCT7C6/mhfeHbkn14j+UcXs0L3J7VemTGxSFGFLiv8FLJIMo6qQSURzk2kJrPt9Kfp902KwZbWuLmszfNUour9eFfgGlALRHwrRH4nE98mBG8rzjIBVOFDmFstWJ1vP2i1hCyIQYZaKlD4aRg8wOo9c+GG78Hoht+Z0iGBzNIJSxFpjRZz8lo2uB7B1qee2Dvyf7G7OfFogHbCWAI//OtqJLBZz5drKE/XPw20nfazUUqNc317hOXQIqSHTBGpIu0bBAFCkQFnUmi/y6ZMd+1l4O0IZf1fJNUFFCo++Ra26W84bPHFfL5XefWZo8MH8egoOUajs2bCQlNy84GGphLUL+uh5NtBX104nBHkQz/0R+RpHZnyVlr9NH09wai2jaKbqlOHE/RgQI2T412FPSjcBGwDYsyO+Q5WlsX9jyyHDo8sGxS2PwHrwc/pu3ptdOJPP58XyefHqyPnbppaWx+uRb8MvV8vlaztbVvf+lHncgog0YO/aYxn3EZD84ZLvJZpOptlpl8m71+Pzl7/7M65MybaPt9en2WmEg3R3KKTLPj13YvffI7MkzX/kIhR+bIT//+LmXrL6WE7WhfLot2NWhtbXn+kYOLjz71cULH17rynKcYc7Iz7z0wlZ78BGA/1IJKVGyow04fQI7ik75CxBR/AWJqq0toVpjZSOY1FevN6xhdLu+AlEGBxvcgGpoud4oD6OfX0e1Dd2SczA/R0hECM6LfQ57mfQQgZbL+8oPvFQNoMOUZTV+YNo1jT+HVabK5U3bdMBDCCDJAWybtoqacJrOkGZJ94MQdX+hhdRAZ1XSKpRQEhuQnS7zNlxtQojCkXz+yFlcoKdcZ9+Yn5t/46xrfv4+2SBmJifSXV3picmfbBDkyvoYKK48OKBJNq5sG2ETD/lV8ZF+VSrIuB6AZRHnfSwmv16sojwGPztGXvC3+Y6oyz0XDfWGAYnV7d1pO0bc1ToS0lEtlgukxkJ9YZCzkT+ah7fF2owpS+CXHesesLnFQh5jed1N6velWcDiZBMSxZb+bM/ZowCdAG0dPXtkcuKcMq/sf6J3cngoZRipoeHJSjFnvoJq0LOCEdltjLNaW799wDqSMVKDw9eGB1OGqpovo/H7se3n1BQxCQz2/+b1Y+PS4VcfuoP4H76EQO1DtxDKbA+qbi7AueWAHnHxJOR75NqXk7/ePxJJxAK6YkSdXrMrb8TCUjjqi+odPWG3SLq9gWhSEHiGT+oHOsYZ2jLJ53m3ILsyguz1eQSvmJA7UqLb11YND4le2T9cMNWWgKgEIsfgXia2+nMlv85yUT6dqoeiondXMBV2ehReCXWM5BIBonnX/IRaJdLEYeIi8Rz4pi1q7wYKxvgEBMFuVUrZBigQM82tatnStxnC1C39MgisabOP4cb+eb8VpkA2A8kr/uLSwsjY2MjC0otf/ukuIZgU+q4dXjg1Z1Uq1typhekf9gnJoLDrvTOzU3s7M5nOvVOzo1/PCoGkqJ/Ijy6OjS2O5k/oYjIgZJ8d65rsgjfZH8DzBMZzufEAHh0YiEoBAV0VoFfjkqCNDl+4iJwXLwyP7hnHdb1Yd/WT/3yyXrYGemFuYXzPcld6z+RfT+5Jd+WyLuiTNNDwxcsXh5EBMydd2dxy597jezuDmpDUhADKjmU1QUsKWvBZGI4u40ka3xQ27ewO9b6dg5JNvwPQpz8QLGybZ3Eq2HRUMrt4+qTVc/UG9bdXOmE778B2OjFxfLS/r3Ok97Xpi7i9xzp5mlrpqcydXrzBvD+z0Qn37goFu0b6hnotuLqenqv0bMlBeD+FP3ZHrF+zzNIfsa83Pkou/z/3tvrbZyqnPtx2V9U27POBnckpaacgNdG4nX04HqFfftRY3Dj3VcgZEaIdzq2bVcCem58fNm1dgyOmmgYM4VBxI3I5JepGe9t47c3aeFs7Jg5bZ9qF1fEG6jlVqZxanK9U5tGy0HGmfHijh93V0MXUb8dXK/OL690IYus9YT/xGOxD1azmfduDAEvmAZ3osB8N8/iqAFhRAchYwqrAPL43GFmUHEDFAgjFxDweD3G8CHDUT23NVuR8RjtLsuRZktzvkr7Dcd+RXPtJ0q7SMhL3PU7Sk3+4w/7uA93dB+ZxQU08NPrB6QXvH+7Q+Nf1uaAgtn+XCDxK11JiR2VHd1Z2GZUbt4lNTI/nxhghRzxJPItxAtPEVxb+WoYBAg1BPd2ES/bqpt78tgbxPK5qLYi1P0aommGuPxjD2xdr8BpsNHacg4tCEreq62msmRIyKM6wBaDiUI3ei7RF4L2l4DKCxrqT/dFKcWRwcXCkWIn2J7s1Bf0Kff9XSNH+ioqcqvo40S9GCqGuOEPzDIWQqu5uR4r1gtMMJLPZZLCNP9YbS5sdbQmzu5jOReIHqZuN125SMV9lBn15puJD/yJHIkYkYhdGxD+T6J4a6InHYvGeganuxIxmOG9+/PFNp5ELx4M6q0SdHM17RDXFcAJHMfl0e4lRhWplhPP44pmE4qHDncmYJGmBju7+2sqbb7/95kJtYWHXha12XQOvbcGZHbI4iInEHyQB9GFnA/iEv2VZGhUVD39t/OAVo/dkuXp+EP1PaaaYPdy496OlW7fIx0bP9x/ZzQyf7R08P1icKeWPli68/vqtWzYsw2v8A/VVwGZBwA89WKMbxg6GT29lNHAJo4kuQCdgVRijWevagOSOfpOeODKRtovGh/HyUDluF6sUSxUnT/X3Kszu6nkURBPfm57ng/sOIMfBfUF+fpq807knnd5zHBcH45V4vDJsxePWFxRDmUMDlzr8Mk9eb/wmFC3/6ND0kUOvl6Ohzb1jTOwB9K9hXIy2YeKigeDCI9t/pQLGxRuY2Gpw9fr7c3Mr9Tq1vIGJcUMTOqM7jczKOvb7DOQvEJ22ZLbh1ibA0de/StjRTtsI7RDc6a0RD/233t/a2l/r1/V+9CEiB6aOvjP9tW/OHu4KsSzfki0f/cn0n3xrZrozzDR8pdlSafaJ2WJxlnwhVd1TbW2FIrWEqEOjk/unKjPdBqfyHr3SjbnZrMGrn1j1p+csa+7pOuDB/wPhgFq/AAAAeJxjYGRgYADim9v25cbz23xl4GZhAIGbm1v2IOj/P1kYWEAqORiYQKIAZkMMDgAAeJxjYGRgYGEAARYDMMnAwMiACtQABmYAZQAAAHicY2BgYGAhFhuQoJZCDABAmADFAAAAAAByAP4BMgFwAX4BrAH8Ah4C5AM0A2QDwgROBGIEegSsBPYFJAVqBZoFyAYmBngGvAc2B/AIOAiICLQI+Al+CawKZAqWCvQLJAuAAAB4nGNgZGBgUGNoZmBlAAEmIOYCQgaG/2A+AwAZigHFAHicfZDNasJAFIVP/Cs1UAqlXbkYKHRTTPwBF9K1Qpcu3Mc40UiSCZNR8A36IH2CPkSXfZA+RY/p3ejCCZn57jn3DJcBcI9veDgtD3f1floN3LD65ybpUbhFfhZuw8dQuEP9TbiLV7wL+3jAnjd4rVsqPXwIN9j/Kdyk/iXcIv8It/GEX+EOeh6Eu1h6PWEfL55Nx5NBP41N0U9M4RZ6s8+iC/G8WmpbpaZQw2Bwbsx1oW3k9Fqtjqo6bEbOJSqxJlczujrLjCqt2enYBVvnymkYJqIHscmRYowJBuiTYhgUpKQ+HRbQ2PAtMkSwVzuveUveYlHROdWK7x+w81pizkRRpyJWGmumVjhyr3DgRCOqjt2Kv2UmJ80kqzltRlYoa29HJaYeYFunSkwR8ksu+oN6ivwPWB1p1nicbU/JdsIwDMyAk1BSWuhC972lp3yUcRTww1jBC338fU3bA4fOaTTSSKOsl/1imP2PGXroQyBHgRIDHGGICscY4QSnGGOCM5zjApeY4grXuMEt7nCPBzziCc94wSve8I4PzPCZjWTT1IFrvbDsaPJXbaJ00gZtqZ+USjrHX7XTi2XIf7iYkzH53LBaFUpaRaZUhqSNXa4MexKKu12pONrgdkVDhgKJhi0JanQQ2rbc011/RTuRbK0w2q7EOgUQHbsw2ETyQbMtHbWO/HLqaM1bqlvH64Ns1YE8TnMhLag5xdRWmvJPED4FLDxJp5YDTyEZF16kVlf62O3PFbEzLJs8enK+2mpKr9K+IfY8y74BsIlscw==\\\") format('woff');\\n}\\n\\n.i360-app .i360-icon::before {\\n font-family: i360-icon-font, monospace !important;\\n font-size: 22px;\\n line-height: 1;\\n font-style: normal;\\n font-weight: normal;\\n font-variant: normal;\\n text-decoration: inherit;\\n text-rendering: optimizeLegibility;\\n text-transform: none;\\n -moz-osx-font-smoothing: grayscale;\\n -webkit-font-smoothing: antialiased;\\n}\\n\\n.i360-app .i360-icon-add-to-ignore::before {\\n content: \\\"\\\\f101\\\";\\n}\\n\\n.i360-app .i360-icon-add-to-quarantine::before {\\n content: \\\"\\\\f102\\\";\\n}\\n\\n.i360-app .i360-icon-add::before {\\n content: \\\"\\\\f103\\\";\\n}\\n\\n.i360-app .i360-icon-arrow-right::before {\\n content: \\\"\\\\f104\\\";\\n}\\n\\n.i360-app .i360-icon-arrow::before {\\n content: \\\"\\\\f105\\\";\\n}\\n\\n.i360-app .i360-icon-bell::before {\\n content: \\\"\\\\f106\\\";\\n}\\n\\n.i360-app .i360-icon-block::before {\\n content: \\\"\\\\f107\\\";\\n}\\n\\n.i360-app .i360-icon-cancel::before {\\n content: \\\"\\\\f108\\\";\\n}\\n\\n.i360-app .i360-icon-cleanup::before {\\n content: \\\"\\\\f109\\\";\\n}\\n\\n.i360-app .i360-icon-close::before {\\n content: \\\"\\\\f10a\\\";\\n}\\n\\n.i360-app .i360-icon-copy::before {\\n content: \\\"\\\\f10b\\\";\\n}\\n\\n.i360-app .i360-icon-country::before {\\n content: \\\"\\\\f10c\\\";\\n}\\n\\n.i360-app .i360-icon-delete::before {\\n content: \\\"\\\\f10d\\\";\\n}\\n\\n.i360-app .i360-icon-done::before {\\n content: \\\"\\\\f10e\\\";\\n}\\n\\n.i360-app .i360-icon-edit::before {\\n content: \\\"\\\\f10f\\\";\\n}\\n\\n.i360-app .i360-icon-info::before {\\n content: \\\"\\\\f110\\\";\\n}\\n\\n.i360-app .i360-icon-ip::before {\\n content: \\\"\\\\f111\\\";\\n}\\n\\n.i360-app .i360-icon-key::before {\\n content: \\\"\\\\f112\\\";\\n}\\n\\n.i360-app .i360-icon-leaf::before {\\n content: \\\"\\\\f113\\\";\\n}\\n\\n.i360-app .i360-icon-link::before {\\n content: \\\"\\\\f114\\\";\\n}\\n\\n.i360-app .i360-icon-more::before {\\n content: \\\"\\\\f115\\\";\\n}\\n\\n.i360-app .i360-icon-port::before {\\n content: \\\"\\\\f116\\\";\\n}\\n\\n.i360-app .i360-icon-question::before {\\n content: \\\"\\\\f117\\\";\\n}\\n\\n.i360-app .i360-icon-refresh::before {\\n content: \\\"\\\\f118\\\";\\n}\\n\\n.i360-app .i360-icon-remove-from-quarantine::before {\\n content: \\\"\\\\f119\\\";\\n}\\n\\n.i360-app .i360-icon-remove-from::before {\\n content: \\\"\\\\f11a\\\";\\n}\\n\\n.i360-app .i360-icon-restore-original::before {\\n content: \\\"\\\\f11b\\\";\\n}\\n\\n.i360-app .i360-icon-restore::before {\\n content: \\\"\\\\f11c\\\";\\n}\\n\\n.i360-app .i360-icon-scan::before {\\n content: \\\"\\\\f11d\\\";\\n}\\n\\n.i360-app .i360-icon-search::before {\\n content: \\\"\\\\f11e\\\";\\n}\\n\\n.i360-app .i360-icon-settings::before {\\n content: \\\"\\\\f11f\\\";\\n}\\n\\n.i360-app .i360-icon-stop::before {\\n content: \\\"\\\\f120\\\";\\n}\\n\\n.i360-app .i360-icon-support::before {\\n content: \\\"\\\\f121\\\";\\n}\\n\\n.i360-app .i360-icon-upload::before {\\n content: \\\"\\\\f122\\\";\\n}\\n\\n.i360-app .i360-icon-users::before {\\n content: \\\"\\\\f123\\\";\\n}\\n\\n.i360-app .i360-icon-view-report::before {\\n content: \\\"\\\\f124\\\";\\n}\\n\\n.i360-app .i360-icon-view::before {\\n content: \\\"\\\\f125\\\";\\n}\\n\\n\",\"@import \\\"../common/variables\\\";\\n@import \\\"../common/rtl\\\";\\n\\n\\n#doctitle h1 img {\\n top: 0 !important;\\n}\\n.error_block {\\n color: red;\\n}\\n\\n#doctitle{\\n display: none;\\n}\\n\\n.dropdown .dropdown-toggle {\\n background-color: #fafafa;\\n border: solid 1px #cecece;\\n border-radius: 2px;\\n outline: none;\\n color: #000;\\n font-size: 13px;\\n @include rtl-margin-right(3px);\\n height: 32px;\\n line-height: 1;\\n transition: all 0.4s;\\n font-family: 'Open Sans', sans-serif;\\n &::after {\\n font-size: 14px;\\n vertical-align: 0.2em;\\n }\\n}\\n\\n.dropdown .dropdown-toggle:hover {\\n background-color: #e7e7e7;\\n}\\n\\n.search_input, .search_block input {\\n border-color: #d8d8d8 !important;\\n height: 32px !important;\\n}\\n\\n.b_dropdown-menu {\\n background-color: #ffffff;\\n box-shadow: 0 2px 14px 0 rgba(0, 0, 0, 0.24), 0 0 2px 0 rgba(0, 0, 0, 0.12);\\n border-width: 0px;\\n border-radius: 0;\\n padding: 0;\\n}\\n\\n.b_dropdown-menu > li > a {\\n height: 35px;\\n @include rtl-cmd-left(text-align);\\n @include rtl-padding-left(40px);\\n font-size: 13px;\\n color: #4d4d4e;\\n line-height: 30px;\\n font-family: 'Open Sans', sans-serif;\\n}\\n\\n.b_dropdown-menu > li > a:focus, .b_dropdown-menu > li > a:hover,\\n.b_dropdown-menu > li.active > a, .b_dropdown-menu > li.active > a:focus, .b_dropdown-menu > li.active > a:hover {\\n color: #4d4d4e;\\n background-color: rgba(55, 171, 99, 0.11);\\n}\\n\\n.btn-filter {\\n height: 27px !important;\\n border-radius: 2px;\\n background-color: #e2f7e9;\\n border: solid 1px #cecece;\\n color: #000 !important;\\n font-size: 13px;\\n line-height: 32px;\\n transition: all 0.4s;\\n min-width: 120px;\\n font-family: 'Open Sans', sans-serif;\\n padding: 0 10px;\\n position: relative;\\n @include rtl-margin-right(2px);\\n\\n &:hover {\\n background-color: $primary-bg;\\n border: solid 1px #cecece;\\n color: #000 !important;\\n }\\n}\\n\\n.dropdown .selected {\\n background-color: rgba(55, 171, 99, 0.11);\\n &.disabled {\\n cursor: not-allowed;\\n }\\n &::before {\\n @extend .material-icons;\\n content: 'check';\\n opacity: 1;\\n color: #787878;\\n position: absolute;\\n @include rtl-left(8px);\\n padding-top: 2px;\\n }\\n}\\n\\n/*TODO: get rid of !important*/\\nbody .form-control {\\n border-radius: 2px;\\n background-color: #fff;\\n box-shadow: none;\\n border: solid 1px #d8d8d8;\\n}\\n\\n// TODO: remove those styles completely after all text inputs use the same component\\n:not(.cl-field-input) > input:focus,\\n.form-control:focus {\\n box-shadow: inset 0 0 4px 0 $primary-color !important;\\n border-color: $primary-color !important;\\n background-color: #ffffff !important;\\n}\\n\\nselect.form-control {\\n font-weight: bold;\\n font-size: 12px;\\n color: #5e5e5e;\\n font-family: 'Open Sans', sans-serif;\\n outline: none;\\n box-shadow: none;\\n border-color: #d7d7d7;\\n border-radius: 2px;\\n}\\n\\n.form-control:focus {\\n border-color: #d7d7d7;\\n box-shadow: none;\\n}\\n\\ninput.form-control {\\n color: $header-color;\\n padding: 5px 7px;\\n box-shadow: none;\\n}\\n\\n.flexer {\\n list-style: none;\\n\\n display: -webkit-box;\\n display: -moz-box;\\n display: -ms-flexbox;\\n display: -webkit-flex;\\n display: flex;\\n flex-wrap: wrap;\\n\\n -webkit-flex-flow: row wrap;\\n justify-content: flex-start;\\n}\\n\\ntable.table {\\n background-color: #f8f8f8;\\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.17);\\n border-style: solid;\\n border-width: 1px;\\n border-image-source: linear-gradient(to bottom, #e8e5e5, #dcdcdc);\\n border-image-slice: 1;\\n border-spacing: 0;\\n border-collapse: collapse;\\n}\\n\\ntable.table tr {\\n background-color: #ffffff;\\n border: solid 1px #dcdcdc;\\n}\\n\\ntable.table tr, .attributions-container table.table td {\\n height: 50px;\\n}\\n\\n.table {\\n > tr > th, > tr > td {\\n font-size: 13px;\\n font-weight: normal;\\n font-style: normal;\\n font-stretch: normal;\\n padding: 15px 10px;\\n vertical-align: middle;\\n\\n &:first-child {\\n @include rtl-padding-left(37px);\\n }\\n }\\n\\n td {\\n color: $gray-fg;\\n font-family: 'Open Sans', sans-serif;\\n }\\n\\n th {\\n color: $gray-title;\\n background-color: #f8f8f8;\\n vertical-align: middle;\\n @include rtl-cmd-left('text-align');\\n }\\n}\\n\\n.b_btn {\\n position: relative;\\n height: 32px;\\n line-height: 1 !important;\\n padding: 0 15px;\\n}\\n\\n[hidden] {\\n display: none!important;\\n}\\n\\n.rotate90 {\\n -ms-transform: rotate(90deg); /* IE 9 */\\n -webkit-transform: rotate(90deg); /* Safari */\\n transform: rotate(90deg);\\n opacity: 1;\\n}\\n\\n.rotate180 {\\n -ms-transform: rotate(180deg); /* IE 9 */\\n -webkit-transform: rotate(180deg); /* Safari */\\n transform: rotate(180deg);\\n opacity: 1;\\n}\\n\\n.no_list {\\n color: #299aed;\\n border: solid 2px #fff\\n}\\n\\n.white_list {\\n background-color: #ffffff;\\n box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.27);\\n color: #4d4d4e;\\n border: solid 2px #fff;\\n}\\n\\n.gray_list {\\n background-color: #9f9f9f;\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.46);\\n border: solid 2px #9e9e9e;\\n color: #fff;\\n}\\n\\n.black_list {\\n background-color: #000000;\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.46);\\n border: solid 2px #000000;\\n color: #fff;\\n}\\n.list-type-circle {\\n @include rtl-padding-left(22px);\\n line-height: 14px;\\n}\\n.list-type-circle:before {\\n content: '';\\n width: 14px;\\n height: 14px;\\n position: absolute;\\n @include rtl-margin-left(-22px);\\n border-radius: 100%;\\n}\\n.list-type-white:before {\\n background-color: #ffffff;\\n box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.27);\\n}\\n.list-type-black:before {\\n background-color: #000;\\n}\\n.list-type-gray:before {\\n background-color: #b5bbc1;\\n}\\n\\n.plus_ip {\\n color: #299aed;\\n}\\n\\n.time {\\n height: 18px;\\n font-size: 13px;\\n color: #404040;\\n @include rtl-cmd-left(float);\\n margin-top: 16px;\\n @include rtl-margin-left(10px);\\n}\\n\\n.country {\\n width: 20px;\\n height: 12px;\\n @include rtl-cmd-right(float);\\n margin-top: 18px;\\n @include rtl-margin-left(26px);\\n}\\n\\n.name {\\n font-size: 13px;\\n font-weight: 600;\\n color: #000000;\\n margin-top: 16px;\\n}\\n\\n.retries {\\n font-size: 13px;\\n color: #404040;\\n margin-top: 16px;\\n @include rtl-cmd-left(float);\\n @include rtl-margin-left(10px);\\n\\n}\\n\\n.incident {\\n min-height: 50px;\\n /* transition: all 0.s; */\\n}\\n\\ntable.table tbody tr {\\n transition: background-color 0.3s;\\n}\\n\\n.collapsed:hover, table.table tbody tr:hover {\\n background-color: $primary-bg;\\n}\\n\\n.clr {\\n clear: both;\\n}\\n\\n.additions {\\n margin-top: 8px;\\n}\\n\\n.description {\\n font-size: 13px;\\n line-height: 1.5;\\n color: #565656;\\n font-family: 'Open Sans', sans-serif;\\n}\\n\\n.additions > div {\\n @include rtl-cmd-left(float);\\n width: 150px;\\n @include rtl-cmd-left(text-align);\\n margin-bottom: 3px;\\n}\\n\\n.addition_title {\\n font-size: 11px;\\n color: #828282;\\n}\\n\\n.addition_value {\\n opacity: 0.9;\\n font-size: 12px;\\n color: #1e1e1e;\\n}\\n\\n.main_info {\\n min-height: 50px;\\n}\\n\\n.table tr.selected td {\\n background-color: $primary-bg;\\n}\\n\\n.table > tbody > tr > td, .table > tfoot > tr > td, .table > thead > tr > td {\\n vertical-align: middle;\\n}\\n\\napp h1, client-app h1, h1.i360-title {\\n font-family: 'Open Sans', sans-serif;\\n font-size: 22px;\\n font-weight: normal;\\n font-style: normal;\\n font-stretch: normal;\\n color: $header-color;\\n}\\n\\n.flexbox {\\n display: flex;\\n}\\n\\n.flex_item {\\n padding: 10px;\\n /* flex: 1 100%; */\\n flex-grow: 1;\\n flex-basis: 100%;\\n}\\n\\n.time_column {\\n flex-grow: 1;\\n flex-basis: 100%;\\n}\\n\\n.abuser_column {\\n flex-grow: 1;\\n flex-basis: 100%;\\n}\\n\\n.retries_column {\\n flex-grow: 1;\\n flex-basis: 100%;\\n}\\n\\n.name_column {\\n flex-grow: 1;\\n flex-basis: 100%;\\n}\\n\\n.actions_column {\\n flex-grow: 1;\\n flex-basis: 100%;\\n}\\n\\n.no_result {\\n height: 88px;\\n line-height: 88px;\\n font-family: 'Open Sans', sans-serif;\\n font-size: 16px;\\n color: #9e9e9e;\\n text-align: center;\\n}\\n\\n@media all and (max-width: 1087px) {\\n .incident .row > div {\\n padding: 5px;\\n }\\n}\\n\\n@media all and (max-width: 1240px) {\\n .retry_span {\\n display: none;\\n }\\n}\\n\\n/**\\nto override\\nimg {\\n vertical-align: middle;\\n}\\nfrom scaffolding.less:81 for task WEB-402\\n*/\\nimg {\\n vertical-align: inherit !important;\\n}\\n\\n.modal-backdrop {\\n background: #4c4c4c;\\n}\\n.modal-backdrop.in {\\n opacity: 0.55;\\n}\\n\\n%underline-class {\\n border-width: 0 0 2px 0;\\n &:focus {\\n border-color: $primary-color;\\n }\\n border-style: solid;\\n border-color: #ccc;\\n width: 100%;\\n padding: 0;\\n\\n font-size: 13px;\\n height: 42px;\\n color: #161616;\\n\\n box-shadow: none !important;\\n outline: none;\\n background-color: transparent;\\n}\\n\\ntextarea.underline-input,\\ninput.underline-input[type=\\\"text\\\"],\\ninput.underline-input[type=\\\"password\\\"] {\\n @extend %underline-class;\\n}\\n\\ntextarea.underline-input {\\n resize: none;\\n height: 87px;\\n min-height: 57px;\\n box-sizing: content-box; // for autosize\\n transition: none; // for autosize, plesk\\n}\\n\\ninput[type=\\\"text\\\"] {\\n background-color: #ffffff;\\n}\\n\\n.i360-dashboard-link {\\n text-decoration: underline;\\n color: inherit;\\n &:hover, &:active {\\n text-decoration: underline;\\n color: inherit!important;\\n }\\n}\\n\\n.i360-logo {\\n .mat-icon {\\n width: auto;\\n height: auto;\\n }\\n\\n width: 182px;\\n height: 47px;\\n position: relative;\\n margin: 0 14px;\\n display: block;\\n\\n &.imunifyav-logo {\\n width: 159px;\\n }\\n\\n &.imunifyavplus-logo {\\n width: 170px;\\n }\\n}\\n\",\"@import './variables';\\n@import './rtl';\\n@import './media';\\n\\n\\n// We need to be able to use this class with the @extend directive.\\n.material-icons {\\n font-family: 'Material Icons';\\n font-weight: normal;\\n font-style: normal;\\n font-size: 24px; /* Preferred icon size */\\n display: inline-block;\\n line-height: 1;\\n text-transform: none;\\n letter-spacing: normal;\\n word-wrap: normal;\\n white-space: nowrap;\\n\\n /* Support for all WebKit browsers. */\\n -webkit-font-smoothing: antialiased;\\n /* Support for Safari and Chrome. */\\n text-rendering: optimizeLegibility;\\n\\n /* Support for Firefox. */\\n -moz-osx-font-smoothing: grayscale;\\n\\n /* Support for IE. */\\n font-feature-settings: 'liga';\\n}\\n\\n.hoverable-button {\\n color: $gray-fg;\\n cursor: pointer;\\n opacity: 0.5;\\n transition: all 0.3s;\\n &:hover {\\n opacity: 1!important;\\n }\\n}\\n\\n.disabled-button {\\n cursor: default;\\n opacity: 0.3;\\n}\\n\\nbutton.flat-button {\\n background: transparent;\\n border: 0;\\n border-radius: 2px;\\n color: $primary-color;\\n font-size: 15px;\\n height: 36px;\\n margin: 0 8px;\\n min-width: 88px;\\n outline: none;\\n padding: 0 8px;\\n\\n &:focus,\\n &:hover {\\n background-color: $focused-bg;\\n }\\n\\n &:active {\\n background-color: $pressed-bg;\\n }\\n\\n &[disabled] {\\n color: $disabled-fg;\\n }\\n}\\n\\n\\n.incident .actions-wrapper {\\n margin-top: 16px;\\n}\\n\\n.flex-nowrap{\\n flex-wrap: nowrap;\\n}\\n\\n\\ntextarea[autosize] {\\n resize: none;\\n color: #161616;\\n}\\n\\n.position-relative {\\n position: relative;\\n}\\n\\n.position-absolute {\\n position: absolute;\\n}\\n\\n.display-block {\\n display: block;\\n}\\n\\n.display-flex-column {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.display-flex-row {\\n display: flex;\\n flex-direction: row;\\n}\\n\\n.flex-auto {\\n flex: auto;\\n}\\n\\n.align-center {\\n align-items: center;\\n}\\n\\n.align-self-center {\\n align-self: center;\\n}\\n\\n.text-align-center {\\n text-align: center !important;\\n}\\n\\n.as_link{\\n cursor: pointer;\\n}\\n\\n.dropdown_list {\\n position: relative;\\n\\n ul {\\n position: absolute;\\n list-style: none;\\n width: fit-content;\\n white-space: nowrap;\\n background-color: #ffffff;\\n box-shadow: 0 2px 14px 0 #c2c2c2, 0 0 2px 0 #e0e0e0;\\n border: solid 1px #ffffff;\\n padding: 0;\\n top: 35px;\\n @include rtl-right(0);\\n z-index: 99;\\n\\n li {\\n font-family: 'Open Sans', sans-serif;\\n font-size: 13px;\\n height: 35px;\\n @include rtl-cmd-left(text-align);\\n line-height: 35px;\\n color: #4d4d4e;\\n cursor: pointer;\\n padding: 0 40px;\\n\\n &:hover {\\n background-color: $primary-hover-bg;\\n }\\n\\n &.selected, &.active {\\n background-color: rgba(55, 171, 99, 0.11);\\n\\n &::before {\\n @extend .material-icons;\\n content: 'check';\\n opacity: 1;\\n color: #787878;\\n position: absolute;\\n @include rtl-left(8px);\\n padding-top: 4px;\\n }\\n }\\n }\\n }\\n}\\n\\nactions div.dropdown_list ul li {\\n padding: 0 20px;\\n}\\n\\n.dropdown {\\n position: relative;\\n\\n .dropdown-toggle {\\n white-space: nowrap;\\n }\\n .dropdown-menu {\\n position: absolute;\\n left: 0;\\n z-index: 1000;\\n display: none;\\n float: left;\\n min-width: 12rem;\\n margin: 0.125rem 0 0;\\n list-style: none;\\n top: 100%;\\n @include rtl-left(0);\\n background-color: #ffffff;\\n box-shadow: 0 2px 14px 0 #c2c2c2, 0 0 2px 0 #e0e0e0;\\n border-width: 0;\\n border-radius: 0;\\n padding: 0;\\n\\n &.show {\\n display: block;\\n }\\n\\n > li {\\n &:hover {\\n cursor: pointer;\\n }\\n > a {\\n margin: 0;\\n @include rtl-padding(3px, 20px, 5px, 40px);\\n height: 35px;\\n @include rtl-cmd-left(text-align);\\n font-size: 13px;\\n color: #4d4d4e;\\n line-height: 30px;\\n box-sizing: border-box;\\n display: block;\\n\\n &:hover, &:active {\\n background-color: $primary-hover-bg;\\n color: inherit;\\n }\\n }\\n }\\n }\\n\\n &.selector {\\n width: 100%;\\n\\n button {\\n @include rtl-cmd-left(text-align);\\n @include rtl-padding-left(14px);\\n color: $gray-fg;\\n\\n .dropup {\\n @include rtl-cmd-right(float);\\n\\n .caret {\\n &.up {\\n margin-bottom: 8px;\\n }\\n\\n &.down {\\n position: absolute;\\n border-top: 4px dashed;\\n border-bottom: 0;\\n bottom: 0;\\n @include rtl-left(0);\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n.upgrade-button {\\n @include screen-narrow {\\n margin: 11px 13px;\\n }\\n @include screen-middle {\\n margin: 20px 8px;\\n }\\n @include screen-wide {\\n margin: 20px 20px;\\n }\\n}\\n\\n.typeahead {\\n .dropdown-menu {\\n display: table;\\n\\n li > a {\\n padding: 7px 0;\\n line-height: 20px;\\n }\\n\\n .active > a {\\n background-color: $primary-hover-bg;\\n }\\n }\\n}\\n\\n.table {\\n >tbody, >thead {\\n >tr {\\n >td, >th {\\n vertical-align: middle;\\n\\n &.i360-vertical-align-top {\\n vertical-align: top;\\n }\\n }\\n }\\n }\\n}\\n\\n.btn-link {\\n padding: 0;\\n color: $primary-color;\\n\\n &:hover, &:focus, &:active {\\n color: #257142;\\n outline: none;\\n text-decoration: none;\\n }\\n}\\n\\n.modal-backdrop {\\n &.in {\\n opacity: 0.4;\\n }\\n}\\n\\n.form-control {\\n border-radius: 2px;\\n background-color: #ffffff;\\n border: solid 1px #d8d8d8;\\n width: 100%;\\n &:focus-visible {\\n outline: none;\\n }\\n}\\n\\n.flexer {\\n flex-direction: row;\\n &.justify-beetween {\\n justify-content: space-between;\\n }\\n}\\n\\n::-webkit-scrollbar {\\n width: 13px;\\n}\\n::-webkit-scrollbar-thumb {\\n border-width: 1px;\\n background-color: #53b076;\\n}\\n::-webkit-scrollbar-track {\\n background-color: #e1f0e7;\\n}\\n::-webkit-scrollbar-track:hover {\\n box-shadow: 0 6px 6px 0 rgba(0, 0, 0, 0.13), 0 0 6px 0 rgba(0, 0, 0, 0.12);\\n}\\n\\n@mixin grid($percent) {\\n flex: 0 0 $percent;\\n max-width: $percent;\\n position: relative;\\n width: 100%;\\n padding-right: 15px;\\n padding-left: 15px;\\n}\\n\\n.i360-settings-title-column {\\n display: flex;\\n flex-direction: column;\\n position: relative;\\n max-width: 25%;\\n min-width: 300px;\\n flex-grow: 1;\\n flex-shrink: 0;\\n padding-right: 15px;\\n padding-left: 15px;\\n}\\n\\n.i360-settings-value-column {\\n display: flex;\\n flex-direction: row;\\n flex: auto;\\n position: relative;\\n padding-right: 15px;\\n padding-left: 15px;\\n}\\n\",\"$middle: 767px;\\n$wide: 1500px;\\n\\n@mixin screen-narrow {\\n @media (max-width: $middle) {@content};\\n}\\n\\n@mixin screen-middle {\\n @media (min-width: $middle + 1px) and (max-width: $wide) {@content};\\n}\\n\\n@mixin screen-wide {\\n @media (min-width: $wide + 1px) {@content};\\n}\\n\\n@mixin screen-middle-wide {\\n @media (min-width: $middle + 1px) {@content};\\n}\\n\",\"@use '@angular/material' as mat;\\n@use '@angular/cdk' as cdk;\\n@import 'app/styles/common/rtl';\\n\\n$i360-slide-toggle-thumb-size: 18px;\\n$i360-slide-toggle-thumb-offset: 2px;\\n$i360-slide-toggle-height: 24px;\\n$i360-slide-toggle-ripple-radius: 18px;\\n$i360-slide-toggle-bar-width: 46px;\\n$i360-slide-toggle-bar-height: 22px;\\n$i360-slide-toggle-bar-track-width: $i360-slide-toggle-bar-width - $i360-slide-toggle-thumb-size;\\n\\n// ToDo: take ALL colors from theme\\n@mixin i360-slide-toggle-theme($theme) {\\n .mat-slide-toggle {\\n $primary: map-get($theme, primary);\\n\\n &.mat-primary:not(.mat-checked) {\\n .mat-slide-toggle-bar {\\n &::after {\\n color: #8a9298;\\n }\\n\\n background-color: #e3e3e3;\\n }\\n\\n .mat-slide-toggle-thumb {\\n background-color: #fff;\\n }\\n }\\n\\n &.mat-primary.mat-checked:not(.mat-disabled) {\\n .mat-slide-toggle-bar {\\n &::before {\\n color: mat.get-color-from-palette($primary);\\n }\\n\\n background-color: #c8f5e4;\\n }\\n\\n .mat-slide-toggle-thumb {\\n background-color: mat.get-color-from-palette($primary);\\n }\\n }\\n }\\n}\\n\\nmat-slide-toggle {\\n .mat-slide-toggle-thumb-container {\\n $thumb-bar-vertical-padding: ($i360-slide-toggle-thumb-size - $i360-slide-toggle-bar-height) / 2;\\n\\n width: $i360-slide-toggle-thumb-size;\\n height: $i360-slide-toggle-thumb-size;\\n top: -$thumb-bar-vertical-padding;\\n transform: translate3d($i360-slide-toggle-thumb-offset, 0, 0);\\n }\\n\\n &.mat-slide-toggle {\\n &.mat-checked {\\n .mat-slide-toggle-thumb-container {\\n $horizontal-offset: $i360-slide-toggle-bar-track-width - $i360-slide-toggle-thumb-offset;\\n\\n transform: translate3d($horizontal-offset, 0, 0);\\n\\n @include rtl {\\n transform: translate3d(-$horizontal-offset, 0, 0);\\n }\\n }\\n }\\n }\\n\\n .mat-slide-toggle-bar {\\n width: $i360-slide-toggle-bar-width;\\n height: $i360-slide-toggle-bar-height;\\n display: flex;\\n align-items: center;\\n border-radius: 12px;\\n }\\n\\n @mixin i360-slide-toggle-bar-state() {\\n opacity: 0.62;\\n font-size: 10px;\\n font-weight: 600;\\n letter-spacing: -0.1px;\\n }\\n $i360-slide-toggle-bar-state-offset: $i360-slide-toggle-thumb-offset + $i360-slide-toggle-thumb-size + 4px;\\n\\n &.mat-slide-toggle.mat-checked .mat-slide-toggle-bar {\\n &::before {\\n @include i360-slide-toggle-bar-state;\\n\\n content: 'on';\\n position: absolute;\\n\\n @include rtl-right($i360-slide-toggle-bar-state-offset);\\n }\\n }\\n\\n &.mat-slide-toggle:not(.mat-checked) .mat-slide-toggle-bar {\\n &::after {\\n @include i360-slide-toggle-bar-state;\\n\\n content: 'off';\\n position: absolute;\\n\\n @include rtl-left($i360-slide-toggle-bar-state-offset);\\n }\\n }\\n\\n .mat-slide-toggle-thumb {\\n height: $i360-slide-toggle-thumb-size;\\n width: $i360-slide-toggle-thumb-size;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n }\\n\\n .mat-slide-toggle-input {\\n @include rtl-left($i360-slide-toggle-thumb-size / 2);\\n }\\n\\n @include cdk.high-contrast() {\\n .mat-slide-toggle-bar {\\n .mat-slide-toggle.cdk-keyboard-focused & {\\n outline-offset: ($i360-slide-toggle-height - $i360-slide-toggle-bar-height) / 2;\\n }\\n }\\n }\\n\\n .mat-ripple-element.mat-slide-toggle-persistent-ripple {\\n transform: none;\\n }\\n}\\n\",\"// ToDo: take ALL colors from theme\\n@mixin i360-checkbox-theme($theme) {\\n .mat-checkbox {\\n .mat-checkbox-frame {\\n border-color: #dee1ec!important;\\n }\\n }\\n}\\n\\nmat-checkbox {\\n .mat-checkbox-frame {\\n border-width: 1px;\\n }\\n\\n .mat-ripple-element.mat-checkbox-persistent-ripple {\\n transform: none;\\n }\\n}\\n\",\"@use '@angular/material' as mat;\\n\\n\\n$i360-radio-size: 16px;\\n$i360-radio-ripple-radius: 16px;\\n\\n// ToDo: take ALL colors from theme\\n@mixin i360-radio-button-theme($theme) {\\n .mat-radio-button {\\n $primary: map-get($theme, primary);\\n\\n .mat-radio-outer-circle {\\n border-color: mat.get-color-from-palette($primary);\\n }\\n }\\n}\\n\\nmat-radio-button {\\n .mat-radio-inner-circle,\\n .mat-radio-outer-circle,\\n .mat-radio-container {\\n height: $i360-radio-size;\\n width: $i360-radio-size;\\n }\\n\\n .mat-radio-outer-circle {\\n border-width: 1px;\\n }\\n\\n &.mat-radio-checked .mat-radio-inner-circle {\\n transform: scale(0.375);\\n }\\n\\n .mat-ripple-element.mat-radio-persistent-ripple {\\n transform: none;\\n }\\n}\\n\",\"// This contains all of the styles for the badge\\n// rather than just the color/theme because of\\n// no style sheet support for directives.\\n@use 'sass:color';\\n@use 'sass:map';\\n@use 'sass:meta';\\n@use 'sass:math';\\n@use '@angular/cdk';\\n\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n$font-size: 12px;\\n$font-weight: 600;\\n$default-size: 22px !default;\\n$small-size: $default-size - 6;\\n$large-size: $default-size + 6;\\n$_badge-structure-emitted: false !default;\\n\\n// Mixin for building offset given different sizes\\n@mixin _badge-size($size) {\\n // This mixin isn't used in the context of a theme so we can disable the ampersand check.\\n // stylelint-disable material/no-ampersand-beyond-selector-start\\n .mat-badge-content {\\n width: $size;\\n height: $size;\\n line-height: $size;\\n }\\n\\n &.mat-badge-above {\\n .mat-badge-content {\\n top: math.div(-$size, 2);\\n }\\n }\\n\\n &.mat-badge-below {\\n .mat-badge-content {\\n bottom: math.div(-$size, 2);\\n }\\n }\\n\\n &.mat-badge-before {\\n .mat-badge-content {\\n left: -$size;\\n }\\n }\\n\\n [dir='rtl'] &.mat-badge-before {\\n .mat-badge-content {\\n left: auto;\\n right: -$size;\\n }\\n }\\n\\n &.mat-badge-after {\\n .mat-badge-content {\\n right: -$size;\\n }\\n }\\n\\n [dir='rtl'] &.mat-badge-after {\\n .mat-badge-content {\\n right: auto;\\n left: -$size;\\n }\\n }\\n\\n &.mat-badge-overlap {\\n &.mat-badge-before {\\n .mat-badge-content {\\n left: math.div(-$size, 2);\\n }\\n }\\n\\n [dir='rtl'] &.mat-badge-before {\\n .mat-badge-content {\\n left: auto;\\n right: math.div(-$size, 2);\\n }\\n }\\n\\n &.mat-badge-after {\\n .mat-badge-content {\\n right: math.div(-$size, 2);\\n }\\n }\\n\\n [dir='rtl'] &.mat-badge-after {\\n .mat-badge-content {\\n right: auto;\\n left: math.div(-$size, 2);\\n }\\n }\\n }\\n // stylelint-enable\\n}\\n\\n// Structural styles for the badge. They have to be included as a part of the theme,\\n// because the badge is a directive and we have no other way of attaching styles to it.\\n@mixin _badge-structure {\\n .mat-badge {\\n position: relative;\\n }\\n\\n // The badge should make sure its host is overflow visible so that the badge content\\n // can be rendered outside of the element. Some components such as <mat-icon> explicitly\\n // style `overflow: hidden` so this requires extra specificity so that it does not\\n // depend on style load order.\\n .mat-badge.mat-badge {\\n overflow: visible;\\n }\\n\\n .mat-badge-hidden {\\n .mat-badge-content {\\n display: none;\\n }\\n }\\n\\n .mat-badge-content {\\n position: absolute;\\n text-align: center;\\n display: inline-block;\\n border-radius: 50%;\\n transition: transform 200ms ease-in-out;\\n transform: scale(0.6);\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n pointer-events: none;\\n }\\n\\n .ng-animate-disabled .mat-badge-content,\\n .mat-badge-content._mat-animation-noopable {\\n transition: none;\\n }\\n\\n // The active class is added after the element is added\\n // so it can animate scale to default\\n .mat-badge-content.mat-badge-active {\\n // Scale to `none` instead of `1` to avoid blurry text in some browsers.\\n transform: none;\\n }\\n\\n .mat-badge-small {\\n @include _badge-size($small-size);\\n }\\n\\n .mat-badge-medium {\\n @include _badge-size($default-size);\\n }\\n\\n .mat-badge-large {\\n @include _badge-size($large-size);\\n }\\n}\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $primary: map.get($config, primary);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n .mat-badge-content {\\n color: theming.get-color-from-palette($primary, default-contrast);\\n background: theming.get-color-from-palette($primary);\\n\\n @include cdk.high-contrast(active, off) {\\n outline: solid 1px;\\n border-radius: 0;\\n }\\n }\\n\\n .mat-badge-accent {\\n .mat-badge-content {\\n background: theming.get-color-from-palette($accent);\\n color: theming.get-color-from-palette($accent, default-contrast);\\n }\\n }\\n\\n .mat-badge-warn {\\n .mat-badge-content {\\n color: theming.get-color-from-palette($warn, default-contrast);\\n background: theming.get-color-from-palette($warn);\\n }\\n }\\n\\n .mat-badge-disabled {\\n .mat-badge-content {\\n $app-background: theming.get-color-from-palette($background, 'background');\\n $badge-color: theming.get-color-from-palette($foreground, disabled-button);\\n\\n // The disabled color usually has some kind of opacity, but because the badge is overlayed\\n // on top of something else, it won't look good if it's opaque. If it is a color *type*,\\n // we convert it into a solid color by taking the opacity from the rgba value and using\\n // the value to determine the percentage of the background to put into foreground when\\n // mixing the colors together.\\n @if (meta.type-of($badge-color) == color and meta.type-of($app-background) == color) {\\n $badge-opacity: opacity($badge-color);\\n background: color.mix($app-background, rgba($badge-color, 1), (1 - $badge-opacity) * 100%);\\n }\\n @else {\\n background: $badge-color;\\n }\\n\\n color: theming.get-color-from-palette($foreground, disabled-text);\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-badge-content {\\n font-weight: $font-weight;\\n font-size: $font-size;\\n font-family: typography-utils.font-family($config);\\n }\\n\\n .mat-badge-small .mat-badge-content {\\n // Set the font size to 75% of the original.\\n font-size: $font-size * 0.75;\\n }\\n\\n .mat-badge-large .mat-badge-content {\\n font-size: $font-size * 2;\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-badge') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n // Try to reduce the number of times that the structural styles are emitted.\\n @if not $_badge-structure-emitted {\\n @include _badge-structure;\\n\\n // Only flip the flag if the mixin is included at the top level. Otherwise the first\\n // inclusion might be inside of a theme class which will exclude the structural styles\\n // from all other themes.\\n @if not & {\\n $_badge-structure-emitted: true !global;\\n }\\n }\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use 'typography-utils';\\n@use '../theming/theming';\\n\\n/// Defines a typography level from the Material Design spec.\\n/// @param {String} $font-size The font-size for this level.\\n/// @param {String | Number} $line-height The line-height for this level.\\n/// @param {String | Number} $font-weight The font-weight for this level.\\n/// @param {String} $font-family The font-family for this level.\\n/// @param {String} $letter-spacing The letter-spacing for this level.\\n/// @returns {Map} A map representing the definition of this typographic level.\\n@function define-typography-level(\\n $font-size,\\n $line-height: $font-size,\\n $font-weight: 400,\\n $font-family: null,\\n $letter-spacing: normal) {\\n\\n @return (\\n font-size: $font-size,\\n line-height: $line-height,\\n font-weight: $font-weight,\\n font-family: $font-family,\\n letter-spacing: $letter-spacing\\n );\\n}\\n\\n/// Defines a collection of typography levels to configure typography for an application.\\n/// Any level not specified defaults to the values defined in the Material Design specification:\\n/// https://material.io/guidelines/style/typography.html.\\n///\\n/// Note that the Material Design specification does not describe explicit letter-spacing values.\\n/// The values here come from reverse engineering the Material Design examples.\\n/// @param {String} $font-family Default font-family for levels that don't specify font-family.\\n/// @param {Map} $display-4 Configuration for the \\\"display-4\\\" typographic level.\\n/// @param {Map} $display-3 Configuration for the \\\"display-3\\\" typographic level.\\n/// @param {Map} $display-2 Configuration for the \\\"display-2\\\" typographic level.\\n/// @param {Map} $display-1 Configuration for the \\\"display-1\\\" typographic level.\\n/// @param {Map} $headline Configuration for the \\\"headline\\\" typographic level.\\n/// @param {Map} $title Configuration for the \\\"title\\\" typographic level.\\n/// @param {Map} $subheading-2 Configuration for the \\\"subheading-2\\\" typographic level.\\n/// @param {Map} $subheading-1 Configuration for the \\\"subheading-1\\\" typographic level.\\n/// @param {Map} $body-2 Configuration for the \\\"body-2\\\" typographic level.\\n/// @param {Map} $body-1 Configuration for the \\\"body-1\\\" typographic level.\\n/// @param {Map} $caption Configuration for the \\\"caption\\\" typographic level.\\n/// @param {Map} $button Configuration for the \\\"button\\\" typographic level.\\n/// @param {Map} $input Configuration for the \\\"input\\\" typographic level.\\n/// @returns {Map} A typography config for the application.\\n@function define-typography-config(\\n $font-family: 'Roboto, \\\"Helvetica Neue\\\", sans-serif',\\n $display-4: define-typography-level(112px, 112px, 300, $letter-spacing: -0.05em),\\n $display-3: define-typography-level(56px, 56px, 400, $letter-spacing: -0.02em),\\n $display-2: define-typography-level(45px, 48px, 400, $letter-spacing: -0.005em),\\n $display-1: define-typography-level(34px, 40px, 400),\\n $headline: define-typography-level(24px, 32px, 400),\\n $title: define-typography-level(20px, 32px, 500),\\n $subheading-2: define-typography-level(16px, 28px, 400),\\n $subheading-1: define-typography-level(15px, 24px, 400),\\n $body-2: define-typography-level(14px, 24px, 500),\\n $body-1: define-typography-level(14px, 20px, 400),\\n $caption: define-typography-level(12px, 20px, 400),\\n $button: define-typography-level(14px, 14px, 500),\\n // Line-height must be unit-less fraction of the font-size.\\n $input: define-typography-level(inherit, 1.125, 400)\\n) {\\n\\n // Declare an initial map with all of the levels.\\n $config: (\\n display-4: $display-4,\\n display-3: $display-3,\\n display-2: $display-2,\\n display-1: $display-1,\\n headline: $headline,\\n title: $title,\\n subheading-2: $subheading-2,\\n subheading-1: $subheading-1,\\n body-2: $body-2,\\n body-1: $body-1,\\n caption: $caption,\\n button: $button,\\n input: $input,\\n );\\n\\n // Loop through the levels and set the `font-family` of the ones that don't have one to the base.\\n // Note that Sass can't modify maps in place, which means that we need to merge and re-assign.\\n @each $key, $level in $config {\\n @if map.get($level, font-family) == null {\\n $new-level: map.merge($level, (font-family: $font-family));\\n $config: map.merge($config, ($key: $new-level));\\n }\\n }\\n\\n // Add the base font family to the config.\\n @return map.merge($config, (font-family: $font-family));\\n}\\n\\n// Whether a config is for the Material Design 2018 typography system.\\n@function private-typography-is-2018-config($config) {\\n @return map.get($config, headline-1) != null;\\n}\\n\\n// Whether a config is for the Material Design 2014 typography system.\\n@function private-typography-is-2014-config($config) {\\n @return map.get($config, headline) != null;\\n}\\n\\n// Given a config for either the 2014 or 2018 Material Design typography system,\\n// produces a normalized typography config for the 2014 Material Design typography system.\\n// 2014 - https://material.io/archive/guidelines/style/typography.html#typography-styles\\n// 2018 - https://material.io/design/typography/the-type-system.html#type-scale\\n//\\n// Components using this function should be migrated to normalize to the 2018 style config instead.\\n// New components should not use this function.\\n@function private-typography-to-2014-config($config) {\\n @if $config == null {\\n @return null;\\n }\\n @if not private-typography-is-2014-config($config) {\\n $args: (\\n display-4: map.get($config, headline-1),\\n display-3: map.get($config, headline-2),\\n display-2: map.get($config, headline-3),\\n display-1: map.get($config, headline-4),\\n headline: map.get($config, headline-5),\\n title: map.get($config, headline-6),\\n subheading-2: map.get($config, subtitle-1),\\n subheading-1: map.get($config, subtitle-2),\\n body-2: map.get($config, body-1),\\n body-1: map.get($config, body-2),\\n button: map.get($config, button),\\n caption: map.get($config, caption),\\n );\\n $non-null-args: ();\\n @each $key, $value in $args {\\n @if $value != null {\\n $non-null-args: map.merge($non-null-args, ($key: $value));\\n }\\n }\\n @return define-typography-config($non-null-args...);\\n }\\n @return $config;\\n}\\n\\n// Given a config for either the 2014 or 2018 Material Design typography system,\\n// produces a normalized typography config for the 2018 Material Design typography system.\\n// 2014 - https://material.io/archive/guidelines/style/typography.html#typography-styles\\n// 2018 - https://material.io/design/typography/the-type-system.html#type-scale\\n@function private-typography-to-2018-config($config) {\\n @if $config == null {\\n @return null;\\n }\\n @if not private-typography-is-2018-config($config) {\\n @return (\\n headline-1: map.get($config, display-4),\\n headline-2: map.get($config, display-3),\\n headline-3: map.get($config, display-2),\\n headline-4: map.get($config, display-1),\\n headline-5: map.get($config, headline),\\n headline-6: map.get($config, title),\\n subtitle-1: map.get($config, subheading-2),\\n\\n // These mappings are odd, but body-2 in the 2014 system actually looks closer to subtitle-2\\n // in the 2018 system, and subeading-1 in the 2014 system looks more like body-1 in the 2018\\n // system.\\n subtitle-2: map.get($config, body-2),\\n body-1: map.get($config, subheading-1),\\n\\n body-2: map.get($config, body-1),\\n button: map.get($config, button),\\n caption: map.get($config, caption),\\n overline: if(map.get($config, overline), map.get($config, overline),\\n define-typography-level(12px, 32px, 500)\\n )\\n );\\n }\\n @return $config;\\n}\\n\\n/// Emits baseline typographic styles based on a given config.\\n/// @param {Map} $config-or-theme A typography config for an entire theme.\\n/// @param {String} $selector Ancestor selector under which native elements, such as h1, will\\n/// be styled.\\n@mixin typography-hierarchy($config-or-theme, $selector: '.mat-typography') {\\n $config: private-typography-to-2014-config(theming.get-typography-config($config-or-theme));\\n\\n // Note that it seems redundant to prefix the class rules with the `$selector`, however it's\\n // necessary if we want to allow people to overwrite the tag selectors. This is due to\\n // selectors like `#{$selector} h1` being more specific than ones like `.mat-title`.\\n .mat-h1,\\n .mat-headline,\\n #{$selector} .mat-h1,\\n #{$selector} .mat-headline,\\n #{$selector} h1 {\\n @include typography-utils.typography-level($config, headline);\\n margin: 0 0 16px;\\n }\\n\\n .mat-h2,\\n .mat-title,\\n #{$selector} .mat-h2,\\n #{$selector} .mat-title,\\n #{$selector} h2 {\\n @include typography-utils.typography-level($config, title);\\n margin: 0 0 16px;\\n }\\n\\n .mat-h3,\\n .mat-subheading-2,\\n #{$selector} .mat-h3,\\n #{$selector} .mat-subheading-2,\\n #{$selector} h3 {\\n @include typography-utils.typography-level($config, subheading-2);\\n margin: 0 0 16px;\\n }\\n\\n .mat-h4,\\n .mat-subheading-1,\\n #{$selector} .mat-h4,\\n #{$selector} .mat-subheading-1,\\n #{$selector} h4 {\\n @include typography-utils.typography-level($config, subheading-1);\\n margin: 0 0 16px;\\n }\\n\\n // Note: the spec doesn't have anything that would correspond to h5 and h6, but we add these for\\n // consistency. The font sizes come from the Chrome user agent styles which have h5 at 0.83em\\n // and h6 at 0.67em.\\n .mat-h5,\\n #{$selector} .mat-h5,\\n #{$selector} h5 {\\n @include typography-utils.font-shorthand(\\n // calc is used here to support css variables\\n calc(#{typography-utils.font-size($config, body-1)} * 0.83),\\n typography-utils.font-weight($config, body-1),\\n typography-utils.line-height($config, body-1),\\n typography-utils.font-family($config, body-1)\\n );\\n\\n margin: 0 0 12px;\\n }\\n\\n .mat-h6,\\n #{$selector} .mat-h6,\\n #{$selector} h6 {\\n @include typography-utils.font-shorthand(\\n // calc is used here to support css variables\\n calc(#{typography-utils.font-size($config, body-1)} * 0.67),\\n typography-utils.font-weight($config, body-1),\\n typography-utils.line-height($config, body-1),\\n typography-utils.font-family($config, body-1)\\n );\\n\\n margin: 0 0 12px;\\n }\\n\\n .mat-body-strong,\\n .mat-body-2,\\n #{$selector} .mat-body-strong,\\n #{$selector} .mat-body-2 {\\n @include typography-utils.typography-level($config, body-2);\\n }\\n\\n .mat-body,\\n .mat-body-1,\\n #{$selector} .mat-body,\\n #{$selector} .mat-body-1,\\n #{$selector} {\\n @include typography-utils.typography-level($config, body-1);\\n\\n p {\\n margin: 0 0 12px;\\n }\\n }\\n\\n .mat-small,\\n .mat-caption,\\n #{$selector} .mat-small,\\n #{$selector} .mat-caption {\\n @include typography-utils.typography-level($config, caption);\\n }\\n\\n .mat-display-4,\\n #{$selector} .mat-display-4 {\\n @include typography-utils.typography-level($config, display-4);\\n margin: 0 0 56px;\\n }\\n\\n .mat-display-3,\\n #{$selector} .mat-display-3 {\\n @include typography-utils.typography-level($config, display-3);\\n margin: 0 0 64px;\\n }\\n\\n .mat-display-2,\\n #{$selector} .mat-display-2 {\\n @include typography-utils.typography-level($config, display-2);\\n margin: 0 0 64px;\\n }\\n\\n .mat-display-1,\\n #{$selector} .mat-display-1 {\\n @include typography-utils.typography-level($config, display-1);\\n margin: 0 0 64px;\\n }\\n}\\n\",\"@use 'sass:list';\\n@use 'sass:map';\\n@use 'sass:math';\\n@use 'sass:meta';\\n@use 'sass:string';\\n\\n\\n// Utility for fetching a nested value from a typography config.\\n@function _mat-get-type-value($config, $level, $name) {\\n @return map.get(map.get($config, $level), $name);\\n}\\n\\n/// Gets the font size for a level inside a typography config.\\n/// @param {Map} $config A typography config.\\n/// @param {Map} $level A typography level.\\n@function font-size($config, $level) {\\n @return _mat-get-type-value($config, $level, font-size);\\n}\\n\\n/// Gets the line height for a level inside a typography config.\\n/// @param {Map} $config A typography config.\\n/// @param {Map} $level A typography level.\\n@function line-height($config, $level) {\\n @return _mat-get-type-value($config, $level, line-height);\\n}\\n\\n/// Gets the font weight for a level inside a typography config.\\n/// @param {Map} $config A typography config.\\n/// @param {Map} $level A typography level.\\n@function font-weight($config, $level) {\\n @return _mat-get-type-value($config, $level, font-weight);\\n}\\n\\n/// Gets the letter spacing for a level inside a typography config.\\n/// @param {Map} $config A typography config.\\n/// @param {Map} $level A typography level.\\n@function letter-spacing($config, $level) {\\n @return _mat-get-type-value($config, $level, letter-spacing);\\n}\\n\\n/// Gets the font-family from a typography config and removes the quotes around it.\\n/// @param {Map} $config A typography config.\\n/// @param {Map} $level A typography level.\\n@function font-family($config, $level: null) {\\n $font-family: map.get($config, font-family);\\n\\n @if $level != null {\\n $font-family: _mat-get-type-value($config, $level, font-family);\\n }\\n\\n // Guard against unquoting non-string values, because it's deprecated.\\n @return if(meta.type-of($font-family) == string, string.unquote($font-family), $font-family);\\n}\\n\\n/// Outputs the shorthand `font` CSS property, based on a set of typography values. Falls back to\\n/// the individual properties if a value that isn't allowed in the shorthand is passed in.\\n/// @param {String} $font-size The font-size value.\\n/// @param {String | Number} $font-weight The font-weight value.\\n/// @param {String | Number} $line-height The line-height value.\\n/// @param {String} $font-family The font-family value.\\n/// @returns {String} The `font` shorthand value combining the given parts.\\n@mixin font-shorthand($font-size, $font-weight, $line-height, $font-family) {\\n // If any of the values are set to `inherit`, we can't use the shorthand\\n // so we fall back to passing in the individual properties.\\n @if ($font-size == inherit or\\n $font-weight == inherit or\\n $line-height == inherit or\\n $font-family == inherit or\\n $font-size == null or\\n $font-weight == null or\\n $line-height == null or\\n $font-family == null) {\\n\\n font-size: $font-size;\\n font-weight: $font-weight;\\n line-height: $line-height;\\n font-family: $font-family;\\n }\\n @else {\\n // Otherwise use the shorthand `font`, because it's the least amount of bytes.\\n font: $font-weight list.slash($font-size, $line-height) $font-family;\\n }\\n}\\n\\n/// Emits CSS styles for the given typography level.\\n/// @param {Map} $config A typography config.\\n/// @param {Map} $level A typography level.\\n@mixin typography-level($config, $level) {\\n $font-size: font-size($config, $level);\\n $font-weight: font-weight($config, $level);\\n $line-height: line-height($config, $level);\\n $font-family: font-family($config, $level);\\n\\n @include font-shorthand($font-size, $font-weight, $line-height, $font-family);\\n letter-spacing: letter-spacing($config, $level);\\n}\\n\\n/// Coerce a value to `em` if it is a unitless number, otherwise returns\\n/// the value provided.\\n@function private-coerce-unitless-to-em($value) {\\n @return if(math.is-unitless($value), 1em * $value, $value);\\n}\\n\",\"@use 'sass:map';\\n@use '../core/style/private';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n@use '../core/theming/theming';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n .mat-bottom-sheet-container {\\n @include private.private-theme-elevation(16, $config);\\n background: theming.get-color-from-palette($background, dialog);\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-bottom-sheet-container {\\n @include typography-utils.typography-level($config, body-1);\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-bottom-sheet') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use 'sass:meta';\\n@use '../core/theming/theming';\\n@use '../core/style/private';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n$_ripple-opacity: 0.1;\\n\\n// Applies a focus style to an mat-button element for each of the supported palettes.\\n@mixin _focus-overlay-color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n\\n &.mat-primary .mat-button-focus-overlay {\\n background-color: theming.get-color-from-palette($primary);\\n }\\n\\n &.mat-accent .mat-button-focus-overlay {\\n background-color: theming.get-color-from-palette($accent);\\n }\\n\\n &.mat-warn .mat-button-focus-overlay {\\n background-color: theming.get-color-from-palette($warn);\\n }\\n\\n &.mat-button-disabled .mat-button-focus-overlay {\\n background-color: transparent;\\n }\\n}\\n\\n// Applies the background color for a ripple. If the value provided is not a Sass color,\\n// we assume that we've been given a CSS variable. Since we can't perform alpha-blending\\n// on a CSS variable, we instead add the opacity directly to the ripple element.\\n@mixin _ripple-background($palette, $hue, $opacity) {\\n $background-color: theming.get-color-from-palette($palette, $hue, $opacity);\\n background-color: $background-color;\\n @if (meta.type-of($background-color) != color) {\\n opacity: $opacity;\\n }\\n}\\n\\n@mixin _ripple-color($theme, $hue, $opacity: $_ripple-opacity) {\\n $primary: map.get($theme, primary);\\n $accent: map.get($theme, accent);\\n $warn: map.get($theme, warn);\\n\\n &.mat-primary .mat-ripple-element {\\n @include _ripple-background($primary, $hue, $opacity);\\n }\\n\\n &.mat-accent .mat-ripple-element {\\n @include _ripple-background($accent, $hue, $opacity);\\n }\\n\\n &.mat-warn .mat-ripple-element {\\n @include _ripple-background($warn, $hue, $opacity);\\n }\\n}\\n\\n// Applies a property to an mat-button element for each of the supported palettes.\\n@mixin _theme-property($theme, $property, $hue) {\\n $primary: map.get($theme, primary);\\n $accent: map.get($theme, accent);\\n $warn: map.get($theme, warn);\\n $background: map.get($theme, background);\\n $foreground: map.get($theme, foreground);\\n\\n &.mat-primary {\\n #{$property}: theming.get-color-from-palette($primary, $hue);\\n }\\n &.mat-accent {\\n #{$property}: theming.get-color-from-palette($accent, $hue);\\n }\\n &.mat-warn {\\n #{$property}: theming.get-color-from-palette($warn, $hue);\\n }\\n\\n &.mat-primary, &.mat-accent, &.mat-warn, &.mat-button-disabled {\\n &.mat-button-disabled {\\n $palette: if($property == 'color', $foreground, $background);\\n #{$property}: theming.get-color-from-palette($palette, disabled-button);\\n }\\n }\\n}\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n .mat-button, .mat-icon-button, .mat-stroked-button {\\n // Buttons without a background color should inherit the font color. This is necessary to\\n // ensure that the button is readable on custom background colors. It's wrong to always assume\\n // that those buttons are always placed inside of containers with the default background\\n // color of the theme (e.g. themed toolbars).\\n color: inherit;\\n background: transparent;\\n\\n @include _theme-property($config, 'color', text);\\n @include _focus-overlay-color($config);\\n\\n // Setup the ripple color to be based on the text color. This ensures that the ripples\\n // are matching with the current theme palette and are in contrast to the background color\\n // (e.g in themed toolbars).\\n .mat-ripple-element {\\n opacity: $_ripple-opacity;\\n background-color: currentColor;\\n }\\n }\\n\\n .mat-button-focus-overlay {\\n background: map.get($foreground, base);\\n }\\n\\n // Note: this needs a bit extra specificity, because we're not guaranteed the inclusion\\n // order of the theme styles and the button reset may end up resetting this as well.\\n .mat-stroked-button:not(.mat-button-disabled) {\\n border-color: theming.get-color-from-palette($foreground, divider);\\n }\\n\\n .mat-flat-button, .mat-raised-button, .mat-fab, .mat-mini-fab {\\n // Default font and background color when not using any color palette.\\n color: theming.get-color-from-palette($foreground, text);\\n background-color: theming.get-color-from-palette($background, raised-button);\\n\\n @include _theme-property($config, 'color', default-contrast);\\n @include _theme-property($config, 'background-color', default);\\n @include _ripple-color($config, default-contrast);\\n }\\n\\n .mat-stroked-button, .mat-flat-button {\\n @include private.private-theme-overridable-elevation(0, $config);\\n }\\n\\n .mat-raised-button {\\n @include private.private-theme-overridable-elevation(2, $config);\\n\\n &:not(.mat-button-disabled):active {\\n @include private.private-theme-overridable-elevation(8, $config);\\n }\\n\\n &.mat-button-disabled {\\n @include private.private-theme-overridable-elevation(0, $config);\\n }\\n }\\n\\n .mat-fab, .mat-mini-fab {\\n @include private.private-theme-overridable-elevation(6, $config);\\n\\n &:not(.mat-button-disabled):active {\\n @include private.private-theme-overridable-elevation(12, $config);\\n }\\n\\n &.mat-button-disabled {\\n @include private.private-theme-overridable-elevation(0, $config);\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button,\\n .mat-flat-button, .mat-fab, .mat-mini-fab {\\n font: {\\n family: typography-utils.font-family($config, button);\\n size: typography-utils.font-size($config, button);\\n weight: typography-utils.font-weight($config, button);\\n }\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-button') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/style/private';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n@use '../core/density/private/compatibility';\\n@use './button-toggle-variables';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $foreground: map.get($config, foreground);\\n $background: map.get($config, background);\\n $divider-color: theming.get-color-from-palette($foreground, divider);\\n $theme-divider-color: map.get($foreground, divider);\\n\\n // By default the theme usually has an rgba color for the dividers, which can\\n // stack up with the background of a button toggle. This can cause the border\\n // of a selected toggle to look different from an deselected one. We use a solid\\n // color to ensure that the border always stays the same.\\n $divider-color: if(type-of($theme-divider-color) == color,\\n theming.private-rgba-to-hex($theme-divider-color, map.get($background, card)),\\n $theme-divider-color\\n );\\n\\n .mat-button-toggle-standalone,\\n .mat-button-toggle-group {\\n @include private.private-theme-overridable-elevation(2, $config);\\n }\\n\\n .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\\n .mat-button-toggle-group-appearance-standard {\\n &:not([class*='mat-elevation-z']) {\\n box-shadow: none;\\n }\\n }\\n\\n .mat-button-toggle {\\n color: theming.get-color-from-palette($foreground, hint-text);\\n\\n .mat-button-toggle-focus-overlay {\\n background-color: theming.get-color-from-palette($background, focused-button);\\n }\\n }\\n\\n .mat-button-toggle-appearance-standard {\\n color: theming.get-color-from-palette($foreground, text);\\n background: theming.get-color-from-palette($background, card);\\n\\n .mat-button-toggle-focus-overlay {\\n background-color: theming.get-color-from-palette($background, focused-button, 1);\\n }\\n }\\n\\n .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\\n border-left: solid 1px $divider-color;\\n }\\n\\n [dir='rtl'] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\\n border-left: none;\\n border-right: solid 1px $divider-color;\\n }\\n\\n .mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical {\\n .mat-button-toggle + .mat-button-toggle {\\n border-left: none;\\n border-right: none;\\n border-top: solid 1px $divider-color;\\n }\\n }\\n\\n .mat-button-toggle-checked {\\n background-color: theming.get-color-from-palette($background, selected-button);\\n color: theming.get-color-from-palette($foreground, secondary-text);\\n\\n &.mat-button-toggle-appearance-standard {\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n }\\n\\n .mat-button-toggle-disabled {\\n color: theming.get-color-from-palette($foreground, disabled-button);\\n background-color: theming.get-color-from-palette($background, disabled-button-toggle);\\n\\n &.mat-button-toggle-appearance-standard {\\n background: theming.get-color-from-palette($background, card);\\n }\\n\\n &.mat-button-toggle-checked {\\n background-color: theming.get-color-from-palette($background, selected-disabled-button);\\n }\\n }\\n\\n .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\\n .mat-button-toggle-group-appearance-standard {\\n border: solid 1px $divider-color;\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-button-toggle {\\n font-family: typography-utils.font-family($config);\\n }\\n}\\n\\n@mixin density($config-or-theme) {\\n $density-scale: theming.get-density-config($config-or-theme);\\n $standard-height: compatibility.private-density-prop-value(\\n button-toggle-variables.$standard-density-config, $density-scale, height);\\n\\n @include compatibility.private-density-legacy-compatibility() {\\n .mat-button-toggle-appearance-standard .mat-button-toggle-label-content {\\n line-height: $standard-height;\\n }\\n }\\n}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-button-toggle') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/theming/theming';\\n@use '../core/style/private';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n .mat-card {\\n @include private.private-theme-overridable-elevation(1, $config);\\n background: theming.get-color-from-palette($background, card);\\n color: theming.get-color-from-palette($foreground, text);\\n\\n // Needs extra specificity to be able to override the elevation selectors.\\n &.mat-card-flat {\\n @include private.private-theme-overridable-elevation(0, $config);\\n }\\n }\\n\\n .mat-card-subtitle {\\n color: theming.get-color-from-palette($foreground, secondary-text);\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-card {\\n font-family: typography-utils.font-family($config);\\n }\\n\\n .mat-card-title {\\n font: {\\n size: typography-utils.font-size($config, headline);\\n weight: typography-utils.font-weight($config, title);\\n }\\n }\\n\\n .mat-card-header .mat-card-title {\\n font-size: typography-utils.font-size($config, title);\\n }\\n\\n .mat-card-subtitle,\\n .mat-card-content {\\n font-size: typography-utils.font-size($config, body-1);\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-card') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $is-dark-theme: map.get($config, is-dark);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n\\n // The color of the checkbox's checkmark / mixedmark.\\n $checkbox-mark-color: theming.get-color-from-palette($background, background);\\n\\n // NOTE(traviskaufman): While the spec calls for translucent blacks/whites for disabled colors,\\n // this does not work well with elements layered on top of one another. To get around this we\\n // blend the colors together based on the base color and the theme background.\\n $white-30pct-opacity-on-dark: #686868;\\n $black-26pct-opacity-on-light: #b0b0b0;\\n $disabled-color: if($is-dark-theme, $white-30pct-opacity-on-dark, $black-26pct-opacity-on-light);\\n\\n .mat-checkbox-frame {\\n border-color: theming.get-color-from-palette($foreground, secondary-text);\\n }\\n\\n .mat-checkbox-checkmark {\\n fill: $checkbox-mark-color;\\n }\\n\\n .mat-checkbox-checkmark-path {\\n // !important is needed here because a stroke must be set as an\\n // attribute on the SVG in order for line animation to work properly.\\n stroke: $checkbox-mark-color !important;\\n }\\n\\n .mat-checkbox-mixedmark {\\n background-color: $checkbox-mark-color;\\n }\\n\\n .mat-checkbox-indeterminate, .mat-checkbox-checked {\\n &.mat-primary .mat-checkbox-background {\\n background-color: theming.get-color-from-palette($primary);\\n }\\n\\n &.mat-accent .mat-checkbox-background {\\n background-color: theming.get-color-from-palette($accent);\\n }\\n\\n &.mat-warn .mat-checkbox-background {\\n background-color: theming.get-color-from-palette($warn);\\n }\\n }\\n\\n .mat-checkbox-disabled {\\n &.mat-checkbox-checked,\\n &.mat-checkbox-indeterminate {\\n .mat-checkbox-background {\\n background-color: $disabled-color;\\n }\\n }\\n\\n &:not(.mat-checkbox-checked) {\\n .mat-checkbox-frame {\\n border-color: $disabled-color;\\n }\\n }\\n\\n .mat-checkbox-label {\\n color: theming.get-color-from-palette($foreground, disabled);\\n }\\n }\\n\\n // Switch this to a solid color since we're using `opacity`\\n // to control how opaque the ripple should be.\\n .mat-checkbox .mat-ripple-element {\\n background-color: map.get(map.get($config, foreground), base);\\n }\\n\\n .mat-checkbox-checked:not(.mat-checkbox-disabled),\\n .mat-checkbox:active:not(.mat-checkbox-disabled) {\\n &.mat-primary .mat-ripple-element {\\n background: theming.get-color-from-palette($primary);\\n }\\n\\n &.mat-accent .mat-ripple-element {\\n background: theming.get-color-from-palette($accent);\\n }\\n\\n &.mat-warn .mat-ripple-element {\\n background: theming.get-color-from-palette($warn);\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-checkbox {\\n font-family: typography-utils.font-family($config);\\n }\\n\\n // TODO(kara): Remove this style when fixing vertical baseline\\n .mat-checkbox-layout .mat-checkbox-label {\\n line-height: typography-utils.line-height($config, body-2);\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-checkbox') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use 'sass:meta';\\n@use '../core/style/private';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n$chip-remove-font-size: 18px;\\n\\n@mixin _element-color($foreground, $background) {\\n background-color: $background;\\n color: $foreground;\\n\\n .mat-chip-remove {\\n color: $foreground;\\n opacity: 0.4;\\n }\\n}\\n\\n\\n// Applies the background color for a ripple element.\\n// If the color value provided is not a Sass color,\\n// we assume that we've been given a CSS variable.\\n// Since we can't perform alpha-blending on a CSS variable,\\n// we instead add the opacity directly to the ripple element.\\n@mixin _ripple-background($palette, $default-contrast, $opacity) {\\n $background-color: theming.get-color-from-palette($palette, $default-contrast, $opacity);\\n background-color: $background-color;\\n @if (meta.type-of($background-color) != color) {\\n opacity: $opacity;\\n }\\n}\\n\\n@mixin _palette-styles($palette) {\\n @include _element-color(theming.get-color-from-palette($palette, default-contrast),\\n theming.get-color-from-palette($palette));\\n\\n .mat-ripple-element {\\n @include _ripple-background($palette, default-contrast, 0.1);\\n }\\n}\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $is-dark-theme: map.get($config, is-dark);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n $unselected-background: theming.get-color-from-palette($background, unselected-chip);\\n $unselected-foreground: theming.get-color-from-palette($foreground, text);\\n\\n .mat-chip.mat-standard-chip {\\n @include _element-color($unselected-foreground, $unselected-background);\\n\\n &:not(.mat-chip-disabled) {\\n &:active {\\n @include private.private-theme-elevation(3, $config);\\n }\\n\\n .mat-chip-remove:hover {\\n opacity: 0.54;\\n }\\n }\\n\\n &.mat-chip-disabled {\\n opacity: 0.4;\\n }\\n\\n &::after {\\n background: map.get($foreground, base);\\n }\\n }\\n\\n .mat-chip.mat-standard-chip.mat-chip-selected {\\n &.mat-primary {\\n @include _palette-styles($primary);\\n }\\n\\n &.mat-warn {\\n @include _palette-styles($warn);\\n }\\n\\n &.mat-accent {\\n @include _palette-styles($accent);\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-chip {\\n font-size: typography-utils.font-size($config, body-2);\\n font-weight: typography-utils.font-weight($config, body-2);\\n\\n .mat-chip-trailing-icon.mat-icon,\\n .mat-chip-remove.mat-icon {\\n font-size: $chip-remove-font-size;\\n }\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-chips') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\\n\\n\",\"@use 'sass:map';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n .mat-table {\\n background: theming.get-color-from-palette($background, 'card');\\n }\\n\\n .mat-table thead, .mat-table tbody, .mat-table tfoot,\\n mat-header-row, mat-row, mat-footer-row,\\n [mat-header-row], [mat-row], [mat-footer-row],\\n .mat-table-sticky {\\n background: inherit;\\n }\\n\\n mat-row, mat-header-row, mat-footer-row,\\n th.mat-header-cell, td.mat-cell, td.mat-footer-cell {\\n border-bottom-color: theming.get-color-from-palette($foreground, divider);\\n }\\n\\n .mat-header-cell {\\n color: theming.get-color-from-palette($foreground, secondary-text);\\n }\\n\\n .mat-cell, .mat-footer-cell {\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-table {\\n font-family: typography-utils.font-family($config);\\n }\\n\\n .mat-header-cell {\\n font-size: typography-utils.font-size($config, caption);\\n font-weight: typography-utils.font-weight($config, body-2);\\n }\\n\\n .mat-cell, .mat-footer-cell {\\n font-size: typography-utils.font-size($config, body-1);\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-table') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:color';\\n@use 'sass:map';\\n@use 'sass:math';\\n@use 'sass:meta';\\n@use '../core/style/private';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n\\n$selected-today-box-shadow-width: 1px;\\n$selected-fade-amount: 0.6;\\n$range-fade-amount: 0.2;\\n$today-fade-amount: 0.2;\\n$calendar-body-font-size: 13px !default;\\n$calendar-weekday-table-font-size: 11px !default;\\n\\n@mixin _color($palette) {\\n @include date-range-colors(\\n theming.get-color-from-palette($palette, default, $range-fade-amount));\\n\\n .mat-calendar-body-selected {\\n background-color: theming.get-color-from-palette($palette);\\n color: theming.get-color-from-palette($palette, default-contrast);\\n }\\n\\n .mat-calendar-body-disabled > .mat-calendar-body-selected {\\n $background: theming.get-color-from-palette($palette);\\n\\n @if (meta.type-of($background) == color) {\\n background-color: color.adjust($background, $alpha: -$selected-fade-amount);\\n }\\n @else {\\n // If we couldn't resolve to background to a color (e.g. it's a CSS variable),\\n // fall back to fading the content out via `opacity`.\\n opacity: $today-fade-amount;\\n }\\n }\\n\\n .mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 $selected-today-box-shadow-width\\n theming.get-color-from-palette($palette, default-contrast);\\n }\\n\\n .cdk-keyboard-focused .mat-calendar-body-active,\\n .cdk-program-focused .mat-calendar-body-active {\\n @include _highlighted-cell($palette);\\n }\\n\\n @media (hover: hover) {\\n .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover {\\n @include _highlighted-cell($palette);\\n }\\n }\\n}\\n\\n// Utility mixin to target cells that aren't selected. Used to make selector easier to follow.\\n@mixin _unselected-cell {\\n &:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n @content;\\n }\\n}\\n\\n// Styles for a highlighted calendar cell (e.g. hovered or focused).\\n@mixin _highlighted-cell($palette) {\\n & > .mat-calendar-body-cell-content {\\n @include _unselected-cell {\\n background-color: theming.get-color-from-palette($palette, 0.3);\\n }\\n }\\n}\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $foreground: map.get($config, foreground);\\n $background: map.get($config, background);\\n $disabled-color: theming.get-color-from-palette($foreground, disabled-text);\\n\\n .mat-calendar-arrow {\\n fill: theming.get-color-from-palette($foreground, icon);\\n }\\n\\n // The prev/next buttons need a bit more specificity to\\n // avoid being overwritten by the .mat-icon-button.\\n .mat-datepicker-toggle,\\n .mat-datepicker-content .mat-calendar-next-button,\\n .mat-datepicker-content .mat-calendar-previous-button {\\n color: theming.get-color-from-palette($foreground, icon);\\n }\\n\\n .mat-calendar-table-header-divider::after {\\n background: theming.get-color-from-palette($foreground, divider);\\n }\\n\\n .mat-calendar-table-header,\\n .mat-calendar-body-label {\\n color: theming.get-color-from-palette($foreground, secondary-text);\\n }\\n\\n .mat-calendar-body-cell-content,\\n .mat-date-range-input-separator {\\n color: theming.get-color-from-palette($foreground, text);\\n border-color: transparent;\\n }\\n\\n .mat-calendar-body-disabled > .mat-calendar-body-cell-content {\\n @include _unselected-cell {\\n color: $disabled-color;\\n }\\n }\\n\\n .mat-form-field-disabled .mat-date-range-input-separator {\\n color: $disabled-color;\\n }\\n\\n .mat-calendar-body-in-preview {\\n $divider-color: theming.get-color-from-palette($foreground, divider);\\n\\n @if meta.type-of($divider-color) == color {\\n // The divider color is set under the assumption that it'll be used\\n // for a solid border, but because we're using a dashed border for the\\n // preview range, we need to bump its opacity to ensure that it's visible.\\n color: rgba($divider-color, math.min(opacity($divider-color) * 2, 1));\\n }\\n @else {\\n color: $divider-color;\\n }\\n }\\n\\n .mat-calendar-body-today {\\n @include _unselected-cell {\\n // Note: though it's not text, the border is a hint about the fact that this is today's date,\\n // so we use the hint color.\\n border-color: theming.get-color-from-palette($foreground, hint-text);\\n }\\n }\\n\\n .mat-calendar-body-disabled > .mat-calendar-body-today {\\n @include _unselected-cell {\\n $color: theming.get-color-from-palette($foreground, hint-text);\\n\\n @if (meta.type-of($color) == color) {\\n border-color: color.adjust($color, $alpha: -$today-fade-amount);\\n }\\n @else {\\n // If the color didn't resolve to a color value, but something like a CSS variable, we can't\\n // fade it out so we fall back to reducing the element opacity. Note that we don't use the\\n // $mat-datepicker-today-fade-amount, because hint text usually has some opacity applied\\n // to it already and we don't want them to stack on top of each other.\\n opacity: 0.5;\\n }\\n }\\n }\\n\\n @include _color(map.get($config, primary));\\n\\n .mat-datepicker-content {\\n @include private.private-theme-elevation(4, $config);\\n background-color: theming.get-color-from-palette($background, card);\\n color: theming.get-color-from-palette($foreground, text);\\n\\n &.mat-accent {\\n @include _color(map.get($config, accent));\\n }\\n\\n &.mat-warn {\\n @include _color(map.get($config, warn));\\n }\\n }\\n\\n .mat-datepicker-content-touch {\\n @include private.private-theme-elevation(24, $config);\\n }\\n\\n .mat-datepicker-toggle-active {\\n color: theming.get-color-from-palette(map.get($config, primary), text);\\n\\n &.mat-accent {\\n color: theming.get-color-from-palette(map.get($config, accent), text);\\n }\\n\\n &.mat-warn {\\n color: theming.get-color-from-palette(map.get($config, warn), text);\\n }\\n }\\n\\n .mat-date-range-input-inner[disabled] {\\n color: theming.get-color-from-palette($foreground, disabled-text);\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-calendar {\\n font-family: typography-utils.font-family($config);\\n }\\n\\n .mat-calendar-body {\\n font-size: $calendar-body-font-size;\\n }\\n\\n .mat-calendar-body-label,\\n .mat-calendar-period-button {\\n font: {\\n size: typography-utils.font-size($config, button);\\n weight: typography-utils.font-weight($config, button);\\n }\\n }\\n\\n .mat-calendar-table-header th {\\n font: {\\n size: $calendar-weekday-table-font-size;\\n weight: typography-utils.font-weight($config, body-1);\\n }\\n }\\n}\\n\\n@mixin date-range-colors(\\n $range-color,\\n $comparison-color: rgba(#f9ab00, $range-fade-amount),\\n $overlap-color: #a8dab5,\\n $overlap-selected-color: color.adjust($overlap-color, $lightness: -30%)) {\\n\\n .mat-calendar-body-in-range::before {\\n background: $range-color;\\n }\\n\\n .mat-calendar-body-comparison-identical,\\n .mat-calendar-body-in-comparison-range::before {\\n background: $comparison-color;\\n }\\n\\n .mat-calendar-body-comparison-bridge-start::before,\\n [dir='rtl'] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, $range-color 50%, $comparison-color 50%);\\n }\\n\\n .mat-calendar-body-comparison-bridge-end::before,\\n [dir='rtl'] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, $range-color 50%, $comparison-color 50%);\\n }\\n\\n .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: $overlap-color;\\n }\\n\\n .mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: $overlap-selected-color;\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-datepicker') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/style/private';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n .mat-dialog-container {\\n @include private.private-theme-elevation(24, $config);\\n background: theming.get-color-from-palette($background, dialog);\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-dialog-title {\\n @include typography-utils.typography-level($config, title);\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-dialog') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/density/private/compatibility';\\n@use '../core/theming/theming';\\n@use '../core/style/private';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n@use './expansion-variables';\\n@use './expansion-mixins';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n .mat-expansion-panel {\\n @include private.private-theme-overridable-elevation(2, $config);\\n background: theming.get-color-from-palette($background, card);\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n\\n .mat-action-row {\\n border-top-color: theming.get-color-from-palette($foreground, divider);\\n }\\n\\n @include expansion-mixins.private-expansion-focus {\\n background: theming.get-color-from-palette($background, hover);\\n }\\n\\n // Disable the hover on touch devices since it can appear like it is stuck. We can't use\\n // `@media (hover)` above, because the desktop support browser support isn't great.\\n @media (hover: none) {\\n .mat-expansion-panel:not(.mat-expanded):not([aria-disabled='true'])\\n .mat-expansion-panel-header:hover {\\n background: theming.get-color-from-palette($background, card);\\n }\\n }\\n\\n .mat-expansion-panel-header-title {\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n\\n .mat-expansion-panel-header-description,\\n .mat-expansion-indicator::after {\\n color: theming.get-color-from-palette($foreground, secondary-text);\\n }\\n\\n .mat-expansion-panel-header[aria-disabled='true'] {\\n color: theming.get-color-from-palette($foreground, disabled-button);\\n\\n .mat-expansion-panel-header-title,\\n .mat-expansion-panel-header-description {\\n color: inherit;\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-expansion-panel-header {\\n font: {\\n family: typography-utils.font-family($config, subheading-1);\\n size: typography-utils.font-size($config, subheading-1);\\n weight: typography-utils.font-weight($config, subheading-1);\\n }\\n }\\n\\n .mat-expansion-panel-content {\\n @include typography-utils.typography-level($config, body-1);\\n }\\n}\\n\\n@mixin density($config-or-theme) {\\n $density-scale: theming.get-density-config($config-or-theme);\\n $expanded-height: compatibility.private-density-prop-value(\\n expansion-variables.$header-density-config, $density-scale, expanded-height);\\n $collapsed-height: compatibility.private-density-prop-value(\\n expansion-variables.$header-density-config, $density-scale, collapsed-height);\\n\\n @include compatibility.private-density-legacy-compatibility() {\\n .mat-expansion-panel-header {\\n height: $collapsed-height;\\n\\n &.mat-expanded {\\n height: $expanded-height;\\n }\\n }\\n }\\n}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-expansion') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use 'sass:math';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n@use './form-field-fill-theme.scss';\\n@use './form-field-legacy-theme.scss';\\n@use './form-field-outline-theme.scss';\\n@use './form-field-standard-theme.scss';\\n\\n// Color styles that apply to all appearances of the form-field.\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n $is-dark-theme: map.get($config, is-dark);\\n\\n // Label colors. Required is used for the `*` star shown in the label.\\n $label-color:\\n theming.get-color-from-palette($foreground, secondary-text, if($is-dark-theme, 0.7, 0.6));\\n $focused-label-color: theming.get-color-from-palette($primary, text);\\n $required-label-color: theming.get-color-from-palette($accent, text);\\n\\n // Underline colors.\\n $underline-color-base:\\n theming.get-color-from-palette($foreground, divider, if($is-dark-theme, 1, 0.87));\\n $underline-color-accent: theming.get-color-from-palette($accent, text);\\n $underline-color-warn: theming.get-color-from-palette($warn, text);\\n $underline-focused-color: theming.get-color-from-palette($primary, text);\\n\\n .mat-form-field-label {\\n color: $label-color;\\n }\\n\\n .mat-hint {\\n color: $label-color;\\n }\\n\\n .mat-form-field.mat-focused .mat-form-field-label {\\n color: $focused-label-color;\\n\\n &.mat-accent {\\n color: $underline-color-accent;\\n }\\n\\n &.mat-warn {\\n color: $underline-color-warn;\\n }\\n }\\n\\n .mat-focused .mat-form-field-required-marker {\\n color: $required-label-color;\\n }\\n\\n .mat-form-field-ripple {\\n background-color: $underline-color-base;\\n }\\n\\n .mat-form-field.mat-focused {\\n .mat-form-field-ripple {\\n background-color: $underline-focused-color;\\n\\n &.mat-accent {\\n background-color: $underline-color-accent;\\n }\\n\\n &.mat-warn {\\n background-color: $underline-color-warn;\\n }\\n }\\n }\\n\\n .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) {\\n .mat-form-field-infix::after {\\n color: $underline-focused-color;\\n }\\n\\n &.mat-accent .mat-form-field-infix::after {\\n color: $underline-color-accent;\\n }\\n\\n &.mat-warn .mat-form-field-infix::after {\\n color: $underline-color-warn;\\n }\\n }\\n\\n // Styling for the error state of the form field. Note that while the same can be\\n // achieved with the ng-* classes, we use this approach in order to ensure that the same\\n // logic is used to style the error state and to show the error messages.\\n .mat-form-field.mat-form-field-invalid {\\n .mat-form-field-label {\\n color: $underline-color-warn;\\n\\n &.mat-accent,\\n .mat-form-field-required-marker {\\n color: $underline-color-warn;\\n }\\n }\\n\\n .mat-form-field-ripple,\\n .mat-form-field-ripple.mat-accent {\\n background-color: $underline-color-warn;\\n }\\n }\\n\\n .mat-error {\\n color: $underline-color-warn;\\n }\\n\\n @include form-field-legacy-theme.legacy-color($config);\\n @include form-field-standard-theme.standard-color($config);\\n @include form-field-fill-theme.fill-color($config);\\n @include form-field-outline-theme.outline-color($config);\\n}\\n\\n// Used to make instances of the _mat-form-field-label-floating mixin negligibly different,\\n// and prevent Google's CSS Optimizer from collapsing the declarations. This is needed because some\\n// of the selectors contain pseudo-classes not recognized in all browsers. If a browser encounters\\n// an unknown pseudo-class it will discard the entire rule set.\\n$dedupe: 0;\\n\\n// Applies a floating label above the form field control itself.\\n@mixin _label-floating($font-scale, $infix-padding, $infix-margin-top) {\\n transform: translateY(-$infix-margin-top - $infix-padding + $dedupe)\\n scale($font-scale);\\n width: math.div(100%, $font-scale) + $dedupe;\\n\\n $dedupe: $dedupe + 0.00001 !global;\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n // The unit-less line-height from the font config.\\n $line-height: typography-utils.line-height($config, input);\\n\\n // The amount to scale the font for the floating label and subscript.\\n $subscript-font-scale: 0.75;\\n // The amount to scale the font for the prefix and suffix icons.\\n $prefix-suffix-icon-font-scale: 1.5;\\n\\n // The padding on the infix. Mocks show half of the text size.\\n $infix-padding: 0.5em;\\n // The margin applied to the form-field-infix to reserve space for the floating label.\\n // If the line-height is given as a unitless number, coerce it to `em`.\\n $infix-margin-top: $subscript-font-scale *\\n typography-utils.private-coerce-unitless-to-em($line-height);\\n // Font size to use for the label and subscript text.\\n $subscript-font-size: $subscript-font-scale * 100%;\\n // Font size to use for the for the prefix and suffix icons.\\n $prefix-suffix-icon-font-size: $prefix-suffix-icon-font-scale * 100%;\\n // The space between the bottom of the .mat-form-field-flex area and the subscript wrapper.\\n // Mocks show half of the text size, but this margin is applied to an element with the subscript\\n // text font size, so we need to divide by the scale factor to make it half of the original text\\n // size.\\n $subscript-margin-top: math.div(0.5em, $subscript-font-scale);\\n // The padding applied to the form-field-wrapper to reserve space for the subscript, since it's\\n // absolutely positioned. This is a combination of the subscript's margin and line-height, but we\\n // need to multiply by the subscript font scale factor since the wrapper has a larger font size.\\n $wrapper-padding-bottom: ($subscript-margin-top + $line-height) * $subscript-font-scale;\\n\\n .mat-form-field {\\n @include typography-utils.typography-level($config, input);\\n }\\n\\n .mat-form-field-wrapper {\\n padding-bottom: $wrapper-padding-bottom;\\n }\\n\\n .mat-form-field-prefix,\\n .mat-form-field-suffix {\\n // Allow icons in a prefix or suffix to adapt to the correct size.\\n .mat-icon {\\n font-size: $prefix-suffix-icon-font-size;\\n line-height: $line-height;\\n }\\n\\n // Allow icon buttons in a prefix or suffix to adapt to the correct size.\\n .mat-icon-button {\\n height: $prefix-suffix-icon-font-scale * 1em;\\n width: $prefix-suffix-icon-font-scale * 1em;\\n\\n .mat-icon {\\n height: typography-utils.private-coerce-unitless-to-em($line-height);\\n line-height: $line-height;\\n }\\n }\\n }\\n\\n .mat-form-field-infix {\\n padding: $infix-padding 0;\\n // Throws off the baseline if we do it as a real margin, so we do it as a border instead.\\n border-top: $infix-margin-top solid transparent;\\n }\\n\\n .mat-form-field-can-float {\\n &.mat-form-field-should-float .mat-form-field-label,\\n .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n @include _label-floating(\\n $subscript-font-scale, $infix-padding, $infix-margin-top);\\n }\\n\\n // Server-side rendered matInput with a label attribute but label not shown\\n // (used as a pure CSS stand-in for mat-form-field-should-float).\\n .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper\\n .mat-form-field-label {\\n @include _label-floating(\\n $subscript-font-scale, $infix-padding, $infix-margin-top);\\n }\\n }\\n\\n .mat-form-field-label-wrapper {\\n top: -$infix-margin-top;\\n padding-top: $infix-margin-top;\\n }\\n\\n .mat-form-field-label {\\n top: $infix-margin-top + $infix-padding;\\n }\\n\\n .mat-form-field-underline {\\n // We want the underline to start at the end of the content box, not the padding box,\\n // so we move it up by the padding amount.\\n bottom: $wrapper-padding-bottom;\\n }\\n\\n .mat-form-field-subscript-wrapper {\\n font-size: $subscript-font-size;\\n margin-top: $subscript-margin-top;\\n\\n // We want the subscript to start at the end of the content box, not the padding box,\\n // so we move it up by the padding amount (adjusted for the smaller font size);\\n top: calc(100% - #{math.div($wrapper-padding-bottom, $subscript-font-scale)});\\n }\\n\\n @include form-field-legacy-theme.legacy-typography($config);\\n @include form-field-standard-theme.standard-typography($config);\\n @include form-field-fill-theme.fill-typography($config);\\n @include form-field-outline-theme.outline-typography($config);\\n}\\n\\n@mixin density($config-or-theme) {\\n $density-scale: theming.get-density-config($config-or-theme);\\n @include form-field-legacy-theme.private-form-field-legacy-density($density-scale);\\n @include form-field-standard-theme.private-form-field-standard-density($density-scale);\\n @include form-field-fill-theme.private-form-field-fill-density($density-scale);\\n @include form-field-outline-theme.private-form-field-outline-density($density-scale);\\n}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-form-field') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use 'sass:math';\\n@use '../core/theming/theming';\\n@use '../core/style/form-common';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n\\n// Theme styles that only apply to the legacy appearance of the form-field.\\n\\n@mixin legacy-color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $foreground: map.get($config, foreground);\\n $is-dark-theme: map.get($config, is-dark);\\n\\n $label-color: theming.get-color-from-palette($foreground, secondary-text);\\n $underline-color:\\n theming.get-color-from-palette($foreground, divider, if($is-dark-theme, 0.7, 0.42));\\n\\n .mat-form-field-appearance-legacy {\\n .mat-form-field-label {\\n color: $label-color;\\n }\\n\\n .mat-hint {\\n color: $label-color;\\n }\\n\\n .mat-form-field-underline {\\n background-color: $underline-color;\\n }\\n\\n &.mat-form-field-disabled .mat-form-field-underline {\\n @include form-common.private-control-disabled-underline($underline-color);\\n }\\n }\\n}\\n\\n// Used to make instances of the _mat-form-field-label-floating mixin negligibly different,\\n// and prevent Google's CSS Optimizer from collapsing the declarations. This is needed because some\\n// of the selectors contain pseudo-classes not recognized in all browsers. If a browser encounters\\n// an unknown pseudo-class it will discard the entire rule set.\\n$legacy-dedupe: 0;\\n\\n// Applies a floating label above the form field control itself.\\n@mixin _label-floating($font-scale, $infix-padding, $infix-margin-top) {\\n // We use perspective to fix the text blurriness as described here:\\n // http://www.useragentman.com/blog/2014/05/04/fixing-typography-inside-of-2-d-css-transforms/\\n // This results in a small jitter after the label floats on Firefox, which the\\n // translateZ fixes.\\n transform: translateY(-$infix-margin-top - $infix-padding) scale($font-scale) perspective(100px)\\n translateZ(0.001px + $legacy-dedupe);\\n width: math.div(100%, $font-scale) + $legacy-dedupe;\\n\\n $legacy-dedupe: $legacy-dedupe + 0.00001 !global;\\n}\\n\\n// Same as mixin above, but omits the translateZ for printing purposes.\\n@mixin _label-floating-print($font-scale, $infix-padding, $infix-margin-top) {\\n // This results in a small jitter after the label floats on Firefox, which the\\n // translateZ fixes.\\n transform: translateY(-$infix-margin-top - $infix-padding + $legacy-dedupe)\\n scale($font-scale);\\n // The tricks above used to smooth out the animation on chrome and firefox actually make things\\n // worse on IE, so we don't include them in the IE version.\\n $legacy-dedupe: $legacy-dedupe + 0.00001 !global;\\n}\\n\\n@mixin legacy-typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n // The unit-less line-height from the font config.\\n $line-height: typography-utils.line-height($config, input);\\n // The amount to scale the font for the floating label and subscript.\\n $subscript-font-scale: 0.75;\\n // The amount of space between the top of the line and the top of the actual text\\n // (as a fraction of the font-size).\\n $line-spacing: math.div($line-height - 1, 2);\\n // The padding on the infix. Mocks show half of the text size, but seem to measure from the edge\\n // of the text itself, not the edge of the line; therefore we subtract off the line spacing.\\n $infix-padding: 0.5em - $line-spacing;\\n // The margin applied to the form-field-infix to reserve space for the floating label.\\n // If the line-height is given as a unitless number, coerce it to `em`.\\n $infix-margin-top:\\n $subscript-font-scale * typography-utils.private-coerce-unitless-to-em($line-height);\\n // The space between the bottom of the .mat-form-field-flex area and the subscript wrapper.\\n // Mocks show half of the text size, but this margin is applied to an element with the subscript\\n // text font size, so we need to divide by the scale factor to make it half of the original text\\n // size. We again need to subtract off the line spacing since the mocks measure to the edge of the\\n // text, not the edge of the line.\\n $subscript-margin-top: math.div(0.5em, $subscript-font-scale) - ($line-spacing * 2);\\n // The padding applied to the form-field-wrapper to reserve space for the subscript, since it's\\n // absolutely positioned. This is a combination of the subscript's margin and line-height, but we\\n // need to multiply by the subscript font scale factor since the wrapper has a larger font size.\\n $wrapper-padding-bottom: ($subscript-margin-top + $line-height) * $subscript-font-scale;\\n\\n .mat-form-field-appearance-legacy {\\n .mat-form-field-wrapper {\\n padding-bottom: $wrapper-padding-bottom;\\n }\\n\\n .mat-form-field-infix {\\n padding: $infix-padding 0;\\n }\\n\\n &.mat-form-field-can-float {\\n &.mat-form-field-should-float .mat-form-field-label,\\n .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n @include _label-floating(\\n $subscript-font-scale, $infix-padding, $infix-margin-top);\\n }\\n\\n // @breaking-change 8.0.0 will rely on AutofillMonitor instead.\\n .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper\\n .mat-form-field-label {\\n @include _label-floating(\\n $subscript-font-scale, $infix-padding, $infix-margin-top);\\n }\\n\\n // Server-side rendered matInput with a label attribute but label not shown\\n // (used as a pure CSS stand-in for mat-form-field-should-float).\\n .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper\\n .mat-form-field-label {\\n @include _label-floating(\\n $subscript-font-scale, $infix-padding, $infix-margin-top);\\n }\\n }\\n\\n .mat-form-field-label {\\n top: $infix-margin-top + $infix-padding;\\n }\\n\\n .mat-form-field-underline {\\n // We want the underline to start at the end of the content box, not the padding box,\\n // so we move it up by the padding amount.\\n bottom: $wrapper-padding-bottom;\\n }\\n\\n .mat-form-field-subscript-wrapper {\\n margin-top: $subscript-margin-top;\\n\\n // We want the subscript to start at the end of the content box, not the padding box,\\n // so we move it up by the padding amount (adjusted for the smaller font size);\\n top: calc(100% - #{math.div($wrapper-padding-bottom, $subscript-font-scale)});\\n }\\n }\\n\\n // translateZ causes the label to not appear while printing, so we override it to not\\n // apply translateZ while printing\\n @media print {\\n .mat-form-field-appearance-legacy {\\n &.mat-form-field-can-float {\\n &.mat-form-field-should-float .mat-form-field-label,\\n .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n @include _label-floating-print(\\n $subscript-font-scale, $infix-padding, $infix-margin-top);\\n }\\n\\n // @breaking-change 8.0.0 will rely on AutofillMonitor instead.\\n .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper\\n .mat-form-field-label {\\n @include _label-floating-print(\\n $subscript-font-scale, $infix-padding, $infix-margin-top);\\n }\\n\\n // Server-side rendered matInput with a label attribute but label not shown\\n // (used as a pure CSS stand-in for mat-form-field-should-float).\\n .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper\\n .mat-form-field-label {\\n @include _label-floating-print(\\n $subscript-font-scale, $infix-padding, $infix-margin-top);\\n }\\n }\\n }\\n }\\n}\\n\\n@mixin private-form-field-legacy-density($config-or-theme) {}\\n\\n@mixin legacy-theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-form-field-legacy') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include legacy-color($color);\\n }\\n @if $density != null {\\n @include private-form-field-legacy-density($density);\\n }\\n @if $typography != null {\\n @include legacy-typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use 'sass:math';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n\\n// Theme styles that only apply to the fill appearance of the form-field.\\n\\n@mixin fill-color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $foreground: map.get($config, foreground);\\n $is-dark-theme: map.get($config, is-dark);\\n\\n $fill-background:\\n theming.get-color-from-palette($foreground, base, if($is-dark-theme, 0.1, 0.04));\\n $fill-disabled-background:\\n theming.get-color-from-palette($foreground, base, if($is-dark-theme, 0.05, 0.02));\\n $underline-color:\\n theming.get-color-from-palette($foreground, divider, if($is-dark-theme, 0.5, 0.42));\\n $label-disabled-color: theming.get-color-from-palette($foreground, disabled-text);\\n\\n .mat-form-field-appearance-fill {\\n .mat-form-field-flex {\\n background-color: $fill-background;\\n }\\n\\n &.mat-form-field-disabled .mat-form-field-flex {\\n background-color: $fill-disabled-background;\\n }\\n\\n .mat-form-field-underline::before {\\n background-color: $underline-color;\\n }\\n\\n &.mat-form-field-disabled {\\n .mat-form-field-label {\\n color: $label-disabled-color;\\n }\\n\\n .mat-form-field-underline::before {\\n background-color: transparent;\\n }\\n }\\n }\\n}\\n\\n// Used to make instances of the _mat-form-field-label-floating mixin negligibly different,\\n// and prevent Google's CSS Optimizer from collapsing the declarations. This is needed because some\\n// of the selectors contain pseudo-classes not recognized in all browsers. If a browser encounters\\n// an unknown pseudo-class it will discard the entire rule set.\\n$fill-dedupe: 0;\\n\\n// Applies a floating label above the form field control itself.\\n@mixin _label-floating($font-scale, $infix-padding, $infix-margin-top) {\\n transform: translateY(-$infix-margin-top - $infix-padding + $fill-dedupe)\\n scale($font-scale);\\n width: math.div(100%, $font-scale) + $fill-dedupe;\\n\\n $fill-dedupe: $fill-dedupe + 0.00001 !global;\\n}\\n\\n@mixin fill-typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n // The unit-less line-height from the font config.\\n $line-height: typography-utils.line-height($config, input);\\n // The amount to scale the font for the floating label and subscript.\\n $subscript-font-scale: 0.75;\\n // The padding on top of the infix.\\n $infix-padding-top: 0.25em;\\n // The padding below the infix.\\n $infix-padding-bottom: 0.75em;\\n // The margin applied to the form-field-infix to reserve space for the floating label.\\n $infix-margin-top:\\n $subscript-font-scale * typography-utils.private-coerce-unitless-to-em($line-height);\\n // The amount we offset the label from the input text in the fill appearance.\\n $fill-appearance-label-offset: -0.5em;\\n\\n .mat-form-field-appearance-fill {\\n .mat-form-field-infix {\\n padding: $infix-padding-top 0 $infix-padding-bottom 0;\\n }\\n\\n .mat-form-field-label {\\n top: $infix-margin-top + $infix-padding-top;\\n margin-top: $fill-appearance-label-offset;\\n }\\n\\n &.mat-form-field-can-float {\\n &.mat-form-field-should-float .mat-form-field-label,\\n .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n @include _label-floating(\\n $subscript-font-scale, $infix-padding-top + $fill-appearance-label-offset,\\n $infix-margin-top);\\n }\\n\\n // Server-side rendered matInput with a label attribute but label not shown\\n // (used as a pure CSS stand-in for mat-form-field-should-float).\\n .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper\\n .mat-form-field-label {\\n @include _label-floating(\\n $subscript-font-scale, $infix-padding-top + $fill-appearance-label-offset,\\n $infix-margin-top);\\n }\\n }\\n }\\n}\\n\\n@mixin private-form-field-fill-density($config-or-theme) {}\\n\\n@mixin fill-theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-form-field-fill') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include fill-color($color);\\n }\\n @if $density != null {\\n @include private-form-field-fill-density($density);\\n }\\n @if $typography != null {\\n @include fill-typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use 'sass:math';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n\\n// Theme styles that only apply to the outline appearance of the form-field.\\n\\n@mixin outline-color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $foreground: map.get($config, foreground);\\n $is-dark-theme: map.get($config, is-dark);\\n\\n $label-disabled-color: theming.get-color-from-palette($foreground, disabled-text);\\n $outline-color:\\n theming.get-color-from-palette($foreground, divider, if($is-dark-theme, 0.3, 0.12));\\n $outline-color-hover:\\n theming.get-color-from-palette($foreground, divider, if($is-dark-theme, 1, 0.87));\\n $outline-color-primary: theming.get-color-from-palette($primary);\\n $outline-color-accent: theming.get-color-from-palette($accent);\\n $outline-color-warn: theming.get-color-from-palette($warn);\\n $outline-color-disabled:\\n theming.get-color-from-palette($foreground, divider, if($is-dark-theme, 0.15, 0.06));\\n\\n .mat-form-field-appearance-outline {\\n .mat-form-field-outline {\\n color: $outline-color;\\n }\\n\\n .mat-form-field-outline-thick {\\n color: $outline-color-hover;\\n }\\n\\n &.mat-focused {\\n .mat-form-field-outline-thick {\\n color: $outline-color-primary;\\n }\\n\\n &.mat-accent .mat-form-field-outline-thick {\\n color: $outline-color-accent;\\n }\\n\\n &.mat-warn .mat-form-field-outline-thick {\\n color: $outline-color-warn;\\n }\\n }\\n\\n // Class repeated so that rule is specific enough to override focused accent color case.\\n &.mat-form-field-invalid.mat-form-field-invalid {\\n .mat-form-field-outline-thick {\\n color: $outline-color-warn;\\n }\\n }\\n\\n &.mat-form-field-disabled {\\n .mat-form-field-label {\\n color: $label-disabled-color;\\n }\\n\\n .mat-form-field-outline {\\n color: $outline-color-disabled;\\n }\\n }\\n }\\n}\\n\\n// Used to make instances of the _mat-form-field-label-floating mixin negligibly different,\\n// and prevent Google's CSS Optimizer from collapsing the declarations. This is needed because some\\n// of the selectors contain pseudo-classes not recognized in all browsers. If a browser encounters\\n// an unknown pseudo-class it will discard the entire rule set.\\n$outline-dedupe: 0;\\n\\n// Applies a floating label above the form field control itself.\\n@mixin _label-floating($font-scale, $infix-padding, $infix-margin-top) {\\n transform: translateY(-$infix-margin-top - $infix-padding + $outline-dedupe)\\n scale($font-scale);\\n width: math.div(100%, $font-scale) + $outline-dedupe;\\n\\n $outline-dedupe: $outline-dedupe + 0.00001 !global;\\n}\\n\\n@mixin outline-typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n // The unit-less line-height from the font config.\\n $line-height: typography-utils.line-height($config, input);\\n // The amount to scale the font for the floating label and subscript.\\n $subscript-font-scale: 0.75;\\n // The padding above and below the infix.\\n $infix-padding: 1em;\\n // The margin applied to the form-field-infix to reserve space for the floating label.\\n $infix-margin-top:\\n $subscript-font-scale * typography-utils.private-coerce-unitless-to-em($line-height);\\n // The space between the bottom of the .mat-form-field-flex area and the subscript wrapper.\\n // Mocks show half of the text size, but this margin is applied to an element with the subscript\\n // text font size, so we need to divide by the scale factor to make it half of the original text\\n // size.\\n $subscript-margin-top: math.div(0.5em, $subscript-font-scale);\\n // The padding applied to the form-field-wrapper to reserve space for the subscript, since it's\\n // absolutely positioned. This is a combination of the subscript's margin and line-height, but we\\n // need to multiply by the subscript font scale factor since the wrapper has a larger font size.\\n $wrapper-padding-bottom: ($subscript-margin-top + $line-height) * $subscript-font-scale;\\n // The amount we offset the label from the input text in the outline appearance.\\n $outline-appearance-label-offset: -0.25em;\\n\\n .mat-form-field-appearance-outline {\\n .mat-form-field-infix {\\n padding: $infix-padding 0 $infix-padding 0;\\n }\\n\\n .mat-form-field-label {\\n top: $infix-margin-top + $infix-padding;\\n margin-top: $outline-appearance-label-offset;\\n }\\n\\n &.mat-form-field-can-float {\\n &.mat-form-field-should-float .mat-form-field-label,\\n .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n @include _label-floating(\\n $subscript-font-scale, $infix-padding + $outline-appearance-label-offset,\\n $infix-margin-top);\\n }\\n\\n // Server-side rendered matInput with a label attribute but label not shown\\n // (used as a pure CSS stand-in for mat-form-field-should-float).\\n .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper\\n .mat-form-field-label {\\n @include _label-floating(\\n $subscript-font-scale, $infix-padding + $outline-appearance-label-offset,\\n $infix-margin-top);\\n }\\n }\\n }\\n}\\n\\n@mixin private-form-field-outline-density($config-or-theme) {}\\n\\n@mixin outline-theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-form-field-outline') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include outline-color($color);\\n }\\n @if $density != null {\\n @include private-form-field-outline-density($density);\\n }\\n @if $typography != null {\\n @include outline-typography($typography);\\n }\\n }\\n}\\n\\n\",\"@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n@use '../core/style/list-common';\\n\\n\\n// Include this empty mixin for consistency with the other components.\\n@mixin color($config-or-theme) {}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-grid-tile-header,\\n .mat-grid-tile-footer {\\n @include list-common.base(typography-utils.font-size($config, caption));\\n font-size: typography-utils.font-size($config, body-1);\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-grid-list') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"// This mixin will ensure that lines that overflow the container will hide the overflow and\\n// truncate neatly with an ellipsis.\\n@mixin truncate-line() {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n// Mixin to provide all mat-line styles, changing secondary font size based on whether the list\\n// is in dense mode.\\n@mixin base($secondary-font-size) {\\n .mat-line {\\n @include truncate-line();\\n display: block;\\n box-sizing: border-box;\\n\\n // all lines but the top line should have smaller text\\n &:nth-child(n+2) {\\n font-size: $secondary-font-size;\\n }\\n }\\n}\\n\\n// This mixin normalizes default element styles, e.g. font weight for heading text.\\n@mixin normalize-text() {\\n & > * {\\n margin: 0;\\n padding: 0;\\n font-weight: normal;\\n font-size: inherit;\\n }\\n}\\n\\n// This mixin provides base styles for the wrapper around mat-line elements in a list.\\n@mixin wrapper-base() {\\n @include normalize-text();\\n\\n display: flex;\\n flex-direction: column;\\n flex: auto;\\n box-sizing: border-box;\\n overflow: hidden;\\n\\n // Must remove wrapper when lines are empty or it takes up horizontal\\n // space and pushes other elements to the right.\\n &:empty {\\n display: none;\\n }\\n}\\n\",\"@use 'sass:map';\\n@use 'sass:math';\\n@use '../core/theming/palette';\\n@use '../core/theming/theming';\\n@use '../core/style/form-common';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n@use '../core/style/vendor-prefixes';\\n\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $foreground: map.get($config, foreground);\\n\\n .mat-form-field-type-mat-native-select .mat-form-field-infix::after {\\n color: theming.get-color-from-palette($foreground, secondary-text);\\n }\\n\\n .mat-input-element:disabled,\\n .mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after {\\n color: theming.get-color-from-palette($foreground, disabled-text);\\n }\\n\\n .mat-input-element {\\n caret-color: theming.get-color-from-palette($primary, text);\\n\\n @include vendor-prefixes.input-placeholder {\\n color: form-common.private-control-placeholder-color($config);\\n }\\n\\n // On dark themes we set the native `select` color to some shade of white,\\n // however the color propagates to all of the `option` elements, which are\\n // always on a white background inside the dropdown, causing them to blend in.\\n // Since we can't change background of the dropdown, we need to explicitly\\n // reset the color of the options to something dark.\\n @if (map.get($config, is-dark)) {\\n &:not(.mat-native-select-inline) {\\n option {\\n color: palette.$dark-primary-text;\\n }\\n\\n option:disabled {\\n color: palette.$dark-disabled-text;\\n }\\n }\\n }\\n }\\n\\n .mat-form-field.mat-accent .mat-input-element {\\n caret-color: theming.get-color-from-palette($accent, text);\\n }\\n\\n .mat-form-field.mat-warn .mat-input-element,\\n .mat-form-field-invalid .mat-input-element {\\n caret-color: theming.get-color-from-palette($warn, text);\\n }\\n\\n .mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after {\\n color: theming.get-color-from-palette($warn, text);\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n // The unit-less line-height from the font config.\\n $line-height: typography-utils.line-height($config, input);\\n\\n // The amount of space between the top of the line and the top of the actual text\\n // (as a fraction of the font-size).\\n $line-spacing: math.div($line-height - 1, 2);\\n\\n // <input> elements seem to have their height set slightly too large on Safari causing the text to\\n // be misaligned w.r.t. the placeholder. Adding this margin corrects it.\\n input.mat-input-element {\\n margin-top: typography-utils.private-coerce-unitless-to-em(-$line-spacing);\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-input') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/style/private';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n .mat-menu-panel {\\n @include private.private-theme-overridable-elevation(4, $config);\\n background: theming.get-color-from-palette($background, 'card');\\n }\\n\\n .mat-menu-item {\\n background: transparent;\\n color: theming.get-color-from-palette($foreground, 'text');\\n\\n &[disabled] {\\n &,\\n .mat-menu-submenu-icon,\\n .mat-icon-no-color {\\n color: theming.get-color-from-palette($foreground, 'disabled');\\n }\\n }\\n }\\n\\n .mat-menu-item .mat-icon-no-color,\\n .mat-menu-submenu-icon {\\n color: theming.get-color-from-palette($foreground, 'icon');\\n }\\n\\n .mat-menu-item:hover,\\n .mat-menu-item.cdk-program-focused,\\n .mat-menu-item.cdk-keyboard-focused,\\n .mat-menu-item-highlighted {\\n &:not([disabled]) {\\n background: theming.get-color-from-palette($background, 'hover');\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-menu-item {\\n font: {\\n family: typography-utils.font-family($config, body-1);\\n size: typography-utils.font-size($config, body-1);\\n weight: typography-utils.font-weight($config, body-1);\\n }\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-menu') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\\n\",\"@use 'sass:map';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n@use '../core/density/private/compatibility';\\n@use './paginator-variables';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $foreground: map.get($config, foreground);\\n $background: map.get($config, background);\\n\\n .mat-paginator {\\n background: theming.get-color-from-palette($background, 'card');\\n }\\n\\n .mat-paginator,\\n .mat-paginator-page-size .mat-select-trigger {\\n color: theming.get-color-from-palette($foreground, secondary-text);\\n }\\n\\n .mat-paginator-decrement,\\n .mat-paginator-increment {\\n border-top: 2px solid theming.get-color-from-palette($foreground, 'icon');\\n border-right: 2px solid theming.get-color-from-palette($foreground, 'icon');\\n }\\n\\n .mat-paginator-first,\\n .mat-paginator-last {\\n border-top: 2px solid theming.get-color-from-palette($foreground, 'icon');\\n }\\n\\n .mat-icon-button[disabled] {\\n .mat-paginator-decrement,\\n .mat-paginator-increment,\\n .mat-paginator-first,\\n .mat-paginator-last {\\n border-color: theming.get-color-from-palette($foreground, 'disabled');\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-paginator,\\n .mat-paginator-page-size .mat-select-trigger {\\n font: {\\n family: typography-utils.font-family($config, caption);\\n size: typography-utils.font-size($config, caption);\\n }\\n }\\n}\\n\\n@mixin density($config-or-theme) {\\n $density-scale: theming.get-density-config($config-or-theme);\\n $height: compatibility.private-density-prop-value(paginator-variables.$density-config,\\n $density-scale, height);\\n\\n @include compatibility.private-density-legacy-compatibility() {\\n .mat-paginator-container {\\n min-height: $height;\\n }\\n }\\n}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-paginator') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n@mixin _color($palette) {\\n &.mat-radio-checked .mat-radio-outer-circle {\\n border-color: theming.get-color-from-palette($palette);\\n }\\n\\n .mat-radio-inner-circle,\\n .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),\\n &.mat-radio-checked .mat-radio-persistent-ripple,\\n &:active .mat-radio-persistent-ripple {\\n background-color: theming.get-color-from-palette($palette);\\n }\\n}\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n .mat-radio-outer-circle {\\n border-color: theming.get-color-from-palette($foreground, secondary-text);\\n }\\n\\n .mat-radio-button {\\n &.mat-primary {\\n @include _color($primary);\\n }\\n\\n &.mat-accent {\\n @include _color($accent);\\n }\\n\\n &.mat-warn {\\n @include _color($warn);\\n }\\n\\n // This needs extra specificity, because the classes above are combined\\n // (e.g. `.mat-radio-button.mat-accent`) which increases their specificity a lot.\\n // TODO: consider making the selectors into descendants (`.mat-primary .mat-radio-button`).\\n &.mat-radio-disabled {\\n &.mat-radio-checked .mat-radio-outer-circle,\\n .mat-radio-outer-circle {\\n border-color: theming.get-color-from-palette($foreground, disabled);\\n }\\n\\n .mat-radio-ripple .mat-ripple-element,\\n .mat-radio-inner-circle {\\n background-color: theming.get-color-from-palette($foreground, disabled);\\n }\\n\\n .mat-radio-label-content {\\n color: theming.get-color-from-palette($foreground, disabled);\\n }\\n }\\n\\n // Switch this to a solid color since we're using `opacity`\\n // to control how opaque the ripple should be.\\n .mat-ripple-element {\\n background-color: map.get($foreground, base);\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-radio-button {\\n font-family: typography-utils.font-family($config);\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-radio') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/theming/theming';\\n@use '../core/style/private';\\n@use '../core/style/form-common';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $foreground: map.get($config, foreground);\\n $background: map.get($config, background);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n\\n .mat-select-value {\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n\\n .mat-select-placeholder {\\n color: form-common.private-control-placeholder-color($config);\\n }\\n\\n .mat-select-disabled .mat-select-value {\\n color: theming.get-color-from-palette($foreground, disabled-text);\\n }\\n\\n .mat-select-arrow {\\n color: theming.get-color-from-palette($foreground, secondary-text);\\n }\\n\\n .mat-select-panel {\\n background: theming.get-color-from-palette($background, card);\\n @include private.private-theme-overridable-elevation(4, $config);\\n\\n .mat-option.mat-selected:not(.mat-option-multiple) {\\n background: theming.get-color-from-palette($background, hover, 0.12);\\n }\\n }\\n\\n .mat-form-field {\\n &.mat-focused {\\n &.mat-primary .mat-select-arrow {\\n color: theming.get-color-from-palette($primary, text);\\n }\\n\\n &.mat-accent .mat-select-arrow {\\n color: theming.get-color-from-palette($accent, text);\\n }\\n\\n &.mat-warn .mat-select-arrow {\\n color: theming.get-color-from-palette($warn, text);\\n }\\n }\\n\\n .mat-select.mat-select-invalid .mat-select-arrow {\\n color: theming.get-color-from-palette($warn, text);\\n }\\n\\n .mat-select.mat-select-disabled .mat-select-arrow {\\n color: theming.get-color-from-palette($foreground, disabled-text);\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n // The unit-less line-height from the font config.\\n $line-height: typography-utils.line-height($config, input);\\n\\n .mat-select {\\n font-family: typography-utils.font-family($config);\\n }\\n\\n .mat-select-trigger {\\n height: typography-utils.private-coerce-unitless-to-em($line-height);\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-select') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/style/private';\\n@use '../core/theming/palette';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n@mixin _checked-color($palette, $thumb-checked-hue) {\\n &.mat-checked {\\n .mat-slide-toggle-thumb {\\n background-color: theming.get-color-from-palette($palette, $thumb-checked-hue);\\n }\\n\\n .mat-slide-toggle-bar {\\n // Opacity is determined from the specs for the selection controls.\\n // See: https://material.io/design/components/selection-controls.html#specs\\n background-color: theming.get-color-from-palette($palette, $thumb-checked-hue, 0.54);\\n }\\n\\n .mat-ripple-element {\\n // Set no opacity for the ripples because the ripple opacity will be adjusted dynamically\\n // based on the type of interaction with the slide-toggle (e.g. for hover, focus)\\n background-color: theming.get-color-from-palette($palette, $thumb-checked-hue);\\n }\\n }\\n}\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $is-dark: map.get($config, is-dark);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n // Color hues are based on the specs which briefly show the hues that are applied to a switch.\\n // The 2018 specs no longer describe how dark switches should look like. Due to the lack of\\n // information for dark themed switches, we partially keep the old behavior that is based on\\n // the previous specifications. For the checked color we always use the `default` hue because\\n // that follows MDC and also makes it easier for people to create a custom theme without needing\\n // to specify each hue individually.\\n $thumb-unchecked-hue: if($is-dark, 400, 50);\\n $thumb-checked-hue: default;\\n\\n $bar-unchecked-color: theming.get-color-from-palette($foreground, disabled);\\n $ripple-unchecked-color: theming.get-color-from-palette($foreground, base);\\n\\n .mat-slide-toggle {\\n @include _checked-color($accent, $thumb-checked-hue);\\n\\n &.mat-primary {\\n @include _checked-color($primary, $thumb-checked-hue);\\n }\\n\\n &.mat-warn {\\n @include _checked-color($warn, $thumb-checked-hue);\\n }\\n\\n &:not(.mat-checked) .mat-ripple-element {\\n // Set no opacity for the ripples because the ripple opacity will be adjusted dynamically\\n // based on the type of interaction with the slide-toggle (e.g. for hover, focus)\\n background-color: $ripple-unchecked-color;\\n }\\n }\\n\\n .mat-slide-toggle-thumb {\\n @include private.private-theme-elevation(1, $config);\\n background-color: theming.get-color-from-palette(palette.$grey-palette, $thumb-unchecked-hue);\\n }\\n\\n .mat-slide-toggle-bar {\\n background-color: $bar-unchecked-color;\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-slide-toggle-content {\\n font-family: typography-utils.font-family($config);\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-slide-toggle') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\\n\",\"@use 'sass:map';\\n@use 'sass:meta';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n@mixin _inner-content-theme($palette) {\\n .mat-slider-track-fill,\\n .mat-slider-thumb,\\n .mat-slider-thumb-label {\\n background-color: theming.get-color-from-palette($palette);\\n }\\n\\n .mat-slider-thumb-label-text {\\n color: theming.get-color-from-palette($palette, default-contrast);\\n }\\n\\n .mat-slider-focus-ring {\\n $opacity: 0.2;\\n $color: theming.get-color-from-palette($palette, default, $opacity);\\n background-color: $color;\\n\\n // `mat-color` uses `rgba` for the opacity which won't work with\\n // CSS variables so we need to use `opacity` as a fallback.\\n @if (meta.type-of($color) != color) {\\n opacity: $opacity;\\n }\\n }\\n}\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n $mat-slider-off-color: theming.get-color-from-palette($foreground, slider-off);\\n $mat-slider-off-focused-color: theming.get-color-from-palette($foreground, slider-off-active);\\n $mat-slider-disabled-color: theming.get-color-from-palette($foreground, slider-off);\\n $mat-slider-labeled-min-value-thumb-color:\\n theming.get-color-from-palette($foreground, slider-min);\\n $mat-slider-labeled-min-value-thumb-label-color:\\n theming.get-color-from-palette($foreground, slider-off);\\n $mat-slider-tick-opacity: 0.7;\\n $mat-slider-tick-color:\\n theming.get-color-from-palette($foreground, base, $mat-slider-tick-opacity);\\n $mat-slider-tick-size: 2px;\\n\\n .mat-slider-track-background {\\n background-color: $mat-slider-off-color;\\n }\\n\\n .mat-slider {\\n &.mat-primary {\\n @include _inner-content-theme($primary);\\n }\\n\\n &.mat-accent {\\n @include _inner-content-theme($accent);\\n }\\n\\n &.mat-warn {\\n @include _inner-content-theme($warn);\\n }\\n }\\n\\n .mat-slider:hover,\\n .mat-slider.cdk-focused {\\n .mat-slider-track-background {\\n background-color: $mat-slider-off-focused-color;\\n }\\n }\\n\\n .mat-slider.mat-slider-disabled {\\n .mat-slider-track-background,\\n .mat-slider-track-fill,\\n .mat-slider-thumb {\\n background-color: $mat-slider-disabled-color;\\n }\\n\\n &:hover {\\n .mat-slider-track-background {\\n background-color: $mat-slider-disabled-color;\\n }\\n }\\n }\\n\\n .mat-slider.mat-slider-min-value {\\n .mat-slider-focus-ring {\\n $opacity: 0.12;\\n $color: theming.get-color-from-palette($foreground, base, $opacity);\\n background-color: $color;\\n\\n // `mat-color` uses `rgba` for the opacity which won't work with\\n // CSS variables so we need to use `opacity` as a fallback.\\n @if (meta.type-of($color) != color) {\\n opacity: $opacity;\\n }\\n }\\n\\n &.mat-slider-thumb-label-showing {\\n .mat-slider-thumb,\\n .mat-slider-thumb-label {\\n background-color: $mat-slider-labeled-min-value-thumb-color;\\n }\\n\\n &.cdk-focused {\\n .mat-slider-thumb,\\n .mat-slider-thumb-label {\\n background-color: $mat-slider-labeled-min-value-thumb-label-color;\\n }\\n }\\n }\\n\\n &:not(.mat-slider-thumb-label-showing) {\\n .mat-slider-thumb {\\n border-color: $mat-slider-off-color;\\n background-color: transparent;\\n }\\n\\n &:hover,\\n &.cdk-focused {\\n .mat-slider-thumb {\\n border-color: $mat-slider-off-focused-color;\\n }\\n\\n &.mat-slider-disabled .mat-slider-thumb {\\n border-color: $mat-slider-disabled-color;\\n }\\n }\\n }\\n }\\n\\n .mat-slider-has-ticks .mat-slider-wrapper::after {\\n border-color: $mat-slider-tick-color;\\n\\n // `mat-color` uses `rgba` for the opacity which won't work with\\n // CSS variables so we need to use `opacity` as a fallback.\\n @if (meta.type-of($mat-slider-tick-color) != color) {\\n opacity: $mat-slider-tick-opacity;\\n }\\n }\\n\\n .mat-slider-horizontal .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to right, $mat-slider-tick-color,\\n $mat-slider-tick-color $mat-slider-tick-size, transparent 0, transparent);\\n // Firefox doesn't draw the gradient correctly with 'to right'\\n // (see https://bugzilla.mozilla.org/show_bug.cgi?id=1314319).\\n background-image: -moz-repeating-linear-gradient(0.0001deg, $mat-slider-tick-color,\\n $mat-slider-tick-color $mat-slider-tick-size, transparent 0, transparent);\\n\\n // `mat-color` uses `rgba` for the opacity which won't work with\\n // CSS variables so we need to use `opacity` as a fallback.\\n @if (meta.type-of($mat-slider-tick-color) != color) {\\n opacity: $mat-slider-tick-opacity;\\n }\\n }\\n\\n .mat-slider-vertical .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to bottom, $mat-slider-tick-color,\\n $mat-slider-tick-color $mat-slider-tick-size, transparent 0, transparent);\\n\\n // `mat-color` uses `rgba` for the opacity which won't work with\\n // CSS variables so we need to use `opacity` as a fallback.\\n @if (meta.type-of($mat-slider-tick-color) != color) {\\n opacity: $mat-slider-tick-opacity;\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-slider-thumb-label-text {\\n font: {\\n family: typography-utils.font-family($config);\\n size: typography-utils.font-size($config, caption);\\n weight: typography-utils.font-weight($config, body-2);\\n }\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-slider') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use 'sass:math';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n@use '../core/density/private/compatibility';\\n@use './stepper-variables';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $foreground: map.get($config, foreground);\\n $background: map.get($config, background);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n\\n .mat-step-header {\\n &.cdk-keyboard-focused,\\n &.cdk-program-focused,\\n &:hover:not([aria-disabled]),\\n &:hover[aria-disabled='false'] {\\n background-color: theming.get-color-from-palette($background, hover);\\n }\\n\\n &:hover[aria-disabled='true'] {\\n cursor: default;\\n }\\n\\n // On touch devices the :hover state will linger on the element after a tap.\\n // Reset it via `@media` after the declaration, because the media query isn't\\n // supported by all browsers yet.\\n @media (hover: none) {\\n &:hover {\\n background: none;\\n }\\n }\\n\\n .mat-step-label,\\n .mat-step-optional {\\n // TODO(josephperrott): Update to using a corrected disabled-text contrast\\n // instead of secondary-text.\\n color: theming.get-color-from-palette($foreground, secondary-text);\\n }\\n\\n .mat-step-icon {\\n // TODO(josephperrott): Update to using a corrected disabled-text contrast\\n // instead of secondary-text.\\n background-color: theming.get-color-from-palette($foreground, secondary-text);\\n color: theming.get-color-from-palette($primary, default-contrast);\\n }\\n\\n .mat-step-icon-selected,\\n .mat-step-icon-state-done,\\n .mat-step-icon-state-edit {\\n background-color: theming.get-color-from-palette($primary);\\n color: theming.get-color-from-palette($primary, default-contrast);\\n }\\n\\n &.mat-accent {\\n .mat-step-icon {\\n color: theming.get-color-from-palette($accent, default-contrast);\\n }\\n\\n .mat-step-icon-selected,\\n .mat-step-icon-state-done,\\n .mat-step-icon-state-edit {\\n background-color: theming.get-color-from-palette($accent);\\n color: theming.get-color-from-palette($accent, default-contrast);\\n }\\n }\\n\\n &.mat-warn {\\n .mat-step-icon {\\n color: theming.get-color-from-palette($warn, default-contrast);\\n }\\n\\n .mat-step-icon-selected,\\n .mat-step-icon-state-done,\\n .mat-step-icon-state-edit {\\n background-color: theming.get-color-from-palette($warn);\\n color: theming.get-color-from-palette($warn, default-contrast);\\n }\\n }\\n\\n .mat-step-icon-state-error {\\n background-color: transparent;\\n color: theming.get-color-from-palette($warn, text);\\n }\\n\\n .mat-step-label.mat-step-label-active {\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n\\n .mat-step-label.mat-step-label-error {\\n color: theming.get-color-from-palette($warn, text);\\n }\\n }\\n\\n .mat-stepper-horizontal, .mat-stepper-vertical {\\n background-color: theming.get-color-from-palette($background, card);\\n }\\n\\n .mat-stepper-vertical-line::before {\\n border-left-color: theming.get-color-from-palette($foreground, divider);\\n }\\n\\n .mat-horizontal-stepper-header::before,\\n .mat-horizontal-stepper-header::after,\\n .mat-stepper-horizontal-line {\\n border-top-color: theming.get-color-from-palette($foreground, divider);\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-stepper-vertical, .mat-stepper-horizontal {\\n font-family: typography-utils.font-family($config);\\n }\\n\\n .mat-step-label {\\n font: {\\n size: typography-utils.font-size($config, body-1);\\n weight: typography-utils.font-weight($config, body-1);\\n };\\n }\\n\\n .mat-step-sub-label-error {\\n font-weight: normal;\\n }\\n\\n .mat-step-label-error {\\n font-size: typography-utils.font-size($config, body-2);\\n }\\n\\n .mat-step-label-selected {\\n font: {\\n size: typography-utils.font-size($config, body-2);\\n weight: typography-utils.font-weight($config, body-2);\\n };\\n }\\n}\\n\\n@mixin density($config-or-theme) {\\n $density-scale: theming.get-density-config($config-or-theme);\\n $height: compatibility.private-density-prop-value(stepper-variables.$density-config,\\n $density-scale, height);\\n $vertical-padding: math.div($height - stepper-variables.$label-header-height, 2);\\n\\n @include compatibility.private-density-legacy-compatibility() {\\n .mat-horizontal-stepper-header {\\n height: $height;\\n }\\n\\n .mat-stepper-label-position-bottom .mat-horizontal-stepper-header,\\n .mat-vertical-stepper-header {\\n padding: $vertical-padding stepper-variables.$side-gap;\\n }\\n\\n // Ensures that the vertical lines for the step content exceed into the step\\n // headers with a given distance (`$mat-stepper-line-gap`) to the step icon.\\n .mat-stepper-vertical-line::before {\\n top: stepper-variables.$line-gap - $vertical-padding;\\n bottom: stepper-variables.$line-gap - $vertical-padding;\\n }\\n\\n // Ensures that the horizontal lines for the step header are centered vertically.\\n .mat-stepper-label-position-bottom .mat-horizontal-stepper-header {\\n &::after, &::before {\\n top: $vertical-padding + math.div(stepper-variables.$label-header-height, 2);\\n }\\n }\\n\\n // Ensures that the horizontal line for the step content is aligned centered vertically.\\n .mat-stepper-label-position-bottom .mat-stepper-horizontal-line {\\n top: $vertical-padding + math.div(stepper-variables.$label-header-height, 2);\\n }\\n }\\n}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-stepper') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n $header-border: 1px solid theming.get-color-from-palette($foreground, divider);\\n\\n .mat-tab-nav-bar,\\n .mat-tab-header {\\n border-bottom: $header-border;\\n }\\n\\n .mat-tab-group-inverted-header {\\n .mat-tab-nav-bar,\\n .mat-tab-header {\\n border-top: $header-border;\\n border-bottom: none;\\n }\\n }\\n\\n .mat-tab-label, .mat-tab-link {\\n color: theming.get-color-from-palette($foreground, text);\\n\\n &.mat-tab-disabled {\\n color: theming.get-color-from-palette($foreground, disabled-text);\\n }\\n }\\n\\n .mat-tab-header-pagination-chevron {\\n border-color: theming.get-color-from-palette($foreground, text);\\n }\\n\\n .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: theming.get-color-from-palette($foreground, disabled-text);\\n }\\n\\n // Remove header border when there is a background color\\n .mat-tab-group[class*='mat-background-'] > .mat-tab-header,\\n .mat-tab-nav-bar[class*='mat-background-'] {\\n border-bottom: none;\\n border-top: none;\\n }\\n\\n .mat-tab-group, .mat-tab-nav-bar {\\n $theme-colors: (\\n primary: $primary,\\n accent: $accent,\\n warn: $warn\\n );\\n\\n @each $name, $color in $theme-colors {\\n // Set the foreground color of the tabs\\n &.mat-#{$name} {\\n @include _label-focus-color($color);\\n @include _ink-bar-color($color);\\n\\n // Override ink bar when background color is the same\\n &.mat-background-#{$name} {\\n > .mat-tab-header, > .mat-tab-link-container {\\n @include _ink-bar-color($color, default-contrast);\\n }\\n }\\n }\\n }\\n\\n @each $name, $color in $theme-colors {\\n // Set background color of the tabs and override focus color\\n &.mat-background-#{$name} {\\n @include _label-focus-color($color);\\n @include _tabs-background($color);\\n }\\n }\\n }\\n}\\n\\n@mixin _ink-bar-color($color, $hue: default) {\\n .mat-ink-bar {\\n background-color: theming.get-color-from-palette($color, $hue);\\n }\\n}\\n\\n@mixin _label-focus-color($tab-focus-color) {\\n .mat-tab-label,\\n .mat-tab-link {\\n &.cdk-keyboard-focused,\\n &.cdk-program-focused {\\n &:not(.mat-tab-disabled) {\\n background-color: theming.get-color-from-palette($tab-focus-color, lighter, 0.3);\\n }\\n }\\n }\\n}\\n\\n@mixin _tabs-background($background-color) {\\n // Note that these selectors target direct descendants so\\n // that the styles don't apply to any nested tab groups.\\n\\n // Set background color for the tab group\\n > .mat-tab-header, > .mat-tab-link-container, > .mat-tab-header-pagination {\\n background-color: theming.get-color-from-palette($background-color);\\n }\\n\\n // Set labels to contrast against background\\n > .mat-tab-header .mat-tab-label, > .mat-tab-link-container .mat-tab-link {\\n color: theming.get-color-from-palette($background-color, default-contrast);\\n\\n &.mat-tab-disabled {\\n color: theming.get-color-from-palette($background-color, default-contrast, 0.4);\\n }\\n }\\n\\n // Set pagination chevrons to contrast background\\n > .mat-tab-header .mat-tab-header-pagination-chevron,\\n > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n > .mat-tab-link-container .mat-focus-indicator::before,\\n > .mat-tab-header .mat-focus-indicator::before {\\n border-color: theming.get-color-from-palette($background-color, default-contrast);\\n }\\n\\n > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n // Set the color opacity via `opacity`, rather than `rgba`, because it may be a CSS variable.\\n border-color: theming.get-color-from-palette($background-color, default-contrast, 1);\\n opacity: 0.4;\\n }\\n\\n // Set ripples color to be the contrast color of the new background. Otherwise the ripple\\n // color will be based on the app background color.\\n > .mat-tab-header .mat-ripple-element,\\n > .mat-tab-link-container .mat-ripple-element,\\n > .mat-tab-header-pagination .mat-ripple-element {\\n // Set the color opacity via `opacity`, rather than `rgba`, because it may be a CSS variable.\\n background-color: theming.get-color-from-palette($background-color, default-contrast, 1);\\n opacity: 0.12;\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-tab-group {\\n font-family: typography-utils.font-family($config);\\n }\\n\\n .mat-tab-label, .mat-tab-link {\\n font: {\\n family: typography-utils.font-family($config, button);\\n size: typography-utils.font-size($config, button);\\n weight: typography-utils.font-weight($config, button);\\n }\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-tabs') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/density/private/compatibility';\\n@use '../core/style/variables';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n@use './toolbar-variables';\\n\\n@mixin _height($height) {\\n .mat-toolbar-multiple-rows {\\n min-height: $height;\\n }\\n .mat-toolbar-row, .mat-toolbar-single-row {\\n height: $height;\\n }\\n}\\n\\n@mixin _palette-styles($palette) {\\n background: theming.get-color-from-palette($palette);\\n color: theming.get-color-from-palette($palette, default-contrast);\\n}\\n\\n@mixin _form-field-overrides {\\n .mat-form-field-underline,\\n .mat-form-field-ripple,\\n .mat-focused .mat-form-field-ripple {\\n background-color: currentColor;\\n }\\n\\n .mat-form-field-label,\\n .mat-focused .mat-form-field-label,\\n .mat-select-value,\\n .mat-select-arrow,\\n .mat-form-field.mat-focused .mat-select-arrow {\\n color: inherit;\\n }\\n\\n .mat-input-element {\\n caret-color: currentColor;\\n }\\n}\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n .mat-toolbar {\\n background: theming.get-color-from-palette($background, app-bar);\\n color: theming.get-color-from-palette($foreground, text);\\n\\n &.mat-primary {\\n @include _palette-styles($primary);\\n }\\n\\n &.mat-accent {\\n @include _palette-styles($accent);\\n }\\n\\n &.mat-warn {\\n @include _palette-styles($warn);\\n }\\n\\n @include _form-field-overrides;\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-toolbar,\\n .mat-toolbar h1,\\n .mat-toolbar h2,\\n .mat-toolbar h3,\\n .mat-toolbar h4,\\n .mat-toolbar h5,\\n .mat-toolbar h6 {\\n @include typography-utils.typography-level($config, title);\\n margin: 0;\\n }\\n}\\n\\n@mixin density($config-or-theme) {\\n $density-scale: theming.get-density-config($config-or-theme);\\n $height-desktop: compatibility.private-density-prop-value(\\n toolbar-variables.$desktop-density-config, $density-scale, height);\\n $height-mobile: compatibility.private-density-prop-value(\\n toolbar-variables.$mobile-density-config, $density-scale, height);\\n\\n @include compatibility.private-density-legacy-compatibility() {\\n // Set the default height for the toolbar.\\n @include _height($height-desktop);\\n\\n // As per specs, toolbars should have a different height in mobile devices. This has been\\n // specified in the old guidelines and is still observable in the new specifications by\\n // looking at the spec images. See: https://material.io/design/components/app-bars-top.html#anatomy\\n @media (variables.$xsmall) {\\n @include _height($height-mobile);\\n }\\n }\\n}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-toolbar') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use 'sass:math';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n\\n$target-height: 22px;\\n$font-size: 10px;\\n$vertical-padding: math.div($target-height - $font-size, 2);\\n\\n$handset-target-height: 30px;\\n$handset-font-size: 14px;\\n$handset-vertical-padding: math.div($handset-target-height - $handset-font-size, 2);\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $background: map.get($config, background);\\n\\n .mat-tooltip {\\n background: theming.get-color-from-palette($background, tooltip, 0.9);\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-tooltip {\\n font-family: typography-utils.font-family($config);\\n font-size: $font-size;\\n padding-top: $vertical-padding;\\n padding-bottom: $vertical-padding;\\n }\\n\\n .mat-tooltip-handset {\\n font-size: $handset-font-size;\\n padding-top: $handset-vertical-padding;\\n padding-bottom: $handset-vertical-padding;\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-tooltip') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\\n\",\"@use 'sass:map';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n@use '../core/style/list-common';\\n\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n .mat-list-base {\\n .mat-list-item {\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n\\n .mat-list-option {\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n\\n .mat-subheader {\\n color: theming.get-color-from-palette($foreground, secondary-text);\\n }\\n\\n .mat-list-item-disabled {\\n background-color: theming.get-color-from-palette($background, disabled-list-option);\\n color: theming.get-color-from-palette($foreground, disabled-text);\\n }\\n }\\n\\n .mat-list-option,\\n .mat-nav-list .mat-list-item,\\n .mat-action-list .mat-list-item {\\n &:hover, &:focus {\\n background: theming.get-color-from-palette($background, 'hover');\\n }\\n }\\n\\n .mat-list-single-selected-option {\\n &, &:hover, &:focus {\\n background: theming.get-color-from-palette($background, hover, 0.12);\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n $font-family: typography-utils.font-family($config);\\n\\n .mat-list-item {\\n font-family: $font-family;\\n }\\n\\n .mat-list-option {\\n font-family: $font-family;\\n }\\n\\n // Default list\\n .mat-list-base {\\n .mat-list-item {\\n font-size: typography-utils.font-size($config, subheading-2);\\n @include list-common.base(typography-utils.font-size($config, body-1));\\n }\\n\\n .mat-list-option {\\n font-size: typography-utils.font-size($config, subheading-2);\\n @include list-common.base(typography-utils.font-size($config, body-1));\\n }\\n\\n .mat-subheader {\\n font-family: typography-utils.font-family($config, body-2);\\n font-size: typography-utils.font-size($config, body-2);\\n font-weight: typography-utils.font-weight($config, body-2);\\n }\\n }\\n\\n // Dense list\\n .mat-list-base[dense] {\\n .mat-list-item {\\n font-size: typography-utils.font-size($config, caption);\\n @include list-common.base(typography-utils.font-size($config, caption));\\n }\\n\\n .mat-list-option {\\n font-size: typography-utils.font-size($config, caption);\\n @include list-common.base(typography-utils.font-size($config, caption));\\n }\\n\\n .mat-subheader {\\n font-family: $font-family;\\n font-size: typography-utils.font-size($config, caption);\\n font-weight: typography-utils.font-weight($config, body-2);\\n }\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-list') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../theming/theming';\\n@use '../typography/typography';\\n@use '../typography/typography-utils';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $foreground: map.get($config, foreground);\\n $background: map.get($config, background);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n\\n .mat-option {\\n color: theming.get-color-from-palette($foreground, text);\\n\\n &:hover:not(.mat-option-disabled),\\n &:focus:not(.mat-option-disabled) {\\n background: theming.get-color-from-palette($background, hover);\\n }\\n\\n // In multiple mode there is a checkbox to show that the option is selected.\\n &.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) {\\n background: theming.get-color-from-palette($background, hover);\\n }\\n\\n &.mat-active {\\n background: theming.get-color-from-palette($background, hover);\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n\\n &.mat-option-disabled {\\n color: theming.get-color-from-palette($foreground, hint-text);\\n }\\n }\\n\\n .mat-primary .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: theming.get-color-from-palette($primary, text);\\n }\\n\\n .mat-accent .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: theming.get-color-from-palette($accent, text);\\n }\\n\\n .mat-warn .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: theming.get-color-from-palette($warn, text);\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-option {\\n font: {\\n family: typography-utils.font-family($config);\\n size: typography-utils.font-size($config, subheading-2);\\n }\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-option') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../theming/theming';\\n@use '../typography/typography';\\n@use '../typography/typography-utils';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $foreground: map.get($config, foreground);\\n\\n .mat-optgroup-label {\\n color: theming.get-color-from-palette($foreground, secondary-text);\\n }\\n\\n .mat-optgroup-disabled .mat-optgroup-label {\\n color: theming.get-color-from-palette($foreground, hint-text);\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-optgroup-label {\\n @include typography-utils.typography-level($config, body-2);\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-optgroup') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n@use '../core/theming/theming';\\n@use '../core/theming/palette';\\n@use '../core/style/private';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $is-dark-theme: map.get($config, is-dark);\\n $accent: map.get($config, accent);\\n\\n .mat-snack-bar-container {\\n // Use the primary text on the dark theme, even though the lighter one uses\\n // a secondary, because the contrast on the light primary text is poor.\\n color: if($is-dark-theme, palette.$dark-primary-text, palette.$light-secondary-text);\\n background: if($is-dark-theme, map.get(palette.$grey-palette, 50), #323232);\\n\\n @include private.private-theme-elevation(6, $config);\\n }\\n\\n .mat-simple-snackbar-action {\\n color: if($is-dark-theme, inherit, theming.get-color-from-palette($accent, text));\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-simple-snackbar {\\n font: {\\n family: typography-utils.font-family($config, body-1);\\n size: typography-utils.font-size($config, body-1);\\n }\\n }\\n\\n .mat-simple-snackbar-action {\\n line-height: 1;\\n font: {\\n family: inherit;\\n size: inherit;\\n weight: typography-utils.font-weight($config, button);\\n }\\n }\\n}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-snack-bar') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/density/private/compatibility';\\n@use '../core/theming/theming';\\n@use '../core/typography/typography';\\n@use '../core/typography/typography-utils';\\n@use './tree-variables';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n .mat-tree {\\n background: theming.get-color-from-palette($background, 'card');\\n }\\n\\n .mat-tree-node,\\n .mat-nested-tree-node {\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n}\\n\\n@mixin typography($config-or-theme) {\\n $config: typography.private-typography-to-2014-config(\\n theming.get-typography-config($config-or-theme));\\n .mat-tree {\\n font-family: typography-utils.font-family($config);\\n }\\n\\n .mat-tree-node,\\n .mat-nested-tree-node {\\n font-weight: typography-utils.font-weight($config, body-1);\\n font-size: typography-utils.font-size($config, body-1);\\n }\\n}\\n\\n@mixin density($config-or-theme) {\\n $density-scale: theming.get-density-config($config-or-theme);\\n $height: compatibility.private-density-prop-value(tree-variables.$density-config,\\n $density-scale, height);\\n\\n @include compatibility.private-density-legacy-compatibility() {\\n .mat-tree-node {\\n min-height: $height;\\n }\\n }\\n}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-tree') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\\n\",\"@use '@angular/cdk';\\n\\n@mixin ripple() {\\n // The host element of an mat-ripple directive should always have a position of \\\"absolute\\\" or\\n // \\\"relative\\\" so that the ripples inside are correctly positioned relatively to the container.\\n .mat-ripple {\\n overflow: hidden;\\n\\n // By default, every ripple container should have position: relative in favor of creating an\\n // easy API for developers using the MatRipple directive.\\n position: relative;\\n\\n // Promote containers that have ripples to a new layer. We want to target `:not(:empty)`,\\n // because we don't want all ripple containers to have their own layer since they're used in a\\n // lot of places and the layer is only relevant while animating. Note that ideally we'd use\\n // the `contain` property here (see #13175), because `:empty` can be broken by having extra\\n // text inside the element, but it isn't very well supported yet.\\n &:not(:empty) {\\n transform: translateZ(0);\\n }\\n }\\n\\n .mat-ripple.mat-ripple-unbounded {\\n overflow: visible;\\n }\\n\\n .mat-ripple-element {\\n position: absolute;\\n border-radius: 50%;\\n pointer-events: none;\\n\\n transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1);\\n\\n // We use a 3d transform here in order to avoid an issue in Safari where\\n // the ripples aren't clipped when inside the shadow DOM (see #24028).\\n transform: scale3d(0, 0, 0);\\n\\n // In high contrast mode the ripple is opaque, causing it to obstruct the content.\\n @include cdk.high-contrast(active, off) {\\n display: none;\\n }\\n }\\n}\\n\",\"/// Emits a CSS class, `.cdk-visually-hidden`. This class can be applied to an element\\n/// to make that element visually hidden while remaining available to assistive technology.\\n@mixin a11y-visually-hidden() {\\n .cdk-visually-hidden {\\n border: 0;\\n clip: rect(0 0 0 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n\\n // This works around a Chrome bug that can cause the tab to crash when large amounts of\\n // non-English text get wrapped: https://bugs.chromium.org/p/chromium/issues/detail?id=1201444\\n white-space: nowrap;\\n\\n // Avoid browsers rendering the focus ring in some cases.\\n outline: 0;\\n\\n // Avoid some cases where the browser will still render the native controls (see #9049).\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n\\n // We need at least one of top/bottom/left/right in order to prevent cases where the\\n // absolute-positioned element is pushed down and can affect scrolling (see #24597).\\n // `left` was chosen here, because it's the least likely to break overrides where the\\n // element might have been positioned (e.g. `mat-checkbox`).\\n left: 0;\\n\\n [dir='rtl'] & {\\n left: auto;\\n right: 0;\\n }\\n }\\n}\\n\\n/// @deprecated Use `a11y-visually-hidden`.\\n@mixin a11y() {\\n @include a11y-visually-hidden;\\n}\\n\\n/// Emits the mixin's content nested under `$selector-context` if `$selector-context`\\n/// is non-empty.\\n/// @param {String} selector-context The selector under which to nest the mixin's content.\\n@mixin _optionally-nest-content($selector-context) {\\n @if ($selector-context == '') {\\n @content;\\n }\\n @else {\\n #{$selector-context} {\\n @content;\\n }\\n }\\n}\\n\\n/// Applies styles for users in high contrast mode. Note that this only applies\\n/// to Microsoft browsers. Chrome can be included by checking for the `html[hc]`\\n/// attribute, however Chrome handles high contrast differently.\\n///\\n/// @param {String} target Type of high contrast setting to target. Defaults to `active`, can be\\n/// `white-on-black` or `black-on-white`.\\n/// @param {String} encapsulation Whether to emit styles for view encapsulation. Values are:\\n/// * `on` - works for `Emulated`, `Native`, and `ShadowDom`\\n/// * `off` - works for `None`\\n/// * `any` - works for all encapsulation modes by emitting the CSS twice (default).\\n@mixin high-contrast($target: active, $encapsulation: 'any') {\\n @if ($target != 'active' and $target != 'black-on-white' and $target != 'white-on-black') {\\n @error 'Unknown cdk-high-contrast value \\\"#{$target}\\\" provided. ' +\\n 'Allowed values are \\\"active\\\", \\\"black-on-white\\\", and \\\"white-on-black\\\"';\\n }\\n\\n @if ($encapsulation != 'on' and $encapsulation != 'off' and $encapsulation != 'any') {\\n @error 'Unknown cdk-high-contrast encapsulation \\\"#{$encapsulation}\\\" provided. ' +\\n 'Allowed values are \\\"on\\\", \\\"off\\\", and \\\"any\\\"';\\n }\\n\\n // If the selector context has multiple parts, such as `.section, .region`, just doing\\n // `.cdk-high-contrast-xxx #{&}` will only apply the parent selector to the first part of the\\n // context. We address this by nesting the selector context under .cdk-high-contrast.\\n @at-root {\\n $selector-context: #{&};\\n\\n @if ($encapsulation != 'on') {\\n // Note that if this selector is updated, the same change has to be made inside\\n // `_overlay.scss` which can't depend on this mixin due to some infrastructure limitations.\\n .cdk-high-contrast-#{$target} {\\n @include _optionally-nest-content($selector-context) {\\n @content;\\n }\\n }\\n }\\n\\n @if ($encapsulation != 'off') {\\n .cdk-high-contrast-#{$target} :host {\\n @include _optionally-nest-content($selector-context) {\\n @content;\\n }\\n }\\n }\\n }\\n}\\n\",\"// We want overlays to always appear over user content, so set a baseline\\n// very high z-index for the overlay container, which is where we create the new\\n// stacking context for all overlays.\\n$overlay-container-z-index: 1000 !default;\\n$overlay-z-index: 1000 !default;\\n$overlay-backdrop-z-index: 1000 !default;\\n\\n// Background color for all of the backdrops\\n$overlay-backdrop-color: rgba(0, 0, 0, 0.32) !default;\\n\\n// Default backdrop animation is based on the Material Design swift-ease-out.\\n$backdrop-animation-duration: 400ms !default;\\n$backdrop-animation-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1) !default;\\n\\n/// Emits structural styles required for cdk/overlay to function.\\n@mixin overlay() {\\n .cdk-overlay-container, .cdk-global-overlay-wrapper {\\n // Disable events from being captured on the overlay container.\\n pointer-events: none;\\n\\n // The container should be the size of the viewport.\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n }\\n\\n // The overlay-container is an invisible element which contains all individual overlays.\\n .cdk-overlay-container {\\n position: fixed;\\n z-index: $overlay-container-z-index;\\n\\n &:empty {\\n // Hide the element when it doesn't have any child nodes. This doesn't\\n // include overlays that have been detached, rather than disposed.\\n display: none;\\n }\\n }\\n\\n // We use an extra wrapper element in order to use make the overlay itself a flex item.\\n // This makes centering the overlay easy without running into the subpixel rendering\\n // problems tied to using `transform` and without interfering with the other position\\n // strategies.\\n .cdk-global-overlay-wrapper {\\n display: flex;\\n position: absolute;\\n z-index: $overlay-z-index;\\n }\\n\\n // A single overlay pane.\\n .cdk-overlay-pane {\\n // Note: it's important for this one to start off `absolute`,\\n // in order for us to be able to measure it correctly.\\n position: absolute;\\n pointer-events: auto;\\n box-sizing: border-box;\\n z-index: $overlay-z-index;\\n\\n // For connected-position overlays, we set `display: flex` in\\n // order to force `max-width` and `max-height` to take effect.\\n display: flex;\\n max-width: 100%;\\n max-height: 100%;\\n }\\n\\n .cdk-overlay-backdrop {\\n // TODO(jelbourn): reuse sidenav fullscreen mixin.\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n\\n z-index: $overlay-backdrop-z-index;\\n pointer-events: auto;\\n -webkit-tap-highlight-color: transparent;\\n transition: opacity $backdrop-animation-duration $backdrop-animation-timing-function;\\n opacity: 0;\\n\\n &.cdk-overlay-backdrop-showing {\\n opacity: 1;\\n\\n // Note that we can't import and use the `high-contrast` mixin from `_a11y.scss`, because\\n // this file will be copied to the top-level `cdk` package when putting together the files\\n // for npm. Any relative import paths we use here will become invalid once the file is copied.\\n .cdk-high-contrast-active & {\\n // In high contrast mode the rgba background will become solid\\n // so we need to fall back to making it opaque using `opacity`.\\n opacity: 0.6;\\n }\\n }\\n }\\n\\n .cdk-overlay-dark-backdrop {\\n background: $overlay-backdrop-color;\\n }\\n\\n .cdk-overlay-transparent-backdrop {\\n // Define a transition on the visibility so that the `transitionend` event can fire immediately.\\n transition: visibility 1ms linear, opacity 1ms linear;\\n visibility: hidden;\\n opacity: 1;\\n\\n // Note: as of Firefox 57, having the backdrop be `background: none` will prevent it from\\n // capturing the user's mouse scroll events. Since we also can't use something like\\n // `rgba(0, 0, 0, 0)`, we work around the inconsistency by not setting the background at\\n // all and using `opacity` to make the element transparent.\\n &.cdk-overlay-backdrop-showing {\\n opacity: 0;\\n visibility: visible;\\n }\\n }\\n\\n .cdk-overlay-backdrop-noop-animation {\\n transition: none;\\n }\\n\\n // Overlay parent element used with the connected position strategy. Used to constrain the\\n // overlay element's size to fit within the viewport.\\n .cdk-overlay-connected-position-bounding-box {\\n position: absolute;\\n z-index: $overlay-z-index;\\n\\n // We use `display: flex` on this element exclusively for centering connected overlays.\\n // When *not* centering, a top/left/bottom/right will be set which overrides the normal\\n // flex layout.\\n display: flex;\\n\\n // We use the `column` direction here to avoid some flexbox issues in Edge\\n // when using the \\\"grow after open\\\" options.\\n flex-direction: column;\\n\\n // Add some dimensions so the element has an `innerText` which some people depend on in tests.\\n min-width: 1px;\\n min-height: 1px;\\n }\\n\\n // Used when disabling global scrolling.\\n .cdk-global-scrollblock {\\n position: fixed;\\n\\n // Necessary for the content not to lose its width. Note that we're using 100%, instead of\\n // 100vw, because 100vw includes the width plus the scrollbar, whereas 100% is the width\\n // that the element had before we made it `fixed`.\\n width: 100%;\\n\\n // Note: this will always add a scrollbar to whatever element it is on, which can\\n // potentially result in double scrollbars. It shouldn't be an issue, because we won't\\n // block scrolling on a page that doesn't have a scrollbar in the first place.\\n overflow-y: scroll;\\n }\\n}\\n\",\"// Structural styles for the autosize text fields.\\n@mixin text-field-autosize() {\\n // Remove the resize handle on autosizing textareas, because whatever height\\n // the user resized to will be overwritten once they start typing again.\\n textarea.cdk-textarea-autosize {\\n resize: none;\\n }\\n\\n // This class is temporarily applied to the textarea when it is being measured. It is immediately\\n // removed when measuring is complete. We use `!important` rules here to make sure user-specified\\n // rules do not interfere with the measurement.\\n textarea.cdk-textarea-autosize-measuring {\\n @include _autosize-measuring-base;\\n height: auto !important;\\n overflow: hidden !important;\\n }\\n\\n // Similar to the `cdk-textarea-autosize-measuring` class, but only applied on Firefox. We need\\n // to use this class, because Firefox has a bug where changing the `overflow` breaks the user's\\n // ability to undo/redo what they were typing (see #16629). This class is only scoped to Firefox,\\n // because the measurements there don't seem to be affected by the `height: 0`, whereas on other\\n // browsers they are, e.g. Chrome detects longer text and IE does't resize back to normal.\\n // Identical issue report: https://bugzilla.mozilla.org/show_bug.cgi?id=448784\\n textarea.cdk-textarea-autosize-measuring-firefox {\\n @include _autosize-measuring-base;\\n height: 0 !important;\\n }\\n}\\n\\n// Core styles that enable monitoring autofill state of text fields.\\n@mixin text-field-autofill() {\\n // Keyframes that apply no styles, but allow us to monitor when an text field becomes autofilled\\n // by watching for the animation events that are fired when they start. Note: the /*!*/ comment is\\n // needed to prevent LibSass from stripping the keyframes out.\\n // Based on: https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\\n @keyframes cdk-text-field-autofill-start {/*!*/}\\n @keyframes cdk-text-field-autofill-end {/*!*/}\\n\\n .cdk-text-field-autofill-monitored:-webkit-autofill {\\n // Since Chrome 80 we need a 1ms delay, or the animationstart event won't fire.\\n animation: cdk-text-field-autofill-start 0s 1ms;\\n }\\n\\n .cdk-text-field-autofill-monitored:not(:-webkit-autofill) {\\n // Since Chrome 80 we need a 1ms delay, or the animationstart event won't fire.\\n animation: cdk-text-field-autofill-end 0s 1ms;\\n }\\n}\\n\\n@mixin _autosize-measuring-base {\\n // Having 2px top and bottom padding seems to fix a bug where Chrome gets an incorrect\\n // measurement. We just have to account for it later and subtract it off the final result.\\n padding: 2px 0 !important;\\n box-sizing: content-box !important;\\n}\\n\\n// Used to generate UIDs for keyframes used to change the text field autofill styles.\\n$autofill-color-frame-count: 0;\\n\\n// Mixin used to apply custom background and foreground colors to an autofilled text field.\\n// Based on: https://stackoverflow.com/questions/2781549/\\n// removing-input-background-colour-for-chrome-autocomplete#answer-37432260\\n@mixin text-field-autofill-color($background, $foreground:'') {\\n @keyframes cdk-text-field-autofill-color-#{$autofill-color-frame-count} {\\n to {\\n background: $background;\\n @if $foreground != '' { color: $foreground; }\\n }\\n }\\n\\n &:-webkit-autofill {\\n animation: cdk-text-field-autofill-color-#{$autofill-color-frame-count} both;\\n }\\n\\n &.cdk-text-field-autofill-monitored:-webkit-autofill {\\n // Since Chrome 80 we need a 1ms delay for cdk-text-field-autofill-start, or the animationstart\\n // event won't fire.\\n animation: cdk-text-field-autofill-start 0s 1ms,\\n cdk-text-field-autofill-color-#{$autofill-color-frame-count} both;\\n }\\n\\n $autofill-color-frame-count: $autofill-color-frame-count + 1 !global;\\n}\\n\\n// @deprecated Use `autosize` and `autofill` instead.\\n@mixin text-field {\\n @include text-field-autosize();\\n @include text-field-autofill();\\n}\\n\",\"@use 'sass:map';\\n@use '@angular/cdk';\\n@use '../style/layout-common';\\n\\n// Private sass variables that will be used as reference throughout component stylesheets.\\n$default-border-width: 3px;\\n$default-border-style: solid;\\n$default-border-color: transparent;\\n$default-border-radius: 4px;\\n\\n// Mixin that renders the focus indicator structural styles.\\n@mixin structural-styling($prefix) {\\n .#{$prefix}-focus-indicator {\\n position: relative;\\n\\n &::before {\\n @include layout-common.fill();\\n box-sizing: border-box;\\n pointer-events: none;\\n display: var(--#{$prefix}-focus-indicator-display, none); // Hide the indicator by default.\\n border: var(\\n --#{$prefix}-focus-indicator-border-width,\\n #{$default-border-width}\\n )\\n var(\\n --#{$prefix}-focus-indicator-border-style,\\n #{$default-border-style}\\n )\\n var(\\n --#{$prefix}-focus-indicator-border-color,\\n #{$default-border-color}\\n );\\n border-radius: var(\\n --#{$prefix}-focus-indicator-border-radius,\\n #{$default-border-radius}\\n );\\n }\\n\\n // By default, render the focus indicator when the focus indicator host element takes focus.\\n // Defining a pseudo element's content will cause it to render.\\n &:focus::before {\\n content: '';\\n }\\n }\\n\\n // Enable the indicator in high contrast mode.\\n @include cdk.high-contrast(active, off) {\\n @include customize-focus-indicators((display: block), $prefix);\\n }\\n}\\n\\n// Generates CSS variable declarations from a map.\\n@mixin _output-variables($map) {\\n @each $key, $value in $map {\\n @if ($value) {\\n --#{$key}: #{$value};\\n }\\n }\\n}\\n\\n// Mixin that dedups CSS variables for the strong-focus-indicators mixin.\\n@mixin customize-focus-indicators($config, $prefix) {\\n $border-style: map.get($config, border-style);\\n $border-width: map.get($config, border-width);\\n $border-radius: map.get($config, border-radius);\\n $border-color: map.get($config, border-color);\\n $display: map.get($config, display);\\n $map: (\\n '#{$prefix}-focus-indicator-border-style': $border-style,\\n '#{$prefix}-focus-indicator-border-width': $border-width,\\n '#{$prefix}-focus-indicator-border-radius': $border-radius,\\n '#{$prefix}-focus-indicator-border-color': $border-color,\\n '#{$prefix}-focus-indicator-display': $display,\\n );\\n\\n @if (&) {\\n @include _output-variables($map);\\n }\\n @else {\\n // We use `html` here instead of `:root`, because the\\n // latter causes some issues with internal tooling.\\n html {\\n @include _output-variables($map);\\n }\\n }\\n}\\n\",\"// This mixin ensures an element spans to fill the nearest ancestor with defined positioning.\\n@mixin fill {\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n position: absolute;\\n}\\n\",\"@use 'sass:map';\\n@use 'sass:meta';\\n@use '../theming/theming';\\n\\n// Colors for the ripple elements.\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $foreground: map.get($config, foreground);\\n $foreground-base: map.get($foreground, base);\\n $color-opacity: 0.1;\\n\\n .mat-ripple-element {\\n // If the ripple color is resolves to a color *type*, we can use it directly, otherwise\\n // (e.g. it resolves to a CSS variable) we fall back to using the color and setting an opacity.\\n @if (meta.type-of($foreground-base) == color) {\\n background-color: rgba($foreground-base, $color-opacity);\\n }\\n @else {\\n background-color: $foreground-base;\\n opacity: $color-opacity;\\n }\\n }\\n}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-ripple') {\\n $color: theming.get-color-config($theme);\\n @if $color != null {\\n @include color($color);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../../theming/theming';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $is-dark-theme: map.get($config, is-dark);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $background: map.get($config, background);\\n\\n // NOTE(traviskaufman): While the spec calls for translucent blacks/whites for disabled colors,\\n // this does not work well with elements layered on top of one another. To get around this we\\n // blend the colors together based on the base color and the theme background.\\n $white-30pct-opacity-on-dark: #686868;\\n $black-26pct-opacity-on-light: #b0b0b0;\\n $disabled-color: if($is-dark-theme, $white-30pct-opacity-on-dark, $black-26pct-opacity-on-light);\\n $colored-box-selector: '.mat-pseudo-checkbox-checked, .mat-pseudo-checkbox-indeterminate';\\n\\n .mat-pseudo-checkbox {\\n color: theming.get-color-from-palette(map.get($config, foreground), secondary-text);\\n\\n &::after {\\n color: theming.get-color-from-palette($background, background);\\n }\\n }\\n\\n .mat-pseudo-checkbox-disabled {\\n color: $disabled-color;\\n }\\n\\n .mat-primary .mat-pseudo-checkbox-checked,\\n .mat-primary .mat-pseudo-checkbox-indeterminate {\\n background: theming.get-color-from-palette(map.get($config, primary));\\n }\\n\\n // Default to the accent color. Note that the pseudo checkboxes are meant to inherit the\\n // theme from their parent, rather than implementing their own theming, which is why we\\n // don't attach to the `mat-*` classes. Also note that this needs to be below `.mat-primary`\\n // in order to allow for the color to be overwritten if the checkbox is inside a parent that\\n // has `mat-accent` and is placed inside another parent that has `mat-primary`.\\n .mat-pseudo-checkbox-checked,\\n .mat-pseudo-checkbox-indeterminate,\\n .mat-accent .mat-pseudo-checkbox-checked,\\n .mat-accent .mat-pseudo-checkbox-indeterminate {\\n background: theming.get-color-from-palette(map.get($config, accent));\\n }\\n\\n .mat-warn .mat-pseudo-checkbox-checked,\\n .mat-warn .mat-pseudo-checkbox-indeterminate {\\n background: theming.get-color-from-palette(map.get($config, warn));\\n }\\n\\n .mat-pseudo-checkbox-checked,\\n .mat-pseudo-checkbox-indeterminate {\\n &.mat-pseudo-checkbox-disabled {\\n background: $disabled-color;\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-pseudo-checkbox') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use 'theming/theming';\\n@use './style/private';\\n@use './ripple/ripple-theme';\\n@use './option/option-theme';\\n@use './option/optgroup-theme';\\n@use './selection/pseudo-checkbox/pseudo-checkbox-theme';\\n@use './style/elevation';\\n\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n // Wrapper element that provides the theme background when the user's content isn't\\n // inside of a `mat-sidenav-container`. Note that we need to exclude the ampersand\\n // selector in case the mixin is included at the top level.\\n .mat-app-background#{if(&, ', &.mat-app-background', '')} {\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n background-color: theming.get-color-from-palette($background, background);\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n\\n // Provides external CSS classes for each elevation value. Each CSS class is formatted as\\n // `mat-elevation-z$zValue` where `$zValue` corresponds to the z-space to which the element is\\n // elevated.\\n @for $zValue from 0 through 24 {\\n .#{elevation.$prefix}#{$zValue} {\\n @include private.private-theme-elevation($zValue, $config);\\n }\\n }\\n\\n // Marker that is used to determine whether the user has added a theme to their page.\\n @at-root {\\n .mat-theme-loaded-marker {\\n display: none;\\n }\\n }\\n}\\n\\n// Mixin that renders all of the core styles that depend on the theme.\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n // Wrap the sub-theme includes in the duplicate theme styles mixin. This ensures that\\n // there won't be multiple warnings. e.g. if `mat-core-theme` reports a warning, then\\n // the imported themes (such as `mat-ripple-theme`) should not report again.\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-core') {\\n @include ripple-theme.theme($theme);\\n @include option-theme.theme($theme);\\n @include optgroup-theme.theme($theme);\\n @include pseudo-checkbox-theme.theme($theme);\\n\\n $color: theming.get-color-config($theme);\\n @if $color != null {\\n @include color($color);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use 'sass:math';\\n@use 'sass:meta';\\n@use 'variables';\\n\\n\\n// A collection of mixins and CSS classes that can be used to apply elevation to a material\\n// element.\\n// See: https://material.io/design/environment/elevation.html\\n// Examples:\\n//\\n//\\n// .mat-foo {\\n// @include $mat-elevation(2);\\n//\\n// &:active {\\n// @include $mat-elevation(8);\\n// }\\n// }\\n//\\n// <div id=\\\"external-card\\\" class=\\\"mat-elevation-z2\\\"><p>Some content</p></div>\\n//\\n// For an explanation of the design behind how elevation is implemented, see the design doc at\\n// https://goo.gl/Kq0k9Z.\\n\\n// Colors for umbra, penumbra, and ambient shadows. As described in the design doc, each elevation\\n// level is created using a set of 3 shadow values, one for umbra (the shadow representing the\\n// space completely obscured by an object relative to its light source), one for penumbra (the\\n// space partially obscured by an object), and one for ambient (the space which contains the object\\n// itself). For a further explanation of these terms and their meanings, see\\n// https://en.wikipedia.org/wiki/Umbra,_penumbra_and_antumbra.\\n\\n// Maps for the different shadow sets and their values within each z-space. These values were\\n// created by taking a few reference shadow sets created by Google's Designers and interpolating\\n// all of the values between them.\\n\\n@function _get-umbra-map($color, $opacity) {\\n $shadow-color: if(meta.type-of($color) == color, rgba($color, $opacity * 0.2), $color);\\n\\n @return (\\n 0: '0px 0px 0px 0px #{$shadow-color}',\\n 1: '0px 2px 1px -1px #{$shadow-color}',\\n 2: '0px 3px 1px -2px #{$shadow-color}',\\n 3: '0px 3px 3px -2px #{$shadow-color}',\\n 4: '0px 2px 4px -1px #{$shadow-color}',\\n 5: '0px 3px 5px -1px #{$shadow-color}',\\n 6: '0px 3px 5px -1px #{$shadow-color}',\\n 7: '0px 4px 5px -2px #{$shadow-color}',\\n 8: '0px 5px 5px -3px #{$shadow-color}',\\n 9: '0px 5px 6px -3px #{$shadow-color}',\\n 10: '0px 6px 6px -3px #{$shadow-color}',\\n 11: '0px 6px 7px -4px #{$shadow-color}',\\n 12: '0px 7px 8px -4px #{$shadow-color}',\\n 13: '0px 7px 8px -4px #{$shadow-color}',\\n 14: '0px 7px 9px -4px #{$shadow-color}',\\n 15: '0px 8px 9px -5px #{$shadow-color}',\\n 16: '0px 8px 10px -5px #{$shadow-color}',\\n 17: '0px 8px 11px -5px #{$shadow-color}',\\n 18: '0px 9px 11px -5px #{$shadow-color}',\\n 19: '0px 9px 12px -6px #{$shadow-color}',\\n 20: '0px 10px 13px -6px #{$shadow-color}',\\n 21: '0px 10px 13px -6px #{$shadow-color}',\\n 22: '0px 10px 14px -6px #{$shadow-color}',\\n 23: '0px 11px 14px -7px #{$shadow-color}',\\n 24: '0px 11px 15px -7px #{$shadow-color}'\\n );\\n}\\n\\n@function _get-penumbra-map($color, $opacity) {\\n $shadow-color: if(meta.type-of($color) == color, rgba($color, $opacity * 0.14), $color);\\n\\n @return (\\n 0: '0px 0px 0px 0px #{$shadow-color}',\\n 1: '0px 1px 1px 0px #{$shadow-color}',\\n 2: '0px 2px 2px 0px #{$shadow-color}',\\n 3: '0px 3px 4px 0px #{$shadow-color}',\\n 4: '0px 4px 5px 0px #{$shadow-color}',\\n 5: '0px 5px 8px 0px #{$shadow-color}',\\n 6: '0px 6px 10px 0px #{$shadow-color}',\\n 7: '0px 7px 10px 1px #{$shadow-color}',\\n 8: '0px 8px 10px 1px #{$shadow-color}',\\n 9: '0px 9px 12px 1px #{$shadow-color}',\\n 10: '0px 10px 14px 1px #{$shadow-color}',\\n 11: '0px 11px 15px 1px #{$shadow-color}',\\n 12: '0px 12px 17px 2px #{$shadow-color}',\\n 13: '0px 13px 19px 2px #{$shadow-color}',\\n 14: '0px 14px 21px 2px #{$shadow-color}',\\n 15: '0px 15px 22px 2px #{$shadow-color}',\\n 16: '0px 16px 24px 2px #{$shadow-color}',\\n 17: '0px 17px 26px 2px #{$shadow-color}',\\n 18: '0px 18px 28px 2px #{$shadow-color}',\\n 19: '0px 19px 29px 2px #{$shadow-color}',\\n 20: '0px 20px 31px 3px #{$shadow-color}',\\n 21: '0px 21px 33px 3px #{$shadow-color}',\\n 22: '0px 22px 35px 3px #{$shadow-color}',\\n 23: '0px 23px 36px 3px #{$shadow-color}',\\n 24: '0px 24px 38px 3px #{$shadow-color}'\\n );\\n}\\n\\n@function _get-ambient-map($color, $opacity) {\\n $shadow-color: if(meta.type-of($color) == color, rgba($color, $opacity * 0.12), $color);\\n\\n @return (\\n 0: '0px 0px 0px 0px #{$shadow-color}',\\n 1: '0px 1px 3px 0px #{$shadow-color}',\\n 2: '0px 1px 5px 0px #{$shadow-color}',\\n 3: '0px 1px 8px 0px #{$shadow-color}',\\n 4: '0px 1px 10px 0px #{$shadow-color}',\\n 5: '0px 1px 14px 0px #{$shadow-color}',\\n 6: '0px 1px 18px 0px #{$shadow-color}',\\n 7: '0px 2px 16px 1px #{$shadow-color}',\\n 8: '0px 3px 14px 2px #{$shadow-color}',\\n 9: '0px 3px 16px 2px #{$shadow-color}',\\n 10: '0px 4px 18px 3px #{$shadow-color}',\\n 11: '0px 4px 20px 3px #{$shadow-color}',\\n 12: '0px 5px 22px 4px #{$shadow-color}',\\n 13: '0px 5px 24px 4px #{$shadow-color}',\\n 14: '0px 5px 26px 4px #{$shadow-color}',\\n 15: '0px 6px 28px 5px #{$shadow-color}',\\n 16: '0px 6px 30px 5px #{$shadow-color}',\\n 17: '0px 6px 32px 5px #{$shadow-color}',\\n 18: '0px 7px 34px 6px #{$shadow-color}',\\n 19: '0px 7px 36px 6px #{$shadow-color}',\\n 20: '0px 8px 38px 7px #{$shadow-color}',\\n 21: '0px 8px 40px 7px #{$shadow-color}',\\n 22: '0px 8px 42px 7px #{$shadow-color}',\\n 23: '0px 9px 44px 8px #{$shadow-color}',\\n 24: '0px 9px 46px 8px #{$shadow-color}'\\n );\\n}\\n\\n// The default duration value for elevation transitions.\\n$transition-duration: 280ms !default;\\n\\n// The default easing value for elevation transitions.\\n$transition-timing-function: variables.$fast-out-slow-in-timing-function;\\n\\n// The default color for elevation shadows.\\n$color: black !default;\\n\\n// The default opacity scaling value for elevation shadows.\\n$opacity: 1 !default;\\n\\n// Prefix for elevation-related selectors.\\n$prefix: 'mat-elevation-z';\\n\\n// Applies the correct css rules to an element to give it the elevation specified by $zValue.\\n// The $zValue must be between 0 and 24.\\n@mixin elevation($zValue, $color: $color, $opacity: $opacity) {\\n @if meta.type-of($zValue) != number or not math.is-unitless($zValue) {\\n @error '$zValue must be a unitless number';\\n }\\n @if $zValue < 0 or $zValue > 24 {\\n @error '$zValue must be between 0 and 24';\\n }\\n\\n box-shadow: #{map.get(_get-umbra-map($color, $opacity), $zValue)},\\n #{map.get(_get-penumbra-map($color, $opacity), $zValue)},\\n #{map.get(_get-ambient-map($color, $opacity), $zValue)};\\n}\\n\\n// Applies the elevation to an element in a manner that allows\\n// consumers to override it via the Material elevation classes.\\n@mixin overridable-elevation(\\n $zValue,\\n $color: $color,\\n $opacity: $opacity) {\\n &:not([class*='#{$prefix}']) {\\n @include elevation($zValue, $color, $opacity);\\n }\\n}\\n\\n// Returns a string that can be used as the value for a transition property for elevation.\\n// Calling this function directly is useful in situations where a component needs to transition\\n// more than one property.\\n//\\n// .foo {\\n// transition: mat-elevation-transition-property-value(), opacity 100ms ease;\\n// }\\n@function private-transition-property-value(\\n $duration: $transition-duration,\\n $easing: $transition-timing-function) {\\n @return box-shadow #{$duration} #{$easing};\\n}\\n\\n// Applies the correct css rules needed to have an element transition between elevations.\\n// This mixin should be applied to elements whose elevation values will change depending on their\\n// context (e.g. when active or disabled).\\n//\\n// NOTE(traviskaufman): Both this mixin and the above function use default parameters so they can\\n// be used in the same way by clients.\\n@mixin elevation-transition(\\n $duration: $transition-duration,\\n $easing: $transition-timing-function) {\\n transition: private-transition-property-value($duration, $easing);\\n}\\n\",\"@use 'sass:map';\\n@use '../core/style/private';\\n@use '../core/theming/theming';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $foreground: map.get($config, foreground);\\n $background: map.get($config, background);\\n\\n .mat-autocomplete-panel {\\n @include private.private-theme-overridable-elevation(4, $config);\\n background: theming.get-color-from-palette($background, card);\\n color: theming.get-color-from-palette($foreground, text);\\n\\n // Selected options in autocompletes should not be gray, but we\\n // only want to override the background for selected options if\\n // they are *not* in hover or focus state. This change has to be\\n // made here because base option styles are shared between the\\n // autocomplete and the select.\\n .mat-option.mat-selected:not(.mat-active):not(:hover) {\\n background: theming.get-color-from-palette($background, card);\\n\\n &:not(.mat-option-disabled) {\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-autocomplete') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/theming/theming';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $foreground: map.get($config, foreground);\\n\\n .mat-divider {\\n border-top-color: theming.get-color-from-palette($foreground, divider);\\n }\\n\\n .mat-divider-vertical {\\n border-right-color: theming.get-color-from-palette($foreground, divider);\\n }\\n}\\n\\n@mixin typography($config-or-theme) {}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-divider') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@mixin private-expansion-focus {\\n .mat-expansion-panel {\\n & .mat-expansion-panel-header.cdk-keyboard-focused,\\n & .mat-expansion-panel-header.cdk-program-focused,\\n &:not(.mat-expanded) .mat-expansion-panel-header:hover {\\n &:not([aria-disabled='true']) {\\n @content;\\n }\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../theming/theming';\\n\\n// Renders a gradient for showing the dashed line when the input is disabled.\\n// Unlike using a border, a gradient allows us to adjust the spacing of the dotted line\\n// to match the Material Design spec.\\n@mixin private-control-disabled-underline($color) {\\n background-image: linear-gradient(to right, $color 0%, $color 33%, transparent 0%);\\n background-size: 4px 100%;\\n background-repeat: repeat-x;\\n}\\n\\n// Figures out the color of the placeholder for a form control.\\n// Used primarily to prevent the various form controls from\\n// becoming out of sync since these colors aren't in a palette.\\n@function private-control-placeholder-color($config) {\\n $foreground: map.get($config, foreground);\\n $is-dark-theme: map.get($config, is-dark);\\n @return theming.get-color-from-palette($foreground, secondary-text,\\n if($is-dark-theme, 0.5, 0.42));\\n}\\n\",\"@use 'sass:map';\\n@use '../core/theming/theming';\\n@use '../core/style/form-common';\\n\\n\\n// Theme styles that only apply to the standard appearance of the form-field.\\n\\n@mixin standard-color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $foreground: map.get($config, foreground);\\n $is-dark-theme: map.get($config, is-dark);\\n $underline-color:\\n theming.get-color-from-palette($foreground, divider, if($is-dark-theme, 0.7, 0.42));\\n\\n .mat-form-field-appearance-standard {\\n .mat-form-field-underline {\\n background-color: $underline-color;\\n }\\n\\n &.mat-form-field-disabled .mat-form-field-underline {\\n @include form-common.private-control-disabled-underline($underline-color);\\n }\\n }\\n}\\n\\n@mixin standard-typography($config-or-theme) {}\\n\\n@mixin private-form-field-standard-density($config-or-theme) {}\\n\\n@mixin standard-theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-form-field-standard') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include standard-color($color);\\n }\\n @if $density != null {\\n @include private-form-field-standard-density($density);\\n }\\n @if $typography != null {\\n @include standard-typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:map';\\n@use '../core/theming/theming';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n .mat-icon {\\n &.mat-primary {\\n color: theming.get-color-from-palette($primary, text);\\n }\\n\\n &.mat-accent {\\n color: theming.get-color-from-palette($accent, text);\\n }\\n\\n &.mat-warn {\\n color: theming.get-color-from-palette($warn, text);\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-icon') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\\n\",\"// stylelint-disable material/no-prefixes\\n@mixin user-select($value) {\\n -webkit-user-select: $value;\\n user-select: $value;\\n}\\n\\n@mixin input-placeholder {\\n &::placeholder {\\n @content;\\n }\\n\\n &::-moz-placeholder {\\n @content;\\n }\\n\\n &::-webkit-input-placeholder {\\n @content;\\n }\\n\\n // Note: this isn't necessary anymore since we don't support\\n // IE, but it caused some presubmit failures in #23416.\\n &:-ms-input-placeholder {\\n @content;\\n }\\n}\\n\\n@mixin backface-visibility($value) {\\n -webkit-backface-visibility: $value;\\n backface-visibility: $value;\\n}\\n\\n@mixin color-adjust($value) {\\n -webkit-print-color-adjust: $value;\\n color-adjust: $value;\\n}\\n\\n@mixin private-background-clip($value) {\\n -webkit-background-clip: $value;\\n background-clip: $value;\\n}\\n\\n@mixin clip-path($value) {\\n -webkit-clip-path: $value;\\n clip-path: $value;\\n}\\n// stylelint-enable\\n\",\"@use 'sass:map';\\n@use 'sass:meta';\\n@use 'sass:color';\\n@use '../core/theming/theming';\\n\\n// Approximates the correct buffer color by using a mix between the theme color\\n// and the theme's background color.\\n@function _get-buffer-color($theme, $background) {\\n $theme-color: theming.get-color-from-palette($theme);\\n // Return fallback color if the theme uses variables to define colors.\\n @if (meta.type-of($theme-color) != 'color' or meta.type-of($background) != 'color') {\\n @return theming.get-color-from-palette($theme, lighter);\\n }\\n @return color.mix($theme-color, $background, $weight: 25%);\\n}\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $background: map.get(map.get($config, background), background);\\n\\n .mat-progress-bar-background {\\n fill: _get-buffer-color($primary, $background);\\n }\\n\\n .mat-progress-bar-buffer {\\n background-color: _get-buffer-color($primary, $background);\\n }\\n\\n .mat-progress-bar-fill::after {\\n background-color: theming.get-color-from-palette($primary);\\n }\\n\\n .mat-progress-bar.mat-accent {\\n .mat-progress-bar-background {\\n fill: _get-buffer-color($accent, $background);\\n }\\n\\n .mat-progress-bar-buffer {\\n background-color: _get-buffer-color($accent, $background);\\n }\\n\\n .mat-progress-bar-fill::after {\\n background-color: theming.get-color-from-palette($accent);\\n }\\n }\\n\\n .mat-progress-bar.mat-warn {\\n .mat-progress-bar-background {\\n fill: _get-buffer-color($warn, $background);\\n }\\n\\n .mat-progress-bar-buffer {\\n background-color: _get-buffer-color($warn, $background);\\n }\\n\\n .mat-progress-bar-fill::after {\\n background-color: theming.get-color-from-palette($warn);\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-progress-bar') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\\n\",\"@use 'sass:map';\\n@use '../core/theming/theming';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n\\n .mat-progress-spinner, .mat-spinner {\\n circle {\\n stroke: theming.get-color-from-palette($primary);\\n }\\n\\n &.mat-accent circle {\\n stroke: theming.get-color-from-palette($accent);\\n }\\n\\n &.mat-warn circle {\\n stroke: theming.get-color-from-palette($warn);\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-progress-spinner') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:color';\\n@use 'sass:map';\\n@use 'sass:meta';\\n@use '../core/style/private';\\n@use '../core/theming/theming';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $primary: map.get($config, primary);\\n $accent: map.get($config, accent);\\n $warn: map.get($config, warn);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n $drawer-background-color: theming.get-color-from-palette($background, dialog);\\n $drawer-container-background-color: theming.get-color-from-palette($background, background);\\n $drawer-push-background-color: theming.get-color-from-palette($background, dialog);\\n $drawer-side-border: solid 1px theming.get-color-from-palette($foreground, divider);\\n\\n .mat-drawer-container {\\n background-color: $drawer-container-background-color;\\n color: theming.get-color-from-palette($foreground, text);\\n }\\n\\n .mat-drawer {\\n background-color: $drawer-background-color;\\n color: theming.get-color-from-palette($foreground, text);\\n\\n &.mat-drawer-push {\\n background-color: $drawer-push-background-color;\\n }\\n\\n &:not(.mat-drawer-side) {\\n // The elevation of z-16 is noted in the design specifications.\\n // See https://material.io/design/components/navigation-drawer.html\\n @include private.private-theme-elevation(16, $config);\\n }\\n }\\n\\n .mat-drawer-side {\\n border-right: $drawer-side-border;\\n\\n &.mat-drawer-end {\\n border-left: $drawer-side-border;\\n border-right: none;\\n }\\n }\\n\\n [dir='rtl'] .mat-drawer-side {\\n border-left: $drawer-side-border;\\n border-right: none;\\n\\n &.mat-drawer-end {\\n border-left: none;\\n border-right: $drawer-side-border;\\n }\\n }\\n\\n .mat-drawer-backdrop.mat-drawer-shown {\\n $opacity: 0.6;\\n $backdrop-color: theming.get-color-from-palette($background, card, $opacity);\\n\\n @if (meta.type-of($backdrop-color) == color) {\\n // We use invert() here to have the darken the background color expected to be used. If the\\n // background is light, we use a dark backdrop. If the background is dark,\\n // we use a light backdrop.\\n background-color: color.invert($backdrop-color);\\n }\\n @else {\\n // If we couldn't resolve the backdrop color to a color value, fall back to using\\n // `opacity` to make it opaque since its end value could be a solid color.\\n background-color: $backdrop-color;\\n opacity: $opacity;\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-sidenav') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use 'sass:color';\\n@use 'sass:map';\\n@use 'sass:meta';\\n@use '../core/theming/theming';\\n\\n@mixin color($config-or-theme) {\\n $config: theming.get-color-config($config-or-theme);\\n $background: map.get($config, background);\\n $foreground: map.get($config, foreground);\\n\\n .mat-sort-header-arrow {\\n $table-background: theming.get-color-from-palette($background, 'card');\\n $text-color: theming.get-color-from-palette($foreground, secondary-text);\\n\\n // Because the arrow is made up of multiple elements that are stacked on top of each other,\\n // we can't use the semi-transparent color from the theme directly. If the value is a color\\n // *type*, we convert it into a solid color by taking the opacity from the rgba value and\\n // using the value to determine the percentage of the background to put into foreground\\n // when mixing the colors together. Otherwise, if it resolves to something different\\n // (e.g. it resolves to a CSS variable), we use the color directly.\\n @if (meta.type-of($table-background) == color and meta.type-of($text-color) == color) {\\n $text-opacity: opacity($text-color);\\n color: color.mix($table-background, rgba($text-color, 1), (1 - $text-opacity) * 100%);\\n }\\n @else {\\n color: $text-color;\\n }\\n }\\n}\\n\\n@mixin typography($config-or-theme) {}\\n\\n@mixin _density($config-or-theme) {}\\n\\n@mixin theme($theme-or-color-config) {\\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-sort') {\\n $color: theming.get-color-config($theme);\\n $density: theming.get-density-config($theme);\\n $typography: theming.get-typography-config($theme);\\n\\n @if $color != null {\\n @include color($color);\\n }\\n @if $density != null {\\n @include _density($density);\\n }\\n @if $typography != null {\\n @include typography($typography);\\n }\\n }\\n}\\n\",\"@use '@angular/material' as mat;\\n\\n@import 'app/utils/material/slide-toggle.component';\\n@import 'app/utils/material/checkbox.component.scss';\\n@import 'app/utils/material/radio-button.component';\\n@import \\\"../common/variables\\\";\\n@import \\\"../common/rtl\\\";\\n\\n$custom-typography: mat.define-typography-config(\\n $font-family: \\\"'Open Sans', sans-serif\\\"\\n);\\n@include mat.core($custom-typography);\\n$mat-i360: (\\n 50: #e8f5e9,\\n 100: $primary-bg,\\n 200: $primary-bg,\\n 300: $primary-color,\\n 400: $primary-color,\\n 500: $primary-color,\\n 600: $primary-color,\\n 700: $primary-color,\\n 800: $primary-color,\\n 900: $primary-color,\\n A100: $primary-bg,\\n A200: $primary-color,\\n A400: $primary-color,\\n A700: $primary-color,\\n contrast: (\\n 50: rgba(black, 0.12),\\n 100: rgba(black, 0.12),\\n 200: rgba(black, 0.12),\\n 300: rgba(black, 0.12),\\n 400: rgba(black, 0.12),\\n 500: white,\\n 600: white,\\n 700: white,\\n 800: rgba(white, 0.12),\\n 900: rgba(white, 0.12),\\n A100: rgba(black, 0.12),\\n A200: rgba(black, 0.12),\\n A400: rgba(black, 0.12),\\n A700: rgba(black, 0.12),\\n )\\n);\\n$i360-red: mat.define-palette(map_merge(mat.$red-palette, (\\n 500: $error-text,\\n)));\\n\\n$i360-primary: mat.define-palette($mat-i360);\\n$i360-accent: mat.define-palette(map_merge(mat.$deep-orange-palette, (\\n 500: #f77c00,\\n)));\\n\\n$i360-theme: mat.define-light-theme($i360-primary, $i360-accent, $i360-red);\\n\\n@include mat.all-component-themes($i360-theme);\\n\\n@include mat.slider-theme(map_merge($i360-theme, (\\n accent: mat.define-palette(map_merge(mat.$deep-orange-palette, (\\n 500: $primary-color,\\n ))),\\n foreground: (\\n base: #848484,\\n slider-min: white,\\n slider-off: #bebebe,\\n slider-off-active: #bebebe,\\n ),\\n)));\\n@include i360-slide-toggle-theme($i360-theme);\\n@include i360-radio-button-theme($i360-theme);\\n@include i360-checkbox-theme($i360-theme);\\n\\n.mat-radio-button, .mat-checkbox {\\n font: 13px 'Open Sans', Helvetica, sans-serif;\\n}\\n\\n.mat-select-panel {\\n max-width: 100%;\\n}\\n\\n.mat-select-trigger span,\\n.mat-option-text {\\n font-size: 14px;\\n color: rgba(0,0,0,.87);\\n}\\n\\n.mat-option-text {\\n display: flex; // line-height: normal not working in da (probably because of table-cell)\\n // need another way to align content\\n align-items: center;\\n}\\n\\n.mat-menu-content {\\n .mat-menu-item {\\n a {\\n margin: 0 -16px;\\n padding: 0 16px;\\n }\\n }\\n line-height: 48px; // for da =)\\n a, a:hover, a:focus {\\n outline: none;\\n color: $gray-fg;\\n text-decoration: none;\\n font-size: 13px;\\n font-family: \\\"Open Sans\\\", Helvetica, sans-serif;\\n display: flex;\\n align-items: center;\\n flex-wrap: nowrap;\\n &.active {\\n background-color: rgba(55, 171, 99, 0.11);\\n }\\n }\\n}\\n.mat-ripple {\\n position: absolute;\\n}\\n.i360-modal-tabs {\\n .mat-ripple {\\n position: relative;\\n }\\n .mat-tab-label {\\n font-family: 'Noto Sans', sans-serif;\\n font-style: normal;\\n opacity: 1;\\n font-weight: normal;\\n font-size: 16px;\\n line-height: 22px;\\n /* identical to box height */\\n text-transform: uppercase;\\n color: #000000;\\n flex-grow: 0;\\n min-width: 80px;\\n padding: 0 10px;\\n min-height: 15px;\\n &.mat-tab-label-active {\\n font-weight: bold;\\n }\\n }\\n .mat-tab-body-content {\\n padding-top: 15px;\\n }\\n}\\n\\n.mat-form-field-placeholder-wrapper,\\n.mat-form-field-label-wrapper { // in cpanel mat-select's placeholder partially visible\\n // broken encapsulation in material components leads to low specificity and randomly broken mat-select's placeholder\\n box-sizing: content-box;\\n}\\n\\n.mat-form-field-label {\\n display: none;\\n}\\n.mat-form-field-empty.mat-form-field-label {\\n display: block;\\n}\\n\\n.mat-raised-button, .mat-button {\\n border-radius: 4px;\\n line-height: 32px;\\n height: 32px;\\n font-family: \\\"Open Sans\\\", sans-serif;\\n &.mat-raised-button:not(:active) {\\n box-shadow: 0 6px 6px 0 rgba(0, 0, 0, 0.13), 0 0 6px 0 rgba(0, 0, 0, 0.12)!important;\\n &:hover {\\n box-shadow: 0 7px 6px 0 rgba(0, 0, 0, 0.13), 0 0 6px 0 rgba(0, 0, 0, 0.12)!important;\\n }\\n }\\n .material-icons {\\n @include rtl-margin-right(10px);\\n @include rtl-margin-left(-15px);\\n margin-top: -2px;\\n }\\n &.capitalize {\\n text-transform: capitalize;\\n }\\n}\\n\\nmat-chip-list.i360-chips mat-chip[i360-chip] {\\n background-color: #e2f7e9;\\n height: 27px;\\n border: solid 1px #cecece;\\n border-radius: 2px;\\n cursor: pointer;\\n\\n &[i360-chip] { // for higher specificity\\n margin: 3px 2.5px;\\n }\\n\\n i360-ellipsis {\\n max-width: 276px;\\n }\\n}\\n\\n.mat-form-field-type-mat-input {\\n .mat-form-field-prefix+.mat-form-field-infix i360-error {\\n @include rtl-left(-48px);\\n }\\n .mat-form-field-wrapper {\\n margin: 0;\\n }\\n &.mat-form-field-should-float {\\n .mat-form-field-label-wrapper {\\n overflow: visible;\\n margin-top: 3px;\\n }\\n }\\n .mat-form-field-label, &.mat-form-field.mat-form-field-invalid.ng-pristine .mat-form-field-label {\\n margin-top: -4px;\\n font-size: 12px;\\n color: #a8abae;\\n }\\n .mat-form-field-flex {\\n height: 40px;\\n margin-top: 0;\\n }\\n .mat-form-field-infix {\\n margin-top: -8px;\\n @include rtl-margin-left(10px);\\n }\\n .mat-form-field-prefix {\\n font-size: 16px;\\n @include rtl-margin-left(7px);\\n @include rtl-margin-right(7px);\\n mat-icon {\\n font-size: 30px;\\n transform: rotate(90deg);\\n }\\n }\\n input {\\n font-size: 12px;\\n margin-top: -5px;\\n margin-bottom: 9px;\\n caret-color: $gray-fg;\\n border: none!important;\\n box-shadow: none!important;\\n padding: 0;\\n background: transparent;\\n height: auto;\\n }\\n &.mat-focused {\\n .mat-form-field-outline {\\n //box-shadow: 0 1px 1px 0 #f4f4f3, 0 1px 1px 0 #f4f4f3;\\n background-image: linear-gradient(to bottom, #ffffff, #fbfcff);\\n > * {\\n // FIXME: variable\\n border-color: #11cb84;\\n }\\n }\\n .mat-form-field-label {\\n // FIXME: variable\\n color: #11cb84;\\n }\\n }\\n &.mat-form-field-invalid.ng-dirty {\\n .mat-form-field-outline {\\n box-shadow: 0 1px 1px 0 #f4f4f3, 0 1px 1px 0 #f4f4f3;\\n background-image: linear-gradient(to bottom, #ffffff, #fbfcff);\\n > * {\\n // FIXME: variable\\n border-color: #fc4c4c;\\n }\\n }\\n .mat-form-field-label {\\n // FIXME: variable\\n color: #fc4c4c;\\n }\\n }\\n &.mat-form-field-should-float .mat-form-field-outline-gap {\\n // override border-color: #fc4c4c; above\\n border-top-color: transparent !important;\\n }\\n\\n .mat-form-field-outline {\\n top: 0;\\n box-shadow: 0 1px 1px 0 #f4f4f3;\\n // FIXME: rtl\\n // rtl languages are still not available\\n > * {\\n background-color: #ffffff;\\n border-color: #dee1ec;\\n &.mat-form-field-outline-start {\\n border-left-width: 1px;\\n border-top-width: 1px;\\n border-bottom-width: 1px;\\n }\\n &.mat-form-field-outline-end {\\n border-right-width: 1px;\\n border-top-width: 1px;\\n border-bottom-width: 1px;\\n }\\n &.mat-form-field-outline-gap {\\n border-bottom-width: 1px;\\n border-top-width: 1px;\\n }\\n }\\n }\\n}\\n\\nmat-icon svg {\\n // Fixes svg height in iframe in DA Evolution skin.\\n // Should work great inside mat-icon. Not sure about other places.\\n height: inherit;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[2]!../../../../node_modules/resolve-url-loader/index.js??ruleSet[1].rules[6].rules[1].use[0]!../../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[6].rules[1].use[1]!./app.style.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[2]!../../../../node_modules/resolve-url-loader/index.js??ruleSet[1].rules[6].rules[1].use[0]!../../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[6].rules[1].use[1]!./app.style.scss\";\n export default content && content.locals ? content.locals : undefined;\n","var map = {\n\t\"./de.i18n.txt\": [\n\t\t187,\n\t\t\"src_i18n_de_i18n_txt\"\n\t],\n\t\"./en.i18n.txt\": [\n\t\t8354,\n\t\t\"src_i18n_en_i18n_txt\"\n\t],\n\t\"./es.i18n.txt\": [\n\t\t9635,\n\t\t\"src_i18n_es_i18n_txt\"\n\t],\n\t\"./fr.i18n.txt\": [\n\t\t6708,\n\t\t\"src_i18n_fr_i18n_txt\"\n\t],\n\t\"./it.i18n.txt\": [\n\t\t7440,\n\t\t\"src_i18n_it_i18n_txt\"\n\t],\n\t\"./ja.i18n.txt\": [\n\t\t3436,\n\t\t\"src_i18n_ja_i18n_txt\"\n\t],\n\t\"./nl.i18n.txt\": [\n\t\t9873,\n\t\t\"src_i18n_nl_i18n_txt\"\n\t],\n\t\"./pt.i18n.txt\": [\n\t\t6993,\n\t\t\"src_i18n_pt_i18n_txt\"\n\t],\n\t\"./ru.i18n.txt\": [\n\t\t6429,\n\t\t\"src_i18n_ru_i18n_txt\"\n\t],\n\t\"./tr.i18n.txt\": [\n\t\t455,\n\t\t\"src_i18n_tr_i18n_txt\"\n\t],\n\t\"./zh-cn.i18n.txt\": [\n\t\t7372,\n\t\t\"src_i18n_zh-cn_i18n_txt\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__.t(id, 7 | 16);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 3533;\nmodule.exports = webpackAsyncContext;","module.exports = __WEBPACK_EXTERNAL_MODULE__5237__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9293__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3164__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7220__;","module.exports = __WEBPACK_EXTERNAL_MODULE__464__;","module.exports = __WEBPACK_EXTERNAL_MODULE__6435__;","module.exports = __WEBPACK_EXTERNAL_MODULE__136__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8208__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3850__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7765__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7602__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2240__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7832__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3389__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4564__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4633__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1375__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3530__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8340__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5290__;","module.exports = __WEBPACK_EXTERNAL_MODULE__596__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5400__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2191__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1792__;","module.exports = __WEBPACK_EXTERNAL_MODULE__230__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3303__;","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType<typeof availableTypedArrays>} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\n/* eslint global-require: 0 */\n// the code is structured this way so that bundlers can\n// alias out `has-symbols` to `() => true` or `() => false` if your target\n// environments' Symbol capabilities are known, and then use\n// dead code elimination on the rest of this module.\n//\n// Similarly, `isarray` can be aliased to `Array.isArray` if\n// available in all target environments.\n\nvar isArguments = require('is-arguments');\nvar getStopIterationIterator = require('stop-iteration-iterator');\n\nif (require('has-symbols')() || require('has-symbols/shams')()) {\n\tvar $iterator = Symbol.iterator;\n\t// Symbol is available natively or shammed\n\t// natively:\n\t// - Chrome >= 38\n\t// - Edge 12-14?, Edge >= 15 for sure\n\t// - FF >= 36\n\t// - Safari >= 9\n\t// - node >= 0.12\n\tmodule.exports = function getIterator(iterable) {\n\t\t// alternatively, `iterable[$iterator]?.()`\n\t\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\n\t\t\treturn iterable[$iterator]();\n\t\t}\n\t\tif (isArguments(iterable)) {\n\t\t\t// arguments objects lack Symbol.iterator\n\t\t\t// - node 0.12\n\t\t\treturn Array.prototype[$iterator].call(iterable);\n\t\t}\n\t};\n} else {\n\t// Symbol is not available, native or shammed\n\tvar isArray = require('isarray');\n\tvar isString = require('is-string');\n\tvar GetIntrinsic = require('get-intrinsic');\n\tvar $Map = GetIntrinsic('%Map%', true);\n\tvar $Set = GetIntrinsic('%Set%', true);\n\tvar callBound = require('call-bind/callBound');\n\tvar $arrayPush = callBound('Array.prototype.push');\n\tvar $charCodeAt = callBound('String.prototype.charCodeAt');\n\tvar $stringSlice = callBound('String.prototype.slice');\n\n\tvar advanceStringIndex = function advanceStringIndex(S, index) {\n\t\tvar length = S.length;\n\t\tif ((index + 1) >= length) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar first = $charCodeAt(S, index);\n\t\tif (first < 0xD800 || first > 0xDBFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar second = $charCodeAt(S, index + 1);\n\t\tif (second < 0xDC00 || second > 0xDFFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\treturn index + 2;\n\t};\n\n\tvar getArrayIterator = function getArrayIterator(arraylike) {\n\t\tvar i = 0;\n\t\treturn {\n\t\t\tnext: function next() {\n\t\t\t\tvar done = i >= arraylike.length;\n\t\t\t\tvar value;\n\t\t\t\tif (!done) {\n\t\t\t\t\tvalue = arraylike[i];\n\t\t\t\t\ti += 1;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t};\n\n\tvar getNonCollectionIterator = function getNonCollectionIterator(iterable, noPrimordialCollections) {\n\t\tif (isArray(iterable) || isArguments(iterable)) {\n\t\t\treturn getArrayIterator(iterable);\n\t\t}\n\t\tif (isString(iterable)) {\n\t\t\tvar i = 0;\n\t\t\treturn {\n\t\t\t\tnext: function next() {\n\t\t\t\t\tvar nextIndex = advanceStringIndex(iterable, i);\n\t\t\t\t\tvar value = $stringSlice(iterable, i, nextIndex);\n\t\t\t\t\ti = nextIndex;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: nextIndex > iterable.length,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// es6-shim and es-shims' es-map use a string \"_es6-shim iterator_\" property on different iterables, such as MapIterator.\n\t\tif (noPrimordialCollections && typeof iterable['_es6-shim iterator_'] !== 'undefined') {\n\t\t\treturn iterable['_es6-shim iterator_']();\n\t\t}\n\t};\n\n\tif (!$Map && !$Set) {\n\t\t// the only language iterables are Array, String, arguments\n\t\t// - Safari <= 6.0\n\t\t// - Chrome < 38\n\t\t// - node < 0.12\n\t\t// - FF < 13\n\t\t// - IE < 11\n\t\t// - Edge < 11\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\tif (iterable != null) {\n\t\t\t\treturn getNonCollectionIterator(iterable, true);\n\t\t\t}\n\t\t};\n\t} else {\n\t\t// either Map or Set are available, but Symbol is not\n\t\t// - es6-shim on an ES5 browser\n\t\t// - Safari 6.2 (maybe 6.1?)\n\t\t// - FF v[13, 36)\n\t\t// - IE 11\n\t\t// - Edge 11\n\t\t// - Safari v[6, 9)\n\n\t\tvar isMap = require('is-map');\n\t\tvar isSet = require('is-set');\n\n\t\t// Firefox >= 27, IE 11, Safari 6.2 - 9, Edge 11, es6-shim in older envs, all have forEach\n\t\tvar $mapForEach = callBound('Map.prototype.forEach', true);\n\t\tvar $setForEach = callBound('Set.prototype.forEach', true);\n\t\tif (typeof process === 'undefined' || !process.versions || !process.versions.node) { // \"if is not node\"\n\n\t\t\t// Firefox 17 - 26 has `.iterator()`, whose iterator `.next()` either\n\t\t\t// returns a value, or throws a StopIteration object. These browsers\n\t\t\t// do not have any other mechanism for iteration.\n\t\t\tvar $mapIterator = callBound('Map.prototype.iterator', true);\n\t\t\tvar $setIterator = callBound('Set.prototype.iterator', true);\n\t\t}\n\t\t// Firefox 27-35, and some older es6-shim versions, use a string \"@@iterator\" property\n\t\t// this returns a proper iterator object, so we should use it instead of forEach.\n\t\t// newer es6-shim versions use a string \"_es6-shim iterator_\" property.\n\t\tvar $mapAtAtIterator = callBound('Map.prototype.@@iterator', true) || callBound('Map.prototype._es6-shim iterator_', true);\n\t\tvar $setAtAtIterator = callBound('Set.prototype.@@iterator', true) || callBound('Set.prototype._es6-shim iterator_', true);\n\n\t\tvar getCollectionIterator = function getCollectionIterator(iterable) {\n\t\t\tif (isMap(iterable)) {\n\t\t\t\tif ($mapIterator) {\n\t\t\t\t\treturn getStopIterationIterator($mapIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($mapAtAtIterator) {\n\t\t\t\t\treturn $mapAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($mapForEach) {\n\t\t\t\t\tvar entries = [];\n\t\t\t\t\t$mapForEach(iterable, function (v, k) {\n\t\t\t\t\t\t$arrayPush(entries, [k, v]);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(entries);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isSet(iterable)) {\n\t\t\t\tif ($setIterator) {\n\t\t\t\t\treturn getStopIterationIterator($setIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($setAtAtIterator) {\n\t\t\t\t\treturn $setAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($setForEach) {\n\t\t\t\t\tvar values = [];\n\t\t\t\t\t$setForEach(iterable, function (v) {\n\t\t\t\t\t\t$arrayPush(values, v);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(values);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\treturn getCollectionIterator(iterable) || getNonCollectionIterator(iterable);\n\t\t};\n\t}\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// 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","// 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 \"\" + chunkId + \".\" + {\"src_i18n_de_i18n_txt\":\"d82bb0c548e5c5fb\",\"src_i18n_en_i18n_txt\":\"c8dfd0d368f7936d\",\"src_i18n_es_i18n_txt\":\"478769654330ec0b\",\"src_i18n_fr_i18n_txt\":\"fde5f59f7612ee5e\",\"src_i18n_it_i18n_txt\":\"16ce1dbe76f5cce2\",\"src_i18n_ja_i18n_txt\":\"9a15ba9c6e8e2aae\",\"src_i18n_nl_i18n_txt\":\"5b7610f508dc4d0c\",\"src_i18n_pt_i18n_txt\":\"20f8a8250eb25aa6\",\"src_i18n_ru_i18n_txt\":\"faecbe4b6a7f1381\",\"src_i18n_tr_i18n_txt\":\"d504c3295d7be2b8\",\"src_i18n_zh-cn_i18n_txt\":\"a898e0526ee85090\",\"src_app_empty-route_empty-route_module_ts\":\"31685d638808bbb6\"}[chunkId] + \".js\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.tu = (url) => (__webpack_require__.tt().createScriptURL(url));","__webpack_require__.p = \"\";","// 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\t\"main\": 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} else installedChunks[chunkId] = 0;\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, moreModules, runtime] = data;\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[\"webpackJsonpnav-root\"] = self[\"webpackJsonpnav-root\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\n__webpack_require__(5296);\nvar __webpack_exports__ = __webpack_require__(6688);\n"],"names":["leafPrototypes","getProto","inProgress","dataWebpackPrefix","policy","APP_NAMES","enableSvgIcons","iconRegistry","sanitizer","appName","imagePath","__webpack_public_path__","commonIcons","icons","NAV_ROOT","EMAIL_ROOT","OTHER_ROOT","icon","addSvgIcon","bypassSecurityTrustResourceUrl","HTTP_INTERCEPTORS","SkipSelf","Optional","Inject","RequestParams","constructor","method","params","toString","JSON","stringify","this","ExtendedRequestParams","command","super","Result","AgentStatus","zoned","source","Observable","subscriber","zone","window","Zone","current","subscribe","next","args","run","complete","error","ZonedBehaviorSubject","BehaviorSubject","pipe","AppState","version","VERSION","release","RELEASE","imunifyStatus","OK","responseStatusCode","refresherEnabled","mousePositionY","rpcReady$","demo","lang","notifications","lowResourcesMode$","upgradingInProgress$","isAllowedAssistedCleanup$","factory","ɵfac","Notification","item","counter","ticks","type","title","content","__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","create","e","message","prototype","Error","name","atob","bind","t","String","replace","n","o","a","charAt","fromCharCode","indexOf","decodeURIComponent","charCodeAt","toUpperCase","header","parse","split","LANGUAGE_KEY","PANEL_PLESK","PANEL_DA","PANEL_CPANEL","PANEL_NOPANEL","linksToLve","cPanel","location","href","substring","search","Plesk","DirectAdmin","Panel","defaultScanFolders","noPanel","csfInterfaces","I360_PANEL","isPlesk","isCpanel","isDirectAdmin","isNoPanel","defaultScanFolder","csfInterfaceUrl","linkToLvePhpSelector","getLang","document","querySelector","i360lang","localStorage","getItem","baseEndpoint","exceptions","postOnly","propertyKey","descriptor","originalMethod","value","req","includes","url","apply","handle","INVALID_TOKEN_MESSAGE","AuthAPI","login","credentials","get","loginData","cutOrderByParam","newParams","AccountStatus","EmailsSettingsApis","list","requestCommandIE","request_method","updateAccount","limit_bytes","userName","account_name","incoming_filtration_enabled","releases_limit","undefined","getAccountSettings","getLimits","isIncomingEnabled","updateLimits","data","getAccountSettingDefaults","updateAccountSettingDefaults","settings","entries","map","setting","int_value","getAccountList","deleteAccounts","resetAccounts","EmailItem","emailId","email_id","accountName","reasons","recipients","sender","subject","emailDirection","email_direction","receivedDate","received_date","scriptPath","scriptHeader","domain","path","buildScriptPath","script_header","EmailsApi","editEmails","viewEmail","raw","imunifyEmailVersion","TOKEN_LOCAL_STORAGE_FIELD_NAME","I360Role","AuthService","injector","authState","discoverToken","logout","setToken","goToLoginPage","router","Router","startsWith","navigate","queryParams","targetUrl","addTokenToRequest","body","token","getToken","copyOfBody","clone","intercept","role","none","catchError","messages","handleLogout","throwError","switchMap","event","HttpResponse","of","EMPTY","newToken","setItem","parseToken","i360role","updateRole","i360userName","urlTree","parseUrl","urlToken","navigateByUrl","replaceUrl","payload","jwtDecode","user_type","username","canActivate","route","state","check","canLoad","segments","currentNavigation","getCurrentNavigation","extractedUrl","root","children","PRIMARY_OUTLET","createUrlTree","IMUNIFY_PACKAGE","i0","i1","i2","AuthState","loginChange","isAdmin","isClient","roles","admin","client","featuresDisabledCommands","getDisabledRouteCommands","availableRoute","featuresDisabledRedirectCommands","LicenseAPI","register","licenseKey","regkey","unregister","rstatus","Product","LicenseType","Package","productIdToReadableName","imunifyAV","imunifyAVPlus","imunify360","License","product","ip_license","eligible_for_imunify_patch","assign","redirect_url","getProduct","productName","isSame","otherLicense","keys1","keys","keys2","isFreeVersion","upgradeAvailable","license_type","isFailed","status","hasMessage","isPatchEnabled","isLimitExceeded","user_count","user_limit","EulaAPI","accept","Eula","text","LicenseState","license","eula","eulaFailed","getLicense","getServerIdForTestMode","ReputationAPI","checkDomains","infectedDomains","Vendor","vendorToLinkMapping","google","yandex","spamhaus","phishtank","openphish","mitchellkrogza","vendorToReadableTextMapping","ReputationItem","threats","threat","vendor","timestamp","link","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","done","Promise","then","fn","self","err","formatDecimalParts","x","p","toExponential","coefficient","slice","prefixExponent","re","formatSpecifier","specifier","match","exec","FormatSpecifier","fill","align","sign","symbol","zero","width","comma","precision","trim","exponent","Array","join","Math","max","%","toFixed","round","abs","toLocaleString","f","g","toPrecision","formatRounded","min","floor","locale","format","prefixes","grouping","thousands","group","identity","call","Number","j","push","reverse","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","prefix","test","toLowerCase","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","isNaN","s","out","formatTrim","Infinity","padding","formatPrefix","NaN","k","pow","formatLocale","getCaller","stack","extractUrlParamValue","paramName","urlParams","URLSearchParams","has","id","expiration","pricing","im_av","standard","im_360_1","im_360_30","im_360_250","im_360_unlimited","upgrade_url_360","DEFAULT_DATA","strategy","warnings","RulePlugin","modsec","ossec","IPScope","IPList","DEFAULT_ENVIRONMENT","SDK_VERSION","GLOBAL_OBJ","globalThis","getGlobalSingleton","creator","obj","gbl","__SENTRY__","versionedCarrier","getMainCarrier","getSentryCarrier","carrier","objectToString","isError","wat","isInstanceOf","isBuiltin","className","isErrorEvent","isDOMError","isString","isParameterizedString","isPrimitive","isPlainObject","isEvent","Event","isThenable","Boolean","base","_e","isVueViewModel","__isVue","_isVue","WINDOW","htmlTreeAsString","elem","options","currentElem","MAX_TRAVERSE_HEIGHT","height","len","separator","sepLength","nextStr","keyAttrs","isArray","maxStringLength","_htmlElementAsString","parentNode","_oO","el","tagName","HTMLElement","dataset","keyAttrPairs","filter","keyAttr","getAttribute","forEach","keyAttrPair","classes","allowedAttrs","attr","DEBUG_BUILD","__SENTRY_DEBUG__","CONSOLE_LEVELS","originalConsoleMethods","consoleSandbox","callback","console","wrappedFuncs","wrappedLevels","level","originalConsoleMethod","logger","enabled","enable","disable","isEnabled","truncate","str","safeJoin","input","delimiter","output","isMatchingPattern","pattern","requireExactStringMatch","stringMatchesSomePattern","testString","patterns","some","replacementFactory","original","wrapped","markFunctionWrapped","addNonEnumerableProperty","writable","configurable","o_O","proto","getOriginalFunction","func","__sentry_original__","convertToPlainObject","getOwnProperties","newObj","serializeEventTarget","currentTarget","CustomEvent","detail","Element","extractedProps","property","hasOwnProperty","dropUndefinedKeys","inputValue","_dropUndefinedKeys","Map","memoizationMap","getPrototypeOf","e2","isPojo","memoVal","returnValue","set","getOwnPropertyNames","dateTimestampInSeconds","Date","now","timestampInSeconds","performance","approxStartingTimeOrigin","timeOrigin","createUnixTimestampInSecondsFunc","_browserPerformanceTimeOriginMode","threshold","performanceNow","dateNow","timeOriginDelta","timeOriginIsReliable","navigationStart","timing","navigationStartDelta","uuid4","crypto","msCrypto","getRandomByte","random","randomUUID","getRandomValues","typedArray","Uint8Array","_","getFirstException","exception","values","getEventDescription","event_id","eventId","firstException","addExceptionTypeValue","addExceptionMechanism","newMechanism","currentMechanism","mechanism","handled","mergedData","checkOrSetAlreadyCaught","__sentry_captured__","isAlreadyCaptured","makeSession","context","startingTime","session","sid","init","started","duration","errors","ignoreDuration","toJSON","toISOString","did","abnormal_mechanism","attrs","environment","ip_address","ipAddress","user_agent","userAgent","sessionToJSON","updateSession","user","email","generateTraceId","generateSpanId","merge","initialObj","mergeObj","levels","SCOPE_SPAN_FIELD","_setSpanForScope","scope","span","_getSpanForScope","ScopeClass","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","_propagationContext","traceId","spanId","newScope","flags","_level","_session","_transactionName","_fingerprint","_requestSession","_client","_lastEventId","setClient","setLastEventId","lastEventId","getClient","addScopeListener","addEventProcessor","setUser","_notifyScopeListeners","getUser","getRequestSession","setRequestSession","requestSession","setTags","tags","setTag","setExtras","extras","setExtra","extra","setFingerprint","fingerprint","setLevel","setTransactionName","setContext","setSession","getSession","update","captureContext","scopeToMerge","scopeInstance","Scope","getScopeData","contexts","propagationContext","clear","setPropagationContext","addBreadcrumb","breadcrumb","maxBreadcrumbs","maxCrumbs","mergedBreadcrumb","recordDroppedEvent","getLastBreadcrumb","clearBreadcrumbs","addAttachment","attachment","clearAttachments","breadcrumbs","attachments","eventProcessors","sdkProcessingMetadata","transactionName","setSDKProcessingMetadata","newData","getPropagationContext","captureException","hint","syntheticException","originalException","captureMessage","captureEvent","AsyncContextStack","isolationScope","assignedScope","assignedIsolationScope","_stack","_isolationScope","withScope","_pushScope","maybePromiseResult","_popScope","res","getStackTop","getScope","getIsolationScope","pop","getAsyncContextStack","sentry","withSetScope","withIsolationScope","getAsyncContextStrategy","acs","withSetIsolationScope","getCurrentScope","getTraceContextFromScope","parentSpanId","trace_id","span_id","parent_span_id","States","resolvedSyncPromise","SyncPromise","rejectedSyncPromise","reason","executor","__init","__init2","__init3","__init4","_state","PENDING","_handlers","_resolve","_reject","onfulfilled","onrejected","result","_executeHandlers","catch","val","finally","onfinally","isRejected","_setResult","RESOLVED","REJECTED","_value","cachedHandlers","handler","notifyEventProcessors","processors","index","processor","final","parsedStackResults","lastKeysCount","cachedFilenameDebugIds","getFilenameToDebugIdMap","stackParser","debugIdMap","debugIdKeys","reduce","acc","stackKey","parsedStack","stackFrame","filename","debugId","UNKNOWN_FUNCTION","WEBPACK_ERROR_REGEXP","STRIP_FRAME_REGEXP","createStackParser","parsers","sortedParsers","sort","b","skipFirstLines","framesToPop","frames","lines","line","cleanedLine","parser","frame","localStack","from","getLastStackFrame","function","stripSentryFramesAndReverse","arr","defaultFunctionName","getFunctionName","getFramesFromEvent","stacktrace","normalize","depth","maxProperties","visit","ERROR","normalizeToSize","object","maxSize","normalized","encodeURI","utf8Length","memo","hasWeakSet","WeakSet","inner","add","delete","splice","memoBuilder","memoize","unmemoize","isFinite","stringified","_events","global","objName","getConstructorName","stringifyValue","remainingDepth","valueWithToJSON","numAdded","visitable","visitKey","visitValue","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","baggageHeaderToDynamicSamplingContext","baggageHeader","baggageObject","curr","currBaggageObject","baggageHeaderToObject","parseBaggageHeader","dynamicSamplingContext","SENTRY_BAGGAGE_KEY_PREFIX","baggageEntry","keyOrValue","METRICS_SPAN_FIELD","getMetricSummaryJsonForSpan","storage","exportKey","summary","hasShownSpanDropWarning","spanToTraceContext","isRemote","spanContext","spanToJSON","spanTimeInputToSeconds","ensureTimestampInSeconds","getTime","getSpanJSON","spanIsSentrySpan","castSpan","attributes","startTime","endTime","spanIsOpenTelemetrySdkTraceBaseSpan","description","start_timestamp","getStatusMessage","op","origin","_metrics_summary","spanIsSampled","traceFlags","code","ROOT_SPAN_FIELD","getRootSpan","showSpanDropWarning","warn","FROZEN_DSC_FIELD","getDynamicSamplingContextFromClient","getOptions","publicKey","public_key","getDsn","dsc","emit","getDynamicSamplingContextFromSpan","rootSpan","frozenDsc","traceState","traceStateDsc","dscOnTraceState","jsonSpan","maybeSampleRate","sample_rate","transaction","maybeOptions","__SENTRY_TRACING__","enableTracing","hasTracingEnabled","sampled","applyScopeDataToEvent","cleanedExtra","cleanedTags","cleanedUser","cleanedContexts","applyDataToEvent","trace","applySpanToEvent","concat","applyFingerprintToEvent","mergedBreadcrumbs","applyBreadcrumbsToEvent","applySdkMetadataToEvent","mergeScopeData","mergeData","mergeAndOverwriteScopeData","prop","mergeVal","prepareEvent","normalizeDepth","normalizeMaxBreadth","prepared","integrations","dist","maxValueLength","request","applyClientOptions","integrationNames","sdk","applyIntegrationsMetadata","filenameDebugIdMap","debug_id","applyDebugIds","finalScope","getFinalScope","clientEventProcessors","getEventProcessors","evt","abs_path","debug_meta","images","code_file","applyDebugMeta","maxBreadth","spans","normalizeEvent","parseEventHintOrCaptureContext","hintIsScopeOrFunction","captureContextKeys","hintIsScopeContext","_close","_asyncToGenerator","timeout","close","startSession","currentScope","currentSession","endSession","closeSession","_sendSessionUpdate","captureSession","end","TranslateLoader","TranslateFakeLoader","getTranslation","ɵTranslateFakeLoader_BaseFactory","ɵprov","MissingTranslationHandler","FakeMissingTranslationHandler","equals","o1","o2","keySet","t1","isDefined","isObject","mergeDeep","TranslateParser","TranslateDefaultParser","templateMatcher","interpolate","expr","interpolateString","interpolateFunction","getValue","shift","ɵTranslateDefaultParser_BaseFactory","TranslateCompiler","TranslateFakeCompiler","compile","compileTranslations","translations","ɵTranslateFakeCompiler_BaseFactory","TranslateStore","currentLang","defaultLang","langs","onTranslationChange","EventEmitter","onLangChange","onDefaultLangChange","USE_STORE","InjectionToken","USE_DEFAULT_LANG","DEFAULT_LANGUAGE","USE_EXTEND","TranslateService","store","currentLoader","compiler","missingTranslationHandler","useDefaultLang","isolate","extend","defaultLanguage","pending","_onTranslationChange","_onLangChange","_onDefaultLangChange","_langs","_translations","_translationRequests","setDefaultLang","_defaultLang","_currentLang","retrieveTranslations","take","changeDefaultLang","getDefaultLang","use","changeLang","loadingTranslations","shareReplay","updateLangs","setTranslation","shouldMerge","getLangs","addLangs","getParsedResult","interpolateParams","observables","isObservable","sources","forkJoin","translateService","concatMap","getStreamOnTranslationChange","defer","stream","instant","reloadLang","resetLang","getBrowserLang","navigator","browserLang","languages","language","browserLanguage","userLanguage","getBrowserCultureLang","browserCultureLang","TranslateDirective","element","_ref","onTranslationChangeSub","checkNodes","onLangChangeSub","onDefaultLangChangeSub","translate","translateParams","currentParams","ngAfterViewChecked","forceUpdate","nodes","nativeElement","childNodes","setContent","node","nodeType","lastKey","lookupKey","getContent","trimmedContent","currentValue","originalContent","updateValue","lastParams","onTranslation","markForCheck","textContent","ngOnDestroy","unsubscribe","ɵdir","selectors","inputs","TranslatePipe","transform","query","validArgs","SyntaxError","_dispose","ɵpipe","pure","TranslateModule","forRoot","config","ngModule","providers","loader","provide","useClass","useValue","forChild","ɵmod","ɵinj","translateGetParsedResult","parent","PANEL_DEFAULT_LANGUAGE","UntranslatableString","for","ignoreSentryPatterns","Sentry","panel","appState","dayjs","rtlLangs","setDayjsLocale","html","dirContainer","getElementsByClassName","panelLang","initLanguages","Overlay","dir","Directionality","noop","dirChanged","getDir","ref","_config","logicalLang","getAppropriateLang","ensureRtl","find","firstValueFrom","standardLang","dialect","currentleng","classList","remove","i3","DOCUMENT","CountryService","loaded","countries","langChangeSubscription","codes","_this","countriesTranslated","searchCountryCodeByName","getCountryNameByCode","validator","required","noExisting","country","countryRequired","what","ofNull","validate","first","translateCountryInUrl","urlParam","_this2","countryCode","getCountryCode","rand","getHeatmapForMonth","quantity","captcha","drop","white","cl_dos","enhanced_dos","BackupSystem","BackupSystemState","ClPaymentStatus","LOG_FILE","listResponse","backend","items","acronis","cloudlinux","cloudlinux_on_premise","clusterlogics","activityMonitorAccount","cpanel","plesk","directadmin","not_running","backup","unpaid","paid","ip","comment","repeat","quarantined","limit","exclusion","rateLimited","whitelisted","domains","idx","sender_emails","activityMonitorEmail","activityMonitorDomain","scripts","activityMonitorScript","activityMonitorItems","incomingStatisticList","date","total","ham","spam","accountItem","default","used_bytes","active","emailItems","usedBytes","accountsItems","accountsLists","FeatureStatus","installed","BoolFeature","ReportableFeature","FeatureName","FeaturesManagementAPI","editDefaultFeature","action","feature","defaults","clientFeatures","allowed","nativeStatus","nativeEnable","editUserFeatures","users","av","proactive","full","ResourceType","ScanState","MalwareScanType","MaliciousAPI","cleanupAll","submit","file","MaliciousFileStatus","MaliciousItem","canExpand","resource_type","db","app_name","db_host","db_port","db_name","snippet","created","scan_type","cleaned_at","simpleItem","size","hash","extra_data","malicious","found","simpleItemDb","table_fields","table_name","table_field","table_row_inf","simpleEvent","cleanup_started","cleanup_done","cleanup_removed","cleanup_requires_myimunify_protection","ctime","initiator","file_owner","file_user","cause","listData","added_date","SUCCESS","INSTALLING","FAILED_TO_INSTALL","NOT_INSTALLED","no_captcha","deep","purpose","manual","auto_whitelisted","full_access","network_address","netmask","imported_from","listItems","local","MalwareScanStatus","MalwareCleanStatus","ondemand","scan_status","running","scanid","total_resources","total_malicious","background","queued","stopped","Running","progress","phase","file_patterns","exclude_patterns","intensity_cpu","intensity_io","intensity_ram","follow_symlinks","Stopped","Permission","PermissionsAPI","MS_VIEW","MS_CLEAN","MS_CLEAN_REQUIRES_MYIMUNIFY_PROTECTION","MS_ON_DEMAND_SCAN","MS_ON_DEMAND_SCAN_WITHOUT_RATE_LIMIT","MS_PATCH_HAS_SUBSCRIBE","MS_PATCH_ENABLED","MS_IGNORE_LIST_EDIT","MS_CONFIG_DEFAULT_ACTION_EDIT","PD_VIEW","PD_CONFIG_MODE_EDIT","Mode","log","kill","rule_id","rule_name","count","host","listname","NotificationSettingsAPI","show","save","portRegex","integerRegex","floatRegex","ipv6RegexArray","serverIdRegex","I360Validators","listOfServerId","serverId","results","v","every","invalid","ids","integer","float","floatPerforation","ipWithCIDR","regex","pathToFile","absolutePath","listOfAbsolutePaths","partOfIP","commaSeparatedDomains","isFQDN","listOfIPWithCIDR","ipWithCIDRValidator","listOfIP","isEmail","emails","emailsWithDefault","fileSize","sizeExceeded","files","maxFiles","listPortOrRange","ports","notInRange","port","listOfIntegers","DefaultAction","getAdminEnduserMalwareCommonConfig","formBuilder","try_restore_from_backup_first","control","default_action","allowedValues","notify","removed","cleanup","RuleSet","ScheduleInterval","PortBlockingMode","SettingsAPI","conflicts","permissions","PERMISSIONS","support_form","user_ignore_list","upgrade_button","allow_malware_scan","advisor","user_override_proactive_defense","user_override_malware_actions","allow_local_malware_ignore_list_management","userConfig","CONTROL_PANEL","generic_user_notifications","BACKUP_RESTORE","max_days_in_backup","MALWARE_CLEANUP","keep_original_files_days","trim_file_instead_of_removal","MALWARE_SCANNING","PROACTIVE_DEFENCE","mode","disabled","blamer","ERROR_REPORTING","notificationRules","REALTIME_MALWARE_FOUND","ADMIN","admin_emails","period","SCRIPT","USER_SCAN_STARTED","CUSTOM_SCAN_STARTED","USER_SCAN_FINISHED","CUSTOM_SCAN_FINISHED","CUSTOM_SCAN_MALWARE_FOUND","USER_SCAN_MALWARE_FOUND","SCRIPT_BLOCKED","common","DOS","default_limit","interval","AUTO_WHITELIST","INCIDENT_LOGGING","num_days","min_log_level","ui_autorefresh_timeout","rapid_scan","enable_scan_inotify","optimize_realtime_scan","enable_scan_modsec","enable_scan_pure_ftpd","notify_on_detect","sends_file_for_analysis","detect_elf","hyperscan","enable_scan_cpanel","crontabs","MALWARE_SCAN_INTENSITY","cpu","io","php_immunity","MALWARE_SCAN_SCHEDULE","day_of_month","day_of_week","hour","MALWARE_DATABASE_SCAN","SEND_ADDITIONAL_DATA","WEBSHIELD","known_proxies_support","splash_screen","panel_protection","OSSEC","active_response","ADMIN_CONTACTS","CSF_INTEGRATION","catch_lfd_events","PAM","exim_dovecot_protection","ftp_protection","KERNELCARE","edf","MOD_SEC","app_specific_ruleset","ruleset","FULL","cms_account_compromise_prevention","SMTP_BLOCKING","allow_users","allow_groups","allow_local","redirect","FIREWALL","port_blocking_mode","allow","TCP_IN_IPv4","TCP_OUT_IPv4","UDP_IN_IPv4","UDP_OUT_IPv4","MY_IMUNIFY","purchase_page_url","WORDPRESS","security_plugin_enabled","adminConfig","noAdminContactsAdminConfig","MINIMAL","deny","stubItem","scan","clean","infected","infectedDB","statuses","userListItem","home","infected_db","scan_id","scan_date","cleanup_status","analyst_status","VulnerabilitiesFileStatus","listOfRelevantVulnerabilities","cve_id","vulnerability_type","vulnerability_description","mockVulnerableFile","VulnerabilitiesList","file_path","vulnerable","patched","purchase_url","vulnerabilities","MockProvider","getMock","requestParams","sourceParams","getDefaultMock","NotificationsService","success","warning","equal","providedIn","deepness","ErrorHandler","enumerable","addToString","XhrNotificator","showResponseErrors","response","msg","errorText","DOMParser","parseFromString","innerText","XHR","http","errorHandler","xhrNotificator","post","mock","notifyOnWarning","notifyOnError","startDate","mocked","prevHandle","_x","rawResponse","WARNING","noSentry","rx","api","notifyOnWarningDefault","notifyOnErrorDefault","defaultValue","wrap","serviceMethod","itemClass","max_count","ReputationService","xhr","requestsState","_infectedDomains","load","tap","infectedDomainsCount","ImunifyPackageVersions","getPackageVersion","cache","ttl","additionalChanges","Subject","expired","subscribed","pendingRequestExists","skip","debounceTime","sourceForUpdate","finalize","mergeWith","newItem","updateItem","justSubscribed","SettingsService","saveSettings","notificationShow","saveNotificationSettings","packageVersions","components","packages","UserFeaturesStatusService","getClientFeatures","CachedRequest","refresh","reset","emptyCache","Symbol","requestSubscription","refreshSubscription","resetSubscription","pushSubscription","cachedValue","sharedEmitter","makeRequest","mergedObservables","cache2","sharedInjector","RequestsState","licenseState","navRootInjector","ReplaySubject","_acceptableStateForConfig","combineLatest","rest","_acceptableStateForConflicts","_acceptableStateForInfectedDomains","distinctUntilChanged","_acceptableStateForClientFeatures","hasEnabledFeatures","na","hasAv","hasAvFull","hasProactive","MyImunifyState","changes$","protection","is_freemium","isEnabledWithProtection$","FirewallState","isFirewallEnabled$","checkStarted","Injector","deps","getSharedInjector","TranslateHttpLoader","I360TranslateModule","CommonModule","getWindow","handlers","instrumented","addHandler","maybeInstrument","instrumentFn","triggerHandlers","typeHandlers","debounceTimerID","lastCapturedEventType","lastCapturedEventTargetId","instrumentDOM","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","targetObj","originalAddEventListener","listener","__sentry_instrumentation_handlers__","handlerForType","refCount","originalRemoveEventListener","globalListener","getEventTarget","eventType","isContentEditable","shouldSkipDOMEvent","_sentryId","isSimilarToLastCapturedEvent","clearTimeout","SENTRY_XHR_DATA_KEY","instrumentXHR","xhrproto","XMLHttpRequest","open","Proxy","originalOpen","xhrOpenThisArg","xhrOpenArgArray","virtualError","startTimestamp","request_headers","__sentry_own_request__","onreadystatechangeHandler","xhrInfo","readyState","status_code","endTimestamp","onreadystatechange","originalOnreadystatechange","onreadystatechangeThisArg","onreadystatechangeArgArray","addEventListener","setRequestHeader","originalSetRequestHeader","setRequestHeaderThisArg","setRequestHeaderArgArray","send","originalSend","sendThisArg","sendArgArray","sentryXhrData","lastHref","addHistoryInstrumentationHandler","instrumentHistory","chromeVar","chrome","isChromePackagedApp","app","runtime","hasHistoryApi","history","pushState","replaceState","supportsHistory","oldOnPopState","historyReplacementFunction","originalHistoryFunction","to","instrumentConsole","supportsFetch","Headers","Request","Response","isNativeFunction","instrumentFetch","onFetchResolved","skipNativeFetchCheck","EdgeRuntime","fetch","doc","createElement","sandbox","hidden","head","appendChild","contentWindow","removeChild","supportsNativeFetch","originalFetch","fetchArgs","getUrlFromResource","hasProp","parseFetchArgs","handlerData","fetchData","resource","installedIntegrations","getIntegrationsToSetup","defaultIntegrations","userIntegrations","integration","isDefaultInstance","resolvedUserIntegrations","finalIntegrations","integrationsByName","currentInstance","existingInstance","filterDuplicates","debugIndex","findIndex","debugInstance","afterSetupIntegrations","afterAllSetup","setupIntegration","integrationIndex","setupOnce","setup","preprocessEvent","on","processEvent","DEFAULT_BREADCRUMBS","beforeBreadcrumb","finalBreadcrumb","severityLevelFromString","getBreadcrumbLogLevelFromHttpStatusCode","statusCode","fragment","protocol","relative","ignoreOnError","shouldIgnoreOnError","isFunction","wrapper","__sentry_wrapped__","sentryWrapped","wrappedArguments","ex","setTimeout","e3","MAX_ALLOWED_STRING_LENGTH","breadcrumbsIntegration","_breadcrumbsIntegration","_options","dom","addConsoleInstrumentationHandler","category","_getConsoleBreadcrumbHandler","componentName","serializeAttribute","_isEvent","getComponentName","_getDomBreadcrumbHandler","addXhrInstrumentationHandler","_getXhrBreadcrumbHandler","addFetchInstrumentationHandler","_getFetchBreadcrumbHandler","parsedLoc","parsedFrom","parsedTo","_getHistoryBreadcrumbHandler","_getSentryBreadcrumbHandler","_oldOnErrorHandler","instrumentError","column","_oldOnUnhandledRejectionHandler","instrumentUnhandledRejection","exceptionFromError","parseStackFrames","extractType","extractMessage","eventFromPlainObject","isUnhandledRejection","errorFromProp","getErrorPropertyFromObject","__serialized__","getNonErrorObjectExceptionValue","eventFromError","skipLines","reactMinifiedRegexp","getSkipFirstStackStringLines","getPopFirstTopFrames","isWebAssemblyException","WebAssembly","Exception","eventFromUnknownInput","attachStacktrace","domException","eventFromString","synthetic","__sentry_template_string__","__sentry_template_values__","logentry","maxLength","firstKey","includedKeys","serialized","extractExceptionKeysForMessage","captureType","getObjectClassName","globalHandlersIntegration","_globalHandlersIntegration","onerror","onunhandledrejection","stackTraceLimit","addGlobalErrorInstrumentationHandler","ev","ev0","ev0s","ev0sf","colno","lineno","oO","getLocationHref","in_app","_enhanceEventWithInitialFrame","_installGlobalOnErrorHandler","globalHandlerLog","addGlobalUnhandledRejectionInstrumentationHandler","_getUnhandledRejectionError","_installGlobalOnUnhandledRejectionHandler","applyAggregateErrorsToEvent","exceptionFromErrorImplementation","maxValueLimit","truncateAggregateExceptions","aggregateExceptionsFromError","prevExceptions","exceptionId","newExceptions","applyExceptionGroupFieldsForParentException","newException","newExceptionId","applyExceptionGroupFieldsForChildException","childError","is_exception_group","exception_id","parentId","parent_id","linkedErrorsIntegration","_linkedErrorsIntegration","httpContextIntegration","referrer","headers","Referer","browserSessionIntegration","DEFAULT_IGNORE_ERRORS","inboundFiltersIntegration","_inboundFiltersIntegration","_hint","clientOptions","mergedOptions","internalOptions","allowUrls","denyUrls","ignoreErrors","disableErrorDefaults","ignoreTransactions","ignoreInternal","_mergeOptions","_isSentryError","possibleMessages","lastException","_getPossibleEventMessages","_isIgnoredError","_isUselessError","_isIgnoredTransaction","_getEventFilterUrl","_isDeniedUrl","_isAllowedUrl","_shouldDropEvent","_getLastValidUrl","originalFunctionToString","SETUP_CLIENTS","WeakMap","functionToStringIntegration","_functionToStringIntegration","Function","originalFunction","dedupeIntegration","_dedupeIntegration","previousEvent","currentEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameMessageEvent","previousException","_getExceptionFromEvent","currentException","_isSameExceptionEvent","currentFrames","previousFrames","frameA","frameB","currentFingerprint","previousFingerprint","initAndBind","clientClass","debug","initialScope","setCurrentClient","getBaseApiEndpoint","dsn","getEnvelopeEndpointWithUrlEncodedAuth","tunnel","sdkInfo","projectId","_getIngestEndpoint","sentry_version","sentry_key","sentry_client","_encodedAuth","DSN_REGEX","dsnToString","withPassword","pass","dsnFromComponents","makeDsn","lastPath","projectMatch","dsnFromString","component","isValidProtocol","parseInt","validateDsn","createEnvelope","addItemToEnvelope","envelope","forEachEnvelopeItem","envelopeItems","envelopeItem","encodeUTF8","TextEncoder","encode","serializeEnvelope","envHeaders","parts","append","itemHeaders","stringifiedPayload","buffers","totalLength","buf","merged","offset","buffer","concatBuffers","createAttachmentEnvelopeItem","content_type","contentType","attachment_type","attachmentType","ITEM_TYPE_TO_DATA_CATEGORY_MAP","sessions","client_report","user_report","profile","profile_chunk","replay_event","replay_recording","check_in","feedback","statsd","raw_security","envelopeItemTypeToDataCategory","getSdkMetadataForEnvelopeHeader","metadataOrEvent","createEventEnvelope","metadata","enhanceEventWithSdkInfo","envelopeHeaders","sent_at","createEventEnvelopeHeaders","SentryError","logLevel","ALREADY_SEEN_ERROR","BaseClient","_integrations","_numProcessing","_outcomes","_hooks","_dsn","_metadata","_transport","transport","transportOptions","undefinedOption","option","hintWithEventId","_process","eventFromException","_captureEvent","eventMessage","promisedEvent","eventFromMessage","capturedSpanScope","sendSession","getSdkMetadata","getTransport","flush","_isClientDoneProcessing","clientFinished","transportFlushed","eventProcessor","_isEnabled","_setupIntegrations","getIntegrationByName","integrationName","addIntegration","isAlreadyInstalled","sendEvent","env","promise","sendEnvelope","sendResponse","createSessionEnvelope","eventOrCount","sendClientReports","hook","hooks","cbIndex","callbacks","setupIntegrations","_updateSessionFromEvent","crashed","errored","sessionNonTerminal","ticked","setInterval","clearInterval","_prepareEvent","getDynamicSamplingContextFromScope","_processEvent","finalEvent","sampleRate","isTransaction","isTransactionEvent","beforeSendLabel","parsedSampleRate","rate","parseFloat","parseSampleRate","dataCategory","capturedSpanIsolationScope","__sentry__","beforeSend","beforeSendTransaction","beforeSendSpan","processedSpans","processedSpan","spanCountBefore","spanCountBeforeProcessing","processBeforeSend","beforeSendResult","invalidValueError","_validateBeforeSendResult","processedEvent","spanCount","droppedSpanCount","transactionInfo","transaction_info","_clearOutcomes","outcomes","_flushOutcomes","discarded_events","applySdkMetadata","names","BrowserClient","opts","parentSpanIsAlwaysRootSpan","captureUserFeedback","createUserFeedbackEnvelopeItem","createUserFeedbackEnvelope","platform","DEFAULT_EVENT_TARGET","browserApiErrorsIntegration","_browserApiErrorsIntegration","eventTarget","requestAnimationFrame","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","originalCallback","wrapOptions","eventName","handleEvent","originalEventHandler","createFrame","chromeRegexNoFnName","chromeRegex","chromeEvalRegex","geckoREgex","geckoEvalRegex","defaultStackParser","noFnParts","col","subMatch","extractSafariExtensionDetails","isSafariExtension","isSafariWebExtension","cachedImplementations","getNativeImplementation","cached","impl","clearCachedImplementation","makePromiseBuffer","task","$","taskProducer","drain","capturedSetTimeout","updateRateLimits","limits","updatedRateLimits","rateLimitHeader","retryAfterHeader","retryAfter","categories","namespaces","headerDelay","delay","all","headerDate","parseRetryAfterHeader","createTransport","bufferSize","rateLimits","filteredEnvelopeItems","disabledUntil","isRateLimited","getEventForEnvelopeItem","filteredEnvelope","recordEnvelopeLoss","requestTask","makeFetchTransport","nativeFetch","pendingBodySize","pendingCount","requestSize","requestOptions","referrerPolicy","keepalive","fetchOptions","getDefaultIntegrations","autoSessionTracking","browserOptions","optionsArg","defaultOptions","__SENTRY_RELEASE__","applyDefaultOptions","skipBrowserExtensionCheck","windowWithMaybeExtension","extensionObject","runtimeId","isDedicatedExtensionPage","isNWjs","nw","shouldShowBrowserExtensionError","IS_DEBUG_BUILD","ANGULAR_MINIMUM_VERSION","angularVersion","checkAndSetAngularVersion","init$1","noSentryErrorMessage","ConfigRef","_configChange","configChange","setConfig","changes","RootErrorHandler","configRef","tryInitSentry","I360_HEADLESS","initSentry","terminateSentry","sentryActive","makeBeaconTransport","tracesSampleRate","originalError","fixPaths","assert","_x2","handleError","rejection","originalStack","i4","i5","sendBeacon","I360OverlayContainer","OverlayContainer","_createContainer","overlayContainer","_containerElement","UrlInterceptor","newUrl","adminAction","clientAction","JsonHeaderInterceptor","FormData","I360NoContentModule","truncateLongValues","captureResponse","SentryInterceptor","requestBody","urlWithParams","responseBody","InstallationAPI","start","InstallationBackendService","upgradeStatus","statusApi","logTabUrl","slidesTabUrl","ImunifyStatusInterceptor","errorMessage","updateAndCheckStatus","getInstallationStatus","share","updateRPCStatus","updateStatusCode","reload","checkStandaloneWarning","UPGRADING","tabUrl","SOCKET_INACCESSIBLE","STOPPED","I360FormControl","UntypedFormControl","validators","asyncValidators","i360Id","i360DefaultValue","i360","setErrors","i360DisabledByUser","MarkAsCmd","I360FormGroup","UntypedFormGroup","controls","markAs","cmd","onlySelf","statusChanges","markAsDirty","markAsPristine","getDirtyValues","form","dirtyValues","currentControl","dirty","setValue","patchValue","I360FormBuilder","UntypedFormBuilder","asyncValidator","GetConfigSchema","I360Config","settingsService","getSchema","destroyed","takeUntil","resetSchema","schema","runOutsideAngular","formConfirmed","isNotTest","configChanged","confirmNeeded","confirm","originalConfig","currentConf","originalConf","section","field","deepEqual","configsEqual","i6","LicenseService","cleanupBlocked","cleanupBlockedEndUser","registerViaPanel","checkLicense","newLicense","i360PleskSettings","marketplace","buyUrl","upgrade_url","upgradeUrl","failed","NavRootService","licenseService","installationBackendService","checkInstallationStatusAndLicense","checkInstallationStatus","checkAndRetrieveThePleskLicense","versions","licenseType","fromMarketPlace","licenseTypeFromPlesk","licenseTypeFromAgent","isInstalledImunify360License","isImunify360Installed","NAVBAR_FEATURES","NAVBAR_TABS","isNavbarItemAllowed","I360_ALLOWED_ITEMS","FirewallService","isFirewallEnabled","isFirewallDisabled","EmailsService","emailFilterBy","any","received_date_from","received_date_to","getIncomingStatus","emailVersions","imunifyEmailExist","i360ieExist","emailPageOnInit","is_enabled","getAvailableKeys","EulaService","getEula","checkEulaStatus","oldStatus","eulaUrl","eulaUrlString","relativeTo","ModalEntry","ctx_r2","uppercaseButtons","cancelText","ModalContentComponent_div_8_button_3_ng_container_1_ng_container_2_Template","ctx_r4","confirmNote","_r5","ctx_r6","confirmText","_r9","ctx_r8","ModalContentComponent_div_8_button_3_ng_container_1_Template","ModalContentComponent_div_8_button_3_ng_template_2_Template","ctx_r3","confirmDisabled","confirmDisabledAlways","ModalContentComponent_div_8_button_2_Template","ModalContentComponent_div_8_button_3_Template","ctx_r1","showCancel","showConfirm","ModalContentComponent","dialogRef","showClose","hideActions","dialogResult","ngContentSelectors","_c1","decls","vars","consts","template","rf","ctx","ModalContentComponent_button_5_Template","ModalContentComponent_div_8_Template","item_r1","ModalItemsComponent","ModalItemsComponent_div_0_Template","ctx_r0","descriptionArg","ConfirmComponent","MAT_DIALOG_DATA","features","ConfirmComponent_div_5_Template","FileAPI","CHUNK_LENGTH","loadDiff","FileService","_load","loadChunk","logFile","chunk","upload","formData","ModalService","dialogService","fileService","getDialogRef","addPanelClass","dialogRefToPromise","innerHeight","updatePosition","top","bottom","afterClosed","panelClass","cls","PermissionsService","modalService","listPermission$","openUpgradeWarning","UpgradeWarningModalComponent","MyImunifyAPI","enableAll","Md5","_dataLength","_bufferLength","Int32Array","_buffer","ArrayBuffer","_buffer8","_buffer32","Uint32Array","hashStr","onePassHasher","appendStr","hashAsciiStr","appendAsciiStr","_hex","hc","hexChars","ho","hexOut","_md5cycle","stateIdentity","buf8","buf32","bufLen","appendByteArray","getState","buflen","setState","dataBitsLen","buffer32Identity","subarray","matches","lo","hi","Session","ClAnalytics","endpointEvent","sessionTtl","endpoint","sendBuyButtonClickEvent","generateNewSession","sendMyImunifyPurchaseEvent","journey_id","user_hash","variant_id","target_id","created_at","saveSession","_created_at","model","target_type","event_name","system_id","report","HttpHeaders","MyImunifyService","clAnalytics","enableProtectionForAll","myImunifyStateLoaded$","myImunifyStateSubscription","openUpgradePage","sendAnalytics","getMyImunifyState","purchaseWindow","purchasePageUrl","getFixedPurchaseUrl","isURL","checkWindowClosedInterval","checkIfPurchaseWindowClosed","closed","asObservable","poolMyImunifyStatus","getStatus","timer","handleMyImunifyStatusResult","myimunify_enabled","urlToFix","PaymentSuccessComponent","details","item_r4","item_r5","item_r6","item_r7","ProtectionBenefitsComponent","myImunifyService","manualCleanupItems","risksItems","autoCleanupItems","benefitsItems","ProtectionBenefitsComponent_li_17_Template","ProtectionBenefitsComponent_li_24_Template","ProtectionBenefitsComponent_li_39_Template","ProtectionBenefitsComponent_li_46_Template","MyImunifyPromoDialogService","openPromoModal","promoModalRef","autoFocus","checkNeedToShowMyImunifyUpgradeDialog","handlePayoutEvent","myImunifyState","purchasePageURL","URL","PAYMENT_SUCCESS_DELAY_MS","NavRootComponent_i360_navigation_0_ng_container_2_a_1_ng_container_2_mat_icon_1_Template","NavRootComponent_i360_navigation_0_ng_container_2_a_1_ng_container_2_ng_template_2_Template","_r10","_r13","ctx_r12","navigateToTab","Home","NavRootComponent_i360_navigation_0_ng_container_2_a_1_ng_container_2_Template","ctx_r5","_r16","ctx_r15","myImunifyPromoDialog","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_2_button_1_Template","hasBeenCalled","_r33","ctx_r32","Dashboard","_c0","ctx_r31","isActive","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_1_a_1_Template","_r36","ctx_r35","Incidents","ctx_r34","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_2_a_1_Template","_r39","ctx_r38","Firewall","ctx_r37","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_3_a_1_Template","_r42","ctx_r41","ctx_r40","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_5_a_1_Template","_r45","ctx_r44","Email","ctx_r43","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_7_a_1_Template","_r48","ctx_r47","MalwareScanner","ctx_r46","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_8_a_1_Template","_r51","ctx_r50","ProactiveDefense","ctx_r49","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_9_a_1_Template","_r55","_r1","forceNormalize","ctx_r53","_r57","ctx_r56","ReputationManagement","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_10_a_1_span_3_Template","ctx_r52","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_10_a_1_Template","_r60","ctx_r59","KernelCare","ctx_r58","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_11_a_1_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_12_i360_news_1_Template","_r64","ctx_r63","Support","ctx_r62","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_13_ng_template_1_Template","_r67","ctx_r66","Settings","ctx_r65","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_15_a_1_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_1_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_2_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_3_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_5_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_7_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_8_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_9_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_10_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_11_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_12_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_13_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_ng_container_15_Template","ctx_r17","firewallService","showImunifyPatch$","Vulnerabilities","emailsService","News","support","_r74","ctx_r73","ctx_r72","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_2_ng_container_1_a_1_Template","_r77","ctx_r76","ctx_r75","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_2_ng_container_3_a_1_Template","_r80","ctx_r79","ctx_r78","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_2_ng_container_4_a_1_Template","_r83","ctx_r82","ctx_r81","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_2_ng_container_6_a_1_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_2_ng_container_1_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_2_ng_container_3_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_2_ng_container_4_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_2_ng_container_6_Template","ctx_r18","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_1_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_ng_container_2_Template","ctx_r7","NavRootComponent_i360_navigation_0_ng_container_2_a_1_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_2_Template","NavRootComponent_i360_navigation_0_ng_container_2_ng_container_3_Template","isVisibleMyImunifyUpgradeBtn","tmp_2_0","_r87","ctx_r86","tmp_0_0","ctx_r84","tmp_1_0","tmp_3_0","_r93","ctx_r92","ctx_r91","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_1_a_1_Template","_r105","ctx_r104","ctx_r103","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_1_a_1_Template","_r110","ctx_r108","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_3_a_1_ng_container_3_span_1_Template","ctx_r107","_r112","ctx_r111","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_3_a_1_ng_container_3_Template","ctx_r106","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_3_a_1_Template","_r115","ctx_r114","ctx_r113","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_4_a_1_Template","_r118","ctx_r117","ctx_r116","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_6_a_1_Template","_r121","ctx_r120","ctx_r119","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_7_a_1_Template","_r124","ctx_r123","ctx_r122","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_9_a_1_Template","_r127","ctx_r126","ctx_r125","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_10_a_1_Template","_r130","ctx_r129","Upgrade","ctx_r128","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_11_button_1_Template","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_1_Template","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_3_Template","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_4_Template","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_6_Template","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_7_Template","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_i360_news_8_Template","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_9_Template","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_10_Template","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_ng_container_11_Template","ctx_r89","tmp_8_0","_r134","ctx_r133","ctx_r132","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_3_ng_container_1_button_1_Template","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_3_ng_container_1_Template","ctx_r90","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_1_Template","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_2_Template","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_ng_container_3_Template","ctx_r85","showUpgradeButtonForEndUser","NavRootComponent_i360_navigation_0_ng_container_3_a_1_Template","NavRootComponent_i360_navigation_0_ng_container_3_ng_container_2_Template","NavRootComponent_i360_navigation_0_ng_container_4_i360_menu_profile_1_Template","NavRootComponent_i360_navigation_0_ng_container_2_Template","NavRootComponent_i360_navigation_0_ng_container_3_Template","NavRootComponent_i360_navigation_0_ng_container_4_Template","imunifyPackage","MenuProfile","NavRootComponent","cdr","authService","eulaService","reputationService","userFeaturesStatusService","navRootService","userRole","destroy$","I360_SHOW_UPGRADE_BUTTON_FOR_END_USER","events","NavigationEnd","postMessage","urlAfterRedirects","fromEvent","clientY","bufferCount","position","authRole","listenMyImunifyState","onPayout","ngOnInit","tab","destinationPath","i7","i8","i9","i10","i11","i12","i13","i14","i15","i16","i17","i18","i19","hostBindings","$event","NavRootComponent_i360_navigation_0_Template","ImunifyTemplateDirective","i360Template","ModalDetailsComponent","ModalDetailsComponent_i_3_Template","I360ModalModule","imports","MatDialogModule","MatButtonModule","MatIconModule","A11yModule","MatTooltipModule","ErrorPipe","ErrorComponent","hostClass","hostVars","ExtendFormControlNameDirective","detector","viewContainer","i360Errors","renderError","errorRef","createComponent","instance","valid","pristine","destroy","exportAs","CheckboxGroupDirective","forEachQueue","onChangeFn","writeValue","forEachCheckbox","checkbox","checked","registerOnChange","registerOnTouched","setDisabledState","isDisabled","ngAfterContentInit","change","checkboxes","contentQueries","dirIndex","MatCheckbox","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","utc","DatepickerComponent","placeholder","maxDays","datepickerUnit","DatepickerUnit","propagateChange","Days","setValidator","diff","hours","Hours","validation","inputNgModel","Validators","onChange","unix","viewQuery","NgModel","NG_VALIDATORS","separatedRegExp","byComma","joinBy","splitBy","byEnter","SeparatedBy","CommaSeparatedInputDirective","renderer","isFilter","setProperty","handleInput","ExtendFormGroupDirective","formGroup","modalContent","ngZone","styleDisplay","i360Submit","allowSubmitWhenSubmitting","valueChanges","ngSubmit","updateValueAndValidity","focusOnInvalidDirective","oldPush","directives","retVal","directive","focusOnDirective","valueAccessor","DefaultValueAccessor","focus","select","MatSlider","MatSelect","saveLastInputValuesToBrowser","I360ValidationModule","FormsModule","ReactiveFormsModule","NewsItemDirective","blockOverlayAutoOpen","unreadNewsCount","news_r4","NewsNotificationsComponent_ng_container_0_i360_news_overlay_3_ng_container_1_Template","_news","_r6","toggleOverlay","NewsNotificationsComponent_ng_container_0_div_2_Template","NewsNotificationsComponent_ng_container_0_i360_news_overlay_3_Template","overlayVisible","NewsNotificationsComponent","newsCount","overlayAutoOpenBlocked","news","toArray","updateNewsCount","updateUnreadNewsCount","updateOverlayAutoOpenBlocked","openOverlayIfNeeded","markAsRead","combineLatestUntilUnsubscribed","isCountable","countableStatuses","isUnread","unreadStatuses","blockStatuses","NEVER","openOverlay","NewsNotificationsComponent_ng_container_0_Template","PackageVersionsComponent_ng_container_1_ng_container_2_Template","versionData_r3","appVersion","PackageVersionsComponent","PackageVersionsComponent_ng_container_1_Template","PackageVersionsComponent_ng_template_3_Template","NavigationComponent_div_16_ng_template_1_Template","template_r13","_r11","NavigationComponent_div_20_ng_template_1_Template","template_r16","NavigationComponent_div_21_ng_template_1_Template","template_r18","_r24","_r21","ctx_r23","clickMenuItem","NavigationComponent_button_24_ng_template_2_Template","template_r20","NavigationComponent","elementRef","leftTemplates","rightTemplates","buttonTemplates","dropTemplates","copyOfDropTemplates","checkLowResourceMode","addToMain","addToDrop","unshift","rebuild","templates","logoTemplate","ngAfterViewInit","getSeparatorWidth","autoUpdateToken","matMenuItem","click","changed","innerWidth","isMainNavHeightOk","isMinimalRuleSet","lowResourcesMode","offsetWidth","navWrapper","offsetHeight","NavigationComponent_div_0_Template","NavigationComponent_ng_template_7_Template","NavigationComponent_ng_container_8_Template","NavigationComponent_ng_template_10_Template","NavigationComponent_div_16_Template","NavigationComponent_div_17_Template","NavigationComponent_div_20_Template","NavigationComponent_div_21_Template","NavigationComponent_button_24_Template","_r4","trigger","transition","animate","NewsOverlayComponent","overlay","newsNotificationsComponent","navigationComponent","OverlayConfig","hasBackdrop","backdropClass","positionStrategy","flexibleConnectedTo","withLockedPosition","withPositions","originX","originY","overlayX","overlayY","scrollStrategy","scrollStrategies","reposition","overlayRef","attach","portal","backdropClick","detach","CdkPortal","NewsOverlayComponent_div_0_Template","NewsAPI","getNews","NewsService","storageKey","getNews$","i360Test","disableNews","saveAsRead","readMessages","getReadMessages","isRead","Set","I360CommaSeparatedInputModule","AdminContactsAPI","getEmails","AdminContactsService","NewsModule","PortalModule","RouterModule","I360MenuProfileModule","MatMenuModule","I360NavigationModule","I360NotificationsModule","LicenseInterceptor","MaliciousService","maliciousCount$","MaliciousCountInterceptor","maliciousService","malicious_count","HistoryAPI","MalwareHistoryItem","owner","HISTORY_COUNTER_KEY","HistoryService","updateHistoryCount","historyCount","time","last","since","_getHistorySinceFromStorage","getHistory","updateCounter","ZonedHashLocationStrategy","HashLocationStrategy","platformLocation","onPopState","navRootRoutes","loadChildren","m","EmptyRouteModule","NavRootRoutingModule","LocationStrategy","APP_BASE_HREF","useHash","relativeLinkResolution","onSameUrlNavigation","AuthCloudAPI","getJwtToken","AuthCloudService","jwtToken","jwtTokenRequest$","tokenRequest$","ABEvent","UpgradeButtonService","authCloudService","view","server_id","getABText","tests","upgrade_link_text","sendABEventView","upgradeLinkText","sendABEvent","VIEW","sendABEventClick","CLICK","eventData","user_ids","DirectivesModule","I360ButtonModule","MatFormFieldModule","I360TemplateModule","EulaInterceptor","eulaStatus","MyImunifyPromoDialogModule","DatepickerModule","MatSelectModule","MatOptionModule","LOG_CHUNK_SIZE","InstallationService","accumulatedLog","shownSlidesCount","logCollector$","offsetDiff","stopWatchingLog","statusWatcher$","stopWatchingStatus","logCollectorSubscription","Subscription","statusCollectorSubscription","startWatchingLog","startWatchingStatus","UpgradeButtonDirective","upgradeButtonService","navigation","isSentViewEvent","setDisplay","renderButtonText","titleSub","onClick","needABTest","abText","getUpgradeButtonText","setText","race","i360UpgradeButton","setStyle","NewsLicenseComponent_ng_template_0_div_0_p_9_Template","NewsLicenseComponent_ng_template_0_div_0_Template","NewsLicenseComponent","NewsLicenseComponent_ng_template_0_Template","pubDate","NewsMessageComponent","newsService","_isUnread","guid","NewsMessageComponent_ng_template_0_Template","AdminContactsHistoryService","contactsHistory","_getHistoryFromStorage","addHistoryRecord","record","AdminContactsConfirmModalComponent","imunify360Package","handleLinkClick","AdminContactsRequestModalComponent","adminContactsService","contactsForm","AdminContactsRequestModalComponent_p_14_Template","AdminContactsOpenerService","adminContactsHistoryService","newsAdminContactsComponent","AdminContactsOpenerInitialService","i360Config","openIfNeeded","viewContainerRef","saveAdminContacts","AdminContactsOpenerSequentialService","AdminContactsOpenerNeverService","daysShouldPassPerNotification","AdminContactsOpenerPeriodicalService","lastOpenRecord","frequencyIndex","daysShouldPass","msShouldPass","NewsAdminContactsComponent_ng_template_0_div_0_Template","adminContactsOpenerServiceFactory","sequentialNotificationsCount","NewsAdminContactsComponent","notificationsOpenerService","useFactory","NewsAdminContactsComponent_ng_template_0_Template","message_r2","NewsComponent","is360Package","news$","handleHostClick","NewsComponent_i360_news_admin_contacts_2_Template","NewsComponent_i360_news_message_3_Template","_r7","lang_r10","_r12","$implicit","ctx_r11","MenuProfileComponent","MenuProfileComponent_div_5_Template","MenuProfileComponent_button_12_Template","MenuProfileComponent_button_15_Template","MenuProfileComponent_button_16_Template","_r0","_r3","I360ButtonComponent","focusMonitor","monitor","addClass","ngOnChanges","primary","removeClass","MatPrefix","MatSuffix","MatIcon","showErrorDetails","STATE_ACTIVE","STATE_INACTIVE","NotificationComponent","service","stopTime","speed","timeOut","messageMaxLength","stopPropagation","itemHasTimeout","setTimer","onEnter","onLeave","tick","i_r1","NotificationComponent_span_5_Template","NotificationComponent_a_6_Template","NotificationComponent_div_10_Template","style","opacity","customLoader","generateUniqueKey","table","getLoader","hide","NotificationsComponent","NotificationsComponent_notification_2_Template","NavRootModule","csrfTokenMeta","getElementById","urls","oldSend","skipHeader","__zone_symbol__xhrURL","setAttribute","applyCsrfStrategy","bootstrap","MAT_FORM_FIELD_DEFAULT_OPTIONS","floatLabel","BrowserAnimationsModule","HttpClientModule","wrapLifecycleMethod","_properties","setPublicPath","lifecycles","singleSpaAngular","bootstrapFunction","__NgCli_bootstrap_1","bootstrapModule","NgZone","mount","unmount","$byteLength","require","callBound","isArrayBuffer","module","exports","ab","byteLength","$apply","$call","$reflectApply","actualApply","$TypeError","$actualApply","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","setFunctionLength","$defineProperty","callBindBasic","applyBind","adjustedLength","cssWithMappingToString","needLayer","modules","media","dedupe","supports","layer","alreadyImportedModules","_k","cssMapping","btoa","base64","unescape","encodeURIComponent","sourceMapping","sourceURLs","sourceRoot","u","h","l","y","M","weekdays","months","ordinal","z","utcOffset","year","month","ceil","w","D","ms","Q","S","O","$L","$u","$x","$offset","$d","UTC","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","startOf","endOf","isAfter","isBefore","$g","valueOf","toDate","$locale","weekStart","$set","daysInMonth","subtract","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","toUTCString","$i","isDayjs","en","Ls","years","days","minutes","seconds","milliseconds","weeks","$l","negative","parseFromMilliseconds","calMilliseconds","Y","YY","YYYY","MM","DD","H","HH","mm","ss","SSS","as","humanize","fromNow","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","isDuration","getUTCFullYear","getUTCMonth","getUTCDate","getUTCDay","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","$localOffset","isUTC","getIterator","getSideChannel","is","isArguments","isDate","isRegex","isSharedArrayBuffer","objectKeys","whichBoxedPrimitive","whichCollection","whichTypedArray","sabByteLength","$getTime","gPO","$objToString","$Set","$mapHas","$mapGet","$mapSize","$setAdd","$setDelete","$setHas","$setSize","setHasEqualElement","val1","channel","internalDeepEqual","findLooseMatchingPrimitives","prim","mapMightHaveLoosePrim","altValue","curB","looseOpts","strict","setMightHaveLoosePrim","mapHasEqualEntry","key1","item1","key2","actual","expected","sentinel","hasActual","hasExpected","aIsArray","bIsArray","aIsError","bIsError","aIsRegex","bIsRegex","aIsDate","bIsDate","aWhich","bWhich","aIsBuffer","isBuffer","bIsBuffer","aIsArrayBuffer","bIsArrayBuffer","aIsSAB","bIsSAB","ka","kb","aCollection","bCollection","resultA","resultB","iA","iB","setEquiv","item2","mapEquiv","objEquiv","copy","$SyntaxError","gopd","nonEnumerable","nonWritable","nonConfigurable","loose","hasSymbols","toStr","defineDataProperty","supportsDescriptors","predicate","defineProperties","predicates","props","getOwnPropertySymbols","hasProtoAccessor","gOPD","__proto__","$Object","$getPrototypeOf","EvalError","RangeError","ReferenceError","TypeError","URIError","isCallable","iterator","thisArg","receiver","array","forEachArray","string","forEachString","forEachObject","concatty","that","bound","arrLike","slicy","boundLength","boundArgs","joiner","joiny","Empty","implementation","functionsHaveNames","functionsHaveConfigurableNames","$bind","boundFunctionsHaveNames","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","$ObjectGPO","$ReflectGPO","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","DataView","decodeURI","eval","Float16Array","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","RegExp","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","WeakRef","errorProto","doEval","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","number","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","reflectGetProto","originalGetProto","getDunderProto","$BigInt","hasPropertyDescriptors","hasArrayLengthDefineBug","origSymbol","hasSymbolSham","sym","symObj","syms","propertyIsEnumerable","toStringTag","$hasOwn","SLOT","slot","slots","V","freeze","hasToStringTag","$toString","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","$ArrayBuffer","abSlice","$abSlice","bigIntValueOf","tryBigInt","$boolToStr","tryBooleanObject","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","isIE68","isDDA","strClass","tryDateObject","exported","$Map","$numToStr","tryNumberObject","isRegexMarker","throwRegexMarker","badStringifier","toPrimitive","_obj","$strValueOf","tryStringObject","safeRegexTest","$symToStr","isSymString","isSymbolObject","$WeakMap","$WeakSet","$isNaN","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","gOPS","symToString","hasShammedSymbols","isEnumerable","addNumericSeparator","num","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","quotes","single","quoteREs","wrapQuotes","defaultStyle","quoteStyle","quoteChar","canTrustToString","isRegExp","inspect_","seen","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","prev","getIndent","inspect","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","nodeName","isElement","xs","singleLineValues","indentedJoin","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","ys","protoTag","stringTag","tag","remaining","trailer","quoteRE","lastIndex","lowbyte","lineJoiner","isArr","symMap","numberIsNaN","define","getPolyfill","shim","polyfill","keysShim","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","keysWorksWithArguments","$push","$propIsEnumerable","originalGetSymbols","source1","getSymbols","nextKey","propValue","letters","lacksProperEnumerationOrder","preventExtensions","thrower","assignHasPendingExceptions","setFunctionName","hasIndices","ignoreCase","multiline","dotAll","unicode","unicodeSets","sticky","flagsBound","calls","hasDescriptors","functionLengthIsConfigurable","functionLengthIsWritable","listGetNode","isDelete","$o","deletedNode","objects","listDelete","listGet","listHas","listSet","$mapSet","$mapDelete","getSideChannelMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","getSideChannelList","makeChannel","$channelData","$StopIteration","StopIteration","origIterator","siIterator","resolveDirectory","urlString","rootDirectoryLevel","pathname","numDirsProcessed","finalPath","systemjsModuleName","isInteger","moduleUrl","System","_typeof","_toDate","_interopRequireDefault","_toFloat","_toInt","_toBoolean","_equals","_contains","_matches","_isEmail","_isURL","_isMACAddress","_isIP","_isIPRange","_isFQDN","_isDate","_isTime","_isBoolean","_isLocale","_isAbaRouting","_isAlpha","_interopRequireWildcard","_isAlphanumeric","_isNumeric","_isPassportNumber","_isPort","_isLowercase","_isUppercase","_isIMEI","_isAscii","_isFullWidth","_isHalfWidth","_isVariableWidth","_isMultibyte","_isSemVer","_isSurrogatePair","_isInt","_isFloat","_isDecimal","_isHexadecimal","_isOctal","_isDivisibleBy","_isHexColor","_isRgbColor","_isHSL","_isISRC","_isIBAN","_isBIC","_isMD","_isHash","_isJWT","_isJSON","_isEmpty","_isLength","_isByteLength","_isULID","_isUUID","_isMongoId","_isAfter","_isBefore","_isIn","_isLuhnNumber","_isCreditCard","_isIdentityCard","_isEAN","_isISIN","_isISBN","_isISSN","_isTaxID","_isMobilePhone","_isEthereumAddress","_isCurrency","_isBtcAddress","_isISO","_isISO2","_isISO3","_isRFC","_isISO4","_isISO31661Alpha","_isISO31661Alpha2","_isISO31661Numeric","_isISO5","_isBase","_isBase2","_isBase3","_isDataURI","_isMagnetURI","_isMailtoURI","_isMimeType","_isLatLong","_isPostalCode","_ltrim","_rtrim","_trim","_escape","_unescape","_stripLow","_whitelist","_blacklist","_isWhitelisted","_normalizeEmail","_isSlug","_isLicensePlate","_isStrongPassword","_isVAT","__esModule","_t","toFloat","toInt","toBoolean","contains","isMACAddress","isIP","isIPRange","isIBAN","isBIC","isAbaRouting","isAlpha","isAlphaLocales","locales","isAlphanumeric","isAlphanumericLocales","isNumeric","isPassportNumber","passportNumberLocales","isPort","isLowercase","isUppercase","isAscii","isFullWidth","isHalfWidth","isVariableWidth","isMultibyte","isSemVer","isSurrogatePair","isInt","isIMEI","isFloat","isFloatLocales","isDecimal","isHexadecimal","isOctal","isDivisibleBy","isHexColor","isRgbColor","isHSL","isISRC","isMD5","isHash","isJWT","isJSON","isEmpty","isLength","isLocale","isByteLength","isULID","isUUID","isMongoId","isIn","isLuhnNumber","isCreditCard","isIdentityCard","isEAN","isISIN","isISBN","isISSN","isMobilePhone","isMobilePhoneLocales","isPostalCode","isPostalCodeLocales","isEthereumAddress","isCurrency","isBtcAddress","isISO6346","isFreightContainerID","isISO6391","isISO8601","isISO15924","isRFC3339","isISO31661Alpha2","isISO31661Alpha3","isISO31661Numeric","isISO4217","isBase32","isBase58","isBase64","isDataURI","isMagnetURI","isMailtoURI","isMimeType","isLatLong","ltrim","rtrim","escape","stripLow","whitelist","blacklist","isWhitelisted","normalizeEmail","isSlug","isStrongPassword","isTaxID","isTime","isLicensePlate","isVAT","ibanLocales","farsiLocales","englishLocales","dotDecimal","commaDecimal","bengaliLocales","arabicLocales","alphanumeric","alpha","ar","he","fa","bn","eo","_locale","_i","_locale2","_i2","_locale3","_i3","_i4","_i5","chars","_assertString","_merge","defaultContainsOptions","_toString","minOccurrences","comparison","isRoutingReg","checkSumVal","comparisonDate","_str","ignore","_alpha","ascii","CountryCodes","isBICReg","defaultBase32Options","crockford","crockfordBase32","base32","base58Reg","urlSafe","base64UrlWithPadding","base64UrlWithoutPadding","base64WithPadding","base64WithoutPadding","_includesArray","looseBooleans","strictBooleans","bech32","base58","card","provider","sanitized","cards","allCards","cardProvider","amex","dinersclub","discover","jcb","mastercard","unionpay","visa","tmpCardsArray","decimal_digits","digits_after_decimal","digit","require_symbol","whole_dollar_amount_with_sep","thousands_separator","whole_dollar_amount","decimal_amount","decimal_separator","require_decimal","allow_decimal","allow_negatives","parens_for_negatives","negative_sign_after_digits","negative_sign_before_digits","allow_negative_sign_placeholder","allow_space_after_symbol","allow_space_after_digits","symbol_after_digits","currencyRegex","default_currency_options","schemeAndMediaType","mediaType","validMediaType","validAttribute","validData","default_date_options","strictMode","_step","formatDelimiter","delimiters","dateDelimiter","dateAndFormat","zippedArr","zip","dateObj","_iterator","_unsupportedIterableToArray","_n","F","return","_createForOfIteratorHelper","_step$value","_slicedToArray","dateWord","formatWord","fullYear","parsedYear","day","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arrayLikeToArray","default_decimal_options","regExp","force_decimal","decimalRegExp","actualCheckDigit","validEanRegex","ean","remainder","char","LENGTH_EAN_8","LENGTH_EAN_14","getPositionWeightThroughLengthAndIndex","partialSum","default_email_options","require_display_name","allow_display_name","display_email","splitNameAddress","display_name","endsWith","display_name_without_quotes","validateDisplayName","ignore_max_length","defaultMaxEmailLength","lower_domain","host_blacklist","_checkHost","host_whitelist","domain_specific_validation","_user_parts","gmailUserPart","require_tld","allow_underscores","allow_ip_domain","noBracketdomain","blacklisted_chars","allow_utf8_local_part","quotedEmailUserUtf8","quotedEmailUser","emailUserUtf8Part","emailUserPart","user_parts","default_is_empty_options","ignore_whitespace","eth","default_fqdn_options","allow_trailing_dot","allow_wildcard","tld","allow_numeric_tld","_nullUndefinedCheck","lt","gt","fullWidth","strippedStr","hslComma","hslSpace","halfWidth","algorithm","lengths","md5","md4","sha1","sha256","sha384","sha512","ripemd128","ripemd160","tiger128","tiger160","tiger192","crc32","crc32b","hexcolor","hexadecimal","isoCountryCode","isoCountryCodeInIbanRegexCodeObject","ibanRegexThroughCountryCode","countryCodeArray","hasOnlyValidCountryCodes","hasValidIbanFormat","hasValidIbanChecksum","AD","AE","AL","AT","AZ","BA","BE","BG","BH","BR","BY","CH","CR","CY","CZ","DE","DK","DO","DZ","EE","EG","ES","FI","FO","FR","GB","GE","GI","GL","GR","GT","HR","HU","IE","IL","IQ","IR","IS","IT","JO","KW","KZ","LB","LC","LI","LT","LU","LV","MA","MC","MD","ME","MK","MR","MT","MU","MZ","NL","NO","PK","PL","PS","PT","QA","RO","RS","SA","SC","SE","SI","SK","SM","SV","TL","TN","TR","UA","VA","VG","XK","imeiRegex","imeiRegexWithoutHyphens","allow_hyphens","imeiRegexWithHyphens","sum","mul","tp","IPv4AddressRegExp","IPv6AddressRegExp","IPv4SegmentFormat","IPv4AddressFormat","IPv6SegmentFormat","subnetMaybe","expectedSubnet","v4Subnet","v6Subnet","isbn","sanitizedIsbn","checksum","possibleIsbn10","possibleIsbn13","factor","isin","double","_arr","trunc","_digit","ScriptCodes","validISO15924Codes","validISO31661Alpha2CountriesCodes","validISO31661Alpha3CountriesCodes","validISO31661NumericCountriesCodes","CurrencyCodes","validISO4217CurrencyCodes","isISO6346Str","isDigit","letterCode","checkSumDigit","isISO6391Set","strictSeparator","iso8601StrictSeparator","iso8601","isValidDate","ordinalMatch","oYear","oDay","monthString","dayString","isrc","testIssn","issn","require_hyphen","case_sensitive","digits","weightOfDigits","allow_leading_zeroes","modulo","lastDigit","charsValue","X","Z","IN","lastNumber","k1","k2","TH","LK","incNum","idCardNo","provincesAndCities","powers","parityBit","checkAddressCode","addressCode","checkBirthDayCode","birDayCode","yyyy","dd","xdata","checkParityBit","id17","power","getParityBit","check15IdCardNo","check18IdCardNo","regexIsDigit","ALPHABET_CODES","A","B","C","E","G","I","J","K","L","N","P","R","T","U","W","intLeadingZeroes","minCheckPassed","maxCheckPassed","ltCheckPassed","gtCheckPassed","default_json_options","primitives","allow_primitives","dotSplit","currElem","defaultLatLongOptions","_includesString","pair","checkDMS","latDMS","longDMS","lat","long","presentationSequences","surrogatePairs","isInsideRange","discreteLengths","discreteLen","languageTagRegex","extension","privateuse","grandfathered","langtag","tmpNum","shouldDouble","eui","no_colons","no_separators","macAddress48NoSeparators","macAddress64NoSeparators","macAddress48","macAddress48WithDots","macAddress64","macAddress64WithDots","magnetURIComponent","_url$replace$split2","_url$replace$split2$","queryString","allowedParams","cc","bcc","isParseFailed","_q$split2","parseMailtoQueryString","mimeTypeSimple","mimeTypeText","mimeTypeMultipart","phones","multibyte","no_symbols","numericNoSymbols","octal","normalizedStr","passportRegexByCountryCode","AM","AR","AU","CA","CN","ID","JM","JP","KR","LY","MY","MX","NZ","PH","RU","SL","US","ZA","threeDigit","fourDigit","fiveDigit","sixDigit","BD","CO","HT","KE","MG","NP","PR","SG","TW","ZM","rfc3339","timeHour","timeMinute","timeNumOffset","timeOffset","partialTime","fullDate","fullTime","allowSpaces","includePercentValues","startsWithRgb","rgbColor","rgbaColor","rgbColorPercent","rgbaColorPercent","semanticVersioningRegex","charsetRegex","analysis","password","charMap","countChars","uniqueChars","uppercaseCount","lowercaseCount","numberCount","symbolCount","upperCaseRegex","lowerCaseRegex","numberRegex","symbolRegex","analyzePassword","returnScore","scoringOptions","points","pointsPerUnique","pointsPerRepeat","pointsForContainingLower","pointsForContainingUpper","pointsForContainingNumber","pointsForContainingSymbol","scorePassword","minLength","minLowercase","minUppercase","minNumbers","minSymbols","surrogatePair","strcopy","taxIdFormat","sanitizeRegexes","taxIdCheck","algorithms","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","enUsCampusPrefix","andover","atlanta","austin","brookhaven","cincinnati","fresno","internet","kansas","memphis","ogden","philadelphia","sba","itItNameCheck","vowelflag","xflag","tin","century_year","multip_lookup","full_year","checkdigit","luhnCheck","occurrences","trip_locations","recurrent","iso7064Check","weight","digitsArray","even","cur","reverseMultiplyAndSum","enUsGetPrefixes","accum","verif","lead_replace","checkdigits","verhoeffCheck","number_replace","_number_locations","char_to_int","odd_convert","_i6","_char_to_int","multiplier","first_part","lookup","_checksum","_i7","_sum","_i8","identifiers","verificators","pos","_i9","_i0","multipliers","tin_copy","current_year","current_century","allsymbols","default_time_options","formats","hourFormat","hour24","withSeconds","withOptionalSeconds","hour12","default_url_options","validate_length","max_allowed_length","allow_fragments","allow_query_components","auth","hostname","port_str","ipv6","require_valid_protocol","protocols","require_protocol","allow_protocol_relative_urls","require_host","disallow_auth","_auth$split","_auth$split2","ipv6_match","wrapped_ipv6","require_port","uuid","nil","vatMatchers","EL","weights","ABN","NG","UZ","BO","CL","EC","HN","NI","PA","PY","PE","UY","VE","modifiers","default_normalize_email_options","raw_parts","gmail_remove_subaddress","gmail_remove_dots","dotsReplacer","all_lowercase","gmail_lowercase","gmail_convert_googlemaildotcom","icloud_domains","icloud_remove_subaddress","icloud_lowercase","outlookdotcom_domains","outlookdotcom_remove_subaddress","outlookdotcom_lowercase","yahoo_domains","yahoo_remove_subaddress","yahoo_lowercase","yandex_domains","yandex_lowercase","yandex_convert_yandexru","strIndex","keep_new_lines","radix","checkvalue","second","d_table","p_table","str_copy","arrVal","regexpAsStringLiteral","availableTypedArrays","typedArrays","superProto","getter","trySlices","tryTypedArrays","___CSS_LOADER_EXPORT___","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","indexByIdentifier","css","sourceMap","references","updater","addElementStyle","byIndex","domAPI","lastIdentifiers","newList","newLastIdentifiers","_index","insert","styleTarget","HTMLIFrameElement","contentDocument","getTarget","setAttributes","styleElement","nonce","insertStyleElement","styleTagTransform","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","webpackAsyncContext","__webpack_require__","__WEBPACK_EXTERNAL_MODULE__5237__","__WEBPACK_EXTERNAL_MODULE__9293__","__WEBPACK_EXTERNAL_MODULE__3164__","__WEBPACK_EXTERNAL_MODULE__7220__","__WEBPACK_EXTERNAL_MODULE__464__","__WEBPACK_EXTERNAL_MODULE__6435__","__WEBPACK_EXTERNAL_MODULE__136__","__WEBPACK_EXTERNAL_MODULE__8208__","__WEBPACK_EXTERNAL_MODULE__3850__","__WEBPACK_EXTERNAL_MODULE__7765__","__WEBPACK_EXTERNAL_MODULE__7602__","__WEBPACK_EXTERNAL_MODULE__2240__","__WEBPACK_EXTERNAL_MODULE__7832__","__WEBPACK_EXTERNAL_MODULE__3389__","__WEBPACK_EXTERNAL_MODULE__4564__","__WEBPACK_EXTERNAL_MODULE__4633__","__WEBPACK_EXTERNAL_MODULE__1375__","__WEBPACK_EXTERNAL_MODULE__3530__","__WEBPACK_EXTERNAL_MODULE__8340__","__WEBPACK_EXTERNAL_MODULE__5290__","__WEBPACK_EXTERNAL_MODULE__596__","__WEBPACK_EXTERNAL_MODULE__5400__","__WEBPACK_EXTERNAL_MODULE__2191__","__WEBPACK_EXTERNAL_MODULE__1792__","__WEBPACK_EXTERNAL_MODULE__230__","__WEBPACK_EXTERNAL_MODULE__3303__","possibleNames","getStopIterationIterator","$iterator","iterable","$arrayPush","$charCodeAt","$stringSlice","getArrayIterator","arraylike","getNonCollectionIterator","noPrimordialCollections","nextIndex","advanceStringIndex","$mapForEach","$setForEach","process","$mapIterator","$setIterator","$mapAtAtIterator","$setAtAtIterator","getCollectionIterator","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","ns","def","definition","chunkId","promises","script","needAttach","getElementsByTagName","charset","nc","src","tu","onScriptComplete","onload","doneFns","tt","createScriptURL","trustedTypes","createPolicy","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal"],"sourceRoot":"webpack:///","x_google_ignoreList":[0,1,2,8,9,22,23,24,25,26,27,28,29,30,31,32,33,34,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,215,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,511,512,513,514,515,516,545,546,547,548,549,550,551,552,553,554,555,556,557,558]}