@alfresco/aca-content 4.2.0-6012035792 → 4.2.0-6023731648

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.
@@ -237,7 +237,7 @@ export class ManageRulesSmartComponent {
237
237
  }
238
238
  }
239
239
  ManageRulesSmartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ManageRulesSmartComponent, deps: [{ token: i1.Location }, { token: i2.FolderRulesService }, { token: i3.ActivatedRoute }, { token: i4.MatDialog }, { token: i5.NotificationService }, { token: i6.ActionsService }, { token: i7.FolderRuleSetsService }], target: i0.ɵɵFactoryTarget.Component });
240
- ManageRulesSmartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: ManageRulesSmartComponent, isStandalone: true, selector: "aca-manage-rules", host: { classAttribute: "aca-manage-rules" }, ngImport: i0, template: "<aca-page-layout>\n\n <div class=\"aca-page-layout-header\">\n <adf-toolbar class=\"adf-toolbar--inline\">\n <button mat-icon-button (click)=\"goBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </adf-toolbar>\n <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\">\n\n <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </ng-container>\n\n <ng-template #onLoaded>\n <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\n\n <mat-slide-toggle\n data-automation-id=\"manage-rules-inheritance-toggle-button\"\n [checked]=\"isInheritanceEnabled\"\n (change)=\"onInheritanceToggleChange($event)\"\n [disabled]=\"isInheritanceToggleDisabled\"\n [labelPosition]=\"'before'\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n </mat-slide-toggle>\n\n <mat-divider vertical class=\"vertical-divider\"></mat-divider>\n\n <div class=\"aca-manage-rules__actions-bar__buttons\">\n <button\n *ngIf=\"!(mainRuleSet$ | async)\"\n data-automation-id=\"manage-rules-link-button\"\n mat-stroked-button\n (click)=\"openLinkRulesDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n </button>\n\n <button\n *ngIf=\"canEditMainRule\"\n data-automation-id=\"manage-rules-create-button\"\n mat-flat-button color=\"primary\"\n (click)=\"openCreateUpdateRuleDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n </button>\n </div>\n\n </adf-toolbar>\n <mat-divider></mat-divider>\n\n <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n <aca-rule-list\n [mainRuleSet]=\"mainRuleSet$ | async\"\n [folderId]=\"nodeId\"\n [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n [selectedRule]=\"selectedRule$ | async\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\">\n </aca-rule-list>\n\n <div class=\"aca-manage-rules__container__rule-details\">\n\n <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <div class=\"aca-manage-rules__container__rule-details__header__title\">\n <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n {{ selectedRule.name }}\n </div>\n <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n {{ selectedRule.description }}\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n </button>\n </ng-container>\n\n <ng-template #goToFolderButton>\n <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <aca-rule-details\n [actionDefinitions]=\"actionDefinitions$ | async\"\n [readOnly]=\"true\"\n [preview]=\"true\"\n [value]=\"selectedRule\"\n [nodeId]=\"nodeId\">\n </aca-rule-details>\n </div>\n </div>\n </div>\n\n <ng-template #emptyContent>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n >\n </adf-empty-content>\n </ng-template>\n </ng-container>\n\n <ng-template #genericError>\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n </ng-template>\n\n </ng-template>\n\n </div>\n </div>\n\n</aca-page-layout>\n", styles: [".aca-manage-rules__actions-bar{padding:0 30px;display:flex;align-items:center}.aca-manage-rules__actions-bar .aca-page-title{margin-left:18px}.aca-manage-rules__actions-bar__title{align-items:center;flex:1}.aca-manage-rules__actions-bar__buttons{display:flex;align-items:stretch;gap:12px}.aca-manage-rules__actions-bar .mat-slide-toggle-label{font-weight:600;font-size:14px}.aca-manage-rules__actions-bar .vertical-divider{height:50%;margin:0 12px}.aca-manage-rules__container{display:grid;grid-template-columns:minmax(250px,1fr) 3fr;padding:20px;gap:12px;overflow-y:auto;flex:1}.aca-manage-rules__container__rule-details{border:1px solid var(--theme-border-color);border-radius:12px;overflow-y:auto}.aca-manage-rules__container__rule-details__header{position:sticky;top:0;z-index:1;display:flex;flex-direction:row;align-items:flex-start;overflow-x:auto;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--theme-border-color);background-color:var(--theme-background-color);column-gap:20px}.aca-manage-rules__container__rule-details__header__title{display:flex;flex-direction:column;gap:4px;word-wrap:break-word;min-width:100px}.aca-manage-rules__container__rule-details__header__title__name{font-size:1.2em;font-weight:700}.aca-manage-rules__container__rule-details__header__title__description{font-size:.8em;font-style:italic}.aca-manage-rules__container__rule-details__header__buttons{display:flex;flex-direction:row;align-items:stretch;gap:4px}.aca-manage-rules__container__rule-details__header__buttons button{color:var(--theme-text-color)}.aca-manage-rules__container__rule-details__header__buttons button#delete-rule-btn{padding:0 8px;min-width:unset}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "component", type: PageLayoutComponent, selector: "aca-page-layout", inputs: ["hasError"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i5.ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: i5.ToolbarTitleComponent, selector: "adf-toolbar-title" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i12.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i13.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: RuleListUiComponent, selector: "aca-rule-list", inputs: ["mainRuleSet", "folderId", "inheritedRuleSets", "hasMoreRuleSets", "ruleSetsLoading", "selectedRule"], outputs: ["loadMoreRuleSets", "loadMoreRules", "selectRule", "ruleEnabledChanged", "ruleSetEditLinkClicked", "ruleSetUnlinkClicked"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "ngmodule", type: TemplateModule }, { kind: "component", type: i5.EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }, { kind: "component", type: GenericErrorComponent, selector: "aca-generic-error", inputs: ["text"] }, { kind: "component", type: RuleDetailsUiComponent, selector: "aca-rule-details", inputs: ["readOnly", "value", "preview", "actionDefinitions", "parameterConstraints", "nodeId"], outputs: ["formValidationChanged", "formValueChanged"] }, { kind: "ngmodule", type: MatDialogModule }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
240
+ ManageRulesSmartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: ManageRulesSmartComponent, isStandalone: true, selector: "aca-manage-rules", host: { classAttribute: "aca-manage-rules" }, ngImport: i0, template: "<aca-page-layout>\n\n <div class=\"aca-page-layout-header\">\n <adf-toolbar class=\"adf-toolbar--inline\">\n <button mat-icon-button (click)=\"goBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </adf-toolbar>\n <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\">\n\n <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </ng-container>\n\n <ng-template #onLoaded>\n <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\n\n <mat-slide-toggle\n data-automation-id=\"manage-rules-inheritance-toggle-button\"\n [checked]=\"isInheritanceEnabled\"\n (change)=\"onInheritanceToggleChange($event)\"\n [disabled]=\"isInheritanceToggleDisabled\"\n [labelPosition]=\"'before'\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n </mat-slide-toggle>\n\n <mat-divider vertical class=\"vertical-divider\"></mat-divider>\n\n <div class=\"aca-manage-rules__actions-bar__buttons\">\n <button\n *ngIf=\"!(mainRuleSet$ | async)\"\n data-automation-id=\"manage-rules-link-button\"\n mat-stroked-button\n (click)=\"openLinkRulesDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n </button>\n\n <button\n *ngIf=\"canEditMainRule\"\n data-automation-id=\"manage-rules-create-button\"\n mat-flat-button color=\"primary\"\n (click)=\"openCreateUpdateRuleDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n </button>\n </div>\n\n </adf-toolbar>\n <mat-divider></mat-divider>\n\n <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n <aca-rule-list\n [mainRuleSet]=\"mainRuleSet$ | async\"\n [folderId]=\"nodeId\"\n [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n [selectedRule]=\"selectedRule$ | async\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\">\n </aca-rule-list>\n\n <div class=\"aca-manage-rules__container__rule-details\">\n\n <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <div class=\"aca-manage-rules__container__rule-details__header__title\">\n <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n {{ selectedRule.name }}\n </div>\n <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n {{ selectedRule.description }}\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n </button>\n </ng-container>\n\n <ng-template #goToFolderButton>\n <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <aca-rule-details\n [actionDefinitions]=\"actionDefinitions$ | async\"\n [parameterConstraints]=\"parameterConstraints$ | async\"\n [readOnly]=\"true\"\n [preview]=\"true\"\n [value]=\"selectedRule\"\n [nodeId]=\"nodeId\">\n </aca-rule-details>\n </div>\n </div>\n </div>\n\n <ng-template #emptyContent>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n >\n </adf-empty-content>\n </ng-template>\n </ng-container>\n\n <ng-template #genericError>\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n </ng-template>\n\n </ng-template>\n\n </div>\n </div>\n\n</aca-page-layout>\n", styles: [".aca-manage-rules__actions-bar{padding:0 30px;display:flex;align-items:center}.aca-manage-rules__actions-bar .aca-page-title{margin-left:18px}.aca-manage-rules__actions-bar__title{align-items:center;flex:1}.aca-manage-rules__actions-bar__buttons{display:flex;align-items:stretch;gap:12px}.aca-manage-rules__actions-bar .mat-slide-toggle-label{font-weight:600;font-size:14px}.aca-manage-rules__actions-bar .vertical-divider{height:50%;margin:0 12px}.aca-manage-rules__container{display:grid;grid-template-columns:minmax(250px,1fr) 3fr;padding:20px;gap:12px;overflow-y:auto;flex:1}.aca-manage-rules__container__rule-details{border:1px solid var(--theme-border-color);border-radius:12px;overflow-y:auto}.aca-manage-rules__container__rule-details__header{position:sticky;top:0;z-index:1;display:flex;flex-direction:row;align-items:flex-start;overflow-x:auto;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--theme-border-color);background-color:var(--theme-background-color);column-gap:20px}.aca-manage-rules__container__rule-details__header__title{display:flex;flex-direction:column;gap:4px;word-wrap:break-word;min-width:100px}.aca-manage-rules__container__rule-details__header__title__name{font-size:1.2em;font-weight:700}.aca-manage-rules__container__rule-details__header__title__description{font-size:.8em;font-style:italic}.aca-manage-rules__container__rule-details__header__buttons{display:flex;flex-direction:row;align-items:stretch;gap:4px}.aca-manage-rules__container__rule-details__header__buttons button{color:var(--theme-text-color)}.aca-manage-rules__container__rule-details__header__buttons button#delete-rule-btn{padding:0 8px;min-width:unset}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "component", type: PageLayoutComponent, selector: "aca-page-layout", inputs: ["hasError"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i5.ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: i5.ToolbarTitleComponent, selector: "adf-toolbar-title" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i12.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i13.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: RuleListUiComponent, selector: "aca-rule-list", inputs: ["mainRuleSet", "folderId", "inheritedRuleSets", "hasMoreRuleSets", "ruleSetsLoading", "selectedRule"], outputs: ["loadMoreRuleSets", "loadMoreRules", "selectRule", "ruleEnabledChanged", "ruleSetEditLinkClicked", "ruleSetUnlinkClicked"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "ngmodule", type: TemplateModule }, { kind: "component", type: i5.EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }, { kind: "component", type: GenericErrorComponent, selector: "aca-generic-error", inputs: ["text"] }, { kind: "component", type: RuleDetailsUiComponent, selector: "aca-rule-details", inputs: ["readOnly", "value", "preview", "actionDefinitions", "parameterConstraints", "nodeId"], outputs: ["formValidationChanged", "formValueChanged"] }, { kind: "ngmodule", type: MatDialogModule }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
241
241
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ManageRulesSmartComponent, decorators: [{
242
242
  type: Component,
243
243
  args: [{ standalone: true, imports: [
@@ -256,6 +256,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
256
256
  GenericErrorComponent,
257
257
  RuleDetailsUiComponent,
258
258
  MatDialogModule
259
- ], selector: 'aca-manage-rules', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, host: { class: 'aca-manage-rules' }, template: "<aca-page-layout>\n\n <div class=\"aca-page-layout-header\">\n <adf-toolbar class=\"adf-toolbar--inline\">\n <button mat-icon-button (click)=\"goBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </adf-toolbar>\n <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\">\n\n <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </ng-container>\n\n <ng-template #onLoaded>\n <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\n\n <mat-slide-toggle\n data-automation-id=\"manage-rules-inheritance-toggle-button\"\n [checked]=\"isInheritanceEnabled\"\n (change)=\"onInheritanceToggleChange($event)\"\n [disabled]=\"isInheritanceToggleDisabled\"\n [labelPosition]=\"'before'\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n </mat-slide-toggle>\n\n <mat-divider vertical class=\"vertical-divider\"></mat-divider>\n\n <div class=\"aca-manage-rules__actions-bar__buttons\">\n <button\n *ngIf=\"!(mainRuleSet$ | async)\"\n data-automation-id=\"manage-rules-link-button\"\n mat-stroked-button\n (click)=\"openLinkRulesDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n </button>\n\n <button\n *ngIf=\"canEditMainRule\"\n data-automation-id=\"manage-rules-create-button\"\n mat-flat-button color=\"primary\"\n (click)=\"openCreateUpdateRuleDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n </button>\n </div>\n\n </adf-toolbar>\n <mat-divider></mat-divider>\n\n <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n <aca-rule-list\n [mainRuleSet]=\"mainRuleSet$ | async\"\n [folderId]=\"nodeId\"\n [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n [selectedRule]=\"selectedRule$ | async\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\">\n </aca-rule-list>\n\n <div class=\"aca-manage-rules__container__rule-details\">\n\n <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <div class=\"aca-manage-rules__container__rule-details__header__title\">\n <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n {{ selectedRule.name }}\n </div>\n <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n {{ selectedRule.description }}\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n </button>\n </ng-container>\n\n <ng-template #goToFolderButton>\n <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <aca-rule-details\n [actionDefinitions]=\"actionDefinitions$ | async\"\n [readOnly]=\"true\"\n [preview]=\"true\"\n [value]=\"selectedRule\"\n [nodeId]=\"nodeId\">\n </aca-rule-details>\n </div>\n </div>\n </div>\n\n <ng-template #emptyContent>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n >\n </adf-empty-content>\n </ng-template>\n </ng-container>\n\n <ng-template #genericError>\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n </ng-template>\n\n </ng-template>\n\n </div>\n </div>\n\n</aca-page-layout>\n", styles: [".aca-manage-rules__actions-bar{padding:0 30px;display:flex;align-items:center}.aca-manage-rules__actions-bar .aca-page-title{margin-left:18px}.aca-manage-rules__actions-bar__title{align-items:center;flex:1}.aca-manage-rules__actions-bar__buttons{display:flex;align-items:stretch;gap:12px}.aca-manage-rules__actions-bar .mat-slide-toggle-label{font-weight:600;font-size:14px}.aca-manage-rules__actions-bar .vertical-divider{height:50%;margin:0 12px}.aca-manage-rules__container{display:grid;grid-template-columns:minmax(250px,1fr) 3fr;padding:20px;gap:12px;overflow-y:auto;flex:1}.aca-manage-rules__container__rule-details{border:1px solid var(--theme-border-color);border-radius:12px;overflow-y:auto}.aca-manage-rules__container__rule-details__header{position:sticky;top:0;z-index:1;display:flex;flex-direction:row;align-items:flex-start;overflow-x:auto;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--theme-border-color);background-color:var(--theme-background-color);column-gap:20px}.aca-manage-rules__container__rule-details__header__title{display:flex;flex-direction:column;gap:4px;word-wrap:break-word;min-width:100px}.aca-manage-rules__container__rule-details__header__title__name{font-size:1.2em;font-weight:700}.aca-manage-rules__container__rule-details__header__title__description{font-size:.8em;font-style:italic}.aca-manage-rules__container__rule-details__header__buttons{display:flex;flex-direction:row;align-items:stretch;gap:4px}.aca-manage-rules__container__rule-details__header__buttons button{color:var(--theme-text-color)}.aca-manage-rules__container__rule-details__header__buttons button#delete-rule-btn{padding:0 8px;min-width:unset}\n"] }]
259
+ ], selector: 'aca-manage-rules', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, host: { class: 'aca-manage-rules' }, template: "<aca-page-layout>\n\n <div class=\"aca-page-layout-header\">\n <adf-toolbar class=\"adf-toolbar--inline\">\n <button mat-icon-button (click)=\"goBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </adf-toolbar>\n <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\">\n\n <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </ng-container>\n\n <ng-template #onLoaded>\n <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\n\n <mat-slide-toggle\n data-automation-id=\"manage-rules-inheritance-toggle-button\"\n [checked]=\"isInheritanceEnabled\"\n (change)=\"onInheritanceToggleChange($event)\"\n [disabled]=\"isInheritanceToggleDisabled\"\n [labelPosition]=\"'before'\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n </mat-slide-toggle>\n\n <mat-divider vertical class=\"vertical-divider\"></mat-divider>\n\n <div class=\"aca-manage-rules__actions-bar__buttons\">\n <button\n *ngIf=\"!(mainRuleSet$ | async)\"\n data-automation-id=\"manage-rules-link-button\"\n mat-stroked-button\n (click)=\"openLinkRulesDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n </button>\n\n <button\n *ngIf=\"canEditMainRule\"\n data-automation-id=\"manage-rules-create-button\"\n mat-flat-button color=\"primary\"\n (click)=\"openCreateUpdateRuleDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n </button>\n </div>\n\n </adf-toolbar>\n <mat-divider></mat-divider>\n\n <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n <aca-rule-list\n [mainRuleSet]=\"mainRuleSet$ | async\"\n [folderId]=\"nodeId\"\n [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n [selectedRule]=\"selectedRule$ | async\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\">\n </aca-rule-list>\n\n <div class=\"aca-manage-rules__container__rule-details\">\n\n <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <div class=\"aca-manage-rules__container__rule-details__header__title\">\n <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n {{ selectedRule.name }}\n </div>\n <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n {{ selectedRule.description }}\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n </button>\n </ng-container>\n\n <ng-template #goToFolderButton>\n <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <aca-rule-details\n [actionDefinitions]=\"actionDefinitions$ | async\"\n [parameterConstraints]=\"parameterConstraints$ | async\"\n [readOnly]=\"true\"\n [preview]=\"true\"\n [value]=\"selectedRule\"\n [nodeId]=\"nodeId\">\n </aca-rule-details>\n </div>\n </div>\n </div>\n\n <ng-template #emptyContent>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n >\n </adf-empty-content>\n </ng-template>\n </ng-container>\n\n <ng-template #genericError>\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n </ng-template>\n\n </ng-template>\n\n </div>\n </div>\n\n</aca-page-layout>\n", styles: [".aca-manage-rules__actions-bar{padding:0 30px;display:flex;align-items:center}.aca-manage-rules__actions-bar .aca-page-title{margin-left:18px}.aca-manage-rules__actions-bar__title{align-items:center;flex:1}.aca-manage-rules__actions-bar__buttons{display:flex;align-items:stretch;gap:12px}.aca-manage-rules__actions-bar .mat-slide-toggle-label{font-weight:600;font-size:14px}.aca-manage-rules__actions-bar .vertical-divider{height:50%;margin:0 12px}.aca-manage-rules__container{display:grid;grid-template-columns:minmax(250px,1fr) 3fr;padding:20px;gap:12px;overflow-y:auto;flex:1}.aca-manage-rules__container__rule-details{border:1px solid var(--theme-border-color);border-radius:12px;overflow-y:auto}.aca-manage-rules__container__rule-details__header{position:sticky;top:0;z-index:1;display:flex;flex-direction:row;align-items:flex-start;overflow-x:auto;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--theme-border-color);background-color:var(--theme-background-color);column-gap:20px}.aca-manage-rules__container__rule-details__header__title{display:flex;flex-direction:column;gap:4px;word-wrap:break-word;min-width:100px}.aca-manage-rules__container__rule-details__header__title__name{font-size:1.2em;font-weight:700}.aca-manage-rules__container__rule-details__header__title__description{font-size:.8em;font-style:italic}.aca-manage-rules__container__rule-details__header__buttons{display:flex;flex-direction:row;align-items:stretch;gap:4px}.aca-manage-rules__container__rule-details__header__buttons button{color:var(--theme-text-color)}.aca-manage-rules__container__rule-details__header__buttons button#delete-rule-btn{padding:0 8px;min-width:unset}\n"] }]
260
260
  }], ctorParameters: function () { return [{ type: i1.Location }, { type: i2.FolderRulesService }, { type: i3.ActivatedRoute }, { type: i4.MatDialog }, { type: i5.NotificationService }, { type: i6.ActionsService }, { type: i7.FolderRuleSetsService }]; } });
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXJ1bGVzLnNtYXJ0LWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvbWFuYWdlLXJ1bGVzL21hbmFnZS1ydWxlcy5zbWFydC1jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9mb2xkZXItcnVsZXMvc3JjL21hbmFnZS1ydWxlcy9tYW5hZ2UtcnVsZXMuc21hcnQtY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2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b0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixlQUFlO3FCQUNoQixZQUNTLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxPQUFPLFFBQzFDLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb2xkZXJSdWxlc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mb2xkZXItcnVsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJ1bGUgfSBmcm9tICcuLi9tb2RlbC9ydWxlLm1vZGVsJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTm9kZUluZm8gfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBkZWxheSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWRpdFJ1bGVEaWFsb2dVaUNvbXBvbmVudCB9IGZyb20gJy4uL3J1bGUtZGV0YWlscy9lZGl0LXJ1bGUtZGlhbG9nLnVpLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UsIFRlbXBsYXRlTW9kdWxlLCBUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZCB9IGZyb20gJy4uL21vZGVsL3J1bGUtYWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IEFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEZvbGRlclJ1bGVTZXRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZvbGRlci1ydWxlLXNldHMuc2VydmljZSc7XG5pbXBvcnQgeyBSdWxlU2V0IH0gZnJvbSAnLi4vbW9kZWwvcnVsZS1zZXQubW9kZWwnO1xuaW1wb3J0IHsgUnVsZVNldFBpY2tlclNtYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi4vcnVsZS1zZXQtcGlja2VyL3J1bGUtc2V0LXBpY2tlci5zbWFydC1jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVDaGFuZ2UsIE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IEFjdGlvblBhcmFtZXRlckNvbnN0cmFpbnQgfSBmcm9tICcuLi9tb2RlbC9hY3Rpb24tcGFyYW1ldGVyLWNvbnN0cmFpbnQubW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHZW5lcmljRXJyb3JDb21wb25lbnQsIFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgUnVsZUxpc3RVaUNvbXBvbmVudCB9IGZyb20gJy4uL3J1bGUtbGlzdC9ydWxlLWxpc3QvcnVsZS1saXN0LnVpLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBSdWxlRGV0YWlsc1VpQ29tcG9uZW50IH0gZnJvbSAnLi4vcnVsZS1kZXRhaWxzL3J1bGUtZGV0YWlscy51aS1jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgUGFnZUxheW91dENvbXBvbmVudCxcbiAgICBUb29sYmFyTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgUnVsZUxpc3RVaUNvbXBvbmVudCxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgVGVtcGxhdGVNb2R1bGUsXG4gICAgR2VuZXJpY0Vycm9yQ29tcG9uZW50LFxuICAgIFJ1bGVEZXRhaWxzVWlDb21wb25lbnQsXG4gICAgTWF0RGlhbG9nTW9kdWxlXG4gIF0sXG4gIHNlbGVjdG9yOiAnYWNhLW1hbmFnZS1ydWxlcycsXG4gIHRlbXBsYXRlVXJsOiAnbWFuYWdlLXJ1bGVzLnNtYXJ0LWNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ21hbmFnZS1ydWxlcy5zbWFydC1jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhY2EtbWFuYWdlLXJ1bGVzJyB9XG59KVxuZXhwb3J0IGNsYXNzIE1hbmFnZVJ1bGVzU21hcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIG5vZGVJZCA9ICcnO1xuICBpc0luaGVyaXRhbmNlRW5hYmxlZCA9IHRydWU7XG4gIGlzSW5oZXJpdGFuY2VUb2dnbGVEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIG1haW5SdWxlU2V0JDogT2JzZXJ2YWJsZTxSdWxlU2V0PjtcbiAgaW5oZXJpdGVkUnVsZVNldHMkOiBPYnNlcnZhYmxlPFJ1bGVTZXRbXT47XG4gIHNlbGVjdGVkUnVsZSQ6IE9ic2VydmFibGU8UnVsZT47XG4gIHNlbGVjdGVkUnVsZVNldCQ6IE9ic2VydmFibGU8UnVsZVNldD47XG4gIGhhc01vcmVSdWxlU2V0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHJ1bGVTZXRzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGZvbGRlckluZm8kOiBPYnNlcnZhYmxlPE5vZGVJbmZvPjtcblxuICBhY3Rpb25zTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFjdGlvbkRlZmluaXRpb25zJDogT2JzZXJ2YWJsZTxBY3Rpb25EZWZpbml0aW9uVHJhbnNmb3JtZWRbXT47XG4gIHBhcmFtZXRlckNvbnN0cmFpbnRzJDogT2JzZXJ2YWJsZTxBY3Rpb25QYXJhbWV0ZXJDb25zdHJhaW50W10+O1xuICBjYW5FZGl0TWFpblJ1bGUgPSBmYWxzZTtcbiAgY2FuRWRpdFNlbGVjdGVkUnVsZSA9IGZhbHNlO1xuICBpc01haW5SdWxlU2V0Tm90RW1wdHkgPSBmYWxzZTtcbiAgaXNJbmhlcml0ZWRSdWxlU2V0c05vdEVtcHR5ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfYWN0aW9uRGVmaW5pdGlvbnNTdWI6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIGZvbGRlclJ1bGVzU2VydmljZTogRm9sZGVyUnVsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgbWF0RGlhbG9nU2VydmljZTogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvbnNTZXJ2aWNlOiBBY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGZvbGRlclJ1bGVTZXRzU2VydmljZTogRm9sZGVyUnVsZVNldHNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1haW5SdWxlU2V0JCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLm1haW5SdWxlU2V0JDtcbiAgICB0aGlzLmluaGVyaXRlZFJ1bGVTZXRzJCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmluaGVyaXRlZFJ1bGVTZXRzJDtcbiAgICB0aGlzLnNlbGVjdGVkUnVsZSQgPSB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5zZWxlY3RlZFJ1bGUkO1xuICAgIHRoaXMuc2VsZWN0ZWRSdWxlU2V0JCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLnNlbGVjdGVkUnVsZVNldCQ7XG4gICAgdGhpcy5oYXNNb3JlUnVsZVNldHMkID0gdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UuaGFzTW9yZVJ1bGVTZXRzJDtcbiAgICB0aGlzLnJ1bGVTZXRzTG9hZGluZyQgPSB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5pc0xvYWRpbmckO1xuICAgIHRoaXMuZm9sZGVySW5mbyQgPSB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5mb2xkZXJJbmZvJDtcblxuICAgIHRoaXMuYWN0aW9uc0xvYWRpbmckID0gdGhpcy5hY3Rpb25zU2VydmljZS5sb2FkaW5nJC5waXBlKGRlbGF5KDApKTtcbiAgICB0aGlzLmFjdGlvbkRlZmluaXRpb25zJCA9IHRoaXMuYWN0aW9uc1NlcnZpY2UuYWN0aW9uRGVmaW5pdGlvbnNMaXN0aW5nJDtcbiAgICB0aGlzLnBhcmFtZXRlckNvbnN0cmFpbnRzJCA9IHRoaXMuYWN0aW9uc1NlcnZpY2UucGFyYW1ldGVyQ29uc3RyYWludHMkO1xuXG4gICAgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UuZGVsZXRlZFJ1bGVJZCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChkZWxldGVkUnVsZUlkKSA9PiB0aGlzLm9uUnVsZURlbGV0ZShkZWxldGVkUnVsZUlkKSk7XG5cbiAgICB0aGlzLmFjdGlvbnNTZXJ2aWNlLmxvYWRBY3Rpb25EZWZpbml0aW9ucygpO1xuXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMubm9kZUlkID0gcGFyYW1zLm5vZGVJZDtcbiAgICAgIGlmICh0aGlzLm5vZGVJZCkge1xuICAgICAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5nZXRSdWxlU2V0dGluZ3ModGhpcy5ub2RlSWQpLnRoZW4oKHJ1bGVTZXR0aW5ncykgPT4ge1xuICAgICAgICAgIHRoaXMuaXNJbmhlcml0YW5jZUVuYWJsZWQgPSBydWxlU2V0dGluZ3MudmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmxvYWRSdWxlU2V0cyh0aGlzLm5vZGVJZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9hY3Rpb25EZWZpbml0aW9uc1N1YiA9IHRoaXMuYWN0aW9uRGVmaW5pdGlvbnMkLnN1YnNjcmliZSgoYWN0aW9uRGVmaW5pdGlvbnM6IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZFtdKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zU2VydmljZS5sb2FkQWN0aW9uUGFyYW1ldGVyQ29uc3RyYWludHMoYWN0aW9uRGVmaW5pdGlvbnMpXG4gICAgKTtcblxuICAgIHRoaXMubWFpblJ1bGVTZXQkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgocnVsZVNldCkgPT4ge1xuICAgICAgdGhpcy5jYW5FZGl0TWFpblJ1bGUgPSB0aGlzLmNhbkVkaXRSdWxlKHJ1bGVTZXQpO1xuICAgICAgdGhpcy5pc01haW5SdWxlU2V0Tm90RW1wdHkgPSAhIXJ1bGVTZXQ7XG4gICAgfSk7XG5cbiAgICB0aGlzLmluaGVyaXRlZFJ1bGVTZXRzJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKGluaGVyaXRlZFJ1bGVTZXQpID0+IHtcbiAgICAgIHRoaXMuaXNJbmhlcml0ZWRSdWxlU2V0c05vdEVtcHR5ID0gaW5oZXJpdGVkUnVsZVNldC5zb21lKChydWxlU2V0KSA9PiBydWxlU2V0LnJ1bGVzLnNvbWUoKHJ1bGU6IFJ1bGUpID0+IHJ1bGUuaXNFbmFibGVkKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkUnVsZVNldCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChydWxlU2V0KSA9PiB7XG4gICAgICB0aGlzLmNhbkVkaXRTZWxlY3RlZFJ1bGUgPSB0aGlzLmNhbkVkaXRSdWxlKHJ1bGVTZXQpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9hY3Rpb25EZWZpbml0aW9uc1N1Yi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ29CYWNrKCk6IHZvaWQge1xuICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICB9XG5cbiAgb25TZWxlY3RSdWxlKHJ1bGU6IFJ1bGUpIHtcbiAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5zZWxlY3RSdWxlKHJ1bGUpO1xuICB9XG5cbiAgb3BlbkNyZWF0ZVVwZGF0ZVJ1bGVEaWFsb2cobW9kZWwgPSB7fSkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMubWF0RGlhbG9nU2VydmljZS5vcGVuKEVkaXRSdWxlRGlhbG9nVWlDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgIHBhbmVsQ2xhc3M6ICdhY2EtZWRpdC1ydWxlLWRpYWxvZy1jb250YWluZXInLFxuICAgICAgZGF0YToge1xuICAgICAgICBtb2RlbCxcbiAgICAgICAgbm9kZUlkOiB0aGlzLm5vZGVJZCxcbiAgICAgICAgcGFyYW1ldGVyQ29uc3RyYWludHMkOiB0aGlzLnBhcmFtZXRlckNvbnN0cmFpbnRzJCxcbiAgICAgICAgYWN0aW9uRGVmaW5pdGlvbnMkOiB0aGlzLmFjdGlvbkRlZmluaXRpb25zJFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vblN1Ym1pdFJ1bGVEaWFsb2coZGlhbG9nUmVmKTtcbiAgfVxuXG4gIG9uU3VibWl0UnVsZURpYWxvZyhkaWFsb2dSZWYpIHtcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3VibWl0dGVkLnN1YnNjcmliZShhc3luYyAocnVsZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHJ1bGUuaWQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uUnVsZVVwZGF0ZShydWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uUnVsZUNyZWF0ZShydWxlKTtcbiAgICAgICAgfVxuICAgICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IoZXJyb3IucmVzcG9uc2UuYm9keS5lcnJvci5lcnJvcktleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvblJ1bGVVcGRhdGUocnVsZTogUnVsZSkge1xuICAgIGNvbnN0IG5ld1J1bGUgPSBhd2FpdCB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS51cGRhdGVSdWxlKHRoaXMubm9kZUlkLCBydWxlLmlkLCBydWxlKTtcbiAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5hZGRPclVwZGF0ZVJ1bGVJbk1haW5SdWxlU2V0KG5ld1J1bGUpO1xuICB9XG5cbiAgYXN5bmMgb25SdWxlQ3JlYXRlKHJ1bGVDcmVhdGVQYXJhbXM6IFBhcnRpYWw8UnVsZT4pIHtcbiAgICBjb25zdCBuZXdSdWxlID0gYXdhaXQgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UuY3JlYXRlUnVsZSh0aGlzLm5vZGVJZCwgcnVsZUNyZWF0ZVBhcmFtcyk7XG4gICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UuYWRkT3JVcGRhdGVSdWxlSW5NYWluUnVsZVNldChuZXdSdWxlKTtcbiAgfVxuXG4gIGFzeW5jIG9uUnVsZUVuYWJsZWRUb2dnbGUocnVsZTogUnVsZSwgaXNFbmFibGVkOiBib29sZWFuKSB7XG4gICAgYXdhaXQgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UudXBkYXRlUnVsZSh0aGlzLm5vZGVJZCwgcnVsZS5pZCwgeyAuLi5ydWxlLCBpc0VuYWJsZWQgfSk7XG4gIH1cblxuICBhc3luYyBvbkluaGVyaXRhbmNlVG9nZ2xlQ2hhbmdlKGV2ZW50OiBNYXRTbGlkZVRvZ2dsZUNoYW5nZSkge1xuICAgIHRoaXMuaXNJbmhlcml0YW5jZVRvZ2dsZURpc2FibGVkID0gdHJ1ZTtcbiAgICBjb25zdCBydWxlU2V0dGluZ3MgPSBhd2FpdCB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS51cGRhdGVSdWxlU2V0dGluZ3ModGhpcy5ub2RlSWQsICctaXNJbmhlcml0YW5jZUVuYWJsZWQtJywgeyB2YWx1ZTogZXZlbnQuY2hlY2tlZCB9KTtcbiAgICB0aGlzLmlzSW5oZXJpdGFuY2VFbmFibGVkID0gcnVsZVNldHRpbmdzLnZhbHVlO1xuICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmxvYWRSdWxlU2V0cyh0aGlzLm5vZGVJZCk7XG4gICAgdGhpcy5pc0luaGVyaXRhbmNlVG9nZ2xlRGlzYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIG9uUnVsZURlbGV0ZUJ1dHRvbkNsaWNrZWQocnVsZTogUnVsZSkge1xuICAgIHRoaXMubWF0RGlhbG9nU2VydmljZVxuICAgICAgLm9wZW4oQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdGl0bGU6ICdBQ0FfRk9MREVSX1JVTEVTLkNPTkZJUk1BVElPTl9ESUFMT0cuREVMRVRFX1JVTEUuVElUTEUnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdBQ0FfRk9MREVSX1JVTEVTLkNPTkZJUk1BVElPTl9ESUFMT0cuREVMRVRFX1JVTEUuTUVTU0FHRSdcbiAgICAgICAgfSxcbiAgICAgICAgbWluV2lkdGg6ICczNDZweCdcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5kZWxldGVSdWxlKHRoaXMubm9kZUlkLCBydWxlLmlkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblJ1bGVEZWxldGUoZGVsZXRlZFJ1bGVJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UucmVtb3ZlUnVsZUZyb21NYWluUnVsZVNldChkZWxldGVkUnVsZUlkKTtcbiAgfVxuXG4gIG9uTG9hZE1vcmVSdWxlU2V0cygpIHtcbiAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5sb2FkTW9yZUluaGVyaXRlZFJ1bGVTZXRzKCk7XG4gIH1cblxuICBvbkxvYWRNb3JlUnVsZXMocnVsZVNldDogUnVsZVNldCkge1xuICAgIHRoaXMuZm9sZGVyUnVsZXNTZXJ2aWNlLmxvYWRSdWxlcyhydWxlU2V0KTtcbiAgfVxuXG4gIGNhbkVkaXRSdWxlKHJ1bGVTZXQ6IFJ1bGVTZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXJ1bGVTZXQgfHwgRm9sZGVyUnVsZVNldHNTZXJ2aWNlLmlzT3duZWRSdWxlU2V0KHJ1bGVTZXQsIHRoaXMubm9kZUlkKTtcbiAgfVxuXG4gIG9wZW5MaW5rUnVsZXNEaWFsb2coZXhpc3RpbmdSdWxlU2V0PzogUnVsZVNldCkge1xuICAgIHRoaXMubWF0RGlhbG9nU2VydmljZVxuICAgICAgLm9wZW4oUnVsZVNldFBpY2tlclNtYXJ0Q29tcG9uZW50LCB7XG4gICAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgICAgcGFuZWxDbGFzczogJ2FjYS1ydWxlLXNldC1waWNrZXItY29udGFpbmVyJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG5vZGVJZDogdGhpcy5ub2RlSWQsXG4gICAgICAgICAgZGVmYXVsdE5vZGVJZDogdGhpcy5ub2RlSWQsXG4gICAgICAgICAgZXhpc3RpbmdSdWxlU2V0XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5yZWZyZXNoTWFpblJ1bGVTZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblJ1bGVTZXRVbmxpbmtDbGlja2VkKGxpbmtlZFJ1bGVTZXQ6IFJ1bGVTZXQpIHtcbiAgICB0aGlzLm1hdERpYWxvZ1NlcnZpY2VcbiAgICAgIC5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHRpdGxlOiAnQUNBX0ZPTERFUl9SVUxFUy5DT05GSVJNQVRJT05fRElBTE9HLkRFTEVURV9SVUxFX1NFVF9MSU5LLlRJVExFJyxcbiAgICAgICAgICBtZXNzYWdlOiAnQUNBX0ZPTERFUl9SVUxFUy5DT05GSVJNQVRJT05fRElBTE9HLkRFTEVURV9SVUxFX1NFVF9MSU5LLk1FU1NBR0UnXG4gICAgICAgIH0sXG4gICAgICAgIG1pbldpZHRoOiAnMzQ2cHgnXG4gICAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmRlbGV0ZVJ1bGVTZXRMaW5rKHRoaXMubm9kZUlkLCBsaW5rZWRSdWxlU2V0LmlkKTtcbiAgICAgICAgICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLnJlZnJlc2hNYWluUnVsZVNldCgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0Vycm9yKCdBQ0FfRk9MREVSX1JVTEVTLkVSUk9SUy5ERUxFVEVfUlVMRV9TRVRfTElOS19GQUlMRUQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8YWNhLXBhZ2UtbGF5b3V0PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtaGVhZGVyXCI+XG4gICAgPGFkZi10b29sYmFyIGNsYXNzPVwiYWRmLXRvb2xiYXItLWlubGluZVwiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5hcnJvd19iYWNrPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvYWRmLXRvb2xiYXI+XG4gICAgPGgxIGNsYXNzPVwiYWNhLXBhZ2UtdGl0bGVcIj57eyAnQUNBX0ZPTERFUl9SVUxFUy5BQ1RJT05TLk1BTkFHRV9SVUxFUycgfCB0cmFuc2xhdGUgfX08L2gxPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWNhLXBhZ2UtbGF5b3V0LWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoKHJ1bGVTZXRzTG9hZGluZyQgfCBhc3luYykgJiYgKGluaGVyaXRlZFJ1bGVTZXRzJCB8IGFzeW5jKS5sZW5ndGggPT09IDApIHx8IChhY3Rpb25zTG9hZGluZyQgfCBhc3luYyk7IGVsc2Ugb25Mb2FkZWRcIj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNvbkxvYWRlZD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvbGRlckluZm8kIHwgYXN5bmM7IGVsc2UgZ2VuZXJpY0Vycm9yXCI+XG4gICAgICAgICAgPGFkZi10b29sYmFyIGNsYXNzPVwiYWRmLXRvb2xiYXItLWlubGluZSBhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhclwiPlxuXG4gICAgICAgICAgICA8YWRmLXRvb2xiYXItdGl0bGUgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhcl9fdGl0bGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1hbGlnbmVyXCI+Zm9sZGVyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiYWNhLXBhZ2UtdGl0bGVcIj57eyAoZm9sZGVySW5mbyQgfCBhc3luYykubmFtZSB9fTp7eydBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkJSRUFEQ1JVTUIuUlVMRVMnIHwgdHJhbnNsYXRlfX08L2gyPlxuICAgICAgICAgICAgPC9hZGYtdG9vbGJhci10aXRsZT5cblxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWFuYWdlLXJ1bGVzLWluaGVyaXRhbmNlLXRvZ2dsZS1idXR0b25cIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0luaGVyaXRhbmNlRW5hYmxlZFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Jbmhlcml0YW5jZVRvZ2dsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzSW5oZXJpdGFuY2VUb2dnbGVEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCI+XG4gICAgICAgICAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkFDVElPTlMuSU5IRVJJVF9SVUxFUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyIHZlcnRpY2FsIGNsYXNzPVwidmVydGljYWwtZGl2aWRlclwiPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhcl9fYnV0dG9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhKG1haW5SdWxlU2V0JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWFuYWdlLXJ1bGVzLWxpbmstYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkxpbmtSdWxlc0RpYWxvZygpXCI+XG4gICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5MSU5LX1JVTEVTJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5FZGl0TWFpblJ1bGVcIlxuICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cIm1hbmFnZS1ydWxlcy1jcmVhdGUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNyZWF0ZVVwZGF0ZVJ1bGVEaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkFDVElPTlMuQ1JFQVRFX1JVTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L2FkZi10b29sYmFyPlxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lclwiICpuZ0lmPVwiaXNNYWluUnVsZVNldE5vdEVtcHR5IHx8IGlzSW5oZXJpdGVkUnVsZVNldHNOb3RFbXB0eTsgZWxzZSBlbXB0eUNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxhY2EtcnVsZS1saXN0XG4gICAgICAgICAgICAgIFttYWluUnVsZVNldF09XCJtYWluUnVsZVNldCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtmb2xkZXJJZF09XCJub2RlSWRcIlxuICAgICAgICAgICAgICBbaW5oZXJpdGVkUnVsZVNldHNdPVwiaW5oZXJpdGVkUnVsZVNldHMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbaGFzTW9yZVJ1bGVTZXRzXT1cImhhc01vcmVSdWxlU2V0cyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtydWxlU2V0c0xvYWRpbmddPVwicnVsZVNldHNMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkUnVsZV09XCJzZWxlY3RlZFJ1bGUkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAobG9hZE1vcmVSdWxlU2V0cyk9XCJvbkxvYWRNb3JlUnVsZVNldHMoKVwiXG4gICAgICAgICAgICAgIChsb2FkTW9yZVJ1bGVzKT1cIm9uTG9hZE1vcmVSdWxlcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHNlbGVjdFJ1bGUpPVwib25TZWxlY3RSdWxlKCRldmVudClcIlxuICAgICAgICAgICAgICAocnVsZUVuYWJsZWRDaGFuZ2VkKT1cIm9uUnVsZUVuYWJsZWRUb2dnbGUoJGV2ZW50WzBdLCAkZXZlbnRbMV0pXCJcbiAgICAgICAgICAgICAgKHJ1bGVTZXRFZGl0TGlua0NsaWNrZWQpPVwib3BlbkxpbmtSdWxlc0RpYWxvZygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHJ1bGVTZXRVbmxpbmtDbGlja2VkKT1cIm9uUnVsZVNldFVubGlua0NsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9hY2EtcnVsZS1saXN0PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNcIj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlclwiICpuZ0lmPVwiKHNlbGVjdGVkUnVsZSQgfCBhc3luYykgYXMgc2VsZWN0ZWRSdWxlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX3RpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlcl9fdGl0bGVfX25hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRSdWxlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX3RpdGxlX19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZFJ1bGUuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX2J1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5FZGl0U2VsZWN0ZWRSdWxlOyBlbHNlIGdvVG9Gb2xkZXJCdXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uUnVsZURlbGV0ZUJ1dHRvbkNsaWNrZWQoc2VsZWN0ZWRSdWxlKVwiIGlkPVwiZGVsZXRlLXJ1bGUtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZV9vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJvcGVuQ3JlYXRlVXBkYXRlUnVsZURpYWxvZyhzZWxlY3RlZFJ1bGUpXCIgaWQ9XCJlZGl0LXJ1bGUtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5FRElUX1JVTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ29Ub0ZvbGRlckJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gW3JvdXRlckxpbmtdPVwiWycvbm9kZXMnLCAoc2VsZWN0ZWRSdWxlU2V0JCB8IGFzeW5jKS5vd25pbmdGb2xkZXIuaWQsICdydWxlcyddXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5TRUVfSU5fRk9MREVSJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19jb250YWluZXJfX3J1bGUtZGV0YWlsc19fY29udGVudFwiICpuZ0lmPVwiKHNlbGVjdGVkUnVsZSQgfCBhc3luYykgYXMgc2VsZWN0ZWRSdWxlXCI+XG4gICAgICAgICAgICAgICAgPGFjYS1ydWxlLWRldGFpbHNcbiAgICAgICAgICAgICAgICAgIFthY3Rpb25EZWZpbml0aW9uc109XCJhY3Rpb25EZWZpbml0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbcHJldmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZFJ1bGVcIlxuICAgICAgICAgICAgICAgICAgW25vZGVJZF09XCJub2RlSWRcIj5cbiAgICAgICAgICAgICAgICA8L2FjYS1ydWxlLWRldGFpbHM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5Q29udGVudD5cbiAgICAgICAgICAgIDxhZGYtZW1wdHktY29udGVudFxuICAgICAgICAgICAgICBpY29uPVwibGlicmFyeV9ib29rc1wiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInQUNBX0ZPTERFUl9SVUxFUy5NQU5BR0VfUlVMRVMuRU1QVFlfUlVMRVNfTElTVC5USVRMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLkVNUFRZX1JVTEVTX0xJU1QuU1VCVElUTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvYWRmLWVtcHR5LWNvbnRlbnQ+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNnZW5lcmljRXJyb3I+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1lcnJvclwiPlxuICAgICAgICAgICAgPGFjYS1nZW5lcmljLWVycm9yPjwvYWNhLWdlbmVyaWMtZXJyb3I+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvYWNhLXBhZ2UtbGF5b3V0PlxuIl19
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXJ1bGVzLnNtYXJ0LWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvbWFuYWdlLXJ1bGVzL21hbmFnZS1ydWxlcy5zbWFydC1jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9mb2xkZXItcnVsZXMvc3JjL21hbmFnZS1ydWxlcy9tYW5hZ2UtcnVsZXMuc21hcnQtY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2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b0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixlQUFlO3FCQUNoQixZQUNTLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxPQUFPLFFBQzFDLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb2xkZXJSdWxlc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mb2xkZXItcnVsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJ1bGUgfSBmcm9tICcuLi9tb2RlbC9ydWxlLm1vZGVsJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTm9kZUluZm8gfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBkZWxheSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWRpdFJ1bGVEaWFsb2dVaUNvbXBvbmVudCB9IGZyb20gJy4uL3J1bGUtZGV0YWlscy9lZGl0LXJ1bGUtZGlhbG9nLnVpLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UsIFRlbXBsYXRlTW9kdWxlLCBUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZCB9IGZyb20gJy4uL21vZGVsL3J1bGUtYWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IEFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEZvbGRlclJ1bGVTZXRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZvbGRlci1ydWxlLXNldHMuc2VydmljZSc7XG5pbXBvcnQgeyBSdWxlU2V0IH0gZnJvbSAnLi4vbW9kZWwvcnVsZS1zZXQubW9kZWwnO1xuaW1wb3J0IHsgUnVsZVNldFBpY2tlclNtYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi4vcnVsZS1zZXQtcGlja2VyL3J1bGUtc2V0LXBpY2tlci5zbWFydC1jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVDaGFuZ2UsIE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IEFjdGlvblBhcmFtZXRlckNvbnN0cmFpbnQgfSBmcm9tICcuLi9tb2RlbC9hY3Rpb24tcGFyYW1ldGVyLWNvbnN0cmFpbnQubW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHZW5lcmljRXJyb3JDb21wb25lbnQsIFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgUnVsZUxpc3RVaUNvbXBvbmVudCB9IGZyb20gJy4uL3J1bGUtbGlzdC9ydWxlLWxpc3QvcnVsZS1saXN0LnVpLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBSdWxlRGV0YWlsc1VpQ29tcG9uZW50IH0gZnJvbSAnLi4vcnVsZS1kZXRhaWxzL3J1bGUtZGV0YWlscy51aS1jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgUGFnZUxheW91dENvbXBvbmVudCxcbiAgICBUb29sYmFyTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgUnVsZUxpc3RVaUNvbXBvbmVudCxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgVGVtcGxhdGVNb2R1bGUsXG4gICAgR2VuZXJpY0Vycm9yQ29tcG9uZW50LFxuICAgIFJ1bGVEZXRhaWxzVWlDb21wb25lbnQsXG4gICAgTWF0RGlhbG9nTW9kdWxlXG4gIF0sXG4gIHNlbGVjdG9yOiAnYWNhLW1hbmFnZS1ydWxlcycsXG4gIHRlbXBsYXRlVXJsOiAnbWFuYWdlLXJ1bGVzLnNtYXJ0LWNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ21hbmFnZS1ydWxlcy5zbWFydC1jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhY2EtbWFuYWdlLXJ1bGVzJyB9XG59KVxuZXhwb3J0IGNsYXNzIE1hbmFnZVJ1bGVzU21hcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIG5vZGVJZCA9ICcnO1xuICBpc0luaGVyaXRhbmNlRW5hYmxlZCA9IHRydWU7XG4gIGlzSW5oZXJpdGFuY2VUb2dnbGVEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIG1haW5SdWxlU2V0JDogT2JzZXJ2YWJsZTxSdWxlU2V0PjtcbiAgaW5oZXJpdGVkUnVsZVNldHMkOiBPYnNlcnZhYmxlPFJ1bGVTZXRbXT47XG4gIHNlbGVjdGVkUnVsZSQ6IE9ic2VydmFibGU8UnVsZT47XG4gIHNlbGVjdGVkUnVsZVNldCQ6IE9ic2VydmFibGU8UnVsZVNldD47XG4gIGhhc01vcmVSdWxlU2V0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHJ1bGVTZXRzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGZvbGRlckluZm8kOiBPYnNlcnZhYmxlPE5vZGVJbmZvPjtcblxuICBhY3Rpb25zTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFjdGlvbkRlZmluaXRpb25zJDogT2JzZXJ2YWJsZTxBY3Rpb25EZWZpbml0aW9uVHJhbnNmb3JtZWRbXT47XG4gIHBhcmFtZXRlckNvbnN0cmFpbnRzJDogT2JzZXJ2YWJsZTxBY3Rpb25QYXJhbWV0ZXJDb25zdHJhaW50W10+O1xuICBjYW5FZGl0TWFpblJ1bGUgPSBmYWxzZTtcbiAgY2FuRWRpdFNlbGVjdGVkUnVsZSA9IGZhbHNlO1xuICBpc01haW5SdWxlU2V0Tm90RW1wdHkgPSBmYWxzZTtcbiAgaXNJbmhlcml0ZWRSdWxlU2V0c05vdEVtcHR5ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfYWN0aW9uRGVmaW5pdGlvbnNTdWI6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIGZvbGRlclJ1bGVzU2VydmljZTogRm9sZGVyUnVsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgbWF0RGlhbG9nU2VydmljZTogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvbnNTZXJ2aWNlOiBBY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGZvbGRlclJ1bGVTZXRzU2VydmljZTogRm9sZGVyUnVsZVNldHNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1haW5SdWxlU2V0JCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLm1haW5SdWxlU2V0JDtcbiAgICB0aGlzLmluaGVyaXRlZFJ1bGVTZXRzJCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmluaGVyaXRlZFJ1bGVTZXRzJDtcbiAgICB0aGlzLnNlbGVjdGVkUnVsZSQgPSB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5zZWxlY3RlZFJ1bGUkO1xuICAgIHRoaXMuc2VsZWN0ZWRSdWxlU2V0JCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLnNlbGVjdGVkUnVsZVNldCQ7XG4gICAgdGhpcy5oYXNNb3JlUnVsZVNldHMkID0gdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UuaGFzTW9yZVJ1bGVTZXRzJDtcbiAgICB0aGlzLnJ1bGVTZXRzTG9hZGluZyQgPSB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5pc0xvYWRpbmckO1xuICAgIHRoaXMuZm9sZGVySW5mbyQgPSB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5mb2xkZXJJbmZvJDtcblxuICAgIHRoaXMuYWN0aW9uc0xvYWRpbmckID0gdGhpcy5hY3Rpb25zU2VydmljZS5sb2FkaW5nJC5waXBlKGRlbGF5KDApKTtcbiAgICB0aGlzLmFjdGlvbkRlZmluaXRpb25zJCA9IHRoaXMuYWN0aW9uc1NlcnZpY2UuYWN0aW9uRGVmaW5pdGlvbnNMaXN0aW5nJDtcbiAgICB0aGlzLnBhcmFtZXRlckNvbnN0cmFpbnRzJCA9IHRoaXMuYWN0aW9uc1NlcnZpY2UucGFyYW1ldGVyQ29uc3RyYWludHMkO1xuXG4gICAgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UuZGVsZXRlZFJ1bGVJZCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChkZWxldGVkUnVsZUlkKSA9PiB0aGlzLm9uUnVsZURlbGV0ZShkZWxldGVkUnVsZUlkKSk7XG5cbiAgICB0aGlzLmFjdGlvbnNTZXJ2aWNlLmxvYWRBY3Rpb25EZWZpbml0aW9ucygpO1xuXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMubm9kZUlkID0gcGFyYW1zLm5vZGVJZDtcbiAgICAgIGlmICh0aGlzLm5vZGVJZCkge1xuICAgICAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5nZXRSdWxlU2V0dGluZ3ModGhpcy5ub2RlSWQpLnRoZW4oKHJ1bGVTZXR0aW5ncykgPT4ge1xuICAgICAgICAgIHRoaXMuaXNJbmhlcml0YW5jZUVuYWJsZWQgPSBydWxlU2V0dGluZ3MudmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmxvYWRSdWxlU2V0cyh0aGlzLm5vZGVJZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9hY3Rpb25EZWZpbml0aW9uc1N1YiA9IHRoaXMuYWN0aW9uRGVmaW5pdGlvbnMkLnN1YnNjcmliZSgoYWN0aW9uRGVmaW5pdGlvbnM6IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZFtdKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zU2VydmljZS5sb2FkQWN0aW9uUGFyYW1ldGVyQ29uc3RyYWludHMoYWN0aW9uRGVmaW5pdGlvbnMpXG4gICAgKTtcblxuICAgIHRoaXMubWFpblJ1bGVTZXQkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgocnVsZVNldCkgPT4ge1xuICAgICAgdGhpcy5jYW5FZGl0TWFpblJ1bGUgPSB0aGlzLmNhbkVkaXRSdWxlKHJ1bGVTZXQpO1xuICAgICAgdGhpcy5pc01haW5SdWxlU2V0Tm90RW1wdHkgPSAhIXJ1bGVTZXQ7XG4gICAgfSk7XG5cbiAgICB0aGlzLmluaGVyaXRlZFJ1bGVTZXRzJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKGluaGVyaXRlZFJ1bGVTZXQpID0+IHtcbiAgICAgIHRoaXMuaXNJbmhlcml0ZWRSdWxlU2V0c05vdEVtcHR5ID0gaW5oZXJpdGVkUnVsZVNldC5zb21lKChydWxlU2V0KSA9PiBydWxlU2V0LnJ1bGVzLnNvbWUoKHJ1bGU6IFJ1bGUpID0+IHJ1bGUuaXNFbmFibGVkKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkUnVsZVNldCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChydWxlU2V0KSA9PiB7XG4gICAgICB0aGlzLmNhbkVkaXRTZWxlY3RlZFJ1bGUgPSB0aGlzLmNhbkVkaXRSdWxlKHJ1bGVTZXQpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9hY3Rpb25EZWZpbml0aW9uc1N1Yi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ29CYWNrKCk6IHZvaWQge1xuICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICB9XG5cbiAgb25TZWxlY3RSdWxlKHJ1bGU6IFJ1bGUpIHtcbiAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5zZWxlY3RSdWxlKHJ1bGUpO1xuICB9XG5cbiAgb3BlbkNyZWF0ZVVwZGF0ZVJ1bGVEaWFsb2cobW9kZWwgPSB7fSkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMubWF0RGlhbG9nU2VydmljZS5vcGVuKEVkaXRSdWxlRGlhbG9nVWlDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgIHBhbmVsQ2xhc3M6ICdhY2EtZWRpdC1ydWxlLWRpYWxvZy1jb250YWluZXInLFxuICAgICAgZGF0YToge1xuICAgICAgICBtb2RlbCxcbiAgICAgICAgbm9kZUlkOiB0aGlzLm5vZGVJZCxcbiAgICAgICAgcGFyYW1ldGVyQ29uc3RyYWludHMkOiB0aGlzLnBhcmFtZXRlckNvbnN0cmFpbnRzJCxcbiAgICAgICAgYWN0aW9uRGVmaW5pdGlvbnMkOiB0aGlzLmFjdGlvbkRlZmluaXRpb25zJFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vblN1Ym1pdFJ1bGVEaWFsb2coZGlhbG9nUmVmKTtcbiAgfVxuXG4gIG9uU3VibWl0UnVsZURpYWxvZyhkaWFsb2dSZWYpIHtcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3VibWl0dGVkLnN1YnNjcmliZShhc3luYyAocnVsZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHJ1bGUuaWQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uUnVsZVVwZGF0ZShydWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uUnVsZUNyZWF0ZShydWxlKTtcbiAgICAgICAgfVxuICAgICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IoZXJyb3IucmVzcG9uc2UuYm9keS5lcnJvci5lcnJvcktleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvblJ1bGVVcGRhdGUocnVsZTogUnVsZSkge1xuICAgIGNvbnN0IG5ld1J1bGUgPSBhd2FpdCB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS51cGRhdGVSdWxlKHRoaXMubm9kZUlkLCBydWxlLmlkLCBydWxlKTtcbiAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5hZGRPclVwZGF0ZVJ1bGVJbk1haW5SdWxlU2V0KG5ld1J1bGUpO1xuICB9XG5cbiAgYXN5bmMgb25SdWxlQ3JlYXRlKHJ1bGVDcmVhdGVQYXJhbXM6IFBhcnRpYWw8UnVsZT4pIHtcbiAgICBjb25zdCBuZXdSdWxlID0gYXdhaXQgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UuY3JlYXRlUnVsZSh0aGlzLm5vZGVJZCwgcnVsZUNyZWF0ZVBhcmFtcyk7XG4gICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UuYWRkT3JVcGRhdGVSdWxlSW5NYWluUnVsZVNldChuZXdSdWxlKTtcbiAgfVxuXG4gIGFzeW5jIG9uUnVsZUVuYWJsZWRUb2dnbGUocnVsZTogUnVsZSwgaXNFbmFibGVkOiBib29sZWFuKSB7XG4gICAgYXdhaXQgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UudXBkYXRlUnVsZSh0aGlzLm5vZGVJZCwgcnVsZS5pZCwgeyAuLi5ydWxlLCBpc0VuYWJsZWQgfSk7XG4gIH1cblxuICBhc3luYyBvbkluaGVyaXRhbmNlVG9nZ2xlQ2hhbmdlKGV2ZW50OiBNYXRTbGlkZVRvZ2dsZUNoYW5nZSkge1xuICAgIHRoaXMuaXNJbmhlcml0YW5jZVRvZ2dsZURpc2FibGVkID0gdHJ1ZTtcbiAgICBjb25zdCBydWxlU2V0dGluZ3MgPSBhd2FpdCB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS51cGRhdGVSdWxlU2V0dGluZ3ModGhpcy5ub2RlSWQsICctaXNJbmhlcml0YW5jZUVuYWJsZWQtJywgeyB2YWx1ZTogZXZlbnQuY2hlY2tlZCB9KTtcbiAgICB0aGlzLmlzSW5oZXJpdGFuY2VFbmFibGVkID0gcnVsZVNldHRpbmdzLnZhbHVlO1xuICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmxvYWRSdWxlU2V0cyh0aGlzLm5vZGVJZCk7XG4gICAgdGhpcy5pc0luaGVyaXRhbmNlVG9nZ2xlRGlzYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIG9uUnVsZURlbGV0ZUJ1dHRvbkNsaWNrZWQocnVsZTogUnVsZSkge1xuICAgIHRoaXMubWF0RGlhbG9nU2VydmljZVxuICAgICAgLm9wZW4oQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdGl0bGU6ICdBQ0FfRk9MREVSX1JVTEVTLkNPTkZJUk1BVElPTl9ESUFMT0cuREVMRVRFX1JVTEUuVElUTEUnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdBQ0FfRk9MREVSX1JVTEVTLkNPTkZJUk1BVElPTl9ESUFMT0cuREVMRVRFX1JVTEUuTUVTU0FHRSdcbiAgICAgICAgfSxcbiAgICAgICAgbWluV2lkdGg6ICczNDZweCdcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5kZWxldGVSdWxlKHRoaXMubm9kZUlkLCBydWxlLmlkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblJ1bGVEZWxldGUoZGVsZXRlZFJ1bGVJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UucmVtb3ZlUnVsZUZyb21NYWluUnVsZVNldChkZWxldGVkUnVsZUlkKTtcbiAgfVxuXG4gIG9uTG9hZE1vcmVSdWxlU2V0cygpIHtcbiAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5sb2FkTW9yZUluaGVyaXRlZFJ1bGVTZXRzKCk7XG4gIH1cblxuICBvbkxvYWRNb3JlUnVsZXMocnVsZVNldDogUnVsZVNldCkge1xuICAgIHRoaXMuZm9sZGVyUnVsZXNTZXJ2aWNlLmxvYWRSdWxlcyhydWxlU2V0KTtcbiAgfVxuXG4gIGNhbkVkaXRSdWxlKHJ1bGVTZXQ6IFJ1bGVTZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXJ1bGVTZXQgfHwgRm9sZGVyUnVsZVNldHNTZXJ2aWNlLmlzT3duZWRSdWxlU2V0KHJ1bGVTZXQsIHRoaXMubm9kZUlkKTtcbiAgfVxuXG4gIG9wZW5MaW5rUnVsZXNEaWFsb2coZXhpc3RpbmdSdWxlU2V0PzogUnVsZVNldCkge1xuICAgIHRoaXMubWF0RGlhbG9nU2VydmljZVxuICAgICAgLm9wZW4oUnVsZVNldFBpY2tlclNtYXJ0Q29tcG9uZW50LCB7XG4gICAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgICAgcGFuZWxDbGFzczogJ2FjYS1ydWxlLXNldC1waWNrZXItY29udGFpbmVyJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG5vZGVJZDogdGhpcy5ub2RlSWQsXG4gICAgICAgICAgZGVmYXVsdE5vZGVJZDogdGhpcy5ub2RlSWQsXG4gICAgICAgICAgZXhpc3RpbmdSdWxlU2V0XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5yZWZyZXNoTWFpblJ1bGVTZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblJ1bGVTZXRVbmxpbmtDbGlja2VkKGxpbmtlZFJ1bGVTZXQ6IFJ1bGVTZXQpIHtcbiAgICB0aGlzLm1hdERpYWxvZ1NlcnZpY2VcbiAgICAgIC5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHRpdGxlOiAnQUNBX0ZPTERFUl9SVUxFUy5DT05GSVJNQVRJT05fRElBTE9HLkRFTEVURV9SVUxFX1NFVF9MSU5LLlRJVExFJyxcbiAgICAgICAgICBtZXNzYWdlOiAnQUNBX0ZPTERFUl9SVUxFUy5DT05GSVJNQVRJT05fRElBTE9HLkRFTEVURV9SVUxFX1NFVF9MSU5LLk1FU1NBR0UnXG4gICAgICAgIH0sXG4gICAgICAgIG1pbldpZHRoOiAnMzQ2cHgnXG4gICAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmRlbGV0ZVJ1bGVTZXRMaW5rKHRoaXMubm9kZUlkLCBsaW5rZWRSdWxlU2V0LmlkKTtcbiAgICAgICAgICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLnJlZnJlc2hNYWluUnVsZVNldCgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0Vycm9yKCdBQ0FfRk9MREVSX1JVTEVTLkVSUk9SUy5ERUxFVEVfUlVMRV9TRVRfTElOS19GQUlMRUQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8YWNhLXBhZ2UtbGF5b3V0PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtaGVhZGVyXCI+XG4gICAgPGFkZi10b29sYmFyIGNsYXNzPVwiYWRmLXRvb2xiYXItLWlubGluZVwiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5hcnJvd19iYWNrPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvYWRmLXRvb2xiYXI+XG4gICAgPGgxIGNsYXNzPVwiYWNhLXBhZ2UtdGl0bGVcIj57eyAnQUNBX0ZPTERFUl9SVUxFUy5BQ1RJT05TLk1BTkFHRV9SVUxFUycgfCB0cmFuc2xhdGUgfX08L2gxPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWNhLXBhZ2UtbGF5b3V0LWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoKHJ1bGVTZXRzTG9hZGluZyQgfCBhc3luYykgJiYgKGluaGVyaXRlZFJ1bGVTZXRzJCB8IGFzeW5jKS5sZW5ndGggPT09IDApIHx8IChhY3Rpb25zTG9hZGluZyQgfCBhc3luYyk7IGVsc2Ugb25Mb2FkZWRcIj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNvbkxvYWRlZD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvbGRlckluZm8kIHwgYXN5bmM7IGVsc2UgZ2VuZXJpY0Vycm9yXCI+XG4gICAgICAgICAgPGFkZi10b29sYmFyIGNsYXNzPVwiYWRmLXRvb2xiYXItLWlubGluZSBhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhclwiPlxuXG4gICAgICAgICAgICA8YWRmLXRvb2xiYXItdGl0bGUgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhcl9fdGl0bGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1hbGlnbmVyXCI+Zm9sZGVyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiYWNhLXBhZ2UtdGl0bGVcIj57eyAoZm9sZGVySW5mbyQgfCBhc3luYykubmFtZSB9fTp7eydBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkJSRUFEQ1JVTUIuUlVMRVMnIHwgdHJhbnNsYXRlfX08L2gyPlxuICAgICAgICAgICAgPC9hZGYtdG9vbGJhci10aXRsZT5cblxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWFuYWdlLXJ1bGVzLWluaGVyaXRhbmNlLXRvZ2dsZS1idXR0b25cIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0luaGVyaXRhbmNlRW5hYmxlZFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Jbmhlcml0YW5jZVRvZ2dsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzSW5oZXJpdGFuY2VUb2dnbGVEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCI+XG4gICAgICAgICAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkFDVElPTlMuSU5IRVJJVF9SVUxFUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyIHZlcnRpY2FsIGNsYXNzPVwidmVydGljYWwtZGl2aWRlclwiPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhcl9fYnV0dG9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhKG1haW5SdWxlU2V0JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWFuYWdlLXJ1bGVzLWxpbmstYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkxpbmtSdWxlc0RpYWxvZygpXCI+XG4gICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5MSU5LX1JVTEVTJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5FZGl0TWFpblJ1bGVcIlxuICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cIm1hbmFnZS1ydWxlcy1jcmVhdGUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNyZWF0ZVVwZGF0ZVJ1bGVEaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkFDVElPTlMuQ1JFQVRFX1JVTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L2FkZi10b29sYmFyPlxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lclwiICpuZ0lmPVwiaXNNYWluUnVsZVNldE5vdEVtcHR5IHx8IGlzSW5oZXJpdGVkUnVsZVNldHNOb3RFbXB0eTsgZWxzZSBlbXB0eUNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxhY2EtcnVsZS1saXN0XG4gICAgICAgICAgICAgIFttYWluUnVsZVNldF09XCJtYWluUnVsZVNldCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtmb2xkZXJJZF09XCJub2RlSWRcIlxuICAgICAgICAgICAgICBbaW5oZXJpdGVkUnVsZVNldHNdPVwiaW5oZXJpdGVkUnVsZVNldHMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbaGFzTW9yZVJ1bGVTZXRzXT1cImhhc01vcmVSdWxlU2V0cyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtydWxlU2V0c0xvYWRpbmddPVwicnVsZVNldHNMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkUnVsZV09XCJzZWxlY3RlZFJ1bGUkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAobG9hZE1vcmVSdWxlU2V0cyk9XCJvbkxvYWRNb3JlUnVsZVNldHMoKVwiXG4gICAgICAgICAgICAgIChsb2FkTW9yZVJ1bGVzKT1cIm9uTG9hZE1vcmVSdWxlcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHNlbGVjdFJ1bGUpPVwib25TZWxlY3RSdWxlKCRldmVudClcIlxuICAgICAgICAgICAgICAocnVsZUVuYWJsZWRDaGFuZ2VkKT1cIm9uUnVsZUVuYWJsZWRUb2dnbGUoJGV2ZW50WzBdLCAkZXZlbnRbMV0pXCJcbiAgICAgICAgICAgICAgKHJ1bGVTZXRFZGl0TGlua0NsaWNrZWQpPVwib3BlbkxpbmtSdWxlc0RpYWxvZygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHJ1bGVTZXRVbmxpbmtDbGlja2VkKT1cIm9uUnVsZVNldFVubGlua0NsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9hY2EtcnVsZS1saXN0PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNcIj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlclwiICpuZ0lmPVwiKHNlbGVjdGVkUnVsZSQgfCBhc3luYykgYXMgc2VsZWN0ZWRSdWxlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX3RpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlcl9fdGl0bGVfX25hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRSdWxlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX3RpdGxlX19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZFJ1bGUuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX2J1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5FZGl0U2VsZWN0ZWRSdWxlOyBlbHNlIGdvVG9Gb2xkZXJCdXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uUnVsZURlbGV0ZUJ1dHRvbkNsaWNrZWQoc2VsZWN0ZWRSdWxlKVwiIGlkPVwiZGVsZXRlLXJ1bGUtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZV9vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJvcGVuQ3JlYXRlVXBkYXRlUnVsZURpYWxvZyhzZWxlY3RlZFJ1bGUpXCIgaWQ9XCJlZGl0LXJ1bGUtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5FRElUX1JVTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ29Ub0ZvbGRlckJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gW3JvdXRlckxpbmtdPVwiWycvbm9kZXMnLCAoc2VsZWN0ZWRSdWxlU2V0JCB8IGFzeW5jKS5vd25pbmdGb2xkZXIuaWQsICdydWxlcyddXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5TRUVfSU5fRk9MREVSJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19jb250YWluZXJfX3J1bGUtZGV0YWlsc19fY29udGVudFwiICpuZ0lmPVwiKHNlbGVjdGVkUnVsZSQgfCBhc3luYykgYXMgc2VsZWN0ZWRSdWxlXCI+XG4gICAgICAgICAgICAgICAgPGFjYS1ydWxlLWRldGFpbHNcbiAgICAgICAgICAgICAgICAgIFthY3Rpb25EZWZpbml0aW9uc109XCJhY3Rpb25EZWZpbml0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbcGFyYW1ldGVyQ29uc3RyYWludHNdPVwicGFyYW1ldGVyQ29uc3RyYWludHMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW3ByZXZpZXddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRSdWxlXCJcbiAgICAgICAgICAgICAgICAgIFtub2RlSWRdPVwibm9kZUlkXCI+XG4gICAgICAgICAgICAgICAgPC9hY2EtcnVsZS1kZXRhaWxzPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eUNvbnRlbnQ+XG4gICAgICAgICAgICA8YWRmLWVtcHR5LWNvbnRlbnRcbiAgICAgICAgICAgICAgaWNvbj1cImxpYnJhcnlfYm9va3NcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLkVNUFRZX1JVTEVTX0xJU1QuVElUTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW3N1YnRpdGxlXT1cIidBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5FTVBUWV9SVUxFU19MSVNULlNVQlRJVExFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2FkZi1lbXB0eS1jb250ZW50PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZ2VuZXJpY0Vycm9yPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtZXJyb3JcIj5cbiAgICAgICAgICAgIDxhY2EtZ2VuZXJpYy1lcnJvcj48L2FjYS1nZW5lcmljLWVycm9yPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG48L2FjYS1wYWdlLWxheW91dD5cbiJdfQ==
@@ -45,13 +45,14 @@ export class RuleOptionsUiComponent {
45
45
  errorScript: new FormControl()
46
46
  });
47
47
  this.formSubscription = this.form.valueChanges.subscribe((value) => {
48
+ const formValue = { ...this.form.value, ...value };
48
49
  this.isAsynchronousChecked = value.isAsynchronous;
49
50
  this.isInheritableChecked = value.isInheritable;
50
51
  this.onChange({
51
- isEnabled: !value.isDisabled,
52
- isInheritable: value.isInheritable,
53
- isAsynchronous: value.isAsynchronous,
54
- errorScript: value.errorScript ?? ''
52
+ isEnabled: !formValue.isDisabled,
53
+ isInheritable: formValue.isInheritable,
54
+ isAsynchronous: formValue.isAsynchronous,
55
+ errorScript: formValue.errorScript ?? ''
55
56
  });
56
57
  this.onTouch();
57
58
  });
@@ -64,20 +65,15 @@ export class RuleOptionsUiComponent {
64
65
  this.errorScriptOptions = [];
65
66
  }
66
67
  writeValue(options) {
67
- const isAsynchronousFormControl = this.form.get('isAsynchronous');
68
- const errorScriptFormControl = this.form.get('errorScript');
69
- this.form.get('isDisabled').setValue(!options.isEnabled);
70
- this.form.get('isInheritable').setValue(options.isInheritable);
71
- this.form.get('isAsynchronous').setValue(options.isAsynchronous);
72
- errorScriptFormControl.setValue(options.errorScript ?? '');
73
- if (isAsynchronousFormControl.value) {
74
- this.hideErrorScriptDropdown = false;
75
- errorScriptFormControl.enable();
76
- }
77
- else {
78
- this.hideErrorScriptDropdown = true;
79
- errorScriptFormControl.disable();
80
- }
68
+ this.form.setValue({
69
+ isDisabled: !options.isEnabled,
70
+ isAsynchronous: options.isAsynchronous,
71
+ isInheritable: options.isInheritable,
72
+ errorScript: options.errorScript ?? ''
73
+ }, { emitEvent: false });
74
+ this.isAsynchronousChecked = options.isAsynchronous;
75
+ this.isInheritableChecked = options.isInheritable;
76
+ this.hideErrorScriptDropdown = !this.isAsynchronousChecked;
81
77
  }
82
78
  registerOnChange(fn) {
83
79
  this.onChange = fn;
@@ -95,22 +91,16 @@ export class RuleOptionsUiComponent {
95
91
  this.readOnly = false;
96
92
  }
97
93
  }
98
- ngOnInit() {
99
- this.errorScriptOptions = this.errorScriptConstraint?.constraints ?? [];
94
+ ngOnChanges(changes) {
95
+ if (changes['errorScriptConstraint']) {
96
+ this.errorScriptOptions = this.errorScriptConstraint?.constraints ?? [];
97
+ }
100
98
  }
101
99
  ngOnDestroy() {
102
100
  this.formSubscription.unsubscribe();
103
101
  }
104
102
  toggleErrorScriptDropdown(value) {
105
- const formControl = this.form.get('errorScript');
106
- if (value.checked) {
107
- this.hideErrorScriptDropdown = false;
108
- formControl.enable();
109
- }
110
- else {
111
- this.hideErrorScriptDropdown = true;
112
- formControl.disable();
113
- }
103
+ this.hideErrorScriptDropdown = !value.checked;
114
104
  }
115
105
  }
116
106
  RuleOptionsUiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: RuleOptionsUiComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -120,7 +110,7 @@ RuleOptionsUiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
120
110
  multi: true,
121
111
  useExisting: forwardRef(() => RuleOptionsUiComponent)
122
112
  }
123
- ], ngImport: i0, template: "<ng-container [formGroup]=\"form\">\n <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly || isAsynchronousChecked\">\n <mat-checkbox\n formControlName=\"isAsynchronous\"\n (change)=\"toggleErrorScriptDropdown($event)\"\n data-automation-id=\"rule-option-checkbox-asynchronous\">\n {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.IS_ASYNCHRONOUS' | translate }}\n </mat-checkbox>\n\n <mat-form-field\n data-automation-id=\"rule-option-form-field-errorScript\"\n floatLabel=\"always\"\n [ngClass]=\"{ 'hide-error-script-dropdown': hideErrorScriptDropdown }\">\n\n <mat-select\n formControlName=\"errorScript\"\n placeholder=\"{{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.ERROR_SCRIPT' | translate}}\"\n data-automation-id=\"rule-option-select-errorScript\">\n\n <mat-option value=\"\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.NO_SCRIPT' | translate }}</mat-option>\n <mat-option *ngFor=\"let option of errorScriptOptions\"\n [value]=\"option.value\">\n {{ option.label }}\n </mat-option>\n </mat-select>\n\n </mat-form-field>\n </div>\n\n\n <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly || isInheritableChecked\">\n <mat-checkbox\n formControlName=\"isInheritable\"\n data-automation-id=\"rule-option-checkbox-inheritable\">\n {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.IS_INHERITABLE' | translate }}\n </mat-checkbox>\n </div>\n\n <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly\">\n <mat-checkbox\n formControlName=\"isDisabled\"\n data-automation-id=\"rule-option-checkbox-disabled\">\n {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.DISABLE_RULE' | translate }}\n </mat-checkbox>\n </div>\n</ng-container>\n", styles: [".aca-rule-options{display:flex;flex-direction:row;gap:24px}.aca-rule-options__option{display:flex;flex-direction:column}.aca-rule-options.read-only .mat-checkbox-inner-container{display:none}.aca-rule-options .hide-error-script-dropdown{opacity:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }], encapsulation: i0.ViewEncapsulation.None });
113
+ ], usesOnChanges: true, ngImport: i0, template: "<ng-container [formGroup]=\"form\">\n <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly || isAsynchronousChecked\">\n <mat-checkbox\n formControlName=\"isAsynchronous\"\n (change)=\"toggleErrorScriptDropdown($event)\"\n data-automation-id=\"rule-option-checkbox-asynchronous\">\n {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.IS_ASYNCHRONOUS' | translate }}\n </mat-checkbox>\n\n <mat-form-field\n data-automation-id=\"rule-option-form-field-errorScript\"\n floatLabel=\"always\"\n [ngClass]=\"{ 'hide-error-script-dropdown': hideErrorScriptDropdown }\">\n\n <mat-select\n formControlName=\"errorScript\"\n placeholder=\"{{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.ERROR_SCRIPT' | translate}}\"\n data-automation-id=\"rule-option-select-errorScript\">\n\n <mat-option value=\"\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.NO_SCRIPT' | translate }}</mat-option>\n <mat-option *ngFor=\"let option of errorScriptOptions\"\n [value]=\"option.value\">\n {{ option.label }}\n </mat-option>\n </mat-select>\n\n </mat-form-field>\n </div>\n\n\n <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly || isInheritableChecked\">\n <mat-checkbox\n formControlName=\"isInheritable\"\n data-automation-id=\"rule-option-checkbox-inheritable\">\n {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.IS_INHERITABLE' | translate }}\n </mat-checkbox>\n </div>\n\n <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly\">\n <mat-checkbox\n formControlName=\"isDisabled\"\n data-automation-id=\"rule-option-checkbox-disabled\">\n {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.DISABLE_RULE' | translate }}\n </mat-checkbox>\n </div>\n</ng-container>\n", styles: [".aca-rule-options{display:flex;flex-direction:row;gap:24px}.aca-rule-options__option{display:flex;flex-direction:column}.aca-rule-options.read-only .mat-checkbox-inner-container{display:none}.aca-rule-options .hide-error-script-dropdown{visibility:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }], encapsulation: i0.ViewEncapsulation.None });
124
114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: RuleOptionsUiComponent, decorators: [{
125
115
  type: Component,
126
116
  args: [{ standalone: true, imports: [CommonModule, TranslateModule, ReactiveFormsModule, MatCheckboxModule, MatFormFieldModule, MatSelectModule], selector: 'aca-rule-options', encapsulation: ViewEncapsulation.None, host: { class: 'aca-rule-options' }, providers: [
@@ -129,11 +119,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
129
119
  multi: true,
130
120
  useExisting: forwardRef(() => RuleOptionsUiComponent)
131
121
  }
132
- ], template: "<ng-container [formGroup]=\"form\">\n <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly || isAsynchronousChecked\">\n <mat-checkbox\n formControlName=\"isAsynchronous\"\n (change)=\"toggleErrorScriptDropdown($event)\"\n data-automation-id=\"rule-option-checkbox-asynchronous\">\n {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.IS_ASYNCHRONOUS' | translate }}\n </mat-checkbox>\n\n <mat-form-field\n data-automation-id=\"rule-option-form-field-errorScript\"\n floatLabel=\"always\"\n [ngClass]=\"{ 'hide-error-script-dropdown': hideErrorScriptDropdown }\">\n\n <mat-select\n formControlName=\"errorScript\"\n placeholder=\"{{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.ERROR_SCRIPT' | translate}}\"\n data-automation-id=\"rule-option-select-errorScript\">\n\n <mat-option value=\"\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.NO_SCRIPT' | translate }}</mat-option>\n <mat-option *ngFor=\"let option of errorScriptOptions\"\n [value]=\"option.value\">\n {{ option.label }}\n </mat-option>\n </mat-select>\n\n </mat-form-field>\n </div>\n\n\n <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly || isInheritableChecked\">\n <mat-checkbox\n formControlName=\"isInheritable\"\n data-automation-id=\"rule-option-checkbox-inheritable\">\n {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.IS_INHERITABLE' | translate }}\n </mat-checkbox>\n </div>\n\n <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly\">\n <mat-checkbox\n formControlName=\"isDisabled\"\n data-automation-id=\"rule-option-checkbox-disabled\">\n {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.DISABLE_RULE' | translate }}\n </mat-checkbox>\n </div>\n</ng-container>\n", styles: [".aca-rule-options{display:flex;flex-direction:row;gap:24px}.aca-rule-options__option{display:flex;flex-direction:column}.aca-rule-options.read-only .mat-checkbox-inner-container{display:none}.aca-rule-options .hide-error-script-dropdown{opacity:0}\n"] }]
122
+ ], template: "<ng-container [formGroup]=\"form\">\n <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly || isAsynchronousChecked\">\n <mat-checkbox\n formControlName=\"isAsynchronous\"\n (change)=\"toggleErrorScriptDropdown($event)\"\n data-automation-id=\"rule-option-checkbox-asynchronous\">\n {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.IS_ASYNCHRONOUS' | translate }}\n </mat-checkbox>\n\n <mat-form-field\n data-automation-id=\"rule-option-form-field-errorScript\"\n floatLabel=\"always\"\n [ngClass]=\"{ 'hide-error-script-dropdown': hideErrorScriptDropdown }\">\n\n <mat-select\n formControlName=\"errorScript\"\n placeholder=\"{{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.ERROR_SCRIPT' | translate}}\"\n data-automation-id=\"rule-option-select-errorScript\">\n\n <mat-option value=\"\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.NO_SCRIPT' | translate }}</mat-option>\n <mat-option *ngFor=\"let option of errorScriptOptions\"\n [value]=\"option.value\">\n {{ option.label }}\n </mat-option>\n </mat-select>\n\n </mat-form-field>\n </div>\n\n\n <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly || isInheritableChecked\">\n <mat-checkbox\n formControlName=\"isInheritable\"\n data-automation-id=\"rule-option-checkbox-inheritable\">\n {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.IS_INHERITABLE' | translate }}\n </mat-checkbox>\n </div>\n\n <div class=\"aca-rule-options__option\" *ngIf=\"!readOnly\">\n <mat-checkbox\n formControlName=\"isDisabled\"\n data-automation-id=\"rule-option-checkbox-disabled\">\n {{ 'ACA_FOLDER_RULES.RULE_DETAILS.OPTIONS.DISABLE_RULE' | translate }}\n </mat-checkbox>\n </div>\n</ng-container>\n", styles: [".aca-rule-options{display:flex;flex-direction:row;gap:24px}.aca-rule-options__option{display:flex;flex-direction:column}.aca-rule-options.read-only .mat-checkbox-inner-container{display:none}.aca-rule-options .hide-error-script-dropdown{visibility:hidden}\n"] }]
133
123
  }], propDecorators: { errorScriptConstraint: [{
134
124
  type: Input
135
125
  }], readOnly: [{
136
126
  type: HostBinding,
137
127
  args: ['class.read-only']
138
128
  }] } });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1vcHRpb25zLnVpLWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvcnVsZS1kZXRhaWxzL29wdGlvbnMvcnVsZS1vcHRpb25zLnVpLWNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvcnVsZS1kZXRhaWxzL29wdGlvbnMvcnVsZS1vcHRpb25zLnVpLWNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUF5QyxXQUFXLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkksT0FBTyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7QUFrQjNELE1BQU0sT0FBTyxzQkFBc0I7SUFoQm5DO1FBaUJFLFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUNuQixVQUFVLEVBQUUsSUFBSSxXQUFXLEVBQUU7WUFDN0IsYUFBYSxFQUFFLElBQUksV0FBVyxFQUFFO1lBQ2hDLGNBQWMsRUFBRSxJQUFJLFdBQVcsRUFB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dEQ7cUJBQ0Y7OEJBeUJELHFCQUFxQjtzQkFEcEIsS0FBSztnQkFJTixRQUFRO3NCQURQLFdBQVc7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UsIE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgUnVsZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9tb2RlbC9ydWxlLm1vZGVsJztcbmltcG9ydCB7IEFjdGlvblBhcmFtZXRlckNvbnN0cmFpbnQsIENvbnN0cmFpbnRWYWx1ZSB9IGZyb20gJy4uLy4uL21vZGVsL2FjdGlvbi1wYXJhbWV0ZXItY29uc3RyYWludC5tb2RlbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE1hdENoZWNrYm94TW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdFNlbGVjdE1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnYWNhLXJ1bGUtb3B0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAncnVsZS1vcHRpb25zLnVpLWNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3J1bGUtb3B0aW9ucy51aS1jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnYWNhLXJ1bGUtb3B0aW9ucycgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJ1bGVPcHRpb25zVWlDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJ1bGVPcHRpb25zVWlDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgaXNEaXNhYmxlZDogbmV3IEZvcm1Db250cm9sKCksXG4gICAgaXNJbmhlcml0YWJsZTogbmV3IEZvcm1Db250cm9sKCksXG4gICAgaXNBc3luY2hyb25vdXM6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgIGVycm9yU2NyaXB0OiBuZXcgRm9ybUNvbnRyb2woKVxuICB9KTtcblxuICBmb3JtU3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICB0aGlzLmlzQXN5bmNocm9ub3VzQ2hlY2tlZCA9IHZhbHVlLmlzQXN5bmNocm9ub3VzO1xuICAgIHRoaXMuaXNJbmhlcml0YWJsZUNoZWNrZWQgPSB2YWx1ZS5pc0luaGVyaXRhYmxlO1xuICAgIHRoaXMub25DaGFuZ2Uoe1xuICAgICAgaXNFbmFibGVkOiAhdmFsdWUuaXNEaXNhYmxlZCxcbiAgICAgIGlzSW5oZXJpdGFibGU6IHZhbHVlLmlzSW5oZXJpdGFibGUsXG4gICAgICBpc0FzeW5jaHJvbm91czogdmFsdWUuaXNBc3luY2hyb25vdXMsXG4gICAgICBlcnJvclNjcmlwdDogdmFsdWUuZXJyb3JTY3JpcHQgPz8gJydcbiAgICB9KTtcbiAgICB0aGlzLm9uVG91Y2goKTtcbiAgfSk7XG5cbiAgaGlkZUVycm9yU2NyaXB0RHJvcGRvd24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGVycm9yU2NyaXB0Q29uc3RyYWludDogQWN0aW9uUGFyYW1ldGVyQ29uc3RyYWludDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJlYWQtb25seScpXG4gIHJlYWRPbmx5ID0gZmFsc2U7XG5cbiAgb25DaGFuZ2U6IChvcHRpb25zOiBSdWxlT3B0aW9ucykgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbiAgb25Ub3VjaDogKCkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcblxuICBpc0FzeW5jaHJvbm91c0NoZWNrZWQgPSBmYWxzZTtcbiAgaXNJbmhlcml0YWJsZUNoZWNrZWQgPSBmYWxzZTtcblxuICBlcnJvclNjcmlwdE9wdGlvbnM6IENvbnN0cmFpbnRWYWx1ZVtdID0gW107XG5cbiAgd3JpdGVWYWx1ZShvcHRpb25zOiBSdWxlT3B0aW9ucykge1xuICAgIGNvbnN0IGlzQXN5bmNocm9ub3VzRm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KCdpc0FzeW5jaHJvbm91cycpO1xuICAgIGNvbnN0IGVycm9yU2NyaXB0Rm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KCdlcnJvclNjcmlwdCcpO1xuICAgIHRoaXMuZm9ybS5nZXQoJ2lzRGlzYWJsZWQnKS5zZXRWYWx1ZSghb3B0aW9ucy5pc0VuYWJsZWQpO1xuICAgIHRoaXMuZm9ybS5nZXQoJ2lzSW5oZXJpdGFibGUnKS5zZXRWYWx1ZShvcHRpb25zLmlzSW5oZXJpdGFibGUpO1xuICAgIHRoaXMuZm9ybS5nZXQoJ2lzQXN5bmNocm9ub3VzJykuc2V0VmFsdWUob3B0aW9ucy5pc0FzeW5jaHJvbm91cyk7XG4gICAgZXJyb3JTY3JpcHRGb3JtQ29udHJvbC5zZXRWYWx1ZShvcHRpb25zLmVycm9yU2NyaXB0ID8/ICcnKTtcbiAgICBpZiAoaXNBc3luY2hyb25vdXNGb3JtQ29udHJvbC52YWx1ZSkge1xuICAgICAgdGhpcy5oaWRlRXJyb3JTY3JpcHREcm9wZG93biA9IGZhbHNlO1xuICAgICAgZXJyb3JTY3JpcHRGb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlRXJyb3JTY3JpcHREcm9wZG93biA9IHRydWU7XG4gICAgICBlcnJvclNjcmlwdEZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuICAgICAgdGhpcy5yZWFkT25seSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcbiAgICAgIHRoaXMucmVhZE9ubHkgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yU2NyaXB0T3B0aW9ucyA9IHRoaXMuZXJyb3JTY3JpcHRDb25zdHJhaW50Py5jb25zdHJhaW50cyA/PyBbXTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZm9ybVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgdG9nZ2xlRXJyb3JTY3JpcHREcm9wZG93bih2YWx1ZTogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICBjb25zdCBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldCgnZXJyb3JTY3JpcHQnKTtcbiAgICBpZiAodmFsdWUuY2hlY2tlZCkge1xuICAgICAgdGhpcy5oaWRlRXJyb3JTY3JpcHREcm9wZG93biA9IGZhbHNlO1xuICAgICAgZm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZUVycm9yU2NyaXB0RHJvcGRvd24gPSB0cnVlO1xuICAgICAgZm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgPGRpdiBjbGFzcz1cImFjYS1ydWxlLW9wdGlvbnNfX29wdGlvblwiICpuZ0lmPVwiIXJlYWRPbmx5IHx8IGlzQXN5bmNocm9ub3VzQ2hlY2tlZFwiPlxuICAgIDxtYXQtY2hlY2tib3hcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImlzQXN5bmNocm9ub3VzXCJcbiAgICAgIChjaGFuZ2UpPVwidG9nZ2xlRXJyb3JTY3JpcHREcm9wZG93bigkZXZlbnQpXCJcbiAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInJ1bGUtb3B0aW9uLWNoZWNrYm94LWFzeW5jaHJvbm91c1wiPlxuICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLk9QVElPTlMuSVNfQVNZTkNIUk9OT1VTJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWNoZWNrYm94PlxuXG4gICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJydWxlLW9wdGlvbi1mb3JtLWZpZWxkLWVycm9yU2NyaXB0XCJcbiAgICAgIGZsb2F0TGFiZWw9XCJhbHdheXNcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnaGlkZS1lcnJvci1zY3JpcHQtZHJvcGRvd24nOiBoaWRlRXJyb3JTY3JpcHREcm9wZG93biB9XCI+XG5cbiAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVycm9yU2NyaXB0XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnQUNBX0ZPTERFUl9SVUxFUy5SVUxFX0RFVEFJTFMuT1BUSU9OUy5FUlJPUl9TQ1JJUFQnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJydWxlLW9wdGlvbi1zZWxlY3QtZXJyb3JTY3JpcHRcIj5cblxuICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIlwiPnt7ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5PUFRJT05TLk5PX1NDUklQVCcgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBlcnJvclNjcmlwdE9wdGlvbnNcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPlxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cblxuICA8ZGl2IGNsYXNzPVwiYWNhLXJ1bGUtb3B0aW9uc19fb3B0aW9uXCIgKm5nSWY9XCIhcmVhZE9ubHkgfHwgaXNJbmhlcml0YWJsZUNoZWNrZWRcIj5cbiAgICA8bWF0LWNoZWNrYm94XG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc0luaGVyaXRhYmxlXCJcbiAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInJ1bGUtb3B0aW9uLWNoZWNrYm94LWluaGVyaXRhYmxlXCI+XG4gICAgICB7eyAnQUNBX0ZPTERFUl9SVUxFUy5SVUxFX0RFVEFJTFMuT1BUSU9OUy5JU19JTkhFUklUQUJMRScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1jaGVja2JveD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjYS1ydWxlLW9wdGlvbnNfX29wdGlvblwiICpuZ0lmPVwiIXJlYWRPbmx5XCI+XG4gICAgPG1hdC1jaGVja2JveFxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaXNEaXNhYmxlZFwiXG4gICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJydWxlLW9wdGlvbi1jaGVja2JveC1kaXNhYmxlZFwiPlxuICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLk9QVElPTlMuRElTQUJMRV9SVUxFJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWNoZWNrYm94PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1vcHRpb25zLnVpLWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvcnVsZS1kZXRhaWxzL29wdGlvbnMvcnVsZS1vcHRpb25zLnVpLWNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvcnVsZS1kZXRhaWxzL29wdGlvbnMvcnVsZS1vcHRpb25zLnVpLWNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBdUMsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUF3QixXQUFXLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEgsT0FBTyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7QUFrQjNELE1BQU0sT0FBTyxzQkFBc0I7SUFoQm5DO1FBaUJFLFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUNuQixVQUFVLEVBQUUsSUFBSSxXQUFXLEVBQUU7WUFDN0IsYUFBYSxFQUFFLElBQUksV0FBVyxFQUFFO1lBQ2hDLGNBQWMsRUFBRSxJQUFJLFdBQVcsRUFB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LENBQUMsT0FBTyxDQUFDO0lBQ2hELENBQUM7O21IQWxGVSxzQkFBc0I7dUdBQXRCLHNCQUFzQiw2TkFSdEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDO1NBQ3REO0tBQ0YsK0NDaERILHV3REE4Q0EsMFREVlksWUFBWSw2VkFBRSxlQUFlLDJGQUFFLG1CQUFtQixtbEJBQUUsaUJBQWlCLGdMQUFFLGtCQUFrQixzTkFBRSxlQUFlOzJGQWN6RyxzQkFBc0I7a0JBaEJsQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLFlBQzNHLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLGFBQ3hCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDO3lCQUN0RDtxQkFDRjs4QkEwQkQscUJBQXFCO3NCQURwQixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsV0FBVzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjMgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UsIE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgUnVsZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9tb2RlbC9ydWxlLm1vZGVsJztcbmltcG9ydCB7IEFjdGlvblBhcmFtZXRlckNvbnN0cmFpbnQsIENvbnN0cmFpbnRWYWx1ZSB9IGZyb20gJy4uLy4uL21vZGVsL2FjdGlvbi1wYXJhbWV0ZXItY29uc3RyYWludC5tb2RlbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE1hdENoZWNrYm94TW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdFNlbGVjdE1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnYWNhLXJ1bGUtb3B0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAncnVsZS1vcHRpb25zLnVpLWNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3J1bGUtb3B0aW9ucy51aS1jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnYWNhLXJ1bGUtb3B0aW9ucycgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJ1bGVPcHRpb25zVWlDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJ1bGVPcHRpb25zVWlDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgaXNEaXNhYmxlZDogbmV3IEZvcm1Db250cm9sKCksXG4gICAgaXNJbmhlcml0YWJsZTogbmV3IEZvcm1Db250cm9sKCksXG4gICAgaXNBc3luY2hyb25vdXM6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgIGVycm9yU2NyaXB0OiBuZXcgRm9ybUNvbnRyb2woKVxuICB9KTtcblxuICBmb3JtU3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB7IC4uLnRoaXMuZm9ybS52YWx1ZSwgLi4udmFsdWUgfTtcbiAgICB0aGlzLmlzQXN5bmNocm9ub3VzQ2hlY2tlZCA9IHZhbHVlLmlzQXN5bmNocm9ub3VzO1xuICAgIHRoaXMuaXNJbmhlcml0YWJsZUNoZWNrZWQgPSB2YWx1ZS5pc0luaGVyaXRhYmxlO1xuICAgIHRoaXMub25DaGFuZ2Uoe1xuICAgICAgaXNFbmFibGVkOiAhZm9ybVZhbHVlLmlzRGlzYWJsZWQsXG4gICAgICBpc0luaGVyaXRhYmxlOiBmb3JtVmFsdWUuaXNJbmhlcml0YWJsZSxcbiAgICAgIGlzQXN5bmNocm9ub3VzOiBmb3JtVmFsdWUuaXNBc3luY2hyb25vdXMsXG4gICAgICBlcnJvclNjcmlwdDogZm9ybVZhbHVlLmVycm9yU2NyaXB0ID8/ICcnXG4gICAgfSk7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gIH0pO1xuXG4gIGhpZGVFcnJvclNjcmlwdERyb3Bkb3duID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBlcnJvclNjcmlwdENvbnN0cmFpbnQ6IEFjdGlvblBhcmFtZXRlckNvbnN0cmFpbnQ7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZWFkLW9ubHknKVxuICByZWFkT25seSA9IGZhbHNlO1xuXG4gIG9uQ2hhbmdlOiAob3B0aW9uczogUnVsZU9wdGlvbnMpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIG9uVG91Y2g6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbiAgaXNBc3luY2hyb25vdXNDaGVja2VkID0gZmFsc2U7XG4gIGlzSW5oZXJpdGFibGVDaGVja2VkID0gZmFsc2U7XG5cbiAgZXJyb3JTY3JpcHRPcHRpb25zOiBDb25zdHJhaW50VmFsdWVbXSA9IFtdO1xuXG4gIHdyaXRlVmFsdWUob3B0aW9uczogUnVsZU9wdGlvbnMpIHtcbiAgICB0aGlzLmZvcm0uc2V0VmFsdWUoXG4gICAgICB7XG4gICAgICAgIGlzRGlzYWJsZWQ6ICFvcHRpb25zLmlzRW5hYmxlZCxcbiAgICAgICAgaXNBc3luY2hyb25vdXM6IG9wdGlvbnMuaXNBc3luY2hyb25vdXMsXG4gICAgICAgIGlzSW5oZXJpdGFibGU6IG9wdGlvbnMuaXNJbmhlcml0YWJsZSxcbiAgICAgICAgZXJyb3JTY3JpcHQ6IG9wdGlvbnMuZXJyb3JTY3JpcHQgPz8gJydcbiAgICAgIH0sXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICk7XG4gICAgdGhpcy5pc0FzeW5jaHJvbm91c0NoZWNrZWQgPSBvcHRpb25zLmlzQXN5bmNocm9ub3VzO1xuICAgIHRoaXMuaXNJbmhlcml0YWJsZUNoZWNrZWQgPSBvcHRpb25zLmlzSW5oZXJpdGFibGU7XG4gICAgdGhpcy5oaWRlRXJyb3JTY3JpcHREcm9wZG93biA9ICF0aGlzLmlzQXN5bmNocm9ub3VzQ2hlY2tlZDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG4gICAgICB0aGlzLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtLmVuYWJsZSgpO1xuICAgICAgdGhpcy5yZWFkT25seSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZXJyb3JTY3JpcHRDb25zdHJhaW50J10pIHtcbiAgICAgIHRoaXMuZXJyb3JTY3JpcHRPcHRpb25zID0gdGhpcy5lcnJvclNjcmlwdENvbnN0cmFpbnQ/LmNvbnN0cmFpbnRzID8/IFtdO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZm9ybVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgdG9nZ2xlRXJyb3JTY3JpcHREcm9wZG93bih2YWx1ZTogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICB0aGlzLmhpZGVFcnJvclNjcmlwdERyb3Bkb3duID0gIXZhbHVlLmNoZWNrZWQ7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJhY2EtcnVsZS1vcHRpb25zX19vcHRpb25cIiAqbmdJZj1cIiFyZWFkT25seSB8fCBpc0FzeW5jaHJvbm91c0NoZWNrZWRcIj5cbiAgICA8bWF0LWNoZWNrYm94XG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc0FzeW5jaHJvbm91c1wiXG4gICAgICAoY2hhbmdlKT1cInRvZ2dsZUVycm9yU2NyaXB0RHJvcGRvd24oJGV2ZW50KVwiXG4gICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJydWxlLW9wdGlvbi1jaGVja2JveC1hc3luY2hyb25vdXNcIj5cbiAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5PUFRJT05TLklTX0FTWU5DSFJPTk9VUycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1jaGVja2JveD5cblxuICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwicnVsZS1vcHRpb24tZm9ybS1maWVsZC1lcnJvclNjcmlwdFwiXG4gICAgICBmbG9hdExhYmVsPVwiYWx3YXlzXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2hpZGUtZXJyb3Itc2NyaXB0LWRyb3Bkb3duJzogaGlkZUVycm9yU2NyaXB0RHJvcGRvd24gfVwiPlxuXG4gICAgICA8bWF0LXNlbGVjdFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlcnJvclNjcmlwdFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLk9QVElPTlMuRVJST1JfU0NSSVBUJyB8IHRyYW5zbGF0ZX19XCJcbiAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwicnVsZS1vcHRpb24tc2VsZWN0LWVycm9yU2NyaXB0XCI+XG5cbiAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJcIj57eyAnQUNBX0ZPTERFUl9SVUxFUy5SVUxFX0RFVEFJTFMuT1BUSU9OUy5OT19TQ1JJUFQnIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZXJyb3JTY3JpcHRPcHRpb25zXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cblxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG5cbiAgPGRpdiBjbGFzcz1cImFjYS1ydWxlLW9wdGlvbnNfX29wdGlvblwiICpuZ0lmPVwiIXJlYWRPbmx5IHx8IGlzSW5oZXJpdGFibGVDaGVja2VkXCI+XG4gICAgPG1hdC1jaGVja2JveFxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaXNJbmhlcml0YWJsZVwiXG4gICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJydWxlLW9wdGlvbi1jaGVja2JveC1pbmhlcml0YWJsZVwiPlxuICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLk9QVElPTlMuSVNfSU5IRVJJVEFCTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9tYXQtY2hlY2tib3g+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2EtcnVsZS1vcHRpb25zX19vcHRpb25cIiAqbmdJZj1cIiFyZWFkT25seVwiPlxuICAgIDxtYXQtY2hlY2tib3hcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImlzRGlzYWJsZWRcIlxuICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwicnVsZS1vcHRpb24tY2hlY2tib3gtZGlzYWJsZWRcIj5cbiAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5PUFRJT05TLkRJU0FCTEVfUlVMRScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1jaGVja2JveD5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==