@abp/ng.core 10.0.2 → 10.1.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"abp-ng.core.mjs","sources":["../tmp-esm2022/lib/abstracts/ng-model.component.js","../tmp-esm2022/lib/abstracts/auth.guard.js","../tmp-esm2022/lib/abstracts/auth.service.js","../tmp-esm2022/lib/abstracts/auth-error-filter.js","../tmp-esm2022/lib/tokens/localization.token.js","../tmp-esm2022/lib/tokens/options.token.js","../tmp-esm2022/lib/utils/localization-utils.js","../tmp-esm2022/lib/utils/string-utils.js","../tmp-esm2022/lib/services/content-projection.service.js","../tmp-esm2022/lib/utils/array-utils.js","../tmp-esm2022/lib/utils/common-utils.js","../tmp-esm2022/lib/utils/date-utils.js","../tmp-esm2022/lib/utils/object-utils.js","../tmp-esm2022/lib/utils/internal-store-utils.js","../tmp-esm2022/lib/services/environment.service.js","../tmp-esm2022/lib/services/http-error-reporter.service.js","../tmp-esm2022/lib/utils/environment-utils.js","../tmp-esm2022/lib/utils/factory-utils.js","../tmp-esm2022/lib/utils/file-utils.js","../tmp-esm2022/lib/utils/number-utils.js","../tmp-esm2022/lib/utils/form-utils.js","../tmp-esm2022/lib/utils/generator-utils.js","../tmp-esm2022/lib/utils/http-utils.js","../tmp-esm2022/lib/services/local-storage.service.js","../tmp-esm2022/lib/tokens/app-config.token.js","../tmp-esm2022/lib/tokens/cookie-language-key.token.js","../tmp-esm2022/lib/tokens/list.token.js","../tmp-esm2022/lib/tokens/lodaer-delay.token.js","../tmp-esm2022/lib/tokens/manage-profile.token.js","../tmp-esm2022/lib/tokens/queue.token.js","../tmp-esm2022/lib/tokens/tenant-key.token.js","../tmp-esm2022/lib/tokens/include-localization-resources.token.js","../tmp-esm2022/lib/tokens/pipe-to-login.token.js","../tmp-esm2022/lib/tokens/set-token-response-to-storage.token.js","../tmp-esm2022/lib/tokens/check-authentication-state.js","../tmp-esm2022/lib/tokens/http-context.token.js","../tmp-esm2022/lib/tokens/others-group.token.js","../tmp-esm2022/lib/tokens/tenant-not-found-by-name.js","../tmp-esm2022/lib/tokens/compare-func.token.js","../tmp-esm2022/lib/tokens/dynamic-layout.token.js","../tmp-esm2022/lib/tokens/title-strategy-disable-project-name.token.js","../tmp-esm2022/lib/tokens/ssr-state.token.js","../tmp-esm2022/lib/services/cookie-storage.service.js","../tmp-esm2022/lib/services/session-state.service.js","../tmp-esm2022/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.js","../tmp-esm2022/lib/services/multi-tenancy.service.js","../tmp-esm2022/lib/utils/multi-tenancy-utils.js","../tmp-esm2022/lib/utils/initial-utils.js","../tmp-esm2022/lib/strategies/cross-origin.strategy.js","../tmp-esm2022/lib/strategies/dom.strategy.js","../tmp-esm2022/lib/utils/lazy-load-utils.js","../tmp-esm2022/lib/utils/queue.js","../tmp-esm2022/lib/utils/route-utils.js","../tmp-esm2022/lib/utils/tree-utils.js","../tmp-esm2022/lib/utils/server-cookie-utils.js","../tmp-esm2022/lib/services/dom-insertion.service.js","../tmp-esm2022/lib/services/html-encoding.service.js","../tmp-esm2022/lib/services/http-wait.service.js","../tmp-esm2022/lib/services/resource-wait.service.js","../tmp-esm2022/lib/services/lazy-load.service.js","../tmp-esm2022/lib/services/list.service.js","../tmp-esm2022/lib/services/permission.service.js","../tmp-esm2022/lib/services/replaceable-components.service.js","../tmp-esm2022/lib/clients/http.client.js","../tmp-esm2022/lib/services/rest.service.js","../tmp-esm2022/lib/services/router-events.service.js","../tmp-esm2022/lib/services/router-wait.service.js","../tmp-esm2022/lib/services/routes.service.js","../tmp-esm2022/lib/services/subscription.service.js","../tmp-esm2022/lib/services/track-by.service.js","../tmp-esm2022/lib/services/window.service.js","../tmp-esm2022/lib/services/internet-connection-service.js","../tmp-esm2022/lib/services/local-storage-listener.service.js","../tmp-esm2022/lib/services/title-strategy.service.js","../tmp-esm2022/lib/services/timezone.service.js","../tmp-esm2022/lib/services/time.service.js","../tmp-esm2022/lib/strategies/container.strategy.js","../tmp-esm2022/lib/strategies/content-security.strategy.js","../tmp-esm2022/lib/strategies/content.strategy.js","../tmp-esm2022/lib/strategies/context.strategy.js","../tmp-esm2022/lib/strategies/loading.strategy.js","../tmp-esm2022/lib/strategies/projection.strategy.js","../tmp-esm2022/lib/services/dom-strategy.service.js","../tmp-esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.js","../tmp-esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-localization.service.js","../tmp-esm2022/lib/services/config-state.service.js","../tmp-esm2022/lib/services/localization.service.js","../tmp-esm2022/lib/components/dynamic-layout.component.js","../tmp-esm2022/lib/components/replaceable-route-container.component.js","../tmp-esm2022/lib/components/router-outlet.component.js","../tmp-esm2022/lib/constants/different-locales.js","../tmp-esm2022/lib/constants/default-layouts.js","../tmp-esm2022/lib/directives/autofocus.directive.js","../tmp-esm2022/lib/directives/debounce.directive.js","../tmp-esm2022/lib/directives/for.directive.js","../tmp-esm2022/lib/directives/form-submit.directive.js","../tmp-esm2022/lib/directives/init.directive.js","../tmp-esm2022/lib/directives/permission.directive.js","../tmp-esm2022/lib/directives/replaceable-template.directive.js","../tmp-esm2022/lib/directives/stop-propagation.directive.js","../tmp-esm2022/lib/directives/show-password.directive.js","../tmp-esm2022/lib/directives/caps-lock.directive.js","../tmp-esm2022/lib/utils/date-extensions.js","../tmp-esm2022/lib/providers/cookie-language.provider.js","../tmp-esm2022/lib/providers/locale.provider.js","../tmp-esm2022/lib/providers/include-localization-resources.provider.js","../tmp-esm2022/lib/handlers/routes.handler.js","../tmp-esm2022/lib/interceptors/api.interceptor.js","../tmp-esm2022/lib/interceptors/timezone.interceptor.js","../tmp-esm2022/lib/interceptors/transfer-state.interceptor.js","../tmp-esm2022/lib/providers/core-module-config.provider.js","../tmp-esm2022/lib/pipes/localization.pipe.js","../tmp-esm2022/lib/pipes/safe-html.pipe.js","../tmp-esm2022/lib/pipes/sort.pipe.js","../tmp-esm2022/lib/pipes/to-injector.pipe.js","../tmp-esm2022/lib/pipes/short-date.pipe.js","../tmp-esm2022/lib/pipes/short-time.pipe.js","../tmp-esm2022/lib/pipes/short-date-time.pipe.js","../tmp-esm2022/lib/pipes/utc-to-local.pipe.js","../tmp-esm2022/lib/pipes/lazy-localization.pipe.js","../tmp-esm2022/lib/pipes/html-encode.pipe.js","../tmp-esm2022/lib/core.module.js","../tmp-esm2022/lib/guards/permission.guard.js","../tmp-esm2022/lib/localization.module.js","../tmp-esm2022/lib/models/dtos.js","../tmp-esm2022/lib/models/auth-events.js","../tmp-esm2022/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.js","../tmp-esm2022/lib/validators/age.validator.js","../tmp-esm2022/lib/validators/credit-card.validator.js","../tmp-esm2022/lib/validators/range.validator.js","../tmp-esm2022/lib/validators/required.validator.js","../tmp-esm2022/lib/validators/string-length.validator.js","../tmp-esm2022/lib/validators/unique-character.validator.js","../tmp-esm2022/lib/validators/url.validator.js","../tmp-esm2022/lib/validators/username.validator.js","../tmp-esm2022/lib/validators/index.js","../tmp-esm2022/public-api.js","../tmp-esm2022/abp-ng.core.js"],"sourcesContent":["import { ChangeDetectorRef, Component, inject, Input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n// Not an abstract class on purpose. Do not change!\nexport class AbstractNgModelComponent {\n constructor() {\n this.cdRef = inject(ChangeDetectorRef);\n this.valueFn = value => value;\n this.valueLimitFn = value => false;\n }\n set value(value) {\n value = this.valueFn(value, this._value);\n if (this.valueLimitFn(value, this._value) !== false || this.readonly)\n return;\n this._value = value;\n this.notifyValueChange();\n }\n get value() {\n return this._value || this.defaultValue;\n }\n get defaultValue() {\n return this._value;\n }\n notifyValueChange() {\n if (this.onChange) {\n this.onChange(this.value);\n }\n }\n writeValue(value) {\n this._value = this.valueLimitFn(value, this._value) || value;\n this.cdRef.markForCheck();\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbstractNgModelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.7\", type: AbstractNgModelComponent, isStandalone: true, selector: \"ng-component\", inputs: { disabled: \"disabled\", readonly: \"readonly\", valueFn: \"valueFn\", valueLimitFn: \"valueLimitFn\", value: \"value\" }, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbstractNgModelComponent, decorators: [{\n type: Component,\n args: [{\n template: '',\n }]\n }], propDecorators: { disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }], valueFn: [{\n type: Input\n }], valueLimitFn: [{\n type: Input\n }], value: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctbW9kZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2Fic3RyYWN0cy9uZy1tb2RlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUc1RSxtREFBbUQ7QUFJbkQsTUFBTSxPQUFPLHdCQUF3QjtJQUhyQztRQUtZLFVBQUssR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQVc1QyxZQUFPLEdBQXVDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBaUIsQ0FBQztRQUd6RSxpQkFBWSxHQUF5QyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztLQTBDckU7SUF4Q0MsSUFDSSxLQUFLLENBQUMsS0FBUTtRQUNoQixLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFpQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBRTdFLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFRO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUM3RCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDOzhHQXpEVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixrTUFGekIsRUFBRTs7MkZBRUQsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO2lCQUNiOzhCQVFDLFFBQVE7c0JBRFAsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJRixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLy8gTm90IGFuIGFic3RyYWN0IGNsYXNzIG9uIHB1cnBvc2UuIERvIG5vdCBjaGFuZ2UhXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlOiAnJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFic3RyYWN0TmdNb2RlbENvbXBvbmVudDxUID0gYW55LCBVID0gVD4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHJvdGVjdGVkIF92YWx1ZSE6IFQ7XHJcbiAgcHJvdGVjdGVkIGNkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBvbkNoYW5nZT86ICh2YWx1ZTogVCkgPT4gdm9pZDtcclxuICBvblRvdWNoZWQ/OiAoKSA9PiB2b2lkO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICByZWFkb25seT86IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdmFsdWVGbjogKHZhbHVlOiBVLCBwcmV2aW91c1ZhbHVlPzogVCkgPT4gVCA9IHZhbHVlID0+IHZhbHVlIGFzIGFueSBhcyBUO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHZhbHVlTGltaXRGbjogKHZhbHVlOiBULCBwcmV2aW91c1ZhbHVlPzogVCkgPT4gYW55ID0gdmFsdWUgPT4gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKHZhbHVlOiBUKSB7XHJcbiAgICB2YWx1ZSA9IHRoaXMudmFsdWVGbih2YWx1ZSBhcyBhbnkgYXMgVSwgdGhpcy5fdmFsdWUpO1xyXG5cclxuICAgIGlmICh0aGlzLnZhbHVlTGltaXRGbih2YWx1ZSwgdGhpcy5fdmFsdWUpICE9PSBmYWxzZSB8fCB0aGlzLnJlYWRvbmx5KSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMubm90aWZ5VmFsdWVDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIGdldCB2YWx1ZSgpOiBUIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZSB8fCB0aGlzLmRlZmF1bHRWYWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBkZWZhdWx0VmFsdWUoKTogVCB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG5cclxuICBub3RpZnlWYWx1ZUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMudmFsdWVMaW1pdEZuKHZhbHVlLCB0aGlzLl92YWx1ZSkgfHwgdmFsdWU7XHJcbiAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcbn1cclxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated Use `authGuard` *function* instead.\n */\nexport class AuthGuard {\n canActivate() {\n console.error('You should add @abp/ng-oauth packages or create your own auth packages.');\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AuthGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AuthGuard, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\nexport const authGuard = () => {\n console.error('You should add @abp/ng-oauth packages or create your own auth packages.');\n return false;\n};\nexport const asyncAuthGuard = () => {\n console.error('You should add @abp/ng-oauth packages or create your own auth packages.');\n return false;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9hYnN0cmFjdHMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0zQzs7R0FFRztBQUlILE1BQU0sT0FBTyxTQUFTO0lBQ3BCLFdBQVc7UUFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLHlFQUF5RSxDQUFDLENBQUM7UUFDekYsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQUpVLFNBQVM7a0hBQVQsU0FBUyxjQUZSLE1BQU07OzJGQUVQLFNBQVM7a0JBSHJCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQVFELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBa0IsR0FBRyxFQUFFO0lBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMseUVBQXlFLENBQUMsQ0FBQztJQUN6RixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUdGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBa0IsR0FBRyxFQUFFO0lBQ2hELE9BQU8sQ0FBQyxLQUFLLENBQUMseUVBQXlFLENBQUMsQ0FBQztJQUN6RixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSUFicEd1YXJkIH0gZnJvbSAnLi9hYnN0cmFjdC1ndWFyZCc7XHJcbmltcG9ydCB7IENhbkFjdGl2YXRlRm4gfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuLyoqXHJcbiAqIEBkZXByZWNhdGVkIFVzZSBgYXV0aEd1YXJkYCAqZnVuY3Rpb24qIGluc3RlYWQuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aEd1YXJkIGltcGxlbWVudHMgSUFicEd1YXJkIHtcclxuICBjYW5BY3RpdmF0ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xyXG4gICAgY29uc29sZS5lcnJvcignWW91IHNob3VsZCBhZGQgQGFicC9uZy1vYXV0aCBwYWNrYWdlcyBvciBjcmVhdGUgeW91ciBvd24gYXV0aCBwYWNrYWdlcy4nKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBhdXRoR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAoKSA9PiB7XHJcbiAgY29uc29sZS5lcnJvcignWW91IHNob3VsZCBhZGQgQGFicC9uZy1vYXV0aCBwYWNrYWdlcyBvciBjcmVhdGUgeW91ciBvd24gYXV0aCBwYWNrYWdlcy4nKTtcclxuICByZXR1cm4gZmFsc2U7XHJcbn07XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IGFzeW5jQXV0aEd1YXJkOiBDYW5BY3RpdmF0ZUZuID0gKCkgPT4ge1xyXG4gIGNvbnNvbGUuZXJyb3IoJ1lvdSBzaG91bGQgYWRkIEBhYnAvbmctb2F1dGggcGFja2FnZXMgb3IgY3JlYXRlIHlvdXIgb3duIGF1dGggcGFja2FnZXMuJyk7XHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59O1xyXG4iXX0=","import { Injectable } from '@angular/core';\nimport { of } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * Abstract service for Authentication.\n */\nexport class AuthService {\n warningMessage() {\n console.error('You should add @abp/ng-oauth packages or create your own auth packages.');\n }\n get oidc() {\n this.warningMessage();\n return false;\n }\n set oidc(value) {\n this.warningMessage();\n }\n init() {\n this.warningMessage();\n return Promise.resolve(undefined);\n }\n login(params) {\n this.warningMessage();\n return of(undefined);\n }\n logout(queryParams) {\n this.warningMessage();\n return of(undefined);\n }\n navigateToLogin(queryParams) { }\n get isInternalAuth() {\n throw new Error('not implemented');\n }\n get isAuthenticated() {\n this.warningMessage();\n return false;\n }\n loginUsingGrant(grantType, parameters, headers) {\n console.log({ grantType, parameters, headers });\n return Promise.reject(new Error('not implemented'));\n }\n getAccessTokenExpiration() {\n this.warningMessage();\n return 0;\n }\n getRefreshToken() {\n this.warningMessage();\n return '';\n }\n getAccessToken() {\n this.warningMessage();\n return '';\n }\n refreshToken() {\n this.warningMessage();\n return Promise.resolve(undefined);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AuthService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AuthService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2Fic3RyYWN0cy9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUl0Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxXQUFXO0lBQ2QsY0FBYztRQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLHlFQUF5RSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxLQUFjO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFtQjtRQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFvQjtRQUN6QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELGVBQWUsQ0FBQyxXQUFvQixJQUFVLENBQUM7SUFFL0MsSUFBSSxjQUFjO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxlQUFlLENBQ2IsU0FBaUIsRUFDakIsVUFBa0IsRUFDbEIsT0FBcUI7UUFFckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNoRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDOzhHQW5FVSxXQUFXO2tIQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExvZ2luUGFyYW1zIH0gZnJvbSAnLi4vbW9kZWxzL2F1dGgnO1xyXG5pbXBvcnQgeyBBYnBBdXRoUmVzcG9uc2UgfSBmcm9tICcuL2F1dGgtcmVzcG9uc2UubW9kZWwnO1xyXG5cclxuLyoqXHJcbiAqIEFic3RyYWN0IHNlcnZpY2UgZm9yIEF1dGhlbnRpY2F0aW9uLlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIGltcGxlbWVudHMgSUF1dGhTZXJ2aWNlIHtcclxuICBwcml2YXRlIHdhcm5pbmdNZXNzYWdlKCkge1xyXG4gICAgY29uc29sZS5lcnJvcignWW91IHNob3VsZCBhZGQgQGFicC9uZy1vYXV0aCBwYWNrYWdlcyBvciBjcmVhdGUgeW91ciBvd24gYXV0aCBwYWNrYWdlcy4nKTtcclxuICB9XHJcblxyXG4gIGdldCBvaWRjKCk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy53YXJuaW5nTWVzc2FnZSgpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2V0IG9pZGModmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMud2FybmluZ01lc3NhZ2UoKTtcclxuICB9XHJcblxyXG4gIGluaXQoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHRoaXMud2FybmluZ01lc3NhZ2UoKTtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcclxuICB9XHJcblxyXG4gIGxvZ2luKHBhcmFtczogTG9naW5QYXJhbXMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy53YXJuaW5nTWVzc2FnZSgpO1xyXG4gICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy53YXJuaW5nTWVzc2FnZSgpO1xyXG4gICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiB2b2lkIHsgfVxyXG5cclxuICBnZXQgaXNJbnRlcm5hbEF1dGgoKTogYm9vbGVhbiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcclxuICAgIHRoaXMud2FybmluZ01lc3NhZ2UoKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGxvZ2luVXNpbmdHcmFudChcclxuICAgIGdyYW50VHlwZTogc3RyaW5nLFxyXG4gICAgcGFyYW1ldGVyczogb2JqZWN0LFxyXG4gICAgaGVhZGVycz86IEh0dHBIZWFkZXJzLFxyXG4gICk6IFByb21pc2U8QWJwQXV0aFJlc3BvbnNlPiB7XHJcbiAgICBjb25zb2xlLmxvZyh7IGdyYW50VHlwZSwgcGFyYW1ldGVycywgaGVhZGVycyB9KTtcclxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpKTtcclxuICB9XHJcblxyXG4gIGdldEFjY2Vzc1Rva2VuRXhwaXJhdGlvbigpOiBudW1iZXIge1xyXG4gICAgdGhpcy53YXJuaW5nTWVzc2FnZSgpO1xyXG4gICAgcmV0dXJuIDA7XHJcbiAgfVxyXG5cclxuICBnZXRSZWZyZXNoVG9rZW4oKTogc3RyaW5nIHtcclxuICAgIHRoaXMud2FybmluZ01lc3NhZ2UoKTtcclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGdldEFjY2Vzc1Rva2VuKCk6IHN0cmluZyB7XHJcbiAgICB0aGlzLndhcm5pbmdNZXNzYWdlKCk7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoVG9rZW4oKTogUHJvbWlzZTxBYnBBdXRoUmVzcG9uc2U+IHtcclxuICAgIHRoaXMud2FybmluZ01lc3NhZ2UoKTtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUF1dGhTZXJ2aWNlIHtcclxuICBvaWRjOiBib29sZWFuO1xyXG5cclxuICBnZXQgaXNJbnRlcm5hbEF1dGgoKTogYm9vbGVhbjtcclxuXHJcbiAgZ2V0IGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuO1xyXG5cclxuICBpbml0KCk6IFByb21pc2U8YW55PjtcclxuXHJcbiAgbG9nb3V0KHF1ZXJ5UGFyYW1zPzogUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxuICBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiB2b2lkO1xyXG5cclxuICBsb2dpbihwYXJhbXM6IExvZ2luUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxuICBsb2dpblVzaW5nR3JhbnQoXHJcbiAgICBncmFudFR5cGU6IHN0cmluZyxcclxuICAgIHBhcmFtZXRlcnM6IG9iamVjdCxcclxuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyxcclxuICApOiBQcm9taXNlPEFicEF1dGhSZXNwb25zZT47XHJcblxyXG4gIGdldEFjY2Vzc1Rva2VuRXhwaXJhdGlvbigpOiBudW1iZXI7XHJcblxyXG4gIGdldFJlZnJlc2hUb2tlbigpOiBzdHJpbmc7XHJcblxyXG4gIGdldEFjY2Vzc1Rva2VuKCk6IHN0cmluZztcclxuXHJcbiAgcmVmcmVzaFRva2VuKCk6IFByb21pc2U8QWJwQXV0aFJlc3BvbnNlIHwgdm9pZD47XHJcbn1cclxuIl19","export class AbstractAuthErrorFilter {\n}\nexport class AuthErrorFilterService extends AbstractAuthErrorFilter {\n warningMessage() {\n console.error('You should add @abp/ng-oauth packages or create your own auth packages.');\n }\n get(id) {\n this.warningMessage();\n throw new Error('not implemented');\n }\n add(filter) {\n this.warningMessage();\n }\n patch(item) {\n this.warningMessage();\n }\n remove(id) {\n this.warningMessage();\n }\n run(event) {\n this.warningMessage();\n throw new Error('not implemented');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1lcnJvci1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvYWJzdHJhY3RzL2F1dGgtZXJyb3ItZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBZ0IsdUJBQXVCO0NBTTVDO0FBRUQsTUFBTSxPQUFPLHNCQUdYLFNBQVEsdUJBQTZCO0lBQzdCLGNBQWM7UUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxHQUFHLENBQUMsRUFBVTtRQUNaLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELEdBQUcsQ0FBQyxNQUFTO1FBQ1gsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBZ0I7UUFDcEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBVTtRQUNmLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQVE7UUFDVixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhFcnJvckV2ZW50LCBBdXRoRXJyb3JGaWx0ZXIgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0QXV0aEVycm9yRmlsdGVyPFQsIEU+IHtcclxuICBhYnN0cmFjdCBnZXQoaWQ6IHN0cmluZyk6IFQ7XHJcbiAgYWJzdHJhY3QgYWRkKGZpbHRlcjogVCk6IHZvaWQ7XHJcbiAgYWJzdHJhY3QgcGF0Y2goaXRlbTogUGFydGlhbDxUPik6IHZvaWQ7XHJcbiAgYWJzdHJhY3QgcmVtb3ZlKGlkOiBzdHJpbmcpOiB2b2lkO1xyXG4gIGFic3RyYWN0IHJ1bihldmVudDogRSk6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBdXRoRXJyb3JGaWx0ZXJTZXJ2aWNlPFxyXG4gIFQgPSBBdXRoRXJyb3JGaWx0ZXIsXHJcbiAgRSA9IEF1dGhFcnJvckV2ZW50LFxyXG4+IGV4dGVuZHMgQWJzdHJhY3RBdXRoRXJyb3JGaWx0ZXI8VCwgRT4ge1xyXG4gIHByaXZhdGUgd2FybmluZ01lc3NhZ2UoKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdZb3Ugc2hvdWxkIGFkZCBAYWJwL25nLW9hdXRoIHBhY2thZ2VzIG9yIGNyZWF0ZSB5b3VyIG93biBhdXRoIHBhY2thZ2VzLicpO1xyXG4gIH1cclxuXHJcbiAgZ2V0KGlkOiBzdHJpbmcpOiBUIHtcclxuICAgIHRoaXMud2FybmluZ01lc3NhZ2UoKTtcclxuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XHJcbiAgfVxyXG5cclxuICBhZGQoZmlsdGVyOiBUKTogdm9pZCB7XHJcbiAgICB0aGlzLndhcm5pbmdNZXNzYWdlKCk7XHJcbiAgfVxyXG5cclxuICBwYXRjaChpdGVtOiBQYXJ0aWFsPFQ+KTogdm9pZCB7XHJcbiAgICB0aGlzLndhcm5pbmdNZXNzYWdlKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy53YXJuaW5nTWVzc2FnZSgpO1xyXG4gIH1cclxuXHJcbiAgcnVuKGV2ZW50OiBFKTogYm9vbGVhbiB7XHJcbiAgICB0aGlzLndhcm5pbmdNZXNzYWdlKCk7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xyXG4gIH1cclxufVxyXG4iXX0=","import { InjectionToken } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nexport const LOCALIZATIONS = new InjectionToken('LOCALIZATIONS');\nexport function localizationContributor(localizations) {\n if (localizations) {\n localizations$.next([...localizations$.value, ...localizations]);\n }\n}\nexport const localizations$ = new BehaviorSubject([]);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Rva2Vucy9sb2NhbGl6YXRpb24udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3ZDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUVqRSxNQUFNLFVBQVUsdUJBQXVCLENBQUMsYUFBa0M7SUFDeEUsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzL2NvbW1vbic7XHJcblxyXG5leHBvcnQgY29uc3QgTE9DQUxJWkFUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbignTE9DQUxJWkFUSU9OUycpO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsaXphdGlvbkNvbnRyaWJ1dG9yKGxvY2FsaXphdGlvbnM/OiBBQlAuTG9jYWxpemF0aW9uW10pIHtcclxuICBpZiAobG9jYWxpemF0aW9ucykge1xyXG4gICAgbG9jYWxpemF0aW9ucyQubmV4dChbLi4ubG9jYWxpemF0aW9ucyQudmFsdWUsIC4uLmxvY2FsaXphdGlvbnNdKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBsb2NhbGl6YXRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QUJQLkxvY2FsaXphdGlvbltdPihbXSk7XHJcbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const CORE_OPTIONS = new InjectionToken('CORE_OPTIONS');\nexport function coreOptionsFactory({ ...options }) {\n return {\n ...options,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi90b2tlbnMvb3B0aW9ucy50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBVyxjQUFjLENBQUMsQ0FBQztBQUV6RSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBWTtJQUN6RCxPQUFPO1FBQ0wsR0FBRyxPQUFPO0tBQ0MsQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzL2NvbW1vbic7XHJcblxyXG5leHBvcnQgY29uc3QgQ09SRV9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPEFCUC5Sb290PignQ09SRV9PUFRJT05TJyk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29yZU9wdGlvbnNGYWN0b3J5KHsgLi4ub3B0aW9ucyB9OiBBQlAuUm9vdCkge1xyXG4gIHJldHVybiB7XHJcbiAgICAuLi5vcHRpb25zLFxyXG4gIH0gYXMgQUJQLlJvb3Q7XHJcbn1cclxuIl19","// This will not be necessary when only Angukar 9.1+ is supported\nexport function getLocaleDirection(locale) {\n return /^(ar(-[A-Z]{2})?|ckb(-IR)?|fa(-AF)?|he|ks|lrc(-IQ)?|mzn|pa-Arab|ps(-PK)?|sd|ug|ur(-IN)?|uz-Arab|yi)$/.test(locale)\n ? 'rtl'\n : 'ltr';\n}\nexport function createLocalizer(localization) {\n return (resourceName, key, defaultValue) => {\n if (resourceName === '_')\n return key;\n const resource = localization?.values?.[resourceName];\n if (!resource)\n return defaultValue;\n return resource[key] || defaultValue;\n };\n}\nexport function createLocalizerWithFallback(localization) {\n const findLocalization = createLocalizationFinder(localization);\n return (resourceNames, keys, defaultValue) => {\n const { localized } = findLocalization(resourceNames, keys);\n return localized || defaultValue;\n };\n}\nexport function createLocalizationPipeKeyGenerator(localization) {\n const findLocalization = createLocalizationFinder(localization);\n return (resourceNames, keys, defaultKey) => {\n const { resourceName, key } = findLocalization(resourceNames, keys);\n return !resourceName ? defaultKey : resourceName === '_' ? key : `${resourceName}::${key}`;\n };\n}\nfunction createLocalizationFinder(localization) {\n const localize = createLocalizer(localization);\n return (resourceNames, keys) => {\n resourceNames = resourceNames.concat(localization.defaultResourceName || '').filter(Boolean);\n const resourceCount = resourceNames.length;\n const keyCount = keys.length;\n for (let i = 0; i < resourceCount; i++) {\n const resourceName = resourceNames[i];\n for (let j = 0; j < keyCount; j++) {\n const key = keys[j];\n const localized = localize(resourceName, key, null);\n if (localized)\n return { resourceName, key, localized };\n }\n }\n return { resourceName: undefined, key: undefined, localized: undefined };\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3V0aWxzL2xvY2FsaXphdGlvbi11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxpRUFBaUU7QUFDakUsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQWM7SUFDL0MsT0FBTyxzR0FBc0csQ0FBQyxJQUFJLENBQ2hILE1BQU0sQ0FDUDtRQUNDLENBQUMsQ0FBQyxLQUFLO1FBQ1AsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFlBQXFEO0lBQ25GLE9BQU8sQ0FBQyxZQUFvQixFQUFFLEdBQVcsRUFBRSxZQUEyQixFQUFFLEVBQUU7UUFDeEUsSUFBSSxZQUFZLEtBQUssR0FBRztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBRXJDLE1BQU0sUUFBUSxHQUFHLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sWUFBWSxDQUFDO1FBRW5DLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksQ0FBQztJQUN2QyxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLFlBQXFEO0lBQy9GLE1BQU0sZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFaEUsT0FBTyxDQUFDLGFBQXVCLEVBQUUsSUFBYyxFQUFFLFlBQW9CLEVBQUUsRUFBRTtRQUN2RSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVELE9BQU8sU0FBUyxJQUFJLFlBQVksQ0FBQztJQUNuQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGtDQUFrQyxDQUNoRCxZQUFxRDtJQUVyRCxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRWhFLE9BQU8sQ0FBQyxhQUF1QixFQUFFLElBQWMsRUFBRSxVQUE4QixFQUFFLEVBQUU7UUFDakYsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQzdGLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLFlBQXFEO0lBQ3JGLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUUvQyxPQUFPLENBQUMsYUFBdUIsRUFBRSxJQUFjLEVBQUUsRUFBRTtRQUNqRCxhQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTdGLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUU3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdkMsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXRDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxTQUFTO29CQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDO1lBQ3pELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDM0UsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uTG9jYWxpemF0aW9uQ29uZmlndXJhdGlvbkR0byB9IGZyb20gJy4uL3Byb3h5L3ZvbG8vYWJwL2FzcC1uZXQtY29yZS9tdmMvYXBwbGljYXRpb24tY29uZmlndXJhdGlvbnMvbW9kZWxzJztcclxuXHJcbi8vIFRoaXMgd2lsbCBub3QgYmUgbmVjZXNzYXJ5IHdoZW4gb25seSBBbmd1a2FyIDkuMSsgaXMgc3VwcG9ydGVkXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGVEaXJlY3Rpb24obG9jYWxlOiBzdHJpbmcpOiAnbHRyJyB8ICdydGwnIHtcclxuICByZXR1cm4gL14oYXIoLVtBLVpdezJ9KT98Y2tiKC1JUik/fGZhKC1BRik/fGhlfGtzfGxyYygtSVEpP3xtem58cGEtQXJhYnxwcygtUEspP3xzZHx1Z3x1cigtSU4pP3x1ei1BcmFifHlpKSQvLnRlc3QoXHJcbiAgICBsb2NhbGUsXHJcbiAgKVxyXG4gICAgPyAncnRsJ1xyXG4gICAgOiAnbHRyJztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvY2FsaXplcihsb2NhbGl6YXRpb246IEFwcGxpY2F0aW9uTG9jYWxpemF0aW9uQ29uZmlndXJhdGlvbkR0bykge1xyXG4gIHJldHVybiAocmVzb3VyY2VOYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHtcclxuICAgIGlmIChyZXNvdXJjZU5hbWUgPT09ICdfJykgcmV0dXJuIGtleTtcclxuXHJcbiAgICBjb25zdCByZXNvdXJjZSA9IGxvY2FsaXphdGlvbj8udmFsdWVzPy5bcmVzb3VyY2VOYW1lXTtcclxuXHJcbiAgICBpZiAoIXJlc291cmNlKSByZXR1cm4gZGVmYXVsdFZhbHVlO1xyXG5cclxuICAgIHJldHVybiByZXNvdXJjZVtrZXldIHx8IGRlZmF1bHRWYWx1ZTtcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTG9jYWxpemVyV2l0aEZhbGxiYWNrKGxvY2FsaXphdGlvbjogQXBwbGljYXRpb25Mb2NhbGl6YXRpb25Db25maWd1cmF0aW9uRHRvKSB7XHJcbiAgY29uc3QgZmluZExvY2FsaXphdGlvbiA9IGNyZWF0ZUxvY2FsaXphdGlvbkZpbmRlcihsb2NhbGl6YXRpb24pO1xyXG5cclxuICByZXR1cm4gKHJlc291cmNlTmFtZXM6IHN0cmluZ1tdLCBrZXlzOiBzdHJpbmdbXSwgZGVmYXVsdFZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IHsgbG9jYWxpemVkIH0gPSBmaW5kTG9jYWxpemF0aW9uKHJlc291cmNlTmFtZXMsIGtleXMpO1xyXG4gICAgcmV0dXJuIGxvY2FsaXplZCB8fCBkZWZhdWx0VmFsdWU7XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvY2FsaXphdGlvblBpcGVLZXlHZW5lcmF0b3IoXHJcbiAgbG9jYWxpemF0aW9uOiBBcHBsaWNhdGlvbkxvY2FsaXphdGlvbkNvbmZpZ3VyYXRpb25EdG8sXHJcbikge1xyXG4gIGNvbnN0IGZpbmRMb2NhbGl6YXRpb24gPSBjcmVhdGVMb2NhbGl6YXRpb25GaW5kZXIobG9jYWxpemF0aW9uKTtcclxuXHJcbiAgcmV0dXJuIChyZXNvdXJjZU5hbWVzOiBzdHJpbmdbXSwga2V5czogc3RyaW5nW10sIGRlZmF1bHRLZXk6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgY29uc3QgeyByZXNvdXJjZU5hbWUsIGtleSB9ID0gZmluZExvY2FsaXphdGlvbihyZXNvdXJjZU5hbWVzLCBrZXlzKTtcclxuICAgIHJldHVybiAhcmVzb3VyY2VOYW1lID8gZGVmYXVsdEtleSA6IHJlc291cmNlTmFtZSA9PT0gJ18nID8ga2V5IDogYCR7cmVzb3VyY2VOYW1lfTo6JHtrZXl9YDtcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVMb2NhbGl6YXRpb25GaW5kZXIobG9jYWxpemF0aW9uOiBBcHBsaWNhdGlvbkxvY2FsaXphdGlvbkNvbmZpZ3VyYXRpb25EdG8pIHtcclxuICBjb25zdCBsb2NhbGl6ZSA9IGNyZWF0ZUxvY2FsaXplcihsb2NhbGl6YXRpb24pO1xyXG5cclxuICByZXR1cm4gKHJlc291cmNlTmFtZXM6IHN0cmluZ1tdLCBrZXlzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgcmVzb3VyY2VOYW1lcyA9IHJlc291cmNlTmFtZXMuY29uY2F0KGxvY2FsaXphdGlvbi5kZWZhdWx0UmVzb3VyY2VOYW1lIHx8ICcnKS5maWx0ZXIoQm9vbGVhbik7XHJcblxyXG4gICAgY29uc3QgcmVzb3VyY2VDb3VudCA9IHJlc291cmNlTmFtZXMubGVuZ3RoO1xyXG4gICAgY29uc3Qga2V5Q291bnQgPSBrZXlzLmxlbmd0aDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc291cmNlQ291bnQ7IGkrKykge1xyXG4gICAgICBjb25zdCByZXNvdXJjZU5hbWUgPSByZXNvdXJjZU5hbWVzW2ldO1xyXG5cclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBrZXlDb3VudDsgaisrKSB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tqXTtcclxuICAgICAgICBjb25zdCBsb2NhbGl6ZWQgPSBsb2NhbGl6ZShyZXNvdXJjZU5hbWUsIGtleSwgbnVsbCk7XHJcbiAgICAgICAgaWYgKGxvY2FsaXplZCkgcmV0dXJuIHsgcmVzb3VyY2VOYW1lLCBrZXksIGxvY2FsaXplZCB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHsgcmVzb3VyY2VOYW1lOiB1bmRlZmluZWQsIGtleTogdW5kZWZpbmVkLCBsb2NhbGl6ZWQ6IHVuZGVmaW5lZCB9O1xyXG4gIH07XHJcbn1cclxuIl19","export function createTokenParser(format) {\n return (str) => {\n const tokens = [];\n const regex = format.replace(/\\./g, '\\\\.').replace(/\\{\\s?([0-9a-zA-Z]+)\\s?\\}/g, (_, token) => {\n tokens.push(token);\n return '(.+)';\n });\n const matches = (str.match(regex) || []).slice(1);\n return matches.reduce((acc, v, i) => {\n const key = tokens[i];\n acc[key] = [...(acc[key] || []), v].filter(Boolean);\n return acc;\n }, {});\n };\n}\nexport function interpolate(text, params) {\n return text\n .replace(/(['\"])?\\{\\s*(\\d+)\\s*\\}\\1/g, (_, quote, digit) => (quote ? quote : '') + (params[digit] ?? `{${digit}}`) + (quote ? quote : ''))\n .replace(/\\s+/g, ' ');\n}\nexport function escapeHtmlChars(value) {\n return value && typeof value === 'string'\n ? value\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n : value;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3V0aWxzL3N0cmluZy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBYztJQUM5QyxPQUFPLENBQUMsR0FBVyxFQUFFLEVBQUU7UUFDckIsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMzRixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25CLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVsRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUE4QixDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWSxFQUFFLE1BQWdCO0lBQ3pELE9BQU8sSUFBSTtTQUNQLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDeEQsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUM5RTtTQUNBLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBVTtJQUN4QyxPQUFPLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3ZDLENBQUMsQ0FBQyxLQUFLO2FBQ0YsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7YUFDdEIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7YUFDckIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7YUFDckIsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7UUFDNUIsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9rZW5QYXJzZXIoZm9ybWF0OiBzdHJpbmcpIHtcclxuICByZXR1cm4gKHN0cjogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCB0b2tlbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICBjb25zdCByZWdleCA9IGZvcm1hdC5yZXBsYWNlKC9cXC4vZywgJ1xcXFwuJykucmVwbGFjZSgvXFx7XFxzPyhbMC05YS16QS1aXSspXFxzP1xcfS9nLCAoXywgdG9rZW4pID0+IHtcclxuICAgICAgdG9rZW5zLnB1c2godG9rZW4pO1xyXG4gICAgICByZXR1cm4gJyguKyknO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgbWF0Y2hlcyA9IChzdHIubWF0Y2gocmVnZXgpIHx8IFtdKS5zbGljZSgxKTtcclxuXHJcbiAgICByZXR1cm4gbWF0Y2hlcy5yZWR1Y2UoKGFjYywgdiwgaSkgPT4ge1xyXG4gICAgICBjb25zdCBrZXkgPSB0b2tlbnNbaV07XHJcbiAgICAgIGFjY1trZXldID0gWy4uLihhY2Nba2V5XSB8fCBbXSksIHZdLmZpbHRlcihCb29sZWFuKTtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPik7XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGludGVycG9sYXRlKHRleHQ6IHN0cmluZywgcGFyYW1zOiBzdHJpbmdbXSkge1xyXG4gcmV0dXJuIHRleHRcclxuICAgIC5yZXBsYWNlKC8oWydcIl0pP1xce1xccyooXFxkKylcXHMqXFx9XFwxL2csIChfLCBxdW90ZSwgZGlnaXQpID0+IFxyXG4gICAgICAocXVvdGUgPyBxdW90ZSA6ICcnKSArIChwYXJhbXNbZGlnaXRdID8/IGB7JHtkaWdpdH19YCkgKyAocXVvdGUgPyBxdW90ZSA6ICcnKVxyXG4gICAgKVxyXG4gICAgLnJlcGxhY2UoL1xccysvZywgJyAnKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUh0bWxDaGFycyh2YWx1ZTogYW55KSB7XHJcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcclxuICAgID8gdmFsdWVcclxuICAgICAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxyXG4gICAgICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JylcclxuICAgICAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpXHJcbiAgICAgICAgLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKVxyXG4gICAgOiB2YWx1ZTtcclxufVxyXG4iXX0=","import { Injectable, Injector, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ContentProjectionService {\n constructor() {\n this.injector = inject(Injector);\n }\n projectContent(projectionStrategy, injector = this.injector) {\n return projectionStrategy.injectContent(injector);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ContentProjectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ContentProjectionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ContentProjectionService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wcm9qZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvY29udGVudC1wcm9qZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJaEYsTUFBTSxPQUFPLHdCQUF3QjtJQURyQztRQUVVLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FTckM7SUFOQyxjQUFjLENBQ1osa0JBQXlDLEVBQ3pDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUTtRQUV4QixPQUFPLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwRCxDQUFDOzhHQVRVLHdCQUF3QjtrSEFBeEIsd0JBQXdCLGNBRFgsTUFBTTs7MkZBQ25CLHdCQUF3QjtrQkFEcEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgVGVtcGxhdGVSZWYsIFR5cGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQcm9qZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICcuLi9zdHJhdGVnaWVzL3Byb2plY3Rpb24uc3RyYXRlZ3knO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIENvbnRlbnRQcm9qZWN0aW9uU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcblxyXG5cclxuICBwcm9qZWN0Q29udGVudDxUIGV4dGVuZHMgVHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55Pj4oXHJcbiAgICBwcm9qZWN0aW9uU3RyYXRlZ3k6IFByb2plY3Rpb25TdHJhdGVneTxUPixcclxuICAgIGluamVjdG9yID0gdGhpcy5pbmplY3RvcixcclxuICApIHtcclxuICAgIHJldHVybiBwcm9qZWN0aW9uU3RyYXRlZ3kuaW5qZWN0Q29udGVudChpbmplY3Rvcik7XHJcbiAgfVxyXG59XHJcbiJdfQ==","export function pushValueTo(array) {\n return (element) => {\n array.push(element);\n return array;\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdXRpbHMvYXJyYXktdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFdBQVcsQ0FBSSxLQUFVO0lBQ3ZDLE9BQU8sQ0FBQyxPQUFVLEVBQUUsRUFBRTtRQUNwQixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBwdXNoVmFsdWVUbzxUPihhcnJheTogVFtdKSB7XHJcbiAgcmV0dXJuIChlbGVtZW50OiBUKSA9PiB7XHJcbiAgICBhcnJheS5wdXNoKGVsZW1lbnQpO1xyXG4gICAgcmV0dXJuIGFycmF5O1xyXG4gIH07XHJcbn1cclxuIl19","export function noop() {\n const fn = function () { };\n return fn;\n}\nexport function isUndefinedOrEmptyString(value) {\n return value === undefined || value === '';\n}\nexport function isNullOrUndefined(obj) {\n return obj === null || obj === undefined;\n}\nexport function isNullOrEmpty(obj) {\n return obj === null || obj === undefined || obj === '';\n}\nexport function exists(obj) {\n return !isNullOrUndefined(obj);\n}\nexport function isObject(obj) {\n return obj instanceof Object;\n}\nexport function isArray(obj) {\n return Array.isArray(obj);\n}\nexport function isObjectAndNotArray(obj) {\n return isObject(obj) && !isArray(obj);\n}\nexport function isNode(obj) {\n return obj instanceof Node;\n}\nexport function isObjectAndNotArrayNotNode(obj) {\n return isObjectAndNotArray(obj) && !isNode(obj);\n}\nexport function checkHasProp(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3V0aWxzL2NvbW1vbi11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsSUFBSTtJQUNsQixNQUFNLEVBQUUsR0FBRyxjQUFhLENBQUMsQ0FBQztJQUMxQixPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBYztJQUNyRCxPQUFPLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFJLEdBQU07SUFDekMsT0FBTyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLENBQUM7QUFDM0MsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUksR0FBTTtJQUNyQyxPQUFPLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ3pELENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUFJLEdBQU07SUFDOUIsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFJLEdBQU07SUFDaEMsT0FBTyxHQUFHLFlBQVksTUFBTSxDQUFDO0FBQy9CLENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFJLEdBQU07SUFDL0IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUksR0FBTTtJQUMzQyxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FBSSxHQUFNO0lBQzlCLE9BQU8sR0FBRyxZQUFZLElBQUksQ0FBQztBQUM3QixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFJLEdBQU07SUFDbEQsT0FBTyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBSSxNQUFTLEVBQUUsR0FBcUI7SUFDOUQsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gbm9vcCgpIHtcclxuICBjb25zdCBmbiA9IGZ1bmN0aW9uICgpIHt9O1xyXG4gIHJldHVybiBmbjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkT3JFbXB0eVN0cmluZyh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xyXG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkPFQ+KG9iajogVCkge1xyXG4gIHJldHVybiBvYmogPT09IG51bGwgfHwgb2JqID09PSB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc051bGxPckVtcHR5PFQ+KG9iajogVCk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiBvYmogPT09IG51bGwgfHwgb2JqID09PSB1bmRlZmluZWQgfHwgb2JqID09PSAnJztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGV4aXN0czxUPihvYmo6IFQpOiBvYmogaXMgVCB7XHJcbiAgcmV0dXJuICFpc051bGxPclVuZGVmaW5lZChvYmopO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3Q8VD4ob2JqOiBUKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIE9iamVjdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXk8VD4ob2JqOiBUKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkob2JqKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0QW5kTm90QXJyYXk8VD4ob2JqOiBUKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIGlzT2JqZWN0KG9iaikgJiYgIWlzQXJyYXkob2JqKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZTxUPihvYmo6IFQpOiBib29sZWFuIHtcclxuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgTm9kZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0QW5kTm90QXJyYXlOb3ROb2RlPFQ+KG9iajogVCk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiBpc09iamVjdEFuZE5vdEFycmF5KG9iaikgJiYgIWlzTm9kZShvYmopO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tIYXNQcm9wPFQ+KG9iamVjdDogVCwga2V5OiBzdHJpbmcgfCBrZXlvZiBUKToga2V5IGlzIGtleW9mIFQge1xyXG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpO1xyXG59XHJcbiJdfQ==","export function getShortDateFormat(configStateService) {\n const dateTimeFormat = configStateService.getDeep('localization.currentCulture.dateTimeFormat');\n return dateTimeFormat.shortDatePattern;\n}\nexport function getShortTimeFormat(configStateService) {\n const dateTimeFormat = configStateService.getDeep('localization.currentCulture.dateTimeFormat');\n return dateTimeFormat?.shortTimePattern?.replace('tt', 'a');\n}\nexport function getShortDateShortTimeFormat(configStateService) {\n const dateTimeFormat = configStateService.getDeep('localization.currentCulture.dateTimeFormat');\n return `${dateTimeFormat.shortDatePattern} ${dateTimeFormat?.shortTimePattern?.replace('tt', 'a')}`;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi91dGlscy9kYXRlLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxrQkFBc0M7SUFDdkUsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUMvQyw0Q0FBNEMsQ0FDeEIsQ0FBQztJQUV2QixPQUFPLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLGtCQUFzQztJQUN2RSxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQy9DLDRDQUE0QyxDQUN4QixDQUFDO0lBQ3ZCLE9BQU8sY0FBYyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxrQkFBc0M7SUFDaEYsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUMvQyw0Q0FBNEMsQ0FDeEIsQ0FBQztJQUV2QixPQUFPLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixJQUFJLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDdEcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVUaW1lRm9ybWF0RHRvIH0gZnJvbSAnLi4vcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9ucy9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hvcnREYXRlRm9ybWF0KGNvbmZpZ1N0YXRlU2VydmljZTogQ29uZmlnU3RhdGVTZXJ2aWNlKSB7XHJcbiAgY29uc3QgZGF0ZVRpbWVGb3JtYXQgPSBjb25maWdTdGF0ZVNlcnZpY2UuZ2V0RGVlcChcclxuICAgICdsb2NhbGl6YXRpb24uY3VycmVudEN1bHR1cmUuZGF0ZVRpbWVGb3JtYXQnLFxyXG4gICkgYXMgRGF0ZVRpbWVGb3JtYXREdG87XHJcblxyXG4gIHJldHVybiBkYXRlVGltZUZvcm1hdC5zaG9ydERhdGVQYXR0ZXJuO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hvcnRUaW1lRm9ybWF0KGNvbmZpZ1N0YXRlU2VydmljZTogQ29uZmlnU3RhdGVTZXJ2aWNlKSB7XHJcbiAgY29uc3QgZGF0ZVRpbWVGb3JtYXQgPSBjb25maWdTdGF0ZVNlcnZpY2UuZ2V0RGVlcChcclxuICAgICdsb2NhbGl6YXRpb24uY3VycmVudEN1bHR1cmUuZGF0ZVRpbWVGb3JtYXQnLFxyXG4gICkgYXMgRGF0ZVRpbWVGb3JtYXREdG87XHJcbiAgcmV0dXJuIGRhdGVUaW1lRm9ybWF0Py5zaG9ydFRpbWVQYXR0ZXJuPy5yZXBsYWNlKCd0dCcsICdhJyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG9ydERhdGVTaG9ydFRpbWVGb3JtYXQoY29uZmlnU3RhdGVTZXJ2aWNlOiBDb25maWdTdGF0ZVNlcnZpY2UpIHtcclxuICBjb25zdCBkYXRlVGltZUZvcm1hdCA9IGNvbmZpZ1N0YXRlU2VydmljZS5nZXREZWVwKFxyXG4gICAgJ2xvY2FsaXphdGlvbi5jdXJyZW50Q3VsdHVyZS5kYXRlVGltZUZvcm1hdCcsXHJcbiAgKSBhcyBEYXRlVGltZUZvcm1hdER0bztcclxuXHJcbiAgcmV0dXJuIGAke2RhdGVUaW1lRm9ybWF0LnNob3J0RGF0ZVBhdHRlcm59ICR7ZGF0ZVRpbWVGb3JtYXQ/LnNob3J0VGltZVBhdHRlcm4/LnJlcGxhY2UoJ3R0JywgJ2EnKX1gO1xyXG59XHJcbiJdfQ==","import { exists, isArray, isNode, isNullOrUndefined, isObject, isObjectAndNotArrayNotNode, } from './common-utils';\nexport function deepMerge(target, source) {\n if (isObjectAndNotArrayNotNode(target) && isObjectAndNotArrayNotNode(source)) {\n return deepMergeRecursively(target, source);\n }\n else if (isNullOrUndefined(target) && isNullOrUndefined(source)) {\n return {};\n }\n else {\n return exists(source) ? source : target;\n }\n}\nfunction deepMergeRecursively(target, source) {\n const shouldNotRecurse = isNullOrUndefined(target) ||\n isNullOrUndefined(source) || // at least one not defined\n isArray(target) ||\n isArray(source) || // at least one array\n !isObject(target) ||\n !isObject(source) || // at least one not an object\n isNode(target) ||\n isNode(source); // at least one node\n /**\n * if we will not recurse any further,\n * we will prioritize source if it is a defined value.\n */\n if (shouldNotRecurse) {\n return exists(source) ? source : target;\n }\n const keysOfTarget = Object.keys(target);\n const keysOfSource = Object.keys(source);\n const uniqueKeys = new Set(keysOfTarget.concat(keysOfSource));\n return [...uniqueKeys].reduce((retVal, key) => {\n retVal[key] = deepMergeRecursively(target[key], source[key]);\n return retVal;\n }, {});\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3V0aWxzL29iamVjdC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLE9BQU8sRUFDUCxNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLFFBQVEsRUFDUiwwQkFBMEIsR0FDM0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QixNQUFNLFVBQVUsU0FBUyxDQUN2QixNQUEwQixFQUMxQixNQUEwQjtJQUUxQixJQUFJLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxJQUFJLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDN0UsT0FBTyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztTQUFNLElBQUksaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNsRSxPQUFPLEVBQU8sQ0FBQztJQUNqQixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBRSxNQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNqRCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQzNCLE1BQTBCLEVBQzFCLE1BQTBCO0lBRTFCLE1BQU0sZ0JBQWdCLEdBQ3BCLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztRQUN6QixpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSwyQkFBMkI7UUFDeEQsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNmLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxxQkFBcUI7UUFDeEMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ2pCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLDZCQUE2QjtRQUNsRCxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ2QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0JBQW9CO0lBRXRDOzs7T0FHRztJQUNILElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUNyQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUUsTUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBZ0MsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBZ0MsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUM5RCxPQUFPLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDM0MsTUFBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLG9CQUFvQixDQUN4QyxNQUFpQyxDQUFDLEdBQUcsQ0FBQyxFQUN0QyxNQUFpQyxDQUFDLEdBQUcsQ0FBQyxDQUN4QyxDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxFQUFFLEVBQU8sQ0FBQyxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgZXhpc3RzLFxyXG4gIGlzQXJyYXksXHJcbiAgaXNOb2RlLFxyXG4gIGlzTnVsbE9yVW5kZWZpbmVkLFxyXG4gIGlzT2JqZWN0LFxyXG4gIGlzT2JqZWN0QW5kTm90QXJyYXlOb3ROb2RlLFxyXG59IGZyb20gJy4vY29tbW9uLXV0aWxzJztcclxuaW1wb3J0IHsgRGVlcFBhcnRpYWwgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBNZXJnZTxUPihcclxuICB0YXJnZXQ6IERlZXBQYXJ0aWFsPFQ+IHwgVCxcclxuICBzb3VyY2U6IERlZXBQYXJ0aWFsPFQ+IHwgVCxcclxuKTogRGVlcFBhcnRpYWw8VD4gfCBUIHtcclxuICBpZiAoaXNPYmplY3RBbmROb3RBcnJheU5vdE5vZGUodGFyZ2V0KSAmJiBpc09iamVjdEFuZE5vdEFycmF5Tm90Tm9kZShzb3VyY2UpKSB7XHJcbiAgICByZXR1cm4gZGVlcE1lcmdlUmVjdXJzaXZlbHkodGFyZ2V0LCBzb3VyY2UpO1xyXG4gIH0gZWxzZSBpZiAoaXNOdWxsT3JVbmRlZmluZWQodGFyZ2V0KSAmJiBpc051bGxPclVuZGVmaW5lZChzb3VyY2UpKSB7XHJcbiAgICByZXR1cm4ge30gYXMgVDtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIGV4aXN0cyhzb3VyY2UpID8gKHNvdXJjZSBhcyBUKSA6IHRhcmdldDtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRlZXBNZXJnZVJlY3Vyc2l2ZWx5PFQ+KFxyXG4gIHRhcmdldDogRGVlcFBhcnRpYWw8VD4gfCBULFxyXG4gIHNvdXJjZTogRGVlcFBhcnRpYWw8VD4gfCBULFxyXG4pOiBEZWVwUGFydGlhbDxUPiB8IFQge1xyXG4gIGNvbnN0IHNob3VsZE5vdFJlY3Vyc2UgPVxyXG4gICAgaXNOdWxsT3JVbmRlZmluZWQodGFyZ2V0KSB8fFxyXG4gICAgaXNOdWxsT3JVbmRlZmluZWQoc291cmNlKSB8fCAvLyBhdCBsZWFzdCBvbmUgbm90IGRlZmluZWRcclxuICAgIGlzQXJyYXkodGFyZ2V0KSB8fFxyXG4gICAgaXNBcnJheShzb3VyY2UpIHx8IC8vIGF0IGxlYXN0IG9uZSBhcnJheVxyXG4gICAgIWlzT2JqZWN0KHRhcmdldCkgfHxcclxuICAgICFpc09iamVjdChzb3VyY2UpIHx8IC8vIGF0IGxlYXN0IG9uZSBub3QgYW4gb2JqZWN0XHJcbiAgICBpc05vZGUodGFyZ2V0KSB8fFxyXG4gICAgaXNOb2RlKHNvdXJjZSk7IC8vIGF0IGxlYXN0IG9uZSBub2RlXHJcblxyXG4gIC8qKlxyXG4gICAqIGlmIHdlIHdpbGwgbm90IHJlY3Vyc2UgYW55IGZ1cnRoZXIsXHJcbiAgICogd2Ugd2lsbCBwcmlvcml0aXplIHNvdXJjZSBpZiBpdCBpcyBhIGRlZmluZWQgdmFsdWUuXHJcbiAgICovXHJcbiAgaWYgKHNob3VsZE5vdFJlY3Vyc2UpIHtcclxuICAgIHJldHVybiBleGlzdHMoc291cmNlKSA/IChzb3VyY2UgYXMgVCkgOiB0YXJnZXQ7XHJcbiAgfVxyXG5cclxuICBjb25zdCBrZXlzT2ZUYXJnZXQgPSBPYmplY3Qua2V5cyh0YXJnZXQgYXMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSk7XHJcbiAgY29uc3Qga2V5c09mU291cmNlID0gT2JqZWN0LmtleXMoc291cmNlIGFzIHsgW2tleTogc3RyaW5nXTogYW55IH0pO1xyXG4gIGNvbnN0IHVuaXF1ZUtleXMgPSBuZXcgU2V0KGtleXNPZlRhcmdldC5jb25jYXQoa2V5c09mU291cmNlKSk7XHJcbiAgcmV0dXJuIFsuLi51bmlxdWVLZXlzXS5yZWR1Y2UoKHJldFZhbCwga2V5KSA9PiB7XHJcbiAgICAocmV0VmFsIGFzIGFueSlba2V5XSA9IGRlZXBNZXJnZVJlY3Vyc2l2ZWx5KFxyXG4gICAgICAodGFyZ2V0IGFzIHsgW2tleTogc3RyaW5nXTogYW55IH0pW2tleV0sXHJcbiAgICAgIChzb3VyY2UgYXMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSlba2V5XSxcclxuICAgICk7XHJcbiAgICByZXR1cm4gcmV0VmFsO1xyXG4gIH0sIHt9IGFzIFQpO1xyXG59XHJcbiJdfQ==","import compare from 'just-compare';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\nimport { deepMerge } from './object-utils';\nexport class InternalStore {\n get state() {\n return this.state$.value;\n }\n constructor(initialState) {\n this.initialState = initialState;\n this.state$ = new BehaviorSubject(this.initialState);\n this.update$ = new Subject();\n this.sliceState = (selector, compareFn = compare) => this.state$.pipe(map(selector), distinctUntilChanged(compareFn));\n this.sliceUpdate = (selector, filterFn = (x) => x !== undefined) => this.update$.pipe(map(selector), filter(filterFn));\n }\n patch(state) {\n let patchedState = state;\n if (typeof state === 'object' && !Array.isArray(state)) {\n patchedState = { ...this.state, ...state };\n }\n this.state$.next(patchedState);\n this.update$.next(patchedState);\n }\n deepPatch(state) {\n // TODO: Strict improve deepMerge\n this.state$.next(deepMerge(this.state, state));\n this.update$.next(state);\n }\n set(state) {\n this.state$.next(state);\n this.update$.next(state);\n }\n reset() {\n this.set(this.initialState);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtc3RvcmUtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdXRpbHMvaW50ZXJuYWwtc3RvcmUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE1BQU0sT0FBTyxhQUFhO0lBS3hCLElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQVlELFlBQW9CLFlBQW1CO1FBQW5CLGlCQUFZLEdBQVosWUFBWSxDQUFPO1FBbEIvQixXQUFNLEdBQUcsSUFBSSxlQUFlLENBQVEsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXZELFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQU1wRCxlQUFVLEdBQUcsQ0FDWCxRQUFpQyxFQUNqQyxZQUErQyxPQUFPLEVBQ3RELEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUV0RSxnQkFBVyxHQUFHLENBQ1osUUFBOEMsRUFDOUMsV0FBVyxDQUFDLENBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFDeEMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVkLENBQUM7SUFFM0MsS0FBSyxDQUFDLEtBQXFCO1FBQ3pCLElBQUksWUFBWSxHQUFHLEtBQWMsQ0FBQztRQUVsQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxZQUFZLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUM3QyxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBa0MsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxTQUFTLENBQUMsS0FBeUI7UUFDakMsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBVSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFZO1FBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBMkIsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbXBhcmUgZnJvbSAnanVzdC1jb21wYXJlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGVlcFBhcnRpYWwgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tICcuL29iamVjdC11dGlscyc7XHJcblxyXG5leHBvcnQgY2xhc3MgSW50ZXJuYWxTdG9yZTxTdGF0ZT4ge1xyXG4gIHByaXZhdGUgc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdGF0ZT4odGhpcy5pbml0aWFsU3RhdGUpO1xyXG5cclxuICBwcml2YXRlIHVwZGF0ZSQgPSBuZXcgU3ViamVjdDxEZWVwUGFydGlhbDxTdGF0ZT4+KCk7XHJcblxyXG4gIGdldCBzdGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlJC52YWx1ZTtcclxuICB9XHJcblxyXG4gIHNsaWNlU3RhdGUgPSA8U2xpY2U+KFxyXG4gICAgc2VsZWN0b3I6IChzdGF0ZTogU3RhdGUpID0+IFNsaWNlLFxyXG4gICAgY29tcGFyZUZuOiAoczE6IFNsaWNlLCBzMjogU2xpY2UpID0+IGJvb2xlYW4gPSBjb21wYXJlLFxyXG4gICkgPT4gdGhpcy5zdGF0ZSQucGlwZShtYXAoc2VsZWN0b3IpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZChjb21wYXJlRm4pKTtcclxuXHJcbiAgc2xpY2VVcGRhdGUgPSA8U2xpY2U+KFxyXG4gICAgc2VsZWN0b3I6IChzdGF0ZTogRGVlcFBhcnRpYWw8U3RhdGU+KSA9PiBTbGljZSxcclxuICAgIGZpbHRlckZuID0gKHg6IFNsaWNlKSA9PiB4ICE9PSB1bmRlZmluZWQsXHJcbiAgKSA9PiB0aGlzLnVwZGF0ZSQucGlwZShtYXAoc2VsZWN0b3IpLCBmaWx0ZXIoZmlsdGVyRm4pKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbml0aWFsU3RhdGU6IFN0YXRlKSB7fVxyXG5cclxuICBwYXRjaChzdGF0ZTogUGFydGlhbDxTdGF0ZT4pIHtcclxuICAgIGxldCBwYXRjaGVkU3RhdGUgPSBzdGF0ZSBhcyBTdGF0ZTtcclxuXHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShzdGF0ZSkpIHtcclxuICAgICAgcGF0Y2hlZFN0YXRlID0geyAuLi50aGlzLnN0YXRlLCAuLi5zdGF0ZSB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3RhdGUkLm5leHQocGF0Y2hlZFN0YXRlKTtcclxuICAgIHRoaXMudXBkYXRlJC5uZXh0KHBhdGNoZWRTdGF0ZSBhcyBEZWVwUGFydGlhbDxTdGF0ZT4pO1xyXG4gIH1cclxuXHJcbiAgZGVlcFBhdGNoKHN0YXRlOiBEZWVwUGFydGlhbDxTdGF0ZT4pIHtcclxuICAgIC8vIFRPRE86IFN0cmljdCBpbXByb3ZlIGRlZXBNZXJnZVxyXG4gICAgdGhpcy5zdGF0ZSQubmV4dChkZWVwTWVyZ2UodGhpcy5zdGF0ZSwgc3RhdGUpIGFzIFN0YXRlKTtcclxuICAgIHRoaXMudXBkYXRlJC5uZXh0KHN0YXRlKTtcclxuICB9XHJcblxyXG4gIHNldChzdGF0ZTogU3RhdGUpIHtcclxuICAgIHRoaXMuc3RhdGUkLm5leHQoc3RhdGUpO1xyXG4gICAgdGhpcy51cGRhdGUkLm5leHQoc3RhdGUgYXMgRGVlcFBhcnRpYWw8U3RhdGU+KTtcclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5zZXQodGhpcy5pbml0aWFsU3RhdGUpO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { InternalStore } from '../utils/internal-store-utils';\nimport * as i0 from \"@angular/core\";\nconst mapToApiUrl = (key) => (apis) => ((key && apis[key]) || apis.default).url || apis.default.url;\nconst mapToIssuer = (issuer) => {\n if (!issuer) {\n return issuer;\n }\n return issuer.endsWith('/') ? issuer : issuer + '/';\n};\nexport class EnvironmentService {\n constructor() {\n this.store = new InternalStore({});\n }\n get createOnUpdateStream() {\n return this.store.sliceUpdate;\n }\n getEnvironment$() {\n return this.store.sliceState(state => state);\n }\n getEnvironment() {\n return this.store.state;\n }\n getApiUrl(key) {\n return mapToApiUrl(key)(this.store.state?.apis);\n }\n getApiUrl$(key) {\n return this.store.sliceState(state => state.apis).pipe(map(mapToApiUrl(key)));\n }\n setState(environment) {\n this.store.set(environment);\n }\n getIssuer() {\n const issuer = this.store.state?.oAuthConfig?.issuer;\n return mapToIssuer(issuer);\n }\n getIssuer$() {\n return this.store.sliceState(state => state?.oAuthConfig?.issuer).pipe(map(mapToIssuer));\n }\n getImpersonation() {\n return this.store.state?.oAuthConfig?.impersonation || {};\n }\n getImpersonation$() {\n return this.store.sliceState(state => state?.oAuthConfig?.impersonation || {});\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: EnvironmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: EnvironmentService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: EnvironmentService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFOUQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUF1QixFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQVUsRUFBRSxFQUFFLENBQzlELENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUUvRCxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQTBCLEVBQUUsRUFBRTtJQUNqRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7QUFDdEQsQ0FBQyxDQUFDO0FBR0YsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUVtQixVQUFLLEdBQUcsSUFBSSxhQUFhLENBQUMsRUFBaUIsQ0FBQyxDQUFDO0tBMkMvRDtJQXpDQyxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQXVCO1FBQy9CLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsUUFBUSxDQUFDLFdBQXdCO1FBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQztRQUVyRCxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsYUFBYSxJQUFJLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7OEdBM0NVLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBREwsTUFBTTs7MkZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBcGlzLCBFbnZpcm9ubWVudCB9IGZyb20gJy4uL21vZGVscy9lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7IEludGVybmFsU3RvcmUgfSBmcm9tICcuLi91dGlscy9pbnRlcm5hbC1zdG9yZS11dGlscyc7XHJcblxyXG5jb25zdCBtYXBUb0FwaVVybCA9IChrZXk6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4gKGFwaXM6IEFwaXMpID0+XHJcbiAgKChrZXkgJiYgYXBpc1trZXldKSB8fCBhcGlzLmRlZmF1bHQpLnVybCB8fCBhcGlzLmRlZmF1bHQudXJsO1xyXG5cclxuY29uc3QgbWFwVG9Jc3N1ZXIgPSAoaXNzdWVyOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcclxuICBpZiAoIWlzc3Vlcikge1xyXG4gICAgcmV0dXJuIGlzc3VlcjtcclxuICB9XHJcbiAgcmV0dXJuIGlzc3Vlci5lbmRzV2l0aCgnLycpID8gaXNzdWVyIDogaXNzdWVyICsgJy8nO1xyXG59O1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50U2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IG5ldyBJbnRlcm5hbFN0b3JlKHt9IGFzIEVudmlyb25tZW50KTtcclxuXHJcbiAgZ2V0IGNyZWF0ZU9uVXBkYXRlU3RyZWFtKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VVcGRhdGU7XHJcbiAgfVxyXG5cclxuICBnZXRFbnZpcm9ubWVudCQoKTogT2JzZXJ2YWJsZTxFbnZpcm9ubWVudD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VTdGF0ZShzdGF0ZSA9PiBzdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRFbnZpcm9ubWVudCgpOiBFbnZpcm9ubWVudCB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZTtcclxuICB9XHJcblxyXG4gIGdldEFwaVVybChrZXk6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgcmV0dXJuIG1hcFRvQXBpVXJsKGtleSkodGhpcy5zdG9yZS5zdGF0ZT8uYXBpcyk7XHJcbiAgfVxyXG5cclxuICBnZXRBcGlVcmwkKGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKHN0YXRlID0+IHN0YXRlLmFwaXMpLnBpcGUobWFwKG1hcFRvQXBpVXJsKGtleSkpKTtcclxuICB9XHJcblxyXG4gIHNldFN0YXRlKGVudmlyb25tZW50OiBFbnZpcm9ubWVudCkge1xyXG4gICAgdGhpcy5zdG9yZS5zZXQoZW52aXJvbm1lbnQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXNzdWVyKCkge1xyXG4gICAgY29uc3QgaXNzdWVyID0gdGhpcy5zdG9yZS5zdGF0ZT8ub0F1dGhDb25maWc/Lmlzc3VlcjtcclxuXHJcbiAgICByZXR1cm4gbWFwVG9Jc3N1ZXIoaXNzdWVyKTtcclxuICB9XHJcblxyXG4gIGdldElzc3VlciQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKHN0YXRlID0+IHN0YXRlPy5vQXV0aENvbmZpZz8uaXNzdWVyKS5waXBlKG1hcChtYXBUb0lzc3VlcikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1wZXJzb25hdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlPy5vQXV0aENvbmZpZz8uaW1wZXJzb25hdGlvbiB8fCB7fTtcclxuICB9XHJcblxyXG4gIGdldEltcGVyc29uYXRpb24kKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VTdGF0ZShzdGF0ZSA9PiBzdGF0ZT8ub0F1dGhDb25maWc/LmltcGVyc29uYXRpb24gfHwge30pO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class HttpErrorReporterService {\n constructor() {\n this._reporter$ = new Subject();\n this._errors$ = new BehaviorSubject([]);\n }\n get reporter$() {\n return this._reporter$.asObservable();\n }\n get errors$() {\n return this._errors$.asObservable();\n }\n get errors() {\n return this._errors$.value;\n }\n reportError(error) {\n this._reporter$.next(error);\n this._errors$.next([...this.errors, error]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: HttpErrorReporterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: HttpErrorReporterService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: HttpErrorReporterService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1lcnJvci1yZXBvcnRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAtZXJyb3ItcmVwb3J0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUdoRCxNQUFNLE9BQU8sd0JBQXdCO0lBRHJDO1FBRVUsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO1FBQzlDLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBc0IsRUFBRSxDQUFDLENBQUM7S0FrQmpFO0lBaEJDLElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBd0I7UUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDOzhHQW5CVSx3QkFBd0I7a0hBQXhCLHdCQUF3QixjQURYLE1BQU07OzJGQUNuQix3QkFBd0I7a0JBRHBDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgSHR0cEVycm9yUmVwb3J0ZXJTZXJ2aWNlIHtcclxuICBwcml2YXRlIF9yZXBvcnRlciQgPSBuZXcgU3ViamVjdDxIdHRwRXJyb3JSZXNwb25zZT4oKTtcclxuICBwcml2YXRlIF9lcnJvcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIdHRwRXJyb3JSZXNwb25zZVtdPihbXSk7XHJcblxyXG4gIGdldCByZXBvcnRlciQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVwb3J0ZXIkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVycm9ycyQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JzJC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIGdldCBlcnJvcnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JzJC52YWx1ZTtcclxuICB9XHJcblxyXG4gIHJlcG9ydEVycm9yKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgdGhpcy5fcmVwb3J0ZXIkLm5leHQoZXJyb3IpO1xyXG4gICAgdGhpcy5fZXJyb3JzJC5uZXh0KFsuLi50aGlzLmVycm9ycywgZXJyb3JdKTtcclxuICB9XHJcbn1cclxuIl19","import { HttpClient } from '@angular/common/http';\nimport { of } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { EnvironmentService } from '../services/environment.service';\nimport { HttpErrorReporterService } from '../services/http-error-reporter.service';\nimport { deepMerge } from './object-utils';\nexport function getRemoteEnv(injector, environment) {\n const environmentService = injector.get(EnvironmentService);\n const { remoteEnv } = environment;\n const { headers = {}, method = 'GET', url } = remoteEnv || {};\n if (!url)\n return Promise.resolve();\n const http = injector.get(HttpClient);\n const httpErrorReporter = injector.get(HttpErrorReporterService);\n return http\n .request(method, url, { headers })\n .pipe(catchError(err => {\n httpErrorReporter.reportError(err);\n return of(null);\n }), // TODO: Consider get handle function from a provider\n tap(env => environmentService.setState(mergeEnvironments(environment, env || {}, remoteEnv))))\n .toPromise();\n}\nfunction mergeEnvironments(local, remote, config) {\n switch (config.mergeStrategy) {\n case 'deepmerge':\n return deepMerge(local, remote);\n case 'overwrite':\n case null:\n case undefined:\n return remote;\n default:\n return config.mergeStrategy(local, remote);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdXRpbHMvZW52aXJvbm1lbnQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsTUFBTSxVQUFVLFlBQVksQ0FBQyxRQUFrQixFQUFFLFdBQWlDO0lBQ2hGLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRTVELE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxXQUFXLENBQUM7SUFDbEMsTUFBTSxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsTUFBTSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxTQUFTLElBQUssRUFBZ0IsQ0FBQztJQUM3RSxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRW5DLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFFakUsT0FBTyxJQUFJO1NBQ1IsT0FBTyxDQUFjLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQztTQUM5QyxJQUFJLENBQ0gsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2YsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxFQUFFLHFEQUFxRDtJQUN6RCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FDUixrQkFBa0IsQ0FBQyxRQUFRLENBQ3pCLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUssRUFBa0IsRUFBRSxTQUFzQixDQUFDLENBQ25GLENBQ0YsQ0FDRjtTQUNBLFNBQVMsRUFBRSxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUN4QixLQUEyQixFQUMzQixNQUFtQixFQUNuQixNQUFpQjtJQUVqQixRQUFRLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixLQUFLLFdBQVc7WUFDZCxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFnQixDQUFDO1FBQ2pELEtBQUssV0FBVyxDQUFDO1FBQ2pCLEtBQUssSUFBSSxDQUFDO1FBQ1YsS0FBSyxTQUFTO1lBQ1osT0FBTyxNQUFNLENBQUM7UUFDaEI7WUFDRSxPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudCwgUmVtb3RlRW52IH0gZnJvbSAnLi4vbW9kZWxzL2Vudmlyb25tZW50JztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlcG9ydGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2h0dHAtZXJyb3ItcmVwb3J0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gJy4vb2JqZWN0LXV0aWxzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSZW1vdGVFbnYoaW5qZWN0b3I6IEluamVjdG9yLCBlbnZpcm9ubWVudDogUGFydGlhbDxFbnZpcm9ubWVudD4pIHtcclxuICBjb25zdCBlbnZpcm9ubWVudFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoRW52aXJvbm1lbnRTZXJ2aWNlKTtcclxuXHJcbiAgY29uc3QgeyByZW1vdGVFbnYgfSA9IGVudmlyb25tZW50O1xyXG4gIGNvbnN0IHsgaGVhZGVycyA9IHt9LCBtZXRob2QgPSAnR0VUJywgdXJsIH0gPSByZW1vdGVFbnYgfHwgKHt9IGFzIFJlbW90ZUVudik7XHJcbiAgaWYgKCF1cmwpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuXHJcbiAgY29uc3QgaHR0cCA9IGluamVjdG9yLmdldChIdHRwQ2xpZW50KTtcclxuICBjb25zdCBodHRwRXJyb3JSZXBvcnRlciA9IGluamVjdG9yLmdldChIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2UpO1xyXG5cclxuICByZXR1cm4gaHR0cFxyXG4gICAgLnJlcXVlc3Q8RW52aXJvbm1lbnQ+KG1ldGhvZCwgdXJsLCB7IGhlYWRlcnMgfSlcclxuICAgIC5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgaHR0cEVycm9yUmVwb3J0ZXIucmVwb3J0RXJyb3IoZXJyKTtcclxuICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgIH0pLCAvLyBUT0RPOiBDb25zaWRlciBnZXQgaGFuZGxlIGZ1bmN0aW9uIGZyb20gYSBwcm92aWRlclxyXG4gICAgICB0YXAoZW52ID0+XHJcbiAgICAgICAgZW52aXJvbm1lbnRTZXJ2aWNlLnNldFN0YXRlKFxyXG4gICAgICAgICAgbWVyZ2VFbnZpcm9ubWVudHMoZW52aXJvbm1lbnQsIGVudiB8fCAoe30gYXMgRW52aXJvbm1lbnQpLCByZW1vdGVFbnYgYXMgUmVtb3RlRW52KSxcclxuICAgICAgICApLFxyXG4gICAgICApLFxyXG4gICAgKVxyXG4gICAgLnRvUHJvbWlzZSgpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZXJnZUVudmlyb25tZW50cyhcclxuICBsb2NhbDogUGFydGlhbDxFbnZpcm9ubWVudD4sXHJcbiAgcmVtb3RlOiBFbnZpcm9ubWVudCxcclxuICBjb25maWc6IFJlbW90ZUVudixcclxuKTogRW52aXJvbm1lbnQge1xyXG4gIHN3aXRjaCAoY29uZmlnLm1lcmdlU3RyYXRlZ3kpIHtcclxuICAgIGNhc2UgJ2RlZXBtZXJnZSc6XHJcbiAgICAgIHJldHVybiBkZWVwTWVyZ2UobG9jYWwsIHJlbW90ZSkgYXMgRW52aXJvbm1lbnQ7XHJcbiAgICBjYXNlICdvdmVyd3JpdGUnOlxyXG4gICAgY2FzZSBudWxsOlxyXG4gICAgY2FzZSB1bmRlZmluZWQ6XHJcbiAgICAgIHJldHVybiByZW1vdGU7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICByZXR1cm4gY29uZmlnLm1lcmdlU3RyYXRlZ3kobG9jYWwsIHJlbW90ZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { Compiler, Injector, NgModuleFactory, } from '@angular/core';\nimport { filter, map } from 'rxjs/operators';\nexport class LazyModuleFactory extends NgModuleFactory {\n get moduleType() {\n return this.moduleWithProviders.ngModule;\n }\n constructor(moduleWithProviders) {\n super();\n this.moduleWithProviders = moduleWithProviders;\n }\n create(parentInjector) {\n const injector = Injector.create({\n ...(parentInjector && { parent: parentInjector }),\n providers: this.moduleWithProviders.providers,\n });\n const compiler = injector.get(Compiler);\n const factory = compiler.compileModuleSync(this.moduleType);\n return factory.create(injector);\n }\n}\nexport function featuresFactory(configState, featureKeys, mapFn = features => features) {\n return configState.getFeatures$(featureKeys).pipe(filter(Boolean), map(mapFn));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi91dGlscy9mYWN0b3J5LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1IsUUFBUSxFQUVSLGVBQWUsR0FJaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3QyxNQUFNLE9BQU8saUJBQXFCLFNBQVEsZUFBa0I7SUFDMUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDO0lBQzNDLENBQUM7SUFFRCxZQUFvQixtQkFBMkM7UUFDN0QsS0FBSyxFQUFFLENBQUM7UUFEVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO0lBRS9ELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBK0I7UUFDcEMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUMvQixHQUFHLENBQUMsY0FBYyxJQUFJLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQ2pELFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBNkI7U0FDbEUsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTVELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixXQUErQixFQUMvQixXQUFxQixFQUNyQixRQUFzRCxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVE7SUFFMUUsT0FBTyxXQUFXLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcGlsZXIsXHJcbiAgSW5qZWN0b3IsXHJcbiAgTW9kdWxlV2l0aFByb3ZpZGVycyxcclxuICBOZ01vZHVsZUZhY3RvcnksXHJcbiAgTmdNb2R1bGVSZWYsXHJcbiAgU3RhdGljUHJvdmlkZXIsXHJcbiAgVHlwZSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbmZpZ1N0YXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpZy1zdGF0ZS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBMYXp5TW9kdWxlRmFjdG9yeTxUPiBleHRlbmRzIE5nTW9kdWxlRmFjdG9yeTxUPiB7XHJcbiAgZ2V0IG1vZHVsZVR5cGUoKTogVHlwZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2R1bGVXaXRoUHJvdmlkZXJzLm5nTW9kdWxlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtb2R1bGVXaXRoUHJvdmlkZXJzOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFQ+KSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlKHBhcmVudEluamVjdG9yOiBJbmplY3RvciB8IG51bGwpOiBOZ01vZHVsZVJlZjxUPiB7XHJcbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgIC4uLihwYXJlbnRJbmplY3RvciAmJiB7IHBhcmVudDogcGFyZW50SW5qZWN0b3IgfSksXHJcbiAgICAgIHByb3ZpZGVyczogdGhpcy5tb2R1bGVXaXRoUHJvdmlkZXJzLnByb3ZpZGVycyBhcyBTdGF0aWNQcm92aWRlcltdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgY29tcGlsZXIgPSBpbmplY3Rvci5nZXQoQ29tcGlsZXIpO1xyXG4gICAgY29uc3QgZmFjdG9yeSA9IGNvbXBpbGVyLmNvbXBpbGVNb2R1bGVTeW5jKHRoaXMubW9kdWxlVHlwZSk7XHJcblxyXG4gICAgcmV0dXJuIGZhY3RvcnkuY3JlYXRlKGluamVjdG9yKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmZWF0dXJlc0ZhY3RvcnkoXHJcbiAgY29uZmlnU3RhdGU6IENvbmZpZ1N0YXRlU2VydmljZSxcclxuICBmZWF0dXJlS2V5czogc3RyaW5nW10sXHJcbiAgbWFwRm46IChmZWF0dXJlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkgPT4gYW55ID0gZmVhdHVyZXMgPT4gZmVhdHVyZXMsXHJcbikge1xyXG4gIHJldHVybiBjb25maWdTdGF0ZS5nZXRGZWF0dXJlcyQoZmVhdHVyZUtleXMpLnBpcGUoZmlsdGVyKEJvb2xlYW4pLCBtYXAobWFwRm4pKTtcclxufVxyXG4iXX0=","/** @deprecated the method will change in v8.0 */\nexport function downloadBlob(blob, filename) {\n const blobUrl = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = blobUrl;\n link.download = filename;\n document.body.appendChild(link);\n link.dispatchEvent(new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window,\n }));\n document.body.removeChild(link);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi91dGlscy9maWxlLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlEQUFpRDtBQUNqRCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQVUsRUFBRSxRQUFnQjtJQUN2RCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFekMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7SUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFFekIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFaEMsSUFBSSxDQUFDLGFBQWEsQ0FDaEIsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFO1FBQ3RCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsVUFBVSxFQUFFLElBQUk7UUFDaEIsSUFBSSxFQUFFLE1BQU07S0FDYixDQUFDLENBQ0gsQ0FBQztJQUVGLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGRlcHJlY2F0ZWQgdGhlIG1ldGhvZCB3aWxsIGNoYW5nZSBpbiB2OC4wICovIFxyXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRCbG9iKGJsb2I6IEJsb2IsIGZpbGVuYW1lOiBzdHJpbmcpIHtcclxuICBjb25zdCBibG9iVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuXHJcbiAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuXHJcbiAgbGluay5ocmVmID0gYmxvYlVybDtcclxuICBsaW5rLmRvd25sb2FkID0gZmlsZW5hbWU7XHJcblxyXG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcblxyXG4gIGxpbmsuZGlzcGF0Y2hFdmVudChcclxuICAgIG5ldyBNb3VzZUV2ZW50KCdjbGljaycsIHtcclxuICAgICAgYnViYmxlczogdHJ1ZSxcclxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcclxuICAgICAgdmlldzogd2luZG93LFxyXG4gICAgfSksXHJcbiAgKTtcclxuXHJcbiAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxufVxyXG4iXX0=","export function isNumber(value) {\n return value == Number(value);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3V0aWxzL251bWJlci11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQXNCO0lBQzdDLE9BQU8sS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBib29sZWFuIHtcclxuICByZXR1cm4gdmFsdWUgPT0gTnVtYmVyKHZhbHVlKTtcclxufVxyXG4iXX0=","import { isNumber } from './number-utils';\nexport function mapEnumToOptions(_enum) {\n const options = [];\n for (const member in _enum)\n if (!isNumber(member))\n options.push({\n key: member,\n value: _enum[member],\n });\n return options;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi91dGlscy9mb3JtLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxNQUFNLFVBQVUsZ0JBQWdCLENBQUksS0FBUTtJQUMxQyxNQUFNLE9BQU8sR0FBb0IsRUFBRSxDQUFDO0lBRXBDLEtBQUssTUFBTSxNQUFNLElBQUksS0FBSztRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLEdBQUcsRUFBRSxNQUFNO2dCQUNYLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO2FBQ3JCLENBQUMsQ0FBQztJQUVQLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQlAgfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uJztcclxuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuL251bWJlci11dGlscyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWFwRW51bVRvT3B0aW9uczxUPihfZW51bTogVCk6IEFCUC5PcHRpb248VD5bXSB7XHJcbiAgY29uc3Qgb3B0aW9uczogQUJQLk9wdGlvbjxUPltdID0gW107XHJcblxyXG4gIGZvciAoY29uc3QgbWVtYmVyIGluIF9lbnVtKVxyXG4gICAgaWYgKCFpc051bWJlcihtZW1iZXIpKVxyXG4gICAgICBvcHRpb25zLnB1c2goe1xyXG4gICAgICAgIGtleTogbWVtYmVyLFxyXG4gICAgICAgIHZhbHVlOiBfZW51bVttZW1iZXJdLFxyXG4gICAgICB9KTtcclxuXHJcbiAgcmV0dXJuIG9wdGlvbnM7XHJcbn1cclxuIl19","import { ConfigStateService } from '../services';\nexport function uuid(a) {\n return a\n ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)\n : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid);\n}\nexport function generateHash(value) {\n let hashed = 0;\n let charCode;\n for (let i = 0; i < value.length; i++) {\n charCode = value.charCodeAt(i);\n hashed = (hashed << 5) - hashed + charCode;\n hashed |= 0;\n }\n return hashed;\n}\nexport function generatePassword(injector, length = 8) {\n if (injector) {\n length = getRequiredPasswordLength(injector);\n }\n length = Math.min(Math.max(4, length), 128);\n const lowers = 'abcdefghjkmnpqrstuvwxyz';\n const uppers = 'ABCDEFGHJKMNPQRSTUVWXYZ';\n const numbers = '23456789';\n const specials = '!*_#/+-.';\n const all = lowers + uppers + numbers + specials;\n const getRandom = (chrSet) => chrSet[Math.floor(Math.random() * chrSet.length)];\n const password = Array({ length });\n password[0] = getRandom(lowers);\n password[1] = getRandom(uppers);\n password[2] = getRandom(numbers);\n password[3] = getRandom(specials);\n for (let i = 4; i < length; i++) {\n password[i] = getRandom(all);\n }\n return password.sort(() => 0.5 - Math.random()).join('');\n}\nfunction getRequiredPasswordLength(injector) {\n const configState = injector.get(ConfigStateService);\n const passwordRules = configState.getSettings('Identity.Password');\n return Number(passwordRules['Abp.Identity.Password.RequiredLength']) || 8;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3V0aWxzL2dlbmVyYXRvci11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFakQsTUFBTSxVQUFVLElBQUksQ0FBQyxDQUFPO0lBQzFCLE9BQU8sQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQWE7SUFDeEMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsSUFBSSxRQUFnQixDQUFDO0lBRXJCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsUUFBUSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsTUFBTSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDM0MsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQW1CLEVBQUUsTUFBTSxHQUFHLENBQUM7SUFDOUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLE1BQU0sR0FBRyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFNUMsTUFBTSxNQUFNLEdBQUcseUJBQXlCLENBQUM7SUFDekMsTUFBTSxNQUFNLEdBQUcseUJBQXlCLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDO0lBQzNCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM1QixNQUFNLEdBQUcsR0FBRyxNQUFNLEdBQUcsTUFBTSxHQUFHLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFFakQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUV4RixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFbEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2hDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxTQUFTLHlCQUF5QixDQUFDLFFBQWtCO0lBQ25ELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyRCxNQUFNLGFBQWEsR0FBMkIsV0FBVyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzNGLE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBQlAgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdXVpZChhPzogYW55KTogc3RyaW5nIHtcclxuICByZXR1cm4gYVxyXG4gICAgPyAoYSBeICgoTWF0aC5yYW5kb20oKSAqIDE2KSA+PiAoYSAvIDQpKSkudG9TdHJpbmcoMTYpXHJcbiAgICA6ICgnJyArIDFlNyArIC0xZTMgKyAtNGUzICsgLThlMyArIC0xZTExKS5yZXBsYWNlKC9bMDE4XS9nLCB1dWlkKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSGFzaCh2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcclxuICBsZXQgaGFzaGVkID0gMDtcclxuICBsZXQgY2hhckNvZGU6IG51bWJlcjtcclxuXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgY2hhckNvZGUgPSB2YWx1ZS5jaGFyQ29kZUF0KGkpO1xyXG4gICAgaGFzaGVkID0gKGhhc2hlZCA8PCA1KSAtIGhhc2hlZCArIGNoYXJDb2RlO1xyXG4gICAgaGFzaGVkIHw9IDA7XHJcbiAgfVxyXG4gIHJldHVybiBoYXNoZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVBhc3N3b3JkKGluamVjdG9yPzogSW5qZWN0b3IsIGxlbmd0aCA9IDgpIHtcclxuICBpZiAoaW5qZWN0b3IpIHtcclxuICAgIGxlbmd0aCA9IGdldFJlcXVpcmVkUGFzc3dvcmRMZW5ndGgoaW5qZWN0b3IpO1xyXG4gIH1cclxuXHJcbiAgbGVuZ3RoID0gTWF0aC5taW4oTWF0aC5tYXgoNCwgbGVuZ3RoKSwgMTI4KTtcclxuXHJcbiAgY29uc3QgbG93ZXJzID0gJ2FiY2RlZmdoamttbnBxcnN0dXZ3eHl6JztcclxuICBjb25zdCB1cHBlcnMgPSAnQUJDREVGR0hKS01OUFFSU1RVVldYWVonO1xyXG4gIGNvbnN0IG51bWJlcnMgPSAnMjM0NTY3ODknO1xyXG4gIGNvbnN0IHNwZWNpYWxzID0gJyEqXyMvKy0uJztcclxuICBjb25zdCBhbGwgPSBsb3dlcnMgKyB1cHBlcnMgKyBudW1iZXJzICsgc3BlY2lhbHM7XHJcblxyXG4gIGNvbnN0IGdldFJhbmRvbSA9IChjaHJTZXQ6IHN0cmluZykgPT4gY2hyU2V0W01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoclNldC5sZW5ndGgpXTtcclxuXHJcbiAgY29uc3QgcGFzc3dvcmQgPSBBcnJheSh7IGxlbmd0aCB9KTtcclxuICBwYXNzd29yZFswXSA9IGdldFJhbmRvbShsb3dlcnMpO1xyXG4gIHBhc3N3b3JkWzFdID0gZ2V0UmFuZG9tKHVwcGVycyk7XHJcbiAgcGFzc3dvcmRbMl0gPSBnZXRSYW5kb20obnVtYmVycyk7XHJcbiAgcGFzc3dvcmRbM10gPSBnZXRSYW5kb20oc3BlY2lhbHMpO1xyXG5cclxuICBmb3IgKGxldCBpID0gNDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICBwYXNzd29yZFtpXSA9IGdldFJhbmRvbShhbGwpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHBhc3N3b3JkLnNvcnQoKCkgPT4gMC41IC0gTWF0aC5yYW5kb20oKSkuam9pbignJyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFJlcXVpcmVkUGFzc3dvcmRMZW5ndGgoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgY29uc3QgY29uZmlnU3RhdGUgPSBpbmplY3Rvci5nZXQoQ29uZmlnU3RhdGVTZXJ2aWNlKTtcclxuICBjb25zdCBwYXNzd29yZFJ1bGVzOiBBQlAuRGljdGlvbmFyeTxzdHJpbmc+ID0gY29uZmlnU3RhdGUuZ2V0U2V0dGluZ3MoJ0lkZW50aXR5LlBhc3N3b3JkJyk7XHJcbiAgcmV0dXJuIE51bWJlcihwYXNzd29yZFJ1bGVzWydBYnAuSWRlbnRpdHkuUGFzc3dvcmQuUmVxdWlyZWRMZW5ndGgnXSkgfHwgODtcclxufVxyXG4iXX0=","export function getPathName(url) {\n const { pathname } = new URL(url, window.location.origin);\n return pathname;\n}\nexport class WebHttpUrlEncodingCodec {\n encodeKey(k) {\n return encodeURIComponent(k);\n }\n encodeValue(v) {\n return encodeURIComponent(v);\n }\n decodeKey(k) {\n return decodeURIComponent(k);\n }\n decodeValue(v) {\n return decodeURIComponent(v);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi91dGlscy9odHRwLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBVztJQUNyQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsU0FBUyxDQUFDLENBQVM7UUFDakIsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLENBQVM7UUFDbkIsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsU0FBUyxDQUFDLENBQVM7UUFDakIsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLENBQVM7UUFDbkIsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1ldGVyQ29kZWMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0aE5hbWUodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IHsgcGF0aG5hbWUgfSA9IG5ldyBVUkwodXJsLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcclxuICByZXR1cm4gcGF0aG5hbWU7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBXZWJIdHRwVXJsRW5jb2RpbmdDb2RlYyBpbXBsZW1lbnRzIEh0dHBQYXJhbWV0ZXJDb2RlYyB7XHJcbiAgZW5jb2RlS2V5KGs6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGspO1xyXG4gIH1cclxuXHJcbiAgZW5jb2RlVmFsdWUodjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodik7XHJcbiAgfVxyXG5cclxuICBkZWNvZGVLZXkoazogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoayk7XHJcbiAgfVxyXG5cclxuICBkZWNvZGVWYWx1ZSh2OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQodik7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class AbpLocalStorageService {\n constructor() {\n this.platformId = inject(PLATFORM_ID);\n }\n get length() {\n return isPlatformBrowser(this.platformId) ? localStorage.length : 0;\n }\n clear() {\n if (isPlatformBrowser(this.platformId)) {\n localStorage.clear();\n }\n }\n getItem(key) {\n if (!isPlatformBrowser(this.platformId)) {\n return null;\n }\n return localStorage.getItem(key);\n }\n key(index) {\n if (!isPlatformBrowser(this.platformId)) {\n return null;\n }\n return localStorage.key(index);\n }\n removeItem(key) {\n if (isPlatformBrowser(this.platformId)) {\n localStorage.removeItem(key);\n }\n }\n setItem(key, value) {\n if (isPlatformBrowser(this.platformId)) {\n localStorage.setItem(key, value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpLocalStorageService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpLocalStorageService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBS3BELE1BQU0sT0FBTyxzQkFBc0I7SUFHakM7UUFGUSxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBR3pDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLENBQUMsR0FBVztRQUNqQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDeEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxHQUFHLENBQUMsS0FBYTtRQUNmLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUNoQyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDOzhHQXBDVSxzQkFBc0I7a0hBQXRCLHNCQUFzQixjQUZyQixNQUFNOzsyRkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWJwTG9jYWxTdG9yYWdlU2VydmljZSBpbXBsZW1lbnRzIFN0b3JhZ2Uge1xyXG4gIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gIH1cclxuICBbbmFtZTogc3RyaW5nXTogYW55O1xyXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpID8gbG9jYWxTdG9yYWdlLmxlbmd0aCA6IDA7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRJdGVtKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcclxuICB9XHJcbiAga2V5KGluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2Uua2V5KGluZGV4KTtcclxuICB9XHJcbiAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const APP_INIT_ERROR_HANDLERS = new InjectionToken('APP_INIT_ERROR_HANDLERS');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi90b2tlbnMvYXBwLWNvbmZpZy50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUN2RCx5QkFBeUIsQ0FDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgdHlwZSBBcHBJbml0RXJyb3JGbiA9IChlcnJvcjogYW55KSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFQUF9JTklUX0VSUk9SX0hBTkRMRVJTID0gbmV3IEluamVjdGlvblRva2VuPEFwcEluaXRFcnJvckZuW10+KFxyXG4gICdBUFBfSU5JVF9FUlJPUl9IQU5ETEVSUycsXHJcbik7XHJcbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const COOKIE_LANGUAGE_KEY = new InjectionToken('COOKIE_LANGUAGE_KEY', {\n factory: () => '.AspNetCore.Culture',\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLWxhbmd1YWdlLWtleS50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi90b2tlbnMvY29va2llLWxhbmd1YWdlLWtleS50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFTLHFCQUFxQixFQUFFO0lBQ25GLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxxQkFBcUI7Q0FDckMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBjb25zdCBDT09LSUVfTEFOR1VBR0VfS0VZID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0NPT0tJRV9MQU5HVUFHRV9LRVknLCB7XHJcbiAgZmFjdG9yeTogKCkgPT4gJy5Bc3BOZXRDb3JlLkN1bHR1cmUnLFxyXG59KTtcclxuIl19","import { InjectionToken } from '@angular/core';\nexport const LIST_QUERY_DEBOUNCE_TIME = new InjectionToken('LIST_QUERY_DEBOUNCE_TIME');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi90b2tlbnMvbGlzdC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUFTLDBCQUEwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IExJU1RfUVVFUllfREVCT1VOQ0VfVElNRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxudW1iZXI+KCdMSVNUX1FVRVJZX0RFQk9VTkNFX1RJTUUnKTtcclxuIl19","import { InjectionToken } from '@angular/core';\nexport const LOADER_DELAY = new InjectionToken('LOADER_DELAY');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9kYWVyLWRlbGF5LnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Rva2Vucy9sb2RhZXItZGVsYXkudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQVMsY0FBYyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IExPQURFUl9ERUxBWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxudW1iZXI+KCdMT0FERVJfREVMQVknKTtcclxuIl19","import { InjectionToken } from '@angular/core';\nexport const NAVIGATE_TO_MANAGE_PROFILE = new InjectionToken('NAVIGATE_TO_MANAGE_PROFILE');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXByb2ZpbGUudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdG9rZW5zL21hbmFnZS1wcm9maWxlLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQzFELDRCQUE0QixDQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBjb25zdCBOQVZJR0FURV9UT19NQU5BR0VfUFJPRklMRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjwoKSA9PiB2b2lkPihcclxuICAnTkFWSUdBVEVfVE9fTUFOQUdFX1BST0ZJTEUnLFxyXG4pO1xyXG4iXX0=","import { InjectionToken } from \"@angular/core\";\nexport const QUEUE_MANAGER = new InjectionToken(\"QUEUE_MANAGER\");\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdG9rZW5zL3F1ZXVlLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFlLGVBQWUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVldWVNYW5hZ2VyIH0gZnJvbSBcIi4uL3V0aWxzL3F1ZXVlXCI7XHJcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBRVUVVRV9NQU5BR0VSID0gbmV3IEluamVjdGlvblRva2VuPFF1ZXVlTWFuYWdlcj4oXCJRVUVVRV9NQU5BR0VSXCIpO1xyXG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const TENANT_KEY = new InjectionToken('TENANT_KEY');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LWtleS50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi90b2tlbnMvdGVuYW50LWtleS50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBUyxZQUFZLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgVEVOQU5UX0tFWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdURU5BTlRfS0VZJyk7XHJcbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const INCUDE_LOCALIZATION_RESOURCES_TOKEN = new InjectionToken('INCUDE_LOCALIZATION_RESOURCES_TOKEN');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZS1sb2NhbGl6YXRpb24tcmVzb3VyY2VzLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Rva2Vucy9pbmNsdWRlLWxvY2FsaXphdGlvbi1yZXNvdXJjZXMudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyxJQUFJLGNBQWMsQ0FDbkUscUNBQXFDLENBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IElOQ1VERV9MT0NBTElaQVRJT05fUkVTT1VSQ0VTX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KFxyXG4gICdJTkNVREVfTE9DQUxJWkFUSU9OX1JFU09VUkNFU19UT0tFTicsXHJcbik7XHJcbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const PIPE_TO_LOGIN_FN_KEY = new InjectionToken('PIPE_TO_LOGIN_FN_KEY');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS10by1sb2dpbi50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi90b2tlbnMvcGlwZS10by1sb2dpbi50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUFnQixzQkFBc0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGlwZVRvTG9naW5GbiB9IGZyb20gJy4uL21vZGVscy9hdXRoJztcclxuXHJcbmV4cG9ydCBjb25zdCBQSVBFX1RPX0xPR0lOX0ZOX0tFWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQaXBlVG9Mb2dpbkZuPignUElQRV9UT19MT0dJTl9GTl9LRVknKTtcclxuIl19","import { InjectionToken } from '@angular/core';\n/**\n * @deprecated The token should not be used anymore.\n */\nexport const SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY = new InjectionToken('SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LXRva2VuLXJlc3BvbnNlLXRvLXN0b3JhZ2UudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdG9rZW5zL3NldC10b2tlbi1yZXNwb25zZS10by1zdG9yYWdlLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxJQUFJLGNBQWMsQ0FDcEUsc0NBQXNDLENBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZXRUb2tlblJlc3BvbnNlVG9TdG9yYWdlRm4gfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5cclxuLyoqXHJcbiAqIEBkZXByZWNhdGVkIFRoZSB0b2tlbiBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZS4gXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgU0VUX1RPS0VOX1JFU1BPTlNFX1RPX1NUT1JBR0VfRk5fS0VZID0gbmV3IEluamVjdGlvblRva2VuPFNldFRva2VuUmVzcG9uc2VUb1N0b3JhZ2VGbj4oXHJcbiAgJ1NFVF9UT0tFTl9SRVNQT05TRV9UT19TVE9SQUdFX0ZOX0tFWScsXHJcbik7XHJcbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const CHECK_AUTHENTICATION_STATE_FN_KEY = new InjectionToken('CHECK_AUTHENTICATION_STATE_FN_KEY');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stYXV0aGVudGljYXRpb24tc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdG9rZW5zL2NoZWNrLWF1dGhlbnRpY2F0aW9uLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsSUFBSSxjQUFjLENBQ2pFLG1DQUFtQyxDQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hlY2tBdXRoZW50aWNhdGlvblN0YXRlRm4gfSBmcm9tICcuLi9tb2RlbHMvYXV0aCc7XHJcblxyXG5leHBvcnQgY29uc3QgQ0hFQ0tfQVVUSEVOVElDQVRJT05fU1RBVEVfRk5fS0VZID0gbmV3IEluamVjdGlvblRva2VuPENoZWNrQXV0aGVudGljYXRpb25TdGF0ZUZuPihcclxuICAnQ0hFQ0tfQVVUSEVOVElDQVRJT05fU1RBVEVfRk5fS0VZJyxcclxuKTtcclxuIl19","import { HttpContextToken } from '@angular/common/http';\nexport const IS_EXTERNAL_REQUEST = new HttpContextToken(() => false);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jb250ZXh0LnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Rva2Vucy9odHRwLWNvbnRleHQudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBVSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDb250ZXh0VG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5leHBvcnQgY29uc3QgSVNfRVhURVJOQUxfUkVRVUVTVCA9IG5ldyBIdHRwQ29udGV4dFRva2VuPGJvb2xlYW4+KCgpID0+IGZhbHNlKTtcclxuIl19","import { InjectionToken } from '@angular/core';\nexport const OTHERS_GROUP = new InjectionToken('OTHERS_GROUP');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RoZXJzLWdyb3VwLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Rva2Vucy9vdGhlcnMtZ3JvdXAudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQVMsY0FBYyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IE9USEVSU19HUk9VUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdPVEhFUlNfR1JPVVAnKTtcclxuIl19","import { InjectionToken } from '@angular/core';\nexport const TENANT_NOT_FOUND_BY_NAME = new InjectionToken('TENANT_NOT_FOUND_BY_NAME');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LW5vdC1mb3VuZC1ieS1uYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Rva2Vucy90ZW5hbnQtbm90LWZvdW5kLWJ5LW5hbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FFeEQsMEJBQTBCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRFTkFOVF9OT1RfRk9VTkRfQllfTkFNRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxcclxuICAoSHR0cEVycm9yUmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkXHJcbj4oJ1RFTkFOVF9OT1RfRk9VTkRfQllfTkFNRScpO1xyXG4iXX0=","import { InjectionToken, inject } from '@angular/core';\nimport { LocalizationService } from '../services';\nexport const SORT_COMPARE_FUNC = new InjectionToken('SORT_COMPARE_FUNC');\nexport function compareFuncFactory() {\n const localizationService = inject(LocalizationService);\n const fn = (a, b) => {\n const aNumber = a.order;\n const bNumber = b.order;\n if (aNumber > bNumber)\n return 1;\n if (aNumber < bNumber)\n return -1;\n if (a.id > b.id)\n return 1;\n if (a.id < b.id)\n return -1;\n if (!Number.isInteger(aNumber))\n return 1;\n if (!Number.isInteger(bNumber))\n return -1;\n const aName = localizationService.instant(a.name);\n const bName = localizationService.instant(b.name);\n if (aName > bName)\n return 1;\n if (aName < bName)\n return -1;\n return 0;\n };\n return fn;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyZS1mdW5jLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Rva2Vucy9jb21wYXJlLWZ1bmMudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUNqRCxtQkFBbUIsQ0FDcEIsQ0FBQztBQUVGLE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN4RCxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQWUsRUFBRSxDQUFlLEVBQUUsRUFBRTtRQUM5QyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3hCLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFeEIsSUFBSSxPQUFPLEdBQUcsT0FBTztZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLElBQUksT0FBTyxHQUFHLE9BQU87WUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUUxQyxNQUFNLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELE1BQU0sS0FBSyxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEQsSUFBSSxLQUFLLEdBQUcsS0FBSztZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxHQUFHLEtBQUs7WUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRTdCLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDO0lBRUYsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgdHlwZSB7IFNvcnRhYmxlSXRlbSB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5leHBvcnQgY29uc3QgU09SVF9DT01QQVJFX0ZVTkMgPSBuZXcgSW5qZWN0aW9uVG9rZW48KGE6IFNvcnRhYmxlSXRlbSwgYjogU29ydGFibGVJdGVtKSA9PiBudW1iZXI+KFxyXG4gICdTT1JUX0NPTVBBUkVfRlVOQycsXHJcbik7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZUZ1bmNGYWN0b3J5KCkge1xyXG4gIGNvbnN0IGxvY2FsaXphdGlvblNlcnZpY2UgPSBpbmplY3QoTG9jYWxpemF0aW9uU2VydmljZSk7XHJcbiAgY29uc3QgZm4gPSAoYTogU29ydGFibGVJdGVtLCBiOiBTb3J0YWJsZUl0ZW0pID0+IHtcclxuICAgIGNvbnN0IGFOdW1iZXIgPSBhLm9yZGVyO1xyXG4gICAgY29uc3QgYk51bWJlciA9IGIub3JkZXI7XHJcblxyXG4gICAgaWYgKGFOdW1iZXIgPiBiTnVtYmVyKSByZXR1cm4gMTtcclxuICAgIGlmIChhTnVtYmVyIDwgYk51bWJlcikgcmV0dXJuIC0xO1xyXG5cclxuICAgIGlmIChhLmlkID4gYi5pZCkgcmV0dXJuIDE7XHJcbiAgICBpZiAoYS5pZCA8IGIuaWQpIHJldHVybiAtMTtcclxuXHJcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoYU51bWJlcikpIHJldHVybiAxO1xyXG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGJOdW1iZXIpKSByZXR1cm4gLTE7XHJcblxyXG4gICAgY29uc3QgYU5hbWUgPSBsb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYS5uYW1lKTtcclxuICAgIGNvbnN0IGJOYW1lID0gbG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGIubmFtZSk7XHJcblxyXG4gICAgaWYgKGFOYW1lID4gYk5hbWUpIHJldHVybiAxO1xyXG4gICAgaWYgKGFOYW1lIDwgYk5hbWUpIHJldHVybiAtMTtcclxuXHJcbiAgICByZXR1cm4gMDtcclxuICB9O1xyXG5cclxuICByZXR1cm4gZm47XHJcbn1cclxuIl19","import { InjectionToken } from \"@angular/core\";\nexport const DYNAMIC_LAYOUTS_TOKEN = new InjectionToken('DYNAMIC_LAYOUTS');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1sYXlvdXQudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdG9rZW5zL2R5bmFtaWMtbGF5b3V0LnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQXNCLGlCQUFpQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuIGV4cG9ydCBjb25zdCBEWU5BTUlDX0xBWU9VVFNfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TWFwPHN0cmluZywgc3RyaW5nPj4oJ0RZTkFNSUNfTEFZT1VUUycpXHJcbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const DISABLE_PROJECT_NAME = new InjectionToken('DISABLE_APP_NAME');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUtc3RyYXRlZ3ktZGlzYWJsZS1wcm9qZWN0LW5hbWUudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdG9rZW5zL3RpdGxlLXN0cmF0ZWd5LWRpc2FibGUtcHJvamVjdC1uYW1lLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQVUsa0JBQWtCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgRElTQUJMRV9QUk9KRUNUX05BTUUgPSBuZXcgSW5qZWN0aW9uVG9rZW48Ym9vbGVhbj4oJ0RJU0FCTEVfQVBQX05BTUUnKTtcclxuIl19","import { inject, InjectionToken, makeStateKey, PLATFORM_ID, TransferState } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { AbpCookieStorageService } from '../services';\nexport const SSR_FLAG = makeStateKey('SSR_FLAG');\nexport const APP_STARTED_WITH_SSR = new InjectionToken('APP_STARTED_WITH_SSR', {\n providedIn: 'root',\n factory: () => {\n const platformId = inject(PLATFORM_ID);\n const cookieService = inject(AbpCookieStorageService);\n if (!isPlatformBrowser(platformId))\n return true;\n const ts = inject(TransferState);\n const ssrEnabled = cookieService.getItem('ssr-init');\n // Remove the cookie after reading its value because it's only needed once\n cookieService.removeItem('ssr-init');\n return ts.get(SSR_FLAG, false) || ssrEnabled === 'true';\n },\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NyLXN0YXRlLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Rva2Vucy9zc3Itc3RhdGUudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQVUsVUFBVSxDQUFDLENBQUM7QUFFMUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQVUsc0JBQXNCLEVBQUU7SUFDdEYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDaEQsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQsMEVBQTBFO1FBQzFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxVQUFVLEtBQUssTUFBTSxDQUFDO0lBQzFELENBQUM7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGlvblRva2VuLCBtYWtlU3RhdGVLZXksIFBMQVRGT1JNX0lELCBUcmFuc2ZlclN0YXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQWJwQ29va2llU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5leHBvcnQgY29uc3QgU1NSX0ZMQUcgPSBtYWtlU3RhdGVLZXk8Ym9vbGVhbj4oJ1NTUl9GTEFHJyk7XHJcblxyXG5leHBvcnQgY29uc3QgQVBQX1NUQVJURURfV0lUSF9TU1IgPSBuZXcgSW5qZWN0aW9uVG9rZW48Ym9vbGVhbj4oJ0FQUF9TVEFSVEVEX1dJVEhfU1NSJywge1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxuICBmYWN0b3J5OiAoKSA9PiB7XHJcbiAgICBjb25zdCBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcclxuICAgIGNvbnN0IGNvb2tpZVNlcnZpY2UgPSBpbmplY3QoQWJwQ29va2llU3RvcmFnZVNlcnZpY2UpO1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSkgcmV0dXJuIHRydWU7XHJcbiAgICBjb25zdCB0cyA9IGluamVjdChUcmFuc2ZlclN0YXRlKTtcclxuICAgIGNvbnN0IHNzckVuYWJsZWQgPSBjb29raWVTZXJ2aWNlLmdldEl0ZW0oJ3Nzci1pbml0Jyk7XHJcbiAgICAvLyBSZW1vdmUgdGhlIGNvb2tpZSBhZnRlciByZWFkaW5nIGl0cyB2YWx1ZSBiZWNhdXNlIGl0J3Mgb25seSBuZWVkZWQgb25jZVxyXG4gICAgY29va2llU2VydmljZS5yZW1vdmVJdGVtKCdzc3ItaW5pdCcpO1xyXG4gICAgcmV0dXJuIHRzLmdldChTU1JfRkxBRywgZmFsc2UpIHx8IHNzckVuYWJsZWQgPT09ICd0cnVlJztcclxuICB9LFxyXG59KTtcclxuIl19","import { Injectable, PLATFORM_ID, inject, REQUEST } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class AbpCookieStorageService {\n constructor() {\n this.platformId = inject(PLATFORM_ID);\n this.document = inject(DOCUMENT);\n this.request = inject(REQUEST);\n }\n get length() {\n return isPlatformBrowser(this.platformId) ? this.keys().length : this.getCookiesFromRequest()?.size ?? 0;\n }\n clear() {\n if (!isPlatformBrowser(this.platformId))\n return;\n this.keys().forEach(k => this.removeItem(k));\n }\n getItem(key) {\n if (!isPlatformBrowser(this.platformId)) {\n return this.getCookiesFromRequest()?.get(key) ?? null;\n }\n const name = key + '=';\n const parts = (this.document.cookie || '').split('; ');\n for (const p of parts) {\n if (p.startsWith(name)) {\n return decodeURIComponent(p.slice(name.length));\n }\n }\n return null;\n }\n key(index) {\n if (!isPlatformBrowser(this.platformId))\n return null;\n return this.keys()[index] ?? null;\n }\n removeItem(key) {\n if (!isPlatformBrowser(this.platformId))\n return;\n this.setCookie(key, '', { 'max-age': -1, path: '/' });\n }\n setItem(key, value) {\n if (!isPlatformBrowser(this.platformId))\n return;\n this.setCookie(key, encodeURIComponent(value), {\n path: '/',\n sameSite: 'Lax',\n secure: true,\n });\n }\n setItemWithExpiry(key, value, seconds) {\n if (!isPlatformBrowser(this.platformId))\n return;\n this.setCookie(key, encodeURIComponent(value), {\n path: '/',\n sameSite: 'Lax',\n secure: true,\n 'max-age': Math.max(0, Math.floor(seconds)),\n });\n }\n keys() {\n const raw = (this.document.cookie || '').split('; ').filter(Boolean);\n return raw\n .map(c => decodeURIComponent(c.split('=')[0]));\n }\n setCookie(name, value, opts) {\n let s = `${name}=${value}`;\n if (opts.path)\n s += `; Path=${opts.path}`;\n if (opts.domain)\n s += `; Domain=${opts.domain}`;\n if (opts.sameSite)\n s += `; SameSite=${opts.sameSite}`;\n if (opts.secure)\n s += `; Secure`;\n if (opts.expires)\n s += `; Expires=${opts.expires.toUTCString()}`;\n if (typeof opts['max-age'] === 'number')\n s += `; Max-Age=${opts['max-age']}`;\n this.document.cookie = s;\n }\n getCookiesFromRequest() {\n const cookies = new Map();\n const cookieHeader = this.request?.headers.get('cookie') ?? '';\n for (const part of cookieHeader.split(';')) {\n const i = part.indexOf('=');\n if (i > -1) {\n const k = part.slice(0, i).trim();\n const v = decodeURIComponent(part.slice(i + 1).trim());\n cookies.set(k, v);\n }\n }\n return cookies;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpCookieStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpCookieStorageService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpCookieStorageService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9jb29raWUtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUc5RCxNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRVUsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFlBQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7S0EyRm5DO0lBekZDLElBQUksTUFBTTtRQUNSLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPO1FBQ2hELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxP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QUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OEdBN0ZVLHVCQUF1QjtrSEFBdkIsdUJBQXVCLGNBRFYsTUFBTTs7MkZBQ25CLHVCQUF1QjtrQkFEbkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgaW5qZWN0LCBSRVFVRVNUIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQWJwQ29va2llU3RvcmFnZVNlcnZpY2UgaW1wbGVtZW50cyBTdG9yYWdlIHtcclxuICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG4gIHByaXZhdGUgcmVxdWVzdCA9IGluamVjdChSRVFVRVNUKTtcclxuXHJcbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgPyB0aGlzLmtleXMoKS5sZW5ndGggOiB0aGlzLmdldENvb2tpZXNGcm9tUmVxdWVzdCgpPy5zaXplID8/IDA7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5rZXlzKCkuZm9yRWFjaChrID0+IHRoaXMucmVtb3ZlSXRlbShrKSk7XHJcbiAgfVxyXG5cclxuICBnZXRJdGVtKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29va2llc0Zyb21SZXF1ZXN0KCk/LmdldChrZXkpID8/IG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBuYW1lID0ga2V5ICsgJz0nO1xyXG4gICAgY29uc3QgcGFydHMgPSAodGhpcy5kb2N1bWVudC5jb29raWUgfHwgJycpLnNwbGl0KCc7ICcpO1xyXG4gICAgZm9yIChjb25zdCBwIG9mIHBhcnRzKSB7XHJcbiAgICAgIGlmIChwLnN0YXJ0c1dpdGgobmFtZSkpIHtcclxuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHAuc2xpY2UobmFtZS5sZW5ndGgpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBrZXkoaW5kZXg6IG51bWJlcik6IHN0cmluZyB8IG51bGwge1xyXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLmtleXMoKVtpbmRleF0gPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5zZXRDb29raWUoa2V5LCAnJywgeyAnbWF4LWFnZSc6IC0xLCBwYXRoOiAnLycgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuICAgIHRoaXMuc2V0Q29va2llKGtleSwgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSwge1xyXG4gICAgICBwYXRoOiAnLycsXHJcbiAgICAgIHNhbWVTaXRlOiAnTGF4JyxcclxuICAgICAgc2VjdXJlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRJdGVtV2l0aEV4cGlyeShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgc2Vjb25kczogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcclxuICAgIHRoaXMuc2V0Q29va2llKGtleSwgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSwge1xyXG4gICAgICBwYXRoOiAnLycsXHJcbiAgICAgIHNhbWVTaXRlOiAnTGF4JyxcclxuICAgICAgc2VjdXJlOiB0cnVlLFxyXG4gICAgICAnbWF4LWFnZSc6IE1hdGgubWF4KDAsIE1hdGguZmxvb3Ioc2Vjb25kcykpLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGtleXMoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgcmF3ID0gKHRoaXMuZG9jdW1lbnQuY29va2llIHx8ICcnKS5zcGxpdCgnOyAnKS5maWx0ZXIoQm9vbGVhbik7XHJcbiAgICByZXR1cm4gcmF3XHJcbiAgICAgIC5tYXAoYyA9PiBkZWNvZGVVUklDb21wb25lbnQoYy5zcGxpdCgnPScpWzBdKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENvb2tpZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG9wdHM6IHtcclxuICAgIHBhdGg/OiBzdHJpbmc7XHJcbiAgICBkb21haW4/OiBzdHJpbmc7XHJcbiAgICBzZWN1cmU/OiBib29sZWFuO1xyXG4gICAgc2FtZVNpdGU/OiAnTGF4JyB8ICdTdHJpY3QnIHwgJ05vbmUnO1xyXG4gICAgZXhwaXJlcz86IERhdGU7XHJcbiAgICAnbWF4LWFnZSc/OiBudW1iZXI7XHJcbiAgfSkge1xyXG4gICAgbGV0IHMgPSBgJHtuYW1lfT0ke3ZhbHVlfWA7XHJcbiAgICBpZiAob3B0cy5wYXRoKSBzICs9IGA7IFBhdGg9JHtvcHRzLnBhdGh9YDtcclxuICAgIGlmIChvcHRzLmRvbWFpbikgcyArPSBgOyBEb21haW49JHtvcHRzLmRvbWFpbn1gO1xyXG4gICAgaWYgKG9wdHMuc2FtZVNpdGUpIHMgKz0gYDsgU2FtZVNpdGU9JHtvcHRzLnNhbWVTaXRlfWA7XHJcbiAgICBpZiAob3B0cy5zZWN1cmUpIHMgKz0gYDsgU2VjdXJlYDtcclxuICAgIGlmIChvcHRzLmV4cGlyZXMpIHMgKz0gYDsgRXhwaXJlcz0ke29wdHMuZXhwaXJlcy50b1VUQ1N0cmluZygpfWA7XHJcbiAgICBpZiAodHlwZW9mIG9wdHNbJ21heC1hZ2UnXSA9PT0gJ251bWJlcicpIHMgKz0gYDsgTWF4LUFnZT0ke29wdHNbJ21heC1hZ2UnXX1gO1xyXG4gICAgdGhpcy5kb2N1bWVudC5jb29raWUgPSBzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb29raWVzRnJvbVJlcXVlc3QoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICBjb25zdCAgY29va2llcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcbiAgICBjb25zdCBjb29raWVIZWFkZXIgPSB0aGlzLnJlcXVlc3Q/LmhlYWRlcnMuZ2V0KCdjb29raWUnKSA/PyAnJztcclxuICAgIGZvciAoY29uc3QgcGFydCBvZiBjb29raWVIZWFkZXIuc3BsaXQoJzsnKSkge1xyXG4gICAgICBjb25zdCBpID0gcGFydC5pbmRleE9mKCc9Jyk7XHJcbiAgICAgIGlmIChpID4gLTEpIHtcclxuICAgICAgICBjb25zdCBrID0gcGFydC5zbGljZSgwLCBpKS50cmltKCk7XHJcbiAgICAgICAgY29uc3QgdiA9IGRlY29kZVVSSUNvbXBvbmVudChwYXJ0LnNsaWNlKGkgKyAxKS50cmltKCkpO1xyXG4gICAgICAgIGNvb2tpZXMuc2V0KGssIHYpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29va2llcztcclxuICB9XHJcbn1cclxuIl19","import { Injectable, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport compare from 'just-compare';\nimport { filter, take } from 'rxjs/operators';\nimport { InternalStore } from '../utils/internal-store-utils';\nimport { ConfigStateService } from './config-state.service';\nimport { AbpLocalStorageService } from './local-storage.service';\nimport { APP_STARTED_WITH_SSR } from '../tokens';\nimport { AbpCookieStorageService } from './cookie-storage.service';\nimport * as i0 from \"@angular/core\";\nexport class SessionStateService {\n constructor() {\n this.configState = inject(ConfigStateService);\n this.localStorageService = inject(AbpLocalStorageService);\n this.appStartedWithSSR = inject(APP_STARTED_WITH_SSR, { optional: true });\n this.cookieStorageService = inject(AbpCookieStorageService);\n this.store = new InternalStore({});\n this.document = inject(DOCUMENT);\n this.updateLocalStorage = () => {\n if (this.appStartedWithSSR) {\n this.cookieStorageService.setItem('abpSession', JSON.stringify(this.store.state));\n }\n else {\n this.localStorageService.setItem('abpSession', JSON.stringify(this.store.state));\n }\n };\n this.init();\n this.setInitialLanguage();\n }\n init() {\n const storageService = this.appStartedWithSSR ? this.cookieStorageService : this.localStorageService;\n const session = storageService.getItem('abpSession');\n if (session) {\n this.store.set(JSON.parse(session));\n }\n this.store.sliceUpdate(state => state).subscribe(this.updateLocalStorage);\n }\n setInitialLanguage() {\n const appLanguage = this.getLanguage();\n this.configState\n .getDeep$('localization.currentCulture.cultureName')\n .pipe(filter(cultureName => !!cultureName), take(1))\n .subscribe(lang => {\n if (lang.includes(';')) {\n lang = lang.split(';')[0];\n }\n this.setLanguage(lang);\n });\n }\n onLanguageChange$() {\n return this.store.sliceUpdate(state => state.language);\n }\n onTenantChange$() {\n return this.store.sliceUpdate(state => state.tenant);\n }\n getLanguage() {\n return this.store.state.language;\n }\n getLanguage$() {\n return this.store.sliceState(state => state.language);\n }\n getTenant() {\n return this.store.state.tenant;\n }\n getTenant$() {\n return this.store.sliceState(state => state.tenant);\n }\n setTenant(tenant) {\n if (compare(tenant, this.store.state.tenant))\n return;\n this.store.set({ ...this.store.state, tenant });\n }\n setLanguage(language) {\n const currentLanguage = this.store.state.language;\n if (language !== currentLanguage) {\n this.store.patch({ language });\n }\n const currentAttribute = this.document.documentElement.getAttribute('lang');\n if (language !== currentAttribute) {\n this.document.documentElement.setAttribute('lang', language);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: SessionStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: SessionStateService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: SessionStateService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3Nlc3Npb24tc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFLbkUsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUI7UUFoQlEsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6Qyx3QkFBbUIsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNyRCxzQkFBaUIsR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRSx5QkFBb0IsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUU5QyxVQUFLLEdBQUcsSUFBSSxhQUFhLENBQUMsRUFBbUIsQ0FBQyxDQUFDO1FBQzdDLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7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RCxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQStCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPO1FBRXJELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxXQUFXLENBQUMsUUFBZ0I7UUFDMUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBRWxELElBQUksUUFBUSxLQUFLLGVBQWUsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUUsSUFBSSxRQUFRLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDOzhHQTFGVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IGNvbXBhcmUgZnJvbSAnanVzdC1jb21wYXJlJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uIH0gZnJvbSAnLi4vbW9kZWxzL3Nlc3Npb24nO1xyXG5pbXBvcnQgeyBDdXJyZW50VGVuYW50RHRvIH0gZnJvbSAnLi4vcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9tdWx0aS10ZW5hbmN5L21vZGVscyc7XHJcbmltcG9ydCB7IEludGVybmFsU3RvcmUgfSBmcm9tICcuLi91dGlscy9pbnRlcm5hbC1zdG9yZS11dGlscyc7XHJcbmltcG9ydCB7IENvbmZpZ1N0YXRlU2VydmljZSB9IGZyb20gJy4vY29uZmlnLXN0YXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBYnBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBUFBfU1RBUlRFRF9XSVRIX1NTUiB9IGZyb20gJy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IEFicENvb2tpZVN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9jb29raWUtc3RvcmFnZS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZXNzaW9uU3RhdGVTZXJ2aWNlIHtcclxuICBwcml2YXRlIGNvbmZpZ1N0YXRlID0gaW5qZWN0KENvbmZpZ1N0YXRlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBsb2NhbFN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KEFicExvY2FsU3RvcmFnZVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgYXBwU3RhcnRlZFdpdGhTU1IgPSBpbmplY3QoQVBQX1NUQVJURURfV0lUSF9TU1IsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgcHJpdmF0ZSBjb29raWVTdG9yYWdlU2VydmljZSA9IGluamVjdChBYnBDb29raWVTdG9yYWdlU2VydmljZSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBuZXcgSW50ZXJuYWxTdG9yZSh7fSBhcyBTZXNzaW9uLlN0YXRlKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG5cclxuICBwcml2YXRlIHVwZGF0ZUxvY2FsU3RvcmFnZSA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLmFwcFN0YXJ0ZWRXaXRoU1NSKSB7XHJcbiAgICAgIHRoaXMuY29va2llU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgnYWJwU2Vzc2lvbicsIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RvcmUuc3RhdGUpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5zZXRJdGVtKCdhYnBTZXNzaW9uJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zdG9yZS5zdGF0ZSkpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxMYW5ndWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0KCkge1xyXG4gICAgY29uc3Qgc3RvcmFnZVNlcnZpY2UgPSB0aGlzLmFwcFN0YXJ0ZWRXaXRoU1NSID8gdGhpcy5jb29raWVTdG9yYWdlU2VydmljZSA6IHRoaXMubG9jYWxTdG9yYWdlU2VydmljZTtcclxuICAgIGNvbnN0IHNlc3Npb24gPSBzdG9yYWdlU2VydmljZS5nZXRJdGVtKCdhYnBTZXNzaW9uJyk7XHJcbiAgICBpZiAoc2Vzc2lvbikge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldChKU09OLnBhcnNlKHNlc3Npb24pKTtcclxuICAgIH1cclxuICAgIHRoaXMuc3RvcmUuc2xpY2VVcGRhdGUoc3RhdGUgPT4gc3RhdGUpLnN1YnNjcmliZSh0aGlzLnVwZGF0ZUxvY2FsU3RvcmFnZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEluaXRpYWxMYW5ndWFnZSgpIHtcclxuICAgIGNvbnN0IGFwcExhbmd1YWdlID0gdGhpcy5nZXRMYW5ndWFnZSgpO1xyXG5cclxuICAgIHRoaXMuY29uZmlnU3RhdGVcclxuICAgICAgLmdldERlZXAkKCdsb2NhbGl6YXRpb24uY3VycmVudEN1bHR1cmUuY3VsdHVyZU5hbWUnKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoY3VsdHVyZU5hbWUgPT4gISFjdWx0dXJlTmFtZSksXHJcbiAgICAgICAgdGFrZSgxKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKGxhbmcgPT4ge1xyXG4gICAgICAgIGlmIChsYW5nLmluY2x1ZGVzKCc7JykpIHtcclxuICAgICAgICAgIGxhbmcgPSBsYW5nLnNwbGl0KCc7JylbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNldExhbmd1YWdlKGxhbmcpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uTGFuZ3VhZ2VDaGFuZ2UkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VVcGRhdGUoc3RhdGUgPT4gc3RhdGUubGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgb25UZW5hbnRDaGFuZ2UkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VVcGRhdGUoc3RhdGUgPT4gc3RhdGUudGVuYW50KTtcclxuICB9XHJcblxyXG4gIGdldExhbmd1YWdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc3RhdGUubGFuZ3VhZ2U7XHJcbiAgfVxyXG5cclxuICBnZXRMYW5ndWFnZSQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKHN0YXRlID0+IHN0YXRlLmxhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIGdldFRlbmFudCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlLnRlbmFudDtcclxuICB9XHJcblxyXG4gIGdldFRlbmFudCQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKHN0YXRlID0+IHN0YXRlLnRlbmFudCk7XHJcbiAgfVxyXG5cclxuICBzZXRUZW5hbnQodGVuYW50OiBDdXJyZW50VGVuYW50RHRvIHwgbnVsbCkge1xyXG4gICAgaWYgKGNvbXBhcmUodGVuYW50LCB0aGlzLnN0b3JlLnN0YXRlLnRlbmFudCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnN0b3JlLnNldCh7IC4uLnRoaXMuc3RvcmUuc3RhdGUsIHRlbmFudCB9KTtcclxuICB9XHJcblxyXG4gIHNldExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRMYW5ndWFnZSA9IHRoaXMuc3RvcmUuc3RhdGUubGFuZ3VhZ2U7XHJcblxyXG4gICAgaWYgKGxhbmd1YWdlICE9PSBjdXJyZW50TGFuZ3VhZ2UpIHtcclxuICAgICAgdGhpcy5zdG9yZS5wYXRjaCh7IGxhbmd1YWdlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRBdHRyaWJ1dGUgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2xhbmcnKTtcclxuICAgIGlmIChsYW5ndWFnZSAhPT0gY3VycmVudEF0dHJpYnV0ZSkge1xyXG4gICAgICB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2xhbmcnLCBsYW5ndWFnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { RestService } from '../../../../services';\nimport { Injectable, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AbpTenantService {\n constructor() {\n this.restService = inject(RestService);\n this.apiName = 'abp';\n this.findTenantById = (id, config) => this.restService.request({\n method: 'GET',\n url: `/api/abp/multi-tenancy/tenants/by-id/${id}`,\n }, { apiName: this.apiName, ...config });\n this.findTenantByName = (name, config) => this.restService.request({\n method: 'GET',\n url: `/api/abp/multi-tenancy/tenants/by-name/${name}`,\n }, { apiName: this.apiName, ...config });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpTenantService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpTenantService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpTenantService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLXRlbmFudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Byb3h5L3BhZ2VzL2FicC9tdWx0aS10ZW5hbmN5L2FicC10ZW5hbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTW5ELE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFJVSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBR2hCLG1CQUFjLEdBQUcsQ0FBQyxFQUFVLEVBQUUsTUFBNkIsRUFBRSxFQUFFLENBQzdELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUEyQjtZQUNqRCxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSx3Q0FBd0MsRUFBRSxFQUFFO1NBQ2xELEVBQ0QsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFHdkMscUJBQWdCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsTUFBNkIsRUFBRSxFQUFFLENBQ2pFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUEyQjtZQUNqRCxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSwwQ0FBMEMsSUFBSSxFQUFFO1NBQ3RELEVBQ0QsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDeEM7OEdBcEJZLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBSZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHsgRmluZFRlbmFudFJlc3VsdER0byB9IGZyb20gJy4uLy4uLy4uL3ZvbG8vYWJwL2FzcC1uZXQtY29yZS9tdmMvbXVsdGktdGVuYW5jeS9tb2RlbHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFicFRlbmFudFNlcnZpY2Uge1xuICBwcml2YXRlIHJlc3RTZXJ2aWNlID0gaW5qZWN0KFJlc3RTZXJ2aWNlKTtcblxyXG4gIGFwaU5hbWUgPSAnYWJwJztcclxuICBcclxuXHJcbiAgZmluZFRlbmFudEJ5SWQgPSAoaWQ6IHN0cmluZywgY29uZmlnPzogUGFydGlhbDxSZXN0LkNvbmZpZz4pID0+XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnJlcXVlc3Q8YW55LCBGaW5kVGVuYW50UmVzdWx0RHRvPih7XHJcbiAgICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICAgIHVybDogYC9hcGkvYWJwL211bHRpLXRlbmFuY3kvdGVuYW50cy9ieS1pZC8ke2lkfWAsXHJcbiAgICB9LFxyXG4gICAgeyBhcGlOYW1lOiB0aGlzLmFwaU5hbWUsLi4uY29uZmlnIH0pO1xyXG4gIFxyXG5cclxuICBmaW5kVGVuYW50QnlOYW1lID0gKG5hbWU6IHN0cmluZywgY29uZmlnPzogUGFydGlhbDxSZXN0LkNvbmZpZz4pID0+XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnJlcXVlc3Q8YW55LCBGaW5kVGVuYW50UmVzdWx0RHRvPih7XHJcbiAgICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICAgIHVybDogYC9hcGkvYWJwL211bHRpLXRlbmFuY3kvdGVuYW50cy9ieS1uYW1lLyR7bmFtZX1gLFxyXG4gICAgfSxcclxuICAgIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lLC4uLmNvbmZpZyB9KTtcclxufVxyXG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { map, switchMap } from 'rxjs/operators';\nimport { AbpTenantService } from '../proxy/pages/abp/multi-tenancy';\nimport { TENANT_KEY } from '../tokens/tenant-key.token';\nimport { ConfigStateService } from './config-state.service';\nimport { SessionStateService } from './session-state.service';\nimport * as i0 from \"@angular/core\";\nexport class MultiTenancyService {\n constructor() {\n this.sessionState = inject(SessionStateService);\n this.tenantService = inject(AbpTenantService);\n this.configStateService = inject(ConfigStateService);\n this.tenantKey = inject(TENANT_KEY);\n this.domainTenant = null;\n this.isTenantBoxVisible = true;\n this.apiName = 'abp';\n this.setTenantToState = (tenant) => {\n this.sessionState.setTenant({ id: tenant.tenantId, name: tenant.name, isAvailable: true });\n return this.configStateService.refreshAppState().pipe(map(_ => tenant));\n };\n }\n setTenantByName(tenantName) {\n return this.tenantService\n .findTenantByName(tenantName)\n .pipe(switchMap(this.setTenantToState));\n }\n setTenantById(tenantId) {\n return this.tenantService\n .findTenantById(tenantId)\n .pipe(switchMap(this.setTenantToState));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: MultiTenancyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: MultiTenancyService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: MultiTenancyService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdGVuYW5jeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL211bHRpLXRlbmFuY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBS3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFHOUQsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVVLGlCQUFZLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0Msa0JBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6Qyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4RCxjQUFTLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRS9CLGlCQUFZLEdBQTRCLElBQUksQ0FBQztRQUU3Qyx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFFMUIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVSLHFCQUFnQixHQUFHLENBQUMsTUFBMkIsRUFBRSxFQUFFO1lBQ3pELElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDM0YsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDO0tBYUg7SUFYQyxlQUFlLENBQUMsVUFBa0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsYUFBYTthQUN0QixnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7YUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxhQUFhLENBQUMsUUFBZ0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsYUFBYTthQUN0QixjQUFjLENBQUMsUUFBUSxDQUFDO2FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDOzhHQTNCVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUROLE1BQU07OzJGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBYnBUZW5hbnRTZXJ2aWNlIH0gZnJvbSAnLi4vcHJveHkvcGFnZXMvYWJwL211bHRpLXRlbmFuY3knO1xyXG5pbXBvcnQge1xyXG4gIEN1cnJlbnRUZW5hbnREdG8sXHJcbiAgRmluZFRlbmFudFJlc3VsdER0byxcclxufSBmcm9tICcuLi9wcm94eS92b2xvL2FicC9hc3AtbmV0LWNvcmUvbXZjL211bHRpLXRlbmFuY3kvbW9kZWxzJztcclxuaW1wb3J0IHsgVEVOQU5UX0tFWSB9IGZyb20gJy4uL3Rva2Vucy90ZW5hbnQta2V5LnRva2VuJztcclxuaW1wb3J0IHsgQ29uZmlnU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWctc3RhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TdGF0ZVNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24tc3RhdGUuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTXVsdGlUZW5hbmN5U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBzZXNzaW9uU3RhdGUgPSBpbmplY3QoU2Vzc2lvblN0YXRlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSB0ZW5hbnRTZXJ2aWNlID0gaW5qZWN0KEFicFRlbmFudFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgY29uZmlnU3RhdGVTZXJ2aWNlID0gaW5qZWN0KENvbmZpZ1N0YXRlU2VydmljZSk7XHJcbiAgdGVuYW50S2V5ID0gaW5qZWN0KFRFTkFOVF9LRVkpO1xyXG5cclxuICBkb21haW5UZW5hbnQ6IEN1cnJlbnRUZW5hbnREdG8gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgaXNUZW5hbnRCb3hWaXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgYXBpTmFtZSA9ICdhYnAnO1xyXG5cclxuICBwcml2YXRlIHNldFRlbmFudFRvU3RhdGUgPSAodGVuYW50OiBGaW5kVGVuYW50UmVzdWx0RHRvKSA9PiB7XHJcbiAgICB0aGlzLnNlc3Npb25TdGF0ZS5zZXRUZW5hbnQoeyBpZDogdGVuYW50LnRlbmFudElkLCBuYW1lOiB0ZW5hbnQubmFtZSwgaXNBdmFpbGFibGU6IHRydWUgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdGF0ZVNlcnZpY2UucmVmcmVzaEFwcFN0YXRlKCkucGlwZShtYXAoXyA9PiB0ZW5hbnQpKTtcclxuICB9O1xyXG5cclxuICBzZXRUZW5hbnRCeU5hbWUodGVuYW50TmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW5hbnRTZXJ2aWNlXHJcbiAgICAgIC5maW5kVGVuYW50QnlOYW1lKHRlbmFudE5hbWUpXHJcbiAgICAgIC5waXBlKHN3aXRjaE1hcCh0aGlzLnNldFRlbmFudFRvU3RhdGUpKTtcclxuICB9XHJcblxyXG4gIHNldFRlbmFudEJ5SWQodGVuYW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMudGVuYW50U2VydmljZVxyXG4gICAgICAuZmluZFRlbmFudEJ5SWQodGVuYW50SWQpXHJcbiAgICAgIC5waXBlKHN3aXRjaE1hcCh0aGlzLnNldFRlbmFudFRvU3RhdGUpKTtcclxuICB9XHJcbn1cclxuIl19","import { PLATFORM_ID } from '@angular/core';\nimport clone from 'just-clone';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { EnvironmentService } from '../services/environment.service';\nimport { MultiTenancyService } from '../services/multi-tenancy.service';\nimport { createTokenParser } from './string-utils';\nimport { firstValueFrom } from 'rxjs';\nimport { TENANT_NOT_FOUND_BY_NAME } from '../tokens/tenant-not-found-by-name';\nimport { HttpErrorResponse } from '@angular/common/http';\nconst tenancyPlaceholder = '{0}';\nfunction getCurrentTenancyName(appBaseUrl, injector) {\n const platformId = injector.get(PLATFORM_ID);\n const document = injector.get(DOCUMENT);\n if (appBaseUrl.charAt(appBaseUrl.length - 1) !== '/')\n appBaseUrl += '/';\n const parseTokens = createTokenParser(appBaseUrl);\n const token = tenancyPlaceholder.replace(/[}{]/g, '');\n const tokenValue = isPlatformBrowser(platformId)\n ? parseTokens(document.defaultView?.location.href)[token]?.[0]\n : undefined;\n return tokenValue;\n}\nexport function getCurrentTenancyNameFromUrl(tenantKey, injector) {\n const platformId = injector.get(PLATFORM_ID);\n const document = injector.get(DOCUMENT);\n if (!isPlatformBrowser(platformId)) {\n return null;\n }\n const search = document.defaultView?.location.search;\n const urlParams = new URLSearchParams(search);\n return urlParams.get(tenantKey);\n}\nexport async function parseTenantFromUrl(injector) {\n const environmentService = injector.get(EnvironmentService);\n const multiTenancyService = injector.get(MultiTenancyService);\n const tenantNotFoundHandler = injector.get(TENANT_NOT_FOUND_BY_NAME, null);\n const baseUrl = environmentService.getEnvironment()?.application?.baseUrl || '';\n const tenancyName = getCurrentTenancyName(baseUrl, injector);\n const hideTenantBox = () => {\n multiTenancyService.isTenantBoxVisible = false;\n };\n const setDomainTenant = (tenant) => {\n multiTenancyService.domainTenant = {\n id: tenant.tenantId,\n name: tenant.name,\n isAvailable: true,\n };\n };\n const setEnvironmentWithDomainTenant = (tenant) => {\n hideTenantBox();\n setDomainTenant(tenant);\n };\n if (tenancyName) {\n /**\n * We have to replace tenant name within the urls from environment,\n * because the code below will make a http request to find information about the domain tenant.\n * Before this request takes place, we need to replace placeholders aka \"{0}\".\n */\n replaceTenantNameWithinEnvironment(injector, tenancyName);\n const tenant$ = multiTenancyService.setTenantByName(tenancyName);\n try {\n const result = await firstValueFrom(tenant$);\n setEnvironmentWithDomainTenant(result);\n return Promise.resolve(result);\n }\n catch (httpError) {\n if (httpError instanceof HttpErrorResponse &&\n httpError.status === 404 &&\n tenantNotFoundHandler) {\n tenantNotFoundHandler(httpError);\n }\n return Promise.reject();\n }\n }\n /**\n * If there is no tenant, we still have to clean up {0}. from baseUrl to avoid incorrect http requests.\n */\n replaceTenantNameWithinEnvironment(injector, '', tenancyPlaceholder + '.');\n const tenantIdFromQueryParams = getCurrentTenancyNameFromUrl(multiTenancyService.tenantKey, injector);\n if (tenantIdFromQueryParams) {\n const tenantById$ = multiTenancyService.setTenantById(tenantIdFromQueryParams);\n return firstValueFrom(tenantById$);\n }\n return Promise.resolve();\n}\nfunction replaceTenantNameWithinEnvironment(injector, tenancyName, placeholder = tenancyPlaceholder) {\n const environmentService = injector.get(EnvironmentService);\n const environment = clone(environmentService.getEnvironment());\n if (environment.application.baseUrl) {\n environment.application.baseUrl = environment.application.baseUrl.replace(placeholder, tenancyName);\n }\n if (environment.oAuthConfig?.redirectUri) {\n environment.oAuthConfig.redirectUri = environment.oAuthConfig.redirectUri.replace(placeholder, tenancyName);\n }\n if (!environment.oAuthConfig) {\n environment.oAuthConfig = {};\n }\n environment.oAuthConfig.issuer = (environment.oAuthConfig.issuer || '').replace(placeholder, tenancyName);\n Object.keys(environment.apis).forEach(api => {\n Object.keys(environment.apis[api]).forEach(key => {\n environment.apis[api][key] = (environment.apis[api][key] || '').replace(placeholder, tenancyName);\n });\n });\n return environmentService.setState(environment);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdGVuYW5jeS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi91dGlscy9tdWx0aS10ZW5hbmN5LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBWSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0FBRWpDLFNBQVMscUJBQXFCLENBQUMsVUFBa0IsRUFBRSxRQUFrQjtJQUNuRSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRztRQUFFLFVBQVUsSUFBSSxHQUFHLENBQUM7SUFFeEUsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEQsTUFBTSxL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LENBQy9FLFdBQVcsRUFDWCxXQUFXLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdCLFdBQVcsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFDRCxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FDN0UsV0FBVyxFQUNYLFdBQVcsQ0FDWixDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMvQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQ3JFLFdBQVcsRUFDWCxXQUFXLENBQ1osQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBjbG9uZSBmcm9tICdqdXN0LWNsb25lJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9tb2RlbHMvZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgRmluZFRlbmFudFJlc3VsdER0byB9IGZyb20gJy4uL3Byb3h5L3ZvbG8vYWJwL2FzcC1uZXQtY29yZS9tdmMvbXVsdGktdGVuYW5jeS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXVsdGlUZW5hbmN5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL211bHRpLXRlbmFuY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IGNyZWF0ZVRva2VuUGFyc2VyIH0gZnJvbSAnLi9zdHJpbmctdXRpbHMnO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBURU5BTlRfTk9UX0ZPVU5EX0JZX05BTUUgfSBmcm9tICcuLi90b2tlbnMvdGVuYW50LW5vdC1mb3VuZC1ieS1uYW1lJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5jb25zdCB0ZW5hbmN5UGxhY2Vob2xkZXIgPSAnezB9JztcclxuXHJcbmZ1bmN0aW9uIGdldEN1cnJlbnRUZW5hbmN5TmFtZShhcHBCYXNlVXJsOiBzdHJpbmcsIGluamVjdG9yOiBJbmplY3Rvcik6IHN0cmluZyB7XHJcbiAgY29uc3QgcGxhdGZvcm1JZCA9IGluamVjdG9yLmdldChQTEFURk9STV9JRCk7XHJcbiAgY29uc3QgZG9jdW1lbnQgPSBpbmplY3Rvci5nZXQoRE9DVU1FTlQpO1xyXG4gIGlmIChhcHBCYXNlVXJsLmNoYXJBdChhcHBCYXNlVXJsLmxlbmd0aCAtIDEpICE9PSAnLycpIGFwcEJhc2VVcmwgKz0gJy8nO1xyXG5cclxuICBjb25zdCBwYXJzZVRva2VucyA9IGNyZWF0ZVRva2VuUGFyc2VyKGFwcEJhc2VVcmwpO1xyXG4gIGNvbnN0IHRva2VuID0gdGVuYW5jeVBsYWNlaG9sZGVyLnJlcGxhY2UoL1t9e10vZywgJycpO1xyXG4gIGNvbnN0IHRva2VuVmFsdWUgPSBpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKVxyXG4gICAgPyBwYXJzZVRva2Vucyhkb2N1bWVudC5kZWZhdWx0Vmlldz8ubG9jYXRpb24uaHJlZilbdG9rZW5dPy5bMF1cclxuICAgIDogdW5kZWZpbmVkO1xyXG4gIHJldHVybiB0b2tlblZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VycmVudFRlbmFuY3lOYW1lRnJvbVVybCh0ZW5hbnRLZXk6IHN0cmluZywgaW5qZWN0b3IpOiBzdHJpbmcgfCBudWxsIHtcclxuICBjb25zdCBwbGF0Zm9ybUlkID0gaW5qZWN0b3IuZ2V0KFBMQVRGT1JNX0lEKTtcclxuICBjb25zdCBkb2N1bWVudCA9IGluamVjdG9yLmdldChET0NVTUVOVCk7XHJcbiAgaWYgKCFpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSkge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGNvbnN0IHNlYXJjaCA9IGRvY3VtZW50LmRlZmF1bHRWaWV3Py5sb2NhdGlvbi5zZWFyY2g7XHJcbiAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhzZWFyY2gpO1xyXG4gIHJldHVybiB1cmxQYXJhbXMuZ2V0KHRlbmFudEtleSk7XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJzZVRlbmFudEZyb21VcmwoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgY29uc3QgZW52aXJvbm1lbnRTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEVudmlyb25tZW50U2VydmljZSk7XHJcbiAgY29uc3QgbXVsdGlUZW5hbmN5U2VydmljZSA9IGluamVjdG9yLmdldChNdWx0aVRlbmFuY3lTZXJ2aWNlKTtcclxuICBjb25zdCB0ZW5hbnROb3RGb3VuZEhhbmRsZXIgPSBpbmplY3Rvci5nZXQoVEVOQU5UX05PVF9GT1VORF9CWV9OQU1FLCBudWxsKTtcclxuXHJcbiAgY29uc3QgYmFzZVVybCA9IGVudmlyb25tZW50U2VydmljZS5nZXRFbnZpcm9ubWVudCgpPy5hcHBsaWNhdGlvbj8uYmFzZVVybCB8fCAnJztcclxuICBjb25zdCB0ZW5hbmN5TmFtZSA9IGdldEN1cnJlbnRUZW5hbmN5TmFtZShiYXNlVXJsLCBpbmplY3Rvcik7XHJcblxyXG4gIGNvbnN0IGhpZGVUZW5hbnRCb3ggPSAoKSA9PiB7XHJcbiAgICBtdWx0aVRlbmFuY3lTZXJ2aWNlLmlzVGVuYW50Qm94VmlzaWJsZSA9IGZhbHNlO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHNldERvbWFpblRlbmFudCA9ICh0ZW5hbnQ6IEZpbmRUZW5hbnRSZXN1bHREdG8pID0+IHtcclxuICAgIG11bHRpVGVuYW5jeVNlcnZpY2UuZG9tYWluVGVuYW50ID0ge1xyXG4gICAgICBpZDogdGVuYW50LnRlbmFudElkLFxyXG4gICAgICBuYW1lOiB0ZW5hbnQubmFtZSxcclxuICAgICAgaXNBdmFpbGFibGU6IHRydWUsXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHNldEVudmlyb25tZW50V2l0aERvbWFpblRlbmFudCA9ICh0ZW5hbnQ6IEZpbmRUZW5hbnRSZXN1bHREdG8pID0+IHtcclxuICAgIGhpZGVUZW5hbnRCb3goKTtcclxuICAgIHNldERvbWFpblRlbmFudCh0ZW5hbnQpO1xyXG4gIH07XHJcblxyXG4gIGlmICh0ZW5hbmN5TmFtZSkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBXZSBoYXZlIHRvIHJlcGxhY2UgdGVuYW50IG5hbWUgd2l0aGluIHRoZSB1cmxzIGZyb20gZW52aXJvbm1lbnQsXHJcbiAgICAgKiBiZWNhdXNlIHRoZSBjb2RlIGJlbG93IHdpbGwgbWFrZSBhIGh0dHAgcmVxdWVzdCB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkb21haW4gdGVuYW50LlxyXG4gICAgICogQmVmb3JlIHRoaXMgcmVxdWVzdCB0YWtlcyBwbGFjZSwgd2UgbmVlZCB0byByZXBsYWNlIHBsYWNlaG9sZGVycyBha2EgXCJ7MH1cIi5cclxuICAgICAqL1xyXG4gICAgcmVwbGFjZVRlbmFudE5hbWVXaXRoaW5FbnZpcm9ubWVudChpbmplY3RvciwgdGVuYW5jeU5hbWUpO1xyXG5cclxuICAgIGNvbnN0IHRlbmFudCQgPSBtdWx0aVRlbmFuY3lTZXJ2aWNlLnNldFRlbmFudEJ5TmFtZSh0ZW5hbmN5TmFtZSk7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0ZW5hbnQkKTtcclxuICAgICAgc2V0RW52aXJvbm1lbnRXaXRoRG9tYWluVGVuYW50KHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcclxuICAgIH0gY2F0Y2ggKGh0dHBFcnJvcjogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGh0dHBFcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlICYmXHJcbiAgICAgICAgaHR0cEVycm9yLnN0YXR1cyA9PT0gNDA0ICYmXHJcbiAgICAgICAgdGVuYW50Tm90Rm91bmRIYW5kbGVyXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRlbmFudE5vdEZvdW5kSGFuZGxlcihodHRwRXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBJZiB0aGVyZSBpcyBubyB0ZW5hbnQsIHdlIHN0aWxsIGhhdmUgdG8gY2xlYW4gdXAgezB9LiBmcm9tIGJhc2VVcmwgdG8gYXZvaWQgaW5jb3JyZWN0IGh0dHAgcmVxdWVzdHMuXHJcbiAgICovXHJcbiAgcmVwbGFjZVRlbmFudE5hbWVXaXRoaW5FbnZpcm9ubWVudChpbmplY3RvciwgJycsIHRlbmFuY3lQbGFjZWhvbGRlciArICcuJyk7XHJcblxyXG4gIGNvbnN0IHRlbmFudElkRnJvbVF1ZXJ5UGFyYW1zID0gZ2V0Q3VycmVudFRlbmFuY3lOYW1lRnJvbVVybChcclxuICAgIG11bHRpVGVuYW5jeVNlcnZpY2UudGVuYW50S2V5LFxyXG4gICAgaW5qZWN0b3IsXHJcbiAgKTtcclxuICBpZiAodGVuYW50SWRGcm9tUXVlcnlQYXJhbXMpIHtcclxuICAgIGNvbnN0IHRlbmFudEJ5SWQkID0gbXVsdGlUZW5hbmN5U2VydmljZS5zZXRUZW5hbnRCeUlkKHRlbmFudElkRnJvbVF1ZXJ5UGFyYW1zKTtcclxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0ZW5hbnRCeUlkJCk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlcGxhY2VUZW5hbnROYW1lV2l0aGluRW52aXJvbm1lbnQoXHJcbiAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gIHRlbmFuY3lOYW1lOiBzdHJpbmcsXHJcbiAgcGxhY2Vob2xkZXIgPSB0ZW5hbmN5UGxhY2Vob2xkZXIsXHJcbikge1xyXG4gIGNvbnN0IGVudmlyb25tZW50U2VydmljZSA9IGluamVjdG9yLmdldChFbnZpcm9ubWVudFNlcnZpY2UpO1xyXG5cclxuICBjb25zdCBlbnZpcm9ubWVudCA9IGNsb25lKGVudmlyb25tZW50U2VydmljZS5nZXRFbnZpcm9ubWVudCgpKSBhcyBFbnZpcm9ubWVudDtcclxuXHJcbiAgaWYgKGVudmlyb25tZW50LmFwcGxpY2F0aW9uLmJhc2VVcmwpIHtcclxuICAgIGVudmlyb25tZW50LmFwcGxpY2F0aW9uLmJhc2VVcmwgPSBlbnZpcm9ubWVudC5hcHBsaWNhdGlvbi5iYXNlVXJsLnJlcGxhY2UoXHJcbiAgICAgIHBsYWNlaG9sZGVyLFxyXG4gICAgICB0ZW5hbmN5TmFtZSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoZW52aXJvbm1lbnQub0F1dGhDb25maWc/LnJlZGlyZWN0VXJpKSB7XHJcbiAgICBlbnZpcm9ubWVudC5vQXV0aENvbmZpZy5yZWRpcmVjdFVyaSA9IGVudmlyb25tZW50Lm9BdXRoQ29uZmlnLnJlZGlyZWN0VXJpLnJlcGxhY2UoXHJcbiAgICAgIHBsYWNlaG9sZGVyLFxyXG4gICAgICB0ZW5hbmN5TmFtZSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoIWVudmlyb25tZW50Lm9BdXRoQ29uZmlnKSB7XHJcbiAgICBlbnZpcm9ubWVudC5vQXV0aENvbmZpZyA9IHt9O1xyXG4gIH1cclxuICBlbnZpcm9ubWVudC5vQXV0aENvbmZpZy5pc3N1ZXIgPSAoZW52aXJvbm1lbnQub0F1dGhDb25maWcuaXNzdWVyIHx8ICcnKS5yZXBsYWNlKFxyXG4gICAgcGxhY2Vob2xkZXIsXHJcbiAgICB0ZW5hbmN5TmFtZSxcclxuICApO1xyXG5cclxuICBPYmplY3Qua2V5cyhlbnZpcm9ubWVudC5hcGlzKS5mb3JFYWNoKGFwaSA9PiB7XHJcbiAgICBPYmplY3Qua2V5cyhlbnZpcm9ubWVudC5hcGlzW2FwaV0pLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgZW52aXJvbm1lbnQuYXBpc1thcGldW2tleV0gPSAoZW52aXJvbm1lbnQuYXBpc1thcGldW2tleV0gfHwgJycpLnJlcGxhY2UoXHJcbiAgICAgICAgcGxhY2Vob2xkZXIsXHJcbiAgICAgICAgdGVuYW5jeU5hbWUsXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIGVudmlyb25tZW50U2VydmljZS5zZXRTdGF0ZShlbnZpcm9ubWVudCk7XHJcbn1cclxuIl19","import { registerLocaleData } from '@angular/common';\nimport { inject, Injector } from '@angular/core';\nimport { tap, catchError } from 'rxjs/operators';\nimport { firstValueFrom, lastValueFrom, of, throwError, timeout } from 'rxjs';\nimport { ConfigStateService } from '../services/config-state.service';\nimport { EnvironmentService } from '../services/environment.service';\nimport { SessionStateService } from '../services/session-state.service';\nimport { CORE_OPTIONS } from '../tokens/options.token';\nimport { APP_INIT_ERROR_HANDLERS } from '../tokens/app-config.token';\nimport { CHECK_AUTHENTICATION_STATE_FN_KEY } from '../tokens/check-authentication-state';\nimport { APP_STARTED_WITH_SSR } from '../tokens/ssr-state.token';\nimport { getRemoteEnv } from './environment-utils';\nimport { parseTenantFromUrl } from './multi-tenancy-utils';\nimport { AuthService } from '../abstracts';\nimport { noop } from './common-utils';\nexport async function getInitialData() {\n const injector = inject(Injector);\n const environmentService = injector.get(EnvironmentService);\n const configState = injector.get(ConfigStateService);\n const options = injector.get(CORE_OPTIONS);\n const appStartedWithSSR = injector.get(APP_STARTED_WITH_SSR);\n environmentService.setState(options.environment);\n await getRemoteEnv(injector, options.environment);\n await parseTenantFromUrl(injector);\n const authService = injector.get(AuthService, undefined, { optional: true });\n const checkAuthenticationState = injector.get(CHECK_AUTHENTICATION_STATE_FN_KEY, noop, {\n optional: true,\n });\n if (!options.skipInitAuthService && authService) {\n await authService.init();\n }\n if (options.skipGetAppConfiguration)\n return;\n const result$ = configState.refreshAppState().pipe(tap(() => checkAuthenticationState(injector)), tap(() => {\n const currentTenant = configState.getOne('currentTenant');\n injector.get(SessionStateService).setTenant(currentTenant);\n }), catchError(error => {\n const appInitErrorHandlers = injector.get(APP_INIT_ERROR_HANDLERS, null);\n if (appInitErrorHandlers && appInitErrorHandlers.length) {\n appInitErrorHandlers.forEach(func => func(error));\n }\n return throwError(() => error);\n }));\n if (appStartedWithSSR) {\n await firstValueFrom(result$.pipe(timeout(0), catchError(() => of(null))));\n }\n else {\n await lastValueFrom(result$);\n }\n await localeInitializer(injector);\n}\nexport function localeInitializer(injector) {\n const currentInjector = injector || inject(Injector);\n const sessionState = currentInjector.get(SessionStateService);\n const { registerLocaleFn } = currentInjector.get(CORE_OPTIONS);\n const lang = sessionState.getLanguage() || 'en';\n return new Promise((resolve, reject) => {\n registerLocaleFn(lang).then(module => {\n if (module?.default)\n registerLocaleData(module.default);\n return resolve('resolved');\n }, reject);\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi91dGlscy9pbml0aWFsLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWM7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R0FBYSxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXpFLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUM7SUFFaEQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkMsSUFBSSxNQUFNLEVBQUUsT0FBTztnQkFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFeEQsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2IsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXJMb2NhbGVEYXRhIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBsYXN0VmFsdWVGcm9tLCBvZiwgdGhyb3dFcnJvciwgdGltZW91dCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBQlAgfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9tb2RlbHMvZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBDdXJyZW50VGVuYW50RHRvIH0gZnJvbSAnLi4vcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9tdWx0aS10ZW5hbmN5L21vZGVscyc7XHJcbmltcG9ydCB7IENvbmZpZ1N0YXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpZy1zdGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZXNzaW9uLXN0YXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDT1JFX09QVElPTlMgfSBmcm9tICcuLi90b2tlbnMvb3B0aW9ucy50b2tlbic7XHJcbmltcG9ydCB7IEFQUF9JTklUX0VSUk9SX0hBTkRMRVJTIH0gZnJvbSAnLi4vdG9rZW5zL2FwcC1jb25maWcudG9rZW4nO1xyXG5pbXBvcnQgeyBDSEVDS19BVVRIRU5USUNBVElPTl9TVEFURV9GTl9LRVkgfSBmcm9tICcuLi90b2tlbnMvY2hlY2stYXV0aGVudGljYXRpb24tc3RhdGUnO1xyXG5pbXBvcnQgeyBBUFBfU1RBUlRFRF9XSVRIX1NTUiB9IGZyb20gJy4uL3Rva2Vucy9zc3Itc3RhdGUudG9rZW4nO1xyXG5pbXBvcnQgeyBnZXRSZW1vdGVFbnYgfSBmcm9tICcuL2Vudmlyb25tZW50LXV0aWxzJztcclxuaW1wb3J0IHsgcGFyc2VUZW5hbnRGcm9tVXJsIH0gZnJvbSAnLi9tdWx0aS10ZW5hbmN5LXV0aWxzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hYnN0cmFjdHMnO1xyXG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi9jb21tb24tdXRpbHMnO1xyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEluaXRpYWxEYXRhKCkge1xyXG4gIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuICBjb25zdCBlbnZpcm9ubWVudFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoRW52aXJvbm1lbnRTZXJ2aWNlKTtcclxuICBjb25zdCBjb25maWdTdGF0ZSA9IGluamVjdG9yLmdldChDb25maWdTdGF0ZVNlcnZpY2UpO1xyXG4gIGNvbnN0IG9wdGlvbnMgPSBpbmplY3Rvci5nZXQoQ09SRV9PUFRJT05TKSBhcyBBQlAuUm9vdDtcclxuICBjb25zdCBhcHBTdGFydGVkV2l0aFNTUiA9IGluamVjdG9yLmdldChBUFBfU1RBUlRFRF9XSVRIX1NTUik7XHJcblxyXG4gIGVudmlyb25tZW50U2VydmljZS5zZXRTdGF0ZShvcHRpb25zLmVudmlyb25tZW50IGFzIEVudmlyb25tZW50KTtcclxuICBhd2FpdCBnZXRSZW1vdGVFbnYoaW5qZWN0b3IsIG9wdGlvbnMuZW52aXJvbm1lbnQpO1xyXG4gIGF3YWl0IHBhcnNlVGVuYW50RnJvbVVybChpbmplY3Rvcik7XHJcbiAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQXV0aFNlcnZpY2UsIHVuZGVmaW5lZCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcclxuICBjb25zdCBjaGVja0F1dGhlbnRpY2F0aW9uU3RhdGUgPSBpbmplY3Rvci5nZXQoQ0hFQ0tfQVVUSEVOVElDQVRJT05fU1RBVEVfRk5fS0VZLCBub29wLCB7XHJcbiAgICBvcHRpb25hbDogdHJ1ZSxcclxuICB9KTtcclxuICBpZiAoIW9wdGlvbnMuc2tpcEluaXRBdXRoU2VydmljZSAmJiBhdXRoU2VydmljZSkge1xyXG4gICAgYXdhaXQgYXV0aFNlcnZpY2UuaW5pdCgpO1xyXG4gIH1cclxuICBpZiAob3B0aW9ucy5za2lwR2V0QXBwQ29uZmlndXJhdGlvbikgcmV0dXJuO1xyXG5cclxuICBjb25zdCByZXN1bHQkID0gY29uZmlnU3RhdGUucmVmcmVzaEFwcFN0YXRlKCkucGlwZShcclxuICAgIHRhcCgoKSA9PiBjaGVja0F1dGhlbnRpY2F0aW9uU3RhdGUoaW5qZWN0b3IpKSxcclxuICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRUZW5hbnQgPSBjb25maWdTdGF0ZS5nZXRPbmUoJ2N1cnJlbnRUZW5hbnQnKSBhcyBDdXJyZW50VGVuYW50RHRvO1xyXG4gICAgICBpbmplY3Rvci5nZXQoU2Vzc2lvblN0YXRlU2VydmljZSkuc2V0VGVuYW50KGN1cnJlbnRUZW5hbnQpO1xyXG4gICAgfSksXHJcbiAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgY29uc3QgYXBwSW5pdEVycm9ySGFuZGxlcnMgPSBpbmplY3Rvci5nZXQoQVBQX0lOSVRfRVJST1JfSEFORExFUlMsIG51bGwpO1xyXG4gICAgICBpZiAoYXBwSW5pdEVycm9ySGFuZGxlcnMgJiYgYXBwSW5pdEVycm9ySGFuZGxlcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgYXBwSW5pdEVycm9ySGFuZGxlcnMuZm9yRWFjaChmdW5jID0+IGZ1bmMoZXJyb3IpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgfSksXHJcbiAgKTtcclxuXHJcbiAgaWYgKGFwcFN0YXJ0ZWRXaXRoU1NSKSB7XHJcbiAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShcclxuICAgICAgcmVzdWx0JC5waXBlKFxyXG4gICAgICAgIHRpbWVvdXQoMCksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSksXHJcbiAgICAgICksXHJcbiAgICApO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBhd2FpdCBsYXN0VmFsdWVGcm9tKHJlc3VsdCQpO1xyXG4gIH1cclxuXHJcbiAgYXdhaXQgbG9jYWxlSW5pdGlhbGl6ZXIoaW5qZWN0b3IpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxlSW5pdGlhbGl6ZXIoaW5qZWN0b3I/OiBJbmplY3Rvcikge1xyXG4gIGNvbnN0IGN1cnJlbnRJbmplY3RvciA9IGluamVjdG9yIHx8IGluamVjdChJbmplY3Rvcik7XHJcbiAgY29uc3Qgc2Vzc2lvblN0YXRlID0gY3VycmVudEluamVjdG9yLmdldChTZXNzaW9uU3RhdGVTZXJ2aWNlKTtcclxuICBjb25zdCB7IHJlZ2lzdGVyTG9jYWxlRm4gfTogQUJQLlJvb3QgPSBjdXJyZW50SW5qZWN0b3IuZ2V0KENPUkVfT1BUSU9OUyk7XHJcblxyXG4gIGNvbnN0IGxhbmcgPSBzZXNzaW9uU3RhdGUuZ2V0TGFuZ3VhZ2UoKSB8fCAnZW4nO1xyXG5cclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgcmVnaXN0ZXJMb2NhbGVGbihsYW5nKS50aGVuKG1vZHVsZSA9PiB7XHJcbiAgICAgIGlmIChtb2R1bGU/LmRlZmF1bHQpIHJlZ2lzdGVyTG9jYWxlRGF0YShtb2R1bGUuZGVmYXVsdCk7XHJcblxyXG4gICAgICByZXR1cm4gcmVzb2x2ZSgncmVzb2x2ZWQnKTtcclxuICAgIH0sIHJlamVjdCk7XHJcbiAgfSk7XHJcbn1cclxuIl19","export class CrossOriginStrategy {\n constructor(crossorigin, integrity) {\n this.crossorigin = crossorigin;\n this.integrity = integrity;\n }\n setCrossOrigin(element) {\n if (this.integrity)\n element.setAttribute('integrity', this.integrity);\n if (this.crossorigin) {\n element.setAttribute('crossorigin', this.crossorigin);\n }\n }\n}\nexport class NoCrossOriginStrategy extends CrossOriginStrategy {\n setCrossOrigin() { }\n}\nexport const CROSS_ORIGIN_STRATEGY = {\n Anonymous(integrity) {\n return new CrossOriginStrategy('anonymous', integrity);\n },\n UseCredentials(integrity) {\n return new CrossOriginStrategy('use-credentials', integrity);\n },\n None() {\n return new NoCrossOriginStrategy(null);\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3Mtb3JpZ2luLnN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3N0cmF0ZWdpZXMvY3Jvc3Mtb3JpZ2luLnN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFDUyxXQUFtRCxFQUNuRCxTQUFrQjtRQURsQixnQkFBVyxHQUFYLFdBQVcsQ0FBd0M7UUFDbkQsY0FBUyxHQUFULFNBQVMsQ0FBUztJQUN4QixDQUFDO0lBRUosY0FBYyxDQUF3QixPQUFVO1FBQzlDLElBQUksSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsbUJBQW1CO0lBQzVELGNBQWMsS0FBSSxDQUFDO0NBQ3BCO0FBRUQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkMsU0FBUyxDQUFDLFNBQWtCO1FBQzFCLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELGNBQWMsQ0FBQyxTQUFrQjtRQUMvQixPQUFPLElBQUksbUJBQW1CLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUNELElBQUk7UUFDRixPQUFPLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ3Jvc3NPcmlnaW5TdHJhdGVneSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY3Jvc3NvcmlnaW46ICdhbm9ueW1vdXMnIHwgJ3VzZS1jcmVkZW50aWFscycgfCBudWxsLFxyXG4gICAgcHVibGljIGludGVncml0eT86IHN0cmluZyxcclxuICApIHt9XHJcblxyXG4gIHNldENyb3NzT3JpZ2luPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oZWxlbWVudDogVCkge1xyXG4gICAgaWYgKHRoaXMuaW50ZWdyaXR5KSBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaW50ZWdyaXR5JywgdGhpcy5pbnRlZ3JpdHkpO1xyXG4gICAgaWYgKHRoaXMuY3Jvc3NvcmlnaW4pIHtcclxuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2Nyb3Nzb3JpZ2luJywgdGhpcy5jcm9zc29yaWdpbik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTm9Dcm9zc09yaWdpblN0cmF0ZWd5IGV4dGVuZHMgQ3Jvc3NPcmlnaW5TdHJhdGVneSB7XHJcbiAgc2V0Q3Jvc3NPcmlnaW4oKSB7fVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQ1JPU1NfT1JJR0lOX1NUUkFURUdZID0ge1xyXG4gIEFub255bW91cyhpbnRlZ3JpdHk/OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBuZXcgQ3Jvc3NPcmlnaW5TdHJhdGVneSgnYW5vbnltb3VzJywgaW50ZWdyaXR5KTtcclxuICB9LFxyXG4gIFVzZUNyZWRlbnRpYWxzKGludGVncml0eT86IHN0cmluZykge1xyXG4gICAgcmV0dXJuIG5ldyBDcm9zc09yaWdpblN0cmF0ZWd5KCd1c2UtY3JlZGVudGlhbHMnLCBpbnRlZ3JpdHkpO1xyXG4gIH0sXHJcbiAgTm9uZSgpIHtcclxuICAgIHJldHVybiBuZXcgTm9Dcm9zc09yaWdpblN0cmF0ZWd5KG51bGwpO1xyXG4gIH0sXHJcbn07XHJcbiJdfQ==","export class DomStrategy {\n constructor(getTarget, position = 'beforeend') {\n this.getTarget = getTarget;\n this.position = position;\n }\n insertElement(element) {\n if (typeof document !== 'undefined') {\n const target = this.getTarget();\n target.insertAdjacentElement(this.position, element);\n }\n }\n}\nexport const DOM_STRATEGY = {\n AfterElement(element) {\n return new DomStrategy(() => element, 'afterend');\n },\n AppendToBody() {\n return new DomStrategy(() => document?.body, 'beforeend');\n },\n AppendToHead() {\n return new DomStrategy(() => document?.head, 'beforeend');\n },\n BeforeElement(element) {\n return new DomStrategy(() => element, 'beforebegin');\n },\n PrependToHead() {\n return new DomStrategy(() => document?.head, 'afterbegin');\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLnN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3N0cmF0ZWdpZXMvZG9tLnN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQ1UsU0FBNEIsRUFDN0IsV0FBMkIsV0FBVztRQURyQyxjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUM3QixhQUFRLEdBQVIsUUFBUSxDQUE4QjtJQUM1QyxDQUFDO0lBRUosYUFBYSxDQUF3QixPQUFVO1FBQzdDLElBQUksT0FBTyxRQUFRLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsWUFBWSxDQUFDLE9BQW9CO1FBQy9CLE9BQU8sSUFBSSxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxhQUFhLENBQUMsT0FBb0I7UUFDaEMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUNELGFBQWE7UUFDWCxPQUFPLElBQUksV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRG9tU3RyYXRlZ3kge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBnZXRUYXJnZXQ6ICgpID0+IEhUTUxFbGVtZW50LFxyXG4gICAgcHVibGljIHBvc2l0aW9uOiBJbnNlcnRQb3NpdGlvbiA9ICdiZWZvcmVlbmQnLFxyXG4gICkge31cclxuXHJcbiAgaW5zZXJ0RWxlbWVudDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KGVsZW1lbnQ6IFQpIHtcclxuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuZ2V0VGFyZ2V0KCk7XHJcbiAgICAgIHRhcmdldC5pbnNlcnRBZGphY2VudEVsZW1lbnQodGhpcy5wb3NpdGlvbiwgZWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgRE9NX1NUUkFURUdZID0ge1xyXG4gIEFmdGVyRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCkge1xyXG4gICAgcmV0dXJuIG5ldyBEb21TdHJhdGVneSgoKSA9PiBlbGVtZW50LCAnYWZ0ZXJlbmQnKTtcclxuICB9LFxyXG4gIEFwcGVuZFRvQm9keSgpIHtcclxuICAgIHJldHVybiBuZXcgRG9tU3RyYXRlZ3koKCkgPT4gZG9jdW1lbnQ/LmJvZHksICdiZWZvcmVlbmQnKTtcclxuICB9LFxyXG4gIEFwcGVuZFRvSGVhZCgpIHtcclxuICAgIHJldHVybiBuZXcgRG9tU3RyYXRlZ3koKCkgPT4gZG9jdW1lbnQ/LmhlYWQsICdiZWZvcmVlbmQnKTtcclxuICB9LFxyXG4gIEJlZm9yZUVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcclxuICAgIHJldHVybiBuZXcgRG9tU3RyYXRlZ3koKCkgPT4gZWxlbWVudCwgJ2JlZm9yZWJlZ2luJyk7XHJcbiAgfSxcclxuICBQcmVwZW5kVG9IZWFkKCkge1xyXG4gICAgcmV0dXJuIG5ldyBEb21TdHJhdGVneSgoKSA9PiBkb2N1bWVudD8uaGVhZCwgJ2FmdGVyYmVnaW4nKTtcclxuICB9LFxyXG59O1xyXG4iXX0=","import { Observable } from 'rxjs';\nimport { CROSS_ORIGIN_STRATEGY } from '../strategies/cross-origin.strategy';\nimport { DOM_STRATEGY } from '../strategies/dom.strategy';\nexport function fromLazyLoad(element, domStrategy = DOM_STRATEGY.AppendToHead(), crossOriginStrategy = CROSS_ORIGIN_STRATEGY.Anonymous()) {\n crossOriginStrategy.setCrossOrigin(element);\n domStrategy.insertElement(element);\n return new Observable((observer) => {\n element.onload = (event) => {\n clearCallbacks(element);\n observer.next(event);\n observer.complete();\n };\n const handleError = createErrorHandler(observer, element);\n element.onerror = handleError;\n element.onabort = handleError;\n element.onemptied = handleError;\n element.onstalled = handleError;\n element.onsuspend = handleError;\n return () => {\n clearCallbacks(element);\n observer.complete();\n };\n });\n}\nfunction createErrorHandler(observer, element) {\n return function (event) {\n clearCallbacks(element);\n element.parentNode?.removeChild(element);\n observer.error(event);\n };\n}\nfunction clearCallbacks(element) {\n element.onload = null;\n element.onerror = null;\n element.onabort = null;\n element.onemptied = null;\n element.onstalled = null;\n element.onsuspend = null;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3V0aWxzL2xhenktbG9hZC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBdUIsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sNEJBQTRCLENBQUM7QUFFdkUsTUFBTSxVQUFVLFlBQVksQ0FDMUIsT0FBNEMsRUFDNUMsY0FBMkIsWUFBWSxDQUFDLFlBQVksRUFBRSxFQUN0RCxzQkFBMkMscUJBQXFCLENBQUMsU0FBUyxFQUFFO0lBRTVFLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxXQUFXLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRW5DLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFxQixFQUFFLEVBQUU7UUFDOUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ2hDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4QixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQVUsQ0FBQyxDQUFDO1lBQzFCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFMUQsT0FBTyxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUM7UUFDOUIsT0FBTyxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUM7UUFDOUIsT0FBTyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFDaEMsT0FBTyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFDaEMsT0FBTyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFFaEMsT0FBTyxHQUFHLEVBQUU7WUFDVixjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQTBCLFFBQXFCLEVBQUUsT0FBb0I7SUFDOUYsT0FBTyxVQUFVLEtBQXFCO1FBQ3BDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QixPQUFPLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxPQUFvQjtJQUMxQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUN0QixPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN2QixPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN2QixPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN6QixPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN6QixPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ1JPU1NfT1JJR0lOX1NUUkFURUdZLCBDcm9zc09yaWdpblN0cmF0ZWd5IH0gZnJvbSAnLi4vc3RyYXRlZ2llcy9jcm9zcy1vcmlnaW4uc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBET01fU1RSQVRFR1ksIERvbVN0cmF0ZWd5IH0gZnJvbSAnLi4vc3RyYXRlZ2llcy9kb20uc3RyYXRlZ3knO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZyb21MYXp5TG9hZDxUIGV4dGVuZHMgRXZlbnQ+KFxyXG4gIGVsZW1lbnQ6IEhUTUxTY3JpcHRFbGVtZW50IHwgSFRNTExpbmtFbGVtZW50LFxyXG4gIGRvbVN0cmF0ZWd5OiBEb21TdHJhdGVneSA9IERPTV9TVFJBVEVHWS5BcHBlbmRUb0hlYWQoKSxcclxuICBjcm9zc09yaWdpblN0cmF0ZWd5OiBDcm9zc09yaWdpblN0cmF0ZWd5ID0gQ1JPU1NfT1JJR0lOX1NUUkFURUdZLkFub255bW91cygpLFxyXG4pOiBPYnNlcnZhYmxlPFQ+IHtcclxuICBjcm9zc09yaWdpblN0cmF0ZWd5LnNldENyb3NzT3JpZ2luKGVsZW1lbnQpO1xyXG4gIGRvbVN0cmF0ZWd5Lmluc2VydEVsZW1lbnQoZWxlbWVudCk7XHJcblxyXG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IE9ic2VydmVyPFQ+KSA9PiB7XHJcbiAgICBlbGVtZW50Lm9ubG9hZCA9IChldmVudDogRXZlbnQpID0+IHtcclxuICAgICAgY2xlYXJDYWxsYmFja3MoZWxlbWVudCk7XHJcbiAgICAgIG9ic2VydmVyLm5leHQoZXZlbnQgYXMgVCk7XHJcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZUVycm9yID0gY3JlYXRlRXJyb3JIYW5kbGVyKG9ic2VydmVyLCBlbGVtZW50KTtcclxuXHJcbiAgICBlbGVtZW50Lm9uZXJyb3IgPSBoYW5kbGVFcnJvcjtcclxuICAgIGVsZW1lbnQub25hYm9ydCA9IGhhbmRsZUVycm9yO1xyXG4gICAgZWxlbWVudC5vbmVtcHRpZWQgPSBoYW5kbGVFcnJvcjtcclxuICAgIGVsZW1lbnQub25zdGFsbGVkID0gaGFuZGxlRXJyb3I7XHJcbiAgICBlbGVtZW50Lm9uc3VzcGVuZCA9IGhhbmRsZUVycm9yO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGNsZWFyQ2FsbGJhY2tzKGVsZW1lbnQpO1xyXG4gICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgfTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlRXJyb3JIYW5kbGVyPFQgZXh0ZW5kcyBFdmVudCA9IEV2ZW50PihvYnNlcnZlcjogT2JzZXJ2ZXI8VD4sIGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uIChldmVudDogRXZlbnQgfCBzdHJpbmcpIHtcclxuICAgIGNsZWFyQ2FsbGJhY2tzKGVsZW1lbnQpO1xyXG4gICAgZWxlbWVudC5wYXJlbnROb2RlPy5yZW1vdmVDaGlsZChlbGVtZW50KTtcclxuICAgIG9ic2VydmVyLmVycm9yKGV2ZW50KTtcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBjbGVhckNhbGxiYWNrcyhlbGVtZW50OiBIVE1MRWxlbWVudCkge1xyXG4gIGVsZW1lbnQub25sb2FkID0gbnVsbDtcclxuICBlbGVtZW50Lm9uZXJyb3IgPSBudWxsO1xyXG4gIGVsZW1lbnQub25hYm9ydCA9IG51bGw7XHJcbiAgZWxlbWVudC5vbmVtcHRpZWQgPSBudWxsO1xyXG4gIGVsZW1lbnQub25zdGFsbGVkID0gbnVsbDtcclxuICBlbGVtZW50Lm9uc3VzcGVuZCA9IG51bGw7XHJcbn1cclxuIl19","export class DefaultQueueManager {\n constructor() {\n this.queue = [];\n this.isRunning = false;\n this.stack = 0;\n this.interval = 0;\n this.stackSize = 100;\n }\n init(interval, stackSize) {\n this.interval = interval;\n this.stackSize = stackSize;\n }\n add(fn) {\n this.queue.push(fn);\n this.run();\n }\n run() {\n if (this.isRunning)\n return;\n this.stack++;\n this.isRunning = true;\n const fn = this.queue.shift();\n if (!fn) {\n this.isRunning = false;\n return;\n }\n fn();\n if (this.stack > this.stackSize) {\n setTimeout(() => {\n this.isRunning = false;\n this.run();\n this.stack = 0;\n }, this.interval);\n }\n else {\n this.isRunning = false;\n this.run();\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdXRpbHMvcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLG1CQUFtQjtJQUFoQztRQUNVLFVBQUssR0FBc0IsRUFBRSxDQUFDO1FBQzlCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixjQUFTLEdBQUcsR0FBRyxDQUFDO0lBcUMxQixDQUFDO0lBbkNRLElBQUksQ0FBQyxRQUFnQixFQUFFLFNBQWlCO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFTSxHQUFHLENBQUMsRUFBYztRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDYixDQUFDO0lBRU8sR0FBRztRQUNULElBQUksSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQzNCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUViLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFOUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFFRCxFQUFFLEVBQUUsQ0FBQztRQUNMLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBRdWV1ZU1hbmFnZXIge1xyXG4gIGFkZChmbjogKCkgPT4gdm9pZCk6IHZvaWQ7XHJcbiAgaW5pdChpbnRlcnZhbDogbnVtYmVyLCBzdGFja1NpemU6IG51bWJlcik6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0UXVldWVNYW5hZ2VyIGltcGxlbWVudHMgUXVldWVNYW5hZ2VyIHtcclxuICBwcml2YXRlIHF1ZXVlOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xyXG4gIHByaXZhdGUgaXNSdW5uaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBzdGFjayA9IDA7XHJcbiAgcHJpdmF0ZSBpbnRlcnZhbCA9IDA7XHJcbiAgcHJpdmF0ZSBzdGFja1NpemUgPSAxMDA7XHJcblxyXG4gIHB1YmxpYyBpbml0KGludGVydmFsOiBudW1iZXIsIHN0YWNrU2l6ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmludGVydmFsID0gaW50ZXJ2YWw7XHJcbiAgICB0aGlzLnN0YWNrU2l6ZSA9IHN0YWNrU2l6ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGQoZm46ICgpID0+IHZvaWQpIHtcclxuICAgIHRoaXMucXVldWUucHVzaChmbik7XHJcbiAgICB0aGlzLnJ1bigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBydW4oKSB7XHJcbiAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHJldHVybjtcclxuICAgIHRoaXMuc3RhY2srKztcclxuXHJcbiAgICB0aGlzLmlzUnVubmluZyA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgZm4gPSB0aGlzLnF1ZXVlLnNoaWZ0KCk7XHJcblxyXG4gICAgaWYgKCFmbikge1xyXG4gICAgICB0aGlzLmlzUnVubmluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZm4oKTtcclxuICAgIGlmICh0aGlzLnN0YWNrID4gdGhpcy5zdGFja1NpemUpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1J1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJ1bigpO1xyXG4gICAgICAgIHRoaXMuc3RhY2sgPSAwO1xyXG4gICAgICB9LCB0aGlzLmludGVydmFsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNSdW5uaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucnVuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { PRIMARY_OUTLET } from \"@angular/router\";\nimport { noop } from './common-utils';\nexport function findRoute(routesService, path) {\n const node = routesService.find(route => route.path === path);\n return node || path === '/'\n ? node\n : findRoute(routesService, path.split('/').slice(0, -1).join('/') || '/');\n}\nexport function getRoutePath(router, url = router.url) {\n const emptyGroup = { segments: [] };\n const primaryGroup = router.parseUrl(url).root.children[PRIMARY_OUTLET];\n return '/' + (primaryGroup || emptyGroup).segments.map(({ path }) => path).join('/');\n}\nexport function reloadRoute(router, ngZone) {\n const { shouldReuseRoute } = router.routeReuseStrategy;\n const setRouteReuse = (reuse) => {\n router.routeReuseStrategy.shouldReuseRoute = reuse;\n };\n setRouteReuse(() => false);\n router.navigated = false;\n ngZone.run(async () => {\n await router.navigateByUrl(router.url).catch(noop);\n setRouteReuse(shouldReuseRoute);\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdXRpbHMvcm91dGUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBdUMsTUFBTSxpQkFBaUIsQ0FBQztBQUd0RixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEMsTUFBTSxVQUFVLFNBQVMsQ0FBQyxhQUE0QixFQUFFLElBQVk7SUFDbEUsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7SUFFOUQsT0FBTyxJQUFJLElBQUksSUFBSSxLQUFLLEdBQUc7UUFDekIsQ0FBQyxDQUFDLElBQUk7UUFDTixDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBYyxFQUFFLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRztJQUMzRCxNQUFNLFVBQVUsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFrQixFQUFxQixDQUFDO0lBQ3ZFLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUV4RSxPQUFPLEdBQUcsR0FBRyxDQUFDLFlBQVksSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQWMsRUFBRSxNQUFjO0lBQ3hELE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztJQUN2RCxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQThCLEVBQUUsRUFBRTtRQUN2RCxNQUFNLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ3JELENBQUMsQ0FBQztJQUVGLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixNQUFNLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUV6QixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ3BCLE1BQU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQUklNQVJZX09VVExFVCwgUm91dGVyLCBVcmxTZWdtZW50LCBVcmxTZWdtZW50R3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEFCUCB9IGZyb20gJy4uL21vZGVscy9jb21tb24nO1xyXG5pbXBvcnQgeyBSb3V0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcm91dGVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi9jb21tb24tdXRpbHMnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJy4vdHJlZS11dGlscyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZmluZFJvdXRlKHJvdXRlc1NlcnZpY2U6IFJvdXRlc1NlcnZpY2UsIHBhdGg6IHN0cmluZyk6IFRyZWVOb2RlPEFCUC5Sb3V0ZT4gfCBudWxsIHtcclxuICBjb25zdCBub2RlID0gcm91dGVzU2VydmljZS5maW5kKHJvdXRlID0+IHJvdXRlLnBhdGggPT09IHBhdGgpO1xyXG5cclxuICByZXR1cm4gbm9kZSB8fCBwYXRoID09PSAnLydcclxuICAgID8gbm9kZVxyXG4gICAgOiBmaW5kUm91dGUocm91dGVzU2VydmljZSwgcGF0aC5zcGxpdCgnLycpLnNsaWNlKDAsIC0xKS5qb2luKCcvJykgfHwgJy8nKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdXRlUGF0aChyb3V0ZXI6IFJvdXRlciwgdXJsID0gcm91dGVyLnVybCkge1xyXG4gIGNvbnN0IGVtcHR5R3JvdXAgPSB7IHNlZ21lbnRzOiBbXSBhcyBVcmxTZWdtZW50W10gfSBhcyBVcmxTZWdtZW50R3JvdXA7XHJcbiAgY29uc3QgcHJpbWFyeUdyb3VwID0gcm91dGVyLnBhcnNlVXJsKHVybCkucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF07XHJcblxyXG4gIHJldHVybiAnLycgKyAocHJpbWFyeUdyb3VwIHx8IGVtcHR5R3JvdXApLnNlZ21lbnRzLm1hcCgoeyBwYXRoIH0pID0+IHBhdGgpLmpvaW4oJy8nKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbG9hZFJvdXRlKHJvdXRlcjogUm91dGVyLCBuZ1pvbmU6IE5nWm9uZSkge1xyXG4gIGNvbnN0IHsgc2hvdWxkUmV1c2VSb3V0ZSB9ID0gcm91dGVyLnJvdXRlUmV1c2VTdHJhdGVneTtcclxuICBjb25zdCBzZXRSb3V0ZVJldXNlID0gKHJldXNlOiB0eXBlb2Ygc2hvdWxkUmV1c2VSb3V0ZSkgPT4ge1xyXG4gICAgcm91dGVyLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRSZXVzZVJvdXRlID0gcmV1c2U7XHJcbiAgfTtcclxuXHJcbiAgc2V0Um91dGVSZXVzZSgoKSA9PiBmYWxzZSk7XHJcbiAgcm91dGVyLm5hdmlnYXRlZCA9IGZhbHNlO1xyXG5cclxuICBuZ1pvbmUucnVuKGFzeW5jICgpID0+IHtcclxuICAgIGF3YWl0IHJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJvdXRlci51cmwpLmNhdGNoKG5vb3ApO1xyXG4gICAgc2V0Um91dGVSZXVzZShzaG91bGRSZXVzZVJvdXRlKTtcclxuICB9KTtcclxufVxyXG4iXX0=","import { isArray } from './common-utils';\n/* eslint-disable @typescript-eslint/ban-types */\nexport class BaseTreeNode {\n constructor(props) {\n this.children = [];\n this.isLeaf = true;\n Object.assign(this, props);\n }\n static create(props) {\n return new BaseTreeNode(props);\n }\n}\nexport function createTreeFromList(list, keySelector, parentKeySelector, valueMapper) {\n const map = createMapFromList(list, keySelector, valueMapper);\n const tree = [];\n list.forEach(row => {\n const id = keySelector(row);\n const parentId = parentKeySelector(row);\n const node = map.get(id);\n if (!node)\n return;\n if (parentId) {\n const parent = map.get(parentId);\n if (!parent)\n return;\n parent.children.push(node);\n parent.isLeaf = false;\n node.parent = parent;\n }\n else {\n tree.push(node);\n }\n });\n return tree;\n}\nexport function createMapFromList(list, keySelector, valueMapper) {\n const map = new Map();\n list.forEach(row => map.set(keySelector(row), valueMapper(row)));\n return map;\n}\nexport function createTreeNodeFilterCreator(key, mapperFn) {\n return (search) => {\n const regex = new RegExp('.*' + search + '.*', 'i');\n return function collectNodes(nodes, matches = []) {\n for (const node of nodes) {\n if (regex.test(mapperFn(node[key])))\n matches.push(node);\n if (node.children.length)\n collectNodes(node.children, matches);\n }\n return matches;\n };\n };\n}\nexport function createGroupMap(list, othersGroupKey) {\n if (!isArray(list) || !list.some(node => Boolean(node.group)))\n return undefined;\n const mapGroup = new Map();\n for (const node of list) {\n const group = node?.group || othersGroupKey;\n if (typeof group !== 'string') {\n throw new Error(`Invalid group: ${group}`);\n }\n const items = mapGroup.get(group) || [];\n items.push(node);\n mapGroup.set(group, items);\n }\n return mapGroup;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi91dGlscy90cmVlLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxpREFBaUQ7QUFDakQsTUFBTSxPQUFPLFlBQVk7SUFLdkIsWUFBWSxLQUFRO1FBSnBCLGFBQVEsR0FBa0IsRUFBRSxDQUFDO1FBQzdCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFJWixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBbUIsS0FBUTtRQUN0QyxPQUFPLElBQUksWUFBWSxDQUFJLEtBQUssQ0FBZ0IsQ0FBQztJQUNuRCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLElBQVMsRUFDVCxXQUFpQyxFQUNqQyxpQkFBcUMsRUFDckMsV0FBMkI7SUFFM0IsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM5RCxNQUFNLElBQUksR0FBdUMsRUFBRSxDQUFDO0lBRXBELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDakIsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFekIsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBRWxCLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU87WUFDbkIsTUFBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkMsTUFBYyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDOUIsSUFBWSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsSUFBUyxFQUNULFdBQWlDLEVBQ2pDLFdBQTJCO0lBSTNCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFjLENBQUM7SUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUN6QyxHQUFZLEVBQ1osUUFBZ0M7SUFFaEMsT0FBTyxDQUFDLE1BQWMsRUFBRSxFQUFFO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLEdBQUcsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXBELE9BQU8sU0FBUyxZQUFZLENBQUMsS0FBb0IsRUFBRSxVQUF5QixFQUFFO1lBQzVFLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFeEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07b0JBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDakUsQ0FBQztZQUVELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUM1QixJQUFtQixFQUNuQixjQUFzQjtJQUV0QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUVoRixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztJQUVsRCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxLQUFLLElBQUksY0FBYyxDQUFDO1FBQzVDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuL2NvbW1vbi11dGlscyc7XHJcblxyXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzICovXHJcbmV4cG9ydCBjbGFzcyBCYXNlVHJlZU5vZGU8VCBleHRlbmRzIG9iamVjdD4ge1xyXG4gIGNoaWxkcmVuOiBUcmVlTm9kZTxUPltdID0gW107XHJcbiAgaXNMZWFmID0gdHJ1ZTtcclxuICBwYXJlbnQ/OiBUcmVlTm9kZTxUPjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvcHM6IFQpIHtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgcHJvcHMpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZTxUIGV4dGVuZHMgb2JqZWN0Pihwcm9wczogVCkge1xyXG4gICAgcmV0dXJuIG5ldyBCYXNlVHJlZU5vZGU8VD4ocHJvcHMpIGFzIFRyZWVOb2RlPFQ+O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyZWVGcm9tTGlzdDxUIGV4dGVuZHMgb2JqZWN0LCBSPihcclxuICBsaXN0OiBUW10sXHJcbiAga2V5U2VsZWN0b3I6IChpdGVtOiBUKSA9PiBOb2RlS2V5LFxyXG4gIHBhcmVudEtleVNlbGVjdG9yOiB0eXBlb2Yga2V5U2VsZWN0b3IsXHJcbiAgdmFsdWVNYXBwZXI6IChpdGVtOiBUKSA9PiBSLFxyXG4pIHtcclxuICBjb25zdCBtYXAgPSBjcmVhdGVNYXBGcm9tTGlzdChsaXN0LCBrZXlTZWxlY3RvciwgdmFsdWVNYXBwZXIpO1xyXG4gIGNvbnN0IHRyZWU6IE5vZGVWYWx1ZTxULCB0eXBlb2YgdmFsdWVNYXBwZXI+W10gPSBbXTtcclxuXHJcbiAgbGlzdC5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgICBjb25zdCBpZCA9IGtleVNlbGVjdG9yKHJvdyk7XHJcbiAgICBjb25zdCBwYXJlbnRJZCA9IHBhcmVudEtleVNlbGVjdG9yKHJvdyk7XHJcbiAgICBjb25zdCBub2RlID0gbWFwLmdldChpZCk7XHJcblxyXG4gICAgaWYgKCFub2RlKSByZXR1cm47XHJcblxyXG4gICAgaWYgKHBhcmVudElkKSB7XHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IG1hcC5nZXQocGFyZW50SWQpO1xyXG4gICAgICBpZiAoIXBhcmVudCkgcmV0dXJuO1xyXG4gICAgICAocGFyZW50IGFzIGFueSkuY2hpbGRyZW4ucHVzaChub2RlKTtcclxuICAgICAgKHBhcmVudCBhcyBhbnkpLmlzTGVhZiA9IGZhbHNlO1xyXG4gICAgICAobm9kZSBhcyBhbnkpLnBhcmVudCA9IHBhcmVudDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRyZWUucHVzaChub2RlKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIHRyZWU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNYXBGcm9tTGlzdDxUIGV4dGVuZHMgb2JqZWN0LCBSPihcclxuICBsaXN0OiBUW10sXHJcbiAga2V5U2VsZWN0b3I6IChpdGVtOiBUKSA9PiBOb2RlS2V5LFxyXG4gIHZhbHVlTWFwcGVyOiAoaXRlbTogVCkgPT4gUixcclxuKSB7XHJcbiAgdHlwZSBLZXkgPSBSZXR1cm5UeXBlPHR5cGVvZiBrZXlTZWxlY3Rvcj47XHJcbiAgdHlwZSBWYWx1ZSA9IE5vZGVWYWx1ZTxULCB0eXBlb2YgdmFsdWVNYXBwZXI+O1xyXG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8S2V5LCBWYWx1ZT4oKTtcclxuICBsaXN0LmZvckVhY2gocm93ID0+IG1hcC5zZXQoa2V5U2VsZWN0b3Iocm93KSwgdmFsdWVNYXBwZXIocm93KSkpO1xyXG4gIHJldHVybiBtYXA7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUcmVlTm9kZUZpbHRlckNyZWF0b3I8VCBleHRlbmRzIG9iamVjdD4oXHJcbiAga2V5OiBrZXlvZiBULFxyXG4gIG1hcHBlckZuOiAodmFsdWU6IGFueSkgPT4gc3RyaW5nLFxyXG4pIHtcclxuICByZXR1cm4gKHNlYXJjaDogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoJy4qJyArIHNlYXJjaCArICcuKicsICdpJyk7XHJcblxyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNvbGxlY3ROb2Rlcyhub2RlczogVHJlZU5vZGU8VD5bXSwgbWF0Y2hlczogVHJlZU5vZGU8VD5bXSA9IFtdKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG4gICAgICAgIGlmIChyZWdleC50ZXN0KG1hcHBlckZuKG5vZGVba2V5XSkpKSBtYXRjaGVzLnB1c2gobm9kZSk7XHJcblxyXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCkgY29sbGVjdE5vZGVzKG5vZGUuY2hpbGRyZW4sIG1hdGNoZXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbWF0Y2hlcztcclxuICAgIH07XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdyb3VwTWFwPFQgZXh0ZW5kcyB7IGdyb3VwPzogc3RyaW5nIH0+KFxyXG4gIGxpc3Q6IFRyZWVOb2RlPFQ+W10sXHJcbiAgb3RoZXJzR3JvdXBLZXk6IHN0cmluZyxcclxuKSB7XHJcbiAgaWYgKCFpc0FycmF5KGxpc3QpIHx8ICFsaXN0LnNvbWUobm9kZSA9PiBCb29sZWFuKG5vZGUuZ3JvdXApKSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3QgbWFwR3JvdXAgPSBuZXcgTWFwPHN0cmluZywgVHJlZU5vZGU8VD5bXT4oKTtcclxuXHJcbiAgZm9yIChjb25zdCBub2RlIG9mIGxpc3QpIHtcclxuICAgIGNvbnN0IGdyb3VwID0gbm9kZT8uZ3JvdXAgfHwgb3RoZXJzR3JvdXBLZXk7XHJcbiAgICBpZiAodHlwZW9mIGdyb3VwICE9PSAnc3RyaW5nJykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZ3JvdXA6ICR7Z3JvdXB9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXRlbXMgPSBtYXBHcm91cC5nZXQoZ3JvdXApIHx8IFtdO1xyXG4gICAgaXRlbXMucHVzaChub2RlKTtcclxuICAgIG1hcEdyb3VwLnNldChncm91cCwgaXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG1hcEdyb3VwO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBUcmVlTm9kZTxUIGV4dGVuZHMgb2JqZWN0PiA9IHtcclxuICBbSyBpbiBrZXlvZiBUXTogVFtLXTtcclxufSAmIHtcclxuICBjaGlsZHJlbjogVHJlZU5vZGU8VD5bXTtcclxuICBpc0xlYWY6IGJvb2xlYW47XHJcbiAgcGFyZW50PzogVHJlZU5vZGU8VD47XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBSb3V0ZUdyb3VwPFQgZXh0ZW5kcyBvYmplY3Q+ID0ge1xyXG4gIHJlYWRvbmx5IGdyb3VwOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgaXRlbXM6IFRyZWVOb2RlPFQ+W107XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBOb2RlS2V5ID0gbnVtYmVyIHwgc3RyaW5nIHwgc3ltYm9sIHwgdW5kZWZpbmVkIHwgbnVsbDtcclxuXHJcbmV4cG9ydCB0eXBlIE5vZGVWYWx1ZTxUIGV4dGVuZHMgb2JqZWN0LCBGIGV4dGVuZHMgKC4uLmFyZ3M6IGFueSkgPT4gYW55PiA9IEYgZXh0ZW5kcyB1bmRlZmluZWRcclxuICA/IFRyZWVOb2RlPFQ+XHJcbiAgOiBSZXR1cm5UeXBlPEY+O1xyXG4iXX0=","export class ServerCookieParser {\n static parse(cookieHeader) {\n const cookies = {};\n if (!cookieHeader)\n return cookies;\n try {\n cookieHeader.split(';').forEach(cookie => {\n const parts = cookie.trim().split('=');\n if (parts.length >= 2) {\n const name = parts[0].trim();\n const value = parts.slice(1).join('=');\n if (name) {\n try {\n cookies[name] = decodeURIComponent(value);\n }\n catch (e) {\n cookies[name] = value;\n }\n }\n }\n });\n }\n catch (error) {\n console.error('Error parsing cookies:', error);\n }\n return cookies;\n }\n static middleware() {\n return (req, res, next) => {\n req.cookies = ServerCookieParser.parse(req.headers.cookie || '');\n next();\n };\n }\n static getCookie(req, name) {\n const cookieHeader = req.headers.cookie;\n if (!cookieHeader)\n return undefined;\n const cookies = ServerCookieParser.parse(cookieHeader);\n return cookies[name];\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWNvb2tpZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi91dGlscy9zZXJ2ZXItY29va2llLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFvQjtRQUMvQixNQUFNLE9BQU8sR0FBOEIsRUFBRSxDQUFDO1FBRTlDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTyxPQUFPLENBQUM7UUFFbEMsSUFBSSxDQUFDO1lBQ0gsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3ZDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDdEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUM3QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFFdkMsSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDVCxJQUFJLENBQUM7NEJBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUM1QyxDQUFDO3dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7NEJBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQzt3QkFDeEIsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVO1FBQ2YsT0FBTyxDQUFDLEdBQVEsRUFBRSxHQUFRLEVBQUUsSUFBUyxFQUFFLEVBQUU7WUFDdkMsR0FBRyxDQUFDLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7WUFDakUsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFRLEVBQUUsSUFBWTtRQUNyQyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRXBDLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU2VydmVyQ29va2llUGFyc2VyIHtcclxuICBzdGF0aWMgcGFyc2UoY29va2llSGVhZGVyOiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcclxuICAgIGNvbnN0IGNvb2tpZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuXHJcbiAgICBpZiAoIWNvb2tpZUhlYWRlcikgcmV0dXJuIGNvb2tpZXM7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29va2llSGVhZGVyLnNwbGl0KCc7JykuZm9yRWFjaChjb29raWUgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBhcnRzID0gY29va2llLnRyaW0oKS5zcGxpdCgnPScpO1xyXG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPj0gMikge1xyXG4gICAgICAgICAgY29uc3QgbmFtZSA9IHBhcnRzWzBdLnRyaW0oKTtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFydHMuc2xpY2UoMSkuam9pbignPScpO1xyXG5cclxuICAgICAgICAgIGlmIChuYW1lKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgY29va2llc1tuYW1lXSA9IGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICBjb29raWVzW25hbWVdID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBjb29raWVzOicsIGVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29va2llcztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBtaWRkbGV3YXJlKCkge1xyXG4gICAgcmV0dXJuIChyZXE6IGFueSwgcmVzOiBhbnksIG5leHQ6IGFueSkgPT4ge1xyXG4gICAgICByZXEuY29va2llcyA9IFNlcnZlckNvb2tpZVBhcnNlci5wYXJzZShyZXEuaGVhZGVycy5jb29raWUgfHwgJycpO1xyXG4gICAgICBuZXh0KCk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldENvb2tpZShyZXE6IGFueSwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IGNvb2tpZUhlYWRlciA9IHJlcS5oZWFkZXJzLmNvb2tpZTtcclxuICAgIGlmICghY29va2llSGVhZGVyKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0IGNvb2tpZXMgPSBTZXJ2ZXJDb29raWVQYXJzZXIucGFyc2UoY29va2llSGVhZGVyKTtcclxuICAgIHJldHVybiBjb29raWVzW25hbWVdO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Injectable } from '@angular/core';\nimport { generateHash } from '../utils';\nimport * as i0 from \"@angular/core\";\nexport class DomInsertionService {\n constructor() {\n this.inserted = new Set();\n }\n insertContent(contentStrategy) {\n const hash = generateHash(contentStrategy.content);\n if (this.inserted.has(hash))\n return;\n const element = contentStrategy.insertElement();\n this.inserted.add(hash);\n return element;\n }\n removeContent(element) {\n if (element.textContent) {\n const hash = generateHash(element.textContent);\n this.inserted.delete(hash);\n element.parentNode?.removeChild(element);\n }\n }\n has(content) {\n const hash = generateHash(content);\n return this.inserted.has(hash);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: DomInsertionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: DomInsertionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: DomInsertionService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLWluc2VydGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL2RvbS1pbnNlcnRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBR3hDLE1BQU0sT0FBTyxtQkFBbUI7SUFEaEM7UUFFbUIsYUFBUSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7S0E0Qi9DO0lBMUJDLGFBQWEsQ0FDWCxlQUFtQztRQUVuQyxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5ELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTztRQUVwQyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUE2QztRQUN6RCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQsR0FBRyxDQUFDLE9BQWU7UUFDakIsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5DLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQzs4R0E1QlUsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FETixNQUFNOzsyRkFDbkIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udGVudFN0cmF0ZWd5IH0gZnJvbSAnLi4vc3RyYXRlZ2llcy9jb250ZW50LnN0cmF0ZWd5JztcclxuaW1wb3J0IHsgZ2VuZXJhdGVIYXNoIH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIERvbUluc2VydGlvblNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5zZXJ0ZWQgPSBuZXcgU2V0PG51bWJlcj4oKTtcclxuXHJcbiAgaW5zZXJ0Q29udGVudDxUIGV4dGVuZHMgSFRNTFNjcmlwdEVsZW1lbnQgfCBIVE1MU3R5bGVFbGVtZW50PihcclxuICAgIGNvbnRlbnRTdHJhdGVneTogQ29udGVudFN0cmF0ZWd5PFQ+LFxyXG4gICk6IFQgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgaGFzaCA9IGdlbmVyYXRlSGFzaChjb250ZW50U3RyYXRlZ3kuY29udGVudCk7XHJcblxyXG4gICAgaWYgKHRoaXMuaW5zZXJ0ZWQuaGFzKGhhc2gpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZWxlbWVudCA9IGNvbnRlbnRTdHJhdGVneS5pbnNlcnRFbGVtZW50KCk7XHJcbiAgICB0aGlzLmluc2VydGVkLmFkZChoYXNoKTtcclxuXHJcbiAgICByZXR1cm4gZWxlbWVudDtcclxuICB9XHJcblxyXG4gIHJlbW92ZUNvbnRlbnQoZWxlbWVudDogSFRNTFNjcmlwdEVsZW1lbnQgfCBIVE1MU3R5bGVFbGVtZW50KSB7XHJcbiAgICBpZiAoZWxlbWVudC50ZXh0Q29udGVudCkge1xyXG4gICAgICBjb25zdCBoYXNoID0gZ2VuZXJhdGVIYXNoKGVsZW1lbnQudGV4dENvbnRlbnQpO1xyXG4gICAgICB0aGlzLmluc2VydGVkLmRlbGV0ZShoYXNoKTtcclxuICAgICAgZWxlbWVudC5wYXJlbnROb2RlPy5yZW1vdmVDaGlsZChlbGVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhcyhjb250ZW50OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGhhc2ggPSBnZW5lcmF0ZUhhc2goY29udGVudCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaW5zZXJ0ZWQuaGFzKGhhc2gpO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class HtmlEncodingService {\n encode(value) {\n if (!value) {\n return value;\n }\n return value\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n }\n decode(value) {\n if (!value) {\n return value;\n }\n return value\n .replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, \"'\");\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: HtmlEncodingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: HtmlEncodingService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: HtmlEncodingService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lbmNvZGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0bWwtZW5jb2Rpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sS0FBSzthQUNULE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO2FBQ3ZCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sS0FBSzthQUNULE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO2FBQ3ZCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs4R0F6QlUsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdG1sRW5jb2RpbmdTZXJ2aWNlIHtcclxuICBlbmNvZGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsdWVcclxuICAgICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JylcclxuICAgICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxyXG4gICAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpXHJcbiAgICAgIC5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JylcclxuICAgICAgLnJlcGxhY2UoLycvZywgJyYjMzk7Jyk7XHJcbiAgfVxyXG5cclxuICBkZWNvZGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsdWVcclxuICAgICAgLnJlcGxhY2UoLyZhbXA7L2csICcmJylcclxuICAgICAgLnJlcGxhY2UoLyZsdDsvZywgJzwnKVxyXG4gICAgICAucmVwbGFjZSgvJmd0Oy9nLCAnPicpXHJcbiAgICAgIC5yZXBsYWNlKC8mcXVvdDsvZywgJ1wiJylcclxuICAgICAgLnJlcGxhY2UoLyYjMzk7L2csIFwiJ1wiKTtcclxuICB9XHJcbn1cclxuIl19","import { Injectable, Injector, inject } from '@angular/core';\nimport { InternalStore } from '../utils/internal-store-utils';\nimport { getPathName } from '../utils/http-utils';\nimport { map, mapTo, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { of, Subject, timer } from 'rxjs';\nimport { LOADER_DELAY } from '../tokens/lodaer-delay.token';\nimport * as i0 from \"@angular/core\";\nexport class HttpWaitService {\n constructor() {\n this.store = new InternalStore({\n requests: [],\n filteredRequests: [],\n });\n this.destroy$ = new Subject();\n const injector = inject(Injector);\n this.delay = injector.get(LOADER_DELAY, 500);\n }\n getLoading() {\n return !!this.applyFilter(this.store.state.requests).length;\n }\n getLoading$() {\n return this.store\n .sliceState(({ requests }) => requests)\n .pipe(map(requests => !!this.applyFilter(requests).length), switchMap(condition => condition\n ? this.delay === 0\n ? of(true)\n : timer(this.delay).pipe(mapTo(true), takeUntil(this.destroy$))\n : of(false)), tap(() => this.destroy$.next()));\n }\n updateLoading$() {\n return this.store.sliceUpdate(({ requests }) => !!this.applyFilter(requests).length);\n }\n clearLoading() {\n this.store.patch({ requests: [] });\n }\n addRequest(request) {\n this.store.patch({ requests: [...this.store.state.requests, request] });\n }\n deleteRequest(request) {\n const requests = this.store.state.requests.filter(r => r !== request);\n this.store.patch({ requests });\n }\n addFilter(request) {\n const requests = Array.isArray(request) ? request : [request];\n const filteredRequests = [\n ...this.store.state.filteredRequests.filter(f => !requests.some(r => this.isSameRequest(f, r))),\n ...requests,\n ];\n this.store.patch({ filteredRequests });\n }\n removeFilter(request) {\n const requests = Array.isArray(request) ? request : [request];\n const filteredRequests = this.store.state.filteredRequests.filter(f => !requests.some(r => this.isSameRequest(f, r)));\n this.store.patch({ filteredRequests });\n }\n applyFilter(requests) {\n if (!requests) {\n return [];\n }\n const { filteredRequests } = this.store.state;\n return requests.filter(({ method, url }) => !filteredRequests.find(filteredRequest => this.isSameRequest(filteredRequest, { method, endpoint: getPathName(url) })));\n }\n isSameRequest(filteredRequest, request) {\n const { method, endpoint } = filteredRequest;\n return endpoint === request.endpoint && method === request.method;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: HttpWaitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: HttpWaitService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: HttpWaitService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC13YWl0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC13YWl0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQWE1RCxNQUFNLE9BQU8sZUFBZTtJQVMxQjtRQVJVLFVBQUssR0FBRyxJQUFJLGFBQWEsQ0FBZ0I7WUFDakQsUUFBUSxFQUFFLEVBQUU7WUFDWixnQkFBZ0IsRUFBRSxFQUFFO1NBQ3JCLENBQUMsQ0FBQztRQUdLLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBR3JDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVsQyxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDOUQsQ0FBQztJQUVE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J0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW50ZXJuYWxTdG9yZSB9IGZyb20gJy4uL3V0aWxzL2ludGVybmFsLXN0b3JlLXV0aWxzJztcclxuaW1wb3J0IHsgZ2V0UGF0aE5hbWUgfSBmcm9tICcuLi91dGlscy9odHRwLXV0aWxzJztcclxuaW1wb3J0IHsgbWFwLCBtYXBUbywgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgb2YsIFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExPQURFUl9ERUxBWSB9IGZyb20gJy4uL3Rva2Vucy9sb2RhZXItZGVsYXkudG9rZW4nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBIdHRwV2FpdFN0YXRlIHtcclxuICByZXF1ZXN0czogSHR0cFJlcXVlc3Q8YW55PltdO1xyXG4gIGZpbHRlcmVkUmVxdWVzdHM6IEFycmF5PEh0dHBSZXF1ZXN0SW5mbz47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBIdHRwUmVxdWVzdEluZm8ge1xyXG4gIG1ldGhvZDogc3RyaW5nO1xyXG4gIGVuZHBvaW50OiBzdHJpbmc7XHJcbn1cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEh0dHBXYWl0U2VydmljZSB7XHJcbiAgcHJvdGVjdGVkIHN0b3JlID0gbmV3IEludGVybmFsU3RvcmU8SHR0cFdhaXRTdGF0ZT4oe1xyXG4gICAgcmVxdWVzdHM6IFtdLFxyXG4gICAgZmlsdGVyZWRSZXF1ZXN0czogW10sXHJcbiAgfSk7XHJcblxyXG4gIHByaXZhdGUgZGVsYXk6IG51bWJlcjtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcblxyXG4gICAgdGhpcy5kZWxheSA9IGluamVjdG9yLmdldChMT0FERVJfREVMQVksIDUwMCk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2FkaW5nKCkge1xyXG4gICAgcmV0dXJuICEhdGhpcy5hcHBseUZpbHRlcih0aGlzLnN0b3JlLnN0YXRlLnJlcXVlc3RzKS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBnZXRMb2FkaW5nJCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlXHJcbiAgICAgIC5zbGljZVN0YXRlKCh7IHJlcXVlc3RzIH0pID0+IHJlcXVlc3RzKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAocmVxdWVzdHMgPT4gISF0aGlzLmFwcGx5RmlsdGVyKHJlcXVlc3RzKS5sZW5ndGgpLFxyXG4gICAgICAgIHN3aXRjaE1hcChjb25kaXRpb24gPT5cclxuICAgICAgICAgIGNvbmRpdGlvblxyXG4gICAgICAgICAgICA/IHRoaXMuZGVsYXkgPT09IDBcclxuICAgICAgICAgICAgICA/IG9mKHRydWUpXHJcbiAgICAgICAgICAgICAgOiB0aW1lcih0aGlzLmRlbGF5KS5waXBlKG1hcFRvKHRydWUpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgICAgIDogb2YoZmFsc2UpLFxyXG4gICAgICAgICksXHJcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZGVzdHJveSQubmV4dCgpKSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUxvYWRpbmckKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VVcGRhdGUoKHsgcmVxdWVzdHMgfSkgPT4gISF0aGlzLmFwcGx5RmlsdGVyKHJlcXVlc3RzKS5sZW5ndGgpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJMb2FkaW5nKCkge1xyXG4gICAgdGhpcy5zdG9yZS5wYXRjaCh7IHJlcXVlc3RzOiBbXSB9KTtcclxuICB9XHJcblxyXG4gIGFkZFJlcXVlc3QocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pikge1xyXG4gICAgdGhpcy5zdG9yZS5wYXRjaCh7IHJlcXVlc3RzOiBbLi4udGhpcy5zdG9yZS5zdGF0ZS5yZXF1ZXN0cywgcmVxdWVzdF0gfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVSZXF1ZXN0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pIHtcclxuICAgIGNvbnN0IHJlcXVlc3RzID0gdGhpcy5zdG9yZS5zdGF0ZS5yZXF1ZXN0cy5maWx0ZXIociA9PiByICE9PSByZXF1ZXN0KTtcclxuICAgIHRoaXMuc3RvcmUucGF0Y2goeyByZXF1ZXN0cyB9KTtcclxuICB9XHJcblxyXG4gIGFkZEZpbHRlcihyZXF1ZXN0OiBIdHRwUmVxdWVzdEluZm8gfCBIdHRwUmVxdWVzdEluZm9bXSkge1xyXG4gICAgY29uc3QgcmVxdWVzdHMgPSBBcnJheS5pc0FycmF5KHJlcXVlc3QpID8gcmVxdWVzdCA6IFtyZXF1ZXN0XTtcclxuICAgIGNvbnN0IGZpbHRlcmVkUmVxdWVzdHMgPSBbXHJcbiAgICAgIC4uLnRoaXMuc3RvcmUuc3RhdGUuZmlsdGVyZWRSZXF1ZXN0cy5maWx0ZXIoXHJcbiAgICAgICAgZiA9PiAhcmVxdWVzdHMuc29tZShyID0+IHRoaXMuaXNTYW1lUmVxdWVzdChmLCByKSksXHJcbiAgICAgICksXHJcbiAgICAgIC4uLnJlcXVlc3RzLFxyXG4gICAgXTtcclxuICAgIHRoaXMuc3RvcmUucGF0Y2goeyBmaWx0ZXJlZFJlcXVlc3RzIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRmlsdGVyKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0SW5mbyB8IEh0dHBSZXF1ZXN0SW5mb1tdKSB7XHJcbiAgICBjb25zdCByZXF1ZXN0cyA9IEFycmF5LmlzQXJyYXkocmVxdWVzdCkgPyByZXF1ZXN0IDogW3JlcXVlc3RdO1xyXG4gICAgY29uc3QgZmlsdGVyZWRSZXF1ZXN0cyA9IHRoaXMuc3RvcmUuc3RhdGUuZmlsdGVyZWRSZXF1ZXN0cy5maWx0ZXIoXHJcbiAgICAgIGYgPT4gIXJlcXVlc3RzLnNvbWUociA9PiB0aGlzLmlzU2FtZVJlcXVlc3QoZiwgcikpLFxyXG4gICAgKTtcclxuICAgIHRoaXMuc3RvcmUucGF0Y2goeyBmaWx0ZXJlZFJlcXVlc3RzIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUZpbHRlcihyZXF1ZXN0czogSHR0cFJlcXVlc3Q8YW55PltdIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAoIXJlcXVlc3RzKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZmlsdGVyZWRSZXF1ZXN0cyB9ID0gdGhpcy5zdG9yZS5zdGF0ZTtcclxuICAgIHJldHVybiByZXF1ZXN0cy5maWx0ZXIoXHJcbiAgICAgICh7IG1ldGhvZCwgdXJsIH0pID0+XHJcbiAgICAgICAgIWZpbHRlcmVkUmVxdWVzdHMuZmluZChmaWx0ZXJlZFJlcXVlc3QgPT5cclxuICAgICAgICAgIHRoaXMuaXNTYW1lUmVxdWVzdChmaWx0ZXJlZFJlcXVlc3QsIHsgbWV0aG9kLCBlbmRwb2ludDogZ2V0UGF0aE5hbWUodXJsKSB9KSxcclxuICAgICAgICApLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNTYW1lUmVxdWVzdChmaWx0ZXJlZFJlcXVlc3Q6IEh0dHBSZXF1ZXN0SW5mbywgcmVxdWVzdDogSHR0cFJlcXVlc3RJbmZvKSB7XHJcbiAgICBjb25zdCB7IG1ldGhvZCwgZW5kcG9pbnQgfSA9IGZpbHRlcmVkUmVxdWVzdDtcclxuICAgIHJldHVybiBlbmRwb2ludCA9PT0gcmVxdWVzdC5lbmRwb2ludCAmJiBtZXRob2QgPT09IHJlcXVlc3QubWV0aG9kO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Injectable } from '@angular/core';\nimport { InternalStore } from '../utils/internal-store-utils';\nimport * as i0 from \"@angular/core\";\nexport class ResourceWaitService {\n constructor() {\n this.store = new InternalStore({ resources: new Set() });\n }\n getLoading() {\n return !!this.store.state.resources.size;\n }\n getLoading$() {\n return this.store.sliceState(({ resources }) => !!resources.size);\n }\n updateLoading$() {\n return this.store.sliceUpdate(({ resources }) => !!resources?.size);\n }\n clearLoading() {\n this.store.patch({ resources: new Set() });\n }\n addResource(resource) {\n const resources = this.store.state.resources;\n resources.add(resource);\n this.store.patch({ resources });\n }\n deleteResource(resource) {\n const resources = this.store.state.resources;\n resources.delete(resource);\n this.store.patch({ resources });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ResourceWaitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ResourceWaitService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ResourceWaitService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Utd2FpdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3Jlc291cmNlLXdhaXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFTOUQsTUFBTSxPQUFPLG1CQUFtQjtJQUhoQztRQUlVLFVBQUssR0FBRyxJQUFJLGFBQWEsQ0FBb0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7S0E2QmhGO0lBM0JDLFVBQVU7UUFDUixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBZ0I7UUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQzdDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxjQUFjLENBQUMsUUFBZ0I7UUFDN0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQzdDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OEdBN0JVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEludGVybmFsU3RvcmUgfSBmcm9tICcuLi91dGlscy9pbnRlcm5hbC1zdG9yZS11dGlscyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlV2FpdFN0YXRlIHtcclxuICByZXNvdXJjZXM6IFNldDxzdHJpbmc+O1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VXYWl0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBzdG9yZSA9IG5ldyBJbnRlcm5hbFN0b3JlPFJlc291cmNlV2FpdFN0YXRlPih7IHJlc291cmNlczogbmV3IFNldCgpIH0pO1xyXG5cclxuICBnZXRMb2FkaW5nKCkge1xyXG4gICAgcmV0dXJuICEhdGhpcy5zdG9yZS5zdGF0ZS5yZXNvdXJjZXMuc2l6ZTtcclxuICB9XHJcblxyXG4gIGdldExvYWRpbmckKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VTdGF0ZSgoeyByZXNvdXJjZXMgfSkgPT4gISFyZXNvdXJjZXMuc2l6ZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMb2FkaW5nJCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlVXBkYXRlKCh7IHJlc291cmNlcyB9KSA9PiAhIXJlc291cmNlcz8uc2l6ZSk7XHJcbiAgfVxyXG5cclxuICBjbGVhckxvYWRpbmcoKSB7XHJcbiAgICB0aGlzLnN0b3JlLnBhdGNoKHsgcmVzb3VyY2VzOiBuZXcgU2V0KCkgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRSZXNvdXJjZShyZXNvdXJjZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCByZXNvdXJjZXMgPSB0aGlzLnN0b3JlLnN0YXRlLnJlc291cmNlcztcclxuICAgIHJlc291cmNlcy5hZGQocmVzb3VyY2UpO1xyXG4gICAgdGhpcy5zdG9yZS5wYXRjaCh7IHJlc291cmNlcyB9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVJlc291cmNlKHJlc291cmNlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMuc3RvcmUuc3RhdGUucmVzb3VyY2VzO1xyXG4gICAgcmVzb3VyY2VzLmRlbGV0ZShyZXNvdXJjZSk7XHJcbiAgICB0aGlzLnN0b3JlLnBhdGNoKHsgcmVzb3VyY2VzIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { concat, of, pipe, throwError } from 'rxjs';\nimport { delay, retryWhen, shareReplay, take, tap } from 'rxjs/operators';\nimport { ResourceWaitService } from './resource-wait.service';\nimport * as i0 from \"@angular/core\";\nexport class LazyLoadService {\n constructor() {\n this.resourceWaitService = inject(ResourceWaitService);\n this.loaded = new Map();\n }\n load(strategy, retryTimes, retryDelay) {\n if (this.loaded.has(strategy.path))\n return of(new CustomEvent('load'));\n this.resourceWaitService.addResource(strategy.path);\n const delayOperator = retryDelay ? pipe(delay(retryDelay)) : pipe();\n const takeOp = retryTimes ? pipe(take(retryTimes)) : pipe();\n return strategy.createStream().pipe(retryWhen(error$ => concat(error$.pipe(delayOperator, takeOp), throwError(() => new CustomEvent('error')))), tap(() => {\n this.loaded.set(strategy.path, strategy.element);\n this.resourceWaitService.deleteResource(strategy.path);\n }), delay(100), shareReplay({ bufferSize: 1, refCount: true }));\n }\n remove(path) {\n const element = this.loaded.get(path);\n if (!element)\n return false;\n element.parentNode?.removeChild(element);\n this.loaded.delete(path);\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LazyLoadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LazyLoadService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LazyLoadService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvbGF6eS1sb2FkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUs5RCxNQUFNLE9BQU8sZUFBZTtJQUg1QjtRQUlVLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWpELFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBc0QsQ0FBQztLQWdDakY7SUE5QkMsSUFBSSxDQUFDLFFBQXlCLEVBQUUsVUFBbUIsRUFBRSxVQUFtQjtRQUN0RSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwRSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUQsT0FBTyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUNqQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDakIsTUFBTSxDQUNKLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxFQUNsQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDM0MsQ0FDRixFQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsRUFDRixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQ1YsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDL0MsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBWTtRQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRTNCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4R0FsQ1UsZUFBZTtrSEFBZixlQUFlLGNBRmQsTUFBTTs7MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY29uY2F0LCBPYnNlcnZhYmxlLCBvZiwgcGlwZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWxheSwgcmV0cnlXaGVuLCBzaGFyZVJlcGxheSwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBMb2FkaW5nU3RyYXRlZ3kgfSBmcm9tICcuLi9zdHJhdGVnaWVzJztcclxuaW1wb3J0IHsgUmVzb3VyY2VXYWl0U2VydmljZSB9IGZyb20gJy4vcmVzb3VyY2Utd2FpdC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXp5TG9hZFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVzb3VyY2VXYWl0U2VydmljZSA9IGluamVjdChSZXNvdXJjZVdhaXRTZXJ2aWNlKTtcclxuXHJcbiAgcmVhZG9ubHkgbG9hZGVkID0gbmV3IE1hcDxzdHJpbmcsIEhUTUxTY3JpcHRFbGVtZW50IHwgSFRNTExpbmtFbGVtZW50IHwgbnVsbD4oKTtcclxuXHJcbiAgbG9hZChzdHJhdGVneTogTG9hZGluZ1N0cmF0ZWd5LCByZXRyeVRpbWVzPzogbnVtYmVyLCByZXRyeURlbGF5PzogbnVtYmVyKTogT2JzZXJ2YWJsZTxFdmVudD4ge1xyXG4gICAgaWYgKHRoaXMubG9hZGVkLmhhcyhzdHJhdGVneS5wYXRoKSkgcmV0dXJuIG9mKG5ldyBDdXN0b21FdmVudCgnbG9hZCcpKTtcclxuICAgIHRoaXMucmVzb3VyY2VXYWl0U2VydmljZS5hZGRSZXNvdXJjZShzdHJhdGVneS5wYXRoKTtcclxuICAgIGNvbnN0IGRlbGF5T3BlcmF0b3IgPSByZXRyeURlbGF5ID8gcGlwZShkZWxheShyZXRyeURlbGF5KSkgOiBwaXBlKCk7XHJcbiAgICBjb25zdCB0YWtlT3AgPSByZXRyeVRpbWVzID8gcGlwZSh0YWtlKHJldHJ5VGltZXMpKSA6IHBpcGUoKTtcclxuICAgIHJldHVybiBzdHJhdGVneS5jcmVhdGVTdHJlYW0oKS5waXBlKFxyXG4gICAgICByZXRyeVdoZW4oZXJyb3IkID0+XHJcbiAgICAgICAgY29uY2F0KFxyXG4gICAgICAgICAgZXJyb3IkLnBpcGUoZGVsYXlPcGVyYXRvciwgdGFrZU9wKSxcclxuICAgICAgICAgIHRocm93RXJyb3IoKCkgPT4gbmV3IEN1c3RvbUV2ZW50KCdlcnJvcicpKSxcclxuICAgICAgICApLFxyXG4gICAgICApLFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGVkLnNldChzdHJhdGVneS5wYXRoLCBzdHJhdGVneS5lbGVtZW50KTtcclxuICAgICAgICB0aGlzLnJlc291cmNlV2FpdFNlcnZpY2UuZGVsZXRlUmVzb3VyY2Uoc3RyYXRlZ3kucGF0aCk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBkZWxheSgxMDApLFxyXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZShwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmxvYWRlZC5nZXQocGF0aCk7XHJcblxyXG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgZWxlbWVudC5wYXJlbnROb2RlPy5yZW1vdmVDaGlsZChlbGVtZW50KTtcclxuICAgIHRoaXMubG9hZGVkLmRlbGV0ZShwYXRoKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Injectable, Injector, inject } from '@angular/core';\nimport { EMPTY, BehaviorSubject, ReplaySubject, Subject, } from 'rxjs';\nimport { catchError, debounceTime, filter, finalize, shareReplay, switchMap, takeUntil, tap, } from 'rxjs/operators';\nimport { LIST_QUERY_DEBOUNCE_TIME } from '../tokens/list.token';\nimport * as i0 from \"@angular/core\";\nexport class ListService {\n set filter(value) {\n this._filter = value;\n this.get();\n }\n get filter() {\n return this._filter;\n }\n set maxResultCount(value) {\n this._maxResultCount = value;\n this.get();\n }\n get maxResultCount() {\n return this._maxResultCount;\n }\n set page(value) {\n if (value === this._page)\n return;\n this._page = value;\n this.get();\n }\n get page() {\n return this._page;\n }\n set totalCount(value) {\n if (value === this._totalCount)\n return;\n this._totalCount = value;\n this.get();\n }\n get totalCount() {\n return this._totalCount;\n }\n set sortKey(value) {\n this._sortKey = value;\n this.get();\n }\n get sortKey() {\n return this._sortKey;\n }\n set sortOrder(value) {\n this._sortOrder = value;\n this.get();\n }\n get sortOrder() {\n return this._sortOrder;\n }\n get query$() {\n return this._query$\n .asObservable()\n .pipe(this.delay, shareReplay({ bufferSize: 1, refCount: true }));\n }\n /**\n * @deprecated Use `requestStatus$` instead.\n */\n get isLoading$() {\n return this._isLoading$.asObservable().pipe(takeUntil(this.destroy$));\n }\n get requestStatus$() {\n return this._requestStatus.asObservable().pipe(takeUntil(this.destroy$));\n }\n constructor() {\n this._filter = '';\n this._maxResultCount = 10;\n this._page = 0;\n this._totalCount = 0;\n this._sortKey = '';\n this._sortOrder = '';\n this._query$ = new ReplaySubject(1);\n this._isLoading$ = new BehaviorSubject(false);\n this._requestStatus = new BehaviorSubject('idle');\n this.destroy$ = new Subject();\n this.get = () => {\n this.resetPageWhenUnchanged();\n this.next();\n };\n this.getWithoutPageReset = () => {\n this.next();\n };\n const injector = inject(Injector);\n const delay = injector.get(LIST_QUERY_DEBOUNCE_TIME, 300);\n this.delay = delay ? debounceTime(delay) : tap();\n this.get();\n }\n hookToQuery(streamCreatorCallback) {\n return this.query$.pipe(tap(() => this._isLoading$.next(true)), tap(() => this._requestStatus.next('loading')), switchMap(query => streamCreatorCallback(query).pipe(catchError(() => {\n this._requestStatus.next('error');\n return EMPTY;\n }), tap(() => this._requestStatus.next('success')), finalize(() => {\n this._isLoading$.next(false);\n this._requestStatus.next('idle');\n }))), filter(Boolean), shareReplay({ bufferSize: 1, refCount: true }), takeUntil(this.destroy$));\n }\n ngOnDestroy() {\n this.destroy$.next();\n }\n resetPageWhenUnchanged() {\n const maxPage = Number(Number(this.totalCount / this._maxResultCount).toFixed());\n const skipCount = this._page * this._maxResultCount;\n if (skipCount !== this._totalCount) {\n return;\n }\n if (this.page === maxPage && this.page > 0) {\n this.page = this.page - 1;\n }\n }\n next() {\n this._query$.next({\n filter: this._filter || undefined,\n maxResultCount: this._maxResultCount,\n skipCount: this._page * this._maxResultCount,\n sorting: this._sortOrder ? `${this._sortKey} ${this._sortOrder}` : undefined,\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ListService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ListService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ListService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL2xpc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUNMLEtBQUssRUFDTCxlQUFlLEVBR2YsYUFBYSxFQUNiLE9BQU8sR0FDUixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBS2hFLE1BQU0sT0FBTyxXQUFXO0lBRXRCLElBQUksTUFBTSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2IsQ0FBQztJQUNELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBR0QsSUFBSSxjQUFjLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDYixDQUFDO0lBQ0QsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBR0QsSUFBSSxJQUFJLENBQUMsS0FBYTtRQUNwQixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFakMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFB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RyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNqRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFFcEQsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25DLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFTyxJQUFJO1FBQ1YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksU0FBUztZQUNqQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDcEMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWU7WUFDNUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDbkQsQ0FBQyxDQUFDO0lBQy9CLENBQUM7OEdBdkpVLFdBQVc7a0hBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3ksIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEVNUFRZLFxyXG4gIEJlaGF2aW9yU3ViamVjdCxcclxuICBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24sXHJcbiAgT2JzZXJ2YWJsZSxcclxuICBSZXBsYXlTdWJqZWN0LFxyXG4gIFN1YmplY3QsXHJcbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgY2F0Y2hFcnJvcixcclxuICBkZWJvdW5jZVRpbWUsXHJcbiAgZmlsdGVyLFxyXG4gIGZpbmFsaXplLFxyXG4gIHNoYXJlUmVwbGF5LFxyXG4gIHN3aXRjaE1hcCxcclxuICB0YWtlVW50aWwsXHJcbiAgdGFwLFxyXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzL2NvbW1vbic7XHJcbmltcG9ydCB7IFBhZ2VkUmVzdWx0RHRvIH0gZnJvbSAnLi4vbW9kZWxzL2R0b3MnO1xyXG5pbXBvcnQgeyBMSVNUX1FVRVJZX0RFQk9VTkNFX1RJTUUgfSBmcm9tICcuLi90b2tlbnMvbGlzdC50b2tlbic7XHJcblxyXG5leHBvcnQgdHlwZSBSZXF1ZXN0U3RhdHVzID0gJ2lkbGUnIHwgJ2xvYWRpbmcnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIExpc3RTZXJ2aWNlPFF1ZXJ5UGFyYW1zVHlwZSA9IEFCUC5QYWdlUXVlcnlQYXJhbXMgfCBhbnk+IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBwcml2YXRlIF9maWx0ZXIgPSAnJztcclxuICBzZXQgZmlsdGVyKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2ZpbHRlciA9IHZhbHVlO1xyXG4gICAgdGhpcy5nZXQoKTtcclxuICB9XHJcbiAgZ2V0IGZpbHRlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX21heFJlc3VsdENvdW50ID0gMTA7XHJcbiAgc2V0IG1heFJlc3VsdENvdW50KHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX21heFJlc3VsdENvdW50ID0gdmFsdWU7XHJcbiAgICB0aGlzLmdldCgpO1xyXG4gIH1cclxuICBnZXQgbWF4UmVzdWx0Q291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXhSZXN1bHRDb3VudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3BhZ2UgPSAwO1xyXG4gIHNldCBwYWdlKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fcGFnZSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX3BhZ2UgPSB2YWx1ZTtcclxuICAgIHRoaXMuZ2V0KCk7XHJcbiAgfVxyXG4gIGdldCBwYWdlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFnZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RvdGFsQ291bnQgPSAwO1xyXG4gIHNldCB0b3RhbENvdW50KHZhbHVlOiBudW1iZXIpIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fdG90YWxDb3VudCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX3RvdGFsQ291bnQgPSB2YWx1ZTtcclxuICAgIHRoaXMuZ2V0KCk7XHJcbiAgfVxyXG4gIGdldCB0b3RhbENvdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdG90YWxDb3VudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NvcnRLZXk6IHN0cmluZyB8IG51bWJlciA9ICcnO1xyXG4gIHNldCBzb3J0S2V5KHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgIHRoaXMuX3NvcnRLZXkgPSB2YWx1ZTtcclxuICAgIHRoaXMuZ2V0KCk7XHJcbiAgfVxyXG4gIGdldCBzb3J0S2V5KCk6IHN0cmluZyB8IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc29ydEtleTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NvcnRPcmRlciA9ICcnO1xyXG4gIHNldCBzb3J0T3JkZXIodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fc29ydE9yZGVyID0gdmFsdWU7XHJcbiAgICB0aGlzLmdldCgpO1xyXG4gIH1cclxuICBnZXQgc29ydE9yZGVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc29ydE9yZGVyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcXVlcnkkID0gbmV3IFJlcGxheVN1YmplY3Q8UXVlcnlQYXJhbXNUeXBlPigxKTtcclxuXHJcbiAgZ2V0IHF1ZXJ5JCgpOiBPYnNlcnZhYmxlPFF1ZXJ5UGFyYW1zVHlwZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5JFxyXG4gICAgICAuYXNPYnNlcnZhYmxlKClcclxuICAgICAgLnBpcGUodGhpcy5kZWxheSwgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pc0xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XHJcblxyXG4gIHByaXZhdGUgX3JlcXVlc3RTdGF0dXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlcXVlc3RTdGF0dXM+KCdpZGxlJyk7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBwcml2YXRlIGRlbGF5OiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248UXVlcnlQYXJhbXNUeXBlPjtcclxuXHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGByZXF1ZXN0U3RhdHVzJGAgaW5zdGVhZC5cclxuICAgKi9cclxuICBnZXQgaXNMb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKTtcclxuICB9XHJcblxyXG4gIGdldCByZXF1ZXN0U3RhdHVzJCgpOiBPYnNlcnZhYmxlPFJlcXVlc3RTdGF0dXM+IHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0U3RhdHVzLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKTtcclxuICB9XHJcblxyXG4gIGdldCA9ICgpID0+IHtcclxuICAgIHRoaXMucmVzZXRQYWdlV2hlblVuY2hhbmdlZCgpO1xyXG4gICAgdGhpcy5uZXh0KCk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0V2l0aG91dFBhZ2VSZXNldCA9ICgpID0+IHtcclxuICAgIHRoaXMubmV4dCgpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG5cclxuICAgIGNvbnN0IGRlbGF5ID0gaW5qZWN0b3IuZ2V0KExJU1RfUVVFUllfREVCT1VOQ0VfVElNRSwgMzAwKTtcclxuICAgIHRoaXMuZGVsYXkgPSBkZWxheSA/IGRlYm91bmNlVGltZShkZWxheSkgOiB0YXAoKTtcclxuICAgIHRoaXMuZ2V0KCk7XHJcbiAgfVxyXG5cclxuICBob29rVG9RdWVyeTxUPihcclxuICAgIHN0cmVhbUNyZWF0b3JDYWxsYmFjazogUXVlcnlTdHJlYW1DcmVhdG9yQ2FsbGJhY2s8VCwgUXVlcnlQYXJhbXNUeXBlPixcclxuICApOiBPYnNlcnZhYmxlPFBhZ2VkUmVzdWx0RHRvPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5xdWVyeSQucGlwZShcclxuICAgICAgdGFwKCgpID0+IHRoaXMuX2lzTG9hZGluZyQubmV4dCh0cnVlKSksXHJcbiAgICAgIHRhcCgoKSA9PiB0aGlzLl9yZXF1ZXN0U3RhdHVzLm5leHQoJ2xvYWRpbmcnKSksXHJcbiAgICAgIHN3aXRjaE1hcChxdWVyeSA9PlxyXG4gICAgICAgIHN0cmVhbUNyZWF0b3JDYWxsYmFjayhxdWVyeSkucGlwZShcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9yZXF1ZXN0U3RhdHVzLm5leHQoJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgdGFwKCgpID0+IHRoaXMuX3JlcXVlc3RTdGF0dXMubmV4dCgnc3VjY2VzcycpKSxcclxuICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5faXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5fcmVxdWVzdFN0YXR1cy5uZXh0KCdpZGxlJyk7XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICApLFxyXG4gICAgICApLFxyXG4gICAgICBmaWx0ZXIoQm9vbGVhbiksXHJcbiAgICAgIHNoYXJlUmVwbGF5PGFueT4oeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgcmVzZXRQYWdlV2hlblVuY2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IG1heFBhZ2UgPSBOdW1iZXIoTnVtYmVyKHRoaXMudG90YWxDb3VudCAvIHRoaXMuX21heFJlc3VsdENvdW50KS50b0ZpeGVkKCkpO1xyXG4gICAgY29uc3Qgc2tpcENvdW50ID0gdGhpcy5fcGFnZSAqIHRoaXMuX21heFJlc3VsdENvdW50O1xyXG5cclxuICAgIGlmIChza2lwQ291bnQgIT09IHRoaXMuX3RvdGFsQ291bnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnBhZ2UgPT09IG1heFBhZ2UgJiYgdGhpcy5wYWdlID4gMCkge1xyXG4gICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgLSAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuZXh0KCkge1xyXG4gICAgdGhpcy5fcXVlcnkkLm5leHQoe1xyXG4gICAgICBmaWx0ZXI6IHRoaXMuX2ZpbHRlciB8fCB1bmRlZmluZWQsXHJcbiAgICAgIG1heFJlc3VsdENvdW50OiB0aGlzLl9tYXhSZXN1bHRDb3VudCxcclxuICAgICAgc2tpcENvdW50OiB0aGlzLl9wYWdlICogdGhpcy5fbWF4UmVzdWx0Q291bnQsXHJcbiAgICAgIHNvcnRpbmc6IHRoaXMuX3NvcnRPcmRlciA/IGAke3RoaXMuX3NvcnRLZXl9ICR7dGhpcy5fc29ydE9yZGVyfWAgOiB1bmRlZmluZWQsXHJcbiAgICB9IGFzIGFueSBhcyBRdWVyeVBhcmFtc1R5cGUpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUXVlcnlTdHJlYW1DcmVhdG9yQ2FsbGJhY2s8VCwgUXVlcnlQYXJhbXNUeXBlID0gQUJQLlBhZ2VRdWVyeVBhcmFtcz4gPSAoXHJcbiAgcXVlcnk6IFF1ZXJ5UGFyYW1zVHlwZSxcclxuKSA9PiBPYnNlcnZhYmxlPFBhZ2VkUmVzdWx0RHRvPFQ+PjtcclxuIl19","import { Injectable, inject } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { ConfigStateService } from './config-state.service';\nimport * as i0 from \"@angular/core\";\nexport class PermissionService {\n constructor() {\n this.configState = inject(ConfigStateService);\n }\n getGrantedPolicy$(key) {\n return this.getStream().pipe(map(grantedPolicies => this.isPolicyGranted(key, grantedPolicies)));\n }\n getGrantedPolicy(key) {\n const policies = this.getSnapshot();\n return this.isPolicyGranted(key, policies);\n }\n filterItemsByPolicy(items) {\n const policies = this.getSnapshot();\n return items.filter(item => !item.requiredPolicy || this.isPolicyGranted(item.requiredPolicy, policies));\n }\n filterItemsByPolicy$(items) {\n return this.getStream().pipe(map(policies => items.filter(item => !item.requiredPolicy || this.isPolicyGranted(item.requiredPolicy, policies))));\n }\n isPolicyGranted(key, grantedPolicies) {\n if (!key)\n return true;\n const orRegexp = /\\|\\|/g;\n const andRegexp = /&&/g;\n // TODO: Allow combination of ANDs & ORs\n if (orRegexp.test(key)) {\n const keys = key.split('||').filter(Boolean);\n if (keys.length < 2)\n return false;\n return keys.some(k => this.getPolicy(k.trim(), grantedPolicies));\n }\n else if (andRegexp.test(key)) {\n const keys = key.split('&&').filter(Boolean);\n if (keys.length < 2)\n return false;\n return keys.every(k => this.getPolicy(k.trim(), grantedPolicies));\n }\n return this.getPolicy(key, grantedPolicies);\n }\n getStream() {\n return this.configState.getAll$().pipe(map(this.mapToPolicies));\n }\n getSnapshot() {\n return this.mapToPolicies(this.configState.getAll());\n }\n mapToPolicies(applicationConfiguration) {\n return applicationConfiguration?.auth?.grantedPolicies || {};\n }\n getPolicy(key, grantedPolicies) {\n return grantedPolicies[key] || false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: PermissionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: PermissionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: PermissionService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3Blcm1pc3Npb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRzVELE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFWSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBc0VwRDtJQW5FQyxpQkFBaUIsQ0FBQyxHQUFXO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FDMUIsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FDbkUsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUF1QjtRQUN0QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsbUJBQW1CLENBQTBCLEtBQWU7UUFDMUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FDakIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUNwRixDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQixDQUEwQixLQUFlO1FBQzNELE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FDMUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQ2IsS0FBSyxDQUFDLE1BQU0sQ0FDVixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQ3BGLENBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVTLGVBQWUsQ0FBQyxHQUF1QixFQUFFLGVBQXdDO1FBQ3pGLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFdEIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQztRQUV4Qix3Q0FBd0M7UUFDeEMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFN0MsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFFbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUNuRSxDQUFDO2FBQU0sSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFN0MsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFFbEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRVMsU0FBUztRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRVMsV0FBVztRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFUyxhQUFhLENBQUMsd0JBQXFEO1FBQzNFLE9BQU8sd0JBQXdCLEVBQUUsSUFBSSxFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFDL0QsQ0FBQztJQUVTLFNBQVMsQ0FBQyxHQUFXLEVBQUUsZUFBd0M7UUFDdkUsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3ZDLENBQUM7OEdBdEVVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREosTUFBTTs7MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBQlAgfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uJztcclxuaW1wb3J0IHsgQXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvIH0gZnJvbSAnLi4vcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9ucy9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy1zdGF0ZS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uU2VydmljZSB7XHJcbiAgcHJvdGVjdGVkIGNvbmZpZ1N0YXRlID0gaW5qZWN0KENvbmZpZ1N0YXRlU2VydmljZSk7XHJcblxyXG5cclxuICBnZXRHcmFudGVkUG9saWN5JChrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyZWFtKCkucGlwZShcclxuICAgICAgbWFwKGdyYW50ZWRQb2xpY2llcyA9PiB0aGlzLmlzUG9saWN5R3JhbnRlZChrZXksIGdyYW50ZWRQb2xpY2llcykpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEdyYW50ZWRQb2xpY3koa2V5OiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIGNvbnN0IHBvbGljaWVzID0gdGhpcy5nZXRTbmFwc2hvdCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaXNQb2xpY3lHcmFudGVkKGtleSwgcG9saWNpZXMpO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVySXRlbXNCeVBvbGljeTxUIGV4dGVuZHMgQUJQLkhhc1BvbGljeT4oaXRlbXM6IEFycmF5PFQ+KSB7XHJcbiAgICBjb25zdCBwb2xpY2llcyA9IHRoaXMuZ2V0U25hcHNob3QoKTtcclxuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoXHJcbiAgICAgIGl0ZW0gPT4gIWl0ZW0ucmVxdWlyZWRQb2xpY3kgfHwgdGhpcy5pc1BvbGljeUdyYW50ZWQoaXRlbS5yZXF1aXJlZFBvbGljeSwgcG9saWNpZXMpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZpbHRlckl0ZW1zQnlQb2xpY3kkPFQgZXh0ZW5kcyBBQlAuSGFzUG9saWN5PihpdGVtczogQXJyYXk8VD4pIHtcclxuICAgIHJldHVybiB0aGlzLmdldFN0cmVhbSgpLnBpcGUoXHJcbiAgICAgIG1hcChwb2xpY2llcyA9PlxyXG4gICAgICAgIGl0ZW1zLmZpbHRlcihcclxuICAgICAgICAgIGl0ZW0gPT4gIWl0ZW0ucmVxdWlyZWRQb2xpY3kgfHwgdGhpcy5pc1BvbGljeUdyYW50ZWQoaXRlbS5yZXF1aXJlZFBvbGljeSwgcG9saWNpZXMpLFxyXG4gICAgICAgICksXHJcbiAgICAgICksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGlzUG9saWN5R3JhbnRlZChrZXk6IHN0cmluZyB8IHVuZGVmaW5lZCwgZ3JhbnRlZFBvbGljaWVzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPikge1xyXG4gICAgaWYgKCFrZXkpIHJldHVybiB0cnVlO1xyXG5cclxuICAgIGNvbnN0IG9yUmVnZXhwID0gL1xcfFxcfC9nO1xyXG4gICAgY29uc3QgYW5kUmVnZXhwID0gLyYmL2c7XHJcblxyXG4gICAgLy8gVE9ETzogQWxsb3cgY29tYmluYXRpb24gb2YgQU5EcyAmIE9Sc1xyXG4gICAgaWYgKG9yUmVnZXhwLnRlc3Qoa2V5KSkge1xyXG4gICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KCd8fCcpLmZpbHRlcihCb29sZWFuKTtcclxuXHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA8IDIpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIHJldHVybiBrZXlzLnNvbWUoayA9PiB0aGlzLmdldFBvbGljeShrLnRyaW0oKSwgZ3JhbnRlZFBvbGljaWVzKSk7XHJcbiAgICB9IGVsc2UgaWYgKGFuZFJlZ2V4cC50ZXN0KGtleSkpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdCgnJiYnKS5maWx0ZXIoQm9vbGVhbik7XHJcblxyXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPCAyKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICByZXR1cm4ga2V5cy5ldmVyeShrID0+IHRoaXMuZ2V0UG9saWN5KGsudHJpbSgpLCBncmFudGVkUG9saWNpZXMpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5nZXRQb2xpY3koa2V5LCBncmFudGVkUG9saWNpZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldFN0cmVhbSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1N0YXRlLmdldEFsbCQoKS5waXBlKG1hcCh0aGlzLm1hcFRvUG9saWNpZXMpKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRTbmFwc2hvdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm1hcFRvUG9saWNpZXModGhpcy5jb25maWdTdGF0ZS5nZXRBbGwoKSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbWFwVG9Qb2xpY2llcyhhcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb246IEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbkR0bykge1xyXG4gICAgcmV0dXJuIGFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbj8uYXV0aD8uZ3JhbnRlZFBvbGljaWVzIHx8IHt9O1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldFBvbGljeShrZXk6IHN0cmluZywgZ3JhbnRlZFBvbGljaWVzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPikge1xyXG4gICAgcmV0dXJuIGdyYW50ZWRQb2xpY2llc1trZXldIHx8IGZhbHNlO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Injectable, NgZone, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { map } from 'rxjs/operators';\nimport { InternalStore } from '../utils/internal-store-utils';\nimport { reloadRoute } from '../utils/route-utils';\nimport * as i0 from \"@angular/core\";\nexport class ReplaceableComponentsService {\n get replaceableComponents$() {\n return this.store.sliceState(state => state);\n }\n get replaceableComponents() {\n return this.store.state;\n }\n get onUpdate$() {\n return this.store.sliceUpdate(state => state);\n }\n constructor() {\n this.ngZone = inject(NgZone);\n this.router = inject(Router);\n this.store = new InternalStore([]);\n }\n add(replaceableComponent, reload) {\n const replaceableComponents = [...this.store.state];\n const index = replaceableComponents.findIndex(component => component.key === replaceableComponent.key);\n if (index > -1) {\n replaceableComponents[index] = replaceableComponent;\n }\n else {\n replaceableComponents.push(replaceableComponent);\n }\n this.store.set(replaceableComponents);\n if (reload)\n reloadRoute(this.router, this.ngZone);\n }\n get(replaceableComponentKey) {\n return this.replaceableComponents.find(component => component.key === replaceableComponentKey);\n }\n get$(replaceableComponentKey) {\n return this.replaceableComponents$.pipe(map(components => components.find(component => component.key === replaceableComponentKey)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ReplaceableComponentsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ReplaceableComponentsService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ReplaceableComponentsService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZWFibGUtY29tcG9uZW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3JlcGxhY2VhYmxlLWNvbXBvbmVudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUduRCxNQUFNLE9BQU8sNEJBQTRCO0lBTXZDLElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDtRQWpCUSxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFpQjlCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxhQUFhLENBQUMsRUFBa0QsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxHQUFHLENBQUMsb0JBQWdFLEVBQUUsTUFBZ0I7UUFDcEYsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwRCxNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQzNDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxvQkFBb0IsQ0FBQyxHQUFHLENBQ3hELENBQUM7UUFFRixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2YscUJBQXFCLENBQUMsS0FBSyxDQUFDLEdBQUcsb0JBQW9CLENBQUM7UUFDdEQsQ0FBQzthQUFNLENBQUM7WUFDTixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUV0QyxJQUFJLE1BQU07WUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELEdBQUcsQ0FBQyx1QkFBK0I7UUFDakMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxJQUFJLENBQUMsdUJBQStCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FDckMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssdUJBQXVCLENBQUMsQ0FBQyxDQUMzRixDQUFDO0lBQ0osQ0FBQzs4R0FoRFUsNEJBQTRCO2tIQUE1Qiw0QkFBNEIsY0FEZixNQUFNOzsyRkFDbkIsNEJBQTRCO2tCQUR4QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBSZXBsYWNlYWJsZUNvbXBvbmVudHMgfSBmcm9tICcuLi9tb2RlbHMvcmVwbGFjZWFibGUtY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IEludGVybmFsU3RvcmUgfSBmcm9tICcuLi91dGlscy9pbnRlcm5hbC1zdG9yZS11dGlscyc7XHJcbmltcG9ydCB7IHJlbG9hZFJvdXRlIH0gZnJvbSAnLi4vdXRpbHMvcm91dGUtdXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFJlcGxhY2VhYmxlQ29tcG9uZW50c1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XHJcbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZTogSW50ZXJuYWxTdG9yZTxSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnRbXT47XHJcblxyXG4gIGdldCByZXBsYWNlYWJsZUNvbXBvbmVudHMkKCk6IE9ic2VydmFibGU8UmVwbGFjZWFibGVDb21wb25lbnRzLlJlcGxhY2VhYmxlQ29tcG9uZW50W10+IHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlU3RhdGUoc3RhdGUgPT4gc3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlcGxhY2VhYmxlQ29tcG9uZW50cygpOiBSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZTtcclxuICB9XHJcblxyXG4gIGdldCBvblVwZGF0ZSQoKTogT2JzZXJ2YWJsZTxSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VVcGRhdGUoc3RhdGUgPT4gc3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnN0b3JlID0gbmV3IEludGVybmFsU3RvcmUoW10gYXMgUmVwbGFjZWFibGVDb21wb25lbnRzLlJlcGxhY2VhYmxlQ29tcG9uZW50W10pO1xyXG4gIH1cclxuXHJcbiAgYWRkKHJlcGxhY2VhYmxlQ29tcG9uZW50OiBSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnQsIHJlbG9hZD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IHJlcGxhY2VhYmxlQ29tcG9uZW50cyA9IFsuLi50aGlzLnN0b3JlLnN0YXRlXTtcclxuXHJcbiAgICBjb25zdCBpbmRleCA9IHJlcGxhY2VhYmxlQ29tcG9uZW50cy5maW5kSW5kZXgoXHJcbiAgICAgIGNvbXBvbmVudCA9PiBjb21wb25lbnQua2V5ID09PSByZXBsYWNlYWJsZUNvbXBvbmVudC5rZXksXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIHJlcGxhY2VhYmxlQ29tcG9uZW50c1tpbmRleF0gPSByZXBsYWNlYWJsZUNvbXBvbmVudDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlcGxhY2VhYmxlQ29tcG9uZW50cy5wdXNoKHJlcGxhY2VhYmxlQ29tcG9uZW50KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN0b3JlLnNldChyZXBsYWNlYWJsZUNvbXBvbmVudHMpO1xyXG5cclxuICAgIGlmIChyZWxvYWQpIHJlbG9hZFJvdXRlKHRoaXMucm91dGVyLCB0aGlzLm5nWm9uZSk7XHJcbiAgfVxyXG5cclxuICBnZXQocmVwbGFjZWFibGVDb21wb25lbnRLZXk6IHN0cmluZyk6IFJlcGxhY2VhYmxlQ29tcG9uZW50cy5SZXBsYWNlYWJsZUNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXBsYWNlYWJsZUNvbXBvbmVudHMuZmluZChjb21wb25lbnQgPT4gY29tcG9uZW50LmtleSA9PT0gcmVwbGFjZWFibGVDb21wb25lbnRLZXkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0JChyZXBsYWNlYWJsZUNvbXBvbmVudEtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnQgfCB1bmRlZmluZWQ+IHtcclxuICAgIHJldHVybiB0aGlzLnJlcGxhY2VhYmxlQ29tcG9uZW50cyQucGlwZShcclxuICAgICAgbWFwKGNvbXBvbmVudHMgPT4gY29tcG9uZW50cy5maW5kKGNvbXBvbmVudCA9PiBjb21wb25lbnQua2V5ID09PSByZXBsYWNlYWJsZUNvbXBvbmVudEtleSkpLFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19","import { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { IS_EXTERNAL_REQUEST } from '../tokens/http-context.token';\nimport * as i0 from \"@angular/core\";\n// source : https://github.com/armanozak/demo-angular-server-specific-interceptors\nexport class ExternalHttpClient extends HttpClient {\n request(first, url, options = {}) {\n if (typeof first === 'string') {\n this.#setPlaceholderContext(options);\n return super.request(first, url || '', options);\n }\n this.#setPlaceholderContext(first);\n return super.request(first);\n }\n #setPlaceholderContext(optionsOrRequest) {\n optionsOrRequest.context ??= new HttpContext();\n optionsOrRequest.context.set(IS_EXTERNAL_REQUEST, true);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExternalHttpClient, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExternalHttpClient, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExternalHttpClient, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvY2xpZW50cy9odHRwLmNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRW5FLGtGQUFrRjtBQUlsRixNQUFNLE9BQU8sa0JBQW1CLFNBQVEsVUFBVTtJQUN2QyxPQUFPLENBQ2QsS0FBZ0MsRUFDaEMsR0FBWSxFQUNaLFVBQTBCLEVBQUU7UUFFNUIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDRCxzQkFBc0IsQ0FBQyxnQkFBMkM7UUFDaEUsZ0JBQWdCLENBQUMsT0FBTyxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7UUFDL0MsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDOzhHQWpCVSxrQkFBa0I7a0hBQWxCLGtCQUFrQixjQUZqQixNQUFNOzsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cENvbnRleHQsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSVNfRVhURVJOQUxfUkVRVUVTVCB9IGZyb20gJy4uL3Rva2Vucy9odHRwLWNvbnRleHQudG9rZW4nO1xyXG5cclxuLy8gc291cmNlIDogaHR0cHM6Ly9naXRodWIuY29tL2FybWFub3phay9kZW1vLWFuZ3VsYXItc2VydmVyLXNwZWNpZmljLWludGVyY2VwdG9yc1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxIdHRwQ2xpZW50IGV4dGVuZHMgSHR0cENsaWVudCB7XHJcbiAgb3ZlcnJpZGUgcmVxdWVzdChcclxuICAgIGZpcnN0OiBzdHJpbmcgfCBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gICAgdXJsPzogc3RyaW5nLFxyXG4gICAgb3B0aW9uczogUmVxdWVzdE9wdGlvbnMgPSB7fSxcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKHR5cGVvZiBmaXJzdCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhpcy4jc2V0UGxhY2Vob2xkZXJDb250ZXh0KG9wdGlvbnMpO1xyXG4gICAgICByZXR1cm4gc3VwZXIucmVxdWVzdChmaXJzdCwgdXJsIHx8ICcnLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLiNzZXRQbGFjZWhvbGRlckNvbnRleHQoZmlyc3QpO1xyXG4gICAgcmV0dXJuIHN1cGVyLnJlcXVlc3QoZmlyc3QpO1xyXG4gIH1cclxuICAjc2V0UGxhY2Vob2xkZXJDb250ZXh0KG9wdGlvbnNPclJlcXVlc3Q6IHsgY29udGV4dD86IEh0dHBDb250ZXh0IH0pIHtcclxuICAgIG9wdGlvbnNPclJlcXVlc3QuY29udGV4dCA/Pz0gbmV3IEh0dHBDb250ZXh0KCk7XHJcbiAgICBvcHRpb25zT3JSZXF1ZXN0LmNvbnRleHQuc2V0KElTX0VYVEVSTkFMX1JFUVVFU1QsIHRydWUpO1xyXG4gIH1cclxufVxyXG5cclxudHlwZSBSZXF1ZXN0T3B0aW9ucyA9IFBhcmFtZXRlcnM8SHR0cENsaWVudFsncmVxdWVzdCddPlsyXTtcclxuIl19","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { ExternalHttpClient } from '../clients/http.client';\nimport { CORE_OPTIONS } from '../tokens/options.token';\nimport { isUndefinedOrEmptyString } from '../utils/common-utils';\nimport { EnvironmentService } from './environment.service';\nimport { HttpErrorReporterService } from './http-error-reporter.service';\nimport * as i0 from \"@angular/core\";\nexport class RestService {\n constructor() {\n this.options = inject(CORE_OPTIONS);\n this.http = inject(HttpClient);\n this.externalHttp = inject(ExternalHttpClient);\n this.environment = inject(EnvironmentService);\n this.httpErrorReporter = inject(HttpErrorReporterService);\n }\n getApiFromStore(apiName) {\n return this.environment.getApiUrl(apiName);\n }\n handleError(err) {\n this.httpErrorReporter.reportError(err);\n return throwError(() => err);\n }\n request(request, config, api) {\n config = config || {};\n api = api || this.getApiFromStore(config.apiName);\n const { method, params, ...options } = request;\n const { observe = \"body\" /* Rest.Observe.Body */, skipHandleError, responseType = \"json\" /* Rest.ResponseType.JSON */ } = config;\n const url = this.removeDuplicateSlashes(api + request.url);\n const httpClient = this.getHttpClient(config.skipAddingHeader);\n return httpClient\n .request(method, url, {\n observe,\n responseType: responseType,\n ...(params && {\n params: this.getParams(params, config.httpParamEncoder),\n }),\n ...options,\n })\n .pipe(catchError(err => (skipHandleError ? throwError(() => err) : this.handleError(err))));\n }\n getHttpClient(isExternal) {\n return isExternal ? this.externalHttp : this.http;\n }\n getParams(params, encoder) {\n const filteredParams = Object.entries(params).reduce((acc, [key, value]) => {\n if (isUndefinedOrEmptyString(value))\n return acc;\n if (value === null && !this.options.sendNullsAsQueryParam)\n return acc;\n acc[key] = value;\n return acc;\n }, {});\n return encoder\n ? new HttpParams({ encoder, fromObject: filteredParams })\n : new HttpParams({ fromObject: filteredParams });\n }\n removeDuplicateSlashes(url) {\n return url.replace(/([^:]\\/)\\/+/g, '$1');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RestService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RestService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RestService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3Jlc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFzQixVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBS3pFLE1BQU0sT0FBTyxXQUFXO0lBSHhCO1FBSVksWUFBTyxHQUFHLE1BQU0sQ0FBVyxZQUFZLENBQUMsQ0FBQztRQUN6QyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDMUMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6QyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztLQXNEaEU7SUFuRFcsZUFBZSxDQUFDLE9BQTJCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0Ms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QUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbWV0ZXJDb2RlYywgSHR0cFBhcmFtcywgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEV4dGVybmFsSHR0cENsaWVudCB9IGZyb20gJy4uL2NsaWVudHMvaHR0cC5jbGllbnQnO1xyXG5pbXBvcnQgeyBBQlAgfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uJztcclxuaW1wb3J0IHsgUmVzdCB9IGZyb20gJy4uL21vZGVscy9yZXN0JztcclxuaW1wb3J0IHsgQ09SRV9PUFRJT05TIH0gZnJvbSAnLi4vdG9rZW5zL29wdGlvbnMudG9rZW4nO1xyXG5pbXBvcnQgeyBpc1VuZGVmaW5lZE9yRW1wdHlTdHJpbmcgfSBmcm9tICcuLi91dGlscy9jb21tb24tdXRpbHMnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuL2Vudmlyb25tZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2UgfSBmcm9tICcuL2h0dHAtZXJyb3ItcmVwb3J0ZXIuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFNlcnZpY2Uge1xyXG4gIHByb3RlY3RlZCBvcHRpb25zID0gaW5qZWN0PEFCUC5Sb290PihDT1JFX09QVElPTlMpO1xyXG4gIHByb3RlY3RlZCBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG4gIHByb3RlY3RlZCBleHRlcm5hbEh0dHAgPSBpbmplY3QoRXh0ZXJuYWxIdHRwQ2xpZW50KTtcclxuICBwcm90ZWN0ZWQgZW52aXJvbm1lbnQgPSBpbmplY3QoRW52aXJvbm1lbnRTZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgaHR0cEVycm9yUmVwb3J0ZXIgPSBpbmplY3QoSHR0cEVycm9yUmVwb3J0ZXJTZXJ2aWNlKTtcclxuXHJcblxyXG4gIHByb3RlY3RlZCBnZXRBcGlGcm9tU3RvcmUoYXBpTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVudmlyb25tZW50LmdldEFwaVVybChhcGlOYW1lKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yKGVycjogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuaHR0cEVycm9yUmVwb3J0ZXIucmVwb3J0RXJyb3IoZXJyKTtcclxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XHJcbiAgfVxyXG5cclxuICByZXF1ZXN0PFQsIFI+KFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8VD4gfCBSZXN0LlJlcXVlc3Q8VD4sXHJcbiAgICBjb25maWc/OiBSZXN0LkNvbmZpZyxcclxuICAgIGFwaT86IHN0cmluZyxcclxuICApOiBPYnNlcnZhYmxlPFI+IHtcclxuICAgIGNvbmZpZyA9IGNvbmZpZyB8fCAoe30gYXMgUmVzdC5Db25maWcpO1xyXG4gICAgYXBpID0gYXBpIHx8IHRoaXMuZ2V0QXBpRnJvbVN0b3JlKGNvbmZpZy5hcGlOYW1lKTtcclxuICAgIGNvbnN0IHsgbWV0aG9kLCBwYXJhbXMsIC4uLm9wdGlvbnMgfSA9IHJlcXVlc3Q7XHJcbiAgICBjb25zdCB7IG9ic2VydmUgPSBSZXN0Lk9ic2VydmUuQm9keSwgc2tpcEhhbmRsZUVycm9yLCByZXNwb25zZVR5cGUgPSBSZXN0LlJlc3BvbnNlVHlwZS5KU09OIH0gPSBjb25maWc7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLnJlbW92ZUR1cGxpY2F0ZVNsYXNoZXMoYXBpICsgcmVxdWVzdC51cmwpO1xyXG5cclxuICAgIGNvbnN0IGh0dHBDbGllbnQ6IEh0dHBDbGllbnQgPSB0aGlzLmdldEh0dHBDbGllbnQoY29uZmlnLnNraXBBZGRpbmdIZWFkZXIpO1xyXG4gICAgcmV0dXJuIGh0dHBDbGllbnRcclxuICAgICAgLnJlcXVlc3Q8Uj4obWV0aG9kLCB1cmwsIHtcclxuICAgICAgICBvYnNlcnZlLFxyXG4gICAgICAgIHJlc3BvbnNlVHlwZTogcmVzcG9uc2VUeXBlIGFzIGFueSxcclxuICAgICAgICAuLi4ocGFyYW1zICYmIHtcclxuICAgICAgICAgIHBhcmFtczogdGhpcy5nZXRQYXJhbXMocGFyYW1zLCBjb25maWcuaHR0cFBhcmFtRW5jb2RlciksXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgfSBhcyBhbnkpXHJcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IoZXJyID0+IChza2lwSGFuZGxlRXJyb3IgPyB0aHJvd0Vycm9yKCgpID0+IGVycikgOiB0aGlzLmhhbmRsZUVycm9yKGVycikpKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgZ2V0SHR0cENsaWVudChpc0V4dGVybmFsOiBib29sZWFuKSB7XHJcbiAgICByZXR1cm4gaXNFeHRlcm5hbCA/IHRoaXMuZXh0ZXJuYWxIdHRwIDogdGhpcy5odHRwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXJhbXMocGFyYW1zOiBSZXN0LlBhcmFtcywgZW5jb2Rlcj86IEh0dHBQYXJhbWV0ZXJDb2RlYyk6IEh0dHBQYXJhbXMge1xyXG4gICAgY29uc3QgZmlsdGVyZWRQYXJhbXMgPSBPYmplY3QuZW50cmllcyhwYXJhbXMpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgaWYgKGlzVW5kZWZpbmVkT3JFbXB0eVN0cmluZyh2YWx1ZSkpIHJldHVybiBhY2M7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiAhdGhpcy5vcHRpb25zLnNlbmROdWxsc0FzUXVlcnlQYXJhbSkgcmV0dXJuIGFjYztcclxuICAgICAgYWNjW2tleV0gPSB2YWx1ZTtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIHt9IGFzIGFueSk7XHJcbiAgICByZXR1cm4gZW5jb2RlclxyXG4gICAgICA/IG5ldyBIdHRwUGFyYW1zKHsgZW5jb2RlciwgZnJvbU9iamVjdDogZmlsdGVyZWRQYXJhbXMgfSlcclxuICAgICAgOiBuZXcgSHR0cFBhcmFtcyh7IGZyb21PYmplY3Q6IGZpbHRlcmVkUGFyYW1zIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVEdXBsaWNhdGVTbGFzaGVzKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB1cmwucmVwbGFjZSgvKFteOl1cXC8pXFwvKy9nLCAnJDEnKTtcclxuICB9XHJcbn1cclxuIl19","import { Injectable, inject, signal } from '@angular/core';\nimport { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router, } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nexport const NavigationEvent = {\n Cancel: NavigationCancel,\n End: NavigationEnd,\n Error: NavigationError,\n Start: NavigationStart,\n};\nexport class RouterEvents {\n #previousNavigation;\n #currentNavigation;\n constructor() {\n this.router = inject(Router);\n this.#previousNavigation = signal(undefined);\n this.previousNavigation = this.#previousNavigation.asReadonly();\n this.#currentNavigation = signal(undefined);\n this.currentNavigation = this.#currentNavigation.asReadonly();\n this.listenToNavigation();\n }\n listenToNavigation() {\n const routerEvent$ = this.router.events.pipe(filter(e => e instanceof NavigationEvent.End && !e.url.includes('error')));\n routerEvent$.subscribe(event => {\n this.#previousNavigation.set(this.currentNavigation());\n this.#currentNavigation.set(event.url);\n });\n }\n getEvents(...eventTypes) {\n const filterRouterEvents = (event) => eventTypes.some(type => event instanceof type);\n return this.router.events.pipe(filter(filterRouterEvents));\n }\n getNavigationEvents(...navigationEventKeys) {\n const filterNavigationEvents = (event) => navigationEventKeys.some(key => event instanceof NavigationEvent[key]);\n return this.router.events.pipe(filter(filterNavigationEvents));\n }\n getAllEvents() {\n return this.router.events;\n }\n getAllNavigationEvents() {\n const keys = Object.keys(NavigationEvent);\n return this.getNavigationEvents(...keys);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RouterEvents, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RouterEvents, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RouterEvents, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLWV2ZW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3JvdXRlci1ldmVudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsRUFDZixNQUFNLEdBR1AsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXhDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixNQUFNLEVBQUUsZ0JBQWdCO0lBQ3hCLEdBQUcsRUFBRSxhQUFhO0lBQ2xCLEtBQUssRUFBRSxlQUFlO0lBQ3RCLEtBQUssRUFBRSxlQUFlO0NBQ3ZCLENBQUM7QUFHRixNQUFNLE9BQU8sWUFBWTtJQUdkLG1CQUFtQixDQUF5QztJQUc1RCxrQkFBa0IsQ0FBeUM7SUFHcEU7UUFSbUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVsQyx3QkFBbUIsR0FBRyxNQUFNLENBQXFCLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLHVCQUFrQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsRCx1QkFBa0IsR0FBRyxNQUFNLENBQXFCLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLHNCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUd2RCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRVMsa0JBQWtCO1FBQzFCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUM3QyxDQUFDO1FBRS9CLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBb0MsR0FBRyxVQUFhO1FBQzNELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUM7UUFFNUYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsbUJBQW1CLENBQWdDLEdBQUcsbUJBQXNCO1FBTzFFLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFZLEVBQW9DLEVBQUUsQ0FDaEYsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXpFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzVCLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQXdCLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDOzhHQWxEVSxZQUFZO2tIQUFaLFlBQVksY0FEQyxNQUFNOzsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUeXBlLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIE5hdmlnYXRpb25DYW5jZWwsXHJcbiAgTmF2aWdhdGlvbkVuZCxcclxuICBOYXZpZ2F0aW9uRXJyb3IsXHJcbiAgTmF2aWdhdGlvblN0YXJ0LFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXJFdmVudCxcclxuICBFdmVudCxcclxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmV4cG9ydCBjb25zdCBOYXZpZ2F0aW9uRXZlbnQgPSB7XHJcbiAgQ2FuY2VsOiBOYXZpZ2F0aW9uQ2FuY2VsLFxyXG4gIEVuZDogTmF2aWdhdGlvbkVuZCxcclxuICBFcnJvcjogTmF2aWdhdGlvbkVycm9yLFxyXG4gIFN0YXJ0OiBOYXZpZ2F0aW9uU3RhcnQsXHJcbn07XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgUm91dGVyRXZlbnRzIHtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG4gIHJlYWRvbmx5ICNwcmV2aW91c05hdmlnYXRpb24gPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIHByZXZpb3VzTmF2aWdhdGlvbiA9IHRoaXMuI3ByZXZpb3VzTmF2aWdhdGlvbi5hc1JlYWRvbmx5KCk7XHJcblxyXG4gIHJlYWRvbmx5ICNjdXJyZW50TmF2aWdhdGlvbiA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcbiAgY3VycmVudE5hdmlnYXRpb24gPSB0aGlzLiNjdXJyZW50TmF2aWdhdGlvbi5hc1JlYWRvbmx5KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5saXN0ZW5Ub05hdmlnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBsaXN0ZW5Ub05hdmlnYXRpb24oKTogdm9pZCB7XHJcbiAgICBjb25zdCByb3V0ZXJFdmVudCQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcclxuICAgICAgZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FdmVudC5FbmQgJiYgIWUudXJsLmluY2x1ZGVzKCdlcnJvcicpKVxyXG4gICAgKSBhcyBPYnNlcnZhYmxlPE5hdmlnYXRpb25FbmQ+O1xyXG4gICAgXHJcbiAgICByb3V0ZXJFdmVudCQuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgdGhpcy4jcHJldmlvdXNOYXZpZ2F0aW9uLnNldCh0aGlzLmN1cnJlbnROYXZpZ2F0aW9uKCkpO1xyXG4gICAgICB0aGlzLiNjdXJyZW50TmF2aWdhdGlvbi5zZXQoZXZlbnQudXJsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXZlbnRzPFQgZXh0ZW5kcyBSb3V0ZXJFdmVudENvbnN0cnVjdG9ycz4oLi4uZXZlbnRUeXBlczogVCkge1xyXG4gICAgY29uc3QgZmlsdGVyUm91dGVyRXZlbnRzID0gKGV2ZW50OiBFdmVudCkgPT4gZXZlbnRUeXBlcy5zb21lKHR5cGUgPT4gZXZlbnQgaW5zdGFuY2VvZiB0eXBlKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGZpbHRlclJvdXRlckV2ZW50cykpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmF2aWdhdGlvbkV2ZW50czxUIGV4dGVuZHMgTmF2aWdhdGlvbkV2ZW50S2V5cz4oLi4ubmF2aWdhdGlvbkV2ZW50S2V5czogVCkge1xyXG4gICAgdHlwZSBGaWx0ZXJlZE5hdmlnYXRpb25FdmVudCA9IFQgZXh0ZW5kcyAoaW5mZXIgS2V5KVtdXHJcbiAgICAgID8gS2V5IGV4dGVuZHMgTmF2aWdhdGlvbkV2ZW50S2V5XHJcbiAgICAgICAgPyBJbnN0YW5jZVR5cGU8TmF2aWdhdGlvbkV2ZW50VHlwZVtLZXldPlxyXG4gICAgICAgIDogbmV2ZXJcclxuICAgICAgOiBuZXZlcjtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJOYXZpZ2F0aW9uRXZlbnRzID0gKGV2ZW50OiBFdmVudCk6IGV2ZW50IGlzIEZpbHRlcmVkTmF2aWdhdGlvbkV2ZW50ID0+XHJcbiAgICAgIG5hdmlnYXRpb25FdmVudEtleXMuc29tZShrZXkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXZlbnRba2V5XSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihmaWx0ZXJOYXZpZ2F0aW9uRXZlbnRzKSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxFdmVudHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIuZXZlbnRzO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsTmF2aWdhdGlvbkV2ZW50cygpIHtcclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhOYXZpZ2F0aW9uRXZlbnQpIGFzIE5hdmlnYXRpb25FdmVudEtleXM7XHJcbiAgICByZXR1cm4gdGhpcy5nZXROYXZpZ2F0aW9uRXZlbnRzKC4uLmtleXMpO1xyXG4gIH1cclxufVxyXG5cclxudHlwZSBSb3V0ZXJFdmVudENvbnN0cnVjdG9ycyA9IFtUeXBlPFJvdXRlckV2ZW50PiwgLi4uVHlwZTxSb3V0ZXJFdmVudD5bXV07XHJcblxyXG50eXBlIE5hdmlnYXRpb25FdmVudEtleXMgPSBbTmF2aWdhdGlvbkV2ZW50S2V5LCAuLi5OYXZpZ2F0aW9uRXZlbnRLZXlbXV07XHJcblxyXG50eXBlIE5hdmlnYXRpb25FdmVudFR5cGUgPSB0eXBlb2YgTmF2aWdhdGlvbkV2ZW50O1xyXG5cclxuZXhwb3J0IHR5cGUgTmF2aWdhdGlvbkV2ZW50S2V5ID0ga2V5b2YgTmF2aWdhdGlvbkV2ZW50VHlwZTtcclxuIl19","import { Injectable, Injector, inject } from '@angular/core';\nimport { NavigationStart } from '@angular/router';\nimport { of, Subject, timer } from 'rxjs';\nimport { map, mapTo, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { LOADER_DELAY } from '../tokens/lodaer-delay.token';\nimport { InternalStore } from '../utils/internal-store-utils';\nimport { RouterEvents } from './router-events.service';\nimport * as i0 from \"@angular/core\";\nexport class RouterWaitService {\n constructor() {\n this.routerEvents = inject(RouterEvents);\n this.store = new InternalStore({ loading: false });\n this.destroy$ = new Subject();\n const injector = inject(Injector);\n this.delay = injector.get(LOADER_DELAY, 500);\n this.updateLoadingStatusOnNavigationEvents();\n }\n updateLoadingStatusOnNavigationEvents() {\n this.routerEvents\n .getAllNavigationEvents()\n .pipe(map(event => event instanceof NavigationStart), switchMap(condition => condition\n ? this.delay === 0\n ? of(true)\n : timer(this.delay || 0).pipe(mapTo(true), takeUntil(this.destroy$))\n : of(false)), tap(() => this.destroy$.next()))\n .subscribe(status => {\n this.setLoading(status);\n });\n }\n getLoading() {\n return this.store.state.loading;\n }\n getLoading$() {\n return this.store.sliceState(({ loading }) => loading);\n }\n updateLoading$() {\n return this.store.sliceUpdate(({ loading }) => loading);\n }\n setLoading(loading) {\n this.store.patch({ loading });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RouterWaitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RouterWaitService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RouterWaitService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXdhaXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9yb3V0ZXItd2FpdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBU3ZELE1BQU0sT0FBTyxpQkFBaUI7SUFNNUI7UUFMUSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVwQyxVQUFLLEdBQUcsSUFBSSxhQUFhLENBQWtCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0QsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFHckMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVPLHFDQUFxQztRQUMzQyxJQUFJLENBQUMsWUFBWTthQUNkLHNCQUFzQixFQUFFO2FBQ3hCLElBQUksQ0FDSCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksZUFBZSxDQUFDLEVBQzlDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUNwQixTQUFTO1lBQ1AsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUNkLEVBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FDaEM7YUFDQSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQjtRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs4R0E5Q1UsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXJ0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgb2YsIFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgbWFwVG8sIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IExPQURFUl9ERUxBWSB9IGZyb20gJy4uL3Rva2Vucy9sb2RhZXItZGVsYXkudG9rZW4nO1xyXG5pbXBvcnQgeyBJbnRlcm5hbFN0b3JlIH0gZnJvbSAnLi4vdXRpbHMvaW50ZXJuYWwtc3RvcmUtdXRpbHMnO1xyXG5pbXBvcnQgeyBSb3V0ZXJFdmVudHMgfSBmcm9tICcuL3JvdXRlci1ldmVudHMuc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlcldhaXRTdGF0ZSB7XHJcbiAgbG9hZGluZzogYm9vbGVhbjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvdXRlcldhaXRTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJvdXRlckV2ZW50cyA9IGluamVjdChSb3V0ZXJFdmVudHMpO1xyXG5cclxuICBwcml2YXRlIHN0b3JlID0gbmV3IEludGVybmFsU3RvcmU8Um91dGVyV2FpdFN0YXRlPih7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgZGVsYXk6IG51bWJlcjtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuXHJcbiAgICB0aGlzLmRlbGF5ID0gaW5qZWN0b3IuZ2V0KExPQURFUl9ERUxBWSwgNTAwKTtcclxuICAgIHRoaXMudXBkYXRlTG9hZGluZ1N0YXR1c09uTmF2aWdhdGlvbkV2ZW50cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVMb2FkaW5nU3RhdHVzT25OYXZpZ2F0aW9uRXZlbnRzKCkge1xyXG4gICAgdGhpcy5yb3V0ZXJFdmVudHNcclxuICAgICAgLmdldEFsbE5hdmlnYXRpb25FdmVudHMoKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpLFxyXG4gICAgICAgIHN3aXRjaE1hcChjb25kaXRpb24gPT5cclxuICAgICAgICAgIGNvbmRpdGlvblxyXG4gICAgICAgICAgICA/IHRoaXMuZGVsYXkgPT09IDBcclxuICAgICAgICAgICAgICA/IG9mKHRydWUpXHJcbiAgICAgICAgICAgICAgOiB0aW1lcih0aGlzLmRlbGF5IHx8IDApLnBpcGUobWFwVG8odHJ1ZSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgOiBvZihmYWxzZSksXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5kZXN0cm95JC5uZXh0KCkpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoc3RhdHVzID0+IHtcclxuICAgICAgICB0aGlzLnNldExvYWRpbmcoc3RhdHVzKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2FkaW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc3RhdGUubG9hZGluZztcclxuICB9XHJcblxyXG4gIGdldExvYWRpbmckKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VTdGF0ZSgoeyBsb2FkaW5nIH0pID0+IGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTG9hZGluZyQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVVwZGF0ZSgoeyBsb2FkaW5nIH0pID0+IGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnN0b3JlLnBhdGNoKHsgbG9hZGluZyB9KTtcclxuICB9XHJcbn1cclxuIl19","import { Injectable, Injector, inject } from '@angular/core';\nimport { BehaviorSubject, map } from 'rxjs';\nimport { OTHERS_GROUP } from '../tokens';\nimport { pushValueTo } from '../utils/array-utils';\nimport { BaseTreeNode, createTreeFromList, createGroupMap, } from '../utils/tree-utils';\nimport { ConfigStateService } from './config-state.service';\nimport { PermissionService } from './permission.service';\nimport { SORT_COMPARE_FUNC } from '../tokens/compare-func.token';\nimport * as i0 from \"@angular/core\";\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport class AbstractTreeService {\n constructor() {\n this._flat$ = new BehaviorSubject([]);\n this._tree$ = new BehaviorSubject([]);\n this._visible$ = new BehaviorSubject([]);\n this.shouldSingularizeRoutes = true;\n }\n get flat() {\n return this._flat$.value;\n }\n get flat$() {\n return this._flat$.asObservable();\n }\n get tree() {\n return this._tree$.value;\n }\n get tree$() {\n return this._tree$.asObservable();\n }\n get visible() {\n return this._visible$.value;\n }\n get visible$() {\n return this._visible$.asObservable();\n }\n filterWith(setOrMap) {\n return this._flat$.value.filter(item => !setOrMap.has(item[this.id]));\n }\n findItemsToRemove(set) {\n return this._flat$.value.reduce((acc, item) => {\n if (!acc.has(item[this.parentId])) {\n return acc;\n }\n const childSet = new Set([item[this.id]]);\n const children = this.findItemsToRemove(childSet);\n return new Set([...acc, ...children]);\n }, set);\n }\n publish(flatItems) {\n this._flat$.next(flatItems);\n this._tree$.next(this.createTree(flatItems));\n this._visible$.next(this.createTree(flatItems.filter(item => !this.hide(item))));\n return flatItems;\n }\n createTree(items) {\n return createTreeFromList(items, item => item[this.id], item => item[this.parentId], item => BaseTreeNode.create(item));\n }\n createGroupedTree(list) {\n const map = createGroupMap(list, this.othersGroup);\n if (!map) {\n return undefined;\n }\n return Array.from(map, ([key, items]) => ({ group: key, items }));\n }\n add(items) {\n let flatItems = [];\n if (!this.shouldSingularizeRoutes) {\n flatItems = [...this.flat, ...items];\n }\n if (this.shouldSingularizeRoutes) {\n const map = new Map();\n items.forEach(item => map.set(item[this.id], item));\n flatItems = this.filterWith(map);\n map.forEach(pushValueTo(flatItems));\n }\n flatItems.sort(this.sort);\n return this.publish(flatItems);\n }\n find(predicate, tree = this.tree) {\n return tree.reduce((acc, node) => {\n if (acc) {\n return acc;\n }\n if (predicate(node)) {\n return node;\n }\n return this.find(predicate, node.children);\n }, null);\n }\n patch(identifier, props) {\n const flatItems = this._flat$.value;\n const index = flatItems.findIndex(item => item[this.id] === identifier);\n if (index < 0) {\n return false;\n }\n flatItems[index] = { ...flatItems[index], ...props };\n flatItems.sort(this.sort);\n return this.publish(flatItems);\n }\n refresh() {\n return this.add([]);\n }\n remove(identifiers) {\n const set = new Set();\n identifiers.forEach(id => set.add(id));\n const setToRemove = this.findItemsToRemove(set);\n const flatItems = this.filterWith(setToRemove);\n return this.publish(flatItems);\n }\n removeByParam(params) {\n if (!params) {\n return null;\n }\n const keys = Object.keys(params);\n if (keys.length === 0) {\n return null;\n }\n const excludedList = this.flat.filter(item => keys.every(key => item[key] === params[key]));\n if (!excludedList?.length) {\n return null;\n }\n for (const item of excludedList) {\n this.removeByParam({ [this.parentId]: item[this.id] });\n }\n const flatItems = this.flat.filter(item => !excludedList.includes(item));\n return this.publish(flatItems);\n }\n search(params, tree = this.tree) {\n const searchKeys = Object.keys(params);\n return tree.reduce((acc, node) => {\n if (acc) {\n return acc;\n }\n if (searchKeys.every(key => node[key] === params[key])) {\n return node;\n }\n return this.search(params, node.children);\n }, null);\n }\n setSingularizeStatus(singularize = true) {\n this.shouldSingularizeRoutes = singularize;\n }\n}\nexport class AbstractNavTreeService extends AbstractTreeService {\n constructor() {\n super();\n this.injector = inject(Injector);\n this.id = 'name';\n this.parentId = 'parentName';\n this.hide = (item) => item.invisible || !this.isGranted(item);\n this.sort = (a, b) => {\n return this.compareFunc(a, b);\n };\n const injector = this.injector;\n const configState = this.injector.get(ConfigStateService);\n this.subscription = configState\n .createOnUpdateStream(state => state)\n .subscribe(() => this.refresh());\n this.permissionService = injector.get(PermissionService);\n this.othersGroup = injector.get(OTHERS_GROUP);\n this.compareFunc = injector.get(SORT_COMPARE_FUNC);\n }\n isGranted({ requiredPolicy }) {\n return this.permissionService.getGrantedPolicy(requiredPolicy);\n }\n hasChildren(identifier) {\n const node = this.find(item => item[this.id] === identifier);\n return Boolean(node?.children?.length);\n }\n hasInvisibleChild(identifier) {\n const node = this.find(item => item[this.id] === identifier);\n return node?.children?.some(child => child.invisible) || false;\n }\n /* istanbul ignore next */\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbstractNavTreeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbstractNavTreeService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbstractNavTreeService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\nexport class RoutesService extends AbstractNavTreeService {\n hasPathOrChild(item) {\n return Boolean(item.path) || this.hasChildren(item.name);\n }\n get groupedVisible() {\n return this.createGroupedTree(this.visible.filter(item => this.hasPathOrChild(item)));\n }\n get groupedVisible$() {\n return this.visible$.pipe(map(items => items.filter(item => this.hasPathOrChild(item))), map(visible => this.createGroupedTree(visible)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RoutesService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RoutesService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RoutesService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvcm91dGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQTRCLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLGtCQUFrQixFQUdsQixjQUFjLEdBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFakUsd0RBQXdEO0FBQ3hELE1BQU0sT0FBZ0IsbUJBQW1CO0lBQXpDO1FBTVUsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDaEQsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFnQixFQUFFLENBQUMsQ0FBQztRQUdqRCw0QkFBdUIsR0FBRyxJQUFJLENBQUM7SUF3SzNDLENBQUM7SUF0S0MsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFB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QkFBMEI7SUFDMUIsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQzs4R0E5Q21CLHNCQUFzQjtrSEFBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQUQzQyxVQUFVOztBQW1EWCxNQUFNLE9BQU8sYUFBYyxTQUFRLHNCQUFpQztJQUMxRCxjQUFjLENBQUMsSUFBeUI7UUFDOUMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3ZCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDN0QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ2hELENBQUM7SUFDSixDQUFDOzhHQWRVLGFBQWE7a0hBQWIsYUFBYSxjQURBLE1BQU07OzJGQUNuQixhQUFhO2tCQUR6QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3ksIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgbWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFCUCB9IGZyb20gJy4uL21vZGVscy9jb21tb24nO1xyXG5pbXBvcnQgeyBPVEhFUlNfR1JPVVAgfSBmcm9tICcuLi90b2tlbnMnO1xyXG5pbXBvcnQgeyBwdXNoVmFsdWVUbyB9IGZyb20gJy4uL3V0aWxzL2FycmF5LXV0aWxzJztcclxuaW1wb3J0IHtcclxuICBCYXNlVHJlZU5vZGUsXHJcbiAgY3JlYXRlVHJlZUZyb21MaXN0LFxyXG4gIFRyZWVOb2RlLFxyXG4gIFJvdXRlR3JvdXAsXHJcbiAgY3JlYXRlR3JvdXBNYXAsXHJcbn0gZnJvbSAnLi4vdXRpbHMvdHJlZS11dGlscyc7XHJcbmltcG9ydCB7IENvbmZpZ1N0YXRlU2VydmljZSB9IGZyb20gJy4vY29uZmlnLXN0YXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4vcGVybWlzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU09SVF9DT01QQVJFX0ZVTkMgfSBmcm9tICcuLi90b2tlbnMvY29tcGFyZS1mdW5jLnRva2VuJztcclxuXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFRyZWVTZXJ2aWNlPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbF06IGFueSB9PiB7XHJcbiAgYWJzdHJhY3QgaWQ6IHN0cmluZztcclxuICBhYnN0cmFjdCBwYXJlbnRJZDogc3RyaW5nO1xyXG4gIGFic3RyYWN0IGhpZGU6IChpdGVtOiBUKSA9PiBib29sZWFuO1xyXG4gIGFic3RyYWN0IHNvcnQ6IChhOiBULCBiOiBUKSA9PiBudW1iZXI7XHJcblxyXG4gIHByaXZhdGUgX2ZsYXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KFtdKTtcclxuICBwcml2YXRlIF90cmVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VHJlZU5vZGU8VD5bXT4oW10pO1xyXG4gIHByaXZhdGUgX3Zpc2libGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmVlTm9kZTxUPltdPihbXSk7XHJcblxyXG4gIHByb3RlY3RlZCBvdGhlcnNHcm91cDogc3RyaW5nO1xyXG4gIHByb3RlY3RlZCBzaG91bGRTaW5ndWxhcml6ZVJvdXRlcyA9IHRydWU7XHJcblxyXG4gIGdldCBmbGF0KCk6IFRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmxhdCQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgZmxhdCQoKTogT2JzZXJ2YWJsZTxUW10+IHtcclxuICAgIHJldHVybiB0aGlzLl9mbGF0JC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIGdldCB0cmVlKCk6IFRyZWVOb2RlPFQ+W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RyZWUkLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRyZWUkKCk6IE9ic2VydmFibGU8VHJlZU5vZGU8VD5bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RyZWUkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZpc2libGUoKTogVHJlZU5vZGU8VD5bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZSQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgdmlzaWJsZSQoKTogT2JzZXJ2YWJsZTxUcmVlTm9kZTxUPltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZSQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlcldpdGgoc2V0T3JNYXA6IFNldDxzdHJpbmc+IHwgTWFwPHN0cmluZywgVD4pOiBUW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZsYXQkLnZhbHVlLmZpbHRlcihpdGVtID0+ICFzZXRPck1hcC5oYXMoaXRlbVt0aGlzLmlkXSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kSXRlbXNUb1JlbW92ZShzZXQ6IFNldDxzdHJpbmc+KTogU2V0PHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZsYXQkLnZhbHVlLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XHJcbiAgICAgIGlmICghYWNjLmhhcyhpdGVtW3RoaXMucGFyZW50SWRdKSkge1xyXG4gICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGNoaWxkU2V0ID0gbmV3IFNldChbaXRlbVt0aGlzLmlkXV0pO1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZmluZEl0ZW1zVG9SZW1vdmUoY2hpbGRTZXQpO1xyXG4gICAgICByZXR1cm4gbmV3IFNldChbLi4uYWNjLCAuLi5jaGlsZHJlbl0pO1xyXG4gICAgfSwgc2V0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHVibGlzaChmbGF0SXRlbXM6IFRbXSk6IFRbXSB7XHJcbiAgICB0aGlzLl9mbGF0JC5uZXh0KGZsYXRJdGVtcyk7XHJcbiAgICB0aGlzLl90cmVlJC5uZXh0KHRoaXMuY3JlYXRlVHJlZShmbGF0SXRlbXMpKTtcclxuICAgIHRoaXMuX3Zpc2libGUkLm5leHQodGhpcy5jcmVhdGVUcmVlKGZsYXRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhdGhpcy5oaWRlKGl0ZW0pKSkpO1xyXG4gICAgcmV0dXJuIGZsYXRJdGVtcztcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjcmVhdGVUcmVlKGl0ZW1zOiBUW10pOiBUcmVlTm9kZTxUPltdIHtcclxuICAgIHJldHVybiBjcmVhdGVUcmVlRnJvbUxpc3Q8VCwgVHJlZU5vZGU8VD4+KFxyXG4gICAgICBpdGVtcyxcclxuICAgICAgaXRlbSA9PiBpdGVtW3RoaXMuaWRdLFxyXG4gICAgICBpdGVtID0+IGl0ZW1bdGhpcy5wYXJlbnRJZF0sXHJcbiAgICAgIGl0ZW0gPT4gQmFzZVRyZWVOb2RlLmNyZWF0ZShpdGVtKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY3JlYXRlR3JvdXBlZFRyZWUobGlzdDogVHJlZU5vZGU8VD5bXSk6IFJvdXRlR3JvdXA8VD5bXSB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCBtYXAgPSBjcmVhdGVHcm91cE1hcDxUPihsaXN0LCB0aGlzLm90aGVyc0dyb3VwKTtcclxuICAgIGlmICghbWFwKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIEFycmF5LmZyb20obWFwLCAoW2tleSwgaXRlbXNdKSA9PiAoeyBncm91cDoga2V5LCBpdGVtcyB9KSk7XHJcbiAgfVxyXG5cclxuICBhZGQoaXRlbXM6IFRbXSk6IFRbXSB7XHJcbiAgICBsZXQgZmxhdEl0ZW1zOiBUW10gPSBbXTtcclxuXHJcbiAgICBpZiAoIXRoaXMuc2hvdWxkU2luZ3VsYXJpemVSb3V0ZXMpIHtcclxuICAgICAgZmxhdEl0ZW1zID0gWy4uLnRoaXMuZmxhdCwgLi4uaXRlbXNdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3VsZFNpbmd1bGFyaXplUm91dGVzKSB7XHJcbiAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBUPigpO1xyXG4gICAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4gbWFwLnNldChpdGVtW3RoaXMuaWRdLCBpdGVtKSk7XHJcbiAgICAgIGZsYXRJdGVtcyA9IHRoaXMuZmlsdGVyV2l0aChtYXApO1xyXG4gICAgICBtYXAuZm9yRWFjaChwdXNoVmFsdWVUbyhmbGF0SXRlbXMpKTtcclxuICAgIH1cclxuXHJcbiAgICBmbGF0SXRlbXMuc29ydCh0aGlzLnNvcnQpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnB1Ymxpc2goZmxhdEl0ZW1zKTtcclxuICB9XHJcblxyXG4gIGZpbmQocHJlZGljYXRlOiAoaXRlbTogVHJlZU5vZGU8VD4pID0+IGJvb2xlYW4sIHRyZWUgPSB0aGlzLnRyZWUpOiBUcmVlTm9kZTxUPiB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRyZWUucmVkdWNlPFRyZWVOb2RlPFQ+IHwgbnVsbD4oKGFjYywgbm9kZSkgPT4ge1xyXG4gICAgICBpZiAoYWNjKSB7XHJcbiAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHByZWRpY2F0ZShub2RlKSkge1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5maW5kKHByZWRpY2F0ZSwgbm9kZS5jaGlsZHJlbik7XHJcbiAgICB9LCBudWxsKTtcclxuICB9XHJcblxyXG4gIHBhdGNoKGlkZW50aWZpZXI6IHN0cmluZywgcHJvcHM6IFBhcnRpYWw8VD4pOiBUW10gfCBmYWxzZSB7XHJcbiAgICBjb25zdCBmbGF0SXRlbXMgPSB0aGlzLl9mbGF0JC52YWx1ZTtcclxuICAgIGNvbnN0IGluZGV4ID0gZmxhdEl0ZW1zLmZpbmRJbmRleChpdGVtID0+IGl0ZW1bdGhpcy5pZF0gPT09IGlkZW50aWZpZXIpO1xyXG4gICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZmxhdEl0ZW1zW2luZGV4XSA9IHsgLi4uZmxhdEl0ZW1zW2luZGV4XSwgLi4ucHJvcHMgfTtcclxuXHJcbiAgICBmbGF0SXRlbXMuc29ydCh0aGlzLnNvcnQpO1xyXG4gICAgcmV0dXJuIHRoaXMucHVibGlzaChmbGF0SXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpOiBUW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkKFtdKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZShpZGVudGlmaWVyczogc3RyaW5nW10pOiBUW10ge1xyXG4gICAgY29uc3Qgc2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcbiAgICBpZGVudGlmaWVycy5mb3JFYWNoKGlkID0+IHNldC5hZGQoaWQpKTtcclxuXHJcbiAgICBjb25zdCBzZXRUb1JlbW92ZSA9IHRoaXMuZmluZEl0ZW1zVG9SZW1vdmUoc2V0KTtcclxuICAgIGNvbnN0IGZsYXRJdGVtcyA9IHRoaXMuZmlsdGVyV2l0aChzZXRUb1JlbW92ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5wdWJsaXNoKGZsYXRJdGVtcyk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVCeVBhcmFtKHBhcmFtczogUGFydGlhbDxUPik6IFRbXSB8IG51bGwge1xyXG4gICAgaWYgKCFwYXJhbXMpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHBhcmFtcykgYXMgQXJyYXk8a2V5b2YgUGFydGlhbDxUPj47XHJcbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZXhjbHVkZWRMaXN0ID0gdGhpcy5mbGF0LmZpbHRlcihpdGVtID0+IGtleXMuZXZlcnkoa2V5ID0+IGl0ZW1ba2V5XSA9PT0gcGFyYW1zW2tleV0pKTtcclxuICAgIGlmICghZXhjbHVkZWRMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGV4Y2x1ZGVkTGlzdCkge1xyXG4gICAgICB0aGlzLnJlbW92ZUJ5UGFyYW0oeyBbdGhpcy5wYXJlbnRJZF06IGl0ZW1bdGhpcy5pZF0gfSBhcyBQYXJ0aWFsPFQ+KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmbGF0SXRlbXMgPSB0aGlzLmZsYXQuZmlsdGVyKGl0ZW0gPT4gIWV4Y2x1ZGVkTGlzdC5pbmNsdWRlcyhpdGVtKSk7XHJcbiAgICByZXR1cm4gdGhpcy5wdWJsaXNoKGZsYXRJdGVtcyk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2gocGFyYW1zOiBQYXJ0aWFsPFQ+LCB0cmVlID0gdGhpcy50cmVlKTogVHJlZU5vZGU8VD4gfCBudWxsIHtcclxuICAgIGNvbnN0IHNlYXJjaEtleXMgPSBPYmplY3Qua2V5cyhwYXJhbXMpIGFzIEFycmF5PGtleW9mIFBhcnRpYWw8VD4+O1xyXG5cclxuICAgIHJldHVybiB0cmVlLnJlZHVjZTxUcmVlTm9kZTxUPiB8IG51bGw+KChhY2MsIG5vZGUpID0+IHtcclxuICAgICAgaWYgKGFjYykge1xyXG4gICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzZWFyY2hLZXlzLmV2ZXJ5KGtleSA9PiBub2RlW2tleV0gPT09IHBhcmFtc1trZXldKSkge1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5zZWFyY2gocGFyYW1zLCBub2RlLmNoaWxkcmVuKTtcclxuICAgIH0sIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2luZ3VsYXJpemVTdGF0dXMoc2luZ3VsYXJpemUgPSB0cnVlKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3VsZFNpbmd1bGFyaXplUm91dGVzID0gc2luZ3VsYXJpemU7XHJcbiAgfVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE5hdlRyZWVTZXJ2aWNlPFQgZXh0ZW5kcyBBQlAuTmF2PlxyXG4gIGV4dGVuZHMgQWJzdHJhY3RUcmVlU2VydmljZTxUPlxyXG4gIGltcGxlbWVudHMgT25EZXN0cm95XHJcbntcclxuICBwcm90ZWN0ZWQgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG5cclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlO1xyXG4gIHByaXZhdGUgY29tcGFyZUZ1bmM7XHJcbiAgcmVhZG9ubHkgaWQgPSAnbmFtZSc7XHJcbiAgcmVhZG9ubHkgcGFyZW50SWQgPSAncGFyZW50TmFtZSc7XHJcbiAgcmVhZG9ubHkgaGlkZSA9IChpdGVtOiBUKSA9PiBpdGVtLmludmlzaWJsZSB8fCAhdGhpcy5pc0dyYW50ZWQoaXRlbSk7XHJcbiAgcmVhZG9ubHkgc29ydCA9IChhOiBULCBiOiBUKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wYXJlRnVuYyhhLCBiKTtcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuaW5qZWN0b3I7XHJcblxyXG4gICAgY29uc3QgY29uZmlnU3RhdGUgPSB0aGlzLmluamVjdG9yLmdldChDb25maWdTdGF0ZVNlcnZpY2UpO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSBjb25maWdTdGF0ZVxyXG4gICAgICAuY3JlYXRlT25VcGRhdGVTdHJlYW0oc3RhdGUgPT4gc3RhdGUpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoKCkpO1xyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZSA9IGluamVjdG9yLmdldChQZXJtaXNzaW9uU2VydmljZSk7XHJcbiAgICB0aGlzLm90aGVyc0dyb3VwID0gaW5qZWN0b3IuZ2V0KE9USEVSU19HUk9VUCk7XHJcbiAgICB0aGlzLmNvbXBhcmVGdW5jID0gaW5qZWN0b3IuZ2V0KFNPUlRfQ09NUEFSRV9GVU5DKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBpc0dyYW50ZWQoeyByZXF1aXJlZFBvbGljeSB9OiBUKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9uU2VydmljZS5nZXRHcmFudGVkUG9saWN5KHJlcXVpcmVkUG9saWN5KTtcclxuICB9XHJcblxyXG4gIGhhc0NoaWxkcmVuKGlkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZmluZChpdGVtID0+IGl0ZW1bdGhpcy5pZF0gPT09IGlkZW50aWZpZXIpO1xyXG4gICAgcmV0dXJuIEJvb2xlYW4obm9kZT8uY2hpbGRyZW4/Lmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICBoYXNJbnZpc2libGVDaGlsZChpZGVudGlmaWVyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmZpbmQoaXRlbSA9PiBpdGVtW3RoaXMuaWRdID09PSBpZGVudGlmaWVyKTtcclxuICAgIHJldHVybiBub2RlPy5jaGlsZHJlbj8uc29tZShjaGlsZCA9PiBjaGlsZC5pbnZpc2libGUpIHx8IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgUm91dGVzU2VydmljZSBleHRlbmRzIEFic3RyYWN0TmF2VHJlZVNlcnZpY2U8QUJQLlJvdXRlPiB7XHJcbiAgcHJpdmF0ZSBoYXNQYXRoT3JDaGlsZChpdGVtOiBUcmVlTm9kZTxBQlAuUm91dGU+KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQm9vbGVhbihpdGVtLnBhdGgpIHx8IHRoaXMuaGFzQ2hpbGRyZW4oaXRlbS5uYW1lKTtcclxuICB9XHJcblxyXG4gIGdldCBncm91cGVkVmlzaWJsZSgpOiBSb3V0ZUdyb3VwPEFCUC5Sb3V0ZT5bXSB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVHcm91cGVkVHJlZSh0aGlzLnZpc2libGUuZmlsdGVyKGl0ZW0gPT4gdGhpcy5oYXNQYXRoT3JDaGlsZChpdGVtKSkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdyb3VwZWRWaXNpYmxlJCgpOiBPYnNlcnZhYmxlPFJvdXRlR3JvdXA8QUJQLlJvdXRlPltdIHwgdW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlJC5waXBlKFxyXG4gICAgICBtYXAoaXRlbXMgPT4gaXRlbXMuZmlsdGVyKGl0ZW0gPT4gdGhpcy5oYXNQYXRoT3JDaGlsZChpdGVtKSkpLFxyXG4gICAgICBtYXAodmlzaWJsZSA9PiB0aGlzLmNyZWF0ZUdyb3VwZWRUcmVlKHZpc2libGUpKSxcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { Injectable } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class SubscriptionService {\n constructor() {\n this.subscription = new Subscription();\n }\n get isClosed() {\n return this.subscription.closed;\n }\n addOne(source$, nextOrObserver, error) {\n const subscription = source$.subscribe(nextOrObserver, error);\n this.subscription.add(subscription);\n return subscription;\n }\n closeAll() {\n this.subscription.unsubscribe();\n }\n closeOne(subscription) {\n this.removeOne(subscription);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n removeOne(subscription) {\n if (!subscription)\n return;\n this.subscription.remove(subscription);\n }\n reset() {\n this.subscription.unsubscribe();\n this.subscription = new Subscription();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: SubscriptionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: SubscriptionService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: SubscriptionService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvc3Vic2NyaXB0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUdwQyxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRVUsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0tBOEMzQztJQTVDQyxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ2xDLENBQUM7SUFRRCxNQUFNLENBQ0osT0FBc0IsRUFDdEIsY0FBNkMsRUFDN0MsS0FBNEI7UUFFNUIsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsUUFBUSxDQUFDLFlBQTZDO1FBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsU0FBUyxDQUFDLFlBQTZDO1FBQ3JELElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7OEdBOUNVLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgdHlwZSB7IE9ic2VydmFibGUsIFBhcnRpYWxPYnNlcnZlciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFN1YnNjcmlwdGlvblNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICBnZXQgaXNDbG9zZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdWJzY3JpcHRpb24uY2xvc2VkO1xyXG4gIH1cclxuXHJcbiAgYWRkT25lPFQ+KFxyXG4gICAgc291cmNlJDogT2JzZXJ2YWJsZTxUPixcclxuICAgIG5leHQ/OiAodmFsdWU6IFQpID0+IHZvaWQsXHJcbiAgICBlcnJvcj86IChlcnJvcjogYW55KSA9PiB2b2lkLFxyXG4gICk6IFN1YnNjcmlwdGlvbjtcclxuICBhZGRPbmU8VD4oc291cmNlJDogT2JzZXJ2YWJsZTxUPiwgb2JzZXJ2ZXI/OiBQYXJ0aWFsT2JzZXJ2ZXI8VD4pOiBTdWJzY3JpcHRpb247XHJcbiAgYWRkT25lPFQ+KFxyXG4gICAgc291cmNlJDogT2JzZXJ2YWJsZTxUPixcclxuICAgIG5leHRPck9ic2VydmVyPzogUGFydGlhbE9ic2VydmVyPFQ+IHwgTmV4dDxUPixcclxuICAgIGVycm9yPzogKGVycm9yOiBhbnkpID0+IHZvaWQsXHJcbiAgKTogU3Vic2NyaXB0aW9uIHtcclxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHNvdXJjZSQuc3Vic2NyaWJlKG5leHRPck9ic2VydmVyIGFzIE5leHQ8VD4sIGVycm9yKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChzdWJzY3JpcHRpb24pO1xyXG4gICAgcmV0dXJuIHN1YnNjcmlwdGlvbjtcclxuICB9XHJcblxyXG4gIGNsb3NlQWxsKCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlT25lKHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xyXG4gICAgdGhpcy5yZW1vdmVPbmUoc3Vic2NyaXB0aW9uKTtcclxuICAgIGlmIChzdWJzY3JpcHRpb24pIHtcclxuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVPbmUoc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICBpZiAoIXN1YnNjcmlwdGlvbikgcmV0dXJuO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24ucmVtb3ZlKHN1YnNjcmlwdGlvbik7XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICB9XHJcbn1cclxuXHJcbnR5cGUgTmV4dDxUPiA9ICh2YWx1ZTogVCkgPT4gdm9pZDtcclxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport const trackBy = (key) => (_, item) => item[key];\nexport const trackByDeep = (\n// eslint-disable-next-line @typescript-eslint/ban-types\n...keys) => (_, item) => keys.reduce((acc, key) => acc[key], item);\nexport class TrackByService {\n constructor() {\n this.by = trackBy;\n this.byDeep = trackByDeep;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TrackByService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TrackByService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TrackByService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2stYnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy90cmFjay1ieS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQW1CLE1BQU0sZUFBZSxDQUFDOztBQUc1RCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQ2xCLENBQVUsR0FBWSxFQUFzQixFQUFFLENBQzlDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRWQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUN0QjtBQUNFLHdEQUF3RDtBQUN4RCxHQUFHLElBQTJDLEVBQzFCLEVBQUUsQ0FDeEIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDVixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBSzlDLE1BQU0sT0FBTyxjQUFjO0lBSDNCO1FBSUUsT0FBRSxHQUFHLE9BQU8sQ0FBQztRQUViLFdBQU0sR0FBRyxXQUFXLENBQUM7S0FDdEI7OEdBSlksY0FBYztrSEFBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUcmFja0J5RnVuY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTyB9IGZyb20gJ3RzLXRvb2xiZWx0JztcclxuXHJcbmV4cG9ydCBjb25zdCB0cmFja0J5ID1cclxuICA8VCA9IGFueT4oa2V5OiBrZXlvZiBUKTogVHJhY2tCeUZ1bmN0aW9uPFQ+ID0+XHJcbiAgKF8sIGl0ZW0pID0+XHJcbiAgICBpdGVtW2tleV07XHJcblxyXG5leHBvcnQgY29uc3QgdHJhY2tCeURlZXAgPVxyXG4gIDxUID0gYW55PihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXHJcbiAgICAuLi5rZXlzOiBUIGV4dGVuZHMgb2JqZWN0ID8gTy5QYXRoczxUPiA6IG5ldmVyXHJcbiAgKTogVHJhY2tCeUZ1bmN0aW9uPFQ+ID0+XHJcbiAgKF8sIGl0ZW0pID0+XHJcbiAgICBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IGFjY1trZXldLCBpdGVtKTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFja0J5U2VydmljZTxJdGVtVHlwZSA9IGFueT4ge1xyXG4gIGJ5ID0gdHJhY2tCeTtcclxuXHJcbiAgYnlEZWVwID0gdHJhY2tCeURlZXA7XHJcbn1cclxuIl19","import { Injectable, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class AbpWindowService {\n constructor() {\n this.document = inject(DOCUMENT);\n this.window = this.document.defaultView;\n this.navigator = this.window.navigator;\n }\n copyToClipboard(text) {\n return this.navigator.clipboard.writeText(text);\n }\n open(url, target, features) {\n return this.window.open(url, target, features);\n }\n reloadPage() {\n this.window.location.reload();\n }\n downloadBlob(blob, fileName) {\n const blobUrl = this.window.URL.createObjectURL(blob);\n const a = this.document.createElement('a');\n a.style.display = 'none';\n a.href = blobUrl;\n a.download = fileName;\n this.document.body.appendChild(a);\n a.dispatchEvent(new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: this.window,\n }));\n this.window.URL.revokeObjectURL(blobUrl);\n this.document.body.removeChild(a);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpWindowService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpWindowService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpWindowService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvd2luZG93LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUczQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBRWtCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsV0FBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ25DLGNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztLQStCbkQ7SUE3QkMsZUFBZSxDQUFDLElBQVk7UUFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFrQixFQUFFLE1BQWUsRUFBRSxRQUFpQjtRQUN6RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVUsRUFBRSxRQUFnQjtRQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsYUFBYSxDQUNiLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUN0QixPQUFPLEVBQUUsSUFBSTtZQUNiLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNsQixDQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs4R0FqQ1UsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FESCxNQUFNOzsyRkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQWJwV2luZG93U2VydmljZSB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgd2luZG93ID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldztcclxuICBwdWJsaWMgcmVhZG9ubHkgbmF2aWdhdG9yID0gdGhpcy53aW5kb3cubmF2aWdhdG9yO1xyXG5cclxuICBjb3B5VG9DbGlwYm9hcmQodGV4dDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcclxuICB9XHJcblxyXG4gIG9wZW4odXJsPzogc3RyaW5nIHwgVVJMLCB0YXJnZXQ/OiBzdHJpbmcsIGZlYXR1cmVzPzogc3RyaW5nKTogV2luZG93IHtcclxuICAgIHJldHVybiB0aGlzLndpbmRvdy5vcGVuKHVybCwgdGFyZ2V0LCBmZWF0dXJlcyk7XHJcbiAgfVxyXG5cclxuICByZWxvYWRQYWdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy53aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEJsb2IoYmxvYjogQmxvYiwgZmlsZU5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgYmxvYlVybCA9IHRoaXMud2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBjb25zdCBhID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICBhLmhyZWYgPSBibG9iVXJsO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgYS5kaXNwYXRjaEV2ZW50KFxyXG4gICAgICBuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7XHJcbiAgICAgICAgYnViYmxlczogdHJ1ZSxcclxuICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxyXG4gICAgICAgIHZpZXc6IHRoaXMud2luZG93LFxyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgICB0aGlzLndpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKGJsb2JVcmwpO1xyXG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG4gIH1cclxufVxyXG4iXX0=","import { DOCUMENT } from '@angular/common';\nimport { Injectable, computed, inject, signal } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class InternetConnectionService {\n constructor() {\n this.document = inject(DOCUMENT);\n this.window = this.document.defaultView;\n this.navigator = this.window.navigator;\n this.status$ = new BehaviorSubject(this.navigator.onLine);\n this.status = signal(this.navigator.onLine);\n this.networkStatus = computed(() => this.status());\n this.window.addEventListener('offline', () => this.setStatus(false));\n this.window.addEventListener('online', () => this.setStatus(true));\n }\n setStatus(val) {\n this.status.set(val);\n this.status$.next(val);\n }\n get networkStatus$() {\n return this.status$.asObservable();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: InternetConnectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: InternetConnectionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: InternetConnectionService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuZXQtY29ubmVjdGlvbi1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL2ludGVybmV0LWNvbm5lY3Rpb24tc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUt2QyxNQUFNLE9BQU8seUJBQXlCO0lBV3BDO1FBVlMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixXQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDbkMsY0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBRW5DLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlELFdBQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvQyxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUc1QyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBWTtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDOzhHQXZCVSx5QkFBeUI7a0hBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzsyRkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW50ZXJuZXRDb25uZWN0aW9uU2VydmljZSB7XHJcbiAgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG4gIHJlYWRvbmx5IHdpbmRvdyA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc7XHJcbiAgcmVhZG9ubHkgbmF2aWdhdG9yID0gdGhpcy53aW5kb3cubmF2aWdhdG9yO1xyXG5cclxuICBwcml2YXRlIHN0YXR1cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRoaXMubmF2aWdhdG9yLm9uTGluZSk7XHJcblxyXG4gIHByaXZhdGUgc3RhdHVzID0gc2lnbmFsKHRoaXMubmF2aWdhdG9yLm9uTGluZSk7XHJcblxyXG4gIG5ldHdvcmtTdGF0dXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXR1cygpKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgKCkgPT4gdGhpcy5zZXRTdGF0dXMoZmFsc2UpKTtcclxuICAgIHRoaXMud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29ubGluZScsICgpID0+IHRoaXMuc2V0U3RhdHVzKHRydWUpKTtcclxuICB9XHJcblxyXG4gIHNldFN0YXR1cyh2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc3RhdHVzLnNldCh2YWwpO1xyXG4gICAgdGhpcy5zdGF0dXMkLm5leHQodmFsKTtcclxuICB9XHJcblxyXG4gIGdldCBuZXR3b3JrU3RhdHVzJCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXR1cyQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class LocalStorageListenerService {\n constructor() {\n this.window = inject(DOCUMENT).defaultView;\n this.window.addEventListener('storage', event => {\n if (event.key === 'access_token') {\n const tokenRemoved = event.newValue === null;\n const tokenAdded = event.oldValue === null && event.newValue !== null;\n if (tokenRemoved || tokenAdded) {\n this.window.location.assign('/');\n }\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LocalStorageListenerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LocalStorageListenerService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LocalStorageListenerService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1saXN0ZW5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UtbGlzdGVuZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSW5ELE1BQU0sT0FBTywyQkFBMkI7SUFHdEM7UUFGbUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFHdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDOUMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLGNBQWMsRUFBRSxDQUFDO2dCQUNqQyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQztnQkFDN0MsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUM7Z0JBRXRFLElBQUksWUFBWSxJQUFJLFVBQVUsRUFBRSxDQUFDO29CQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25DLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWRVLDJCQUEyQjtrSEFBM0IsMkJBQTJCLGNBRjFCLE1BQU07OzJGQUVQLDJCQUEyQjtrQkFIdkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlTGlzdGVuZXJTZXJ2aWNlIHtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2luZG93ID0gaW5qZWN0KERPQ1VNRU5UKS5kZWZhdWx0VmlldztcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzdG9yYWdlJywgZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnYWNjZXNzX3Rva2VuJykge1xyXG4gICAgICAgIGNvbnN0IHRva2VuUmVtb3ZlZCA9IGV2ZW50Lm5ld1ZhbHVlID09PSBudWxsO1xyXG4gICAgICAgIGNvbnN0IHRva2VuQWRkZWQgPSBldmVudC5vbGRWYWx1ZSA9PT0gbnVsbCAmJiBldmVudC5uZXdWYWx1ZSAhPT0gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKHRva2VuUmVtb3ZlZCB8fCB0b2tlbkFkZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLndpbmRvdy5sb2NhdGlvbi5hc3NpZ24oJy8nKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Injectable, effect, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { TitleStrategy } from '@angular/router';\nimport { Title } from '@angular/platform-browser';\nimport { LocalizationService } from './localization.service';\nimport { DISABLE_PROJECT_NAME } from '../tokens';\nimport * as i0 from \"@angular/core\";\nexport class AbpTitleStrategy extends TitleStrategy {\n constructor() {\n super();\n this.title = inject(Title);\n this.localizationService = inject(LocalizationService);\n this.disableProjectName = inject(DISABLE_PROJECT_NAME, { optional: true });\n this.langugageChange = toSignal(this.localizationService.languageChange$);\n effect(() => {\n if (this.langugageChange()) {\n this.updateTitle(this.routerState);\n }\n });\n }\n updateTitle(routerState) {\n this.routerState = routerState;\n const title = this.buildTitle(routerState);\n const projectName = this.localizationService.instant({\n key: '::AppName',\n defaultValue: 'MyProjectName',\n });\n if (!title) {\n return this.title.setTitle(projectName);\n }\n let localizedText = this.localizationService.instant({ key: title, defaultValue: title });\n if (!this.disableProjectName) {\n localizedText += ` | ${projectName}`;\n }\n this.title.setTitle(localizedText);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpTitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpTitleStrategy, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpTitleStrategy, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUtc3RyYXRlZ3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy90aXRsZS1zdHJhdGVneS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBdUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUtqRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsYUFBYTtJQVFqRDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBUlMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0Qix3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNsRCx1QkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUd6RixvQkFBZSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFJbkUsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUSxXQUFXLENBQUMsV0FBZ0M7UUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUzQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDO1lBQ25ELEdBQUcsRUFBRSxXQUFXO1lBQ2hCLFlBQVksRUFBRSxlQUFlO1NBQzlCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM3QixhQUFhLElBQUksTUFBTSxXQUFXLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckMsQ0FBQzs4R0FwQ1UsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IFRpdGxlU3RyYXRlZ3ksIFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbGl6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IERJU0FCTEVfUFJPSkVDVF9OQU1FIH0gZnJvbSAnLi4vdG9rZW5zJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBYnBUaXRsZVN0cmF0ZWd5IGV4dGVuZHMgVGl0bGVTdHJhdGVneSB7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpdGxlID0gaW5qZWN0KFRpdGxlKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYWJsZVByb2plY3ROYW1lID0gaW5qZWN0KERJU0FCTEVfUFJPSkVDVF9OQU1FLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xyXG4gIHByb3RlY3RlZCByb3V0ZXJTdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdDtcclxuXHJcbiAgbGFuZ3VnYWdlQ2hhbmdlID0gdG9TaWduYWwodGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmxhbmd1YWdlQ2hhbmdlJCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmxhbmd1Z2FnZUNoYW5nZSgpKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVUaXRsZSh0aGlzLnJvdXRlclN0YXRlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB1cGRhdGVUaXRsZShyb3V0ZXJTdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkge1xyXG4gICAgdGhpcy5yb3V0ZXJTdGF0ZSA9IHJvdXRlclN0YXRlO1xyXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLmJ1aWxkVGl0bGUocm91dGVyU3RhdGUpO1xyXG5cclxuICAgIGNvbnN0IHByb2plY3ROYW1lID0gdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoe1xyXG4gICAgICBrZXk6ICc6OkFwcE5hbWUnLFxyXG4gICAgICBkZWZhdWx0VmFsdWU6ICdNeVByb2plY3ROYW1lJyxcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGl0bGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudGl0bGUuc2V0VGl0bGUocHJvamVjdE5hbWUpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBsZXQgbG9jYWxpemVkVGV4dCA9IHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KHsga2V5OiB0aXRsZSwgZGVmYXVsdFZhbHVlOiB0aXRsZSB9KTtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlUHJvamVjdE5hbWUpIHtcclxuICAgICAgbG9jYWxpemVkVGV4dCArPSBgIHwgJHtwcm9qZWN0TmFtZX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGl0bGUuc2V0VGl0bGUobG9jYWxpemVkVGV4dCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ConfigStateService } from './config-state.service';\nimport * as i0 from \"@angular/core\";\nexport class TimezoneService {\n constructor() {\n this.configState = inject(ConfigStateService);\n this.document = inject(DOCUMENT);\n this.cookieKey = '__timezone';\n this.configState.getOne$('setting').subscribe(settings => {\n this.timeZoneNameFromSettings = settings?.values?.['Abp.Timing.TimeZone'];\n });\n this.configState.getOne$('clock').subscribe(clock => {\n this.isUtcClockEnabled = clock?.kind === 'Utc';\n });\n }\n /**\n * Returns the effective timezone to be used across the application.\n *\n * This value is determined based on the clock kind setting in the configuration:\n * - If clock kind is not equal to Utc, the browser's local timezone is returned.\n * - If clock kind is equal to Utc, the configured timezone (`timeZoneNameFromSettings`) is returned if available;\n * otherwise, the browser's timezone is used as a fallback.\n *\n * @returns The IANA timezone name (e.g., 'Europe/Istanbul', 'America/New_York').\n */\n get timezone() {\n if (!this.isUtcClockEnabled) {\n return this.getBrowserTimezone();\n }\n return this.timeZoneNameFromSettings || this.getBrowserTimezone();\n }\n /**\n * Retrieves the browser's local timezone based on the user's system settings.\n *\n * @returns The IANA timezone name (e.g., 'Europe/Istanbul', 'America/New_York').\n */\n getBrowserTimezone() {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n /**\n * Sets the application's timezone in a cookie to persist the user's selected timezone.\n *\n * This method sets the cookie only if the clock kind setting is set to UTC.\n * The cookie is stored using the key defined by `this.cookieKey` and applied to the root path (`/`).\n *\n * @param timezone - The IANA timezone name to be stored (e.g., 'Europe/Istanbul').\n */\n setTimezone(timezone) {\n if (this.isUtcClockEnabled) {\n this.document.cookie = `${this.cookieKey}=${timezone}; path=/`;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TimezoneService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TimezoneService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TimezoneService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXpvbmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy90aW1lem9uZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFLNUQsTUFBTSxPQUFPLGVBQWU7SUFPMUI7UUFObUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6QyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLGNBQVMsR0FBRyxZQUFZLENBQUM7UUFLeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3ZELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM1RSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxFQUFFLElBQUksS0FBSyxLQUFLLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDbkMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLHdCQUF3QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFdBQVcsQ0FBQyxRQUFnQjtRQUMxQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxRQUFRLFVBQVUsQ0FBQztRQUNqRSxDQUFDO0lBQ0gsQ0FBQzs4R0F0RFUsZUFBZTtrSEFBZixlQUFlLGNBRmQsTUFBTTs7MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy1zdGF0ZS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaW1lem9uZVNlcnZpY2Uge1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWdTdGF0ZSA9IGluamVjdChDb25maWdTdGF0ZVNlcnZpY2UpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBjb29raWVLZXkgPSAnX190aW1lem9uZSc7XHJcbiAgcHJpdmF0ZSB0aW1lWm9uZU5hbWVGcm9tU2V0dGluZ3M6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGlzVXRjQ2xvY2tFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuY29uZmlnU3RhdGUuZ2V0T25lJCgnc2V0dGluZycpLnN1YnNjcmliZShzZXR0aW5ncyA9PiB7XHJcbiAgICAgIHRoaXMudGltZVpvbmVOYW1lRnJvbVNldHRpbmdzID0gc2V0dGluZ3M/LnZhbHVlcz8uWydBYnAuVGltaW5nLlRpbWVab25lJ107XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY29uZmlnU3RhdGUuZ2V0T25lJCgnY2xvY2snKS5zdWJzY3JpYmUoY2xvY2sgPT4ge1xyXG4gICAgICB0aGlzLmlzVXRjQ2xvY2tFbmFibGVkID0gY2xvY2s/LmtpbmQgPT09ICdVdGMnO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBlZmZlY3RpdmUgdGltZXpvbmUgdG8gYmUgdXNlZCBhY3Jvc3MgdGhlIGFwcGxpY2F0aW9uLlxyXG4gICAqXHJcbiAgICogVGhpcyB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJhc2VkIG9uIHRoZSBjbG9jayBraW5kIHNldHRpbmcgaW4gdGhlIGNvbmZpZ3VyYXRpb246XHJcbiAgICogLSBJZiBjbG9jayBraW5kIGlzIG5vdCBlcXVhbCB0byBVdGMsIHRoZSBicm93c2VyJ3MgbG9jYWwgdGltZXpvbmUgaXMgcmV0dXJuZWQuXHJcbiAgICogLSBJZiBjbG9jayBraW5kIGlzIGVxdWFsIHRvIFV0YywgdGhlIGNvbmZpZ3VyZWQgdGltZXpvbmUgKGB0aW1lWm9uZU5hbWVGcm9tU2V0dGluZ3NgKSBpcyByZXR1cm5lZCBpZiBhdmFpbGFibGU7XHJcbiAgICogICBvdGhlcndpc2UsIHRoZSBicm93c2VyJ3MgdGltZXpvbmUgaXMgdXNlZCBhcyBhIGZhbGxiYWNrLlxyXG4gICAqXHJcbiAgICogQHJldHVybnMgVGhlIElBTkEgdGltZXpvbmUgbmFtZSAoZS5nLiwgJ0V1cm9wZS9Jc3RhbmJ1bCcsICdBbWVyaWNhL05ld19Zb3JrJykuXHJcbiAgICovXHJcbiAgZ2V0IHRpbWV6b25lKCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMuaXNVdGNDbG9ja0VuYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0QnJvd3NlclRpbWV6b25lKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy50aW1lWm9uZU5hbWVGcm9tU2V0dGluZ3MgfHwgdGhpcy5nZXRCcm93c2VyVGltZXpvbmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgYnJvd3NlcidzIGxvY2FsIHRpbWV6b25lIGJhc2VkIG9uIHRoZSB1c2VyJ3Mgc3lzdGVtIHNldHRpbmdzLlxyXG4gICAqXHJcbiAgICogQHJldHVybnMgVGhlIElBTkEgdGltZXpvbmUgbmFtZSAoZS5nLiwgJ0V1cm9wZS9Jc3RhbmJ1bCcsICdBbWVyaWNhL05ld19Zb3JrJykuXHJcbiAgICovXHJcbiAgZ2V0QnJvd3NlclRpbWV6b25lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgYXBwbGljYXRpb24ncyB0aW1lem9uZSBpbiBhIGNvb2tpZSB0byBwZXJzaXN0IHRoZSB1c2VyJ3Mgc2VsZWN0ZWQgdGltZXpvbmUuXHJcbiAgICpcclxuICAgKiBUaGlzIG1ldGhvZCBzZXRzIHRoZSBjb29raWUgb25seSBpZiB0aGUgY2xvY2sga2luZCBzZXR0aW5nIGlzIHNldCB0byBVVEMuXHJcbiAgICogVGhlIGNvb2tpZSBpcyBzdG9yZWQgdXNpbmcgdGhlIGtleSBkZWZpbmVkIGJ5IGB0aGlzLmNvb2tpZUtleWAgYW5kIGFwcGxpZWQgdG8gdGhlIHJvb3QgcGF0aCAoYC9gKS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB0aW1lem9uZSAtIFRoZSBJQU5BIHRpbWV6b25lIG5hbWUgdG8gYmUgc3RvcmVkIChlLmcuLCAnRXVyb3BlL0lzdGFuYnVsJykuXHJcbiAgICovXHJcbiAgc2V0VGltZXpvbmUodGltZXpvbmU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNVdGNDbG9ja0VuYWJsZWQpIHtcclxuICAgICAgdGhpcy5kb2N1bWVudC5jb29raWUgPSBgJHt0aGlzLmNvb2tpZUtleX09JHt0aW1lem9uZX07IHBhdGg9L2A7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { DateTime } from 'luxon';\nimport * as i0 from \"@angular/core\";\nexport class TimeService {\n constructor() {\n this.locale = inject(LOCALE_ID);\n }\n /**\n * Returns the current date and time in the specified timezone.\n *\n * @param zone - An IANA timezone name (e.g., 'Europe/Istanbul', 'UTC'); defaults to the system's local timezone.\n * @returns A Luxon DateTime instance representing the current time in the given timezone.\n */\n now(zone = 'local') {\n return DateTime.now().setZone(zone);\n }\n /**\n * Converts the input date to the specified timezone, applying any timezone and daylight saving time (DST) adjustments.\n *\n * This method:\n * 1. Parses the input value into a Luxon DateTime object.\n * 2. Applies the specified IANA timezone, including any DST shifts based on the given date.\n *\n * @param value - The ISO string or Date object to convert.\n * @param zone - An IANA timezone name (e.g., 'America/New_York').\n * @returns A Luxon DateTime instance adjusted to the specified timezone and DST rules.\n */\n toZone(value, zone) {\n return DateTime.fromISO(value instanceof Date ? value.toISOString() : value, {\n zone,\n });\n }\n /**\n * Formats the input date by applying timezone and daylight saving time (DST) adjustments.\n *\n * This method:\n * 1. Converts the input date to the specified timezone.\n * 2. Formats the result using the given format and locale, reflecting any timezone or DST shifts.\n *\n * @param value - The ISO string or Date object to format.\n * @param format - The format string (default: 'ff').\n * @param zone - Optional IANA timezone name (e.g., 'America/New_York'); defaults to the system's local timezone.\n * @returns A formatted date string adjusted for the given timezone and DST rules.\n */\n format(value, format = 'ff', zone = 'local') {\n return this.toZone(value, zone).setLocale(this.locale).toFormat(format);\n }\n /**\n * Formats a date using the standard time offset (ignoring daylight saving time) for the specified timezone.\n *\n * This method:\n * 1. Converts the input date to UTC.\n * 2. Calculates the standard UTC offset for the given timezone (based on January 1st to avoid DST).\n * 3. Applies the standard offset manually to the UTC time.\n * 4. Formats the result using the specified format and locale, without applying additional timezone shifts.\n *\n * @param value - The ISO string or Date object to format.\n * @param format - The Luxon format string (default: 'ff').\n * @param zone - Optional IANA timezone name (e.g., 'America/New_York'); if omitted, system local timezone is used.\n * @returns A formatted date string adjusted by standard time (non-DST).\n */\n formatDateWithStandardOffset(value, format = 'ff', zone) {\n const utcDate = typeof value === 'string'\n ? DateTime.fromISO(value, { zone: 'UTC' })\n : DateTime.fromJSDate(value, { zone: 'UTC' });\n if (!utcDate.isValid)\n return '';\n const targetZone = zone ?? DateTime.local().zoneName;\n const januaryDate = DateTime.fromObject({ year: utcDate.year, month: 1, day: 1 }, { zone: targetZone });\n const standardOffset = januaryDate.offset;\n const dateWithStandardOffset = utcDate.plus({ minutes: standardOffset });\n return dateWithStandardOffset.setZone('UTC').setLocale(this.locale).toFormat(format);\n }\n /**\n * Formats the input date using its original clock time, without converting based on timezone or DST\n *\n * This method:\n * 1. Converts the input date to ISO string.\n * 2. Calculates the date time in UTC, keeping the local time.\n * 3. Formats the result using the specified format and locale, without shifting timezones.\n *\n * @param value - The ISO string or Date object to format.\n * @param format - The format string (default: 'ff').\n * @returns A formatted date string without applying timezone.\n */\n formatWithoutTimeZone(value, format = 'ff') {\n const isoString = value instanceof Date ? value.toISOString() : value;\n const dateTime = DateTime.fromISO(isoString)\n .setZone('utc', { keepLocalTime: true })\n .setLocale(this.locale);\n return dateTime.toFormat(format);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TimeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TimeService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TimeService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3RpbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFLakMsTUFBTSxPQUFPLFdBQVc7SUFIeEI7UUFJVSxXQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBbUdwQztJQWpHQzs7Ozs7T0FLRztJQUNILEdBQUcsQ0FBQyxJQUFJLEdBQUcsT0FBTztRQUNoQixPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxNQUFNLENBQUMsS0FBb0IsRUFBRSxJQUFZO1FBQ3ZDLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUMzRSxJQUFJO1NBQ0wsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsTUFBTSxDQUFDLEtBQW9CLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsT0FBTztRQUN4RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsNEJBQTRCLENBQUMsS0FBb0IsRUFBRSxNQUFNLEdBQUcsSUFBSSxFQUFFLElBQWE7UUFDN0UsTUFBTSxPQUFPLEdBQ1gsT0FBTyxLQUFLLEtBQUssUUFBUTtZQUN2QixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDMUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFaEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUM7UUFFckQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FDckMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFDeEMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQ3JCLENBQUM7UUFDRixNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQzFDLE1BQU0sc0JBQXNCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLE9BQU8sc0JBQXNCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILHFCQUFxQixDQUFDLEtBQW9CLEVBQUUsTUFBTSxHQUFHLElBQUk7UUFDdkQsTUFBTSxTQUFTLEdBQUcsS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFdEUsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7YUFDekMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUN2QyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQW5HVSxXQUFXO2tIQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRpbWVTZXJ2aWNlIHtcclxuICBwcml2YXRlIGxvY2FsZSA9IGluamVjdChMT0NBTEVfSUQpO1xyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUgaW4gdGhlIHNwZWNpZmllZCB0aW1lem9uZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB6b25lIC0gQW4gSUFOQSB0aW1lem9uZSBuYW1lIChlLmcuLCAnRXVyb3BlL0lzdGFuYnVsJywgJ1VUQycpOyBkZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWwgdGltZXpvbmUuXHJcbiAgICogQHJldHVybnMgQSBMdXhvbiBEYXRlVGltZSBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgdGltZSBpbiB0aGUgZ2l2ZW4gdGltZXpvbmUuXHJcbiAgICovXHJcbiAgbm93KHpvbmUgPSAnbG9jYWwnKTogRGF0ZVRpbWUge1xyXG4gICAgcmV0dXJuIERhdGVUaW1lLm5vdygpLnNldFpvbmUoem9uZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0cyB0aGUgaW5wdXQgZGF0ZSB0byB0aGUgc3BlY2lmaWVkIHRpbWV6b25lLCBhcHBseWluZyBhbnkgdGltZXpvbmUgYW5kIGRheWxpZ2h0IHNhdmluZyB0aW1lIChEU1QpIGFkanVzdG1lbnRzLlxyXG4gICAqXHJcbiAgICogVGhpcyBtZXRob2Q6XHJcbiAgICogMS4gUGFyc2VzIHRoZSBpbnB1dCB2YWx1ZSBpbnRvIGEgTHV4b24gRGF0ZVRpbWUgb2JqZWN0LlxyXG4gICAqIDIuIEFwcGxpZXMgdGhlIHNwZWNpZmllZCBJQU5BIHRpbWV6b25lLCBpbmNsdWRpbmcgYW55IERTVCBzaGlmdHMgYmFzZWQgb24gdGhlIGdpdmVuIGRhdGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgSVNPIHN0cmluZyBvciBEYXRlIG9iamVjdCB0byBjb252ZXJ0LlxyXG4gICAqIEBwYXJhbSB6b25lIC0gQW4gSUFOQSB0aW1lem9uZSBuYW1lIChlLmcuLCAnQW1lcmljYS9OZXdfWW9yaycpLlxyXG4gICAqIEByZXR1cm5zIEEgTHV4b24gRGF0ZVRpbWUgaW5zdGFuY2UgYWRqdXN0ZWQgdG8gdGhlIHNwZWNpZmllZCB0aW1lem9uZSBhbmQgRFNUIHJ1bGVzLlxyXG4gICAqL1xyXG4gIHRvWm9uZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSwgem9uZTogc3RyaW5nKTogRGF0ZVRpbWUge1xyXG4gICAgcmV0dXJuIERhdGVUaW1lLmZyb21JU08odmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUudG9JU09TdHJpbmcoKSA6IHZhbHVlLCB7XHJcbiAgICAgIHpvbmUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdHMgdGhlIGlucHV0IGRhdGUgYnkgYXBwbHlpbmcgdGltZXpvbmUgYW5kIGRheWxpZ2h0IHNhdmluZyB0aW1lIChEU1QpIGFkanVzdG1lbnRzLlxyXG4gICAqXHJcbiAgICogVGhpcyBtZXRob2Q6XHJcbiAgICogMS4gQ29udmVydHMgdGhlIGlucHV0IGRhdGUgdG8gdGhlIHNwZWNpZmllZCB0aW1lem9uZS5cclxuICAgKiAyLiBGb3JtYXRzIHRoZSByZXN1bHQgdXNpbmcgdGhlIGdpdmVuIGZvcm1hdCBhbmQgbG9jYWxlLCByZWZsZWN0aW5nIGFueSB0aW1lem9uZSBvciBEU1Qgc2hpZnRzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIElTTyBzdHJpbmcgb3IgRGF0ZSBvYmplY3QgdG8gZm9ybWF0LlxyXG4gICAqIEBwYXJhbSBmb3JtYXQgLSBUaGUgZm9ybWF0IHN0cmluZyAoZGVmYXVsdDogJ2ZmJykuXHJcbiAgICogQHBhcmFtIHpvbmUgLSBPcHRpb25hbCBJQU5BIHRpbWV6b25lIG5hbWUgKGUuZy4sICdBbWVyaWNhL05ld19Zb3JrJyk7IGRlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbCB0aW1lem9uZS5cclxuICAgKiBAcmV0dXJucyBBIGZvcm1hdHRlZCBkYXRlIHN0cmluZyBhZGp1c3RlZCBmb3IgdGhlIGdpdmVuIHRpbWV6b25lIGFuZCBEU1QgcnVsZXMuXHJcbiAgICovXHJcbiAgZm9ybWF0KHZhbHVlOiBzdHJpbmcgfCBEYXRlLCBmb3JtYXQgPSAnZmYnLCB6b25lID0gJ2xvY2FsJyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50b1pvbmUodmFsdWUsIHpvbmUpLnNldExvY2FsZSh0aGlzLmxvY2FsZSkudG9Gb3JtYXQoZm9ybWF0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdHMgYSBkYXRlIHVzaW5nIHRoZSBzdGFuZGFyZCB0aW1lIG9mZnNldCAoaWdub3JpbmcgZGF5bGlnaHQgc2F2aW5nIHRpbWUpIGZvciB0aGUgc3BlY2lmaWVkIHRpbWV6b25lLlxyXG4gICAqXHJcbiAgICogVGhpcyBtZXRob2Q6XHJcbiAgICogMS4gQ29udmVydHMgdGhlIGlucHV0IGRhdGUgdG8gVVRDLlxyXG4gICAqIDIuIENhbGN1bGF0ZXMgdGhlIHN0YW5kYXJkIFVUQyBvZmZzZXQgZm9yIHRoZSBnaXZlbiB0aW1lem9uZSAoYmFzZWQgb24gSmFudWFyeSAxc3QgdG8gYXZvaWQgRFNUKS5cclxuICAgKiAzLiBBcHBsaWVzIHRoZSBzdGFuZGFyZCBvZmZzZXQgbWFudWFsbHkgdG8gdGhlIFVUQyB0aW1lLlxyXG4gICAqIDQuIEZvcm1hdHMgdGhlIHJlc3VsdCB1c2luZyB0aGUgc3BlY2lmaWVkIGZvcm1hdCBhbmQgbG9jYWxlLCB3aXRob3V0IGFwcGx5aW5nIGFkZGl0aW9uYWwgdGltZXpvbmUgc2hpZnRzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIElTTyBzdHJpbmcgb3IgRGF0ZSBvYmplY3QgdG8gZm9ybWF0LlxyXG4gICAqIEBwYXJhbSBmb3JtYXQgLSBUaGUgTHV4b24gZm9ybWF0IHN0cmluZyAoZGVmYXVsdDogJ2ZmJykuXHJcbiAgICogQHBhcmFtIHpvbmUgLSBPcHRpb25hbCBJQU5BIHRpbWV6b25lIG5hbWUgKGUuZy4sICdBbWVyaWNhL05ld19Zb3JrJyk7IGlmIG9taXR0ZWQsIHN5c3RlbSBsb2NhbCB0aW1lem9uZSBpcyB1c2VkLlxyXG4gICAqIEByZXR1cm5zIEEgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIGFkanVzdGVkIGJ5IHN0YW5kYXJkIHRpbWUgKG5vbi1EU1QpLlxyXG4gICAqL1xyXG4gIGZvcm1hdERhdGVXaXRoU3RhbmRhcmRPZmZzZXQodmFsdWU6IHN0cmluZyB8IERhdGUsIGZvcm1hdCA9ICdmZicsIHpvbmU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdXRjRGF0ZSA9XHJcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcclxuICAgICAgICA/IERhdGVUaW1lLmZyb21JU08odmFsdWUsIHsgem9uZTogJ1VUQycgfSlcclxuICAgICAgICA6IERhdGVUaW1lLmZyb21KU0RhdGUodmFsdWUsIHsgem9uZTogJ1VUQycgfSk7XHJcblxyXG4gICAgaWYgKCF1dGNEYXRlLmlzVmFsaWQpIHJldHVybiAnJztcclxuXHJcbiAgICBjb25zdCB0YXJnZXRab25lID0gem9uZSA/PyBEYXRlVGltZS5sb2NhbCgpLnpvbmVOYW1lO1xyXG5cclxuICAgIGNvbnN0IGphbnVhcnlEYXRlID0gRGF0ZVRpbWUuZnJvbU9iamVjdChcclxuICAgICAgeyB5ZWFyOiB1dGNEYXRlLnllYXIsIG1vbnRoOiAxLCBkYXk6IDEgfSxcclxuICAgICAgeyB6b25lOiB0YXJnZXRab25lIH0sXHJcbiAgICApO1xyXG4gICAgY29uc3Qgc3RhbmRhcmRPZmZzZXQgPSBqYW51YXJ5RGF0ZS5vZmZzZXQ7XHJcbiAgICBjb25zdCBkYXRlV2l0aFN0YW5kYXJkT2Zmc2V0ID0gdXRjRGF0ZS5wbHVzKHsgbWludXRlczogc3RhbmRhcmRPZmZzZXQgfSk7XHJcblxyXG4gICAgcmV0dXJuIGRhdGVXaXRoU3RhbmRhcmRPZmZzZXQuc2V0Wm9uZSgnVVRDJykuc2V0TG9jYWxlKHRoaXMubG9jYWxlKS50b0Zvcm1hdChmb3JtYXQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0cyB0aGUgaW5wdXQgZGF0ZSB1c2luZyBpdHMgb3JpZ2luYWwgY2xvY2sgdGltZSwgd2l0aG91dCBjb252ZXJ0aW5nIGJhc2VkIG9uIHRpbWV6b25lIG9yIERTVFxyXG4gICAqXHJcbiAgICogVGhpcyBtZXRob2Q6XHJcbiAgICogMS4gQ29udmVydHMgdGhlIGlucHV0IGRhdGUgdG8gSVNPIHN0cmluZy5cclxuICAgKiAyLiBDYWxjdWxhdGVzIHRoZSBkYXRlIHRpbWUgaW4gVVRDLCBrZWVwaW5nIHRoZSBsb2NhbCB0aW1lLlxyXG4gICAqIDMuIEZvcm1hdHMgdGhlIHJlc3VsdCB1c2luZyB0aGUgc3BlY2lmaWVkIGZvcm1hdCBhbmQgbG9jYWxlLCB3aXRob3V0IHNoaWZ0aW5nIHRpbWV6b25lcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBJU08gc3RyaW5nIG9yIERhdGUgb2JqZWN0IHRvIGZvcm1hdC5cclxuICAgKiBAcGFyYW0gZm9ybWF0IC0gVGhlIGZvcm1hdCBzdHJpbmcgKGRlZmF1bHQ6ICdmZicpLlxyXG4gICAqIEByZXR1cm5zIEEgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIHdpdGhvdXQgYXBwbHlpbmcgdGltZXpvbmUuXHJcbiAgICovXHJcbiAgZm9ybWF0V2l0aG91dFRpbWVab25lKHZhbHVlOiBzdHJpbmcgfCBEYXRlLCBmb3JtYXQgPSAnZmYnKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGlzb1N0cmluZyA9IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlLnRvSVNPU3RyaW5nKCkgOiB2YWx1ZTtcclxuXHJcbiAgICBjb25zdCBkYXRlVGltZSA9IERhdGVUaW1lLmZyb21JU08oaXNvU3RyaW5nKVxyXG4gICAgICAuc2V0Wm9uZSgndXRjJywgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pXHJcbiAgICAgIC5zZXRMb2NhbGUodGhpcy5sb2NhbGUpO1xyXG4gICAgcmV0dXJuIGRhdGVUaW1lLnRvRm9ybWF0KGZvcm1hdCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","export class ContainerStrategy {\n constructor(containerRef) {\n this.containerRef = containerRef;\n }\n prepare() { }\n}\nexport class ClearContainerStrategy extends ContainerStrategy {\n getIndex() {\n return 0;\n }\n prepare() {\n this.containerRef.clear();\n }\n}\nexport class InsertIntoContainerStrategy extends ContainerStrategy {\n constructor(containerRef, index) {\n super(containerRef);\n this.index = index;\n }\n getIndex() {\n return Math.min(Math.max(0, this.index), this.containerRef.length);\n }\n}\nexport const CONTAINER_STRATEGY = {\n Clear(containerRef) {\n return new ClearContainerStrategy(containerRef);\n },\n Append(containerRef) {\n return new InsertIntoContainerStrategy(containerRef, containerRef.length);\n },\n Prepend(containerRef) {\n return new InsertIntoContainerStrategy(containerRef, 0);\n },\n Insert(containerRef, index) {\n return new InsertIntoContainerStrategy(containerRef, index);\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLnN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3N0cmF0ZWdpZXMvY29udGFpbmVyLnN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBZ0IsaUJBQWlCO0lBQ3JDLFlBQW1CLFlBQThCO1FBQTlCLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtJQUFHLENBQUM7SUFJckQsT0FBTyxLQUFVLENBQUM7Q0FDbkI7QUFFRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsaUJBQWlCO0lBQzNELFFBQVE7UUFDTixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsaUJBQWlCO0lBQ2hFLFlBQVksWUFBOEIsRUFBVSxLQUFhO1FBQy9ELEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUQ4QixVQUFLLEdBQUwsS0FBSyxDQUFRO0lBRWpFLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLEtBQUssQ0FBQyxZQUE4QjtRQUNsQyxPQUFPLElBQUksc0JBQXNCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELE1BQU0sQ0FBQyxZQUE4QjtRQUNuQyxPQUFPLElBQUksMkJBQTJCLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsT0FBTyxDQUFDLFlBQThCO1FBQ3BDLE9BQU8sSUFBSSwyQkFBMkIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELE1BQU0sQ0FBQyxZQUE4QixFQUFFLEtBQWE7UUFDbEQsT0FBTyxJQUFJLDJCQUEyQixDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5RCxDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb250YWluZXJTdHJhdGVneSB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGNvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cclxuXHJcbiAgYWJzdHJhY3QgZ2V0SW5kZXgoKTogbnVtYmVyO1xyXG5cclxuICBwcmVwYXJlKCk6IHZvaWQge31cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENsZWFyQ29udGFpbmVyU3RyYXRlZ3kgZXh0ZW5kcyBDb250YWluZXJTdHJhdGVneSB7XHJcbiAgZ2V0SW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgcHJlcGFyZSgpIHtcclxuICAgIHRoaXMuY29udGFpbmVyUmVmLmNsZWFyKCk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5zZXJ0SW50b0NvbnRhaW5lclN0cmF0ZWd5IGV4dGVuZHMgQ29udGFpbmVyU3RyYXRlZ3kge1xyXG4gIGNvbnN0cnVjdG9yKGNvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBzdXBlcihjb250YWluZXJSZWYpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5kZXgoKSB7XHJcbiAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoMCwgdGhpcy5pbmRleCksIHRoaXMuY29udGFpbmVyUmVmLmxlbmd0aCk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQ09OVEFJTkVSX1NUUkFURUdZID0ge1xyXG4gIENsZWFyKGNvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgcmV0dXJuIG5ldyBDbGVhckNvbnRhaW5lclN0cmF0ZWd5KGNvbnRhaW5lclJlZik7XHJcbiAgfSxcclxuICBBcHBlbmQoY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICByZXR1cm4gbmV3IEluc2VydEludG9Db250YWluZXJTdHJhdGVneShjb250YWluZXJSZWYsIGNvbnRhaW5lclJlZi5sZW5ndGgpO1xyXG4gIH0sXHJcbiAgUHJlcGVuZChjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgIHJldHVybiBuZXcgSW5zZXJ0SW50b0NvbnRhaW5lclN0cmF0ZWd5KGNvbnRhaW5lclJlZiwgMCk7XHJcbiAgfSxcclxuICBJbnNlcnQoY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gbmV3IEluc2VydEludG9Db250YWluZXJTdHJhdGVneShjb250YWluZXJSZWYsIGluZGV4KTtcclxuICB9LFxyXG59O1xyXG4iXX0=","export class ContentSecurityStrategy {\n constructor(nonce) {\n this.nonce = nonce;\n }\n}\nexport class LooseContentSecurityStrategy extends ContentSecurityStrategy {\n constructor(nonce) {\n super(nonce);\n }\n applyCSP(element) {\n if (this.nonce) {\n element.setAttribute('nonce', this.nonce);\n }\n }\n}\nexport class NoContentSecurityStrategy extends ContentSecurityStrategy {\n constructor() {\n super();\n }\n applyCSP(_) { }\n}\nexport const CONTENT_SECURITY_STRATEGY = {\n Loose(nonce) {\n return new LooseContentSecurityStrategy(nonce);\n },\n None() {\n return new NoContentSecurityStrategy();\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1zZWN1cml0eS5zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zdHJhdGVnaWVzL2NvbnRlbnQtc2VjdXJpdHkuc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQix1QkFBdUI7SUFDM0MsWUFBbUIsS0FBYztRQUFkLFVBQUssR0FBTCxLQUFLLENBQVM7SUFBRyxDQUFDO0NBR3RDO0FBRUQsTUFBTSxPQUFPLDRCQUE2QixTQUFRLHVCQUF1QjtJQUN2RSxZQUFZLEtBQWE7UUFDdkIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUE2QztRQUNwRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHlCQUEwQixTQUFRLHVCQUF1QjtJQUNwRTtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUF1QyxJQUFHLENBQUM7Q0FDckQ7QUFFRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxLQUFLLENBQUMsS0FBYTtRQUNqQixPQUFPLElBQUksNEJBQTRCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUNELElBQUk7UUFDRixPQUFPLElBQUkseUJBQXlCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb250ZW50U2VjdXJpdHlTdHJhdGVneSB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIG5vbmNlPzogc3RyaW5nKSB7fVxyXG5cclxuICBhYnN0cmFjdCBhcHBseUNTUChlbGVtZW50OiBIVE1MU2NyaXB0RWxlbWVudCB8IEhUTUxTdHlsZUVsZW1lbnQpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTG9vc2VDb250ZW50U2VjdXJpdHlTdHJhdGVneSBleHRlbmRzIENvbnRlbnRTZWN1cml0eVN0cmF0ZWd5IHtcclxuICBjb25zdHJ1Y3Rvcihub25jZTogc3RyaW5nKSB7XHJcbiAgICBzdXBlcihub25jZSk7XHJcbiAgfVxyXG5cclxuICBhcHBseUNTUChlbGVtZW50OiBIVE1MU2NyaXB0RWxlbWVudCB8IEhUTUxTdHlsZUVsZW1lbnQpIHtcclxuICAgIGlmICh0aGlzLm5vbmNlKSB7XHJcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdub25jZScsIHRoaXMubm9uY2UpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE5vQ29udGVudFNlY3VyaXR5U3RyYXRlZ3kgZXh0ZW5kcyBDb250ZW50U2VjdXJpdHlTdHJhdGVneSB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlDU1AoXzogSFRNTFNjcmlwdEVsZW1lbnQgfCBIVE1MU3R5bGVFbGVtZW50KSB7fVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQ09OVEVOVF9TRUNVUklUWV9TVFJBVEVHWSA9IHtcclxuICBMb29zZShub25jZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbmV3IExvb3NlQ29udGVudFNlY3VyaXR5U3RyYXRlZ3kobm9uY2UpO1xyXG4gIH0sXHJcbiAgTm9uZSgpIHtcclxuICAgIHJldHVybiBuZXcgTm9Db250ZW50U2VjdXJpdHlTdHJhdGVneSgpO1xyXG4gIH0sXHJcbn07XHJcbiJdfQ==","import { CONTENT_SECURITY_STRATEGY } from './content-security.strategy';\nimport { DOM_STRATEGY } from './dom.strategy';\nimport { inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nexport class ContentStrategy {\n constructor(content, domStrategy = DOM_STRATEGY.AppendToHead(), contentSecurityStrategy = CONTENT_SECURITY_STRATEGY.None(), options = {}) {\n this.content = content;\n this.domStrategy = domStrategy;\n this.contentSecurityStrategy = contentSecurityStrategy;\n this.options = options;\n }\n insertElement() {\n const element = this.createElement();\n if (this.options && Object.keys(this.options).length > 0) {\n Object.keys(this.options).forEach(key => {\n if (this.options[key]) {\n element[key] = this.options[key];\n }\n });\n }\n this.contentSecurityStrategy.applyCSP(element);\n this.domStrategy.insertElement(element);\n return element;\n }\n}\nexport class StyleContentStrategy extends ContentStrategy {\n createElement() {\n const element = inject(DOCUMENT).createElement('style');\n element.textContent = this.content;\n return element;\n }\n}\nexport class ScriptContentStrategy extends ContentStrategy {\n createElement() {\n const element = inject(DOCUMENT).createElement('script');\n element.textContent = this.content;\n return element;\n }\n}\nexport const CONTENT_STRATEGY = {\n AppendScriptToBody(content, options) {\n return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToBody(), undefined, options);\n },\n AppendScriptToHead(content, options) {\n return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);\n },\n AppendStyleToHead(content, options) {\n return new StyleContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);\n },\n PrependStyleToHead(content, options) {\n return new StyleContentStrategy(content, DOM_STRATEGY.PrependToHead(), undefined, options);\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zdHJhdGVnaWVzL2NvbnRlbnQuc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUEyQixNQUFNLDZCQUE2QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU0zQyxNQUFNLE9BQWdCLGVBQWU7SUFDbkMsWUFDUyxPQUFlLEVBQ1osY0FBMkIsWUFBWSxDQUFDLFlBQVksRUFBRSxFQUN0RCwwQkFBbUQseUJBQXlCLENBQUMsSUFBSSxFQUFFLEVBQ25GLFVBQTZCLEVBQUU7UUFIbEMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNaLGdCQUFXLEdBQVgsV0FBVyxDQUEyQztRQUN0RCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQTREO1FBQ25GLFlBQU8sR0FBUCxPQUFPLENBQXdCO0lBQ3hDLENBQUM7SUFJSixhQUFhO1FBQ1gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXJDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFvQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDMUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBSSxJQUFJLENBQUMsT0FBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkQsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFeEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGVBQWlDO0lBQ3pFLGFBQWE7UUFDWCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUVuQyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBa0M7SUFDM0UsYUFBYTtRQUNYLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRW5DLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLGtCQUFrQixDQUFDLE9BQWUsRUFBRSxPQUEyQztRQUM3RSxPQUFPLElBQUkscUJBQXFCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxZQUFZLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUNELGtCQUFrQixDQUFDLE9BQWUsRUFBRSxPQUEyQztRQUM3RSxPQUFPLElBQUkscUJBQXFCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxZQUFZLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUNELGlCQUFpQixDQUFDLE9BQWUsRUFBRSxPQUEwQztRQUMzRSxPQUFPLElBQUksb0JBQW9CLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxZQUFZLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUNELGtCQUFrQixDQUFDLE9BQWUsRUFBRSxPQUEwQztRQUM1RSxPQUFPLElBQUksb0JBQW9CLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxhQUFhLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0YsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT05URU5UX1NFQ1VSSVRZX1NUUkFURUdZLCBDb250ZW50U2VjdXJpdHlTdHJhdGVneSB9IGZyb20gJy4vY29udGVudC1zZWN1cml0eS5zdHJhdGVneSc7XHJcbmltcG9ydCB7IERPTV9TVFJBVEVHWSwgRG9tU3RyYXRlZ3kgfSBmcm9tICcuL2RvbS5zdHJhdGVneSc7XHJcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5leHBvcnQgdHlwZSBFbGVtZW50T3B0aW9uczxUIGV4dGVuZHMgSFRNTFNjcmlwdEVsZW1lbnQgfCBIVE1MU3R5bGVFbGVtZW50ID0gYW55PiA9IFBhcnRpYWw8e1xyXG4gIFtrZXkgaW4ga2V5b2YgVF06IFRba2V5XTtcclxufT47XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29udGVudFN0cmF0ZWd5PFQgZXh0ZW5kcyBIVE1MU2NyaXB0RWxlbWVudCB8IEhUTUxTdHlsZUVsZW1lbnQgPSBhbnk+IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjb250ZW50OiBzdHJpbmcsXHJcbiAgICBwcm90ZWN0ZWQgZG9tU3RyYXRlZ3k6IERvbVN0cmF0ZWd5ID0gRE9NX1NUUkFURUdZLkFwcGVuZFRvSGVhZCgpLFxyXG4gICAgcHJvdGVjdGVkIGNvbnRlbnRTZWN1cml0eVN0cmF0ZWd5OiBDb250ZW50U2VjdXJpdHlTdHJhdGVneSA9IENPTlRFTlRfU0VDVVJJVFlfU1RSQVRFR1kuTm9uZSgpLFxyXG4gICAgcHJvdGVjdGVkIG9wdGlvbnM6IEVsZW1lbnRPcHRpb25zPFQ+ID0ge30sXHJcbiAgKSB7fVxyXG5cclxuICBhYnN0cmFjdCBjcmVhdGVFbGVtZW50KCk6IFQ7XHJcblxyXG4gIGluc2VydEVsZW1lbnQoKTogVCB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5jcmVhdGVFbGVtZW50KCk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiBPYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMpLmxlbmd0aCA+IDApIHtcclxuICAgICAgKE9iamVjdC5rZXlzKHRoaXMub3B0aW9ucykgYXMgQXJyYXk8a2V5b2YgRWxlbWVudE9wdGlvbnM8VD4+KS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9uc1trZXldKSB7XHJcbiAgICAgICAgICBlbGVtZW50W2tleV0gPSAodGhpcy5vcHRpb25zIGFzIE5vbk51bGxhYmxlPFQ+KVtrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb250ZW50U2VjdXJpdHlTdHJhdGVneS5hcHBseUNTUChlbGVtZW50KTtcclxuICAgIHRoaXMuZG9tU3RyYXRlZ3kuaW5zZXJ0RWxlbWVudChlbGVtZW50KTtcclxuXHJcbiAgICByZXR1cm4gZWxlbWVudDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTdHlsZUNvbnRlbnRTdHJhdGVneSBleHRlbmRzIENvbnRlbnRTdHJhdGVneTxIVE1MU3R5bGVFbGVtZW50PiB7XHJcbiAgY3JlYXRlRWxlbWVudCgpOiBIVE1MU3R5bGVFbGVtZW50IHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcbiAgICBlbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5jb250ZW50O1xyXG5cclxuICAgIHJldHVybiBlbGVtZW50O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNjcmlwdENvbnRlbnRTdHJhdGVneSBleHRlbmRzIENvbnRlbnRTdHJhdGVneTxIVE1MU2NyaXB0RWxlbWVudD4ge1xyXG4gIGNyZWF0ZUVsZW1lbnQoKTogSFRNTFNjcmlwdEVsZW1lbnQge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IGluamVjdChET0NVTUVOVCkuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICBlbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5jb250ZW50O1xyXG5cclxuICAgIHJldHVybiBlbGVtZW50O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IENPTlRFTlRfU1RSQVRFR1kgPSB7XHJcbiAgQXBwZW5kU2NyaXB0VG9Cb2R5KGNvbnRlbnQ6IHN0cmluZywgb3B0aW9ucz86IEVsZW1lbnRPcHRpb25zPEhUTUxTY3JpcHRFbGVtZW50Pikge1xyXG4gICAgcmV0dXJuIG5ldyBTY3JpcHRDb250ZW50U3RyYXRlZ3koY29udGVudCwgRE9NX1NUUkFURUdZLkFwcGVuZFRvQm9keSgpLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xyXG4gIH0sXHJcbiAgQXBwZW5kU2NyaXB0VG9IZWFkKGNvbnRlbnQ6IHN0cmluZywgb3B0aW9ucz86IEVsZW1lbnRPcHRpb25zPEhUTUxTY3JpcHRFbGVtZW50Pikge1xyXG4gICAgcmV0dXJuIG5ldyBTY3JpcHRDb250ZW50U3RyYXRlZ3koY29udGVudCwgRE9NX1NUUkFURUdZLkFwcGVuZFRvSGVhZCgpLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xyXG4gIH0sXHJcbiAgQXBwZW5kU3R5bGVUb0hlYWQoY29udGVudDogc3RyaW5nLCBvcHRpb25zPzogRWxlbWVudE9wdGlvbnM8SFRNTFN0eWxlRWxlbWVudD4pIHtcclxuICAgIHJldHVybiBuZXcgU3R5bGVDb250ZW50U3RyYXRlZ3koY29udGVudCwgRE9NX1NUUkFURUdZLkFwcGVuZFRvSGVhZCgpLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xyXG4gIH0sXHJcbiAgUHJlcGVuZFN0eWxlVG9IZWFkKGNvbnRlbnQ6IHN0cmluZywgb3B0aW9ucz86IEVsZW1lbnRPcHRpb25zPEhUTUxTdHlsZUVsZW1lbnQ+KSB7XHJcbiAgICByZXR1cm4gbmV3IFN0eWxlQ29udGVudFN0cmF0ZWd5KGNvbnRlbnQsIERPTV9TVFJBVEVHWS5QcmVwZW5kVG9IZWFkKCksIHVuZGVmaW5lZCwgb3B0aW9ucyk7XHJcbiAgfSxcclxufTtcclxuIl19","export class ContextStrategy {\n constructor(context) {\n this.context = context;\n }\n setContext(componentRef) {\n return this.context;\n }\n}\nexport class NoContextStrategy extends ContextStrategy {\n constructor() {\n super(undefined);\n }\n}\nexport class ComponentContextStrategy extends ContextStrategy {\n setContext(componentRef) {\n Object.keys(this.context).forEach(key => (componentRef.instance[key] = this.context[key]));\n componentRef.changeDetectorRef.detectChanges();\n return this.context;\n }\n}\nexport class TemplateContextStrategy extends ContextStrategy {\n setContext() {\n return this.context;\n }\n}\nexport const CONTEXT_STRATEGY = {\n None() {\n return new NoContextStrategy();\n },\n Component(context) {\n return new ComponentContextStrategy(context);\n },\n Template(context) {\n return new TemplateContextStrategy(context);\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zdHJhdGVnaWVzL2NvbnRleHQuc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFnQixlQUFlO0lBQ25DLFlBQW1CLE9BQWdDO1FBQWhDLFlBQU8sR0FBUCxPQUFPLENBQXlCO0lBQUcsQ0FBQztJQUV2RCxVQUFVLENBQUMsWUFBa0Q7UUFDM0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxpQkFFWCxTQUFRLGVBQWtCO0lBQzFCO1FBQ0UsS0FBSyxDQUFDLFNBQStDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sd0JBQW9ELFNBQVEsZUFBa0I7SUFDekYsVUFBVSxDQUFDLFlBQWlEO1FBQzFELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRixZQUFZLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyx1QkFBMEQsU0FBUSxlQUFrQjtJQUMvRixVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLElBQUk7UUFDRixPQUFPLElBQUksaUJBQWlCLEVBQUssQ0FBQztJQUNwQyxDQUFDO0lBQ0QsU0FBUyxDQUE0QixPQUF1QztRQUMxRSxPQUFPLElBQUksd0JBQXdCLENBQUksT0FBTyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELFFBQVEsQ0FBbUMsT0FBc0M7UUFDL0UsT0FBTyxJQUFJLHVCQUF1QixDQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBUZW1wbGF0ZVJlZiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbmZlcnJlZENvbnRleHRPZiwgSW5mZXJyZWRJbnN0YW5jZU9mIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb250ZXh0U3RyYXRlZ3k8VCA9IGFueT4ge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb250ZXh0OiBQYXJ0aWFsPENvbnRleHRUeXBlPFQ+Pikge31cclxuXHJcbiAgc2V0Q29udGV4dChjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8SW5mZXJyZWRJbnN0YW5jZU9mPFQ+Pik6IFBhcnRpYWw8Q29udGV4dFR5cGU8VD4+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbnRleHQ7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTm9Db250ZXh0U3RyYXRlZ3k8XHJcbiAgVCBleHRlbmRzIFR5cGU8YW55PiB8IFRlbXBsYXRlUmVmPGFueT4gPSBhbnksXHJcbj4gZXh0ZW5kcyBDb250ZXh0U3RyYXRlZ3k8VD4ge1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIodW5kZWZpbmVkIGFzIHVua25vd24gYXMgUGFydGlhbDxDb250ZXh0VHlwZTxUPj4pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbXBvbmVudENvbnRleHRTdHJhdGVneTxUIGV4dGVuZHMgVHlwZTxhbnk+ID0gYW55PiBleHRlbmRzIENvbnRleHRTdHJhdGVneTxUPiB7XHJcbiAgc2V0Q29udGV4dChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxJbmZlcnJlZEluc3RhbmNlT2Y8VD4+KTogUGFydGlhbDxJbmZlcnJlZEluc3RhbmNlT2Y8VD4+IHtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuY29udGV4dCkuZm9yRWFjaChrZXkgPT4gKGNvbXBvbmVudFJlZi5pbnN0YW5jZVtrZXldID0gdGhpcy5jb250ZXh0W2tleV0pKTtcclxuICAgIGNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQ29udGV4dFN0cmF0ZWd5PFQgZXh0ZW5kcyBUZW1wbGF0ZVJlZjxhbnk+ID0gYW55PiBleHRlbmRzIENvbnRleHRTdHJhdGVneTxUPiB7XHJcbiAgc2V0Q29udGV4dCgpOiBQYXJ0aWFsPEluZmVycmVkQ29udGV4dE9mPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IENPTlRFWFRfU1RSQVRFR1kgPSB7XHJcbiAgTm9uZTxUIGV4dGVuZHMgVHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55PiA9IGFueT4oKSB7XHJcbiAgICByZXR1cm4gbmV3IE5vQ29udGV4dFN0cmF0ZWd5PFQ+KCk7XHJcbiAgfSxcclxuICBDb21wb25lbnQ8VCBleHRlbmRzIFR5cGU8YW55PiA9IGFueT4oY29udGV4dDogUGFydGlhbDxJbmZlcnJlZEluc3RhbmNlT2Y8VD4+KSB7XHJcbiAgICByZXR1cm4gbmV3IENvbXBvbmVudENvbnRleHRTdHJhdGVneTxUPihjb250ZXh0KTtcclxuICB9LFxyXG4gIFRlbXBsYXRlPFQgZXh0ZW5kcyBUZW1wbGF0ZVJlZjxhbnk+ID0gYW55Pihjb250ZXh0OiBQYXJ0aWFsPEluZmVycmVkQ29udGV4dE9mPFQ+Pikge1xyXG4gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUNvbnRleHRTdHJhdGVneTxUPihjb250ZXh0KTtcclxuICB9LFxyXG59O1xyXG5cclxudHlwZSBDb250ZXh0VHlwZTxUPiA9IFQgZXh0ZW5kcyBUeXBlPGluZmVyIFU+IHwgVGVtcGxhdGVSZWY8aW5mZXIgVT4gPyBVIDogbmV2ZXI7XHJcbiJdfQ==","import { of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { fromLazyLoad } from '../utils';\nimport { CROSS_ORIGIN_STRATEGY } from './cross-origin.strategy';\nimport { DOM_STRATEGY } from './dom.strategy';\nexport class LoadingStrategy {\n constructor(path, domStrategy = DOM_STRATEGY.AppendToHead(), crossOriginStrategy = CROSS_ORIGIN_STRATEGY.Anonymous()) {\n this.path = path;\n this.domStrategy = domStrategy;\n this.crossOriginStrategy = crossOriginStrategy;\n }\n createStream() {\n this.element = this.createElement();\n return of(null).pipe(switchMap(() => fromLazyLoad(this.element, this.domStrategy, this.crossOriginStrategy)));\n }\n}\nexport class ScriptLoadingStrategy extends LoadingStrategy {\n constructor(src, domStrategy, crossOriginStrategy) {\n super(src, domStrategy, crossOriginStrategy);\n }\n createElement() {\n const element = document.createElement('script');\n element.src = this.path;\n return element;\n }\n}\nexport class StyleLoadingStrategy extends LoadingStrategy {\n constructor(href, domStrategy, crossOriginStrategy) {\n super(href, domStrategy, crossOriginStrategy);\n }\n createElement() {\n const element = document.createElement('link');\n element.rel = 'stylesheet';\n element.href = this.path;\n return element;\n }\n}\nexport const LOADING_STRATEGY = {\n AppendScriptToBody(src) {\n return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToBody(), CROSS_ORIGIN_STRATEGY.None());\n },\n AppendAnonymousScriptToBody(src, integrity) {\n return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToBody(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));\n },\n AppendAnonymousScriptToHead(src, integrity) {\n return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));\n },\n AppendAnonymousStyleToHead(src, integrity) {\n return new StyleLoadingStrategy(src, DOM_STRATEGY.AppendToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));\n },\n PrependAnonymousScriptToHead(src, integrity) {\n return new ScriptLoadingStrategy(src, DOM_STRATEGY.PrependToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));\n },\n PrependAnonymousStyleToHead(src, integrity) {\n return new StyleLoadingStrategy(src, DOM_STRATEGY.PrependToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zdHJhdGVnaWVzL2xvYWRpbmcuc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUscUJBQXFCLEVBQXVCLE1BQU0seUJBQXlCLENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBRTNELE1BQU0sT0FBZ0IsZUFBZTtJQUduQyxZQUNTLElBQVksRUFDVCxjQUEyQixZQUFZLENBQUMsWUFBWSxFQUFFLEVBQ3RELHNCQUEyQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUU7UUFGL0UsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNULGdCQUFXLEdBQVgsV0FBVyxDQUEyQztRQUN0RCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXlEO0lBQ3JGLENBQUM7SUFJSixZQUFZO1FBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFcEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNsQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUMzRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGVBQWtDO0lBQzNFLFlBQVksR0FBVyxFQUFFLFdBQXlCLEVBQUUsbUJBQXlDO1FBQzNGLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUV4QixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZUFBZ0M7SUFDeEUsWUFBWSxJQUFZLEVBQUUsV0FBeUIsRUFBRSxtQkFBeUM7UUFDNUYsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsT0FBTyxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUM7UUFDM0IsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRXpCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLGtCQUFrQixDQUFDLEdBQVc7UUFDNUIsT0FBTyxJQUFJLHFCQUFxQixDQUM5QixHQUFHLEVBQ0gsWUFBWSxDQUFDLFlBQVksRUFBRSxFQUMzQixxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsQ0FDN0IsQ0FBQztJQUNKLENBQUM7SUFDRCwyQkFBMkIsQ0FBQyxHQUFXLEVBQUUsU0FBa0I7UUFDekQsT0FBTyxJQUFJLHFCQUFxQixDQUM5QixHQUFHLEVBQ0gsWUFBWSxDQUFDLFlBQVksRUFBRSxFQUMzQixxQkFBcUIsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQzNDLENBQUM7SUFDSixDQUFDO0lBQ0QsMkJBQTJCLENBQUMsR0FBVyxFQUFFLFNBQWtCO1FBQ3pELE9BQU8sSUFBSSxxQkFBcUIsQ0FDOUIsR0FBRyxFQUNILFlBQVksQ0FBQyxZQUFZLEVBQUUsRUFDM0IscUJBQXFCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUMzQyxDQUFDO0lBQ0osQ0FBQztJQUNELDBCQUEwQixDQUFDLEdBQVcsRUFBRSxTQUFrQjtRQUN4RCxPQUFPLElBQUksb0JBQW9CLENBQzdCLEdBQUcsRUFDSCxZQUFZLENBQUMsWUFBWSxFQUFFLEVBQzNCLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FDM0MsQ0FBQztJQUNKLENBQUM7SUFDRCw0QkFBNEIsQ0FBQyxHQUFXLEVBQUUsU0FBa0I7UUFDMUQsT0FBTyxJQUFJLHFCQUFxQixDQUM5QixHQUFHLEVBQ0gsWUFBWSxDQUFDLGFBQWEsRUFBRSxFQUM1QixxQkFBcUIsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQzNDLENBQUM7SUFDSixDQUFDO0lBQ0QsMkJBQTJCLENBQUMsR0FBVyxFQUFFLFNBQWtCO1FBQ3pELE9BQU8sSUFBSSxvQkFBb0IsQ0FDN0IsR0FBRyxFQUNILFlBQVksQ0FBQyxhQUFhLEVBQUUsRUFDNUIscUJBQXFCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUMzQyxDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGZyb21MYXp5TG9hZCB9IGZyb20gJy4uL3V0aWxzJztcclxuaW1wb3J0IHsgQ1JPU1NfT1JJR0lOX1NUUkFURUdZLCBDcm9zc09yaWdpblN0cmF0ZWd5IH0gZnJvbSAnLi9jcm9zcy1vcmlnaW4uc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBET01fU1RSQVRFR1ksIERvbVN0cmF0ZWd5IH0gZnJvbSAnLi9kb20uc3RyYXRlZ3knO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExvYWRpbmdTdHJhdGVneTxUIGV4dGVuZHMgSFRNTFNjcmlwdEVsZW1lbnQgfCBIVE1MTGlua0VsZW1lbnQgPSBhbnk+IHtcclxuICBlbGVtZW50ITogVDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcGF0aDogc3RyaW5nLFxyXG4gICAgcHJvdGVjdGVkIGRvbVN0cmF0ZWd5OiBEb21TdHJhdGVneSA9IERPTV9TVFJBVEVHWS5BcHBlbmRUb0hlYWQoKSxcclxuICAgIHByb3RlY3RlZCBjcm9zc09yaWdpblN0cmF0ZWd5OiBDcm9zc09yaWdpblN0cmF0ZWd5ID0gQ1JPU1NfT1JJR0lOX1NUUkFURUdZLkFub255bW91cygpLFxyXG4gICkge31cclxuXHJcbiAgYWJzdHJhY3QgY3JlYXRlRWxlbWVudCgpOiBUO1xyXG5cclxuICBjcmVhdGVTdHJlYW08RSBleHRlbmRzIEV2ZW50PigpOiBPYnNlcnZhYmxlPEU+IHtcclxuICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuY3JlYXRlRWxlbWVudCgpO1xyXG5cclxuICAgIHJldHVybiBvZihudWxsKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gZnJvbUxhenlMb2FkPEU+KHRoaXMuZWxlbWVudCwgdGhpcy5kb21TdHJhdGVneSwgdGhpcy5jcm9zc09yaWdpblN0cmF0ZWd5KSksXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNjcmlwdExvYWRpbmdTdHJhdGVneSBleHRlbmRzIExvYWRpbmdTdHJhdGVneTxIVE1MU2NyaXB0RWxlbWVudD4ge1xyXG4gIGNvbnN0cnVjdG9yKHNyYzogc3RyaW5nLCBkb21TdHJhdGVneT86IERvbVN0cmF0ZWd5LCBjcm9zc09yaWdpblN0cmF0ZWd5PzogQ3Jvc3NPcmlnaW5TdHJhdGVneSkge1xyXG4gICAgc3VwZXIoc3JjLCBkb21TdHJhdGVneSwgY3Jvc3NPcmlnaW5TdHJhdGVneSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVFbGVtZW50KCk6IEhUTUxTY3JpcHRFbGVtZW50IHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgIGVsZW1lbnQuc3JjID0gdGhpcy5wYXRoO1xyXG5cclxuICAgIHJldHVybiBlbGVtZW50O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFN0eWxlTG9hZGluZ1N0cmF0ZWd5IGV4dGVuZHMgTG9hZGluZ1N0cmF0ZWd5PEhUTUxMaW5rRWxlbWVudD4ge1xyXG4gIGNvbnN0cnVjdG9yKGhyZWY6IHN0cmluZywgZG9tU3RyYXRlZ3k/OiBEb21TdHJhdGVneSwgY3Jvc3NPcmlnaW5TdHJhdGVneT86IENyb3NzT3JpZ2luU3RyYXRlZ3kpIHtcclxuICAgIHN1cGVyKGhyZWYsIGRvbVN0cmF0ZWd5LCBjcm9zc09yaWdpblN0cmF0ZWd5KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUVsZW1lbnQoKTogSFRNTExpbmtFbGVtZW50IHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XHJcbiAgICBlbGVtZW50LnJlbCA9ICdzdHlsZXNoZWV0JztcclxuICAgIGVsZW1lbnQuaHJlZiA9IHRoaXMucGF0aDtcclxuXHJcbiAgICByZXR1cm4gZWxlbWVudDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBMT0FESU5HX1NUUkFURUdZID0ge1xyXG4gIEFwcGVuZFNjcmlwdFRvQm9keShzcmM6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIG5ldyBTY3JpcHRMb2FkaW5nU3RyYXRlZ3koXHJcbiAgICAgIHNyYyxcclxuICAgICAgRE9NX1NUUkFURUdZLkFwcGVuZFRvQm9keSgpLFxyXG4gICAgICBDUk9TU19PUklHSU5fU1RSQVRFR1kuTm9uZSgpLFxyXG4gICAgKTtcclxuICB9LFxyXG4gIEFwcGVuZEFub255bW91c1NjcmlwdFRvQm9keShzcmM6IHN0cmluZywgaW50ZWdyaXR5Pzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbmV3IFNjcmlwdExvYWRpbmdTdHJhdGVneShcclxuICAgICAgc3JjLFxyXG4gICAgICBET01fU1RSQVRFR1kuQXBwZW5kVG9Cb2R5KCksXHJcbiAgICAgIENST1NTX09SSUdJTl9TVFJBVEVHWS5Bbm9ueW1vdXMoaW50ZWdyaXR5KSxcclxuICAgICk7XHJcbiAgfSxcclxuICBBcHBlbmRBbm9ueW1vdXNTY3JpcHRUb0hlYWQoc3JjOiBzdHJpbmcsIGludGVncml0eT86IHN0cmluZykge1xyXG4gICAgcmV0dXJuIG5ldyBTY3JpcHRMb2FkaW5nU3RyYXRlZ3koXHJcbiAgICAgIHNyYyxcclxuICAgICAgRE9NX1NUUkFURUdZLkFwcGVuZFRvSGVhZCgpLFxyXG4gICAgICBDUk9TU19PUklHSU5fU1RSQVRFR1kuQW5vbnltb3VzKGludGVncml0eSksXHJcbiAgICApO1xyXG4gIH0sXHJcbiAgQXBwZW5kQW5vbnltb3VzU3R5bGVUb0hlYWQoc3JjOiBzdHJpbmcsIGludGVncml0eT86IHN0cmluZykge1xyXG4gICAgcmV0dXJuIG5ldyBTdHlsZUxvYWRpbmdTdHJhdGVneShcclxuICAgICAgc3JjLFxyXG4gICAgICBET01fU1RSQVRFR1kuQXBwZW5kVG9IZWFkKCksXHJcbiAgICAgIENST1NTX09SSUdJTl9TVFJBVEVHWS5Bbm9ueW1vdXMoaW50ZWdyaXR5KSxcclxuICAgICk7XHJcbiAgfSxcclxuICBQcmVwZW5kQW5vbnltb3VzU2NyaXB0VG9IZWFkKHNyYzogc3RyaW5nLCBpbnRlZ3JpdHk/OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBuZXcgU2NyaXB0TG9hZGluZ1N0cmF0ZWd5KFxyXG4gICAgICBzcmMsXHJcbiAgICAgIERPTV9TVFJBVEVHWS5QcmVwZW5kVG9IZWFkKCksXHJcbiAgICAgIENST1NTX09SSUdJTl9TVFJBVEVHWS5Bbm9ueW1vdXMoaW50ZWdyaXR5KSxcclxuICAgICk7XHJcbiAgfSxcclxuICBQcmVwZW5kQW5vbnltb3VzU3R5bGVUb0hlYWQoc3JjOiBzdHJpbmcsIGludGVncml0eT86IHN0cmluZykge1xyXG4gICAgcmV0dXJuIG5ldyBTdHlsZUxvYWRpbmdTdHJhdGVneShcclxuICAgICAgc3JjLFxyXG4gICAgICBET01fU1RSQVRFR1kuUHJlcGVuZFRvSGVhZCgpLFxyXG4gICAgICBDUk9TU19PUklHSU5fU1RSQVRFR1kuQW5vbnltb3VzKGludGVncml0eSksXHJcbiAgICApO1xyXG4gIH0sXHJcbn07XHJcbiJdfQ==","import { ApplicationRef, ComponentFactoryResolver, } from '@angular/core';\nimport { CONTAINER_STRATEGY } from './container.strategy';\nimport { CONTEXT_STRATEGY } from './context.strategy';\nimport { DOM_STRATEGY } from './dom.strategy';\nexport class ProjectionStrategy {\n constructor(content) {\n this.content = content;\n }\n}\nexport class ComponentProjectionStrategy extends ProjectionStrategy {\n constructor(component, containerStrategy, contextStrategy = CONTEXT_STRATEGY.None()) {\n super(component);\n this.containerStrategy = containerStrategy;\n this.contextStrategy = contextStrategy;\n }\n injectContent(injector) {\n this.containerStrategy.prepare();\n const resolver = injector.get(ComponentFactoryResolver);\n const factory = resolver.resolveComponentFactory(this.content);\n const componentRef = this.containerStrategy.containerRef.createComponent(factory, this.containerStrategy.getIndex(), injector);\n this.contextStrategy.setContext(componentRef);\n return componentRef;\n }\n}\nexport class RootComponentProjectionStrategy extends ProjectionStrategy {\n constructor(component, contextStrategy = CONTEXT_STRATEGY.None(), domStrategy = DOM_STRATEGY.AppendToBody()) {\n super(component);\n this.contextStrategy = contextStrategy;\n this.domStrategy = domStrategy;\n }\n injectContent(injector) {\n const appRef = injector.get(ApplicationRef);\n const resolver = injector.get(ComponentFactoryResolver);\n const componentRef = resolver\n .resolveComponentFactory(this.content)\n .create(injector);\n this.contextStrategy.setContext(componentRef);\n appRef.attachView(componentRef.hostView);\n const element = componentRef.hostView.rootNodes[0];\n this.domStrategy.insertElement(element);\n return componentRef;\n }\n}\nexport class TemplateProjectionStrategy extends ProjectionStrategy {\n constructor(templateRef, containerStrategy, contextStrategy = CONTEXT_STRATEGY.None()) {\n super(templateRef);\n this.containerStrategy = containerStrategy;\n this.contextStrategy = contextStrategy;\n }\n injectContent() {\n this.containerStrategy.prepare();\n const embeddedViewRef = this.containerStrategy.containerRef.createEmbeddedView(this.content, this.contextStrategy.context, this.containerStrategy.getIndex());\n embeddedViewRef.detectChanges();\n return embeddedViewRef;\n }\n}\nexport const PROJECTION_STRATEGY = {\n AppendComponentToBody(component, context) {\n return new RootComponentProjectionStrategy(component, context && CONTEXT_STRATEGY.Component(context));\n },\n AppendComponentToContainer(component, containerRef, context) {\n return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Append(containerRef), context && CONTEXT_STRATEGY.Component(context));\n },\n AppendTemplateToContainer(templateRef, containerRef, context) {\n return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Append(containerRef), context && CONTEXT_STRATEGY.Template(context));\n },\n PrependComponentToContainer(component, containerRef, context) {\n return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Prepend(containerRef), context && CONTEXT_STRATEGY.Component(context));\n },\n PrependTemplateToContainer(templateRef, containerRef, context) {\n return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Prepend(containerRef), context && CONTEXT_STRATEGY.Template(context));\n },\n ProjectComponentToContainer(component, containerRef, context) {\n return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Clear(containerRef), context && CONTEXT_STRATEGY.Component(context));\n },\n ProjectTemplateToContainer(templateRef, containerRef, context) {\n return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Clear(containerRef), context && CONTEXT_STRATEGY.Template(context));\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdGlvbi5zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zdHJhdGVnaWVzL3Byb2plY3Rpb24uc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCx3QkFBd0IsR0FPekIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFxQixrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RSxPQUFPLEVBQWUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsTUFBTSxPQUFnQixrQkFBa0I7SUFDdEMsWUFBbUIsT0FBVTtRQUFWLFlBQU8sR0FBUCxPQUFPLENBQUc7SUFBRyxDQUFDO0NBR2xDO0FBRUQsTUFBTSxPQUFPLDJCQUFpRCxTQUFRLGtCQUFxQjtJQUN6RixZQUNFLFNBQVksRUFDSixpQkFBb0MsRUFDcEMsa0JBQW1DLGdCQUFnQixDQUFDLElBQUksRUFBRTtRQUVsRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIVCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLG9CQUFlLEdBQWYsZUFBZSxDQUEyQztJQUdwRSxDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQWtCO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVqQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUE2QixDQUFDO1FBQ3BGLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBd0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXRGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUN0RSxPQUFP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LEVBQ3ZDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQzlDLENBQUM7SUFDSixDQUFDO0lBQ0QsMkJBQTJCLENBQ3pCLFNBQVksRUFDWixZQUE4QixFQUM5QixPQUF3QztRQUV4QyxPQUFPLElBQUksMkJBQTJCLENBQ3BDLFNBQVMsRUFDVCxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQ3hDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQy9DLENBQUM7SUFDSixDQUFDO0lBQ0QsMEJBQTBCLENBQ3hCLFdBQWMsRUFDZCxZQUE4QixFQUM5QixPQUF1QztRQUV2QyxPQUFPLElBQUksMEJBQTBCLENBQ25DLFdBQVcsRUFDWCxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQ3hDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQzlDLENBQUM7SUFDSixDQUFDO0lBQ0QsMkJBQTJCLENBQ3pCLFNBQVksRUFDWixZQUE4QixFQUM5QixPQUF3QztRQUV4QyxPQUFPLElBQUksMkJBQTJCLENBQ3BDLFNBQVMsRUFDVCxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQ3RDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQy9DLENBQUM7SUFDSixDQUFDO0lBQ0QsMEJBQTBCLENBQ3hCLFdBQWMsRUFDZCxZQUE4QixFQUM5QixPQUF1QztRQUV2QyxPQUFPLElBQUksMEJBQTBCLENBQ25DLFdBQVcsRUFDWCxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQ3RDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQzlDLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQXBwbGljYXRpb25SZWYsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbXBvbmVudFJlZixcclxuICBFbWJlZGRlZFZpZXdSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVHlwZSxcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbmZlcnJlZENvbnRleHRPZiwgSW5mZXJyZWRJbnN0YW5jZU9mIH0gZnJvbSAnLi4vbW9kZWxzL3V0aWxpdHknO1xyXG5pbXBvcnQgeyBDb250YWluZXJTdHJhdGVneSwgQ09OVEFJTkVSX1NUUkFURUdZIH0gZnJvbSAnLi9jb250YWluZXIuc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBDb250ZXh0U3RyYXRlZ3ksIENPTlRFWFRfU1RSQVRFR1kgfSBmcm9tICcuL2NvbnRleHQuc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBEb21TdHJhdGVneSwgRE9NX1NUUkFURUdZIH0gZnJvbSAnLi9kb20uc3RyYXRlZ3knO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByb2plY3Rpb25TdHJhdGVneTxUID0gYW55PiB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGNvbnRlbnQ6IFQpIHt9XHJcblxyXG4gIGFic3RyYWN0IGluamVjdENvbnRlbnQoaW5qZWN0b3I6IEluamVjdG9yKTogQ29tcG9uZW50UmVmT3JFbWJlZGRlZFZpZXdSZWY8VD47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRQcm9qZWN0aW9uU3RyYXRlZ3k8VCBleHRlbmRzIFR5cGU8YW55Pj4gZXh0ZW5kcyBQcm9qZWN0aW9uU3RyYXRlZ3k8VD4ge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgY29tcG9uZW50OiBULFxyXG4gICAgcHJpdmF0ZSBjb250YWluZXJTdHJhdGVneTogQ29udGFpbmVyU3RyYXRlZ3ksXHJcbiAgICBwcml2YXRlIGNvbnRleHRTdHJhdGVneTogQ29udGV4dFN0cmF0ZWd5ID0gQ09OVEVYVF9TVFJBVEVHWS5Ob25lKCksXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnQpO1xyXG4gIH1cclxuXHJcbiAgaW5qZWN0Q29udGVudChpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHRoaXMuY29udGFpbmVyU3RyYXRlZ3kucHJlcGFyZSgpO1xyXG5cclxuICAgIGNvbnN0IHJlc29sdmVyID0gaW5qZWN0b3IuZ2V0KENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikgYXMgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyO1xyXG4gICAgY29uc3QgZmFjdG9yeSA9IHJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5PEluZmVycmVkSW5zdGFuY2VPZjxUPj4odGhpcy5jb250ZW50KTtcclxuXHJcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbnRhaW5lclN0cmF0ZWd5LmNvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoXHJcbiAgICAgIGZhY3RvcnksXHJcbiAgICAgIHRoaXMuY29udGFpbmVyU3RyYXRlZ3kuZ2V0SW5kZXgoKSxcclxuICAgICAgaW5qZWN0b3IsXHJcbiAgICApO1xyXG4gICAgdGhpcy5jb250ZXh0U3RyYXRlZ3kuc2V0Q29udGV4dChjb21wb25lbnRSZWYpO1xyXG5cclxuICAgIHJldHVybiBjb21wb25lbnRSZWYgYXMgQ29tcG9uZW50UmVmT3JFbWJlZGRlZFZpZXdSZWY8VD47XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUm9vdENvbXBvbmVudFByb2plY3Rpb25TdHJhdGVneTxUIGV4dGVuZHMgVHlwZTxhbnk+PiBleHRlbmRzIFByb2plY3Rpb25TdHJhdGVneTxUPiB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjb21wb25lbnQ6IFQsXHJcbiAgICBwcml2YXRlIGNvbnRleHRTdHJhdGVneTogQ29udGV4dFN0cmF0ZWd5ID0gQ09OVEVYVF9TVFJBVEVHWS5Ob25lKCksXHJcbiAgICBwcml2YXRlIGRvbVN0cmF0ZWd5OiBEb21TdHJhdGVneSA9IERPTV9TVFJBVEVHWS5BcHBlbmRUb0JvZHkoKSxcclxuICApIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudCk7XHJcbiAgfVxyXG5cclxuICBpbmplY3RDb250ZW50KGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgY29uc3QgYXBwUmVmID0gaW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uUmVmKTtcclxuICAgIGNvbnN0IHJlc29sdmVyID0gaW5qZWN0b3IuZ2V0KENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikgYXMgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyO1xyXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gcmVzb2x2ZXJcclxuICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5PEluZmVycmVkSW5zdGFuY2VPZjxUPj4odGhpcy5jb250ZW50KVxyXG4gICAgICAuY3JlYXRlKGluamVjdG9yKTtcclxuXHJcbiAgICB0aGlzLmNvbnRleHRTdHJhdGVneS5zZXRDb250ZXh0KGNvbXBvbmVudFJlZik7XHJcblxyXG4gICAgYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuICAgIGNvbnN0IGVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzWzBdO1xyXG4gICAgdGhpcy5kb21TdHJhdGVneS5pbnNlcnRFbGVtZW50KGVsZW1lbnQpO1xyXG5cclxuICAgIHJldHVybiBjb21wb25lbnRSZWYgYXMgQ29tcG9uZW50UmVmT3JFbWJlZGRlZFZpZXdSZWY8VD47XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVQcm9qZWN0aW9uU3RyYXRlZ3k8VCBleHRlbmRzIFRlbXBsYXRlUmVmPGFueT4+IGV4dGVuZHMgUHJvamVjdGlvblN0cmF0ZWd5PFQ+IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHRlbXBsYXRlUmVmOiBULFxyXG4gICAgcHJpdmF0ZSBjb250YWluZXJTdHJhdGVneTogQ29udGFpbmVyU3RyYXRlZ3ksXHJcbiAgICBwcml2YXRlIGNvbnRleHRTdHJhdGVneSA9IENPTlRFWFRfU1RSQVRFR1kuTm9uZSgpLFxyXG4gICkge1xyXG4gICAgc3VwZXIodGVtcGxhdGVSZWYpO1xyXG4gIH1cclxuXHJcbiAgaW5qZWN0Q29udGVudCgpIHtcclxuICAgIHRoaXMuY29udGFpbmVyU3RyYXRlZ3kucHJlcGFyZSgpO1xyXG5cclxuICAgIGNvbnN0IGVtYmVkZGVkVmlld1JlZiA9IHRoaXMuY29udGFpbmVyU3RyYXRlZ3kuY29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhcclxuICAgICAgdGhpcy5jb250ZW50LFxyXG4gICAgICB0aGlzLmNvbnRleHRTdHJhdGVneS5jb250ZXh0LFxyXG4gICAgICB0aGlzLmNvbnRhaW5lclN0cmF0ZWd5LmdldEluZGV4KCksXHJcbiAgICApO1xyXG4gICAgZW1iZWRkZWRWaWV3UmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICByZXR1cm4gZW1iZWRkZWRWaWV3UmVmIGFzIENvbXBvbmVudFJlZk9yRW1iZWRkZWRWaWV3UmVmPFQ+O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFBST0pFQ1RJT05fU1RSQVRFR1kgPSB7XHJcbiAgQXBwZW5kQ29tcG9uZW50VG9Cb2R5PFQgZXh0ZW5kcyBUeXBlPHVua25vd24+PihcclxuICAgIGNvbXBvbmVudDogVCxcclxuICAgIGNvbnRleHQ/OiBQYXJ0aWFsPEluZmVycmVkSW5zdGFuY2VPZjxUPj4sXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gbmV3IFJvb3RDb21wb25lbnRQcm9qZWN0aW9uU3RyYXRlZ3k8VD4oXHJcbiAgICAgIGNvbXBvbmVudCxcclxuICAgICAgY29udGV4dCAmJiBDT05URVhUX1NUUkFURUdZLkNvbXBvbmVudChjb250ZXh0KSxcclxuICAgICk7XHJcbiAgfSxcclxuICBBcHBlbmRDb21wb25lbnRUb0NvbnRhaW5lcjxUIGV4dGVuZHMgVHlwZTx1bmtub3duPj4oXHJcbiAgICBjb21wb25lbnQ6IFQsXHJcbiAgICBjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBjb250ZXh0PzogUGFydGlhbDxJbmZlcnJlZEluc3RhbmNlT2Y8VD4+LFxyXG4gICkge1xyXG4gICAgcmV0dXJuIG5ldyBDb21wb25lbnRQcm9qZWN0aW9uU3RyYXRlZ3k8VD4oXHJcbiAgICAgIGNvbXBvbmVudCxcclxuICAgICAgQ09OVEFJTkVSX1NUUkFURUdZLkFwcGVuZChjb250YWluZXJSZWYpLFxyXG4gICAgICBjb250ZXh0ICYmIENPTlRFWFRfU1RSQVRFR1kuQ29tcG9uZW50KGNvbnRleHQpLFxyXG4gICAgKTtcclxuICB9LFxyXG4gIEFwcGVuZFRlbXBsYXRlVG9Db250YWluZXI8VCBleHRlbmRzIFRlbXBsYXRlUmVmPHVua25vd24+PihcclxuICAgIHRlbXBsYXRlUmVmOiBULFxyXG4gICAgY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgY29udGV4dD86IFBhcnRpYWw8SW5mZXJyZWRDb250ZXh0T2Y8VD4+LFxyXG4gICkge1xyXG4gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZVByb2plY3Rpb25TdHJhdGVneTxUPihcclxuICAgICAgdGVtcGxhdGVSZWYsXHJcbiAgICAgIENPTlRBSU5FUl9TVFJBVEVHWS5BcHBlbmQoY29udGFpbmVyUmVmKSxcclxuICAgICAgY29udGV4dCAmJiBDT05URVhUX1NUUkFURUdZLlRlbXBsYXRlKGNvbnRleHQpLFxyXG4gICAgKTtcclxuICB9LFxyXG4gIFByZXBlbmRDb21wb25lbnRUb0NvbnRhaW5lcjxUIGV4dGVuZHMgVHlwZTx1bmtub3duPj4oXHJcbiAgICBjb21wb25lbnQ6IFQsXHJcbiAgICBjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBjb250ZXh0PzogUGFydGlhbDxJbmZlcnJlZEluc3RhbmNlT2Y8VD4+LFxyXG4gICkge1xyXG4gICAgcmV0dXJuIG5ldyBDb21wb25lbnRQcm9qZWN0aW9uU3RyYXRlZ3k8VD4oXHJcbiAgICAgIGNvbXBvbmVudCxcclxuICAgICAgQ09OVEFJTkVSX1NUUkFURUdZLlByZXBlbmQoY29udGFpbmVyUmVmKSxcclxuICAgICAgY29udGV4dCAmJiBDT05URVhUX1NUUkFURUdZLkNvbXBvbmVudChjb250ZXh0KSxcclxuICAgICk7XHJcbiAgfSxcclxuICBQcmVwZW5kVGVtcGxhdGVUb0NvbnRhaW5lcjxUIGV4dGVuZHMgVGVtcGxhdGVSZWY8dW5rbm93bj4+KFxyXG4gICAgdGVtcGxhdGVSZWY6IFQsXHJcbiAgICBjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBjb250ZXh0PzogUGFydGlhbDxJbmZlcnJlZENvbnRleHRPZjxUPj4sXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gbmV3IFRlbXBsYXRlUHJvamVjdGlvblN0cmF0ZWd5PFQ+KFxyXG4gICAgICB0ZW1wbGF0ZVJlZixcclxuICAgICAgQ09OVEFJTkVSX1NUUkFURUdZLlByZXBlbmQoY29udGFpbmVyUmVmKSxcclxuICAgICAgY29udGV4dCAmJiBDT05URVhUX1NUUkFURUdZLlRlbXBsYXRlKGNvbnRleHQpLFxyXG4gICAgKTtcclxuICB9LFxyXG4gIFByb2plY3RDb21wb25lbnRUb0NvbnRhaW5lcjxUIGV4dGVuZHMgVHlwZTx1bmtub3duPj4oXHJcbiAgICBjb21wb25lbnQ6IFQsXHJcbiAgICBjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBjb250ZXh0PzogUGFydGlhbDxJbmZlcnJlZEluc3RhbmNlT2Y8VD4+LFxyXG4gICkge1xyXG4gICAgcmV0dXJuIG5ldyBDb21wb25lbnRQcm9qZWN0aW9uU3RyYXRlZ3k8VD4oXHJcbiAgICAgIGNvbXBvbmVudCxcclxuICAgICAgQ09OVEFJTkVSX1NUUkFURUdZLkNsZWFyKGNvbnRhaW5lclJlZiksXHJcbiAgICAgIGNvbnRleHQgJiYgQ09OVEVYVF9TVFJBVEVHWS5Db21wb25lbnQoY29udGV4dCksXHJcbiAgICApO1xyXG4gIH0sXHJcbiAgUHJvamVjdFRlbXBsYXRlVG9Db250YWluZXI8VCBleHRlbmRzIFRlbXBsYXRlUmVmPHVua25vd24+PihcclxuICAgIHRlbXBsYXRlUmVmOiBULFxyXG4gICAgY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgY29udGV4dD86IFBhcnRpYWw8SW5mZXJyZWRDb250ZXh0T2Y8VD4+LFxyXG4gICkge1xyXG4gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZVByb2plY3Rpb25TdHJhdGVneTxUPihcclxuICAgICAgdGVtcGxhdGVSZWYsXHJcbiAgICAgIENPTlRBSU5FUl9TVFJBVEVHWS5DbGVhcihjb250YWluZXJSZWYpLFxyXG4gICAgICBjb250ZXh0ICYmIENPTlRFWFRfU1RSQVRFR1kuVGVtcGxhdGUoY29udGV4dCksXHJcbiAgICApO1xyXG4gIH0sXHJcbn07XHJcblxyXG50eXBlIENvbXBvbmVudFJlZk9yRW1iZWRkZWRWaWV3UmVmPFQ+ID0gVCBleHRlbmRzIFR5cGU8aW5mZXIgVT5cclxuICA/IENvbXBvbmVudFJlZjxVPlxyXG4gIDogVCBleHRlbmRzIFRlbXBsYXRlUmVmPGluZmVyIEM+XHJcbiAgPyBFbWJlZGRlZFZpZXdSZWY8Qz5cclxuICA6IG5ldmVyO1xyXG4iXX0=","import { inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { DomStrategy } from '../strategies';\nimport * as i0 from \"@angular/core\";\nexport class DomStrategyService {\n constructor() {\n this.document = inject(DOCUMENT);\n }\n afterElement(el) {\n return new DomStrategy(() => el, 'afterend');\n }\n beforeElement(el) {\n return new DomStrategy(() => el, 'beforebegin');\n }\n appendToBody() {\n return new DomStrategy(() => this.document.body, 'beforeend');\n }\n appendToHead() {\n return new DomStrategy(() => this.document.head, 'beforeend');\n }\n prependToHead() {\n return new DomStrategy(() => this.document.head, 'afterbegin');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: DomStrategyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: DomStrategyService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: DomStrategyService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLXN0cmF0ZWd5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvZG9tLXN0cmF0ZWd5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzVDLE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFVSxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBcUJyQztJQW5CQyxZQUFZLENBQUMsRUFBZTtRQUMxQixPQUFPLElBQUksV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEVBQWU7UUFDM0IsT0FBTyxJQUFJLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakUsQ0FBQzs4R0FyQlUsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FETCxNQUFNOzsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IERvbVN0cmF0ZWd5IH0gZnJvbSAnLi4vc3RyYXRlZ2llcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgRG9tU3RyYXRlZ3lTZXJ2aWNlIHtcclxuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuXHJcbiAgYWZ0ZXJFbGVtZW50KGVsOiBIVE1MRWxlbWVudCkge1xyXG4gICAgcmV0dXJuIG5ldyBEb21TdHJhdGVneSgoKSA9PiBlbCwgJ2FmdGVyZW5kJyk7XHJcbiAgfVxyXG5cclxuICBiZWZvcmVFbGVtZW50KGVsOiBIVE1MRWxlbWVudCkge1xyXG4gICAgcmV0dXJuIG5ldyBEb21TdHJhdGVneSgoKSA9PiBlbCwgJ2JlZm9yZWJlZ2luJyk7XHJcbiAgfVxyXG5cclxuICBhcHBlbmRUb0JvZHkoKSB7XHJcbiAgICByZXR1cm4gbmV3IERvbVN0cmF0ZWd5KCgpID0+IHRoaXMuZG9jdW1lbnQuYm9keSwgJ2JlZm9yZWVuZCcpO1xyXG4gIH1cclxuXHJcbiAgYXBwZW5kVG9IZWFkKCkge1xyXG4gICAgcmV0dXJuIG5ldyBEb21TdHJhdGVneSgoKSA9PiB0aGlzLmRvY3VtZW50LmhlYWQsICdiZWZvcmVlbmQnKTtcclxuICB9XHJcblxyXG4gIHByZXBlbmRUb0hlYWQoKSB7XHJcbiAgICByZXR1cm4gbmV3IERvbVN0cmF0ZWd5KCgpID0+IHRoaXMuZG9jdW1lbnQuaGVhZCwgJ2FmdGVyYmVnaW4nKTtcclxuICB9XHJcbn1cclxuIl19","import { RestService } from '../../../../../../services';\nimport { Injectable, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AbpApplicationConfigurationService {\n constructor() {\n this.restService = inject(RestService);\n this.apiName = 'abp';\n this.get = (options, config) => this.restService.request({\n method: 'GET',\n url: '/api/abp/application-configuration',\n params: { includeLocalizationResources: options.includeLocalizationResources },\n }, { apiName: this.apiName, ...config });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpApplicationConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpApplicationConfigurationService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpApplicationConfigurationService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLWFwcGxpY2F0aW9uLWNvbmZpZ3VyYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9wcm94eS92b2xvL2FicC9hc3AtbmV0LWNvcmUvbXZjL2FwcGxpY2F0aW9uLWNvbmZpZ3VyYXRpb25zL2FicC1hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtuRCxNQUFNLE9BQU8sa0NBQWtDO0lBSC9DO1FBSVUsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFMUMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUdoQixRQUFHLEdBQUcsQ0FBQyxPQUErQyxFQUFFLE1BQTZCLEVBQUUsRUFBRSxDQUN2RixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBbUM7WUFDekQsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUsb0NBQW9DO1lBQ3pDLE1BQU0sRUFBRSxFQUFFLDRCQUE0QixFQUFFLE9BQU8sQ0FBQyw0QkFBNEIsRUFBRTtTQUMvRSxFQUNDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBQzNDOzhHQWJZLGtDQUFrQztrSEFBbEMsa0NBQWtDLGNBRmpDLE1BQU07OzJGQUVQLGtDQUFrQztrQkFIOUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbkR0bywgQXBwbGljYXRpb25Db25maWd1cmF0aW9uUmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBSZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWJwQXBwbGljYXRpb25Db25maWd1cmF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgcmVzdFNlcnZpY2UgPSBpbmplY3QoUmVzdFNlcnZpY2UpO1xuXHJcbiAgYXBpTmFtZSA9ICdhYnAnO1xyXG5cclxuXHJcbiAgZ2V0ID0gKG9wdGlvbnM6IEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvblJlcXVlc3RPcHRpb25zLCBjb25maWc/OiBQYXJ0aWFsPFJlc3QuQ29uZmlnPikgPT5cclxuICAgIHRoaXMucmVzdFNlcnZpY2UucmVxdWVzdDxhbnksIEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbkR0bz4oe1xyXG4gICAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgICB1cmw6ICcvYXBpL2FicC9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9uJyxcclxuICAgICAgcGFyYW1zOiB7IGluY2x1ZGVMb2NhbGl6YXRpb25SZXNvdXJjZXM6IG9wdGlvbnMuaW5jbHVkZUxvY2FsaXphdGlvblJlc291cmNlcyB9LFxyXG4gICAgfSxcclxuICAgICAgeyBhcGlOYW1lOiB0aGlzLmFwaU5hbWUsIC4uLmNvbmZpZyB9KTtcclxufVxyXG4iXX0=","import { RestService } from '../../../../../../services';\nimport { Injectable, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AbpApplicationLocalizationService {\n constructor() {\n this.restService = inject(RestService);\n this.apiName = 'abp';\n this.get = (input, config) => this.restService.request({\n method: 'GET',\n url: '/api/abp/application-localization',\n params: { cultureName: input.cultureName, onlyDynamics: input.onlyDynamics },\n }, { apiName: this.apiName, ...config });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpApplicationLocalizationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpApplicationLocalizationService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpApplicationLocalizationService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLWFwcGxpY2F0aW9uLWxvY2FsaXphdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Byb3h5L3ZvbG8vYWJwL2FzcC1uZXQtY29yZS9tdmMvYXBwbGljYXRpb24tY29uZmlndXJhdGlvbnMvYWJwLWFwcGxpY2F0aW9uLWxvY2FsaXphdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLbkQsTUFBTSxPQUFPLGlDQUFpQztJQUg5QztRQUlVLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTFDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHaEIsUUFBRyxHQUFHLENBQUMsS0FBd0MsRUFBRSxNQUE2QixFQUFFLEVBQUUsQ0FDaEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQWtDO1lBQ3hELE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLG1DQUFtQztZQUN4QyxNQUFNLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksRUFBRTtTQUM3RSxFQUNELEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBQ3hDOzhHQWJZLGlDQUFpQztrSEFBakMsaUNBQWlDLGNBRmhDLE1BQU07OzJGQUVQLGlDQUFpQztrQkFIN0MsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFwcGxpY2F0aW9uTG9jYWxpemF0aW9uRHRvLCBBcHBsaWNhdGlvbkxvY2FsaXphdGlvblJlcXVlc3REdG8gfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBSZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWJwQXBwbGljYXRpb25Mb2NhbGl6YXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZXN0U2VydmljZSA9IGluamVjdChSZXN0U2VydmljZSk7XG5cclxuICBhcGlOYW1lID0gJ2FicCc7XHJcbiAgXHJcblxyXG4gIGdldCA9IChpbnB1dDogQXBwbGljYXRpb25Mb2NhbGl6YXRpb25SZXF1ZXN0RHRvLCBjb25maWc/OiBQYXJ0aWFsPFJlc3QuQ29uZmlnPikgPT5cclxuICAgIHRoaXMucmVzdFNlcnZpY2UucmVxdWVzdDxhbnksIEFwcGxpY2F0aW9uTG9jYWxpemF0aW9uRHRvPih7XHJcbiAgICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICAgIHVybDogJy9hcGkvYWJwL2FwcGxpY2F0aW9uLWxvY2FsaXphdGlvbicsXHJcbiAgICAgIHBhcmFtczogeyBjdWx0dXJlTmFtZTogaW5wdXQuY3VsdHVyZU5hbWUsIG9ubHlEeW5hbWljczogaW5wdXQub25seUR5bmFtaWNzIH0sXHJcbiAgICB9LFxyXG4gICAgeyBhcGlOYW1lOiB0aGlzLmFwaU5hbWUsLi4uY29uZmlnIH0pO1xyXG59XHJcbiJdfQ==","import { Injectable, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { map, switchMap, take, tap } from 'rxjs/operators';\nimport { AbpApplicationConfigurationService } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service';\nimport { AbpApplicationLocalizationService } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-localization.service';\nimport { INCUDE_LOCALIZATION_RESOURCES_TOKEN } from '../tokens/include-localization-resources.token';\nimport { InternalStore } from '../utils/internal-store-utils';\nimport * as i0 from \"@angular/core\";\nexport class ConfigStateService {\n setState(config) {\n this.store.set(config);\n }\n get createOnUpdateStream() {\n return this.store.sliceUpdate;\n }\n constructor() {\n this.abpConfigService = inject(AbpApplicationConfigurationService);\n this.abpApplicationLocalizationService = inject(AbpApplicationLocalizationService);\n this.includeLocalizationResources = inject(INCUDE_LOCALIZATION_RESOURCES_TOKEN, { optional: true });\n this.updateSubject = new Subject();\n this.store = new InternalStore({});\n this.initUpdateStream();\n }\n initUpdateStream() {\n this.updateSubject\n .pipe(switchMap(() => this.abpConfigService.get({\n includeLocalizationResources: !!this.includeLocalizationResources,\n })))\n .pipe(switchMap(appState => this.getLocalizationAndCombineWithAppState(appState)))\n .subscribe(res => this.store.set(res));\n }\n getLocalizationAndCombineWithAppState(appState) {\n if (!appState.localization.currentCulture.cultureName) {\n throw new Error('culture name should defined');\n }\n const cultureName = this.uiCultureFromAuthCodeFlow ?? appState.localization.currentCulture.cultureName;\n return this.getlocalizationResource(cultureName).pipe(map(result => ({ ...appState, localization: { ...appState.localization, ...result } })), tap(() => (this.uiCultureFromAuthCodeFlow = undefined)));\n }\n getlocalizationResource(cultureName) {\n return this.abpApplicationLocalizationService.get({\n cultureName: cultureName,\n onlyDynamics: false,\n });\n }\n refreshAppState() {\n this.updateSubject.next();\n return this.createOnUpdateStream(state => state).pipe(take(1));\n }\n refreshLocalization(lang) {\n if (this.includeLocalizationResources) {\n return this.refreshAppState().pipe(map(() => null));\n }\n return this.getlocalizationResource(lang)\n .pipe(tap(result => this.store.patch({ localization: { ...this.store.state.localization, ...result } })))\n .pipe(map(() => null));\n }\n getOne$(key) {\n return this.store.sliceState(state => state[key]);\n }\n getOne(key) {\n return this.store.state[key];\n }\n getAll$() {\n return this.store.sliceState(state => state);\n }\n getAll() {\n return this.store.state;\n }\n getDeep$(keys) {\n keys = splitKeys(keys);\n return this.store\n .sliceState(state => state)\n .pipe(map(state => {\n return keys.reduce((acc, val) => {\n if (acc) {\n return acc[val];\n }\n return undefined;\n }, state);\n }));\n }\n getDeep(keys) {\n keys = splitKeys(keys);\n return keys.reduce((acc, val) => {\n if (acc) {\n return acc[val];\n }\n return undefined;\n }, this.store.state);\n }\n getFeature(key) {\n return this.store.state.features?.values?.[key];\n }\n getFeature$(key) {\n return this.store.sliceState(state => state.features?.values?.[key]);\n }\n getFeatures(keys) {\n const { features } = this.store.state;\n if (!features)\n return;\n return keys.reduce((acc, key) => ({ ...acc, [key]: features.values[key] }), {});\n }\n getFeatures$(keys) {\n return this.store.sliceState(({ features }) => {\n if (!features?.values)\n return;\n return keys.reduce((acc, key) => ({ ...acc, [key]: features.values[key] }), {});\n });\n }\n isFeatureEnabled(key, features) {\n return features.values[key] === 'true';\n }\n getFeatureIsEnabled(key) {\n return this.isFeatureEnabled(key, this.store.state.features);\n }\n getFeatureIsEnabled$(key) {\n return this.store.sliceState(state => this.isFeatureEnabled(key, state.features));\n }\n getSetting(key) {\n return this.store.state.setting?.values?.[key];\n }\n getSetting$(key) {\n return this.store.sliceState(state => state.setting?.values?.[key]);\n }\n getSettings(keyword) {\n const settings = this.store.state.setting?.values || {};\n if (!keyword)\n return settings;\n const keysFound = Object.keys(settings).filter(key => key.indexOf(keyword) > -1);\n return keysFound.reduce((acc, key) => {\n acc[key] = settings[key];\n return acc;\n }, {});\n }\n getSettings$(keyword) {\n return this.store\n .sliceState(state => state.setting?.values)\n .pipe(map((settings = {}) => {\n if (!keyword)\n return settings;\n const keysFound = Object.keys(settings).filter(key => key.indexOf(keyword) > -1);\n return keysFound.reduce((acc, key) => {\n acc[key] = settings[key];\n return acc;\n }, {});\n }));\n }\n getGlobalFeatures() {\n return this.store.state.globalFeatures;\n }\n getGlobalFeatures$() {\n return this.store.sliceState(state => state.globalFeatures);\n }\n isGlobalFeatureEnabled(key, globalFeatures) {\n const features = globalFeatures.enabledFeatures || [];\n return features.some(f => key === f);\n }\n getGlobalFeatureIsEnabled(key) {\n return this.isGlobalFeatureEnabled(key, this.store.state.globalFeatures);\n }\n getGlobalFeatureIsEnabled$(key) {\n return this.store.sliceState(state => this.isGlobalFeatureEnabled(key, state.globalFeatures));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ConfigStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ConfigStateService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ConfigStateService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\nfunction splitKeys(keys) {\n if (typeof keys === 'string') {\n keys = keys.split('.');\n }\n if (!Array.isArray(keys)) {\n throw new Error('The argument must be a dot string or an string array.');\n }\n return keys;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXN0YXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvY29uZmlnLXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0scUdBQXFHLENBQUM7QUFDekosT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sb0dBQW9HLENBQUM7QUFNdkosT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUs5RCxNQUFNLE9BQU8sa0JBQWtCO0lBVTdCLFFBQVEsQ0FBQyxNQUFtQztRQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUNoQyxDQUFDO0lBQ0Q7UUFoQlEscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDOUQsc0NBQWlDLEdBQUcsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDckUsaUNBQTRCLEdBQUcsTUFBTSxDQUFDLG1DQUFtQyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFeEcsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzNCLFVBQUssR0FBRyxJQUFJLGFBQWEsQ0FBQyxFQUFpQyxDQUFDLENBQUM7UUFZNUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsYUFBYTthQUNmLElBQUksQ0FDSCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQztZQUN4Qiw0QkFBNEIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLDRCQUE0QjtTQUNsRSxDQUFDLENBQ0gsQ0FDRjthQUNBLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMscUNBQXFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUNqRixTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTyxxQ0FBcUMsQ0FDM0MsUUFBcUM7UUFFckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RELE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQ2YsSUFBSSxDQUFDLHlCQUF5QixJQUFJLFFBQVEsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQztRQUVyRixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ25ELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsRUFBRSxZQUFZLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDdkYsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQ3hELENBQUM7SUFDSixDQUFDO0lBRU8sdUJBQXVCLENBQUMsV0FBbUI7UUFDakQsT0FBTyxJQUFJLENBQUMsaUNBQWlDLENBQUMsR0FBRyxDQUFDO1lBQ2hELFdBQVcsRUFBRSxXQUFXO1lBQ3hCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBWTtRQUM5QixJQUFJLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDO2FBQ3RDLElBQUksQ0FDSCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDWCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUNwRixDQUNGO2FBQ0EsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxPQUFPLENBQThDLEdBQU07UUFDekQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQThDLEdBQU07UUFDeEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUF1QjtRQUM5QixJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZCLE9BQU8sSUFBSSxDQUFDLEtBQUs7YUFDZCxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7YUFDMUIsSUFBSSxDQUNILEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNWLE9BQVEsSUFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQ2pELElBQUksR0FBRyxFQUFFLENBQUM7b0JBQ1IsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xCLENBQUM7Z0JBRUQsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBdUI7UUFDN0IsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2QixPQUFRLElBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2pELElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1IsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEIsQ0FBQztZQUVELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQWM7UUFDeEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUV0QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQWM7UUFDekIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU07Z0JBQUUsT0FBTztZQUU5QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztR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dGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBYnBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9ucy9hYnAtYXBwbGljYXRpb24tY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWJwQXBwbGljYXRpb25Mb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9ucy9hYnAtYXBwbGljYXRpb24tbG9jYWxpemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbkR0byxcclxuICBBcHBsaWNhdGlvbkZlYXR1cmVDb25maWd1cmF0aW9uRHRvLFxyXG4gIEFwcGxpY2F0aW9uR2xvYmFsRmVhdHVyZUNvbmZpZ3VyYXRpb25EdG8sXHJcbn0gZnJvbSAnLi4vcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9ucy9tb2RlbHMnO1xyXG5pbXBvcnQgeyBJTkNVREVfTE9DQUxJWkFUSU9OX1JFU09VUkNFU19UT0tFTiB9IGZyb20gJy4uL3Rva2Vucy9pbmNsdWRlLWxvY2FsaXphdGlvbi1yZXNvdXJjZXMudG9rZW4nO1xyXG5pbXBvcnQgeyBJbnRlcm5hbFN0b3JlIH0gZnJvbSAnLi4vdXRpbHMvaW50ZXJuYWwtc3RvcmUtdXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ1N0YXRlU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBhYnBDb25maWdTZXJ2aWNlID0gaW5qZWN0KEFicEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvblNlcnZpY2UpO1xyXG4gIHByaXZhdGUgYWJwQXBwbGljYXRpb25Mb2NhbGl6YXRpb25TZXJ2aWNlID0gaW5qZWN0KEFicEFwcGxpY2F0aW9uTG9jYWxpemF0aW9uU2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpbmNsdWRlTG9jYWxpemF0aW9uUmVzb3VyY2VzID0gaW5qZWN0KElOQ1VERV9MT0NBTElaQVRJT05fUkVTT1VSQ0VTX1RPS0VOLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xyXG5cclxuICBwcml2YXRlIHVwZGF0ZVN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBuZXcgSW50ZXJuYWxTdG9yZSh7fSBhcyBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25EdG8pO1xyXG5cclxuICBwdWJsaWMgdWlDdWx0dXJlRnJvbUF1dGhDb2RlRmxvdzogc3RyaW5nO1xyXG5cclxuICBzZXRTdGF0ZShjb25maWc6IEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbkR0bykge1xyXG4gICAgdGhpcy5zdG9yZS5zZXQoY29uZmlnKTtcclxuICB9XHJcblxyXG4gIGdldCBjcmVhdGVPblVwZGF0ZVN0cmVhbSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlVXBkYXRlO1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuaW5pdFVwZGF0ZVN0cmVhbSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0VXBkYXRlU3RyZWFtKCkge1xyXG4gICAgdGhpcy51cGRhdGVTdWJqZWN0XHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PlxyXG4gICAgICAgICAgdGhpcy5hYnBDb25maWdTZXJ2aWNlLmdldCh7XHJcbiAgICAgICAgICAgIGluY2x1ZGVMb2NhbGl6YXRpb25SZXNvdXJjZXM6ICEhdGhpcy5pbmNsdWRlTG9jYWxpemF0aW9uUmVzb3VyY2VzLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAucGlwZShzd2l0Y2hNYXAoYXBwU3RhdGUgPT4gdGhpcy5nZXRMb2NhbGl6YXRpb25BbmRDb21iaW5lV2l0aEFwcFN0YXRlKGFwcFN0YXRlKSkpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHRoaXMuc3RvcmUuc2V0KHJlcykpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRMb2NhbGl6YXRpb25BbmRDb21iaW5lV2l0aEFwcFN0YXRlKFxyXG4gICAgYXBwU3RhdGU6IEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbkR0byxcclxuICApOiBPYnNlcnZhYmxlPEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbkR0bz4ge1xyXG4gICAgaWYgKCFhcHBTdGF0ZS5sb2NhbGl6YXRpb24uY3VycmVudEN1bHR1cmUuY3VsdHVyZU5hbWUpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjdWx0dXJlIG5hbWUgc2hvdWxkIGRlZmluZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjdWx0dXJlTmFtZSA9XHJcbiAgICAgIHRoaXMudWlDdWx0dXJlRnJvbUF1dGhDb2RlRmxvdyA/PyBhcHBTdGF0ZS5sb2NhbGl6YXRpb24uY3VycmVudEN1bHR1cmUuY3VsdHVyZU5hbWU7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0bG9jYWxpemF0aW9uUmVzb3VyY2UoY3VsdHVyZU5hbWUpLnBpcGUoXHJcbiAgICAgIG1hcChyZXN1bHQgPT4gKHsgLi4uYXBwU3RhdGUsIGxvY2FsaXphdGlvbjogeyAuLi5hcHBTdGF0ZS5sb2NhbGl6YXRpb24sIC4uLnJlc3VsdCB9IH0pKSxcclxuICAgICAgdGFwKCgpID0+ICh0aGlzLnVpQ3VsdHVyZUZyb21BdXRoQ29kZUZsb3cgPSB1bmRlZmluZWQpKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldGxvY2FsaXphdGlvblJlc291cmNlKGN1bHR1cmVOYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmFicEFwcGxpY2F0aW9uTG9jYWxpemF0aW9uU2VydmljZS5nZXQoe1xyXG4gICAgICBjdWx0dXJlTmFtZTogY3VsdHVyZU5hbWUsXHJcbiAgICAgIG9ubHlEeW5hbWljczogZmFsc2UsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2hBcHBTdGF0ZSgpIHtcclxuICAgIHRoaXMudXBkYXRlU3ViamVjdC5uZXh0KCk7XHJcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPblVwZGF0ZVN0cmVhbShzdGF0ZSA9PiBzdGF0ZSkucGlwZSh0YWtlKDEpKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2hMb2NhbGl6YXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxudWxsPiB7XHJcbiAgICBpZiAodGhpcy5pbmNsdWRlTG9jYWxpemF0aW9uUmVzb3VyY2VzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hBcHBTdGF0ZSgpLnBpcGUobWFwKCgpID0+IG51bGwpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5nZXRsb2NhbGl6YXRpb25SZXNvdXJjZShsYW5nKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YXAocmVzdWx0ID0+XHJcbiAgICAgICAgICB0aGlzLnN0b3JlLnBhdGNoKHsgbG9jYWxpemF0aW9uOiB7IC4uLnRoaXMuc3RvcmUuc3RhdGUubG9jYWxpemF0aW9uLCAuLi5yZXN1bHQgfSB9KSxcclxuICAgICAgICApLFxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKG1hcCgoKSA9PiBudWxsKSk7XHJcbiAgfVxyXG5cclxuICBnZXRPbmUkPEsgZXh0ZW5kcyBrZXlvZiBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25EdG8+KGtleTogSykge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VTdGF0ZShzdGF0ZSA9PiBzdGF0ZVtrZXldKTtcclxuICB9XHJcblxyXG4gIGdldE9uZTxLIGV4dGVuZHMga2V5b2YgQXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvPihrZXk6IEspIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlW2tleV07XHJcbiAgfVxyXG5cclxuICBnZXRBbGwkKCk6IE9ic2VydmFibGU8QXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKHN0YXRlID0+IHN0YXRlKTtcclxuICB9XHJcblxyXG4gIGdldEFsbCgpOiBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25EdG8ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc3RhdGU7XHJcbiAgfVxyXG5cclxuICBnZXREZWVwJChrZXlzOiBzdHJpbmdbXSB8IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBrZXlzID0gc3BsaXRLZXlzKGtleXMpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnN0b3JlXHJcbiAgICAgIC5zbGljZVN0YXRlKHN0YXRlID0+IHN0YXRlKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoc3RhdGUgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChrZXlzIGFzIHN0cmluZ1tdKS5yZWR1Y2UoKGFjYzogYW55LCB2YWwpID0+IHtcclxuICAgICAgICAgICAgaWYgKGFjYykge1xyXG4gICAgICAgICAgICAgIHJldHVybiBhY2NbdmFsXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICAgIH0sIHN0YXRlKTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGdldERlZXAoa2V5czogc3RyaW5nW10gfCBzdHJpbmcpOiBhbnkge1xyXG4gICAga2V5cyA9IHNwbGl0S2V5cyhrZXlzKTtcclxuXHJcbiAgICByZXR1cm4gKGtleXMgYXMgc3RyaW5nW10pLnJlZHVjZSgoYWNjOiBhbnksIHZhbCkgPT4ge1xyXG4gICAgICBpZiAoYWNjKSB7XHJcbiAgICAgICAgcmV0dXJuIGFjY1t2YWxdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfSwgdGhpcy5zdG9yZS5zdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRGZWF0dXJlKGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZS5mZWF0dXJlcz8udmFsdWVzPy5ba2V5XTtcclxuICB9XHJcblxyXG4gIGdldEZlYXR1cmUkKGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKHN0YXRlID0+IHN0YXRlLmZlYXR1cmVzPy52YWx1ZXM/LltrZXldKTtcclxuICB9XHJcblxyXG4gIGdldEZlYXR1cmVzKGtleXM6IHN0cmluZ1tdKSB7XHJcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSB0aGlzLnN0b3JlLnN0YXRlO1xyXG4gICAgaWYgKCFmZWF0dXJlcykgcmV0dXJuO1xyXG5cclxuICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+ICh7IC4uLmFjYywgW2tleV06IGZlYXR1cmVzLnZhbHVlc1trZXldIH0pLCB7fSk7XHJcbiAgfVxyXG5cclxuICBnZXRGZWF0dXJlcyQoa2V5czogc3RyaW5nW10pOiBPYnNlcnZhYmxlPHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQ+IHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlU3RhdGUoKHsgZmVhdHVyZXMgfSkgPT4ge1xyXG4gICAgICBpZiAoIWZlYXR1cmVzPy52YWx1ZXMpIHJldHVybjtcclxuXHJcbiAgICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+ICh7IC4uLmFjYywgW2tleV06IGZlYXR1cmVzLnZhbHVlc1trZXldIH0pLCB7fSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNGZWF0dXJlRW5hYmxlZChrZXk6IHN0cmluZywgZmVhdHVyZXM6IEFwcGxpY2F0aW9uRmVhdHVyZUNvbmZpZ3VyYXRpb25EdG8pIHtcclxuICAgIHJldHVybiBmZWF0dXJlcy52YWx1ZXNba2V5XSA9PT0gJ3RydWUnO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmVhdHVyZUlzRW5hYmxlZChrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNGZWF0dXJlRW5hYmxlZChrZXksIHRoaXMuc3RvcmUuc3RhdGUuZmVhdHVyZXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmVhdHVyZUlzRW5hYmxlZCQoa2V5OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlU3RhdGUoc3RhdGUgPT4gdGhpcy5pc0ZlYXR1cmVFbmFibGVkKGtleSwgc3RhdGUuZmVhdHVyZXMpKTtcclxuICB9XHJcblxyXG4gIGdldFNldHRpbmcoa2V5OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlLnNldHRpbmc/LnZhbHVlcz8uW2tleV07XHJcbiAgfVxyXG5cclxuICBnZXRTZXR0aW5nJChrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VTdGF0ZShzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5nPy52YWx1ZXM/LltrZXldKTtcclxuICB9XHJcblxyXG4gIGdldFNldHRpbmdzKGtleXdvcmQ/OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5zdG9yZS5zdGF0ZS5zZXR0aW5nPy52YWx1ZXMgfHwge307XHJcblxyXG4gICAgaWYgKCFrZXl3b3JkKSByZXR1cm4gc2V0dGluZ3M7XHJcblxyXG4gICAgY29uc3Qga2V5c0ZvdW5kID0gT2JqZWN0LmtleXMoc2V0dGluZ3MpLmZpbHRlcihrZXkgPT4ga2V5LmluZGV4T2Yoa2V5d29yZCkgPiAtMSk7XHJcblxyXG4gICAgcmV0dXJuIGtleXNGb3VuZC5yZWR1Y2UoXHJcbiAgICAgIChhY2MsIGtleSkgPT4ge1xyXG4gICAgICAgIGFjY1trZXldID0gc2V0dGluZ3Nba2V5XTtcclxuICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICB9LFxyXG4gICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFNldHRpbmdzJChrZXl3b3JkPzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZVxyXG4gICAgICAuc2xpY2VTdGF0ZShzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5nPy52YWx1ZXMpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoc2V0dGluZ3MgPSB7fSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFrZXl3b3JkKSByZXR1cm4gc2V0dGluZ3M7XHJcblxyXG4gICAgICAgICAgY29uc3Qga2V5c0ZvdW5kID0gT2JqZWN0LmtleXMoc2V0dGluZ3MpLmZpbHRlcihrZXkgPT4ga2V5LmluZGV4T2Yoa2V5d29yZCkgPiAtMSk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIGtleXNGb3VuZC5yZWR1Y2UoXHJcbiAgICAgICAgICAgIChhY2MsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgIGFjY1trZXldID0gc2V0dGluZ3Nba2V5XTtcclxuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGdldEdsb2JhbEZlYXR1cmVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc3RhdGUuZ2xvYmFsRmVhdHVyZXM7XHJcbiAgfVxyXG5cclxuICBnZXRHbG9iYWxGZWF0dXJlcyQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKHN0YXRlID0+IHN0YXRlLmdsb2JhbEZlYXR1cmVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNHbG9iYWxGZWF0dXJlRW5hYmxlZChcclxuICAgIGtleTogc3RyaW5nLFxyXG4gICAgZ2xvYmFsRmVhdHVyZXM6IEFwcGxpY2F0aW9uR2xvYmFsRmVhdHVyZUNvbmZpZ3VyYXRpb25EdG8sXHJcbiAgKSB7XHJcbiAgICBjb25zdCBmZWF0dXJlcyA9IGdsb2JhbEZlYXR1cmVzLmVuYWJsZWRGZWF0dXJlcyB8fCBbXTtcclxuICAgIHJldHVybiBmZWF0dXJlcy5zb21lKGYgPT4ga2V5ID09PSBmKTtcclxuICB9XHJcblxyXG4gIGdldEdsb2JhbEZlYXR1cmVJc0VuYWJsZWQoa2V5OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmlzR2xvYmFsRmVhdHVyZUVuYWJsZWQoa2V5LCB0aGlzLnN0b3JlLnN0YXRlLmdsb2JhbEZlYXR1cmVzKTtcclxuICB9XHJcblxyXG4gIGdldEdsb2JhbEZlYXR1cmVJc0VuYWJsZWQkKGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKHN0YXRlID0+IHRoaXMuaXNHbG9iYWxGZWF0dXJlRW5hYmxlZChrZXksIHN0YXRlLmdsb2JhbEZlYXR1cmVzKSk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzcGxpdEtleXMoa2V5czogc3RyaW5nW10gfCBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgaWYgKHR5cGVvZiBrZXlzID09PSAnc3RyaW5nJykge1xyXG4gICAga2V5cyA9IGtleXMuc3BsaXQoJy4nKTtcclxuICB9XHJcblxyXG4gIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYXJndW1lbnQgbXVzdCBiZSBhIGRvdCBzdHJpbmcgb3IgYW4gc3RyaW5nIGFycmF5LicpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGtleXM7XHJcbn1cclxuIl19","import { registerLocaleData } from '@angular/common';\nimport { Injectable, Injector, isDevMode, inject } from '@angular/core';\nimport { BehaviorSubject, combineLatest, from, Subject } from 'rxjs';\nimport { filter, map, switchMap } from 'rxjs/operators';\nimport { localizations$ } from '../tokens/localization.token';\nimport { CORE_OPTIONS } from '../tokens/options.token';\nimport { createLocalizer, createLocalizerWithFallback } from '../utils/localization-utils';\nimport { interpolate } from '../utils/string-utils';\nimport { ConfigStateService } from './config-state.service';\nimport { SessionStateService } from './session-state.service';\nimport * as i0 from \"@angular/core\";\nexport class LocalizationService {\n /**\n * Returns currently selected language\n * Even though this looks like it's redundant to return the same value as `getLanguage()`,\n * it's actually not. This could be invoked any time, and the latestLang could be different from the\n * sessionState.getLanguage() value.\n */\n get currentLang() {\n return this.latestLang || this.sessionState.getLanguage();\n }\n get currentLang$() {\n return this.sessionState.getLanguage$();\n }\n get languageChange$() {\n return this._languageChange$.asObservable();\n }\n constructor() {\n this.sessionState = inject(SessionStateService);\n this.injector = inject(Injector);\n this.configState = inject(ConfigStateService);\n this.latestLang = this.sessionState.getLanguage();\n this._languageChange$ = new Subject();\n this.uiLocalizations$ = new BehaviorSubject(new Map());\n this.localizations$ = new BehaviorSubject(new Map());\n const otherInstance = inject(LocalizationService, { optional: true, skipSelf: true });\n if (otherInstance)\n throw new Error('LocalizationService should have only one instance.');\n this.listenToSetLanguage();\n this.initLocalizationValues();\n }\n initLocalizationValues() {\n localizations$.subscribe(val => this.addLocalization(val));\n const legacyResources$ = this.configState.getDeep$('localization.values');\n const remoteLocalizations$ = this.configState.getDeep$('localization.resources');\n const currentLanguage$ = this.sessionState.getLanguage$();\n const uiLocalizations$ = combineLatest([currentLanguage$, this.uiLocalizations$]).pipe(map(([currentLang, localizations]) => localizations.get(currentLang)));\n combineLatest([legacyResources$, remoteLocalizations$, uiLocalizations$])\n .pipe(map(([legacy, resource, local]) => {\n if (!resource) {\n return;\n }\n const remote = combineLegacyandNewResources(legacy || {}, resource);\n if (remote) {\n if (!local) {\n local = new Map();\n }\n Object.entries(remote).forEach(entry => {\n const resourceName = entry[0];\n const remoteTexts = entry[1];\n let resource = local?.get(resourceName) || {};\n resource = { ...resource, ...remoteTexts };\n local?.set(resourceName, resource);\n });\n }\n return local;\n }), filter(Boolean))\n .subscribe(val => this.localizations$.next(val));\n }\n addLocalization(localizations) {\n if (!localizations)\n return;\n const localizationMap = this.uiLocalizations$.value;\n localizations.forEach(loc => {\n const cultureMap = localizationMap.get(loc.culture) || new Map();\n loc.resources.forEach(res => {\n let resource = cultureMap.get(res.resourceName) || {};\n resource = { ...resource, ...res.texts };\n cultureMap.set(res.resourceName, resource);\n });\n localizationMap.set(loc.culture, cultureMap);\n });\n this.uiLocalizations$.next(localizationMap);\n }\n listenToSetLanguage() {\n this.sessionState\n .onLanguageChange$()\n .pipe(filter(lang => this.configState.getDeep('localization.currentCulture.cultureName') !== lang), switchMap(lang => this.configState.refreshLocalization(lang).pipe(map(() => lang))), filter(Boolean), switchMap(lang => from(this.registerLocale(lang).then(() => lang))))\n .subscribe(lang => this._languageChange$.next(lang));\n }\n registerLocale(locale) {\n const { registerLocaleFn } = this.injector.get(CORE_OPTIONS);\n return registerLocaleFn(locale).then(module => {\n if (module?.default)\n registerLocaleData(module.default);\n this.latestLang = locale;\n });\n }\n /**\n * Returns an observable localized text with the given interpolation parameters in current language.\n * @param key Localizaton key to replace with localized text\n * @param interpolateParams Values to interpolate\n */\n get(key, ...interpolateParams) {\n return this.configState\n .getAll$()\n .pipe(map(state => this.getLocalization(state, key, ...interpolateParams)));\n }\n getResource(resourceName) {\n return this.localizations$.value.get(resourceName);\n }\n getResource$(resourceName) {\n return this.localizations$.pipe(map(res => res.get(resourceName)));\n }\n /**\n * Returns localized text with the given interpolation parameters in current language.\n * @param key Localization key to replace with localized text\n * @param interpolateParams Values to intepolate.\n */\n instant(key, ...interpolateParams) {\n return this.getLocalization(this.configState.getAll(), key, ...interpolateParams);\n }\n localize(resourceName, key, defaultValue) {\n return this.configState.getOne$('localization').pipe(map(createLocalizer), map(localize => localize(resourceName, key, defaultValue)));\n }\n localizeSync(resourceName, key, defaultValue) {\n const localization = this.configState.getOne('localization');\n return createLocalizer(localization)(resourceName, key, defaultValue);\n }\n localizeWithFallback(resourceNames, keys, defaultValue) {\n return this.configState.getOne$('localization').pipe(map(createLocalizerWithFallback), map(localizeWithFallback => localizeWithFallback(resourceNames, keys, defaultValue)));\n }\n localizeWithFallbackSync(resourceNames, keys, defaultValue) {\n const localization = this.configState.getOne('localization');\n return createLocalizerWithFallback(localization)(resourceNames, keys, defaultValue);\n }\n getLocalization(state, key, ...interpolateParams) {\n let defaultValue = '';\n if (!key) {\n return defaultValue;\n }\n if (typeof key !== 'string') {\n defaultValue = key.defaultValue;\n key = key.key;\n }\n const keys = key.split('::');\n const warn = (message) => {\n if (isDevMode())\n console.warn(message);\n };\n if (keys.length < 2) {\n warn('The localization source separator (::) not found.');\n return defaultValue || key;\n }\n if (!state.localization)\n return defaultValue || keys[1];\n const sourceName = keys[0] || state.localization.defaultResourceName;\n const sourceKey = keys[1];\n if (sourceName === '_') {\n return defaultValue || sourceKey;\n }\n if (!sourceName) {\n warn('Localization source name is not specified and the defaultResourceName was not defined!');\n return defaultValue || sourceKey;\n }\n const source = this.localizations$.value.get(sourceName);\n if (!source) {\n warn('Could not find localization source: ' + sourceName);\n return defaultValue || sourceKey;\n }\n let localization = source[sourceKey];\n if (typeof localization === 'undefined') {\n return defaultValue || sourceKey;\n }\n interpolateParams = interpolateParams.filter(params => params != null);\n if (localization)\n localization = interpolate(localization, interpolateParams);\n if (typeof localization !== 'string')\n localization = '';\n return localization || defaultValue || key;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LocalizationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LocalizationService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LocalizationService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\nfunction recursivelyMergeBaseResources(baseResourceName, source) {\n const item = source[baseResourceName];\n if (item.baseResources.length === 0) {\n return item;\n }\n return item.baseResources.reduce((acc, baseResource) => {\n const baseItem = recursivelyMergeBaseResources(baseResource, source);\n const texts = { ...baseItem.texts, ...acc.texts };\n return { ...acc, texts };\n }, item);\n}\nfunction mergeResourcesWithBaseResource(resource) {\n const entities = Object.keys(resource).map(key => {\n const newValue = recursivelyMergeBaseResources(key, resource);\n return [key, newValue];\n });\n return entities.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});\n}\nfunction combineLegacyandNewResources(legacy, resource) {\n const mergedResource = mergeResourcesWithBaseResource(resource);\n return Object.entries(mergedResource).reduce((acc, [key, value]) => {\n return { ...acc, [key]: value.texts };\n }, legacy);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFHOUQsTUFBTSxPQUFPLG1CQUFtQjtJQWM5Qjs7Ozs7T0FLRztJQUNILElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVE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QUcsQ0FBQyxFQUFFO1FBQ0osTUFBTSxRQUFRLEdBQUcsNkJBQTZCLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlELE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUNGLENBQUM7SUFDRixPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUVELFNBQVMsNEJBQTRCLENBQ25DLE1BQXlCLEVBQ3pCLFFBQXFCO0lBRXJCLE1BQU0sY0FBYyxHQUFHLDhCQUE4QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWhFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUNqRSxPQUFPLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlZ2lzdGVyTG9jYWxlRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBpc0Rldk1vZGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZyb20sIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzL2NvbW1vbic7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbldpdGhEZWZhdWx0IH0gZnJvbSAnLi4vbW9kZWxzL2xvY2FsaXphdGlvbic7XHJcbmltcG9ydCB7XHJcbiAgQXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvLFxyXG4gIEFwcGxpY2F0aW9uTG9jYWxpemF0aW9uUmVzb3VyY2VEdG8sXHJcbn0gZnJvbSAnLi4vcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9ucy9tb2RlbHMnO1xyXG5pbXBvcnQgeyBsb2NhbGl6YXRpb25zJCB9IGZyb20gJy4uL3Rva2Vucy9sb2NhbGl6YXRpb24udG9rZW4nO1xyXG5pbXBvcnQgeyBDT1JFX09QVElPTlMgfSBmcm9tICcuLi90b2tlbnMvb3B0aW9ucy50b2tlbic7XHJcbmltcG9ydCB7IGNyZWF0ZUxvY2FsaXplciwgY3JlYXRlTG9jYWxpemVyV2l0aEZhbGxiYWNrIH0gZnJvbSAnLi4vdXRpbHMvbG9jYWxpemF0aW9uLXV0aWxzJztcclxuaW1wb3J0IHsgaW50ZXJwb2xhdGUgfSBmcm9tICcuLi91dGlscy9zdHJpbmctdXRpbHMnO1xyXG5pbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy1zdGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblN0YXRlU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi1zdGF0ZS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25TZXJ2aWNlIHtcclxuICBwcml2YXRlIHNlc3Npb25TdGF0ZSA9IGluamVjdChTZXNzaW9uU3RhdGVTZXJ2aWNlKTtcclxuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuICBwcml2YXRlIGNvbmZpZ1N0YXRlID0gaW5qZWN0KENvbmZpZ1N0YXRlU2VydmljZSk7XHJcblxyXG4gIHByaXZhdGUgbGF0ZXN0TGFuZyA9IHRoaXMuc2Vzc2lvblN0YXRlLmdldExhbmd1YWdlKCk7XHJcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2VDaGFuZ2UkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG5cclxuICBwcml2YXRlIHVpTG9jYWxpemF0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFxyXG4gICAgbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+PigpLFxyXG4gICk7XHJcblxyXG4gIHByaXZhdGUgbG9jYWxpemF0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG5ldyBNYXA8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PigpKTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBjdXJyZW50bHkgc2VsZWN0ZWQgbGFuZ3VhZ2VcclxuICAgKiBFdmVuIHRob3VnaCB0aGlzIGxvb2tzIGxpa2UgaXQncyByZWR1bmRhbnQgdG8gcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFzIGBnZXRMYW5ndWFnZSgpYCxcclxuICAgKiBpdCdzIGFjdHVhbGx5IG5vdC4gVGhpcyBjb3VsZCBiZSBpbnZva2VkIGFueSB0aW1lLCBhbmQgdGhlIGxhdGVzdExhbmcgY291bGQgYmUgZGlmZmVyZW50IGZyb20gdGhlXHJcbiAgICogc2Vzc2lvblN0YXRlLmdldExhbmd1YWdlKCkgdmFsdWUuXHJcbiAgICovXHJcbiAgZ2V0IGN1cnJlbnRMYW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5sYXRlc3RMYW5nIHx8IHRoaXMuc2Vzc2lvblN0YXRlLmdldExhbmd1YWdlKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudExhbmckKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uU3RhdGUuZ2V0TGFuZ3VhZ2UkKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFuZ3VhZ2VDaGFuZ2UkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGFuZ3VhZ2VDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBvdGhlckluc3RhbmNlID0gaW5qZWN0KExvY2FsaXphdGlvblNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUsIHNraXBTZWxmOiB0cnVlIH0pITtcclxuXHJcbiAgICBpZiAob3RoZXJJbnN0YW5jZSkgdGhyb3cgbmV3IEVycm9yKCdMb2NhbGl6YXRpb25TZXJ2aWNlIHNob3VsZCBoYXZlIG9ubHkgb25lIGluc3RhbmNlLicpO1xyXG5cclxuICAgIHRoaXMubGlzdGVuVG9TZXRMYW5ndWFnZSgpO1xyXG4gICAgdGhpcy5pbml0TG9jYWxpemF0aW9uVmFsdWVzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRMb2NhbGl6YXRpb25WYWx1ZXMoKSB7XHJcbiAgICBsb2NhbGl6YXRpb25zJC5zdWJzY3JpYmUodmFsID0+IHRoaXMuYWRkTG9jYWxpemF0aW9uKHZhbCkpO1xyXG5cclxuICAgIGNvbnN0IGxlZ2FjeVJlc291cmNlcyQgPSB0aGlzLmNvbmZpZ1N0YXRlLmdldERlZXAkKCdsb2NhbGl6YXRpb24udmFsdWVzJykgYXMgT2JzZXJ2YWJsZTxcclxuICAgICAgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj5cclxuICAgID47XHJcblxyXG4gICAgY29uc3QgcmVtb3RlTG9jYWxpemF0aW9ucyQgPSB0aGlzLmNvbmZpZ1N0YXRlLmdldERlZXAkKCdsb2NhbGl6YXRpb24ucmVzb3VyY2VzJykgYXMgT2JzZXJ2YWJsZTxcclxuICAgICAgUmVjb3JkPHN0cmluZywgQXBwbGljYXRpb25Mb2NhbGl6YXRpb25SZXNvdXJjZUR0bz5cclxuICAgID47XHJcblxyXG4gICAgY29uc3QgY3VycmVudExhbmd1YWdlJCA9IHRoaXMuc2Vzc2lvblN0YXRlLmdldExhbmd1YWdlJCgpO1xyXG5cclxuICAgIGNvbnN0IHVpTG9jYWxpemF0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFtjdXJyZW50TGFuZ3VhZ2UkLCB0aGlzLnVpTG9jYWxpemF0aW9ucyRdKS5waXBlKFxyXG4gICAgICBtYXAoKFtjdXJyZW50TGFuZywgbG9jYWxpemF0aW9uc10pID0+IGxvY2FsaXphdGlvbnMuZ2V0KGN1cnJlbnRMYW5nKSksXHJcbiAgICApO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoW2xlZ2FjeVJlc291cmNlcyQsIHJlbW90ZUxvY2FsaXphdGlvbnMkLCB1aUxvY2FsaXphdGlvbnMkXSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChbbGVnYWN5LCByZXNvdXJjZSwgbG9jYWxdKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXJlc291cmNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHJlbW90ZSA9IGNvbWJpbmVMZWdhY3lhbmROZXdSZXNvdXJjZXMobGVnYWN5IHx8IHt9LCByZXNvdXJjZSk7XHJcbiAgICAgICAgICBpZiAocmVtb3RlKSB7XHJcbiAgICAgICAgICAgIGlmICghbG9jYWwpIHtcclxuICAgICAgICAgICAgICBsb2NhbCA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocmVtb3RlKS5mb3JFYWNoKGVudHJ5ID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCByZXNvdXJjZU5hbWUgPSBlbnRyeVswXTtcclxuICAgICAgICAgICAgICBjb25zdCByZW1vdGVUZXh0cyA9IGVudHJ5WzFdO1xyXG4gICAgICAgICAgICAgIGxldCByZXNvdXJjZSA9IGxvY2FsPy5nZXQocmVzb3VyY2VOYW1lKSB8fCB7fTtcclxuICAgICAgICAgICAgICByZXNvdXJjZSA9IHsgLi4ucmVzb3VyY2UsIC4uLnJlbW90ZVRleHRzIH07XHJcblxyXG4gICAgICAgICAgICAgIGxvY2FsPy5zZXQocmVzb3VyY2VOYW1lLCByZXNvdXJjZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybiBsb2NhbDtcclxuICAgICAgICB9KSxcclxuICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSh2YWwgPT4gdGhpcy5sb2NhbGl6YXRpb25zJC5uZXh0KHZhbCkpO1xyXG4gIH1cclxuXHJcbiAgYWRkTG9jYWxpemF0aW9uKGxvY2FsaXphdGlvbnM/OiBBQlAuTG9jYWxpemF0aW9uW10pIHtcclxuICAgIGlmICghbG9jYWxpemF0aW9ucykgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGxvY2FsaXphdGlvbk1hcCA9IHRoaXMudWlMb2NhbGl6YXRpb25zJC52YWx1ZTtcclxuXHJcbiAgICBsb2NhbGl6YXRpb25zLmZvckVhY2gobG9jID0+IHtcclxuICAgICAgY29uc3QgY3VsdHVyZU1hcCA9XHJcbiAgICAgICAgbG9jYWxpemF0aW9uTWFwLmdldChsb2MuY3VsdHVyZSkgfHwgbmV3IE1hcDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KCk7XHJcblxyXG4gICAgICBsb2MucmVzb3VyY2VzLmZvckVhY2gocmVzID0+IHtcclxuICAgICAgICBsZXQgcmVzb3VyY2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSBjdWx0dXJlTWFwLmdldChyZXMucmVzb3VyY2VOYW1lKSB8fCB7fTtcclxuXHJcbiAgICAgICAgcmVzb3VyY2UgPSB7IC4uLnJlc291cmNlLCAuLi5yZXMudGV4dHMgfTtcclxuXHJcbiAgICAgICAgY3VsdHVyZU1hcC5zZXQocmVzLnJlc291cmNlTmFtZSwgcmVzb3VyY2UpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGxvY2FsaXphdGlvbk1hcC5zZXQobG9jLmN1bHR1cmUsIGN1bHR1cmVNYXApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy51aUxvY2FsaXphdGlvbnMkLm5leHQobG9jYWxpemF0aW9uTWFwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbGlzdGVuVG9TZXRMYW5ndWFnZSgpIHtcclxuICAgIHRoaXMuc2Vzc2lvblN0YXRlXHJcbiAgICAgIC5vbkxhbmd1YWdlQ2hhbmdlJCgpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIGxhbmcgPT4gdGhpcy5jb25maWdTdGF0ZS5nZXREZWVwKCdsb2NhbGl6YXRpb24uY3VycmVudEN1bHR1cmUuY3VsdHVyZU5hbWUnKSAhPT0gbGFuZyxcclxuICAgICAgICApLFxyXG4gICAgICAgIHN3aXRjaE1hcChsYW5nID0+IHRoaXMuY29uZmlnU3RhdGUucmVmcmVzaExvY2FsaXphdGlvbihsYW5nKS5waXBlKG1hcCgoKSA9PiBsYW5nKSkpLFxyXG4gICAgICAgIGZpbHRlcihCb29sZWFuKSxcclxuICAgICAgICBzd2l0Y2hNYXAobGFuZyA9PiBmcm9tKHRoaXMucmVnaXN0ZXJMb2NhbGUobGFuZykudGhlbigoKSA9PiBsYW5nKSkpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUobGFuZyA9PiB0aGlzLl9sYW5ndWFnZUNoYW5nZSQubmV4dChsYW5nKSk7XHJcbiAgfVxyXG5cclxuICByZWdpc3RlckxvY2FsZShsb2NhbGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgeyByZWdpc3RlckxvY2FsZUZuIH06IEFCUC5Sb290ID0gdGhpcy5pbmplY3Rvci5nZXQoQ09SRV9PUFRJT05TKTtcclxuXHJcbiAgICByZXR1cm4gcmVnaXN0ZXJMb2NhbGVGbihsb2NhbGUpLnRoZW4obW9kdWxlID0+IHtcclxuICAgICAgaWYgKG1vZHVsZT8uZGVmYXVsdCkgcmVnaXN0ZXJMb2NhbGVEYXRhKG1vZHVsZS5kZWZhdWx0KTtcclxuICAgICAgdGhpcy5sYXRlc3RMYW5nID0gbG9jYWxlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgbG9jYWxpemVkIHRleHQgd2l0aCB0aGUgZ2l2ZW4gaW50ZXJwb2xhdGlvbiBwYXJhbWV0ZXJzIGluIGN1cnJlbnQgbGFuZ3VhZ2UuXHJcbiAgICogQHBhcmFtIGtleSBMb2NhbGl6YXRvbiBrZXkgdG8gcmVwbGFjZSB3aXRoIGxvY2FsaXplZCB0ZXh0XHJcbiAgICogQHBhcmFtIGludGVycG9sYXRlUGFyYW1zIFZhbHVlcyB0byBpbnRlcnBvbGF0ZVxyXG4gICAqL1xyXG4gIGdldChrZXk6IHN0cmluZyB8IExvY2FsaXphdGlvbldpdGhEZWZhdWx0LCAuLi5pbnRlcnBvbGF0ZVBhcmFtczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU3RhdGVcclxuICAgICAgLmdldEFsbCQoKVxyXG4gICAgICAucGlwZShtYXAoc3RhdGUgPT4gdGhpcy5nZXRMb2NhbGl6YXRpb24oc3RhdGUsIGtleSwgLi4uaW50ZXJwb2xhdGVQYXJhbXMpKSk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXNvdXJjZShyZXNvdXJjZU5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMubG9jYWxpemF0aW9ucyQudmFsdWUuZ2V0KHJlc291cmNlTmFtZSk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXNvdXJjZSQocmVzb3VyY2VOYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmxvY2FsaXphdGlvbnMkLnBpcGUobWFwKHJlcyA9PiByZXMuZ2V0KHJlc291cmNlTmFtZSkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgbG9jYWxpemVkIHRleHQgd2l0aCB0aGUgZ2l2ZW4gaW50ZXJwb2xhdGlvbiBwYXJhbWV0ZXJzIGluIGN1cnJlbnQgbGFuZ3VhZ2UuXHJcbiAgICogQHBhcmFtIGtleSBMb2NhbGl6YXRpb24ga2V5IHRvIHJlcGxhY2Ugd2l0aCBsb2NhbGl6ZWQgdGV4dFxyXG4gICAqIEBwYXJhbSBpbnRlcnBvbGF0ZVBhcmFtcyBWYWx1ZXMgdG8gaW50ZXBvbGF0ZS5cclxuICAgKi9cclxuICBpbnN0YW50KGtleTogc3RyaW5nIHwgTG9jYWxpemF0aW9uV2l0aERlZmF1bHQsIC4uLmludGVycG9sYXRlUGFyYW1zOiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRMb2NhbGl6YXRpb24odGhpcy5jb25maWdTdGF0ZS5nZXRBbGwoKSwga2V5LCAuLi5pbnRlcnBvbGF0ZVBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBsb2NhbGl6ZShyZXNvdXJjZU5hbWU6IHN0cmluZywga2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdGF0ZS5nZXRPbmUkKCdsb2NhbGl6YXRpb24nKS5waXBlKFxyXG4gICAgICBtYXAoY3JlYXRlTG9jYWxpemVyKSxcclxuICAgICAgbWFwKGxvY2FsaXplID0+IGxvY2FsaXplKHJlc291cmNlTmFtZSwga2V5LCBkZWZhdWx0VmFsdWUpKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBsb2NhbGl6ZVN5bmMocmVzb3VyY2VOYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgbG9jYWxpemF0aW9uID0gdGhpcy5jb25maWdTdGF0ZS5nZXRPbmUoJ2xvY2FsaXphdGlvbicpO1xyXG4gICAgcmV0dXJuIGNyZWF0ZUxvY2FsaXplcihsb2NhbGl6YXRpb24pKHJlc291cmNlTmFtZSwga2V5LCBkZWZhdWx0VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgbG9jYWxpemVXaXRoRmFsbGJhY2soXHJcbiAgICByZXNvdXJjZU5hbWVzOiBzdHJpbmdbXSxcclxuICAgIGtleXM6IHN0cmluZ1tdLFxyXG4gICAgZGVmYXVsdFZhbHVlOiBzdHJpbmcsXHJcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1N0YXRlLmdldE9uZSQoJ2xvY2FsaXphdGlvbicpLnBpcGUoXHJcbiAgICAgIG1hcChjcmVhdGVMb2NhbGl6ZXJXaXRoRmFsbGJhY2spLFxyXG4gICAgICBtYXAobG9jYWxpemVXaXRoRmFsbGJhY2sgPT4gbG9jYWxpemVXaXRoRmFsbGJhY2socmVzb3VyY2VOYW1lcywga2V5cywgZGVmYXVsdFZhbHVlKSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbG9jYWxpemVXaXRoRmFsbGJhY2tTeW5jKHJlc291cmNlTmFtZXM6IHN0cmluZ1tdLCBrZXlzOiBzdHJpbmdbXSwgZGVmYXVsdFZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbG9jYWxpemF0aW9uID0gdGhpcy5jb25maWdTdGF0ZS5nZXRPbmUoJ2xvY2FsaXphdGlvbicpO1xyXG4gICAgcmV0dXJuIGNyZWF0ZUxvY2FsaXplcldpdGhGYWxsYmFjayhsb2NhbGl6YXRpb24pKHJlc291cmNlTmFtZXMsIGtleXMsIGRlZmF1bHRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldExvY2FsaXphdGlvbihcclxuICAgIHN0YXRlOiBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25EdG8sXHJcbiAgICBrZXk6IHN0cmluZyB8IExvY2FsaXphdGlvbldpdGhEZWZhdWx0LFxyXG4gICAgLi4uaW50ZXJwb2xhdGVQYXJhbXM6IHN0cmluZ1tdXHJcbiAgKSB7XHJcbiAgICBsZXQgZGVmYXVsdFZhbHVlID0gJyc7XHJcblxyXG4gICAgaWYgKCFrZXkpIHtcclxuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgZGVmYXVsdFZhbHVlID0ga2V5LmRlZmF1bHRWYWx1ZTtcclxuICAgICAga2V5ID0ga2V5LmtleTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KCc6OicpIGFzIHN0cmluZ1tdO1xyXG4gICAgY29uc3Qgd2FybiA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKGlzRGV2TW9kZSgpKSBjb25zb2xlLndhcm4obWVzc2FnZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChrZXlzLmxlbmd0aCA8IDIpIHtcclxuICAgICAgd2FybignVGhlIGxvY2FsaXphdGlvbiBzb3VyY2Ugc2VwYXJhdG9yICg6Oikgbm90IGZvdW5kLicpO1xyXG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IChrZXkgYXMgc3RyaW5nKTtcclxuICAgIH1cclxuICAgIGlmICghc3RhdGUubG9jYWxpemF0aW9uKSByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IGtleXNbMV07XHJcblxyXG4gICAgY29uc3Qgc291cmNlTmFtZSA9IGtleXNbMF0gfHwgc3RhdGUubG9jYWxpemF0aW9uLmRlZmF1bHRSZXNvdXJjZU5hbWU7XHJcbiAgICBjb25zdCBzb3VyY2VLZXkgPSBrZXlzWzFdO1xyXG5cclxuICAgIGlmIChzb3VyY2VOYW1lID09PSAnXycpIHtcclxuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSB8fCBzb3VyY2VLZXk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFzb3VyY2VOYW1lKSB7XHJcbiAgICAgIHdhcm4oXHJcbiAgICAgICAgJ0xvY2FsaXphdGlvbiBzb3VyY2UgbmFtZSBpcyBub3Qgc3BlY2lmaWVkIGFuZCB0aGUgZGVmYXVsdFJlc291cmNlTmFtZSB3YXMgbm90IGRlZmluZWQhJyxcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWUgfHwgc291cmNlS2V5O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMubG9jYWxpemF0aW9ucyQudmFsdWUuZ2V0KHNvdXJjZU5hbWUpO1xyXG4gICAgaWYgKCFzb3VyY2UpIHtcclxuICAgICAgd2FybignQ291bGQgbm90IGZpbmQgbG9jYWxpemF0aW9uIHNvdXJjZTogJyArIHNvdXJjZU5hbWUpO1xyXG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IHNvdXJjZUtleTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbG9jYWxpemF0aW9uID0gc291cmNlW3NvdXJjZUtleV07XHJcbiAgICBpZiAodHlwZW9mIGxvY2FsaXphdGlvbiA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSB8fCBzb3VyY2VLZXk7XHJcbiAgICB9XHJcblxyXG4gICAgaW50ZXJwb2xhdGVQYXJhbXMgPSBpbnRlcnBvbGF0ZVBhcmFtcy5maWx0ZXIocGFyYW1zID0+IHBhcmFtcyAhPSBudWxsKTtcclxuICAgIGlmIChsb2NhbGl6YXRpb24pIGxvY2FsaXphdGlvbiA9IGludGVycG9sYXRlKGxvY2FsaXphdGlvbiwgaW50ZXJwb2xhdGVQYXJhbXMpO1xyXG5cclxuICAgIGlmICh0eXBlb2YgbG9jYWxpemF0aW9uICE9PSAnc3RyaW5nJykgbG9jYWxpemF0aW9uID0gJyc7XHJcblxyXG4gICAgcmV0dXJuIGxvY2FsaXphdGlvbiB8fCBkZWZhdWx0VmFsdWUgfHwgKGtleSBhcyBzdHJpbmcpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcmVjdXJzaXZlbHlNZXJnZUJhc2VSZXNvdXJjZXMoXHJcbiAgYmFzZVJlc291cmNlTmFtZTogc3RyaW5nLFxyXG4gIHNvdXJjZTogUmVzb3VyY2VEdG8sXHJcbik6IEFwcGxpY2F0aW9uTG9jYWxpemF0aW9uUmVzb3VyY2VEdG8ge1xyXG4gIGNvbnN0IGl0ZW0gPSBzb3VyY2VbYmFzZVJlc291cmNlTmFtZV07XHJcblxyXG4gIGlmIChpdGVtLmJhc2VSZXNvdXJjZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9XHJcblxyXG4gIHJldHVybiBpdGVtLmJhc2VSZXNvdXJjZXMucmVkdWNlKChhY2MsIGJhc2VSZXNvdXJjZSkgPT4ge1xyXG4gICAgY29uc3QgYmFzZUl0ZW0gPSByZWN1cnNpdmVseU1lcmdlQmFzZVJlc291cmNlcyhiYXNlUmVzb3VyY2UsIHNvdXJjZSk7XHJcbiAgICBjb25zdCB0ZXh0cyA9IHsgLi4uYmFzZUl0ZW0udGV4dHMsIC4uLmFjYy50ZXh0cyB9O1xyXG4gICAgcmV0dXJuIHsgLi4uYWNjLCB0ZXh0cyB9O1xyXG4gIH0sIGl0ZW0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZXJnZVJlc291cmNlc1dpdGhCYXNlUmVzb3VyY2UocmVzb3VyY2U6IFJlc291cmNlRHRvKTogUmVzb3VyY2VEdG8ge1xyXG4gIGNvbnN0IGVudGl0aWVzOiBBcnJheTxbc3RyaW5nLCBBcHBsaWNhdGlvbkxvY2FsaXphdGlvblJlc291cmNlRHRvXT4gPSBPYmplY3Qua2V5cyhyZXNvdXJjZSkubWFwKFxyXG4gICAga2V5ID0+IHtcclxuICAgICAgY29uc3QgbmV3VmFsdWUgPSByZWN1cnNpdmVseU1lcmdlQmFzZVJlc291cmNlcyhrZXksIHJlc291cmNlKTtcclxuICAgICAgcmV0dXJuIFtrZXksIG5ld1ZhbHVlXTtcclxuICAgIH0sXHJcbiAgKTtcclxuICByZXR1cm4gZW50aXRpZXMucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4gKHsgLi4uYWNjLCBba2V5XTogdmFsdWUgfSksIHt9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gY29tYmluZUxlZ2FjeWFuZE5ld1Jlc291cmNlcyhcclxuICBsZWdhY3k6IExlZ2FjeUxhbmd1YWdlRHRvLFxyXG4gIHJlc291cmNlOiBSZXNvdXJjZUR0byxcclxuKTogTGVnYWN5TGFuZ3VhZ2VEdG8ge1xyXG4gIGNvbnN0IG1lcmdlZFJlc291cmNlID0gbWVyZ2VSZXNvdXJjZXNXaXRoQmFzZVJlc291cmNlKHJlc291cmNlKTtcclxuXHJcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG1lcmdlZFJlc291cmNlKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICByZXR1cm4geyAuLi5hY2MsIFtrZXldOiB2YWx1ZS50ZXh0cyB9O1xyXG4gIH0sIGxlZ2FjeSk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIExlZ2FjeUxhbmd1YWdlRHRvID0gUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj47XHJcbmV4cG9ydCB0eXBlIFJlc291cmNlRHRvID0gUmVjb3JkPHN0cmluZywgQXBwbGljYXRpb25Mb2NhbGl6YXRpb25SZXNvdXJjZUR0bz47XHJcbiJdfQ==","import { Component, inject, input, isDevMode, } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { LocalizationService } from '../services/localization.service';\nimport { ReplaceableComponentsService } from '../services/replaceable-components.service';\nimport { RouterEvents } from '../services/router-events.service';\nimport { RoutesService } from '../services/routes.service';\nimport { SubscriptionService } from '../services/subscription.service';\nimport { findRoute, getRoutePath } from '../utils/route-utils';\nimport { DYNAMIC_LAYOUTS_TOKEN } from '../tokens/dynamic-layout.token';\nimport { EnvironmentService } from '../services';\nimport { NgComponentOutlet } from '@angular/common';\nimport { filter, take } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class DynamicLayoutComponent {\n constructor() {\n this.layouts = inject(DYNAMIC_LAYOUTS_TOKEN);\n this.isLayoutVisible = true;\n this.defaultLayout = input(undefined);\n this.router = inject(Router);\n this.route = inject(ActivatedRoute);\n this.routes = inject(RoutesService);\n this.localizationService = inject(LocalizationService);\n this.replaceableComponents = inject(ReplaceableComponentsService);\n this.subscription = inject(SubscriptionService);\n this.routerEvents = inject(RouterEvents);\n this.environment = inject(EnvironmentService);\n const dynamicLayoutComponent = inject(DynamicLayoutComponent, { optional: true, skipSelf: true });\n if (dynamicLayoutComponent) {\n if (isDevMode())\n console.warn('DynamicLayoutComponent must be used only in AppComponent.');\n return;\n }\n this.checkLayoutOnNavigationEnd();\n this.listenToLanguageChange();\n this.listenToEnvironmentChange();\n }\n checkLayoutOnNavigationEnd() {\n const navigationEnd$ = this.routerEvents.getNavigationEvents('End');\n this.subscription.addOne(navigationEnd$, () => this.getLayout());\n }\n getLayout() {\n let expectedLayout = this.getExtractedLayout();\n if (!expectedLayout)\n expectedLayout = \"empty\" /* eLayoutType.empty */;\n if (this.layoutKey === expectedLayout)\n return;\n const key = this.layouts.get(expectedLayout);\n if (key) {\n this.layout = this.getComponent(key)?.component;\n this.layoutKey = expectedLayout;\n }\n if (!this.layout) {\n this.showLayoutNotFoundError(expectedLayout);\n }\n }\n getExtractedLayout() {\n const routeData = this.route.snapshot.data || {};\n let expectedLayout = routeData['layout'];\n let node = findRoute(this.routes, getRoutePath(this.router));\n node = { parent: node };\n while (node.parent) {\n node = node.parent;\n if (node.layout) {\n expectedLayout = node.layout;\n break;\n }\n }\n return expectedLayout ?? this.defaultLayout();\n }\n showLayoutNotFoundError(layoutName) {\n let message = `Layout ${layoutName} not found.`;\n if (layoutName === 'account') {\n message =\n 'Account layout not found. Please check your configuration. If you are using LeptonX, please make sure you have added \"provideAccountLayout()\" to your app configuration.';\n }\n console.warn(message);\n }\n listenToLanguageChange() {\n this.subscription.addOne(this.localizationService.languageChange$, () => {\n this.isLayoutVisible = false;\n setTimeout(() => (this.isLayoutVisible = true), 0);\n });\n }\n getComponent(key) {\n return this.replaceableComponents.get(key);\n }\n listenToEnvironmentChange() {\n this.environment\n .createOnUpdateStream(x => x.oAuthConfig)\n .pipe(take(1), filter(config => config.responseType === 'code'))\n .subscribe(() => {\n if (this.layout) {\n return;\n }\n this.getLayout();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: DynamicLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: DynamicLayoutComponent, isStandalone: true, selector: \"abp-dynamic-layout\", inputs: { defaultLayout: { classPropertyName: \"defaultLayout\", publicName: \"defaultLayout\", isSignal: true, isRequired: false, transformFunction: null } }, providers: [SubscriptionService], ngImport: i0, template: `\r\n @if (isLayoutVisible) {\r\n <ng-container [ngComponentOutlet]=\"layout\"></ng-container>\r\n }\r\n `, isInline: true, dependencies: [{ kind: \"directive\", type: NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: DynamicLayoutComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'abp-dynamic-layout',\n template: `\r\n @if (isLayoutVisible) {\r\n <ng-container [ngComponentOutlet]=\"layout\"></ng-container>\r\n }\r\n `,\n providers: [SubscriptionService],\n imports: [NgComponentOutlet],\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1sYXlvdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBS1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVlwQyxNQUFNLE9BQU8sc0JBQXNCO0lBZ0JqQztRQWJTLFlBQU8sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNqRCxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUNkLGtCQUFhLEdBQUcsS0FBSyxDQUFjLFNBQVMsQ0FBQyxD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Qiw2TkFIdEIsQ0FBQyxtQkFBbUIsQ0FBQywwQkFMdEI7Ozs7R0FJVCw0REFFUyxpQkFBaUI7OzJGQUVoQixzQkFBc0I7a0JBVmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsUUFBUSxFQUFFOzs7O0dBSVQ7b0JBQ0QsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ2hDLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO2lCQUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICBpc0Rldk1vZGUsXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIFNraXBTZWxmLFxyXG4gIFR5cGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBlTGF5b3V0VHlwZSB9IGZyb20gJy4uL2VudW1zL2NvbW1vbic7XHJcbmltcG9ydCB7IEFCUCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFJlcGxhY2VhYmxlQ29tcG9uZW50cyB9IGZyb20gJy4uL21vZGVscy9yZXBsYWNlYWJsZS1jb21wb25lbnRzJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVwbGFjZWFibGVDb21wb25lbnRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlcGxhY2VhYmxlLWNvbXBvbmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlckV2ZW50cyB9IGZyb20gJy4uL3NlcnZpY2VzL3JvdXRlci1ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yb3V0ZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zdWJzY3JpcHRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IGZpbmRSb3V0ZSwgZ2V0Um91dGVQYXRoIH0gZnJvbSAnLi4vdXRpbHMvcm91dGUtdXRpbHMnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJy4uL3V0aWxzL3RyZWUtdXRpbHMnO1xyXG5pbXBvcnQgeyBEWU5BTUlDX0xBWU9VVFNfVE9LRU4gfSBmcm9tICcuLi90b2tlbnMvZHluYW1pYy1sYXlvdXQudG9rZW4nO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FicC1keW5hbWljLWxheW91dCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIEBpZiAoaXNMYXlvdXRWaXNpYmxlKSB7XHJcbiAgICAgIDxuZy1jb250YWluZXIgW25nQ29tcG9uZW50T3V0bGV0XT1cImxheW91dFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgfVxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbU3Vic2NyaXB0aW9uU2VydmljZV0sXHJcbiAgaW1wb3J0czogW05nQ29tcG9uZW50T3V0bGV0XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNMYXlvdXRDb21wb25lbnQge1xyXG4gIGxheW91dD86IFR5cGU8YW55PjtcclxuICBsYXlvdXRLZXk/OiBlTGF5b3V0VHlwZTtcclxuICByZWFkb25seSBsYXlvdXRzID0gaW5qZWN0KERZTkFNSUNfTEFZT1VUU19UT0tFTik7XHJcbiAgaXNMYXlvdXRWaXNpYmxlID0gdHJ1ZTtcclxuICByZWFkb25seSBkZWZhdWx0TGF5b3V0ID0gaW5wdXQ8ZUxheW91dFR5cGU+KHVuZGVmaW5lZCk7XHJcblxyXG4gIHByb3RlY3RlZCByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSByb3V0ZXMgPSBpbmplY3QoUm91dGVzU2VydmljZSk7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvY2FsaXphdGlvblNlcnZpY2UgPSBpbmplY3QoTG9jYWxpemF0aW9uU2VydmljZSk7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlcGxhY2VhYmxlQ29tcG9uZW50cyA9IGluamVjdChSZXBsYWNlYWJsZUNvbXBvbmVudHNTZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3Vic2NyaXB0aW9uID0gaW5qZWN0KFN1YnNjcmlwdGlvblNlcnZpY2UpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSByb3V0ZXJFdmVudHMgPSBpbmplY3QoUm91dGVyRXZlbnRzKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZW52aXJvbm1lbnQgPSBpbmplY3QoRW52aXJvbm1lbnRTZXJ2aWNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBkeW5hbWljTGF5b3V0Q29tcG9uZW50ID0gaW5qZWN0KER5bmFtaWNMYXlvdXRDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUsIHNraXBTZWxmOiB0cnVlIH0pO1xyXG5cclxuICAgIGlmIChkeW5hbWljTGF5b3V0Q29tcG9uZW50KSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkgY29uc29sZS53YXJuKCdEeW5hbWljTGF5b3V0Q29tcG9uZW50IG11c3QgYmUgdXNlZCBvbmx5IGluIEFwcENvbXBvbmVudC4nKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGVja0xheW91dE9uTmF2aWdhdGlvbkVuZCgpO1xyXG4gICAgdGhpcy5saXN0ZW5Ub0xhbmd1YWdlQ2hhbmdlKCk7XHJcbiAgICB0aGlzLmxpc3RlblRvRW52aXJvbm1lbnRDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tMYXlvdXRPbk5hdmlnYXRpb25FbmQoKSB7XHJcbiAgICBjb25zdCBuYXZpZ2F0aW9uRW5kJCA9IHRoaXMucm91dGVyRXZlbnRzLmdldE5hdmlnYXRpb25FdmVudHMoJ0VuZCcpO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkT25lKG5hdmlnYXRpb25FbmQkLCAoKSA9PiB0aGlzLmdldExheW91dCgpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TGF5b3V0KCkge1xyXG4gICAgbGV0IGV4cGVjdGVkTGF5b3V0ID0gdGhpcy5nZXRFeHRyYWN0ZWRMYXlvdXQoKTtcclxuXHJcbiAgICBpZiAoIWV4cGVjdGVkTGF5b3V0KSBleHBlY3RlZExheW91dCA9IGVMYXlvdXRUeXBlLmVtcHR5O1xyXG5cclxuICAgIGlmICh0aGlzLmxheW91dEtleSA9PT0gZXhwZWN0ZWRMYXlvdXQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBrZXkgPSB0aGlzLmxheW91dHMuZ2V0KGV4cGVjdGVkTGF5b3V0KTtcclxuICAgIGlmIChrZXkpIHtcclxuICAgICAgdGhpcy5sYXlvdXQgPSB0aGlzLmdldENvbXBvbmVudChrZXkpPy5jb21wb25lbnQ7XHJcbiAgICAgIHRoaXMubGF5b3V0S2V5ID0gZXhwZWN0ZWRMYXlvdXQ7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMubGF5b3V0KSB7XHJcbiAgICAgIHRoaXMuc2hvd0xheW91dE5vdEZvdW5kRXJyb3IoZXhwZWN0ZWRMYXlvdXQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFeHRyYWN0ZWRMYXlvdXQoKSB7XHJcbiAgICBjb25zdCByb3V0ZURhdGEgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEgfHwge307XHJcbiAgICBsZXQgZXhwZWN0ZWRMYXlvdXQgPSByb3V0ZURhdGFbJ2xheW91dCddIGFzIGVMYXlvdXRUeXBlO1xyXG5cclxuICAgIGxldCBub2RlID0gZmluZFJvdXRlKHRoaXMucm91dGVzLCBnZXRSb3V0ZVBhdGgodGhpcy5yb3V0ZXIpKTtcclxuICAgIG5vZGUgPSB7IHBhcmVudDogbm9kZSB9IGFzIFRyZWVOb2RlPEFCUC5Sb3V0ZT47XHJcblxyXG4gICAgd2hpbGUgKG5vZGUucGFyZW50KSB7XHJcbiAgICAgIG5vZGUgPSBub2RlLnBhcmVudDtcclxuXHJcbiAgICAgIGlmIChub2RlLmxheW91dCkge1xyXG4gICAgICAgIGV4cGVjdGVkTGF5b3V0ID0gbm9kZS5sYXlvdXQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBleHBlY3RlZExheW91dCA/PyB0aGlzLmRlZmF1bHRMYXlvdXQoKTtcclxuICB9XHJcblxyXG4gIHNob3dMYXlvdXROb3RGb3VuZEVycm9yKGxheW91dE5hbWU6IHN0cmluZykge1xyXG4gICAgbGV0IG1lc3NhZ2UgPSBgTGF5b3V0ICR7bGF5b3V0TmFtZX0gbm90IGZvdW5kLmA7XHJcbiAgICBpZiAobGF5b3V0TmFtZSA9PT0gJ2FjY291bnQnKSB7XHJcbiAgICAgIG1lc3NhZ2UgPVxyXG4gICAgICAgICdBY2NvdW50IGxheW91dCBub3QgZm91bmQuIFBsZWFzZSBjaGVjayB5b3VyIGNvbmZpZ3VyYXRpb24uIElmIHlvdSBhcmUgdXNpbmcgTGVwdG9uWCwgcGxlYXNlIG1ha2Ugc3VyZSB5b3UgaGF2ZSBhZGRlZCBcInByb3ZpZGVBY2NvdW50TGF5b3V0KClcIiB0byB5b3VyIGFwcCBjb25maWd1cmF0aW9uLic7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLndhcm4obWVzc2FnZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxpc3RlblRvTGFuZ3VhZ2VDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGRPbmUodGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmxhbmd1YWdlQ2hhbmdlJCwgKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzTGF5b3V0VmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLmlzTGF5b3V0VmlzaWJsZSA9IHRydWUpLCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb21wb25lbnQoa2V5OiBzdHJpbmcpOiBSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnQgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMucmVwbGFjZWFibGVDb21wb25lbnRzLmdldChrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Ub0Vudmlyb25tZW50Q2hhbmdlKCkge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudFxyXG4gICAgICAuY3JlYXRlT25VcGRhdGVTdHJlYW0oeCA9PiB4Lm9BdXRoQ29uZmlnKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIGZpbHRlcihjb25maWcgPT4gY29uZmlnLnJlc3BvbnNlVHlwZSA9PT0gJ2NvZGUnKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5sYXlvdXQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5nZXRMYXlvdXQoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { Component, inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { ReplaceableComponentsService } from '../services/replaceable-components.service';\nimport { SubscriptionService } from '../services/subscription.service';\nimport { NgComponentOutlet } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class ReplaceableRouteContainerComponent {\n constructor() {\n this.route = inject(ActivatedRoute);\n this.replaceableComponents = inject(ReplaceableComponentsService);\n this.subscription = inject(SubscriptionService);\n }\n ngOnInit() {\n this.defaultComponent = this.route.snapshot.data.replaceableComponent.defaultComponent;\n this.componentKey = this.route.snapshot.data.replaceableComponent.key;\n const component$ = this.replaceableComponents\n .get$(this.componentKey)\n .pipe(distinctUntilChanged());\n this.subscription.addOne(component$, (res = {}) => {\n this.externalComponent = res.component;\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ReplaceableRouteContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.7\", type: ReplaceableRouteContainerComponent, isStandalone: true, selector: \"abp-replaceable-route-container\", providers: [SubscriptionService], ngImport: i0, template: `\r\n <ng-container *ngComponentOutlet=\"externalComponent || defaultComponent\"></ng-container>\r\n `, isInline: true, dependencies: [{ kind: \"directive\", type: NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ReplaceableRouteContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'abp-replaceable-route-container',\n template: `\r\n <ng-container *ngComponentOutlet=\"externalComponent || defaultComponent\"></ng-container>\r\n `,\n providers: [SubscriptionService],\n imports: [NgComponentOutlet],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZWFibGUtcm91dGUtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9jb21wb25lbnRzL3JlcGxhY2VhYmxlLXJvdXRlLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMxRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFVcEQsTUFBTSxPQUFPLGtDQUFrQztJQVIvQztRQVNVLFVBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0IsMEJBQXFCLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDN0QsaUJBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztLQXlCcEQ7SUFqQkMsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUM7UUFDdkYsSUFBSSxDQUFDLFlBQVksR0FDZixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQzFCLENBQUMsR0FBRyxDQUFDO1FBRU4sTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQjthQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQzthQUN2QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUN0QixVQUFVLEVBQ1YsQ0FBQyxNQUFNLEVBQWdELEVBQUUsRUFBRTtZQUN6RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUN6QyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7OEdBM0JVLGtDQUFrQztrR0FBbEMsa0NBQWtDLDhFQUhsQyxDQUFDLG1CQUFtQixDQUFDLDBCQUh0Qjs7R0FFVCw0REFFUyxpQkFBaUI7OzJGQUVoQixrQ0FBa0M7a0JBUjlDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlDQUFpQztvQkFDM0MsUUFBUSxFQUFFOztHQUVUO29CQUNELFNBQVMsRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVHlwZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFJlcGxhY2VhYmxlQ29tcG9uZW50cyB9IGZyb20gJy4uL21vZGVscy9yZXBsYWNlYWJsZS1jb21wb25lbnRzJztcclxuaW1wb3J0IHsgUmVwbGFjZWFibGVDb21wb25lbnRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlcGxhY2VhYmxlLWNvbXBvbmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zdWJzY3JpcHRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWJwLXJlcGxhY2VhYmxlLXJvdXRlLWNvbnRhaW5lcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiZXh0ZXJuYWxDb21wb25lbnQgfHwgZGVmYXVsdENvbXBvbmVudFwiPjwvbmctY29udGFpbmVyPlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbU3Vic2NyaXB0aW9uU2VydmljZV0sXHJcbiAgaW1wb3J0czogW05nQ29tcG9uZW50T3V0bGV0XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcGxhY2VhYmxlUm91dGVDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG4gIHByaXZhdGUgcmVwbGFjZWFibGVDb21wb25lbnRzID0gaW5qZWN0KFJlcGxhY2VhYmxlQ29tcG9uZW50c1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gaW5qZWN0KFN1YnNjcmlwdGlvblNlcnZpY2UpO1xyXG5cclxuICBkZWZhdWx0Q29tcG9uZW50ITogVHlwZTxhbnk+O1xyXG5cclxuICBjb21wb25lbnRLZXkhOiBzdHJpbmc7XHJcblxyXG4gIGV4dGVybmFsQ29tcG9uZW50PzogVHlwZTxhbnk+O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZGVmYXVsdENvbXBvbmVudCA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5yZXBsYWNlYWJsZUNvbXBvbmVudC5kZWZhdWx0Q29tcG9uZW50O1xyXG4gICAgdGhpcy5jb21wb25lbnRLZXkgPSAoXHJcbiAgICAgIHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5yZXBsYWNlYWJsZUNvbXBvbmVudCBhcyBSZXBsYWNlYWJsZUNvbXBvbmVudHMuUm91dGVEYXRhXHJcbiAgICApLmtleTtcclxuXHJcbiAgICBjb25zdCBjb21wb25lbnQkID0gdGhpcy5yZXBsYWNlYWJsZUNvbXBvbmVudHNcclxuICAgICAgLmdldCQodGhpcy5jb21wb25lbnRLZXkpXHJcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZE9uZShcclxuICAgICAgY29tcG9uZW50JCxcclxuICAgICAgKHJlcyA9IHt9IGFzIFJlcGxhY2VhYmxlQ29tcG9uZW50cy5SZXBsYWNlYWJsZUNvbXBvbmVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxDb21wb25lbnQgPSByZXMuY29tcG9uZW50O1xyXG4gICAgICB9LFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19","import { Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport * as i0 from \"@angular/core\";\nexport class RouterOutletComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RouterOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.7\", type: RouterOutletComponent, isStandalone: true, selector: \"abp-router-outlet\", ngImport: i0, template: ` <router-outlet></router-outlet> `, isInline: true, dependencies: [{ kind: \"directive\", type: RouterOutlet, selector: \"router-outlet\", inputs: [\"name\", \"routerOutletData\"], outputs: [\"activate\", \"deactivate\", \"attach\", \"detach\"], exportAs: [\"outlet\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RouterOutletComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'abp-router-outlet',\n template: ` <router-outlet></router-outlet> `,\n imports: [RouterOutlet],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLW91dGxldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvY29tcG9uZW50cy9yb3V0ZXItb3V0bGV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFPL0MsTUFBTSxPQUFPLHFCQUFxQjs4R0FBckIscUJBQXFCO2tHQUFyQixxQkFBcUIsNkVBSHRCLG1DQUFtQyw0REFDbkMsWUFBWTs7MkZBRVgscUJBQXFCO2tCQUxqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxtQ0FBbUM7b0JBQzdDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWJwLXJvdXRlci1vdXRsZXQnLFxyXG4gIHRlbXBsYXRlOiBgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD4gYCxcclxuICBpbXBvcnRzOiBbUm91dGVyT3V0bGV0XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvdXRlck91dGxldENvbXBvbmVudCB7fVxyXG4iXX0=","// Different locales from .NET\n// Key is .NET locale, value is Angular locale\nexport const differentLocales = {\n aa: 'en',\n 'aa-DJ': 'en',\n 'aa-ER': 'en',\n 'aa-ET': 'en',\n 'af-ZA': 'af',\n 'agq-CM': 'agq',\n 'ak-GH': 'ak',\n 'am-ET': 'am',\n 'ar-001': 'ar',\n arn: 'en',\n 'arn-CL': 'en',\n 'as-IN': 'as',\n 'asa-TZ': 'asa',\n 'ast-ES': 'ast',\n 'az-Cyrl-AZ': 'az-Cyrl',\n 'az-Latn-AZ': 'az-Latn',\n ba: 'ru',\n 'ba-RU': 'ru',\n 'bas-CM': 'bas',\n 'be-BY': 'be',\n 'bem-ZM': 'bem',\n 'bez-TZ': 'bez',\n 'bg-BG': 'bg',\n bin: 'en',\n 'bin-NG': 'en',\n 'bm-Latn': 'bm',\n 'bm-Latn-ML': 'bm',\n 'bn-BD': 'bn',\n 'bo-CN': 'bo',\n 'br-FR': 'br',\n 'brx-IN': 'brx',\n 'bs-Cyrl-BA': 'bs-Cyrl',\n 'bs-Latn-BA': 'bs-Latn',\n byn: 'en',\n 'byn-ER': 'en',\n 'ca-ES': 'ca',\n 'ca-ES-valencia': 'ca-ES-VALENCIA',\n 'ce-RU': 'ce',\n 'cgg-UG': 'cgg',\n 'chr-Cher': 'chr',\n 'chr-Cher-US': 'chr',\n co: 'en',\n 'co-FR': 'fr',\n 'cs-CZ': 'cs',\n 'cu-RU': 'cu',\n 'cy-GB': 'cy',\n 'da-DK': 'da',\n 'dav-KE': 'dav',\n 'de-DE': 'de',\n 'dje-NE': 'dje',\n 'dsb-DE': 'dsb',\n 'dua-CM': 'dua',\n dv: 'en',\n 'dv-MV': 'en',\n 'dyo-SN': 'dyo',\n 'dz-BT': 'dz',\n 'ebu-KE': 'ebu',\n 'ee-GH': 'ee',\n 'el-GR': 'el',\n 'en-029': 'en',\n 'en-ID': 'en',\n 'en-US': 'en',\n 'eo-001': 'en',\n 'es-ES': 'es',\n 'et-EE': 'et',\n 'eu-ES': 'eu',\n 'ewo-CM': 'ewo',\n 'fa-IR': 'fa',\n 'ff-Latn-SN': 'ff-Latn',\n 'ff-NG': 'ff',\n 'fi-FI': 'fi',\n 'fil-PH': 'fil',\n 'fo-FO': 'fo',\n 'fr-029': 'fr',\n 'fr-FR': 'fr',\n 'fur-IT': 'fur',\n 'fy-NL': 'fy',\n 'ga-IE': 'ga',\n 'gd-GB': 'gd',\n 'gl-ES': 'gl',\n gn: 'en',\n 'gn-PY': 'en',\n 'gsw-CH': 'gsw',\n 'gu-IN': 'gu',\n 'guz-KE': 'guz',\n 'gv-IM': 'gv',\n 'ha-Latn': 'ha',\n 'ha-Latn-GH': 'ha-GH',\n 'ha-Latn-NE': 'ha-NE',\n 'ha-Latn-NG': 'ha',\n 'haw-US': 'haw',\n 'he-IL': 'he',\n 'hi-IN': 'hi',\n 'hr-HR': 'hr',\n 'hsb-DE': 'hsb',\n 'hu-HU': 'hu',\n 'hy-AM': 'hy',\n 'ia-001': 'ia',\n 'ia-FR': 'ia',\n ibb: 'en',\n 'ibb-NG': 'en',\n 'id-ID': 'id',\n 'ig-NG': 'ig',\n 'ii-CN': 'ii',\n 'is-IS': 'is',\n 'it-IT': 'it',\n iu: 'en',\n 'iu-Cans': 'en',\n 'iu-Cans-CA': 'en',\n 'iu-Latn': 'en',\n 'iu-Latn-CA': 'en',\n 'ja-JP': 'ja',\n 'jgo-CM': 'jgo',\n 'jmc-TZ': 'jmc',\n 'jv-Java': 'jv',\n 'jv-Java-ID': 'jv',\n 'jv-Latn': 'jv',\n 'jv-Latn-ID': 'jv',\n 'ka-GE': 'ka',\n 'kab-DZ': 'kab',\n 'kam-KE': 'kam',\n 'kde-TZ': 'kde',\n 'kea-CV': 'kea',\n 'khq-ML': 'khq',\n 'ki-KE': 'ki',\n 'kk-KZ': 'kk',\n 'kkj-CM': 'kkj',\n 'kl-GL': 'kl',\n 'kln-KE': 'kln',\n 'km-KH': 'km',\n 'kn-IN': 'kn',\n 'ko-KR': 'ko',\n 'kok-IN': 'kok',\n kr: 'en',\n 'kr-NG': 'en',\n 'ks-Arab': 'ks',\n 'ks-Arab-IN': 'ks',\n 'ks-Deva': 'ks',\n 'ks-Deva-IN': 'ks',\n 'ksb-TZ': 'ksb',\n 'ksf-CM': 'ksf',\n 'ksh-DE': 'ksh',\n 'ku-Arab': 'ku',\n 'ku-Arab-IQ': 'ku',\n 'ku-Arab-IR': 'ku',\n 'kw-GB': 'kw',\n 'ky-KG': 'ky',\n la: 'en',\n 'la-001': 'en',\n 'lag-TZ': 'lag',\n 'lb-LU': 'lb',\n 'lg-UG': 'lg',\n 'lkt-US': 'lkt',\n 'ln-CD': 'ln',\n 'lo-LA': 'lo',\n 'lrc-IR': 'lrc',\n 'lt-LT': 'lt',\n 'lu-CD': 'lu',\n 'luo-KE': 'luo',\n 'luy-KE': 'luy',\n 'lv-LV': 'lv',\n 'mas-KE': 'mas',\n 'mer-KE': 'mer',\n 'mfe-MU': 'mfe',\n 'mg-MG': 'mg',\n 'mgh-MZ': 'mgh',\n 'mgo-CM': 'mgo',\n 'mi-NZ': 'mi',\n 'mk-MK': 'mk',\n 'ml-IN': 'ml',\n 'mn-Cyrl': 'mn',\n 'mn-MN': 'mn',\n 'mn-Mong': 'mn',\n 'mn-Mong-CN': 'mn',\n 'mn-Mong-MN': 'mn',\n mni: 'en',\n 'mni-IN': 'en',\n moh: 'en',\n 'moh-CA': 'en',\n 'mr-IN': 'mr',\n 'ms-MY': 'ms',\n 'mt-MT': 'mt',\n 'mua-CM': 'mua',\n 'my-MM': 'my',\n 'mzn-IR': 'mzn',\n 'naq-NA': 'naq',\n 'nb-NO': 'nb',\n 'nd-ZW': 'nd',\n 'ne-NP': 'ne',\n 'nl-NL': 'nl',\n 'nmg-CM': 'ngm',\n 'nn-NO': 'nn',\n 'nnh-CM': 'nnh',\n no: 'en',\n nqo: 'en',\n 'nqo-GN': 'en',\n nr: 'en',\n 'nr-ZA': 'en',\n nso: 'en',\n 'nso-ZA': 'en',\n 'nus-SS': 'nus',\n 'nyn-UG': 'nyn',\n oc: 'en',\n 'oc-FR': 'fr',\n 'om-ET': 'om',\n 'or-IN': 'or',\n 'os-GE': 'os',\n 'pa-Arab-PK': 'pa-Arab',\n 'pa-IN': 'pa',\n pap: 'en',\n 'pap-029': 'en',\n 'pl-PL': 'pl',\n 'prg-001': 'prg',\n prs: 'en',\n 'prs-AF': 'en',\n 'ps-AF': 'ps',\n 'pt-BR': 'pt',\n quc: 'en',\n 'quc-Latn': 'en',\n 'quc-Latn-GT': 'en',\n quz: 'en',\n 'quz-BO': 'en',\n 'quz-EC': 'en',\n 'quz-PE': 'en',\n 'rm-CH': 'rm',\n 'rn-BI': 'rn',\n 'ro-RO': 'ro',\n 'rof-TZ': 'rof',\n 'ru-RU': 'ru',\n 'rw-RW': 'rw',\n 'rwk-TZ': 'rwk',\n sa: 'en',\n 'sa-IN': 'en',\n 'sah-RU': 'sah',\n 'saq-KE': 'saq',\n 'sbp-TZ': 'en',\n 'sd-Arab': 'sd',\n 'sd-Arab-PK': 'sd',\n 'sd-Deva': 'sd',\n 'sd-Deva-IN': 'sd',\n 'se-NO': 'se',\n 'seh-MZ': 'seh',\n 'ses-ML': 'ses',\n 'sg-CF': 'sg',\n 'shi-Latn-MA': 'shi-Latn',\n 'shi-Tfng-MA': 'shi-Tfng',\n 'si-LK': 'si',\n 'sk-SK': 'sk',\n 'sl-SI': 'sl',\n sma: 'en',\n 'sma-NO': 'en',\n 'sma-SE': 'en',\n smj: 'en',\n 'smj-NO': 'en',\n 'smj-SE': 'en',\n 'smn-FI': 'en',\n sms: 'en',\n 'sms-FI': 'en',\n 'sn-Latn': 'sn',\n 'sn-Latn-ZW': 'sn',\n 'so-SO': 'so',\n 'sq-AL': 'so',\n 'sr-Cyrl-RS': 'sr-Cryl',\n 'sr-Latn-RS': 'sr-Latn',\n ss: 'en',\n 'ss-SZ': 'en',\n 'ss-ZA': 'en',\n ssy: 'en',\n 'ssy-ER': 'en',\n st: 'en',\n 'st-LS': 'en',\n 'st-ZA': 'en',\n 'sv-SE': 'sv',\n 'sw-TZ': 'sw',\n syr: 'en',\n 'syr-SY': 'en',\n 'ta-IN': 'ta',\n 'te-IN': 'te',\n 'teo-UG': 'teo',\n 'tg-Cyrl': 'tg',\n 'tg-Cyrl-TJ': 'tg',\n 'th-TH': 'th',\n 'ti-ET': 'ti',\n tig: 'en',\n 'tig-ER': 'en',\n 'tk-TM': 'tk',\n tn: 'en',\n 'tn-BW': 'en',\n 'tn-ZA': 'en',\n 'to-TO': 'to',\n 'tr-TR': 'tr',\n ts: 'en',\n 'ts-ZA': 'en',\n 'tt-RU': 'tt',\n 'twq-NE': 'twq',\n 'tzm-Arab': 'tzm',\n 'tzm-Arab-MA': 'tzm',\n 'tzm-Latn': 'tzm',\n 'tzm-Latn-DZ': 'tzm',\n 'tzm-Latn-MA': 'tzm',\n 'tzm-Tfng': 'tzm',\n 'tzm-Tfng-MA': 'tzm',\n 'ug-CN': 'ug',\n 'uk-UA': 'uk',\n 'ur-PK': 'ur',\n 'uz-Arab-AF': 'uz-Arab',\n 'uz-Cyrl-UZ': 'uz-Cyrl',\n 'uz-Latn-UZ': 'uz-Latn',\n 'vai-Latn-LR': 'vai-Latn',\n 'vai-Vaii-LR': 'vai-Vaii',\n ve: 'en',\n 've-ZA': 'en',\n 'vi-VN': 'vi',\n 'vo-001': 'vo',\n 'vun-TZ': 'vun',\n 'wae-CH': 'wae',\n wal: 'en',\n 'wal-ET': 'en',\n 'wo-SN': 'wo',\n 'xh-ZA': 'xh',\n 'xog-UG': 'xog',\n 'yav-CM': 'yav',\n 'yi-001': 'yi',\n 'yo-NG': 'yo',\n 'zgh-Tfng': 'zgh',\n 'zgh-Tfng-MA': 'zgh',\n 'zh-CN': 'zh',\n 'zh-HK': 'zh',\n 'zh-MO': 'zh',\n 'zh-SG': 'zh',\n 'zh-TW': 'zh',\n 'zu-ZA': 'zu',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZmVyZW50LWxvY2FsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvY29uc3RhbnRzL2RpZmZlcmVudC1sb2NhbGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhCQUE4QjtBQUM5Qiw4Q0FBOEM7QUFFOUMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsRUFBRSxFQUFFLElBQUk7SUFDUixPQUFPLEVBQUUsSUFBSTtJQUNiLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxLQUFLO0lBQ2YsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxJQUFJO0lBQ2QsR0FBRyxFQUFFLElBQUk7SUFDVCxRQUFRLEVBQUUsSUFBSTtJQUNkLE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLEtBQUs7SUFDZixRQUFRLEVBQUUsS0FBSztJQUNmLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLEVBQUUsRUFBRSxJQUFJO0lBQ1IsT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsS0FBSztJQUNmLE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLEtBQUs7SUFDZixRQUFRLEVBQUUsS0FBSztJQUNmLE9BQU8sRUFBRSxJQUFJO0lBQ2IsR0FBRyxFQUFFLElBQUk7SUFDVCxRQUFRLEVBQUUsSUFBSTtJQUNkLFNBQVMsRUFBRSxJQUFJO0lBQ2YsWUFBWSxFQUFFLElBQUk7SUFDbEIsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLEtBQUs7SUFDZixZQUFZLEVBQUUsU0FBUztJQUN2QixZQUFZLEVBQUUsU0FBUztJQUN2QixHQUFH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LEtBQUs7SUFDZixRQUFRLEVBQUUsS0FBSztJQUNmLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsS0FBSztJQUNmLE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLEtBQUs7SUFDZixPQUFPLEVBQUUsSUFBSTtJQUNiLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsS0FBSztJQUNmLEVBQUUsRUFBRSxJQUFJO0lBQ1IsT0FBTyxFQUFFLElBQUk7SUFDYixTQUFTLEVBQUUsSUFBSTtJQUNmLFlBQVksRUFBRSxJQUFJO0lBQ2xCLFNBQVMsRUFBRSxJQUFJO0lBQ2YsWUFBWSxFQUFFLElBQUk7SUFDbEIsUUFBUSxFQUFFLEtBQUs7SUFDZixRQUFRLEVBQUUsS0FBSztJQUNmLFFBQVEsRUFBRSxLQUFLO0lBQ2YsU0FBUyxFQUFFLElBQUk7SUFDZixZQUFZLEVBQUUsSUFBSTtJQUNsQixZQUFZLEVBQUUsSUFBSTtJQUNsQixPQUFPLEVBQUUsSUFBSTtJQUNiLE9BQU8sRUFBRSxJQUFJO0lBQ2IsRUFBRSxFQUFFLElBQUk7SUFDUixRQUFRLEVBQUUsSUFBSTtJQUNkLFFBQVEsRUFBRSxLQUFLO0lBQ2YsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxLQUFLO0lBQ2YsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxLQUFLO0lBQ2YsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxLQUFLO0lBQ2YsUUFBUSxFQUFFLEtBQUs7SUFDZixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxLQUFLO0lBQ2YsUUFBUSxFQUFFLEtBQUs7SUFDZixRQUFRLEVBQUUsS0FBSztJQUNmLE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLEtBQUs7SUFDZixRQUFRLEVBQUUsS0FBSztJQUNmLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLFNBQVMsRUFBRSxJQUFJO0lBQ2YsT0FBTyxFQUFFLElBQUk7SUFDYixTQUFTLEVBQUUsSUFBSTtJQUNmLFlBQVksRUFBRSxJQUFJO0lBQ2xCLFlBQVksRUFBRSxJQUFJO0lBQ2xCLEdBQUcsRUFBRSxJQUFJO0lBQ1QsUUFBUSxFQUFFLElBQUk7SUFDZCxHQUFHLEVBQUUsSUFBSTtJQUNULFFBQVEsRUFBRSxJQUFJO0lBQ2QsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLEtBQUs7SUFDZixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxLQUFLO0lBQ2YsUUFBUSxFQUFFLEtBQUs7SUFDZixPQUFPLEVBQUUsSUFBSTtJQUViLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxLQUFLO0lBQ2YsT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsS0FBSztJQUNmLEVBQUUsRUFBRSxJQUFJO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxRQUFRLEVBQUUsSUFBSTtJQUNkLEVBQUUsRUFBRSxJQUFJO0lBQ1IsT0FBTyxFQUFFLElBQUk7SUFDYixHQUFHLEVBQUUsSUFBSTtJQUNULFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLEtBQUs7SUFDZixRQUFRLEVBQUUsS0FBSztJQUNmLEVBQUUsRUFBRSxJQUFJO0lBQ1IsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7SUFDYixZQUFZLEVBQUUsU0FBUztJQUN2QixPQUFPLEVBQUUsSUFBSTtJQUNiLEdBQUcsRUFBRSxJQUFJO0lBQ1QsU0FBUyxFQUFFLElBQUk7SUFDZixPQUFPLEVBQUUsSUFBSTtJQUNiLFNB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RUFBRSxLQUFLO0lBQ3BCLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLGFBQWEsRUFBRSxVQUFVO0lBQ3pCLGFBQWEsRUFBRSxVQUFVO0lBQ3pCLEVBQUUsRUFBRSxJQUFJO0lBQ1IsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLEtBQUs7SUFDZixRQUFRLEVBQUUsS0FBSztJQUNmLEdBQUcsRUFBRSxJQUFJO0lBQ1QsUUFBUSxFQUFFLElBQUk7SUFDZCxPQUFPLEVBQUUsSUFBSTtJQUNiLE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLEtBQUs7SUFDZixRQUFRLEVBQUUsS0FBSztJQUNmLFFBQVEsRUFBRSxJQUFJO0lBQ2QsT0FBTyxFQUFFLElBQUk7SUFDYixVQUFVLEVBQUUsS0FBSztJQUNqQixhQUFhLEVBQUUsS0FBSztJQUNwQixPQUFPLEVBQUUsSUFBSTtJQUNiLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7SUFDYixPQUFPLEVBQUUsSUFBSTtJQUNiLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRGlmZmVyZW50IGxvY2FsZXMgZnJvbSAuTkVUXHJcbi8vIEtleSBpcyAuTkVUIGxvY2FsZSwgdmFsdWUgaXMgQW5ndWxhciBsb2NhbGVcclxuXHJcbmV4cG9ydCBjb25zdCBkaWZmZXJlbnRMb2NhbGVzID0ge1xyXG4gIGFhOiAnZW4nLFxyXG4gICdhYS1ESic6ICdlbicsXHJcbiAgJ2FhLUVSJzogJ2VuJyxcclxuICAnYWEtRVQnOiAnZW4nLFxyXG4gICdhZi1aQSc6ICdhZicsXHJcbiAgJ2FncS1DTSc6ICdhZ3EnLFxyXG4gICdhay1HSCc6ICdhaycsXHJcbiAgJ2FtLUVUJzogJ2FtJyxcclxuICAnYXItMDAxJzogJ2FyJyxcclxuICBhcm46ICdlbicsXHJcbiAgJ2Fybi1DTCc6ICdlbicsXHJcbiAgJ2FzLUlOJzogJ2FzJyxcclxuICAnYXNhLVRaJzogJ2FzYScsXHJcbiAgJ2FzdC1FUyc6ICdhc3QnLFxyXG4gICdhei1DeXJsLUFaJzogJ2F6LUN5cmwnLFxyXG4gICdhei1MYXRuLUFaJzogJ2F6LUxhdG4nLFxyXG4gIGJhOiAncnUnLFxyXG4gICdiYS1SVSc6ICdydScsXHJcbiAgJ2Jhcy1DTSc6ICdiYXMnLFxyXG4gICdiZS1CWSc6ICdiZScsXHJcbiAgJ2JlbS1aTSc6ICdiZW0nLFxyXG4gICdiZXotVFonOiAnYmV6JyxcclxuICAnYmctQkcnOiAnYmcnLFxyXG4gIGJpbjogJ2VuJyxcclxuICAnYmluLU5HJzogJ2VuJyxcclxuICAnYm0tTGF0bic6ICdibScsXHJcbiAgJ2JtLUxhdG4tTUwnOiAnYm0nLFxyXG4gICdibi1CRCc6ICdibicsXHJcbiAgJ2JvLUNOJzogJ2JvJyxcclxuICAnYnItRlInOiAnYnInLFxyXG4gICdicngtSU4nOiAnYnJ4JyxcclxuICAnYnMtQ3lybC1CQSc6ICdicy1DeXJsJyxcclxuICAnYnMtTGF0bi1CQSc6ICdicy1MYXRuJyxcclxuICBieW46ICdlbicsXHJcbiAgJ2J5bi1FUic6ICdlbicsXHJcbiAgJ2NhLUVTJzogJ2NhJyxcclxuICAnY2EtRVMtdmFsZW5jaWEnOiAnY2EtRVMtVkFMRU5DSUEnLFxyXG4gICdjZS1SVSc6ICdjZScsXHJcbiAgJ2NnZy1VRyc6ICdjZ2cnLFxyXG4gICdjaHItQ2hlcic6ICdjaHInLFxyXG4gICdjaHItQ2hlci1VUyc6ICdjaHInLFxyXG4gIGNvOiAnZW4nLFxyXG4gICdjby1GUic6ICdmcicsXHJcbiAgJ2NzLUNaJzogJ2NzJyxcclxuICAnY3UtUlUnOiAnY3UnLFxyXG4gICdjeS1HQic6ICdjeScsXHJcbiAgJ2RhLURLJzogJ2RhJyxcclxuICAnZGF2LUtFJzogJ2RhdicsXHJcbiAgJ2RlLURFJzogJ2RlJyxcclxuICAnZGplLU5FJzogJ2RqZScsXHJcbiAgJ2RzYi1ERSc6ICdkc2InLFxyXG4gICdkdWEtQ00nOiAnZHVhJyxcclxuICBkdjogJ2VuJyxcclxuICAnZHYtTVYnOiAnZW4nLFxyXG4gICdkeW8tU04nOiAnZHlvJyxcclxuICAnZHotQlQnOiAnZHonLFxyXG4gICdlYnUtS0UnOiAnZWJ1JyxcclxuICAnZWUtR0gnOiAnZWUnLFxyXG4gICdlbC1HUic6ICdlbCcsXHJcbiAgJ2VuLTAyOSc6ICdlbicsXHJcbiAgJ2VuLUlEJzogJ2VuJyxcclxuICAnZW4tVVMnOiAnZW4nLFxyXG4gICdlby0wMDEnOiAnZW4nLFxyXG4gICdlcy1FUyc6ICdlcycsXHJcbiAgJ2V0LUVFJzogJ2V0JyxcclxuICAnZXUtRVMnOiAnZXUnLFxyXG4gICdld28tQ00nOiAnZXdvJyxcclxuICAnZmEtSVInOiAnZmEnLFxyXG4gICdmZi1MYXRuLVNOJzogJ2ZmLUxhdG4nLFxyXG4gICdmZi1ORyc6ICdmZicsXHJcbiAgJ2ZpLUZJJzogJ2ZpJyxcclxuICAnZmlsLVBIJzogJ2ZpbCcsXHJcbiAgJ2ZvLUZPJzogJ2ZvJyxcclxuICAnZnItMDI5JzogJ2ZyJyxcclxuICAnZnItRlInOiAnZnInLFxyXG4gICdmdXItSVQnOiAnZnVyJyxcclxuICAnZnktTkwnOiAnZnknLFxyXG4gICdnYS1JRSc6ICdnYScsXHJcbiAgJ2dkLUdCJzogJ2dkJyxcclxuICAnZ2wtRVMnOiAnZ2wnLFxyXG4gIGduOiAnZW4nLFxyXG4gICdnbi1QWSc6ICdlbicsXHJcbiAgJ2dzdy1DSCc6ICdnc3cnLFxyXG4gICdndS1JTic6ICdndScsXHJcbiAgJ2d1ei1LRSc6ICdndXonLFxyXG4gICdndi1JTSc6ICdndicsXHJcbiAgJ2hhLUxhdG4nOiAnaGEnLFxyXG4gICdoYS1MYXRuLUdIJzogJ2hhLUdIJyxcclxuICAnaGEtTGF0bi1ORSc6ICdoYS1ORScsXHJcbiAgJ2hhLUxhdG4tTkcnOiAnaGEnLFxyXG4gICdoYXctVVMnOiAnaGF3JyxcclxuICAnaGUtSUwnOiAnaGUnLFxyXG4gICdoaS1JTic6ICdoaScsXHJcbiAgJ2hyLUhSJzogJ2hyJyxcclxuICAnaHNiLURFJzogJ2hzYicsXHJcbiAgJ2h1LUhVJzogJ2h1JyxcclxuICAnaHktQU0nOiAnaHknLFxyXG4gICdpYS0wMDEnOiAnaWEnLFxyXG4gICdpYS1GUic6ICdpYScsXHJcbiAgaWJiOiAnZW4nLFxyXG4gICdpYmItTkcnOiAnZW4nLFxyXG4gICdpZC1JRCc6ICdpZCcsXHJcbiAgJ2lnLU5HJzogJ2lnJyxcclxuICAnaWktQ04nOiAnaWknLFxyXG4gICdpcy1JUyc6ICdpcycsXHJcbiAgJ2l0LUlUJzogJ2l0JyxcclxuICBpdTogJ2VuJyxcclxuICAnaXUtQ2Fucyc6ICdlbicsXHJcbiAgJ2l1LUNhbnMtQ0EnOiAnZW4nLFxyXG4gICdpdS1MYXRuJzogJ2VuJyxcclxuICAnaXUtTGF0bi1DQSc6ICdlbicsXHJcbiAgJ2phLUpQJzogJ2phJyxcclxuICAnamdvLUNNJzogJ2pnbycsXHJcbiAgJ2ptYy1UWic6ICdqbWMnLFxyXG4gICdqdi1KYXZhJzogJ2p2JyxcclxuICAnanYtSmF2YS1JRCc6ICdqdicsXHJcbiAgJ2p2LUxhdG4nOiAnanYnLFxyXG4gICdqdi1MYXRuLUlEJzogJ2p2JyxcclxuICAna2EtR0UnOiAna2EnLFxyXG4gICdrYWItRFonOiAna2FiJyxcclxuICAna2FtLUtFJzogJ2thbScsXHJcbiAgJ2tkZS1UWic6ICdrZGUnLFxyXG4gICdrZWEtQ1YnOiAna2VhJyxcclxuICAna2hxLU1MJzogJ2tocScsXHJcbiAgJ2tpLUtFJzogJ2tpJyxcclxuICAna2stS1onOiAna2snLFxyXG4gICdra2otQ00nOiAna2tqJyxcclxuICAna2wtR0wnOiAna2wnLFxyXG4gICdrbG4tS0UnOiAna2xuJyxcclxuICAna20tS0gnOiAna20nLFxyXG4gICdrbi1JTic6ICdrbicsXHJcbiAgJ2tvLUtSJzogJ2tvJyxcclxuICAna29rLUlOJzogJ2tvaycsXHJcbiAga3I6ICdlbicsXHJcbiAgJ2tyLU5HJzogJ2VuJyxcclxuICAna3MtQXJhYic6ICdrcycsXHJcbiAgJ2tzLUFyYWItSU4nOiAna3MnLFxyXG4gICdrcy1EZXZhJzogJ2tzJyxcclxuICAna3MtRGV2YS1JTic6ICdrcycsXHJcbiAgJ2tzYi1UWic6ICdrc2InLFxyXG4gICdrc2YtQ00nOiAna3NmJyxcclxuICAna3NoLURFJzogJ2tzaCcsXHJcbiAgJ2t1LUFyYWInOiAna3UnLFxyXG4gICdrdS1BcmFiLUlRJzogJ2t1JyxcclxuICAna3UtQXJhYi1JUic6ICdrdScsXHJcbiAgJ2t3LUdCJzogJ2t3JyxcclxuICAna3ktS0cnOiAna3knLFxyXG4gIGxhOiAnZW4nLFxyXG4gICdsYS0wMDEnOiAnZW4nLFxyXG4gICdsYWctVFonOiAnbGFnJyxcclxuICAnbGItTFUnOiAnbGInLFxyXG4gICdsZy1VRyc6ICdsZycsXHJcbiAgJ2xrdC1VUyc6ICdsa3QnLFxyXG4gICdsbi1DRCc6ICdsbicsXHJcbiAgJ2xvLUxBJzogJ2xvJyxcclxuICAnbHJjLUlSJzogJ2xyYycsXHJcbiAgJ2x0LUxUJzogJ2x0JyxcclxuICAnbHUtQ0QnOiAnbHUnLFxyXG4gICdsdW8tS0UnOiAnbHVvJyxcclxuICAnbHV5LUtFJzogJ2x1eScsXHJcbiAgJ2x2LUxWJzogJ2x2JyxcclxuICAnbWFzLUtFJzogJ21hcycsXHJcbiAgJ21lci1LRSc6ICdtZXInLFxyXG4gICdtZmUtTVUnOiAnbWZlJyxcclxuICAnbWctTUcnOiAnbWcnLFxyXG4gICdtZ2gtTVonOiAnbWdoJyxcclxuICAnbWdvLUNNJzogJ21nbycsXHJcbiAgJ21pLU5aJzogJ21pJyxcclxuICAnbWstTUsnOiAnbWsnLFxyXG4gICdtbC1JTic6ICdtbCcsXHJcbiAgJ21uLUN5cmwnOiAnbW4nLFxyXG4gICdtbi1NTic6ICdtbicsXHJcbiAgJ21uLU1vbmcnOiAnbW4nLFxyXG4gICdtbi1Nb25nLUNOJzogJ21uJyxcclxuICAnbW4tTW9uZy1NTic6ICdtbicsXHJcbiAgbW5pOiAnZW4nLFxyXG4gICdtbmktSU4nOiAnZW4nLFxyXG4gIG1vaDogJ2VuJyxcclxuICAnbW9oLUNBJzogJ2VuJyxcclxuICAnbXItSU4nOiAnbXInLFxyXG4gICdtcy1NWSc6ICdtcycsXHJcbiAgJ210LU1UJzogJ210JyxcclxuICAnbXVhLUNNJzogJ211YScsXHJcbiAgJ215LU1NJzogJ215JyxcclxuICAnbXpuLUlSJzogJ216bicsXHJcbiAgJ25hcS1OQSc6ICduYXEnLFxyXG4gICduYi1OTyc6ICduYicsXHJcblxyXG4gICduZC1aVyc6ICduZCcsXHJcbiAgJ25lLU5QJzogJ25lJyxcclxuICAnbmwtTkwnOiAnbmwnLFxyXG4gICdubWctQ00nOiAnbmdtJyxcclxuICAnbm4tTk8nOiAnbm4nLFxyXG4gICdubmgtQ00nOiAnbm5oJyxcclxuICBubzogJ2VuJyxcclxuICBucW86ICdlbicsXHJcbiAgJ25xby1HTic6ICdlbicsXHJcbiAgbnI6ICdlbicsXHJcbiAgJ25yLVpBJzogJ2VuJyxcclxuICBuc286ICdlbicsXHJcbiAgJ25zby1aQSc6ICdlbicsXHJcbiAgJ251cy1TUyc6ICdudXMnLFxyXG4gICdueW4tVUcnOiAnbnluJyxcclxuICBvYzogJ2VuJyxcclxuICAnb2MtRlInOiAnZnInLFxyXG4gICdvbS1FVCc6ICdvbScsXHJcbiAgJ29yLUlOJzogJ29yJyxcclxuICAnb3MtR0UnOiAnb3MnLFxyXG4gICdwYS1BcmFiLVBLJzogJ3BhLUFyYWInLFxyXG4gICdwYS1JTic6ICdwYScsXHJcbiAgcGFwOiAnZW4nLFxyXG4gICdwYXAtMDI5JzogJ2VuJyxcclxuICAncGwtUEwnOiAncGwnLFxyXG4gICdwcmctMDAxJzogJ3ByZycsXHJcbiAgcHJzOiAnZW4nLFxyXG4gICdwcnMtQUYnOiAnZW4nLFxyXG4gICdwcy1BRic6ICdwcycsXHJcbiAgJ3B0LUJSJzogJ3B0JyxcclxuICBxdWM6ICdlbicsXHJcbiAgJ3F1Yy1MYXRuJzogJ2VuJyxcclxuICAncXVjLUxhdG4tR1QnOiAnZW4nLFxyXG4gIHF1ejogJ2VuJyxcclxuICAncXV6LUJPJzogJ2VuJyxcclxuICAncXV6LUVDJzogJ2VuJyxcclxuICAncXV6LVBFJzogJ2VuJyxcclxuICAncm0tQ0gnOiAncm0nLFxyXG4gICdybi1CSSc6ICdybicsXHJcbiAgJ3JvLVJPJzogJ3JvJyxcclxuICAncm9mLVRaJzogJ3JvZicsXHJcbiAgJ3J1LVJVJzogJ3J1JyxcclxuICAncnctUlcnOiAncncnLFxyXG4gICdyd2stVFonOiAncndrJyxcclxuICBzYTogJ2VuJyxcclxuICAnc2EtSU4nOiAnZW4nLFxyXG4gICdzYWgtUlUnOiAnc2FoJyxcclxuICAnc2FxLUtFJzogJ3NhcScsXHJcbiAgJ3NicC1UWic6ICdlbicsXHJcbiAgJ3NkLUFyYWInOiAnc2QnLFxyXG4gICdzZC1BcmFiLVBLJzogJ3NkJyxcclxuICAnc2QtRGV2YSc6ICdzZCcsXHJcbiAgJ3NkLURldmEtSU4nOiAnc2QnLFxyXG4gICdzZS1OTyc6ICdzZScsXHJcbiAgJ3NlaC1NWic6ICdzZWgnLFxyXG4gICdzZXMtTUwnOiAnc2VzJyxcclxuICAnc2ctQ0YnOiAnc2cnLFxyXG4gICdzaGktTGF0bi1NQSc6ICdzaGktTGF0bicsXHJcbiAgJ3NoaS1UZm5nLU1BJzogJ3NoaS1UZm5nJyxcclxuICAnc2ktTEsnOiAnc2knLFxyXG4gICdzay1TSyc6ICdzaycsXHJcbiAgJ3NsLVNJJzogJ3NsJyxcclxuICBzbWE6ICdlbicsXHJcbiAgJ3NtYS1OTyc6ICdlbicsXHJcbiAgJ3NtYS1TRSc6ICdlbicsXHJcbiAgc21qOiAnZW4nLFxyXG4gICdzbWotTk8nOiAnZW4nLFxyXG4gICdzbWotU0UnOiAnZW4nLFxyXG4gICdzbW4tRkknOiAnZW4nLFxyXG4gIHNtczogJ2VuJyxcclxuICAnc21zLUZJJzogJ2VuJyxcclxuICAnc24tTGF0bic6ICdzbicsXHJcbiAgJ3NuLUxhdG4tWlcnOiAnc24nLFxyXG4gICdzby1TTyc6ICdzbycsXHJcbiAgJ3NxLUFMJzogJ3NvJyxcclxuICAnc3ItQ3lybC1SUyc6ICdzci1DcnlsJyxcclxuICAnc3ItTGF0bi1SUyc6ICdzci1MYXRuJyxcclxuICBzczogJ2VuJyxcclxuICAnc3MtU1onOiAnZW4nLFxyXG4gICdzcy1aQSc6ICdlbicsXHJcbiAgc3N5OiAnZW4nLFxyXG4gICdzc3ktRVInOiAnZW4nLFxyXG4gIHN0OiAnZW4nLFxyXG4gICdzdC1MUyc6ICdlbicsXHJcbiAgJ3N0LVpBJzogJ2VuJyxcclxuICAnc3YtU0UnOiAnc3YnLFxyXG4gICdzdy1UWic6ICdzdycsXHJcbiAgc3lyOiAnZW4nLFxyXG4gICdzeXItU1knOiAnZW4nLFxyXG4gICd0YS1JTic6ICd0YScsXHJcbiAgJ3RlLUlOJzogJ3RlJyxcclxuICAndGVvLVVHJzogJ3RlbycsXHJcbiAgJ3RnLUN5cmwnOiAndGcnLFxyXG4gICd0Zy1DeXJsLVRKJzogJ3RnJyxcclxuICAndGgtVEgnOiAndGgnLFxyXG4gICd0aS1FVCc6ICd0aScsXHJcbiAgdGlnOiAnZW4nLFxyXG4gICd0aWctRVInOiAnZW4nLFxyXG4gICd0ay1UTSc6ICd0aycsXHJcbiAgdG46ICdlbicsXHJcbiAgJ3RuLUJXJzogJ2VuJyxcclxuICAndG4tWkEnOiAnZW4nLFxyXG4gICd0by1UTyc6ICd0bycsXHJcbiAgJ3RyLVRSJzogJ3RyJyxcclxuICB0czogJ2VuJyxcclxuICAndHMtWkEnOiAnZW4nLFxyXG4gICd0dC1SVSc6ICd0dCcsXHJcbiAgJ3R3cS1ORSc6ICd0d3EnLFxyXG4gICd0em0tQXJhYic6ICd0em0nLFxyXG4gICd0em0tQXJhYi1NQSc6ICd0em0nLFxyXG4gICd0em0tTGF0bic6ICd0em0nLFxyXG4gICd0em0tTGF0bi1EWic6ICd0em0nLFxyXG4gICd0em0tTGF0bi1NQSc6ICd0em0nLFxyXG4gICd0em0tVGZuZyc6ICd0em0nLFxyXG4gICd0em0tVGZuZy1NQSc6ICd0em0nLFxyXG4gICd1Zy1DTic6ICd1ZycsXHJcbiAgJ3VrLVVBJzogJ3VrJyxcclxuICAndXItUEsnOiAndXInLFxyXG4gICd1ei1BcmFiLUFGJzogJ3V6LUFyYWInLFxyXG4gICd1ei1DeXJsLVVaJzogJ3V6LUN5cmwnLFxyXG4gICd1ei1MYXRuLVVaJzogJ3V6LUxhdG4nLFxyXG4gICd2YWktTGF0bi1MUic6ICd2YWktTGF0bicsXHJcbiAgJ3ZhaS1WYWlpLUxSJzogJ3ZhaS1WYWlpJyxcclxuICB2ZTogJ2VuJyxcclxuICAndmUtWkEnOiAnZW4nLFxyXG4gICd2aS1WTic6ICd2aScsXHJcbiAgJ3ZvLTAwMSc6ICd2bycsXHJcbiAgJ3Z1bi1UWic6ICd2dW4nLFxyXG4gICd3YWUtQ0gnOiAnd2FlJyxcclxuICB3YWw6ICdlbicsXHJcbiAgJ3dhbC1FVCc6ICdlbicsXHJcbiAgJ3dvLVNOJzogJ3dvJyxcclxuICAneGgtWkEnOiAneGgnLFxyXG4gICd4b2ctVUcnOiAneG9nJyxcclxuICAneWF2LUNNJzogJ3lhdicsXHJcbiAgJ3lpLTAwMSc6ICd5aScsXHJcbiAgJ3lvLU5HJzogJ3lvJyxcclxuICAnemdoLVRmbmcnOiAnemdoJyxcclxuICAnemdoLVRmbmctTUEnOiAnemdoJyxcclxuICAnemgtQ04nOiAnemgnLFxyXG4gICd6aC1ISyc6ICd6aCcsXHJcbiAgJ3poLU1PJzogJ3poJyxcclxuICAnemgtU0cnOiAnemgnLFxyXG4gICd6aC1UVyc6ICd6aCcsXHJcbiAgJ3p1LVpBJzogJ3p1JyxcclxufTtcclxuIl19","export const DEFAULT_DYNAMIC_LAYOUTS = new Map([\n [\"application\" /* eLayoutType.application */, \"Theme.ApplicationLayoutComponent\" /* eThemeSharedComponents.ApplicationLayoutComponent */],\n [\"account\" /* eLayoutType.account */, \"Theme.AccountLayoutComponent\" /* eThemeSharedComponents.AccountLayoutComponent */],\n [\"empty\" /* eLayoutType.empty */, \"Theme.EmptyLayoutComponent\" /* eThemeSharedComponents.EmptyLayoutComponent */],\n]);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1sYXlvdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2NvbnN0YW50cy9kZWZhdWx0LWxheW91dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxHQUFHLENBQWlCO0lBQzdELHlJQUE0RTtJQUM1RSx5SEFBb0U7SUFDcEUsaUhBQWdFO0NBQ2pFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZUxheW91dFR5cGUsIGVUaGVtZVNoYXJlZENvbXBvbmVudHN9IGZyb20gXCIuLi9lbnVtc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRFlOQU1JQ19MQVlPVVRTID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1xyXG4gIFtlTGF5b3V0VHlwZS5hcHBsaWNhdGlvbiwgZVRoZW1lU2hhcmVkQ29tcG9uZW50cy5BcHBsaWNhdGlvbkxheW91dENvbXBvbmVudF0sXHJcbiAgW2VMYXlvdXRUeXBlLmFjY291bnQsIGVUaGVtZVNoYXJlZENvbXBvbmVudHMuQWNjb3VudExheW91dENvbXBvbmVudF0sXHJcbiAgW2VMYXlvdXRUeXBlLmVtcHR5LCBlVGhlbWVTaGFyZWRDb21wb25lbnRzLkVtcHR5TGF5b3V0Q29tcG9uZW50XSxcclxuXSk7XHJcbiJdfQ==","import { Directive, ElementRef, Input, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AutofocusDirective {\n constructor() {\n this.elRef = inject(ElementRef);\n this._delay = 0;\n }\n set delay(val) {\n this._delay = Number(val) || 0;\n }\n get delay() {\n return this._delay;\n }\n ngAfterViewInit() {\n setTimeout(() => this.elRef.nativeElement.focus(), this.delay);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AutofocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: AutofocusDirective, isStandalone: true, selector: \"[autofocus]\", inputs: { delay: [\"autofocus\", \"delay\"] }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AutofocusDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[autofocus]',\n }]\n }], propDecorators: { delay: [{\n type: Input,\n args: ['autofocus']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2ZvY3VzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL2F1dG9mb2N1cy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS3BGLE1BQU0sT0FBTyxrQkFBa0I7SUFIL0I7UUFJVSxVQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTNCLFdBQU0sR0FBRyxDQUFDLENBQUM7S0FjcEI7SUFaQyxJQUNJLEtBQUssQ0FBQyxHQUFnQztRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsZUFBZTtRQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBZSxDQUFDLENBQUM7SUFDM0UsQ0FBQzs4R0FoQlUsa0JBQWtCO2tHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCOzhCQU9LLEtBQUs7c0JBRFIsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thdXRvZm9jdXNdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dG9mb2N1c0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIHByaXZhdGUgZWxSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XHJcblxyXG4gIHByaXZhdGUgX2RlbGF5ID0gMDtcclxuXHJcbiAgQElucHV0KCdhdXRvZm9jdXMnKVxyXG4gIHNldCBkZWxheSh2YWw6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fZGVsYXkgPSBOdW1iZXIodmFsKSB8fCAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlbGF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGF5O1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgdGhpcy5kZWxheSBhcyBudW1iZXIpO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Directive, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { SubscriptionService } from '../services/subscription.service';\nimport * as i0 from \"@angular/core\";\nexport class InputEventDebounceDirective {\n constructor() {\n this.el = inject(ElementRef);\n this.subscription = inject(SubscriptionService);\n this.debounce = 300;\n this.debounceEvent = new EventEmitter();\n }\n ngOnInit() {\n const input$ = fromEvent(this.el.nativeElement, 'input').pipe(debounceTime(this.debounce));\n this.subscription.addOne(input$, (event) => {\n this.debounceEvent.emit(event);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: InputEventDebounceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: InputEventDebounceDirective, isStandalone: true, selector: \"[input.debounce]\", inputs: { debounce: \"debounce\" }, outputs: { debounceEvent: \"input.debounce\" }, providers: [SubscriptionService], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: InputEventDebounceDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[input.debounce]',\n providers: [SubscriptionService],\n }]\n }], propDecorators: { debounce: [{\n type: Input\n }], debounceEvent: [{\n type: Output,\n args: ['input.debounce']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvZGVib3VuY2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFNdkUsTUFBTSxPQUFPLDJCQUEyQjtJQUp4QztRQUtVLE9BQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIsaUJBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUxQyxhQUFRLEdBQUcsR0FBRyxDQUFDO1FBRVcsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0tBVzlFO0lBVEMsUUFBUTtRQUNOLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBYSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3ZFLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQzVCLENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBaEJVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLCtJQUYzQixDQUFDLG1CQUFtQixDQUFDOzsyRkFFckIsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFNBQVMsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUNqQzs4QkFLVSxRQUFRO3NCQUFoQixLQUFLO2dCQUU2QixhQUFhO3NCQUEvQyxNQUFNO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3Vic2NyaXB0aW9uLnNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbaW5wdXQuZGVib3VuY2VdJyxcclxuICBwcm92aWRlcnM6IFtTdWJzY3JpcHRpb25TZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0RXZlbnREZWJvdW5jZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBlbCA9IGluamVjdChFbGVtZW50UmVmKTtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IGluamVjdChTdWJzY3JpcHRpb25TZXJ2aWNlKTtcclxuXHJcbiAgQElucHV0KCkgZGVib3VuY2UgPSAzMDA7XHJcblxyXG4gIEBPdXRwdXQoJ2lucHV0LmRlYm91bmNlJykgcmVhZG9ubHkgZGVib3VuY2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQkID0gZnJvbUV2ZW50PElucHV0RXZlbnQ+KHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2lucHV0JykucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2UpLFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGRPbmUoaW5wdXQkLCAoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMuZGVib3VuY2VFdmVudC5lbWl0KGV2ZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Directive, Input, IterableDiffers, TemplateRef, ViewContainerRef, inject } from '@angular/core';\nimport clone from 'just-clone';\nimport compare from 'just-compare';\nimport * as i0 from \"@angular/core\";\nclass AbpForContext {\n constructor($implicit, index, count, list) {\n this.$implicit = $implicit;\n this.index = index;\n this.count = count;\n this.list = list;\n }\n}\nclass RecordView {\n constructor(record, view) {\n this.record = record;\n this.view = view;\n }\n}\nexport class ForDirective {\n constructor() {\n this.tempRef = inject(TemplateRef);\n this.vcRef = inject(ViewContainerRef);\n this.differs = inject(IterableDiffers);\n }\n get compareFn() {\n return this.compareBy || compare;\n }\n get trackByFn() {\n return this.trackBy || ((index, item) => item.id || index);\n }\n iterateOverAppliedOperations(changes) {\n const rw = [];\n changes.forEachOperation((record, previousIndex, currentIndex) => {\n if (record.previousIndex == null) {\n const view = this.vcRef.createEmbeddedView(this.tempRef, new AbpForContext(null, -1, -1, this.items), currentIndex || 0);\n rw.push(new RecordView(record, view));\n }\n else if (currentIndex == null && previousIndex !== null) {\n this.vcRef.remove(previousIndex);\n }\n else {\n if (previousIndex !== null) {\n const view = this.vcRef.get(previousIndex);\n if (view && currentIndex !== null) {\n this.vcRef.move(view, currentIndex);\n rw.push(new RecordView(record, view));\n }\n }\n }\n });\n for (let i = 0, l = rw.length; i < l; i++) {\n rw[i].view.context.$implicit = rw[i].record.item;\n }\n }\n iterateOverAttachedViews(changes) {\n for (let i = 0, l = this.vcRef.length; i < l; i++) {\n const viewRef = this.vcRef.get(i);\n viewRef.context.index = i;\n viewRef.context.count = l;\n viewRef.context.list = this.items;\n }\n changes.forEachIdentityChange((record) => {\n if (record.currentIndex !== null) {\n const viewRef = this.vcRef.get(record.currentIndex);\n viewRef.context.$implicit = record.item;\n }\n });\n }\n projectItems(items) {\n if (!items.length && this.emptyRef) {\n this.vcRef.clear();\n this.vcRef.createEmbeddedView(this.emptyRef).rootNodes;\n this.isShowEmptyRef = true;\n this.differ = null;\n return;\n }\n if (this.emptyRef && this.isShowEmptyRef) {\n this.vcRef.clear();\n this.isShowEmptyRef = false;\n }\n if (!this.differ && items) {\n this.differ = this.differs.find(items).create(this.trackByFn);\n }\n if (this.differ) {\n const changes = this.differ.diff(items);\n if (changes) {\n this.iterateOverAppliedOperations(changes);\n this.iterateOverAttachedViews(changes);\n }\n }\n }\n sortItems(items) {\n const orderBy = this.orderBy;\n if (orderBy) {\n items.sort((a, b) => (a[orderBy] > b[orderBy] ? 1 : a[orderBy] < b[orderBy] ? -1 : 0));\n }\n else {\n items.sort();\n }\n }\n ngOnChanges() {\n let items = clone(this.items);\n if (!Array.isArray(items))\n return;\n const compareFn = this.compareFn;\n const filterBy = this.filterBy;\n if (typeof filterBy !== 'undefined' &&\n typeof this.filterVal !== 'undefined' &&\n this.filterVal !== '') {\n items = items.filter(item => compareFn(item[filterBy], this.filterVal));\n }\n switch (this.orderDir) {\n case 'ASC':\n this.sortItems(items);\n this.projectItems(items);\n break;\n case 'DESC':\n this.sortItems(items);\n items.reverse();\n this.projectItems(items);\n break;\n default:\n this.projectItems(items);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ForDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: ForDirective, isStandalone: true, selector: \"[abpFor]\", inputs: { items: [\"abpForOf\", \"items\"], orderBy: [\"abpForOrderBy\", \"orderBy\"], orderDir: [\"abpForOrderDir\", \"orderDir\"], filterBy: [\"abpForFilterBy\", \"filterBy\"], filterVal: [\"abpForFilterVal\", \"filterVal\"], trackBy: [\"abpForTrackBy\", \"trackBy\"], compareBy: [\"abpForCompareBy\", \"compareBy\"], emptyRef: [\"abpForEmptyRef\", \"emptyRef\"] }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ForDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[abpFor]',\n }]\n }], propDecorators: { items: [{\n type: Input,\n args: ['abpForOf']\n }], orderBy: [{\n type: Input,\n args: ['abpForOrderBy']\n }], orderDir: [{\n type: Input,\n args: ['abpForOrderDir']\n }], filterBy: [{\n type: Input,\n args: ['abpForFilterBy']\n }], filterVal: [{\n type: Input,\n args: ['abpForFilterVal']\n }], trackBy: [{\n type: Input,\n args: ['abpForTrackBy']\n }], compareBy: [{\n type: Input,\n args: ['abpForCompareBy']\n }], emptyRef: [{\n type: Input,\n args: ['abpForEmptyRef']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL2Zvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsZUFBZSxFQUVmLFdBQVcsRUFFWCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7O0FBSW5DLE1BQU0sYUFBYTtJQUNqQixZQUNTLFNBQWMsRUFDZCxLQUFhLEVBQ2IsS0FBYSxFQUNiLElBQVc7UUFIWCxjQUFTLEdBQVQsU0FBUyxDQUFLO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFPO0lBQ2pCLENBQUM7Q0FDTDtBQUVELE1BQU0sVUFBVTtJQUNkLFlBQ1MsTUFBaUMsRUFDakMsSUFBb0M7UUFEcEMsV0FBTSxHQUFOLE1BQU0sQ0FBMkI7UUFDakMsU0FBSSxHQUFKLElBQUksQ0FBZ0M7SUFDMUMsQ0FBQztDQUNMO0FBS0QsTUFBTSxPQUFPLFlBQVk7SUFIekI7UUFJVSxZQUFPLEdBQUcsTUFBTSxDQUE2QixXQUFXLENBQUMsQ0FBQztRQUMxRCxVQUFLLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDakMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQStKM0M7SUFoSUMsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxLQUFhLEVBQUUsSUFB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QVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekIsTUFBTTtZQUVSLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLE1BQU07WUFFUjtnQkFDRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDOzhHQWpLVSxZQUFZO2tHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBSHhCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFVBQVU7aUJBQ3JCOzhCQVFDLEtBQUs7c0JBREosS0FBSzt1QkFBQyxVQUFVO2dCQUlqQixPQUFPO3NCQUROLEtBQUs7dUJBQUMsZUFBZTtnQkFJdEIsUUFBUTtzQkFEUCxLQUFLO3VCQUFDLGdCQUFnQjtnQkFJdkIsUUFBUTtzQkFEUCxLQUFLO3VCQUFDLGdCQUFnQjtnQkFJdkIsU0FBUztzQkFEUixLQUFLO3VCQUFDLGlCQUFpQjtnQkFJeEIsT0FBTztzQkFETixLQUFLO3VCQUFDLGVBQWU7Z0JBSXRCLFNBQVM7c0JBRFIsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBSXhCLFFBQVE7c0JBRFAsS0FBSzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBcclxuICBEaXJlY3RpdmUsIFxyXG4gIEVtYmVkZGVkVmlld1JlZiwgXHJcbiAgSW5wdXQsIFxyXG4gIEl0ZXJhYmxlQ2hhbmdlUmVjb3JkLCBcclxuICBJdGVyYWJsZUNoYW5nZXMsIFxyXG4gIEl0ZXJhYmxlRGlmZmVyLCBcclxuICBJdGVyYWJsZURpZmZlcnMsIFxyXG4gIE9uQ2hhbmdlcywgXHJcbiAgVGVtcGxhdGVSZWYsIFxyXG4gIFRyYWNrQnlGdW5jdGlvbiwgXHJcbiAgVmlld0NvbnRhaW5lclJlZiwgXHJcbiAgaW5qZWN0IFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgY2xvbmUgZnJvbSAnanVzdC1jbG9uZSc7XHJcbmltcG9ydCBjb21wYXJlIGZyb20gJ2p1c3QtY29tcGFyZSc7XHJcblxyXG5leHBvcnQgdHlwZSBDb21wYXJlRm48VCA9IGFueT4gPSAodmFsdWU6IFQsIGNvbXBhcmlzb246IFQpID0+IGJvb2xlYW47XHJcblxyXG5jbGFzcyBBYnBGb3JDb250ZXh0IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyAkaW1wbGljaXQ6IGFueSxcclxuICAgIHB1YmxpYyBpbmRleDogbnVtYmVyLFxyXG4gICAgcHVibGljIGNvdW50OiBudW1iZXIsXHJcbiAgICBwdWJsaWMgbGlzdDogYW55W10sXHJcbiAgKSB7fVxyXG59XHJcblxyXG5jbGFzcyBSZWNvcmRWaWV3IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPGFueT4sXHJcbiAgICBwdWJsaWMgdmlldzogRW1iZWRkZWRWaWV3UmVmPEFicEZvckNvbnRleHQ+LFxyXG4gICkge31cclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYWJwRm9yXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIHByaXZhdGUgdGVtcFJlZiA9IGluamVjdDxUZW1wbGF0ZVJlZjxBYnBGb3JDb250ZXh0Pj4oVGVtcGxhdGVSZWYpO1xyXG4gIHByaXZhdGUgdmNSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XHJcbiAgcHJpdmF0ZSBkaWZmZXJzID0gaW5qZWN0KEl0ZXJhYmxlRGlmZmVycyk7XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdhYnBGb3JPZicpXHJcbiAgaXRlbXMhOiBhbnlbXTtcclxuXHJcbiAgQElucHV0KCdhYnBGb3JPcmRlckJ5JylcclxuICBvcmRlckJ5Pzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoJ2FicEZvck9yZGVyRGlyJylcclxuICBvcmRlckRpcj86ICdBU0MnIHwgJ0RFU0MnO1xyXG5cclxuICBASW5wdXQoJ2FicEZvckZpbHRlckJ5JylcclxuICBmaWx0ZXJCeT86IHN0cmluZztcclxuXHJcbiAgQElucHV0KCdhYnBGb3JGaWx0ZXJWYWwnKVxyXG4gIGZpbHRlclZhbDogYW55O1xyXG5cclxuICBASW5wdXQoJ2FicEZvclRyYWNrQnknKVxyXG4gIHRyYWNrQnk/OiBUcmFja0J5RnVuY3Rpb248YW55PjtcclxuXHJcbiAgQElucHV0KCdhYnBGb3JDb21wYXJlQnknKVxyXG4gIGNvbXBhcmVCeT86IENvbXBhcmVGbjtcclxuXHJcbiAgQElucHV0KCdhYnBGb3JFbXB0eVJlZicpXHJcbiAgZW1wdHlSZWY/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBwcml2YXRlIGRpZmZlciE6IEl0ZXJhYmxlRGlmZmVyPGFueT4gfCBudWxsO1xyXG5cclxuICBwcml2YXRlIGlzU2hvd0VtcHR5UmVmITogYm9vbGVhbjtcclxuXHJcbiAgZ2V0IGNvbXBhcmVGbigpOiBDb21wYXJlRm4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcGFyZUJ5IHx8IGNvbXBhcmU7XHJcbiAgfVxyXG5cclxuICBnZXQgdHJhY2tCeUZuKCk6IFRyYWNrQnlGdW5jdGlvbjxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnRyYWNrQnkgfHwgKChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpID0+IChpdGVtIGFzIGFueSkuaWQgfHwgaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpdGVyYXRlT3ZlckFwcGxpZWRPcGVyYXRpb25zKGNoYW5nZXM6IEl0ZXJhYmxlQ2hhbmdlczxhbnk+KSB7XHJcbiAgICBjb25zdCBydzogUmVjb3JkVmlld1tdID0gW107XHJcblxyXG4gICAgY2hhbmdlcy5mb3JFYWNoT3BlcmF0aW9uKFxyXG4gICAgICAoXHJcbiAgICAgICAgcmVjb3JkOiBJdGVyYWJsZUNoYW5nZVJlY29yZDxhbnk+LFxyXG4gICAgICAgIHByZXZpb3VzSW5kZXg6IG51bWJlciB8IG51bGwsXHJcbiAgICAgICAgY3VycmVudEluZGV4OiBudW1iZXIgfCBudWxsLFxyXG4gICAgICApID0+IHtcclxuICAgICAgICBpZiAocmVjb3JkLnByZXZpb3VzSW5kZXggPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMudmNSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KFxyXG4gICAgICAgICAgICB0aGlzLnRlbXBSZWYsXHJcbiAgICAgICAgICAgIG5ldyBBYnBGb3JDb250ZXh0KG51bGwsIC0xLCAtMSwgdGhpcy5pdGVtcyksXHJcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleCB8fCAwLFxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICBydy5wdXNoKG5ldyBSZWNvcmRWaWV3KHJlY29yZCwgdmlldykpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEluZGV4ID09IG51bGwgJiYgcHJldmlvdXNJbmRleCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy52Y1JlZi5yZW1vdmUocHJldmlvdXNJbmRleCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChwcmV2aW91c0luZGV4ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLnZjUmVmLmdldChwcmV2aW91c0luZGV4KTtcclxuICAgICAgICAgICAgaWYgKHZpZXcgJiYgY3VycmVudEluZGV4ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy52Y1JlZi5tb3ZlKHZpZXcsIGN1cnJlbnRJbmRleCk7XHJcbiAgICAgICAgICAgICAgcncucHVzaChuZXcgUmVjb3JkVmlldyhyZWNvcmQsIHZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPEFicEZvckNvbnRleHQ+KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gcncubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgIHJ3W2ldLnZpZXcuY29udGV4dC4kaW1wbGljaXQgPSByd1tpXS5yZWNvcmQuaXRlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXRlcmF0ZU92ZXJBdHRhY2hlZFZpZXdzKGNoYW5nZXM6IEl0ZXJhYmxlQ2hhbmdlczxhbnk+KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IHRoaXMudmNSZWYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHZpZXdSZWYgPSB0aGlzLnZjUmVmLmdldChpKSBhcyBFbWJlZGRlZFZpZXdSZWY8QWJwRm9yQ29udGV4dD47XHJcbiAgICAgIHZpZXdSZWYuY29udGV4dC5pbmRleCA9IGk7XHJcbiAgICAgIHZpZXdSZWYuY29udGV4dC5jb3VudCA9IGw7XHJcbiAgICAgIHZpZXdSZWYuY29udGV4dC5saXN0ID0gdGhpcy5pdGVtcztcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VzLmZvckVhY2hJZGVudGl0eUNoYW5nZSgocmVjb3JkOiBJdGVyYWJsZUNoYW5nZVJlY29yZDxhbnk+KSA9PiB7XHJcbiAgICAgIGlmIChyZWNvcmQuY3VycmVudEluZGV4ICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29uc3Qgdmlld1JlZiA9IHRoaXMudmNSZWYuZ2V0KHJlY29yZC5jdXJyZW50SW5kZXgpIGFzIEVtYmVkZGVkVmlld1JlZjxBYnBGb3JDb250ZXh0PjtcclxuICAgICAgICB2aWV3UmVmLmNvbnRleHQuJGltcGxpY2l0ID0gcmVjb3JkLml0ZW07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9qZWN0SXRlbXMoaXRlbXM6IGFueVtdKTogdm9pZCB7XHJcbiAgICBpZiAoIWl0ZW1zLmxlbmd0aCAmJiB0aGlzLmVtcHR5UmVmKSB7XHJcbiAgICAgIHRoaXMudmNSZWYuY2xlYXIoKTtcclxuICAgICAgdGhpcy52Y1JlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5lbXB0eVJlZikucm9vdE5vZGVzO1xyXG4gICAgICB0aGlzLmlzU2hvd0VtcHR5UmVmID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaWZmZXIgPSBudWxsO1xyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmVtcHR5UmVmICYmIHRoaXMuaXNTaG93RW1wdHlSZWYpIHtcclxuICAgICAgdGhpcy52Y1JlZi5jbGVhcigpO1xyXG4gICAgICB0aGlzLmlzU2hvd0VtcHR5UmVmID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmRpZmZlciAmJiBpdGVtcykge1xyXG4gICAgICB0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKGl0ZW1zKS5jcmVhdGUodGhpcy50cmFja0J5Rm4pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRpZmZlcikge1xyXG4gICAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5kaWZmZXIuZGlmZihpdGVtcyk7XHJcblxyXG4gICAgICBpZiAoY2hhbmdlcykge1xyXG4gICAgICAgIHRoaXMuaXRlcmF0ZU92ZXJBcHBsaWVkT3BlcmF0aW9ucyhjaGFuZ2VzKTtcclxuICAgICAgICB0aGlzLml0ZXJhdGVPdmVyQXR0YWNoZWRWaWV3cyhjaGFuZ2VzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzb3J0SXRlbXMoaXRlbXM6IGFueVtdKSB7XHJcbiAgICBjb25zdCBvcmRlckJ5ID0gdGhpcy5vcmRlckJ5O1xyXG4gICAgaWYgKG9yZGVyQnkpIHtcclxuICAgICAgaXRlbXMuc29ydCgoYSwgYikgPT4gKGFbb3JkZXJCeV0gPiBiW29yZGVyQnldID8gMSA6IGFbb3JkZXJCeV0gPCBiW29yZGVyQnldID8gLTEgOiAwKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtcy5zb3J0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIGxldCBpdGVtcyA9IGNsb25lKHRoaXMuaXRlbXMpIGFzIGFueVtdO1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW1zKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvbXBhcmVGbiA9IHRoaXMuY29tcGFyZUZuO1xyXG4gICAgY29uc3QgZmlsdGVyQnkgPSB0aGlzLmZpbHRlckJ5O1xyXG4gICAgaWYgKFxyXG4gICAgICB0eXBlb2YgZmlsdGVyQnkgIT09ICd1bmRlZmluZWQnICYmXHJcbiAgICAgIHR5cGVvZiB0aGlzLmZpbHRlclZhbCAhPT0gJ3VuZGVmaW5lZCcgJiZcclxuICAgICAgdGhpcy5maWx0ZXJWYWwgIT09ICcnXHJcbiAgICApIHtcclxuICAgICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIoaXRlbSA9PiBjb21wYXJlRm4oaXRlbVtmaWx0ZXJCeV0sIHRoaXMuZmlsdGVyVmFsKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLm9yZGVyRGlyKSB7XHJcbiAgICAgIGNhc2UgJ0FTQyc6XHJcbiAgICAgICAgdGhpcy5zb3J0SXRlbXMoaXRlbXMpO1xyXG4gICAgICAgIHRoaXMucHJvamVjdEl0ZW1zKGl0ZW1zKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ0RFU0MnOlxyXG4gICAgICAgIHRoaXMuc29ydEl0ZW1zKGl0ZW1zKTtcclxuICAgICAgICBpdGVtcy5yZXZlcnNlKCk7XHJcbiAgICAgICAgdGhpcy5wcm9qZWN0SXRlbXMoaXRlbXMpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLnByb2plY3RJdGVtcyhpdGVtcyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { ChangeDetectorRef, Directive, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { FormGroupDirective } from '@angular/forms';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\nimport { SubscriptionService } from '../services/subscription.service';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated FormSubmitDirective will be removed in V7.0.0. Use `ngSubmit` instead.\n */\nexport class FormSubmitDirective {\n constructor() {\n this.formGroupDirective = inject(FormGroupDirective, { self: true });\n this.host = inject(ElementRef);\n this.cdRef = inject(ChangeDetectorRef);\n this.subscription = inject(SubscriptionService);\n this.debounce = 200;\n this.markAsDirtyWhenSubmit = true;\n this.ngSubmit = new EventEmitter();\n this.executedNgSubmit = false;\n }\n ngOnInit() {\n this.subscription.addOne(this.formGroupDirective.ngSubmit, () => {\n if (this.markAsDirtyWhenSubmit) {\n this.markAsDirty();\n }\n this.executedNgSubmit = true;\n });\n const keyup$ = fromEvent(this.host.nativeElement, 'keyup').pipe(debounceTime(this.debounce), filter(event => !(event.target instanceof HTMLTextAreaElement)), filter(event => event && event.key === 'Enter'));\n this.subscription.addOne(keyup$, () => {\n if (!this.executedNgSubmit) {\n this.host.nativeElement.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }));\n }\n this.executedNgSubmit = false;\n });\n }\n markAsDirty() {\n const { form } = this.formGroupDirective;\n setDirty(form.controls);\n form.markAsDirty();\n this.cdRef.detectChanges();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: FormSubmitDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: FormSubmitDirective, isStandalone: true, selector: \"form[ngSubmit][formGroup]\", inputs: { debounce: \"debounce\", notValidateOnSubmit: \"notValidateOnSubmit\", markAsDirtyWhenSubmit: \"markAsDirtyWhenSubmit\" }, outputs: { ngSubmit: \"ngSubmit\" }, providers: [SubscriptionService], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: FormSubmitDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'form[ngSubmit][formGroup]',\n providers: [SubscriptionService],\n }]\n }], propDecorators: { debounce: [{\n type: Input\n }], notValidateOnSubmit: [{\n type: Input\n }], markAsDirtyWhenSubmit: [{\n type: Input\n }], ngSubmit: [{\n type: Output\n }] } });\nfunction setDirty(controls) {\n if (Array.isArray(controls)) {\n controls.forEach(group => {\n setDirty(group.controls);\n });\n return;\n }\n Object.keys(controls).forEach(key => {\n controls[key].markAsDirty();\n controls[key].updateValueAndValidity();\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdWJtaXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvZm9ybS1zdWJtaXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUF3QyxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFHdkU7O0dBRUc7QUFLSCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBS1UsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEUsU0FBSSxHQUFHLE1BQU0sQ0FBOEIsVUFBVSxDQUFDLENBQUM7UUFDdkQsVUFBSyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2xDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFHbkQsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQU9mLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQUVWLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWpELHFCQUFnQixHQUFHLEtBQUssQ0FBQztLQW9DMUI7SUFsQ0MsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1lBQzlELElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixDQUFDO1lBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUE0QixFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDM0YsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDM0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLFlBQVksbUJBQW1CLENBQUMsQ0FBQyxFQUMvRCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FDaEQsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQ25DLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQ3pELENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUV6QyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQWlELENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDOzhHQXJEVSxtQkFBbUI7a0dBQW5CLG1CQUFtQix5T0FGbkIsQ0FBQyxtQkFBbUIsQ0FBQzs7MkZBRXJCLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDakM7OEJBUUMsUUFBUTtzQkFEUCxLQUFLO2dCQUtOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFJTixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBR2EsUUFBUTtzQkFBMUIsTUFBTTs7QUF3Q1QsU0FBUyxRQUFRLENBQUMsUUFBa0I7SUFDbEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDNUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QixRQUFRLENBQUMsS0FBSyxDQUFDLFFBQWlELENBQUMsQ0FBQztRQUNwRSxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDbEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVCLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFxyXG4gIENoYW5nZURldGVjdG9yUmVmLCBcclxuICBEaXJlY3RpdmUsIFxyXG4gIEVsZW1lbnRSZWYsIFxyXG4gIEV2ZW50RW1pdHRlciwgXHJcbiAgSW5wdXQsIFxyXG4gIE9uSW5pdCwgXHJcbiAgT3V0cHV0LCBcclxuICBpbmplY3QgXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cERpcmVjdGl2ZSwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zdWJzY3JpcHRpb24uc2VydmljZSc7XHJcblxyXG50eXBlIENvbnRyb2xzID0geyBba2V5OiBzdHJpbmddOiBVbnR5cGVkRm9ybUNvbnRyb2wgfSB8IFVudHlwZWRGb3JtR3JvdXBbXTtcclxuLyoqXHJcbiAqIEBkZXByZWNhdGVkIEZvcm1TdWJtaXREaXJlY3RpdmUgd2lsbCBiZSByZW1vdmVkIGluIFY3LjAuMC4gVXNlIGBuZ1N1Ym1pdGAgaW5zdGVhZC5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnZm9ybVtuZ1N1Ym1pdF1bZm9ybUdyb3VwXScsXHJcbiAgcHJvdmlkZXJzOiBbU3Vic2NyaXB0aW9uU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtU3VibWl0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIGZvcm1Hcm91cERpcmVjdGl2ZSA9IGluamVjdChGb3JtR3JvdXBEaXJlY3RpdmUsIHsgc2VsZjogdHJ1ZSB9KTtcclxuICBwcml2YXRlIGhvc3QgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRm9ybUVsZW1lbnQ+PihFbGVtZW50UmVmKTtcclxuICBwcml2YXRlIGNkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IGluamVjdChTdWJzY3JpcHRpb25TZXJ2aWNlKTtcclxuXHJcbiAgQElucHV0KClcclxuICBkZWJvdW5jZSA9IDIwMDtcclxuXHJcbiAgLy8gVE9ETzogUmVtb3ZlIHVudXNlZCBpbnB1dFxyXG4gIEBJbnB1dCgpXHJcbiAgbm90VmFsaWRhdGVPblN1Ym1pdD86IHN0cmluZyB8IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbWFya0FzRGlydHlXaGVuU3VibWl0ID0gdHJ1ZTtcclxuXHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IG5nU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBleGVjdXRlZE5nU3VibWl0ID0gZmFsc2U7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkT25lKHRoaXMuZm9ybUdyb3VwRGlyZWN0aXZlLm5nU3VibWl0LCAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm1hcmtBc0RpcnR5V2hlblN1Ym1pdCkge1xyXG4gICAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5leGVjdXRlZE5nU3VibWl0ID0gdHJ1ZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGtleXVwJCA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0aGlzLmhvc3QubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCwgJ2tleXVwJykucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2UpLFxyXG4gICAgICBmaWx0ZXIoZXZlbnQgPT4gIShldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSksXHJcbiAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCAmJiBldmVudC5rZXkgPT09ICdFbnRlcicpLFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGRPbmUoa2V5dXAkLCAoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5leGVjdXRlZE5nU3VibWl0KSB7XHJcbiAgICAgICAgdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChcclxuICAgICAgICAgIG5ldyBFdmVudCgnc3VibWl0JywgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZXhlY3V0ZWROZ1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBtYXJrQXNEaXJ0eSgpIHtcclxuICAgIGNvbnN0IHsgZm9ybSB9ID0gdGhpcy5mb3JtR3JvdXBEaXJlY3RpdmU7XHJcblxyXG4gICAgc2V0RGlydHkoZm9ybS5jb250cm9scyBhcyB7IFtrZXk6IHN0cmluZ106IFVudHlwZWRGb3JtQ29udHJvbCB9KTtcclxuICAgIGZvcm0ubWFya0FzRGlydHkoKTtcclxuXHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldERpcnR5KGNvbnRyb2xzOiBDb250cm9scykge1xyXG4gIGlmIChBcnJheS5pc0FycmF5KGNvbnRyb2xzKSkge1xyXG4gICAgY29udHJvbHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIHNldERpcnR5KGdyb3VwLmNvbnRyb2xzIGFzIHsgW2tleTogc3RyaW5nXTogVW50eXBlZEZvcm1Db250cm9sIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBPYmplY3Qua2V5cyhjb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgY29udHJvbHNba2V5XS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgY29udHJvbHNba2V5XS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfSk7XHJcbn1cclxuIl19","import { Directive, Output, EventEmitter, ElementRef, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class InitDirective {\n constructor() {\n this.elRef = inject(ElementRef);\n this.init = new EventEmitter();\n }\n ngAfterViewInit() {\n this.init.emit(this.elRef);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: InitDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: InitDirective, isStandalone: true, selector: \"[abpInit]\", outputs: { init: \"abpInit\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: InitDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[abpInit]',\n }]\n }], propDecorators: { init: [{\n type: Output,\n args: ['abpInit']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9pbml0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS25HLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSVUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVQLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztLQUt4RTtJQUhDLGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs4R0FQVSxhQUFhO2tHQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBSHpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7aUJBQ3RCOzhCQUk2QixJQUFJO3NCQUEvQixNQUFNO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FicEluaXRdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEluaXREaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBwcml2YXRlIGVsUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG5cclxuICBAT3V0cHV0KCdhYnBJbml0JykgcmVhZG9ubHkgaW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8RWxlbWVudFJlZjxhbnk+PigpO1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmluaXQuZW1pdCh0aGlzLmVsUmVmKTtcclxuICB9XHJcbn1cclxuIl19","import { ChangeDetectorRef, Directive, Input, TemplateRef, ViewContainerRef, inject } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { distinctUntilChanged, take } from 'rxjs/operators';\nimport { PermissionService } from '../services/permission.service';\nimport { QUEUE_MANAGER } from '../tokens/queue.token';\nimport * as i0 from \"@angular/core\";\nexport class PermissionDirective {\n constructor() {\n this.templateRef = inject(TemplateRef, { optional: true });\n this.vcRef = inject(ViewContainerRef);\n this.permissionService = inject(PermissionService);\n this.cdRef = inject(ChangeDetectorRef);\n this.queue = inject(QUEUE_MANAGER);\n this.runChangeDetection = true;\n this.cdrSubject = new ReplaySubject();\n this.rendered = false;\n }\n check() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n this.subscription = this.permissionService\n .getGrantedPolicy$(this.condition || '')\n .pipe(distinctUntilChanged())\n .subscribe(isGranted => {\n this.vcRef.clear();\n if (isGranted)\n this.vcRef.createEmbeddedView(this.templateRef);\n if (this.runChangeDetection) {\n if (!this.rendered) {\n this.cdrSubject.next();\n }\n else {\n this.cdRef.detectChanges();\n }\n }\n else {\n this.cdRef.markForCheck();\n }\n });\n }\n ngOnDestroy() {\n if (this.subscription)\n this.subscription.unsubscribe();\n }\n ngOnChanges() {\n this.check();\n }\n ngAfterViewInit() {\n this.cdrSubject.pipe(take(1)).subscribe(() => this.queue.add(() => this.cdRef.detectChanges()));\n this.rendered = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: PermissionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: PermissionDirective, isStandalone: true, selector: \"[abpPermission]\", inputs: { condition: [\"abpPermission\", \"condition\"], runChangeDetection: [\"abpPermissionRunChangeDetection\", \"runChangeDetection\"] }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: PermissionDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[abpPermission]',\n }]\n }], propDecorators: { condition: [{\n type: Input,\n args: ['abpPermission']\n }], runChangeDetection: [{\n type: Input,\n args: ['abpPermissionRunChangeDetection']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9wZXJtaXNzaW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBR0wsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNdEQsTUFBTSxPQUFPLG1CQUFtQjtJQUhoQztRQUlVLGdCQUFXLEdBQUcsTUFBTSxDQUFtQixXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUUsQ0FBQztRQUN6RSxVQUFLLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDakMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzFDLFVBQUssR0FBRyxNQUFNLENBQWUsYUFBYSxDQUFDLENBQUM7UUFJRix1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFJcEUsZUFBVSxHQUFHLElBQUksYUFBYSxFQUFRLENBQUM7UUFFdkMsYUFBUSxHQUFHLEtBQUssQ0FBQztLQXFDbEI7SUFuQ1MsS0FBSztRQUNYLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQjthQUN2QyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQzthQUN2QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM1QixTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixJQUFJLFNBQVM7Z0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzdCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFlBQVk7WUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQzs4R0FuRFUsbUJBQW1CO2tHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7OEJBUXlCLFNBQVM7c0JBQWhDLEtBQUs7dUJBQUMsZUFBZTtnQkFFb0Isa0JBQWtCO3NCQUEzRCxLQUFLO3VCQUFDLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFxyXG4gIEFmdGVyVmlld0luaXQsIFxyXG4gIENoYW5nZURldGVjdG9yUmVmLCBcclxuICBEaXJlY3RpdmUsIFxyXG4gIElucHV0LCBcclxuICBPbkNoYW5nZXMsIFxyXG4gIE9uRGVzdHJveSwgXHJcbiAgVGVtcGxhdGVSZWYsIFxyXG4gIFZpZXdDb250YWluZXJSZWYsIFxyXG4gIGluamVjdCBcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Blcm1pc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFFVRVVFX01BTkFHRVIgfSBmcm9tICcuLi90b2tlbnMvcXVldWUudG9rZW4nO1xyXG5pbXBvcnQgeyBRdWV1ZU1hbmFnZXIgfSBmcm9tICcuLi91dGlscy9xdWV1ZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thYnBQZXJtaXNzaW9uXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIHByaXZhdGUgdGVtcGxhdGVSZWYgPSBpbmplY3Q8VGVtcGxhdGVSZWY8YW55Pj4oVGVtcGxhdGVSZWYsIHsgb3B0aW9uYWw6IHRydWUgfSkhO1xyXG4gIHByaXZhdGUgdmNSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XHJcbiAgcHJpdmF0ZSBwZXJtaXNzaW9uU2VydmljZSA9IGluamVjdChQZXJtaXNzaW9uU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBjZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcXVldWUgPSBpbmplY3Q8UXVldWVNYW5hZ2VyPihRVUVVRV9NQU5BR0VSKTtcclxuXHJcbiAgQElucHV0KCdhYnBQZXJtaXNzaW9uJykgY29uZGl0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgnYWJwUGVybWlzc2lvblJ1bkNoYW5nZURldGVjdGlvbicpIHJ1bkNoYW5nZURldGVjdGlvbiA9IHRydWU7XHJcblxyXG4gIHN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY2RyU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHJlbmRlcmVkID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgY2hlY2soKSB7XHJcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMucGVybWlzc2lvblNlcnZpY2VcclxuICAgICAgLmdldEdyYW50ZWRQb2xpY3kkKHRoaXMuY29uZGl0aW9uIHx8ICcnKVxyXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxyXG4gICAgICAuc3Vic2NyaWJlKGlzR3JhbnRlZCA9PiB7XHJcbiAgICAgICAgdGhpcy52Y1JlZi5jbGVhcigpO1xyXG4gICAgICAgIGlmIChpc0dyYW50ZWQpIHRoaXMudmNSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYpO1xyXG4gICAgICAgIGlmICh0aGlzLnJ1bkNoYW5nZURldGVjdGlvbikge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLnJlbmRlcmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyU3ViamVjdC5uZXh0KCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMuY2hlY2soKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY2RyU3ViamVjdC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnF1ZXVlLmFkZCgoKSA9PiB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKSkpO1xyXG4gICAgdGhpcy5yZW5kZXJlZCA9IHRydWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { Directive, Injector, Input, TemplateRef, ViewContainerRef, inject } from '@angular/core';\nimport compare from 'just-compare';\nimport { filter } from 'rxjs/operators';\nimport { ReplaceableComponentsService } from '../services/replaceable-components.service';\nimport { SubscriptionService } from '../services/subscription.service';\nimport * as i0 from \"@angular/core\";\nexport class ReplaceableTemplateDirective {\n constructor() {\n this.injector = inject(Injector);\n this.templateRef = inject(TemplateRef);\n this.vcRef = inject(ViewContainerRef);\n this.replaceableComponents = inject(ReplaceableComponentsService);\n this.subscription = inject(SubscriptionService);\n this.providedData = {\n inputs: {},\n outputs: {},\n };\n this.context = {};\n this.defaultComponentSubscriptions = {};\n this.initialized = false;\n this.context = {\n initTemplate: (ref) => {\n this.resetDefaultComponent();\n this.defaultComponentRef = ref;\n this.setDefaultComponentInputs();\n },\n };\n }\n ngOnInit() {\n const component$ = this.replaceableComponents\n .get$(this.data.componentKey)\n .pipe(filter((res = {}) => !this.initialized || !compare(res.component, this.externalComponent)));\n this.subscription.addOne(component$, (res = {}) => {\n this.vcRef.clear();\n this.externalComponent = res.component;\n if (this.defaultComponentRef) {\n this.resetDefaultComponent();\n }\n if (res.component) {\n this.setProvidedData();\n const customInjector = Injector.create({\n providers: [{ provide: 'REPLACEABLE_DATA', useValue: this.providedData }],\n parent: this.injector,\n });\n const ref = this.vcRef.createComponent(res.component, {\n index: 0,\n injector: customInjector,\n });\n }\n else {\n this.vcRef.createEmbeddedView(this.templateRef, this.context);\n }\n this.initialized = true;\n });\n }\n ngOnChanges(changes) {\n if (changes?.data?.currentValue?.inputs && this.defaultComponentRef) {\n this.setDefaultComponentInputs();\n }\n }\n setDefaultComponentInputs() {\n if (!this.defaultComponentRef || (!this.data.inputs && !this.data.outputs))\n return;\n if (this.data.inputs) {\n for (const key in this.data.inputs) {\n if (Object.prototype.hasOwnProperty.call(this.data.inputs, key)) {\n if (!compare(this.defaultComponentRef[key], this.data.inputs[key].value)) {\n this.defaultComponentRef[key] = this.data.inputs[key].value;\n }\n }\n }\n }\n if (this.data.outputs) {\n for (const key in this.data.outputs) {\n if (Object.prototype.hasOwnProperty.call(this.data.outputs, key)) {\n if (!this.defaultComponentSubscriptions[key]) {\n this.defaultComponentSubscriptions[key] = this.defaultComponentRef[key].subscribe((value) => {\n this.data.outputs?.[key](value);\n });\n }\n }\n }\n }\n }\n setProvidedData() {\n this.providedData = { outputs: {}, ...this.data, inputs: {} };\n if (!this.data.inputs)\n return;\n Object.defineProperties(this.providedData.inputs, {\n ...Object.keys(this.data.inputs).reduce((acc, key) => ({\n ...acc,\n [key]: {\n enumerable: true,\n configurable: true,\n get: () => this.data.inputs?.[key]?.value,\n ...(this.data.inputs?.[key]?.twoWay && {\n set: (newValue) => {\n if (this.data.inputs?.[key]) {\n this.data.inputs[key].value = newValue;\n }\n if (this.data.outputs?.[`${key}Change`]) {\n this.data.outputs[`${key}Change`](newValue);\n }\n },\n }),\n },\n }), {}),\n });\n }\n resetDefaultComponent() {\n Object.keys(this.defaultComponentSubscriptions).forEach(key => {\n this.defaultComponentSubscriptions[key].unsubscribe();\n });\n this.defaultComponentSubscriptions = {};\n this.defaultComponentRef = null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ReplaceableTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: ReplaceableTemplateDirective, isStandalone: true, selector: \"[abpReplaceableTemplate]\", inputs: { data: [\"abpReplaceableTemplate\", \"data\"] }, providers: [SubscriptionService], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ReplaceableTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[abpReplaceableTemplate]',\n providers: [SubscriptionService],\n }]\n }], ctorParameters: () => [], propDecorators: { data: [{\n type: Input,\n args: ['abpReplaceableTemplate']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZWFibGUtdGVtcGxhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvcmVwbGFjZWFibGUtdGVtcGxhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFJTCxXQUFXLEVBRVgsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFbkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQU12RSxNQUFNLE9BQU8sNEJBQTRCO0lBeUJ2QztRQXhCUSxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGdCQUFXLEdBQUcsTUFBTSxDQUFtQixXQUFXLENBQUMsQ0FBQztRQUNwRCxVQUFLLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDakMsMEJBQXFCLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDN0QsaUJBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUtuRCxpQkFBWSxHQUFHO1lBQ2IsTUFBTSxFQUFFLEVBQUU7WUFDVixPQUFPLEVBQUUsRUFBRTtTQUMrQyxDQUFDO1FBRTdELFlBQU8sR0FBRyxFQUFTLENBQUM7UUFNcEIsa0NBQTZCLEdBQUcsRUFBa0MsQ0FBQztRQUVuRSxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUdsQixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsWUFBWSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsR0FBRyxDQUFDO2dCQUMvQixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNuQyxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQjthQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDNUIsSUFBSSxDQUNILE1BQU0sQ0FDSixDQUFDLE1BQU0sRUFBZ0QsRUFBRSxFQUFFLENBQ3pELENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUN2RSxDQUNGLENBQUM7UUFFSixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FDdEIsVUFBVSxFQUNWLENBQUMsTUFBTSxFQUFnRCxFQUFFLEVBQUU7WUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztZQUN2QyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMvQixDQUFDO1lBRUQsSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztvQkFDckMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDekUsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO2lCQUN0QixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRTtvQkFDcEQsS0FBSyxFQUFFLENBQUM7b0JBQ1IsUUFBUSxFQUFFLGNBQWM7aUJBQ3pCLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hFLENBQUM7WUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUMxQixDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUFFLE9BQU87UUFFbkYsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDekUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDOUQsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNqRSxJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQzdDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUMvRSxDQUFDLEtBQVUsRUFBRSxFQUFFOzRCQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2xDLENBQUMsQ0FDRixDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBRTlELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQzlCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUNoRCxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQ3JDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDYixHQUFHLEdBQUc7Z0JBQ04sQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDTCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7b0JBQ3pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sSUFBSTt3QkFDckMsR0FBRyxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUU7NEJBQ3JCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dDQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDOzRCQUN6QyxDQUFDOzRCQUNELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQ0FDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUM5QyxDQUFDO3dCQUNILENBQUM7cUJBQ0YsQ0FBQztpQkFDSDthQUNGLENBQUMsRUFDRixFQUFFLENBQ0g7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzVELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyw2QkFBNkIsR0FBRyxFQUFrQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQzs4R0E5SVUsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsNkhBRjVCLENBQUMsbUJBQW1CLENBQUM7OzJGQUVyQiw0QkFBNEI7a0JBSnhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ2pDO3dEQVNDLElBQUk7c0JBREgsS0FBSzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBcclxuICBEaXJlY3RpdmUsIFxyXG4gIEluamVjdG9yLCBcclxuICBJbnB1dCwgXHJcbiAgT25DaGFuZ2VzLCBcclxuICBPbkluaXQsIFxyXG4gIFNpbXBsZUNoYW5nZXMsIFxyXG4gIFRlbXBsYXRlUmVmLCBcclxuICBUeXBlLCBcclxuICBWaWV3Q29udGFpbmVyUmVmLCBcclxuICBpbmplY3QgXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBjb21wYXJlIGZyb20gJ2p1c3QtY29tcGFyZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFCUCB9IGZyb20gJy4uL21vZGVscy9jb21tb24nO1xyXG5pbXBvcnQgeyBSZXBsYWNlYWJsZUNvbXBvbmVudHMgfSBmcm9tICcuLi9tb2RlbHMvcmVwbGFjZWFibGUtY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IFJlcGxhY2VhYmxlQ29tcG9uZW50c1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZXBsYWNlYWJsZS1jb21wb25lbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3Vic2NyaXB0aW9uLnNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYWJwUmVwbGFjZWFibGVUZW1wbGF0ZV0nLFxyXG4gIHByb3ZpZGVyczogW1N1YnNjcmlwdGlvblNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwbGFjZWFibGVUZW1wbGF0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuICBwcml2YXRlIHRlbXBsYXRlUmVmID0gaW5qZWN0PFRlbXBsYXRlUmVmPGFueT4+KFRlbXBsYXRlUmVmKTtcclxuICBwcml2YXRlIHZjUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xyXG4gIHByaXZhdGUgcmVwbGFjZWFibGVDb21wb25lbnRzID0gaW5qZWN0KFJlcGxhY2VhYmxlQ29tcG9uZW50c1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gaW5qZWN0KFN1YnNjcmlwdGlvblNlcnZpY2UpO1xyXG5cclxuICBASW5wdXQoJ2FicFJlcGxhY2VhYmxlVGVtcGxhdGUnKVxyXG4gIGRhdGEhOiBSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVUZW1wbGF0ZURpcmVjdGl2ZUlucHV0PGFueSwgYW55PjtcclxuXHJcbiAgcHJvdmlkZWREYXRhID0ge1xyXG4gICAgaW5wdXRzOiB7fSxcclxuICAgIG91dHB1dHM6IHt9LFxyXG4gIH0gYXMgUmVwbGFjZWFibGVDb21wb25lbnRzLlJlcGxhY2VhYmxlVGVtcGxhdGVEYXRhPGFueSwgYW55PjtcclxuXHJcbiAgY29udGV4dCA9IHt9IGFzIGFueTtcclxuXHJcbiAgZXh0ZXJuYWxDb21wb25lbnQhOiBUeXBlPGFueT47XHJcblxyXG4gIGRlZmF1bHRDb21wb25lbnRSZWY6IGFueTtcclxuXHJcbiAgZGVmYXVsdENvbXBvbmVudFN1YnNjcmlwdGlvbnMgPSB7fSBhcyBBQlAuRGljdGlvbmFyeTxTdWJzY3JpcHRpb24+O1xyXG5cclxuICBpbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuY29udGV4dCA9IHtcclxuICAgICAgaW5pdFRlbXBsYXRlOiAocmVmOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnJlc2V0RGVmYXVsdENvbXBvbmVudCgpO1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdENvbXBvbmVudFJlZiA9IHJlZjtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRDb21wb25lbnRJbnB1dHMoKTtcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IGNvbXBvbmVudCQgPSB0aGlzLnJlcGxhY2VhYmxlQ29tcG9uZW50c1xyXG4gICAgICAuZ2V0JCh0aGlzLmRhdGEuY29tcG9uZW50S2V5KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICAocmVzID0ge30gYXMgUmVwbGFjZWFibGVDb21wb25lbnRzLlJlcGxhY2VhYmxlQ29tcG9uZW50KSA9PlxyXG4gICAgICAgICAgICAhdGhpcy5pbml0aWFsaXplZCB8fCAhY29tcGFyZShyZXMuY29tcG9uZW50LCB0aGlzLmV4dGVybmFsQ29tcG9uZW50KSxcclxuICAgICAgICApLFxyXG4gICAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZE9uZShcclxuICAgICAgY29tcG9uZW50JCxcclxuICAgICAgKHJlcyA9IHt9IGFzIFJlcGxhY2VhYmxlQ29tcG9uZW50cy5SZXBsYWNlYWJsZUNvbXBvbmVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMudmNSZWYuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmV4dGVybmFsQ29tcG9uZW50ID0gcmVzLmNvbXBvbmVudDtcclxuICAgICAgICBpZiAodGhpcy5kZWZhdWx0Q29tcG9uZW50UmVmKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0RGVmYXVsdENvbXBvbmVudCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlcy5jb21wb25lbnQpIHtcclxuICAgICAgICAgIHRoaXMuc2V0UHJvdmlkZWREYXRhKCk7XHJcbiAgICAgICAgICBjb25zdCBjdXN0b21JbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogJ1JFUExBQ0VBQkxFX0RBVEEnLCB1c2VWYWx1ZTogdGhpcy5wcm92aWRlZERhdGEgfV0sXHJcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgY29uc3QgcmVmID0gdGhpcy52Y1JlZi5jcmVhdGVDb21wb25lbnQocmVzLmNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBpbmRleDogMCxcclxuICAgICAgICAgICAgaW5qZWN0b3I6IGN1c3RvbUluamVjdG9yLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudmNSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYsIHRoaXMuY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcz8uZGF0YT8uY3VycmVudFZhbHVlPy5pbnB1dHMgJiYgdGhpcy5kZWZhdWx0Q29tcG9uZW50UmVmKSB7XHJcbiAgICAgIHRoaXMuc2V0RGVmYXVsdENvbXBvbmVudElucHV0cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdENvbXBvbmVudElucHV0cygpIHtcclxuICAgIGlmICghdGhpcy5kZWZhdWx0Q29tcG9uZW50UmVmIHx8ICghdGhpcy5kYXRhLmlucHV0cyAmJiAhdGhpcy5kYXRhLm91dHB1dHMpKSByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YS5pbnB1dHMpIHtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5kYXRhLmlucHV0cykge1xyXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5kYXRhLmlucHV0cywga2V5KSkge1xyXG4gICAgICAgICAgaWYgKCFjb21wYXJlKHRoaXMuZGVmYXVsdENvbXBvbmVudFJlZltrZXldLCB0aGlzLmRhdGEuaW5wdXRzW2tleV0udmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdENvbXBvbmVudFJlZltrZXldID0gdGhpcy5kYXRhLmlucHV0c1trZXldLnZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGEub3V0cHV0cykge1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmRhdGEub3V0cHV0cykge1xyXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5kYXRhLm91dHB1dHMsIGtleSkpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5kZWZhdWx0Q29tcG9uZW50U3Vic2NyaXB0aW9uc1trZXldKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdENvbXBvbmVudFN1YnNjcmlwdGlvbnNba2V5XSA9IHRoaXMuZGVmYXVsdENvbXBvbmVudFJlZltrZXldLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLm91dHB1dHM/LltrZXldKHZhbHVlKTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UHJvdmlkZWREYXRhKCkge1xyXG4gICAgdGhpcy5wcm92aWRlZERhdGEgPSB7IG91dHB1dHM6IHt9LCAuLi50aGlzLmRhdGEsIGlucHV0czoge30gfTtcclxuXHJcbiAgICBpZiAoIXRoaXMuZGF0YS5pbnB1dHMpIHJldHVybjtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMucHJvdmlkZWREYXRhLmlucHV0cywge1xyXG4gICAgICAuLi5PYmplY3Qua2V5cyh0aGlzLmRhdGEuaW5wdXRzKS5yZWR1Y2UoXHJcbiAgICAgICAgKGFjYywga2V5KSA9PiAoe1xyXG4gICAgICAgICAgLi4uYWNjLFxyXG4gICAgICAgICAgW2tleV06IHtcclxuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBnZXQ6ICgpID0+IHRoaXMuZGF0YS5pbnB1dHM/LltrZXldPy52YWx1ZSxcclxuICAgICAgICAgICAgLi4uKHRoaXMuZGF0YS5pbnB1dHM/LltrZXldPy50d29XYXkgJiYge1xyXG4gICAgICAgICAgICAgIHNldDogKG5ld1ZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGEuaW5wdXRzPy5ba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGEuaW5wdXRzW2tleV0udmFsdWUgPSBuZXdWYWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGEub3V0cHV0cz8uW2Ake2tleX1DaGFuZ2VgXSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGEub3V0cHV0c1tgJHtrZXl9Q2hhbmdlYF0obmV3VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KSxcclxuICAgICAgICB7fSxcclxuICAgICAgKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzZXREZWZhdWx0Q29tcG9uZW50KCkge1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5kZWZhdWx0Q29tcG9uZW50U3Vic2NyaXB0aW9ucykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb21wb25lbnRTdWJzY3JpcHRpb25zW2tleV0udW5zdWJzY3JpYmUoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kZWZhdWx0Q29tcG9uZW50U3Vic2NyaXB0aW9ucyA9IHt9IGFzIEFCUC5EaWN0aW9uYXJ5PFN1YnNjcmlwdGlvbj47XHJcbiAgICB0aGlzLmRlZmF1bHRDb21wb25lbnRSZWYgPSBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Directive, ElementRef, EventEmitter, Output, inject } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { SubscriptionService } from '../services/subscription.service';\nimport * as i0 from \"@angular/core\";\nexport class StopPropagationDirective {\n constructor() {\n this.el = inject(ElementRef);\n this.subscription = inject(SubscriptionService);\n this.stopPropEvent = new EventEmitter();\n }\n ngOnInit() {\n this.subscription.addOne(fromEvent(this.el.nativeElement, 'click'), event => {\n event.stopPropagation();\n this.stopPropEvent.emit(event);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: StopPropagationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: StopPropagationDirective, isStandalone: true, selector: \"[click.stop]\", outputs: { stopPropEvent: \"click.stop\" }, providers: [SubscriptionService], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: StopPropagationDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[click.stop]',\n providers: [SubscriptionService],\n }]\n }], propDecorators: { stopPropEvent: [{\n type: Output,\n args: ['click.stop']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcC1wcm9wYWdhdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9zdG9wLXByb3BhZ2F0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQU12RSxNQUFNLE9BQU8sd0JBQXdCO0lBSnJDO1FBS1UsT0FBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRXBCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztLQVEvRTtJQU5DLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQWEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDdEYsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FYVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixxR0FGeEIsQ0FBQyxtQkFBbUIsQ0FBQzs7MkZBRXJCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ2pDOzhCQUtnQyxhQUFhO3NCQUEzQyxNQUFNO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N1YnNjcmlwdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2NsaWNrLnN0b3BdJyxcclxuICBwcm92aWRlcnM6IFtTdWJzY3JpcHRpb25TZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBlbCA9IGluamVjdChFbGVtZW50UmVmKTtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IGluamVjdChTdWJzY3JpcHRpb25TZXJ2aWNlKTtcclxuXHJcbiAgQE91dHB1dCgnY2xpY2suc3RvcCcpIHJlYWRvbmx5IHN0b3BQcm9wRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkT25lKGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdjbGljaycpLCBldmVudCA9PiB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLnN0b3BQcm9wRXZlbnQuZW1pdChldmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19","import { Directive, ElementRef, Input, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ShowPasswordDirective {\n constructor() {\n this.elementRef = inject(ElementRef);\n }\n set abpShowPassword(visible) {\n const element = this.elementRef.nativeElement;\n if (!element)\n return;\n element.type = visible ? 'text' : 'password';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ShowPasswordDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: ShowPasswordDirective, isStandalone: true, selector: \"[abpShowPassword]\", inputs: { abpShowPassword: \"abpShowPassword\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ShowPasswordDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[abpShowPassword]',\n }]\n }], propDecorators: { abpShowPassword: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy1wYXNzd29yZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9zaG93LXBhc3N3b3JkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtyRSxNQUFNLE9BQU8scUJBQXFCO0lBSGxDO1FBSXFCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0FRcEQ7SUFOQyxJQUFhLGVBQWUsQ0FBQyxPQUFnQjtRQUMzQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWlDLENBQUM7UUFDbEUsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRXJCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUMvQyxDQUFDOzhHQVJVLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCOzhCQUljLGVBQWU7c0JBQTNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FicFNob3dQYXNzd29yZF0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hvd1Bhc3N3b3JkRGlyZWN0aXZlIHtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcclxuXHJcbiAgQElucHV0KCkgc2V0IGFicFNob3dQYXNzd29yZCh2aXNpYmxlOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmICghZWxlbWVudCkgcmV0dXJuO1xyXG5cclxuICAgIGVsZW1lbnQudHlwZSA9IHZpc2libGUgPyAndGV4dCcgOiAncGFzc3dvcmQnO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Directive, EventEmitter, HostListener, Output } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class TrackCapsLockDirective {\n constructor() {\n this.capsLock = new EventEmitter();\n }\n onKeyDown(event) {\n this.capsLock.emit(this.isCapsLockOpen(event));\n }\n onKeyUp(event) {\n this.capsLock.emit(this.isCapsLockOpen(event));\n }\n isCapsLockOpen(e) {\n const s = String.fromCharCode(e.which);\n if ((s.toUpperCase() === s && s.toLowerCase() !== s && e.shiftKey) ||\n (s.toUpperCase() !== s && s.toLowerCase() === s && e.shiftKey) ||\n (e.getModifierState && e.getModifierState('CapsLock'))) {\n return true;\n }\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TrackCapsLockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: TrackCapsLockDirective, isStandalone: true, selector: \"[abpCapsLock]\", outputs: { capsLock: \"abpCapsLock\" }, host: { listeners: { \"window:keydown\": \"onKeyDown($event)\", \"window:keyup\": \"onKeyUp($event)\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TrackCapsLockDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[abpCapsLock]',\n }]\n }], propDecorators: { capsLock: [{\n type: Output,\n args: ['abpCapsLock']\n }], onKeyDown: [{\n type: HostListener,\n args: ['window:keydown', ['$event']]\n }], onKeyUp: [{\n type: HostListener,\n args: ['window:keyup', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fwcy1sb2NrLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL2NhcHMtbG9jay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLOUUsTUFBTSxPQUFPLHNCQUFzQjtJQUhuQztRQUl5QixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztLQXNCL0Q7SUFuQkMsU0FBUyxDQUFDLEtBQW9CO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQW9CO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYyxDQUFDLENBQUM7UUFDZCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUNFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDOUQsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUM5RCxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFDdEQsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0F0QlUsc0JBQXNCO2tHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBSGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7aUJBQzFCOzhCQUV3QixRQUFRO3NCQUE5QixNQUFNO3VCQUFDLGFBQWE7Z0JBR3JCLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFLMUMsT0FBTztzQkFETixZQUFZO3VCQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYWJwQ2Fwc0xvY2tdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYWNrQ2Fwc0xvY2tEaXJlY3RpdmUge1xyXG4gIEBPdXRwdXQoJ2FicENhcHNMb2NrJykgY2Fwc0xvY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuY2Fwc0xvY2suZW1pdCh0aGlzLmlzQ2Fwc0xvY2tPcGVuKGV2ZW50KSk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cCcsIFsnJGV2ZW50J10pXHJcbiAgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYXBzTG9jay5lbWl0KHRoaXMuaXNDYXBzTG9ja09wZW4oZXZlbnQpKTtcclxuICB9XHJcblxyXG4gIGlzQ2Fwc0xvY2tPcGVuKGUpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGUud2hpY2gpO1xyXG4gICAgaWYgKFxyXG4gICAgICAocy50b1VwcGVyQ2FzZSgpID09PSBzICYmIHMudG9Mb3dlckNhc2UoKSAhPT0gcyAmJiBlLnNoaWZ0S2V5KSB8fFxyXG4gICAgICAocy50b1VwcGVyQ2FzZSgpICE9PSBzICYmIHMudG9Mb3dlckNhc2UoKSA9PT0gcyAmJiBlLnNoaWZ0S2V5KSB8fFxyXG4gICAgICAoZS5nZXRNb2RpZmllclN0YXRlICYmIGUuZ2V0TW9kaWZpZXJTdGF0ZSgnQ2Fwc0xvY2snKSlcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuIl19","Date.prototype.toLocalISOString = function () {\n const timezoneOffset = this.getTimezoneOffset();\n return new Date(this.getTime() - timezoneOffset * 60000).toISOString();\n};\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1leHRlbnNpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3V0aWxzL2RhdGUtZXh0ZW5zaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixHQUFHO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBRWhELE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN6RSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307XHJcblxyXG5kZWNsYXJlIGdsb2JhbCB7XHJcbiAgaW50ZXJmYWNlIERhdGUge1xyXG4gICAgdG9Mb2NhbElTT1N0cmluZz86ICgpID0+IHN0cmluZztcclxuICB9XHJcbn1cclxuXHJcbkRhdGUucHJvdG90eXBlLnRvTG9jYWxJU09TdHJpbmcgPSBmdW5jdGlvbiAodGhpczogRGF0ZSk6IHN0cmluZyB7XHJcbiAgY29uc3QgdGltZXpvbmVPZmZzZXQgPSB0aGlzLmdldFRpbWV6b25lT2Zmc2V0KCk7XHJcblxyXG4gIHJldHVybiBuZXcgRGF0ZSh0aGlzLmdldFRpbWUoKSAtIHRpbWV6b25lT2Zmc2V0ICogNjAwMDApLnRvSVNPU3RyaW5nKCk7XHJcbn07XHJcbiJdfQ==","import { Injector, inject, provideAppInitializer, PLATFORM_ID } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { SessionStateService } from '../services/session-state.service';\nimport { COOKIE_LANGUAGE_KEY } from '../tokens/cookie-language-key.token';\nexport function setLanguageToCookie() {\n const injector = inject(Injector);\n const platformId = injector.get(PLATFORM_ID);\n if (!isPlatformBrowser(platformId))\n return;\n const sessionState = injector.get(SessionStateService);\n const document = injector.get(DOCUMENT);\n const cookieLanguageKey = injector.get(COOKIE_LANGUAGE_KEY);\n sessionState.getLanguage$().subscribe(language => {\n const cookieValue = encodeURIComponent(`c=${language}|uic=${language}`);\n document.cookie = `${cookieLanguageKey}=${cookieValue}`;\n });\n}\nexport const CookieLanguageProvider = provideAppInitializer(() => {\n setLanguageToCookie();\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLWxhbmd1YWdlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Byb3ZpZGVycy9jb29raWUtbGFuZ3VhZ2UucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUUxRSxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTdDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7UUFBRSxPQUFPO0lBRTNDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN2RCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzVELFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDL0MsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxRQUFRLFFBQVEsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN4RSxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLElBQUksV0FBVyxFQUFFLENBQUM7SUFDMUQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcscUJBQXFCLENBQUMsR0FBRyxFQUFFO0lBQy9ELG1CQUFtQixFQUFFLENBQUM7QUFDeEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgaW5qZWN0LCBwcm92aWRlQXBwSW5pdGlhbGl6ZXIsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNlc3Npb25TdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZXNzaW9uLXN0YXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDT09LSUVfTEFOR1VBR0VfS0VZIH0gZnJvbSAnLi4vdG9rZW5zL2Nvb2tpZS1sYW5ndWFnZS1rZXkudG9rZW4nO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNldExhbmd1YWdlVG9Db29raWUoKSB7XHJcbiAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG4gIGNvbnN0IHBsYXRmb3JtSWQgPSBpbmplY3Rvci5nZXQoUExBVEZPUk1fSUQpO1xyXG5cclxuICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpKSByZXR1cm47XHJcblxyXG4gIGNvbnN0IHNlc3Npb25TdGF0ZSA9IGluamVjdG9yLmdldChTZXNzaW9uU3RhdGVTZXJ2aWNlKTtcclxuICBjb25zdCBkb2N1bWVudCA9IGluamVjdG9yLmdldChET0NVTUVOVCk7XHJcbiAgY29uc3QgY29va2llTGFuZ3VhZ2VLZXkgPSBpbmplY3Rvci5nZXQoQ09PS0lFX0xBTkdVQUdFX0tFWSk7XHJcbiAgc2Vzc2lvblN0YXRlLmdldExhbmd1YWdlJCgpLnN1YnNjcmliZShsYW5ndWFnZSA9PiB7XHJcbiAgICBjb25zdCBjb29raWVWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChgYz0ke2xhbmd1YWdlfXx1aWM9JHtsYW5ndWFnZX1gKTtcclxuICAgIGRvY3VtZW50LmNvb2tpZSA9IGAke2Nvb2tpZUxhbmd1YWdlS2V5fT0ke2Nvb2tpZVZhbHVlfWA7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBDb29raWVMYW5ndWFnZVByb3ZpZGVyID0gcHJvdmlkZUFwcEluaXRpYWxpemVyKCgpID0+IHtcclxuICBzZXRMYW5ndWFnZVRvQ29va2llKCk7XHJcbn0pO1xyXG4iXX0=","import { LOCALE_ID, inject } from '@angular/core';\nimport { differentLocales } from '../constants/different-locales';\nimport { LocalizationService } from '../services/localization.service';\nimport { checkHasProp } from '../utils/common-utils';\nexport class LocaleId extends String {\n constructor() {\n super();\n this.localizationService = inject(LocalizationService);\n }\n toString() {\n const { currentLang } = this.localizationService;\n if (checkHasProp(differentLocales, currentLang)) {\n return differentLocales[currentLang];\n }\n return currentLang;\n }\n valueOf() {\n return this.toString();\n }\n}\nexport const LocaleProvider = {\n provide: LOCALE_ID,\n useClass: LocaleId,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Byb3ZpZGVycy9sb2NhbGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBWSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJELE1BQU0sT0FBTyxRQUFTLFNBQVEsTUFBTTtJQUdsQztRQUNFLEtBQUssRUFBRSxDQUFDO1FBSEYsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFJMUQsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ2pELElBQUksWUFBWSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDaEQsT0FBTyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQWE7SUFDdEMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsUUFBUSxFQUFFLFFBQVE7Q0FDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExPQ0FMRV9JRCwgUHJvdmlkZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBkaWZmZXJlbnRMb2NhbGVzIH0gZnJvbSAnLi4vY29uc3RhbnRzL2RpZmZlcmVudC1sb2NhbGVzJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgY2hlY2tIYXNQcm9wIH0gZnJvbSAnLi4vdXRpbHMvY29tbW9uLXV0aWxzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGVJZCBleHRlbmRzIFN0cmluZyB7XHJcbiAgcHJpdmF0ZSBsb2NhbGl6YXRpb25TZXJ2aWNlID0gaW5qZWN0KExvY2FsaXphdGlvblNlcnZpY2UpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICB0b1N0cmluZygpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeyBjdXJyZW50TGFuZyB9ID0gdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlO1xyXG4gICAgaWYgKGNoZWNrSGFzUHJvcChkaWZmZXJlbnRMb2NhbGVzLCBjdXJyZW50TGFuZykpIHtcclxuICAgICAgcmV0dXJuIGRpZmZlcmVudExvY2FsZXNbY3VycmVudExhbmddO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGN1cnJlbnRMYW5nO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVPZigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBMb2NhbGVQcm92aWRlcjogUHJvdmlkZXIgPSB7XHJcbiAgcHJvdmlkZTogTE9DQUxFX0lELFxyXG4gIHVzZUNsYXNzOiBMb2NhbGVJZCxcclxufTsiXX0=","import { INCUDE_LOCALIZATION_RESOURCES_TOKEN } from '../tokens/include-localization-resources.token';\nexport const IncludeLocalizationResourcesProvider = {\n provide: INCUDE_LOCALIZATION_RESOURCES_TOKEN,\n useValue: false,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZS1sb2NhbGl6YXRpb24tcmVzb3VyY2VzLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Byb3ZpZGVycy9pbmNsdWRlLWxvY2FsaXphdGlvbi1yZXNvdXJjZXMucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFckcsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQWE7SUFDNUQsT0FBTyxFQUFFLG1DQUFtQztJQUM1QyxRQUFRLEVBQUUsS0FBSztDQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSU5DVURFX0xPQ0FMSVpBVElPTl9SRVNPVVJDRVNfVE9LRU4gfSBmcm9tICcuLi90b2tlbnMvaW5jbHVkZS1sb2NhbGl6YXRpb24tcmVzb3VyY2VzLnRva2VuJztcclxuXHJcbmV4cG9ydCBjb25zdCBJbmNsdWRlTG9jYWxpemF0aW9uUmVzb3VyY2VzUHJvdmlkZXI6IFByb3ZpZGVyID0ge1xyXG4gIHByb3ZpZGU6IElOQ1VERV9MT0NBTElaQVRJT05fUkVTT1VSQ0VTX1RPS0VOLFxyXG4gIHVzZVZhbHVlOiBmYWxzZSxcclxufTtcclxuIl19","import { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { RoutesService } from '../services/routes.service';\nimport * as i0 from \"@angular/core\";\nexport class RoutesHandler {\n constructor() {\n this.routes = inject(RoutesService);\n this.router = inject(Router, { optional: true });\n this.addRoutes();\n }\n addRoutes() {\n this.router?.config?.forEach(({ path = '', data }) => {\n const routes = data?.routes;\n if (!routes)\n return;\n if (Array.isArray(routes)) {\n this.routes.add(routes);\n }\n else {\n const routesFlatten = flatRoutes([{ path, ...routes }], { path: '' });\n this.routes.add(routesFlatten);\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RoutesHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RoutesHandler, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RoutesHandler, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\nfunction flatRoutes(routes, parent) {\n if (!routes)\n return [];\n return routes.reduce((acc, route) => {\n const { children, ...current } = {\n ...route,\n parentName: parent.name,\n path: (parent.path + '/' + route.path).replace(/\\/\\//g, '/'),\n };\n acc.push(current, ...flatRoutes(children, current));\n return acc;\n }, []);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvaGFuZGxlcnMvcm91dGVzLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFTLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFLM0QsTUFBTSxPQUFPLGFBQWE7SUFJeEI7UUFIUSxXQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9CLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFFLENBQUM7UUFHbkQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxTQUFTO1FBQ04sSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQWEsRUFBRSxFQUFFO1lBQy9FLE1BQU0sTUFBTSxHQUFHLElBQUksRUFBRSxNQUFNLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTztZQUVwQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXBCVSxhQUFhO2tIQUFiLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUF3QkQsU0FBUyxVQUFVLENBQUMsTUFBa0IsRUFBRSxNQUFXO0lBQ2pELElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFdkIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ2xDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRztZQUMvQixHQUFHLEtBQUs7WUFDUixVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDdkIsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO1NBQzdELENBQUM7UUFFRixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUVwRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxFQUFpQixDQUFDLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgUm91dGVzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JvdXRlcy5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSb3V0ZXNIYW5kbGVyIHtcclxuICBwcml2YXRlIHJvdXRlcyA9IGluamVjdChSb3V0ZXNTZXJ2aWNlKTtcclxuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIsIHsgb3B0aW9uYWw6IHRydWUgfSkhO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuYWRkUm91dGVzKCk7XHJcbiAgfVxyXG5cclxuICBhZGRSb3V0ZXMoKSB7XHJcbiAgICAodGhpcy5yb3V0ZXI/LmNvbmZpZyBhcyBSb3V0ZURhdGFbXSk/LmZvckVhY2goKHsgcGF0aCA9ICcnLCBkYXRhIH06IFJvdXRlRGF0YSkgPT4ge1xyXG4gICAgICBjb25zdCByb3V0ZXMgPSBkYXRhPy5yb3V0ZXM7XHJcbiAgICAgIGlmICghcm91dGVzKSByZXR1cm47XHJcblxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3V0ZXMpKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMuYWRkKHJvdXRlcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgcm91dGVzRmxhdHRlbiA9IGZsYXRSb3V0ZXMoW3sgcGF0aCwgLi4ucm91dGVzIH1dLCB7IHBhdGg6ICcnIH0pO1xyXG4gICAgICAgIHRoaXMucm91dGVzLmFkZChyb3V0ZXNGbGF0dGVuKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBmbGF0Um91dGVzKHJvdXRlczogUm91dGVEZWZbXSwgcGFyZW50OiBhbnkpIHtcclxuICBpZiAoIXJvdXRlcykgcmV0dXJuIFtdO1xyXG5cclxuICByZXR1cm4gcm91dGVzLnJlZHVjZSgoYWNjLCByb3V0ZSkgPT4ge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgLi4uY3VycmVudCB9ID0ge1xyXG4gICAgICAuLi5yb3V0ZSxcclxuICAgICAgcGFyZW50TmFtZTogcGFyZW50Lm5hbWUsXHJcbiAgICAgIHBhdGg6IChwYXJlbnQucGF0aCArICcvJyArIHJvdXRlLnBhdGgpLnJlcGxhY2UoL1xcL1xcLy9nLCAnLycpLFxyXG4gICAgfTtcclxuXHJcbiAgICBhY2MucHVzaChjdXJyZW50LCAuLi5mbGF0Um91dGVzKGNoaWxkcmVuLCBjdXJyZW50KSk7XHJcblxyXG4gICAgcmV0dXJuIGFjYztcclxuICB9LCBbXSBhcyBBQlAuUm91dGVbXSk7XHJcbn1cclxuXHJcbnR5cGUgUm91dGVEZWYgPSBBQlAuUm91dGUgJiB7IGNoaWxkcmVuOiBSb3V0ZURlZltdIH07XHJcbnR5cGUgUm91dGVEYXRhID0gUm91dGUgJiB7IGRhdGE6IHsgcm91dGVzOiBSb3V0ZURlZiB8IEFycmF5PFJvdXRlRGVmPiB9IH07XHJcbiJdfQ==","import { HttpHeaders, } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { finalize } from 'rxjs/operators';\nimport { HttpWaitService } from '../services';\nimport * as i0 from \"@angular/core\";\nexport class ApiInterceptor {\n constructor() {\n this.httpWaitService = inject(HttpWaitService);\n }\n getAdditionalHeaders(existingHeaders) {\n return existingHeaders || new HttpHeaders();\n }\n intercept(request, next) {\n this.httpWaitService.addRequest(request);\n return next.handle(request).pipe(finalize(() => this.httpWaitService.deleteRequest(request)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ApiInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ApiInterceptor, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ApiInterceptor, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2ludGVyY2VwdG9ycy9hcGkuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFdBQVcsR0FJWixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUs5QyxNQUFNLE9BQU8sY0FBYztJQUgzQjtRQUlVLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBVW5EO0lBUkMsb0JBQW9CLENBQUMsZUFBNkI7UUFDaEQsT0FBTyxlQUFlLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFDcEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7OEdBVlUsY0FBYztrSEFBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEh0dHBIYW5kbGVyLFxyXG4gIEh0dHBIZWFkZXJzLFxyXG4gIEh0dHBJbnRlcmNlcHRvcixcclxuICBIdHRwUmVxdWVzdCxcclxuICBIdHRwRXZlbnQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cFdhaXRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwaUludGVyY2VwdG9yIGltcGxlbWVudHMgSUFwaUludGVyY2VwdG9yIHtcclxuICBwcml2YXRlIGh0dHBXYWl0U2VydmljZSA9IGluamVjdChIdHRwV2FpdFNlcnZpY2UpO1xyXG5cclxuICBnZXRBZGRpdGlvbmFsSGVhZGVycyhleGlzdGluZ0hlYWRlcnM/OiBIdHRwSGVhZGVycykge1xyXG4gICAgcmV0dXJuIGV4aXN0aW5nSGVhZGVycyB8fCBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICB9XHJcblxyXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgIHRoaXMuaHR0cFdhaXRTZXJ2aWNlLmFkZFJlcXVlc3QocmVxdWVzdCk7XHJcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLmh0dHBXYWl0U2VydmljZS5kZWxldGVSZXF1ZXN0KHJlcXVlc3QpKSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBcGlJbnRlcmNlcHRvciBleHRlbmRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgZ2V0QWRkaXRpb25hbEhlYWRlcnMoZXhpc3RpbmdIZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBIdHRwSGVhZGVycztcclxufVxyXG4iXX0=","import { inject } from '@angular/core';\nimport { TimezoneService } from '../services';\nexport const timezoneInterceptor = (req, next) => {\n const timezoneService = inject(TimezoneService);\n if (!timezoneService.isUtcClockEnabled) {\n return next(req);\n }\n const timezone = timezoneService.timezone;\n if (timezone) {\n req = req.clone({\n setHeaders: {\n __timezone: timezone,\n },\n });\n }\n return next(req);\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXpvbmUuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvaW50ZXJjZXB0b3JzL3RpbWV6b25lLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBc0IsQ0FDcEQsR0FBcUIsRUFDckIsSUFBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVoRCxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUM7SUFDMUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ2QsVUFBVSxFQUFFO2dCQUNWLFVBQVUsRUFBRSxRQUFRO2FBQ3JCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwSGFuZGxlckZuLCBIdHRwSW50ZXJjZXB0b3JGbiwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFRpbWV6b25lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuXHJcbmV4cG9ydCBjb25zdCB0aW1lem9uZUludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChcclxuICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXHJcbiAgbmV4dDogSHR0cEhhbmRsZXJGbixcclxuKSA9PiB7XHJcbiAgY29uc3QgdGltZXpvbmVTZXJ2aWNlID0gaW5qZWN0KFRpbWV6b25lU2VydmljZSk7XHJcblxyXG4gIGlmICghdGltZXpvbmVTZXJ2aWNlLmlzVXRjQ2xvY2tFbmFibGVkKSB7XHJcbiAgICByZXR1cm4gbmV4dChyZXEpO1xyXG4gIH1cclxuICBjb25zdCB0aW1lem9uZSA9IHRpbWV6b25lU2VydmljZS50aW1lem9uZTtcclxuICBpZiAodGltZXpvbmUpIHtcclxuICAgIHJlcSA9IHJlcS5jbG9uZSh7XHJcbiAgICAgIHNldEhlYWRlcnM6IHtcclxuICAgICAgICBfX3RpbWV6b25lOiB0aW1lem9uZSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByZXR1cm4gbmV4dChyZXEpO1xyXG59O1xyXG4iXX0=","import { inject, makeStateKey, PLATFORM_ID, TransferState } from '@angular/core';\nimport { HttpResponse, } from '@angular/common/http';\nimport { of } from 'rxjs';\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { tap } from 'rxjs/operators';\nexport const transferStateInterceptor = (req, next) => {\n const transferState = inject(TransferState);\n const platformId = inject(PLATFORM_ID);\n if (req.method !== 'GET') {\n return next(req);\n }\n const stateKey = makeStateKey(req.urlWithParams);\n if (isPlatformBrowser(platformId)) {\n const storedResponse = transferState.get(stateKey, null);\n if (storedResponse) {\n transferState.remove(stateKey);\n return of(new HttpResponse({ body: storedResponse, status: 200 }));\n }\n }\n return next(req).pipe(tap(event => {\n if (isPlatformServer(platformId) && event instanceof HttpResponse) {\n transferState.set(stateKey, event.body);\n console.log(`Interceptor: ${req.urlWithParams} is stored in TransferState.`);\n }\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXItc3RhdGUuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvaW50ZXJjZXB0b3JzL3RyYW5zZmVyLXN0YXRlLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUtMLFlBQVksR0FDYixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFzQixDQUN6RCxHQUFxQixFQUNyQixJQUFtQixFQUNTLEVBQUU7SUFDOUIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV2QyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBb0IsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRXBFLElBQUksaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUNsQyxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFvQixRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUUsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9CLE9BQU8sRUFBRSxDQUFDLElBQUksWUFBWSxDQUFNLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFFLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNuQixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDVixJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUUsQ0FBQztZQUNsRSxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLGFBQWEsOEJBQThCLENBQUMsQ0FBQztRQUMvRSxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgbWFrZVN0YXRlS2V5LCBQTEFURk9STV9JRCwgVHJhbnNmZXJTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEh0dHBFdmVudCxcclxuICBIdHRwSGFuZGxlckZuLFxyXG4gIEh0dHBJbnRlcmNlcHRvckZuLFxyXG4gIEh0dHBSZXF1ZXN0LFxyXG4gIEh0dHBSZXNwb25zZSxcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyLCBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IHRyYW5zZmVyU3RhdGVJbnRlcmNlcHRvcjogSHR0cEludGVyY2VwdG9yRm4gPSAoXHJcbiAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gIG5leHQ6IEh0dHBIYW5kbGVyRm4sXHJcbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+ID0+IHtcclxuICBjb25zdCB0cmFuc2ZlclN0YXRlID0gaW5qZWN0KFRyYW5zZmVyU3RhdGUpO1xyXG4gIGNvbnN0IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG5cclxuICBpZiAocmVxLm1ldGhvZCAhPT0gJ0dFVCcpIHtcclxuICAgIHJldHVybiBuZXh0KHJlcSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBzdGF0ZUtleSA9IG1ha2VTdGF0ZUtleTxIdHRwUmVzcG9uc2U8YW55Pj4ocmVxLnVybFdpdGhQYXJhbXMpO1xyXG5cclxuICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkpIHtcclxuICAgIGNvbnN0IHN0b3JlZFJlc3BvbnNlID0gdHJhbnNmZXJTdGF0ZS5nZXQ8SHR0cFJlc3BvbnNlPGFueT4+KHN0YXRlS2V5LCBudWxsKTtcclxuICAgIGlmIChzdG9yZWRSZXNwb25zZSkge1xyXG4gICAgICB0cmFuc2ZlclN0YXRlLnJlbW92ZShzdGF0ZUtleSk7XHJcbiAgICAgIHJldHVybiBvZihuZXcgSHR0cFJlc3BvbnNlPGFueT4oeyBib2R5OiBzdG9yZWRSZXNwb25zZSwgc3RhdHVzOiAyMDAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG5leHQocmVxKS5waXBlKFxyXG4gICAgdGFwKGV2ZW50ID0+IHtcclxuICAgICAgaWYgKGlzUGxhdGZvcm1TZXJ2ZXIocGxhdGZvcm1JZCkgJiYgZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICB0cmFuc2ZlclN0YXRlLnNldChzdGF0ZUtleSwgZXZlbnQuYm9keSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coYEludGVyY2VwdG9yOiAke3JlcS51cmxXaXRoUGFyYW1zfSBpcyBzdG9yZWQgaW4gVHJhbnNmZXJTdGF0ZS5gKTtcclxuICAgICAgfVxyXG4gICAgfSksXHJcbiAgKTtcclxufTtcclxuIl19","import { makeEnvironmentProviders, provideAppInitializer, inject } from '@angular/core';\nimport { TitleStrategy } from '@angular/router';\nimport { provideHttpClient, withFetch, withInterceptors, withInterceptorsFromDi, withXsrfConfiguration, } from '@angular/common/http';\nimport { CORE_OPTIONS, LOCALIZATIONS, DYNAMIC_LAYOUTS_TOKEN, OTHERS_GROUP, QUEUE_MANAGER, SORT_COMPARE_FUNC, TENANT_KEY, compareFuncFactory, coreOptionsFactory, localizationContributor, } from '../tokens';\nimport { RoutesHandler } from '../handlers';\nimport { AuthErrorFilterService } from '../abstracts';\nimport { DEFAULT_DYNAMIC_LAYOUTS } from '../constants';\nimport { LocalizationService, LocalStorageListenerService, AbpTitleStrategy } from '../services';\nimport { DefaultQueueManager, getInitialData } from '../utils';\nimport { CookieLanguageProvider, IncludeLocalizationResourcesProvider, LocaleProvider } from './';\nimport { timezoneInterceptor, transferStateInterceptor } from '../interceptors';\nexport var CoreFeatureKind;\n(function (CoreFeatureKind) {\n CoreFeatureKind[CoreFeatureKind[\"Options\"] = 0] = \"Options\";\n CoreFeatureKind[CoreFeatureKind[\"CompareFunctionFactory\"] = 1] = \"CompareFunctionFactory\";\n CoreFeatureKind[CoreFeatureKind[\"TitleStrategy\"] = 2] = \"TitleStrategy\";\n})(CoreFeatureKind || (CoreFeatureKind = {}));\nfunction makeCoreFeature(kind, providers) {\n return {\n ɵkind: kind,\n ɵproviders: providers,\n };\n}\nexport function withOptions(options = {}) {\n return makeCoreFeature(CoreFeatureKind.Options, [\n {\n provide: 'CORE_OPTIONS',\n useValue: options,\n },\n {\n provide: CORE_OPTIONS,\n useFactory: coreOptionsFactory,\n deps: ['CORE_OPTIONS'],\n },\n { provide: TENANT_KEY, useValue: options.tenantKey || '__tenant' },\n {\n provide: LOCALIZATIONS,\n multi: true,\n useValue: localizationContributor(options.localizations),\n deps: [LocalizationService],\n },\n {\n provide: OTHERS_GROUP,\n useValue: options.othersGroup || 'AbpUi::OthersGroup',\n },\n {\n provide: DYNAMIC_LAYOUTS_TOKEN,\n useValue: options.dynamicLayouts || DEFAULT_DYNAMIC_LAYOUTS,\n },\n ]);\n}\nexport function withTitleStrategy(strategy) {\n return makeCoreFeature(CoreFeatureKind.TitleStrategy, [\n {\n provide: TitleStrategy,\n useExisting: strategy,\n },\n ]);\n}\nexport function withCompareFuncFactory(factory) {\n return makeCoreFeature(CoreFeatureKind.CompareFunctionFactory, [\n {\n provide: SORT_COMPARE_FUNC,\n useFactory: factory,\n },\n ]);\n}\nexport function provideAbpCore(...features) {\n const providers = [\n provideHttpClient(withInterceptorsFromDi(), withXsrfConfiguration({\n cookieName: 'XSRF-TOKEN',\n headerName: 'RequestVerificationToken',\n }), withFetch(), withInterceptors([transferStateInterceptor, timezoneInterceptor])),\n provideAppInitializer(async () => {\n inject(LocalizationService);\n inject(LocalStorageListenerService);\n inject(RoutesHandler);\n await getInitialData();\n }),\n LocaleProvider,\n CookieLanguageProvider,\n {\n provide: SORT_COMPARE_FUNC,\n useFactory: compareFuncFactory,\n },\n {\n provide: QUEUE_MANAGER,\n useClass: DefaultQueueManager,\n },\n AuthErrorFilterService,\n IncludeLocalizationResourcesProvider,\n {\n provide: TitleStrategy,\n useExisting: AbpTitleStrategy,\n },\n ];\n for (const feature of features) {\n providers.push(...feature.ɵproviders);\n }\n return makeEnvironmentProviders(providers);\n}\nexport function provideAbpCoreChild(options = {}) {\n return makeEnvironmentProviders([\n {\n provide: LOCALIZATIONS,\n multi: true,\n useValue: localizationContributor(options.localizations),\n deps: [LocalizationService],\n },\n ]);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1tb2R1bGUtY29uZmlnLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Byb3ZpZGVycy9jb3JlLW1vZHVsZS1jb25maWcucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFZLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixxQkFBcUIsR0FDdEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsWUFBWSxFQUNaLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsdUJBQXVCLEdBQ3hCLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsMkJBQTJCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0NBQW9DLEVBQUUsY0FBYyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhGLE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDekIsMkRBQU8sQ0FBQTtJQUNQLHlGQUFzQixDQUFBO0lBQ3RCLHVFQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsZUFBZSxLQUFmLGVBQWUsUUFJMUI7QUFPRCxTQUFTLGVBQWUsQ0FDdEIsSUFBVyxFQUNYLFNBQXFCO0lBRXJCLE9BQU87UUFDTCxLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxTQUFTO0tBQ3RCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxVQUFVLEVBQWM7SUFDbEQsT0FBTyxlQUFlLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRTtRQUM5QztZQUNFLE9BQU8sRUFBRSxjQUFjO1lBQ3ZCLFFBQVEsRUFBRSxPQUFPO1NBQ2xCO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsWUFBWTtZQUNyQixVQUFVLEVBQUUsa0JBQWtCO1lBQzlCLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQztTQUN2QjtRQUNELEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxVQUFVLEVBQUU7UUFDbEU7WUFDRSxPQUFPLEVBQUUsYUFBYTtZQUN0QixLQUFLLEVBQUUsSUFBSTtZQUNYLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ3hELElBQUksRUFBRSxDQUFDLG1CQUFtQixDQUFDO1NBQzVCO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsWUFBWTtZQUNyQixRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsSUFBSSxvQkFBb0I7U0FDdEQ7UUFDRDtZQUNFLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxjQUFjLElBQUksdUJBQXVCO1NBQzVEO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxRQUFpQjtJQUNqRCxPQUFPLGVBQWUsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFO1FBQ3BEO1lBQ0UsT0FBTyxFQUFFLGFBQWE7WUFDdEIsV0FBVyxFQUFFLFFBQVE7U0FDdEI7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxPQUF5RDtJQUV6RCxPQUFPLGVBQWUsQ0FBQyxlQUFlLENBQUMsc0JBQXNCLEVBQUU7UUFDN0Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFVBQVUsRUFBRSxPQUFPO1NBQ3BCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBRyxRQUF3QztJQUN4RSxNQUFNLFNBQVMsR0FBRztRQUNoQixpQkFBaUIsQ0FDZixzQkFBc0IsRUFBRSxFQUN4QixxQkFBcUIsQ0FBQztZQUNwQixVQUFVLEVBQUUsWUFBWTtZQUN4QixVQUFVLEVBQUUsMEJBQTBCO1NBQ3ZDLENBQUMsRUFDRixTQUFTLEVBQUUsRUFDWCxnQkFBZ0IsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FDbEU7UUFDRCxxQkFBcUIsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUMvQixNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUM1QixNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUNwQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdEIsTUFBTSxjQUFjLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUM7UUFDRixjQUFjO1FBQ2Qsc0JBQXNCO1FBQ3RCO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixVQUFVLEVBQUUsa0JBQWtCO1NBQy9CO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsYUFBYTtZQUN0QixRQUFRLEVBQUUsbUJBQW1CO1NBQzlCO1FBQ0Qsc0JBQXNCO1FBQ3RCLG9DQUFvQztRQUNwQztZQUNFLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFdBQVcsRUFBRSxnQkFBZ0I7U0FDOUI7S0FDRixDQUFDO0lBRUYsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMvQixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxPQUFPLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsVUFBVSxFQUFlO0lBQzNELE9BQU8sd0JBQXdCLENBQUM7UUFDOUI7WUFDRSxPQUFPLEVBQUUsYUFBYTtZQUN0QixLQUFLLEVBQUUsSUFBSTtZQUNYLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ3hELElBQUksRUFBRSxDQUFDLG1CQUFtQixDQUFDO1NBQzVCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycywgUHJvdmlkZXIsIHByb3ZpZGVBcHBJbml0aWFsaXplciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRpdGxlU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge1xyXG4gIHByb3ZpZGVIdHRwQ2xpZW50LFxyXG4gIHdpdGhGZXRjaCxcclxuICB3aXRoSW50ZXJjZXB0b3JzLFxyXG4gIHdpdGhJbnRlcmNlcHRvcnNGcm9tRGksXHJcbiAgd2l0aFhzcmZDb25maWd1cmF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICBDT1JFX09QVElPTlMsXHJcbiAgTE9DQUxJWkFUSU9OUyxcclxuICBEWU5BTUlDX0xBWU9VVFNfVE9LRU4sXHJcbiAgT1RIRVJTX0dST1VQLFxyXG4gIFFVRVVFX01BTkFHRVIsXHJcbiAgU09SVF9DT01QQVJFX0ZVTkMsXHJcbiAgVEVOQU5UX0tFWSxcclxuICBjb21wYXJlRnVuY0ZhY3RvcnksXHJcbiAgY29yZU9wdGlvbnNGYWN0b3J5LFxyXG4gIGxvY2FsaXphdGlvbkNvbnRyaWJ1dG9yLFxyXG59IGZyb20gJy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IFJvdXRlc0hhbmRsZXIgfSBmcm9tICcuLi9oYW5kbGVycyc7XHJcbmltcG9ydCB7IEFCUCwgU29ydGFibGVJdGVtIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgQXV0aEVycm9yRmlsdGVyU2VydmljZSB9IGZyb20gJy4uL2Fic3RyYWN0cyc7XHJcbmltcG9ydCB7IERFRkFVTFRfRFlOQU1JQ19MQVlPVVRTIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSwgTG9jYWxTdG9yYWdlTGlzdGVuZXJTZXJ2aWNlLCBBYnBUaXRsZVN0cmF0ZWd5IH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBEZWZhdWx0UXVldWVNYW5hZ2VyLCBnZXRJbml0aWFsRGF0YSB9IGZyb20gJy4uL3V0aWxzJztcclxuaW1wb3J0IHsgQ29va2llTGFuZ3VhZ2VQcm92aWRlciwgSW5jbHVkZUxvY2FsaXphdGlvblJlc291cmNlc1Byb3ZpZGVyLCBMb2NhbGVQcm92aWRlciB9IGZyb20gJy4vJztcclxuaW1wb3J0IHsgdGltZXpvbmVJbnRlcmNlcHRvciwgdHJhbnNmZXJTdGF0ZUludGVyY2VwdG9yIH0gZnJvbSAnLi4vaW50ZXJjZXB0b3JzJztcclxuXHJcbmV4cG9ydCBlbnVtIENvcmVGZWF0dXJlS2luZCB7XHJcbiAgT3B0aW9ucyxcclxuICBDb21wYXJlRnVuY3Rpb25GYWN0b3J5LFxyXG4gIFRpdGxlU3RyYXRlZ3ksXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29yZUZlYXR1cmU8S2luZFQgZXh0ZW5kcyBDb3JlRmVhdHVyZUtpbmQ+IHtcclxuICDJtWtpbmQ6IEtpbmRUO1xyXG4gIMm1cHJvdmlkZXJzOiBQcm92aWRlcltdO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtYWtlQ29yZUZlYXR1cmU8S2luZFQgZXh0ZW5kcyBDb3JlRmVhdHVyZUtpbmQ+KFxyXG4gIGtpbmQ6IEtpbmRULFxyXG4gIHByb3ZpZGVyczogUHJvdmlkZXJbXSxcclxuKTogQ29yZUZlYXR1cmU8S2luZFQ+IHtcclxuICByZXR1cm4ge1xyXG4gICAgybVraW5kOiBraW5kLFxyXG4gICAgybVwcm92aWRlcnM6IHByb3ZpZGVycyxcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gd2l0aE9wdGlvbnMob3B0aW9ucyA9IHt9IGFzIEFCUC5Sb290KTogQ29yZUZlYXR1cmU8Q29yZUZlYXR1cmVLaW5kLk9wdGlvbnM+IHtcclxuICByZXR1cm4gbWFrZUNvcmVGZWF0dXJlKENvcmVGZWF0dXJlS2luZC5PcHRpb25zLCBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdDT1JFX09QVElPTlMnLFxyXG4gICAgICB1c2VWYWx1ZTogb3B0aW9ucyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IENPUkVfT1BUSU9OUyxcclxuICAgICAgdXNlRmFjdG9yeTogY29yZU9wdGlvbnNGYWN0b3J5LFxyXG4gICAgICBkZXBzOiBbJ0NPUkVfT1BUSU9OUyddLFxyXG4gICAgfSxcclxuICAgIHsgcHJvdmlkZTogVEVOQU5UX0tFWSwgdXNlVmFsdWU6IG9wdGlvbnMudGVuYW50S2V5IHx8ICdfX3RlbmFudCcgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTE9DQUxJWkFUSU9OUyxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZVZhbHVlOiBsb2NhbGl6YXRpb25Db250cmlidXRvcihvcHRpb25zLmxvY2FsaXphdGlvbnMpLFxyXG4gICAgICBkZXBzOiBbTG9jYWxpemF0aW9uU2VydmljZV0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBPVEhFUlNfR1JPVVAsXHJcbiAgICAgIHVzZVZhbHVlOiBvcHRpb25zLm90aGVyc0dyb3VwIHx8ICdBYnBVaTo6T3RoZXJzR3JvdXAnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogRFlOQU1JQ19MQVlPVVRTX1RPS0VOLFxyXG4gICAgICB1c2VWYWx1ZTogb3B0aW9ucy5keW5hbWljTGF5b3V0cyB8fCBERUZBVUxUX0RZTkFNSUNfTEFZT1VUUyxcclxuICAgIH0sXHJcbiAgXSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB3aXRoVGl0bGVTdHJhdGVneShzdHJhdGVneTogdW5rbm93bik6IENvcmVGZWF0dXJlPENvcmVGZWF0dXJlS2luZC5UaXRsZVN0cmF0ZWd5PiB7XHJcbiAgcmV0dXJuIG1ha2VDb3JlRmVhdHVyZShDb3JlRmVhdHVyZUtpbmQuVGl0bGVTdHJhdGVneSwgW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBUaXRsZVN0cmF0ZWd5LFxyXG4gICAgICB1c2VFeGlzdGluZzogc3RyYXRlZ3ksXHJcbiAgICB9LFxyXG4gIF0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gd2l0aENvbXBhcmVGdW5jRmFjdG9yeShcclxuICBmYWN0b3J5OiAoYTogU29ydGFibGVJdGVtLCBiOiBTb3J0YWJsZUl0ZW0pID0+IDEgfCAtMSB8IDAsXHJcbik6IENvcmVGZWF0dXJlPENvcmVGZWF0dXJlS2luZC5Db21wYXJlRnVuY3Rpb25GYWN0b3J5PiB7XHJcbiAgcmV0dXJuIG1ha2VDb3JlRmVhdHVyZShDb3JlRmVhdHVyZUtpbmQuQ29tcGFyZUZ1bmN0aW9uRmFjdG9yeSwgW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBTT1JUX0NPTVBBUkVfRlVOQyxcclxuICAgICAgdXNlRmFjdG9yeTogZmFjdG9yeSxcclxuICAgIH0sXHJcbiAgXSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQWJwQ29yZSguLi5mZWF0dXJlczogQ29yZUZlYXR1cmU8Q29yZUZlYXR1cmVLaW5kPltdKSB7XHJcbiAgY29uc3QgcHJvdmlkZXJzID0gW1xyXG4gICAgcHJvdmlkZUh0dHBDbGllbnQoXHJcbiAgICAgIHdpdGhJbnRlcmNlcHRvcnNGcm9tRGkoKSxcclxuICAgICAgd2l0aFhzcmZDb25maWd1cmF0aW9uKHtcclxuICAgICAgICBjb29raWVOYW1lOiAnWFNSRi1UT0tFTicsXHJcbiAgICAgICAgaGVhZGVyTmFtZTogJ1JlcXVlc3RWZXJpZmljYXRpb25Ub2tlbicsXHJcbiAgICAgIH0pLFxyXG4gICAgICB3aXRoRmV0Y2goKSxcclxuICAgICAgd2l0aEludGVyY2VwdG9ycyhbdHJhbnNmZXJTdGF0ZUludGVyY2VwdG9yLCB0aW1lem9uZUludGVyY2VwdG9yXSksXHJcbiAgICApLFxyXG4gICAgcHJvdmlkZUFwcEluaXRpYWxpemVyKGFzeW5jICgpID0+IHtcclxuICAgICAgaW5qZWN0KExvY2FsaXphdGlvblNlcnZpY2UpO1xyXG4gICAgICBpbmplY3QoTG9jYWxTdG9yYWdlTGlzdGVuZXJTZXJ2aWNlKTtcclxuICAgICAgaW5qZWN0KFJvdXRlc0hhbmRsZXIpO1xyXG4gICAgICBhd2FpdCBnZXRJbml0aWFsRGF0YSgpO1xyXG4gICAgfSksXHJcbiAgICBMb2NhbGVQcm92aWRlcixcclxuICAgIENvb2tpZUxhbmd1YWdlUHJvdmlkZXIsXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IFNPUlRfQ09NUEFSRV9GVU5DLFxyXG4gICAgICB1c2VGYWN0b3J5OiBjb21wYXJlRnVuY0ZhY3RvcnksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBRVUVVRV9NQU5BR0VSLFxyXG4gICAgICB1c2VDbGFzczogRGVmYXVsdFF1ZXVlTWFuYWdlcixcclxuICAgIH0sXHJcbiAgICBBdXRoRXJyb3JGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgSW5jbHVkZUxvY2FsaXphdGlvblJlc291cmNlc1Byb3ZpZGVyLFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBUaXRsZVN0cmF0ZWd5LFxyXG4gICAgICB1c2VFeGlzdGluZzogQWJwVGl0bGVTdHJhdGVneSxcclxuICAgIH0sXHJcbiAgXTtcclxuXHJcbiAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzKSB7XHJcbiAgICBwcm92aWRlcnMucHVzaCguLi5mZWF0dXJlLsm1cHJvdmlkZXJzKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMocHJvdmlkZXJzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBYnBDb3JlQ2hpbGQob3B0aW9ucyA9IHt9IGFzIEFCUC5DaGlsZCkge1xyXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBMT0NBTElaQVRJT05TLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlVmFsdWU6IGxvY2FsaXphdGlvbkNvbnRyaWJ1dG9yKG9wdGlvbnMubG9jYWxpemF0aW9ucyksXHJcbiAgICAgIGRlcHM6IFtMb2NhbGl6YXRpb25TZXJ2aWNlXSxcclxuICAgIH0sXHJcbiAgXSk7XHJcbn1cclxuIl19","import { Injectable, Pipe, inject } from '@angular/core';\nimport { LocalizationService } from '../services/localization.service';\nimport * as i0 from \"@angular/core\";\nexport class LocalizationPipe {\n constructor() {\n this.localization = inject(LocalizationService);\n }\n transform(value = '', ...interpolateParams) {\n const params = interpolateParams.reduce((acc, val) => {\n if (!acc) {\n return val;\n }\n if (!val) {\n return acc;\n }\n return Array.isArray(val) ? [...acc, ...val] : [...acc, val];\n }, []) || [];\n return this.localization.instant(value, ...params);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LocalizationPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: LocalizationPipe, isStandalone: true, name: \"abpLocalization\" }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LocalizationPipe }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LocalizationPipe, decorators: [{\n type: Injectable\n }, {\n type: Pipe,\n args: [{\n name: 'abpLocalization',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvcGlwZXMvbG9jYWxpemF0aW9uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFNdkUsTUFBTSxPQUFPLGdCQUFnQjtJQUo3QjtRQUtVLGlCQUFZLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FtQnBEO0lBaEJDLFNBQVMsQ0FDUCxRQUEwQyxFQUFFLEVBQzVDLEdBQUcsaUJBQW9EO1FBRXZELE1BQU0sTUFBTSxHQUNWLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ1QsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1lBQ0QsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELENBQUM7OEdBbkJVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBSjVCLFVBQVU7O2tCQUNWLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGlCQUFpQjtpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uV2l0aERlZmF1bHQgfSBmcm9tICcuLi9tb2RlbHMvbG9jYWxpemF0aW9uJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdhYnBMb2NhbGl6YXRpb24nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIHByaXZhdGUgbG9jYWxpemF0aW9uID0gaW5qZWN0KExvY2FsaXphdGlvblNlcnZpY2UpO1xyXG5cclxuXHJcbiAgdHJhbnNmb3JtKFxyXG4gICAgdmFsdWU6IHN0cmluZyB8IExvY2FsaXphdGlvbldpdGhEZWZhdWx0ID0gJycsXHJcbiAgICAuLi5pbnRlcnBvbGF0ZVBhcmFtczogKHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkKVtdXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBhcmFtcyA9XHJcbiAgICAgIGludGVycG9sYXRlUGFyYW1zLnJlZHVjZSgoYWNjLCB2YWwpID0+IHtcclxuICAgICAgICBpZiAoIWFjYykge1xyXG4gICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF2YWwpIHtcclxuICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCkgPyBbLi4uYWNjLCAuLi52YWxdIDogWy4uLmFjYywgdmFsXTtcclxuICAgICAgfSwgW10pIHx8IFtdO1xyXG4gICAgcmV0dXJuIHRoaXMubG9jYWxpemF0aW9uLmluc3RhbnQodmFsdWUsIC4uLnBhcmFtcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { inject, Injectable, Pipe, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport * as i0 from \"@angular/core\";\nexport class SafeHtmlPipe {\n constructor() {\n this.sanitizer = inject(DomSanitizer);\n }\n transform(value) {\n if (typeof value !== 'string')\n return '';\n return this.sanitizer.sanitize(SecurityContext.HTML, value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: SafeHtmlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: SafeHtmlPipe, isStandalone: true, name: \"abpSafeHtml\" }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: SafeHtmlPipe }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: SafeHtmlPipe, decorators: [{\n type: Injectable\n }, {\n type: Pipe,\n args: [{\n name: 'abpSafeHtml',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1odG1sLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvcGlwZXMvc2FmZS1odG1sLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFpQixlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQU16RCxNQUFNLE9BQU8sWUFBWTtJQUp6QjtRQUttQixjQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBTW5EO0lBSkMsU0FBUyxDQUFDLEtBQWE7UUFDckIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7OEdBTlUsWUFBWTs0R0FBWixZQUFZO2tIQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBSnhCLFVBQVU7O2tCQUNWLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGFBQWE7aUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBTZWN1cml0eUNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnYWJwU2FmZUh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2FmZUh0bWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcclxuXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHJldHVybiAnJztcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgdmFsdWUpO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Injectable, Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class SortPipe {\n transform(value, sortOrder = 'asc', sortKey) {\n sortOrder = sortOrder && sortOrder.toLowerCase();\n if (!value || (sortOrder !== 'asc' && sortOrder !== 'desc'))\n return value;\n let numberArray = [];\n let stringArray = [];\n if (!sortKey) {\n numberArray = value.filter(item => typeof item === 'number').sort();\n stringArray = value.filter(item => typeof item === 'string').sort();\n }\n else {\n numberArray = value\n .filter(item => typeof item[sortKey] === 'number')\n .sort((a, b) => a[sortKey] - b[sortKey]);\n stringArray = value\n .filter(item => typeof item[sortKey] === 'string')\n .sort((a, b) => {\n if (a[sortKey] < b[sortKey])\n return -1;\n else if (a[sortKey] > b[sortKey])\n return 1;\n else\n return 0;\n });\n }\n const sorted = [\n ...numberArray,\n ...stringArray,\n ...value.filter(item => typeof (sortKey ? item[sortKey] : item) !== 'number' &&\n typeof (sortKey ? item[sortKey] : item) !== 'string'),\n ];\n return sortOrder === 'asc' ? sorted : sorted.reverse();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: SortPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: SortPipe, isStandalone: true, name: \"abpSort\" }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: SortPipe }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: SortPipe, decorators: [{\n type: Injectable\n }, {\n type: Pipe,\n args: [{\n name: 'abpSort',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3BpcGVzL3NvcnQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBT2hFLE1BQU0sT0FBTyxRQUFRO0lBQ25CLFNBQVMsQ0FBQyxLQUFZLEVBQUUsWUFBZ0MsS0FBSyxFQUFFLE9BQXlCO1FBQ3RGLFNBQVMsR0FBRyxTQUFTLElBQUssU0FBUyxDQUFDLFdBQVcsRUFBVSxDQUFDO1FBRTFELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUUxRSxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXJCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEUsV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0RSxDQUFDO2FBQU0sQ0FBQztZQUNOLFdBQVcsR0FBRyxLQUFLO2lCQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUM7aUJBQ2pELElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMzQyxXQUFXLEdBQUcsS0FBSztpQkFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDO2lCQUNqRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztvQkFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO3FCQUNsQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO29CQUFFLE9BQU8sQ0FBQyxDQUFDOztvQkFDdEMsT0FBTyxDQUFDLENBQUM7WUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUc7WUFDYixHQUFHLFdBQVc7WUFDZCxHQUFHLFdBQVc7WUFDZCxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQ2IsSUFBSSxDQUFDLEVBQUUsQ0FDTCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVE7Z0JBQ3BELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxDQUN2RDtTQUNGLENBQUM7UUFDRixPQUFPLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pELENBQUM7OEdBbENVLFFBQVE7NEdBQVIsUUFBUTtrSEFBUixRQUFROzsyRkFBUixRQUFRO2tCQUpwQixVQUFVOztrQkFDVixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxTQUFTO2lCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuZXhwb3J0IHR5cGUgU29ydE9yZGVyID0gJ2FzYycgfCAnZGVzYyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnYWJwU29ydCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTb3J0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55W10sIHNvcnRPcmRlcjogU29ydE9yZGVyIHwgc3RyaW5nID0gJ2FzYycsIHNvcnRLZXk/OiBzdHJpbmcgfCBudW1iZXIpOiBhbnkge1xyXG4gICAgc29ydE9yZGVyID0gc29ydE9yZGVyICYmIChzb3J0T3JkZXIudG9Mb3dlckNhc2UoKSBhcyBhbnkpO1xyXG5cclxuICAgIGlmICghdmFsdWUgfHwgKHNvcnRPcmRlciAhPT0gJ2FzYycgJiYgc29ydE9yZGVyICE9PSAnZGVzYycpKSByZXR1cm4gdmFsdWU7XHJcblxyXG4gICAgbGV0IG51bWJlckFycmF5ID0gW107XHJcbiAgICBsZXQgc3RyaW5nQXJyYXkgPSBbXTtcclxuXHJcbiAgICBpZiAoIXNvcnRLZXkpIHtcclxuICAgICAgbnVtYmVyQXJyYXkgPSB2YWx1ZS5maWx0ZXIoaXRlbSA9PiB0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicpLnNvcnQoKTtcclxuICAgICAgc3RyaW5nQXJyYXkgPSB2YWx1ZS5maWx0ZXIoaXRlbSA9PiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpLnNvcnQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG51bWJlckFycmF5ID0gdmFsdWVcclxuICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gdHlwZW9mIGl0ZW1bc29ydEtleV0gPT09ICdudW1iZXInKVxyXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhW3NvcnRLZXldIC0gYltzb3J0S2V5XSk7XHJcbiAgICAgIHN0cmluZ0FycmF5ID0gdmFsdWVcclxuICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gdHlwZW9mIGl0ZW1bc29ydEtleV0gPT09ICdzdHJpbmcnKVxyXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICBpZiAoYVtzb3J0S2V5XSA8IGJbc29ydEtleV0pIHJldHVybiAtMTtcclxuICAgICAgICAgIGVsc2UgaWYgKGFbc29ydEtleV0gPiBiW3NvcnRLZXldKSByZXR1cm4gMTtcclxuICAgICAgICAgIGVsc2UgcmV0dXJuIDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzb3J0ZWQgPSBbXHJcbiAgICAgIC4uLm51bWJlckFycmF5LFxyXG4gICAgICAuLi5zdHJpbmdBcnJheSxcclxuICAgICAgLi4udmFsdWUuZmlsdGVyKFxyXG4gICAgICAgIGl0ZW0gPT5cclxuICAgICAgICAgIHR5cGVvZiAoc29ydEtleSA/IGl0ZW1bc29ydEtleV0gOiBpdGVtKSAhPT0gJ251bWJlcicgJiZcclxuICAgICAgICAgIHR5cGVvZiAoc29ydEtleSA/IGl0ZW1bc29ydEtleV0gOiBpdGVtKSAhPT0gJ3N0cmluZycsXHJcbiAgICAgICksXHJcbiAgICBdO1xyXG4gICAgcmV0dXJuIHNvcnRPcmRlciA9PT0gJ2FzYycgPyBzb3J0ZWQgOiBzb3J0ZWQucmV2ZXJzZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=","import { InjectionToken, Injector, Pipe, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport const INJECTOR_PIPE_DATA_TOKEN = new InjectionToken('INJECTOR_PIPE_DATA_TOKEN');\nexport class ToInjectorPipe {\n constructor() {\n this.injector = inject(Injector);\n }\n transform(value, token = INJECTOR_PIPE_DATA_TOKEN, name = 'ToInjectorPipe') {\n return Injector.create({\n providers: [\n {\n provide: token,\n useValue: value,\n },\n ],\n parent: this.injector,\n name,\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ToInjectorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: ToInjectorPipe, isStandalone: true, name: \"toInjector\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ToInjectorPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'toInjector',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8taW5qZWN0b3IucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9waXBlcy90by1pbmplY3Rvci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV0RixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FDeEQsMEJBQTBCLENBQzNCLENBQUM7QUFLRixNQUFNLE9BQU8sY0FBYztJQUgzQjtRQUlVLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FrQnJDO0lBaEJDLFNBQVMsQ0FDUCxLQUFVLEVBQ1YsUUFBNkIsd0JBQXdCLEVBQ3JELElBQUksR0FBRyxnQkFBZ0I7UUFFdkIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsS0FBSztvQkFDZCxRQUFRLEVBQUUsS0FBSztpQkFDaEI7YUFDRjtZQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNyQixJQUFJO1NBQ0wsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FsQlUsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUgxQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxZQUFZO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBJbmplY3RvciwgUGlwZSwgUGlwZVRyYW5zZm9ybSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgSU5KRUNUT1JfUElQRV9EQVRBX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFBpcGVUcmFuc2Zvcm0+KFxyXG4gICdJTkpFQ1RPUl9QSVBFX0RBVEFfVE9LRU4nLFxyXG4pO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICd0b0luamVjdG9yJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRvSW5qZWN0b3JQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcblxyXG4gIHRyYW5zZm9ybShcclxuICAgIHZhbHVlOiBhbnksXHJcbiAgICB0b2tlbjogSW5qZWN0aW9uVG9rZW48YW55PiA9IElOSkVDVE9SX1BJUEVfREFUQV9UT0tFTixcclxuICAgIG5hbWUgPSAnVG9JbmplY3RvclBpcGUnLFxyXG4gICk6IEluamVjdG9yIHtcclxuICAgIHJldHVybiBJbmplY3Rvci5jcmVhdGUoe1xyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiB0b2tlbixcclxuICAgICAgICAgIHVzZVZhbHVlOiB2YWx1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXHJcbiAgICAgIG5hbWUsXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19","import { DatePipe, DATE_PIPE_DEFAULT_TIMEZONE } from '@angular/common';\nimport { LOCALE_ID, Pipe, inject } from '@angular/core';\nimport { ConfigStateService } from '../services';\nimport { getShortDateFormat } from '../utils/date-utils';\nimport * as i0 from \"@angular/core\";\nexport class ShortDatePipe extends DatePipe {\n constructor() {\n const locale = inject(LOCALE_ID);\n const defaultTimezone = inject(DATE_PIPE_DEFAULT_TIMEZONE, { optional: true });\n super(locale, defaultTimezone);\n this.configStateService = inject(ConfigStateService);\n }\n transform(value, timezone, locale) {\n const format = getShortDateFormat(this.configStateService);\n return super.transform(value, format, timezone, locale);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ShortDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: ShortDatePipe, isStandalone: true, name: \"shortDate\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ShortDatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'shortDate',\n pure: true,\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnQtZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3BpcGVzL3Nob3J0LWRhdGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBTXpELE1BQU0sT0FBTyxhQUFjLFNBQVEsUUFBUTtJQUd6QztRQUNFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUvRSxLQUFLLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBTnpCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBT3hELENBQUM7SUFTRCxTQUFTLENBQ1AsS0FBZ0QsRUFDaEQsUUFBaUIsRUFDakIsTUFBZTtRQUVmLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDOzhHQXhCVSxhQUFhOzRHQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBSnpCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLElBQUksRUFBRSxJQUFJO2lCQUNYIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUsIERBVEVfUElQRV9ERUZBVUxUX1RJTUVaT05FIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTE9DQUxFX0lELCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlnU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBnZXRTaG9ydERhdGVGb3JtYXQgfSBmcm9tICcuLi91dGlscy9kYXRlLXV0aWxzJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnc2hvcnREYXRlJyxcclxuICBwdXJlOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hvcnREYXRlUGlwZSBleHRlbmRzIERhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgcHJpdmF0ZSBjb25maWdTdGF0ZVNlcnZpY2UgPSBpbmplY3QoQ29uZmlnU3RhdGVTZXJ2aWNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBsb2NhbGUgPSBpbmplY3QoTE9DQUxFX0lEKTtcclxuICAgIGNvbnN0IGRlZmF1bHRUaW1lem9uZSA9IGluamVjdChEQVRFX1BJUEVfREVGQVVMVF9USU1FWk9ORSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcclxuXHJcbiAgICBzdXBlcihsb2NhbGUsIGRlZmF1bHRUaW1lem9uZSk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0oXHJcbiAgICB2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlcixcclxuICAgIGZvcm1hdD86IHN0cmluZyxcclxuICAgIHRpbWV6b25lPzogc3RyaW5nLFxyXG4gICAgbG9jYWxlPzogc3RyaW5nLFxyXG4gICk6IHN0cmluZyB8IG51bGw7XHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBudWxsIHwgdW5kZWZpbmVkLCBmb3JtYXQ/OiBzdHJpbmcsIHRpbWV6b25lPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBudWxsO1xyXG4gIHRyYW5zZm9ybShcclxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICAgIHRpbWV6b25lPzogc3RyaW5nLFxyXG4gICAgbG9jYWxlPzogc3RyaW5nLFxyXG4gICk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgZm9ybWF0ID0gZ2V0U2hvcnREYXRlRm9ybWF0KHRoaXMuY29uZmlnU3RhdGVTZXJ2aWNlKTtcclxuICAgIHJldHVybiBzdXBlci50cmFuc2Zvcm0odmFsdWUsIGZvcm1hdCwgdGltZXpvbmUsIGxvY2FsZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { DatePipe, DATE_PIPE_DEFAULT_TIMEZONE } from '@angular/common';\nimport { LOCALE_ID, Pipe, inject } from '@angular/core';\nimport { ConfigStateService } from '../services';\nimport { getShortTimeFormat } from '../utils/date-utils';\nimport * as i0 from \"@angular/core\";\nexport class ShortTimePipe extends DatePipe {\n constructor() {\n const locale = inject(LOCALE_ID);\n const defaultTimezone = inject(DATE_PIPE_DEFAULT_TIMEZONE, { optional: true });\n super(locale, defaultTimezone);\n this.configStateService = inject(ConfigStateService);\n }\n transform(value, timezone, locale) {\n const format = getShortTimeFormat(this.configStateService);\n return super.transform(value, format, timezone, locale);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ShortTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: ShortTimePipe, isStandalone: true, name: \"shortTime\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ShortTimePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'shortTime',\n pure: true,\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnQtdGltZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3BpcGVzL3Nob3J0LXRpbWUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBTXpELE1BQU0sT0FBTyxhQUFjLFNBQVEsUUFBUTtJQUd6QztRQUNFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUvRSxLQUFLLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBTnpCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBT3hELENBQUM7SUFTRCxTQUFTLENBQ1AsS0FBZ0QsRUFDaEQsUUFBaUIsRUFDakIsTUFBZTtRQUVmLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDOzhHQXhCVSxhQUFhOzRHQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBSnpCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLElBQUksRUFBRSxJQUFJO2lCQUNYIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUsIERBVEVfUElQRV9ERUZBVUxUX1RJTUVaT05FIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTE9DQUxFX0lELCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlnU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBnZXRTaG9ydFRpbWVGb3JtYXQgfSBmcm9tICcuLi91dGlscy9kYXRlLXV0aWxzJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnc2hvcnRUaW1lJyxcclxuICBwdXJlOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hvcnRUaW1lUGlwZSBleHRlbmRzIERhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgcHJpdmF0ZSBjb25maWdTdGF0ZVNlcnZpY2UgPSBpbmplY3QoQ29uZmlnU3RhdGVTZXJ2aWNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBsb2NhbGUgPSBpbmplY3QoTE9DQUxFX0lEKTtcclxuICAgIGNvbnN0IGRlZmF1bHRUaW1lem9uZSA9IGluamVjdChEQVRFX1BJUEVfREVGQVVMVF9USU1FWk9ORSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcclxuXHJcbiAgICBzdXBlcihsb2NhbGUsIGRlZmF1bHRUaW1lem9uZSk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0oXHJcbiAgICB2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlcixcclxuICAgIGZvcm1hdD86IHN0cmluZyxcclxuICAgIHRpbWV6b25lPzogc3RyaW5nLFxyXG4gICAgbG9jYWxlPzogc3RyaW5nLFxyXG4gICk6IHN0cmluZyB8IG51bGw7XHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBudWxsIHwgdW5kZWZpbmVkLCBmb3JtYXQ/OiBzdHJpbmcsIHRpbWV6b25lPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBudWxsO1xyXG4gIHRyYW5zZm9ybShcclxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICAgIHRpbWV6b25lPzogc3RyaW5nLFxyXG4gICAgbG9jYWxlPzogc3RyaW5nLFxyXG4gICk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgZm9ybWF0ID0gZ2V0U2hvcnRUaW1lRm9ybWF0KHRoaXMuY29uZmlnU3RhdGVTZXJ2aWNlKTtcclxuICAgIHJldHVybiBzdXBlci50cmFuc2Zvcm0odmFsdWUsIGZvcm1hdCwgdGltZXpvbmUsIGxvY2FsZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { DatePipe, DATE_PIPE_DEFAULT_TIMEZONE } from '@angular/common';\nimport { LOCALE_ID, Pipe, inject } from '@angular/core';\nimport { ConfigStateService } from '../services';\nimport { getShortDateShortTimeFormat } from '../utils/date-utils';\nimport * as i0 from \"@angular/core\";\nexport class ShortDateTimePipe extends DatePipe {\n constructor() {\n const locale = inject(LOCALE_ID);\n const defaultTimezone = inject(DATE_PIPE_DEFAULT_TIMEZONE, { optional: true });\n super(locale, defaultTimezone);\n this.configStateService = inject(ConfigStateService);\n }\n transform(value, timezone, locale) {\n const format = getShortDateShortTimeFormat(this.configStateService);\n return super.transform(value, format, timezone, locale);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ShortDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: ShortDateTimePipe, isStandalone: true, name: \"shortDateTime\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ShortDateTimePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'shortDateTime',\n pure: true,\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnQtZGF0ZS10aW1lLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvcGlwZXMvc2hvcnQtZGF0ZS10aW1lLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQU1sRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsUUFBUTtJQUc3QztRQUNFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUvRSxLQUFLLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBTnpCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBT3hELENBQUM7SUFTRCxTQUFTLENBQ1AsS0FBZ0QsRUFDaEQsUUFBaUIsRUFDakIsTUFBZTtRQUVmLE1BQU0sTUFBTSxHQUFHLDJCQUEyQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDOzhHQXhCVSxpQkFBaUI7NEdBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFKN0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZUFBZTtvQkFDckIsSUFBSSxFQUFFLElBQUk7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSwgREFURV9QSVBFX0RFRkFVTFRfVElNRVpPTkUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBMT0NBTEVfSUQsIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IGdldFNob3J0RGF0ZVNob3J0VGltZUZvcm1hdCB9IGZyb20gJy4uL3V0aWxzL2RhdGUtdXRpbHMnO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdzaG9ydERhdGVUaW1lJyxcclxuICBwdXJlOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hvcnREYXRlVGltZVBpcGUgZXh0ZW5kcyBEYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIHByaXZhdGUgY29uZmlnU3RhdGVTZXJ2aWNlID0gaW5qZWN0KENvbmZpZ1N0YXRlU2VydmljZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc3QgbG9jYWxlID0gaW5qZWN0KExPQ0FMRV9JRCk7XHJcbiAgICBjb25zdCBkZWZhdWx0VGltZXpvbmUgPSBpbmplY3QoREFURV9QSVBFX0RFRkFVTFRfVElNRVpPTkUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcblxyXG4gICAgc3VwZXIobG9jYWxlLCBkZWZhdWx0VGltZXpvbmUpO1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtKFxyXG4gICAgdmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIsXHJcbiAgICBmb3JtYXQ/OiBzdHJpbmcsXHJcbiAgICB0aW1lem9uZT86IHN0cmluZyxcclxuICAgIGxvY2FsZT86IHN0cmluZyxcclxuICApOiBzdHJpbmcgfCBudWxsO1xyXG4gIHRyYW5zZm9ybSh2YWx1ZTogbnVsbCB8IHVuZGVmaW5lZCwgZm9ybWF0Pzogc3RyaW5nLCB0aW1lem9uZT86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogbnVsbDtcclxuICB0cmFuc2Zvcm0oXHJcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgICB0aW1lem9uZT86IHN0cmluZyxcclxuICAgIGxvY2FsZT86IHN0cmluZyxcclxuICApOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGNvbnN0IGZvcm1hdCA9IGdldFNob3J0RGF0ZVNob3J0VGltZUZvcm1hdCh0aGlzLmNvbmZpZ1N0YXRlU2VydmljZSk7XHJcbiAgICByZXR1cm4gc3VwZXIudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQsIHRpbWV6b25lLCBsb2NhbGUpO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Pipe, Injectable, inject, LOCALE_ID } from '@angular/core';\nimport { ConfigStateService, LocalizationService, TimeService, TimezoneService } from '../services';\nimport { getShortDateFormat, getShortDateShortTimeFormat, getShortTimeFormat } from '../utils';\nimport * as i0 from \"@angular/core\";\nexport class UtcToLocalPipe {\n constructor() {\n this.timezoneService = inject(TimezoneService);\n this.timeService = inject(TimeService);\n this.configState = inject(ConfigStateService);\n this.localizationService = inject(LocalizationService);\n this.locale = inject(LOCALE_ID);\n }\n transform(value, type) {\n if (!value)\n return '';\n const date = new Date(value);\n if (isNaN(date.getTime()))\n return '';\n const format = this.getFormat(type);\n try {\n if (this.timezoneService.isUtcClockEnabled) {\n const timeZone = this.timezoneService.timezone;\n return this.timeService.formatDateWithStandardOffset(date, format, timeZone);\n }\n else {\n return this.timeService.formatWithoutTimeZone(date, format);\n }\n }\n catch (err) {\n return value;\n }\n }\n getFormat(propType) {\n switch (propType) {\n case 'date':\n return getShortDateFormat(this.configState);\n case 'time':\n return getShortTimeFormat(this.configState);\n case 'datetime':\n default:\n return getShortDateShortTimeFormat(this.configState);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: UtcToLocalPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: UtcToLocalPipe, isStandalone: true, name: \"abpUtcToLocal\" }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: UtcToLocalPipe }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: UtcToLocalPipe, decorators: [{\n type: Injectable\n }, {\n type: Pipe,\n args: [{\n name: 'abpUtcToLocal',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRjLXRvLWxvY2FsLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvcGlwZXMvdXRjLXRvLWxvY2FsLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQU0vRixNQUFNLE9BQU8sY0FBYztJQUozQjtRQUtxQixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxQyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pDLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xELFdBQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7S0FvQy9DO0lBbENDLFNBQVMsQ0FDUCxLQUF1QyxFQUN2QyxJQUFrQztRQUVsQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXRCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXJDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDO1lBQ0gsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDO2dCQUMvQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMvRSxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM5RCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRU8sU0FBUyxDQUFDLFFBQXNDO1FBQ3RELFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDakIsS0FBSyxNQUFNO2dCQUNULE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlDLEtBQUssTUFBTTtnQkFDVCxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5QyxLQUFLLFVBQVUsQ0FBQztZQUNoQjtnQkFDRSxPQUFPLDJCQUEyQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQzs4R0F4Q1UsY0FBYzs0R0FBZCxjQUFjO2tIQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBSjFCLFVBQVU7O2tCQUNWLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGVBQWU7aUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgSW5qZWN0YWJsZSwgaW5qZWN0LCBMT0NBTEVfSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlnU3RhdGVTZXJ2aWNlLCBMb2NhbGl6YXRpb25TZXJ2aWNlLCBUaW1lU2VydmljZSwgVGltZXpvbmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBnZXRTaG9ydERhdGVGb3JtYXQsIGdldFNob3J0RGF0ZVNob3J0VGltZUZvcm1hdCwgZ2V0U2hvcnRUaW1lRm9ybWF0IH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2FicFV0Y1RvTG9jYWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXRjVG9Mb2NhbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGltZXpvbmVTZXJ2aWNlID0gaW5qZWN0KFRpbWV6b25lU2VydmljZSk7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpbWVTZXJ2aWNlID0gaW5qZWN0KFRpbWVTZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnU3RhdGUgPSBpbmplY3QoQ29uZmlnU3RhdGVTZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9jYWxlID0gaW5qZWN0KExPQ0FMRV9JRCk7XHJcblxyXG4gIHRyYW5zZm9ybShcclxuICAgIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICAgIHR5cGU6ICdkYXRlJyB8ICdkYXRldGltZScgfCAndGltZScsXHJcbiAgKTogc3RyaW5nIHwgRGF0ZSB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XHJcblxyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgIGlmIChpc05hTihkYXRlLmdldFRpbWUoKSkpIHJldHVybiAnJztcclxuXHJcbiAgICBjb25zdCBmb3JtYXQgPSB0aGlzLmdldEZvcm1hdCh0eXBlKTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy50aW1lem9uZVNlcnZpY2UuaXNVdGNDbG9ja0VuYWJsZWQpIHtcclxuICAgICAgICBjb25zdCB0aW1lWm9uZSA9IHRoaXMudGltZXpvbmVTZXJ2aWNlLnRpbWV6b25lO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVTZXJ2aWNlLmZvcm1hdERhdGVXaXRoU3RhbmRhcmRPZmZzZXQoZGF0ZSwgZm9ybWF0LCB0aW1lWm9uZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGltZVNlcnZpY2UuZm9ybWF0V2l0aG91dFRpbWVab25lKGRhdGUsIGZvcm1hdCk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZvcm1hdChwcm9wVHlwZTogJ2RhdGUnIHwgJ2RhdGV0aW1lJyB8ICd0aW1lJyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHByb3BUeXBlKSB7XHJcbiAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgIHJldHVybiBnZXRTaG9ydERhdGVGb3JtYXQodGhpcy5jb25maWdTdGF0ZSk7XHJcbiAgICAgIGNhc2UgJ3RpbWUnOlxyXG4gICAgICAgIHJldHVybiBnZXRTaG9ydFRpbWVGb3JtYXQodGhpcy5jb25maWdTdGF0ZSk7XHJcbiAgICAgIGNhc2UgJ2RhdGV0aW1lJzpcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZ2V0U2hvcnREYXRlU2hvcnRUaW1lRm9ybWF0KHRoaXMuY29uZmlnU3RhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=","import { inject, Injectable, Pipe } from '@angular/core';\nimport { of, filter, take, switchMap, map, startWith, distinctUntilChanged, } from 'rxjs';\nimport { ConfigStateService, LocalizationService } from '../services';\nimport * as i0 from \"@angular/core\";\nexport class LazyLocalizationPipe {\n constructor() {\n this.localizationService = inject(LocalizationService);\n this.configStateService = inject(ConfigStateService);\n }\n transform(key, ...params) {\n if (!key) {\n return of('');\n }\n const flatParams = params.reduce((acc, val) => (Array.isArray(val) ? acc.concat(val) : [...acc, val]), []);\n return this.configStateService.getAll$().pipe(filter(config => !!config.localization), take(1), switchMap(() => this.localizationService.get(key, ...flatParams)), map(translation => (translation && translation !== key ? translation : '')), startWith(''), distinctUntilChanged());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LazyLocalizationPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: LazyLocalizationPipe, isStandalone: true, name: \"abpLazyLocalization\" }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LazyLocalizationPipe }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LazyLocalizationPipe, decorators: [{\n type: Injectable\n }, {\n type: Pipe,\n args: [{\n name: 'abpLazyLocalization',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2NhbGl6YXRpb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9waXBlcy9sYXp5LWxvY2FsaXphdGlvbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUVMLEVBQUUsRUFDRixNQUFNLEVBQ04sSUFBSSxFQUNKLFNBQVMsRUFDVCxHQUFHLEVBQ0gsU0FBUyxFQUNULG9CQUFvQixHQUNyQixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFNdEUsTUFBTSxPQUFPLG9CQUFvQjtJQUpqQztRQUtVLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xELHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBcUJ6RDtJQW5CQyxTQUFTLENBQUMsR0FBVyxFQUFFLEdBQUcsTUFBNkI7UUFDckQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQzlCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQ3BFLEVBQUUsQ0FDSCxDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUMzQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUN2QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsRUFDakUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLElBQUksV0FBVyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUMzRSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQ2Isb0JBQW9CLEVBQUUsQ0FDdkIsQ0FBQztJQUNKLENBQUM7OEdBdEJVLG9CQUFvQjs0R0FBcEIsb0JBQW9CO2tIQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBSmhDLFVBQVU7O2tCQUNWLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHFCQUFxQjtpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBPYnNlcnZhYmxlLFxyXG4gIG9mLFxyXG4gIGZpbHRlcixcclxuICB0YWtlLFxyXG4gIHN3aXRjaE1hcCxcclxuICBtYXAsXHJcbiAgc3RhcnRXaXRoLFxyXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UsIExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnYWJwTGF6eUxvY2FsaXphdGlvbicsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXp5TG9jYWxpemF0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIHByaXZhdGUgbG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcclxuICBwcml2YXRlIGNvbmZpZ1N0YXRlU2VydmljZSA9IGluamVjdChDb25maWdTdGF0ZVNlcnZpY2UpO1xyXG5cclxuICB0cmFuc2Zvcm0oa2V5OiBzdHJpbmcsIC4uLnBhcmFtczogKHN0cmluZyB8IHN0cmluZ1tdKVtdKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGlmICgha2V5KSB7XHJcbiAgICAgIHJldHVybiBvZignJyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmxhdFBhcmFtcyA9IHBhcmFtcy5yZWR1Y2U8c3RyaW5nW10+KFxyXG4gICAgICAoYWNjLCB2YWwpID0+IChBcnJheS5pc0FycmF5KHZhbCkgPyBhY2MuY29uY2F0KHZhbCkgOiBbLi4uYWNjLCB2YWxdKSxcclxuICAgICAgW10sXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1N0YXRlU2VydmljZS5nZXRBbGwkKCkucGlwZShcclxuICAgICAgZmlsdGVyKGNvbmZpZyA9PiAhIWNvbmZpZy5sb2NhbGl6YXRpb24pLFxyXG4gICAgICB0YWtlKDEpLFxyXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmdldChrZXksIC4uLmZsYXRQYXJhbXMpKSxcclxuICAgICAgbWFwKHRyYW5zbGF0aW9uID0+ICh0cmFuc2xhdGlvbiAmJiB0cmFuc2xhdGlvbiAhPT0ga2V5ID8gdHJhbnNsYXRpb24gOiAnJykpLFxyXG4gICAgICBzdGFydFdpdGgoJycpLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class HtmlEncodePipe {\n transform(value) {\n if (!value) {\n return value;\n }\n return value\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: HtmlEncodePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: HtmlEncodePipe, isStandalone: true, name: \"htmlEncode\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: HtmlEncodePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'htmlEncode',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lbmNvZGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9waXBlcy9odG1sLWVuY29kZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUtwRCxNQUFNLE9BQU8sY0FBYztJQUN6QixTQUFTLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLEtBQUs7YUFDVCxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQzthQUN0QixPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQzthQUNyQixPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQzthQUNyQixPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQzthQUN2QixPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVCLENBQUM7OEdBWlUsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUgxQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxZQUFZO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnaHRtbEVuY29kZScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdG1sRW5jb2RlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWx1ZVxyXG4gICAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxyXG4gICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXHJcbiAgICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7JylcclxuICAgICAgLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKVxyXG4gICAgICAucmVwbGFjZSgvJy9nLCAnJiMzOTsnKTtcclxuICB9XHJcbn1cclxuIl19","import { CommonModule } from '@angular/common';\nimport { provideHttpClient, withInterceptorsFromDi, withXsrfConfiguration, withFetch, } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { AbstractNgModelComponent } from './abstracts';\nimport { DynamicLayoutComponent, ReplaceableRouteContainerComponent, RouterOutletComponent, } from './components';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { StopPropagationDirective, ReplaceableTemplateDirective, PermissionDirective, InitDirective, ForDirective, InputEventDebounceDirective, AutofocusDirective, FormSubmitDirective, } from './directives';\nimport './utils/date-extensions';\nimport { provideAbpCoreChild, provideAbpCore, withOptions } from './providers';\nimport { LazyLocalizationPipe, UtcToLocalPipe, SafeHtmlPipe, ShortDatePipe, ShortTimePipe, ShortDateTimePipe, ToInjectorPipe, SortPipe, LocalizationPipe, } from './pipes';\nimport * as i0 from \"@angular/core\";\nconst CORE_DIRECTIVES = [\n AutofocusDirective,\n InputEventDebounceDirective,\n ForDirective,\n FormSubmitDirective,\n InitDirective,\n PermissionDirective,\n ReplaceableTemplateDirective,\n StopPropagationDirective,\n];\nconst CORE_PIPES = [\n LocalizationPipe,\n SortPipe,\n SafeHtmlPipe,\n ShortDateTimePipe,\n ShortTimePipe,\n ShortDatePipe,\n ToInjectorPipe,\n UtcToLocalPipe,\n LazyLocalizationPipe,\n];\nconst CORE_COMPONENTS = [\n DynamicLayoutComponent,\n ReplaceableRouteContainerComponent,\n RouterOutletComponent,\n AbstractNgModelComponent,\n];\n/**\n * BaseCoreModule is the module that holds\n * all imports, declarations, exports, and entryComponents\n * but not the providers.\n * This module will be imported and exported by all others.\n */\nexport class BaseCoreModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BaseCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: BaseCoreModule, imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n NgxValidateCoreModule, AutofocusDirective,\n InputEventDebounceDirective,\n ForDirective,\n FormSubmitDirective,\n InitDirective,\n PermissionDirective,\n ReplaceableTemplateDirective,\n StopPropagationDirective, LocalizationPipe,\n SortPipe,\n SafeHtmlPipe,\n ShortDateTimePipe,\n ShortTimePipe,\n ShortDatePipe,\n ToInjectorPipe,\n UtcToLocalPipe,\n LazyLocalizationPipe, DynamicLayoutComponent,\n ReplaceableRouteContainerComponent,\n RouterOutletComponent,\n AbstractNgModelComponent], exports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n NgxValidateCoreModule, AutofocusDirective,\n InputEventDebounceDirective,\n ForDirective,\n FormSubmitDirective,\n InitDirective,\n PermissionDirective,\n ReplaceableTemplateDirective,\n StopPropagationDirective, LocalizationPipe,\n SortPipe,\n SafeHtmlPipe,\n ShortDateTimePipe,\n ShortTimePipe,\n ShortDatePipe,\n ToInjectorPipe,\n UtcToLocalPipe,\n LazyLocalizationPipe, DynamicLayoutComponent,\n ReplaceableRouteContainerComponent,\n RouterOutletComponent,\n AbstractNgModelComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BaseCoreModule, providers: [LocalizationPipe, provideHttpClient(withInterceptorsFromDi(), withFetch())], imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n NgxValidateCoreModule, CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n NgxValidateCoreModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BaseCoreModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n NgxValidateCoreModule,\n ...CORE_DIRECTIVES,\n ...CORE_PIPES,\n ...CORE_COMPONENTS,\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n NgxValidateCoreModule,\n ...CORE_DIRECTIVES,\n ...CORE_PIPES,\n ...CORE_COMPONENTS,\n ],\n declarations: [],\n providers: [LocalizationPipe, provideHttpClient(withInterceptorsFromDi(), withFetch())],\n }]\n }] });\n/**\n * RootCoreModule is the module that will be used at root level\n * and it introduces imports useful at root level (e.g. NGXS)\n */\nexport class RootCoreModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RootCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: RootCoreModule, imports: [BaseCoreModule], exports: [BaseCoreModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RootCoreModule, providers: [\n provideHttpClient(withXsrfConfiguration({\n cookieName: 'XSRF-TOKEN',\n headerName: 'RequestVerificationToken',\n })),\n ], imports: [BaseCoreModule, BaseCoreModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: RootCoreModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BaseCoreModule],\n imports: [BaseCoreModule],\n providers: [\n provideHttpClient(withXsrfConfiguration({\n cookieName: 'XSRF-TOKEN',\n headerName: 'RequestVerificationToken',\n })),\n ],\n }]\n }] });\n/**\n * CoreModule is the module that is publicly available\n */\nexport class CoreModule {\n /**\n * @deprecated forRoot method is deprecated, use `provideAbpCore` *function* for config settings.\n */\n static forRoot(options = {}) {\n return {\n ngModule: RootCoreModule,\n providers: [provideAbpCore(withOptions(options))],\n };\n }\n /**\n * @deprecated forChild method is deprecated, use `provideAbpCoreChild` *function* for config settings.\n */\n static forChild(options = {}) {\n return {\n ngModule: RootCoreModule,\n providers: [provideAbpCoreChild(options)],\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: CoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: CoreModule, imports: [BaseCoreModule], exports: [BaseCoreModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: CoreModule, imports: [BaseCoreModule, BaseCoreModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: CoreModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BaseCoreModule],\n imports: [BaseCoreModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixTQUFTLEdBQ1YsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGtDQUFrQyxFQUNsQyxxQkFBcUIsR0FDdEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qiw0QkFBNEIsRUFDNUIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixZQUFZLEVBQ1osMkJBQTJCLEVBQzNCLGtCQUFrQixFQUNsQixtQkFBbUIsR0FDcEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxZQUFZLEVBQ1osYUFBYSxFQUNiLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFFBQVEsRUFDUixnQkFBZ0IsR0FDakIsTUFBTSxT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Q0FBQyxDQUNIO1NBQ0YsWUFSUyxjQUFjLEVBUmIsY0FBYzs7MkZBa0JkLGNBQWM7a0JBWjFCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUN6QixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQ3pCLFNBQVMsRUFBRTt3QkFDVCxpQkFBaUIsQ0FDZixxQkFBcUIsQ0FBQzs0QkFDcEIsVUFBVSxFQUFFLFlBQVk7NEJBQ3hCLFVBQVUsRUFBRSwwQkFBMEI7eUJBQ3ZDLENBQUMsQ0FDSDtxQkFDRjtpQkFDRjs7QUFHRDs7R0FFRztBQUtILE1BQU0sT0FBTyxVQUFVO0lBQ3JCOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQWM7UUFDckMsT0FBTztZQUNMLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNsRCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQWU7UUFDdkMsT0FBTztZQUNMLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzFDLENBQUM7SUFDSixDQUFDOzhHQW5CVSxVQUFVOytHQUFWLFVBQVUsWUEzQlYsY0FBYyxhQUFkLGNBQWM7K0dBMkJkLFVBQVUsWUFGWCxjQUFjLEVBekJiLGNBQWM7OzJGQTJCZCxVQUFVO2tCQUp0QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDekIsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgcHJvdmlkZUh0dHBDbGllbnQsXHJcbiAgd2l0aEludGVyY2VwdG9yc0Zyb21EaSxcclxuICB3aXRoWHNyZkNvbmZpZ3VyYXRpb24sXHJcbiAgd2l0aEZldGNoLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEFic3RyYWN0TmdNb2RlbENvbXBvbmVudCB9IGZyb20gJy4vYWJzdHJhY3RzJztcclxuaW1wb3J0IHtcclxuICBEeW5hbWljTGF5b3V0Q29tcG9uZW50LFxyXG4gIFJlcGxhY2VhYmxlUm91dGVDb250YWluZXJDb21wb25lbnQsXHJcbiAgUm91dGVyT3V0bGV0Q29tcG9uZW50LFxyXG59IGZyb20gJy4vY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IE5neFZhbGlkYXRlQ29yZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdmFsaWRhdGUvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgU3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlLFxyXG4gIFJlcGxhY2VhYmxlVGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgUGVybWlzc2lvbkRpcmVjdGl2ZSxcclxuICBJbml0RGlyZWN0aXZlLFxyXG4gIEZvckRpcmVjdGl2ZSxcclxuICBJbnB1dEV2ZW50RGVib3VuY2VEaXJlY3RpdmUsXHJcbiAgQXV0b2ZvY3VzRGlyZWN0aXZlLFxyXG4gIEZvcm1TdWJtaXREaXJlY3RpdmUsXHJcbn0gZnJvbSAnLi9kaXJlY3RpdmVzJztcclxuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi9tb2RlbHMvY29tbW9uJztcclxuaW1wb3J0ICcuL3V0aWxzL2RhdGUtZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7IHByb3ZpZGVBYnBDb3JlQ2hpbGQsIHByb3ZpZGVBYnBDb3JlLCB3aXRoT3B0aW9ucyB9IGZyb20gJy4vcHJvdmlkZXJzJztcclxuaW1wb3J0IHtcclxuICBMYXp5TG9jYWxpemF0aW9uUGlwZSxcclxuICBVdGNUb0xvY2FsUGlwZSxcclxuICBTYWZlSHRtbFBpcGUsXHJcbiAgU2hvcnREYXRlUGlwZSxcclxuICBTaG9ydFRpbWVQaXBlLFxyXG4gIFNob3J0RGF0ZVRpbWVQaXBlLFxyXG4gIFRvSW5qZWN0b3JQaXBlLFxyXG4gIFNvcnRQaXBlLFxyXG4gIExvY2FsaXphdGlvblBpcGUsXHJcbn0gZnJvbSAnLi9waXBlcyc7XHJcblxyXG5jb25zdCBDT1JFX0RJUkVDVElWRVMgPSBbXHJcbiAgQXV0b2ZvY3VzRGlyZWN0aXZlLFxyXG4gIElucHV0RXZlbnREZWJvdW5jZURpcmVjdGl2ZSxcclxuICBGb3JEaXJlY3RpdmUsXHJcbiAgRm9ybVN1Ym1pdERpcmVjdGl2ZSxcclxuICBJbml0RGlyZWN0aXZlLFxyXG4gIFBlcm1pc3Npb25EaXJlY3RpdmUsXHJcbiAgUmVwbGFjZWFibGVUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICBTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUsXHJcbl07XHJcblxyXG5jb25zdCBDT1JFX1BJUEVTID0gW1xyXG4gIExvY2FsaXphdGlvblBpcGUsXHJcbiAgU29ydFBpcGUsXHJcbiAgU2FmZUh0bWxQaXBlLFxyXG4gIFNob3J0RGF0ZVRpbWVQaXBlLFxyXG4gIFNob3J0VGltZVBpcGUsXHJcbiAgU2hvcnREYXRlUGlwZSxcclxuICBUb0luamVjdG9yUGlwZSxcclxuICBVdGNUb0xvY2FsUGlwZSxcclxuICBMYXp5TG9jYWxpemF0aW9uUGlwZSxcclxuXTtcclxuXHJcbmNvbnN0IENPUkVfQ09NUE9ORU5UUyA9IFtcclxuICBEeW5hbWljTGF5b3V0Q29tcG9uZW50LFxyXG4gIFJlcGxhY2VhYmxlUm91dGVDb250YWluZXJDb21wb25lbnQsXHJcbiAgUm91dGVyT3V0bGV0Q29tcG9uZW50LFxyXG4gIEFic3RyYWN0TmdNb2RlbENvbXBvbmVudCxcclxuXTtcclxuLyoqXHJcbiAqIEJhc2VDb3JlTW9kdWxlIGlzIHRoZSBtb2R1bGUgdGhhdCBob2xkc1xyXG4gKiBhbGwgaW1wb3J0cywgZGVjbGFyYXRpb25zLCBleHBvcnRzLCBhbmQgZW50cnlDb21wb25lbnRzXHJcbiAqIGJ1dCBub3QgdGhlIHByb3ZpZGVycy5cclxuICogVGhpcyBtb2R1bGUgd2lsbCBiZSBpbXBvcnRlZCBhbmQgZXhwb3J0ZWQgYnkgYWxsIG90aGVycy5cclxuICovXHJcbkBOZ01vZHVsZSh7XHJcbiAgZXhwb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgTmd4VmFsaWRhdGVDb3JlTW9kdWxlLFxyXG4gICAgLi4uQ09SRV9ESVJFQ1RJVkVTLFxyXG4gICAgLi4uQ09SRV9QSVBFUyxcclxuICAgIC4uLkNPUkVfQ09NUE9ORU5UUyxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIE5neFZhbGlkYXRlQ29yZU1vZHVsZSxcclxuICAgIC4uLkNPUkVfRElSRUNUSVZFUyxcclxuICAgIC4uLkNPUkVfUElQRVMsXHJcbiAgICAuLi5DT1JFX0NPTVBPTkVOVFMsXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gIHByb3ZpZGVyczogW0xvY2FsaXphdGlvblBpcGUsIHByb3ZpZGVIdHRwQ2xpZW50KHdpdGhJbnRlcmNlcHRvcnNGcm9tRGkoKSwgd2l0aEZldGNoKCkpXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VDb3JlTW9kdWxlIHt9XHJcblxyXG4vKipcclxuICogUm9vdENvcmVNb2R1bGUgaXMgdGhlIG1vZHVsZSB0aGF0IHdpbGwgYmUgdXNlZCBhdCByb290IGxldmVsXHJcbiAqIGFuZCBpdCBpbnRyb2R1Y2VzIGltcG9ydHMgdXNlZnVsIGF0IHJvb3QgbGV2ZWwgKGUuZy4gTkdYUylcclxuICovXHJcbkBOZ01vZHVsZSh7XHJcbiAgZXhwb3J0czogW0Jhc2VDb3JlTW9kdWxlXSxcclxuICBpbXBvcnRzOiBbQmFzZUNvcmVNb2R1bGVdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgcHJvdmlkZUh0dHBDbGllbnQoXHJcbiAgICAgIHdpdGhYc3JmQ29uZmlndXJhdGlvbih7XHJcbiAgICAgICAgY29va2llTmFtZTogJ1hTUkYtVE9LRU4nLFxyXG4gICAgICAgIGhlYWRlck5hbWU6ICdSZXF1ZXN0VmVyaWZpY2F0aW9uVG9rZW4nLFxyXG4gICAgICB9KSxcclxuICAgICksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvb3RDb3JlTW9kdWxlIHt9XHJcblxyXG4vKipcclxuICogQ29yZU1vZHVsZSBpcyB0aGUgbW9kdWxlIHRoYXQgaXMgcHVibGljbHkgYXZhaWxhYmxlXHJcbiAqL1xyXG5ATmdNb2R1bGUoe1xyXG4gIGV4cG9ydHM6IFtCYXNlQ29yZU1vZHVsZV0sXHJcbiAgaW1wb3J0czogW0Jhc2VDb3JlTW9kdWxlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVNb2R1bGUge1xyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIGZvclJvb3QgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsIHVzZSBgcHJvdmlkZUFicENvcmVgICpmdW5jdGlvbiogZm9yIGNvbmZpZyBzZXR0aW5ncy5cclxuICAgKi9cclxuICBzdGF0aWMgZm9yUm9vdChvcHRpb25zID0ge30gYXMgQUJQLlJvb3QpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFJvb3RDb3JlTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogUm9vdENvcmVNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW3Byb3ZpZGVBYnBDb3JlKHdpdGhPcHRpb25zKG9wdGlvbnMpKV0sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgZm9yQ2hpbGQgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsIHVzZSBgcHJvdmlkZUFicENvcmVDaGlsZGAgKmZ1bmN0aW9uKiBmb3IgY29uZmlnIHNldHRpbmdzLlxyXG4gICAqL1xyXG4gIHN0YXRpYyBmb3JDaGlsZChvcHRpb25zID0ge30gYXMgQUJQLkNoaWxkKTogTW9kdWxlV2l0aFByb3ZpZGVyczxSb290Q29yZU1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IFJvb3RDb3JlTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtwcm92aWRlQWJwQ29yZUNoaWxkKG9wdGlvbnMpXSxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { Injectable, inject, PLATFORM_ID } from '@angular/core';\nimport { Router, } from '@angular/router';\nimport { of } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport { AuthService } from '../abstracts';\nimport { findRoute, getRoutePath } from '../utils/route-utils';\nimport { RoutesService, PermissionService, HttpErrorReporterService } from '../services';\nimport { isPlatformServer } from '@angular/common';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated Use `permissionGuard` *function* instead.\n */\nexport class PermissionGuard {\n constructor() {\n this.router = inject(Router);\n this.routesService = inject(RoutesService);\n this.authService = inject(AuthService);\n this.permissionService = inject(PermissionService);\n this.httpErrorReporter = inject(HttpErrorReporterService);\n }\n canActivate(route, state) {\n let { requiredPolicy } = route.data || {};\n if (!requiredPolicy) {\n const routeFound = findRoute(this.routesService, getRoutePath(this.router, state.url));\n requiredPolicy = routeFound?.requiredPolicy;\n }\n if (!requiredPolicy) {\n return of(true);\n }\n return this.permissionService.getGrantedPolicy$(requiredPolicy).pipe(take(1), map(access => {\n if (access)\n return true;\n if (route.data?.['redirectUrl']) {\n return this.router.parseUrl(route.data['redirectUrl']);\n }\n if (this.authService.isAuthenticated) {\n this.httpErrorReporter.reportError({ status: 403 });\n }\n return false;\n }));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: PermissionGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: PermissionGuard, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: PermissionGuard, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\nexport const permissionGuard = (route, state) => {\n const router = inject(Router);\n const routesService = inject(RoutesService);\n const authService = inject(AuthService);\n const permissionService = inject(PermissionService);\n const httpErrorReporter = inject(HttpErrorReporterService);\n const platformId = inject(PLATFORM_ID);\n let { requiredPolicy } = route.data || {};\n if (!requiredPolicy) {\n const routeFound = findRoute(routesService, getRoutePath(router, state.url));\n requiredPolicy = routeFound?.requiredPolicy;\n }\n if (!requiredPolicy) {\n return of(true);\n }\n //TODO enable permission check on ssr\n if (isPlatformServer(platformId)) {\n return of(true);\n }\n return permissionService.getGrantedPolicy$(requiredPolicy).pipe(take(1), map(access => {\n if (access)\n return true;\n if (route.data?.['redirectUrl']) {\n return router.parseUrl(route.data['redirectUrl']);\n }\n if (authService.isAuthenticated) {\n httpErrorReporter.reportError({ status: 403 });\n }\n return false;\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9ndWFyZHMvcGVybWlzc2lvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUdMLE1BQU0sR0FHUCxNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFhLE1BQU0sY0FBYyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFDbkQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sZUFBZTtJQUg1QjtRQUlxQixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlDLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0tBK0J6RTtJQTdCQyxXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNuRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsS0FBSyxDQUFDLElB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RSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDaEMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBdUIsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBDYW5BY3RpdmF0ZUZuLFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxyXG4gIFVybFRyZWUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIElBYnBHdWFyZCB9IGZyb20gJy4uL2Fic3RyYWN0cyc7XHJcbmltcG9ydCB7IGZpbmRSb3V0ZSwgZ2V0Um91dGVQYXRoIH0gZnJvbSAnLi4vdXRpbHMvcm91dGUtdXRpbHMnO1xyXG5pbXBvcnQgeyBSb3V0ZXNTZXJ2aWNlLCBQZXJtaXNzaW9uU2VydmljZSwgSHR0cEVycm9yUmVwb3J0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuLyoqXHJcbiAqIEBkZXByZWNhdGVkIFVzZSBgcGVybWlzc2lvbkd1YXJkYCAqZnVuY3Rpb24qIGluc3RlYWQuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbkd1YXJkIGltcGxlbWVudHMgSUFicEd1YXJkIHtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlc1NlcnZpY2UgPSBpbmplY3QoUm91dGVzU2VydmljZSk7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGVybWlzc2lvblNlcnZpY2UgPSBpbmplY3QoUGVybWlzc2lvblNlcnZpY2UpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBodHRwRXJyb3JSZXBvcnRlciA9IGluamVjdChIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2UpO1xyXG5cclxuICBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XHJcbiAgICBsZXQgeyByZXF1aXJlZFBvbGljeSB9ID0gcm91dGUuZGF0YSB8fCB7fTtcclxuXHJcbiAgICBpZiAoIXJlcXVpcmVkUG9saWN5KSB7XHJcbiAgICAgIGNvbnN0IHJvdXRlRm91bmQgPSBmaW5kUm91dGUodGhpcy5yb3V0ZXNTZXJ2aWNlLCBnZXRSb3V0ZVBhdGgodGhpcy5yb3V0ZXIsIHN0YXRlLnVybCkpO1xyXG4gICAgICByZXF1aXJlZFBvbGljeSA9IHJvdXRlRm91bmQ/LnJlcXVpcmVkUG9saWN5O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghcmVxdWlyZWRQb2xpY3kpIHtcclxuICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmdldEdyYW50ZWRQb2xpY3kkKHJlcXVpcmVkUG9saWN5KS5waXBlKFxyXG4gICAgICB0YWtlKDEpLFxyXG4gICAgICBtYXAoYWNjZXNzID0+IHtcclxuICAgICAgICBpZiAoYWNjZXNzKSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHJvdXRlLmRhdGE/LlsncmVkaXJlY3RVcmwnXSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLnBhcnNlVXJsKHJvdXRlLmRhdGFbJ3JlZGlyZWN0VXJsJ10pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmh0dHBFcnJvclJlcG9ydGVyLnJlcG9ydEVycm9yKHsgc3RhdHVzOiA0MDMgfSBhcyBIdHRwRXJyb3JSZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBwZXJtaXNzaW9uR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAoXHJcbiAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXHJcbikgPT4ge1xyXG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gIGNvbnN0IHJvdXRlc1NlcnZpY2UgPSBpbmplY3QoUm91dGVzU2VydmljZSk7XHJcbiAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xyXG4gIGNvbnN0IHBlcm1pc3Npb25TZXJ2aWNlID0gaW5qZWN0KFBlcm1pc3Npb25TZXJ2aWNlKTtcclxuICBjb25zdCBodHRwRXJyb3JSZXBvcnRlciA9IGluamVjdChIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2UpO1xyXG4gIGNvbnN0IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG5cclxuICBsZXQgeyByZXF1aXJlZFBvbGljeSB9ID0gcm91dGUuZGF0YSB8fCB7fTtcclxuXHJcbiAgaWYgKCFyZXF1aXJlZFBvbGljeSkge1xyXG4gICAgY29uc3Qgcm91dGVGb3VuZCA9IGZpbmRSb3V0ZShyb3V0ZXNTZXJ2aWNlLCBnZXRSb3V0ZVBhdGgocm91dGVyLCBzdGF0ZS51cmwpKTtcclxuICAgIHJlcXVpcmVkUG9saWN5ID0gcm91dGVGb3VuZD8ucmVxdWlyZWRQb2xpY3k7XHJcbiAgfVxyXG5cclxuICBpZiAoIXJlcXVpcmVkUG9saWN5KSB7XHJcbiAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvL1RPRE8gZW5hYmxlIHBlcm1pc3Npb24gY2hlY2sgb24gc3NyXHJcbiAgaWYgKGlzUGxhdGZvcm1TZXJ2ZXIocGxhdGZvcm1JZCkpIHtcclxuICAgIHJldHVybiBvZih0cnVlKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBwZXJtaXNzaW9uU2VydmljZS5nZXRHcmFudGVkUG9saWN5JChyZXF1aXJlZFBvbGljeSkucGlwZShcclxuICAgIHRha2UoMSksXHJcbiAgICBtYXAoYWNjZXNzID0+IHtcclxuICAgICAgaWYgKGFjY2VzcykgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICBpZiAocm91dGUuZGF0YT8uWydyZWRpcmVjdFVybCddKSB7XHJcbiAgICAgICAgcmV0dXJuIHJvdXRlci5wYXJzZVVybChyb3V0ZS5kYXRhWydyZWRpcmVjdFVybCddKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCkge1xyXG4gICAgICAgIGh0dHBFcnJvclJlcG9ydGVyLnJlcG9ydEVycm9yKHsgc3RhdHVzOiA0MDMgfSBhcyBIdHRwRXJyb3JSZXNwb25zZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pLFxyXG4gICk7XHJcbn07XHJcbiJdfQ==","import { NgModule } from '@angular/core';\nimport { LocalizationPipe } from './pipes/localization.pipe';\nimport { LazyLocalizationPipe } from './pipes';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated Use `LocalizationPipe` and `LazyLocalizationPipe` directly as a standalone pipe.\n * This module is no longer necessary for using the `LocalizationPipe` and `LazyLocalizationPipe` pipes.\n */\nexport class LocalizationModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LocalizationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: LocalizationModule, imports: [LocalizationPipe, LazyLocalizationPipe], exports: [LocalizationPipe, LazyLocalizationPipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LocalizationModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: LocalizationModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [LocalizationPipe, LazyLocalizationPipe],\n imports: [LocalizationPipe, LazyLocalizationPipe],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9sb2NhbGl6YXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUUvQzs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sa0JBQWtCOzhHQUFsQixrQkFBa0I7K0dBQWxCLGtCQUFrQixZQUZuQixnQkFBZ0IsRUFBRSxvQkFBb0IsYUFEdEMsZ0JBQWdCLEVBQUUsb0JBQW9COytHQUdyQyxrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUM7b0JBQ2pELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblBpcGUgfSBmcm9tICcuL3BpcGVzL2xvY2FsaXphdGlvbi5waXBlJztcclxuaW1wb3J0IHsgTGF6eUxvY2FsaXphdGlvblBpcGUgfSBmcm9tICcuL3BpcGVzJztcclxuXHJcbi8qKlxyXG4gKiBAZGVwcmVjYXRlZCBVc2UgYExvY2FsaXphdGlvblBpcGVgIGFuZCBgTGF6eUxvY2FsaXphdGlvblBpcGVgIGRpcmVjdGx5IGFzIGEgc3RhbmRhbG9uZSBwaXBlLlxyXG4gKiBUaGlzIG1vZHVsZSBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IGZvciB1c2luZyB0aGUgYExvY2FsaXphdGlvblBpcGVgIGFuZCBgTGF6eUxvY2FsaXphdGlvblBpcGVgIHBpcGVzLlxyXG4gKi9cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZXhwb3J0czogW0xvY2FsaXphdGlvblBpcGUsIExhenlMb2NhbGl6YXRpb25QaXBlXSxcclxuICBpbXBvcnRzOiBbTG9jYWxpemF0aW9uUGlwZSwgTGF6eUxvY2FsaXphdGlvblBpcGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uTW9kdWxlIHt9XHJcbiJdfQ==","import { checkHasProp } from '../utils/common-utils';\nexport class ListResultDto {\n constructor(initialValues = {}) {\n for (const key in initialValues) {\n if (checkHasProp(initialValues, key)) {\n this[key] = initialValues[key];\n }\n }\n }\n}\nexport class PagedResultDto extends ListResultDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class ExtensibleObject {\n constructor(initialValues = {}) {\n for (const key in initialValues) {\n if (checkHasProp(initialValues, key) && initialValues[key] !== undefined) {\n this[key] = initialValues[key];\n }\n }\n }\n}\nexport class ExtensibleEntityDto extends ExtensibleObject {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class LimitedResultRequestDto {\n constructor(initialValues = {}) {\n this.maxResultCount = 10;\n for (const key in initialValues) {\n if (checkHasProp(initialValues, key) && initialValues[key] !== undefined) {\n this[key] = initialValues[key];\n }\n }\n }\n}\nexport class ExtensibleLimitedResultRequestDto extends ExtensibleEntityDto {\n constructor(initialValues = {}) {\n super(initialValues);\n this.maxResultCount = 10;\n }\n}\nexport class PagedResultRequestDto extends LimitedResultRequestDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class ExtensiblePagedResultRequestDto extends ExtensibleLimitedResultRequestDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class PagedAndSortedResultRequestDto extends PagedResultRequestDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class ExtensiblePagedAndSortedResultRequestDto extends ExtensiblePagedResultRequestDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class EntityDto {\n constructor(initialValues = {}) {\n for (const key in initialValues) {\n if (checkHasProp(initialValues, key)) {\n this[key] = initialValues[key];\n }\n }\n }\n}\nexport class CreationAuditedEntityDto extends EntityDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class CreationAuditedEntityWithUserDto extends CreationAuditedEntityDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class AuditedEntityDto extends CreationAuditedEntityDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\n/** @deprecated the class signature will change in v8.0 */\nexport class AuditedEntityWithUserDto extends AuditedEntityDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class FullAuditedEntityDto extends AuditedEntityDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\n/** @deprecated the class signature will change in v8.0 */\nexport class FullAuditedEntityWithUserDto extends FullAuditedEntityDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class ExtensibleCreationAuditedEntityDto extends ExtensibleEntityDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class ExtensibleAuditedEntityDto extends ExtensibleCreationAuditedEntityDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class ExtensibleAuditedEntityWithUserDto extends ExtensibleAuditedEntityDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class ExtensibleCreationAuditedEntityWithUserDto extends ExtensibleCreationAuditedEntityDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class ExtensibleFullAuditedEntityDto extends ExtensibleAuditedEntityDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\nexport class ExtensibleFullAuditedEntityWithUserDto extends ExtensibleFullAuditedEntityDto {\n constructor(initialValues = {}) {\n super(initialValues);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHRvcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9tb2RlbHMvZHRvcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsTUFBTSxPQUFPLGFBQWE7SUFHeEIsWUFBWSxnQkFBMkMsRUFBRTtRQUN2RCxLQUFLLE1BQU0sR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hDLElBQUksWUFBWSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGNBQWtCLFNBQVEsYUFBZ0I7SUFHckQsWUFBWSxnQkFBNEMsRUFBRTtRQUN4RCxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixZQUFZLGdCQUEyQyxFQUFFO1FBQ3ZELEtBQUssTUFBTSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEMsSUFBSSxZQUFZLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDekUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxtQkFBbUMsU0FBUSxnQkFBZ0I7SUFHdEUsWUFBWSxnQkFBb0QsRUFBRTtRQUNoRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHVCQUF1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RCxNQUFNLE9BQU8sMEJBRVgsU0FBUSxrQ0FBK0M7SUFJdkQsWUFBWSxnQkFBa0UsRUFBRTtRQUM5RSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGtDQUdYLFNBQVEsMEJBQXVDO0lBSS9DLFlBQVksZ0JBQTBFLEVBQUU7UUFDdEYsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTywwQ0FHWCxTQUFRLGtDQUErQztJQUd2RCxZQUNFLGdCQUFrRixFQUFFO1FBRXBGLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sOEJBRVgsU0FBUSwwQkFBdUM7SUFLL0MsWUFBWSxnQkFBc0UsRUFBRTtRQUNsRixLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHNDQUdYLFNBQVEsOEJBQTJDO0lBS25ELFlBQVksZ0JBQThFLEVBQUU7UUFDMUYsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCB9IGZyb20gJy4vY29tbW9uJztcclxuaW1wb3J0IHsgY2hlY2tIYXNQcm9wIH0gZnJvbSAnLi4vdXRpbHMvY29tbW9uLXV0aWxzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBMaXN0UmVzdWx0RHRvPFQ+IHtcclxuICBpdGVtcz86IFRbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoaW5pdGlhbFZhbHVlczogUGFydGlhbDxMaXN0UmVzdWx0RHRvPFQ+PiA9IHt9KSB7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0aWFsVmFsdWVzKSB7XHJcbiAgICAgIGlmIChjaGVja0hhc1Byb3AoaW5pdGlhbFZhbHVlcywga2V5KSkge1xyXG4gICAgICAgIHRoaXNba2V5XSA9IGluaXRpYWxWYWx1ZXNba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG50eXBlIFZhbHVlT2Y8VD4gPSBUW2tleW9mIFRdO1xyXG5leHBvcnQgY2xhc3MgUGFnZWRSZXN1bHREdG88VD4gZXh0ZW5kcyBMaXN0UmVzdWx0RHRvPFQ+IHtcclxuICB0b3RhbENvdW50PzogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihpbml0aWFsVmFsdWVzOiBQYXJ0aWFsPFBhZ2VkUmVzdWx0RHRvPFQ+PiA9IHt9KSB7XHJcbiAgICBzdXBlcihpbml0aWFsVmFsdWVzKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFeHRlbnNpYmxlT2JqZWN0IHtcclxuICBleHRyYVByb3BlcnRpZXM/OiBBQlAuRGljdGlvbmFyeTxhbnk+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihpbml0aWFsVmFsdWVzOiBQYXJ0aWFsPEV4dGVuc2libGVPYmplY3Q+ID0ge30pIHtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGluaXRpYWxWYWx1ZXMpIHtcclxuICAgICAgaWYgKGNoZWNrSGFzUHJvcChpbml0aWFsVmFsdWVzLCBrZXkpICYmIGluaXRpYWxWYWx1ZXNba2V5XSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpc1trZXldID0gaW5pdGlhbFZhbHVlc1trZXldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXh0ZW5zaWJsZUVudGl0eUR0bzxUS2V5ID0gc3RyaW5nPiBleHRlbmRzIEV4dGVuc2libGVPYmplY3Qge1xyXG4gIGlkPzogVEtleTtcclxuXHJcbiAgY29uc3RydWN0b3IoaW5pdGlhbFZhbHVlczogUGFydGlhbDxFeHRlbnNpYmxlRW50aXR5RHRvPFRLZXk+PiA9IHt9KSB7XHJcbiAgICBzdXBlcihpbml0aWFsVmFsdWVzKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMaW1pdGVkUmVzdWx0UmVxdWVzdER0byB7XHJcbiAgbWF4UmVzdWx0Q291bnQgPSAxMDtcclxuXHJcbiAgY29uc3RydWN0b3IoaW5pdGlhbFZhbHVlczogUGFydGlhbDxMaW1pdGVkUmVzdWx0UmVxdWVzdER0bz4gPSB7fSkge1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdGlhbFZhbHVlcykge1xyXG4gICAgICBpZiAoY2hlY2tIYXNQcm9wKGluaXRpYWxWYWx1ZXMsIGtleSkgJiYgaW5pdGlhbFZhbHVlc1trZXldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzW2tleV0gPSBpbml0aWFsVmFsdWVzW2tleV0gYXMgVmFsdWVPZjxMaW1pdGVkUmVzdWx0UmVxdWVzdER0bz47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFeHRlbnNpYmxlTGltaXRlZFJlc3VsdFJlcXVlc3REdG8gZXh0ZW5kcyBFeHRlbnNpYmxlRW50aXR5RHRvIHtcclxuICBtYXhSZXN1bHRDb3VudCA9IDEwO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihpbml0aWFsVmFsdWVzOiBQYXJ0aWFsPEV4dGVuc2libGVMaW1pdGVkUmVzdWx0UmVxdWVzdER0bz4gPSB7fSkge1xyXG4gICAgc3VwZXIoaW5pdGlhbFZhbHVlcyk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUGFnZWRSZXN1bHRSZXF1ZXN0RHRvIGV4dGVuZHMgTGltaXRlZFJlc3VsdFJlcXVlc3REdG8ge1xyXG4gIHNraXBDb3VudD86IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoaW5pdGlhbFZhbHVlczogUGFydGlhbDxQYWdlZFJlc3VsdFJlcXVlc3REdG8+ID0ge30pIHtcclxuICAgIHN1cGVyKGluaXRpYWxWYWx1ZXMpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEV4dGVuc2libGVQYWdlZFJlc3VsdFJlcXVlc3REdG8gZXh0ZW5kcyBFeHRlbnNpYmxlTGltaXRlZFJlc3VsdFJlcXVlc3REdG8ge1xyXG4gIHNraXBDb3VudD86IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoaW5pdGlhbFZhbHVlczogUGFydGlhbDxFeHRlbnNpYmxlUGFnZWRSZXN1bHRSZXF1ZXN0RHRvPiA9IHt9KSB7XHJcbiAgICBzdXBlcihpbml0aWFsVmFsdWVzKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdlZEFuZFNvcnRlZFJlc3VsdFJlcXVlc3REdG8gZXh0ZW5kcyBQYWdlZFJlc3VsdFJlcXVlc3REdG8ge1xyXG4gIHNvcnRpbmc/OiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGluaXRpYWxWYWx1ZXM6IFBhcnRpYWw8UGFnZWRBbmRTb3J0ZWRSZXN1bHRSZXF1ZXN0RHRvPiA9IHt9KSB7XHJcbiAgICBzdXBlcihpbml0aWFsVmFsdWVzKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFeHRlbnNpYmxlUGFnZWRBbmRTb3J0ZWRSZXN1bHRSZXF1ZXN0RHRvIGV4dGVuZHMgRXh0ZW5zaWJsZVBhZ2VkUmVzdWx0UmVxdWVzdER0byB7XHJcbiAgc29ydGluZz86IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoaW5pdGlhbFZhbHVlczogUGFydGlhbDxFeHRlbnNpYmxlUGFnZWRBbmRTb3J0ZWRSZXN1bHRSZXF1ZXN0RHRvPiA9IHt9KSB7XHJcbiAgICBzdXBlcihpbml0aWFsVmFsdWVzKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlEdG88VEtleSA9IHN0cmluZz4ge1xyXG4gIGlkPzogVEtleTtcclxuXHJcbiAgY29uc3RydWN0b3IoaW5pdGlhbFZhbHVlczogUGFydGlhbDxFbnRpdHlEdG88VEtleT4+ID0ge30pIHtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGluaXRpYWxWYWx1ZXMpIHtcclxuICAgICAgaWYgKGNoZWNrSGFzUHJvcChpbml0aWFsVmFsdWVzLCBrZXkpKSB7XHJcbiAgICAgICAgdGhpc1trZXldID0gaW5pdGlhbFZhbHVlc1trZXldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3JlYXRpb25BdWRpdGVkRW50aXR5RHRvPFRQcmltYXJ5S2V5ID0gc3RyaW5nPiBleHRlbmRzIEVudGl0eUR0bzxUUHJpbWFyeUtleT4ge1xyXG4gIGNyZWF0aW9uVGltZT86IHN0cmluZyB8IERhdGU7XHJcbiAgY3JlYXRvcklkPzogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihpbml0aWFsVmFsdWVzOiBQYXJ0aWFsPENyZWF0aW9uQXVkaXRlZEVudGl0eUR0bzxUUHJpbWFyeUtleT4+ID0ge30pIHtcclxuICAgIHN1cGVyKGluaXRpYWxWYWx1ZXMpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENyZWF0aW9uQXVkaXRlZEVudGl0eVdpdGhVc2VyRHRvPCAgXHJcbiAgVFByaW1hcnlLZXkgPSBzdHJpbmcsXHJcbiAgVFVzZXJEdG8gPSBhbnlcclxuPiBleHRlbmRzIENyZWF0aW9uQXVkaXRlZEVudGl0eUR0bzxUUHJpbWFyeUtleT4ge1xyXG4gIGNyZWF0b3I/OiBUVXNlckR0bztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBpbml0aWFsVmFsdWVzOiBQYXJ0aWFsPENyZWF0aW9uQXVkaXRlZEVudGl0eVdpdGhVc2VyRHRvPFRQcmltYXJ5S2V5LFRVc2VyRHRvPj4gPSB7fSxcclxuICApIHtcclxuICAgIHN1cGVyKGluaXRpYWxWYWx1ZXMpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEF1ZGl0ZWRFbnRpdHlEdG88VFByaW1hcnlLZXkgPSBzdHJpbmc+IGV4dGVuZHMgQ3JlYXRpb25BdWRpdGVkRW50aXR5RHRvPFRQcmltYXJ5S2V5PiB7XHJcbiAgbGFzdE1vZGlmaWNhdGlvblRpbWU/OiBzdHJpbmcgfCBEYXRlO1xyXG4gIGxhc3RNb2RpZmllcklkPzogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihpbml0aWFsVmFsdWVzOiBQYXJ0aWFsPEF1ZGl0ZWRFbnRpdHlEdG88VFByaW1hcnlLZXk+PiA9IHt9KSB7XHJcbiAgICBzdXBlcihpbml0aWFsVmFsdWVzKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCB0aGUgY2xhc3Mgc2lnbmF0dXJlIHdpbGwgY2hhbmdlIGluIHY4LjAgKi8gXHJcbmV4cG9ydCBjbGFzcyBBdWRpdGVkRW50aXR5V2l0aFVzZXJEdG88XHJcbiAgVFByaW1hcnlLZXkgPSBzdHJpbmcsXHJcbiAgVFVzZXJEdG8gPSBhbnksXHJcbj4gZXh0ZW5kcyBBdWRpdGVkRW50aXR5RHRvPFRQcmltYXJ5S2V5PiB7XHJcbiAgY3JlYXRvcj86IFRVc2VyRHRvO1xyXG4gIGxhc3RNb2RpZmllcj86IFRVc2VyRHRvO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihpbml0aWFsVmFsdWVzOiBQYXJ0aWFsPEF1ZGl0ZWRFbnRpdHlXaXRoVXNlckR0bzwgVFByaW1hcnlLZXksVFVzZXJEdG8+PiA9IHt9KSB7XHJcbiAgICBzdXBlcihpbml0aWFsVmFsdWVzKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGdWxsQXVkaXRlZEVudGl0eUR0bzxUUHJpbWFyeUtleSA9IHN0cmluZz4gZXh0ZW5kcyBBdWRpdGVkRW50aXR5RHRvPFRQcmltYXJ5S2V5PiB7XHJcbiAgaXNEZWxldGVkPzogYm9vbGVhbjtcclxuICBkZWxldGVySWQ/OiBzdHJpbmc7XHJcbiAgZGVsZXRpb25UaW1lPzogRGF0ZSB8IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoaW5pdGlhbFZhbHVlczogUGFydGlhbDxGdWxsQXVkaXRlZEVudGl0eUR0bzxUUHJpbWFyeUtleT4+ID0ge30pIHtcclxuICAgIHN1cGVyKGluaXRpYWxWYWx1ZXMpO1xyXG4gIH1cclxufVxyXG4vKiogQGRlcHJlY2F0ZWQgdGhlIGNsYXNzIHNpZ25hdHVyZSB3aWxsIGNoYW5nZSBpbiB2OC4wICovIFxyXG5leHBvcnQgY2xhc3MgRnVsbEF1ZGl0ZWRFbnRpdHlXaXRoVXNlckR0bzxcclxuICBUUHJpbWFyeUtleSA9IHN0cmluZyxcclxuICBUVXNlckR0byA9IGFueVxyXG4+IGV4dGVuZHMgRnVsbEF1ZGl0ZWRFbnRpdHlEdG88VFByaW1hcnlLZXk+IHtcclxuICBjcmVhdG9yPzogVFVzZXJEdG87XHJcbiAgbGFzdE1vZGlmaWVyPzogVFVzZXJEdG87XHJcbiAgZGVsZXRlcj86IFRVc2VyRHRvO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihpbml0aWFsVmFsdWVzOiBQYXJ0aWFsPEZ1bGxBdWRpdGVkRW50aXR5V2l0aFVzZXJEdG88IFRQcmltYXJ5S2V5LFRVc2VyRHRvPj4gPSB7fSkge1xyXG4gICAgc3VwZXIoaW5pdGlhbFZhbHVlcyk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXh0ZW5zaWJsZUNyZWF0aW9uQXVkaXRlZEVudGl0eUR0bzxcclxuICBUUHJpbWFyeUtleSA9IHN0cmluZyxcclxuPiBleHRlbmRzIEV4dGVuc2libGVFbnRpdHlEdG88VFByaW1hcnlLZXk+IHtcclxuICBjcmVhdGlvblRpbWU/OiBEYXRlIHwgc3RyaW5nO1xyXG4gIGNyZWF0b3JJZD86IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoaW5pdGlhbFZhbHVlczogUGFydGlhbDxFeHRlbnNpYmxlQ3JlYXRpb25BdWRpdGVkRW50aXR5RHRvPFRQcmltYXJ5S2V5Pj4gPSB7fSkge1xyXG4gICAgc3VwZXIoaW5pdGlhbFZhbHVlcyk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXh0ZW5zaWJsZUF1ZGl0ZWRFbnRpdHlEdG88XHJcbiAgVFByaW1hcnlLZXkgPSBzdHJpbmcsXHJcbj4gZXh0ZW5kcyBFeHRlbnNpYmxlQ3JlYXRpb25BdWRpdGVkRW50aXR5RHRvPFRQcmltYXJ5S2V5PiB7XHJcbiAgbGFzdE1vZGlmaWNhdGlvblRpbWU/OiBEYXRlIHwgc3RyaW5nO1xyXG4gIGxhc3RNb2RpZmllcklkPzogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihpbml0aWFsVmFsdWVzOiBQYXJ0aWFsPEV4dGVuc2libGVBdWRpdGVkRW50aXR5RHRvPFRQcmltYXJ5S2V5Pj4gPSB7fSkge1xyXG4gICAgc3VwZXIoaW5pdGlhbFZhbHVlcyk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXh0ZW5zaWJsZUF1ZGl0ZWRFbnRpdHlXaXRoVXNlckR0bzxcclxuICBUUHJpbWFyeUtleSA9IHN0cmluZyxcclxuICBUVXNlckR0byA9IGFueSxcclxuPiBleHRlbmRzIEV4dGVuc2libGVBdWRpdGVkRW50aXR5RHRvPFRQcmltYXJ5S2V5PiB7XHJcbiAgY3JlYXRvcj86IFRVc2VyRHRvO1xyXG4gIGxhc3RNb2RpZmllcj86IFRVc2VyRHRvO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihpbml0aWFsVmFsdWVzOiBQYXJ0aWFsPEV4dGVuc2libGVBdWRpdGVkRW50aXR5V2l0aFVzZXJEdG88VFByaW1hcnlLZXk+PiA9IHt9KSB7XHJcbiAgICBzdXBlcihpbml0aWFsVmFsdWVzKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFeHRlbnNpYmxlQ3JlYXRpb25BdWRpdGVkRW50aXR5V2l0aFVzZXJEdG88XHJcbiAgVFByaW1hcnlLZXkgPSBzdHJpbmcsXHJcbiAgVFVzZXJEdG8gPSBhbnksXHJcbj4gZXh0ZW5kcyBFeHRlbnNpYmxlQ3JlYXRpb25BdWRpdGVkRW50aXR5RHRvPFRQcmltYXJ5S2V5PiB7XHJcbiAgY3JlYXRvcj86IFRVc2VyRHRvO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGluaXRpYWxWYWx1ZXM6IFBhcnRpYWw8RXh0ZW5zaWJsZUNyZWF0aW9uQXVkaXRlZEVudGl0eVdpdGhVc2VyRHRvPFRQcmltYXJ5S2V5Pj4gPSB7fSxcclxuICApIHtcclxuICAgIHN1cGVyKGluaXRpYWxWYWx1ZXMpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEV4dGVuc2libGVGdWxsQXVkaXRlZEVudGl0eUR0bzxcclxuICBUUHJpbWFyeUtleSA9IHN0cmluZyxcclxuPiBleHRlbmRzIEV4dGVuc2libGVBdWRpdGVkRW50aXR5RHRvPFRQcmltYXJ5S2V5PiB7XHJcbiAgaXNEZWxldGVkPzogYm9vbGVhbjtcclxuICBkZWxldGVySWQ/OiBzdHJpbmc7XHJcbiAgZGVsZXRpb25UaW1lPzogRGF0ZSB8IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoaW5pdGlhbFZhbHVlczogUGFydGlhbDxFeHRlbnNpYmxlRnVsbEF1ZGl0ZWRFbnRpdHlEdG88VFByaW1hcnlLZXk+PiA9IHt9KSB7XHJcbiAgICBzdXBlcihpbml0aWFsVmFsdWVzKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFeHRlbnNpYmxlRnVsbEF1ZGl0ZWRFbnRpdHlXaXRoVXNlckR0bzxcclxuICBUUHJpbWFyeUtleSA9IHN0cmluZyxcclxuICBUVXNlckR0byA9IGFueSxcclxuPiBleHRlbmRzIEV4dGVuc2libGVGdWxsQXVkaXRlZEVudGl0eUR0bzxUUHJpbWFyeUtleT4ge1xyXG4gIGNyZWF0b3I/OiBUVXNlckR0bztcclxuICBsYXN0TW9kaWZpZXI/OiBUVXNlckR0bztcclxuICBkZWxldGVyPzogVFVzZXJEdG87XHJcblxyXG4gIGNvbnN0cnVjdG9yKGluaXRpYWxWYWx1ZXM6IFBhcnRpYWw8RXh0ZW5zaWJsZUZ1bGxBdWRpdGVkRW50aXR5V2l0aFVzZXJEdG88VFByaW1hcnlLZXk+PiA9IHt9KSB7XHJcbiAgICBzdXBlcihpbml0aWFsVmFsdWVzKTtcclxuICB9XHJcbn1cclxuIl19","export class AuthEvent {\n constructor(type) {\n this.type = type;\n this.type = type;\n }\n}\nexport class AuthSuccessEvent extends AuthEvent {\n constructor(type, info) {\n super(type);\n this.type = type;\n this.info = info;\n }\n}\nexport class AuthInfoEvent extends AuthEvent {\n constructor(type, info) {\n super(type);\n this.type = type;\n this.info = info;\n }\n}\nexport class AuthErrorEvent extends AuthEvent {\n constructor(type, reason, params) {\n super(type);\n this.type = type;\n this.reason = reason;\n this.params = params;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1ldmVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvbW9kZWxzL2F1dGgtZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJCQSxNQUFNLE9BQWdCLFNBQVM7SUFDN0IsWUFBNEIsSUFBZTtRQUFmLFNBQUksR0FBSixJQUFJLENBQVc7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQVM7SUFDN0MsWUFBNEIsSUFBZSxFQUFrQixJQUFVO1FBQ3JFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQURjLFNBQUksR0FBSixJQUFJLENBQVc7UUFBa0IsU0FBSSxHQUFKLElBQUksQ0FBTTtJQUV2RSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sYUFBYyxTQUFRLFNBQVM7SUFDMUMsWUFBNEIsSUFBZSxFQUFrQixJQUFVO1FBQ3JFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQURjLFNBQUksR0FBSixJQUFJLENBQVc7UUFBa0IsU0FBSSxHQUFKLElBQUksQ0FBTTtJQUV2RSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sY0FBZSxTQUFRLFNBQVM7SUFDM0MsWUFDa0IsSUFBZSxFQUNmLE1BQWMsRUFDZCxNQUFlO1FBRS9CLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUpJLFNBQUksR0FBSixJQUFJLENBQVc7UUFDZixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsV0FBTSxHQUFOLE1BQU0sQ0FBUztJQUdqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBFdmVudFR5cGUgPVxyXG4gIHwgJ2Rpc2NvdmVyeV9kb2N1bWVudF9sb2FkZWQnXHJcbiAgfCAnandrc19sb2FkX2Vycm9yJ1xyXG4gIHwgJ2ludmFsaWRfbm9uY2VfaW5fc3RhdGUnXHJcbiAgfCAnZGlzY292ZXJ5X2RvY3VtZW50X2xvYWRfZXJyb3InXHJcbiAgfCAnZGlzY292ZXJ5X2RvY3VtZW50X3ZhbGlkYXRpb25fZXJyb3InXHJcbiAgfCAndXNlcl9wcm9maWxlX2xvYWRlZCdcclxuICB8ICd1c2VyX3Byb2ZpbGVfbG9hZF9lcnJvcidcclxuICB8ICd0b2tlbl9yZWNlaXZlZCdcclxuICB8ICd0b2tlbl9lcnJvcidcclxuICB8ICdjb2RlX2Vycm9yJ1xyXG4gIHwgJ3Rva2VuX3JlZnJlc2hlZCdcclxuICB8ICd0b2tlbl9yZWZyZXNoX2Vycm9yJ1xyXG4gIHwgJ3NpbGVudF9yZWZyZXNoX2Vycm9yJ1xyXG4gIHwgJ3NpbGVudGx5X3JlZnJlc2hlZCdcclxuICB8ICdzaWxlbnRfcmVmcmVzaF90aW1lb3V0J1xyXG4gIHwgJ3Rva2VuX3ZhbGlkYXRpb25fZXJyb3InXHJcbiAgfCAndG9rZW5fZXhwaXJlcydcclxuICB8ICdzZXNzaW9uX2NoYW5nZWQnXHJcbiAgfCAnc2Vzc2lvbl9lcnJvcidcclxuICB8ICdzZXNzaW9uX3Rlcm1pbmF0ZWQnXHJcbiAgfCAnc2Vzc2lvbl91bmNoYW5nZWQnXHJcbiAgfCAnbG9nb3V0J1xyXG4gIHwgJ3BvcHVwX2Nsb3NlZCdcclxuICB8ICdwb3B1cF9ibG9ja2VkJ1xyXG4gIHwgJ3Rva2VuX3Jldm9rZV9lcnJvcic7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXV0aEV2ZW50IHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdHlwZTogRXZlbnRUeXBlKSB7XHJcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEF1dGhTdWNjZXNzRXZlbnQgZXh0ZW5kcyBBdXRoRXZlbnQge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB0eXBlOiBFdmVudFR5cGUsIHB1YmxpYyByZWFkb25seSBpbmZvPzogYW55KSB7XHJcbiAgICBzdXBlcih0eXBlKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBdXRoSW5mb0V2ZW50IGV4dGVuZHMgQXV0aEV2ZW50IHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdHlwZTogRXZlbnRUeXBlLCBwdWJsaWMgcmVhZG9ubHkgaW5mbz86IGFueSkge1xyXG4gICAgc3VwZXIodHlwZSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0aEVycm9yRXZlbnQgZXh0ZW5kcyBBdXRoRXZlbnQge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHR5cGU6IEV2ZW50VHlwZSxcclxuICAgIHB1YmxpYyByZWFkb25seSByZWFzb246IG9iamVjdCxcclxuICAgIHB1YmxpYyByZWFkb25seSBwYXJhbXM/OiBvYmplY3QsXHJcbiAgKSB7XHJcbiAgICBzdXBlcih0eXBlKTtcclxuICB9XHJcbn1cclxuIl19","import { RestService } from '../../../../../../services';\nimport { Injectable, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AbpApiDefinitionService {\n constructor() {\n this.restService = inject(RestService);\n this.apiName = 'abp';\n this.getByModel = (model, config) => this.restService.request({\n method: 'GET',\n url: '/api/abp/api-definition',\n params: { includeTypes: model.includeTypes },\n }, { apiName: this.apiName, ...config });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpApiDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpApiDefinitionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbpApiDefinitionService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLWFwaS1kZWZpbml0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9hcGktZXhwbG9yaW5nL2FicC1hcGktZGVmaW5pdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNbkQsTUFBTSxPQUFPLHVCQUF1QjtJQUhwQztRQUlVLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTFDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHaEIsZUFBVSxHQUFHLENBQUMsS0FBK0MsRUFBRSxNQUE2QixFQUFFLEVBQUUsQ0FDOUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQXNDO1lBQzVELE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLHlCQUF5QjtZQUM5QixNQUFNLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksRUFBRTtTQUM3QyxFQUNELEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBQ3hDOzhHQWJZLHVCQUF1QjtrSEFBdkIsdUJBQXVCLGNBRnRCLE1BQU07OzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgUmVzdCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgdHlwZSB7IEFwcGxpY2F0aW9uQXBpRGVzY3JpcHRpb25Nb2RlbCwgQXBwbGljYXRpb25BcGlEZXNjcmlwdGlvbk1vZGVsUmVxdWVzdER0byB9IGZyb20gJy4uLy4uLy4uL2h0dHAvbW9kZWxpbmcvbW9kZWxzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBYnBBcGlEZWZpbml0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgcmVzdFNlcnZpY2UgPSBpbmplY3QoUmVzdFNlcnZpY2UpO1xuXHJcbiAgYXBpTmFtZSA9ICdhYnAnO1xyXG4gIFxyXG5cclxuICBnZXRCeU1vZGVsID0gKG1vZGVsOiBBcHBsaWNhdGlvbkFwaURlc2NyaXB0aW9uTW9kZWxSZXF1ZXN0RHRvLCBjb25maWc/OiBQYXJ0aWFsPFJlc3QuQ29uZmlnPikgPT5cclxuICAgIHRoaXMucmVzdFNlcnZpY2UucmVxdWVzdDxhbnksIEFwcGxpY2F0aW9uQXBpRGVzY3JpcHRpb25Nb2RlbD4oe1xyXG4gICAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgICB1cmw6ICcvYXBpL2FicC9hcGktZGVmaW5pdGlvbicsXHJcbiAgICAgIHBhcmFtczogeyBpbmNsdWRlVHlwZXM6IG1vZGVsLmluY2x1ZGVUeXBlcyB9LFxyXG4gICAgfSxcclxuICAgIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lLC4uLmNvbmZpZyB9KTtcclxufVxyXG4iXX0=","export function validateMinAge({ age = 18 } = {}) {\n return (control) => {\n if (['', null, undefined].indexOf(control.value) > -1)\n return null;\n return isValidMinAge(control.value, age) ? null : { minAge: { age } };\n };\n}\nfunction isValidMinAge(value, minAge) {\n const date = new Date();\n date.setFullYear(date.getFullYear() - minAge);\n date.setHours(23, 59, 59, 999);\n return Number(new Date(value)) <= date.valueOf();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi92YWxpZGF0b3JzL2FnZS52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsTUFBTSxVQUFVLGNBQWMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQW9CLEVBQUU7SUFDN0QsT0FBTyxDQUFDLE9BQXdCLEVBQXNCLEVBQUU7UUFDdEQsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUVuRSxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUN4RSxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsS0FBc0IsRUFBRSxNQUFjO0lBQzNELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUUvQixPQUFPLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWluQWdlRXJyb3Ige1xyXG4gIG1pbkFnZToge1xyXG4gICAgYWdlOiBudW1iZXI7XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNaW5BZ2VPcHRpb25zIHtcclxuICBhZ2U/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU1pbkFnZSh7IGFnZSA9IDE4IH06IE1pbkFnZU9wdGlvbnMgPSB7fSk6IFZhbGlkYXRvckZuIHtcclxuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IE1pbkFnZUVycm9yIHwgbnVsbCA9PiB7XHJcbiAgICBpZiAoWycnLCBudWxsLCB1bmRlZmluZWRdLmluZGV4T2YoY29udHJvbC52YWx1ZSkgPiAtMSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgcmV0dXJuIGlzVmFsaWRNaW5BZ2UoY29udHJvbC52YWx1ZSwgYWdlKSA/IG51bGwgOiB7IG1pbkFnZTogeyBhZ2UgfSB9O1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzVmFsaWRNaW5BZ2UodmFsdWU6IHN0cmluZyB8IG51bWJlciwgbWluQWdlOiBudW1iZXIpIHtcclxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSAtIG1pbkFnZSk7XHJcbiAgZGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xyXG5cclxuICByZXR1cm4gTnVtYmVyKG5ldyBEYXRlKHZhbHVlKSkgPD0gZGF0ZS52YWx1ZU9mKCk7XHJcbn1cclxuIl19","export function validateCreditCard() {\n return (control) => {\n if (['', null, undefined].indexOf(control.value) > -1)\n return null;\n return isValidCreditCard(String(control.value)) ? null : { creditCard: true };\n };\n}\nfunction isValidCreditCard(value) {\n value = value.replace(/[ -]/g, '');\n if (!/^[0-9]{13,19}$/.test(value))\n return false;\n let checksum = 0;\n let multiplier = 1;\n for (let i = value.length; i > 0; i--) {\n const digit = Number(value[i - 1]) * multiplier;\n checksum += (digit % 10) + ~~(digit / 10);\n multiplier = (multiplier * 2) % 3;\n }\n return checksum % 10 === 0;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGl0LWNhcmQudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3ZhbGlkYXRvcnMvY3JlZGl0LWNhcmQudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsT0FBTyxDQUFDLE9BQXdCLEVBQTBCLEVBQUU7UUFDMUQsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUVuRSxPQUFPLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNoRixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxLQUFhO0lBQ3RDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRWhELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNqQixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFFbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN0QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUNoRCxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRTFDLFVBQVUsR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU8sUUFBUSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENyZWRpdENhcmRFcnJvciB7XHJcbiAgY3JlZGl0Q2FyZDogdHJ1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQ3JlZGl0Q2FyZCgpOiBWYWxpZGF0b3JGbiB7XHJcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBDcmVkaXRDYXJkRXJyb3IgfCBudWxsID0+IHtcclxuICAgIGlmIChbJycsIG51bGwsIHVuZGVmaW5lZF0uaW5kZXhPZihjb250cm9sLnZhbHVlKSA+IC0xKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICByZXR1cm4gaXNWYWxpZENyZWRpdENhcmQoU3RyaW5nKGNvbnRyb2wudmFsdWUpKSA/IG51bGwgOiB7IGNyZWRpdENhcmQ6IHRydWUgfTtcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1ZhbGlkQ3JlZGl0Q2FyZCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bIC1dL2csICcnKTtcclxuXHJcbiAgaWYgKCEvXlswLTldezEzLDE5fSQvLnRlc3QodmFsdWUpKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gIGxldCBjaGVja3N1bSA9IDA7XHJcbiAgbGV0IG11bHRpcGxpZXIgPSAxO1xyXG5cclxuICBmb3IgKGxldCBpID0gdmFsdWUubGVuZ3RoOyBpID4gMDsgaS0tKSB7XHJcbiAgICBjb25zdCBkaWdpdCA9IE51bWJlcih2YWx1ZVtpIC0gMV0pICogbXVsdGlwbGllcjtcclxuICAgIGNoZWNrc3VtICs9IChkaWdpdCAlIDEwKSArIH5+KGRpZ2l0IC8gMTApO1xyXG5cclxuICAgIG11bHRpcGxpZXIgPSAobXVsdGlwbGllciAqIDIpICUgMztcclxuICB9XHJcblxyXG4gIHJldHVybiBjaGVja3N1bSAlIDEwID09PSAwO1xyXG59XHJcbiJdfQ==","export function validateRange({ maximum = Infinity, minimum = 0 } = {}) {\n return (control) => {\n if (['', null, undefined].indexOf(control.value) > -1)\n return null;\n const value = Number(control.value);\n return getMinError(value, minimum, maximum) || getMaxError(value, maximum, minimum);\n };\n}\nfunction getMaxError(value, max, min) {\n return value > max ? { range: { max, min } } : null;\n}\nfunction getMinError(value, min, max) {\n return value < min ? { range: { min, max } } : null;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3ZhbGlkYXRvcnMvcmFuZ2UudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNBLE1BQU0sVUFBVSxhQUFhLENBQUMsRUFBRSxPQUFPLEdBQUcsUUFBUSxFQUFFLE9BQU8sR0FBRyxDQUFDLEtBQW1CLEVBQUU7SUFDbEYsT0FBTyxDQUFDLE9BQXdCLEVBQXFCLEVBQUU7UUFDckQsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUVuRSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEYsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsR0FBVztJQUMxRCxPQUFPLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN0RCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxHQUFXO0lBQzFELE9BQU8sS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSYW5nZUVycm9yIHtcclxuICByYW5nZToge1xyXG4gICAgbWF4OiBudW1iZXI7XHJcbiAgICBtaW46IG51bWJlcjtcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJhbmdlT3B0aW9ucyB7XHJcbiAgbWF4aW11bT86IG51bWJlcjtcclxuICBtaW5pbXVtPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVSYW5nZSh7IG1heGltdW0gPSBJbmZpbml0eSwgbWluaW11bSA9IDAgfTogUmFuZ2VPcHRpb25zID0ge30pOiBWYWxpZGF0b3JGbiB7XHJcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBSYW5nZUVycm9yIHwgbnVsbCA9PiB7XHJcbiAgICBpZiAoWycnLCBudWxsLCB1bmRlZmluZWRdLmluZGV4T2YoY29udHJvbC52YWx1ZSkgPiAtMSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSBOdW1iZXIoY29udHJvbC52YWx1ZSk7XHJcbiAgICByZXR1cm4gZ2V0TWluRXJyb3IodmFsdWUsIG1pbmltdW0sIG1heGltdW0pIHx8IGdldE1heEVycm9yKHZhbHVlLCBtYXhpbXVtLCBtaW5pbXVtKTtcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRNYXhFcnJvcih2YWx1ZTogbnVtYmVyLCBtYXg6IG51bWJlciwgbWluOiBudW1iZXIpOiBSYW5nZUVycm9yIHwgbnVsbCB7XHJcbiAgcmV0dXJuIHZhbHVlID4gbWF4ID8geyByYW5nZTogeyBtYXgsIG1pbiB9IH0gOiBudWxsO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRNaW5FcnJvcih2YWx1ZTogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBSYW5nZUVycm9yIHwgbnVsbCB7XHJcbiAgcmV0dXJuIHZhbHVlIDwgbWluID8geyByYW5nZTogeyBtaW4sIG1heCB9IH0gOiBudWxsO1xyXG59XHJcbiJdfQ==","export function validateRequired({ allowEmptyStrings } = {}) {\n // note: please do not remove name of the function, it is used in function compare with type 'RequiredError'\n const required = (control) => {\n return isValidRequired(control.value, allowEmptyStrings) ? null : { required: true };\n };\n return required;\n}\nfunction isValidRequired(value, allowEmptyStrings) {\n if (value || value === 0 || value === false)\n return true;\n if (allowEmptyStrings && value === '')\n return true;\n return false;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3ZhbGlkYXRvcnMvcmVxdWlyZWQudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxFQUFFLGlCQUFpQixLQUFzQixFQUFFO0lBQzFFLDRHQUE0RztJQUM1RyxNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQXdCLEVBQXdCLEVBQUU7UUFDbEUsT0FBTyxlQUFlLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3ZGLENBQUMsQ0FBQztJQUNGLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxLQUFVLEVBQUUsaUJBQXNDO0lBQ3pFLElBQUksS0FBSyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEtBQUs7UUFBRSxPQUFPLElBQUksQ0FBQztJQUV6RCxJQUFJLGlCQUFpQixJQUFJLEtBQUssS0FBSyxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFbkQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWlyZWRFcnJvciB7XHJcbiAgcmVxdWlyZWQ6IHRydWU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWlyZWRPcHRpb25zIHtcclxuICBhbGxvd0VtcHR5U3RyaW5ncz86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVJlcXVpcmVkKHsgYWxsb3dFbXB0eVN0cmluZ3MgfTogUmVxdWlyZWRPcHRpb25zID0ge30pOiBWYWxpZGF0b3JGbiB7XHJcbiAgLy8gbm90ZTogcGxlYXNlIGRvIG5vdCByZW1vdmUgbmFtZSBvZiB0aGUgZnVuY3Rpb24sIGl0IGlzIHVzZWQgaW4gZnVuY3Rpb24gY29tcGFyZSB3aXRoIHR5cGUgJ1JlcXVpcmVkRXJyb3InXHJcbiAgY29uc3QgcmVxdWlyZWQgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogUmVxdWlyZWRFcnJvciB8IG51bGwgPT4ge1xyXG4gICAgcmV0dXJuIGlzVmFsaWRSZXF1aXJlZChjb250cm9sLnZhbHVlLCBhbGxvd0VtcHR5U3RyaW5ncykgPyBudWxsIDogeyByZXF1aXJlZDogdHJ1ZSB9O1xyXG4gIH07XHJcbiAgcmV0dXJuIHJlcXVpcmVkO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1ZhbGlkUmVxdWlyZWQodmFsdWU6IGFueSwgYWxsb3dFbXB0eVN0cmluZ3M6IGJvb2xlYW4gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuICBpZiAodmFsdWUgfHwgdmFsdWUgPT09IDAgfHwgdmFsdWUgPT09IGZhbHNlKSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgaWYgKGFsbG93RW1wdHlTdHJpbmdzICYmIHZhbHVlID09PSAnJykgcmV0dXJuIHRydWU7XHJcblxyXG4gIHJldHVybiBmYWxzZTtcclxufVxyXG4iXX0=","export function validateStringLength({ maximumLength = Infinity, minimumLength = 0, } = {}) {\n return (control) => {\n if (['', null, undefined].indexOf(control.value) > -1)\n return null;\n const value = String(control.value);\n return getMinLengthError(value, minimumLength) || getMaxLengthError(value, maximumLength);\n };\n}\nfunction getMaxLengthError(value, requiredLength) {\n return value.length > requiredLength ? { maxlength: { requiredLength } } : null;\n}\nfunction getMinLengthError(value, requiredLength) {\n return value.length < requiredLength ? { minlength: { requiredLength } } : null;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWxlbmd0aC52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdmFsaWRhdG9ycy9zdHJpbmctbGVuZ3RoLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEVBQ25DLGFBQWEsR0FBRyxRQUFRLEVBQ3hCLGFBQWEsR0FBRyxDQUFDLE1BQ00sRUFBRTtJQUN6QixPQUFPLENBQUMsT0FBd0IsRUFBNEIsRUFBRTtRQUM1RCxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRW5FLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEMsT0FBTyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzVGLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEtBQWEsRUFBRSxjQUFzQjtJQUM5RCxPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNsRixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsY0FBc0I7SUFDOUQsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDbEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ0xlbmd0aEVycm9yIHtcclxuICBtYXhsZW5ndGg/OiB7XHJcbiAgICByZXF1aXJlZExlbmd0aDogbnVtYmVyO1xyXG4gIH07XHJcbiAgbWlubGVuZ3RoPzoge1xyXG4gICAgcmVxdWlyZWRMZW5ndGg6IG51bWJlcjtcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ0xlbmd0aE9wdGlvbnMge1xyXG4gIG1heGltdW1MZW5ndGg/OiBudW1iZXI7XHJcbiAgbWluaW11bUxlbmd0aD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU3RyaW5nTGVuZ3RoKHtcclxuICBtYXhpbXVtTGVuZ3RoID0gSW5maW5pdHksXHJcbiAgbWluaW11bUxlbmd0aCA9IDAsXHJcbn06IFN0cmluZ0xlbmd0aE9wdGlvbnMgPSB7fSk6IFZhbGlkYXRvckZuIHtcclxuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFN0cmluZ0xlbmd0aEVycm9yIHwgbnVsbCA9PiB7XHJcbiAgICBpZiAoWycnLCBudWxsLCB1bmRlZmluZWRdLmluZGV4T2YoY29udHJvbC52YWx1ZSkgPiAtMSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSBTdHJpbmcoY29udHJvbC52YWx1ZSk7XHJcblxyXG4gICAgcmV0dXJuIGdldE1pbkxlbmd0aEVycm9yKHZhbHVlLCBtaW5pbXVtTGVuZ3RoKSB8fCBnZXRNYXhMZW5ndGhFcnJvcih2YWx1ZSwgbWF4aW11bUxlbmd0aCk7XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TWF4TGVuZ3RoRXJyb3IodmFsdWU6IHN0cmluZywgcmVxdWlyZWRMZW5ndGg6IG51bWJlcik6IFN0cmluZ0xlbmd0aEVycm9yIHwgbnVsbCB7XHJcbiAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IHJlcXVpcmVkTGVuZ3RoID8geyBtYXhsZW5ndGg6IHsgcmVxdWlyZWRMZW5ndGggfSB9IDogbnVsbDtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TWluTGVuZ3RoRXJyb3IodmFsdWU6IHN0cmluZywgcmVxdWlyZWRMZW5ndGg6IG51bWJlcik6IFN0cmluZ0xlbmd0aEVycm9yIHwgbnVsbCB7XHJcbiAgcmV0dXJuIHZhbHVlLmxlbmd0aCA8IHJlcXVpcmVkTGVuZ3RoID8geyBtaW5sZW5ndGg6IHsgcmVxdWlyZWRMZW5ndGggfSB9IDogbnVsbDtcclxufVxyXG4iXX0=","import { isNullOrEmpty } from '../utils';\nexport function validateUniqueCharacter() {\n return (control) => {\n if (isNullOrEmpty(control.value))\n return null;\n return isUnqiueCharacter(control.value) ? null : { uniqueCharacter: true };\n };\n}\nfunction isUnqiueCharacter(value) {\n const set = new Set(value.split(''));\n return set.size == value.length;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlLWNoYXJhY3Rlci52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdmFsaWRhdG9ycy91bmlxdWUtY2hhcmFjdGVyLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBTXpDLE1BQU0sVUFBVSx1QkFBdUI7SUFDckMsT0FBTyxDQUFDLE9BQXdCLEVBQStCLEVBQUU7UUFDL0QsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRTlDLE9BQU8saUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzdFLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEtBQWE7SUFDdEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQVMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRTdDLE9BQU8sR0FBRyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBpc051bGxPckVtcHR5IH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVbmlxdWVDaGFyYWN0ZXJFcnJvciB7XHJcbiAgdW5pcXVlQ2hhcmFjdGVyOiB0cnVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVVbmlxdWVDaGFyYWN0ZXIoKTogVmFsaWRhdG9yRm4ge1xyXG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVW5pcXVlQ2hhcmFjdGVyRXJyb3IgfCBudWxsID0+IHtcclxuICAgIGlmIChpc051bGxPckVtcHR5KGNvbnRyb2wudmFsdWUpKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICByZXR1cm4gaXNVbnFpdWVDaGFyYWN0ZXIoY29udHJvbC52YWx1ZSkgPyBudWxsIDogeyB1bmlxdWVDaGFyYWN0ZXI6IHRydWUgfTtcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1VucWl1ZUNoYXJhY3Rlcih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgY29uc3Qgc2V0ID0gbmV3IFNldDxzdHJpbmc+KHZhbHVlLnNwbGl0KCcnKSk7XHJcblxyXG4gIHJldHVybiBzZXQuc2l6ZSA9PSB2YWx1ZS5sZW5ndGg7XHJcbn1cclxuIl19","import { isNullOrEmpty } from '../utils';\nexport function validateUrl() {\n return (control) => {\n if (isNullOrEmpty(control.value))\n return null;\n return isValidUrl(control.value) ? null : { url: true };\n };\n}\nfunction isValidUrl(value) {\n if (/^http(s)?:\\/\\/[^/]/.test(value) || /^ftp:\\/\\/[^/]/.test(value)) {\n const a = document.createElement('a');\n a.href = value;\n return !!a.host;\n }\n return false;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi92YWxpZGF0b3JzL3VybC52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQU16QyxNQUFNLFVBQVUsV0FBVztJQUN6QixPQUFPLENBQUMsT0FBd0IsRUFBbUIsRUFBRTtRQUNuRCxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFOUMsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFELENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxLQUFhO0lBQy9CLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwRSxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2YsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsQixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgaXNOdWxsT3JFbXB0eSB9IGZyb20gJy4uL3V0aWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXJsRXJyb3Ige1xyXG4gIHVybDogdHJ1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVXJsKCk6IFZhbGlkYXRvckZuIHtcclxuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFVybEVycm9yIHwgbnVsbCA9PiB7XHJcbiAgICBpZiAoaXNOdWxsT3JFbXB0eShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgcmV0dXJuIGlzVmFsaWRVcmwoY29udHJvbC52YWx1ZSkgPyBudWxsIDogeyB1cmw6IHRydWUgfTtcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1ZhbGlkVXJsKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICBpZiAoL15odHRwKHMpPzpcXC9cXC9bXi9dLy50ZXN0KHZhbHVlKSB8fCAvXmZ0cDpcXC9cXC9bXi9dLy50ZXN0KHZhbHVlKSkge1xyXG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGEuaHJlZiA9IHZhbHVlO1xyXG4gICAgcmV0dXJuICEhYS5ob3N0O1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbiJdfQ==","import { isNullOrEmpty } from '../utils';\nconst onlyLetterAndNumberRegex = /^[a-zA-Z0-9]+$/;\nexport function validateUsername({ pattern = /.*/ } = { pattern: onlyLetterAndNumberRegex }) {\n return (control) => {\n const isValid = isValidUserName(control.value, pattern);\n return isValid ? null : { usernamePattern: { actualValue: control.value } };\n };\n}\nfunction isValidUserName(value, pattern) {\n if (isNullOrEmpty(value))\n return true;\n return pattern.test(value);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcm5hbWUudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3ZhbGlkYXRvcnMvdXNlcm5hbWUudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFZekMsTUFBTSx3QkFBd0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUVsRCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLEVBQUUsT0FBTyxHQUFHLElBQUksS0FBc0IsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUU7SUFFM0UsT0FBTyxDQUFDLE9BQXdCLEVBQStCLEVBQUU7UUFDL0QsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEQsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7SUFDOUUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLEtBQVUsRUFBRSxPQUFlO0lBQ2xELElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRXRDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgaXNOdWxsT3JFbXB0eSB9IGZyb20gJy4uL3V0aWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXNlcm5hbWVQYXR0ZXJuRXJyb3Ige1xyXG4gIHVzZXJuYW1lUGF0dGVybjoge1xyXG4gICAgYWN0dWFsVmFsdWU6IHN0cmluZztcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJuYW1lT3B0aW9ucyB7XHJcbiAgcGF0dGVybj86IFJlZ0V4cDtcclxufVxyXG5cclxuY29uc3Qgb25seUxldHRlckFuZE51bWJlclJlZ2V4ID0gL15bYS16QS1aMC05XSskLztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVVzZXJuYW1lKFxyXG4gIHsgcGF0dGVybiA9IC8uKi8gfTogVXNlcm5hbWVPcHRpb25zID0geyBwYXR0ZXJuOiBvbmx5TGV0dGVyQW5kTnVtYmVyUmVnZXggfSxcclxuKTogVmFsaWRhdG9yRm4ge1xyXG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVXNlcm5hbWVQYXR0ZXJuRXJyb3IgfCBudWxsID0+IHtcclxuICAgIGNvbnN0IGlzVmFsaWQgPSBpc1ZhbGlkVXNlck5hbWUoY29udHJvbC52YWx1ZSwgcGF0dGVybik7XHJcbiAgICByZXR1cm4gaXNWYWxpZCA/IG51bGwgOiB7IHVzZXJuYW1lUGF0dGVybjogeyBhY3R1YWxWYWx1ZTogY29udHJvbC52YWx1ZSB9IH07XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNWYWxpZFVzZXJOYW1lKHZhbHVlOiBhbnksIHBhdHRlcm46IFJlZ0V4cCk6IGJvb2xlYW4ge1xyXG4gIGlmIChpc051bGxPckVtcHR5KHZhbHVlKSkgcmV0dXJuIHRydWU7XHJcblxyXG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodmFsdWUpO1xyXG59XHJcbiJdfQ==","import { Validators } from '@angular/forms';\nimport { validateMinAge } from './age.validator';\nimport { validateCreditCard } from './credit-card.validator';\nimport { validateRange } from './range.validator';\nimport { validateRequired } from './required.validator';\nimport { validateStringLength } from './string-length.validator';\nimport { validateUniqueCharacter } from './unique-character.validator';\nimport { validateUrl } from './url.validator';\nimport { validateUsername } from './username.validator';\nexport { validateUniqueCharacter } from './unique-character.validator';\nexport * from './age.validator';\nexport * from './credit-card.validator';\nexport * from './range.validator';\nexport * from './required.validator';\nexport * from './string-length.validator';\nexport * from './url.validator';\nexport * from './unique-character.validator';\nexport const AbpValidators = {\n creditCard: validateCreditCard,\n emailAddress: () => Validators.email,\n minAge: validateMinAge,\n range: validateRange,\n required: validateRequired,\n stringLength: validateStringLength,\n url: validateUrl,\n username: validateUsername,\n uniqueCharacter: validateUniqueCharacter,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdmFsaWRhdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFdkUsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDM0IsVUFBVSxFQUFFLGtCQUFrQjtJQUM5QixZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUs7SUFDcEMsTUFBTSxFQUFFLGNBQWM7SUFDdEIsS0FBSyxFQUFFLGFBQWE7SUFDcEIsUUFBUSxFQUFFLGdCQUFnQjtJQUMxQixZQUFZLEVBQUUsb0JBQW9CO0lBQ2xDLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLFFBQVEsRUFBRSxnQkFBZ0I7SUFDMUIsZUFBZSxFQUFFLHVCQUF1QjtDQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgdmFsaWRhdGVNaW5BZ2UgfSBmcm9tICcuL2FnZS52YWxpZGF0b3InO1xyXG5pbXBvcnQgeyB2YWxpZGF0ZUNyZWRpdENhcmQgfSBmcm9tICcuL2NyZWRpdC1jYXJkLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IHZhbGlkYXRlUmFuZ2UgfSBmcm9tICcuL3JhbmdlLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IHZhbGlkYXRlUmVxdWlyZWQgfSBmcm9tICcuL3JlcXVpcmVkLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IHZhbGlkYXRlU3RyaW5nTGVuZ3RoIH0gZnJvbSAnLi9zdHJpbmctbGVuZ3RoLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IHZhbGlkYXRlVW5pcXVlQ2hhcmFjdGVyIH0gZnJvbSAnLi91bmlxdWUtY2hhcmFjdGVyLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IHZhbGlkYXRlVXJsIH0gZnJvbSAnLi91cmwudmFsaWRhdG9yJztcclxuaW1wb3J0IHsgdmFsaWRhdGVVc2VybmFtZSB9IGZyb20gJy4vdXNlcm5hbWUudmFsaWRhdG9yJztcclxuZXhwb3J0IHsgdmFsaWRhdGVVbmlxdWVDaGFyYWN0ZXIgfSBmcm9tICcuL3VuaXF1ZS1jaGFyYWN0ZXIudmFsaWRhdG9yJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vYWdlLnZhbGlkYXRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY3JlZGl0LWNhcmQudmFsaWRhdG9yJztcclxuZXhwb3J0ICogZnJvbSAnLi9yYW5nZS52YWxpZGF0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlcXVpcmVkLnZhbGlkYXRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3RyaW5nLWxlbmd0aC52YWxpZGF0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL3VybC52YWxpZGF0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL3VuaXF1ZS1jaGFyYWN0ZXIudmFsaWRhdG9yJztcclxuZXhwb3J0IGNvbnN0IEFicFZhbGlkYXRvcnMgPSB7XHJcbiAgY3JlZGl0Q2FyZDogdmFsaWRhdGVDcmVkaXRDYXJkLFxyXG4gIGVtYWlsQWRkcmVzczogKCkgPT4gVmFsaWRhdG9ycy5lbWFpbCxcclxuICBtaW5BZ2U6IHZhbGlkYXRlTWluQWdlLFxyXG4gIHJhbmdlOiB2YWxpZGF0ZVJhbmdlLFxyXG4gIHJlcXVpcmVkOiB2YWxpZGF0ZVJlcXVpcmVkLFxyXG4gIHN0cmluZ0xlbmd0aDogdmFsaWRhdGVTdHJpbmdMZW5ndGgsXHJcbiAgdXJsOiB2YWxpZGF0ZVVybCxcclxuICB1c2VybmFtZTogdmFsaWRhdGVVc2VybmFtZSxcclxuICB1bmlxdWVDaGFyYWN0ZXI6IHZhbGlkYXRlVW5pcXVlQ2hhcmFjdGVyLFxyXG59O1xyXG4iXX0=","// export * from './lib/handlers';\nexport * from './lib/abstracts';\nexport * from './lib/components';\nexport * from './lib/constants';\nexport * from './lib/core.module';\nexport * from './lib/directives';\nexport * from './lib/enums';\nexport * from './lib/guards';\nexport * from './lib/localization.module';\nexport * from './lib/models';\nexport * from './lib/pipes';\nexport * from './lib/providers';\nexport * from './lib/proxy/pages/abp/multi-tenancy';\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/api-exploring';\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/application-configurations';\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending';\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy';\nexport * from './lib/proxy/volo/abp/http/modeling';\nexport * from './lib/proxy/volo/abp/localization';\nexport * from './lib/proxy/volo/abp/models';\nexport * from './lib/services';\nexport * from './lib/strategies';\nexport * from './lib/tokens';\nexport * from './lib/utils';\nexport * from './lib/validators';\nexport * from './lib/interceptors';\nexport * from './lib/clients';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0NBQWtDO0FBQ2xDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsa0VBQWtFLENBQUM7QUFDakYsY0FBYyxtRkFBbUYsQ0FBQztBQUNsRyxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHBvcnQgKiBmcm9tICcuL2xpYi9oYW5kbGVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Fic3RyYWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25zdGFudHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnVtcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2d1YXJkcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvY2FsaXphdGlvbi5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb3ZpZGVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb3h5L3BhZ2VzL2FicC9tdWx0aS10ZW5hbmN5JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9hcGktZXhwbG9yaW5nJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb3h5L3ZvbG8vYWJwL2FzcC1uZXQtY29yZS9tdmMvYXBwbGljYXRpb24tY29uZmlndXJhdGlvbnMvb2JqZWN0LWV4dGVuZGluZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb3h5L3ZvbG8vYWJwL2FzcC1uZXQtY29yZS9tdmMvbXVsdGktdGVuYW5jeSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb3h5L3ZvbG8vYWJwL2h0dHAvbW9kZWxpbmcnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm94eS92b2xvL2FicC9sb2NhbGl6YXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm94eS92b2xvL2FicC9tb2RlbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0cmF0ZWdpZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2tlbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRvcnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmNlcHRvcnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGllbnRzJztcclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public-api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLmNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9hYnAtbmcuY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19"],"names":["map","take","filter","switchMap","distinctUntilChanged"],"mappings":"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"}
1
+ {"version":3,"file":"abp-ng.core.mjs","sources":["../../../../packages/core/src/lib/abstracts/ng-model.component.ts","../../../../packages/core/src/lib/abstracts/auth.guard.ts","../../../../packages/core/src/lib/abstracts/auth.service.ts","../../../../packages/core/src/lib/abstracts/auth-error-filter.ts","../../../../packages/core/src/lib/tokens/localization.token.ts","../../../../packages/core/src/lib/tokens/options.token.ts","../../../../packages/core/src/lib/utils/localization-utils.ts","../../../../packages/core/src/lib/utils/string-utils.ts","../../../../packages/core/src/lib/services/content-projection.service.ts","../../../../packages/core/src/lib/utils/array-utils.ts","../../../../packages/core/src/lib/utils/common-utils.ts","../../../../packages/core/src/lib/utils/date-utils.ts","../../../../packages/core/src/lib/utils/object-utils.ts","../../../../packages/core/src/lib/utils/internal-store-utils.ts","../../../../packages/core/src/lib/services/environment.service.ts","../../../../packages/core/src/lib/services/http-error-reporter.service.ts","../../../../packages/core/src/lib/utils/environment-utils.ts","../../../../packages/core/src/lib/utils/factory-utils.ts","../../../../packages/core/src/lib/utils/file-utils.ts","../../../../packages/core/src/lib/utils/number-utils.ts","../../../../packages/core/src/lib/utils/form-utils.ts","../../../../packages/core/src/lib/utils/generator-utils.ts","../../../../packages/core/src/lib/utils/http-utils.ts","../../../../packages/core/src/lib/services/local-storage.service.ts","../../../../packages/core/src/lib/tokens/app-config.token.ts","../../../../packages/core/src/lib/tokens/cookie-language-key.token.ts","../../../../packages/core/src/lib/tokens/list.token.ts","../../../../packages/core/src/lib/tokens/lodaer-delay.token.ts","../../../../packages/core/src/lib/tokens/manage-profile.token.ts","../../../../packages/core/src/lib/tokens/queue.token.ts","../../../../packages/core/src/lib/tokens/tenant-key.token.ts","../../../../packages/core/src/lib/tokens/include-localization-resources.token.ts","../../../../packages/core/src/lib/tokens/pipe-to-login.token.ts","../../../../packages/core/src/lib/tokens/set-token-response-to-storage.token.ts","../../../../packages/core/src/lib/tokens/check-authentication-state.ts","../../../../packages/core/src/lib/tokens/http-context.token.ts","../../../../packages/core/src/lib/tokens/others-group.token.ts","../../../../packages/core/src/lib/tokens/tenant-not-found-by-name.ts","../../../../packages/core/src/lib/tokens/compare-func.token.ts","../../../../packages/core/src/lib/tokens/dynamic-layout.token.ts","../../../../packages/core/src/lib/tokens/title-strategy-disable-project-name.token.ts","../../../../packages/core/src/lib/tokens/ssr-state.token.ts","../../../../packages/core/src/lib/services/cookie-storage.service.ts","../../../../packages/core/src/lib/services/session-state.service.ts","../../../../packages/core/src/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.ts","../../../../packages/core/src/lib/services/multi-tenancy.service.ts","../../../../packages/core/src/lib/utils/multi-tenancy-utils.ts","../../../../packages/core/src/lib/utils/initial-utils.ts","../../../../packages/core/src/lib/strategies/cross-origin.strategy.ts","../../../../packages/core/src/lib/strategies/dom.strategy.ts","../../../../packages/core/src/lib/utils/lazy-load-utils.ts","../../../../packages/core/src/lib/utils/queue.ts","../../../../packages/core/src/lib/utils/route-utils.ts","../../../../packages/core/src/lib/utils/tree-utils.ts","../../../../packages/core/src/lib/utils/server-cookie-utils.ts","../../../../packages/core/src/lib/services/dom-insertion.service.ts","../../../../packages/core/src/lib/services/html-encoding.service.ts","../../../../packages/core/src/lib/services/http-wait.service.ts","../../../../packages/core/src/lib/services/resource-wait.service.ts","../../../../packages/core/src/lib/services/lazy-load.service.ts","../../../../packages/core/src/lib/services/list.service.ts","../../../../packages/core/src/lib/services/permission.service.ts","../../../../packages/core/src/lib/services/replaceable-components.service.ts","../../../../packages/core/src/lib/clients/http.client.ts","../../../../packages/core/src/lib/services/rest.service.ts","../../../../packages/core/src/lib/services/router-events.service.ts","../../../../packages/core/src/lib/services/router-wait.service.ts","../../../../packages/core/src/lib/services/routes.service.ts","../../../../packages/core/src/lib/services/subscription.service.ts","../../../../packages/core/src/lib/services/track-by.service.ts","../../../../packages/core/src/lib/services/window.service.ts","../../../../packages/core/src/lib/services/internet-connection-service.ts","../../../../packages/core/src/lib/services/local-storage-listener.service.ts","../../../../packages/core/src/lib/services/title-strategy.service.ts","../../../../packages/core/src/lib/services/timezone.service.ts","../../../../packages/core/src/lib/services/time.service.ts","../../../../packages/core/src/lib/strategies/container.strategy.ts","../../../../packages/core/src/lib/strategies/content-security.strategy.ts","../../../../packages/core/src/lib/strategies/content.strategy.ts","../../../../packages/core/src/lib/strategies/context.strategy.ts","../../../../packages/core/src/lib/strategies/loading.strategy.ts","../../../../packages/core/src/lib/strategies/projection.strategy.ts","../../../../packages/core/src/lib/services/dom-strategy.service.ts","../../../../packages/core/src/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.ts","../../../../packages/core/src/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-localization.service.ts","../../../../packages/core/src/lib/services/config-state.service.ts","../../../../packages/core/src/lib/services/localization.service.ts","../../../../packages/core/src/lib/components/dynamic-layout.component.ts","../../../../packages/core/src/lib/components/replaceable-route-container.component.ts","../../../../packages/core/src/lib/components/router-outlet.component.ts","../../../../packages/core/src/lib/constants/different-locales.ts","../../../../packages/core/src/lib/constants/default-layouts.ts","../../../../packages/core/src/lib/directives/autofocus.directive.ts","../../../../packages/core/src/lib/directives/debounce.directive.ts","../../../../packages/core/src/lib/directives/for.directive.ts","../../../../packages/core/src/lib/directives/form-submit.directive.ts","../../../../packages/core/src/lib/directives/init.directive.ts","../../../../packages/core/src/lib/directives/permission.directive.ts","../../../../packages/core/src/lib/directives/replaceable-template.directive.ts","../../../../packages/core/src/lib/directives/stop-propagation.directive.ts","../../../../packages/core/src/lib/directives/show-password.directive.ts","../../../../packages/core/src/lib/directives/caps-lock.directive.ts","../../../../packages/core/src/lib/utils/date-extensions.ts","../../../../packages/core/src/lib/providers/cookie-language.provider.ts","../../../../packages/core/src/lib/providers/locale.provider.ts","../../../../packages/core/src/lib/providers/include-localization-resources.provider.ts","../../../../packages/core/src/lib/handlers/routes.handler.ts","../../../../packages/core/src/lib/interceptors/api.interceptor.ts","../../../../packages/core/src/lib/interceptors/timezone.interceptor.ts","../../../../packages/core/src/lib/interceptors/transfer-state.interceptor.ts","../../../../packages/core/src/lib/providers/core-module-config.provider.ts","../../../../packages/core/src/lib/pipes/localization.pipe.ts","../../../../packages/core/src/lib/pipes/safe-html.pipe.ts","../../../../packages/core/src/lib/pipes/sort.pipe.ts","../../../../packages/core/src/lib/pipes/to-injector.pipe.ts","../../../../packages/core/src/lib/pipes/short-date.pipe.ts","../../../../packages/core/src/lib/pipes/short-time.pipe.ts","../../../../packages/core/src/lib/pipes/short-date-time.pipe.ts","../../../../packages/core/src/lib/pipes/utc-to-local.pipe.ts","../../../../packages/core/src/lib/pipes/async-localization.pipe.ts","../../../../packages/core/src/lib/pipes/lazy-localization.pipe.ts","../../../../packages/core/src/lib/pipes/html-encode.pipe.ts","../../../../packages/core/src/lib/core.module.ts","../../../../packages/core/src/lib/guards/permission.guard.ts","../../../../packages/core/src/lib/localization.module.ts","../../../../packages/core/src/lib/models/dtos.ts","../../../../packages/core/src/lib/models/auth-events.ts","../../../../packages/core/src/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.ts","../../../../packages/core/src/lib/validators/age.validator.ts","../../../../packages/core/src/lib/validators/credit-card.validator.ts","../../../../packages/core/src/lib/validators/range.validator.ts","../../../../packages/core/src/lib/validators/required.validator.ts","../../../../packages/core/src/lib/validators/string-length.validator.ts","../../../../packages/core/src/lib/validators/unique-character.validator.ts","../../../../packages/core/src/lib/validators/url.validator.ts","../../../../packages/core/src/lib/validators/username.validator.ts","../../../../packages/core/src/lib/validators/index.ts","../../../../packages/core/src/public-api.ts","../../../../packages/core/src/abp-ng.core.ts"],"sourcesContent":["import { ChangeDetectorRef, Component, inject, Input } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\n\r\n// Not an abstract class on purpose. Do not change!\r\n@Component({\r\n template: '',\r\n})\r\nexport class AbstractNgModelComponent<T = any, U = T> implements ControlValueAccessor {\r\n protected _value!: T;\r\n protected cdRef = inject(ChangeDetectorRef);\r\n onChange?: (value: T) => void;\r\n onTouched?: () => void;\r\n\r\n @Input()\r\n disabled?: boolean;\r\n\r\n @Input()\r\n readonly?: boolean;\r\n\r\n @Input()\r\n valueFn: (value: U, previousValue?: T) => T = value => value as any as T;\r\n\r\n @Input()\r\n valueLimitFn: (value: T, previousValue?: T) => any = value => false;\r\n\r\n @Input()\r\n set value(value: T) {\r\n value = this.valueFn(value as any as U, this._value);\r\n\r\n if (this.valueLimitFn(value, this._value) !== false || this.readonly) return;\r\n\r\n this._value = value;\r\n this.notifyValueChange();\r\n }\r\n\r\n get value(): T {\r\n return this._value || this.defaultValue;\r\n }\r\n\r\n get defaultValue(): T {\r\n return this._value;\r\n }\r\n\r\n notifyValueChange(): void {\r\n if (this.onChange) {\r\n this.onChange(this.value);\r\n }\r\n }\r\n\r\n writeValue(value: T): void {\r\n this._value = this.valueLimitFn(value, this._value) || value;\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { IAbpGuard } from './abstract-guard';\r\nimport { CanActivateFn } from '@angular/router';\r\n\r\n/**\r\n * @deprecated Use `authGuard` *function* instead.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthGuard implements IAbpGuard {\r\n canActivate(): Observable<boolean> | boolean | UrlTree {\r\n console.error('You should add @abp/ng-oauth packages or create your own auth packages.');\r\n return false;\r\n }\r\n}\r\n\r\nexport const authGuard: CanActivateFn = () => {\r\n console.error('You should add @abp/ng-oauth packages or create your own auth packages.');\r\n return false;\r\n};\r\n\r\n\r\nexport const asyncAuthGuard: CanActivateFn = () => {\r\n console.error('You should add @abp/ng-oauth packages or create your own auth packages.');\r\n return false;\r\n};\r\n","import { HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Params } from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\nimport { LoginParams } from '../models/auth';\r\nimport { AbpAuthResponse } from './auth-response.model';\r\n\r\n/**\r\n * Abstract service for Authentication.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService implements IAuthService {\r\n private warningMessage() {\r\n console.error('You should add @abp/ng-oauth packages or create your own auth packages.');\r\n }\r\n\r\n get oidc(): boolean {\r\n this.warningMessage();\r\n return false;\r\n }\r\n\r\n set oidc(value: boolean) {\r\n this.warningMessage();\r\n }\r\n\r\n init(): Promise<any> {\r\n this.warningMessage();\r\n return Promise.resolve(undefined);\r\n }\r\n\r\n login(params: LoginParams): Observable<any> {\r\n this.warningMessage();\r\n return of(undefined);\r\n }\r\n\r\n logout(queryParams?: Params): Observable<any> {\r\n this.warningMessage();\r\n return of(undefined);\r\n }\r\n\r\n navigateToLogin(queryParams?: Params): void { }\r\n\r\n get isInternalAuth(): boolean {\r\n throw new Error('not implemented');\r\n }\r\n\r\n get isAuthenticated(): boolean {\r\n this.warningMessage();\r\n return false;\r\n }\r\n\r\n loginUsingGrant(\r\n grantType: string,\r\n parameters: object,\r\n headers?: HttpHeaders,\r\n ): Promise<AbpAuthResponse> {\r\n console.log({ grantType, parameters, headers });\r\n return Promise.reject(new Error('not implemented'));\r\n }\r\n\r\n getAccessTokenExpiration(): number {\r\n this.warningMessage();\r\n return 0;\r\n }\r\n\r\n getRefreshToken(): string {\r\n this.warningMessage();\r\n return '';\r\n }\r\n\r\n getAccessToken(): string {\r\n this.warningMessage();\r\n return '';\r\n }\r\n\r\n refreshToken(): Promise<AbpAuthResponse> {\r\n this.warningMessage();\r\n return Promise.resolve(undefined);\r\n }\r\n}\r\n\r\nexport interface IAuthService {\r\n oidc: boolean;\r\n\r\n get isInternalAuth(): boolean;\r\n\r\n get isAuthenticated(): boolean;\r\n\r\n init(): Promise<any>;\r\n\r\n logout(queryParams?: Params): Observable<any>;\r\n\r\n navigateToLogin(queryParams?: Params): void;\r\n\r\n login(params: LoginParams): Observable<any>;\r\n\r\n loginUsingGrant(\r\n grantType: string,\r\n parameters: object,\r\n headers?: HttpHeaders,\r\n ): Promise<AbpAuthResponse>;\r\n\r\n getAccessTokenExpiration(): number;\r\n\r\n getRefreshToken(): string;\r\n\r\n getAccessToken(): string;\r\n\r\n refreshToken(): Promise<AbpAuthResponse | void>;\r\n}\r\n","import { AuthErrorEvent, AuthErrorFilter } from '../models';\r\n\r\nexport abstract class AbstractAuthErrorFilter<T, E> {\r\n abstract get(id: string): T;\r\n abstract add(filter: T): void;\r\n abstract patch(item: Partial<T>): void;\r\n abstract remove(id: string): void;\r\n abstract run(event: E): boolean;\r\n}\r\n\r\nexport class AuthErrorFilterService<\r\n T = AuthErrorFilter,\r\n E = AuthErrorEvent,\r\n> extends AbstractAuthErrorFilter<T, E> {\r\n private warningMessage() {\r\n console.error('You should add @abp/ng-oauth packages or create your own auth packages.');\r\n }\r\n\r\n get(id: string): T {\r\n this.warningMessage();\r\n throw new Error('not implemented');\r\n }\r\n\r\n add(filter: T): void {\r\n this.warningMessage();\r\n }\r\n\r\n patch(item: Partial<T>): void {\r\n this.warningMessage();\r\n }\r\n\r\n remove(id: string): void {\r\n this.warningMessage();\r\n }\r\n\r\n run(event: E): boolean {\r\n this.warningMessage();\r\n throw new Error('not implemented');\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ABP } from '../models/common';\r\n\r\nexport const LOCALIZATIONS = new InjectionToken('LOCALIZATIONS');\r\n\r\nexport function localizationContributor(localizations?: ABP.Localization[]) {\r\n if (localizations) {\r\n localizations$.next([...localizations$.value, ...localizations]);\r\n }\r\n}\r\n\r\nexport const localizations$ = new BehaviorSubject<ABP.Localization[]>([]);\r\n","import { InjectionToken } from '@angular/core';\r\nimport { ABP } from '../models/common';\r\n\r\nexport const CORE_OPTIONS = new InjectionToken<ABP.Root>('CORE_OPTIONS');\r\n\r\nexport function coreOptionsFactory({ ...options }: ABP.Root) {\r\n return {\r\n ...options,\r\n } as ABP.Root;\r\n}\r\n","import { ApplicationLocalizationConfigurationDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\n\r\n// This will not be necessary when only Angukar 9.1+ is supported\r\nexport function getLocaleDirection(locale: string): 'ltr' | 'rtl' {\r\n return /^(ar(-[A-Z]{2})?|ckb(-IR)?|fa(-AF)?|he|ks|lrc(-IQ)?|mzn|pa-Arab|ps(-PK)?|sd|ug|ur(-IN)?|uz-Arab|yi)$/.test(\r\n locale,\r\n )\r\n ? 'rtl'\r\n : 'ltr';\r\n}\r\n\r\nexport function createLocalizer(localization: ApplicationLocalizationConfigurationDto) {\r\n return (resourceName: string, key: string, defaultValue: string | null) => {\r\n if (resourceName === '_') return key;\r\n\r\n const resource = localization?.values?.[resourceName];\r\n\r\n if (!resource) return defaultValue;\r\n\r\n return resource[key] || defaultValue;\r\n };\r\n}\r\n\r\nexport function createLocalizerWithFallback(localization: ApplicationLocalizationConfigurationDto) {\r\n const findLocalization = createLocalizationFinder(localization);\r\n\r\n return (resourceNames: string[], keys: string[], defaultValue: string) => {\r\n const { localized } = findLocalization(resourceNames, keys);\r\n return localized || defaultValue;\r\n };\r\n}\r\n\r\nexport function createLocalizationPipeKeyGenerator(\r\n localization: ApplicationLocalizationConfigurationDto,\r\n) {\r\n const findLocalization = createLocalizationFinder(localization);\r\n\r\n return (resourceNames: string[], keys: string[], defaultKey: string | undefined) => {\r\n const { resourceName, key } = findLocalization(resourceNames, keys);\r\n return !resourceName ? defaultKey : resourceName === '_' ? key : `${resourceName}::${key}`;\r\n };\r\n}\r\n\r\nfunction createLocalizationFinder(localization: ApplicationLocalizationConfigurationDto) {\r\n const localize = createLocalizer(localization);\r\n\r\n return (resourceNames: string[], keys: string[]) => {\r\n resourceNames = resourceNames.concat(localization.defaultResourceName || '').filter(Boolean);\r\n\r\n const resourceCount = resourceNames.length;\r\n const keyCount = keys.length;\r\n\r\n for (let i = 0; i < resourceCount; i++) {\r\n const resourceName = resourceNames[i];\r\n\r\n for (let j = 0; j < keyCount; j++) {\r\n const key = keys[j];\r\n const localized = localize(resourceName, key, null);\r\n if (localized) return { resourceName, key, localized };\r\n }\r\n }\r\n\r\n return { resourceName: undefined, key: undefined, localized: undefined };\r\n };\r\n}\r\n","export function createTokenParser(format: string) {\r\n return (str: string) => {\r\n const tokens: string[] = [];\r\n const regex = format.replace(/\\./g, '\\\\.').replace(/\\{\\s?([0-9a-zA-Z]+)\\s?\\}/g, (_, token) => {\r\n tokens.push(token);\r\n return '(.+)';\r\n });\r\n\r\n const matches = (str.match(regex) || []).slice(1);\r\n\r\n return matches.reduce((acc, v, i) => {\r\n const key = tokens[i];\r\n acc[key] = [...(acc[key] || []), v].filter(Boolean);\r\n return acc;\r\n }, {} as Record<string, string[]>);\r\n };\r\n}\r\n\r\nexport function interpolate(text: string, params: string[]) {\r\n return text\r\n .replace(/(['\"])?\\{\\s*(\\d+)\\s*\\}\\1/g, (_, quote, digit) => \r\n (quote ? quote : '') + (params[digit] ?? `{${digit}}`) + (quote ? quote : '')\r\n )\r\n .replace(/\\s+/g, ' ');\r\n}\r\n\r\nexport function escapeHtmlChars(value: any) {\r\n return value && typeof value === 'string'\r\n ? value\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n : value;\r\n}\r\n","import { Injectable, Injector, TemplateRef, Type, inject } from '@angular/core';\r\nimport { ProjectionStrategy } from '../strategies/projection.strategy';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ContentProjectionService {\r\n private injector = inject(Injector);\r\n\r\n\r\n projectContent<T extends Type<any> | TemplateRef<any>>(\r\n projectionStrategy: ProjectionStrategy<T>,\r\n injector = this.injector,\r\n ) {\r\n return projectionStrategy.injectContent(injector);\r\n }\r\n}\r\n","export function pushValueTo<T>(array: T[]) {\r\n return (element: T) => {\r\n array.push(element);\r\n return array;\r\n };\r\n}\r\n","export function noop() {\r\n const fn = function () {};\r\n return fn;\r\n}\r\n\r\nexport function isUndefinedOrEmptyString(value: unknown): boolean {\r\n return value === undefined || value === '';\r\n}\r\n\r\nexport function isNullOrUndefined<T>(obj: T) {\r\n return obj === null || obj === undefined;\r\n}\r\n\r\nexport function isNullOrEmpty<T>(obj: T): boolean {\r\n return obj === null || obj === undefined || obj === '';\r\n}\r\n\r\nexport function exists<T>(obj: T): obj is T {\r\n return !isNullOrUndefined(obj);\r\n}\r\n\r\nexport function isObject<T>(obj: T): boolean {\r\n return obj instanceof Object;\r\n}\r\n\r\nexport function isArray<T>(obj: T): boolean {\r\n return Array.isArray(obj);\r\n}\r\n\r\nexport function isObjectAndNotArray<T>(obj: T): boolean {\r\n return isObject(obj) && !isArray(obj);\r\n}\r\n\r\nexport function isNode<T>(obj: T): boolean {\r\n return obj instanceof Node;\r\n}\r\n\r\nexport function isObjectAndNotArrayNotNode<T>(obj: T): boolean {\r\n return isObjectAndNotArray(obj) && !isNode(obj);\r\n}\r\n\r\nexport function checkHasProp<T>(object: T, key: string | keyof T): key is keyof T {\r\n return Object.prototype.hasOwnProperty.call(object, key);\r\n}\r\n","import { DateTimeFormatDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\nimport { ConfigStateService } from '../services';\r\n\r\nexport function getShortDateFormat(configStateService: ConfigStateService) {\r\n const dateTimeFormat = configStateService.getDeep(\r\n 'localization.currentCulture.dateTimeFormat',\r\n ) as DateTimeFormatDto;\r\n\r\n return dateTimeFormat.shortDatePattern;\r\n}\r\n\r\nexport function getShortTimeFormat(configStateService: ConfigStateService) {\r\n const dateTimeFormat = configStateService.getDeep(\r\n 'localization.currentCulture.dateTimeFormat',\r\n ) as DateTimeFormatDto;\r\n return dateTimeFormat?.shortTimePattern?.replace('tt', 'a');\r\n}\r\n\r\nexport function getShortDateShortTimeFormat(configStateService: ConfigStateService) {\r\n const dateTimeFormat = configStateService.getDeep(\r\n 'localization.currentCulture.dateTimeFormat',\r\n ) as DateTimeFormatDto;\r\n\r\n return `${dateTimeFormat.shortDatePattern} ${dateTimeFormat?.shortTimePattern?.replace('tt', 'a')}`;\r\n}\r\n","import {\r\n exists,\r\n isArray,\r\n isNode,\r\n isNullOrUndefined,\r\n isObject,\r\n isObjectAndNotArrayNotNode,\r\n} from './common-utils';\r\nimport { DeepPartial } from '../models';\r\n\r\nexport function deepMerge<T>(\r\n target: DeepPartial<T> | T,\r\n source: DeepPartial<T> | T,\r\n): DeepPartial<T> | T {\r\n if (isObjectAndNotArrayNotNode(target) && isObjectAndNotArrayNotNode(source)) {\r\n return deepMergeRecursively(target, source);\r\n } else if (isNullOrUndefined(target) && isNullOrUndefined(source)) {\r\n return {} as T;\r\n } else {\r\n return exists(source) ? (source as T) : target;\r\n }\r\n}\r\n\r\nfunction deepMergeRecursively<T>(\r\n target: DeepPartial<T> | T,\r\n source: DeepPartial<T> | T,\r\n): DeepPartial<T> | T {\r\n const shouldNotRecurse =\r\n isNullOrUndefined(target) ||\r\n isNullOrUndefined(source) || // at least one not defined\r\n isArray(target) ||\r\n isArray(source) || // at least one array\r\n !isObject(target) ||\r\n !isObject(source) || // at least one not an object\r\n isNode(target) ||\r\n isNode(source); // at least one node\r\n\r\n /**\r\n * if we will not recurse any further,\r\n * we will prioritize source if it is a defined value.\r\n */\r\n if (shouldNotRecurse) {\r\n return exists(source) ? (source as T) : target;\r\n }\r\n\r\n const keysOfTarget = Object.keys(target as { [key: string]: any });\r\n const keysOfSource = Object.keys(source as { [key: string]: any });\r\n const uniqueKeys = new Set(keysOfTarget.concat(keysOfSource));\r\n return [...uniqueKeys].reduce((retVal, key) => {\r\n (retVal as any)[key] = deepMergeRecursively(\r\n (target as { [key: string]: any })[key],\r\n (source as { [key: string]: any })[key],\r\n );\r\n return retVal;\r\n }, {} as T);\r\n}\r\n","import compare from 'just-compare';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\r\nimport { DeepPartial } from '../models';\r\nimport { deepMerge } from './object-utils';\r\n\r\nexport class InternalStore<State> {\r\n private state$ = new BehaviorSubject<State>(this.initialState);\r\n\r\n private update$ = new Subject<DeepPartial<State>>();\r\n\r\n get state() {\r\n return this.state$.value;\r\n }\r\n\r\n sliceState = <Slice>(\r\n selector: (state: State) => Slice,\r\n compareFn: (s1: Slice, s2: Slice) => boolean = compare,\r\n ) => this.state$.pipe(map(selector), distinctUntilChanged(compareFn));\r\n\r\n sliceUpdate = <Slice>(\r\n selector: (state: DeepPartial<State>) => Slice,\r\n filterFn = (x: Slice) => x !== undefined,\r\n ) => this.update$.pipe(map(selector), filter(filterFn));\r\n\r\n constructor(private initialState: State) {}\r\n\r\n patch(state: Partial<State>) {\r\n let patchedState = state as State;\r\n\r\n if (typeof state === 'object' && !Array.isArray(state)) {\r\n patchedState = { ...this.state, ...state };\r\n }\r\n\r\n this.state$.next(patchedState);\r\n this.update$.next(patchedState as DeepPartial<State>);\r\n }\r\n\r\n deepPatch(state: DeepPartial<State>) {\r\n // TODO: Strict improve deepMerge\r\n this.state$.next(deepMerge(this.state, state) as State);\r\n this.update$.next(state);\r\n }\r\n\r\n set(state: State) {\r\n this.state$.next(state);\r\n this.update$.next(state as DeepPartial<State>);\r\n }\r\n\r\n reset() {\r\n this.set(this.initialState);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { Apis, Environment } from '../models/environment';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\n\r\nconst mapToApiUrl = (key: string | undefined) => (apis: Apis) =>\r\n ((key && apis[key]) || apis.default).url || apis.default.url;\r\n\r\nconst mapToIssuer = (issuer: string | undefined) => {\r\n if (!issuer) {\r\n return issuer;\r\n }\r\n return issuer.endsWith('/') ? issuer : issuer + '/';\r\n};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class EnvironmentService {\r\n private readonly store = new InternalStore({} as Environment);\r\n\r\n get createOnUpdateStream() {\r\n return this.store.sliceUpdate;\r\n }\r\n\r\n getEnvironment$(): Observable<Environment> {\r\n return this.store.sliceState(state => state);\r\n }\r\n\r\n getEnvironment(): Environment {\r\n return this.store.state;\r\n }\r\n\r\n getApiUrl(key: string | undefined) {\r\n return mapToApiUrl(key)(this.store.state?.apis);\r\n }\r\n\r\n getApiUrl$(key: string) {\r\n return this.store.sliceState(state => state.apis).pipe(map(mapToApiUrl(key)));\r\n }\r\n\r\n setState(environment: Environment) {\r\n this.store.set(environment);\r\n }\r\n\r\n getIssuer() {\r\n const issuer = this.store.state?.oAuthConfig?.issuer;\r\n\r\n return mapToIssuer(issuer);\r\n }\r\n\r\n getIssuer$() {\r\n return this.store.sliceState(state => state?.oAuthConfig?.issuer).pipe(map(mapToIssuer));\r\n }\r\n\r\n getImpersonation() {\r\n return this.store.state?.oAuthConfig?.impersonation || {};\r\n }\r\n\r\n getImpersonation$() {\r\n return this.store.sliceState(state => state?.oAuthConfig?.impersonation || {});\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class HttpErrorReporterService {\r\n private _reporter$ = new Subject<HttpErrorResponse>();\r\n private _errors$ = new BehaviorSubject<HttpErrorResponse[]>([]);\r\n\r\n get reporter$() {\r\n return this._reporter$.asObservable();\r\n }\r\n\r\n get errors$() {\r\n return this._errors$.asObservable();\r\n }\r\n\r\n get errors() {\r\n return this._errors$.value;\r\n }\r\n\r\n reportError(error: HttpErrorResponse) {\r\n this._reporter$.next(error);\r\n this._errors$.next([...this.errors, error]);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injector } from '@angular/core';\r\nimport { of } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { Environment, RemoteEnv } from '../models/environment';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { HttpErrorReporterService } from '../services/http-error-reporter.service';\r\nimport { deepMerge } from './object-utils';\r\n\r\nexport function getRemoteEnv(injector: Injector, environment: Partial<Environment>) {\r\n const environmentService = injector.get(EnvironmentService);\r\n\r\n const { remoteEnv } = environment;\r\n const { headers = {}, method = 'GET', url } = remoteEnv || ({} as RemoteEnv);\r\n if (!url) return Promise.resolve();\r\n\r\n const http = injector.get(HttpClient);\r\n const httpErrorReporter = injector.get(HttpErrorReporterService);\r\n\r\n return http\r\n .request<Environment>(method, url, { headers })\r\n .pipe(\r\n catchError(err => {\r\n httpErrorReporter.reportError(err);\r\n return of(null);\r\n }), // TODO: Consider get handle function from a provider\r\n tap(env =>\r\n environmentService.setState(\r\n mergeEnvironments(environment, env || ({} as Environment), remoteEnv as RemoteEnv),\r\n ),\r\n ),\r\n )\r\n .toPromise();\r\n}\r\n\r\nfunction mergeEnvironments(\r\n local: Partial<Environment>,\r\n remote: Environment,\r\n config: RemoteEnv,\r\n): Environment {\r\n switch (config.mergeStrategy) {\r\n case 'deepmerge':\r\n return deepMerge(local, remote) as Environment;\r\n case 'overwrite':\r\n case null:\r\n case undefined:\r\n return remote;\r\n default:\r\n return config.mergeStrategy(local, remote);\r\n }\r\n}\r\n","import {\r\n Compiler,\r\n Injector,\r\n ModuleWithProviders,\r\n NgModuleFactory,\r\n NgModuleRef,\r\n StaticProvider,\r\n Type,\r\n} from '@angular/core';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { ConfigStateService } from '../services/config-state.service';\r\n\r\nexport class LazyModuleFactory<T> extends NgModuleFactory<T> {\r\n get moduleType(): Type<T> {\r\n return this.moduleWithProviders.ngModule;\r\n }\r\n\r\n constructor(private moduleWithProviders: ModuleWithProviders<T>) {\r\n super();\r\n }\r\n\r\n create(parentInjector: Injector | null): NgModuleRef<T> {\r\n const injector = Injector.create({\r\n ...(parentInjector && { parent: parentInjector }),\r\n providers: this.moduleWithProviders.providers as StaticProvider[],\r\n });\r\n\r\n const compiler = injector.get(Compiler);\r\n const factory = compiler.compileModuleSync(this.moduleType);\r\n\r\n return factory.create(injector);\r\n }\r\n}\r\n\r\nexport function featuresFactory(\r\n configState: ConfigStateService,\r\n featureKeys: string[],\r\n mapFn: (features: { [key: string]: string }) => any = features => features,\r\n) {\r\n return configState.getFeatures$(featureKeys).pipe(filter(Boolean), map(mapFn));\r\n}\r\n","/** @deprecated the method will change in v8.0 */ \r\nexport function downloadBlob(blob: Blob, filename: string) {\r\n const blobUrl = URL.createObjectURL(blob);\r\n\r\n const link = document.createElement('a');\r\n\r\n link.href = blobUrl;\r\n link.download = filename;\r\n\r\n document.body.appendChild(link);\r\n\r\n link.dispatchEvent(\r\n new MouseEvent('click', {\r\n bubbles: true,\r\n cancelable: true,\r\n view: window,\r\n }),\r\n );\r\n\r\n document.body.removeChild(link);\r\n}\r\n","export function isNumber(value: string | number): boolean {\r\n return value == Number(value);\r\n}\r\n","import { ABP } from '../models/common';\r\nimport { isNumber } from './number-utils';\r\n\r\nexport function mapEnumToOptions<T>(_enum: T): ABP.Option<T>[] {\r\n const options: ABP.Option<T>[] = [];\r\n\r\n for (const member in _enum)\r\n if (!isNumber(member))\r\n options.push({\r\n key: member,\r\n value: _enum[member],\r\n });\r\n\r\n return options;\r\n}\r\n","import { Injector } from '@angular/core';\r\nimport { ABP } from '../models';\r\nimport { ConfigStateService } from '../services';\r\n\r\nexport function uuid(a?: any): string {\r\n return a\r\n ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)\r\n : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid);\r\n}\r\n\r\nexport function generateHash(value: string): number {\r\n let hashed = 0;\r\n let charCode: number;\r\n\r\n for (let i = 0; i < value.length; i++) {\r\n charCode = value.charCodeAt(i);\r\n hashed = (hashed << 5) - hashed + charCode;\r\n hashed |= 0;\r\n }\r\n return hashed;\r\n}\r\n\r\nexport function generatePassword(injector?: Injector, length = 8) {\r\n if (injector) {\r\n length = getRequiredPasswordLength(injector);\r\n }\r\n\r\n length = Math.min(Math.max(4, length), 128);\r\n\r\n const lowers = 'abcdefghjkmnpqrstuvwxyz';\r\n const uppers = 'ABCDEFGHJKMNPQRSTUVWXYZ';\r\n const numbers = '23456789';\r\n const specials = '!*_#/+-.';\r\n const all = lowers + uppers + numbers + specials;\r\n\r\n const getRandom = (chrSet: string) => chrSet[Math.floor(Math.random() * chrSet.length)];\r\n\r\n const password = Array({ length });\r\n password[0] = getRandom(lowers);\r\n password[1] = getRandom(uppers);\r\n password[2] = getRandom(numbers);\r\n password[3] = getRandom(specials);\r\n\r\n for (let i = 4; i < length; i++) {\r\n password[i] = getRandom(all);\r\n }\r\n\r\n return password.sort(() => 0.5 - Math.random()).join('');\r\n}\r\n\r\nfunction getRequiredPasswordLength(injector: Injector) {\r\n const configState = injector.get(ConfigStateService);\r\n const passwordRules: ABP.Dictionary<string> = configState.getSettings('Identity.Password');\r\n return Number(passwordRules['Abp.Identity.Password.RequiredLength']) || 8;\r\n}\r\n","import { HttpParameterCodec } from '@angular/common/http';\r\n\r\nexport function getPathName(url: string): string {\r\n const { pathname } = new URL(url, window.location.origin);\r\n return pathname;\r\n}\r\n\r\nexport class WebHttpUrlEncodingCodec implements HttpParameterCodec {\r\n encodeKey(k: string): string {\r\n return encodeURIComponent(k);\r\n }\r\n\r\n encodeValue(v: string): string {\r\n return encodeURIComponent(v);\r\n }\r\n\r\n decodeKey(k: string): string {\r\n return decodeURIComponent(k);\r\n }\r\n\r\n decodeValue(v: string) {\r\n return decodeURIComponent(v);\r\n }\r\n}\r\n","import { inject, Injectable, PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpLocalStorageService implements Storage {\r\n private platformId = inject(PLATFORM_ID);\r\n\r\n constructor() {\r\n }\r\n [name: string]: any;\r\n get length(): number {\r\n return isPlatformBrowser(this.platformId) ? localStorage.length : 0;\r\n }\r\n\r\n clear(): void {\r\n if (isPlatformBrowser(this.platformId)) {\r\n localStorage.clear();\r\n }\r\n }\r\n getItem(key: string): string | null {\r\n if (!isPlatformBrowser(this.platformId)) {\r\n return null;\r\n }\r\n return localStorage.getItem(key);\r\n }\r\n key(index: number): string | null {\r\n if (!isPlatformBrowser(this.platformId)) {\r\n return null;\r\n }\r\n return localStorage.key(index);\r\n }\r\n removeItem(key: string): void {\r\n if (isPlatformBrowser(this.platformId)) {\r\n localStorage.removeItem(key);\r\n }\r\n }\r\n setItem(key: string, value: string): void {\r\n if (isPlatformBrowser(this.platformId)) {\r\n localStorage.setItem(key, value);\r\n }\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport type AppInitErrorFn = (error: any) => void;\r\n\r\nexport const APP_INIT_ERROR_HANDLERS = new InjectionToken<AppInitErrorFn[]>(\r\n 'APP_INIT_ERROR_HANDLERS',\r\n);\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const COOKIE_LANGUAGE_KEY = new InjectionToken<string>('COOKIE_LANGUAGE_KEY', {\r\n factory: () => '.AspNetCore.Culture',\r\n});\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const LIST_QUERY_DEBOUNCE_TIME = new InjectionToken<number>('LIST_QUERY_DEBOUNCE_TIME');\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const LOADER_DELAY = new InjectionToken<number>('LOADER_DELAY');\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const NAVIGATE_TO_MANAGE_PROFILE = new InjectionToken<() => void>(\r\n 'NAVIGATE_TO_MANAGE_PROFILE',\r\n);\r\n","import { QueueManager } from \"../utils/queue\";\r\nimport { InjectionToken } from \"@angular/core\";\r\n\r\nexport const QUEUE_MANAGER = new InjectionToken<QueueManager>(\"QUEUE_MANAGER\");\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const TENANT_KEY = new InjectionToken<string>('TENANT_KEY');\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const INCUDE_LOCALIZATION_RESOURCES_TOKEN = new InjectionToken<boolean>(\r\n 'INCUDE_LOCALIZATION_RESOURCES_TOKEN',\r\n);\r\n","import { InjectionToken } from '@angular/core';\r\nimport { PipeToLoginFn } from '../models/auth';\r\n\r\nexport const PIPE_TO_LOGIN_FN_KEY = new InjectionToken<PipeToLoginFn>('PIPE_TO_LOGIN_FN_KEY');\r\n","import { InjectionToken } from '@angular/core';\r\nimport { SetTokenResponseToStorageFn } from '../models';\r\n\r\n/**\r\n * @deprecated The token should not be used anymore. \r\n */\r\nexport const SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY = new InjectionToken<SetTokenResponseToStorageFn>(\r\n 'SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY',\r\n);\r\n","import { InjectionToken } from '@angular/core';\r\nimport { CheckAuthenticationStateFn } from '../models/auth';\r\n\r\nexport const CHECK_AUTHENTICATION_STATE_FN_KEY = new InjectionToken<CheckAuthenticationStateFn>(\r\n 'CHECK_AUTHENTICATION_STATE_FN_KEY',\r\n);\r\n","import { HttpContextToken } from '@angular/common/http';\r\n\r\nexport const IS_EXTERNAL_REQUEST = new HttpContextToken<boolean>(() => false);\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const OTHERS_GROUP = new InjectionToken<string>('OTHERS_GROUP');\r\n","import { InjectionToken } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\n\r\nexport const TENANT_NOT_FOUND_BY_NAME = new InjectionToken<\r\n (HttpErrorResponse: HttpErrorResponse) => void\r\n>('TENANT_NOT_FOUND_BY_NAME');\r\n","import { InjectionToken, inject } from '@angular/core';\r\nimport type { SortableItem } from '../models';\r\nimport { LocalizationService } from '../services';\r\n\r\nexport const SORT_COMPARE_FUNC = new InjectionToken<(a: SortableItem, b: SortableItem) => number>(\r\n 'SORT_COMPARE_FUNC',\r\n);\r\n\r\nexport function compareFuncFactory() {\r\n const localizationService = inject(LocalizationService);\r\n const fn = (a: SortableItem, b: SortableItem) => {\r\n const aNumber = a.order;\r\n const bNumber = b.order;\r\n\r\n if (aNumber > bNumber) return 1;\r\n if (aNumber < bNumber) return -1;\r\n\r\n if (a.id > b.id) return 1;\r\n if (a.id < b.id) return -1;\r\n\r\n if (!Number.isInteger(aNumber)) return 1;\r\n if (!Number.isInteger(bNumber)) return -1;\r\n\r\n const aName = localizationService.instant(a.name);\r\n const bName = localizationService.instant(b.name);\r\n\r\n if (aName > bName) return 1;\r\n if (aName < bName) return -1;\r\n\r\n return 0;\r\n };\r\n\r\n return fn;\r\n}\r\n","import {InjectionToken} from \"@angular/core\";\r\n\r\n export const DYNAMIC_LAYOUTS_TOKEN = new InjectionToken<Map<string, string>>('DYNAMIC_LAYOUTS')\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const DISABLE_PROJECT_NAME = new InjectionToken<boolean>('DISABLE_APP_NAME');\r\n","import { inject, InjectionToken, makeStateKey, PLATFORM_ID, TransferState } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { AbpCookieStorageService } from '../services';\r\n\r\nexport const SSR_FLAG = makeStateKey<boolean>('SSR_FLAG');\r\n\r\nexport const APP_STARTED_WITH_SSR = new InjectionToken<boolean>('APP_STARTED_WITH_SSR', {\r\n providedIn: 'root',\r\n factory: () => {\r\n const platformId = inject(PLATFORM_ID);\r\n const cookieService = inject(AbpCookieStorageService);\r\n if (!isPlatformBrowser(platformId)) return true;\r\n const ts = inject(TransferState);\r\n const ssrEnabled = cookieService.getItem('ssr-init');\r\n // Remove the cookie after reading its value because it's only needed once\r\n cookieService.removeItem('ssr-init');\r\n return ts.get(SSR_FLAG, false) || ssrEnabled === 'true';\r\n },\r\n});\r\n","import { Injectable, PLATFORM_ID, inject, REQUEST } from '@angular/core';\r\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AbpCookieStorageService implements Storage {\r\n private platformId = inject(PLATFORM_ID);\r\n private document = inject(DOCUMENT);\r\n private request = inject(REQUEST);\r\n\r\n get length(): number {\r\n return isPlatformBrowser(this.platformId) ? this.keys().length : this.getCookiesFromRequest()?.size ?? 0;\r\n }\r\n\r\n clear(): void {\r\n if (!isPlatformBrowser(this.platformId)) return;\r\n this.keys().forEach(k => this.removeItem(k));\r\n }\r\n\r\n getItem(key: string): string | null {\r\n if (!isPlatformBrowser(this.platformId)) {\r\n return this.getCookiesFromRequest()?.get(key) ?? null;\r\n }\r\n const name = key + '=';\r\n const parts = (this.document.cookie || '').split('; ');\r\n for (const p of parts) {\r\n if (p.startsWith(name)) {\r\n return decodeURIComponent(p.slice(name.length));\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n key(index: number): string | null {\r\n if (!isPlatformBrowser(this.platformId)) return null;\r\n return this.keys()[index] ?? null;\r\n }\r\n\r\n removeItem(key: string): void {\r\n if (!isPlatformBrowser(this.platformId)) return;\r\n this.setCookie(key, '', { 'max-age': -1, path: '/' });\r\n }\r\n\r\n setItem(key: string, value: string): void {\r\n if (!isPlatformBrowser(this.platformId)) return;\r\n this.setCookie(key, encodeURIComponent(value), {\r\n path: '/',\r\n sameSite: 'Lax',\r\n secure: true,\r\n });\r\n }\r\n\r\n setItemWithExpiry(key: string, value: string, seconds: number): void {\r\n if (!isPlatformBrowser(this.platformId)) return;\r\n this.setCookie(key, encodeURIComponent(value), {\r\n path: '/',\r\n sameSite: 'Lax',\r\n secure: true,\r\n 'max-age': Math.max(0, Math.floor(seconds)),\r\n });\r\n }\r\n\r\n private keys(): string[] {\r\n const raw = (this.document.cookie || '').split('; ').filter(Boolean);\r\n return raw\r\n .map(c => decodeURIComponent(c.split('=')[0]));\r\n }\r\n\r\n private setCookie(name: string, value: string, opts: {\r\n path?: string;\r\n domain?: string;\r\n secure?: boolean;\r\n sameSite?: 'Lax' | 'Strict' | 'None';\r\n expires?: Date;\r\n 'max-age'?: number;\r\n }) {\r\n let s = `${name}=${value}`;\r\n if (opts.path) s += `; Path=${opts.path}`;\r\n if (opts.domain) s += `; Domain=${opts.domain}`;\r\n if (opts.sameSite) s += `; SameSite=${opts.sameSite}`;\r\n if (opts.secure) s += `; Secure`;\r\n if (opts.expires) s += `; Expires=${opts.expires.toUTCString()}`;\r\n if (typeof opts['max-age'] === 'number') s += `; Max-Age=${opts['max-age']}`;\r\n this.document.cookie = s;\r\n }\r\n\r\n private getCookiesFromRequest(): Map<string, string> {\r\n const cookies = new Map<string, string>();\r\n const cookieHeader = this.request?.headers.get('cookie') ?? '';\r\n for (const part of cookieHeader.split(';')) {\r\n const i = part.indexOf('=');\r\n if (i > -1) {\r\n const k = part.slice(0, i).trim();\r\n const v = decodeURIComponent(part.slice(i + 1).trim());\r\n cookies.set(k, v);\r\n }\r\n }\r\n return cookies;\r\n }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport compare from 'just-compare';\r\nimport { filter, take } from 'rxjs/operators';\r\nimport { Session } from '../models/session';\r\nimport { CurrentTenantDto } from '../proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\nimport { ConfigStateService } from './config-state.service';\r\nimport { AbpLocalStorageService } from './local-storage.service';\r\nimport { APP_STARTED_WITH_SSR } from '../tokens';\r\nimport { AbpCookieStorageService } from './cookie-storage.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SessionStateService {\r\n private configState = inject(ConfigStateService);\r\n private localStorageService = inject(AbpLocalStorageService);\r\n private appStartedWithSSR = inject(APP_STARTED_WITH_SSR, { optional: true });\r\n private cookieStorageService = inject(AbpCookieStorageService);\r\n\r\n private readonly store = new InternalStore({} as Session.State);\r\n protected readonly document = inject(DOCUMENT);\r\n\r\n private updateLocalStorage = () => {\r\n if (this.appStartedWithSSR) {\r\n this.cookieStorageService.setItem('abpSession', JSON.stringify(this.store.state));\r\n } else {\r\n this.localStorageService.setItem('abpSession', JSON.stringify(this.store.state));\r\n }\r\n };\r\n\r\n constructor() {\r\n this.init();\r\n this.setInitialLanguage();\r\n }\r\n\r\n private init() {\r\n const storageService = this.appStartedWithSSR ? this.cookieStorageService : this.localStorageService;\r\n const session = storageService.getItem('abpSession');\r\n if (session) {\r\n this.store.set(JSON.parse(session));\r\n }\r\n this.store.sliceUpdate(state => state).subscribe(this.updateLocalStorage);\r\n }\r\n\r\n private setInitialLanguage() {\r\n const appLanguage = this.getLanguage();\r\n\r\n this.configState\r\n .getDeep$('localization.currentCulture.cultureName')\r\n .pipe(\r\n filter(cultureName => !!cultureName),\r\n take(1),\r\n )\r\n .subscribe(lang => {\r\n if (lang.includes(';')) {\r\n lang = lang.split(';')[0];\r\n }\r\n\r\n this.setLanguage(lang);\r\n });\r\n }\r\n\r\n onLanguageChange$() {\r\n return this.store.sliceUpdate(state => state.language);\r\n }\r\n\r\n onTenantChange$() {\r\n return this.store.sliceUpdate(state => state.tenant);\r\n }\r\n\r\n getLanguage() {\r\n return this.store.state.language;\r\n }\r\n\r\n getLanguage$() {\r\n return this.store.sliceState(state => state.language);\r\n }\r\n\r\n getTenant() {\r\n return this.store.state.tenant;\r\n }\r\n\r\n getTenant$() {\r\n return this.store.sliceState(state => state.tenant);\r\n }\r\n\r\n setTenant(tenant: CurrentTenantDto | null) {\r\n if (compare(tenant, this.store.state.tenant)) return;\r\n\r\n this.store.set({ ...this.store.state, tenant });\r\n }\r\n\r\n setLanguage(language: string) {\r\n const currentLanguage = this.store.state.language;\r\n\r\n if (language !== currentLanguage) {\r\n this.store.patch({ language });\r\n }\r\n\r\n const currentAttribute = this.document.documentElement.getAttribute('lang');\r\n if (language !== currentAttribute) {\r\n this.document.documentElement.setAttribute('lang', language);\r\n }\r\n }\r\n}\r\n","import { RestService } from '../../../../services';\r\nimport { Rest } from '../../../../models';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport type { FindTenantResultDto } from '../../../volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpTenantService {\n private restService = inject(RestService);\n\r\n apiName = 'abp';\r\n \r\n\r\n findTenantById = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FindTenantResultDto>({\r\n method: 'GET',\r\n url: `/api/abp/multi-tenancy/tenants/by-id/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n findTenantByName = (name: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FindTenantResultDto>({\r\n method: 'GET',\r\n url: `/api/abp/multi-tenancy/tenants/by-name/${name}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { AbpTenantService } from '../proxy/pages/abp/multi-tenancy';\r\nimport {\r\n CurrentTenantDto,\r\n FindTenantResultDto,\r\n} from '../proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\nimport { TENANT_KEY } from '../tokens/tenant-key.token';\r\nimport { ConfigStateService } from './config-state.service';\r\nimport { SessionStateService } from './session-state.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MultiTenancyService {\r\n private sessionState = inject(SessionStateService);\r\n private tenantService = inject(AbpTenantService);\r\n private configStateService = inject(ConfigStateService);\r\n tenantKey = inject(TENANT_KEY);\r\n\r\n domainTenant: CurrentTenantDto | null = null;\r\n\r\n isTenantBoxVisible = true;\r\n\r\n apiName = 'abp';\r\n\r\n private setTenantToState = (tenant: FindTenantResultDto) => {\r\n this.sessionState.setTenant({ id: tenant.tenantId, name: tenant.name, isAvailable: true });\r\n return this.configStateService.refreshAppState().pipe(map(_ => tenant));\r\n };\r\n\r\n setTenantByName(tenantName: string) {\r\n return this.tenantService\r\n .findTenantByName(tenantName)\r\n .pipe(switchMap(this.setTenantToState));\r\n }\r\n\r\n setTenantById(tenantId: string) {\r\n return this.tenantService\r\n .findTenantById(tenantId)\r\n .pipe(switchMap(this.setTenantToState));\r\n }\r\n}\r\n","import { Injector, PLATFORM_ID } from '@angular/core';\r\nimport clone from 'just-clone';\r\nimport { Environment } from '../models/environment';\r\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\r\n\r\nimport { FindTenantResultDto } from '../proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { MultiTenancyService } from '../services/multi-tenancy.service';\r\nimport { createTokenParser } from './string-utils';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { TENANT_NOT_FOUND_BY_NAME } from '../tokens/tenant-not-found-by-name';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\n\r\nconst tenancyPlaceholder = '{0}';\r\n\r\nfunction getCurrentTenancyName(appBaseUrl: string, injector: Injector): string {\r\n const platformId = injector.get(PLATFORM_ID);\r\n const document = injector.get(DOCUMENT);\r\n if (appBaseUrl.charAt(appBaseUrl.length - 1) !== '/') appBaseUrl += '/';\r\n\r\n const parseTokens = createTokenParser(appBaseUrl);\r\n const token = tenancyPlaceholder.replace(/[}{]/g, '');\r\n const tokenValue = isPlatformBrowser(platformId)\r\n ? parseTokens(document.defaultView?.location.href)[token]?.[0]\r\n : undefined;\r\n return tokenValue;\r\n}\r\n\r\nexport function getCurrentTenancyNameFromUrl(tenantKey: string, injector): string | null {\r\n const platformId = injector.get(PLATFORM_ID);\r\n const document = injector.get(DOCUMENT);\r\n if (!isPlatformBrowser(platformId)) {\r\n return null;\r\n }\r\n const search = document.defaultView?.location.search;\r\n const urlParams = new URLSearchParams(search);\r\n return urlParams.get(tenantKey);\r\n}\r\n\r\nexport async function parseTenantFromUrl(injector: Injector) {\r\n const environmentService = injector.get(EnvironmentService);\r\n const multiTenancyService = injector.get(MultiTenancyService);\r\n const tenantNotFoundHandler = injector.get(TENANT_NOT_FOUND_BY_NAME, null);\r\n\r\n const baseUrl = environmentService.getEnvironment()?.application?.baseUrl || '';\r\n const tenancyName = getCurrentTenancyName(baseUrl, injector);\r\n\r\n const hideTenantBox = () => {\r\n multiTenancyService.isTenantBoxVisible = false;\r\n };\r\n\r\n const setDomainTenant = (tenant: FindTenantResultDto) => {\r\n multiTenancyService.domainTenant = {\r\n id: tenant.tenantId,\r\n name: tenant.name,\r\n isAvailable: true,\r\n };\r\n };\r\n\r\n const setEnvironmentWithDomainTenant = (tenant: FindTenantResultDto) => {\r\n hideTenantBox();\r\n setDomainTenant(tenant);\r\n };\r\n\r\n if (tenancyName) {\r\n /**\r\n * We have to replace tenant name within the urls from environment,\r\n * because the code below will make a http request to find information about the domain tenant.\r\n * Before this request takes place, we need to replace placeholders aka \"{0}\".\r\n */\r\n replaceTenantNameWithinEnvironment(injector, tenancyName);\r\n\r\n const tenant$ = multiTenancyService.setTenantByName(tenancyName);\r\n try {\r\n const result = await firstValueFrom(tenant$);\r\n setEnvironmentWithDomainTenant(result);\r\n return Promise.resolve(result);\r\n } catch (httpError: HttpErrorResponse | any) {\r\n if (\r\n httpError instanceof HttpErrorResponse &&\r\n httpError.status === 404 &&\r\n tenantNotFoundHandler\r\n ) {\r\n tenantNotFoundHandler(httpError);\r\n }\r\n return Promise.reject();\r\n }\r\n }\r\n /**\r\n * If there is no tenant, we still have to clean up {0}. from baseUrl to avoid incorrect http requests.\r\n */\r\n replaceTenantNameWithinEnvironment(injector, '', tenancyPlaceholder + '.');\r\n\r\n const tenantIdFromQueryParams = getCurrentTenancyNameFromUrl(\r\n multiTenancyService.tenantKey,\r\n injector,\r\n );\r\n if (tenantIdFromQueryParams) {\r\n const tenantById$ = multiTenancyService.setTenantById(tenantIdFromQueryParams);\r\n return firstValueFrom(tenantById$);\r\n }\r\n\r\n return Promise.resolve();\r\n}\r\n\r\nfunction replaceTenantNameWithinEnvironment(\r\n injector: Injector,\r\n tenancyName: string,\r\n placeholder = tenancyPlaceholder,\r\n) {\r\n const environmentService = injector.get(EnvironmentService);\r\n\r\n const environment = clone(environmentService.getEnvironment()) as Environment;\r\n\r\n if (environment.application.baseUrl) {\r\n environment.application.baseUrl = environment.application.baseUrl.replace(\r\n placeholder,\r\n tenancyName,\r\n );\r\n }\r\n\r\n if (environment.oAuthConfig?.redirectUri) {\r\n environment.oAuthConfig.redirectUri = environment.oAuthConfig.redirectUri.replace(\r\n placeholder,\r\n tenancyName,\r\n );\r\n }\r\n\r\n if (!environment.oAuthConfig) {\r\n environment.oAuthConfig = {};\r\n }\r\n environment.oAuthConfig.issuer = (environment.oAuthConfig.issuer || '').replace(\r\n placeholder,\r\n tenancyName,\r\n );\r\n\r\n Object.keys(environment.apis).forEach(api => {\r\n Object.keys(environment.apis[api]).forEach(key => {\r\n environment.apis[api][key] = (environment.apis[api][key] || '').replace(\r\n placeholder,\r\n tenancyName,\r\n );\r\n });\r\n });\r\n\r\n return environmentService.setState(environment);\r\n}\r\n","import { registerLocaleData } from '@angular/common';\r\nimport { inject, Injector } from '@angular/core';\r\nimport { tap, catchError } from 'rxjs/operators';\r\nimport { firstValueFrom, lastValueFrom, of, throwError, timeout } from 'rxjs';\r\nimport { ABP } from '../models/common';\r\nimport { Environment } from '../models/environment';\r\nimport { CurrentTenantDto } from '../proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\nimport { ConfigStateService } from '../services/config-state.service';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { SessionStateService } from '../services/session-state.service';\r\nimport { CORE_OPTIONS } from '../tokens/options.token';\r\nimport { APP_INIT_ERROR_HANDLERS } from '../tokens/app-config.token';\r\nimport { CHECK_AUTHENTICATION_STATE_FN_KEY } from '../tokens/check-authentication-state';\r\nimport { APP_STARTED_WITH_SSR } from '../tokens/ssr-state.token';\r\nimport { getRemoteEnv } from './environment-utils';\r\nimport { parseTenantFromUrl } from './multi-tenancy-utils';\r\nimport { AuthService } from '../abstracts';\r\nimport { noop } from './common-utils';\r\n\r\nexport async function getInitialData() {\r\n const injector = inject(Injector);\r\n const environmentService = injector.get(EnvironmentService);\r\n const configState = injector.get(ConfigStateService);\r\n const options = injector.get(CORE_OPTIONS) as ABP.Root;\r\n const appStartedWithSSR = injector.get(APP_STARTED_WITH_SSR);\r\n\r\n environmentService.setState(options.environment as Environment);\r\n await getRemoteEnv(injector, options.environment);\r\n await parseTenantFromUrl(injector);\r\n const authService = injector.get(AuthService, undefined, { optional: true });\r\n const checkAuthenticationState = injector.get(CHECK_AUTHENTICATION_STATE_FN_KEY, noop, {\r\n optional: true,\r\n });\r\n if (!options.skipInitAuthService && authService) {\r\n await authService.init();\r\n }\r\n if (options.skipGetAppConfiguration) return;\r\n\r\n const result$ = configState.refreshAppState().pipe(\r\n tap(() => checkAuthenticationState(injector)),\r\n tap(() => {\r\n const currentTenant = configState.getOne('currentTenant') as CurrentTenantDto;\r\n injector.get(SessionStateService).setTenant(currentTenant);\r\n }),\r\n catchError(error => {\r\n const appInitErrorHandlers = injector.get(APP_INIT_ERROR_HANDLERS, null);\r\n if (appInitErrorHandlers && appInitErrorHandlers.length) {\r\n appInitErrorHandlers.forEach(func => func(error));\r\n }\r\n\r\n return throwError(() => error);\r\n }),\r\n );\r\n\r\n if (appStartedWithSSR) {\r\n await firstValueFrom(\r\n result$.pipe(\r\n timeout(0),\r\n catchError(() => of(null)),\r\n ),\r\n );\r\n } else {\r\n await lastValueFrom(result$);\r\n }\r\n\r\n await localeInitializer(injector);\r\n}\r\n\r\nexport function localeInitializer(injector?: Injector) {\r\n const currentInjector = injector || inject(Injector);\r\n const sessionState = currentInjector.get(SessionStateService);\r\n const { registerLocaleFn }: ABP.Root = currentInjector.get(CORE_OPTIONS);\r\n\r\n const lang = sessionState.getLanguage() || 'en';\r\n\r\n return new Promise((resolve, reject) => {\r\n registerLocaleFn(lang).then(module => {\r\n if (module?.default) registerLocaleData(module.default);\r\n\r\n return resolve('resolved');\r\n }, reject);\r\n });\r\n}\r\n","export class CrossOriginStrategy {\r\n constructor(\r\n public crossorigin: 'anonymous' | 'use-credentials' | null,\r\n public integrity?: string,\r\n ) {}\r\n\r\n setCrossOrigin<T extends HTMLElement>(element: T) {\r\n if (this.integrity) element.setAttribute('integrity', this.integrity);\r\n if (this.crossorigin) {\r\n element.setAttribute('crossorigin', this.crossorigin);\r\n }\r\n }\r\n}\r\n\r\nexport class NoCrossOriginStrategy extends CrossOriginStrategy {\r\n setCrossOrigin() {}\r\n}\r\n\r\nexport const CROSS_ORIGIN_STRATEGY = {\r\n Anonymous(integrity?: string) {\r\n return new CrossOriginStrategy('anonymous', integrity);\r\n },\r\n UseCredentials(integrity?: string) {\r\n return new CrossOriginStrategy('use-credentials', integrity);\r\n },\r\n None() {\r\n return new NoCrossOriginStrategy(null);\r\n },\r\n};\r\n","export class DomStrategy {\r\n constructor(\r\n private getTarget: () => HTMLElement,\r\n public position: InsertPosition = 'beforeend',\r\n ) {}\r\n\r\n insertElement<T extends HTMLElement>(element: T) {\r\n if (typeof document !== 'undefined') {\r\n const target = this.getTarget();\r\n target.insertAdjacentElement(this.position, element);\r\n }\r\n }\r\n}\r\n\r\nexport const DOM_STRATEGY = {\r\n AfterElement(element: HTMLElement) {\r\n return new DomStrategy(() => element, 'afterend');\r\n },\r\n AppendToBody() {\r\n return new DomStrategy(() => document?.body, 'beforeend');\r\n },\r\n AppendToHead() {\r\n return new DomStrategy(() => document?.head, 'beforeend');\r\n },\r\n BeforeElement(element: HTMLElement) {\r\n return new DomStrategy(() => element, 'beforebegin');\r\n },\r\n PrependToHead() {\r\n return new DomStrategy(() => document?.head, 'afterbegin');\r\n },\r\n};\r\n","import { Observable, Observer } from 'rxjs';\r\nimport { CROSS_ORIGIN_STRATEGY, CrossOriginStrategy } from '../strategies/cross-origin.strategy';\r\nimport { DOM_STRATEGY, DomStrategy } from '../strategies/dom.strategy';\r\n\r\nexport function fromLazyLoad<T extends Event>(\r\n element: HTMLScriptElement | HTMLLinkElement,\r\n domStrategy: DomStrategy = DOM_STRATEGY.AppendToHead(),\r\n crossOriginStrategy: CrossOriginStrategy = CROSS_ORIGIN_STRATEGY.Anonymous(),\r\n): Observable<T> {\r\n crossOriginStrategy.setCrossOrigin(element);\r\n domStrategy.insertElement(element);\r\n\r\n return new Observable((observer: Observer<T>) => {\r\n element.onload = (event: Event) => {\r\n clearCallbacks(element);\r\n observer.next(event as T);\r\n observer.complete();\r\n };\r\n\r\n const handleError = createErrorHandler(observer, element);\r\n\r\n element.onerror = handleError;\r\n element.onabort = handleError;\r\n element.onemptied = handleError;\r\n element.onstalled = handleError;\r\n element.onsuspend = handleError;\r\n\r\n return () => {\r\n clearCallbacks(element);\r\n observer.complete();\r\n };\r\n });\r\n}\r\n\r\nfunction createErrorHandler<T extends Event = Event>(observer: Observer<T>, element: HTMLElement) {\r\n return function (event: Event | string) {\r\n clearCallbacks(element);\r\n element.parentNode?.removeChild(element);\r\n observer.error(event);\r\n };\r\n}\r\n\r\nfunction clearCallbacks(element: HTMLElement) {\r\n element.onload = null;\r\n element.onerror = null;\r\n element.onabort = null;\r\n element.onemptied = null;\r\n element.onstalled = null;\r\n element.onsuspend = null;\r\n}\r\n","export interface QueueManager {\r\n add(fn: () => void): void;\r\n init(interval: number, stackSize: number): void;\r\n}\r\n\r\nexport class DefaultQueueManager implements QueueManager {\r\n private queue: Array<() => void> = [];\r\n private isRunning = false;\r\n private stack = 0;\r\n private interval = 0;\r\n private stackSize = 100;\r\n\r\n public init(interval: number, stackSize: number) {\r\n this.interval = interval;\r\n this.stackSize = stackSize;\r\n }\r\n\r\n public add(fn: () => void) {\r\n this.queue.push(fn);\r\n this.run();\r\n }\r\n\r\n private run() {\r\n if (this.isRunning) return;\r\n this.stack++;\r\n\r\n this.isRunning = true;\r\n\r\n const fn = this.queue.shift();\r\n\r\n if (!fn) {\r\n this.isRunning = false;\r\n return;\r\n }\r\n\r\n fn();\r\n if (this.stack > this.stackSize) {\r\n setTimeout(() => {\r\n this.isRunning = false;\r\n this.run();\r\n this.stack = 0;\r\n }, this.interval);\r\n } else {\r\n this.isRunning = false;\r\n this.run();\r\n }\r\n }\r\n}\r\n","import { NgZone } from '@angular/core';\r\nimport { PRIMARY_OUTLET, Router, UrlSegment, UrlSegmentGroup } from \"@angular/router\";\r\nimport { ABP } from '../models/common';\r\nimport { RoutesService } from '../services/routes.service';\r\nimport { noop } from './common-utils';\r\nimport { TreeNode } from './tree-utils';\r\n\r\nexport function findRoute(routesService: RoutesService, path: string): TreeNode<ABP.Route> | null {\r\n const node = routesService.find(route => route.path === path);\r\n\r\n return node || path === '/'\r\n ? node\r\n : findRoute(routesService, path.split('/').slice(0, -1).join('/') || '/');\r\n}\r\n\r\nexport function getRoutePath(router: Router, url = router.url) {\r\n const emptyGroup = { segments: [] as UrlSegment[] } as UrlSegmentGroup;\r\n const primaryGroup = router.parseUrl(url).root.children[PRIMARY_OUTLET];\r\n\r\n return '/' + (primaryGroup || emptyGroup).segments.map(({ path }) => path).join('/');\r\n}\r\n\r\nexport function reloadRoute(router: Router, ngZone: NgZone) {\r\n const { shouldReuseRoute } = router.routeReuseStrategy;\r\n const setRouteReuse = (reuse: typeof shouldReuseRoute) => {\r\n router.routeReuseStrategy.shouldReuseRoute = reuse;\r\n };\r\n\r\n setRouteReuse(() => false);\r\n router.navigated = false;\r\n\r\n ngZone.run(async () => {\r\n await router.navigateByUrl(router.url).catch(noop);\r\n setRouteReuse(shouldReuseRoute);\r\n });\r\n}\r\n","import { isArray } from './common-utils';\r\n\r\n/* eslint-disable @typescript-eslint/ban-types */\r\nexport class BaseTreeNode<T extends object> {\r\n children: TreeNode<T>[] = [];\r\n isLeaf = true;\r\n parent?: TreeNode<T>;\r\n\r\n constructor(props: T) {\r\n Object.assign(this, props);\r\n }\r\n\r\n static create<T extends object>(props: T) {\r\n return new BaseTreeNode<T>(props) as TreeNode<T>;\r\n }\r\n}\r\n\r\nexport function createTreeFromList<T extends object, R>(\r\n list: T[],\r\n keySelector: (item: T) => NodeKey,\r\n parentKeySelector: typeof keySelector,\r\n valueMapper: (item: T) => R,\r\n) {\r\n const map = createMapFromList(list, keySelector, valueMapper);\r\n const tree: NodeValue<T, typeof valueMapper>[] = [];\r\n\r\n list.forEach(row => {\r\n const id = keySelector(row);\r\n const parentId = parentKeySelector(row);\r\n const node = map.get(id);\r\n\r\n if (!node) return;\r\n\r\n if (parentId) {\r\n const parent = map.get(parentId);\r\n if (!parent) return;\r\n (parent as any).children.push(node);\r\n (parent as any).isLeaf = false;\r\n (node as any).parent = parent;\r\n } else {\r\n tree.push(node);\r\n }\r\n });\r\n\r\n return tree;\r\n}\r\n\r\nexport function createMapFromList<T extends object, R>(\r\n list: T[],\r\n keySelector: (item: T) => NodeKey,\r\n valueMapper: (item: T) => R,\r\n) {\r\n type Key = ReturnType<typeof keySelector>;\r\n type Value = NodeValue<T, typeof valueMapper>;\r\n const map = new Map<Key, Value>();\r\n list.forEach(row => map.set(keySelector(row), valueMapper(row)));\r\n return map;\r\n}\r\n\r\nexport function createTreeNodeFilterCreator<T extends object>(\r\n key: keyof T,\r\n mapperFn: (value: any) => string,\r\n) {\r\n return (search: string) => {\r\n const regex = new RegExp('.*' + search + '.*', 'i');\r\n\r\n return function collectNodes(nodes: TreeNode<T>[], matches: TreeNode<T>[] = []) {\r\n for (const node of nodes) {\r\n if (regex.test(mapperFn(node[key]))) matches.push(node);\r\n\r\n if (node.children.length) collectNodes(node.children, matches);\r\n }\r\n\r\n return matches;\r\n };\r\n };\r\n}\r\n\r\nexport function createGroupMap<T extends { group?: string }>(\r\n list: TreeNode<T>[],\r\n othersGroupKey: string,\r\n) {\r\n if (!isArray(list) || !list.some(node => Boolean(node.group))) return undefined;\r\n\r\n const mapGroup = new Map<string, TreeNode<T>[]>();\r\n\r\n for (const node of list) {\r\n const group = node?.group || othersGroupKey;\r\n if (typeof group !== 'string') {\r\n throw new Error(`Invalid group: ${group}`);\r\n }\r\n\r\n const items = mapGroup.get(group) || [];\r\n items.push(node);\r\n mapGroup.set(group, items);\r\n }\r\n\r\n return mapGroup;\r\n}\r\n\r\nexport type TreeNode<T extends object> = {\r\n [K in keyof T]: T[K];\r\n} & {\r\n children: TreeNode<T>[];\r\n isLeaf: boolean;\r\n parent?: TreeNode<T>;\r\n};\r\n\r\nexport type RouteGroup<T extends object> = {\r\n readonly group: string;\r\n readonly items: TreeNode<T>[];\r\n};\r\n\r\nexport type NodeKey = number | string | symbol | undefined | null;\r\n\r\nexport type NodeValue<T extends object, F extends (...args: any) => any> = F extends undefined\r\n ? TreeNode<T>\r\n : ReturnType<F>;\r\n","export class ServerCookieParser {\r\n static parse(cookieHeader: string): { [key: string]: string } {\r\n const cookies: { [key: string]: string } = {};\r\n\r\n if (!cookieHeader) return cookies;\r\n\r\n try {\r\n cookieHeader.split(';').forEach(cookie => {\r\n const parts = cookie.trim().split('=');\r\n if (parts.length >= 2) {\r\n const name = parts[0].trim();\r\n const value = parts.slice(1).join('=');\r\n\r\n if (name) {\r\n try {\r\n cookies[name] = decodeURIComponent(value);\r\n } catch (e) {\r\n cookies[name] = value;\r\n }\r\n }\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Error parsing cookies:', error);\r\n }\r\n\r\n return cookies;\r\n }\r\n\r\n static middleware() {\r\n return (req: any, res: any, next: any) => {\r\n req.cookies = ServerCookieParser.parse(req.headers.cookie || '');\r\n next();\r\n };\r\n }\r\n\r\n static getCookie(req: any, name: string): string | undefined {\r\n const cookieHeader = req.headers.cookie;\r\n if (!cookieHeader) return undefined;\r\n\r\n const cookies = ServerCookieParser.parse(cookieHeader);\r\n return cookies[name];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ContentStrategy } from '../strategies/content.strategy';\r\nimport { generateHash } from '../utils';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DomInsertionService {\r\n private readonly inserted = new Set<number>();\r\n\r\n insertContent<T extends HTMLScriptElement | HTMLStyleElement>(\r\n contentStrategy: ContentStrategy<T>,\r\n ): T | undefined {\r\n const hash = generateHash(contentStrategy.content);\r\n\r\n if (this.inserted.has(hash)) return;\r\n\r\n const element = contentStrategy.insertElement();\r\n this.inserted.add(hash);\r\n\r\n return element;\r\n }\r\n\r\n removeContent(element: HTMLScriptElement | HTMLStyleElement) {\r\n if (element.textContent) {\r\n const hash = generateHash(element.textContent);\r\n this.inserted.delete(hash);\r\n element.parentNode?.removeChild(element);\r\n }\r\n }\r\n\r\n has(content: string): boolean {\r\n const hash = generateHash(content);\r\n\r\n return this.inserted.has(hash);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HtmlEncodingService {\r\n encode(value: string): string {\r\n if (!value) {\r\n return value;\r\n }\r\n\r\n return value\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&#39;');\r\n }\r\n\r\n decode(value: string): string {\r\n if (!value) {\r\n return value;\r\n }\r\n\r\n return value\r\n .replace(/&amp;/g, '&')\r\n .replace(/&lt;/g, '<')\r\n .replace(/&gt;/g, '>')\r\n .replace(/&quot;/g, '\"')\r\n .replace(/&#39;/g, \"'\");\r\n }\r\n}\r\n","import { Injectable, Injector, inject } from '@angular/core';\r\nimport { HttpRequest } from '@angular/common/http';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\nimport { getPathName } from '../utils/http-utils';\r\nimport { map, mapTo, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { of, Subject, timer } from 'rxjs';\r\nimport { LOADER_DELAY } from '../tokens/lodaer-delay.token';\r\n\r\nexport interface HttpWaitState {\r\n requests: HttpRequest<any>[];\r\n filteredRequests: Array<HttpRequestInfo>;\r\n}\r\nexport interface HttpRequestInfo {\r\n method: string;\r\n endpoint: string;\r\n}\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HttpWaitService {\r\n protected store = new InternalStore<HttpWaitState>({\r\n requests: [],\r\n filteredRequests: [],\r\n });\r\n\r\n private delay: number;\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor() {\r\n const injector = inject(Injector);\r\n\r\n this.delay = injector.get(LOADER_DELAY, 500);\r\n }\r\n\r\n getLoading() {\r\n return !!this.applyFilter(this.store.state.requests).length;\r\n }\r\n\r\n getLoading$() {\r\n return this.store\r\n .sliceState(({ requests }) => requests)\r\n .pipe(\r\n map(requests => !!this.applyFilter(requests).length),\r\n switchMap(condition =>\r\n condition\r\n ? this.delay === 0\r\n ? of(true)\r\n : timer(this.delay).pipe(mapTo(true), takeUntil(this.destroy$))\r\n : of(false),\r\n ),\r\n tap(() => this.destroy$.next()),\r\n );\r\n }\r\n\r\n updateLoading$() {\r\n return this.store.sliceUpdate(({ requests }) => !!this.applyFilter(requests).length);\r\n }\r\n\r\n clearLoading() {\r\n this.store.patch({ requests: [] });\r\n }\r\n\r\n addRequest(request: HttpRequest<any>) {\r\n this.store.patch({ requests: [...this.store.state.requests, request] });\r\n }\r\n\r\n deleteRequest(request: HttpRequest<any>) {\r\n const requests = this.store.state.requests.filter(r => r !== request);\r\n this.store.patch({ requests });\r\n }\r\n\r\n addFilter(request: HttpRequestInfo | HttpRequestInfo[]) {\r\n const requests = Array.isArray(request) ? request : [request];\r\n const filteredRequests = [\r\n ...this.store.state.filteredRequests.filter(\r\n f => !requests.some(r => this.isSameRequest(f, r)),\r\n ),\r\n ...requests,\r\n ];\r\n this.store.patch({ filteredRequests });\r\n }\r\n\r\n removeFilter(request: HttpRequestInfo | HttpRequestInfo[]) {\r\n const requests = Array.isArray(request) ? request : [request];\r\n const filteredRequests = this.store.state.filteredRequests.filter(\r\n f => !requests.some(r => this.isSameRequest(f, r)),\r\n );\r\n this.store.patch({ filteredRequests });\r\n }\r\n\r\n private applyFilter(requests: HttpRequest<any>[] | undefined) {\r\n if (!requests) {\r\n return [];\r\n }\r\n const { filteredRequests } = this.store.state;\r\n return requests.filter(\r\n ({ method, url }) =>\r\n !filteredRequests.find(filteredRequest =>\r\n this.isSameRequest(filteredRequest, { method, endpoint: getPathName(url) }),\r\n ),\r\n );\r\n }\r\n\r\n private isSameRequest(filteredRequest: HttpRequestInfo, request: HttpRequestInfo) {\r\n const { method, endpoint } = filteredRequest;\r\n return endpoint === request.endpoint && method === request.method;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\n\r\nexport interface ResourceWaitState {\r\n resources: Set<string>;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ResourceWaitService {\r\n private store = new InternalStore<ResourceWaitState>({ resources: new Set() });\r\n\r\n getLoading() {\r\n return !!this.store.state.resources.size;\r\n }\r\n\r\n getLoading$() {\r\n return this.store.sliceState(({ resources }) => !!resources.size);\r\n }\r\n\r\n updateLoading$() {\r\n return this.store.sliceUpdate(({ resources }) => !!resources?.size);\r\n }\r\n\r\n clearLoading() {\r\n this.store.patch({ resources: new Set() });\r\n }\r\n\r\n addResource(resource: string) {\r\n const resources = this.store.state.resources;\r\n resources.add(resource);\r\n this.store.patch({ resources });\r\n }\r\n\r\n deleteResource(resource: string) {\r\n const resources = this.store.state.resources;\r\n resources.delete(resource);\r\n this.store.patch({ resources });\r\n }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { concat, Observable, of, pipe, throwError } from 'rxjs';\r\nimport { delay, retryWhen, shareReplay, take, tap } from 'rxjs/operators';\r\nimport { LoadingStrategy } from '../strategies';\r\nimport { ResourceWaitService } from './resource-wait.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LazyLoadService {\r\n private resourceWaitService = inject(ResourceWaitService);\r\n\r\n readonly loaded = new Map<string, HTMLScriptElement | HTMLLinkElement | null>();\r\n\r\n load(strategy: LoadingStrategy, retryTimes?: number, retryDelay?: number): Observable<Event> {\r\n if (this.loaded.has(strategy.path)) return of(new CustomEvent('load'));\r\n this.resourceWaitService.addResource(strategy.path);\r\n const delayOperator = retryDelay ? pipe(delay(retryDelay)) : pipe();\r\n const takeOp = retryTimes ? pipe(take(retryTimes)) : pipe();\r\n return strategy.createStream().pipe(\r\n retryWhen(error$ =>\r\n concat(\r\n error$.pipe(delayOperator, takeOp),\r\n throwError(() => new CustomEvent('error')),\r\n ),\r\n ),\r\n tap(() => {\r\n this.loaded.set(strategy.path, strategy.element);\r\n this.resourceWaitService.deleteResource(strategy.path);\r\n }),\r\n delay(100),\r\n shareReplay({ bufferSize: 1, refCount: true }),\r\n );\r\n }\r\n\r\n remove(path: string): boolean {\r\n const element = this.loaded.get(path);\r\n\r\n if (!element) return false;\r\n\r\n element.parentNode?.removeChild(element);\r\n this.loaded.delete(path);\r\n return true;\r\n }\r\n}\r\n","import { Injectable, Injector, OnDestroy, inject } from '@angular/core';\r\nimport {\r\n EMPTY,\r\n BehaviorSubject,\r\n defer,\r\n MonoTypeOperatorFunction,\r\n Observable,\r\n ReplaySubject,\r\n Subject,\r\n} from 'rxjs';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n filter,\r\n finalize,\r\n shareReplay,\r\n switchMap,\r\n takeUntil,\r\n tap,\r\n} from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { PagedResultDto } from '../models/dtos';\r\nimport { LIST_QUERY_DEBOUNCE_TIME } from '../tokens/list.token';\r\n\r\nexport type RequestStatus = 'idle' | 'loading' | 'success' | 'error';\r\n\r\n@Injectable()\r\nexport class ListService<QueryParamsType = ABP.PageQueryParams | any> implements OnDestroy {\r\n private _filter = '';\r\n set filter(value: string) {\r\n this._filter = value;\r\n this.get();\r\n }\r\n get filter(): string {\r\n return this._filter;\r\n }\r\n\r\n private _maxResultCount = 10;\r\n set maxResultCount(value: number) {\r\n this._maxResultCount = value;\r\n this.get();\r\n }\r\n get maxResultCount(): number {\r\n return this._maxResultCount;\r\n }\r\n\r\n private _page = 0;\r\n set page(value: number) {\r\n if (value === this._page) return;\r\n\r\n this._page = value;\r\n this.get();\r\n }\r\n get page(): number {\r\n return this._page;\r\n }\r\n\r\n private _totalCount = 0;\r\n set totalCount(value: number) {\r\n if (value === this._totalCount) return;\r\n\r\n this._totalCount = value;\r\n this.get();\r\n }\r\n get totalCount(): number {\r\n return this._totalCount;\r\n }\r\n\r\n private _sortKey: string | number = '';\r\n set sortKey(value: string | number) {\r\n this._sortKey = value;\r\n this.get();\r\n }\r\n get sortKey(): string | number {\r\n return this._sortKey;\r\n }\r\n\r\n private _sortOrder = '';\r\n set sortOrder(value: string) {\r\n this._sortOrder = value;\r\n this.get();\r\n }\r\n get sortOrder(): string {\r\n return this._sortOrder;\r\n }\r\n\r\n private _query$ = new ReplaySubject<QueryParamsType>(1);\r\n\r\n get query$(): Observable<QueryParamsType> {\r\n return this._query$\r\n .asObservable()\r\n .pipe(this.delay, shareReplay({ bufferSize: 1, refCount: true }));\r\n }\r\n\r\n private _isLoading$ = new BehaviorSubject(false);\r\n\r\n private _requestStatus = new BehaviorSubject<RequestStatus>('idle');\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n private delay: MonoTypeOperatorFunction<QueryParamsType>;\r\n\r\n /**\r\n * @deprecated Use `requestStatus$` instead.\r\n */\r\n get isLoading$(): Observable<boolean> {\r\n return this._isLoading$.asObservable().pipe(takeUntil(this.destroy$));\r\n }\r\n\r\n get requestStatus$(): Observable<RequestStatus> {\r\n return this._requestStatus.asObservable().pipe(takeUntil(this.destroy$));\r\n }\r\n\r\n get = () => {\r\n this.resetPageWhenUnchanged();\r\n this.next();\r\n };\r\n\r\n getWithoutPageReset = () => {\r\n this.next();\r\n };\r\n\r\n constructor() {\r\n const injector = inject(Injector);\r\n\r\n const delay = injector.get(LIST_QUERY_DEBOUNCE_TIME, 300);\r\n this.delay = delay ? debounceTime(delay) : tap();\r\n this.get();\r\n }\r\n\r\n hookToQuery<T>(\r\n streamCreatorCallback: QueryStreamCreatorCallback<T, QueryParamsType>,\r\n ): Observable<PagedResultDto<T>> {\r\n return this.query$.pipe(\r\n tap(() => this._isLoading$.next(true)),\r\n tap(() => this._requestStatus.next('loading')),\r\n switchMap(query =>\r\n defer(() => streamCreatorCallback(query)).pipe(\r\n catchError(() => {\r\n this._requestStatus.next('error');\r\n return EMPTY;\r\n }),\r\n tap(() => this._requestStatus.next('success')),\r\n finalize(() => {\r\n this._isLoading$.next(false);\r\n this._requestStatus.next('idle');\r\n }),\r\n ),\r\n ),\r\n filter(Boolean),\r\n shareReplay<any>({ bufferSize: 1, refCount: true }),\r\n takeUntil(this.destroy$),\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n }\r\n private resetPageWhenUnchanged() {\r\n const maxPage = Number(Number(this.totalCount / this._maxResultCount).toFixed());\r\n const skipCount = this._page * this._maxResultCount;\r\n\r\n if (skipCount !== this._totalCount) {\r\n return;\r\n }\r\n\r\n if (this.page === maxPage && this.page > 0) {\r\n this.page = this.page - 1;\r\n }\r\n }\r\n\r\n private next() {\r\n this._query$.next({\r\n filter: this._filter || undefined,\r\n maxResultCount: this._maxResultCount,\r\n skipCount: this._page * this._maxResultCount,\r\n sorting: this._sortOrder ? `${this._sortKey} ${this._sortOrder}` : undefined,\r\n } as any as QueryParamsType);\r\n }\r\n}\r\n\r\nexport type QueryStreamCreatorCallback<T, QueryParamsType = ABP.PageQueryParams> = (\r\n query: QueryParamsType,\r\n) => Observable<PagedResultDto<T>>;\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { map } from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { ApplicationConfigurationDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\nimport { ConfigStateService } from './config-state.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PermissionService {\r\n protected configState = inject(ConfigStateService);\r\n\r\n\r\n getGrantedPolicy$(key: string) {\r\n return this.getStream().pipe(\r\n map(grantedPolicies => this.isPolicyGranted(key, grantedPolicies)),\r\n );\r\n }\r\n\r\n getGrantedPolicy(key: string | undefined) {\r\n const policies = this.getSnapshot();\r\n return this.isPolicyGranted(key, policies);\r\n }\r\n\r\n filterItemsByPolicy<T extends ABP.HasPolicy>(items: Array<T>) {\r\n const policies = this.getSnapshot();\r\n return items.filter(\r\n item => !item.requiredPolicy || this.isPolicyGranted(item.requiredPolicy, policies),\r\n );\r\n }\r\n\r\n filterItemsByPolicy$<T extends ABP.HasPolicy>(items: Array<T>) {\r\n return this.getStream().pipe(\r\n map(policies =>\r\n items.filter(\r\n item => !item.requiredPolicy || this.isPolicyGranted(item.requiredPolicy, policies),\r\n ),\r\n ),\r\n );\r\n }\r\n\r\n protected isPolicyGranted(key: string | undefined, grantedPolicies: Record<string, boolean>) {\r\n if (!key) return true;\r\n\r\n const orRegexp = /\\|\\|/g;\r\n const andRegexp = /&&/g;\r\n\r\n // TODO: Allow combination of ANDs & ORs\r\n if (orRegexp.test(key)) {\r\n const keys = key.split('||').filter(Boolean);\r\n\r\n if (keys.length < 2) return false;\r\n\r\n return keys.some(k => this.getPolicy(k.trim(), grantedPolicies));\r\n } else if (andRegexp.test(key)) {\r\n const keys = key.split('&&').filter(Boolean);\r\n\r\n if (keys.length < 2) return false;\r\n\r\n return keys.every(k => this.getPolicy(k.trim(), grantedPolicies));\r\n }\r\n\r\n return this.getPolicy(key, grantedPolicies);\r\n }\r\n\r\n protected getStream() {\r\n return this.configState.getAll$().pipe(map(this.mapToPolicies));\r\n }\r\n\r\n protected getSnapshot() {\r\n return this.mapToPolicies(this.configState.getAll());\r\n }\r\n\r\n protected mapToPolicies(applicationConfiguration: ApplicationConfigurationDto) {\r\n return applicationConfiguration?.auth?.grantedPolicies || {};\r\n }\r\n\r\n protected getPolicy(key: string, grantedPolicies: Record<string, boolean>) {\r\n return grantedPolicies[key] || false;\r\n }\r\n}\r\n","import { Injectable, NgZone, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ReplaceableComponents } from '../models/replaceable-components';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\nimport { reloadRoute } from '../utils/route-utils';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ReplaceableComponentsService {\r\n private ngZone = inject(NgZone);\r\n private router = inject(Router);\r\n\r\n private readonly store: InternalStore<ReplaceableComponents.ReplaceableComponent[]>;\r\n\r\n get replaceableComponents$(): Observable<ReplaceableComponents.ReplaceableComponent[]> {\r\n return this.store.sliceState(state => state);\r\n }\r\n\r\n get replaceableComponents(): ReplaceableComponents.ReplaceableComponent[] {\r\n return this.store.state;\r\n }\r\n\r\n get onUpdate$(): Observable<ReplaceableComponents.ReplaceableComponent[]> {\r\n return this.store.sliceUpdate(state => state);\r\n }\r\n\r\n constructor() {\r\n this.store = new InternalStore([] as ReplaceableComponents.ReplaceableComponent[]);\r\n }\r\n\r\n add(replaceableComponent: ReplaceableComponents.ReplaceableComponent, reload?: boolean): void {\r\n const replaceableComponents = [...this.store.state];\r\n\r\n const index = replaceableComponents.findIndex(\r\n component => component.key === replaceableComponent.key,\r\n );\r\n\r\n if (index > -1) {\r\n replaceableComponents[index] = replaceableComponent;\r\n } else {\r\n replaceableComponents.push(replaceableComponent);\r\n }\r\n\r\n this.store.set(replaceableComponents);\r\n\r\n if (reload) reloadRoute(this.router, this.ngZone);\r\n }\r\n\r\n get(replaceableComponentKey: string): ReplaceableComponents.ReplaceableComponent | undefined {\r\n return this.replaceableComponents.find(component => component.key === replaceableComponentKey);\r\n }\r\n\r\n get$(replaceableComponentKey: string): Observable<ReplaceableComponents.ReplaceableComponent | undefined> {\r\n return this.replaceableComponents$.pipe(\r\n map(components => components.find(component => component.key === replaceableComponentKey)),\r\n );\r\n }\r\n}\r\n","import { HttpClient, HttpContext, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IS_EXTERNAL_REQUEST } from '../tokens/http-context.token';\r\n\r\n// source : https://github.com/armanozak/demo-angular-server-specific-interceptors\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ExternalHttpClient extends HttpClient {\r\n override request(\r\n first: string | HttpRequest<any>,\r\n url?: string,\r\n options: RequestOptions = {},\r\n ): Observable<any> {\r\n if (typeof first === 'string') {\r\n this.#setPlaceholderContext(options);\r\n return super.request(first, url || '', options);\r\n }\r\n\r\n this.#setPlaceholderContext(first);\r\n return super.request(first);\r\n }\r\n #setPlaceholderContext(optionsOrRequest: { context?: HttpContext }) {\r\n optionsOrRequest.context ??= new HttpContext();\r\n optionsOrRequest.context.set(IS_EXTERNAL_REQUEST, true);\r\n }\r\n}\r\n\r\ntype RequestOptions = Parameters<HttpClient['request']>[2];\r\n","import { HttpClient, HttpParameterCodec, HttpParams, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { ExternalHttpClient } from '../clients/http.client';\r\nimport { ABP } from '../models/common';\r\nimport { Rest } from '../models/rest';\r\nimport { CORE_OPTIONS } from '../tokens/options.token';\r\nimport { isUndefinedOrEmptyString } from '../utils/common-utils';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { HttpErrorReporterService } from './http-error-reporter.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RestService {\r\n protected options = inject<ABP.Root>(CORE_OPTIONS);\r\n protected http = inject(HttpClient);\r\n protected externalHttp = inject(ExternalHttpClient);\r\n protected environment = inject(EnvironmentService);\r\n protected httpErrorReporter = inject(HttpErrorReporterService);\r\n\r\n\r\n protected getApiFromStore(apiName: string | undefined): string {\r\n return this.environment.getApiUrl(apiName);\r\n }\r\n\r\n handleError(err: any): Observable<any> {\r\n this.httpErrorReporter.reportError(err);\r\n return throwError(() => err);\r\n }\r\n\r\n request<T, R>(\r\n request: HttpRequest<T> | Rest.Request<T>,\r\n config?: Rest.Config,\r\n api?: string,\r\n ): Observable<R> {\r\n config = config || ({} as Rest.Config);\r\n api = api || this.getApiFromStore(config.apiName);\r\n const { method, params, ...options } = request;\r\n const { observe = Rest.Observe.Body, skipHandleError, responseType = Rest.ResponseType.JSON } = config;\r\n const url = this.removeDuplicateSlashes(api + request.url);\r\n\r\n const httpClient: HttpClient = this.getHttpClient(config.skipAddingHeader);\r\n return httpClient\r\n .request<R>(method, url, {\r\n observe,\r\n responseType: responseType as any,\r\n ...(params && {\r\n params: this.getParams(params, config.httpParamEncoder),\r\n }),\r\n ...options,\r\n } as any)\r\n .pipe(catchError(err => (skipHandleError ? throwError(() => err) : this.handleError(err))));\r\n }\r\n private getHttpClient(isExternal: boolean) {\r\n return isExternal ? this.externalHttp : this.http;\r\n }\r\n\r\n private getParams(params: Rest.Params, encoder?: HttpParameterCodec): HttpParams {\r\n const filteredParams = Object.entries(params).reduce((acc, [key, value]) => {\r\n if (isUndefinedOrEmptyString(value)) return acc;\r\n if (value === null && !this.options.sendNullsAsQueryParam) return acc;\r\n acc[key] = value;\r\n return acc;\r\n }, {} as any);\r\n return encoder\r\n ? new HttpParams({ encoder, fromObject: filteredParams })\r\n : new HttpParams({ fromObject: filteredParams });\r\n }\r\n\r\n private removeDuplicateSlashes(url: string): string {\r\n return url.replace(/([^:]\\/)\\/+/g, '$1');\r\n }\r\n}\r\n","import { Injectable, Type, inject, signal } from '@angular/core';\r\nimport {\r\n NavigationCancel,\r\n NavigationEnd,\r\n NavigationError,\r\n NavigationStart,\r\n Router,\r\n RouterEvent,\r\n Event,\r\n} from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nexport const NavigationEvent = {\r\n Cancel: NavigationCancel,\r\n End: NavigationEnd,\r\n Error: NavigationError,\r\n Start: NavigationStart,\r\n};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RouterEvents {\r\n protected readonly router = inject(Router);\r\n\r\n readonly #previousNavigation = signal<string | undefined>(undefined);\r\n previousNavigation = this.#previousNavigation.asReadonly();\r\n\r\n readonly #currentNavigation = signal<string | undefined>(undefined);\r\n currentNavigation = this.#currentNavigation.asReadonly();\r\n\r\n constructor() {\r\n this.listenToNavigation();\r\n }\r\n\r\n protected listenToNavigation(): void {\r\n const routerEvent$ = this.router.events.pipe(\r\n filter(e => e instanceof NavigationEvent.End && e.url != null && !e.url.includes('error'))\r\n ) as Observable<NavigationEnd>;\r\n \r\n routerEvent$.subscribe(event => {\r\n this.#previousNavigation.set(this.currentNavigation());\r\n this.#currentNavigation.set(event.url);\r\n });\r\n }\r\n\r\n getEvents<T extends RouterEventConstructors>(...eventTypes: T) {\r\n const filterRouterEvents = (event: Event) => eventTypes.some(type => event instanceof type);\r\n\r\n return this.router.events.pipe(filter(filterRouterEvents));\r\n }\r\n\r\n getNavigationEvents<T extends NavigationEventKeys>(...navigationEventKeys: T) {\r\n type FilteredNavigationEvent = T extends (infer Key)[]\r\n ? Key extends NavigationEventKey\r\n ? InstanceType<NavigationEventType[Key]>\r\n : never\r\n : never;\r\n\r\n const filterNavigationEvents = (event: Event): event is FilteredNavigationEvent =>\r\n navigationEventKeys.some(key => event instanceof NavigationEvent[key]);\r\n\r\n return this.router.events.pipe(filter(filterNavigationEvents));\r\n }\r\n\r\n getAllEvents() {\r\n return this.router.events;\r\n }\r\n\r\n getAllNavigationEvents() {\r\n const keys = Object.keys(NavigationEvent) as NavigationEventKeys;\r\n return this.getNavigationEvents(...keys);\r\n }\r\n}\r\n\r\ntype RouterEventConstructors = [Type<RouterEvent>, ...Type<RouterEvent>[]];\r\n\r\ntype NavigationEventKeys = [NavigationEventKey, ...NavigationEventKey[]];\r\n\r\ntype NavigationEventType = typeof NavigationEvent;\r\n\r\nexport type NavigationEventKey = keyof NavigationEventType;\r\n","import { Injectable, Injector, inject } from '@angular/core';\r\nimport { NavigationStart } from '@angular/router';\r\nimport { of, Subject, timer } from 'rxjs';\r\nimport { map, mapTo, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { LOADER_DELAY } from '../tokens/lodaer-delay.token';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\nimport { RouterEvents } from './router-events.service';\r\n\r\nexport interface RouterWaitState {\r\n loading: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RouterWaitService {\r\n private routerEvents = inject(RouterEvents);\r\n\r\n private store = new InternalStore<RouterWaitState>({ loading: false });\r\n private destroy$ = new Subject<void>();\r\n private delay: number;\r\n constructor() {\r\n const injector = inject(Injector);\r\n\r\n this.delay = injector.get(LOADER_DELAY, 500);\r\n this.updateLoadingStatusOnNavigationEvents();\r\n }\r\n\r\n private updateLoadingStatusOnNavigationEvents() {\r\n this.routerEvents\r\n .getAllNavigationEvents()\r\n .pipe(\r\n map(event => event instanceof NavigationStart),\r\n switchMap(condition =>\r\n condition\r\n ? this.delay === 0\r\n ? of(true)\r\n : timer(this.delay || 0).pipe(mapTo(true), takeUntil(this.destroy$))\r\n : of(false),\r\n ),\r\n tap(() => this.destroy$.next()),\r\n )\r\n .subscribe(status => {\r\n this.setLoading(status);\r\n });\r\n }\r\n\r\n getLoading() {\r\n return this.store.state.loading;\r\n }\r\n\r\n getLoading$() {\r\n return this.store.sliceState(({ loading }) => loading);\r\n }\r\n\r\n updateLoading$() {\r\n return this.store.sliceUpdate(({ loading }) => loading);\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.store.patch({ loading });\r\n }\r\n}\r\n","import { Injectable, Injector, OnDestroy, inject } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subscription, map } from 'rxjs';\r\nimport { ABP } from '../models/common';\r\nimport { OTHERS_GROUP } from '../tokens';\r\nimport { pushValueTo } from '../utils/array-utils';\r\nimport {\r\n BaseTreeNode,\r\n createTreeFromList,\r\n TreeNode,\r\n RouteGroup,\r\n createGroupMap,\r\n} from '../utils/tree-utils';\r\nimport { ConfigStateService } from './config-state.service';\r\nimport { PermissionService } from './permission.service';\r\nimport { SORT_COMPARE_FUNC } from '../tokens/compare-func.token';\r\n\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nexport abstract class AbstractTreeService<T extends { [key: string | number | symbol]: any }> {\r\n abstract id: string;\r\n abstract parentId: string;\r\n abstract hide: (item: T) => boolean;\r\n abstract sort: (a: T, b: T) => number;\r\n\r\n private _flat$ = new BehaviorSubject<T[]>([]);\r\n private _tree$ = new BehaviorSubject<TreeNode<T>[]>([]);\r\n private _visible$ = new BehaviorSubject<TreeNode<T>[]>([]);\r\n\r\n protected othersGroup: string;\r\n protected shouldSingularizeRoutes = true;\r\n\r\n get flat(): T[] {\r\n return this._flat$.value;\r\n }\r\n\r\n get flat$(): Observable<T[]> {\r\n return this._flat$.asObservable();\r\n }\r\n\r\n get tree(): TreeNode<T>[] {\r\n return this._tree$.value;\r\n }\r\n\r\n get tree$(): Observable<TreeNode<T>[]> {\r\n return this._tree$.asObservable();\r\n }\r\n\r\n get visible(): TreeNode<T>[] {\r\n return this._visible$.value;\r\n }\r\n\r\n get visible$(): Observable<TreeNode<T>[]> {\r\n return this._visible$.asObservable();\r\n }\r\n\r\n private filterWith(setOrMap: Set<string> | Map<string, T>): T[] {\r\n return this._flat$.value.filter(item => !setOrMap.has(item[this.id]));\r\n }\r\n\r\n private findItemsToRemove(set: Set<string>): Set<string> {\r\n return this._flat$.value.reduce((acc, item) => {\r\n if (!acc.has(item[this.parentId])) {\r\n return acc;\r\n }\r\n\r\n const childSet = new Set([item[this.id]]);\r\n const children = this.findItemsToRemove(childSet);\r\n return new Set([...acc, ...children]);\r\n }, set);\r\n }\r\n\r\n private publish(flatItems: T[]): T[] {\r\n this._flat$.next(flatItems);\r\n this._tree$.next(this.createTree(flatItems));\r\n this._visible$.next(this.createTree(flatItems.filter(item => !this.hide(item))));\r\n return flatItems;\r\n }\r\n\r\n protected createTree(items: T[]): TreeNode<T>[] {\r\n return createTreeFromList<T, TreeNode<T>>(\r\n items,\r\n item => item[this.id],\r\n item => item[this.parentId],\r\n item => BaseTreeNode.create(item),\r\n );\r\n }\r\n\r\n protected createGroupedTree(list: TreeNode<T>[]): RouteGroup<T>[] | undefined {\r\n const map = createGroupMap<T>(list, this.othersGroup);\r\n if (!map) {\r\n return undefined;\r\n }\r\n\r\n return Array.from(map, ([key, items]) => ({ group: key, items }));\r\n }\r\n\r\n add(items: T[]): T[] {\r\n let flatItems: T[] = [];\r\n\r\n if (!this.shouldSingularizeRoutes) {\r\n flatItems = [...this.flat, ...items];\r\n }\r\n\r\n if (this.shouldSingularizeRoutes) {\r\n const map = new Map<string, T>();\r\n items.forEach(item => map.set(item[this.id], item));\r\n flatItems = this.filterWith(map);\r\n map.forEach(pushValueTo(flatItems));\r\n }\r\n\r\n flatItems.sort(this.sort);\r\n\r\n return this.publish(flatItems);\r\n }\r\n\r\n find(predicate: (item: TreeNode<T>) => boolean, tree = this.tree): TreeNode<T> | null {\r\n return tree.reduce<TreeNode<T> | null>((acc, node) => {\r\n if (acc) {\r\n return acc;\r\n }\r\n\r\n if (predicate(node)) {\r\n return node;\r\n }\r\n\r\n return this.find(predicate, node.children);\r\n }, null);\r\n }\r\n\r\n patch(identifier: string, props: Partial<T>): T[] | false {\r\n const flatItems = this._flat$.value;\r\n const index = flatItems.findIndex(item => item[this.id] === identifier);\r\n if (index < 0) {\r\n return false;\r\n }\r\n\r\n flatItems[index] = { ...flatItems[index], ...props };\r\n\r\n flatItems.sort(this.sort);\r\n return this.publish(flatItems);\r\n }\r\n\r\n refresh(): T[] {\r\n return this.add([]);\r\n }\r\n\r\n remove(identifiers: string[]): T[] {\r\n const set = new Set<string>();\r\n identifiers.forEach(id => set.add(id));\r\n\r\n const setToRemove = this.findItemsToRemove(set);\r\n const flatItems = this.filterWith(setToRemove);\r\n return this.publish(flatItems);\r\n }\r\n\r\n removeByParam(params: Partial<T>): T[] | null {\r\n if (!params) {\r\n return null;\r\n }\r\n\r\n const keys = Object.keys(params) as Array<keyof Partial<T>>;\r\n if (keys.length === 0) {\r\n return null;\r\n }\r\n\r\n const excludedList = this.flat.filter(item => keys.every(key => item[key] === params[key]));\r\n if (!excludedList?.length) {\r\n return null;\r\n }\r\n\r\n for (const item of excludedList) {\r\n this.removeByParam({ [this.parentId]: item[this.id] } as Partial<T>);\r\n }\r\n\r\n const flatItems = this.flat.filter(item => !excludedList.includes(item));\r\n return this.publish(flatItems);\r\n }\r\n\r\n search(params: Partial<T>, tree = this.tree): TreeNode<T> | null {\r\n const searchKeys = Object.keys(params) as Array<keyof Partial<T>>;\r\n\r\n return tree.reduce<TreeNode<T> | null>((acc, node) => {\r\n if (acc) {\r\n return acc;\r\n }\r\n\r\n if (searchKeys.every(key => node[key] === params[key])) {\r\n return node;\r\n }\r\n\r\n return this.search(params, node.children);\r\n }, null);\r\n }\r\n\r\n setSingularizeStatus(singularize = true): void {\r\n this.shouldSingularizeRoutes = singularize;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport abstract class AbstractNavTreeService<T extends ABP.Nav>\r\n extends AbstractTreeService<T>\r\n implements OnDestroy\r\n{\r\n protected injector = inject(Injector);\r\n\r\n private subscription: Subscription;\r\n private permissionService: PermissionService;\r\n private compareFunc;\r\n readonly id = 'name';\r\n readonly parentId = 'parentName';\r\n readonly hide = (item: T) => item.invisible || !this.isGranted(item);\r\n readonly sort = (a: T, b: T) => {\r\n return this.compareFunc(a, b);\r\n };\r\n\r\n constructor() {\r\n super();\r\n const injector = this.injector;\r\n\r\n const configState = this.injector.get(ConfigStateService);\r\n this.subscription = configState\r\n .createOnUpdateStream(state => state)\r\n .subscribe(() => this.refresh());\r\n this.permissionService = injector.get(PermissionService);\r\n this.othersGroup = injector.get(OTHERS_GROUP);\r\n this.compareFunc = injector.get(SORT_COMPARE_FUNC);\r\n }\r\n\r\n protected isGranted({ requiredPolicy }: T): boolean {\r\n return this.permissionService.getGrantedPolicy(requiredPolicy);\r\n }\r\n\r\n hasChildren(identifier: string): boolean {\r\n const node = this.find(item => item[this.id] === identifier);\r\n return Boolean(node?.children?.length);\r\n }\r\n\r\n hasInvisibleChild(identifier: string): boolean {\r\n const node = this.find(item => item[this.id] === identifier);\r\n return node?.children?.some(child => child.invisible) || false;\r\n }\r\n\r\n /* istanbul ignore next */\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RoutesService extends AbstractNavTreeService<ABP.Route> {\r\n private hasPathOrChild(item: TreeNode<ABP.Route>): boolean {\r\n return Boolean(item.path) || this.hasChildren(item.name);\r\n }\r\n\r\n get groupedVisible(): RouteGroup<ABP.Route>[] | undefined {\r\n return this.createGroupedTree(this.visible.filter(item => this.hasPathOrChild(item)));\r\n }\r\n\r\n get groupedVisible$(): Observable<RouteGroup<ABP.Route>[] | undefined> {\r\n return this.visible$.pipe(\r\n map(items => items.filter(item => this.hasPathOrChild(item))),\r\n map(visible => this.createGroupedTree(visible)),\r\n );\r\n }\r\n}\r\n","import type { OnDestroy } from '@angular/core';\r\nimport { Injectable } from '@angular/core';\r\nimport type { Observable, PartialObserver } from 'rxjs';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class SubscriptionService implements OnDestroy {\r\n private subscription = new Subscription();\r\n\r\n get isClosed() {\r\n return this.subscription.closed;\r\n }\r\n\r\n addOne<T>(\r\n source$: Observable<T>,\r\n next?: (value: T) => void,\r\n error?: (error: any) => void,\r\n ): Subscription;\r\n addOne<T>(source$: Observable<T>, observer?: PartialObserver<T>): Subscription;\r\n addOne<T>(\r\n source$: Observable<T>,\r\n nextOrObserver?: PartialObserver<T> | Next<T>,\r\n error?: (error: any) => void,\r\n ): Subscription {\r\n const subscription = source$.subscribe(nextOrObserver as Next<T>, error);\r\n this.subscription.add(subscription);\r\n return subscription;\r\n }\r\n\r\n closeAll() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n closeOne(subscription: Subscription | undefined | null) {\r\n this.removeOne(subscription);\r\n if (subscription) {\r\n subscription.unsubscribe();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n removeOne(subscription: Subscription | undefined | null) {\r\n if (!subscription) return;\r\n this.subscription.remove(subscription);\r\n }\r\n\r\n reset() {\r\n this.subscription.unsubscribe();\r\n this.subscription = new Subscription();\r\n }\r\n}\r\n\r\ntype Next<T> = (value: T) => void;\r\n","import { Injectable, TrackByFunction } from '@angular/core';\r\nimport { O } from 'ts-toolbelt';\r\n\r\nexport const trackBy =\r\n <T = any>(key: keyof T): TrackByFunction<T> =>\r\n (_, item) =>\r\n item[key];\r\n\r\nexport const trackByDeep =\r\n <T = any>(\r\n // eslint-disable-next-line @typescript-eslint/ban-types\r\n ...keys: T extends object ? O.Paths<T> : never\r\n ): TrackByFunction<T> =>\r\n (_, item) =>\r\n keys.reduce((acc, key) => acc[key], item);\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TrackByService<ItemType = any> {\r\n by = trackBy;\r\n\r\n byDeep = trackByDeep;\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AbpWindowService {\r\n public readonly document = inject(DOCUMENT);\r\n public readonly window = this.document.defaultView;\r\n public readonly navigator = this.window.navigator;\r\n\r\n copyToClipboard(text: string): Promise<void> {\r\n return this.navigator.clipboard.writeText(text);\r\n }\r\n\r\n open(url?: string | URL, target?: string, features?: string): Window {\r\n return this.window.open(url, target, features);\r\n }\r\n\r\n reloadPage(): void {\r\n this.window.location.reload();\r\n }\r\n\r\n downloadBlob(blob: Blob, fileName: string) {\r\n const blobUrl = this.window.URL.createObjectURL(blob);\r\n const a = this.document.createElement('a');\r\n a.style.display = 'none';\r\n a.href = blobUrl;\r\n a.download = fileName;\r\n this.document.body.appendChild(a);\r\n a.dispatchEvent(\r\n new MouseEvent('click', {\r\n bubbles: true,\r\n cancelable: true,\r\n view: this.window,\r\n }),\r\n );\r\n this.window.URL.revokeObjectURL(blobUrl);\r\n this.document.body.removeChild(a);\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Injectable, computed, inject, signal } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class InternetConnectionService {\r\n readonly document = inject(DOCUMENT);\r\n readonly window = this.document.defaultView;\r\n readonly navigator = this.window.navigator;\r\n\r\n private status$ = new BehaviorSubject<boolean>(this.navigator.onLine);\r\n\r\n private status = signal(this.navigator.onLine);\r\n\r\n networkStatus = computed(() => this.status());\r\n\r\n constructor() {\r\n this.window.addEventListener('offline', () => this.setStatus(false));\r\n this.window.addEventListener('online', () => this.setStatus(true));\r\n }\r\n\r\n setStatus(val: boolean) {\r\n this.status.set(val);\r\n this.status$.next(val);\r\n }\r\n\r\n get networkStatus$() {\r\n return this.status$.asObservable();\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Injectable, inject } from '@angular/core';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LocalStorageListenerService {\r\n protected readonly window = inject(DOCUMENT).defaultView;\r\n\r\n constructor() {\r\n this.window.addEventListener('storage', event => {\r\n if (event.key === 'access_token') {\r\n const tokenRemoved = event.newValue === null;\r\n const tokenAdded = event.oldValue === null && event.newValue !== null;\r\n\r\n if (tokenRemoved || tokenAdded) {\r\n this.window.location.assign('/');\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable, effect, inject } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { TitleStrategy, RouterStateSnapshot } from '@angular/router';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { LocalizationService } from './localization.service';\r\nimport { DISABLE_PROJECT_NAME } from '../tokens';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpTitleStrategy extends TitleStrategy {\r\n protected readonly title = inject(Title);\r\n protected readonly localizationService = inject(LocalizationService);\r\n protected readonly disableProjectName = inject(DISABLE_PROJECT_NAME, { optional: true });\r\n protected routerState: RouterStateSnapshot;\r\n\r\n langugageChange = toSignal(this.localizationService.languageChange$);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.langugageChange()) {\r\n this.updateTitle(this.routerState);\r\n }\r\n });\r\n }\r\n\r\n override updateTitle(routerState: RouterStateSnapshot) {\r\n this.routerState = routerState;\r\n const title = this.buildTitle(routerState);\r\n\r\n const projectName = this.localizationService.instant({\r\n key: '::AppName',\r\n defaultValue: 'MyProjectName',\r\n });\r\n\r\n if (!title) {\r\n return this.title.setTitle(projectName);\r\n }\r\n \r\n let localizedText = this.localizationService.instant({ key: title, defaultValue: title });\r\n if (!this.disableProjectName) {\r\n localizedText += ` | ${projectName}`;\r\n }\r\n\r\n this.title.setTitle(localizedText);\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ConfigStateService } from './config-state.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TimezoneService {\r\n protected readonly configState = inject(ConfigStateService);\r\n protected readonly document = inject(DOCUMENT);\r\n private readonly cookieKey = '__timezone';\r\n private timeZoneNameFromSettings: string | null | undefined;\r\n public isUtcClockEnabled: boolean | undefined;\r\n\r\n constructor() {\r\n this.configState.getOne$('setting').subscribe(settings => {\r\n this.timeZoneNameFromSettings = settings?.values?.['Abp.Timing.TimeZone'];\r\n });\r\n this.configState.getOne$('clock').subscribe(clock => {\r\n this.isUtcClockEnabled = clock?.kind === 'Utc';\r\n });\r\n }\r\n\r\n /**\r\n * Returns the effective timezone to be used across the application.\r\n *\r\n * This value is determined based on the clock kind setting in the configuration:\r\n * - If clock kind is not equal to Utc, the browser's local timezone is returned.\r\n * - If clock kind is equal to Utc, the configured timezone (`timeZoneNameFromSettings`) is returned if available;\r\n * otherwise, the browser's timezone is used as a fallback.\r\n *\r\n * @returns The IANA timezone name (e.g., 'Europe/Istanbul', 'America/New_York').\r\n */\r\n get timezone(): string {\r\n if (!this.isUtcClockEnabled) {\r\n return this.getBrowserTimezone();\r\n }\r\n return this.timeZoneNameFromSettings || this.getBrowserTimezone();\r\n }\r\n\r\n /**\r\n * Retrieves the browser's local timezone based on the user's system settings.\r\n *\r\n * @returns The IANA timezone name (e.g., 'Europe/Istanbul', 'America/New_York').\r\n */\r\n getBrowserTimezone(): string {\r\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n }\r\n\r\n /**\r\n * Sets the application's timezone in a cookie to persist the user's selected timezone.\r\n *\r\n * This method sets the cookie only if the clock kind setting is set to UTC.\r\n * The cookie is stored using the key defined by `this.cookieKey` and applied to the root path (`/`).\r\n *\r\n * @param timezone - The IANA timezone name to be stored (e.g., 'Europe/Istanbul').\r\n */\r\n setTimezone(timezone: string): void {\r\n if (this.isUtcClockEnabled) {\r\n this.document.cookie = `${this.cookieKey}=${timezone}; path=/`;\r\n }\r\n }\r\n}\r\n","import { inject, Injectable, LOCALE_ID } from '@angular/core';\r\nimport { DateTime } from 'luxon';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TimeService {\r\n private locale = inject(LOCALE_ID);\r\n\r\n /**\r\n * Returns the current date and time in the specified timezone.\r\n *\r\n * @param zone - An IANA timezone name (e.g., 'Europe/Istanbul', 'UTC'); defaults to the system's local timezone.\r\n * @returns A Luxon DateTime instance representing the current time in the given timezone.\r\n */\r\n now(zone = 'local'): DateTime {\r\n return DateTime.now().setZone(zone);\r\n }\r\n\r\n /**\r\n * Converts the input date to the specified timezone, applying any timezone and daylight saving time (DST) adjustments.\r\n *\r\n * This method:\r\n * 1. Parses the input value into a Luxon DateTime object.\r\n * 2. Applies the specified IANA timezone, including any DST shifts based on the given date.\r\n *\r\n * @param value - The ISO string or Date object to convert.\r\n * @param zone - An IANA timezone name (e.g., 'America/New_York').\r\n * @returns A Luxon DateTime instance adjusted to the specified timezone and DST rules.\r\n */\r\n toZone(value: string | Date, zone: string): DateTime {\r\n return DateTime.fromISO(value instanceof Date ? value.toISOString() : value, {\r\n zone,\r\n });\r\n }\r\n\r\n /**\r\n * Formats the input date by applying timezone and daylight saving time (DST) adjustments.\r\n *\r\n * This method:\r\n * 1. Converts the input date to the specified timezone.\r\n * 2. Formats the result using the given format and locale, reflecting any timezone or DST shifts.\r\n *\r\n * @param value - The ISO string or Date object to format.\r\n * @param format - The format string (default: 'ff').\r\n * @param zone - Optional IANA timezone name (e.g., 'America/New_York'); defaults to the system's local timezone.\r\n * @returns A formatted date string adjusted for the given timezone and DST rules.\r\n */\r\n format(value: string | Date, format = 'ff', zone = 'local'): string {\r\n return this.toZone(value, zone).setLocale(this.locale).toFormat(format);\r\n }\r\n\r\n /**\r\n * Formats a date using the standard time offset (ignoring daylight saving time) for the specified timezone.\r\n *\r\n * This method:\r\n * 1. Converts the input date to UTC.\r\n * 2. Calculates the standard UTC offset for the given timezone (based on January 1st to avoid DST).\r\n * 3. Applies the standard offset manually to the UTC time.\r\n * 4. Formats the result using the specified format and locale, without applying additional timezone shifts.\r\n *\r\n * @param value - The ISO string or Date object to format.\r\n * @param format - The Luxon format string (default: 'ff').\r\n * @param zone - Optional IANA timezone name (e.g., 'America/New_York'); if omitted, system local timezone is used.\r\n * @returns A formatted date string adjusted by standard time (non-DST).\r\n */\r\n formatDateWithStandardOffset(value: string | Date, format = 'ff', zone?: string): string {\r\n const utcDate =\r\n typeof value === 'string'\r\n ? DateTime.fromISO(value, { zone: 'UTC' })\r\n : DateTime.fromJSDate(value, { zone: 'UTC' });\r\n\r\n if (!utcDate.isValid) return '';\r\n\r\n const targetZone = zone ?? DateTime.local().zoneName;\r\n\r\n const januaryDate = DateTime.fromObject(\r\n { year: utcDate.year, month: 1, day: 1 },\r\n { zone: targetZone },\r\n );\r\n const standardOffset = januaryDate.offset;\r\n const dateWithStandardOffset = utcDate.plus({ minutes: standardOffset });\r\n\r\n return dateWithStandardOffset.setZone('UTC').setLocale(this.locale).toFormat(format);\r\n }\r\n\r\n /**\r\n * Formats the input date using its original clock time, without converting based on timezone or DST\r\n *\r\n * This method:\r\n * 1. Converts the input date to ISO string.\r\n * 2. Calculates the date time in UTC, keeping the local time.\r\n * 3. Formats the result using the specified format and locale, without shifting timezones.\r\n *\r\n * @param value - The ISO string or Date object to format.\r\n * @param format - The format string (default: 'ff').\r\n * @returns A formatted date string without applying timezone.\r\n */\r\n formatWithoutTimeZone(value: string | Date, format = 'ff'): string {\r\n const isoString = value instanceof Date ? value.toISOString() : value;\r\n\r\n const dateTime = DateTime.fromISO(isoString)\r\n .setZone('utc', { keepLocalTime: true })\r\n .setLocale(this.locale);\r\n return dateTime.toFormat(format);\r\n }\r\n}\r\n","import { ViewContainerRef } from '@angular/core';\r\n\r\nexport abstract class ContainerStrategy {\r\n constructor(public containerRef: ViewContainerRef) {}\r\n\r\n abstract getIndex(): number;\r\n\r\n prepare(): void {}\r\n}\r\n\r\nexport class ClearContainerStrategy extends ContainerStrategy {\r\n getIndex(): number {\r\n return 0;\r\n }\r\n\r\n prepare() {\r\n this.containerRef.clear();\r\n }\r\n}\r\n\r\nexport class InsertIntoContainerStrategy extends ContainerStrategy {\r\n constructor(containerRef: ViewContainerRef, private index: number) {\r\n super(containerRef);\r\n }\r\n\r\n getIndex() {\r\n return Math.min(Math.max(0, this.index), this.containerRef.length);\r\n }\r\n}\r\n\r\nexport const CONTAINER_STRATEGY = {\r\n Clear(containerRef: ViewContainerRef) {\r\n return new ClearContainerStrategy(containerRef);\r\n },\r\n Append(containerRef: ViewContainerRef) {\r\n return new InsertIntoContainerStrategy(containerRef, containerRef.length);\r\n },\r\n Prepend(containerRef: ViewContainerRef) {\r\n return new InsertIntoContainerStrategy(containerRef, 0);\r\n },\r\n Insert(containerRef: ViewContainerRef, index: number) {\r\n return new InsertIntoContainerStrategy(containerRef, index);\r\n },\r\n};\r\n","export abstract class ContentSecurityStrategy {\r\n constructor(public nonce?: string) {}\r\n\r\n abstract applyCSP(element: HTMLScriptElement | HTMLStyleElement): void;\r\n}\r\n\r\nexport class LooseContentSecurityStrategy extends ContentSecurityStrategy {\r\n constructor(nonce: string) {\r\n super(nonce);\r\n }\r\n\r\n applyCSP(element: HTMLScriptElement | HTMLStyleElement) {\r\n if (this.nonce) {\r\n element.setAttribute('nonce', this.nonce);\r\n }\r\n }\r\n}\r\n\r\nexport class NoContentSecurityStrategy extends ContentSecurityStrategy {\r\n constructor() {\r\n super();\r\n }\r\n\r\n applyCSP(_: HTMLScriptElement | HTMLStyleElement) {}\r\n}\r\n\r\nexport const CONTENT_SECURITY_STRATEGY = {\r\n Loose(nonce: string) {\r\n return new LooseContentSecurityStrategy(nonce);\r\n },\r\n None() {\r\n return new NoContentSecurityStrategy();\r\n },\r\n};\r\n","import { CONTENT_SECURITY_STRATEGY, ContentSecurityStrategy } from './content-security.strategy';\r\nimport { DOM_STRATEGY, DomStrategy } from './dom.strategy';\r\nimport { inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nexport type ElementOptions<T extends HTMLScriptElement | HTMLStyleElement = any> = Partial<{\r\n [key in keyof T]: T[key];\r\n}>;\r\n\r\nexport abstract class ContentStrategy<T extends HTMLScriptElement | HTMLStyleElement = any> {\r\n constructor(\r\n public content: string,\r\n protected domStrategy: DomStrategy = DOM_STRATEGY.AppendToHead(),\r\n protected contentSecurityStrategy: ContentSecurityStrategy = CONTENT_SECURITY_STRATEGY.None(),\r\n protected options: ElementOptions<T> = {},\r\n ) {}\r\n\r\n abstract createElement(): T;\r\n\r\n insertElement(): T {\r\n const element = this.createElement();\r\n\r\n if (this.options && Object.keys(this.options).length > 0) {\r\n (Object.keys(this.options) as Array<keyof ElementOptions<T>>).forEach(key => {\r\n if (this.options[key]) {\r\n element[key] = (this.options as NonNullable<T>)[key];\r\n }\r\n });\r\n }\r\n\r\n this.contentSecurityStrategy.applyCSP(element);\r\n this.domStrategy.insertElement(element);\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport class StyleContentStrategy extends ContentStrategy<HTMLStyleElement> {\r\n createElement(): HTMLStyleElement {\r\n const element = inject(DOCUMENT).createElement('style');\r\n element.textContent = this.content;\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport class ScriptContentStrategy extends ContentStrategy<HTMLScriptElement> {\r\n createElement(): HTMLScriptElement {\r\n const element = inject(DOCUMENT).createElement('script');\r\n element.textContent = this.content;\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport const CONTENT_STRATEGY = {\r\n AppendScriptToBody(content: string, options?: ElementOptions<HTMLScriptElement>) {\r\n return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToBody(), undefined, options);\r\n },\r\n AppendScriptToHead(content: string, options?: ElementOptions<HTMLScriptElement>) {\r\n return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);\r\n },\r\n AppendStyleToHead(content: string, options?: ElementOptions<HTMLStyleElement>) {\r\n return new StyleContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);\r\n },\r\n PrependStyleToHead(content: string, options?: ElementOptions<HTMLStyleElement>) {\r\n return new StyleContentStrategy(content, DOM_STRATEGY.PrependToHead(), undefined, options);\r\n },\r\n};\r\n","import { ComponentRef, TemplateRef, Type } from '@angular/core';\r\nimport { InferredContextOf, InferredInstanceOf } from '../models';\r\n\r\nexport abstract class ContextStrategy<T = any> {\r\n constructor(public context: Partial<ContextType<T>>) {}\r\n\r\n setContext(componentRef?: ComponentRef<InferredInstanceOf<T>>): Partial<ContextType<T>> {\r\n return this.context;\r\n }\r\n}\r\n\r\nexport class NoContextStrategy<\r\n T extends Type<any> | TemplateRef<any> = any,\r\n> extends ContextStrategy<T> {\r\n constructor() {\r\n super(undefined as unknown as Partial<ContextType<T>>);\r\n }\r\n}\r\n\r\nexport class ComponentContextStrategy<T extends Type<any> = any> extends ContextStrategy<T> {\r\n setContext(componentRef: ComponentRef<InferredInstanceOf<T>>): Partial<InferredInstanceOf<T>> {\r\n Object.keys(this.context).forEach(key => (componentRef.instance[key] = this.context[key]));\r\n componentRef.changeDetectorRef.detectChanges();\r\n return this.context;\r\n }\r\n}\r\n\r\nexport class TemplateContextStrategy<T extends TemplateRef<any> = any> extends ContextStrategy<T> {\r\n setContext(): Partial<InferredContextOf<T>> {\r\n return this.context;\r\n }\r\n}\r\n\r\nexport const CONTEXT_STRATEGY = {\r\n None<T extends Type<any> | TemplateRef<any> = any>() {\r\n return new NoContextStrategy<T>();\r\n },\r\n Component<T extends Type<any> = any>(context: Partial<InferredInstanceOf<T>>) {\r\n return new ComponentContextStrategy<T>(context);\r\n },\r\n Template<T extends TemplateRef<any> = any>(context: Partial<InferredContextOf<T>>) {\r\n return new TemplateContextStrategy<T>(context);\r\n },\r\n};\r\n\r\ntype ContextType<T> = T extends Type<infer U> | TemplateRef<infer U> ? U : never;\r\n","import { Observable, of } from 'rxjs';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { fromLazyLoad } from '../utils';\r\nimport { CROSS_ORIGIN_STRATEGY, CrossOriginStrategy } from './cross-origin.strategy';\r\nimport { DOM_STRATEGY, DomStrategy } from './dom.strategy';\r\n\r\nexport abstract class LoadingStrategy<T extends HTMLScriptElement | HTMLLinkElement = any> {\r\n element!: T;\r\n\r\n constructor(\r\n public path: string,\r\n protected domStrategy: DomStrategy = DOM_STRATEGY.AppendToHead(),\r\n protected crossOriginStrategy: CrossOriginStrategy = CROSS_ORIGIN_STRATEGY.Anonymous(),\r\n ) {}\r\n\r\n abstract createElement(): T;\r\n\r\n createStream<E extends Event>(): Observable<E> {\r\n this.element = this.createElement();\r\n\r\n return of(null).pipe(\r\n switchMap(() => fromLazyLoad<E>(this.element, this.domStrategy, this.crossOriginStrategy)),\r\n );\r\n }\r\n}\r\n\r\nexport class ScriptLoadingStrategy extends LoadingStrategy<HTMLScriptElement> {\r\n constructor(src: string, domStrategy?: DomStrategy, crossOriginStrategy?: CrossOriginStrategy) {\r\n super(src, domStrategy, crossOriginStrategy);\r\n }\r\n\r\n createElement(): HTMLScriptElement {\r\n const element = document.createElement('script');\r\n element.src = this.path;\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport class StyleLoadingStrategy extends LoadingStrategy<HTMLLinkElement> {\r\n constructor(href: string, domStrategy?: DomStrategy, crossOriginStrategy?: CrossOriginStrategy) {\r\n super(href, domStrategy, crossOriginStrategy);\r\n }\r\n\r\n createElement(): HTMLLinkElement {\r\n const element = document.createElement('link');\r\n element.rel = 'stylesheet';\r\n element.href = this.path;\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport const LOADING_STRATEGY = {\r\n AppendScriptToBody(src: string) {\r\n return new ScriptLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.AppendToBody(),\r\n CROSS_ORIGIN_STRATEGY.None(),\r\n );\r\n },\r\n AppendAnonymousScriptToBody(src: string, integrity?: string) {\r\n return new ScriptLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.AppendToBody(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n AppendAnonymousScriptToHead(src: string, integrity?: string) {\r\n return new ScriptLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.AppendToHead(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n AppendAnonymousStyleToHead(src: string, integrity?: string) {\r\n return new StyleLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.AppendToHead(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n PrependAnonymousScriptToHead(src: string, integrity?: string) {\r\n return new ScriptLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.PrependToHead(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n PrependAnonymousStyleToHead(src: string, integrity?: string) {\r\n return new StyleLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.PrependToHead(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n};\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n EmbeddedViewRef,\r\n Injector,\r\n TemplateRef,\r\n Type,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { InferredContextOf, InferredInstanceOf } from '../models/utility';\r\nimport { ContainerStrategy, CONTAINER_STRATEGY } from './container.strategy';\r\nimport { ContextStrategy, CONTEXT_STRATEGY } from './context.strategy';\r\nimport { DomStrategy, DOM_STRATEGY } from './dom.strategy';\r\n\r\nexport abstract class ProjectionStrategy<T = any> {\r\n constructor(public content: T) {}\r\n\r\n abstract injectContent(injector: Injector): ComponentRefOrEmbeddedViewRef<T>;\r\n}\r\n\r\nexport class ComponentProjectionStrategy<T extends Type<any>> extends ProjectionStrategy<T> {\r\n constructor(\r\n component: T,\r\n private containerStrategy: ContainerStrategy,\r\n private contextStrategy: ContextStrategy = CONTEXT_STRATEGY.None(),\r\n ) {\r\n super(component);\r\n }\r\n\r\n injectContent(injector: Injector) {\r\n this.containerStrategy.prepare();\r\n\r\n const resolver = injector.get(ComponentFactoryResolver) as ComponentFactoryResolver;\r\n const factory = resolver.resolveComponentFactory<InferredInstanceOf<T>>(this.content);\r\n\r\n const componentRef = this.containerStrategy.containerRef.createComponent(\r\n factory,\r\n this.containerStrategy.getIndex(),\r\n injector,\r\n );\r\n this.contextStrategy.setContext(componentRef);\r\n\r\n return componentRef as ComponentRefOrEmbeddedViewRef<T>;\r\n }\r\n}\r\n\r\nexport class RootComponentProjectionStrategy<T extends Type<any>> extends ProjectionStrategy<T> {\r\n constructor(\r\n component: T,\r\n private contextStrategy: ContextStrategy = CONTEXT_STRATEGY.None(),\r\n private domStrategy: DomStrategy = DOM_STRATEGY.AppendToBody(),\r\n ) {\r\n super(component);\r\n }\r\n\r\n injectContent(injector: Injector) {\r\n const appRef = injector.get(ApplicationRef);\r\n const resolver = injector.get(ComponentFactoryResolver) as ComponentFactoryResolver;\r\n const componentRef = resolver\r\n .resolveComponentFactory<InferredInstanceOf<T>>(this.content)\r\n .create(injector);\r\n\r\n this.contextStrategy.setContext(componentRef);\r\n\r\n appRef.attachView(componentRef.hostView);\r\n const element: HTMLElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0];\r\n this.domStrategy.insertElement(element);\r\n\r\n return componentRef as ComponentRefOrEmbeddedViewRef<T>;\r\n }\r\n}\r\n\r\nexport class TemplateProjectionStrategy<T extends TemplateRef<any>> extends ProjectionStrategy<T> {\r\n constructor(\r\n templateRef: T,\r\n private containerStrategy: ContainerStrategy,\r\n private contextStrategy = CONTEXT_STRATEGY.None(),\r\n ) {\r\n super(templateRef);\r\n }\r\n\r\n injectContent() {\r\n this.containerStrategy.prepare();\r\n\r\n const embeddedViewRef = this.containerStrategy.containerRef.createEmbeddedView(\r\n this.content,\r\n this.contextStrategy.context,\r\n this.containerStrategy.getIndex(),\r\n );\r\n embeddedViewRef.detectChanges();\r\n\r\n return embeddedViewRef as ComponentRefOrEmbeddedViewRef<T>;\r\n }\r\n}\r\n\r\nexport const PROJECTION_STRATEGY = {\r\n AppendComponentToBody<T extends Type<unknown>>(\r\n component: T,\r\n context?: Partial<InferredInstanceOf<T>>,\r\n ) {\r\n return new RootComponentProjectionStrategy<T>(\r\n component,\r\n context && CONTEXT_STRATEGY.Component(context),\r\n );\r\n },\r\n AppendComponentToContainer<T extends Type<unknown>>(\r\n component: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredInstanceOf<T>>,\r\n ) {\r\n return new ComponentProjectionStrategy<T>(\r\n component,\r\n CONTAINER_STRATEGY.Append(containerRef),\r\n context && CONTEXT_STRATEGY.Component(context),\r\n );\r\n },\r\n AppendTemplateToContainer<T extends TemplateRef<unknown>>(\r\n templateRef: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredContextOf<T>>,\r\n ) {\r\n return new TemplateProjectionStrategy<T>(\r\n templateRef,\r\n CONTAINER_STRATEGY.Append(containerRef),\r\n context && CONTEXT_STRATEGY.Template(context),\r\n );\r\n },\r\n PrependComponentToContainer<T extends Type<unknown>>(\r\n component: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredInstanceOf<T>>,\r\n ) {\r\n return new ComponentProjectionStrategy<T>(\r\n component,\r\n CONTAINER_STRATEGY.Prepend(containerRef),\r\n context && CONTEXT_STRATEGY.Component(context),\r\n );\r\n },\r\n PrependTemplateToContainer<T extends TemplateRef<unknown>>(\r\n templateRef: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredContextOf<T>>,\r\n ) {\r\n return new TemplateProjectionStrategy<T>(\r\n templateRef,\r\n CONTAINER_STRATEGY.Prepend(containerRef),\r\n context && CONTEXT_STRATEGY.Template(context),\r\n );\r\n },\r\n ProjectComponentToContainer<T extends Type<unknown>>(\r\n component: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredInstanceOf<T>>,\r\n ) {\r\n return new ComponentProjectionStrategy<T>(\r\n component,\r\n CONTAINER_STRATEGY.Clear(containerRef),\r\n context && CONTEXT_STRATEGY.Component(context),\r\n );\r\n },\r\n ProjectTemplateToContainer<T extends TemplateRef<unknown>>(\r\n templateRef: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredContextOf<T>>,\r\n ) {\r\n return new TemplateProjectionStrategy<T>(\r\n templateRef,\r\n CONTAINER_STRATEGY.Clear(containerRef),\r\n context && CONTEXT_STRATEGY.Template(context),\r\n );\r\n },\r\n};\r\n\r\ntype ComponentRefOrEmbeddedViewRef<T> = T extends Type<infer U>\r\n ? ComponentRef<U>\r\n : T extends TemplateRef<infer C>\r\n ? EmbeddedViewRef<C>\r\n : never;\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { DomStrategy } from '../strategies';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DomStrategyService {\r\n private document = inject(DOCUMENT);\r\n\r\n afterElement(el: HTMLElement) {\r\n return new DomStrategy(() => el, 'afterend');\r\n }\r\n\r\n beforeElement(el: HTMLElement) {\r\n return new DomStrategy(() => el, 'beforebegin');\r\n }\r\n\r\n appendToBody() {\r\n return new DomStrategy(() => this.document.body, 'beforeend');\r\n }\r\n\r\n appendToHead() {\r\n return new DomStrategy(() => this.document.head, 'beforeend');\r\n }\r\n\r\n prependToHead() {\r\n return new DomStrategy(() => this.document.head, 'afterbegin');\r\n }\r\n}\r\n","import type { ApplicationConfigurationDto, ApplicationConfigurationRequestOptions } from './models';\r\nimport { RestService } from '../../../../../../services';\r\nimport { Rest } from '../../../../../../models';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpApplicationConfigurationService {\n private restService = inject(RestService);\n\r\n apiName = 'abp';\r\n\r\n\r\n get = (options: ApplicationConfigurationRequestOptions, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, ApplicationConfigurationDto>({\r\n method: 'GET',\r\n url: '/api/abp/application-configuration',\r\n params: { includeLocalizationResources: options.includeLocalizationResources },\r\n },\r\n { apiName: this.apiName, ...config });\r\n}\r\n","import type { ApplicationLocalizationDto, ApplicationLocalizationRequestDto } from './models';\r\nimport { RestService } from '../../../../../../services';\r\nimport { Rest } from '../../../../../../models';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpApplicationLocalizationService {\n private restService = inject(RestService);\n\r\n apiName = 'abp';\r\n \r\n\r\n get = (input: ApplicationLocalizationRequestDto, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, ApplicationLocalizationDto>({\r\n method: 'GET',\r\n url: '/api/abp/application-localization',\r\n params: { cultureName: input.cultureName, onlyDynamics: input.onlyDynamics },\r\n },\r\n { apiName: this.apiName,...config });\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { map, switchMap, take, tap } from 'rxjs/operators';\r\nimport { AbpApplicationConfigurationService } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service';\r\nimport { AbpApplicationLocalizationService } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-localization.service';\r\nimport {\r\n ApplicationConfigurationDto,\r\n ApplicationFeatureConfigurationDto,\r\n ApplicationGlobalFeatureConfigurationDto,\r\n} from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\nimport { INCUDE_LOCALIZATION_RESOURCES_TOKEN } from '../tokens/include-localization-resources.token';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ConfigStateService {\r\n private abpConfigService = inject(AbpApplicationConfigurationService);\r\n private abpApplicationLocalizationService = inject(AbpApplicationLocalizationService);\r\n private readonly includeLocalizationResources = inject(INCUDE_LOCALIZATION_RESOURCES_TOKEN, { optional: true });\r\n\r\n private updateSubject = new Subject<void>();\r\n private readonly store = new InternalStore({} as ApplicationConfigurationDto);\r\n\r\n public uiCultureFromAuthCodeFlow: string;\r\n\r\n setState(config: ApplicationConfigurationDto) {\r\n this.store.set(config);\r\n }\r\n\r\n get createOnUpdateStream() {\r\n return this.store.sliceUpdate;\r\n }\r\n constructor() {\r\n this.initUpdateStream();\r\n }\r\n\r\n private initUpdateStream() {\r\n this.updateSubject\r\n .pipe(\r\n switchMap(() =>\r\n this.abpConfigService.get({\r\n includeLocalizationResources: !!this.includeLocalizationResources,\r\n }),\r\n ),\r\n )\r\n .pipe(switchMap(appState => this.getLocalizationAndCombineWithAppState(appState)))\r\n .subscribe(res => this.store.set(res));\r\n }\r\n\r\n private getLocalizationAndCombineWithAppState(\r\n appState: ApplicationConfigurationDto,\r\n ): Observable<ApplicationConfigurationDto> {\r\n if (!appState.localization.currentCulture.cultureName) {\r\n throw new Error('culture name should defined');\r\n }\r\n\r\n const cultureName =\r\n this.uiCultureFromAuthCodeFlow ?? appState.localization.currentCulture.cultureName;\r\n\r\n return this.getlocalizationResource(cultureName).pipe(\r\n map(result => ({ ...appState, localization: { ...appState.localization, ...result } })),\r\n tap(() => (this.uiCultureFromAuthCodeFlow = undefined)),\r\n );\r\n }\r\n\r\n private getlocalizationResource(cultureName: string) {\r\n return this.abpApplicationLocalizationService.get({\r\n cultureName: cultureName,\r\n onlyDynamics: false,\r\n });\r\n }\r\n\r\n refreshAppState() {\r\n this.updateSubject.next();\r\n return this.createOnUpdateStream(state => state).pipe(take(1));\r\n }\r\n\r\n refreshLocalization(lang: string): Observable<null> {\r\n if (this.includeLocalizationResources) {\r\n return this.refreshAppState().pipe(map(() => null));\r\n }\r\n\r\n return this.getlocalizationResource(lang)\r\n .pipe(\r\n tap(result =>\r\n this.store.patch({ localization: { ...this.store.state.localization, ...result } }),\r\n ),\r\n )\r\n .pipe(map(() => null));\r\n }\r\n\r\n getOne$<K extends keyof ApplicationConfigurationDto>(key: K) {\r\n return this.store.sliceState(state => state[key]);\r\n }\r\n\r\n getOne<K extends keyof ApplicationConfigurationDto>(key: K) {\r\n return this.store.state[key];\r\n }\r\n\r\n getAll$(): Observable<ApplicationConfigurationDto> {\r\n return this.store.sliceState(state => state);\r\n }\r\n\r\n getAll(): ApplicationConfigurationDto {\r\n return this.store.state;\r\n }\r\n\r\n getDeep$(keys: string[] | string): Observable<any> {\r\n keys = splitKeys(keys);\r\n\r\n return this.store\r\n .sliceState(state => state)\r\n .pipe(\r\n map(state => {\r\n return (keys as string[]).reduce((acc: any, val) => {\r\n if (acc) {\r\n return acc[val];\r\n }\r\n\r\n return undefined;\r\n }, state);\r\n }),\r\n );\r\n }\r\n\r\n getDeep(keys: string[] | string): any {\r\n keys = splitKeys(keys);\r\n\r\n return (keys as string[]).reduce((acc: any, val) => {\r\n if (acc) {\r\n return acc[val];\r\n }\r\n\r\n return undefined;\r\n }, this.store.state);\r\n }\r\n\r\n getFeature(key: string) {\r\n return this.store.state.features?.values?.[key];\r\n }\r\n\r\n getFeature$(key: string) {\r\n return this.store.sliceState(state => state.features?.values?.[key]);\r\n }\r\n\r\n getFeatures(keys: string[]) {\r\n const { features } = this.store.state;\r\n if (!features) return;\r\n\r\n return keys.reduce((acc, key) => ({ ...acc, [key]: features.values[key] }), {});\r\n }\r\n\r\n getFeatures$(keys: string[]): Observable<{ [key: string]: string } | undefined> {\r\n return this.store.sliceState(({ features }) => {\r\n if (!features?.values) return;\r\n\r\n return keys.reduce((acc, key) => ({ ...acc, [key]: features.values[key] }), {});\r\n });\r\n }\r\n\r\n private isFeatureEnabled(key: string, features: ApplicationFeatureConfigurationDto) {\r\n return features.values[key] === 'true';\r\n }\r\n\r\n getFeatureIsEnabled(key: string) {\r\n return this.isFeatureEnabled(key, this.store.state.features);\r\n }\r\n\r\n getFeatureIsEnabled$(key: string) {\r\n return this.store.sliceState(state => this.isFeatureEnabled(key, state.features));\r\n }\r\n\r\n getSetting(key: string) {\r\n return this.store.state.setting?.values?.[key];\r\n }\r\n\r\n getSetting$(key: string) {\r\n return this.store.sliceState(state => state.setting?.values?.[key]);\r\n }\r\n\r\n getSettings(keyword?: string) {\r\n const settings = this.store.state.setting?.values || {};\r\n\r\n if (!keyword) return settings;\r\n\r\n const keysFound = Object.keys(settings).filter(key => key.indexOf(keyword) > -1);\r\n\r\n return keysFound.reduce(\r\n (acc, key) => {\r\n acc[key] = settings[key];\r\n return acc;\r\n },\r\n {} as Record<string, string>,\r\n );\r\n }\r\n\r\n getSettings$(keyword?: string) {\r\n return this.store\r\n .sliceState(state => state.setting?.values)\r\n .pipe(\r\n map((settings = {}) => {\r\n if (!keyword) return settings;\r\n\r\n const keysFound = Object.keys(settings).filter(key => key.indexOf(keyword) > -1);\r\n\r\n return keysFound.reduce(\r\n (acc, key) => {\r\n acc[key] = settings[key];\r\n return acc;\r\n },\r\n {} as Record<string, string>,\r\n );\r\n }),\r\n );\r\n }\r\n\r\n getGlobalFeatures() {\r\n return this.store.state.globalFeatures;\r\n }\r\n\r\n getGlobalFeatures$() {\r\n return this.store.sliceState(state => state.globalFeatures);\r\n }\r\n\r\n private isGlobalFeatureEnabled(\r\n key: string,\r\n globalFeatures: ApplicationGlobalFeatureConfigurationDto,\r\n ) {\r\n const features = globalFeatures.enabledFeatures || [];\r\n return features.some(f => key === f);\r\n }\r\n\r\n getGlobalFeatureIsEnabled(key: string) {\r\n return this.isGlobalFeatureEnabled(key, this.store.state.globalFeatures);\r\n }\r\n\r\n getGlobalFeatureIsEnabled$(key: string) {\r\n return this.store.sliceState(state => this.isGlobalFeatureEnabled(key, state.globalFeatures));\r\n }\r\n}\r\n\r\nfunction splitKeys(keys: string[] | string): string[] {\r\n if (typeof keys === 'string') {\r\n keys = keys.split('.');\r\n }\r\n\r\n if (!Array.isArray(keys)) {\r\n throw new Error('The argument must be a dot string or an string array.');\r\n }\r\n\r\n return keys;\r\n}\r\n","import { registerLocaleData } from '@angular/common';\r\nimport { Injectable, Injector, isDevMode, inject } from '@angular/core';\r\nimport { BehaviorSubject, combineLatest, from, Observable, Subject } from 'rxjs';\r\nimport { filter, map, switchMap } from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { LocalizationWithDefault } from '../models/localization';\r\nimport {\r\n ApplicationConfigurationDto,\r\n ApplicationLocalizationResourceDto,\r\n} from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\nimport { localizations$ } from '../tokens/localization.token';\r\nimport { CORE_OPTIONS } from '../tokens/options.token';\r\nimport { createLocalizer, createLocalizerWithFallback } from '../utils/localization-utils';\r\nimport { interpolate } from '../utils/string-utils';\r\nimport { ConfigStateService } from './config-state.service';\r\nimport { SessionStateService } from './session-state.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LocalizationService {\r\n private sessionState = inject(SessionStateService);\r\n private injector = inject(Injector);\r\n private configState = inject(ConfigStateService);\r\n\r\n private latestLang = this.sessionState.getLanguage();\r\n private _languageChange$ = new Subject<string>();\r\n\r\n private uiLocalizations$ = new BehaviorSubject(\r\n new Map<string, Map<string, Record<string, string>>>(),\r\n );\r\n\r\n private localizations$ = new BehaviorSubject(new Map<string, Record<string, string>>());\r\n\r\n /**\r\n * Returns currently selected language\r\n * Even though this looks like it's redundant to return the same value as `getLanguage()`,\r\n * it's actually not. This could be invoked any time, and the latestLang could be different from the\r\n * sessionState.getLanguage() value.\r\n */\r\n get currentLang(): string {\r\n return this.latestLang || this.sessionState.getLanguage();\r\n }\r\n\r\n get currentLang$(): Observable<string> {\r\n return this.sessionState.getLanguage$();\r\n }\r\n\r\n get languageChange$(): Observable<string> {\r\n return this._languageChange$.asObservable();\r\n }\r\n\r\n constructor() {\r\n const otherInstance = inject(LocalizationService, { optional: true, skipSelf: true })!;\r\n\r\n if (otherInstance) throw new Error('LocalizationService should have only one instance.');\r\n\r\n this.listenToSetLanguage();\r\n this.initLocalizationValues();\r\n }\r\n\r\n private initLocalizationValues() {\r\n localizations$.subscribe(val => this.addLocalization(val));\r\n\r\n const legacyResources$ = this.configState.getDeep$('localization.values') as Observable<\r\n Record<string, Record<string, string>>\r\n >;\r\n\r\n const remoteLocalizations$ = this.configState.getDeep$('localization.resources') as Observable<\r\n Record<string, ApplicationLocalizationResourceDto>\r\n >;\r\n\r\n const currentLanguage$ = this.sessionState.getLanguage$();\r\n\r\n const uiLocalizations$ = combineLatest([currentLanguage$, this.uiLocalizations$]).pipe(\r\n map(([currentLang, localizations]) => localizations.get(currentLang)),\r\n );\r\n\r\n combineLatest([legacyResources$, remoteLocalizations$, uiLocalizations$])\r\n .pipe(\r\n map(([legacy, resource, local]) => {\r\n if (!resource) {\r\n return;\r\n }\r\n const remote = combineLegacyandNewResources(legacy || {}, resource);\r\n if (remote) {\r\n if (!local) {\r\n local = new Map();\r\n }\r\n\r\n Object.entries(remote).forEach(entry => {\r\n const resourceName = entry[0];\r\n const remoteTexts = entry[1];\r\n let resource = local?.get(resourceName) || {};\r\n resource = { ...resource, ...remoteTexts };\r\n\r\n local?.set(resourceName, resource);\r\n });\r\n }\r\n\r\n return local;\r\n }),\r\n filter(Boolean),\r\n )\r\n .subscribe(val => this.localizations$.next(val));\r\n }\r\n\r\n addLocalization(localizations?: ABP.Localization[]) {\r\n if (!localizations) return;\r\n\r\n const localizationMap = this.uiLocalizations$.value;\r\n\r\n localizations.forEach(loc => {\r\n const cultureMap =\r\n localizationMap.get(loc.culture) || new Map<string, Record<string, string>>();\r\n\r\n loc.resources.forEach(res => {\r\n let resource: Record<string, string> = cultureMap.get(res.resourceName) || {};\r\n\r\n resource = { ...resource, ...res.texts };\r\n\r\n cultureMap.set(res.resourceName, resource);\r\n });\r\n\r\n localizationMap.set(loc.culture, cultureMap);\r\n });\r\n\r\n this.uiLocalizations$.next(localizationMap);\r\n }\r\n\r\n private listenToSetLanguage() {\r\n this.sessionState\r\n .onLanguageChange$()\r\n .pipe(\r\n filter(\r\n lang => this.configState.getDeep('localization.currentCulture.cultureName') !== lang,\r\n ),\r\n switchMap(lang => this.configState.refreshLocalization(lang).pipe(map(() => lang))),\r\n filter(Boolean),\r\n switchMap(lang => from(this.registerLocale(lang).then(() => lang))),\r\n )\r\n .subscribe(lang => this._languageChange$.next(lang));\r\n }\r\n\r\n registerLocale(locale: string) {\r\n const { registerLocaleFn }: ABP.Root = this.injector.get(CORE_OPTIONS);\r\n\r\n return registerLocaleFn(locale).then(module => {\r\n if (module?.default) registerLocaleData(module.default);\r\n this.latestLang = locale;\r\n });\r\n }\r\n\r\n /**\r\n * Returns an observable localized text with the given interpolation parameters in current language.\r\n * @param key Localizaton key to replace with localized text\r\n * @param interpolateParams Values to interpolate\r\n */\r\n get(key: string | LocalizationWithDefault, ...interpolateParams: string[]): Observable<string> {\r\n return this.configState\r\n .getAll$()\r\n .pipe(map(state => this.getLocalization(state, key, ...interpolateParams)));\r\n }\r\n\r\n getResource(resourceName: string) {\r\n return this.localizations$.value.get(resourceName);\r\n }\r\n\r\n getResource$(resourceName: string) {\r\n return this.localizations$.pipe(map(res => res.get(resourceName)));\r\n }\r\n\r\n /**\r\n * Returns localized text with the given interpolation parameters in current language.\r\n * @param key Localization key to replace with localized text\r\n * @param interpolateParams Values to intepolate.\r\n */\r\n instant(key: string | LocalizationWithDefault, ...interpolateParams: string[]): string {\r\n return this.getLocalization(this.configState.getAll(), key, ...interpolateParams);\r\n }\r\n\r\n localize(resourceName: string, key: string, defaultValue: string): Observable<string | null> {\r\n return this.configState.getOne$('localization').pipe(\r\n map(createLocalizer),\r\n map(localize => localize(resourceName, key, defaultValue)),\r\n );\r\n }\r\n\r\n localizeSync(resourceName: string, key: string, defaultValue: string): string | null {\r\n const localization = this.configState.getOne('localization');\r\n return createLocalizer(localization)(resourceName, key, defaultValue);\r\n }\r\n\r\n localizeWithFallback(\r\n resourceNames: string[],\r\n keys: string[],\r\n defaultValue: string,\r\n ): Observable<string> {\r\n return this.configState.getOne$('localization').pipe(\r\n map(createLocalizerWithFallback),\r\n map(localizeWithFallback => localizeWithFallback(resourceNames, keys, defaultValue)),\r\n );\r\n }\r\n\r\n localizeWithFallbackSync(resourceNames: string[], keys: string[], defaultValue: string): string {\r\n const localization = this.configState.getOne('localization');\r\n return createLocalizerWithFallback(localization)(resourceNames, keys, defaultValue);\r\n }\r\n\r\n private getLocalization(\r\n state: ApplicationConfigurationDto,\r\n key: string | LocalizationWithDefault,\r\n ...interpolateParams: string[]\r\n ) {\r\n let defaultValue = '';\r\n\r\n if (!key) {\r\n return defaultValue;\r\n }\r\n\r\n if (typeof key !== 'string') {\r\n defaultValue = key.defaultValue;\r\n key = key.key;\r\n }\r\n\r\n const keys = key.split('::') as string[];\r\n const warn = (message: string) => {\r\n if (isDevMode()) console.warn(message);\r\n };\r\n\r\n if (keys.length < 2) {\r\n warn('The localization source separator (::) not found.');\r\n return defaultValue || (key as string);\r\n }\r\n if (!state.localization) return defaultValue || keys[1];\r\n\r\n const sourceName = keys[0] || state.localization.defaultResourceName;\r\n const sourceKey = keys[1];\r\n\r\n if (sourceName === '_') {\r\n return defaultValue || sourceKey;\r\n }\r\n\r\n if (!sourceName) {\r\n warn(\r\n 'Localization source name is not specified and the defaultResourceName was not defined!',\r\n );\r\n\r\n return defaultValue || sourceKey;\r\n }\r\n\r\n const source = this.localizations$.value.get(sourceName);\r\n if (!source) {\r\n warn('Could not find localization source: ' + sourceName);\r\n return defaultValue || sourceKey;\r\n }\r\n\r\n let localization = source[sourceKey];\r\n if (typeof localization === 'undefined') {\r\n return defaultValue || sourceKey;\r\n }\r\n\r\n interpolateParams = interpolateParams.filter(params => params != null);\r\n if (localization) localization = interpolate(localization, interpolateParams);\r\n\r\n if (typeof localization !== 'string') localization = '';\r\n\r\n return localization || defaultValue || (key as string);\r\n }\r\n}\r\n\r\nfunction recursivelyMergeBaseResources(\r\n baseResourceName: string,\r\n source: ResourceDto,\r\n): ApplicationLocalizationResourceDto {\r\n const item = source[baseResourceName];\r\n\r\n if (item.baseResources.length === 0) {\r\n return item;\r\n }\r\n\r\n return item.baseResources.reduce((acc, baseResource) => {\r\n const baseItem = recursivelyMergeBaseResources(baseResource, source);\r\n const texts = { ...baseItem.texts, ...acc.texts };\r\n return { ...acc, texts };\r\n }, item);\r\n}\r\n\r\nfunction mergeResourcesWithBaseResource(resource: ResourceDto): ResourceDto {\r\n const entities: Array<[string, ApplicationLocalizationResourceDto]> = Object.keys(resource).map(\r\n key => {\r\n const newValue = recursivelyMergeBaseResources(key, resource);\r\n return [key, newValue];\r\n },\r\n );\r\n return entities.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});\r\n}\r\n\r\nfunction combineLegacyandNewResources(\r\n legacy: LegacyLanguageDto,\r\n resource: ResourceDto,\r\n): LegacyLanguageDto {\r\n const mergedResource = mergeResourcesWithBaseResource(resource);\r\n\r\n return Object.entries(mergedResource).reduce((acc, [key, value]) => {\r\n return { ...acc, [key]: value.texts };\r\n }, legacy);\r\n}\r\n\r\nexport type LegacyLanguageDto = Record<string, Record<string, string>>;\r\nexport type ResourceDto = Record<string, ApplicationLocalizationResourceDto>;\r\n","import {\r\n Component,\r\n inject,\r\n input,\r\n isDevMode,\r\n Type,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { eLayoutType } from '../enums/common';\r\nimport { ABP } from '../models';\r\nimport { ReplaceableComponents } from '../models/replaceable-components';\r\nimport { LocalizationService } from '../services/localization.service';\r\nimport { ReplaceableComponentsService } from '../services/replaceable-components.service';\r\nimport { RouterEvents } from '../services/router-events.service';\r\nimport { RoutesService } from '../services/routes.service';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\nimport { findRoute, getRoutePath } from '../utils/route-utils';\r\nimport { TreeNode } from '../utils/tree-utils';\r\nimport { DYNAMIC_LAYOUTS_TOKEN } from '../tokens/dynamic-layout.token';\r\nimport { EnvironmentService } from '../services';\r\nimport { NgComponentOutlet } from '@angular/common';\r\nimport { filter, take } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'abp-dynamic-layout',\r\n template: `\r\n @if (isLayoutVisible) {\r\n <ng-container [ngComponentOutlet]=\"layout\"></ng-container>\r\n }\r\n `,\r\n providers: [SubscriptionService],\r\n imports: [NgComponentOutlet],\r\n})\r\nexport class DynamicLayoutComponent {\r\n layout?: Type<any>;\r\n layoutKey?: eLayoutType;\r\n readonly layouts = inject(DYNAMIC_LAYOUTS_TOKEN);\r\n isLayoutVisible = true;\r\n readonly defaultLayout = input<eLayoutType>(undefined);\r\n\r\n protected readonly router = inject(Router);\r\n protected readonly route = inject(ActivatedRoute);\r\n protected readonly routes = inject(RoutesService);\r\n protected readonly localizationService = inject(LocalizationService);\r\n protected readonly replaceableComponents = inject(ReplaceableComponentsService);\r\n protected readonly subscription = inject(SubscriptionService);\r\n protected readonly routerEvents = inject(RouterEvents);\r\n protected readonly environment = inject(EnvironmentService);\r\n\r\n constructor() {\r\n const dynamicLayoutComponent = inject(DynamicLayoutComponent, { optional: true, skipSelf: true });\r\n\r\n if (dynamicLayoutComponent) {\r\n if (isDevMode()) console.warn('DynamicLayoutComponent must be used only in AppComponent.');\r\n return;\r\n }\r\n this.checkLayoutOnNavigationEnd();\r\n this.listenToLanguageChange();\r\n this.listenToEnvironmentChange();\r\n }\r\n\r\n private checkLayoutOnNavigationEnd() {\r\n const navigationEnd$ = this.routerEvents.getNavigationEvents('End');\r\n this.subscription.addOne(navigationEnd$, () => this.getLayout());\r\n }\r\n\r\n private getLayout() {\r\n let expectedLayout = this.getExtractedLayout();\r\n\r\n if (!expectedLayout) expectedLayout = eLayoutType.empty;\r\n\r\n if (this.layoutKey === expectedLayout) return;\r\n\r\n const key = this.layouts.get(expectedLayout);\r\n if (key) {\r\n this.layout = this.getComponent(key)?.component;\r\n this.layoutKey = expectedLayout;\r\n }\r\n if (!this.layout) {\r\n this.showLayoutNotFoundError(expectedLayout);\r\n }\r\n }\r\n\r\n private getExtractedLayout() {\r\n const routeData = this.route.snapshot.data || {};\r\n let expectedLayout = routeData['layout'] as eLayoutType;\r\n\r\n let node = findRoute(this.routes, getRoutePath(this.router));\r\n node = { parent: node } as TreeNode<ABP.Route>;\r\n\r\n while (node.parent) {\r\n node = node.parent;\r\n\r\n if (node.layout) {\r\n expectedLayout = node.layout;\r\n break;\r\n }\r\n }\r\n return expectedLayout ?? this.defaultLayout();\r\n }\r\n\r\n showLayoutNotFoundError(layoutName: string) {\r\n let message = `Layout ${layoutName} not found.`;\r\n if (layoutName === 'account') {\r\n message =\r\n 'Account layout not found. Please check your configuration. If you are using LeptonX, please make sure you have added \"provideAccountLayout()\" to your app configuration.';\r\n }\r\n console.warn(message);\r\n }\r\n\r\n private listenToLanguageChange() {\r\n this.subscription.addOne(this.localizationService.languageChange$, () => {\r\n this.isLayoutVisible = false;\r\n setTimeout(() => (this.isLayoutVisible = true), 0);\r\n });\r\n }\r\n\r\n private getComponent(key: string): ReplaceableComponents.ReplaceableComponent | undefined {\r\n return this.replaceableComponents.get(key);\r\n }\r\n\r\n private listenToEnvironmentChange() {\r\n this.environment\r\n .createOnUpdateStream(x => x.oAuthConfig)\r\n .pipe(\r\n take(1),\r\n filter(config => config.responseType === 'code'),\r\n )\r\n .subscribe(() => {\r\n if (this.layout) {\r\n return;\r\n }\r\n this.getLayout();\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, Type, inject } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\nimport { ReplaceableComponents } from '../models/replaceable-components';\r\nimport { ReplaceableComponentsService } from '../services/replaceable-components.service';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\nimport { NgComponentOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'abp-replaceable-route-container',\r\n template: `\r\n <ng-container *ngComponentOutlet=\"externalComponent || defaultComponent\"></ng-container>\r\n `,\r\n providers: [SubscriptionService],\r\n imports: [NgComponentOutlet],\r\n})\r\nexport class ReplaceableRouteContainerComponent implements OnInit {\r\n private route = inject(ActivatedRoute);\r\n private replaceableComponents = inject(ReplaceableComponentsService);\r\n private subscription = inject(SubscriptionService);\r\n\r\n defaultComponent!: Type<any>;\r\n\r\n componentKey!: string;\r\n\r\n externalComponent?: Type<any>;\r\n\r\n ngOnInit() {\r\n this.defaultComponent = this.route.snapshot.data.replaceableComponent.defaultComponent;\r\n this.componentKey = (\r\n this.route.snapshot.data.replaceableComponent as ReplaceableComponents.RouteData\r\n ).key;\r\n\r\n const component$ = this.replaceableComponents\r\n .get$(this.componentKey)\r\n .pipe(distinctUntilChanged());\r\n\r\n this.subscription.addOne(\r\n component$,\r\n (res = {} as ReplaceableComponents.ReplaceableComponent) => {\r\n this.externalComponent = res.component;\r\n },\r\n );\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { RouterOutlet } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'abp-router-outlet',\r\n template: ` <router-outlet></router-outlet> `,\r\n imports: [RouterOutlet],\r\n})\r\nexport class RouterOutletComponent {}\r\n","// Different locales from .NET\r\n// Key is .NET locale, value is Angular locale\r\n\r\nexport const differentLocales = {\r\n aa: 'en',\r\n 'aa-DJ': 'en',\r\n 'aa-ER': 'en',\r\n 'aa-ET': 'en',\r\n 'af-ZA': 'af',\r\n 'agq-CM': 'agq',\r\n 'ak-GH': 'ak',\r\n 'am-ET': 'am',\r\n 'ar-001': 'ar',\r\n arn: 'en',\r\n 'arn-CL': 'en',\r\n 'as-IN': 'as',\r\n 'asa-TZ': 'asa',\r\n 'ast-ES': 'ast',\r\n 'az-Cyrl-AZ': 'az-Cyrl',\r\n 'az-Latn-AZ': 'az-Latn',\r\n ba: 'ru',\r\n 'ba-RU': 'ru',\r\n 'bas-CM': 'bas',\r\n 'be-BY': 'be',\r\n 'bem-ZM': 'bem',\r\n 'bez-TZ': 'bez',\r\n 'bg-BG': 'bg',\r\n bin: 'en',\r\n 'bin-NG': 'en',\r\n 'bm-Latn': 'bm',\r\n 'bm-Latn-ML': 'bm',\r\n 'bn-BD': 'bn',\r\n 'bo-CN': 'bo',\r\n 'br-FR': 'br',\r\n 'brx-IN': 'brx',\r\n 'bs-Cyrl-BA': 'bs-Cyrl',\r\n 'bs-Latn-BA': 'bs-Latn',\r\n byn: 'en',\r\n 'byn-ER': 'en',\r\n 'ca-ES': 'ca',\r\n 'ca-ES-valencia': 'ca-ES-VALENCIA',\r\n 'ce-RU': 'ce',\r\n 'cgg-UG': 'cgg',\r\n 'chr-Cher': 'chr',\r\n 'chr-Cher-US': 'chr',\r\n co: 'en',\r\n 'co-FR': 'fr',\r\n 'cs-CZ': 'cs',\r\n 'cu-RU': 'cu',\r\n 'cy-GB': 'cy',\r\n 'da-DK': 'da',\r\n 'dav-KE': 'dav',\r\n 'de-DE': 'de',\r\n 'dje-NE': 'dje',\r\n 'dsb-DE': 'dsb',\r\n 'dua-CM': 'dua',\r\n dv: 'en',\r\n 'dv-MV': 'en',\r\n 'dyo-SN': 'dyo',\r\n 'dz-BT': 'dz',\r\n 'ebu-KE': 'ebu',\r\n 'ee-GH': 'ee',\r\n 'el-GR': 'el',\r\n 'en-029': 'en',\r\n 'en-ID': 'en',\r\n 'en-US': 'en',\r\n 'eo-001': 'en',\r\n 'es-ES': 'es',\r\n 'et-EE': 'et',\r\n 'eu-ES': 'eu',\r\n 'ewo-CM': 'ewo',\r\n 'fa-IR': 'fa',\r\n 'ff-Latn-SN': 'ff-Latn',\r\n 'ff-NG': 'ff',\r\n 'fi-FI': 'fi',\r\n 'fil-PH': 'fil',\r\n 'fo-FO': 'fo',\r\n 'fr-029': 'fr',\r\n 'fr-FR': 'fr',\r\n 'fur-IT': 'fur',\r\n 'fy-NL': 'fy',\r\n 'ga-IE': 'ga',\r\n 'gd-GB': 'gd',\r\n 'gl-ES': 'gl',\r\n gn: 'en',\r\n 'gn-PY': 'en',\r\n 'gsw-CH': 'gsw',\r\n 'gu-IN': 'gu',\r\n 'guz-KE': 'guz',\r\n 'gv-IM': 'gv',\r\n 'ha-Latn': 'ha',\r\n 'ha-Latn-GH': 'ha-GH',\r\n 'ha-Latn-NE': 'ha-NE',\r\n 'ha-Latn-NG': 'ha',\r\n 'haw-US': 'haw',\r\n 'he-IL': 'he',\r\n 'hi-IN': 'hi',\r\n 'hr-HR': 'hr',\r\n 'hsb-DE': 'hsb',\r\n 'hu-HU': 'hu',\r\n 'hy-AM': 'hy',\r\n 'ia-001': 'ia',\r\n 'ia-FR': 'ia',\r\n ibb: 'en',\r\n 'ibb-NG': 'en',\r\n 'id-ID': 'id',\r\n 'ig-NG': 'ig',\r\n 'ii-CN': 'ii',\r\n 'is-IS': 'is',\r\n 'it-IT': 'it',\r\n iu: 'en',\r\n 'iu-Cans': 'en',\r\n 'iu-Cans-CA': 'en',\r\n 'iu-Latn': 'en',\r\n 'iu-Latn-CA': 'en',\r\n 'ja-JP': 'ja',\r\n 'jgo-CM': 'jgo',\r\n 'jmc-TZ': 'jmc',\r\n 'jv-Java': 'jv',\r\n 'jv-Java-ID': 'jv',\r\n 'jv-Latn': 'jv',\r\n 'jv-Latn-ID': 'jv',\r\n 'ka-GE': 'ka',\r\n 'kab-DZ': 'kab',\r\n 'kam-KE': 'kam',\r\n 'kde-TZ': 'kde',\r\n 'kea-CV': 'kea',\r\n 'khq-ML': 'khq',\r\n 'ki-KE': 'ki',\r\n 'kk-KZ': 'kk',\r\n 'kkj-CM': 'kkj',\r\n 'kl-GL': 'kl',\r\n 'kln-KE': 'kln',\r\n 'km-KH': 'km',\r\n 'kn-IN': 'kn',\r\n 'ko-KR': 'ko',\r\n 'kok-IN': 'kok',\r\n kr: 'en',\r\n 'kr-NG': 'en',\r\n 'ks-Arab': 'ks',\r\n 'ks-Arab-IN': 'ks',\r\n 'ks-Deva': 'ks',\r\n 'ks-Deva-IN': 'ks',\r\n 'ksb-TZ': 'ksb',\r\n 'ksf-CM': 'ksf',\r\n 'ksh-DE': 'ksh',\r\n 'ku-Arab': 'ku',\r\n 'ku-Arab-IQ': 'ku',\r\n 'ku-Arab-IR': 'ku',\r\n 'kw-GB': 'kw',\r\n 'ky-KG': 'ky',\r\n la: 'en',\r\n 'la-001': 'en',\r\n 'lag-TZ': 'lag',\r\n 'lb-LU': 'lb',\r\n 'lg-UG': 'lg',\r\n 'lkt-US': 'lkt',\r\n 'ln-CD': 'ln',\r\n 'lo-LA': 'lo',\r\n 'lrc-IR': 'lrc',\r\n 'lt-LT': 'lt',\r\n 'lu-CD': 'lu',\r\n 'luo-KE': 'luo',\r\n 'luy-KE': 'luy',\r\n 'lv-LV': 'lv',\r\n 'mas-KE': 'mas',\r\n 'mer-KE': 'mer',\r\n 'mfe-MU': 'mfe',\r\n 'mg-MG': 'mg',\r\n 'mgh-MZ': 'mgh',\r\n 'mgo-CM': 'mgo',\r\n 'mi-NZ': 'mi',\r\n 'mk-MK': 'mk',\r\n 'ml-IN': 'ml',\r\n 'mn-Cyrl': 'mn',\r\n 'mn-MN': 'mn',\r\n 'mn-Mong': 'mn',\r\n 'mn-Mong-CN': 'mn',\r\n 'mn-Mong-MN': 'mn',\r\n mni: 'en',\r\n 'mni-IN': 'en',\r\n moh: 'en',\r\n 'moh-CA': 'en',\r\n 'mr-IN': 'mr',\r\n 'ms-MY': 'ms',\r\n 'mt-MT': 'mt',\r\n 'mua-CM': 'mua',\r\n 'my-MM': 'my',\r\n 'mzn-IR': 'mzn',\r\n 'naq-NA': 'naq',\r\n 'nb-NO': 'nb',\r\n\r\n 'nd-ZW': 'nd',\r\n 'ne-NP': 'ne',\r\n 'nl-NL': 'nl',\r\n 'nmg-CM': 'ngm',\r\n 'nn-NO': 'nn',\r\n 'nnh-CM': 'nnh',\r\n no: 'en',\r\n nqo: 'en',\r\n 'nqo-GN': 'en',\r\n nr: 'en',\r\n 'nr-ZA': 'en',\r\n nso: 'en',\r\n 'nso-ZA': 'en',\r\n 'nus-SS': 'nus',\r\n 'nyn-UG': 'nyn',\r\n oc: 'en',\r\n 'oc-FR': 'fr',\r\n 'om-ET': 'om',\r\n 'or-IN': 'or',\r\n 'os-GE': 'os',\r\n 'pa-Arab-PK': 'pa-Arab',\r\n 'pa-IN': 'pa',\r\n pap: 'en',\r\n 'pap-029': 'en',\r\n 'pl-PL': 'pl',\r\n 'prg-001': 'prg',\r\n prs: 'en',\r\n 'prs-AF': 'en',\r\n 'ps-AF': 'ps',\r\n 'pt-BR': 'pt',\r\n quc: 'en',\r\n 'quc-Latn': 'en',\r\n 'quc-Latn-GT': 'en',\r\n quz: 'en',\r\n 'quz-BO': 'en',\r\n 'quz-EC': 'en',\r\n 'quz-PE': 'en',\r\n 'rm-CH': 'rm',\r\n 'rn-BI': 'rn',\r\n 'ro-RO': 'ro',\r\n 'rof-TZ': 'rof',\r\n 'ru-RU': 'ru',\r\n 'rw-RW': 'rw',\r\n 'rwk-TZ': 'rwk',\r\n sa: 'en',\r\n 'sa-IN': 'en',\r\n 'sah-RU': 'sah',\r\n 'saq-KE': 'saq',\r\n 'sbp-TZ': 'en',\r\n 'sd-Arab': 'sd',\r\n 'sd-Arab-PK': 'sd',\r\n 'sd-Deva': 'sd',\r\n 'sd-Deva-IN': 'sd',\r\n 'se-NO': 'se',\r\n 'seh-MZ': 'seh',\r\n 'ses-ML': 'ses',\r\n 'sg-CF': 'sg',\r\n 'shi-Latn-MA': 'shi-Latn',\r\n 'shi-Tfng-MA': 'shi-Tfng',\r\n 'si-LK': 'si',\r\n 'sk-SK': 'sk',\r\n 'sl-SI': 'sl',\r\n sma: 'en',\r\n 'sma-NO': 'en',\r\n 'sma-SE': 'en',\r\n smj: 'en',\r\n 'smj-NO': 'en',\r\n 'smj-SE': 'en',\r\n 'smn-FI': 'en',\r\n sms: 'en',\r\n 'sms-FI': 'en',\r\n 'sn-Latn': 'sn',\r\n 'sn-Latn-ZW': 'sn',\r\n 'so-SO': 'so',\r\n 'sq-AL': 'so',\r\n 'sr-Cyrl-RS': 'sr-Cryl',\r\n 'sr-Latn-RS': 'sr-Latn',\r\n ss: 'en',\r\n 'ss-SZ': 'en',\r\n 'ss-ZA': 'en',\r\n ssy: 'en',\r\n 'ssy-ER': 'en',\r\n st: 'en',\r\n 'st-LS': 'en',\r\n 'st-ZA': 'en',\r\n 'sv-SE': 'sv',\r\n 'sw-TZ': 'sw',\r\n syr: 'en',\r\n 'syr-SY': 'en',\r\n 'ta-IN': 'ta',\r\n 'te-IN': 'te',\r\n 'teo-UG': 'teo',\r\n 'tg-Cyrl': 'tg',\r\n 'tg-Cyrl-TJ': 'tg',\r\n 'th-TH': 'th',\r\n 'ti-ET': 'ti',\r\n tig: 'en',\r\n 'tig-ER': 'en',\r\n 'tk-TM': 'tk',\r\n tn: 'en',\r\n 'tn-BW': 'en',\r\n 'tn-ZA': 'en',\r\n 'to-TO': 'to',\r\n 'tr-TR': 'tr',\r\n ts: 'en',\r\n 'ts-ZA': 'en',\r\n 'tt-RU': 'tt',\r\n 'twq-NE': 'twq',\r\n 'tzm-Arab': 'tzm',\r\n 'tzm-Arab-MA': 'tzm',\r\n 'tzm-Latn': 'tzm',\r\n 'tzm-Latn-DZ': 'tzm',\r\n 'tzm-Latn-MA': 'tzm',\r\n 'tzm-Tfng': 'tzm',\r\n 'tzm-Tfng-MA': 'tzm',\r\n 'ug-CN': 'ug',\r\n 'uk-UA': 'uk',\r\n 'ur-PK': 'ur',\r\n 'uz-Arab-AF': 'uz-Arab',\r\n 'uz-Cyrl-UZ': 'uz-Cyrl',\r\n 'uz-Latn-UZ': 'uz-Latn',\r\n 'vai-Latn-LR': 'vai-Latn',\r\n 'vai-Vaii-LR': 'vai-Vaii',\r\n ve: 'en',\r\n 've-ZA': 'en',\r\n 'vi-VN': 'vi',\r\n 'vo-001': 'vo',\r\n 'vun-TZ': 'vun',\r\n 'wae-CH': 'wae',\r\n wal: 'en',\r\n 'wal-ET': 'en',\r\n 'wo-SN': 'wo',\r\n 'xh-ZA': 'xh',\r\n 'xog-UG': 'xog',\r\n 'yav-CM': 'yav',\r\n 'yi-001': 'yi',\r\n 'yo-NG': 'yo',\r\n 'zgh-Tfng': 'zgh',\r\n 'zgh-Tfng-MA': 'zgh',\r\n 'zh-CN': 'zh',\r\n 'zh-HK': 'zh',\r\n 'zh-MO': 'zh',\r\n 'zh-SG': 'zh',\r\n 'zh-TW': 'zh',\r\n 'zu-ZA': 'zu',\r\n};\r\n","import {eLayoutType, eThemeSharedComponents} from \"../enums\";\r\n\r\nexport const DEFAULT_DYNAMIC_LAYOUTS = new Map<string, string>([\r\n [eLayoutType.application, eThemeSharedComponents.ApplicationLayoutComponent],\r\n [eLayoutType.account, eThemeSharedComponents.AccountLayoutComponent],\r\n [eLayoutType.empty, eThemeSharedComponents.EmptyLayoutComponent],\r\n]);\r\n","import { AfterViewInit, Directive, ElementRef, Input, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[autofocus]',\r\n})\r\nexport class AutofocusDirective implements AfterViewInit {\r\n private elRef = inject(ElementRef);\r\n\r\n private _delay = 0;\r\n\r\n @Input('autofocus')\r\n set delay(val: number | string | undefined) {\r\n this._delay = Number(val) || 0;\r\n }\r\n\r\n get delay() {\r\n return this._delay;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => this.elRef.nativeElement.focus(), this.delay as number);\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, Input, OnInit, Output, inject } from '@angular/core';\r\nimport { fromEvent } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\n\r\n@Directive({\r\n selector: '[input.debounce]',\r\n providers: [SubscriptionService],\r\n})\r\nexport class InputEventDebounceDirective implements OnInit {\r\n private el = inject(ElementRef);\r\n private subscription = inject(SubscriptionService);\r\n\r\n @Input() debounce = 300;\r\n\r\n @Output('input.debounce') readonly debounceEvent = new EventEmitter<Event>();\r\n\r\n ngOnInit(): void {\r\n const input$ = fromEvent<InputEvent>(this.el.nativeElement, 'input').pipe(\r\n debounceTime(this.debounce),\r\n );\r\n\r\n this.subscription.addOne(input$, (event: Event) => {\r\n this.debounceEvent.emit(event);\r\n });\r\n }\r\n}\r\n","import {\r\n Directive,\r\n EmbeddedViewRef,\r\n Input,\r\n IterableChangeRecord,\r\n IterableChanges,\r\n IterableDiffer,\r\n IterableDiffers,\r\n OnChanges,\r\n TemplateRef,\r\n TrackByFunction,\r\n ViewContainerRef,\r\n inject,\r\n} from '@angular/core';\r\nimport clone from 'just-clone';\r\nimport compare from 'just-compare';\r\n\r\nexport type CompareFn<T = any> = (value: T, comparison: T) => boolean;\r\n\r\nclass AbpForContext {\r\n constructor(\r\n public $implicit: any,\r\n public index: number,\r\n public count: number,\r\n public list: any[],\r\n ) {}\r\n}\r\n\r\nclass RecordView {\r\n constructor(\r\n public record: IterableChangeRecord<any>,\r\n public view: EmbeddedViewRef<AbpForContext>,\r\n ) {}\r\n}\r\n\r\n@Directive({\r\n selector: '[abpFor]',\r\n})\r\nexport class ForDirective implements OnChanges {\r\n private tempRef = inject<TemplateRef<AbpForContext>>(TemplateRef);\r\n private vcRef = inject(ViewContainerRef);\r\n private differs = inject(IterableDiffers);\r\n\r\n // eslint-disable-next-line @angular-eslint/no-input-rename\r\n @Input('abpForOf')\r\n items!: any[];\r\n\r\n @Input('abpForOrderBy')\r\n orderBy?: string;\r\n\r\n @Input('abpForOrderDir')\r\n orderDir?: 'ASC' | 'DESC';\r\n\r\n @Input('abpForFilterBy')\r\n filterBy?: string;\r\n\r\n @Input('abpForFilterVal')\r\n filterVal: any;\r\n\r\n @Input('abpForTrackBy')\r\n trackBy?: TrackByFunction<any>;\r\n\r\n @Input('abpForCompareBy')\r\n compareBy?: CompareFn;\r\n\r\n @Input('abpForEmptyRef')\r\n emptyRef?: TemplateRef<any>;\r\n\r\n private differ!: IterableDiffer<any> | null;\r\n private lastItemsRef: any[] | null = null;\r\n\r\n private isShowEmptyRef!: boolean;\r\n\r\n get compareFn(): CompareFn {\r\n return this.compareBy || compare;\r\n }\r\n\r\n get trackByFn(): TrackByFunction<any> {\r\n return this.trackBy || ((index: number, item: any) => (item as any).id || index);\r\n }\r\n\r\n private iterateOverAppliedOperations(changes: IterableChanges<any>) {\r\n const rw: RecordView[] = [];\r\n\r\n changes.forEachOperation(\r\n (\r\n record: IterableChangeRecord<any>,\r\n previousIndex: number | null,\r\n currentIndex: number | null,\r\n ) => {\r\n if (record.previousIndex == null) {\r\n const view = this.vcRef.createEmbeddedView(\r\n this.tempRef,\r\n new AbpForContext(null, -1, -1, this.items),\r\n currentIndex || 0,\r\n );\r\n\r\n rw.push(new RecordView(record, view));\r\n } else if (currentIndex == null && previousIndex !== null) {\r\n this.vcRef.remove(previousIndex);\r\n } else {\r\n if (previousIndex !== null) {\r\n const view = this.vcRef.get(previousIndex);\r\n if (view && currentIndex !== null) {\r\n this.vcRef.move(view, currentIndex);\r\n rw.push(new RecordView(record, view as EmbeddedViewRef<AbpForContext>));\r\n }\r\n }\r\n }\r\n },\r\n );\r\n\r\n for (let i = 0, l = rw.length; i < l; i++) {\r\n rw[i].view.context.$implicit = rw[i].record.item;\r\n }\r\n }\r\n\r\n private iterateOverAttachedViews(changes: IterableChanges<any>) {\r\n for (let i = 0, l = this.vcRef.length; i < l; i++) {\r\n const viewRef = this.vcRef.get(i) as EmbeddedViewRef<AbpForContext>;\r\n viewRef.context.index = i;\r\n viewRef.context.count = l;\r\n viewRef.context.list = this.items;\r\n }\r\n\r\n changes.forEachIdentityChange((record: IterableChangeRecord<any>) => {\r\n if (record.currentIndex !== null) {\r\n const viewRef = this.vcRef.get(record.currentIndex) as EmbeddedViewRef<AbpForContext>;\r\n viewRef.context.$implicit = record.item;\r\n }\r\n });\r\n }\r\n\r\n private projectItems(items: any[]): void {\r\n if (!items.length && this.emptyRef) {\r\n this.vcRef.clear();\r\n this.vcRef.createEmbeddedView(this.emptyRef).rootNodes;\r\n this.isShowEmptyRef = true;\r\n this.differ = null;\r\n this.lastItemsRef = null;\r\n\r\n return;\r\n }\r\n\r\n if (this.emptyRef && this.isShowEmptyRef) {\r\n this.vcRef.clear();\r\n this.isShowEmptyRef = false;\r\n }\r\n\r\n if (!this.differ && items) {\r\n this.differ = this.differs.find(items).create(this.trackByFn);\r\n }\r\n\r\n if (this.differ) {\r\n const changes = this.differ.diff(items);\r\n\r\n if (changes) {\r\n this.iterateOverAppliedOperations(changes);\r\n this.iterateOverAttachedViews(changes);\r\n }\r\n }\r\n }\r\n\r\n private sortItems(items: any[]) {\r\n const orderBy = this.orderBy;\r\n if (orderBy) {\r\n items.sort((a, b) => (a[orderBy] > b[orderBy] ? 1 : a[orderBy] < b[orderBy] ? -1 : 0));\r\n } else {\r\n items.sort();\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (!this.items) return;\r\n\r\n // Recreate differ if items array reference changed\r\n if (this.lastItemsRef !== this.items) {\r\n this.differ = null;\r\n this.lastItemsRef = this.items;\r\n }\r\n\r\n let items = clone(this.items) as any[];\r\n if (!Array.isArray(items)) return;\r\n\r\n const compareFn = this.compareFn;\r\n const filterBy = this.filterBy;\r\n if (\r\n typeof filterBy !== 'undefined' &&\r\n typeof this.filterVal !== 'undefined' &&\r\n this.filterVal !== ''\r\n ) {\r\n items = items.filter(item => compareFn(item[filterBy], this.filterVal));\r\n }\r\n\r\n switch (this.orderDir) {\r\n case 'ASC':\r\n this.sortItems(items);\r\n this.projectItems(items);\r\n break;\r\n\r\n case 'DESC':\r\n this.sortItems(items);\r\n items.reverse();\r\n this.projectItems(items);\r\n break;\r\n\r\n default:\r\n this.projectItems(items);\r\n }\r\n }\r\n}\r\n","import { \r\n ChangeDetectorRef, \r\n Directive, \r\n ElementRef, \r\n EventEmitter, \r\n Input, \r\n OnInit, \r\n Output, \r\n inject \r\n} from '@angular/core';\r\nimport { FormGroupDirective, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { fromEvent } from 'rxjs';\r\nimport { debounceTime, filter } from 'rxjs/operators';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\n\r\ntype Controls = { [key: string]: UntypedFormControl } | UntypedFormGroup[];\r\n/**\r\n * @deprecated FormSubmitDirective will be removed in V7.0.0. Use `ngSubmit` instead.\r\n */\r\n@Directive({\r\n selector: 'form[ngSubmit][formGroup]',\r\n providers: [SubscriptionService],\r\n})\r\nexport class FormSubmitDirective implements OnInit {\r\n private formGroupDirective = inject(FormGroupDirective, { self: true });\r\n private host = inject<ElementRef<HTMLFormElement>>(ElementRef);\r\n private cdRef = inject(ChangeDetectorRef);\r\n private subscription = inject(SubscriptionService);\r\n\r\n @Input()\r\n debounce = 200;\r\n\r\n // TODO: Remove unused input\r\n @Input()\r\n notValidateOnSubmit?: string | boolean;\r\n\r\n @Input()\r\n markAsDirtyWhenSubmit = true;\r\n\r\n @Output() readonly ngSubmit = new EventEmitter();\r\n\r\n executedNgSubmit = false;\r\n\r\n ngOnInit() {\r\n this.subscription.addOne(this.formGroupDirective.ngSubmit, () => {\r\n if (this.markAsDirtyWhenSubmit) {\r\n this.markAsDirty();\r\n }\r\n\r\n this.executedNgSubmit = true;\r\n });\r\n\r\n const keyup$ = fromEvent<KeyboardEvent>(this.host.nativeElement as HTMLElement, 'keyup').pipe(\r\n debounceTime(this.debounce),\r\n filter(event => !(event.target instanceof HTMLTextAreaElement)),\r\n filter(event => event && event.key === 'Enter'),\r\n );\r\n\r\n this.subscription.addOne(keyup$, () => {\r\n if (!this.executedNgSubmit) {\r\n this.host.nativeElement.dispatchEvent(\r\n new Event('submit', { bubbles: true, cancelable: true }),\r\n );\r\n }\r\n\r\n this.executedNgSubmit = false;\r\n });\r\n }\r\n\r\n markAsDirty() {\r\n const { form } = this.formGroupDirective;\r\n\r\n setDirty(form.controls as { [key: string]: UntypedFormControl });\r\n form.markAsDirty();\r\n\r\n this.cdRef.detectChanges();\r\n }\r\n}\r\n\r\nfunction setDirty(controls: Controls) {\r\n if (Array.isArray(controls)) {\r\n controls.forEach(group => {\r\n setDirty(group.controls as { [key: string]: UntypedFormControl });\r\n });\r\n return;\r\n }\r\n\r\n Object.keys(controls).forEach(key => {\r\n controls[key].markAsDirty();\r\n controls[key].updateValueAndValidity();\r\n });\r\n}\r\n","import { Directive, Output, EventEmitter, ElementRef, AfterViewInit, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[abpInit]',\r\n})\r\nexport class InitDirective implements AfterViewInit {\r\n private elRef = inject(ElementRef);\r\n\r\n @Output('abpInit') readonly init = new EventEmitter<ElementRef<any>>();\r\n\r\n ngAfterViewInit() {\r\n this.init.emit(this.elRef);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Directive,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n TemplateRef,\r\n ViewContainerRef,\r\n inject,\r\n} from '@angular/core';\r\nimport { ReplaySubject, Subscription } from 'rxjs';\r\nimport { distinctUntilChanged, take } from 'rxjs/operators';\r\nimport { PermissionService } from '../services/permission.service';\r\nimport { QUEUE_MANAGER } from '../tokens/queue.token';\r\nimport { QueueManager } from '../utils/queue';\r\n\r\n@Directive({\r\n selector: '[abpPermission]',\r\n})\r\nexport class PermissionDirective implements OnDestroy, OnChanges, AfterViewInit {\r\n private templateRef = inject<TemplateRef<any>>(TemplateRef, { optional: true });\r\n private vcRef = inject(ViewContainerRef);\r\n private permissionService = inject(PermissionService);\r\n private cdRef = inject(ChangeDetectorRef);\r\n queue = inject<QueueManager>(QUEUE_MANAGER);\r\n\r\n @Input('abpPermission') condition: string | undefined;\r\n\r\n @Input('abpPermissionRunChangeDetection') runChangeDetection = true;\r\n\r\n subscription!: Subscription;\r\n\r\n cdrSubject = new ReplaySubject<void>();\r\n\r\n rendered = false;\r\n\r\n private check() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n this.subscription = this.permissionService\r\n .getGrantedPolicy$(this.condition || '')\r\n .pipe(distinctUntilChanged())\r\n .subscribe(isGranted => {\r\n this.vcRef.clear();\r\n if (isGranted && this.templateRef) {\r\n this.vcRef.createEmbeddedView(this.templateRef);\r\n }\r\n if (this.runChangeDetection) {\r\n if (!this.rendered) {\r\n this.cdrSubject.next();\r\n } else {\r\n this.cdRef.detectChanges();\r\n }\r\n } else {\r\n this.cdRef.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) this.subscription.unsubscribe();\r\n }\r\n\r\n ngOnChanges() {\r\n this.check();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdrSubject.pipe(take(1)).subscribe(() => this.queue.add(() => this.cdRef.detectChanges()));\r\n this.rendered = true;\r\n }\r\n}\r\n","import { \r\n Directive, \r\n Injector, \r\n Input, \r\n OnChanges, \r\n OnInit, \r\n SimpleChanges, \r\n TemplateRef, \r\n Type, \r\n ViewContainerRef, \r\n inject \r\n} from '@angular/core';\r\nimport compare from 'just-compare';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { ReplaceableComponents } from '../models/replaceable-components';\r\nimport { ReplaceableComponentsService } from '../services/replaceable-components.service';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\n\r\n@Directive({\r\n selector: '[abpReplaceableTemplate]',\r\n providers: [SubscriptionService],\r\n})\r\nexport class ReplaceableTemplateDirective implements OnInit, OnChanges {\r\n private injector = inject(Injector);\r\n private templateRef = inject<TemplateRef<any>>(TemplateRef);\r\n private vcRef = inject(ViewContainerRef);\r\n private replaceableComponents = inject(ReplaceableComponentsService);\r\n private subscription = inject(SubscriptionService);\r\n\r\n @Input('abpReplaceableTemplate')\r\n data!: ReplaceableComponents.ReplaceableTemplateDirectiveInput<any, any>;\r\n\r\n providedData = {\r\n inputs: {},\r\n outputs: {},\r\n } as ReplaceableComponents.ReplaceableTemplateData<any, any>;\r\n\r\n context = {} as any;\r\n\r\n externalComponent!: Type<any>;\r\n\r\n defaultComponentRef: any;\r\n\r\n defaultComponentSubscriptions = {} as ABP.Dictionary<Subscription>;\r\n\r\n initialized = false;\r\n\r\n constructor() {\r\n this.context = {\r\n initTemplate: (ref: any) => {\r\n this.resetDefaultComponent();\r\n this.defaultComponentRef = ref;\r\n this.setDefaultComponentInputs();\r\n },\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n const component$ = this.replaceableComponents\r\n .get$(this.data.componentKey)\r\n .pipe(\r\n filter(\r\n (res = {} as ReplaceableComponents.ReplaceableComponent) =>\r\n !this.initialized || !compare(res.component, this.externalComponent),\r\n ),\r\n );\r\n\r\n this.subscription.addOne(\r\n component$,\r\n (res = {} as ReplaceableComponents.ReplaceableComponent) => {\r\n this.vcRef.clear();\r\n this.externalComponent = res.component;\r\n if (this.defaultComponentRef) {\r\n this.resetDefaultComponent();\r\n }\r\n\r\n if (res.component) {\r\n this.setProvidedData();\r\n const customInjector = Injector.create({\r\n providers: [{ provide: 'REPLACEABLE_DATA', useValue: this.providedData }],\r\n parent: this.injector,\r\n });\r\n const ref = this.vcRef.createComponent(res.component, {\r\n index: 0,\r\n injector: customInjector,\r\n });\r\n } else {\r\n this.vcRef.createEmbeddedView(this.templateRef, this.context);\r\n }\r\n\r\n this.initialized = true;\r\n },\r\n );\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes?.data?.currentValue?.inputs && this.defaultComponentRef) {\r\n this.setDefaultComponentInputs();\r\n }\r\n }\r\n\r\n setDefaultComponentInputs() {\r\n if (!this.defaultComponentRef || (!this.data.inputs && !this.data.outputs)) return;\r\n\r\n if (this.data.inputs) {\r\n for (const key in this.data.inputs) {\r\n if (Object.prototype.hasOwnProperty.call(this.data.inputs, key)) {\r\n if (!compare(this.defaultComponentRef[key], this.data.inputs[key].value)) {\r\n this.defaultComponentRef[key] = this.data.inputs[key].value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.data.outputs) {\r\n for (const key in this.data.outputs) {\r\n if (Object.prototype.hasOwnProperty.call(this.data.outputs, key)) {\r\n if (!this.defaultComponentSubscriptions[key]) {\r\n this.defaultComponentSubscriptions[key] = this.defaultComponentRef[key].subscribe(\r\n (value: any) => {\r\n this.data.outputs?.[key](value);\r\n },\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n setProvidedData() {\r\n this.providedData = { outputs: {}, ...this.data, inputs: {} };\r\n\r\n if (!this.data.inputs) return;\r\n Object.defineProperties(this.providedData.inputs, {\r\n ...Object.keys(this.data.inputs).reduce(\r\n (acc, key) => ({\r\n ...acc,\r\n [key]: {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => this.data.inputs?.[key]?.value,\r\n ...(this.data.inputs?.[key]?.twoWay && {\r\n set: (newValue: any) => {\r\n if (this.data.inputs?.[key]) {\r\n this.data.inputs[key].value = newValue;\r\n }\r\n if (this.data.outputs?.[`${key}Change`]) {\r\n this.data.outputs[`${key}Change`](newValue);\r\n }\r\n },\r\n }),\r\n },\r\n }),\r\n {},\r\n ),\r\n });\r\n }\r\n\r\n resetDefaultComponent() {\r\n Object.keys(this.defaultComponentSubscriptions).forEach(key => {\r\n this.defaultComponentSubscriptions[key].unsubscribe();\r\n });\r\n this.defaultComponentSubscriptions = {} as ABP.Dictionary<Subscription>;\r\n this.defaultComponentRef = null;\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, OnInit, Output, inject } from '@angular/core';\r\nimport { fromEvent } from 'rxjs';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\n\r\n@Directive({\r\n selector: '[click.stop]',\r\n providers: [SubscriptionService],\r\n})\r\nexport class StopPropagationDirective implements OnInit {\r\n private el = inject(ElementRef);\r\n private subscription = inject(SubscriptionService);\r\n\r\n @Output('click.stop') readonly stopPropEvent = new EventEmitter<MouseEvent>();\r\n\r\n ngOnInit(): void {\r\n this.subscription.addOne(fromEvent<MouseEvent>(this.el.nativeElement, 'click'), event => {\r\n event.stopPropagation();\r\n this.stopPropEvent.emit(event);\r\n });\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[abpShowPassword]',\r\n})\r\nexport class ShowPasswordDirective {\r\n protected readonly elementRef = inject(ElementRef);\r\n\r\n @Input() set abpShowPassword(visible: boolean) {\r\n const element = this.elementRef.nativeElement as HTMLInputElement;\r\n if (!element) return;\r\n\r\n element.type = visible ? 'text' : 'password';\r\n }\r\n}\r\n","import { Directive, EventEmitter, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[abpCapsLock]',\r\n})\r\nexport class TrackCapsLockDirective {\r\n @Output('abpCapsLock') capsLock = new EventEmitter<boolean>();\r\n\r\n @HostListener('window:keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n this.capsLock.emit(this.isCapsLockOpen(event));\r\n }\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent): void {\r\n this.capsLock.emit(this.isCapsLockOpen(event));\r\n }\r\n\r\n isCapsLockOpen(e): boolean {\r\n const s = String.fromCharCode(e.which);\r\n if (\r\n (s.toUpperCase() === s && s.toLowerCase() !== s && e.shiftKey) ||\r\n (s.toUpperCase() !== s && s.toLowerCase() === s && e.shiftKey) ||\r\n (e.getModifierState && e.getModifierState('CapsLock'))\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","export {};\r\n\r\ndeclare global {\r\n interface Date {\r\n toLocalISOString?: () => string;\r\n }\r\n}\r\n\r\nDate.prototype.toLocalISOString = function (this: Date): string {\r\n const timezoneOffset = this.getTimezoneOffset();\r\n\r\n return new Date(this.getTime() - timezoneOffset * 60000).toISOString();\r\n};\r\n","import { Injector, inject, provideAppInitializer, PLATFORM_ID } from '@angular/core';\r\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\r\nimport { SessionStateService } from '../services/session-state.service';\r\nimport { COOKIE_LANGUAGE_KEY } from '../tokens/cookie-language-key.token';\r\n\r\nexport function setLanguageToCookie() {\r\n const injector = inject(Injector);\r\n const platformId = injector.get(PLATFORM_ID);\r\n\r\n if (!isPlatformBrowser(platformId)) return;\r\n\r\n const sessionState = injector.get(SessionStateService);\r\n const document = injector.get(DOCUMENT);\r\n const cookieLanguageKey = injector.get(COOKIE_LANGUAGE_KEY);\r\n sessionState.getLanguage$().subscribe(language => {\r\n const cookieValue = encodeURIComponent(`c=${language}|uic=${language}`);\r\n document.cookie = `${cookieLanguageKey}=${cookieValue}`;\r\n });\r\n}\r\n\r\nexport const CookieLanguageProvider = provideAppInitializer(() => {\r\n setLanguageToCookie();\r\n});\r\n","import { LOCALE_ID, Provider, inject } from '@angular/core';\r\nimport { differentLocales } from '../constants/different-locales';\r\nimport { LocalizationService } from '../services/localization.service';\r\nimport { checkHasProp } from '../utils/common-utils';\r\n\r\nexport class LocaleId extends String {\r\n private localizationService = inject(LocalizationService);\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n toString(): string {\r\n const { currentLang } = this.localizationService;\r\n if (checkHasProp(differentLocales, currentLang)) {\r\n return differentLocales[currentLang];\r\n }\r\n return currentLang;\r\n }\r\n\r\n valueOf(): string {\r\n return this.toString();\r\n }\r\n}\r\n\r\nexport const LocaleProvider: Provider = {\r\n provide: LOCALE_ID,\r\n useClass: LocaleId,\r\n};","import { Provider } from '@angular/core';\r\nimport { INCUDE_LOCALIZATION_RESOURCES_TOKEN } from '../tokens/include-localization-resources.token';\r\n\r\nexport const IncludeLocalizationResourcesProvider: Provider = {\r\n provide: INCUDE_LOCALIZATION_RESOURCES_TOKEN,\r\n useValue: false,\r\n};\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Route, Router } from '@angular/router';\r\nimport { ABP } from '../models';\r\nimport { RoutesService } from '../services/routes.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RoutesHandler {\r\n private routes = inject(RoutesService);\r\n private router = inject(Router, { optional: true })!;\r\n\r\n constructor() {\r\n this.addRoutes();\r\n }\r\n\r\n addRoutes() {\r\n (this.router?.config as RouteData[])?.forEach(({ path = '', data }: RouteData) => {\r\n const routes = data?.routes;\r\n if (!routes) return;\r\n\r\n if (Array.isArray(routes)) {\r\n this.routes.add(routes);\r\n } else {\r\n const routesFlatten = flatRoutes([{ path, ...routes }], { path: '' });\r\n this.routes.add(routesFlatten);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction flatRoutes(routes: RouteDef[], parent: any) {\r\n if (!routes) return [];\r\n\r\n return routes.reduce((acc, route) => {\r\n const { children, ...current } = {\r\n ...route,\r\n parentName: parent.name,\r\n path: (parent.path + '/' + route.path).replace(/\\/\\//g, '/'),\r\n };\r\n\r\n acc.push(current, ...flatRoutes(children, current));\r\n\r\n return acc;\r\n }, [] as ABP.Route[]);\r\n}\r\n\r\ntype RouteDef = ABP.Route & { children: RouteDef[] };\r\ntype RouteData = Route & { data: { routes: RouteDef | Array<RouteDef> } };\r\n","import {\r\n HttpHandler,\r\n HttpHeaders,\r\n HttpInterceptor,\r\n HttpRequest,\r\n HttpEvent,\r\n} from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpWaitService } from '../services';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ApiInterceptor implements IApiInterceptor {\r\n private httpWaitService = inject(HttpWaitService);\r\n\r\n getAdditionalHeaders(existingHeaders?: HttpHeaders) {\r\n return existingHeaders || new HttpHeaders();\r\n }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n this.httpWaitService.addRequest(request);\r\n return next.handle(request).pipe(finalize(() => this.httpWaitService.deleteRequest(request)));\r\n }\r\n}\r\n\r\nexport interface IApiInterceptor extends HttpInterceptor {\r\n getAdditionalHeaders(existingHeaders?: HttpHeaders): HttpHeaders;\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\r\nimport { TimezoneService } from '../services';\r\n\r\nexport const timezoneInterceptor: HttpInterceptorFn = (\r\n req: HttpRequest<any>,\r\n next: HttpHandlerFn,\r\n) => {\r\n const timezoneService = inject(TimezoneService);\r\n\r\n if (!timezoneService.isUtcClockEnabled) {\r\n return next(req);\r\n }\r\n const timezone = timezoneService.timezone;\r\n if (timezone) {\r\n req = req.clone({\r\n setHeaders: {\r\n __timezone: timezone,\r\n },\r\n });\r\n }\r\n return next(req);\r\n};\r\n","import { inject, makeStateKey, PLATFORM_ID, TransferState } from '@angular/core';\r\nimport {\r\n HttpEvent,\r\n HttpHandlerFn,\r\n HttpInterceptorFn,\r\n HttpRequest,\r\n HttpResponse,\r\n} from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { tap } from 'rxjs/operators';\r\n\r\nexport const transferStateInterceptor: HttpInterceptorFn = (\r\n req: HttpRequest<any>,\r\n next: HttpHandlerFn,\r\n): Observable<HttpEvent<any>> => {\r\n const transferState = inject(TransferState);\r\n const platformId = inject(PLATFORM_ID);\r\n\r\n if (req.method !== 'GET') {\r\n return next(req);\r\n }\r\n\r\n const stateKey = makeStateKey<HttpResponse<any>>(req.urlWithParams);\r\n\r\n if (isPlatformBrowser(platformId)) {\r\n const storedResponse = transferState.get<HttpResponse<any>>(stateKey, null);\r\n if (storedResponse) {\r\n transferState.remove(stateKey);\r\n return of(new HttpResponse<any>({ body: storedResponse, status: 200 }));\r\n }\r\n }\r\n\r\n return next(req).pipe(\r\n tap(event => {\r\n if (isPlatformServer(platformId) && event instanceof HttpResponse) {\r\n transferState.set(stateKey, event.body);\r\n console.log(`Interceptor: ${req.urlWithParams} is stored in TransferState.`);\r\n }\r\n }),\r\n );\r\n};\r\n","import { makeEnvironmentProviders, Provider, provideAppInitializer, inject } from '@angular/core';\r\nimport { TitleStrategy } from '@angular/router';\r\nimport {\r\n provideHttpClient,\r\n withFetch,\r\n withInterceptors,\r\n withInterceptorsFromDi,\r\n withXsrfConfiguration,\r\n} from '@angular/common/http';\r\nimport {\r\n CORE_OPTIONS,\r\n LOCALIZATIONS,\r\n DYNAMIC_LAYOUTS_TOKEN,\r\n OTHERS_GROUP,\r\n QUEUE_MANAGER,\r\n SORT_COMPARE_FUNC,\r\n TENANT_KEY,\r\n compareFuncFactory,\r\n coreOptionsFactory,\r\n localizationContributor,\r\n} from '../tokens';\r\nimport { RoutesHandler } from '../handlers';\r\nimport { ABP, SortableItem } from '../models';\r\nimport { AuthErrorFilterService } from '../abstracts';\r\nimport { DEFAULT_DYNAMIC_LAYOUTS } from '../constants';\r\nimport { LocalizationService, LocalStorageListenerService, AbpTitleStrategy } from '../services';\r\nimport { DefaultQueueManager, getInitialData } from '../utils';\r\nimport { CookieLanguageProvider, IncludeLocalizationResourcesProvider, LocaleProvider } from './';\r\nimport { timezoneInterceptor, transferStateInterceptor } from '../interceptors';\r\n\r\nexport enum CoreFeatureKind {\r\n Options,\r\n CompareFunctionFactory,\r\n TitleStrategy,\r\n}\r\n\r\nexport interface CoreFeature<KindT extends CoreFeatureKind> {\r\n ɵkind: KindT;\r\n ɵproviders: Provider[];\r\n}\r\n\r\nfunction makeCoreFeature<KindT extends CoreFeatureKind>(\r\n kind: KindT,\r\n providers: Provider[],\r\n): CoreFeature<KindT> {\r\n return {\r\n ɵkind: kind,\r\n ɵproviders: providers,\r\n };\r\n}\r\n\r\nexport function withOptions(options = {} as ABP.Root): CoreFeature<CoreFeatureKind.Options> {\r\n return makeCoreFeature(CoreFeatureKind.Options, [\r\n {\r\n provide: 'CORE_OPTIONS',\r\n useValue: options,\r\n },\r\n {\r\n provide: CORE_OPTIONS,\r\n useFactory: coreOptionsFactory,\r\n deps: ['CORE_OPTIONS'],\r\n },\r\n { provide: TENANT_KEY, useValue: options.tenantKey || '__tenant' },\r\n {\r\n provide: LOCALIZATIONS,\r\n multi: true,\r\n useValue: localizationContributor(options.localizations),\r\n deps: [LocalizationService],\r\n },\r\n {\r\n provide: OTHERS_GROUP,\r\n useValue: options.othersGroup || 'AbpUi::OthersGroup',\r\n },\r\n {\r\n provide: DYNAMIC_LAYOUTS_TOKEN,\r\n useValue: options.dynamicLayouts || DEFAULT_DYNAMIC_LAYOUTS,\r\n },\r\n ]);\r\n}\r\n\r\nexport function withTitleStrategy(strategy: unknown): CoreFeature<CoreFeatureKind.TitleStrategy> {\r\n return makeCoreFeature(CoreFeatureKind.TitleStrategy, [\r\n {\r\n provide: TitleStrategy,\r\n useExisting: strategy,\r\n },\r\n ]);\r\n}\r\n\r\nexport function withCompareFuncFactory(\r\n factory: (a: SortableItem, b: SortableItem) => 1 | -1 | 0,\r\n): CoreFeature<CoreFeatureKind.CompareFunctionFactory> {\r\n return makeCoreFeature(CoreFeatureKind.CompareFunctionFactory, [\r\n {\r\n provide: SORT_COMPARE_FUNC,\r\n useFactory: factory,\r\n },\r\n ]);\r\n}\r\n\r\nexport function provideAbpCore(...features: CoreFeature<CoreFeatureKind>[]) {\r\n const providers = [\r\n provideHttpClient(\r\n withInterceptorsFromDi(),\r\n withXsrfConfiguration({\r\n cookieName: 'XSRF-TOKEN',\r\n headerName: 'RequestVerificationToken',\r\n }),\r\n withFetch(),\r\n withInterceptors([transferStateInterceptor, timezoneInterceptor]),\r\n ),\r\n provideAppInitializer(async () => {\r\n inject(LocalizationService);\r\n inject(LocalStorageListenerService);\r\n inject(RoutesHandler);\r\n await getInitialData();\r\n }),\r\n LocaleProvider,\r\n CookieLanguageProvider,\r\n {\r\n provide: SORT_COMPARE_FUNC,\r\n useFactory: compareFuncFactory,\r\n },\r\n {\r\n provide: QUEUE_MANAGER,\r\n useClass: DefaultQueueManager,\r\n },\r\n AuthErrorFilterService,\r\n IncludeLocalizationResourcesProvider,\r\n {\r\n provide: TitleStrategy,\r\n useExisting: AbpTitleStrategy,\r\n },\r\n ];\r\n\r\n for (const feature of features) {\r\n providers.push(...feature.ɵproviders);\r\n }\r\n\r\n return makeEnvironmentProviders(providers);\r\n}\r\n\r\nexport function provideAbpCoreChild(options = {} as ABP.Child) {\r\n return makeEnvironmentProviders([\r\n {\r\n provide: LOCALIZATIONS,\r\n multi: true,\r\n useValue: localizationContributor(options.localizations),\r\n deps: [LocalizationService],\r\n },\r\n ]);\r\n}\r\n","import { Injectable, Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { LocalizationWithDefault } from '../models/localization';\r\nimport { LocalizationService } from '../services/localization.service';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'abpLocalization',\r\n})\r\nexport class LocalizationPipe implements PipeTransform {\r\n private localization = inject(LocalizationService);\r\n\r\n\r\n transform(\r\n value: string | LocalizationWithDefault = '',\r\n ...interpolateParams: (string | string[] | undefined)[]\r\n ): string {\r\n const params =\r\n interpolateParams.reduce((acc, val) => {\r\n if (!acc) {\r\n return val;\r\n }\r\n if (!val) {\r\n return acc;\r\n }\r\n return Array.isArray(val) ? [...acc, ...val] : [...acc, val];\r\n }, []) || [];\r\n return this.localization.instant(value, ...params);\r\n }\r\n}\r\n","import { inject, Injectable, Pipe, PipeTransform, SecurityContext } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'abpSafeHtml',\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n private readonly sanitizer = inject(DomSanitizer);\r\n\r\n transform(value: string): string {\r\n if (typeof value !== 'string') return '';\r\n return this.sanitizer.sanitize(SecurityContext.HTML, value);\r\n }\r\n}\r\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\nexport type SortOrder = 'asc' | 'desc';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'abpSort',\r\n})\r\nexport class SortPipe implements PipeTransform {\r\n transform(value: any[], sortOrder: SortOrder | string = 'asc', sortKey?: string | number): any {\r\n sortOrder = sortOrder && (sortOrder.toLowerCase() as any);\r\n\r\n if (!value || (sortOrder !== 'asc' && sortOrder !== 'desc')) return value;\r\n\r\n let numberArray = [];\r\n let stringArray = [];\r\n\r\n if (!sortKey) {\r\n numberArray = value.filter(item => typeof item === 'number').sort();\r\n stringArray = value.filter(item => typeof item === 'string').sort();\r\n } else {\r\n numberArray = value\r\n .filter(item => typeof item[sortKey] === 'number')\r\n .sort((a, b) => a[sortKey] - b[sortKey]);\r\n stringArray = value\r\n .filter(item => typeof item[sortKey] === 'string')\r\n .sort((a, b) => {\r\n if (a[sortKey] < b[sortKey]) return -1;\r\n else if (a[sortKey] > b[sortKey]) return 1;\r\n else return 0;\r\n });\r\n }\r\n const sorted = [\r\n ...numberArray,\r\n ...stringArray,\r\n ...value.filter(\r\n item =>\r\n typeof (sortKey ? item[sortKey] : item) !== 'number' &&\r\n typeof (sortKey ? item[sortKey] : item) !== 'string',\r\n ),\r\n ];\r\n return sortOrder === 'asc' ? sorted : sorted.reverse();\r\n }\r\n}\r\n","import { InjectionToken, Injector, Pipe, PipeTransform, inject } from '@angular/core';\r\n\r\nexport const INJECTOR_PIPE_DATA_TOKEN = new InjectionToken<PipeTransform>(\r\n 'INJECTOR_PIPE_DATA_TOKEN',\r\n);\r\n\r\n@Pipe({\r\n name: 'toInjector',\r\n})\r\nexport class ToInjectorPipe implements PipeTransform {\r\n private injector = inject(Injector);\r\n\r\n transform(\r\n value: any,\r\n token: InjectionToken<any> = INJECTOR_PIPE_DATA_TOKEN,\r\n name = 'ToInjectorPipe',\r\n ): Injector {\r\n return Injector.create({\r\n providers: [\r\n {\r\n provide: token,\r\n useValue: value,\r\n },\r\n ],\r\n parent: this.injector,\r\n name,\r\n });\r\n }\r\n}\r\n","import { DatePipe, DATE_PIPE_DEFAULT_TIMEZONE } from '@angular/common';\r\nimport { LOCALE_ID, Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { ConfigStateService } from '../services';\r\nimport { getShortDateFormat } from '../utils/date-utils';\r\n\r\n@Pipe({\r\n name: 'shortDate',\r\n pure: true,\r\n})\r\nexport class ShortDatePipe extends DatePipe implements PipeTransform {\r\n private configStateService = inject(ConfigStateService);\r\n\r\n constructor() {\r\n const locale = inject(LOCALE_ID);\r\n const defaultTimezone = inject(DATE_PIPE_DEFAULT_TIMEZONE, { optional: true });\r\n\r\n super(locale, defaultTimezone);\r\n }\r\n\r\n transform(\r\n value: Date | string | number,\r\n format?: string,\r\n timezone?: string,\r\n locale?: string,\r\n ): string | null;\r\n transform(value: null | undefined, format?: string, timezone?: string, locale?: string): null;\r\n transform(\r\n value: string | number | Date | null | undefined,\r\n timezone?: string,\r\n locale?: string,\r\n ): string | null {\r\n const format = getShortDateFormat(this.configStateService);\r\n return super.transform(value, format, timezone, locale);\r\n }\r\n}\r\n","import { DatePipe, DATE_PIPE_DEFAULT_TIMEZONE } from '@angular/common';\r\nimport { LOCALE_ID, Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { ConfigStateService } from '../services';\r\nimport { getShortTimeFormat } from '../utils/date-utils';\r\n\r\n@Pipe({\r\n name: 'shortTime',\r\n pure: true,\r\n})\r\nexport class ShortTimePipe extends DatePipe implements PipeTransform {\r\n private configStateService = inject(ConfigStateService);\r\n\r\n constructor() {\r\n const locale = inject(LOCALE_ID);\r\n const defaultTimezone = inject(DATE_PIPE_DEFAULT_TIMEZONE, { optional: true });\r\n\r\n super(locale, defaultTimezone);\r\n }\r\n\r\n transform(\r\n value: Date | string | number,\r\n format?: string,\r\n timezone?: string,\r\n locale?: string,\r\n ): string | null;\r\n transform(value: null | undefined, format?: string, timezone?: string, locale?: string): null;\r\n transform(\r\n value: string | number | Date | null | undefined,\r\n timezone?: string,\r\n locale?: string,\r\n ): string | null {\r\n const format = getShortTimeFormat(this.configStateService);\r\n return super.transform(value, format, timezone, locale);\r\n }\r\n}\r\n","import { DatePipe, DATE_PIPE_DEFAULT_TIMEZONE } from '@angular/common';\r\nimport { LOCALE_ID, Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { ConfigStateService } from '../services';\r\nimport { getShortDateShortTimeFormat } from '../utils/date-utils';\r\n\r\n@Pipe({\r\n name: 'shortDateTime',\r\n pure: true,\r\n})\r\nexport class ShortDateTimePipe extends DatePipe implements PipeTransform {\r\n private configStateService = inject(ConfigStateService);\r\n\r\n constructor() {\r\n const locale = inject(LOCALE_ID);\r\n const defaultTimezone = inject(DATE_PIPE_DEFAULT_TIMEZONE, { optional: true });\r\n\r\n super(locale, defaultTimezone);\r\n }\r\n\r\n transform(\r\n value: Date | string | number,\r\n format?: string,\r\n timezone?: string,\r\n locale?: string,\r\n ): string | null;\r\n transform(value: null | undefined, format?: string, timezone?: string, locale?: string): null;\r\n transform(\r\n value: string | number | Date | null | undefined,\r\n timezone?: string,\r\n locale?: string,\r\n ): string | null {\r\n const format = getShortDateShortTimeFormat(this.configStateService);\r\n return super.transform(value, format, timezone, locale);\r\n }\r\n}\r\n","import { Pipe, PipeTransform, Injectable, inject, LOCALE_ID } from '@angular/core';\r\nimport { ConfigStateService, LocalizationService, TimeService, TimezoneService } from '../services';\r\nimport { getShortDateFormat, getShortDateShortTimeFormat, getShortTimeFormat } from '../utils';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'abpUtcToLocal',\r\n})\r\nexport class UtcToLocalPipe implements PipeTransform {\r\n protected readonly timezoneService = inject(TimezoneService);\r\n protected readonly timeService = inject(TimeService);\r\n protected readonly configState = inject(ConfigStateService);\r\n protected readonly localizationService = inject(LocalizationService);\r\n protected readonly locale = inject(LOCALE_ID);\r\n\r\n transform(\r\n value: string | Date | null | undefined,\r\n type: 'date' | 'datetime' | 'time',\r\n ): string | Date {\r\n if (!value) return '';\r\n\r\n const date = new Date(value);\r\n if (isNaN(date.getTime())) return '';\r\n\r\n const format = this.getFormat(type);\r\n\r\n try {\r\n if (this.timezoneService.isUtcClockEnabled) {\r\n const timeZone = this.timezoneService.timezone;\r\n return this.timeService.formatDateWithStandardOffset(date, format, timeZone);\r\n } else {\r\n return this.timeService.formatWithoutTimeZone(date, format);\r\n }\r\n } catch (err) {\r\n return value;\r\n }\r\n }\r\n\r\n private getFormat(propType: 'date' | 'datetime' | 'time'): string {\r\n switch (propType) {\r\n case 'date':\r\n return getShortDateFormat(this.configState);\r\n case 'time':\r\n return getShortTimeFormat(this.configState);\r\n case 'datetime':\r\n default:\r\n return getShortDateShortTimeFormat(this.configState);\r\n }\r\n }\r\n}\r\n","import { inject, Injectable, Pipe, PipeTransform } from '@angular/core';\r\nimport {\r\n Observable,\r\n of,\r\n filter,\r\n take,\r\n switchMap,\r\n map,\r\n startWith,\r\n distinctUntilChanged,\r\n} from 'rxjs';\r\nimport { ConfigStateService, LocalizationService } from '../services';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'abpAsyncLocalization',\r\n})\r\nexport class AsyncLocalizationPipe implements PipeTransform {\r\n private localizationService = inject(LocalizationService);\r\n private configStateService = inject(ConfigStateService);\r\n\r\n transform(key: string, ...params: (string | string[])[]): Observable<string> {\r\n if (!key) {\r\n return of('');\r\n }\r\n\r\n const flatParams = params.reduce<string[]>(\r\n (acc, val) => (Array.isArray(val) ? acc.concat(val) : [...acc, val]),\r\n [],\r\n );\r\n\r\n return this.configStateService.getAll$().pipe(\r\n filter(config => !!config.localization),\r\n take(1),\r\n switchMap(() => this.localizationService.get(key, ...flatParams)),\r\n map(translation => (translation && translation !== key ? translation : '')),\r\n startWith(''),\r\n distinctUntilChanged(),\r\n );\r\n }\r\n}\r\n","import { Injectable, Pipe } from '@angular/core';\r\nimport { AsyncLocalizationPipe } from './async-localization.pipe';\r\n\r\n/**\r\n * @deprecated Use `AsyncLocalizationPipe` instead. This pipe will be removed in a future version.\r\n * LazyLocalizationPipe has been renamed to AsyncLocalizationPipe to better express its async nature.\r\n */\r\n@Injectable()\r\n@Pipe({\r\n name: 'abpLazyLocalization',\r\n})\r\nexport class LazyLocalizationPipe extends AsyncLocalizationPipe {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'htmlEncode',\r\n})\r\nexport class HtmlEncodePipe implements PipeTransform {\r\n transform(value: string): string {\r\n if (!value) {\r\n return value;\r\n }\r\n\r\n return value\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&#39;');\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n provideHttpClient,\r\n withInterceptorsFromDi,\r\n withXsrfConfiguration,\r\n withFetch,\r\n} from '@angular/common/http';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AbstractNgModelComponent } from './abstracts';\r\nimport {\r\n DynamicLayoutComponent,\r\n ReplaceableRouteContainerComponent,\r\n RouterOutletComponent,\r\n} from './components';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport {\r\n StopPropagationDirective,\r\n ReplaceableTemplateDirective,\r\n PermissionDirective,\r\n InitDirective,\r\n ForDirective,\r\n InputEventDebounceDirective,\r\n AutofocusDirective,\r\n FormSubmitDirective,\r\n} from './directives';\r\nimport { ABP } from './models/common';\r\nimport './utils/date-extensions';\r\nimport { provideAbpCoreChild, provideAbpCore, withOptions } from './providers';\r\nimport {\r\n AsyncLocalizationPipe,\r\n LazyLocalizationPipe,\r\n UtcToLocalPipe,\r\n SafeHtmlPipe,\r\n ShortDatePipe,\r\n ShortTimePipe,\r\n ShortDateTimePipe,\r\n ToInjectorPipe,\r\n SortPipe,\r\n LocalizationPipe,\r\n} from './pipes';\r\n\r\nconst CORE_DIRECTIVES = [\r\n AutofocusDirective,\r\n InputEventDebounceDirective,\r\n ForDirective,\r\n FormSubmitDirective,\r\n InitDirective,\r\n PermissionDirective,\r\n ReplaceableTemplateDirective,\r\n StopPropagationDirective,\r\n];\r\n\r\nconst CORE_PIPES = [\r\n LocalizationPipe,\r\n SortPipe,\r\n SafeHtmlPipe,\r\n ShortDateTimePipe,\r\n ShortTimePipe,\r\n ShortDatePipe,\r\n ToInjectorPipe,\r\n UtcToLocalPipe,\r\n AsyncLocalizationPipe,\r\n LazyLocalizationPipe,\r\n];\r\n\r\nconst CORE_COMPONENTS = [\r\n DynamicLayoutComponent,\r\n ReplaceableRouteContainerComponent,\r\n RouterOutletComponent,\r\n AbstractNgModelComponent,\r\n];\r\n/**\r\n * BaseCoreModule is the module that holds\r\n * all imports, declarations, exports, and entryComponents\r\n * but not the providers.\r\n * This module will be imported and exported by all others.\r\n */\r\n@NgModule({\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n NgxValidateCoreModule,\r\n ...CORE_DIRECTIVES,\r\n ...CORE_PIPES,\r\n ...CORE_COMPONENTS,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n NgxValidateCoreModule,\r\n ...CORE_DIRECTIVES,\r\n ...CORE_PIPES,\r\n ...CORE_COMPONENTS,\r\n ],\r\n declarations: [],\r\n providers: [LocalizationPipe, provideHttpClient(withInterceptorsFromDi(), withFetch())],\r\n})\r\nexport class BaseCoreModule {}\r\n\r\n/**\r\n * RootCoreModule is the module that will be used at root level\r\n * and it introduces imports useful at root level (e.g. NGXS)\r\n */\r\n@NgModule({\r\n exports: [BaseCoreModule],\r\n imports: [BaseCoreModule],\r\n providers: [\r\n provideHttpClient(\r\n withXsrfConfiguration({\r\n cookieName: 'XSRF-TOKEN',\r\n headerName: 'RequestVerificationToken',\r\n }),\r\n ),\r\n ],\r\n})\r\nexport class RootCoreModule {}\r\n\r\n/**\r\n * CoreModule is the module that is publicly available\r\n */\r\n@NgModule({\r\n exports: [BaseCoreModule],\r\n imports: [BaseCoreModule],\r\n})\r\nexport class CoreModule {\r\n /**\r\n * @deprecated forRoot method is deprecated, use `provideAbpCore` *function* for config settings.\r\n */\r\n static forRoot(options = {} as ABP.Root): ModuleWithProviders<RootCoreModule> {\r\n return {\r\n ngModule: RootCoreModule,\r\n providers: [provideAbpCore(withOptions(options))],\r\n };\r\n }\r\n\r\n /**\r\n * @deprecated forChild method is deprecated, use `provideAbpCoreChild` *function* for config settings.\r\n */\r\n static forChild(options = {} as ABP.Child): ModuleWithProviders<RootCoreModule> {\r\n return {\r\n ngModule: RootCoreModule,\r\n providers: [provideAbpCoreChild(options)],\r\n };\r\n }\r\n}\r\n","import { Injectable, inject, PLATFORM_ID } from '@angular/core';\r\nimport {\r\n ActivatedRouteSnapshot,\r\n CanActivateFn,\r\n Router,\r\n RouterStateSnapshot,\r\n UrlTree,\r\n} from '@angular/router';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { filter, map, switchMap, take } from 'rxjs/operators';\r\nimport { AuthService, IAbpGuard } from '../abstracts';\r\nimport { findRoute, getRoutePath } from '../utils/route-utils';\r\nimport { RoutesService, PermissionService, HttpErrorReporterService, ConfigStateService } from '../services';\r\nimport { isPlatformServer } from '@angular/common';\r\n/**\r\n * @deprecated Use `permissionGuard` *function* instead.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PermissionGuard implements IAbpGuard {\r\n protected readonly router = inject(Router);\r\n protected readonly routesService = inject(RoutesService);\r\n protected readonly authService = inject(AuthService);\r\n protected readonly permissionService = inject(PermissionService);\r\n protected readonly httpErrorReporter = inject(HttpErrorReporterService);\r\n protected readonly configStateService = inject(ConfigStateService);\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> {\r\n let { requiredPolicy } = route.data || {};\r\n\r\n if (!requiredPolicy) {\r\n const routeFound = findRoute(this.routesService, getRoutePath(this.router, state.url));\r\n requiredPolicy = routeFound?.requiredPolicy;\r\n }\r\n\r\n if (!requiredPolicy) {\r\n return of(true);\r\n }\r\n\r\n return this.configStateService.getAll$().pipe(\r\n filter(config => !!config?.auth?.grantedPolicies),\r\n take(1),\r\n switchMap(() => this.permissionService.getGrantedPolicy$(requiredPolicy)),\r\n take(1),\r\n map(access => {\r\n if (access) return true;\r\n\r\n if (route.data?.['redirectUrl']) {\r\n return this.router.parseUrl(route.data['redirectUrl']);\r\n }\r\n\r\n if (this.authService.isAuthenticated) {\r\n this.httpErrorReporter.reportError({ status: 403 } as HttpErrorResponse);\r\n }\r\n return false;\r\n }),\r\n );\r\n }\r\n}\r\n\r\nexport const permissionGuard: CanActivateFn = (\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n) => {\r\n const router = inject(Router);\r\n const routesService = inject(RoutesService);\r\n const authService = inject(AuthService);\r\n const permissionService = inject(PermissionService);\r\n const httpErrorReporter = inject(HttpErrorReporterService);\r\n const configStateService = inject(ConfigStateService);\r\n const platformId = inject(PLATFORM_ID);\r\n\r\n let { requiredPolicy } = route.data || {};\r\n\r\n if (!requiredPolicy) {\r\n const routeFound = findRoute(routesService, getRoutePath(router, state.url));\r\n requiredPolicy = routeFound?.requiredPolicy;\r\n }\r\n\r\n if (!requiredPolicy) {\r\n return of(true);\r\n }\r\n\r\n //TODO enable permission check on ssr\r\n if (isPlatformServer(platformId)) {\r\n return of(true);\r\n }\r\n\r\n return configStateService.getAll$().pipe(\r\n filter(config => !!config?.auth?.grantedPolicies),\r\n take(1),\r\n switchMap(() => permissionService.getGrantedPolicy$(requiredPolicy)),\r\n take(1),\r\n map(access => {\r\n if (access) return true;\r\n\r\n if (route.data?.['redirectUrl']) {\r\n return router.parseUrl(route.data['redirectUrl']);\r\n }\r\n\r\n if (authService.isAuthenticated) {\r\n httpErrorReporter.reportError({ status: 403 } as HttpErrorResponse);\r\n }\r\n\r\n return false;\r\n }),\r\n );\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { LocalizationPipe } from './pipes/localization.pipe';\r\nimport { AsyncLocalizationPipe, LazyLocalizationPipe } from './pipes';\r\n\r\n/**\r\n * @deprecated Use `LocalizationPipe`, `AsyncLocalizationPipe` and `LazyLocalizationPipe` directly as a standalone pipe.\r\n * This module is no longer necessary for using the `LocalizationPipe`, `AsyncLocalizationPipe` and `LazyLocalizationPipe` pipes.\r\n */\r\n\r\n@NgModule({\r\n exports: [LocalizationPipe, AsyncLocalizationPipe, LazyLocalizationPipe],\r\n imports: [LocalizationPipe, AsyncLocalizationPipe, LazyLocalizationPipe],\r\n})\r\nexport class LocalizationModule {}\r\n","import { ABP } from './common';\r\nimport { checkHasProp } from '../utils/common-utils';\r\n\r\nexport class ListResultDto<T> {\r\n items?: T[];\r\n\r\n constructor(initialValues: Partial<ListResultDto<T>> = {}) {\r\n for (const key in initialValues) {\r\n if (checkHasProp(initialValues, key)) {\r\n this[key] = initialValues[key];\r\n }\r\n }\r\n }\r\n}\r\ntype ValueOf<T> = T[keyof T];\r\nexport class PagedResultDto<T> extends ListResultDto<T> {\r\n totalCount?: number;\r\n\r\n constructor(initialValues: Partial<PagedResultDto<T>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleObject {\r\n extraProperties?: ABP.Dictionary<any>;\r\n\r\n constructor(initialValues: Partial<ExtensibleObject> = {}) {\r\n for (const key in initialValues) {\r\n if (checkHasProp(initialValues, key) && initialValues[key] !== undefined) {\r\n this[key] = initialValues[key];\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class ExtensibleEntityDto<TKey = string> extends ExtensibleObject {\r\n id?: TKey;\r\n\r\n constructor(initialValues: Partial<ExtensibleEntityDto<TKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class LimitedResultRequestDto {\r\n maxResultCount = 10;\r\n\r\n constructor(initialValues: Partial<LimitedResultRequestDto> = {}) {\r\n for (const key in initialValues) {\r\n if (checkHasProp(initialValues, key) && initialValues[key] !== undefined) {\r\n this[key] = initialValues[key] as ValueOf<LimitedResultRequestDto>;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class ExtensibleLimitedResultRequestDto extends ExtensibleEntityDto {\r\n maxResultCount = 10;\r\n\r\n constructor(initialValues: Partial<ExtensibleLimitedResultRequestDto> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class PagedResultRequestDto extends LimitedResultRequestDto {\r\n skipCount?: number;\r\n\r\n constructor(initialValues: Partial<PagedResultRequestDto> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensiblePagedResultRequestDto extends ExtensibleLimitedResultRequestDto {\r\n skipCount?: number;\r\n\r\n constructor(initialValues: Partial<ExtensiblePagedResultRequestDto> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class PagedAndSortedResultRequestDto extends PagedResultRequestDto {\r\n sorting?: string;\r\n\r\n constructor(initialValues: Partial<PagedAndSortedResultRequestDto> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensiblePagedAndSortedResultRequestDto extends ExtensiblePagedResultRequestDto {\r\n sorting?: string;\r\n\r\n constructor(initialValues: Partial<ExtensiblePagedAndSortedResultRequestDto> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class EntityDto<TKey = string> {\r\n id?: TKey;\r\n\r\n constructor(initialValues: Partial<EntityDto<TKey>> = {}) {\r\n for (const key in initialValues) {\r\n if (checkHasProp(initialValues, key)) {\r\n this[key] = initialValues[key];\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class CreationAuditedEntityDto<TPrimaryKey = string> extends EntityDto<TPrimaryKey> {\r\n creationTime?: string | Date;\r\n creatorId?: string;\r\n\r\n constructor(initialValues: Partial<CreationAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class CreationAuditedEntityWithUserDto< \r\n TPrimaryKey = string,\r\n TUserDto = any\r\n> extends CreationAuditedEntityDto<TPrimaryKey> {\r\n creator?: TUserDto;\r\n\r\n constructor(\r\n initialValues: Partial<CreationAuditedEntityWithUserDto<TPrimaryKey,TUserDto>> = {},\r\n ) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class AuditedEntityDto<TPrimaryKey = string> extends CreationAuditedEntityDto<TPrimaryKey> {\r\n lastModificationTime?: string | Date;\r\n lastModifierId?: string;\r\n\r\n constructor(initialValues: Partial<AuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\n/** @deprecated the class signature will change in v8.0 */ \r\nexport class AuditedEntityWithUserDto<\r\n TPrimaryKey = string,\r\n TUserDto = any,\r\n> extends AuditedEntityDto<TPrimaryKey> {\r\n creator?: TUserDto;\r\n lastModifier?: TUserDto;\r\n\r\n constructor(initialValues: Partial<AuditedEntityWithUserDto< TPrimaryKey,TUserDto>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class FullAuditedEntityDto<TPrimaryKey = string> extends AuditedEntityDto<TPrimaryKey> {\r\n isDeleted?: boolean;\r\n deleterId?: string;\r\n deletionTime?: Date | string;\r\n\r\n constructor(initialValues: Partial<FullAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n/** @deprecated the class signature will change in v8.0 */ \r\nexport class FullAuditedEntityWithUserDto<\r\n TPrimaryKey = string,\r\n TUserDto = any\r\n> extends FullAuditedEntityDto<TPrimaryKey> {\r\n creator?: TUserDto;\r\n lastModifier?: TUserDto;\r\n deleter?: TUserDto;\r\n\r\n constructor(initialValues: Partial<FullAuditedEntityWithUserDto< TPrimaryKey,TUserDto>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleCreationAuditedEntityDto<\r\n TPrimaryKey = string,\r\n> extends ExtensibleEntityDto<TPrimaryKey> {\r\n creationTime?: Date | string;\r\n creatorId?: string;\r\n\r\n constructor(initialValues: Partial<ExtensibleCreationAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleAuditedEntityDto<\r\n TPrimaryKey = string,\r\n> extends ExtensibleCreationAuditedEntityDto<TPrimaryKey> {\r\n lastModificationTime?: Date | string;\r\n lastModifierId?: string;\r\n\r\n constructor(initialValues: Partial<ExtensibleAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleAuditedEntityWithUserDto<\r\n TPrimaryKey = string,\r\n TUserDto = any,\r\n> extends ExtensibleAuditedEntityDto<TPrimaryKey> {\r\n creator?: TUserDto;\r\n lastModifier?: TUserDto;\r\n\r\n constructor(initialValues: Partial<ExtensibleAuditedEntityWithUserDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleCreationAuditedEntityWithUserDto<\r\n TPrimaryKey = string,\r\n TUserDto = any,\r\n> extends ExtensibleCreationAuditedEntityDto<TPrimaryKey> {\r\n creator?: TUserDto;\r\n\r\n constructor(\r\n initialValues: Partial<ExtensibleCreationAuditedEntityWithUserDto<TPrimaryKey>> = {},\r\n ) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleFullAuditedEntityDto<\r\n TPrimaryKey = string,\r\n> extends ExtensibleAuditedEntityDto<TPrimaryKey> {\r\n isDeleted?: boolean;\r\n deleterId?: string;\r\n deletionTime?: Date | string;\r\n\r\n constructor(initialValues: Partial<ExtensibleFullAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleFullAuditedEntityWithUserDto<\r\n TPrimaryKey = string,\r\n TUserDto = any,\r\n> extends ExtensibleFullAuditedEntityDto<TPrimaryKey> {\r\n creator?: TUserDto;\r\n lastModifier?: TUserDto;\r\n deleter?: TUserDto;\r\n\r\n constructor(initialValues: Partial<ExtensibleFullAuditedEntityWithUserDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n","export type EventType =\r\n | 'discovery_document_loaded'\r\n | 'jwks_load_error'\r\n | 'invalid_nonce_in_state'\r\n | 'discovery_document_load_error'\r\n | 'discovery_document_validation_error'\r\n | 'user_profile_loaded'\r\n | 'user_profile_load_error'\r\n | 'token_received'\r\n | 'token_error'\r\n | 'code_error'\r\n | 'token_refreshed'\r\n | 'token_refresh_error'\r\n | 'silent_refresh_error'\r\n | 'silently_refreshed'\r\n | 'silent_refresh_timeout'\r\n | 'token_validation_error'\r\n | 'token_expires'\r\n | 'session_changed'\r\n | 'session_error'\r\n | 'session_terminated'\r\n | 'session_unchanged'\r\n | 'logout'\r\n | 'popup_closed'\r\n | 'popup_blocked'\r\n | 'token_revoke_error';\r\n\r\nexport abstract class AuthEvent {\r\n constructor(public readonly type: EventType) {\r\n this.type = type;\r\n }\r\n}\r\n\r\nexport class AuthSuccessEvent extends AuthEvent {\r\n constructor(public readonly type: EventType, public readonly info?: any) {\r\n super(type);\r\n }\r\n}\r\n\r\nexport class AuthInfoEvent extends AuthEvent {\r\n constructor(public readonly type: EventType, public readonly info?: any) {\r\n super(type);\r\n }\r\n}\r\n\r\nexport class AuthErrorEvent extends AuthEvent {\r\n constructor(\r\n public readonly type: EventType,\r\n public readonly reason: object,\r\n public readonly params?: object,\r\n ) {\r\n super(type);\r\n }\r\n}\r\n","import { RestService } from '../../../../../../services';\r\nimport { Rest } from '../../../../../../models';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport type { ApplicationApiDescriptionModel, ApplicationApiDescriptionModelRequestDto } from '../../../http/modeling/models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpApiDefinitionService {\n private restService = inject(RestService);\n\r\n apiName = 'abp';\r\n \r\n\r\n getByModel = (model: ApplicationApiDescriptionModelRequestDto, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, ApplicationApiDescriptionModel>({\r\n method: 'GET',\r\n url: '/api/abp/api-definition',\r\n params: { includeTypes: model.includeTypes },\r\n },\r\n { apiName: this.apiName,...config });\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface MinAgeError {\r\n minAge: {\r\n age: number;\r\n };\r\n}\r\n\r\nexport interface MinAgeOptions {\r\n age?: number;\r\n}\r\n\r\nexport function validateMinAge({ age = 18 }: MinAgeOptions = {}): ValidatorFn {\r\n return (control: AbstractControl): MinAgeError | null => {\r\n if (['', null, undefined].indexOf(control.value) > -1) return null;\r\n\r\n return isValidMinAge(control.value, age) ? null : { minAge: { age } };\r\n };\r\n}\r\n\r\nfunction isValidMinAge(value: string | number, minAge: number) {\r\n const date = new Date();\r\n date.setFullYear(date.getFullYear() - minAge);\r\n date.setHours(23, 59, 59, 999);\r\n\r\n return Number(new Date(value)) <= date.valueOf();\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface CreditCardError {\r\n creditCard: true;\r\n}\r\n\r\nexport function validateCreditCard(): ValidatorFn {\r\n return (control: AbstractControl): CreditCardError | null => {\r\n if (['', null, undefined].indexOf(control.value) > -1) return null;\r\n\r\n return isValidCreditCard(String(control.value)) ? null : { creditCard: true };\r\n };\r\n}\r\n\r\nfunction isValidCreditCard(value: string): boolean {\r\n value = value.replace(/[ -]/g, '');\r\n\r\n if (!/^[0-9]{13,19}$/.test(value)) return false;\r\n\r\n let checksum = 0;\r\n let multiplier = 1;\r\n\r\n for (let i = value.length; i > 0; i--) {\r\n const digit = Number(value[i - 1]) * multiplier;\r\n checksum += (digit % 10) + ~~(digit / 10);\r\n\r\n multiplier = (multiplier * 2) % 3;\r\n }\r\n\r\n return checksum % 10 === 0;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface RangeError {\r\n range: {\r\n max: number;\r\n min: number;\r\n };\r\n}\r\n\r\nexport interface RangeOptions {\r\n maximum?: number;\r\n minimum?: number;\r\n}\r\n\r\nexport function validateRange({ maximum = Infinity, minimum = 0 }: RangeOptions = {}): ValidatorFn {\r\n return (control: AbstractControl): RangeError | null => {\r\n if (['', null, undefined].indexOf(control.value) > -1) return null;\r\n\r\n const value = Number(control.value);\r\n return getMinError(value, minimum, maximum) || getMaxError(value, maximum, minimum);\r\n };\r\n}\r\n\r\nfunction getMaxError(value: number, max: number, min: number): RangeError | null {\r\n return value > max ? { range: { max, min } } : null;\r\n}\r\n\r\nfunction getMinError(value: number, min: number, max: number): RangeError | null {\r\n return value < min ? { range: { min, max } } : null;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface RequiredError {\r\n required: true;\r\n}\r\n\r\nexport interface RequiredOptions {\r\n allowEmptyStrings?: boolean;\r\n}\r\n\r\nexport function validateRequired({ allowEmptyStrings }: RequiredOptions = {}): ValidatorFn {\r\n // note: please do not remove name of the function, it is used in function compare with type 'RequiredError'\r\n const required = (control: AbstractControl): RequiredError | null => {\r\n return isValidRequired(control.value, allowEmptyStrings) ? null : { required: true };\r\n };\r\n return required;\r\n}\r\n\r\nfunction isValidRequired(value: any, allowEmptyStrings: boolean | undefined): boolean {\r\n if (value || value === 0 || value === false) return true;\r\n\r\n if (allowEmptyStrings && value === '') return true;\r\n\r\n return false;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface StringLengthError {\r\n maxlength?: {\r\n requiredLength: number;\r\n };\r\n minlength?: {\r\n requiredLength: number;\r\n };\r\n}\r\n\r\nexport interface StringLengthOptions {\r\n maximumLength?: number;\r\n minimumLength?: number;\r\n}\r\n\r\nexport function validateStringLength({\r\n maximumLength = Infinity,\r\n minimumLength = 0,\r\n}: StringLengthOptions = {}): ValidatorFn {\r\n return (control: AbstractControl): StringLengthError | null => {\r\n if (['', null, undefined].indexOf(control.value) > -1) return null;\r\n\r\n const value = String(control.value);\r\n\r\n return getMinLengthError(value, minimumLength) || getMaxLengthError(value, maximumLength);\r\n };\r\n}\r\n\r\nfunction getMaxLengthError(value: string, requiredLength: number): StringLengthError | null {\r\n return value.length > requiredLength ? { maxlength: { requiredLength } } : null;\r\n}\r\n\r\nfunction getMinLengthError(value: string, requiredLength: number): StringLengthError | null {\r\n return value.length < requiredLength ? { minlength: { requiredLength } } : null;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\nimport { isNullOrEmpty } from '../utils';\r\n\r\nexport interface UniqueCharacterError {\r\n uniqueCharacter: true;\r\n}\r\n\r\nexport function validateUniqueCharacter(): ValidatorFn {\r\n return (control: AbstractControl): UniqueCharacterError | null => {\r\n if (isNullOrEmpty(control.value)) return null;\r\n\r\n return isUnqiueCharacter(control.value) ? null : { uniqueCharacter: true };\r\n };\r\n}\r\n\r\nfunction isUnqiueCharacter(value: string): boolean {\r\n const set = new Set<string>(value.split(''));\r\n\r\n return set.size == value.length;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\nimport { isNullOrEmpty } from '../utils';\r\n\r\nexport interface UrlError {\r\n url: true;\r\n}\r\n\r\nexport function validateUrl(): ValidatorFn {\r\n return (control: AbstractControl): UrlError | null => {\r\n if (isNullOrEmpty(control.value)) return null;\r\n\r\n return isValidUrl(control.value) ? null : { url: true };\r\n };\r\n}\r\n\r\nfunction isValidUrl(value: string): boolean {\r\n if (/^http(s)?:\\/\\/[^/]/.test(value) || /^ftp:\\/\\/[^/]/.test(value)) {\r\n const a = document.createElement('a');\r\n a.href = value;\r\n return !!a.host;\r\n }\r\n\r\n return false;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\nimport { isNullOrEmpty } from '../utils';\r\n\r\nexport interface UsernamePatternError {\r\n usernamePattern: {\r\n actualValue: string;\r\n };\r\n}\r\n\r\nexport interface UsernameOptions {\r\n pattern?: RegExp;\r\n}\r\n\r\nconst onlyLetterAndNumberRegex = /^[a-zA-Z0-9]+$/;\r\n\r\nexport function validateUsername(\r\n { pattern = /.*/ }: UsernameOptions = { pattern: onlyLetterAndNumberRegex },\r\n): ValidatorFn {\r\n return (control: AbstractControl): UsernamePatternError | null => {\r\n const isValid = isValidUserName(control.value, pattern);\r\n return isValid ? null : { usernamePattern: { actualValue: control.value } };\r\n };\r\n}\r\n\r\nfunction isValidUserName(value: any, pattern: RegExp): boolean {\r\n if (isNullOrEmpty(value)) return true;\r\n\r\n return pattern.test(value);\r\n}\r\n","import { Validators } from '@angular/forms';\r\nimport { validateMinAge } from './age.validator';\r\nimport { validateCreditCard } from './credit-card.validator';\r\nimport { validateRange } from './range.validator';\r\nimport { validateRequired } from './required.validator';\r\nimport { validateStringLength } from './string-length.validator';\r\nimport { validateUniqueCharacter } from './unique-character.validator';\r\nimport { validateUrl } from './url.validator';\r\nimport { validateUsername } from './username.validator';\r\nexport { validateUniqueCharacter } from './unique-character.validator';\r\n\r\nexport * from './age.validator';\r\nexport * from './credit-card.validator';\r\nexport * from './range.validator';\r\nexport * from './required.validator';\r\nexport * from './string-length.validator';\r\nexport * from './url.validator';\r\nexport * from './unique-character.validator';\r\nexport const AbpValidators = {\r\n creditCard: validateCreditCard,\r\n emailAddress: () => Validators.email,\r\n minAge: validateMinAge,\r\n range: validateRange,\r\n required: validateRequired,\r\n stringLength: validateStringLength,\r\n url: validateUrl,\r\n username: validateUsername,\r\n uniqueCharacter: validateUniqueCharacter,\r\n};\r\n","// export * from './lib/handlers';\r\nexport * from './lib/abstracts';\r\nexport * from './lib/components';\r\nexport * from './lib/constants';\r\nexport * from './lib/core.module';\r\nexport * from './lib/directives';\r\nexport * from './lib/enums';\r\nexport * from './lib/guards';\r\nexport * from './lib/localization.module';\r\nexport * from './lib/models';\r\nexport * from './lib/pipes';\r\nexport * from './lib/providers';\r\nexport * from './lib/proxy/pages/abp/multi-tenancy';\r\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/api-exploring';\r\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/application-configurations';\r\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending';\r\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy';\r\nexport * from './lib/proxy/volo/abp/http/modeling';\r\nexport * from './lib/proxy/volo/abp/localization';\r\nexport * from './lib/proxy/volo/abp/models';\r\nexport * from './lib/services';\r\nexport * from './lib/strategies';\r\nexport * from './lib/tokens';\r\nexport * from './lib/utils';\r\nexport * from './lib/validators';\r\nexport * from './lib/interceptors';\r\nexport * from './lib/clients';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","take","filter","switchMap","distinctUntilChanged"],"mappings":"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"}