@trudb/tru-common-lib 0.1.421 → 0.1.423

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.
@@ -3,34 +3,41 @@ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
3
  import { TruDataContext } from '../../services/tru-data-context';
4
4
  import { TruUserPreferenceManager } from '../../services/tru-user-preference-manager';
5
5
  import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/material/dialog";
7
- import * as i2 from "@angular/material/button";
8
- import * as i3 from "@angular/material/icon";
9
- import * as i4 from "@angular/material/list";
10
- import * as i5 from "@angular/material/sidenav";
11
- import * as i6 from "./windows/tru-app-window-settings";
6
+ import * as i1 from "../../services/tru-app-environment";
7
+ import * as i2 from "@angular/material/dialog";
8
+ import * as i3 from "@angular/material/button";
9
+ import * as i4 from "@angular/material/icon";
10
+ import * as i5 from "@angular/material/list";
11
+ import * as i6 from "@angular/material/sidenav";
12
+ import * as i7 from "./windows/tru-app-window-settings";
12
13
  export class TruAppSettingsDialog {
14
+ appEnvironment;
13
15
  dialogRef;
14
16
  data;
15
- constructor(dialogRef, data) {
17
+ globalDataContext;
18
+ constructor(appEnvironment, dialogRef, data) {
19
+ this.appEnvironment = appEnvironment;
16
20
  this.dialogRef = dialogRef;
17
21
  this.data = data;
22
+ this.globalDataContext = this.appEnvironment.globalDataContext;
18
23
  }
19
24
  ngOnInit() { }
20
25
  onConfirm() {
21
26
  this.dialogRef.close(true);
22
27
  }
23
28
  onDismiss() {
24
- this.dialogRef.close(false);
29
+ this.globalDataContext.saveSettings().then(() => {
30
+ this.dialogRef.close(false);
31
+ });
25
32
  }
26
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruAppSettingsDialog, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
27
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruAppSettingsDialog, selector: "tru-app-settings-dialog", providers: [TruDataContext, TruUserPreferenceManager], ngImport: i0, template: "<div mat-dialog-title class=\"mat-dialog-title\">\r\n <div class=\"mat-dialog-title-container\">\r\n <mat-icon [svgIcon]=\"'settings-icon'\"\r\n title=\"Settings\">\r\n </mat-icon>\r\n App Settings\r\n </div>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content\">\r\n <mat-sidenav-container class=\"example-sidenav-container\">\r\n <mat-sidenav #snav mode=\"side\" opened>\r\n <mat-nav-list>\r\n <a mat-list-item>Windows</a>\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <tru-app-window-settings></tru-app-window-settings>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Close</button>\r\n</div>\r\n", styles: ["::ng-deep .mat-mdc-dialog-surface{padding:20px}.mat-mdc-dialog-title:before{content:unset!important;height:unset!important;padding:0 0 10px!important}.mat-dialog-title-container mat-icon{vertical-align:sub;height:24px;width:24px}mat-nav-list{width:200px}mat-sidenav-content{height:calc(100vh - 400px)}mat-sidenav-content{padding-left:10px}.mat-dialog-title-container{display:inline}.mdc-dialog__title{padding:0 0 10px!important}.mdc-dialog__content{padding:10px 0 15px!important}.mat-mdc-dialog-content p{margin-bottom:0;font-size:14px;color:#545454}.mat-mdc-dialog-actions{padding:0!important}.mat-mdc-dialog-actions button{margin-right:10px}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i4.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: i5.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i5.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i5.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i6.TruAppWindowSettings, selector: "tru-app-window-settings" }] });
33
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruAppSettingsDialog, deps: [{ token: i1.TruAppEnvironment }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
34
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruAppSettingsDialog, selector: "tru-app-settings-dialog", providers: [TruDataContext, TruUserPreferenceManager], ngImport: i0, template: "<div mat-dialog-title class=\"mat-dialog-title\">\r\n <div class=\"mat-dialog-title-container\">\r\n <mat-icon [svgIcon]=\"'settings-icon'\"\r\n title=\"Settings\">\r\n </mat-icon>\r\n App Settings\r\n </div>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content\">\r\n <mat-sidenav-container class=\"example-sidenav-container\">\r\n <mat-sidenav #snav mode=\"side\" opened>\r\n <mat-nav-list>\r\n <a mat-list-item>Windows</a>\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <tru-app-window-settings></tru-app-window-settings>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Close</button>\r\n</div>\r\n", styles: ["::ng-deep .mat-mdc-dialog-surface{padding:20px}.mat-mdc-dialog-title:before{content:unset!important;height:unset!important;padding:0 0 10px!important}.mat-dialog-title-container mat-icon{vertical-align:sub;height:24px;width:24px}mat-nav-list{width:200px}mat-sidenav-content{height:calc(100vh - 400px)}mat-sidenav-content{padding-left:10px}.mat-dialog-title-container{display:inline}.mdc-dialog__title{padding:0 0 10px!important}.mdc-dialog__content{padding:10px 0 15px!important}.mat-mdc-dialog-content p{margin-bottom:0;font-size:14px;color:#545454}.mat-mdc-dialog-actions{padding:0!important}.mat-mdc-dialog-actions button{margin-right:10px}\n"], dependencies: [{ kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: i6.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i6.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i6.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i7.TruAppWindowSettings, selector: "tru-app-window-settings" }] });
28
35
  }
29
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruAppSettingsDialog, decorators: [{
30
37
  type: Component,
31
38
  args: [{ selector: 'tru-app-settings-dialog', providers: [TruDataContext, TruUserPreferenceManager], template: "<div mat-dialog-title class=\"mat-dialog-title\">\r\n <div class=\"mat-dialog-title-container\">\r\n <mat-icon [svgIcon]=\"'settings-icon'\"\r\n title=\"Settings\">\r\n </mat-icon>\r\n App Settings\r\n </div>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content\">\r\n <mat-sidenav-container class=\"example-sidenav-container\">\r\n <mat-sidenav #snav mode=\"side\" opened>\r\n <mat-nav-list>\r\n <a mat-list-item>Windows</a>\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <tru-app-window-settings></tru-app-window-settings>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Close</button>\r\n</div>\r\n", styles: ["::ng-deep .mat-mdc-dialog-surface{padding:20px}.mat-mdc-dialog-title:before{content:unset!important;height:unset!important;padding:0 0 10px!important}.mat-dialog-title-container mat-icon{vertical-align:sub;height:24px;width:24px}mat-nav-list{width:200px}mat-sidenav-content{height:calc(100vh - 400px)}mat-sidenav-content{padding-left:10px}.mat-dialog-title-container{display:inline}.mdc-dialog__title{padding:0 0 10px!important}.mdc-dialog__content{padding:10px 0 15px!important}.mat-mdc-dialog-content p{margin-bottom:0;font-size:14px;color:#545454}.mat-mdc-dialog-actions{padding:0!important}.mat-mdc-dialog-actions button{margin-right:10px}\n"] }]
32
- }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: TruAppSettingsDialog, decorators: [{
39
+ }], ctorParameters: () => [{ type: i1.TruAppEnvironment }, { type: i2.MatDialogRef }, { type: TruAppSettingsDialog, decorators: [{
33
40
  type: Inject,
34
41
  args: [MAT_DIALOG_DATA]
35
42
  }] }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWFwcC1zZXR0aW5ncy1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXNldHRpbmdzLWRpYWxvZy90cnUtYXBwLXNldHRpbmdzLWRpYWxvZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9hcHAtc2V0dGluZ3MtZGlhbG9nL3RydS1hcHAtc2V0dGluZ3MtZGlhbG9nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7O0FBUXRGLE1BQU0sT0FBTyxvQkFBb0I7SUFDWjtJQUNlO0lBRGxDLFlBQW1CLFNBQTZDLEVBQzlCLElBQTBCO1FBRHpDLGNBQVMsR0FBVCxTQUFTLENBQW9DO1FBQzlCLFNBQUksR0FBSixJQUFJLENBQXNCO0lBQzVELENBQUM7SUFFRCxRQUFRLEtBQUksQ0FBQztJQUViLFNBQVM7UUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7dUdBYlUsb0JBQW9CLDhDQUVyQixlQUFlOzJGQUZkLG9CQUFvQixrREFGcEIsQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLENBQUMsMEJDVHZELGswQkF5QkE7OzJGRGRhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSx5QkFBeUIsYUFHeEIsQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLENBQUM7OzBCQUlsRCxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0JztcclxuaW1wb3J0IHsgVHJ1VXNlclByZWZlcmVuY2VNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXVzZXItcHJlZmVyZW5jZS1tYW5hZ2VyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LWFwcC1zZXR0aW5ncy1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtYXBwLXNldHRpbmdzLWRpYWxvZy5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cnUtYXBwLXNldHRpbmdzLWRpYWxvZy5jc3MnXSxcclxuICBwcm92aWRlcnM6IFtUcnVEYXRhQ29udGV4dCwgVHJ1VXNlclByZWZlcmVuY2VNYW5hZ2VyXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1QXBwU2V0dGluZ3NEaWFsb2cgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxUcnVBcHBTZXR0aW5nc0RpYWxvZz4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFRydUFwcFNldHRpbmdzRGlhbG9nKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gIG9uQ29uZmlybSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgb25EaXNtaXNzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPGRpdiBtYXQtZGlhbG9nLXRpdGxlIGNsYXNzPVwibWF0LWRpYWxvZy10aXRsZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtYXQtZGlhbG9nLXRpdGxlLWNvbnRhaW5lclwiPlxyXG4gICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIidzZXR0aW5ncy1pY29uJ1wiXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJTZXR0aW5nc1wiPlxyXG4gICAgPC9tYXQtaWNvbj5cclxuICAgIEFwcCBTZXR0aW5nc1xyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwibWF0LWRpYWxvZy1jb250ZW50XCI+XHJcbiAgPG1hdC1zaWRlbmF2LWNvbnRhaW5lciBjbGFzcz1cImV4YW1wbGUtc2lkZW5hdi1jb250YWluZXJcIj5cclxuICAgIDxtYXQtc2lkZW5hdiAjc25hdiBtb2RlPVwic2lkZVwiIG9wZW5lZD5cclxuICAgICAgPG1hdC1uYXYtbGlzdD5cclxuICAgICAgICA8YSBtYXQtbGlzdC1pdGVtPldpbmRvd3M8L2E+XHJcbiAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgPC9tYXQtc2lkZW5hdj5cclxuICAgIDxtYXQtc2lkZW5hdi1jb250ZW50PlxyXG4gICAgICA8dHJ1LWFwcC13aW5kb3ctc2V0dGluZ3M+PC90cnUtYXBwLXdpbmRvdy1zZXR0aW5ncz5cclxuICAgIDwvbWF0LXNpZGVuYXYtY29udGVudD5cclxuICA8L21hdC1zaWRlbmF2LWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cIm1hdC1kaWFsb2ctYWN0aW9uc1wiPlxyXG4gIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIm9uRGlzbWlzcygpXCI+Q2xvc2U8L2J1dHRvbj5cclxuPC9kaXY+XHJcbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWFwcC1zZXR0aW5ncy1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXNldHRpbmdzLWRpYWxvZy90cnUtYXBwLXNldHRpbmdzLWRpYWxvZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9hcHAtc2V0dGluZ3MtZGlhbG9nL3RydS1hcHAtc2V0dGluZ3MtZGlhbG9nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7OztBQVN0RixNQUFNLE9BQU8sb0JBQW9CO0lBSXJCO0lBQ0Q7SUFDeUI7SUFMMUIsaUJBQWlCLENBQWlCO0lBRTFDLFlBQ1UsY0FBaUMsRUFDbEMsU0FBNkMsRUFDcEIsSUFBMEI7UUFGbEQsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2xDLGNBQVMsR0FBVCxTQUFTLENBQW9DO1FBQ3BCLFNBQUksR0FBSixJQUFJLENBQXNCO1FBQzFELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFtQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxRQUFRLEtBQUksQ0FBQztJQUViLFNBQVM7UUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzt1R0FwQlUsb0JBQW9CLCtFQU1yQixlQUFlOzJGQU5kLG9CQUFvQixrREFGcEIsQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLENBQUMsMEJDVnZELGswQkF5QkE7OzJGRGJhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSx5QkFBeUIsYUFHeEIsQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLENBQUM7OzBCQVFsRCxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0JztcclxuaW1wb3J0IHsgVHJ1VXNlclByZWZlcmVuY2VNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXVzZXItcHJlZmVyZW5jZS1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtYXBwLWVudmlyb25tZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LWFwcC1zZXR0aW5ncy1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtYXBwLXNldHRpbmdzLWRpYWxvZy5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cnUtYXBwLXNldHRpbmdzLWRpYWxvZy5jc3MnXSxcclxuICBwcm92aWRlcnM6IFtUcnVEYXRhQ29udGV4dCwgVHJ1VXNlclByZWZlcmVuY2VNYW5hZ2VyXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1QXBwU2V0dGluZ3NEaWFsb2cgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgZ2xvYmFsRGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFRydUFwcFNldHRpbmdzRGlhbG9nPixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogVHJ1QXBwU2V0dGluZ3NEaWFsb2cpIHtcclxuICAgIHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQgPSB0aGlzLmFwcEVudmlyb25tZW50Lmdsb2JhbERhdGFDb250ZXh0IGFzIFRydURhdGFDb250ZXh0O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7fVxyXG5cclxuICBvbkNvbmZpcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcclxuICB9XHJcblxyXG4gIG9uRGlzbWlzcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQuc2F2ZVNldHRpbmdzKCkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKTtcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG4iLCI8ZGl2IG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJtYXQtZGlhbG9nLXRpdGxlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1hdC1kaWFsb2ctdGl0bGUtY29udGFpbmVyXCI+XHJcbiAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiJ3NldHRpbmdzLWljb24nXCJcclxuICAgICAgICAgICAgICB0aXRsZT1cIlNldHRpbmdzXCI+XHJcbiAgICA8L21hdC1pY29uPlxyXG4gICAgQXBwIFNldHRpbmdzXHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJtYXQtZGlhbG9nLWNvbnRlbnRcIj5cclxuICA8bWF0LXNpZGVuYXYtY29udGFpbmVyIGNsYXNzPVwiZXhhbXBsZS1zaWRlbmF2LWNvbnRhaW5lclwiPlxyXG4gICAgPG1hdC1zaWRlbmF2ICNzbmF2IG1vZGU9XCJzaWRlXCIgb3BlbmVkPlxyXG4gICAgICA8bWF0LW5hdi1saXN0PlxyXG4gICAgICAgIDxhIG1hdC1saXN0LWl0ZW0+V2luZG93czwvYT5cclxuICAgICAgPC9tYXQtbmF2LWxpc3Q+XHJcbiAgICA8L21hdC1zaWRlbmF2PlxyXG4gICAgPG1hdC1zaWRlbmF2LWNvbnRlbnQ+XHJcbiAgICAgIDx0cnUtYXBwLXdpbmRvdy1zZXR0aW5ncz48L3RydS1hcHAtd2luZG93LXNldHRpbmdzPlxyXG4gICAgPC9tYXQtc2lkZW5hdi1jb250ZW50PlxyXG4gIDwvbWF0LXNpZGVuYXYtY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zIGNsYXNzPVwibWF0LWRpYWxvZy1hY3Rpb25zXCI+XHJcbiAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwib25EaXNtaXNzKClcIj5DbG9zZTwvYnV0dG9uPlxyXG48L2Rpdj5cclxuIl19
@@ -1,3 +1,3 @@
1
1
  export class TruWindowOpenOnStartSetting {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXdpbmRvdy1vcGVuLW9uLXN0YXJ0LXNldHRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXNldHRpbmdzLWRpYWxvZy93aW5kb3dzL2NsYXNzZXMvdHJ1LXdpbmRvdy1vcGVuLW9uLXN0YXJ0LXNldHRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQiwyQkFBMkI7Q0FLaEQiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJ1V2luZG93T3Blbk9uU3RhcnRTZXR0aW5nIHtcclxuICBhYnN0cmFjdCBuYW1lOiBzdHJpbmc7XHJcbiAgYWJzdHJhY3QgbGFiZWw6IHN0cmluZztcclxuICBhYnN0cmFjdCBjaGVja2VkOiBib29sZWFuO1xyXG4gIGFic3RyYWN0IG1vZGlmaWVkOiBib29sZWFuO1xyXG59XHJcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXdpbmRvdy1vcGVuLW9uLXN0YXJ0LXNldHRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXNldHRpbmdzLWRpYWxvZy93aW5kb3dzL2NsYXNzZXMvdHJ1LXdpbmRvdy1vcGVuLW9uLXN0YXJ0LXNldHRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQiwyQkFBMkI7Q0FNaEQiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJ1V2luZG93T3Blbk9uU3RhcnRTZXR0aW5nIHtcclxuICBhYnN0cmFjdCBuYW1lOiBzdHJpbmc7XHJcbiAgYWJzdHJhY3QgbGFiZWw6IHN0cmluZztcclxuICBhYnN0cmFjdCBjaGVja2VkOiBib29sZWFuO1xyXG4gIGFic3RyYWN0IGludGVudE9wZW5PblN0YXJ0OiBib29sZWFuO1xyXG4gIGFic3RyYWN0IG1vZGlmaWVkOiBib29sZWFuO1xyXG59XHJcbiJdfQ==
@@ -18,19 +18,27 @@ export class TruAppWindowOpenOnStartupSetting {
18
18
  tables.forEach((table) => {
19
19
  let name = table.name?.toUpperCase() + '_OPEN_ON_START';
20
20
  let openOnStart = table.openOnStart;
21
- let userPreferenceOpenOnStart = this.userPreferenceManager.get(name);
21
+ let userPreferenceOpenOnStart = this.userPreferenceManager.get(name)[0];
22
22
  if (userPreferenceOpenOnStart)
23
- openOnStart = Boolean(userPreferenceOpenOnStart);
23
+ openOnStart = Boolean(userPreferenceOpenOnStart.Value);
24
24
  openOnStartSettings.push({
25
25
  name: name,
26
26
  label: table.name,
27
27
  checked: openOnStart,
28
+ intentOpenOnStart: table.openOnStart,
28
29
  modified: false
29
30
  });
30
31
  });
31
32
  this.settings = openOnStartSettings;
32
33
  }
33
34
  onRowClicked = (row) => {
35
+ let userPreferenceOpenOnStart = this.userPreferenceManager.get(row.name);
36
+ if (userPreferenceOpenOnStart) {
37
+ userPreferenceOpenOnStart.Value = row.checked;
38
+ }
39
+ else {
40
+ this.userPreferenceManager.set(row.name, String(row.checked));
41
+ }
34
42
  row.checked = !row.checked;
35
43
  row.modified = true;
36
44
  };
@@ -38,10 +46,10 @@ export class TruAppWindowOpenOnStartupSetting {
38
46
  this.displayedColumns = ['label', 'checked'];
39
47
  }
40
48
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruAppWindowOpenOnStartupSetting, deps: [{ token: i1.TruUserPreferenceManager }, { token: i2.TruModelTableLookup }], target: i0.ɵɵFactoryTarget.Component });
41
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruAppWindowOpenOnStartupSetting, selector: "tru-app-window-open-on-startup-setting", ngImport: i0, template: "<p>Open Window(s) On Startup</p>\r\n<table mat-table [dataSource]=\"settings\">\r\n <ng-container matColumnDef=\"label\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.label}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"checked\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\" class=\"tru-app-window-open-on-startup-checkbox\">\r\n <mat-checkbox [(ngModel)]=\"element.checked\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onRowClicked(row)\"></tr>\r\n</table>\r\n", styles: [".tru-app-window-open-on-startup-checkbox{text-align:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i5.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }] });
49
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruAppWindowOpenOnStartupSetting, selector: "tru-app-window-open-on-startup-setting", ngImport: i0, template: "<p>Open Window(s) On Startup</p>\r\n<table mat-table [dataSource]=\"settings\">\r\n <ng-container matColumnDef=\"label\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.label}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"checked\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\" class=\"tru-app-window-open-on-startup-checkbox\">\r\n <mat-checkbox [(ngModel)]=\"element.checked\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onRowClicked(row)\"></tr>\r\n</table>\r\n", styles: [".tru-app-window-open-on-startup-checkbox{text-align:center;justify-content:center}.tru-app-window-open-on-startup-checkbox mat-checkbox{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i5.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }] });
42
50
  }
43
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruAppWindowOpenOnStartupSetting, decorators: [{
44
52
  type: Component,
45
- args: [{ selector: 'tru-app-window-open-on-startup-setting', template: "<p>Open Window(s) On Startup</p>\r\n<table mat-table [dataSource]=\"settings\">\r\n <ng-container matColumnDef=\"label\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.label}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"checked\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\" class=\"tru-app-window-open-on-startup-checkbox\">\r\n <mat-checkbox [(ngModel)]=\"element.checked\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onRowClicked(row)\"></tr>\r\n</table>\r\n", styles: [".tru-app-window-open-on-startup-checkbox{text-align:center;justify-content:center}\n"] }]
53
+ args: [{ selector: 'tru-app-window-open-on-startup-setting', template: "<p>Open Window(s) On Startup</p>\r\n<table mat-table [dataSource]=\"settings\">\r\n <ng-container matColumnDef=\"label\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.label}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"checked\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\" class=\"tru-app-window-open-on-startup-checkbox\">\r\n <mat-checkbox [(ngModel)]=\"element.checked\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onRowClicked(row)\"></tr>\r\n</table>\r\n", styles: [".tru-app-window-open-on-startup-checkbox{text-align:center;justify-content:center}.tru-app-window-open-on-startup-checkbox mat-checkbox{pointer-events:none}\n"] }]
46
54
  }], ctorParameters: () => [{ type: i1.TruUserPreferenceManager }, { type: i2.TruModelTableLookup }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWFwcC13aW5kb3ctb3Blbi1vbi1zdGFydHVwLXNldHRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXNldHRpbmdzLWRpYWxvZy93aW5kb3dzL29uLXN0YXJ1cC90cnUtYXBwLXdpbmRvdy1vcGVuLW9uLXN0YXJ0dXAtc2V0dGluZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9hcHAtc2V0dGluZ3MtZGlhbG9nL3dpbmRvd3Mvb24tc3RhcnVwL3RydS1hcHAtd2luZG93LW9wZW4tb24tc3RhcnR1cC1zZXR0aW5nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVdsRCxNQUFNLE9BQU8sZ0NBQWdDO0lBTWpDO0lBQ0E7SUFMVixRQUFRLEdBQXVDLEVBQUUsQ0FBQztJQUNsRCxnQkFBZ0IsR0FBYSxFQUFFLENBQUM7SUFFaEMsWUFDVSxxQkFBK0MsRUFDL0MsZ0JBQXFDO1FBRHJDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBMEI7UUFDL0MscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQUU3QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDO1FBQ3ZDLElBQUksbUJBQW1CLEdBQXVDLEVBQUUsQ0FBQztRQUNqRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBeUIsRUFBRSxFQUFFO1lBQzNDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsZ0JBQWdCLENBQUM7WUFDeEQsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUNwQyxJQUFJLHlCQUF5QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsSUFBSSx5QkFBeUI7Z0JBQzNCLFdBQVcsR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUVuRCxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxJQUFJO2dCQUNWLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBYztnQkFDM0IsT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLFFBQVEsRUFBRSxLQUFLO2FBQ2UsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztJQUN0QyxDQUFDO0lBRUQsWUFBWSxHQUFHLENBQUMsR0FBUSxFQUFFLEVBQUU7UUFDMUIsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDM0IsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQyxDQUFBO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO3VHQW5DVSxnQ0FBZ0M7MkZBQWhDLGdDQUFnQyw4RUNYN0MsbXdCQWlCQTs7MkZETmEsZ0NBQWdDO2tCQUw1QyxTQUFTOytCQUNFLHdDQUF3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRydVRhYmxlQ29uZmlnQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Jhc2UtY2xhc3Nlcy90cnUtdGFibGUtY29uZmlnLWJhc2UnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFRhYmxlTG9va3VwIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLXRhYmxlLWxvb2t1cCc7XHJcbmltcG9ydCB7IFRydVVzZXJQcmVmZXJlbmNlTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3RydS11c2VyLXByZWZlcmVuY2UtbWFuYWdlcic7XHJcbmltcG9ydCB7IFRydVdpbmRvd09wZW5PblN0YXJ0U2V0dGluZyB9IGZyb20gJy4uL2NsYXNzZXMvdHJ1LXdpbmRvdy1vcGVuLW9uLXN0YXJ0LXNldHRpbmcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtYXBwLXdpbmRvdy1vcGVuLW9uLXN0YXJ0dXAtc2V0dGluZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1hcHAtd2luZG93LW9wZW4tb24tc3RhcnR1cC1zZXR0aW5nLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1hcHAtd2luZG93LW9wZW4tb24tc3RhcnR1cC1zZXR0aW5nLmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVBcHBXaW5kb3dPcGVuT25TdGFydHVwU2V0dGluZyBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHNldHRpbmdzOiBBcnJheTxUcnVXaW5kb3dPcGVuT25TdGFydFNldHRpbmc+ID0gW107XHJcbiAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHVzZXJQcmVmZXJlbmNlTWFuYWdlcjogVHJ1VXNlclByZWZlcmVuY2VNYW5hZ2VyLFxyXG4gICAgcHJpdmF0ZSBtb2RlbFRhYmxlTG9va3VwOiBUcnVNb2RlbFRhYmxlTG9va3VwKSB7XHJcblxyXG4gICAgbGV0IHRhYmxlcyA9IHRoaXMubW9kZWxUYWJsZUxvb2t1cC5hbGw7XHJcbiAgICBsZXQgb3Blbk9uU3RhcnRTZXR0aW5nczogQXJyYXk8VHJ1V2luZG93T3Blbk9uU3RhcnRTZXR0aW5nPiA9IFtdOyAgXHJcbiAgICB0YWJsZXMuZm9yRWFjaCgodGFibGU6IFRydVRhYmxlQ29uZmlnQmFzZSkgPT4ge1xyXG4gICAgICBsZXQgbmFtZSA9IHRhYmxlLm5hbWU/LnRvVXBwZXJDYXNlKCkgKyAnX09QRU5fT05fU1RBUlQnO1xyXG4gICAgICBsZXQgb3Blbk9uU3RhcnQgPSB0YWJsZS5vcGVuT25TdGFydDtcclxuICAgICAgbGV0IHVzZXJQcmVmZXJlbmNlT3Blbk9uU3RhcnQgPSB0aGlzLnVzZXJQcmVmZXJlbmNlTWFuYWdlci5nZXQobmFtZSk7XHJcbiAgICAgIGlmICh1c2VyUHJlZmVyZW5jZU9wZW5PblN0YXJ0KVxyXG4gICAgICAgIG9wZW5PblN0YXJ0ID0gQm9vbGVhbih1c2VyUHJlZmVyZW5jZU9wZW5PblN0YXJ0KTtcclxuICAgICAgXHJcbiAgICAgIG9wZW5PblN0YXJ0U2V0dGluZ3MucHVzaCh7XHJcbiAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICBsYWJlbDogdGFibGUubmFtZSBhcyBzdHJpbmcsXHJcbiAgICAgICAgY2hlY2tlZDogb3Blbk9uU3RhcnQsXHJcbiAgICAgICAgbW9kaWZpZWQ6IGZhbHNlXHJcbiAgICAgIH0gYXMgVHJ1V2luZG93T3Blbk9uU3RhcnRTZXR0aW5nKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IG9wZW5PblN0YXJ0U2V0dGluZ3M7XHJcbiAgfVxyXG5cclxuICBvblJvd0NsaWNrZWQgPSAocm93OiBhbnkpID0+IHtcclxuICAgIHJvdy5jaGVja2VkID0gIXJvdy5jaGVja2VkO1xyXG4gICAgcm93Lm1vZGlmaWVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gWydsYWJlbCcsICdjaGVja2VkJ107XHJcbiAgfVxyXG59XHJcblxyXG4iLCI8cD5PcGVuIFdpbmRvdyhzKSBPbiBTdGFydHVwPC9wPlxyXG48dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInNldHRpbmdzXCI+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsYWJlbFwiPlxyXG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gTmFtZSA8L3RoPlxyXG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50LmxhYmVsfX0gPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJjaGVja2VkXCI+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIGNsYXNzPVwidHJ1LWFwcC13aW5kb3ctb3Blbi1vbi1zdGFydHVwLWNoZWNrYm94XCI+XHJcbiAgICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJlbGVtZW50LmNoZWNrZWRcIj48L21hdC1jaGVja2JveD5cclxuICAgIDwvdGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XHJcbiAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCIgKGNsaWNrKT1cIm9uUm93Q2xpY2tlZChyb3cpXCI+PC90cj5cclxuPC90YWJsZT5cclxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWFwcC13aW5kb3ctb3Blbi1vbi1zdGFydHVwLXNldHRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXNldHRpbmdzLWRpYWxvZy93aW5kb3dzL29uLXN0YXJ1cC90cnUtYXBwLXdpbmRvdy1vcGVuLW9uLXN0YXJ0dXAtc2V0dGluZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9hcHAtc2V0dGluZ3MtZGlhbG9nL3dpbmRvd3Mvb24tc3RhcnVwL3RydS1hcHAtd2luZG93LW9wZW4tb24tc3RhcnR1cC1zZXR0aW5nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVdsRCxNQUFNLE9BQU8sZ0NBQWdDO0lBTWpDO0lBQ0E7SUFMVixRQUFRLEdBQXVDLEVBQUUsQ0FBQztJQUNsRCxnQkFBZ0IsR0FBYSxFQUFFLENBQUM7SUFFaEMsWUFDVSxxQkFBK0MsRUFDL0MsZ0JBQXFDO1FBRHJDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBMEI7UUFDL0MscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQUU3QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDO1FBQ3ZDLElBQUksbUJBQW1CLEdBQXVDLEVBQUUsQ0FBQztRQUNqRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBeUIsRUFBRSxFQUFFO1lBQzNDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsZ0JBQWdCLENBQUM7WUFDeEQsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUNwQyxJQUFJLHlCQUF5QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEUsSUFBSSx5QkFBeUI7Z0JBQzNCLFdBQVcsR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFekQsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUN2QixJQUFJLEVBQUUsSUFBSTtnQkFDVixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQWM7Z0JBQzNCLE9BQU8sRUFBRSxXQUFXO2dCQUNwQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDcEMsUUFBUSxFQUFFLEtBQUs7YUFDZSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLG1CQUFtQixDQUFDO0lBQ3RDLENBQUM7SUFFRCxZQUFZLEdBQUcsQ0FBQyxHQUFnQyxFQUFFLEVBQUU7UUFDbEQsSUFBSSx5QkFBeUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RSxJQUFJLHlCQUF5QixFQUFFLENBQUM7WUFDOUIseUJBQXlCLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQy9ELENBQUM7UUFDRCxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUMzQixHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDLENBQUE7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7dUdBMUNVLGdDQUFnQzsyRkFBaEMsZ0NBQWdDLDhFQ1g3Qyxtd0JBaUJBOzsyRkROYSxnQ0FBZ0M7a0JBTDVDLFNBQVM7K0JBQ0Usd0NBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJ1VGFibGVDb25maWdCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vYmFzZS1jbGFzc2VzL3RydS10YWJsZS1jb25maWctYmFzZSc7XHJcbmltcG9ydCB7IFRydU1vZGVsVGFibGVMb29rdXAgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtdGFibGUtbG9va3VwJztcclxuaW1wb3J0IHsgVHJ1VXNlclByZWZlcmVuY2VNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvdHJ1LXVzZXItcHJlZmVyZW5jZS1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1V2luZG93T3Blbk9uU3RhcnRTZXR0aW5nIH0gZnJvbSAnLi4vY2xhc3Nlcy90cnUtd2luZG93LW9wZW4tb24tc3RhcnQtc2V0dGluZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydS1hcHAtd2luZG93LW9wZW4tb24tc3RhcnR1cC1zZXR0aW5nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWFwcC13aW5kb3ctb3Blbi1vbi1zdGFydHVwLXNldHRpbmcuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWFwcC13aW5kb3ctb3Blbi1vbi1zdGFydHVwLXNldHRpbmcuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRydUFwcFdpbmRvd09wZW5PblN0YXJ0dXBTZXR0aW5nIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgc2V0dGluZ3M6IEFycmF5PFRydVdpbmRvd09wZW5PblN0YXJ0U2V0dGluZz4gPSBbXTtcclxuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdXNlclByZWZlcmVuY2VNYW5hZ2VyOiBUcnVVc2VyUHJlZmVyZW5jZU1hbmFnZXIsXHJcbiAgICBwcml2YXRlIG1vZGVsVGFibGVMb29rdXA6IFRydU1vZGVsVGFibGVMb29rdXApIHtcclxuXHJcbiAgICBsZXQgdGFibGVzID0gdGhpcy5tb2RlbFRhYmxlTG9va3VwLmFsbDtcclxuICAgIGxldCBvcGVuT25TdGFydFNldHRpbmdzOiBBcnJheTxUcnVXaW5kb3dPcGVuT25TdGFydFNldHRpbmc+ID0gW107ICBcclxuICAgIHRhYmxlcy5mb3JFYWNoKCh0YWJsZTogVHJ1VGFibGVDb25maWdCYXNlKSA9PiB7XHJcbiAgICAgIGxldCBuYW1lID0gdGFibGUubmFtZT8udG9VcHBlckNhc2UoKSArICdfT1BFTl9PTl9TVEFSVCc7XHJcbiAgICAgIGxldCBvcGVuT25TdGFydCA9IHRhYmxlLm9wZW5PblN0YXJ0O1xyXG4gICAgICBsZXQgdXNlclByZWZlcmVuY2VPcGVuT25TdGFydCA9IHRoaXMudXNlclByZWZlcmVuY2VNYW5hZ2VyLmdldChuYW1lKVswXTtcclxuICAgICAgaWYgKHVzZXJQcmVmZXJlbmNlT3Blbk9uU3RhcnQpXHJcbiAgICAgICAgb3Blbk9uU3RhcnQgPSBCb29sZWFuKHVzZXJQcmVmZXJlbmNlT3Blbk9uU3RhcnQuVmFsdWUpO1xyXG4gICAgICBcclxuICAgICAgb3Blbk9uU3RhcnRTZXR0aW5ncy5wdXNoKHtcclxuICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgIGxhYmVsOiB0YWJsZS5uYW1lIGFzIHN0cmluZyxcclxuICAgICAgICBjaGVja2VkOiBvcGVuT25TdGFydCxcclxuICAgICAgICBpbnRlbnRPcGVuT25TdGFydDogdGFibGUub3Blbk9uU3RhcnQsXHJcbiAgICAgICAgbW9kaWZpZWQ6IGZhbHNlXHJcbiAgICAgIH0gYXMgVHJ1V2luZG93T3Blbk9uU3RhcnRTZXR0aW5nKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IG9wZW5PblN0YXJ0U2V0dGluZ3M7XHJcbiAgfVxyXG5cclxuICBvblJvd0NsaWNrZWQgPSAocm93OiBUcnVXaW5kb3dPcGVuT25TdGFydFNldHRpbmcpID0+IHtcclxuICAgIGxldCB1c2VyUHJlZmVyZW5jZU9wZW5PblN0YXJ0ID0gdGhpcy51c2VyUHJlZmVyZW5jZU1hbmFnZXIuZ2V0KHJvdy5uYW1lKTtcclxuICAgIGlmICh1c2VyUHJlZmVyZW5jZU9wZW5PblN0YXJ0KSB7XHJcbiAgICAgIHVzZXJQcmVmZXJlbmNlT3Blbk9uU3RhcnQuVmFsdWUgPSByb3cuY2hlY2tlZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXNlclByZWZlcmVuY2VNYW5hZ2VyLnNldChyb3cubmFtZSwgU3RyaW5nKHJvdy5jaGVja2VkKSlcclxuICAgIH1cclxuICAgIHJvdy5jaGVja2VkID0gIXJvdy5jaGVja2VkO1xyXG4gICAgcm93Lm1vZGlmaWVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gWydsYWJlbCcsICdjaGVja2VkJ107XHJcbiAgfVxyXG59XHJcblxyXG4iLCI8cD5PcGVuIFdpbmRvdyhzKSBPbiBTdGFydHVwPC9wPlxyXG48dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInNldHRpbmdzXCI+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsYWJlbFwiPlxyXG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gTmFtZSA8L3RoPlxyXG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50LmxhYmVsfX0gPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJjaGVja2VkXCI+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIGNsYXNzPVwidHJ1LWFwcC13aW5kb3ctb3Blbi1vbi1zdGFydHVwLWNoZWNrYm94XCI+XHJcbiAgICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJlbGVtZW50LmNoZWNrZWRcIj48L21hdC1jaGVja2JveD5cclxuICAgIDwvdGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XHJcbiAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCIgKGNsaWNrKT1cIm9uUm93Q2xpY2tlZChyb3cpXCI+PC90cj5cclxuPC90YWJsZT5cclxuIl19
@@ -20,6 +20,7 @@ export class TruAppEnvironment {
20
20
  msgConfirmExitWithChangesPending;
21
21
  msgDeleteSuccessful;
22
22
  msgSaveSuccessful;
23
+ msgSettingsUpdatedSuccessful;
23
24
  msgNoChangesToSave;
24
25
  msgSaveInProgress;
25
26
  msgInvalidData;
@@ -49,6 +50,7 @@ export class TruAppEnvironment {
49
50
  this.msgConfirmExitWithChangesPending = 'You have unsaved changes that will be lost.';
50
51
  this.msgDeleteSuccessful = 'Delete succeeded';
51
52
  this.msgSaveSuccessful = 'Save succeeded';
53
+ this.msgSettingsUpdatedSuccessful = 'Settings updated';
52
54
  this.msgNoChangesToSave = 'No changes to save';
53
55
  this.msgSaveInProgress = 'Save in progress';
54
56
  this.msgInvalidData = 'Invalid data';
@@ -160,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
160
162
  providedIn: 'root',
161
163
  }]
162
164
  }], ctorParameters: () => [] });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWFwcC1lbnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LWFwcC1lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBV25ELE1BQU0sT0FBTyxpQkFBaUI7SUFDcEIsUUFBUSxDQUFTO0lBQ2pCLGVBQWUsQ0FBUztJQUN4QixPQUFPLENBQVM7SUFDaEIsdUJBQXVCLENBQVU7SUFDakMsbUJBQW1CLENBQVM7SUFDNUIsbUJBQW1CLENBQVM7SUFDNUIsZUFBZSxDQUFTO0lBRXhCLFNBQVMsQ0FBb0I7SUFDN0IsZUFBZSxDQUFTO0lBQ3hCLFNBQVMsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDMUUsYUFBYSxHQUFpRCxJQUFJLGVBQWUsQ0FBOEIsSUFBSSxDQUFDLENBQUM7SUFDckgsZUFBZSxHQUFpRCxJQUFJLGVBQWUsQ0FBOEIsSUFBSSxDQUFDLENBQUM7SUFDdkgsZUFBZSxHQUFpRCxJQUFJLGVBQWUsQ0FBOEIsSUFBSSxDQUFDLENBQUM7SUFDdkgsa0JBQWtCLEdBQTBCLElBQUksQ0FBQztJQUVoRCxtQkFBbUIsQ0FBUztJQUM1QixnQ0FBZ0MsQ0FBUztJQUN6QyxtQkFBbUIsQ0FBUztJQUM1QixpQkFBaUIsQ0FBUztJQUMxQixrQkFBa0IsQ0FBUztJQUMzQixpQkFBaUIsQ0FBUztJQUMxQixjQUFjLENBQVM7SUFDdkIsd0JBQXdCLENBQVM7SUFDakMsd0JBQXdCLENBQVM7SUFDakMscUJBQXFCLENBQVM7SUFDOUIsb0NBQW9DLENBQVM7SUFDN0MsaUJBQWlCLENBQVM7SUFDMUIsb0NBQW9DLENBQVM7SUFDN0MsZ0NBQWdDLENB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IkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSBcImJyZWV6ZS1jbGllbnRcIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tIFwiLi90cnUtZGF0YS1jb250ZXh0XCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkV2ZW50Q29tcGxldGVkIHtcclxuICBzdWNjZXNzZnVsOiBib29sZWFuO1xyXG4gIGVudGl0aWVzPzogQXJyYXk8RW50aXR5PjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRydUFwcEVudmlyb25tZW50IHtcclxuICBwcml2YXRlIF9hcHBOYW1lOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfYXBwRGVzY3JpcHRpb246IHN0cmluZztcclxuICBwcml2YXRlIF9hcHBVcmk6IHN0cmluZztcclxuICBwcml2YXRlIF9lbmFibGVQYXNzd29yZFN0cmVuZ3RoOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX2JhY2tncm91bmRJbWFnZVVyaTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2Vudmlyb25tZW50V2FybmluZzogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2xvZ2luRm9ybVRpdGxlOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgX2F1dGhUeXBlOiAnc2Vzc2lvbicgfCAnand0JztcclxuICBwcml2YXRlIF9tYXhSZWNvcmRDb3VudDogbnVtYmVyO1xyXG4gIHByaXZhdGUgX2lzU2F2aW5nOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcml2YXRlIF9zYXZlQ29tcGxldGU6IEJlaGF2aW9yU3ViamVjdDxBY3Rpb25FdmVudENvbXBsZXRlZCB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBY3Rpb25FdmVudENvbXBsZXRlZCB8IG51bGw+KG51bGwpO1xyXG4gIHByaXZhdGUgX3JldmVydENvbXBsZXRlOiBCZWhhdmlvclN1YmplY3Q8QWN0aW9uRXZlbnRDb21wbGV0ZWQgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QWN0aW9uRXZlbnRDb21wbGV0ZWQgfCBudWxsPihudWxsKTtcclxuICBwcml2YXRlIF9kZWxldGVDb21wbGV0ZTogQmVoYXZpb3JTdWJqZWN0PEFjdGlvbkV2ZW50Q29tcGxldGVkIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFjdGlvbkV2ZW50Q29tcGxldGVkIHwgbnVsbD4obnVsbCk7XHJcbiAgcHJpdmF0ZSBfZ2xvYmFsRGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHJlYWRvbmx5IG1zZ01vZGlmaWVyS2V5TGFiZWw6IHN0cmluZztcclxuICByZWFkb25seSBtc2dDb25maXJtRXhpdFdpdGhDaGFuZ2VzUGVuZGluZzogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ0RlbGV0ZVN1Y2Nlc3NmdWw6IHN0cmluZztcclxuICByZWFkb25seSBtc2dTYXZlU3VjY2Vzc2Z1bDogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ05vQ2hhbmdlc1RvU2F2ZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ1NhdmVJblByb2dyZXNzOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnSW52YWxpZERhdGE6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEaXJ0eVByZXZlbnRzUmVhZE9ubHk6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEaXJ0eVByZXZlbnRzTmF2aWdhdGU6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEaXJ0eVByZXZlbnRzQ2xvc2U6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEaXJ0eVByZXZlbnRzRGVsZXRlRXhpc3RpbmdSZWNvcmQ6IHN0cmluZztcclxuICByZWFkb25seSBtc2dOb0RlbGV0ZUFjY2Vzczogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ0Nhbm5vdERlbGV0ZU5ld0FuZEV4aXN0aW5nUmVjb3Jkczogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ0RlbGV0ZVJlZmVyZW5jaW5nUmVjb3Jkc0ZpcnN0OiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnTm9SZWNvcmRzU2VsZWN0ZWQ6IHN0cmluZztcclxuXHJcbiAgcHVibGljIG9uU2F2aW5nQ2hhbmdlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9pc1NhdmluZy5hc09ic2VydmFibGUoKTtcclxuICBwdWJsaWMgb25TYXZlQ29tcGxldGUkOiBPYnNlcnZhYmxlPEFjdGlvbkV2ZW50Q29tcGxldGVkIHwgbnVsbD4gPSB0aGlzLl9zYXZlQ29tcGxldGUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcHVibGljIG9uUmV2ZXJ0Q29tcGxldGUkOiBPYnNlcnZhYmxlPEFjdGlvbkV2ZW50Q29tcGxldGVkIHwgbnVsbD4gPSB0aGlzLl9yZXZlcnRDb21wbGV0ZS5hc09ic2VydmFibGUoKTtcclxuICBwdWJsaWMgb25EZWxldGVDb21wbGV0ZSQ6IE9ic2VydmFibGU8QWN0aW9uRXZlbnRDb21wbGV0ZWQgfCBudWxsPiA9IHRoaXMuX2RlbGV0ZUNvbXBsZXRlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuX2FwcE5hbWUgPSAnJztcclxuICAgIHRoaXMuX2FwcERlc2NyaXB0aW9uID0gJyc7XHJcbiAgICB0aGlzLl9hcHBVcmkgPSAnJztcclxuICAgIHRoaXMuX2VuYWJsZVBhc3N3b3JkU3RyZW5ndGggPSB0cnVlO1xyXG4gICAgdGhpcy5fYmFja2dyb3VuZEltYWdlVXJpID0gJyc7XHJcbiAgICB0aGlzLl9lbnZpcm9ubWVudFdhcm5pbmcgPSAnJztcclxuICAgIHRoaXMuX2xvZ2luRm9ybVRpdGxlID0gJyc7XHJcbiAgICB0aGlzLl9hdXRoVHlwZSA9ICdqd3QnO1xyXG4gICAgdGhpcy5fbWF4UmVjb3JkQ291bnQgPSAwO1xyXG4gICAgXHJcbiAgICB0aGlzLm1zZ01vZGlmaWVyS2V5TGFiZWwgPSB0aGlzLmlzTWFjID8gJ0NtZCcgOiAnQ3RybCc7XHJcbiAgICB0aGlzLm1zZ0NvbmZpcm1FeGl0V2l0aENoYW5nZXNQZW5kaW5nID0gJ1lvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyB0aGF0IHdpbGwgYmUgbG9zdC4nO1xyXG4gICAgdGhpcy5tc2dEZWxldGVTdWNjZXNzZnVsID0gJ0RlbGV0ZSBzdWNjZWVkZWQnO1xyXG4gICAgdGhpcy5tc2dTYXZlU3VjY2Vzc2Z1bCA9ICdTYXZlIHN1Y2NlZWRlZCc7XHJcbiAgICB0aGlzLm1zZ05vQ2hhbmdlc1RvU2F2ZSA9ICdObyBjaGFuZ2VzIHRvIHNhdmUnO1xyXG4gICAgdGhpcy5tc2dTYXZlSW5Qcm9ncmVzcyA9ICdTYXZlIGluIHByb2dyZXNzJztcclxuICAgIHRoaXMubXNnSW52YWxpZERhdGEgPSAnSW52YWxpZCBkYXRhJztcclxuICAgIHRoaXMubXNnRGlydHlQcmV2ZW50c1JlYWRPbmx5ID0gJ1NhdmUgb3IgcmV2ZXJ0IGJlZm9yZSBkaXNhYmxpbmcgZWRpdGluZyc7XHJcbiAgICB0aGlzLm1zZ0RpcnR5UHJldmVudHNOYXZpZ2F0ZSA9ICdTYXZlIG9yIHJldmVydCBiZWZvcmUgbmF2aWdhdGluZyc7XHJcbiAgICB0aGlzLm1zZ0RpcnR5UHJldmVudHNDbG9zZSA9ICdTYXZlIG9yIHJldmVydCBiZWZvcmUgY2xvc2luZyB3aW5kb3cnO1xyXG4gICAgdGhpcy5tc2dEaXJ0eVByZXZlbnRzRGVsZXRlRXhpc3RpbmdSZWNvcmQgPSAnU2F2ZSBvciByZXZlcnQgYmVmb3JlIGRlbGV0aW5nJztcclxuICAgIHRoaXMubXNnTm9EZWxldGVBY2Nlc3MgPSAnQ29udGFjdCBhZG1pbmlzdHJhdG9yIGFib3V0IGRlbGV0ZSBhY2Nlc3MnO1xyXG4gICAgdGhpcy5tc2dDYW5ub3REZWxldGVOZXdBbmRFeGlzdGluZ1JlY29yZHMgPSAnRGVsZXRlIG5ldyBvciBleGlzdGluZyByZWNvcmRzIC0gYnV0IG5vdCBib3RoJztcclxuICAgIHRoaXMubXNnRGVsZXRlUmVmZXJlbmNpbmdSZWNvcmRzRmlyc3QgPSAnRGVsZXRlIGFsbCByZWZlcmVuY2luZyByZWNvcmRzIGZpcnN0JztcclxuICAgIHRoaXMubXNnTm9SZWNvcmRzU2VsZWN0ZWQgPSAnTm8gUmVjb3JkcyBzZWxlY3RlZCc7XHJcbiAgfVxyXG5cclxuICBnZXQgYXBwTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FwcE5hbWU7XHJcbiAgfVxyXG5cclxuICBzZXQgYXBwTmFtZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2FwcE5hbWUgPSBuYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFwcERlc2NyaXB0aW9uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXBwRGVzY3JpcHRpb247XHJcbiAgfTtcclxuXHJcbiAgc2V0IGFwcERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2FwcERlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XHJcbiAgfVxyXG5cclxuICBnZXQgZW5hYmxlUGFzc3dvcmRTdHJlbmd0aCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9lbmFibGVQYXNzd29yZFN0cmVuZ3RoO1xyXG4gIH07XHJcblxyXG4gIHNldCBlbmFibGVQYXNzd29yZFN0cmVuZ3RoKGVuYWJsZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZW5hYmxlUGFzc3dvcmRTdHJlbmd0aCA9IGVuYWJsZTtcclxuICB9XHJcblxyXG4gIGdldCBiYWNrZ3JvdW5kSW1hZ2VVcmkoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9iYWNrZ3JvdW5kSW1hZ2VVcmk7XHJcbiAgfTtcclxuXHJcbiAgc2V0IGJhY2tncm91bmRJbWFnZVVyaSh1cmk6IHN0cmluZykge1xyXG4gICAgdGhpcy5fYmFja2dyb3VuZEltYWdlVXJpID0gdXJpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVudmlyb25tZW50V2FybmluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50V2FybmluZztcclxuICB9O1xyXG5cclxuICBzZXQgZW52aXJvbm1lbnRXYXJuaW5nKGRlc2NyaXB0aW9uOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2Vudmlyb25tZW50V2FybmluZyA9IGRlc2NyaXB0aW9uO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxvZ2luRm9ybVRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9naW5Gb3JtVGl0bGU7XHJcbiAgfTtcclxuXHJcbiAgc2V0IGxvZ2luRm9ybVRpdGxlKGRlc2NyaXB0aW9uOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2xvZ2luRm9ybVRpdGxlID0gZGVzY3JpcHRpb247XHJcbiAgfVxyXG5cclxuICBnZXQgYXBwVXJpKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXBwVXJpO1xyXG4gIH1cclxuXHJcbiAgc2V0IGFwcFVyaSh1cmk6IHN0cmluZykge1xyXG4gICAgdGhpcy5fYXBwVXJpID0gdXJpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGF1dGhUeXBlKCk6ICdzZXNzaW9uJyB8ICdqd3QnIHtcclxuICAgIHJldHVybiB0aGlzLl9hdXRoVHlwZTtcclxuICB9XHJcblxyXG4gIHNldCBhdXRoVHlwZSh0eXBlOiAnc2Vzc2lvbicgfCAnand0Jykge1xyXG4gICAgdGhpcy5fYXV0aFR5cGUgPSB0eXBlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzU2F2aW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzU2F2aW5nLmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBzZXQgaXNTYXZpbmcoaXNTYXZpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2lzU2F2aW5nLm5leHQoaXNTYXZpbmcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heFJlY29yZENvdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4UmVjb3JkQ291bnQ7XHJcbiAgfVxyXG5cclxuICBzZXQgbWF4UmVjb3JkQ291bnQobWF4UmVjb3JkQ291bnQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5fbWF4UmVjb3JkQ291bnQgPSBtYXhSZWNvcmRDb3VudDtcclxuICB9XHJcblxyXG4gIGdldCBnbG9iYWxEYXRhQ29udGV4dCgpOiBUcnVEYXRhQ29udGV4dCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2dsb2JhbERhdGFDb250ZXh0O1xyXG4gIH1cclxuXHJcbiAgc2V0IGdsb2JhbERhdGFDb250ZXh0KGNvbnRleHQ6IFRydURhdGFDb250ZXh0IHwgbnVsbCkge1xyXG4gICAgdGhpcy5fZ2xvYmFsRGF0YUNvbnRleHQgPSBjb250ZXh0IDtcclxuICB9XHJcblxyXG4gIGdldCBpc01hYygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBuYXZpZ2F0b3IucGxhdGZvcm0udG9VcHBlckNhc2UoKS5pbmRleE9mKCdNQUMnKSA+PSAwO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUNvbXBsZXRlID0gKGV2ZW50OiBBY3Rpb25FdmVudENvbXBsZXRlZCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy5fc2F2ZUNvbXBsZXRlLm5leHQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0Q29tcGxldGUgPSAoZXZlbnQ6IEFjdGlvbkV2ZW50Q29tcGxldGVkKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLl9yZXZlcnRDb21wbGV0ZS5uZXh0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUNvbXBsZXRlID0gKGV2ZW50OiBBY3Rpb25FdmVudENvbXBsZXRlZCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy5fZGVsZXRlQ29tcGxldGUubmV4dChldmVudCk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXREZWxldGVDb25maXJtYXRpb25NZXNzYWdlID0gKHRhYmxlTmFtZTogc3RyaW5nLCB0YWJsZVBsdXJhbExhYmVsOiBzdHJpbmcsIGNvdW50OiBudW1iZXIgfCBudWxsKTogc3RyaW5nID0+IHtcclxuICAgIGlmIChjb3VudCA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgJyArIHRhYmxlTmFtZSArICc/JztcclxuICAgIGlmIChjb3VudCA9PT0gMSlcclxuICAgICAgcmV0dXJuICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIDEgJyArIHRhYmxlTmFtZSArICc/JztcclxuICAgIHJldHVybiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSAnICsgY291bnQgKyAnICcgKyB0YWJsZVBsdXJhbExhYmVsICsgJz8nO1xyXG4gIH1cclxufVxyXG4iXX0=
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWFwcC1lbnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LWFwcC1lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBV25ELE1BQU0sT0FBTyxpQkFBaUI7SUFDcEIsUUFBUSxDQUFTO0lBQ2pCLGVBQWUsQ0FBUztJQUN4QixPQUFPLENBQVM7SUFDaEIsdUJBQXVCLENBQVU7SUFDakMsbUJBQW1CLENBQVM7SUFDNUIsbUJBQW1CLENBQVM7SUFDNUIsZUFBZSxDQUFTO0lBRXhCLFNBQVMsQ0FBb0I7SUFDN0IsZUFBZSxDQUFTO0lBQ3hCLFNBQVMsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDMUUsYUFBYSxHQUFpRCxJQUFJLGVBQWUsQ0FBOEIsSUFBSSxDQUFDLENBQUM7SUFDckgsZUFBZSxHQUFpRCxJQUFJLGVBQWUsQ0FBOEIsSUFBSSxDQUFDLENBQUM7SUFDdkgsZUFBZSxHQUFpRCxJQUFJLGVBQWUsQ0FBOEIsSUFBSSxDQUFDLENBQUM7SUFDdkgsa0JBQWtCLEdBQTBCLElBQUksQ0FBQztJQUVoRCxtQkFBbUIsQ0FBUztJQUM1QixnQ0FBZ0MsQ0FBUztJQUN6QyxtQkFBbUIsQ0FBUztJQUM1QixpQkFBaUIsQ0FBUztJQUMxQiw0QkFBNEIsQ0FBUztJQUNyQyxrQkFBa0IsQ0FBUztJQUMzQixpQkFBaUIsQ0FBUztJQUMxQixjQUFjLENBQVM7SUFDdkIsd0JBQXdCLENBQVM7SUFDakMsd0JBQXdCLENBQVM7SUFDakMscUJBQXFCLENBQVM7SUFDOUIsb0NBQW9DLENBQVM7SUFDN0MsaUJBQWlCLENBQVM7SUFDMUIsb0NBQW9DLENB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QU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gXCJicmVlemUtY2xpZW50XCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSBcIi4vdHJ1LWRhdGEtY29udGV4dFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25FdmVudENvbXBsZXRlZCB7XHJcbiAgc3VjY2Vzc2Z1bDogYm9vbGVhbjtcclxuICBlbnRpdGllcz86IEFycmF5PEVudGl0eT47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVBcHBFbnZpcm9ubWVudCB7XHJcbiAgcHJpdmF0ZSBfYXBwTmFtZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2FwcERlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfYXBwVXJpOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfZW5hYmxlUGFzc3dvcmRTdHJlbmd0aDogYm9vbGVhbjtcclxuICBwcml2YXRlIF9iYWNrZ3JvdW5kSW1hZ2VVcmk6IHN0cmluZztcclxuICBwcml2YXRlIF9lbnZpcm9ubWVudFdhcm5pbmc6IHN0cmluZztcclxuICBwcml2YXRlIF9sb2dpbkZvcm1UaXRsZTogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIF9hdXRoVHlwZTogJ3Nlc3Npb24nIHwgJ2p3dCc7XHJcbiAgcHJpdmF0ZSBfbWF4UmVjb3JkQ291bnQ6IG51bWJlcjtcclxuICBwcml2YXRlIF9pc1NhdmluZzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJpdmF0ZSBfc2F2ZUNvbXBsZXRlOiBCZWhhdmlvclN1YmplY3Q8QWN0aW9uRXZlbnRDb21wbGV0ZWQgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QWN0aW9uRXZlbnRDb21wbGV0ZWQgfCBudWxsPihudWxsKTtcclxuICBwcml2YXRlIF9yZXZlcnRDb21wbGV0ZTogQmVoYXZpb3JTdWJqZWN0PEFjdGlvbkV2ZW50Q29tcGxldGVkIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFjdGlvbkV2ZW50Q29tcGxldGVkIHwgbnVsbD4obnVsbCk7XHJcbiAgcHJpdmF0ZSBfZGVsZXRlQ29tcGxldGU6IEJlaGF2aW9yU3ViamVjdDxBY3Rpb25FdmVudENvbXBsZXRlZCB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBY3Rpb25FdmVudENvbXBsZXRlZCB8IG51bGw+KG51bGwpO1xyXG4gIHByaXZhdGUgX2dsb2JhbERhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCB8IG51bGwgPSBudWxsO1xyXG5cclxuICByZWFkb25seSBtc2dNb2RpZmllcktleUxhYmVsOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnQ29uZmlybUV4aXRXaXRoQ2hhbmdlc1BlbmRpbmc6IHN0cmluZztcclxuICByZWFkb25seSBtc2dEZWxldGVTdWNjZXNzZnVsOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnU2F2ZVN1Y2Nlc3NmdWw6IHN0cmluZztcclxuICByZWFkb25seSBtc2dTZXR0aW5nc1VwZGF0ZWRTdWNjZXNzZnVsOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnTm9DaGFuZ2VzVG9TYXZlOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnU2F2ZUluUHJvZ3Jlc3M6IHN0cmluZztcclxuICByZWFkb25seSBtc2dJbnZhbGlkRGF0YTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ0RpcnR5UHJldmVudHNSZWFkT25seTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ0RpcnR5UHJldmVudHNOYXZpZ2F0ZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ0RpcnR5UHJldmVudHNDbG9zZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ0RpcnR5UHJldmVudHNEZWxldGVFeGlzdGluZ1JlY29yZDogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IG1zZ05vRGVsZXRlQWNjZXNzOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnQ2Fubm90RGVsZXRlTmV3QW5kRXhpc3RpbmdSZWNvcmRzOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgbXNnRGVsZXRlUmVmZXJlbmNpbmdSZWNvcmRzRmlyc3Q6IHN0cmluZztcclxuICByZWFkb25seSBtc2dOb1JlY29yZHNTZWxlY3RlZDogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgb25TYXZpbmdDaGFuZ2VkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2lzU2F2aW5nLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHB1YmxpYyBvblNhdmVDb21wbGV0ZSQ6IE9ic2VydmFibGU8QWN0aW9uRXZlbnRDb21wbGV0ZWQgfCBudWxsPiA9IHRoaXMuX3NhdmVDb21wbGV0ZS5hc09ic2VydmFibGUoKTtcclxuICBwdWJsaWMgb25SZXZlcnRDb21wbGV0ZSQ6IE9ic2VydmFibGU8QWN0aW9uRXZlbnRDb21wbGV0ZWQgfCBudWxsPiA9IHRoaXMuX3JldmVydENvbXBsZXRlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHB1YmxpYyBvbkRlbGV0ZUNvbXBsZXRlJDogT2JzZXJ2YWJsZTxBY3Rpb25FdmVudENvbXBsZXRlZCB8IG51bGw+ID0gdGhpcy5fZGVsZXRlQ29tcGxldGUuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fYXBwTmFtZSA9ICcnO1xyXG4gICAgdGhpcy5fYXBwRGVzY3JpcHRpb24gPSAnJztcclxuICAgIHRoaXMuX2FwcFVyaSA9ICcnO1xyXG4gICAgdGhpcy5fZW5hYmxlUGFzc3dvcmRTdHJlbmd0aCA9IHRydWU7XHJcbiAgICB0aGlzLl9iYWNrZ3JvdW5kSW1hZ2VVcmkgPSAnJztcclxuICAgIHRoaXMuX2Vudmlyb25tZW50V2FybmluZyA9ICcnO1xyXG4gICAgdGhpcy5fbG9naW5Gb3JtVGl0bGUgPSAnJztcclxuICAgIHRoaXMuX2F1dGhUeXBlID0gJ2p3dCc7XHJcbiAgICB0aGlzLl9tYXhSZWNvcmRDb3VudCA9IDA7XHJcbiAgICBcclxuICAgIHRoaXMubXNnTW9kaWZpZXJLZXlMYWJlbCA9IHRoaXMuaXNNYWMgPyAnQ21kJyA6ICdDdHJsJztcclxuICAgIHRoaXMubXNnQ29uZmlybUV4aXRXaXRoQ2hhbmdlc1BlbmRpbmcgPSAnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzIHRoYXQgd2lsbCBiZSBsb3N0Lic7XHJcbiAgICB0aGlzLm1zZ0RlbGV0ZVN1Y2Nlc3NmdWwgPSAnRGVsZXRlIHN1Y2NlZWRlZCc7XHJcbiAgICB0aGlzLm1zZ1NhdmVTdWNjZXNzZnVsID0gJ1NhdmUgc3VjY2VlZGVkJztcclxuICAgIHRoaXMubXNnU2V0dGluZ3NVcGRhdGVkU3VjY2Vzc2Z1bCA9ICdTZXR0aW5ncyB1cGRhdGVkJztcclxuICAgIHRoaXMubXNnTm9DaGFuZ2VzVG9TYXZlID0gJ05vIGNoYW5nZXMgdG8gc2F2ZSc7XHJcbiAgICB0aGlzLm1zZ1NhdmVJblByb2dyZXNzID0gJ1NhdmUgaW4gcHJvZ3Jlc3MnO1xyXG4gICAgdGhpcy5tc2dJbnZhbGlkRGF0YSA9ICdJbnZhbGlkIGRhdGEnO1xyXG4gICAgdGhpcy5tc2dEaXJ0eVByZXZlbnRzUmVhZE9ubHkgPSAnU2F2ZSBvciByZXZlcnQgYmVmb3JlIGRpc2FibGluZyBlZGl0aW5nJztcclxuICAgIHRoaXMubXNnRGlydHlQcmV2ZW50c05hdmlnYXRlID0gJ1NhdmUgb3IgcmV2ZXJ0IGJlZm9yZSBuYXZpZ2F0aW5nJztcclxuICAgIHRoaXMubXNnRGlydHlQcmV2ZW50c0Nsb3NlID0gJ1NhdmUgb3IgcmV2ZXJ0IGJlZm9yZSBjbG9zaW5nIHdpbmRvdyc7XHJcbiAgICB0aGlzLm1zZ0RpcnR5UHJldmVudHNEZWxldGVFeGlzdGluZ1JlY29yZCA9ICdTYXZlIG9yIHJldmVydCBiZWZvcmUgZGVsZXRpbmcnO1xyXG4gICAgdGhpcy5tc2dOb0RlbGV0ZUFjY2VzcyA9ICdDb250YWN0IGFkbWluaXN0cmF0b3IgYWJvdXQgZGVsZXRlIGFjY2Vzcyc7XHJcbiAgICB0aGlzLm1zZ0Nhbm5vdERlbGV0ZU5ld0FuZEV4aXN0aW5nUmVjb3JkcyA9ICdEZWxldGUgbmV3IG9yIGV4aXN0aW5nIHJlY29yZHMgLSBidXQgbm90IGJvdGgnO1xyXG4gICAgdGhpcy5tc2dEZWxldGVSZWZlcmVuY2luZ1JlY29yZHNGaXJzdCA9ICdEZWxldGUgYWxsIHJlZmVyZW5jaW5nIHJlY29yZHMgZmlyc3QnO1xyXG4gICAgdGhpcy5tc2dOb1JlY29yZHNTZWxlY3RlZCA9ICdObyBSZWNvcmRzIHNlbGVjdGVkJztcclxuICB9XHJcblxyXG4gIGdldCBhcHBOYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXBwTmFtZTtcclxuICB9XHJcblxyXG4gIHNldCBhcHBOYW1lKG5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fYXBwTmFtZSA9IG5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgYXBwRGVzY3JpcHRpb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9hcHBEZXNjcmlwdGlvbjtcclxuICB9O1xyXG5cclxuICBzZXQgYXBwRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZykge1xyXG4gICAgdGhpcy5fYXBwRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcclxuICB9XHJcblxyXG4gIGdldCBlbmFibGVQYXNzd29yZFN0cmVuZ3RoKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZVBhc3N3b3JkU3RyZW5ndGg7XHJcbiAgfTtcclxuXHJcbiAgc2V0IGVuYWJsZVBhc3N3b3JkU3RyZW5ndGgoZW5hYmxlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9lbmFibGVQYXNzd29yZFN0cmVuZ3RoID0gZW5hYmxlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGJhY2tncm91bmRJbWFnZVVyaSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2JhY2tncm91bmRJbWFnZVVyaTtcclxuICB9O1xyXG5cclxuICBzZXQgYmFja2dyb3VuZEltYWdlVXJpKHVyaTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9iYWNrZ3JvdW5kSW1hZ2VVcmkgPSB1cmk7XHJcbiAgfVxyXG5cclxuICBnZXQgZW52aXJvbm1lbnRXYXJuaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnRXYXJuaW5nO1xyXG4gIH07XHJcblxyXG4gIHNldCBlbnZpcm9ubWVudFdhcm5pbmcoZGVzY3JpcHRpb246IHN0cmluZykge1xyXG4gICAgdGhpcy5fZW52aXJvbm1lbnRXYXJuaW5nID0gZGVzY3JpcHRpb247XHJcbiAgfVxyXG5cclxuICBnZXQgbG9naW5Gb3JtVGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sb2dpbkZvcm1UaXRsZTtcclxuICB9O1xyXG5cclxuICBzZXQgbG9naW5Gb3JtVGl0bGUoZGVzY3JpcHRpb246IHN0cmluZykge1xyXG4gICAgdGhpcy5fbG9naW5Gb3JtVGl0bGUgPSBkZXNjcmlwdGlvbjtcclxuICB9XHJcblxyXG4gIGdldCBhcHBVcmkoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9hcHBVcmk7XHJcbiAgfVxyXG5cclxuICBzZXQgYXBwVXJpKHVyaTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9hcHBVcmkgPSB1cmk7XHJcbiAgfVxyXG5cclxuICBnZXQgYXV0aFR5cGUoKTogJ3Nlc3Npb24nIHwgJ2p3dCcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F1dGhUeXBlO1xyXG4gIH1cclxuXHJcbiAgc2V0IGF1dGhUeXBlKHR5cGU6ICdzZXNzaW9uJyB8ICdqd3QnKSB7XHJcbiAgICB0aGlzLl9hdXRoVHlwZSA9IHR5cGU7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNTYXZpbmcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNTYXZpbmcuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHNldCBpc1NhdmluZyhpc1NhdmluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faXNTYXZpbmcubmV4dChpc1NhdmluZyk7XHJcbiAgfVxyXG5cclxuICBnZXQgbWF4UmVjb3JkQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXhSZWNvcmRDb3VudDtcclxuICB9XHJcblxyXG4gIHNldCBtYXhSZWNvcmRDb3VudChtYXhSZWNvcmRDb3VudDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9tYXhSZWNvcmRDb3VudCA9IG1heFJlY29yZENvdW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdsb2JhbERhdGFDb250ZXh0KCk6IFRydURhdGFDb250ZXh0IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2xvYmFsRGF0YUNvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBzZXQgZ2xvYmFsRGF0YUNvbnRleHQoY29udGV4dDogVHJ1RGF0YUNvbnRleHQgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9nbG9iYWxEYXRhQ29udGV4dCA9IGNvbnRleHQgO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzTWFjKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIG5hdmlnYXRvci5wbGF0Zm9ybS50b1VwcGVyQ2FzZSgpLmluZGV4T2YoJ01BQycpID49IDA7XHJcbiAgfVxyXG5cclxuICBzYXZlQ29tcGxldGUgPSAoZXZlbnQ6IEFjdGlvbkV2ZW50Q29tcGxldGVkKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLl9zYXZlQ29tcGxldGUubmV4dChldmVudCk7XHJcbiAgfVxyXG5cclxuICByZXZlcnRDb21wbGV0ZSA9IChldmVudDogQWN0aW9uRXZlbnRDb21wbGV0ZWQpOiB2b2lkID0+IHtcclxuICAgIHRoaXMuX3JldmVydENvbXBsZXRlLm5leHQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlQ29tcGxldGUgPSAoZXZlbnQ6IEFjdGlvbkV2ZW50Q29tcGxldGVkKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLl9kZWxldGVDb21wbGV0ZS5uZXh0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGZvcm1hdERlbGV0ZUNvbmZpcm1hdGlvbk1lc3NhZ2UgPSAodGFibGVOYW1lOiBzdHJpbmcsIHRhYmxlUGx1cmFsTGFiZWw6IHN0cmluZywgY291bnQ6IG51bWJlciB8IG51bGwpOiBzdHJpbmcgPT4ge1xyXG4gICAgaWYgKGNvdW50ID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyAnICsgdGFibGVOYW1lICsgJz8nO1xyXG4gICAgaWYgKGNvdW50ID09PSAxKVxyXG4gICAgICByZXR1cm4gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgMSAnICsgdGFibGVOYW1lICsgJz8nO1xyXG4gICAgcmV0dXJuICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlICcgKyBjb3VudCArICcgJyArIHRhYmxlUGx1cmFsTGFiZWwgKyAnPyc7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -260,6 +260,27 @@ export class TruDataContext {
260
260
  });
261
261
  });
262
262
  };
263
+ saveSettings = () => {
264
+ return new Promise((resolve, reject) => {
265
+ if (this.appEnvironment.isSaving) {
266
+ this.uiNotification.error(this.appEnvironment.msgSaveInProgress);
267
+ resolve();
268
+ return;
269
+ }
270
+ this.appEnvironment.isSaving = true;
271
+ this.entityManager.saveChanges().then(() => {
272
+ this.uiNotification.success(this.appEnvironment.msgSettingsUpdatedSuccessful);
273
+ this.appEnvironment.saveComplete({ successful: true });
274
+ resolve();
275
+ }).catch((e) => {
276
+ this.appEnvironment.saveComplete({ successful: false });
277
+ reject(e);
278
+ }).finally(() => {
279
+ this.appEnvironment.isSaving = false;
280
+ this.propertyChanged(null);
281
+ });
282
+ });
283
+ };
263
284
  revert = () => {
264
285
  this.uiNotification.confirm('Confirm Action', 'Revert ' + this.hasChanges().length + ' changed record(s)', true, true, "No", "Yes").then((confirm) => {
265
286
  if (confirm) {
@@ -331,4 +352,4 @@ export class TruDataContext {
331
352
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDataContext, decorators: [{
332
353
  type: Injectable
333
354
  }], ctorParameters: () => [{ type: i1.TruBreezeContextFactory }, { type: i2.TruGlobalDataContext }, { type: i3.TruAppEnvironment }, { type: i4.TruEntityAccessor }, { type: i5.TruUiNotification }] });
334
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBZ0QsV0FBVyxFQUErQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLL0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFNM0MsTUFBTSxPQUFPLGNBQWM7SUFTZjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBWkYsaUJBQWlCLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7SUFDckQsYUFBYSxHQUEyQixJQUFJLE9BQU8sRUFBaUIsQ0FBQztJQUVyRSxjQUFjLENBQW1CO0lBQ2pDLHNCQUFzQixHQUFrQixFQUFFLENBQUM7SUFDM0MsNkJBQTZCLEdBQWtCLEVBQUUsQ0FBQztJQUUxRCxZQUNVLG9CQUE2QyxFQUM3QyxpQkFBdUMsRUFDdkMsY0FBaUMsRUFDakMsY0FBaUMsRUFDakMsY0FBaUM7UUFKakMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM3QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBRXpDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVuQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFrQyxF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QUksZUFBZSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUM7b0JBQzdGLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztvQkFDcEYsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQzNCLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxFQUFFLENBQUM7d0JBQ3hDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7b0JBQ25DLENBQUM7b0JBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO29CQUNyRSxJQUFJLFNBQVM7d0JBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDakIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFBO3VHQWpXVSxjQUFjOzJHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVudGl0eSwgRW50aXR5QWN0aW9uLCBFbnRpdHlDaGFuZ2VkRXZlbnRBcmdzLCBFbnRpdHlTdGF0ZSwgRW50aXR5VHlwZSwgVmFsaWRhdGlvbkVycm9yLCBicmVlemUgfSBmcm9tIFwiYnJlZXplLWNsaWVudFwiO1xyXG5pbXBvcnQgeyBUcnVCcmVlemVDb250ZXh0RmFjdG9yeSwgVHJ1QnJlZXplQ29udGV4dCB9IGZyb20gJy4vdHJ1LWJyZWV6ZS1jb250ZXh0LWZhY3RvcnknO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlBY2Nlc3NvciB9IGZyb20gJy4vdHJ1LWVudGl0eS1hY2Nlc3Nvcic7XHJcbmltcG9ydCB7IFRydVVpTm90aWZpY2F0aW9uIH0gZnJvbSAnLi90cnUtdWktbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tICcuL3RydS1hcHAtZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRydURhdGFDaGFuZ2UgfSBmcm9tICcuLi9jbGFzc2VzL3RydS1kYXRhLWNoYW5nZSc7XHJcbmltcG9ydCB7IFRydUdsb2JhbERhdGFDb250ZXh0IH0gZnJvbSAnLi90cnUtZ2xvYmFsLWRhdGEtY29udGV4dCc7XHJcbmltcG9ydCB7IFRydUVudGl0eUJhc2UgfSBmcm9tICcuLi9iYXNlLWNsYXNzZXMvdHJ1LWVudGl0eS1iYXNlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRydURhdGFDb250ZXh0IHtcclxuICBwcml2YXRlIF9wcm9wZXJ0eUNoYW5nZWQkOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgcHJpdmF0ZSBfZGF0YUNoYW5nZWQkOiBTdWJqZWN0PFRydURhdGFDaGFuZ2U+ID0gbmV3IFN1YmplY3Q8VHJ1RGF0YUNoYW5nZT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfYnJlZXplQ29udGV4dDogVHJ1QnJlZXplQ29udGV4dDtcclxuICBwcml2YXRlIF9wZW5kaW5nRGVsZXRlRW50aXRpZXM6IEFycmF5PEVudGl0eT4gPSBbXTtcclxuICBwcml2YXRlIF9wZW5kaW5nQ2FzY2FkZURlbGV0ZUVudGl0aWVzOiBBcnJheTxFbnRpdHk+ID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBicmVlemVDb250ZXh0RmFjdG9yeTogVHJ1QnJlZXplQ29udGV4dEZhY3RvcnksXHJcbiAgICBwcml2YXRlIGdsb2JhbERhdGFDb250ZXh0OiBUcnVHbG9iYWxEYXRhQ29udGV4dCxcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSBlbnRpdHlBY2Nlc3NvcjogVHJ1RW50aXR5QWNjZXNzb3IsXHJcbiAgICBwcml2YXRlIHVpTm90aWZpY2F0aW9uOiBUcnVVaU5vdGlmaWNhdGlvblxyXG4gICkge1xyXG4gICAgdGhpcy5fYnJlZXplQ29udGV4dCA9IHRoaXMuYnJlZXplQ29udGV4dEZhY3RvcnkuY3JlYXRlQ29udGV4dCgpO1xyXG4gICAgdGhpcy5lbnRpdHlBY2Nlc3Nvci5jb250ZXh0ID0gdGhpcztcclxuXHJcbiAgICB0aGlzLmVudGl0eU1hbmFnZXIuZW50aXR5Q2hhbmdlZC5zdWJzY3JpYmUoKGNoYW5nZUFyZ3M6IEVudGl0eUNoYW5nZWRFdmVudEFyZ3MpID0+IHtcclxuICAgICAgdGhpcy5wcm9wZXJ0eUNoYW5nZWQoY2hhbmdlQXJncyk7XHJcbiAgICAgIHRoaXMuZW50aXR5Q2hhbmdlZEhhbmRsZXIoY2hhbmdlQXJncyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUHJvcGVydHlDaGFuZ2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5Q2hhbmdlZCQ7XHJcbiAgfVxyXG5cclxuICBwcm9wZXJ0eUNoYW5nZWQoY2hhbmdlQXJnczogRW50aXR5Q2hhbmdlZEV2ZW50QXJncyB8IG51bGwpIHtcclxuICAgIHRoaXMuX3Byb3BlcnR5Q2hhbmdlZCQubmV4dChjaGFuZ2VBcmdzKTtcclxuICB9XHJcblxyXG4gIG9uRGF0YUNoYW5nZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YUNoYW5nZWQkO1xyXG4gIH1cclxuXHJcbiAgZGF0YUNoYW5nZWQoY2hhbmdlOiBUcnVEYXRhQ2hhbmdlKSB7XHJcbiAgICB0aGlzLl9kYXRhQ2hhbmdlZCQubmV4dChjaGFuZ2UpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGlvbkNoYW5nZURldGVjdGlvbiA9IG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xyXG4gICAgdGhpcy5lbnRpdHlNYW5hZ2VyLnZhbGlkYXRpb25FcnJvcnNDaGFuZ2VkLnN1YnNjcmliZShlbnRpdGllcyA9PiB7XHJcbiAgICAgIG9ic2VydmVyLm5leHQoZW50aXRpZXMpO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIHBhcnNlRXJyb3JNZXNzYWdlcyA9ICh2YWxpZGF0aW9uRXJyb3JzOiBBcnJheTxWYWxpZGF0aW9uRXJyb3I+KTogc3RyaW5nID0+IHtcclxuICAgIGxldCBlcnJvck1zZzogc3RyaW5nID0gJyc7XHJcbiAgICB2YWxpZGF0aW9uRXJyb3JzLmZvckVhY2goKGVycm9yKSA9PiB7XHJcbiAgICAgIGVycm9yTXNnICs9IGVycm9yLmVycm9yTWVzc2FnZSArICc7ICc7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBlcnJvck1zZztcclxuICB9XHJcblxyXG4gIGdldFZhbGlkYXRpb25FcnJvcnNGb3JQcm9wZXJ0eSA9IChlbnRpdHk6IEVudGl0eSwgcHJvcGVydHlOYW1lOiBzdHJpbmcpOiBhbnkgPT4ge1xyXG4gICAgdmFyIGVycm9ycyA9IGVudGl0eS5lbnRpdHlBc3BlY3QuZ2V0VmFsaWRhdGlvbkVycm9ycygpO1xyXG4gICAgZXJyb3JzID0gZXJyb3JzLmZpbHRlcigoZXJyOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICByZXR1cm4gZXJyLnByb3BlcnR5TmFtZSA9PT0gcHJvcGVydHlOYW1lO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZXJyb3JzO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmFsaWRhdGlvbkVycm9ycyA9IChlbnRpdGllczogQXJyYXk8RW50aXR5PiB8IG51bGwgPSBudWxsKTogYW55ID0+IHtcclxuICAgIGVudGl0aWVzID0gZW50aXRpZXMgfHwgdGhpcy5lbnRpdHlNYW5hZ2VyLmdldENoYW5nZXMoKTtcclxuICAgIHZhciBlcnJvcnNQZXJFbnRpdHkgPSBlbnRpdGllcyEubWFwKChlbnRpdHkpOiBWYWxpZGF0aW9uRXJyb3JbXSA9PiB7XHJcbiAgICAgIHZhciBlcnJvcnMgPSBlbnRpdHkuZW50aXR5QXNwZWN0LmdldFZhbGlkYXRpb25FcnJvcnMoKTtcclxuICAgICAgZXJyb3JzID0gZXJyb3JzLm1hcCgoZXJyOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcclxuICAgICAgICAgIGVycm9yTWVzc2FnZTogZXJyLmVycm9yTWVzc2FnZSxcclxuICAgICAgICAgIHByb3BlcnR5OiBlcnIucHJvcGVydHlcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gZXJyb3JzO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZXJyb3JzUGVyRW50aXR5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb2RlbFByb3BlcnR5Q2hhbmdlSGFuZGxlciA9IChcclxuICAgIGVudGl0eTogRW50aXR5LFxyXG4gICAgcHJvcGVydHlOYW1lOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gICAgY2hhbmdlQXJnczogRW50aXR5Q2hhbmdlZEV2ZW50QXJncykgPT4ge1xyXG5cclxuICAgIGlmIChwcm9wZXJ0eU5hbWUpXHJcbiAgICAgIChlbnRpdHkgYXMgVHJ1RW50aXR5QmFzZSkuTWVyZ2VfRGF0YV9TZXQuY2xlYXIocHJvcGVydHlOYW1lKTtcclxuXHJcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXHJcbiAgICBsZXQgaGFuZGxlciA9IGVudGl0eS5lbnRpdHlUeXBlLmdldFByb3BlcnR5KHByb3BlcnR5TmFtZSBhcyBzdHJpbmcpPy5fb25DaGFuZ2U/LmhhbmRsZXI7XHJcbiAgICBpZiAoaGFuZGxlcilcclxuICAgICAgaGFuZGxlcihlbnRpdHksIHByb3BlcnR5TmFtZSwgY2hhbmdlQXJncy5hcmdzLCB0aGlzLCB0aGlzLmdsb2JhbERhdGFDb250ZXh0LCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1vZGVsUHJvcGVydHlPblNhdmVIYW5kbGVyID0gKGVudGl0eTogRW50aXR5KSA9PiB7XHJcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXHJcbiAgICBsZXQgaGFuZGxlciA9IGVudGl0eS5lbnRpdHlUeXBlLl9vblNhdmUuaGFuZGxlcjtcclxuICAgIGlmIChoYW5kbGVyKVxyXG4gICAgICBoYW5kbGVyKGVudGl0eSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1vZGVsUHJvcGVydHlPbkFkZEhhbmRsZXIgPSAoZW50aXR5OiBFbnRpdHkpID0+IHtcclxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcclxuICAgIGxldCBoYW5kbGVyID0gZW50aXR5LmVudGl0eVR5cGUuX29uQWRkLmhhbmRsZXI7XHJcbiAgICBpZiAoaGFuZGxlcilcclxuICAgICAgaGFuZGxlcihlbnRpdHksIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb2RlbFByb3BlcnR5T25SZWplY3RIYW5kbGVyID0gKGVudGl0eTogVHJ1RW50aXR5QmFzZSkgPT4ge1xyXG4gICAgZW50aXR5Lk1lcmdlX0RhdGFfU2V0LmNsZWFyQWxsKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogSGFuZGxlcyBicmVlemUgZW50aXR5IGNoYW5nZWQgZXZlbnQuXHJcbiAgICAqL1xyXG4gIHByaXZhdGUgZW50aXR5Q2hhbmdlZEhhbmRsZXIgPSAoY2hhbmdlQXJnczogRW50aXR5Q2hhbmdlZEV2ZW50QXJncykgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgc3dpdGNoIChjaGFuZ2VBcmdzLmVudGl0eUFjdGlvbikge1xyXG4gICAgICAgIGNhc2UgYnJlZXplLkVudGl0eUFjdGlvbi5Qcm9wZXJ0eUNoYW5nZTpcclxuICAgICAgICAgIHRoaXMubW9kZWxQcm9wZXJ0eUNoYW5nZUhhbmRsZXIoY2hhbmdlQXJncy5lbnRpdHkgYXMgRW50aXR5LCBjaGFuZ2VBcmdzLmFyZ3M/LnByb3BlcnR5TmFtZSwgY2hhbmdlQXJncyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIGJyZWV6ZS5FbnRpdHlBY3Rpb24uTWVyZ2VPblNhdmU6XHJcbiAgICAgICAgICB0aGlzLm1vZGVsUHJvcGVydHlPblNhdmVIYW5kbGVyKGNoYW5nZUFyZ3MuZW50aXR5IGFzIEVudGl0eSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIGJyZWV6ZS5FbnRpdHlBY3Rpb24uQXR0YWNoOlxyXG4gICAgICAgICAgdGhpcy5tb2RlbFByb3BlcnR5T25BZGRIYW5kbGVyKGNoYW5nZUFyZ3MuZW50aXR5IGFzIEVudGl0eSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIGJyZWV6ZS5FbnRpdHlBY3Rpb24uRW50aXR5U3RhdGVDaGFuZ2U6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIGJyZWV6ZS5FbnRpdHlBY3Rpb24uUmVqZWN0Q2hhbmdlczpcclxuICAgICAgICAgIHRoaXMubW9kZWxQcm9wZXJ0eU9uUmVqZWN0SGFuZGxlcihjaGFuZ2VBcmdzLmVudGl0eSBhcyBUcnVFbnRpdHlCYXNlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcclxuICAgICAgLy8gTk9URTogYnJlZXplIHNpbGVudGx5IGlnbm9yZXMgaGFuZGxlciBleGNlcHRpb25zOyBzbyBoYW5kbGVyIGhlcmVcclxuICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcihlLm1lc3NhZ2UsIGUpO1xyXG4gICAgICB0aHJvdyBlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRWYWxpZGF0aW9uRXJyb3JzID0gKGVudGl0aWVzOiBBcnJheTxFbnRpdHk+IHwgbnVsbCA9IG51bGwpOiBBcnJheTxzdHJpbmdbXT4gPT4ge1xyXG4gICAgbGV0IGVudGl0aWVzV2l0aEVycm9ycyA9IHRoaXMuZ2V0VmFsaWRhdGlvbkVycm9ycyhlbnRpdGllcyk7XHJcbiAgICBsZXQgZm9ybWF0dGVkRXJyb3JzID0gbmV3IEFycmF5PHN0cmluZ1tdPigpO1xyXG4gICAgZW50aXRpZXNXaXRoRXJyb3JzLmZvckVhY2goKGVudGl0eVdpdGhFcnJvcnM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZW50aXR5V2l0aEVycm9ycy5sZW5ndGgpIHtcclxuICAgICAgICBmb3JtYXR0ZWRFcnJvcnMucHVzaChlbnRpdHlXaXRoRXJyb3JzLm1hcCgoZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZS5wcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGUuZW50aXR5LmVudGl0eVR5cGUuZGVmYXVsdFJlc291cmNlTmFtZSArICcuJyArIGUucHJvcGVydHlOYW1lICsgJzogJyArIGUuZXJyb3JNZXNzYWdlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdmFyIG1lcmdlRGF0YSA9IEpTT04ucGFyc2UoZS5lbnRpdHkuTWVyZ2VfRGF0YSk7XHJcbiAgICAgICAgICBpZiAobWVyZ2VEYXRhICYmXHJcbiAgICAgICAgICAgIG1lcmdlRGF0YS5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0ICYmXHJcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKG1lcmdlRGF0YSkubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICBtZXJnZURhdGFbZS5wcm9wZXJ0eS5uYW1lXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VEYXRhW2UucHJvcGVydHkubmFtZV0ubW9kaWZpZWRCeSArICcgY2hhbmdlZCAnICsgZS5wcm9wZXJ0eS5uYW1lICsgJyB0byAnICsgbWVyZ2VEYXRhW2UucHJvcGVydHkubmFtZV0udmFsdWUgKyAnLiBBY2NlcHQgb3IgRGVjbGluZSB0aGUgY2hhbmdlLiAnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB2YXIgcHJvcGVydHlOYW1lID0gZS5wcm9wZXJ0eS5uYW1lID8gZS5wcm9wZXJ0eS5uYW1lIDogJ1tVbmtub3duIFByb3BlcnR5XSc7XHJcbiAgICAgICAgICByZXR1cm4gZS5lbnRpdHkuZW50aXR5VHlwZS5kZWZhdWx0UmVzb3VyY2VOYW1lICsgJy4nICsgcHJvcGVydHlOYW1lICsgJzogaGFzIGludmFsaWQgZGF0YS4nXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZm9ybWF0dGVkRXJyb3JzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kQ2FjaGVkQ2FzY2FkZURlbGV0ZURlc2NlbmRhbnRzID0gKGVudGl0eTogRW50aXR5KTogQXJyYXk8RW50aXR5PiA9PiB7XHJcbiAgICBsZXQgZGVzY2VuZGFudHM6IEFycmF5PEVudGl0eT4gPSBbXTtcclxuICAgIHR5cGUga2V5T2ZFbnRpdHkgPSBrZXlvZiB0eXBlb2YgZW50aXR5O1xyXG4gICAgbGV0IHR5cGUgPSBlbnRpdHkuZW50aXR5VHlwZTtcclxuICAgIGxldCB0eXBlTmFtZSA9IHR5cGUuZGVmYXVsdFJlc291cmNlTmFtZTtcclxuICAgIGxldCBlbnRpdHlDaGlsZHJlbk5hbWVzOiBhbnkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KCdSZXBsYWNlIHdpdGg6IE1vZGVsTmF2aWdhdGlvblByb3BlcnRpZXMudmFsdWUnKSlbdHlwZU5hbWVdO1xyXG4gICAgaWYgKGVudGl0eUNoaWxkcmVuTmFtZXMpIHtcclxuICAgICAgT2JqZWN0LmVudHJpZXMoZW50aXR5Q2hpbGRyZW5OYW1lcylcclxuICAgICAgICAuZm9yRWFjaCgoW2ssIHZdOiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCBwcm9wZXJ0eSA9IGVudGl0eVtrIGFzIGtleU9mRW50aXR5XSBhcyBhbnk7XHJcbiAgICAgICAgICBwcm9wZXJ0eS5mb3JFYWNoKChjaGlsZDogRW50aXR5KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgdi5kb2VzQ2FzY2FkZURlbGV0ZSAmJiBjaGlsZC5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGUgIT09IEVudGl0eVN0YXRlLkFkZGVkKSB7XHJcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZWxldGUgb2Ygc2VsZWN0ZWQgaXRlbSBpcyBub3QgcG9zc2libGUgZHVlIHRvIHJlbGF0ZWQgY2hpbGQgdGhhdCBpcyBub3Qgc2V0dXAgZm9yIGNhc2NhZGUgZGVsZXRlLiAgRGVsZXRlIGNoaWxkcmVuIGl0ZW1zIGZpcnN0LicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHMuY29uY2F0KHRoaXMuZmluZENhY2hlZENhc2NhZGVEZWxldGVEZXNjZW5kYW50cyhjaGlsZCkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBkZXNjZW5kYW50cyA9IHByb3BlcnR5LmNvbmNhdChkZXNjZW5kYW50cyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVzY2VuZGFudHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hcmtDYWNoZWREZXNjZW5kYW50c0ZvckRlbGV0ZSA9IChlbnRpdGllczogQXJyYXk8RW50aXR5PikgPT4ge1xyXG4gICAgdmFyIGNhc2NhZGVEZWxldGVEZXNjZW5kYW50c1BlckVudGl0eSA9IGVudGl0aWVzLm1hcCgoZW50aXR5OiBFbnRpdHkpID0+IHsgcmV0dXJuIHRoaXMuZmluZENhY2hlZENhc2NhZGVEZWxldGVEZXNjZW5kYW50cyhlbnRpdHkpOyB9LCBlbnRpdGllcyk7XHJcbiAgICB2YXIgY2FzY2FkZURlbGV0ZURlc2NlbmRhbnRzID0gY2FzY2FkZURlbGV0ZURlc2NlbmRhbnRzUGVyRW50aXR5LnJlZHVjZSgobWVtbywgaSkgPT4geyByZXR1cm4gbWVtby5jb25jYXQoaSk7IH0pO1xyXG4gICAgY2FzY2FkZURlbGV0ZURlc2NlbmRhbnRzLmZvckVhY2goKGVudGl0eTogRW50aXR5KSA9PiB7IHRoaXMuZW50aXR5TWFuYWdlci5kZXRhY2hFbnRpdHkoZW50aXR5KTsgfSk7XHJcbiAgICB0aGlzLl9wZW5kaW5nRGVsZXRlRW50aXRpZXMgPSB0aGlzLl9wZW5kaW5nRGVsZXRlRW50aXRpZXMuY29uY2F0KGVudGl0aWVzKTtcclxuICAgIGxldCBjb21iaW5lZCA9IHRoaXMuX3BlbmRpbmdDYXNjYWRlRGVsZXRlRW50aXRpZXMuY29uY2F0KGNhc2NhZGVEZWxldGVEZXNjZW5kYW50cyk7XHJcbiAgICB0aGlzLl9wZW5kaW5nQ2FzY2FkZURlbGV0ZUVudGl0aWVzID0gY29tYmluZWQuZmlsdGVyKChuLCBpKSA9PiBjb21iaW5lZC5pbmRleE9mKG4pID09PSBpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFya0ZvckRlbGV0ZSA9IChlbnRpdGllczogQXJyYXk8RW50aXR5PikgPT4ge1xyXG4gICAgaWYgKGVudGl0aWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5tYXJrQ2FjaGVkRGVzY2VuZGFudHNGb3JEZWxldGUoZW50aXRpZXMpO1xyXG4gICAgICBlbnRpdGllcy5mb3JFYWNoKChlbnRpdHk6IEVudGl0eSkgPT4ge1xyXG4gICAgICAgIGVudGl0eS5lbnRpdHlBc3BlY3Quc2V0RGVsZXRlZCgpO1xyXG4gICAgICAgIC8vZW50aXR5Ll9hc3NvY2lhdGVkRGF0YUNhY2hlZCA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBicmVlemVDb250ZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2JyZWV6ZUNvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZW50aXR5TWFuYWdlcigpIHtcclxuICAgIHJldHVybiB0aGlzLl9icmVlemVDb250ZXh0LmVudGl0eU1hbmFnZXI7XHJcbiAgfVxyXG5cclxuICBoYXNDaGFuZ2VzID0gKGVudGl0eVR5cGVzOiBBcnJheTxFbnRpdHlUeXBlPiA9IFtdKSA9PiB7XHJcbiAgICBpZiAoZW50aXR5VHlwZXMubGVuZ3RoKVxyXG4gICAgICByZXR1cm4gdGhpcy5fYnJlZXplQ29udGV4dC5lbnRpdHlNYW5hZ2VyLmdldENoYW5nZXMoZW50aXR5VHlwZXMpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2JyZWV6ZUNvbnRleHQuZW50aXR5TWFuYWdlci5nZXRDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBlbnRpdHlBY2Nlc3MgPSAoKTogVHJ1RW50aXR5QWNjZXNzb3IgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZW50aXR5QWNjZXNzb3I7XHJcbiAgfVxyXG5cclxuICBleHBvcnRDYWhjZSA9ICgpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuX2JyZWV6ZUNvbnRleHQuZW50aXR5TWFuYWdlci5leHBvcnRFbnRpdGllcygpKTtcclxuICB9XHJcblxyXG4gIHNhdmUgPSAoXHJcbiAgICBlbnRpdGllczogQXJyYXk8RW50aXR5PiB8IG51bGwgPSBudWxsLFxyXG4gICAgZGVsZXRlT3BlcmF0aW9uOiBib29sZWFuID0gZmFsc2UpID0+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmFwcEVudmlyb25tZW50LmlzU2F2aW5nKSB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcih0aGlzLmFwcEVudmlyb25tZW50Lm1zZ1NhdmVJblByb2dyZXNzKTtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciB2YWxpZGF0aW9uRXJyb3JNZXNzYWdlcyA9IHRoaXMuZm9ybWF0VmFsaWRhdGlvbkVycm9ycyhlbnRpdGllcyk7XHJcbiAgICAgIGlmICh2YWxpZGF0aW9uRXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcih0aGlzLmFwcEVudmlyb25tZW50Lm1zZ0ludmFsaWREYXRhLCB2YWxpZGF0aW9uRXJyb3JNZXNzYWdlc1swXSk7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLmhhc0NoYW5nZXMoKS5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLndhcm5pbmcodGhpcy5hcHBFbnZpcm9ubWVudC5tc2dOb0NoYW5nZXNUb1NhdmUpO1xyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5pc1NhdmluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZW50aXR5TWFuYWdlci5zYXZlQ2hhbmdlcygpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGlmICghZGVsZXRlT3BlcmF0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLnN1Y2Nlc3ModGhpcy5hcHBFbnZpcm9ubWVudC5tc2dTYXZlU3VjY2Vzc2Z1bCk7XHJcbiAgICAgICAgICB0aGlzLmFwcEVudmlyb25tZW50LnNhdmVDb21wbGV0ZSh7IHN1Y2Nlc3NmdWw6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgfSkuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLmVycm9yKChlIGFzIEVycm9yKS5tZXNzYWdlKTtcclxuICAgICAgICB0aGlzLmFwcEVudmlyb25tZW50LnNhdmVDb21wbGV0ZSh7IHN1Y2Nlc3NmdWw6IGZhbHNlIH0pO1xyXG4gICAgICAgIHJlamVjdChlKTtcclxuICAgICAgfSkuZmluYWxseSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJvcGVydHlDaGFuZ2VkKG51bGwpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVdpdGhvdXROb3RpZmljYXRpb24gPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4geyBcclxuICAgICAgaWYgKHRoaXMuYXBwRW52aXJvbm1lbnQuaXNTYXZpbmcpIHtcclxuICAgICAgICAgIHRoaXMudWlOb3RpZmljYXRpb24uZXJyb3IodGhpcy5hcHBFbnZpcm9ubWVudC5tc2dTYXZlSW5Qcm9ncmVzcyk7XHJcbiAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5pc1NhdmluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZW50aXR5TWFuYWdlci5zYXZlQ2hhbmdlcygpLnRoZW4oKCkgPT4geyBcclxuICAgICAgICB0aGlzLmFwcEVudmlyb25tZW50LnNhdmVDb21wbGV0ZSh7IHN1Y2Nlc3NmdWw6IHRydWUgfSk7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9KS5jYXRjaCgoZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFwcEVudmlyb25tZW50LnNhdmVDb21wbGV0ZSh7IHN1Y2Nlc3NmdWw6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgcmVqZWN0KGUpO1xyXG4gICAgICB9KS5maW5hbGx5KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJvcGVydHlDaGFuZ2VkKG51bGwpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0ID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy51aU5vdGlmaWNhdGlvbi5jb25maXJtKCdDb25maXJtIEFjdGlvbicsICdSZXZlcnQgJyArIHRoaXMuaGFzQ2hhbmdlcygpLmxlbmd0aCArICcgY2hhbmdlZCByZWNvcmQocyknLCB0cnVlLCB0cnVlLCBcIk5vXCIsIFwiWWVzXCIpLnRoZW4oKGNvbmZpcm06IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKGNvbmZpcm0pIHtcclxuICAgICAgICB0aGlzLmVudGl0eU1hbmFnZXIucmVqZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQucmV2ZXJ0Q29tcGxldGUoeyBzdWNjZXNzZnVsOiB0cnVlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJldmVydFdpdGhvdXRQcm9tcHQgPSAoKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLnJldmVydCgpO1xyXG4gICAgdGhpcy5hcHBFbnZpcm9ubWVudC5yZXZlcnRDb21wbGV0ZSh7IHN1Y2Nlc3NmdWw6IHRydWUgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGUgPSAoXHJcbiAgICBlbnRpdGllczogQXJyYXk8RW50aXR5PixcclxuICAgIGNvbmZpcm1Nc2c6IHN0cmluZyxcclxuICAgIG9uU3VjY2VzczogRnVuY3Rpb24gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpID0+IHtcclxuICAgIHZhciBuZXdFbnRpdGllczogQXJyYXk8RW50aXR5PiA9IFtdO1xyXG4gICAgdmFyIGV4aXN0aW5nRW50aXRpZXM6IEFycmF5PEVudGl0eT4gPSBbXTtcclxuICAgIGVudGl0aWVzLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcclxuICAgICAgaWYgKGUuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlLmlzQWRkZWQoKSlcclxuICAgICAgICBuZXdFbnRpdGllcy5wdXNoKGUpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgZXhpc3RpbmdFbnRpdGllcy5wdXNoKGUpO1xyXG4gICAgfSk7XHJcbiAgICBpZiAobmV3RW50aXRpZXMubGVuZ3RoICYmIGV4aXN0aW5nRW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudWlOb3RpZmljYXRpb24ud2FybmluZyh0aGlzLmFwcEVudmlyb25tZW50Lm1zZ0Nhbm5vdERlbGV0ZU5ld0FuZEV4aXN0aW5nUmVjb3Jkcyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChleGlzdGluZ0VudGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICBpZiAodGhpcy5oYXNDaGFuZ2VzKCkubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi53YXJuaW5nKHRoaXMuYXBwRW52aXJvbm1lbnQubXNnRGlydHlQcmV2ZW50c0RlbGV0ZUV4aXN0aW5nUmVjb3JkKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVpTm90aWZpY2F0aW9uLmNvbmZpcm0oJ0NvbmZpcm0gQWN0aW9uJywgY29uZmlybU1zZywgdHJ1ZSwgdHJ1ZSwgXCJOb1wiLCBcIlllc1wiKS50aGVuKChjb25maXJtOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmIChjb25maXJtKSB7XHJcbiAgICAgICAgaWYgKG5ld0VudGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgbmV3RW50aXRpZXMuZm9yRWFjaCgoZW50aXR5OiBFbnRpdHkpID0+IHtcclxuICAgICAgICAgICAgZW50aXR5LmVudGl0eUFzcGVjdC5jbGVhclZhbGlkYXRpb25FcnJvcnMoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5tYXJrRm9yRGVsZXRlKG5ld0VudGl0aWVzKTtcclxuICAgICAgICAgIGlmIChvblN1Y2Nlc3MpIG9uU3VjY2VzcygpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdGhpcy5tYXJrRm9yRGVsZXRlKGV4aXN0aW5nRW50aXRpZXMpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbjogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLmVycm9yKGV4Y2VwdGlvbi5tZXNzYWdlKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zYXZlKG51bGwsIHRydWUpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdmFyIGVudGl0aWVzRGVsZXRlZCA9IHRoaXMuX3BlbmRpbmdEZWxldGVFbnRpdGllcy5jb25jYXQodGhpcy5fcGVuZGluZ0Nhc2NhZGVEZWxldGVFbnRpdGllcyk7XHJcbiAgICAgICAgICB0aGlzLmFwcEVudmlyb25tZW50LmRlbGV0ZUNvbXBsZXRlKHsgc3VjY2Vzc2Z1bDogdHJ1ZSwgZW50aXRpZXM6IGVudGl0aWVzRGVsZXRlZCB9KTtcclxuICAgICAgICAgIGlmIChlbnRpdGllc0RlbGV0ZWQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdDYXNjYWRlRGVsZXRlRW50aXRpZXMgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5fcGVuZGluZ0RlbGV0ZUVudGl0aWVzID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLnN1Y2Nlc3ModGhpcy5hcHBFbnZpcm9ubWVudC5tc2dEZWxldGVTdWNjZXNzZnVsKTtcclxuICAgICAgICAgIGlmIChvblN1Y2Nlc3MpIG9uU3VjY2Vzcyh0cnVlKTtcclxuICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMucmV2ZXJ0KCk7XHJcbiAgICAgICAgfSkuZmluYWxseSgoKSA9PiB7IH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
355
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBZ0QsV0FBVyxFQUErQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLL0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFNM0MsTUFBTSxPQUFPLGNBQWM7SUFTZjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBWkYsaUJBQWlCLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7SUFDckQsYUFBYSxHQUEyQixJQUFJLE9BQU8sRUFBaUIsQ0FBQztJQUVyRSxjQUFjLENBQW1CO0lBQ2pDLHNCQUFzQixHQUFrQixFQUFFLENBQUM7SUFDM0MsNkJBQTZCLEdBQWtCLEVBQUUsQ0FBQztJQUUxRCxZQUNVLG9CQUE2QyxFQUM3QyxpQkFBdUMsRUFDdkMsY0FBaUMsRUFDakMsY0FBaUMsRUFDakMsY0FBaUM7UUFKakMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM3QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBRXpDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVuQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFrQyxF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LElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO29CQUM3RixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7b0JBQ3BGLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUMzQixJQUFJLENBQUMsNkJBQTZCLEdBQUcsRUFBRSxDQUFDO3dCQUN4QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFDO29CQUNuQyxDQUFDO29CQUNELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztvQkFDckUsSUFBSSxTQUFTO3dCQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQTt1R0F2WFUsY0FBYzsyR0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnRpdHksIEVudGl0eUFjdGlvbiwgRW50aXR5Q2hhbmdlZEV2ZW50QXJncywgRW50aXR5U3RhdGUsIEVudGl0eVR5cGUsIFZhbGlkYXRpb25FcnJvciwgYnJlZXplIH0gZnJvbSBcImJyZWV6ZS1jbGllbnRcIjtcclxuaW1wb3J0IHsgVHJ1QnJlZXplQ29udGV4dEZhY3RvcnksIFRydUJyZWV6ZUNvbnRleHQgfSBmcm9tICcuL3RydS1icmVlemUtY29udGV4dC1mYWN0b3J5JztcclxuaW1wb3J0IHsgVHJ1RW50aXR5QWNjZXNzb3IgfSBmcm9tICcuL3RydS1lbnRpdHktYWNjZXNzb3InO1xyXG5pbXBvcnQgeyBUcnVVaU5vdGlmaWNhdGlvbiB9IGZyb20gJy4vdHJ1LXVpLW5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcnVEYXRhQ2hhbmdlIH0gZnJvbSAnLi4vY2xhc3Nlcy90cnUtZGF0YS1jaGFuZ2UnO1xyXG5pbXBvcnQgeyBUcnVHbG9iYWxEYXRhQ29udGV4dCB9IGZyb20gJy4vdHJ1LWdsb2JhbC1kYXRhLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlCYXNlIH0gZnJvbSAnLi4vYmFzZS1jbGFzc2VzL3RydS1lbnRpdHktYmFzZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBUcnVEYXRhQ29udGV4dCB7XHJcbiAgcHJpdmF0ZSBfcHJvcGVydHlDaGFuZ2VkJDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gIHByaXZhdGUgX2RhdGFDaGFuZ2VkJDogU3ViamVjdDxUcnVEYXRhQ2hhbmdlPiA9IG5ldyBTdWJqZWN0PFRydURhdGFDaGFuZ2U+KCk7XHJcblxyXG4gIHByaXZhdGUgX2JyZWV6ZUNvbnRleHQ6IFRydUJyZWV6ZUNvbnRleHQ7XHJcbiAgcHJpdmF0ZSBfcGVuZGluZ0RlbGV0ZUVudGl0aWVzOiBBcnJheTxFbnRpdHk+ID0gW107XHJcbiAgcHJpdmF0ZSBfcGVuZGluZ0Nhc2NhZGVEZWxldGVFbnRpdGllczogQXJyYXk8RW50aXR5PiA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYnJlZXplQ29udGV4dEZhY3Rvcnk6IFRydUJyZWV6ZUNvbnRleHRGYWN0b3J5LFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxEYXRhQ29udGV4dDogVHJ1R2xvYmFsRGF0YUNvbnRleHQsXHJcbiAgICBwcml2YXRlIGFwcEVudmlyb25tZW50OiBUcnVBcHBFbnZpcm9ubWVudCxcclxuICAgIHByaXZhdGUgZW50aXR5QWNjZXNzb3I6IFRydUVudGl0eUFjY2Vzc29yLFxyXG4gICAgcHJpdmF0ZSB1aU5vdGlmaWNhdGlvbjogVHJ1VWlOb3RpZmljYXRpb25cclxuICApIHtcclxuICAgIHRoaXMuX2JyZWV6ZUNvbnRleHQgPSB0aGlzLmJyZWV6ZUNvbnRleHRGYWN0b3J5LmNyZWF0ZUNvbnRleHQoKTtcclxuICAgIHRoaXMuZW50aXR5QWNjZXNzb3IuY29udGV4dCA9IHRoaXM7XHJcblxyXG4gICAgdGhpcy5lbnRpdHlNYW5hZ2VyLmVudGl0eUNoYW5nZWQuc3Vic2NyaWJlKChjaGFuZ2VBcmdzOiBFbnRpdHlDaGFuZ2VkRXZlbnRBcmdzKSA9PiB7XHJcbiAgICAgIHRoaXMucHJvcGVydHlDaGFuZ2VkKGNoYW5nZUFyZ3MpO1xyXG4gICAgICB0aGlzLmVudGl0eUNoYW5nZWRIYW5kbGVyKGNoYW5nZUFyZ3MpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblByb3BlcnR5Q2hhbmdlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eUNoYW5nZWQkO1xyXG4gIH1cclxuXHJcbiAgcHJvcGVydHlDaGFuZ2VkKGNoYW5nZUFyZ3M6IEVudGl0eUNoYW5nZWRFdmVudEFyZ3MgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eUNoYW5nZWQkLm5leHQoY2hhbmdlQXJncyk7XHJcbiAgfVxyXG5cclxuICBvbkRhdGFDaGFuZ2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGFDaGFuZ2VkJDtcclxuICB9XHJcblxyXG4gIGRhdGFDaGFuZ2VkKGNoYW5nZTogVHJ1RGF0YUNoYW5nZSkge1xyXG4gICAgdGhpcy5fZGF0YUNoYW5nZWQkLm5leHQoY2hhbmdlKTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRpb25DaGFuZ2VEZXRlY3Rpb24gPSBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcclxuICAgIHRoaXMuZW50aXR5TWFuYWdlci52YWxpZGF0aW9uRXJyb3JzQ2hhbmdlZC5zdWJzY3JpYmUoZW50aXRpZXMgPT4ge1xyXG4gICAgICBvYnNlcnZlci5uZXh0KGVudGl0aWVzKTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICBwYXJzZUVycm9yTWVzc2FnZXMgPSAodmFsaWRhdGlvbkVycm9yczogQXJyYXk8VmFsaWRhdGlvbkVycm9yPik6IHN0cmluZyA9PiB7XHJcbiAgICBsZXQgZXJyb3JNc2c6IHN0cmluZyA9ICcnO1xyXG4gICAgdmFsaWRhdGlvbkVycm9ycy5mb3JFYWNoKChlcnJvcikgPT4ge1xyXG4gICAgICBlcnJvck1zZyArPSBlcnJvci5lcnJvck1lc3NhZ2UgKyAnOyAnO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZXJyb3JNc2c7XHJcbiAgfVxyXG5cclxuICBnZXRWYWxpZGF0aW9uRXJyb3JzRm9yUHJvcGVydHkgPSAoZW50aXR5OiBFbnRpdHksIHByb3BlcnR5TmFtZTogc3RyaW5nKTogYW55ID0+IHtcclxuICAgIHZhciBlcnJvcnMgPSBlbnRpdHkuZW50aXR5QXNwZWN0LmdldFZhbGlkYXRpb25FcnJvcnMoKTtcclxuICAgIGVycm9ycyA9IGVycm9ycy5maWx0ZXIoKGVycjogYW55KTogYW55ID0+IHtcclxuICAgICAgcmV0dXJuIGVyci5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGVycm9ycztcclxuICB9XHJcblxyXG4gIGdldFZhbGlkYXRpb25FcnJvcnMgPSAoZW50aXRpZXM6IEFycmF5PEVudGl0eT4gfCBudWxsID0gbnVsbCk6IGFueSA9PiB7XHJcbiAgICBlbnRpdGllcyA9IGVudGl0aWVzIHx8IHRoaXMuZW50aXR5TWFuYWdlci5nZXRDaGFuZ2VzKCk7XHJcbiAgICB2YXIgZXJyb3JzUGVyRW50aXR5ID0gZW50aXRpZXMhLm1hcCgoZW50aXR5KTogVmFsaWRhdGlvbkVycm9yW10gPT4ge1xyXG4gICAgICB2YXIgZXJyb3JzID0gZW50aXR5LmVudGl0eUFzcGVjdC5nZXRWYWxpZGF0aW9uRXJyb3JzKCk7XHJcbiAgICAgIGVycm9ycyA9IGVycm9ycy5tYXAoKGVycjogYW55KTogYW55ID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZW50aXR5OiBlbnRpdHksXHJcbiAgICAgICAgICBlcnJvck1lc3NhZ2U6IGVyci5lcnJvck1lc3NhZ2UsXHJcbiAgICAgICAgICBwcm9wZXJ0eTogZXJyLnByb3BlcnR5XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGVycm9ycztcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGVycm9yc1BlckVudGl0eTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbW9kZWxQcm9wZXJ0eUNoYW5nZUhhbmRsZXIgPSAoXHJcbiAgICBlbnRpdHk6IEVudGl0eSxcclxuICAgIHByb3BlcnR5TmFtZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICAgIGNoYW5nZUFyZ3M6IEVudGl0eUNoYW5nZWRFdmVudEFyZ3MpID0+IHtcclxuXHJcbiAgICBpZiAocHJvcGVydHlOYW1lKVxyXG4gICAgICAoZW50aXR5IGFzIFRydUVudGl0eUJhc2UpLk1lcmdlX0RhdGFfU2V0LmNsZWFyKHByb3BlcnR5TmFtZSk7XHJcblxyXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxyXG4gICAgbGV0IGhhbmRsZXIgPSBlbnRpdHkuZW50aXR5VHlwZS5nZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUgYXMgc3RyaW5nKT8uX29uQ2hhbmdlPy5oYW5kbGVyO1xyXG4gICAgaWYgKGhhbmRsZXIpXHJcbiAgICAgIGhhbmRsZXIoZW50aXR5LCBwcm9wZXJ0eU5hbWUsIGNoYW5nZUFyZ3MuYXJncywgdGhpcywgdGhpcy5nbG9iYWxEYXRhQ29udGV4dCwgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb2RlbFByb3BlcnR5T25TYXZlSGFuZGxlciA9IChlbnRpdHk6IEVudGl0eSkgPT4ge1xyXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxyXG4gICAgbGV0IGhhbmRsZXIgPSBlbnRpdHkuZW50aXR5VHlwZS5fb25TYXZlLmhhbmRsZXI7XHJcbiAgICBpZiAoaGFuZGxlcilcclxuICAgICAgaGFuZGxlcihlbnRpdHkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb2RlbFByb3BlcnR5T25BZGRIYW5kbGVyID0gKGVudGl0eTogRW50aXR5KSA9PiB7XHJcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXHJcbiAgICBsZXQgaGFuZGxlciA9IGVudGl0eS5lbnRpdHlUeXBlLl9vbkFkZC5oYW5kbGVyO1xyXG4gICAgaWYgKGhhbmRsZXIpXHJcbiAgICAgIGhhbmRsZXIoZW50aXR5LCB0aGlzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbW9kZWxQcm9wZXJ0eU9uUmVqZWN0SGFuZGxlciA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIGVudGl0eS5NZXJnZV9EYXRhX1NldC5jbGVhckFsbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIEhhbmRsZXMgYnJlZXplIGVudGl0eSBjaGFuZ2VkIGV2ZW50LlxyXG4gICAgKi9cclxuICBwcml2YXRlIGVudGl0eUNoYW5nZWRIYW5kbGVyID0gKGNoYW5nZUFyZ3M6IEVudGl0eUNoYW5nZWRFdmVudEFyZ3MpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHN3aXRjaCAoY2hhbmdlQXJncy5lbnRpdHlBY3Rpb24pIHtcclxuICAgICAgICBjYXNlIGJyZWV6ZS5FbnRpdHlBY3Rpb24uUHJvcGVydHlDaGFuZ2U6XHJcbiAgICAgICAgICB0aGlzLm1vZGVsUHJvcGVydHlDaGFuZ2VIYW5kbGVyKGNoYW5nZUFyZ3MuZW50aXR5IGFzIEVudGl0eSwgY2hhbmdlQXJncy5hcmdzPy5wcm9wZXJ0eU5hbWUsIGNoYW5nZUFyZ3MpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBicmVlemUuRW50aXR5QWN0aW9uLk1lcmdlT25TYXZlOlxyXG4gICAgICAgICAgdGhpcy5tb2RlbFByb3BlcnR5T25TYXZlSGFuZGxlcihjaGFuZ2VBcmdzLmVudGl0eSBhcyBFbnRpdHkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBicmVlemUuRW50aXR5QWN0aW9uLkF0dGFjaDpcclxuICAgICAgICAgIHRoaXMubW9kZWxQcm9wZXJ0eU9uQWRkSGFuZGxlcihjaGFuZ2VBcmdzLmVudGl0eSBhcyBFbnRpdHkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBicmVlemUuRW50aXR5QWN0aW9uLkVudGl0eVN0YXRlQ2hhbmdlOlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBicmVlemUuRW50aXR5QWN0aW9uLlJlamVjdENoYW5nZXM6XHJcbiAgICAgICAgICB0aGlzLm1vZGVsUHJvcGVydHlPblJlamVjdEhhbmRsZXIoY2hhbmdlQXJncy5lbnRpdHkgYXMgVHJ1RW50aXR5QmFzZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZTogYW55KSB7XHJcbiAgICAgIC8vIE5PVEU6IGJyZWV6ZSBzaWxlbnRseSBpZ25vcmVzIGhhbmRsZXIgZXhjZXB0aW9uczsgc28gaGFuZGxlciBoZXJlXHJcbiAgICAgIHRoaXMudWlOb3RpZmljYXRpb24uZXJyb3IoZS5tZXNzYWdlLCBlKTtcclxuICAgICAgdGhyb3cgZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0VmFsaWRhdGlvbkVycm9ycyA9IChlbnRpdGllczogQXJyYXk8RW50aXR5PiB8IG51bGwgPSBudWxsKTogQXJyYXk8c3RyaW5nW10+ID0+IHtcclxuICAgIGxldCBlbnRpdGllc1dpdGhFcnJvcnMgPSB0aGlzLmdldFZhbGlkYXRpb25FcnJvcnMoZW50aXRpZXMpO1xyXG4gICAgbGV0IGZvcm1hdHRlZEVycm9ycyA9IG5ldyBBcnJheTxzdHJpbmdbXT4oKTtcclxuICAgIGVudGl0aWVzV2l0aEVycm9ycy5mb3JFYWNoKChlbnRpdHlXaXRoRXJyb3JzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVudGl0eVdpdGhFcnJvcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgZm9ybWF0dGVkRXJyb3JzLnB1c2goZW50aXR5V2l0aEVycm9ycy5tYXAoKGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGUucHJvcGVydHlOYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlLmVudGl0eS5lbnRpdHlUeXBlLmRlZmF1bHRSZXNvdXJjZU5hbWUgKyAnLicgKyBlLnByb3BlcnR5TmFtZSArICc6ICcgKyBlLmVycm9yTWVzc2FnZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHZhciBtZXJnZURhdGEgPSBKU09OLnBhcnNlKGUuZW50aXR5Lk1lcmdlX0RhdGEpO1xyXG4gICAgICAgICAgaWYgKG1lcmdlRGF0YSAmJlxyXG4gICAgICAgICAgICBtZXJnZURhdGEuY29uc3RydWN0b3IgPT09IE9iamVjdCAmJlxyXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhtZXJnZURhdGEpLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgbWVyZ2VEYXRhW2UucHJvcGVydHkubmFtZV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1lcmdlRGF0YVtlLnByb3BlcnR5Lm5hbWVdLm1vZGlmaWVkQnkgKyAnIGNoYW5nZWQgJyArIGUucHJvcGVydHkubmFtZSArICcgdG8gJyArIG1lcmdlRGF0YVtlLnByb3BlcnR5Lm5hbWVdLnZhbHVlICsgJy4gQWNjZXB0IG9yIERlY2xpbmUgdGhlIGNoYW5nZS4gJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdmFyIHByb3BlcnR5TmFtZSA9IGUucHJvcGVydHkubmFtZSA/IGUucHJvcGVydHkubmFtZSA6ICdbVW5rbm93biBQcm9wZXJ0eV0nO1xyXG4gICAgICAgICAgcmV0dXJuIGUuZW50aXR5LmVudGl0eVR5cGUuZGVmYXVsdFJlc291cmNlTmFtZSArICcuJyArIHByb3BlcnR5TmFtZSArICc6IGhhcyBpbnZhbGlkIGRhdGEuJ1xyXG4gICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGZvcm1hdHRlZEVycm9ycztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZENhY2hlZENhc2NhZGVEZWxldGVEZXNjZW5kYW50cyA9IChlbnRpdHk6IEVudGl0eSk6IEFycmF5PEVudGl0eT4gPT4ge1xyXG4gICAgbGV0IGRlc2NlbmRhbnRzOiBBcnJheTxFbnRpdHk+ID0gW107XHJcbiAgICB0eXBlIGtleU9mRW50aXR5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGxldCB0eXBlID0gZW50aXR5LmVudGl0eVR5cGU7XHJcbiAgICBsZXQgdHlwZU5hbWUgPSB0eXBlLmRlZmF1bHRSZXNvdXJjZU5hbWU7XHJcbiAgICBsZXQgZW50aXR5Q2hpbGRyZW5OYW1lczogYW55ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSgnUmVwbGFjZSB3aXRoOiBNb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzLnZhbHVlJykpW3R5cGVOYW1lXTtcclxuICAgIGlmIChlbnRpdHlDaGlsZHJlbk5hbWVzKSB7XHJcbiAgICAgIE9iamVjdC5lbnRyaWVzKGVudGl0eUNoaWxkcmVuTmFtZXMpXHJcbiAgICAgICAgLmZvckVhY2goKFtrLCB2XTogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgcHJvcGVydHkgPSBlbnRpdHlbayBhcyBrZXlPZkVudGl0eV0gYXMgYW55O1xyXG4gICAgICAgICAgcHJvcGVydHkuZm9yRWFjaCgoY2hpbGQ6IEVudGl0eSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdvYmplY3QnICYmIHYuZG9lc0Nhc2NhZGVEZWxldGUgJiYgY2hpbGQuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlICE9PSBFbnRpdHlTdGF0ZS5BZGRlZCkge1xyXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGVsZXRlIG9mIHNlbGVjdGVkIGl0ZW0gaXMgbm90IHBvc3NpYmxlIGR1ZSB0byByZWxhdGVkIGNoaWxkIHRoYXQgaXMgbm90IHNldHVwIGZvciBjYXNjYWRlIGRlbGV0ZS4gIERlbGV0ZSBjaGlsZHJlbiBpdGVtcyBmaXJzdC4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkZXNjZW5kYW50cyA9IGRlc2NlbmRhbnRzLmNvbmNhdCh0aGlzLmZpbmRDYWNoZWRDYXNjYWRlRGVsZXRlRGVzY2VuZGFudHMoY2hpbGQpKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgZGVzY2VuZGFudHMgPSBwcm9wZXJ0eS5jb25jYXQoZGVzY2VuZGFudHMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlc2NlbmRhbnRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYXJrQ2FjaGVkRGVzY2VuZGFudHNGb3JEZWxldGUgPSAoZW50aXRpZXM6IEFycmF5PEVudGl0eT4pID0+IHtcclxuICAgIHZhciBjYXNjYWRlRGVsZXRlRGVzY2VuZGFudHNQZXJFbnRpdHkgPSBlbnRpdGllcy5tYXAoKGVudGl0eTogRW50aXR5KSA9PiB7IHJldHVybiB0aGlzLmZpbmRDYWNoZWRDYXNjYWRlRGVsZXRlRGVzY2VuZGFudHMoZW50aXR5KTsgfSwgZW50aXRpZXMpO1xyXG4gICAgdmFyIGNhc2NhZGVEZWxldGVEZXNjZW5kYW50cyA9IGNhc2NhZGVEZWxldGVEZXNjZW5kYW50c1BlckVudGl0eS5yZWR1Y2UoKG1lbW8sIGkpID0+IHsgcmV0dXJuIG1lbW8uY29uY2F0KGkpOyB9KTtcclxuICAgIGNhc2NhZGVEZWxldGVEZXNjZW5kYW50cy5mb3JFYWNoKChlbnRpdHk6IEVudGl0eSkgPT4geyB0aGlzLmVudGl0eU1hbmFnZXIuZGV0YWNoRW50aXR5KGVudGl0eSk7IH0pO1xyXG4gICAgdGhpcy5fcGVuZGluZ0RlbGV0ZUVudGl0aWVzID0gdGhpcy5fcGVuZGluZ0RlbGV0ZUVudGl0aWVzLmNvbmNhdChlbnRpdGllcyk7XHJcbiAgICBsZXQgY29tYmluZWQgPSB0aGlzLl9wZW5kaW5nQ2FzY2FkZURlbGV0ZUVudGl0aWVzLmNvbmNhdChjYXNjYWRlRGVsZXRlRGVzY2VuZGFudHMpO1xyXG4gICAgdGhpcy5fcGVuZGluZ0Nhc2NhZGVEZWxldGVFbnRpdGllcyA9IGNvbWJpbmVkLmZpbHRlcigobiwgaSkgPT4gY29tYmluZWQuaW5kZXhPZihuKSA9PT0gaSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hcmtGb3JEZWxldGUgPSAoZW50aXRpZXM6IEFycmF5PEVudGl0eT4pID0+IHtcclxuICAgIGlmIChlbnRpdGllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubWFya0NhY2hlZERlc2NlbmRhbnRzRm9yRGVsZXRlKGVudGl0aWVzKTtcclxuICAgICAgZW50aXRpZXMuZm9yRWFjaCgoZW50aXR5OiBFbnRpdHkpID0+IHtcclxuICAgICAgICBlbnRpdHkuZW50aXR5QXNwZWN0LnNldERlbGV0ZWQoKTtcclxuICAgICAgICAvL2VudGl0eS5fYXNzb2NpYXRlZERhdGFDYWNoZWQgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgYnJlZXplQ29udGV4dCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9icmVlemVDb250ZXh0O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVudGl0eU1hbmFnZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnJlZXplQ29udGV4dC5lbnRpdHlNYW5hZ2VyO1xyXG4gIH1cclxuXHJcbiAgaGFzQ2hhbmdlcyA9IChlbnRpdHlUeXBlczogQXJyYXk8RW50aXR5VHlwZT4gPSBbXSkgPT4ge1xyXG4gICAgaWYgKGVudGl0eVR5cGVzLmxlbmd0aClcclxuICAgICAgcmV0dXJuIHRoaXMuX2JyZWV6ZUNvbnRleHQuZW50aXR5TWFuYWdlci5nZXRDaGFuZ2VzKGVudGl0eVR5cGVzKTtcclxuICAgIHJldHVybiB0aGlzLl9icmVlemVDb250ZXh0LmVudGl0eU1hbmFnZXIuZ2V0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZW50aXR5QWNjZXNzID0gKCk6IFRydUVudGl0eUFjY2Vzc29yID0+IHtcclxuICAgIHJldHVybiB0aGlzLmVudGl0eUFjY2Vzc29yO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0Q2FoY2UgPSAoKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLl9icmVlemVDb250ZXh0LmVudGl0eU1hbmFnZXIuZXhwb3J0RW50aXRpZXMoKSk7XHJcbiAgfVxyXG5cclxuICBzYXZlID0gKFxyXG4gICAgZW50aXRpZXM6IEFycmF5PEVudGl0eT4gfCBudWxsID0gbnVsbCxcclxuICAgIGRlbGV0ZU9wZXJhdGlvbjogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5hcHBFbnZpcm9ubWVudC5pc1NhdmluZykge1xyXG4gICAgICAgIHRoaXMudWlOb3RpZmljYXRpb24uZXJyb3IodGhpcy5hcHBFbnZpcm9ubWVudC5tc2dTYXZlSW5Qcm9ncmVzcyk7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB2YXIgdmFsaWRhdGlvbkVycm9yTWVzc2FnZXMgPSB0aGlzLmZvcm1hdFZhbGlkYXRpb25FcnJvcnMoZW50aXRpZXMpO1xyXG4gICAgICBpZiAodmFsaWRhdGlvbkVycm9yTWVzc2FnZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMudWlOb3RpZmljYXRpb24uZXJyb3IodGhpcy5hcHBFbnZpcm9ubWVudC5tc2dJbnZhbGlkRGF0YSwgdmFsaWRhdGlvbkVycm9yTWVzc2FnZXNbMF0pO1xyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy5oYXNDaGFuZ2VzKCkubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi53YXJuaW5nKHRoaXMuYXBwRW52aXJvbm1lbnQubXNnTm9DaGFuZ2VzVG9TYXZlKTtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQuaXNTYXZpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVudGl0eU1hbmFnZXIuc2F2ZUNoYW5nZXMoKS50aGVuKCgpID0+IHtcclxuICAgICAgICBpZiAoIWRlbGV0ZU9wZXJhdGlvbikge1xyXG4gICAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5zdWNjZXNzKHRoaXMuYXBwRW52aXJvbm1lbnQubXNnU2F2ZVN1Y2Nlc3NmdWwpO1xyXG4gICAgICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5zYXZlQ29tcGxldGUoeyBzdWNjZXNzZnVsOiB0cnVlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgIH0pLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcigoZSBhcyBFcnJvcikubWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5zYXZlQ29tcGxldGUoeyBzdWNjZXNzZnVsOiBmYWxzZSB9KTtcclxuICAgICAgICByZWplY3QoZSk7XHJcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Q2hhbmdlZChudWxsKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNhdmVXaXRob3V0Tm90aWZpY2F0aW9uID0gKCkgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHsgXHJcbiAgICAgIGlmICh0aGlzLmFwcEVudmlyb25tZW50LmlzU2F2aW5nKSB7XHJcbiAgICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLmVycm9yKHRoaXMuYXBwRW52aXJvbm1lbnQubXNnU2F2ZUluUHJvZ3Jlc3MpO1xyXG4gICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQuaXNTYXZpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVudGl0eU1hbmFnZXIuc2F2ZUNoYW5nZXMoKS50aGVuKCgpID0+IHsgXHJcbiAgICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5zYXZlQ29tcGxldGUoeyBzdWNjZXNzZnVsOiB0cnVlIH0pO1xyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgfSkuY2F0Y2goKGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5zYXZlQ29tcGxldGUoeyBzdWNjZXNzZnVsOiBmYWxzZSB9KTtcclxuICAgICAgICAgIHJlamVjdChlKTtcclxuICAgICAgfSkuZmluYWxseSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFwcEVudmlyb25tZW50LmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnByb3BlcnR5Q2hhbmdlZChudWxsKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNhdmVTZXR0aW5ncyA9ICgpID0+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmFwcEVudmlyb25tZW50LmlzU2F2aW5nKSB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcih0aGlzLmFwcEVudmlyb25tZW50Lm1zZ1NhdmVJblByb2dyZXNzKTtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQuaXNTYXZpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVudGl0eU1hbmFnZXIuc2F2ZUNoYW5nZXMoKS50aGVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLnN1Y2Nlc3ModGhpcy5hcHBFbnZpcm9ubWVudC5tc2dTZXR0aW5nc1VwZGF0ZWRTdWNjZXNzZnVsKTtcclxuICAgICAgICB0aGlzLmFwcEVudmlyb25tZW50LnNhdmVDb21wbGV0ZSh7IHN1Y2Nlc3NmdWw6IHRydWUgfSk7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9KS5jYXRjaCgoZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5zYXZlQ29tcGxldGUoeyBzdWNjZXNzZnVsOiBmYWxzZSB9KTtcclxuICAgICAgICByZWplY3QoZSk7XHJcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Q2hhbmdlZChudWxsKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJldmVydCA9ICgpOiB2b2lkID0+IHtcclxuICAgIHRoaXMudWlOb3RpZmljYXRpb24uY29uZmlybSgnQ29uZmlybSBBY3Rpb24nLCAnUmV2ZXJ0ICcgKyB0aGlzLmhhc0NoYW5nZXMoKS5sZW5ndGggKyAnIGNoYW5nZWQgcmVjb3JkKHMpJywgdHJ1ZSwgdHJ1ZSwgXCJOb1wiLCBcIlllc1wiKS50aGVuKChjb25maXJtOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmIChjb25maXJtKSB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHlNYW5hZ2VyLnJlamVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmFwcEVudmlyb25tZW50LnJldmVydENvbXBsZXRlKHsgc3VjY2Vzc2Z1bDogdHJ1ZSB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZXZlcnRXaXRob3V0UHJvbXB0ID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy5yZXZlcnQoKTtcclxuICAgIHRoaXMuYXBwRW52aXJvbm1lbnQucmV2ZXJ0Q29tcGxldGUoeyBzdWNjZXNzZnVsOiB0cnVlIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlID0gKFxyXG4gICAgZW50aXRpZXM6IEFycmF5PEVudGl0eT4sXHJcbiAgICBjb25maXJtTXNnOiBzdHJpbmcsXHJcbiAgICBvblN1Y2Nlc3M6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSA9PiB7XHJcbiAgICB2YXIgbmV3RW50aXRpZXM6IEFycmF5PEVudGl0eT4gPSBbXTtcclxuICAgIHZhciBleGlzdGluZ0VudGl0aWVzOiBBcnJheTxFbnRpdHk+ID0gW107XHJcbiAgICBlbnRpdGllcy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgIGlmIChlLmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZS5pc0FkZGVkKCkpXHJcbiAgICAgICAgbmV3RW50aXRpZXMucHVzaChlKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGV4aXN0aW5nRW50aXRpZXMucHVzaChlKTtcclxuICAgIH0pO1xyXG4gICAgaWYgKG5ld0VudGl0aWVzLmxlbmd0aCAmJiBleGlzdGluZ0VudGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLndhcm5pbmcodGhpcy5hcHBFbnZpcm9ubWVudC5tc2dDYW5ub3REZWxldGVOZXdBbmRFeGlzdGluZ1JlY29yZHMpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZXhpc3RpbmdFbnRpdGllcy5sZW5ndGgpIHtcclxuICAgICAgaWYgKHRoaXMuaGFzQ2hhbmdlcygpLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMudWlOb3RpZmljYXRpb24ud2FybmluZyh0aGlzLmFwcEVudmlyb25tZW50Lm1zZ0RpcnR5UHJldmVudHNEZWxldGVFeGlzdGluZ1JlY29yZCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51aU5vdGlmaWNhdGlvbi5jb25maXJtKCdDb25maXJtIEFjdGlvbicsIGNvbmZpcm1Nc2csIHRydWUsIHRydWUsIFwiTm9cIiwgXCJZZXNcIikudGhlbigoY29uZmlybTogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAoY29uZmlybSkge1xyXG4gICAgICAgIGlmIChuZXdFbnRpdGllcy5sZW5ndGgpIHtcclxuICAgICAgICAgIG5ld0VudGl0aWVzLmZvckVhY2goKGVudGl0eTogRW50aXR5KSA9PiB7XHJcbiAgICAgICAgICAgIGVudGl0eS5lbnRpdHlBc3BlY3QuY2xlYXJWYWxpZGF0aW9uRXJyb3JzKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMubWFya0ZvckRlbGV0ZShuZXdFbnRpdGllcyk7XHJcbiAgICAgICAgICBpZiAob25TdWNjZXNzKSBvblN1Y2Nlc3MoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHRoaXMubWFya0ZvckRlbGV0ZShleGlzdGluZ0VudGl0aWVzKTtcclxuICAgICAgICB9IGNhdGNoIChleGNlcHRpb246IGFueSkge1xyXG4gICAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcihleGNlcHRpb24ubWVzc2FnZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2F2ZShudWxsLCB0cnVlKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHZhciBlbnRpdGllc0RlbGV0ZWQgPSB0aGlzLl9wZW5kaW5nRGVsZXRlRW50aXRpZXMuY29uY2F0KHRoaXMuX3BlbmRpbmdDYXNjYWRlRGVsZXRlRW50aXRpZXMpO1xyXG4gICAgICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5kZWxldGVDb21wbGV0ZSh7IHN1Y2Nlc3NmdWw6IHRydWUsIGVudGl0aWVzOiBlbnRpdGllc0RlbGV0ZWQgfSk7XHJcbiAgICAgICAgICBpZiAoZW50aXRpZXNEZWxldGVkLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wZW5kaW5nQ2FzY2FkZURlbGV0ZUVudGl0aWVzID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdEZWxldGVFbnRpdGllcyA9IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5zdWNjZXNzKHRoaXMuYXBwRW52aXJvbm1lbnQubXNnRGVsZXRlU3VjY2Vzc2Z1bCk7XHJcbiAgICAgICAgICBpZiAob25TdWNjZXNzKSBvblN1Y2Nlc3ModHJ1ZSk7XHJcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJldmVydCgpO1xyXG4gICAgICAgIH0pLmZpbmFsbHkoKCkgPT4geyB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -28,15 +28,13 @@ export class TruUserPreferenceManager {
28
28
  * @returns {promise}
29
29
  */
30
30
  get = (name) => {
31
- let preferences = this.globalDataContext
32
- .entityAccess()
33
- .searchCacheOnlySynchronously(this.modelTypeLookup.getType('TruDbUserPreference'), this.setupQuery);
34
- if (preferences.length > 1)
35
- console.log('Query selected more than one preference record.');
36
- else if (preferences.length === 1)
37
- return JSON.parse(preferences[0].Value);
38
- else
39
- return null;
31
+ let setupQuery = (query) => {
32
+ var predicate = new Predicate('TruDbUserRef', breeze.FilterQueryOp.Equals, this.user.activeUserRef);
33
+ if (name)
34
+ predicate = predicate.and('Name', breeze.FilterQueryOp.Equals, name);
35
+ return query.where(predicate);
36
+ };
37
+ return this.globalDataContext.entityAccess().searchCacheOnlySynchronously(this.modelTypeLookup.getType('TruDbUserPreference'), setupQuery);
40
38
  };
41
39
  /**
42
40
  * Queries for all preferences for the current user. On success, completes
@@ -114,4 +112,4 @@ export class TruUserPreferenceManager {
114
112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUserPreferenceManager, decorators: [{
115
113
  type: Injectable
116
114
  }], ctorParameters: () => [{ type: i1.TruModelTypeLookup }, { type: i2.TruAppEnvironment }, { type: i3.TruUser }] });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXVzZXItcHJlZmVyZW5jZS1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9zZXJ2aWNlcy90cnUtdXNlci1wcmVmZXJlbmNlLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFNbEQsTUFBTSxPQUFPLHdCQUF3QjtJQUd6QjtJQUNBO0lBQ0E7SUFKRixpQkFBaUIsQ0FBTTtJQUMvQixZQUNVLGVBQW1DLEVBQ25DLGNBQWlDLEVBQ2pDLElBQWE7UUFGYixvQkFBZSxHQUFmLGVBQWUsQ0FBb0I7UUFDbkMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFNBQUksR0FBSixJQUFJLENBQVM7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUM7SUFDakUsQ0FBQztJQUVPLFVBQVUsR0FBRyxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsRUFBRTtRQUNoRCxJQUFJLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwRyxJQUFJLElBQUk7WUFDTixTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkUsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQTtJQUVEOzs7OztPQUtHO0lBQ0ksR0FBRyxHQUFHLENBQUMsSUFBWSxF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SSxTQUFTLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBRSxFQUFFO1FBQ3hDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQjthQUN6QixZQUFZLEVBQUU7YUFDZCxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3JGLFNBQVMsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQzNCLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7WUFDRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFFNUIsQ0FBQztZQUNELFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixFQUFFO2lCQUM3QyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNULE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ1YsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFBO3VHQTNHVSx3QkFBd0I7MkdBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgYnJlZXplLCBQcmVkaWNhdGUgfSBmcm9tICdicmVlemUtY2xpZW50JztcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tICcuL3RydS1hcHAtZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFR5cGVMb29rdXAgfSBmcm9tICcuL3RydS1tb2RlbC10eXBlLWxvb2t1cCc7XHJcbmltcG9ydCB7IFRydVVzZXIgfSBmcm9tICcuL3RydS11c2VyJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRydVVzZXJQcmVmZXJlbmNlTWFuYWdlciB7XHJcbiAgcHJpdmF0ZSBnbG9iYWxEYXRhQ29udGV4dDogYW55O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtb2RlbFR5cGVMb29rdXA6IFRydU1vZGVsVHlwZUxvb2t1cCxcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSB1c2VyOiBUcnVVc2VyKSB7XHJcbiAgICB0aGlzLmdsb2JhbERhdGFDb250ZXh0ID0gdGhpcy5hcHBFbnZpcm9ubWVudC5nbG9iYWxEYXRhQ29udGV4dDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBRdWVyeSA9IChxdWVyeTogYW55LCBuYW1lOiBzdHJpbmcpID0+IHtcclxuICAgIHZhciBwcmVkaWNhdGUgPSBuZXcgUHJlZGljYXRlKCdUcnVEYlVzZXJSZWYnLCBicmVlemUuRmlsdGVyUXVlcnlPcC5FcXVhbHMsIHRoaXMudXNlci5hY3RpdmVVc2VyUmVmKTtcclxuICAgIGlmIChuYW1lKVxyXG4gICAgICBwcmVkaWNhdGUgPSBwcmVkaWNhdGUuYW5kKCdOYW1lJywgYnJlZXplLkZpbHRlclF1ZXJ5T3AuRXF1YWxzLCBuYW1lKTtcclxuICAgIHJldHVybiBxdWVyeS53aGVyZShwcmVkaWNhdGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUXVlcmllcyBmb3IgYSBwcmVmZXJlbmNlIGZvciB0aGUgY3VycmVudCB1c2VyLiAgT24gc3VjY2VzcywgY29tcGxldGVzXHJcbiAgICogcHJvbWlzZSB3aXRoIHRoZSB2YWx1ZSBvciB1bmRlZmluZWQgaWYgbm9uZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIHByZWZlcmVuY2UgbmFtZVxyXG4gICAqIEByZXR1cm5zIHtwcm9taXNlfVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgPSAobmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICBsZXQgcHJlZmVyZW5jZXMgPSB0aGlzLmdsb2JhbERhdGFDb250ZXh0XHJcbiAgICAgIC5lbnRpdHlBY2Nlc3MoKVxyXG4gICAgICAuc2VhcmNoQ2FjaGVPbmx5U3luY2hyb25vdXNseSh0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKCdUcnVEYlVzZXJQcmVmZXJlbmNlJyksIHRoaXMuc2V0dXBRdWVyeSlcclxuICAgIGlmIChwcmVmZXJlbmNlcy5sZW5ndGggPiAxKVxyXG4gICAgICBjb25zb2xlLmxvZygnUXVlcnkgc2VsZWN0ZWQgbW9yZSB0aGFuIG9uZSBwcmVmZXJlbmNlIHJlY29yZC4nKTtcclxuICAgIGVsc2UgaWYgKHByZWZlcmVuY2VzLmxlbmd0aCA9PT0gMSlcclxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UocHJlZmVyZW5jZXNbMF0uVmFsdWUpO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFF1ZXJpZXMgZm9yIGFsbCBwcmVmZXJlbmNlcyBmb3IgdGhlIGN1cnJlbnQgdXNlci4gIE9uIHN1Y2Nlc3MsIGNvbXBsZXRlc1xyXG4gICAqIHByb21pc2Ugd2l0aCBhbiBvYmplY3QgbG9hZGVkIHdpdGggdGhlIHZhbHVlcyBpbmRleGVkIGJ5IG5hbWUuXHJcbiAgICogQHJldHVybnMge3Byb21pc2V9XHJcbiAgICovXHJcbiAgcHVibGljIGdldEFsbCA9IGFzeW5jICgpID0+IHtcclxuICAgIGF3YWl0IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHRcclxuICAgICAgLmVudGl0eUFjY2VzcygpXHJcbiAgICAgIC5zZWFyY2hDYWNoZU9ubHkodGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSgnVHJ1RGJVc2VyUHJlZmVyZW5jZScpLCB0aGlzLnNldHVwUXVlcnkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGVudGl0aWVzOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0ge30gYXMgT2JqZWN0O1xyXG4gICAgICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIHJlc3VsdDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudGl0aWVzLmxlbmd0aDsgKytpKVxyXG4gICAgICAgICAgcmVzdWx0W2VudGl0aWVzW2ldLk5hbWUgYXMgT2JqZWN0S2V5XSA9IEpTT04ucGFyc2UoZW50aXRpZXNbaV0uVmFsdWUpO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYXZlcyB0aGUgdmFsdWUgb2YgYSBwcmVmZXJlbmNlLiAgT24gc3VjY2VzcywgY29tcGxldGVzIHByb21pc2Ugd2l0aCBubyB2YWx1ZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIHByZWZlcmVuY2UgbmFtZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIHZhbHVlIHRleHRcclxuICAgKiBAcmV0dXJucyB7cHJvbWlzZX1cclxuICAgKi9cclxuICBwdWJsaWMgc2V0ID0gYXN5bmMgKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xyXG4gICAgXHJcbiAgICBhd2FpdCB0aGlzLmdsb2JhbERhdGFDb250ZXh0XHJcbiAgICAgIC5lbnRpdHlBY2Nlc3MoKVxyXG4gICAgICAuc2VhcmNoQ2FjaGVPbmx5KHRoaXMubW9kZWxUeXBlTG9va3VwLmdldFR5cGUoJ1RydURiVXNlclByZWZlcmVuY2UnKSwgdGhpcy5zZXR1cFF1ZXJ5KVxyXG4gICAgICAuc3Vic2NyaWJlKChlbnRpdGllczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGVudGl0aWVzLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnUXVlcnkgc2VsZWN0ZWQgbW9yZSB0aGFuIG9uZSBwcmVmZXJlbmNlIHJlY29yZC4nKTtcclxuICAgICAgICB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcclxuICAgICAgICBpZiAoZW50aXRpZXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICBlbnRpdGllc1swXS5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIH0gZWxzZSB7ICAgICAgICAgIFxyXG4gICAgICAgICAgbGV0IGVudGl0eSA9IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuYWRkKHRoaXMubW9kZWxUeXBlTG9va3VwLmdldFR5cGUoJ1RydURiVXNlclByZWZlcmVuY2UnKSkgYXMgYW55O1xyXG4gICAgICAgICAgZW50aXR5Lk5hbWUgPSBuYW1lO1xyXG4gICAgICAgICAgZW50aXR5LlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICBlbnRpdHkuVHJ1RGJVc2VyUmVmID0gdGhpcy51c2VyLmFjdGl2ZVVzZXJSZWY7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQuc2F2ZVdpdGhvdXROb3RpZmljYXRpb24oKVxyXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge30pXHJcbiAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgYSBwcmVmZXJlbmNlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gcHJlZmVyZW5jZSBuYW1lXHJcbiAgICovXHJcbiAgcHVibGljIGVsaW1pbmF0ZSA9IGFzeW5jIChuYW1lOiBzdHJpbmcpID0+IHtcclxuICAgIGF3YWl0IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHRcclxuICAgICAgLmVudGl0eUFjY2VzcygpXHJcbiAgICAgIC5zZWFyY2hDYWNoZU9ubHkodGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSgnVHJ1RGJVc2VyUHJlZmVyZW5jZScpLCB0aGlzLnNldHVwUXVlcnkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGVudGl0aWVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZW50aXRpZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ1F1ZXJ5IHNlbGVjdGVkIG1vcmUgdGhhbiBvbmUgcHJlZmVyZW5jZSByZWNvcmQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbnRpdGllcy5sZW5ndGggPT09IDApIHtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVudGl0aWVzWzBdLmVudGl0eUFzcGVjdC5zZXREZWxldGVkKCk7XHJcbiAgICAgICAgdGhpcy5nbG9iYWxEYXRhQ29udGV4dC5zYXZlV2l0aG91dE5vdGlmaWNhdGlvbigpXHJcbiAgICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXVzZXItcHJlZmVyZW5jZS1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9zZXJ2aWNlcy90cnUtdXNlci1wcmVmZXJlbmNlLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFNbEQsTUFBTSxPQUFPLHdCQUF3QjtJQUd6QjtJQUNBO0lBQ0E7SUFKRixpQkFBaUIsQ0FBTTtJQUMvQixZQUNVLGVBQW1DLEVBQ25DLGNBQWlDLEVBQ2pDLElBQWE7UUFGYixvQkFBZSxHQUFmLGVBQWUsQ0FBb0I7UUFDbkMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFNBQUksR0FBSixJQUFJLENBQVM7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUM7SUFDakUsQ0FBQztJQUVPLFVBQVUsR0FBRyxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsRUFBRTtRQUNoRCxJQUFJLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwRyxJQUFJLElBQUk7WUFDTixTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkUsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQTtJQUVEOzs7OztPQUtHO0lBQ0ksR0FBRyxHQUFHLENBQUMsSUFBWSxF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Z0JBQ1YsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFBO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUyxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQUUsRUFBRTtRQUN4QyxNQUFNLElBQUksQ0FBQyxpQkFBaUI7YUFDekIsWUFBWSxFQUFFO2FBQ2QsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUNyRixTQUFTLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUMzQixJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaURBQWlELENBQUMsQ0FBQztZQUNqRSxDQUFDO1lBQ0QsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBRTVCLENBQUM7WUFDRCxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsRUFBRTtpQkFDN0MsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDVCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNWLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQTt1R0F6R1Usd0JBQXdCOzJHQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGJyZWV6ZSwgUHJlZGljYXRlIH0gZnJvbSAnYnJlZXplLWNsaWVudCc7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgVHJ1TW9kZWxUeXBlTG9va3VwIH0gZnJvbSAnLi90cnUtbW9kZWwtdHlwZS1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVVc2VyIH0gZnJvbSAnLi90cnUtdXNlcic7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBUcnVVc2VyUHJlZmVyZW5jZU1hbmFnZXIge1xyXG4gIHByaXZhdGUgZ2xvYmFsRGF0YUNvbnRleHQ6IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbW9kZWxUeXBlTG9va3VwOiBUcnVNb2RlbFR5cGVMb29rdXAsXHJcbiAgICBwcml2YXRlIGFwcEVudmlyb25tZW50OiBUcnVBcHBFbnZpcm9ubWVudCxcclxuICAgIHByaXZhdGUgdXNlcjogVHJ1VXNlcikge1xyXG4gICAgdGhpcy5nbG9iYWxEYXRhQ29udGV4dCA9IHRoaXMuYXBwRW52aXJvbm1lbnQuZ2xvYmFsRGF0YUNvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwUXVlcnkgPSAocXVlcnk6IGFueSwgbmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICB2YXIgcHJlZGljYXRlID0gbmV3IFByZWRpY2F0ZSgnVHJ1RGJVc2VyUmVmJywgYnJlZXplLkZpbHRlclF1ZXJ5T3AuRXF1YWxzLCB0aGlzLnVzZXIuYWN0aXZlVXNlclJlZik7XHJcbiAgICBpZiAobmFtZSlcclxuICAgICAgcHJlZGljYXRlID0gcHJlZGljYXRlLmFuZCgnTmFtZScsIGJyZWV6ZS5GaWx0ZXJRdWVyeU9wLkVxdWFscywgbmFtZSk7XHJcbiAgICByZXR1cm4gcXVlcnkud2hlcmUocHJlZGljYXRlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFF1ZXJpZXMgZm9yIGEgcHJlZmVyZW5jZSBmb3IgdGhlIGN1cnJlbnQgdXNlci4gIE9uIHN1Y2Nlc3MsIGNvbXBsZXRlc1xyXG4gICAqIHByb21pc2Ugd2l0aCB0aGUgdmFsdWUgb3IgdW5kZWZpbmVkIGlmIG5vbmUuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBwcmVmZXJlbmNlIG5hbWVcclxuICAgKiBAcmV0dXJucyB7cHJvbWlzZX1cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0ID0gKG5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgbGV0IHNldHVwUXVlcnkgPSAocXVlcnk6IGFueSkgPT4ge1xyXG4gICAgICB2YXIgcHJlZGljYXRlID0gbmV3IFByZWRpY2F0ZSgnVHJ1RGJVc2VyUmVmJywgYnJlZXplLkZpbHRlclF1ZXJ5T3AuRXF1YWxzLCB0aGlzLnVzZXIuYWN0aXZlVXNlclJlZik7XHJcbiAgICAgIGlmIChuYW1lKVxyXG4gICAgICAgIHByZWRpY2F0ZSA9IHByZWRpY2F0ZS5hbmQoJ05hbWUnLCBicmVlemUuRmlsdGVyUXVlcnlPcC5FcXVhbHMsIG5hbWUpO1xyXG4gICAgICByZXR1cm4gcXVlcnkud2hlcmUocHJlZGljYXRlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmdsb2JhbERhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLnNlYXJjaENhY2hlT25seVN5bmNocm9ub3VzbHkodGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSgnVHJ1RGJVc2VyUHJlZmVyZW5jZScpLCBzZXR1cFF1ZXJ5KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUXVlcmllcyBmb3IgYWxsIHByZWZlcmVuY2VzIGZvciB0aGUgY3VycmVudCB1c2VyLiAgT24gc3VjY2VzcywgY29tcGxldGVzXHJcbiAgICogcHJvbWlzZSB3aXRoIGFuIG9iamVjdCBsb2FkZWQgd2l0aCB0aGUgdmFsdWVzIGluZGV4ZWQgYnkgbmFtZS5cclxuICAgKiBAcmV0dXJucyB7cHJvbWlzZX1cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0QWxsID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgYXdhaXQgdGhpcy5nbG9iYWxEYXRhQ29udGV4dFxyXG4gICAgICAuZW50aXR5QWNjZXNzKClcclxuICAgICAgLnNlYXJjaENhY2hlT25seSh0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKCdUcnVEYlVzZXJQcmVmZXJlbmNlJyksIHRoaXMuc2V0dXBRdWVyeSlcclxuICAgICAgLnN1YnNjcmliZSgoZW50aXRpZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSB7fSBhcyBPYmplY3Q7XHJcbiAgICAgICAgdHlwZSBPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgcmVzdWx0O1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50aXRpZXMubGVuZ3RoOyArK2kpXHJcbiAgICAgICAgICByZXN1bHRbZW50aXRpZXNbaV0uTmFtZSBhcyBPYmplY3RLZXldID0gSlNPTi5wYXJzZShlbnRpdGllc1tpXS5WYWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhdmVzIHRoZSB2YWx1ZSBvZiBhIHByZWZlcmVuY2UuICBPbiBzdWNjZXNzLCBjb21wbGV0ZXMgcHJvbWlzZSB3aXRoIG5vIHZhbHVlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gcHJlZmVyZW5jZSBuYW1lXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gdmFsdWUgdGV4dFxyXG4gICAqIEByZXR1cm5zIHtwcm9taXNlfVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXQgPSBhc3luYyAobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB7XHJcbiAgICBcclxuICAgIGF3YWl0IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHRcclxuICAgICAgLmVudGl0eUFjY2VzcygpXHJcbiAgICAgIC5zZWFyY2hDYWNoZU9ubHkodGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSgnVHJ1RGJVc2VyUHJlZmVyZW5jZScpLCB0aGlzLnNldHVwUXVlcnkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGVudGl0aWVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZW50aXRpZXMubGVuZ3RoID4gMSlcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdRdWVyeSBzZWxlY3RlZCBtb3JlIHRoYW4gb25lIHByZWZlcmVuY2UgcmVjb3JkLicpO1xyXG4gICAgICAgIHZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xyXG4gICAgICAgIGlmIChlbnRpdGllcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgIGVudGl0aWVzWzBdLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgfSBlbHNlIHsgICAgICAgICAgXHJcbiAgICAgICAgICBsZXQgZW50aXR5ID0gdGhpcy5nbG9iYWxEYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQodGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSgnVHJ1RGJVc2VyUHJlZmVyZW5jZScpKSBhcyBhbnk7XHJcbiAgICAgICAgICBlbnRpdHkuTmFtZSA9IG5hbWU7XHJcbiAgICAgICAgICBlbnRpdHkuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIGVudGl0eS5UcnVEYlVzZXJSZWYgPSB0aGlzLnVzZXIuYWN0aXZlVXNlclJlZjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5nbG9iYWxEYXRhQ29udGV4dC5zYXZlV2l0aG91dE5vdGlmaWNhdGlvbigpXHJcbiAgICAgICAgICAudGhlbigoKSA9PiB7fSlcclxuICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBhIHByZWZlcmVuY2UuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBwcmVmZXJlbmNlIG5hbWVcclxuICAgKi9cclxuICBwdWJsaWMgZWxpbWluYXRlID0gYXN5bmMgKG5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgYXdhaXQgdGhpcy5nbG9iYWxEYXRhQ29udGV4dFxyXG4gICAgICAuZW50aXR5QWNjZXNzKClcclxuICAgICAgLnNlYXJjaENhY2hlT25seSh0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKCdUcnVEYlVzZXJQcmVmZXJlbmNlJyksIHRoaXMuc2V0dXBRdWVyeSlcclxuICAgICAgLnN1YnNjcmliZSgoZW50aXRpZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChlbnRpdGllcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnUXVlcnkgc2VsZWN0ZWQgbW9yZSB0aGFuIG9uZSBwcmVmZXJlbmNlIHJlY29yZC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVudGl0aWVzLmxlbmd0aCA9PT0gMCkge1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZW50aXRpZXNbMF0uZW50aXR5QXNwZWN0LnNldERlbGV0ZWQoKTtcclxuICAgICAgICB0aGlzLmdsb2JhbERhdGFDb250ZXh0LnNhdmVXaXRob3V0Tm90aWZpY2F0aW9uKClcclxuICAgICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKCgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=