@volosoft/abp.ng.theme.lepton-x 2.0.0 → 2.0.1

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.
Files changed (33) hide show
  1. package/assets/css/abp-bundle.css +10 -10
  2. package/assets/css/abp-bundle.rtl.css +10 -10
  3. package/esm2020/account/account/account-layout.component.mjs +3 -3
  4. package/esm2020/account/account/account-layout.module.mjs +4 -4
  5. package/esm2020/account/account/components/auth-wrapper/auth-wrapper.component.mjs +3 -3
  6. package/esm2020/account/account/components/tenant-box/tenant-box.component.mjs +3 -3
  7. package/esm2020/layouts/side-menu/layout/side-menu-application-layout.component.mjs +3 -3
  8. package/esm2020/layouts/side-menu/layout/side-menu-layout.module.mjs +4 -4
  9. package/esm2020/layouts/top-menu/layout/top-menu-application-layout.component.mjs +3 -3
  10. package/esm2020/layouts/top-menu/layout/top-menu-layout.module.mjs +4 -4
  11. package/esm2020/lib/components/abp-validation-error/abp-validation-error.component.mjs +3 -3
  12. package/esm2020/lib/components/abp-validation-error/abp-validation-error.module.mjs +4 -4
  13. package/esm2020/lib/components/http-error/http-error.component.mjs +3 -3
  14. package/esm2020/lib/components/http-error/http-error.module.mjs +4 -4
  15. package/esm2020/lib/lepton-x.module.mjs +4 -4
  16. package/esm2020/lib/services/abp-auth.service.mjs +3 -3
  17. package/esm2020/lib/services/abp-settings.service.mjs +6 -6
  18. package/esm2020/lib/services/abp-toolbar.service.mjs +3 -3
  19. package/esm2020/lib/services/abp-translate.service.mjs +3 -3
  20. package/esm2020/lib/services/page-render-strategy.service.mjs +3 -3
  21. package/fesm2015/volosoft-abp.ng.theme.lepton-x-account.mjs +13 -13
  22. package/fesm2015/volosoft-abp.ng.theme.lepton-x-account.mjs.map +1 -1
  23. package/fesm2015/volosoft-abp.ng.theme.lepton-x-layouts.mjs +14 -14
  24. package/fesm2015/volosoft-abp.ng.theme.lepton-x-layouts.mjs.map +1 -1
  25. package/fesm2015/volosoft-abp.ng.theme.lepton-x.mjs +38 -39
  26. package/fesm2015/volosoft-abp.ng.theme.lepton-x.mjs.map +1 -1
  27. package/fesm2020/volosoft-abp.ng.theme.lepton-x-account.mjs +13 -13
  28. package/fesm2020/volosoft-abp.ng.theme.lepton-x-account.mjs.map +1 -1
  29. package/fesm2020/volosoft-abp.ng.theme.lepton-x-layouts.mjs +14 -14
  30. package/fesm2020/volosoft-abp.ng.theme.lepton-x-layouts.mjs.map +1 -1
  31. package/fesm2020/volosoft-abp.ng.theme.lepton-x.mjs +35 -35
  32. package/fesm2020/volosoft-abp.ng.theme.lepton-x.mjs.map +1 -1
  33. package/package.json +3 -3
@@ -97,34 +97,34 @@
97
97
  border-radius: var(--lpx-radius);
98
98
  background: var(--lpx-card-bg);
99
99
  box-shadow: var(--lpx-shadow);
100
- padding: 1.5rem !important;
100
+ padding: 1.5rem;
101
101
  }
102
102
 
103
103
  .nav-tabs {
104
104
  background: var(--lpx-card-bg);
105
105
  box-shadow: var(--lpx-shadow);
106
- padding: 0 1.5rem !important;
106
+ padding: 0 1.5rem;
107
107
  border-radius: var(--lpx-radius);
108
- margin-bottom: 1rem !important;
108
+ margin-bottom: 1rem;
109
109
  }
110
110
 
111
111
  .card .nav-tabs {
112
112
  background: none;
113
113
  box-shadow: none;
114
- padding: 0 !important;
114
+ padding: 0;
115
115
  border-radius: none;
116
116
  }
117
117
  .card .tab-content {
118
118
  background: none;
119
119
  box-shadow: none;
120
- padding-left: 0 !important;
121
- padding-right: 0 !important;
120
+ padding-left: 0;
121
+ padding-right: 0;
122
122
  }
123
123
 
124
124
  .tab-content .card {
125
125
  background: none;
126
126
  box-shadow: none;
127
- padding: 0 !important;
127
+ padding: 0;
128
128
  }
129
129
 
130
130
  .modal-body .tab-content {
@@ -137,12 +137,12 @@
137
137
  .tab-content .nav-tabs {
138
138
  background: none;
139
139
  box-shadow: none;
140
- padding-left: 0 !important;
141
- padding-right: 0 !important;
140
+ padding-left: 0;
141
+ padding-right: 0;
142
142
  }
143
143
 
144
144
  hr {
145
- opacity: 0.1 !important;
145
+ opacity: 0.1;
146
146
  }
147
147
 
148
148
  .abp-block-area {
@@ -97,34 +97,34 @@
97
97
  border-radius: var(--lpx-radius);
98
98
  background: var(--lpx-card-bg);
99
99
  box-shadow: var(--lpx-shadow);
100
- padding: 1.5rem !important;
100
+ padding: 1.5rem;
101
101
  }
102
102
 
103
103
  .nav-tabs {
104
104
  background: var(--lpx-card-bg);
105
105
  box-shadow: var(--lpx-shadow);
106
- padding: 0 1.5rem !important;
106
+ padding: 0 1.5rem;
107
107
  border-radius: var(--lpx-radius);
108
- margin-bottom: 1rem !important;
108
+ margin-bottom: 1rem;
109
109
  }
110
110
 
111
111
  .card .nav-tabs {
112
112
  background: none;
113
113
  box-shadow: none;
114
- padding: 0 !important;
114
+ padding: 0;
115
115
  border-radius: none;
116
116
  }
117
117
  .card .tab-content {
118
118
  background: none;
119
119
  box-shadow: none;
120
- padding-right: 0 !important;
121
- padding-left: 0 !important;
120
+ padding-right: 0;
121
+ padding-left: 0;
122
122
  }
123
123
 
124
124
  .tab-content .card {
125
125
  background: none;
126
126
  box-shadow: none;
127
- padding: 0 !important;
127
+ padding: 0;
128
128
  }
129
129
 
130
130
  .modal-body .tab-content {
@@ -137,12 +137,12 @@
137
137
  .tab-content .nav-tabs {
138
138
  background: none;
139
139
  box-shadow: none;
140
- padding-right: 0 !important;
141
- padding-left: 0 !important;
140
+ padding-right: 0;
141
+ padding-left: 0;
142
142
  }
143
143
 
144
144
  hr {
145
- opacity: 0.1 !important;
145
+ opacity: 0.1;
146
146
  }
147
147
 
148
148
  .abp-block-area {
@@ -10,9 +10,9 @@ export class AccountLayoutComponent {
10
10
  this.authWrapperKey = 'Account.AuthWrapper';
11
11
  }
12
12
  }
13
- AccountLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AccountLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
- AccountLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: AccountLayoutComponent, selector: "abp-account-layout", ngImport: i0, template: "<lpx-auth-layout>\r\n <abp-page-alert-container></abp-page-alert-container>\r\n <abp-auth-wrapper\r\n *abpReplaceableTemplate=\"{\r\n componentKey: authWrapperKey\r\n }\">\r\n <router-outlet></router-outlet>\r\n </abp-auth-wrapper>\r\n</lpx-auth-layout>\r\n", dependencies: [{ kind: "component", type: i1.AuthLayoutComponent, selector: "lpx-auth-layout" }, { kind: "component", type: i2.PageAlertContainerComponent, selector: "abp-page-alert-container" }, { kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "component", type: i5.AuthWrapperComponent, selector: "abp-auth-wrapper" }] });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AccountLayoutComponent, decorators: [{
13
+ AccountLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AccountLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ AccountLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AccountLayoutComponent, selector: "abp-account-layout", ngImport: i0, template: "<lpx-auth-layout>\r\n <abp-page-alert-container></abp-page-alert-container>\r\n <abp-auth-wrapper\r\n *abpReplaceableTemplate=\"{\r\n componentKey: authWrapperKey\r\n }\">\r\n <router-outlet></router-outlet>\r\n </abp-auth-wrapper>\r\n</lpx-auth-layout>\r\n", dependencies: [{ kind: "component", type: i1.AuthLayoutComponent, selector: "lpx-auth-layout" }, { kind: "component", type: i2.PageAlertContainerComponent, selector: "abp-page-alert-container" }, { kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "component", type: i5.AuthWrapperComponent, selector: "abp-auth-wrapper" }] });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AccountLayoutComponent, decorators: [{
16
16
  type: Component,
17
17
  args: [{ selector: 'abp-account-layout', template: "<lpx-auth-layout>\r\n <abp-page-alert-container></abp-page-alert-container>\r\n <abp-auth-wrapper\r\n *abpReplaceableTemplate=\"{\r\n componentKey: authWrapperKey\r\n }\">\r\n <router-outlet></router-outlet>\r\n </abp-auth-wrapper>\r\n</lpx-auth-layout>\r\n" }]
18
18
  }] });
@@ -25,8 +25,8 @@ export class AccountLayoutModule {
25
25
  };
26
26
  }
27
27
  }
28
- AccountLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AccountLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
29
- AccountLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: AccountLayoutModule, declarations: [AuthWrapperComponent,
28
+ AccountLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AccountLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
29
+ AccountLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: AccountLayoutModule, declarations: [AuthWrapperComponent,
30
30
  TenantBoxComponent,
31
31
  AccountLayoutComponent], imports: [LpxAuthLayoutModule,
32
32
  LpxContextMenuModule,
@@ -34,13 +34,13 @@ AccountLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
34
34
  CoreModule,
35
35
  ThemeSharedModule,
36
36
  NgbDropdownModule] });
37
- AccountLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AccountLayoutModule, imports: [LpxAuthLayoutModule,
37
+ AccountLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AccountLayoutModule, imports: [LpxAuthLayoutModule,
38
38
  LpxContextMenuModule,
39
39
  PageAlertContainerModule,
40
40
  CoreModule,
41
41
  ThemeSharedModule,
42
42
  NgbDropdownModule] });
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AccountLayoutModule, decorators: [{
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AccountLayoutModule, decorators: [{
44
44
  type: NgModule,
45
45
  args: [{
46
46
  imports: [
@@ -11,9 +11,9 @@ export class AuthWrapperComponent {
11
11
  this.service = service;
12
12
  }
13
13
  }
14
- AuthWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthWrapperComponent, deps: [{ token: i1.AuthWrapperService }], target: i0.ɵɵFactoryTarget.Component });
15
- AuthWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: AuthWrapperComponent, selector: "abp-auth-wrapper", providers: [AuthWrapperService], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"d-flex justify-content-between\">\r\n <h2>\r\n <strong>{{ service.pageLabel | abpLocalization }}</strong>\r\n </h2>\r\n <div class=\"dropdown\" ngbDropdown>\r\n <a\r\n *ngIf=\"service.defaultLanguage$ | async as defaultLang\"\r\n class=\"pointer\"\r\n role=\"button\"\r\n id=\"dropdownMenuLink\"\r\n ngbDropdownToggle\r\n [class.dropdown-toggle]=\"false\"\r\n >\r\n <i class=\"bi bi-globe me-1\"></i>\r\n <span class=\"ml-2\">{{ defaultLang.displayName }}</span>\r\n </a>\r\n <div\r\n ngbDropdownMenu\r\n class=\"dropdown-menu dropdown-menu-right\"\r\n *ngIf=\"(service.dropdownLanguages$ | async).length > 0\"\r\n >\r\n <a\r\n *ngFor=\"let lang of service.dropdownLanguages$ | async\"\r\n class=\"dropdown-item pointer\"\r\n (click)=\"service.onChangeLang(lang.cultureName)\"\r\n >\r\n {{ lang?.displayName }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container\r\n *ngIf=\"\r\n (service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\r\n \"\r\n >\r\n <abp-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></abp-tenant-box>\r\n </ng-container>\r\n <div\r\n *ngIf=\"service.enableLocalLogin$ | async; else disableLocalLoginTemplate\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n <ng-template #disableLocalLoginTemplate>\r\n <div class=\"alert alert-warning\">\r\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\r\n {{\r\n 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient'\r\n | abpLocalization\r\n }}\r\n </div>\r\n </ng-template>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "directive", type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "component", type: i5.TenantBoxComponent, selector: "abp-tenant-box" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthWrapperComponent, decorators: [{
14
+ AuthWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AuthWrapperComponent, deps: [{ token: i1.AuthWrapperService }], target: i0.ɵɵFactoryTarget.Component });
15
+ AuthWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AuthWrapperComponent, selector: "abp-auth-wrapper", providers: [AuthWrapperService], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"d-flex justify-content-between\">\r\n <h2>\r\n <strong>{{ service.pageLabel | abpLocalization }}</strong>\r\n </h2>\r\n <div class=\"dropdown\" ngbDropdown>\r\n <a\r\n *ngIf=\"service.defaultLanguage$ | async as defaultLang\"\r\n class=\"pointer\"\r\n role=\"button\"\r\n id=\"dropdownMenuLink\"\r\n ngbDropdownToggle\r\n [class.dropdown-toggle]=\"false\"\r\n >\r\n <i class=\"bi bi-globe me-1\"></i>\r\n <span class=\"ml-2\">{{ defaultLang.displayName }}</span>\r\n </a>\r\n <div\r\n ngbDropdownMenu\r\n class=\"dropdown-menu dropdown-menu-right\"\r\n *ngIf=\"(service.dropdownLanguages$ | async).length > 0\"\r\n >\r\n <a\r\n *ngFor=\"let lang of service.dropdownLanguages$ | async\"\r\n class=\"dropdown-item pointer\"\r\n (click)=\"service.onChangeLang(lang.cultureName)\"\r\n >\r\n {{ lang?.displayName }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container\r\n *ngIf=\"\r\n (service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\r\n \"\r\n >\r\n <abp-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></abp-tenant-box>\r\n </ng-container>\r\n <div\r\n *ngIf=\"service.enableLocalLogin$ | async; else disableLocalLoginTemplate\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n <ng-template #disableLocalLoginTemplate>\r\n <div class=\"alert alert-warning\">\r\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\r\n {{\r\n 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient'\r\n | abpLocalization\r\n }}\r\n </div>\r\n </ng-template>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "directive", type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "component", type: i5.TenantBoxComponent, selector: "abp-tenant-box" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AuthWrapperComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: 'abp-auth-wrapper', providers: [AuthWrapperService], template: "<div class=\"card\">\r\n <div class=\"d-flex justify-content-between\">\r\n <h2>\r\n <strong>{{ service.pageLabel | abpLocalization }}</strong>\r\n </h2>\r\n <div class=\"dropdown\" ngbDropdown>\r\n <a\r\n *ngIf=\"service.defaultLanguage$ | async as defaultLang\"\r\n class=\"pointer\"\r\n role=\"button\"\r\n id=\"dropdownMenuLink\"\r\n ngbDropdownToggle\r\n [class.dropdown-toggle]=\"false\"\r\n >\r\n <i class=\"bi bi-globe me-1\"></i>\r\n <span class=\"ml-2\">{{ defaultLang.displayName }}</span>\r\n </a>\r\n <div\r\n ngbDropdownMenu\r\n class=\"dropdown-menu dropdown-menu-right\"\r\n *ngIf=\"(service.dropdownLanguages$ | async).length > 0\"\r\n >\r\n <a\r\n *ngFor=\"let lang of service.dropdownLanguages$ | async\"\r\n class=\"dropdown-item pointer\"\r\n (click)=\"service.onChangeLang(lang.cultureName)\"\r\n >\r\n {{ lang?.displayName }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container\r\n *ngIf=\"\r\n (service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\r\n \"\r\n >\r\n <abp-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></abp-tenant-box>\r\n </ng-container>\r\n <div\r\n *ngIf=\"service.enableLocalLogin$ | async; else disableLocalLoginTemplate\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n <ng-template #disableLocalLoginTemplate>\r\n <div class=\"alert alert-warning\">\r\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\r\n {{\r\n 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient'\r\n | abpLocalization\r\n }}\r\n </div>\r\n </ng-template>\r\n</div>\r\n" }]
19
19
  }], ctorParameters: function () { return [{ type: i1.AuthWrapperService }]; } });
@@ -11,9 +11,9 @@ export class TenantBoxComponent {
11
11
  this.service = service;
12
12
  }
13
13
  }
14
- TenantBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TenantBoxComponent, deps: [{ token: i1.TenantBoxService }], target: i0.ɵɵFactoryTarget.Component });
15
- TenantBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: TenantBoxComponent, selector: "abp-tenant-box", providers: [TenantBoxService], ngImport: i0, template: "<ng-container *ngIf=\"(service.currentTenant$ | async) || {} as currentTenant\">\r\n <div class=\"card-header bg-light mb-3\">\r\n <div class=\"tenant-switch-box\">\r\n <div class=\"row\">\r\n <div class=\"col pr-1 pb-2\">\r\n <h6 class=\"m0\">\r\n {{ 'AbpUiMultiTenancy::Tenant' | abpLocalization }}\r\n </h6>\r\n <i>{{\r\n currentTenant.name ||\r\n ('AbpUiMultiTenancy::NotSelected' | abpLocalization)\r\n }}</i>\r\n </div>\r\n\r\n <div class=\"col-auto pl-1\">\r\n <a\r\n id=\"abp-tenant-switch-link\"\r\n class=\"btn btn-sm btn-outline-primary float-end pointer\"\r\n (click)=\"service.onSwitch()\"\r\n href=\"javascript:void(0)\"\r\n >{{ 'AbpUiMultiTenancy::Switch' | abpLocalization }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <abp-modal\r\n [(visible)]=\"service.isModalVisible\"\r\n [busy]=\"service.modalBusy\"\r\n size=\"md\"\r\n >\r\n <ng-template #abpHeader>\r\n <h5>Switch Tenant</h5>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <form (ngSubmit)=\"service.save()\">\r\n <div class=\"mt-2\">\r\n <div class=\"form-group\">\r\n <label for=\"name\">{{\r\n 'AbpUiMultiTenancy::Name' | abpLocalization\r\n }}</label>\r\n <input\r\n [(ngModel)]=\"service.name\"\r\n type=\"text\"\r\n id=\"name\"\r\n name=\"tenant\"\r\n class=\"form-control\"\r\n autofocus\r\n />\r\n </div>\r\n <p>{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}</p>\r\n </div>\r\n </form>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n {{ 'AbpAccount::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n type=\"abp-button\"\r\n iconClass=\"fa fa-check\"\r\n (click)=\"service.save()\"\r\n [disabled]=\"currentTenant?.name === service.name\"\r\n >\r\n {{ 'AbpAccount::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n </abp-modal>\r\n</ng-container>\r\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "component", type: i5.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i5.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i5.ModalCloseDirective, selector: "[abpClose]" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }] });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TenantBoxComponent, decorators: [{
14
+ TenantBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TenantBoxComponent, deps: [{ token: i1.TenantBoxService }], target: i0.ɵɵFactoryTarget.Component });
15
+ TenantBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TenantBoxComponent, selector: "abp-tenant-box", providers: [TenantBoxService], ngImport: i0, template: "<ng-container *ngIf=\"(service.currentTenant$ | async) || {} as currentTenant\">\r\n <div class=\"card-header bg-light mb-3\">\r\n <div class=\"tenant-switch-box\">\r\n <div class=\"row\">\r\n <div class=\"col pr-1 pb-2\">\r\n <h6 class=\"m0\">\r\n {{ 'AbpUiMultiTenancy::Tenant' | abpLocalization }}\r\n </h6>\r\n <i>{{\r\n currentTenant.name ||\r\n ('AbpUiMultiTenancy::NotSelected' | abpLocalization)\r\n }}</i>\r\n </div>\r\n\r\n <div class=\"col-auto pl-1\">\r\n <a\r\n id=\"abp-tenant-switch-link\"\r\n class=\"btn btn-sm btn-outline-primary float-end pointer\"\r\n (click)=\"service.onSwitch()\"\r\n href=\"javascript:void(0)\"\r\n >{{ 'AbpUiMultiTenancy::Switch' | abpLocalization }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <abp-modal\r\n [(visible)]=\"service.isModalVisible\"\r\n [busy]=\"service.modalBusy\"\r\n size=\"md\"\r\n >\r\n <ng-template #abpHeader>\r\n <h5>Switch Tenant</h5>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <form (ngSubmit)=\"service.save()\">\r\n <div class=\"mt-2\">\r\n <div class=\"form-group\">\r\n <label for=\"name\">{{\r\n 'AbpUiMultiTenancy::Name' | abpLocalization\r\n }}</label>\r\n <input\r\n [(ngModel)]=\"service.name\"\r\n type=\"text\"\r\n id=\"name\"\r\n name=\"tenant\"\r\n class=\"form-control\"\r\n autofocus\r\n />\r\n </div>\r\n <p>{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}</p>\r\n </div>\r\n </form>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n {{ 'AbpAccount::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n type=\"abp-button\"\r\n iconClass=\"fa fa-check\"\r\n (click)=\"service.save()\"\r\n [disabled]=\"currentTenant?.name === service.name\"\r\n >\r\n {{ 'AbpAccount::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n </abp-modal>\r\n</ng-container>\r\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "component", type: i5.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i5.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i5.ModalCloseDirective, selector: "[abpClose]" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }] });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TenantBoxComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: 'abp-tenant-box', providers: [TenantBoxService], template: "<ng-container *ngIf=\"(service.currentTenant$ | async) || {} as currentTenant\">\r\n <div class=\"card-header bg-light mb-3\">\r\n <div class=\"tenant-switch-box\">\r\n <div class=\"row\">\r\n <div class=\"col pr-1 pb-2\">\r\n <h6 class=\"m0\">\r\n {{ 'AbpUiMultiTenancy::Tenant' | abpLocalization }}\r\n </h6>\r\n <i>{{\r\n currentTenant.name ||\r\n ('AbpUiMultiTenancy::NotSelected' | abpLocalization)\r\n }}</i>\r\n </div>\r\n\r\n <div class=\"col-auto pl-1\">\r\n <a\r\n id=\"abp-tenant-switch-link\"\r\n class=\"btn btn-sm btn-outline-primary float-end pointer\"\r\n (click)=\"service.onSwitch()\"\r\n href=\"javascript:void(0)\"\r\n >{{ 'AbpUiMultiTenancy::Switch' | abpLocalization }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <abp-modal\r\n [(visible)]=\"service.isModalVisible\"\r\n [busy]=\"service.modalBusy\"\r\n size=\"md\"\r\n >\r\n <ng-template #abpHeader>\r\n <h5>Switch Tenant</h5>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <form (ngSubmit)=\"service.save()\">\r\n <div class=\"mt-2\">\r\n <div class=\"form-group\">\r\n <label for=\"name\">{{\r\n 'AbpUiMultiTenancy::Name' | abpLocalization\r\n }}</label>\r\n <input\r\n [(ngModel)]=\"service.name\"\r\n type=\"text\"\r\n id=\"name\"\r\n name=\"tenant\"\r\n class=\"form-control\"\r\n autofocus\r\n />\r\n </div>\r\n <p>{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}</p>\r\n </div>\r\n </form>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n {{ 'AbpAccount::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n type=\"abp-button\"\r\n iconClass=\"fa fa-check\"\r\n (click)=\"service.save()\"\r\n [disabled]=\"currentTenant?.name === service.name\"\r\n >\r\n {{ 'AbpAccount::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n </abp-modal>\r\n</ng-container>\r\n" }]
19
19
  }], ctorParameters: function () { return [{ type: i1.TenantBoxService }]; } });
@@ -20,9 +20,9 @@ export class SideMenuApplicationLayoutComponent {
20
20
  this.currentUserImageKey = "Theme.CurrentUserImageComponent" /* eThemeLeptonXComponents.CurrentUserImage */;
21
21
  }
22
22
  }
23
- SideMenuApplicationLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SideMenuApplicationLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
- SideMenuApplicationLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: SideMenuApplicationLayoutComponent, selector: "abp-application-layout", ngImport: i0, template: "<lpx-layout>\r\n <abp-page-alert-container\r\n *abpReplaceableTemplate=\"{ componentKey: pageAlertContainerKey }\"\r\n ></abp-page-alert-container>\r\n\r\n <ng-template lpx-navbar-panel>\r\n <lpx-navbar\r\n *abpReplaceableTemplate=\"{\r\n componentKey: navbarKey\r\n }\"\r\n >\r\n <ng-template lpx-navbar-routes let-items>\r\n <lpx-navbar-routes\r\n *abpReplaceableTemplate=\"{\r\n componentKey: routesKey,\r\n inputs: {\r\n navbarItems: items\r\n }\r\n }\"\r\n [navbarItems]=\"items\"\r\n >\r\n </lpx-navbar-routes>\r\n </ng-template>\r\n </lpx-navbar>\r\n </ng-template>\r\n <router-outlet></router-outlet>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"breadcrumbKey\">\r\n <ng-template lpx-breadcrumb-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: breadcrumbKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"toolbarKey\">\r\n <ng-template lpx-toolbar-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: toolbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"logoKey\">\r\n <ng-template lpx-logo-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: logoKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"navItemsKey\">\r\n <ng-template lpx-navitem-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: navItemsKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"footerKey\">\r\n <ng-template lpx-footer-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: footerKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"currentUserImageKey\">\r\n <ng-template lpx-current-user-image-panel>\r\n <ng-container\r\n *abpReplaceableTemplate=\"{ componentKey: currentUserImageKey }\"\r\n >\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"mobileNavbarKey\">\r\n <ng-template lpx-mobile-navbar-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: mobileNavbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"settingsPanelKey\">\r\n <ng-template lpx-settings-panel>\r\n <ng-container\r\n *abpReplaceableTemplate=\"{\r\n componentKey: settingsPanelKey\r\n }\"\r\n ></ng-container>\r\n </ng-template>\r\n </ng-container>\r\n</lpx-layout>\r\n", dependencies: [{ kind: "directive", type: i1.IfReplaceableTemplateExistsDirective, selector: "[abpIfReplaceableTemplateExists]", inputs: ["abpIfReplaceableTemplateExists"] }, { kind: "component", type: i1.PageAlertContainerComponent, selector: "abp-page-alert-container" }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i3.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "component", type: i4.SideMenuLayoutComponent, selector: "lpx-layout" }, { kind: "component", type: i5.NavbarComponent, selector: "lpx-navbar" }, { kind: "component", type: i5.NavbarRoutesComponent, selector: "lpx-navbar-routes", inputs: ["navbarItems", "routerItem"], outputs: ["routeClick"] }, { kind: "directive", type: i5.NavbarRoutesDirective, selector: "[lpx-navbar-routes],[lpxNavbarRoutes]", exportAs: ["lpxNavbarRoutes"] }, { kind: "directive", type: i5.BreadcrumbPanelDirective, selector: "ng-template[lpx-breadcrumb-panel]" }, { kind: "directive", type: i5.NavbarPanelDirective, selector: "ng-template[lpx-navbar-panel]" }, { kind: "directive", type: i5.FooterPanelDirective, selector: "ng-template[lpx-footer-panel]" }, { kind: "directive", type: i5.MobileNavbarPanelDirective, selector: "ng-template[lpx-mobile-navbar-panel]" }, { kind: "directive", type: i5.ToolbarPanelDirective, selector: "ng-template[lpx-toolbar-panel]" }, { kind: "directive", type: i5.SettingsPanelDirective, selector: "ng-template[lpx-settings-panel]" }, { kind: "directive", type: i5.NavitemPanelDirective, selector: "ng-template[lpx-navitem-panel]" }, { kind: "directive", type: i5.LogoPanelDirective, selector: "ng-template[lpx-logo-panel]" }, { kind: "directive", type: i5.CurrentUserImagePanelDirective, selector: "ng-template[lpx-current-user-image-panel]" }], encapsulation: i0.ViewEncapsulation.None });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SideMenuApplicationLayoutComponent, decorators: [{
23
+ SideMenuApplicationLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SideMenuApplicationLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
+ SideMenuApplicationLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SideMenuApplicationLayoutComponent, selector: "abp-application-layout", ngImport: i0, template: "<lpx-layout>\r\n <abp-page-alert-container\r\n *abpReplaceableTemplate=\"{ componentKey: pageAlertContainerKey }\"\r\n ></abp-page-alert-container>\r\n\r\n <ng-template lpx-navbar-panel>\r\n <lpx-navbar\r\n *abpReplaceableTemplate=\"{\r\n componentKey: navbarKey\r\n }\"\r\n >\r\n <ng-template lpx-navbar-routes let-items>\r\n <lpx-navbar-routes\r\n *abpReplaceableTemplate=\"{\r\n componentKey: routesKey,\r\n inputs: {\r\n navbarItems: items\r\n }\r\n }\"\r\n [navbarItems]=\"items\"\r\n >\r\n </lpx-navbar-routes>\r\n </ng-template>\r\n </lpx-navbar>\r\n </ng-template>\r\n <router-outlet></router-outlet>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"breadcrumbKey\">\r\n <ng-template lpx-breadcrumb-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: breadcrumbKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"toolbarKey\">\r\n <ng-template lpx-toolbar-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: toolbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"logoKey\">\r\n <ng-template lpx-logo-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: logoKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"navItemsKey\">\r\n <ng-template lpx-navitem-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: navItemsKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"footerKey\">\r\n <ng-template lpx-footer-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: footerKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"currentUserImageKey\">\r\n <ng-template lpx-current-user-image-panel>\r\n <ng-container\r\n *abpReplaceableTemplate=\"{ componentKey: currentUserImageKey }\"\r\n >\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"mobileNavbarKey\">\r\n <ng-template lpx-mobile-navbar-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: mobileNavbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"settingsPanelKey\">\r\n <ng-template lpx-settings-panel>\r\n <ng-container\r\n *abpReplaceableTemplate=\"{\r\n componentKey: settingsPanelKey\r\n }\"\r\n ></ng-container>\r\n </ng-template>\r\n </ng-container>\r\n</lpx-layout>\r\n", dependencies: [{ kind: "directive", type: i1.IfReplaceableTemplateExistsDirective, selector: "[abpIfReplaceableTemplateExists]", inputs: ["abpIfReplaceableTemplateExists"] }, { kind: "component", type: i1.PageAlertContainerComponent, selector: "abp-page-alert-container" }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i3.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "component", type: i4.SideMenuLayoutComponent, selector: "lpx-layout" }, { kind: "component", type: i5.NavbarComponent, selector: "lpx-navbar" }, { kind: "component", type: i5.NavbarRoutesComponent, selector: "lpx-navbar-routes", inputs: ["navbarItems", "routerItem"], outputs: ["routeClick"] }, { kind: "directive", type: i5.NavbarRoutesDirective, selector: "[lpx-navbar-routes],[lpxNavbarRoutes]", exportAs: ["lpxNavbarRoutes"] }, { kind: "directive", type: i5.BreadcrumbPanelDirective, selector: "ng-template[lpx-breadcrumb-panel]" }, { kind: "directive", type: i5.NavbarPanelDirective, selector: "ng-template[lpx-navbar-panel]" }, { kind: "directive", type: i5.FooterPanelDirective, selector: "ng-template[lpx-footer-panel]" }, { kind: "directive", type: i5.MobileNavbarPanelDirective, selector: "ng-template[lpx-mobile-navbar-panel]" }, { kind: "directive", type: i5.ToolbarPanelDirective, selector: "ng-template[lpx-toolbar-panel]" }, { kind: "directive", type: i5.SettingsPanelDirective, selector: "ng-template[lpx-settings-panel]" }, { kind: "directive", type: i5.NavitemPanelDirective, selector: "ng-template[lpx-navitem-panel]" }, { kind: "directive", type: i5.LogoPanelDirective, selector: "ng-template[lpx-logo-panel]" }, { kind: "directive", type: i5.CurrentUserImagePanelDirective, selector: "ng-template[lpx-current-user-image-panel]" }], encapsulation: i0.ViewEncapsulation.None });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SideMenuApplicationLayoutComponent, decorators: [{
26
26
  type: Component,
27
27
  args: [{ selector: 'abp-application-layout', encapsulation: ViewEncapsulation.None, template: "<lpx-layout>\r\n <abp-page-alert-container\r\n *abpReplaceableTemplate=\"{ componentKey: pageAlertContainerKey }\"\r\n ></abp-page-alert-container>\r\n\r\n <ng-template lpx-navbar-panel>\r\n <lpx-navbar\r\n *abpReplaceableTemplate=\"{\r\n componentKey: navbarKey\r\n }\"\r\n >\r\n <ng-template lpx-navbar-routes let-items>\r\n <lpx-navbar-routes\r\n *abpReplaceableTemplate=\"{\r\n componentKey: routesKey,\r\n inputs: {\r\n navbarItems: items\r\n }\r\n }\"\r\n [navbarItems]=\"items\"\r\n >\r\n </lpx-navbar-routes>\r\n </ng-template>\r\n </lpx-navbar>\r\n </ng-template>\r\n <router-outlet></router-outlet>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"breadcrumbKey\">\r\n <ng-template lpx-breadcrumb-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: breadcrumbKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"toolbarKey\">\r\n <ng-template lpx-toolbar-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: toolbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"logoKey\">\r\n <ng-template lpx-logo-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: logoKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"navItemsKey\">\r\n <ng-template lpx-navitem-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: navItemsKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"footerKey\">\r\n <ng-template lpx-footer-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: footerKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"currentUserImageKey\">\r\n <ng-template lpx-current-user-image-panel>\r\n <ng-container\r\n *abpReplaceableTemplate=\"{ componentKey: currentUserImageKey }\"\r\n >\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"mobileNavbarKey\">\r\n <ng-template lpx-mobile-navbar-panel>\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: mobileNavbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *abpIfReplaceableTemplateExists=\"settingsPanelKey\">\r\n <ng-template lpx-settings-panel>\r\n <ng-container\r\n *abpReplaceableTemplate=\"{\r\n componentKey: settingsPanelKey\r\n }\"\r\n ></ng-container>\r\n </ng-template>\r\n </ng-container>\r\n</lpx-layout>\r\n" }]
28
28
  }] });
@@ -29,22 +29,22 @@ export class SideMenuLayoutModule {
29
29
  };
30
30
  }
31
31
  }
32
- SideMenuLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SideMenuLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
33
- SideMenuLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: SideMenuLayoutModule, declarations: [SideMenuApplicationLayoutComponent], imports: [LeptonXAbpCoreModule,
32
+ SideMenuLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SideMenuLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
33
+ SideMenuLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: SideMenuLayoutModule, declarations: [SideMenuApplicationLayoutComponent], imports: [LeptonXAbpCoreModule,
34
34
  CommonModule,
35
35
  CoreModule,
36
36
  LpxSideMenuLayoutModule,
37
37
  LpxBreadcrumbModule,
38
38
  PanelsModule,
39
39
  LpxFooterModule], exports: [SideMenuApplicationLayoutComponent] });
40
- SideMenuLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SideMenuLayoutModule, imports: [LeptonXAbpCoreModule,
40
+ SideMenuLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SideMenuLayoutModule, imports: [LeptonXAbpCoreModule,
41
41
  CommonModule,
42
42
  CoreModule,
43
43
  LpxSideMenuLayoutModule,
44
44
  LpxBreadcrumbModule,
45
45
  PanelsModule,
46
46
  LpxFooterModule] });
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SideMenuLayoutModule, decorators: [{
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SideMenuLayoutModule, decorators: [{
48
48
  type: NgModule,
49
49
  args: [{
50
50
  declarations: [SideMenuApplicationLayoutComponent],
@@ -18,9 +18,9 @@ export class TopMenuApplicationLayoutComponent {
18
18
  this.settingsKey = "Theme.SettingsComponent" /* eThemeLeptonXComponents.Settings */;
19
19
  }
20
20
  }
21
- TopMenuApplicationLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TopMenuApplicationLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
- TopMenuApplicationLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: TopMenuApplicationLayoutComponent, selector: "abp-top-menu-application-layout", ngImport: i0, template: "<lpx-layout>\r\n <abp-page-alert-container\r\n *abpReplaceableTemplate=\"{ componentKey: pageAlertContainerKey }\"\r\n ></abp-page-alert-container>\r\n\r\n <router-outlet></router-outlet>\r\n\r\n <ng-template\r\n lpx-breadcrumb-panel\r\n *abpIfReplaceableTemplateExists=\"breadcrumbKey\"\r\n >\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: breadcrumbKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template lpx-navbar-panel *abpIfReplaceableTemplateExists=\"navbarKey\">\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: navbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template\r\n lpx-mobile-navbar-panel\r\n *abpIfReplaceableTemplateExists=\"mobileNavbarKey\"\r\n >\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: mobileNavbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template lpx-footer-panel *abpIfReplaceableTemplateExists=\"footerKey\">\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: footerKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template lpx-toolbar-panel *abpIfReplaceableTemplateExists=\"toolbarKey\">\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: toolbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template\r\n lpx-top-navbar-panel\r\n *abpIfReplaceableTemplateExists=\"topNavbarKey\"\r\n >\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: topNavbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template lpx-settings-panel *abpIfReplaceableTemplateExists=\"settingsKey\">\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: settingsKey }\">\r\n </ng-container>\r\n </ng-template>\r\n</lpx-layout>\r\n", dependencies: [{ kind: "component", type: i1.TopMenuLayoutComponent, selector: "lpx-layout" }, { kind: "directive", type: i2.BreadcrumbPanelDirective, selector: "ng-template[lpx-breadcrumb-panel]" }, { kind: "directive", type: i2.NavbarPanelDirective, selector: "ng-template[lpx-navbar-panel]" }, { kind: "directive", type: i2.FooterPanelDirective, selector: "ng-template[lpx-footer-panel]" }, { kind: "directive", type: i2.MobileNavbarPanelDirective, selector: "ng-template[lpx-mobile-navbar-panel]" }, { kind: "directive", type: i2.ToolbarPanelDirective, selector: "ng-template[lpx-toolbar-panel]" }, { kind: "directive", type: i2.TopNavbarPanelDirective, selector: "ng-template[lpx-top-navbar-panel]" }, { kind: "directive", type: i2.SettingsPanelDirective, selector: "ng-template[lpx-settings-panel]" }, { kind: "directive", type: i3.IfReplaceableTemplateExistsDirective, selector: "[abpIfReplaceableTemplateExists]", inputs: ["abpIfReplaceableTemplateExists"] }, { kind: "component", type: i3.PageAlertContainerComponent, selector: "abp-page-alert-container" }, { kind: "directive", type: i4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i5.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }] });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TopMenuApplicationLayoutComponent, decorators: [{
21
+ TopMenuApplicationLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TopMenuApplicationLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
+ TopMenuApplicationLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TopMenuApplicationLayoutComponent, selector: "abp-top-menu-application-layout", ngImport: i0, template: "<lpx-layout>\r\n <abp-page-alert-container\r\n *abpReplaceableTemplate=\"{ componentKey: pageAlertContainerKey }\"\r\n ></abp-page-alert-container>\r\n\r\n <router-outlet></router-outlet>\r\n\r\n <ng-template\r\n lpx-breadcrumb-panel\r\n *abpIfReplaceableTemplateExists=\"breadcrumbKey\"\r\n >\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: breadcrumbKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template lpx-navbar-panel *abpIfReplaceableTemplateExists=\"navbarKey\">\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: navbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template\r\n lpx-mobile-navbar-panel\r\n *abpIfReplaceableTemplateExists=\"mobileNavbarKey\"\r\n >\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: mobileNavbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template lpx-footer-panel *abpIfReplaceableTemplateExists=\"footerKey\">\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: footerKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template lpx-toolbar-panel *abpIfReplaceableTemplateExists=\"toolbarKey\">\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: toolbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template\r\n lpx-top-navbar-panel\r\n *abpIfReplaceableTemplateExists=\"topNavbarKey\"\r\n >\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: topNavbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template lpx-settings-panel *abpIfReplaceableTemplateExists=\"settingsKey\">\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: settingsKey }\">\r\n </ng-container>\r\n </ng-template>\r\n</lpx-layout>\r\n", dependencies: [{ kind: "component", type: i1.TopMenuLayoutComponent, selector: "lpx-layout" }, { kind: "directive", type: i2.BreadcrumbPanelDirective, selector: "ng-template[lpx-breadcrumb-panel]" }, { kind: "directive", type: i2.NavbarPanelDirective, selector: "ng-template[lpx-navbar-panel]" }, { kind: "directive", type: i2.FooterPanelDirective, selector: "ng-template[lpx-footer-panel]" }, { kind: "directive", type: i2.MobileNavbarPanelDirective, selector: "ng-template[lpx-mobile-navbar-panel]" }, { kind: "directive", type: i2.ToolbarPanelDirective, selector: "ng-template[lpx-toolbar-panel]" }, { kind: "directive", type: i2.TopNavbarPanelDirective, selector: "ng-template[lpx-top-navbar-panel]" }, { kind: "directive", type: i2.SettingsPanelDirective, selector: "ng-template[lpx-settings-panel]" }, { kind: "directive", type: i3.IfReplaceableTemplateExistsDirective, selector: "[abpIfReplaceableTemplateExists]", inputs: ["abpIfReplaceableTemplateExists"] }, { kind: "component", type: i3.PageAlertContainerComponent, selector: "abp-page-alert-container" }, { kind: "directive", type: i4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i5.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }] });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TopMenuApplicationLayoutComponent, decorators: [{
24
24
  type: Component,
25
25
  args: [{ selector: 'abp-top-menu-application-layout', template: "<lpx-layout>\r\n <abp-page-alert-container\r\n *abpReplaceableTemplate=\"{ componentKey: pageAlertContainerKey }\"\r\n ></abp-page-alert-container>\r\n\r\n <router-outlet></router-outlet>\r\n\r\n <ng-template\r\n lpx-breadcrumb-panel\r\n *abpIfReplaceableTemplateExists=\"breadcrumbKey\"\r\n >\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: breadcrumbKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template lpx-navbar-panel *abpIfReplaceableTemplateExists=\"navbarKey\">\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: navbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template\r\n lpx-mobile-navbar-panel\r\n *abpIfReplaceableTemplateExists=\"mobileNavbarKey\"\r\n >\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: mobileNavbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template lpx-footer-panel *abpIfReplaceableTemplateExists=\"footerKey\">\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: footerKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template lpx-toolbar-panel *abpIfReplaceableTemplateExists=\"toolbarKey\">\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: toolbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template\r\n lpx-top-navbar-panel\r\n *abpIfReplaceableTemplateExists=\"topNavbarKey\"\r\n >\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: topNavbarKey }\">\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template lpx-settings-panel *abpIfReplaceableTemplateExists=\"settingsKey\">\r\n <ng-container *abpReplaceableTemplate=\"{ componentKey: settingsKey }\">\r\n </ng-container>\r\n </ng-template>\r\n</lpx-layout>\r\n" }]
26
26
  }] });
@@ -30,8 +30,8 @@ export class TopMenuLayoutModule {
30
30
  };
31
31
  }
32
32
  }
33
- TopMenuLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TopMenuLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
34
- TopMenuLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: TopMenuLayoutModule, declarations: [TopMenuApplicationLayoutComponent], imports: [CommonModule,
33
+ TopMenuLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TopMenuLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
34
+ TopMenuLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: TopMenuLayoutModule, declarations: [TopMenuApplicationLayoutComponent], imports: [CommonModule,
35
35
  LpxTopMenuLayoutModule,
36
36
  LeptonXAbpCoreModule,
37
37
  LpxBreadcrumbModule,
@@ -40,7 +40,7 @@ TopMenuLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
40
40
  CoreModule,
41
41
  PageAlertContainerModule,
42
42
  RouterOutlet] });
43
- TopMenuLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TopMenuLayoutModule, imports: [CommonModule,
43
+ TopMenuLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TopMenuLayoutModule, imports: [CommonModule,
44
44
  LpxTopMenuLayoutModule,
45
45
  LeptonXAbpCoreModule,
46
46
  LpxBreadcrumbModule,
@@ -48,7 +48,7 @@ TopMenuLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ver
48
48
  LpxNavbarModule,
49
49
  CoreModule,
50
50
  PageAlertContainerModule] });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TopMenuLayoutModule, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TopMenuLayoutModule, decorators: [{
52
52
  type: NgModule,
53
53
  args: [{
54
54
  declarations: [TopMenuApplicationLayoutComponent],
@@ -24,15 +24,15 @@ export class AbpValidationErrorComponent extends ValidationErrorComponent {
24
24
  });
25
25
  }
26
26
  }
27
- AbpValidationErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AbpValidationErrorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
28
- AbpValidationErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: AbpValidationErrorComponent, selector: "abp-validation-error", usesInheritance: true, ngImport: i0, template: `
27
+ AbpValidationErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpValidationErrorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
28
+ AbpValidationErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AbpValidationErrorComponent, selector: "abp-validation-error", usesInheritance: true, ngImport: i0, template: `
29
29
  <span class="text-danger" data-valmsg-for="Role.Name" data-valmsg-replace="true"
30
30
  ><span *ngFor="let error of abpErrors; trackBy: trackByFn">
31
31
  {{ error.message | abpLocalization: error.interpoliteParams }}</span
32
32
  ></span
33
33
  >
34
34
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AbpValidationErrorComponent, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpValidationErrorComponent, decorators: [{
36
36
  type: Component,
37
37
  args: [{
38
38
  selector: 'abp-validation-error',
@@ -25,10 +25,10 @@ export class AbpValidationErrorModule {
25
25
  };
26
26
  }
27
27
  }
28
- AbpValidationErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AbpValidationErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
29
- AbpValidationErrorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: AbpValidationErrorModule, declarations: [AbpValidationErrorComponent], imports: [CommonModule, CoreModule, NgxValidateCoreModule], exports: [AbpValidationErrorComponent, NgxValidateCoreModule] });
30
- AbpValidationErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AbpValidationErrorModule, imports: [CommonModule, CoreModule, NgxValidateCoreModule, NgxValidateCoreModule] });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AbpValidationErrorModule, decorators: [{
28
+ AbpValidationErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpValidationErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
29
+ AbpValidationErrorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: AbpValidationErrorModule, declarations: [AbpValidationErrorComponent], imports: [CommonModule, CoreModule, NgxValidateCoreModule], exports: [AbpValidationErrorComponent, NgxValidateCoreModule] });
30
+ AbpValidationErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpValidationErrorModule, imports: [CommonModule, CoreModule, NgxValidateCoreModule, NgxValidateCoreModule] });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpValidationErrorModule, decorators: [{
32
32
  type: NgModule,
33
33
  args: [{
34
34
  declarations: [AbpValidationErrorComponent],
@@ -35,9 +35,9 @@ export class HttpErrorComponent {
35
35
  }
36
36
  }
37
37
  }
38
- HttpErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: HttpErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
- HttpErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: HttpErrorComponent, selector: "abp-http-error", ngImport: i0, template: "<div class=\"error-page-container\">\r\n <div class=\"row\">\r\n <div class=\"col col-auto\">\r\n <div class=\"status-icon\">\r\n <i class=\"fa fa-frown-o text-danger\" aria-hidden=\"true\"></i>\r\n <span></span>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"status-content\">\r\n <h1>{{ errorStatus }}</h1>\r\n <h2 class=\"text-danger mb-0\">\r\n {{ errorStatusText | abpLocalization\r\n }}<small class=\"text-muted\">{{\r\n errorDetail | abpLocalization\r\n }}</small>\r\n </h2>\r\n <p class=\"mt-3 mb-4\"></p>\r\n <a (click)=\"destroy$.next()\" routerLink=\"/\" class=\"btn btn-primary\">{{\r\n 'AbpUi::GoHomePage' | abpLocalization\r\n }}</a>\r\n <a\r\n href=\"javascript:void(0)\"\r\n class=\"mt-4 mb-1 d-block\"\r\n (click)=\"destroy$.next()\"\r\n ><i class=\"fa fa-long-arrow-left me-1\"></i\r\n >{{ 'AbpUi::GoBack' | abpLocalization }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] });
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: HttpErrorComponent, decorators: [{
38
+ HttpErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HttpErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
+ HttpErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: HttpErrorComponent, selector: "abp-http-error", ngImport: i0, template: "<div class=\"error-page-container\">\r\n <div class=\"row\">\r\n <div class=\"col col-auto\">\r\n <div class=\"status-icon\">\r\n <i class=\"fa fa-frown-o text-danger\" aria-hidden=\"true\"></i>\r\n <span></span>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"status-content\">\r\n <h1>{{ errorStatus }}</h1>\r\n <h2 class=\"text-danger mb-0\">\r\n {{ errorStatusText | abpLocalization\r\n }}<small class=\"text-muted\">{{\r\n errorDetail | abpLocalization\r\n }}</small>\r\n </h2>\r\n <p class=\"mt-3 mb-4\"></p>\r\n <a (click)=\"destroy$.next()\" routerLink=\"/\" class=\"btn btn-primary\">{{\r\n 'AbpUi::GoHomePage' | abpLocalization\r\n }}</a>\r\n <a\r\n href=\"javascript:void(0)\"\r\n class=\"mt-4 mb-1 d-block\"\r\n (click)=\"destroy$.next()\"\r\n ><i class=\"fa fa-long-arrow-left me-1\"></i\r\n >{{ 'AbpUi::GoBack' | abpLocalization }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HttpErrorComponent, decorators: [{
41
41
  type: Component,
42
42
  args: [{ selector: 'abp-http-error', template: "<div class=\"error-page-container\">\r\n <div class=\"row\">\r\n <div class=\"col col-auto\">\r\n <div class=\"status-icon\">\r\n <i class=\"fa fa-frown-o text-danger\" aria-hidden=\"true\"></i>\r\n <span></span>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"status-content\">\r\n <h1>{{ errorStatus }}</h1>\r\n <h2 class=\"text-danger mb-0\">\r\n {{ errorStatusText | abpLocalization\r\n }}<small class=\"text-muted\">{{\r\n errorDetail | abpLocalization\r\n }}</small>\r\n </h2>\r\n <p class=\"mt-3 mb-4\"></p>\r\n <a (click)=\"destroy$.next()\" routerLink=\"/\" class=\"btn btn-primary\">{{\r\n 'AbpUi::GoHomePage' | abpLocalization\r\n }}</a>\r\n <a\r\n href=\"javascript:void(0)\"\r\n class=\"mt-4 mb-1 d-block\"\r\n (click)=\"destroy$.next()\"\r\n ><i class=\"fa fa-long-arrow-left me-1\"></i\r\n >{{ 'AbpUi::GoBack' | abpLocalization }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
43
43
  }] });
@@ -11,10 +11,10 @@ export class HttpErrorModule {
11
11
  };
12
12
  }
13
13
  }
14
- HttpErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: HttpErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
- HttpErrorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: HttpErrorModule, declarations: [HttpErrorComponent], imports: [CoreModule, CommonModule], exports: [HttpErrorComponent] });
16
- HttpErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: HttpErrorModule, imports: [CoreModule, CommonModule] });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: HttpErrorModule, decorators: [{
14
+ HttpErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HttpErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
+ HttpErrorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: HttpErrorModule, declarations: [HttpErrorComponent], imports: [CoreModule, CommonModule], exports: [HttpErrorComponent] });
16
+ HttpErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HttpErrorModule, imports: [CoreModule, CommonModule] });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HttpErrorModule, decorators: [{
18
18
  type: NgModule,
19
19
  args: [{
20
20
  declarations: [HttpErrorComponent],
@@ -32,10 +32,10 @@ export class ThemeLeptonXModule {
32
32
  };
33
33
  }
34
34
  }
35
- ThemeLeptonXModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ThemeLeptonXModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
36
- ThemeLeptonXModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.1", ngImport: i0, type: ThemeLeptonXModule, imports: [HttpErrorModule], exports: [HttpErrorModule] });
37
- ThemeLeptonXModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ThemeLeptonXModule, imports: [HttpErrorModule, HttpErrorModule] });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ThemeLeptonXModule, decorators: [{
35
+ ThemeLeptonXModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ThemeLeptonXModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
36
+ ThemeLeptonXModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: ThemeLeptonXModule, imports: [HttpErrorModule], exports: [HttpErrorModule] });
37
+ ThemeLeptonXModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ThemeLeptonXModule, imports: [HttpErrorModule, HttpErrorModule] });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ThemeLeptonXModule, decorators: [{
39
39
  type: NgModule,
40
40
  args: [{
41
41
  imports: [HttpErrorModule],
@@ -15,9 +15,9 @@ export class AbpAuthService {
15
15
  this.authService.navigateToLogin();
16
16
  }
17
17
  }
18
- AbpAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AbpAuthService, deps: [{ token: i1.UserProfileService }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
19
- AbpAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AbpAuthService });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AbpAuthService, decorators: [{
18
+ AbpAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpAuthService, deps: [{ token: i1.UserProfileService }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
19
+ AbpAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpAuthService });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpAuthService, decorators: [{
21
21
  type: Injectable
22
22
  }], ctorParameters: function () { return [{ type: i1.UserProfileService }, { type: i2.AuthService }]; } });
23
23
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdm9sby1sZXB0b24teC9zcmMvbGliL3NlcnZpY2VzL2FicC1hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFdBQVcsSUFBSSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFHOUQsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFDVSxrQkFBc0MsRUFDdEMsV0FBNEI7UUFENUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFHdEMsa0JBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDaEQsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDdkMsQ0FBQztJQUpDLENBQUM7SUFNSixlQUFlO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNyQyxDQUFDOzsyR0FaVSxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFVzZXJQcm9maWxlU2VydmljZSB9IGZyb20gJ0B2b2xvL25neC1sZXB0b24teC5jb3JlJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSBhcyBBdXRoQ29yZVNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQWJwQXV0aFNlcnZpY2UgaW1wbGVtZW50cyBBdXRoU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHVzZXJQcm9maWxlU2VydmljZTogVXNlclByb2ZpbGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aENvcmVTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBpc1VzZXJFeGlzdHMkID0gdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UudXNlciQucGlwZShcclxuICAgIG1hcCgodXNlcikgPT4gdXNlciAmJiAhIXVzZXIudXNlck5hbWUpXHJcbiAgKTtcclxuXHJcbiAgbmF2aWdhdGVUb0xvZ2luKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5uYXZpZ2F0ZVRvTG9naW4oKTtcclxuICB9XHJcbn1cclxuIl19
@@ -79,9 +79,9 @@ export class AbpSettingsService {
79
79
  setLanguageOptions() {
80
80
  this.sessionService
81
81
  .getLanguage$()
82
- .pipe(switchMap((currentLang) => this.configStateService.getDeep$('localization.languages').pipe(filter(Boolean), map((languages) => languages.map(({ cultureName, displayName }) => ({
82
+ .pipe(switchMap((currentLang) => this.configStateService.getDeep$('localization.languages').pipe(filter(Boolean), map((languages) => languages.map(({ cultureName, ...rest }) => ({
83
+ ...rest,
83
84
  cultureName,
84
- displayName,
85
85
  selected: cultureName === currentLang,
86
86
  isRTL: getLocaleDirection(cultureName) === 'rtl',
87
87
  }))))))
@@ -97,9 +97,9 @@ export class AbpSettingsService {
97
97
  });
98
98
  }
99
99
  }
100
- AbpSettingsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AbpSettingsService, deps: [{ token: i1.SessionStateService }, { token: i1.ConfigStateService }, { token: i2.LanguageService }, { token: i1.AuthService }, { token: i2.UserProfileService }, { token: PROFILE_PICTURE }, { token: NAVIGATE_TO_MANAGE_PROFILE }, { token: NAVIGATE_TO_MY_SECURITY_LOGS }, { token: OPEN_MY_LINK_USERS_MODAL, optional: true }, { token: i1.LocalizationService }, { token: i3.UserMenuService }], target: i0.ɵɵFactoryTarget.Injectable });
101
- AbpSettingsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AbpSettingsService, providedIn: 'root' });
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AbpSettingsService, decorators: [{
100
+ AbpSettingsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpSettingsService, deps: [{ token: i1.SessionStateService }, { token: i1.ConfigStateService }, { token: i2.LanguageService }, { token: i1.AuthService }, { token: i2.UserProfileService }, { token: PROFILE_PICTURE }, { token: NAVIGATE_TO_MANAGE_PROFILE }, { token: NAVIGATE_TO_MY_SECURITY_LOGS }, { token: OPEN_MY_LINK_USERS_MODAL, optional: true }, { token: i1.LocalizationService }, { token: i3.UserMenuService }], target: i0.ɵɵFactoryTarget.Injectable });
101
+ AbpSettingsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpSettingsService, providedIn: 'root' });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpSettingsService, decorators: [{
103
103
  type: Injectable,
104
104
  args: [{ providedIn: 'root' }]
105
105
  }], ctorParameters: function () { return [{ type: i1.SessionStateService }, { type: i1.ConfigStateService }, { type: i2.LanguageService }, { type: i1.AuthService }, { type: i2.UserProfileService }, { type: i4.BehaviorSubject, decorators: [{
@@ -117,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImpor
117
117
  type: Inject,
118
118
  args: [OPEN_MY_LINK_USERS_MODAL]
119
119
  }] }, { type: i1.LocalizationService }, { type: i3.UserMenuService }]; } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLXNldHRpbmdzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3ZvbG8tbGVwdG9uLXgvc3JjL2xpYi9zZXJ2aWNlcy9hYnAtc2V0dGluZ3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUNMLGVBQWUsRUFFZixrQkFBa0IsR0FDbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLGtCQUFrQixFQUVsQixrQkFBa0IsRUFFbEIsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQixtQkFBbUIsR0FDcEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qix3QkFBd0IsRUFDeEIsZUFBZSxHQUVoQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBR3ZELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDVSxjQUFtQyxFQUNuQyxrQkFBc0MsRUFDdEMsZUFBZ0MsRUFDaEMsV0FBd0IsRUFDeEIsa0JBQXNDLEVBRXRDLGVBQXFELEVBQ2xCLHVCQUE0QixFQUMxQix3QkFBNkIsRUFDckIsb0JBQW9CLEVBQ2pFLG1CQUF3QyxFQUN4QyxlQUFnQztRQVhoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBcUI7UUFDbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsZ0JBQVcsR0FB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ZiwwQkFBMEIsYUFDMUIsNEJBQTRCLGFBQ2hCLHdCQUF3QjttSEFYbkMsa0JBQWtCLGNBREwsTUFBTTsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBUTdCLE1BQU07MkJBQUMsZUFBZTs7MEJBRXRCLE1BQU07MkJBQUMsMEJBQTBCOzswQkFDakMsTUFBTTsyQkFBQyw0QkFBNEI7OzBCQUNuQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIExhbmd1YWdlU2VydmljZSxcclxuICBMcHhMYW5ndWFnZSxcclxuICBVc2VyUHJvZmlsZVNlcnZpY2UsXHJcbn0gZnJvbSAnQHZvbG8vbmd4LWxlcHRvbi14LmNvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEF1dGhTZXJ2aWNlLFxyXG4gIENvbmZpZ1N0YXRlU2VydmljZSxcclxuICBDdXJyZW50VXNlckR0byxcclxuICBnZXRMb2NhbGVEaXJlY3Rpb24sXHJcbiAgTGFuZ3VhZ2VJbmZvLFxyXG4gIExvY2FsaXphdGlvblNlcnZpY2UsXHJcbiAgTkFWSUdBVEVfVE9fTUFOQUdFX1BST0ZJTEUsXHJcbiAgU2Vzc2lvblN0YXRlU2VydmljZSxcclxufSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICBOQVZJR0FURV9UT19NWV9TRUNVUklUWV9MT0dTLFxyXG4gIE9QRU5fTVlfTElOS19VU0VSU19NT0RBTCxcclxuICBQUk9GSUxFX1BJQ1RVUkUsXHJcbiAgUHJvZmlsZVBpY3R1cmVJbWFnZSxcclxufSBmcm9tICdAdm9sby9hYnAuY29tbWVyY2lhbC5uZy51aS9jb25maWcnO1xyXG5pbXBvcnQgeyBVc2VyTWVudVNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQWJwU2V0dGluZ3NTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2U6IFNlc3Npb25TdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ1N0YXRlU2VydmljZTogQ29uZmlnU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyUHJvZmlsZVNlcnZpY2U6IFVzZXJQcm9maWxlU2VydmljZSxcclxuICAgIEBJbmplY3QoUFJPRklMRV9QSUNUVVJFKVxyXG4gICAgcHJpdmF0ZSBwcm9maWxlUGljdHVyZSQ6IEJlaGF2aW9yU3ViamVjdDxQcm9maWxlUGljdHVyZUltYWdlPixcclxuICAgIEBJbmplY3QoTkFWSUdBVEVfVE9fTUFOQUdFX1BST0ZJTEUpIHB1YmxpYyBuYXZpZ2F0ZVRvTWFuYWdlUHJvZmlsZTogYW55LFxyXG4gICAgQEluamVjdChOQVZJR0FURV9UT19NWV9TRUNVUklUWV9MT0dTKSBwdWJsaWMgbmF2aWdhdGVUb015U2VjdXJpdHlMb2dzOiBhbnksXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE9QRU5fTVlfTElOS19VU0VSU19NT0RBTCkgcHVibGljIG9wZW5NeUxpbmtVc2Vyc01vZGFsLFxyXG4gICAgcHJpdmF0ZSBsb2NhbGl6YXRpb25TZXJ2aWNlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyTWVudVNlcnZpY2U6IFVzZXJNZW51U2VydmljZVxyXG4gICkge31cclxuXHJcbiAgc2V0VXBMaXN0ZW5lcnMoKSB7XHJcbiAgICB0aGlzLmxpc3RlblRvTGFuZ0NoYW5nZSgpO1xyXG4gICAgdGhpcy5zZXRMYW5ndWFnZU9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2V0VXNlclByb2ZpbGUoKTtcclxuICAgIHRoaXMuc2V0UHJvZmlsZVBpY3R1cmUoKTtcclxuICAgIHRoaXMuc2V0VXNlck1lbnVHcm91cHMoKTtcclxuICB9XHJcbiAgc2V0VXNlclByb2ZpbGUoKSB7XHJcbiAgICBjb25zdCBlbXB0eVN0cmluZ09uTnVsbCA9ICh2YWx1ZT86IHN0cmluZykgPT4gdmFsdWUgfHwgJyc7XHJcblxyXG4gICAgdGhpcy5jb25maWdTdGF0ZVNlcnZpY2VcclxuICAgICAgLmdldE9uZSQoJ2N1cnJlbnRVc2VyJylcclxuICAgICAgLnBpcGUoZmlsdGVyPEN1cnJlbnRVc2VyRHRvPihCb29sZWFuKSlcclxuICAgICAgLnN1YnNjcmliZSgoY3VycmVudFVzZXIpID0+XHJcbiAgICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UucGF0Y2hVc2VyKHtcclxuICAgICAgICAgIHVzZXJOYW1lOiBjdXJyZW50VXNlci51c2VyTmFtZSxcclxuICAgICAgICAgIGZ1bGxOYW1lOlxyXG4gICAgICAgICAgICBlbXB0eVN0cmluZ09uTnVsbChjdXJyZW50VXNlci5uYW1lKSArXHJcbiAgICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICAgIGVtcHR5U3RyaW5nT25OdWxsKGN1cnJlbnRVc2VyLnN1ck5hbWUpLFxyXG4gICAgICAgICAgZW1haWw6IGN1cnJlbnRVc2VyLmVtYWlsLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBzZXRVc2VyTWVudUdyb3VwcygpIHtcclxuICAgIHRoaXMudXNlck1lbnVTZXJ2aWNlLml0ZW1zJC5zdWJzY3JpYmUoKHVzZXJNZW51KSA9PiB7XHJcbiAgICAgIGNvbnN0IHVzZXJBY3Rpb25Hcm91cHMgPSB1c2VyTWVudS5yZWR1Y2UoXHJcbiAgICAgICAgKGFjYywgY3VyciwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1lbnVJdGVtID0ge1xyXG4gICAgICAgICAgICBpY29uOiBjdXJyLnRleHRUZW1wbGF0ZT8uaWNvbixcclxuICAgICAgICAgICAgdGV4dDogY3Vyci50ZXh0VGVtcGxhdGU/LnRleHQsXHJcbiAgICAgICAgICAgIGNvbXBvbmVudDogY3Vycj8uY29tcG9uZW50LFxyXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHtcclxuICAgICAgICAgICAgICBjdXJyLmFjdGlvbigpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdmlzaWJsZTogY3Vyci52aXNpYmxlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGNvbnN0IHNldEluZGV4ID0gaW5kZXggPT09IHVzZXJNZW51Lmxlbmd0aCAtIDEgPyAxIDogMDtcclxuICAgICAgICAgIGFjY1tzZXRJbmRleF0ucHVzaChtZW51SXRlbSk7XHJcbiAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgW1tdLCBbXV1cclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMudXNlclByb2ZpbGVTZXJ2aWNlLnBhdGNoVXNlcih7XHJcbiAgICAgICAgdXNlckFjdGlvbkdyb3VwcyxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFByb2ZpbGVQaWN0dXJlKCkge1xyXG4gICAgdGhpcy5wcm9maWxlUGljdHVyZSRcclxuICAgICAgLnBpcGUoZmlsdGVyPFByb2ZpbGVQaWN0dXJlSW1hZ2U+KEJvb2xlYW4pKVxyXG4gICAgICAuc3Vic2NyaWJlKChhdmF0YXIpID0+XHJcbiAgICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UucGF0Y2hVc2VyKHtcclxuICAgICAgICAgIGF2YXRhcjoge1xyXG4gICAgICAgICAgICB0eXBlOiBhdmF0YXIudHlwZSxcclxuICAgICAgICAgICAgc291cmNlOiBhdmF0YXIuc291cmNlIHx8ICcnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgc2V0TGFuZ3VhZ2VPcHRpb25zKCkge1xyXG4gICAgdGhpcy5zZXNzaW9uU2VydmljZVxyXG4gICAgICAuZ2V0TGFuZ3VhZ2UkKClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKChjdXJyZW50TGFuZykgPT5cclxuICAgICAgICAgIHRoaXMuY29uZmlnU3RhdGVTZXJ2aWNlLmdldERlZXAkKCdsb2NhbGl6YXRpb24ubGFuZ3VhZ2VzJykucGlwZShcclxuICAgICAgICAgICAgZmlsdGVyPExhbmd1YWdlSW5mb1tdPihCb29sZWFuKSxcclxuICAgICAgICAgICAgbWFwKChsYW5ndWFnZXM6IExhbmd1YWdlSW5mb1tdKSA9PlxyXG4gICAgICAgICAgICAgIGxhbmd1YWdlcy5tYXA8THB4TGFuZ3VhZ2U+KCh7IGN1bHR1cmVOYW1lLCBkaXNwbGF5TmFtZSB9KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgY3VsdHVyZU5hbWUsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZSxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBjdWx0dXJlTmFtZSA9PT0gY3VycmVudExhbmcsXHJcbiAgICAgICAgICAgICAgICBpc1JUTDogZ2V0TG9jYWxlRGlyZWN0aW9uKGN1bHR1cmVOYW1lKSA9PT0gJ3J0bCcsXHJcbiAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIClcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoc2V0dGluZ3MpID0+IHtcclxuICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS5zZXRMYW5ndWFnZXMoc2V0dGluZ3MpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGxpc3RlblRvTGFuZ0NoYW5nZSgpIHtcclxuICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnNlbGVjdGVkTGFuZ3VhZ2UkXHJcbiAgICAgIC5waXBlKGZpbHRlcjxMcHhMYW5ndWFnZSB8IHVuZGVmaW5lZD4oQm9vbGVhbikpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGxhbmcpID0+IHtcclxuICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldExhbmd1YWdlKGxhbmc/LmN1bHR1cmVOYW1lIHx8ICcnKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLXNldHRpbmdzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3ZvbG8tbGVwdG9uLXgvc3JjL2xpYi9zZXJ2aWNlcy9hYnAtc2V0dGluZ3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUNMLGVBQWUsRUFFZixrQkFBa0IsR0FDbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLGtCQUFrQixFQUVsQixrQkFBa0IsRUFFbEIsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQixtQkFBbUIsR0FDcEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qix3QkFBd0IsRUFDeEIsZUFBZSxHQUVoQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBR3ZELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDVSxjQUFtQyxFQUNuQyxrQkFBc0MsRUFDdEMsZUFBZ0MsRUFDaEMsV0FBd0IsRUFDeEIsa0JBQXNDLEVBRXRDLGVBQXFELEVBQ2xCLHVCQUE0QixFQUMxQix3QkFBNkIsRUFDckIsb0JBQW9CLEVBQ2pFLG1CQUF3QyxFQUN4QyxlQUFnQztRQVhoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBcUI7UUFDbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsZ0JBQVcsR0FB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QixlQUFlLGFBRWYsMEJBQTBCLGFBQzFCLDRCQUE0QixhQUNoQix3QkFBd0I7bUhBWG5DLGtCQUFrQixjQURMLE1BQU07MkZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQVE3QixNQUFNOzJCQUFDLGVBQWU7OzBCQUV0QixNQUFNOzJCQUFDLDBCQUEwQjs7MEJBQ2pDLE1BQU07MkJBQUMsNEJBQTRCOzswQkFDbkMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgTHB4TGFuZ3VhZ2UsXHJcbiAgVXNlclByb2ZpbGVTZXJ2aWNlLFxyXG59IGZyb20gJ0B2b2xvL25neC1sZXB0b24teC5jb3JlJztcclxuaW1wb3J0IHtcclxuICBBdXRoU2VydmljZSxcclxuICBDb25maWdTdGF0ZVNlcnZpY2UsXHJcbiAgQ3VycmVudFVzZXJEdG8sXHJcbiAgZ2V0TG9jYWxlRGlyZWN0aW9uLFxyXG4gIExhbmd1YWdlSW5mbyxcclxuICBMb2NhbGl6YXRpb25TZXJ2aWNlLFxyXG4gIE5BVklHQVRFX1RPX01BTkFHRV9QUk9GSUxFLFxyXG4gIFNlc3Npb25TdGF0ZVNlcnZpY2UsXHJcbn0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgTkFWSUdBVEVfVE9fTVlfU0VDVVJJVFlfTE9HUyxcclxuICBPUEVOX01ZX0xJTktfVVNFUlNfTU9EQUwsXHJcbiAgUFJPRklMRV9QSUNUVVJFLFxyXG4gIFByb2ZpbGVQaWN0dXJlSW1hZ2UsXHJcbn0gZnJvbSAnQHZvbG8vYWJwLmNvbW1lcmNpYWwubmcudWkvY29uZmlnJztcclxuaW1wb3J0IHsgVXNlck1lbnVTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEFicFNldHRpbmdzU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlOiBTZXNzaW9uU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maWdTdGF0ZVNlcnZpY2U6IENvbmZpZ1N0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclByb2ZpbGVTZXJ2aWNlOiBVc2VyUHJvZmlsZVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFBST0ZJTEVfUElDVFVSRSlcclxuICAgIHByaXZhdGUgcHJvZmlsZVBpY3R1cmUkOiBCZWhhdmlvclN1YmplY3Q8UHJvZmlsZVBpY3R1cmVJbWFnZT4sXHJcbiAgICBASW5qZWN0KE5BVklHQVRFX1RPX01BTkFHRV9QUk9GSUxFKSBwdWJsaWMgbmF2aWdhdGVUb01hbmFnZVByb2ZpbGU6IGFueSxcclxuICAgIEBJbmplY3QoTkFWSUdBVEVfVE9fTVlfU0VDVVJJVFlfTE9HUykgcHVibGljIG5hdmlnYXRlVG9NeVNlY3VyaXR5TG9nczogYW55LFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChPUEVOX01ZX0xJTktfVVNFUlNfTU9EQUwpIHB1YmxpYyBvcGVuTXlMaW5rVXNlcnNNb2RhbCxcclxuICAgIHByaXZhdGUgbG9jYWxpemF0aW9uU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlck1lbnVTZXJ2aWNlOiBVc2VyTWVudVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIHNldFVwTGlzdGVuZXJzKCkge1xyXG4gICAgdGhpcy5saXN0ZW5Ub0xhbmdDaGFuZ2UoKTtcclxuICAgIHRoaXMuc2V0TGFuZ3VhZ2VPcHRpb25zKCk7XHJcbiAgICB0aGlzLnNldFVzZXJQcm9maWxlKCk7XHJcbiAgICB0aGlzLnNldFByb2ZpbGVQaWN0dXJlKCk7XHJcbiAgICB0aGlzLnNldFVzZXJNZW51R3JvdXBzKCk7XHJcbiAgfVxyXG4gIHNldFVzZXJQcm9maWxlKCkge1xyXG4gICAgY29uc3QgZW1wdHlTdHJpbmdPbk51bGwgPSAodmFsdWU/OiBzdHJpbmcpID0+IHZhbHVlIHx8ICcnO1xyXG5cclxuICAgIHRoaXMuY29uZmlnU3RhdGVTZXJ2aWNlXHJcbiAgICAgIC5nZXRPbmUkKCdjdXJyZW50VXNlcicpXHJcbiAgICAgIC5waXBlKGZpbHRlcjxDdXJyZW50VXNlckR0bz4oQm9vbGVhbikpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGN1cnJlbnRVc2VyKSA9PlxyXG4gICAgICAgIHRoaXMudXNlclByb2ZpbGVTZXJ2aWNlLnBhdGNoVXNlcih7XHJcbiAgICAgICAgICB1c2VyTmFtZTogY3VycmVudFVzZXIudXNlck5hbWUsXHJcbiAgICAgICAgICBmdWxsTmFtZTpcclxuICAgICAgICAgICAgZW1wdHlTdHJpbmdPbk51bGwoY3VycmVudFVzZXIubmFtZSkgK1xyXG4gICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICBlbXB0eVN0cmluZ09uTnVsbChjdXJyZW50VXNlci5zdXJOYW1lKSxcclxuICAgICAgICAgIGVtYWlsOiBjdXJyZW50VXNlci5lbWFpbCxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgc2V0VXNlck1lbnVHcm91cHMoKSB7XHJcbiAgICB0aGlzLnVzZXJNZW51U2VydmljZS5pdGVtcyQuc3Vic2NyaWJlKCh1c2VyTWVudSkgPT4ge1xyXG4gICAgICBjb25zdCB1c2VyQWN0aW9uR3JvdXBzID0gdXNlck1lbnUucmVkdWNlKFxyXG4gICAgICAgIChhY2MsIGN1cnIsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBtZW51SXRlbSA9IHtcclxuICAgICAgICAgICAgaWNvbjogY3Vyci50ZXh0VGVtcGxhdGU/Lmljb24sXHJcbiAgICAgICAgICAgIHRleHQ6IGN1cnIudGV4dFRlbXBsYXRlPy50ZXh0LFxyXG4gICAgICAgICAgICBjb21wb25lbnQ6IGN1cnI/LmNvbXBvbmVudCxcclxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY3Vyci5hY3Rpb24oKTtcclxuICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHZpc2libGU6IGN1cnIudmlzaWJsZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBjb25zdCBzZXRJbmRleCA9IGluZGV4ID09PSB1c2VyTWVudS5sZW5ndGggLSAxID8gMSA6IDA7XHJcbiAgICAgICAgICBhY2Nbc2V0SW5kZXhdLnB1c2gobWVudUl0ZW0pO1xyXG4gICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICB9LFxyXG4gICAgICAgIFtbXSwgW11dXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLnVzZXJQcm9maWxlU2VydmljZS5wYXRjaFVzZXIoe1xyXG4gICAgICAgIHVzZXJBY3Rpb25Hcm91cHMsXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRQcm9maWxlUGljdHVyZSgpIHtcclxuICAgIHRoaXMucHJvZmlsZVBpY3R1cmUkXHJcbiAgICAgIC5waXBlKGZpbHRlcjxQcm9maWxlUGljdHVyZUltYWdlPihCb29sZWFuKSlcclxuICAgICAgLnN1YnNjcmliZSgoYXZhdGFyKSA9PlxyXG4gICAgICAgIHRoaXMudXNlclByb2ZpbGVTZXJ2aWNlLnBhdGNoVXNlcih7XHJcbiAgICAgICAgICBhdmF0YXI6IHtcclxuICAgICAgICAgICAgdHlwZTogYXZhdGFyLnR5cGUsXHJcbiAgICAgICAgICAgIHNvdXJjZTogYXZhdGFyLnNvdXJjZSB8fCAnJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHNldExhbmd1YWdlT3B0aW9ucygpIHtcclxuICAgIHRoaXMuc2Vzc2lvblNlcnZpY2VcclxuICAgICAgLmdldExhbmd1YWdlJCgpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoY3VycmVudExhbmcpID0+XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ1N0YXRlU2VydmljZS5nZXREZWVwJCgnbG9jYWxpemF0aW9uLmxhbmd1YWdlcycpLnBpcGUoXHJcbiAgICAgICAgICAgIGZpbHRlcjxMYW5ndWFnZUluZm9bXT4oQm9vbGVhbiksXHJcbiAgICAgICAgICAgIG1hcCgobGFuZ3VhZ2VzOiBMYW5ndWFnZUluZm9bXSkgPT5cclxuICAgICAgICAgICAgICBsYW5ndWFnZXMubWFwPExweExhbmd1YWdlPigoeyBjdWx0dXJlTmFtZSwgLi4ucmVzdCB9KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgLi4ucmVzdCxcclxuICAgICAgICAgICAgICAgIGN1bHR1cmVOYW1lLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGN1bHR1cmVOYW1lID09PSBjdXJyZW50TGFuZyxcclxuICAgICAgICAgICAgICAgIGlzUlRMOiBnZXRMb2NhbGVEaXJlY3Rpb24oY3VsdHVyZU5hbWUpID09PSAncnRsJyxcclxuICAgICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChzZXR0aW5ncykgPT4ge1xyXG4gICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnNldExhbmd1YWdlcyhzZXR0aW5ncyk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbGlzdGVuVG9MYW5nQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5sYW5ndWFnZVNlcnZpY2Uuc2VsZWN0ZWRMYW5ndWFnZSRcclxuICAgICAgLnBpcGUoZmlsdGVyPExweExhbmd1YWdlIHwgdW5kZWZpbmVkPihCb29sZWFuKSlcclxuICAgICAgLnN1YnNjcmliZSgobGFuZykgPT4ge1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0TGFuZ3VhZ2UobGFuZz8uY3VsdHVyZU5hbWUgfHwgJycpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIl19