@softheon/armature 15.23.7 → 15.23.8

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,16 +1,18 @@
1
1
  import { Component } from '@angular/core';
2
+ import { routeToPreLoginRoute } from '../../functions/route-to-pre-login-route';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "../../services/base-config.service";
4
5
  import * as i2 from "@ngx-translate/core";
5
6
  import * as i3 from "../../services/federated-module.service";
6
- import * as i4 from "../../../navigation/components/navigation/navigation.component";
7
- import * as i5 from "../../../header/components/header/header.component";
8
- import * as i6 from "../../../footer/components/footer/footer.component";
9
- import * as i7 from "../../../alert-banner/components/alert-banner/alert-banner.component";
10
- import * as i8 from "@angular/router";
11
- import * as i9 from "@angular/common";
12
- import * as i10 from "@angular/flex-layout/flex";
13
- import * as i11 from "@angular/flex-layout/extended";
7
+ import * as i4 from "@angular/router";
8
+ import * as i5 from "angular-oauth2-oidc";
9
+ import * as i6 from "../../../navigation/components/navigation/navigation.component";
10
+ import * as i7 from "../../../header/components/header/header.component";
11
+ import * as i8 from "../../../footer/components/footer/footer.component";
12
+ import * as i9 from "../../../alert-banner/components/alert-banner/alert-banner.component";
13
+ import * as i10 from "@angular/common";
14
+ import * as i11 from "@angular/flex-layout/flex";
15
+ import * as i12 from "@angular/flex-layout/extended";
14
16
  /** The app template component */
15
17
  export class AppTemplateComponent {
16
18
  /** The log out text */
@@ -27,10 +29,12 @@ export class AppTemplateComponent {
27
29
  * @param translateService The translate service
28
30
  * @param federatedModuleService The federated module service
29
31
  */
30
- constructor(configService, translateService, federatedModuleService) {
32
+ constructor(configService, translateService, federatedModuleService, router, oauthService) {
31
33
  this.configService = configService;
32
34
  this.translateService = translateService;
33
35
  this.federatedModuleService = federatedModuleService;
36
+ this.router = router;
37
+ this.oauthService = oauthService;
34
38
  /** The header settings */
35
39
  this.headerSettings = {};
36
40
  /** The header theme settings */
@@ -56,6 +60,9 @@ export class AppTemplateComponent {
56
60
  this.config$ = this.configService.config$;
57
61
  this.setDefaults();
58
62
  this.configService.config$.subscribe(config => {
63
+ if (config.oAuthSettings.preserveRequestedRoute && this.oauthService.hasValidAccessToken()) {
64
+ routeToPreLoginRoute(this.router);
65
+ }
59
66
  // object assign is used here so the header doesn't have to re render with the new object reference
60
67
  // header
61
68
  Object.assign(this.headerSettings, config?.header?.settings);
@@ -249,10 +256,10 @@ export class AppTemplateComponent {
249
256
  Object.assign(this.navigationTheme, defaultNavTheme);
250
257
  }
251
258
  }
252
- AppTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AppTemplateComponent, deps: [{ token: i1.BaseConfigService }, { token: i2.TranslateService }, { token: i3.FederatedModuleService }], target: i0.ɵɵFactoryTarget.Component });
253
- AppTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: AppTemplateComponent, selector: "sof-ar-app-template", ngImport: i0, template: "<header *ngIf=\"!isFederatedModule\">\r\n <sof-ar-header [settings]=\"headerSettings\" [themeSettings]=\"headerThemeSettings\" [authSettings]=\"headerAuthSettings\"\r\n (setLanguage$)=\"applyLanguage()\" [currentLang]=\"currentLang\">\r\n <ng-container sof-ar-header-left>\r\n <ng-content select=\"[sof-ar-header-left]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-center>\r\n <ng-content select=\"[sof-ar-header-center]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-right>\r\n <ng-content select=\"[sof-ar-header-right]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-header-user-menu>\r\n <ng-content select=\"[sof-header-user-menu]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-header>\r\n</header>\r\n<ng-content select=\"[sof-ar-template-content]\"> </ng-content>\r\n<ng-container *ngIf=\"isFederatedModule\">\r\n <router-outlet></router-outlet>\r\n</ng-container>\r\n<sof-ar-navigation *ngIf=\"!isFederatedModule\" [navigationData]=\"navigationNodes\" [settings]=\"navigationSettings\"\r\n [advancedSettings]=\"navigationAdvancedSettings\" [themeSettings]=\"navigationTheme\"\r\n [languageSettings]=\"languageSettings\" [currentLang]=\"currentLang\" (setLanguage$)=\"applyLanguage()\"\r\n [logOutText]=\"logOutText\">\r\n <ng-container sof-ar-nav-content>\r\n <sof-ar-alert-banner class=\"sof-ar-alert-banner-container\"></sof-ar-alert-banner>\r\n <div class=\"sof-ar-nav-container\" fxLayout=\"column\" fxLayout=\"start stretch\" style=\"height: 100%;\">\r\n <ng-content select=\"[sof-ar-nav-content-header]\"></ng-content>\r\n <div class=\"sof-ar-nav-content-container\" fxFlex=\"1 0 100%\">\r\n <main [ngStyle.lt-md]=\"{'max-width':navigationSettings?.maxContentWidthMobile+'%'}\"\r\n [ngStyle.gt-sm]=\"{'max-width':navigationSettings?.maxContentWidthDesktop+'%'}\" class=\"main-content\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <sof-ar-footer style=\"width: 100%;\" [footerConfig]=\"{ showPreContent1: false, showPreContent2: false }\">\r\n <ng-container sof-ar-footer-content>\r\n <ng-content select=\"[sof-ar-footer-content]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-footer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container sof-ar-nav-mobile-footer>\r\n <ng-content select=\"[sof-ar-nav-mobile-footer]\"></ng-content>\r\n </ng-container>\r\n</sof-ar-navigation>\r\n", styles: [".nav-content-container{display:flex;flex-direction:column;height:100%}.sof-ar-nav-container{overflow:overlay}.sof-ar-nav-content-container{width:100%}.main-content{margin:auto}\n"], dependencies: [{ kind: "component", type: i4.ArmatureNavigationComponent, selector: "sof-ar-navigation", inputs: ["navigationData", "settings", "advancedSettings", "themeSettings", "languageSettings", "currentLang", "logOutText"], outputs: ["setLanguage$"] }, { kind: "component", type: i5.ArmatureHeaderComponent, selector: "sof-ar-header", inputs: ["settings", "themeSettings", "authSettings", "currentLang"], outputs: ["setLanguage$", "isLoggedInEE"] }, { kind: "component", type: i6.ArmatureFooterComponent, selector: "sof-ar-footer", inputs: ["footerConfig"] }, { kind: "component", type: i7.AlertBannerComponent, selector: "sof-ar-alert-banner", inputs: ["context"] }, { kind: "directive", type: i8.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i10.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i10.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i11.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }] });
259
+ AppTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AppTemplateComponent, deps: [{ token: i1.BaseConfigService }, { token: i2.TranslateService }, { token: i3.FederatedModuleService }, { token: i4.Router }, { token: i5.OAuthService }], target: i0.ɵɵFactoryTarget.Component });
260
+ AppTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: AppTemplateComponent, selector: "sof-ar-app-template", ngImport: i0, template: "<header *ngIf=\"!isFederatedModule\">\r\n <sof-ar-header [settings]=\"headerSettings\" [themeSettings]=\"headerThemeSettings\" [authSettings]=\"headerAuthSettings\"\r\n (setLanguage$)=\"applyLanguage()\" [currentLang]=\"currentLang\">\r\n <ng-container sof-ar-header-left>\r\n <ng-content select=\"[sof-ar-header-left]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-center>\r\n <ng-content select=\"[sof-ar-header-center]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-right>\r\n <ng-content select=\"[sof-ar-header-right]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-header-user-menu>\r\n <ng-content select=\"[sof-header-user-menu]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-header>\r\n</header>\r\n<ng-content select=\"[sof-ar-template-content]\"> </ng-content>\r\n<ng-container *ngIf=\"isFederatedModule\">\r\n <router-outlet></router-outlet>\r\n</ng-container>\r\n<sof-ar-navigation *ngIf=\"!isFederatedModule\" [navigationData]=\"navigationNodes\" [settings]=\"navigationSettings\"\r\n [advancedSettings]=\"navigationAdvancedSettings\" [themeSettings]=\"navigationTheme\"\r\n [languageSettings]=\"languageSettings\" [currentLang]=\"currentLang\" (setLanguage$)=\"applyLanguage()\"\r\n [logOutText]=\"logOutText\">\r\n <ng-container sof-ar-nav-content>\r\n <sof-ar-alert-banner class=\"sof-ar-alert-banner-container\"></sof-ar-alert-banner>\r\n <div class=\"sof-ar-nav-container\" fxLayout=\"column\" fxLayout=\"start stretch\" style=\"height: 100%;\">\r\n <ng-content select=\"[sof-ar-nav-content-header]\"></ng-content>\r\n <div class=\"sof-ar-nav-content-container\" fxFlex=\"1 0 100%\">\r\n <main [ngStyle.lt-md]=\"{'max-width':navigationSettings?.maxContentWidthMobile+'%'}\"\r\n [ngStyle.gt-sm]=\"{'max-width':navigationSettings?.maxContentWidthDesktop+'%'}\" class=\"main-content\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <sof-ar-footer style=\"width: 100%;\" [footerConfig]=\"{ showPreContent1: false, showPreContent2: false }\">\r\n <ng-container sof-ar-footer-content>\r\n <ng-content select=\"[sof-ar-footer-content]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-footer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container sof-ar-nav-mobile-footer>\r\n <ng-content select=\"[sof-ar-nav-mobile-footer]\"></ng-content>\r\n </ng-container>\r\n</sof-ar-navigation>\r\n", styles: [".nav-content-container{display:flex;flex-direction:column;height:100%}.sof-ar-nav-container{overflow:overlay}.sof-ar-nav-content-container{width:100%}.main-content{margin:auto}\n"], dependencies: [{ kind: "component", type: i6.ArmatureNavigationComponent, selector: "sof-ar-navigation", inputs: ["navigationData", "settings", "advancedSettings", "themeSettings", "languageSettings", "currentLang", "logOutText"], outputs: ["setLanguage$"] }, { kind: "component", type: i7.ArmatureHeaderComponent, selector: "sof-ar-header", inputs: ["settings", "themeSettings", "authSettings", "currentLang"], outputs: ["setLanguage$", "isLoggedInEE"] }, { kind: "component", type: i8.ArmatureFooterComponent, selector: "sof-ar-footer", inputs: ["footerConfig"] }, { kind: "component", type: i9.AlertBannerComponent, selector: "sof-ar-alert-banner", inputs: ["context"] }, { kind: "directive", type: i4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i11.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i11.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i11.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i12.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }] });
254
261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AppTemplateComponent, decorators: [{
255
262
  type: Component,
256
263
  args: [{ selector: 'sof-ar-app-template', template: "<header *ngIf=\"!isFederatedModule\">\r\n <sof-ar-header [settings]=\"headerSettings\" [themeSettings]=\"headerThemeSettings\" [authSettings]=\"headerAuthSettings\"\r\n (setLanguage$)=\"applyLanguage()\" [currentLang]=\"currentLang\">\r\n <ng-container sof-ar-header-left>\r\n <ng-content select=\"[sof-ar-header-left]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-center>\r\n <ng-content select=\"[sof-ar-header-center]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-right>\r\n <ng-content select=\"[sof-ar-header-right]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-header-user-menu>\r\n <ng-content select=\"[sof-header-user-menu]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-header>\r\n</header>\r\n<ng-content select=\"[sof-ar-template-content]\"> </ng-content>\r\n<ng-container *ngIf=\"isFederatedModule\">\r\n <router-outlet></router-outlet>\r\n</ng-container>\r\n<sof-ar-navigation *ngIf=\"!isFederatedModule\" [navigationData]=\"navigationNodes\" [settings]=\"navigationSettings\"\r\n [advancedSettings]=\"navigationAdvancedSettings\" [themeSettings]=\"navigationTheme\"\r\n [languageSettings]=\"languageSettings\" [currentLang]=\"currentLang\" (setLanguage$)=\"applyLanguage()\"\r\n [logOutText]=\"logOutText\">\r\n <ng-container sof-ar-nav-content>\r\n <sof-ar-alert-banner class=\"sof-ar-alert-banner-container\"></sof-ar-alert-banner>\r\n <div class=\"sof-ar-nav-container\" fxLayout=\"column\" fxLayout=\"start stretch\" style=\"height: 100%;\">\r\n <ng-content select=\"[sof-ar-nav-content-header]\"></ng-content>\r\n <div class=\"sof-ar-nav-content-container\" fxFlex=\"1 0 100%\">\r\n <main [ngStyle.lt-md]=\"{'max-width':navigationSettings?.maxContentWidthMobile+'%'}\"\r\n [ngStyle.gt-sm]=\"{'max-width':navigationSettings?.maxContentWidthDesktop+'%'}\" class=\"main-content\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <sof-ar-footer style=\"width: 100%;\" [footerConfig]=\"{ showPreContent1: false, showPreContent2: false }\">\r\n <ng-container sof-ar-footer-content>\r\n <ng-content select=\"[sof-ar-footer-content]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-footer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container sof-ar-nav-mobile-footer>\r\n <ng-content select=\"[sof-ar-nav-mobile-footer]\"></ng-content>\r\n </ng-container>\r\n</sof-ar-navigation>\r\n", styles: [".nav-content-container{display:flex;flex-direction:column;height:100%}.sof-ar-nav-container{overflow:overlay}.sof-ar-nav-content-container{width:100%}.main-content{margin:auto}\n"] }]
257
- }], ctorParameters: function () { return [{ type: i1.BaseConfigService }, { type: i2.TranslateService }, { type: i3.FederatedModuleService }]; } });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvY29yZS9jb21wb25lbnRzL2FwcC10ZW1wbGF0ZS9hcHAtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9jb3JlL2NvbXBvbmVudHMvYXBwLXRlbXBsYXRlL2FwcC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBY2xELGlDQUFpQztBQU1qQyxNQUFNLE9BQU8sb0JBQW9CO0lBZ0MvQix1QkFBdUI7SUFDdkIsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBS0Q7Ozs7O09BS0c7SUFDSCxZQUNtQixhQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsc0JBQThDO1FBRjlDLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFqRGpFLDBCQUEwQjtRQUNuQixtQkFBYyxHQUFtQixFQUFFLENBQUM7UUFFM0MsZ0NBQWdDO1FBQ3pCLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFFckQsK0JBQStCO1FBQ3hCLHVCQUFrQixHQUF1QixF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LEVBQUUsWUFBWTtnQkFDbkIsUUFBUSxFQUFFLEVBQUU7YUFDYjtZQUNEO2dCQUNFLElBQUksRUFBRSxNQUFNO2dCQUNaLGVBQWUsRUFBRSxpQkFBaUI7Z0JBQ2xDLEtBQUssRUFBRSxPQUFPO2dCQUNkLFFBQVEsRUFBRSxFQUFFO2FBQ2I7WUFDRDtnQkFDRSxJQUFJLEVBQUUsZUFBZTtnQkFDckIsZUFBZSxFQUFFLGlCQUFpQjtnQkFDbEMsS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsUUFBUSxFQUFFLEVBQUU7YUFDYjtTQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsMkNBQTJDO0lBQ25DLHFCQUFxQixDQUFDLE1BQWtCO1FBQzlDLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLGdCQUFnQixFQUFFLE1BQU07WUFDeEIsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixnQkFBZ0IsRUFBRSxhQUFhO1lBQy9CLGNBQWMsRUFBRSxTQUFTO1lBQ3pCLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLGtCQUFrQixFQUFFLG9CQUFvQjtZQUN4QyxrQkFBa0IsRUFBRSxrQkFBa0I7WUFDdEMsZUFBZSxFQUFFLFNBQVM7WUFDMUIsbUJBQW1CLEVBQUUsd0JBQXdCO1lBQzdDLHVCQUF1QixFQUFFLFNBQVM7U0FDbkMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN2RCxDQUFDOztpSEEzUVUsb0JBQW9CO3FHQUFwQixvQkFBb0IsMkRDcEJqQywybUZBZ0RBOzJGRDVCYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgSGVhZGVyQXV0aFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vaGVhZGVyL21vZGVscy9oZWFkZXItYXV0aC5zZXR0aW5ncyc7XHJcbmltcG9ydCB7IEhlYWRlckxhbmd1YWdlU2V0dGluZ3MgfSBmcm9tICcuLi8uLi8uLi9oZWFkZXIvbW9kZWxzL2hlYWRlci1sYW5ndWFnZS5zZXR0aW5ncyc7XHJcbmltcG9ydCB7IEhlYWRlclRoZW1lU2V0dGluZ3MgfSBmcm9tICcuLi8uLi8uLi9oZWFkZXIvbW9kZWxzL2hlYWRlci10aGVtZS5zZXR0aW5ncyc7XHJcbmltcG9ydCB7IEhlYWRlclNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vaGVhZGVyL21vZGVscy9oZWFkZXIuc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uQWR2YW5jZWRTZXR0aW5ncywgTmF2aWdhdGlvblNldHRpbmdzLCBOYXZpZ2F0aW9uVGhlbWVTZXR0aW5ncywgTmF2Tm9kZSB9IGZyb20gJy4uLy4uLy4uL25hdmlnYXRpb24vbmF2aWdhdGlvbi1hcGknO1xyXG5pbXBvcnQgeyBCYXNlQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Jhc2UtY29uZmlnJztcclxuaW1wb3J0IHsgQmFzZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmVkZXJhdGVkTW9kdWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZlZGVyYXRlZC1tb2R1bGUuc2VydmljZSc7XHJcblxyXG4vKiogVGhlIGFwcCB0ZW1wbGF0ZSBjb21wb25lbnQgKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzb2YtYXItYXBwLXRlbXBsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXBwLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hcHAtdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwVGVtcGxhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvKiogVGhlIGNvbmZpZyBvYnNlcnZhYmxlICovXHJcbiAgcHVibGljIGNvbmZpZyQ6IE9ic2VydmFibGU8QmFzZUNvbmZpZz47XHJcblxyXG4gIC8qKiBUaGUgaGVhZGVyIHNldHRpbmdzICovXHJcbiAgcHVibGljIGhlYWRlclNldHRpbmdzOiBIZWFkZXJTZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIGhlYWRlciB0aGVtZSBzZXR0aW5ncyAqL1xyXG4gIHB1YmxpYyBoZWFkZXJUaGVtZVNldHRpbmdzOiBIZWFkZXJUaGVtZVNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBUaGUgaGVhZGVyIGF1dGggc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgaGVhZGVyQXV0aFNldHRpbmdzOiBIZWFkZXJBdXRoU2V0dGluZ3MgPSB7fSBhcyBhbnk7XHJcblxyXG4gIC8qKiB0aGUgbmF2aWdhdGlvbiB0aGVtZSBzZXR0aW5ncyAqL1xyXG4gIHB1YmxpYyBuYXZpZ2F0aW9uVGhlbWU6IE5hdmlnYXRpb25UaGVtZVNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBUaGUgbmF2aWdhdGlvbiBzZXR0aW5ncyAqL1xyXG4gIHB1YmxpYyBuYXZpZ2F0aW9uU2V0dGluZ3M6IE5hdmlnYXRpb25TZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIG5hdmlnYXRpb24gbm9kZXMgKi9cclxuICBwdWJsaWMgbmF2aWdhdGlvbk5vZGVzOiBBcnJheTxOYXZOb2RlPiA9IFtdO1xyXG5cclxuICAvKiogVGhlIG5hdmlnYXRpb24gYWR2YW5jZWQgc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgbmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3M6IE5hdmlnYXRpb25BZHZhbmNlZFNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBUaGUgbGFuZ3VhZ2Ugc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgbGFuZ3VhZ2VTZXR0aW5nczogSGVhZGVyTGFuZ3VhZ2VTZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIGN1cnJlbnQgbGFuZ3VhZ2UgKi9cclxuICBwdWJsaWMgY3VycmVudExhbmc6IHN0cmluZztcclxuXHJcbiAgLyoqIFRoZSBsb2cgb3V0IHRleHQgKi9cclxuICBwdWJsaWMgZ2V0IGxvZ091dFRleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmhlYWRlckF1dGhTZXR0aW5ncy5sb2dPdXRUZXh0O1xyXG4gIH1cclxuXHJcbiAgLyoqIGdldHMgdGhlIG5vbiB1c2VkIGxhbmd1YWdlICovXHJcbiAgcHVibGljIGdldCBvdGhlckxhbmdUZXh0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNldHRpbmdzPy5sYW5ndWFnZXM/LmZpbmQoeCA9PiB4ICE9PSB0aGlzLmN1cnJlbnRMYW5nKTtcclxuICB9XHJcblxyXG4gIC8qKiBUcnVlIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmcgYXMgYSBmZWRlcmF0ZWQgbW9kdWxlICovXHJcbiAgcHVibGljIGlzRmVkZXJhdGVkTW9kdWxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgdGhlIGNvbXBvbmVudFxyXG4gICAqIEBwYXJhbSBjb25maWdTZXJ2aWNlIFRoZSBjb25maWcgc2VydmljZVxyXG4gICAqIEBwYXJhbSB0cmFuc2xhdGVTZXJ2aWNlIFRoZSB0cmFuc2xhdGUgc2VydmljZVxyXG4gICAqIEBwYXJhbSBmZWRlcmF0ZWRNb2R1bGVTZXJ2aWNlIFRoZSBmZWRlcmF0ZWQgbW9kdWxlIHNlcnZpY2VcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQmFzZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlZGVyYXRlZE1vZHVsZVNlcnZpY2U6IEZlZGVyYXRlZE1vZHVsZVNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIC8qKiBMaWZlIGN5Y2xlIGhvb2sgZm9yIGNvbXBvbmVudCBpbml0aWFsaXphdGlvbiAqL1xyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNGZWRlcmF0ZWRNb2R1bGUgPSB0aGlzLmZlZGVyYXRlZE1vZHVsZVNlcnZpY2UuaXNGZWRlcmF0ZWRNb2R1bGU7XHJcbiAgICB0aGlzLmNvbmZpZyQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnJDtcclxuICAgIHRoaXMuc2V0RGVmYXVsdHMoKTtcclxuICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWckLnN1YnNjcmliZShjb25maWcgPT4ge1xyXG4gICAgICAvLyBvYmplY3QgYXNzaWduIGlzIHVzZWQgaGVyZSBzbyB0aGUgaGVhZGVyIGRvZXNuJ3QgaGF2ZSB0byByZSByZW5kZXIgd2l0aCB0aGUgbmV3IG9iamVjdCByZWZlcmVuY2VcclxuICAgICAgLy8gaGVhZGVyXHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5oZWFkZXJTZXR0aW5ncywgY29uZmlnPy5oZWFkZXI/LnNldHRpbmdzKTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmhlYWRlclRoZW1lU2V0dGluZ3MsIGNvbmZpZz8uaGVhZGVyPy50aGVtZSk7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5oZWFkZXJBdXRoU2V0dGluZ3MsIGNvbmZpZz8ub0F1dGhTZXR0aW5ncyk7XHJcblxyXG4gICAgICAvLyBuYXZpZ2F0aW9uXHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbk5vZGVzID0gY29uZmlnPy5uYXZpZ2F0aW9uPy5ub2RlcyB8fCB0aGlzLmdldEV4YW1wbGVOYXZOb2RlcygpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubmF2aWdhdGlvblNldHRpbmdzLCBjb25maWc/Lm5hdmlnYXRpb24/LnNldHRpbmdzKTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm5hdmlnYXRpb25BZHZhbmNlZFNldHRpbmdzLCBjb25maWc/Lm5hdmlnYXRpb24/LmFkdmFuY2VkKTtcclxuICAgICAgdGhpcy5hc3NpZ25EZWZhdWx0TmF2VGhlbWUoY29uZmlnKTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm5hdmlnYXRpb25UaGVtZSwgY29uZmlnPy5uYXZpZ2F0aW9uPy50aGVtZSk7XHJcblxyXG4gICAgICAvLyBzZXQgZGVwZW5kZW50IHZhbHVlXHJcbiAgICAgIHRoaXMuaGVhZGVyU2V0dGluZ3MuYXJtYXR1cmVOYXZpZ2F0aW9uID0gIXRoaXMubmF2aWdhdGlvblNldHRpbmdzLmhpZGVOYXZpZ2F0aW9uO1xyXG4gICAgICBcclxuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblNldHRpbmdzLm1lbnVTdHlsZSA9PT0gJ3Byb2dyZXNzJyB8fCB0aGlzLm5hdmlnYXRpb25TZXR0aW5ncy5oaWRlTmF2aWdhdGlvbikge1xyXG4gICAgICAgIHRoaXMuaGVhZGVyU2V0dGluZ3MuY3JlYXRlU3BhY2VGb3JOYXZUb2dnbGUgPSB0aGlzLm5hdmlnYXRpb25TZXR0aW5ncy5hbGxvd05hdlRvZ2dsZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBTZXQgYm90aCBuYXZpZ2F0aW9uIHRvZ2dsZSBzZXR0aW5ncyB0byB0cnVlIGlmIGVpdGhlciBpcyB0cnVlXHJcbiAgICAgIGlmICh0aGlzLmhlYWRlclNldHRpbmdzLmNyZWF0ZVNwYWNlRm9yTmF2VG9nZ2xlIHx8IHRoaXMubmF2aWdhdGlvblNldHRpbmdzLmFsbG93TmF2VG9nZ2xlKSB7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJTZXR0aW5ncy5jcmVhdGVTcGFjZUZvck5hdlRvZ2dsZSA9IHRoaXMubmF2aWdhdGlvblNldHRpbmdzLmFsbG93TmF2VG9nZ2xlID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZXRMYW5ndWFnZU9wdGlvbnMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbGllcyB0aGUgbGFuZ3VhZ2UgdG8gdGhlIHRyYW5zbGF0ZSBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIGxhbmcgdGhlIGxhbmd1YWdlXHJcbiAgICovXHJcbiAgcHVibGljIGFwcGx5TGFuZ3VhZ2UobGFuZz86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKCFsYW5nKSB7XHJcbiAgICAgIGxhbmcgPSB0aGlzLm90aGVyTGFuZ1RleHQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxhbmcpO1xyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nID0gbGFuZztcclxuICAgIHRoaXMuY3VycmVudExhbmcgPSBsYW5nO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNldCB0aGUgbGFuZ3VhZ2Ugb3B0aW9ucyAqL1xyXG4gIHByaXZhdGUgc2V0TGFuZ3VhZ2VPcHRpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGVhZGVyU2V0dGluZ3MubGFuZ3VhZ2VTZXR0aW5ncykge1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubGFuZ3VhZ2VTZXR0aW5ncywgdGhpcy5oZWFkZXJTZXR0aW5ncy5sYW5ndWFnZVNldHRpbmdzKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxhbmd1YWdlU2V0dGluZ3MuZGVmYXVsdExhbmd1YWdlID0gdGhpcy5sYW5ndWFnZVNldHRpbmdzLmRlZmF1bHRMYW5ndWFnZSB8fCAnZW4nO1xyXG4gICAgdGhpcy5sYW5ndWFnZVNldHRpbmdzLmRpc3BsYXlMYW5ndWFnZU9wdGlvbnMgPSB0aGlzLmxhbmd1YWdlU2V0dGluZ3MuZGlzcGxheUxhbmd1YWdlT3B0aW9ucyB8fCBmYWxzZTtcclxuICAgIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5sYW5ndWFnZXMgPSB0aGlzLmxhbmd1YWdlU2V0dGluZ3MubGFuZ3VhZ2VzIHx8IFsnZW4nLCAnZXMnXTtcclxuICAgIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5idXR0b25UZXh0ID0gdGhpcy5sYW5ndWFnZVNldHRpbmdzLmJ1dHRvblRleHQgfHwgJ0xhbmd1YWdlcyc7XHJcblxyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmFkZExhbmdzKHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5sYW5ndWFnZXMpO1xyXG4gICAgdGhpcy5jdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZztcclxuICAgIHRoaXMuaGVhZGVyU2V0dGluZ3MubGFuZ3VhZ2VTZXR0aW5ncyA9IHRoaXMubGFuZ3VhZ2VTZXR0aW5ncztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGVmYXVsdHMoKTogdm9pZCB7XHJcbiAgICAvLyBoZWFkZXJcclxuICAgIHRoaXMuaGVhZGVyU2V0dGluZ3MgPSB7XHJcbiAgICAgIGFybWF0dXJlTmF2aWdhdGlvbjogdHJ1ZSxcclxuICAgICAgY3JlYXRlU3BhY2VGb3JOYXZUb2dnbGU6IHRydWUsXHJcbiAgICAgIGRpc3BsYXlMb2dvOiB0cnVlLFxyXG4gICAgICBsb2dvVXJsOiAnaHR0cHM6Ly9zb2Z0aGVvbmNkbnN0b3JhZ2UuYmxvYi5jb3JlLndpbmRvd3MubmV0L2ltYWdlcy9zb2Z0aGVvbi9sb2dvLnN2ZycsXHJcbiAgICAgIGxvZ29BbHRUZXh0OiAndGhlIGV4YW1wbGUgcG9ydGFsIGhlYWRlciBsb2dvJyxcclxuICAgICAgZGlzcGxheUxvZ29UZXh0OiBmYWxzZSxcclxuICAgICAgZGlzcGxheURyb3BEb3duTWVudTogZmFsc2UsXHJcbiAgICAgIGRyb3BEb3duQXJpYVRleHQ6ICd0aGUgaGVhZGVyIGRyb3AgZG93biBtZW51IGJ1dHRvbiBpY29uJyxcclxuICAgICAgZHJvcERvd25NZW51U1JUZXh0OiAndGhlIGhlYWRlciBhY2NvdW50IGJ1dHRvbiBkcm9wIGRvd24gb3B0aW9ucycsXHJcbiAgICAgIGRpc3BsYXlBdXRoSW5mbzogdHJ1ZSxcclxuICAgICAgbGFuZ3VhZ2VTZXR0aW5nczoge1xyXG4gICAgICAgIGRpc3BsYXlMYW5ndWFnZU9wdGlvbnM6IHRydWVcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuaGVhZGVyVGhlbWVTZXR0aW5ncyA9IHtcclxuICAgICAgaGVhZGVyQ29sb3I6ICcnLFxyXG4gICAgICBoZWFkZXJEcm9wU2hhZG93OiB0cnVlLFxyXG4gICAgICBhdXRob3JpemF0aW9uQnV0dG9uQ29sb3I6ICdyZ2IoMTEsIDgxLCAxNTYpJyxcclxuICAgICAgYXV0aG9yaXphdGlvbkJ1dHRvbkJhY2tncm91bmQ6ICdyZ2IoMTk5LCAyMTksIDI0MCknXHJcbiAgICB9O1xyXG4gICAgdGhpcy5oZWFkZXJBdXRoU2V0dGluZ3MgPSB7XHJcbiAgICAgIGNsaWVudElkOiAnJyxcclxuICAgICAgaXNzdWVyOiAnJyxcclxuICAgICAgc2NvcGU6ICdvcGVuaWQgcHJvZmlsZScsXHJcbiAgICAgIGxvZ0luVGV4dDogJ1NJR04gSU4nLFxyXG4gICAgICBsb2dPdXRUZXh0OiAnU0lHTiBPVVQnLFxyXG4gICAgICByZWRpcmVjdFVyaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMC8nLFxyXG4gICAgICBza2lwSXNzdWVyQ2hlY2s6IHRydWUsXHJcbiAgICAgIHBvc3RMb2dPdXRVcmw6ICdodHRwOi8vbG9jYWxob3N0OjQyMDAvJyxcclxuICAgICAgbG9naW5Vcmw6ICcnLFxyXG4gICAgICByZXR1cm5Sb3V0ZTogJycsXHJcbiAgICAgIHRpbWVvdXRGYWN0b3I6IDksXHJcbiAgICAgIG15QWNjb3VudFRleHQ6ICdNeSBBY2NvdW50JyxcclxuICAgICAgYXV0aFNldE9uU3RhcnR1cDogZmFsc2UsXHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2NvZGUnXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIG5hdmlnYXRpb25cclxuICAgIHRoaXMubmF2aWdhdGlvblNldHRpbmdzID0ge1xyXG4gICAgICBtYWluTWVudVRleHQ6ICdNQUlOIE1FTlUnLFxyXG4gICAgICBoZWFkZXJIZWlnaHQ6IDY0LFxyXG4gICAgICBtZW51QnV0dG9uU1JUZXh0OiAnTmF2aWdhdGlvbiBNZW51IEJ1dHRvbicsXHJcbiAgICAgIG1heENvbnRlbnRXaWR0aERlc2t0b3A6IDEwMCxcclxuICAgICAgbWF4Q29udGVudFdpZHRoTW9iaWxlOiAxMDBcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKiogR2V0cyB0aGUgZXhhbXBsZSBuYXZpZ2F0aW9uIG5vZGVzICovXHJcbiAgcHJpdmF0ZSBnZXRFeGFtcGxlTmF2Tm9kZXMoKTogQXJyYXk8TmF2Tm9kZT4ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICdkZW1vLm5hdl8xJyxcclxuICAgICAgICBmb250QXdlc29tZUljb246ICdmYWQgZmEtaG9tZScsXHJcbiAgICAgICAgcm91dGU6ICcvb3ZlcnZpZXcnLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ2RlbW8ubmF2XzInLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1maWxlLWFsdCcsXHJcbiAgICAgICAgcm91dGU6ICcvZG9jdW1lbnRzJyxcclxuICAgICAgICBzdWJOb2RlczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnZGVtby5uYXZfMmEnLFxyXG4gICAgICAgICAgICByb3V0ZTogJy9kb2N1bWVudHMvaW52b2ljZSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdkZW1vLm5hdl8yYicsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL2RvY3VtZW50cy9ub3RpY2UnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnZGVtby5uYXZfMmMnLFxyXG4gICAgICAgICAgICByb3V0ZTogJy90YXgnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ1BBWU1FTlRTJyxcclxuICAgICAgICBmb250QXdlc29tZUljb246ICdmYWQgZmEtZG9sbGFyLXNpZ24nLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdNYWtlIGEgUGF5bWVudCcsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL3BheW1lbnQnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnQXV0b3BheScsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL2F1dG9wYXknXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnU2NoZWR1bGVkIFBheW1lbnRzJyxcclxuICAgICAgICAgICAgcm91dGU6ICcvc2NoZWR1bGVkJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogJ1BheW1lbnQgSGlzdG9yeScsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL2hpc3RvcnknXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnTXkgUGF5bWVudCBNZXRob2RzJyxcclxuICAgICAgICAgICAgcm91dGU6ICcvcGF5bWVudC1tZXRob2RzJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICdTRVJWSUNFIFJFUVVFU1QnLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1oYW5kcy1oZWxwaW5nJyxcclxuICAgICAgICByb3V0ZTogJy9zZXJ2aWNlLXJlcXVlc3RzJyxcclxuICAgICAgICBzdWJOb2RlczogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICdQQVBFUkxFU1MgU0VUVElOR1MnLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1sZWFmLWhlYXJ0JyxcclxuICAgICAgICByb3V0ZTogJy9wYXBlcmxlc3MnLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ0ZBUXMnLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1xdWVzdGlvbicsXHJcbiAgICAgICAgcm91dGU6ICcvZmFxcycsXHJcbiAgICAgICAgc3ViTm9kZXM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0ZXh0OiAnTGFuZ3VhZ2UgSGVscCcsXHJcbiAgICAgICAgZm9udEF3ZXNvbWVJY29uOiAnZmFyIGZhLWxhbmd1YWdlJyxcclxuICAgICAgICByb3V0ZTogJy9sYW5ndWFnZS1oZWxwJyxcclxuICAgICAgICBzdWJOb2RlczogW11cclxuICAgICAgfV07XHJcbiAgfVxyXG5cclxuICAvKiogQXNzaWducyB0aGUgZGVmYXVsdCBuYXZpZ2F0aW9uIHRoZW1lICovXHJcbiAgcHJpdmF0ZSBhc3NpZ25EZWZhdWx0TmF2VGhlbWUoY29uZmlnOiBCYXNlQ29uZmlnKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZWZhdWx0TmF2VGhlbWUgPSB7XHJcbiAgICAgIGJnR3JhZGllbnRDb2xvcjE6ICcjZmZmJyxcclxuICAgICAgYmdHcmFkaWVudENvbG9yMjogJyNmZmYnLFxyXG4gICAgICBib3JkZXJSaWdodENvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICBjb250ZW50QmdDb2xvcjogJyNlY2VjZWMnLFxyXG4gICAgICBmb250Q29sb3I6ICcjMDAwJyxcclxuICAgICAgaGlnaGxpZ2h0R3JhZGllbnQxOiAncmdiKDE5OSwgMjE5LCAyNDApJyxcclxuICAgICAgaGlnaGxpZ2h0R3JhZGllbnQyOiAncmdiKDExLCA4MSwgMTU2KScsXHJcbiAgICAgIGxpc3RCb3JkZXJDb2xvcjogJyNDRkQ4REMnLFxyXG4gICAgICBzdWJIaWdobGlnaHRCZ0NvbG9yOiAncmdiYSgyNTUsMjU1LDI1NSwgLjIwKScsXHJcbiAgICAgIHN1YkhpZ2hsaWdodEJvcmRlckNvbG9yOiAnIzAwQUNDMSdcclxuICAgIH07XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMubmF2aWdhdGlvblRoZW1lLCBkZWZhdWx0TmF2VGhlbWUpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGhlYWRlciAqbmdJZj1cIiFpc0ZlZGVyYXRlZE1vZHVsZVwiPlxyXG4gIDxzb2YtYXItaGVhZGVyIFtzZXR0aW5nc109XCJoZWFkZXJTZXR0aW5nc1wiIFt0aGVtZVNldHRpbmdzXT1cImhlYWRlclRoZW1lU2V0dGluZ3NcIiBbYXV0aFNldHRpbmdzXT1cImhlYWRlckF1dGhTZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgKHNldExhbmd1YWdlJCk9XCJhcHBseUxhbmd1YWdlKClcIiBbY3VycmVudExhbmddPVwiY3VycmVudExhbmdcIj5cclxuICAgIDxuZy1jb250YWluZXIgc29mLWFyLWhlYWRlci1sZWZ0PlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLWhlYWRlci1sZWZ0XVwiPjwvbmctY29udGVudD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciBzb2YtYXItaGVhZGVyLWNlbnRlcj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1oZWFkZXItY2VudGVyXVwiPjwvbmctY29udGVudD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciBzb2YtYXItaGVhZGVyLXJpZ2h0PlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLWhlYWRlci1yaWdodF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgc29mLWhlYWRlci11c2VyLW1lbnU+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtaGVhZGVyLXVzZXItbWVudV1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L3NvZi1hci1oZWFkZXI+XHJcbjwvaGVhZGVyPlxyXG48bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLXRlbXBsYXRlLWNvbnRlbnRdXCI+IDwvbmctY29udGVudD5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRmVkZXJhdGVkTW9kdWxlXCI+XHJcbiAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPHNvZi1hci1uYXZpZ2F0aW9uICpuZ0lmPVwiIWlzRmVkZXJhdGVkTW9kdWxlXCIgW25hdmlnYXRpb25EYXRhXT1cIm5hdmlnYXRpb25Ob2Rlc1wiIFtzZXR0aW5nc109XCJuYXZpZ2F0aW9uU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICAgW2FkdmFuY2VkU2V0dGluZ3NdPVwibmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3NcIiBbdGhlbWVTZXR0aW5nc109XCJuYXZpZ2F0aW9uVGhlbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgW2xhbmd1YWdlU2V0dGluZ3NdPVwibGFuZ3VhZ2VTZXR0aW5nc1wiIFtjdXJyZW50TGFuZ109XCJjdXJyZW50TGFuZ1wiIChzZXRMYW5ndWFnZSQpPVwiYXBwbHlMYW5ndWFnZSgpXCJcclxuICAgICAgICAgICAgICAgICAgIFtsb2dPdXRUZXh0XT1cImxvZ091dFRleHRcIj5cclxuICA8bmctY29udGFpbmVyIHNvZi1hci1uYXYtY29udGVudD5cclxuICAgIDxzb2YtYXItYWxlcnQtYmFubmVyIGNsYXNzPVwic29mLWFyLWFsZXJ0LWJhbm5lci1jb250YWluZXJcIj48L3NvZi1hci1hbGVydC1iYW5uZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic29mLWFyLW5hdi1jb250YWluZXJcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0PVwic3RhcnQgc3RyZXRjaFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLW5hdi1jb250ZW50LWhlYWRlcl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzb2YtYXItbmF2LWNvbnRlbnQtY29udGFpbmVyXCIgZnhGbGV4PVwiMSAwIDEwMCVcIj5cclxuICAgICAgICA8bWFpbiBbbmdTdHlsZS5sdC1tZF09XCJ7J21heC13aWR0aCc6bmF2aWdhdGlvblNldHRpbmdzPy5tYXhDb250ZW50V2lkdGhNb2JpbGUrJyUnfVwiXHJcbiAgICAgICAgICAgICAgW25nU3R5bGUuZ3Qtc21dPVwieydtYXgtd2lkdGgnOm5hdmlnYXRpb25TZXR0aW5ncz8ubWF4Q29udGVudFdpZHRoRGVza3RvcCsnJSd9XCIgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cclxuICAgICAgICA8L21haW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleD1cImF1dG9cIiBmeExheW91dEFsaWduPVwiZW5kIGVuZFwiPlxyXG4gICAgICAgIDxzb2YtYXItZm9vdGVyIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW2Zvb3RlckNvbmZpZ109XCJ7IHNob3dQcmVDb250ZW50MTogZmFsc2UsIHNob3dQcmVDb250ZW50MjogZmFsc2UgfVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBzb2YtYXItZm9vdGVyLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItZm9vdGVyLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9zb2YtYXItZm9vdGVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgc29mLWFyLW5hdi1tb2JpbGUtZm9vdGVyPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1uYXYtbW9iaWxlLWZvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvc29mLWFyLW5hdmlnYXRpb24+XHJcbiJdfQ==
264
+ }], ctorParameters: function () { return [{ type: i1.BaseConfigService }, { type: i2.TranslateService }, { type: i3.FederatedModuleService }, { type: i4.Router }, { type: i5.OAuthService }]; } });
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvY29yZS9jb21wb25lbnRzL2FwcC10ZW1wbGF0ZS9hcHAtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9jb3JlL2NvbXBvbmVudHMvYXBwLXRlbXBsYXRlL2FwcC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBWWxELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQUtoRixpQ0FBaUM7QUFNakMsTUFBTSxPQUFPLG9CQUFvQjtJQWdDL0IsdUJBQXVCO0lBQ3ZCLElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7SUFDNUMsQ0FBQztJQUVELGlDQUFpQztJQUNqQyxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUtEOzs7OztPQUtHO0lBQ0gsWUFDbUIsYUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLHNCQUE4QyxFQUM5QyxNQUFjLEVBQ2QsWUFBMEI7UUFKMUIsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENB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b0IsMkRDdkJqQywybUZBZ0RBOzJGRHpCYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEhlYWRlckF1dGhTZXR0aW5ncyB9IGZyb20gJy4uLy4uLy4uL2hlYWRlci9tb2RlbHMvaGVhZGVyLWF1dGguc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBIZWFkZXJMYW5ndWFnZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vaGVhZGVyL21vZGVscy9oZWFkZXItbGFuZ3VhZ2Uuc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBIZWFkZXJUaGVtZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vaGVhZGVyL21vZGVscy9oZWFkZXItdGhlbWUuc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBIZWFkZXJTZXR0aW5ncyB9IGZyb20gJy4uLy4uLy4uL2hlYWRlci9tb2RlbHMvaGVhZGVyLnNldHRpbmdzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3MsIE5hdmlnYXRpb25TZXR0aW5ncywgTmF2aWdhdGlvblRoZW1lU2V0dGluZ3MsIE5hdk5vZGUgfSBmcm9tICcuLi8uLi8uLi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tYXBpJztcclxuaW1wb3J0IHsgcm91dGVUb1ByZUxvZ2luUm91dGUgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvcm91dGUtdG8tcHJlLWxvZ2luLXJvdXRlJztcclxuaW1wb3J0IHsgQmFzZUNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9iYXNlLWNvbmZpZyc7XHJcbmltcG9ydCB7IEJhc2VDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmFzZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IEZlZGVyYXRlZE1vZHVsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mZWRlcmF0ZWQtbW9kdWxlLnNlcnZpY2UnO1xyXG5cclxuLyoqIFRoZSBhcHAgdGVtcGxhdGUgY29tcG9uZW50ICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc29mLWFyLWFwcC10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcFRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgLyoqIFRoZSBjb25maWcgb2JzZXJ2YWJsZSAqL1xyXG4gIHB1YmxpYyBjb25maWckOiBPYnNlcnZhYmxlPEJhc2VDb25maWc+O1xyXG5cclxuICAvKiogVGhlIGhlYWRlciBzZXR0aW5ncyAqL1xyXG4gIHB1YmxpYyBoZWFkZXJTZXR0aW5nczogSGVhZGVyU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIFRoZSBoZWFkZXIgdGhlbWUgc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgaGVhZGVyVGhlbWVTZXR0aW5nczogSGVhZGVyVGhlbWVTZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIGhlYWRlciBhdXRoIHNldHRpbmdzICovXHJcbiAgcHVibGljIGhlYWRlckF1dGhTZXR0aW5nczogSGVhZGVyQXV0aFNldHRpbmdzID0ge30gYXMgYW55O1xyXG5cclxuICAvKiogdGhlIG5hdmlnYXRpb24gdGhlbWUgc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgbmF2aWdhdGlvblRoZW1lOiBOYXZpZ2F0aW9uVGhlbWVTZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIG5hdmlnYXRpb24gc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgbmF2aWdhdGlvblNldHRpbmdzOiBOYXZpZ2F0aW9uU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIFRoZSBuYXZpZ2F0aW9uIG5vZGVzICovXHJcbiAgcHVibGljIG5hdmlnYXRpb25Ob2RlczogQXJyYXk8TmF2Tm9kZT4gPSBbXTtcclxuXHJcbiAgLyoqIFRoZSBuYXZpZ2F0aW9uIGFkdmFuY2VkIHNldHRpbmdzICovXHJcbiAgcHVibGljIG5hdmlnYXRpb25BZHZhbmNlZFNldHRpbmdzOiBOYXZpZ2F0aW9uQWR2YW5jZWRTZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIGxhbmd1YWdlIHNldHRpbmdzICovXHJcbiAgcHVibGljIGxhbmd1YWdlU2V0dGluZ3M6IEhlYWRlckxhbmd1YWdlU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIFRoZSBjdXJyZW50IGxhbmd1YWdlICovXHJcbiAgcHVibGljIGN1cnJlbnRMYW5nOiBzdHJpbmc7XHJcblxyXG4gIC8qKiBUaGUgbG9nIG91dCB0ZXh0ICovXHJcbiAgcHVibGljIGdldCBsb2dPdXRUZXh0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJBdXRoU2V0dGluZ3MubG9nT3V0VGV4dDtcclxuICB9XHJcblxyXG4gIC8qKiBnZXRzIHRoZSBub24gdXNlZCBsYW5ndWFnZSAqL1xyXG4gIHB1YmxpYyBnZXQgb3RoZXJMYW5nVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncz8ubGFuZ3VhZ2VzPy5maW5kKHggPT4geCAhPT0gdGhpcy5jdXJyZW50TGFuZyk7XHJcbiAgfVxyXG5cclxuICAvKiogVHJ1ZSB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nIGFzIGEgZmVkZXJhdGVkIG1vZHVsZSAqL1xyXG4gIHB1YmxpYyBpc0ZlZGVyYXRlZE1vZHVsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RzIHRoZSBjb21wb25lbnRcclxuICAgKiBAcGFyYW0gY29uZmlnU2VydmljZSBUaGUgY29uZmlnIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gdHJhbnNsYXRlU2VydmljZSBUaGUgdHJhbnNsYXRlIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gZmVkZXJhdGVkTW9kdWxlU2VydmljZSBUaGUgZmVkZXJhdGVkIG1vZHVsZSBzZXJ2aWNlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IEJhc2VDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmZWRlcmF0ZWRNb2R1bGVTZXJ2aWNlOiBGZWRlcmF0ZWRNb2R1bGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgb2F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIC8qKiBMaWZlIGN5Y2xlIGhvb2sgZm9yIGNvbXBvbmVudCBpbml0aWFsaXphdGlvbiAqL1xyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNGZWRlcmF0ZWRNb2R1bGUgPSB0aGlzLmZlZGVyYXRlZE1vZHVsZVNlcnZpY2UuaXNGZWRlcmF0ZWRNb2R1bGU7XHJcbiAgICB0aGlzLmNvbmZpZyQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnJDtcclxuICAgIHRoaXMuc2V0RGVmYXVsdHMoKTtcclxuICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWckLnN1YnNjcmliZShjb25maWcgPT4ge1xyXG4gICAgICBpZiAoY29uZmlnLm9BdXRoU2V0dGluZ3MucHJlc2VydmVSZXF1ZXN0ZWRSb3V0ZSAmJiB0aGlzLm9hdXRoU2VydmljZS5oYXNWYWxpZEFjY2Vzc1Rva2VuKCkpIHtcclxuICAgICAgICByb3V0ZVRvUHJlTG9naW5Sb3V0ZSh0aGlzLnJvdXRlcik7XHJcbiAgICAgIH1cclxuICAgICAgLy8gb2JqZWN0IGFzc2lnbiBpcyB1c2VkIGhlcmUgc28gdGhlIGhlYWRlciBkb2Vzbid0IGhhdmUgdG8gcmUgcmVuZGVyIHdpdGggdGhlIG5ldyBvYmplY3QgcmVmZXJlbmNlXHJcbiAgICAgIC8vIGhlYWRlclxyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuaGVhZGVyU2V0dGluZ3MsIGNvbmZpZz8uaGVhZGVyPy5zZXR0aW5ncyk7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5oZWFkZXJUaGVtZVNldHRpbmdzLCBjb25maWc/LmhlYWRlcj8udGhlbWUpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuaGVhZGVyQXV0aFNldHRpbmdzLCBjb25maWc/Lm9BdXRoU2V0dGluZ3MpO1xyXG5cclxuICAgICAgLy8gbmF2aWdhdGlvblxyXG4gICAgICB0aGlzLm5hdmlnYXRpb25Ob2RlcyA9IGNvbmZpZz8ubmF2aWdhdGlvbj8ubm9kZXMgfHwgdGhpcy5nZXRFeGFtcGxlTmF2Tm9kZXMoKTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm5hdmlnYXRpb25TZXR0aW5ncywgY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncyk7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5uYXZpZ2F0aW9uQWR2YW5jZWRTZXR0aW5ncywgY29uZmlnPy5uYXZpZ2F0aW9uPy5hZHZhbmNlZCk7XHJcbiAgICAgIHRoaXMuYXNzaWduRGVmYXVsdE5hdlRoZW1lKGNvbmZpZyk7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5uYXZpZ2F0aW9uVGhlbWUsIGNvbmZpZz8ubmF2aWdhdGlvbj8udGhlbWUpO1xyXG5cclxuICAgICAgLy8gc2V0IGRlcGVuZGVudCB2YWx1ZVxyXG4gICAgICB0aGlzLmhlYWRlclNldHRpbmdzLmFybWF0dXJlTmF2aWdhdGlvbiA9ICF0aGlzLm5hdmlnYXRpb25TZXR0aW5ncy5oaWRlTmF2aWdhdGlvbjtcclxuICAgICAgXHJcbiAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25TZXR0aW5ncy5tZW51U3R5bGUgPT09ICdwcm9ncmVzcycgfHwgdGhpcy5uYXZpZ2F0aW9uU2V0dGluZ3MuaGlkZU5hdmlnYXRpb24pIHtcclxuICAgICAgICB0aGlzLmhlYWRlclNldHRpbmdzLmNyZWF0ZVNwYWNlRm9yTmF2VG9nZ2xlID0gdGhpcy5uYXZpZ2F0aW9uU2V0dGluZ3MuYWxsb3dOYXZUb2dnbGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gU2V0IGJvdGggbmF2aWdhdGlvbiB0b2dnbGUgc2V0dGluZ3MgdG8gdHJ1ZSBpZiBlaXRoZXIgaXMgdHJ1ZVxyXG4gICAgICBpZiAodGhpcy5oZWFkZXJTZXR0aW5ncy5jcmVhdGVTcGFjZUZvck5hdlRvZ2dsZSB8fCB0aGlzLm5hdmlnYXRpb25TZXR0aW5ncy5hbGxvd05hdlRvZ2dsZSkge1xyXG4gICAgICAgIHRoaXMuaGVhZGVyU2V0dGluZ3MuY3JlYXRlU3BhY2VGb3JOYXZUb2dnbGUgPSB0aGlzLm5hdmlnYXRpb25TZXR0aW5ncy5hbGxvd05hdlRvZ2dsZSA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2V0TGFuZ3VhZ2VPcHRpb25zKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGxpZXMgdGhlIGxhbmd1YWdlIHRvIHRoZSB0cmFuc2xhdGUgc2VydmljZVxyXG4gICAqIEBwYXJhbSBsYW5nIHRoZSBsYW5ndWFnZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBhcHBseUxhbmd1YWdlKGxhbmc/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICghbGFuZykge1xyXG4gICAgICBsYW5nID0gdGhpcy5vdGhlckxhbmdUZXh0O1xyXG4gICAgfVxyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsYW5nKTtcclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyA9IGxhbmc7XHJcbiAgICB0aGlzLmN1cnJlbnRMYW5nID0gbGFuZztcclxuICB9XHJcblxyXG4gIC8qKiBTZXQgdGhlIGxhbmd1YWdlIG9wdGlvbnMgKi9cclxuICBwcml2YXRlIHNldExhbmd1YWdlT3B0aW9ucygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhlYWRlclNldHRpbmdzLmxhbmd1YWdlU2V0dGluZ3MpIHtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmxhbmd1YWdlU2V0dGluZ3MsIHRoaXMuaGVhZGVyU2V0dGluZ3MubGFuZ3VhZ2VTZXR0aW5ncyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sYW5ndWFnZVNldHRpbmdzLmRlZmF1bHRMYW5ndWFnZSA9IHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5kZWZhdWx0TGFuZ3VhZ2UgfHwgJ2VuJztcclxuICAgIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5kaXNwbGF5TGFuZ3VhZ2VPcHRpb25zID0gdGhpcy5sYW5ndWFnZVNldHRpbmdzLmRpc3BsYXlMYW5ndWFnZU9wdGlvbnMgfHwgZmFsc2U7XHJcbiAgICB0aGlzLmxhbmd1YWdlU2V0dGluZ3MubGFuZ3VhZ2VzID0gdGhpcy5sYW5ndWFnZVNldHRpbmdzLmxhbmd1YWdlcyB8fCBbJ2VuJywgJ2VzJ107XHJcbiAgICB0aGlzLmxhbmd1YWdlU2V0dGluZ3MuYnV0dG9uVGV4dCA9IHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5idXR0b25UZXh0IHx8ICdMYW5ndWFnZXMnO1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5hZGRMYW5ncyh0aGlzLmxhbmd1YWdlU2V0dGluZ3MubGFuZ3VhZ2VzKTtcclxuICAgIHRoaXMuY3VycmVudExhbmcgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmc7XHJcbiAgICB0aGlzLmhlYWRlclNldHRpbmdzLmxhbmd1YWdlU2V0dGluZ3MgPSB0aGlzLmxhbmd1YWdlU2V0dGluZ3M7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERlZmF1bHRzKCk6IHZvaWQge1xyXG4gICAgLy8gaGVhZGVyXHJcbiAgICB0aGlzLmhlYWRlclNldHRpbmdzID0ge1xyXG4gICAgICBhcm1hdHVyZU5hdmlnYXRpb246IHRydWUsXHJcbiAgICAgIGNyZWF0ZVNwYWNlRm9yTmF2VG9nZ2xlOiB0cnVlLFxyXG4gICAgICBkaXNwbGF5TG9nbzogdHJ1ZSxcclxuICAgICAgbG9nb1VybDogJ2h0dHBzOi8vc29mdGhlb25jZG5zdG9yYWdlLmJsb2IuY29yZS53aW5kb3dzLm5ldC9pbWFnZXMvc29mdGhlb24vbG9nby5zdmcnLFxyXG4gICAgICBsb2dvQWx0VGV4dDogJ3RoZSBleGFtcGxlIHBvcnRhbCBoZWFkZXIgbG9nbycsXHJcbiAgICAgIGRpc3BsYXlMb2dvVGV4dDogZmFsc2UsXHJcbiAgICAgIGRpc3BsYXlEcm9wRG93bk1lbnU6IGZhbHNlLFxyXG4gICAgICBkcm9wRG93bkFyaWFUZXh0OiAndGhlIGhlYWRlciBkcm9wIGRvd24gbWVudSBidXR0b24gaWNvbicsXHJcbiAgICAgIGRyb3BEb3duTWVudVNSVGV4dDogJ3RoZSBoZWFkZXIgYWNjb3VudCBidXR0b24gZHJvcCBkb3duIG9wdGlvbnMnLFxyXG4gICAgICBkaXNwbGF5QXV0aEluZm86IHRydWUsXHJcbiAgICAgIGxhbmd1YWdlU2V0dGluZ3M6IHtcclxuICAgICAgICBkaXNwbGF5TGFuZ3VhZ2VPcHRpb25zOiB0cnVlXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aGlzLmhlYWRlclRoZW1lU2V0dGluZ3MgPSB7XHJcbiAgICAgIGhlYWRlckNvbG9yOiAnJyxcclxuICAgICAgaGVhZGVyRHJvcFNoYWRvdzogdHJ1ZSxcclxuICAgICAgYXV0aG9yaXphdGlvbkJ1dHRvbkNvbG9yOiAncmdiKDExLCA4MSwgMTU2KScsXHJcbiAgICAgIGF1dGhvcml6YXRpb25CdXR0b25CYWNrZ3JvdW5kOiAncmdiKDE5OSwgMjE5LCAyNDApJ1xyXG4gICAgfTtcclxuICAgIHRoaXMuaGVhZGVyQXV0aFNldHRpbmdzID0ge1xyXG4gICAgICBjbGllbnRJZDogJycsXHJcbiAgICAgIGlzc3VlcjogJycsXHJcbiAgICAgIHNjb3BlOiAnb3BlbmlkIHByb2ZpbGUnLFxyXG4gICAgICBsb2dJblRleHQ6ICdTSUdOIElOJyxcclxuICAgICAgbG9nT3V0VGV4dDogJ1NJR04gT1VUJyxcclxuICAgICAgcmVkaXJlY3RVcmk6ICdodHRwOi8vbG9jYWxob3N0OjQyMDAvJyxcclxuICAgICAgc2tpcElzc3VlckNoZWNrOiB0cnVlLFxyXG4gICAgICBwb3N0TG9nT3V0VXJsOiAnaHR0cDovL2xvY2FsaG9zdDo0MjAwLycsXHJcbiAgICAgIGxvZ2luVXJsOiAnJyxcclxuICAgICAgcmV0dXJuUm91dGU6ICcnLFxyXG4gICAgICB0aW1lb3V0RmFjdG9yOiA5LFxyXG4gICAgICBteUFjY291bnRUZXh0OiAnTXkgQWNjb3VudCcsXHJcbiAgICAgIGF1dGhTZXRPblN0YXJ0dXA6IGZhbHNlLFxyXG4gICAgICByZXNwb25zZVR5cGU6ICdjb2RlJ1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBuYXZpZ2F0aW9uXHJcbiAgICB0aGlzLm5hdmlnYXRpb25TZXR0aW5ncyA9IHtcclxuICAgICAgbWFpbk1lbnVUZXh0OiAnTUFJTiBNRU5VJyxcclxuICAgICAgaGVhZGVySGVpZ2h0OiA2NCxcclxuICAgICAgbWVudUJ1dHRvblNSVGV4dDogJ05hdmlnYXRpb24gTWVudSBCdXR0b24nLFxyXG4gICAgICBtYXhDb250ZW50V2lkdGhEZXNrdG9wOiAxMDAsXHJcbiAgICAgIG1heENvbnRlbnRXaWR0aE1vYmlsZTogMTAwXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqIEdldHMgdGhlIGV4YW1wbGUgbmF2aWdhdGlvbiBub2RlcyAqL1xyXG4gIHByaXZhdGUgZ2V0RXhhbXBsZU5hdk5vZGVzKCk6IEFycmF5PE5hdk5vZGU+IHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0ZXh0OiAnZGVtby5uYXZfMScsXHJcbiAgICAgICAgZm9udEF3ZXNvbWVJY29uOiAnZmFkIGZhLWhvbWUnLFxyXG4gICAgICAgIHJvdXRlOiAnL292ZXJ2aWV3JyxcclxuICAgICAgICBzdWJOb2RlczogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICdkZW1vLm5hdl8yJyxcclxuICAgICAgICBmb250QXdlc29tZUljb246ICdmYWQgZmEtZmlsZS1hbHQnLFxyXG4gICAgICAgIHJvdXRlOiAnL2RvY3VtZW50cycsXHJcbiAgICAgICAgc3ViTm9kZXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogJ2RlbW8ubmF2XzJhJyxcclxuICAgICAgICAgICAgcm91dGU6ICcvZG9jdW1lbnRzL2ludm9pY2UnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnZGVtby5uYXZfMmInLFxyXG4gICAgICAgICAgICByb3V0ZTogJy9kb2N1bWVudHMvbm90aWNlJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogJ2RlbW8ubmF2XzJjJyxcclxuICAgICAgICAgICAgcm91dGU6ICcvdGF4J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICdQQVlNRU5UUycsXHJcbiAgICAgICAgZm9udEF3ZXNvbWVJY29uOiAnZmFkIGZhLWRvbGxhci1zaWduJyxcclxuICAgICAgICBzdWJOb2RlczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnTWFrZSBhIFBheW1lbnQnLFxyXG4gICAgICAgICAgICByb3V0ZTogJy9wYXltZW50J1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogJ0F1dG9wYXknLFxyXG4gICAgICAgICAgICByb3V0ZTogJy9hdXRvcGF5J1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogJ1NjaGVkdWxlZCBQYXltZW50cycsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL3NjaGVkdWxlZCdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdQYXltZW50IEhpc3RvcnknLFxyXG4gICAgICAgICAgICByb3V0ZTogJy9oaXN0b3J5J1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogJ015IFBheW1lbnQgTWV0aG9kcycsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL3BheW1lbnQtbWV0aG9kcydcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0ZXh0OiAnU0VSVklDRSBSRVFVRVNUJyxcclxuICAgICAgICBmb250QXdlc29tZUljb246ICdmYWQgZmEtaGFuZHMtaGVscGluZycsXHJcbiAgICAgICAgcm91dGU6ICcvc2VydmljZS1yZXF1ZXN0cycsXHJcbiAgICAgICAgc3ViTm9kZXM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0ZXh0OiAnUEFQRVJMRVNTIFNFVFRJTkdTJyxcclxuICAgICAgICBmb250QXdlc29tZUljb246ICdmYWQgZmEtbGVhZi1oZWFydCcsXHJcbiAgICAgICAgcm91dGU6ICcvcGFwZXJsZXNzJyxcclxuICAgICAgICBzdWJOb2RlczogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICdGQVFzJyxcclxuICAgICAgICBmb250QXdlc29tZUljb246ICdmYWQgZmEtcXVlc3Rpb24nLFxyXG4gICAgICAgIHJvdXRlOiAnL2ZhcXMnLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ0xhbmd1YWdlIEhlbHAnLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhciBmYS1sYW5ndWFnZScsXHJcbiAgICAgICAgcm91dGU6ICcvbGFuZ3VhZ2UtaGVscCcsXHJcbiAgICAgICAgc3ViTm9kZXM6IFtdXHJcbiAgICAgIH1dO1xyXG4gIH1cclxuXHJcbiAgLyoqIEFzc2lnbnMgdGhlIGRlZmF1bHQgbmF2aWdhdGlvbiB0aGVtZSAqL1xyXG4gIHByaXZhdGUgYXNzaWduRGVmYXVsdE5hdlRoZW1lKGNvbmZpZzogQmFzZUNvbmZpZyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGVmYXVsdE5hdlRoZW1lID0ge1xyXG4gICAgICBiZ0dyYWRpZW50Q29sb3IxOiAnI2ZmZicsXHJcbiAgICAgIGJnR3JhZGllbnRDb2xvcjI6ICcjZmZmJyxcclxuICAgICAgYm9yZGVyUmlnaHRDb2xvcjogJ3RyYW5zcGFyZW50JyxcclxuICAgICAgY29udGVudEJnQ29sb3I6ICcjZWNlY2VjJyxcclxuICAgICAgZm9udENvbG9yOiAnIzAwMCcsXHJcbiAgICAgIGhpZ2hsaWdodEdyYWRpZW50MTogJ3JnYigxOTksIDIxOSwgMjQwKScsXHJcbiAgICAgIGhpZ2hsaWdodEdyYWRpZW50MjogJ3JnYigxMSwgODEsIDE1NiknLFxyXG4gICAgICBsaXN0Qm9yZGVyQ29sb3I6ICcjQ0ZEOERDJyxcclxuICAgICAgc3ViSGlnaGxpZ2h0QmdDb2xvcjogJ3JnYmEoMjU1LDI1NSwyNTUsIC4yMCknLFxyXG4gICAgICBzdWJIaWdobGlnaHRCb3JkZXJDb2xvcjogJyMwMEFDQzEnXHJcbiAgICB9O1xyXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLm5hdmlnYXRpb25UaGVtZSwgZGVmYXVsdE5hdlRoZW1lKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxoZWFkZXIgKm5nSWY9XCIhaXNGZWRlcmF0ZWRNb2R1bGVcIj5cclxuICA8c29mLWFyLWhlYWRlciBbc2V0dGluZ3NdPVwiaGVhZGVyU2V0dGluZ3NcIiBbdGhlbWVTZXR0aW5nc109XCJoZWFkZXJUaGVtZVNldHRpbmdzXCIgW2F1dGhTZXR0aW5nc109XCJoZWFkZXJBdXRoU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgIChzZXRMYW5ndWFnZSQpPVwiYXBwbHlMYW5ndWFnZSgpXCIgW2N1cnJlbnRMYW5nXT1cImN1cnJlbnRMYW5nXCI+XHJcbiAgICA8bmctY29udGFpbmVyIHNvZi1hci1oZWFkZXItbGVmdD5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1oZWFkZXItbGVmdF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgc29mLWFyLWhlYWRlci1jZW50ZXI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItaGVhZGVyLWNlbnRlcl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgc29mLWFyLWhlYWRlci1yaWdodD5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1oZWFkZXItcmlnaHRdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyIHNvZi1oZWFkZXItdXNlci1tZW51PlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWhlYWRlci11c2VyLW1lbnVdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9zb2YtYXItaGVhZGVyPlxyXG48L2hlYWRlcj5cclxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci10ZW1wbGF0ZS1jb250ZW50XVwiPiA8L25nLWNvbnRlbnQ+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ZlZGVyYXRlZE1vZHVsZVwiPlxyXG4gIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cclxuPC9uZy1jb250YWluZXI+XHJcbjxzb2YtYXItbmF2aWdhdGlvbiAqbmdJZj1cIiFpc0ZlZGVyYXRlZE1vZHVsZVwiIFtuYXZpZ2F0aW9uRGF0YV09XCJuYXZpZ2F0aW9uTm9kZXNcIiBbc2V0dGluZ3NdPVwibmF2aWdhdGlvblNldHRpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgIFthZHZhbmNlZFNldHRpbmdzXT1cIm5hdmlnYXRpb25BZHZhbmNlZFNldHRpbmdzXCIgW3RoZW1lU2V0dGluZ3NdPVwibmF2aWdhdGlvblRoZW1lXCJcclxuICAgICAgICAgICAgICAgICAgIFtsYW5ndWFnZVNldHRpbmdzXT1cImxhbmd1YWdlU2V0dGluZ3NcIiBbY3VycmVudExhbmddPVwiY3VycmVudExhbmdcIiAoc2V0TGFuZ3VhZ2UkKT1cImFwcGx5TGFuZ3VhZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICBbbG9nT3V0VGV4dF09XCJsb2dPdXRUZXh0XCI+XHJcbiAgPG5nLWNvbnRhaW5lciBzb2YtYXItbmF2LWNvbnRlbnQ+XHJcbiAgICA8c29mLWFyLWFsZXJ0LWJhbm5lciBjbGFzcz1cInNvZi1hci1hbGVydC1iYW5uZXItY29udGFpbmVyXCI+PC9zb2YtYXItYWxlcnQtYmFubmVyPlxyXG4gICAgPGRpdiBjbGFzcz1cInNvZi1hci1uYXYtY29udGFpbmVyXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dD1cInN0YXJ0IHN0cmV0Y2hcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1uYXYtY29udGVudC1oZWFkZXJdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic29mLWFyLW5hdi1jb250ZW50LWNvbnRhaW5lclwiIGZ4RmxleD1cIjEgMCAxMDAlXCI+XHJcbiAgICAgICAgPG1haW4gW25nU3R5bGUubHQtbWRdPVwieydtYXgtd2lkdGgnOm5hdmlnYXRpb25TZXR0aW5ncz8ubWF4Q29udGVudFdpZHRoTW9iaWxlKyclJ31cIlxyXG4gICAgICAgICAgICAgIFtuZ1N0eWxlLmd0LXNtXT1cInsnbWF4LXdpZHRoJzpuYXZpZ2F0aW9uU2V0dGluZ3M/Lm1heENvbnRlbnRXaWR0aERlc2t0b3ArJyUnfVwiIGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcbiAgICAgICAgPC9tYWluPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXg9XCJhdXRvXCIgZnhMYXlvdXRBbGlnbj1cImVuZCBlbmRcIj5cclxuICAgICAgICA8c29mLWFyLWZvb3RlciBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtmb290ZXJDb25maWddPVwieyBzaG93UHJlQ29udGVudDE6IGZhbHNlLCBzaG93UHJlQ29udGVudDI6IGZhbHNlIH1cIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgc29mLWFyLWZvb3Rlci1jb250ZW50PlxyXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLWZvb3Rlci1jb250ZW50XVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvc29mLWFyLWZvb3Rlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyIHNvZi1hci1uYXYtbW9iaWxlLWZvb3Rlcj5cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItbmF2LW1vYmlsZS1mb290ZXJdXCI+PC9uZy1jb250ZW50PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L3NvZi1hci1uYXZpZ2F0aW9uPlxyXG4iXX0=
@@ -15,11 +15,11 @@ import { TranslateModule, TranslateService } from '@ngx-translate/core';
15
15
  import * as i3 from '@angular/flex-layout/flex';
16
16
  import * as i4 from '@angular/flex-layout/extended';
17
17
  import { BehaviorSubject, of, Subscription, lastValueFrom, throwError, ReplaySubject } from 'rxjs';
18
+ import * as i1$1 from 'angular-oauth2-oidc';
19
+ import { AuthConfig } from 'angular-oauth2-oidc';
18
20
  import { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';
19
21
  import { map, catchError, filter, switchMap, take, share, first } from 'rxjs/operators';
20
22
  import * as i1$2 from '@angular/cdk/layout';
21
- import * as i1$1 from 'angular-oauth2-oidc';
22
- import { AuthConfig } from 'angular-oauth2-oidc';
23
23
  import { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';
24
24
  import * as i9 from '@angular/material/sidenav';
25
25
  import { MatSidenavModule } from '@angular/material/sidenav';
@@ -538,6 +538,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
538
538
  }] }];
539
539
  } });
540
540
 
541
+ // Injection tokens
542
+ /** The session configs */
543
+ const SESSION_CONFIG = new InjectionToken('SessionConfig');
544
+ /** The window interface */
545
+ const WINDOW = new InjectionToken('Window');
546
+ /** The user entity service configs */
547
+ const USER_ENTITY_SERVICE_CONFIG = new InjectionToken('UserEntityServiceConfig');
548
+ /** The pre sign in route storage key */
549
+ const preSignInRouteStorageKey = 'preSignInRoute';
550
+ /** The language storage key */
551
+ const languageStorageKey = 'language';
552
+ /** The federated module configuration storage key */
553
+ const federatedModuleConfigStorageKey = 'sofAr-federatedModule-config';
554
+ /** The federated module id of the application, this should be set when the application is allowed to run as a federated module */
555
+ const FEDERATED_MODULE_ID = new InjectionToken('FederatedModuleId');
556
+
557
+ /**
558
+ * Routes to the pre login in route
559
+ * @param router The router
560
+ */
561
+ const routeToPreLoginRoute = (router) => {
562
+ const preservedRoute = window.sessionStorage.getItem(preSignInRouteStorageKey);
563
+ if (preservedRoute) {
564
+ router.navigateByUrl(preservedRoute);
565
+ window.sessionStorage.removeItem(preSignInRouteStorageKey);
566
+ }
567
+ };
568
+
541
569
  /** The base config service */
542
570
  class BaseConfigService {
543
571
  /** Gets the configurations */
@@ -567,22 +595,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
567
595
  }]
568
596
  }], ctorParameters: function () { return []; } });
569
597
 
570
- // Injection tokens
571
- /** The session configs */
572
- const SESSION_CONFIG = new InjectionToken('SessionConfig');
573
- /** The window interface */
574
- const WINDOW = new InjectionToken('Window');
575
- /** The user entity service configs */
576
- const USER_ENTITY_SERVICE_CONFIG = new InjectionToken('UserEntityServiceConfig');
577
- /** The pre sign in route storage key */
578
- const preSignInRouteStorageKey = 'preSignInRoute';
579
- /** The language storage key */
580
- const languageStorageKey = 'language';
581
- /** The federated module configuration storage key */
582
- const federatedModuleConfigStorageKey = 'sofAr-federatedModule-config';
583
- /** The federated module id of the application, this should be set when the application is allowed to run as a federated module */
584
- const FEDERATED_MODULE_ID = new InjectionToken('FederatedModuleId');
585
-
586
598
  /** The federated module service */
587
599
  class FederatedModuleService {
588
600
  /** The federated module configuration */
@@ -1959,10 +1971,12 @@ class AppTemplateComponent {
1959
1971
  * @param translateService The translate service
1960
1972
  * @param federatedModuleService The federated module service
1961
1973
  */
1962
- constructor(configService, translateService, federatedModuleService) {
1974
+ constructor(configService, translateService, federatedModuleService, router, oauthService) {
1963
1975
  this.configService = configService;
1964
1976
  this.translateService = translateService;
1965
1977
  this.federatedModuleService = federatedModuleService;
1978
+ this.router = router;
1979
+ this.oauthService = oauthService;
1966
1980
  /** The header settings */
1967
1981
  this.headerSettings = {};
1968
1982
  /** The header theme settings */
@@ -1989,6 +2003,9 @@ class AppTemplateComponent {
1989
2003
  this.setDefaults();
1990
2004
  this.configService.config$.subscribe(config => {
1991
2005
  var _a, _b, _c, _d, _e, _f;
2006
+ if (config.oAuthSettings.preserveRequestedRoute && this.oauthService.hasValidAccessToken()) {
2007
+ routeToPreLoginRoute(this.router);
2008
+ }
1992
2009
  // object assign is used here so the header doesn't have to re render with the new object reference
1993
2010
  // header
1994
2011
  Object.assign(this.headerSettings, (_a = config === null || config === void 0 ? void 0 : config.header) === null || _a === void 0 ? void 0 : _a.settings);
@@ -2182,12 +2199,12 @@ class AppTemplateComponent {
2182
2199
  Object.assign(this.navigationTheme, defaultNavTheme);
2183
2200
  }
2184
2201
  }
2185
- AppTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AppTemplateComponent, deps: [{ token: BaseConfigService }, { token: i2.TranslateService }, { token: FederatedModuleService }], target: i0.ɵɵFactoryTarget.Component });
2202
+ AppTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AppTemplateComponent, deps: [{ token: BaseConfigService }, { token: i2.TranslateService }, { token: FederatedModuleService }, { token: i1$3.Router }, { token: i1$1.OAuthService }], target: i0.ɵɵFactoryTarget.Component });
2186
2203
  AppTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: AppTemplateComponent, selector: "sof-ar-app-template", ngImport: i0, template: "<header *ngIf=\"!isFederatedModule\">\r\n <sof-ar-header [settings]=\"headerSettings\" [themeSettings]=\"headerThemeSettings\" [authSettings]=\"headerAuthSettings\"\r\n (setLanguage$)=\"applyLanguage()\" [currentLang]=\"currentLang\">\r\n <ng-container sof-ar-header-left>\r\n <ng-content select=\"[sof-ar-header-left]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-center>\r\n <ng-content select=\"[sof-ar-header-center]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-right>\r\n <ng-content select=\"[sof-ar-header-right]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-header-user-menu>\r\n <ng-content select=\"[sof-header-user-menu]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-header>\r\n</header>\r\n<ng-content select=\"[sof-ar-template-content]\"> </ng-content>\r\n<ng-container *ngIf=\"isFederatedModule\">\r\n <router-outlet></router-outlet>\r\n</ng-container>\r\n<sof-ar-navigation *ngIf=\"!isFederatedModule\" [navigationData]=\"navigationNodes\" [settings]=\"navigationSettings\"\r\n [advancedSettings]=\"navigationAdvancedSettings\" [themeSettings]=\"navigationTheme\"\r\n [languageSettings]=\"languageSettings\" [currentLang]=\"currentLang\" (setLanguage$)=\"applyLanguage()\"\r\n [logOutText]=\"logOutText\">\r\n <ng-container sof-ar-nav-content>\r\n <sof-ar-alert-banner class=\"sof-ar-alert-banner-container\"></sof-ar-alert-banner>\r\n <div class=\"sof-ar-nav-container\" fxLayout=\"column\" fxLayout=\"start stretch\" style=\"height: 100%;\">\r\n <ng-content select=\"[sof-ar-nav-content-header]\"></ng-content>\r\n <div class=\"sof-ar-nav-content-container\" fxFlex=\"1 0 100%\">\r\n <main [ngStyle.lt-md]=\"{'max-width':navigationSettings?.maxContentWidthMobile+'%'}\"\r\n [ngStyle.gt-sm]=\"{'max-width':navigationSettings?.maxContentWidthDesktop+'%'}\" class=\"main-content\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <sof-ar-footer style=\"width: 100%;\" [footerConfig]=\"{ showPreContent1: false, showPreContent2: false }\">\r\n <ng-container sof-ar-footer-content>\r\n <ng-content select=\"[sof-ar-footer-content]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-footer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container sof-ar-nav-mobile-footer>\r\n <ng-content select=\"[sof-ar-nav-mobile-footer]\"></ng-content>\r\n </ng-container>\r\n</sof-ar-navigation>\r\n", styles: [".nav-content-container{display:flex;flex-direction:column;height:100%}.sof-ar-nav-container{overflow:overlay}.sof-ar-nav-content-container{width:100%}.main-content{margin:auto}\n"], dependencies: [{ kind: "component", type: ArmatureNavigationComponent, selector: "sof-ar-navigation", inputs: ["navigationData", "settings", "advancedSettings", "themeSettings", "languageSettings", "currentLang", "logOutText"], outputs: ["setLanguage$"] }, { kind: "component", type: ArmatureHeaderComponent, selector: "sof-ar-header", inputs: ["settings", "themeSettings", "authSettings", "currentLang"], outputs: ["setLanguage$", "isLoggedInEE"] }, { kind: "component", type: ArmatureFooterComponent, selector: "sof-ar-footer", inputs: ["footerConfig"] }, { kind: "component", type: AlertBannerComponent, selector: "sof-ar-alert-banner", inputs: ["context"] }, { kind: "directive", type: i1$3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i4.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }] });
2187
2204
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AppTemplateComponent, decorators: [{
2188
2205
  type: Component,
2189
2206
  args: [{ selector: 'sof-ar-app-template', template: "<header *ngIf=\"!isFederatedModule\">\r\n <sof-ar-header [settings]=\"headerSettings\" [themeSettings]=\"headerThemeSettings\" [authSettings]=\"headerAuthSettings\"\r\n (setLanguage$)=\"applyLanguage()\" [currentLang]=\"currentLang\">\r\n <ng-container sof-ar-header-left>\r\n <ng-content select=\"[sof-ar-header-left]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-center>\r\n <ng-content select=\"[sof-ar-header-center]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-right>\r\n <ng-content select=\"[sof-ar-header-right]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-header-user-menu>\r\n <ng-content select=\"[sof-header-user-menu]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-header>\r\n</header>\r\n<ng-content select=\"[sof-ar-template-content]\"> </ng-content>\r\n<ng-container *ngIf=\"isFederatedModule\">\r\n <router-outlet></router-outlet>\r\n</ng-container>\r\n<sof-ar-navigation *ngIf=\"!isFederatedModule\" [navigationData]=\"navigationNodes\" [settings]=\"navigationSettings\"\r\n [advancedSettings]=\"navigationAdvancedSettings\" [themeSettings]=\"navigationTheme\"\r\n [languageSettings]=\"languageSettings\" [currentLang]=\"currentLang\" (setLanguage$)=\"applyLanguage()\"\r\n [logOutText]=\"logOutText\">\r\n <ng-container sof-ar-nav-content>\r\n <sof-ar-alert-banner class=\"sof-ar-alert-banner-container\"></sof-ar-alert-banner>\r\n <div class=\"sof-ar-nav-container\" fxLayout=\"column\" fxLayout=\"start stretch\" style=\"height: 100%;\">\r\n <ng-content select=\"[sof-ar-nav-content-header]\"></ng-content>\r\n <div class=\"sof-ar-nav-content-container\" fxFlex=\"1 0 100%\">\r\n <main [ngStyle.lt-md]=\"{'max-width':navigationSettings?.maxContentWidthMobile+'%'}\"\r\n [ngStyle.gt-sm]=\"{'max-width':navigationSettings?.maxContentWidthDesktop+'%'}\" class=\"main-content\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <sof-ar-footer style=\"width: 100%;\" [footerConfig]=\"{ showPreContent1: false, showPreContent2: false }\">\r\n <ng-container sof-ar-footer-content>\r\n <ng-content select=\"[sof-ar-footer-content]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-footer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container sof-ar-nav-mobile-footer>\r\n <ng-content select=\"[sof-ar-nav-mobile-footer]\"></ng-content>\r\n </ng-container>\r\n</sof-ar-navigation>\r\n", styles: [".nav-content-container{display:flex;flex-direction:column;height:100%}.sof-ar-nav-container{overflow:overlay}.sof-ar-nav-content-container{width:100%}.main-content{margin:auto}\n"] }]
2190
- }], ctorParameters: function () { return [{ type: BaseConfigService }, { type: i2.TranslateService }, { type: FederatedModuleService }]; } });
2207
+ }], ctorParameters: function () { return [{ type: BaseConfigService }, { type: i2.TranslateService }, { type: FederatedModuleService }, { type: i1$3.Router }, { type: i1$1.OAuthService }]; } });
2191
2208
 
2192
2209
  /** The start up abstract class */
2193
2210
  class AbstractStartupService {
@@ -5458,18 +5475,6 @@ var ApplicationUserModel;
5458
5475
  };
5459
5476
  })(ApplicationUserModel || (ApplicationUserModel = {}));
5460
5477
 
5461
- /**
5462
- * Routes to the pre login in route
5463
- * @param router The router
5464
- */
5465
- const routeToPreLoginRoute = (router) => {
5466
- const preservedRoute = window.sessionStorage.getItem(preSignInRouteStorageKey);
5467
- if (preservedRoute) {
5468
- router.navigateByUrl(preservedRoute);
5469
- window.sessionStorage.removeItem(preSignInRouteStorageKey);
5470
- }
5471
- };
5472
-
5473
5478
  const BASE_PATH = new InjectionToken('basePath');
5474
5479
  const COLLECTION_FORMATS = {
5475
5480
  'csv': ',',