@alfresco/adf-process-services-cloud 8.1.0-15185666273 → 8.1.0-15207451732
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.
- package/esm2022/lib/form/components/form-cloud.component.mjs +3 -3
- package/esm2022/lib/screen/components/screen-cloud/screen-cloud.component.mjs +28 -3
- package/esm2022/lib/screen/models/screen-cloud.model.mjs +1 -1
- package/esm2022/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.mjs +5 -5
- package/fesm2022/adf-process-services-cloud.mjs +33 -8
- package/fesm2022/adf-process-services-cloud.mjs.map +1 -1
- package/lib/form/components/form-cloud.component.scss +1 -0
- package/lib/screen/components/screen-cloud/screen-cloud.component.d.ts +8 -1
- package/lib/screen/models/screen-cloud.model.d.ts +4 -1
- package/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.d.ts +2 -2
- package/package.json +4 -4
|
@@ -351,7 +351,7 @@ export class FormCloudComponent extends FormBaseComponent {
|
|
|
351
351
|
this.nextTaskCheckboxCheckedChanged.emit(event);
|
|
352
352
|
}
|
|
353
353
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormCloudComponent, deps: [{ token: FORM_CLOUD_FIELD_VALIDATORS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
354
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormCloudComponent, isStandalone: true, selector: "adf-cloud-form", inputs: { appName: "appName", appVersion: "appVersion", formId: "formId", processInstanceId: "processInstanceId", taskId: "taskId", data: "data", displayModeConfigurations: "displayModeConfigurations", showNextTaskCheckbox: "showNextTaskCheckbox", isNextTaskCheckboxChecked: "isNextTaskCheckboxChecked", showCompleteButton: "showCompleteButton" }, outputs: { formSaved: "formSaved", formCompleted: "formCompleted", formLoaded: "formLoaded", formDataRefreshed: "formDataRefreshed", formContentClicked: "formContentClicked", displayModeOn: "displayModeOn", displayModeOff: "displayModeOff", nextTaskCheckboxCheckedChanged: "nextTaskCheckboxCheckedChanged" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, providers: [FormCloudSpinnerService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!hasForm()\">\n <ng-content select=\"[empty-form]\" />\n</div>\n\n<div\n *ngIf=\"hasForm()\"\n class=\"adf-cloud-form-container adf-cloud-form-{{ displayConfiguration?.options?.fullscreen ? 'fullscreen' : 'inline' }}-container\"\n [style]=\"formStyle\"\n>\n <div class=\"adf-cloud-form-content\" [cdkTrapFocus]=\"displayConfiguration?.options?.trapFocus\" cdkTrapFocusAutoCapture>\n <adf-toolbar class=\"adf-cloud-form-toolbar\" *ngIf=\"displayConfiguration?.options?.displayToolbar\">\n <div class=\"adf-cloud-form__form-title\">\n <span class=\"adf-cloud-form__display-name\" [title]=\"form.taskName\">\n {{ form.taskName }}\n <ng-container *ngIf=\"!form.taskName\">\n {{ 'FORM.FORM_RENDERER.NAMELESS_TASK' | translate }}\n </ng-container>\n </span>\n </div>\n\n <adf-toolbar-divider *ngIf=\"displayConfiguration?.options?.displayCloseButton\" />\n <button\n *ngIf=\"displayConfiguration?.options?.displayCloseButton\"\n class=\"adf-cloud-form-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n [attr.data-automation-id]=\"'adf-cloud-form-close-button'\"\n [title]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"switchToDisplayMode()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar>\n\n <mat-card\n appearance=\"outlined\"\n class=\"adf-cloud-form-content-card\"\n [class.adf-cloud-form-content-card-fullscreen]=\"displayMode === 'fullScreen'\"\n >\n <div class=\"adf-cloud-form-content-card-container\">\n <mat-card-header *ngIf=\"showTitle || showRefreshButton || showValidationIcon\">\n <mat-card-title>\n <h4>\n <div *ngIf=\"showValidationIcon\" class=\"adf-form-validation-button\">\n <i id=\"adf-valid-form-icon\" class=\"material-icons\" *ngIf=\"form.isValid; else no_valid_form\">check_circle</i>\n <ng-template #no_valid_form>\n <i id=\"adf-invalid-form-icon\" class=\"material-icons adf-invalid-color\">error</i>\n </ng-template>\n </div>\n <div\n *ngIf=\"!displayConfiguration?.options?.fullscreen && findDisplayConfiguration('fullScreen')\"\n class=\"adf-cloud-form-fullscreen-button\"\n >\n <button\n mat-icon-button\n (click)=\"switchToDisplayMode('fullScreen')\"\n [attr.data-automation-id]=\"'adf-cloud-form-fullscreen-button'\"\n >\n <mat-icon>fullscreen</mat-icon>\n </button>\n </div>\n <div *ngIf=\"showRefreshButton\" class=\"adf-cloud-form-reload-button\" [title]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n <button mat-icon-button (click)=\"onRefreshClicked()\" [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n <span *ngIf=\"isTitleEnabled()\" class=\"adf-cloud-form-title\" [title]=\"form.taskName\"\n >{{ form.taskName }}\n <ng-container *ngIf=\"!form.taskName\">\n {{ 'FORM.FORM_RENDERER.NAMELESS_TASK' | translate }}\n </ng-container>\n </span>\n </h4>\n </mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"adf-form-container-card-content\">\n <adf-form-renderer [formDefinition]=\"form\" [readOnly]=\"readOnly\" />\n </mat-card-content>\n <mat-card-actions *ngIf=\"form.hasOutcomes()\" class=\"adf-cloud-form-content-card-actions\" align=\"end\">\n <mat-checkbox\n id=\"adf-form-open-next-task\"\n *ngIf=\"showNextTaskCheckbox && showCompleteButton\"\n [checked]=\"isNextTaskCheckboxChecked\"\n (change)=\"onNextTaskCheckboxCheckedChanged($event)\"\n >{{ 'ADF_CLOUD_TASK_FORM.OPEN_NEXT_TASK.LABEL' | translate }}</mat-checkbox\n >\n <span class=\"adf-card-actions-spacer\"></span>\n <ng-content select=\"adf-cloud-form-custom-outcomes\" />\n <ng-container *ngFor=\"let outcome of form.outcomes\">\n <button\n *ngIf=\"outcome.isVisible\"\n [id]=\"'adf-form-' + outcome.name | formatSpace\"\n [color]=\"getColorForOutcome(outcome.name)\"\n mat-button\n [disabled]=\"!isOutcomeButtonEnabled(outcome)\"\n [class.adf-form-hide-button]=\"!isOutcomeButtonVisible(outcome, form.readOnly)\"\n class=\"adf-cloud-form-custom-outcome-button\"\n (click)=\"onOutcomeClicked(outcome)\"\n >\n {{ outcome.name | translate | uppercase }}\n </button>\n </ng-container>\n </mat-card-actions>\n </div>\n </mat-card>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-cloud-form-inline-container,.adf-cloud-form-container .adf-cloud-form-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-cloud-form-container .adf-cloud-form-content{flex:1;flex-direction:column;display:flex;position:relative}.adf-cloud-form-container .adf-card-actions-spacer{flex:1 1 auto}.adf-cloud-form-fullscreen-container .adf-cloud-form-content{position:fixed;top:0;left:0;z-index:100000}.adf-cloud-form-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-cloud-form-fullscreen-button{position:absolute;right:70px;top:30px}.adf-cloud-form__display-name{font-size:var(--theme-subheading-2-font-size);opacity:.87;line-height:1.5;letter-spacing:-.4px;font-weight:400;font-style:normal;font-stretch:normal;max-width:400px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:middle;color:var(--adf-theme-foreground-text-color)}.adf-cloud-form__form-title{text-align:center;flex:1 1 auto}.adf-cloud-form-content-card{padding-bottom:2em;overflow-y:auto;position:static;height:70%}.adf-cloud-form-content-card-fullscreen{padding:0;height:100%;width:100%}.adf-cloud-form-content-card-fullscreen-container{display:flex;flex-direction:column;height:100%}.adf-cloud-form-content-card-fullscreen-container .mat-mdc-card-content{height:100%;overflow:hidden auto}.adf-cloud-form-sidebars{display:flex;flex:1 1 auto}.adf-cloud-form-sidebars adf-viewer-render{order:1;flex:1 1 auto;display:flex}.adf-cloud-form .adf-label{white-space:normal}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: FormatSpacePipe, name: "formatSpace" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: FormRendererComponent, selector: "adf-form-renderer", inputs: ["formDefinition", "readOnly"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ToolbarDividerComponent, selector: "adf-toolbar-divider" }, { kind: "component", type: ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i6.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] }); }
|
|
354
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormCloudComponent, isStandalone: true, selector: "adf-cloud-form", inputs: { appName: "appName", appVersion: "appVersion", formId: "formId", processInstanceId: "processInstanceId", taskId: "taskId", data: "data", displayModeConfigurations: "displayModeConfigurations", showNextTaskCheckbox: "showNextTaskCheckbox", isNextTaskCheckboxChecked: "isNextTaskCheckboxChecked", showCompleteButton: "showCompleteButton" }, outputs: { formSaved: "formSaved", formCompleted: "formCompleted", formLoaded: "formLoaded", formDataRefreshed: "formDataRefreshed", formContentClicked: "formContentClicked", displayModeOn: "displayModeOn", displayModeOff: "displayModeOff", nextTaskCheckboxCheckedChanged: "nextTaskCheckboxCheckedChanged" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, providers: [FormCloudSpinnerService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!hasForm()\">\n <ng-content select=\"[empty-form]\" />\n</div>\n\n<div\n *ngIf=\"hasForm()\"\n class=\"adf-cloud-form-container adf-cloud-form-{{ displayConfiguration?.options?.fullscreen ? 'fullscreen' : 'inline' }}-container\"\n [style]=\"formStyle\"\n>\n <div class=\"adf-cloud-form-content\" [cdkTrapFocus]=\"displayConfiguration?.options?.trapFocus\" cdkTrapFocusAutoCapture>\n <adf-toolbar class=\"adf-cloud-form-toolbar\" *ngIf=\"displayConfiguration?.options?.displayToolbar\">\n <div class=\"adf-cloud-form__form-title\">\n <span class=\"adf-cloud-form__display-name\" [title]=\"form.taskName\">\n {{ form.taskName }}\n <ng-container *ngIf=\"!form.taskName\">\n {{ 'FORM.FORM_RENDERER.NAMELESS_TASK' | translate }}\n </ng-container>\n </span>\n </div>\n\n <adf-toolbar-divider *ngIf=\"displayConfiguration?.options?.displayCloseButton\" />\n <button\n *ngIf=\"displayConfiguration?.options?.displayCloseButton\"\n class=\"adf-cloud-form-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n [attr.data-automation-id]=\"'adf-cloud-form-close-button'\"\n [title]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"switchToDisplayMode()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar>\n\n <mat-card\n appearance=\"outlined\"\n class=\"adf-cloud-form-content-card\"\n [class.adf-cloud-form-content-card-fullscreen]=\"displayMode === 'fullScreen'\"\n >\n <div class=\"adf-cloud-form-content-card-container\">\n <mat-card-header *ngIf=\"showTitle || showRefreshButton || showValidationIcon\">\n <mat-card-title>\n <h4>\n <div *ngIf=\"showValidationIcon\" class=\"adf-form-validation-button\">\n <i id=\"adf-valid-form-icon\" class=\"material-icons\" *ngIf=\"form.isValid; else no_valid_form\">check_circle</i>\n <ng-template #no_valid_form>\n <i id=\"adf-invalid-form-icon\" class=\"material-icons adf-invalid-color\">error</i>\n </ng-template>\n </div>\n <div\n *ngIf=\"!displayConfiguration?.options?.fullscreen && findDisplayConfiguration('fullScreen')\"\n class=\"adf-cloud-form-fullscreen-button\"\n >\n <button\n mat-icon-button\n (click)=\"switchToDisplayMode('fullScreen')\"\n [attr.data-automation-id]=\"'adf-cloud-form-fullscreen-button'\"\n >\n <mat-icon>fullscreen</mat-icon>\n </button>\n </div>\n <div *ngIf=\"showRefreshButton\" class=\"adf-cloud-form-reload-button\" [title]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n <button mat-icon-button (click)=\"onRefreshClicked()\" [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n <span *ngIf=\"isTitleEnabled()\" class=\"adf-cloud-form-title\" [title]=\"form.taskName\"\n >{{ form.taskName }}\n <ng-container *ngIf=\"!form.taskName\">\n {{ 'FORM.FORM_RENDERER.NAMELESS_TASK' | translate }}\n </ng-container>\n </span>\n </h4>\n </mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"adf-form-container-card-content\">\n <adf-form-renderer [formDefinition]=\"form\" [readOnly]=\"readOnly\" />\n </mat-card-content>\n <mat-card-actions *ngIf=\"form.hasOutcomes()\" class=\"adf-cloud-form-content-card-actions\" align=\"end\">\n <mat-checkbox\n id=\"adf-form-open-next-task\"\n *ngIf=\"showNextTaskCheckbox && showCompleteButton\"\n [checked]=\"isNextTaskCheckboxChecked\"\n (change)=\"onNextTaskCheckboxCheckedChanged($event)\"\n >{{ 'ADF_CLOUD_TASK_FORM.OPEN_NEXT_TASK.LABEL' | translate }}</mat-checkbox\n >\n <span class=\"adf-card-actions-spacer\"></span>\n <ng-content select=\"adf-cloud-form-custom-outcomes\" />\n <ng-container *ngFor=\"let outcome of form.outcomes\">\n <button\n *ngIf=\"outcome.isVisible\"\n [id]=\"'adf-form-' + outcome.name | formatSpace\"\n [color]=\"getColorForOutcome(outcome.name)\"\n mat-button\n [disabled]=\"!isOutcomeButtonEnabled(outcome)\"\n [class.adf-form-hide-button]=\"!isOutcomeButtonVisible(outcome, form.readOnly)\"\n class=\"adf-cloud-form-custom-outcome-button\"\n (click)=\"onOutcomeClicked(outcome)\"\n >\n {{ outcome.name | translate | uppercase }}\n </button>\n </ng-container>\n </mat-card-actions>\n </div>\n </mat-card>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-cloud-form-inline-container,.adf-cloud-form-container .adf-cloud-form-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-cloud-form-container .adf-cloud-form-content{flex:1;flex-direction:column;display:flex;position:relative}.adf-cloud-form-container .adf-card-actions-spacer{flex:1 1 auto}.adf-cloud-form-fullscreen-container .adf-cloud-form-content{position:fixed;top:0;left:0;z-index:100000}.adf-cloud-form-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-cloud-form-fullscreen-button{position:absolute;right:70px;top:30px}.adf-cloud-form__display-name{font-size:var(--theme-subheading-2-font-size);opacity:.87;line-height:1.5;letter-spacing:-.4px;font-weight:400;font-style:normal;font-stretch:normal;max-width:400px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:middle;color:var(--adf-theme-foreground-text-color)}.adf-cloud-form__form-title{text-align:center;flex:1 1 auto}.adf-cloud-form-content-card{padding-bottom:2em;overflow-y:auto;position:static;height:70%}.adf-cloud-form-content-card-fullscreen{padding:0;height:100%;width:100%;position:relative}.adf-cloud-form-content-card-fullscreen-container{display:flex;flex-direction:column;height:100%}.adf-cloud-form-content-card-fullscreen-container .mat-mdc-card-content{height:100%;overflow:hidden auto}.adf-cloud-form-sidebars{display:flex;flex:1 1 auto}.adf-cloud-form-sidebars adf-viewer-render{order:1;flex:1 1 auto;display:flex}.adf-cloud-form .adf-label{white-space:normal}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: FormatSpacePipe, name: "formatSpace" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: FormRendererComponent, selector: "adf-form-renderer", inputs: ["formDefinition", "readOnly"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ToolbarDividerComponent, selector: "adf-toolbar-divider" }, { kind: "component", type: ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i6.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] }); }
|
|
355
355
|
}
|
|
356
356
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormCloudComponent, decorators: [{
|
|
357
357
|
type: Component,
|
|
@@ -367,7 +367,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
367
367
|
ToolbarComponent,
|
|
368
368
|
A11yModule,
|
|
369
369
|
MatCheckboxModule
|
|
370
|
-
], providers: [FormCloudSpinnerService], template: "<div *ngIf=\"!hasForm()\">\n <ng-content select=\"[empty-form]\" />\n</div>\n\n<div\n *ngIf=\"hasForm()\"\n class=\"adf-cloud-form-container adf-cloud-form-{{ displayConfiguration?.options?.fullscreen ? 'fullscreen' : 'inline' }}-container\"\n [style]=\"formStyle\"\n>\n <div class=\"adf-cloud-form-content\" [cdkTrapFocus]=\"displayConfiguration?.options?.trapFocus\" cdkTrapFocusAutoCapture>\n <adf-toolbar class=\"adf-cloud-form-toolbar\" *ngIf=\"displayConfiguration?.options?.displayToolbar\">\n <div class=\"adf-cloud-form__form-title\">\n <span class=\"adf-cloud-form__display-name\" [title]=\"form.taskName\">\n {{ form.taskName }}\n <ng-container *ngIf=\"!form.taskName\">\n {{ 'FORM.FORM_RENDERER.NAMELESS_TASK' | translate }}\n </ng-container>\n </span>\n </div>\n\n <adf-toolbar-divider *ngIf=\"displayConfiguration?.options?.displayCloseButton\" />\n <button\n *ngIf=\"displayConfiguration?.options?.displayCloseButton\"\n class=\"adf-cloud-form-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n [attr.data-automation-id]=\"'adf-cloud-form-close-button'\"\n [title]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"switchToDisplayMode()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar>\n\n <mat-card\n appearance=\"outlined\"\n class=\"adf-cloud-form-content-card\"\n [class.adf-cloud-form-content-card-fullscreen]=\"displayMode === 'fullScreen'\"\n >\n <div class=\"adf-cloud-form-content-card-container\">\n <mat-card-header *ngIf=\"showTitle || showRefreshButton || showValidationIcon\">\n <mat-card-title>\n <h4>\n <div *ngIf=\"showValidationIcon\" class=\"adf-form-validation-button\">\n <i id=\"adf-valid-form-icon\" class=\"material-icons\" *ngIf=\"form.isValid; else no_valid_form\">check_circle</i>\n <ng-template #no_valid_form>\n <i id=\"adf-invalid-form-icon\" class=\"material-icons adf-invalid-color\">error</i>\n </ng-template>\n </div>\n <div\n *ngIf=\"!displayConfiguration?.options?.fullscreen && findDisplayConfiguration('fullScreen')\"\n class=\"adf-cloud-form-fullscreen-button\"\n >\n <button\n mat-icon-button\n (click)=\"switchToDisplayMode('fullScreen')\"\n [attr.data-automation-id]=\"'adf-cloud-form-fullscreen-button'\"\n >\n <mat-icon>fullscreen</mat-icon>\n </button>\n </div>\n <div *ngIf=\"showRefreshButton\" class=\"adf-cloud-form-reload-button\" [title]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n <button mat-icon-button (click)=\"onRefreshClicked()\" [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n <span *ngIf=\"isTitleEnabled()\" class=\"adf-cloud-form-title\" [title]=\"form.taskName\"\n >{{ form.taskName }}\n <ng-container *ngIf=\"!form.taskName\">\n {{ 'FORM.FORM_RENDERER.NAMELESS_TASK' | translate }}\n </ng-container>\n </span>\n </h4>\n </mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"adf-form-container-card-content\">\n <adf-form-renderer [formDefinition]=\"form\" [readOnly]=\"readOnly\" />\n </mat-card-content>\n <mat-card-actions *ngIf=\"form.hasOutcomes()\" class=\"adf-cloud-form-content-card-actions\" align=\"end\">\n <mat-checkbox\n id=\"adf-form-open-next-task\"\n *ngIf=\"showNextTaskCheckbox && showCompleteButton\"\n [checked]=\"isNextTaskCheckboxChecked\"\n (change)=\"onNextTaskCheckboxCheckedChanged($event)\"\n >{{ 'ADF_CLOUD_TASK_FORM.OPEN_NEXT_TASK.LABEL' | translate }}</mat-checkbox\n >\n <span class=\"adf-card-actions-spacer\"></span>\n <ng-content select=\"adf-cloud-form-custom-outcomes\" />\n <ng-container *ngFor=\"let outcome of form.outcomes\">\n <button\n *ngIf=\"outcome.isVisible\"\n [id]=\"'adf-form-' + outcome.name | formatSpace\"\n [color]=\"getColorForOutcome(outcome.name)\"\n mat-button\n [disabled]=\"!isOutcomeButtonEnabled(outcome)\"\n [class.adf-form-hide-button]=\"!isOutcomeButtonVisible(outcome, form.readOnly)\"\n class=\"adf-cloud-form-custom-outcome-button\"\n (click)=\"onOutcomeClicked(outcome)\"\n >\n {{ outcome.name | translate | uppercase }}\n </button>\n </ng-container>\n </mat-card-actions>\n </div>\n </mat-card>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-cloud-form-inline-container,.adf-cloud-form-container .adf-cloud-form-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-cloud-form-container .adf-cloud-form-content{flex:1;flex-direction:column;display:flex;position:relative}.adf-cloud-form-container .adf-card-actions-spacer{flex:1 1 auto}.adf-cloud-form-fullscreen-container .adf-cloud-form-content{position:fixed;top:0;left:0;z-index:100000}.adf-cloud-form-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-cloud-form-fullscreen-button{position:absolute;right:70px;top:30px}.adf-cloud-form__display-name{font-size:var(--theme-subheading-2-font-size);opacity:.87;line-height:1.5;letter-spacing:-.4px;font-weight:400;font-style:normal;font-stretch:normal;max-width:400px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:middle;color:var(--adf-theme-foreground-text-color)}.adf-cloud-form__form-title{text-align:center;flex:1 1 auto}.adf-cloud-form-content-card{padding-bottom:2em;overflow-y:auto;position:static;height:70%}.adf-cloud-form-content-card-fullscreen{padding:0;height:100%;width:100
|
|
370
|
+
], providers: [FormCloudSpinnerService], template: "<div *ngIf=\"!hasForm()\">\n <ng-content select=\"[empty-form]\" />\n</div>\n\n<div\n *ngIf=\"hasForm()\"\n class=\"adf-cloud-form-container adf-cloud-form-{{ displayConfiguration?.options?.fullscreen ? 'fullscreen' : 'inline' }}-container\"\n [style]=\"formStyle\"\n>\n <div class=\"adf-cloud-form-content\" [cdkTrapFocus]=\"displayConfiguration?.options?.trapFocus\" cdkTrapFocusAutoCapture>\n <adf-toolbar class=\"adf-cloud-form-toolbar\" *ngIf=\"displayConfiguration?.options?.displayToolbar\">\n <div class=\"adf-cloud-form__form-title\">\n <span class=\"adf-cloud-form__display-name\" [title]=\"form.taskName\">\n {{ form.taskName }}\n <ng-container *ngIf=\"!form.taskName\">\n {{ 'FORM.FORM_RENDERER.NAMELESS_TASK' | translate }}\n </ng-container>\n </span>\n </div>\n\n <adf-toolbar-divider *ngIf=\"displayConfiguration?.options?.displayCloseButton\" />\n <button\n *ngIf=\"displayConfiguration?.options?.displayCloseButton\"\n class=\"adf-cloud-form-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n [attr.data-automation-id]=\"'adf-cloud-form-close-button'\"\n [title]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"switchToDisplayMode()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar>\n\n <mat-card\n appearance=\"outlined\"\n class=\"adf-cloud-form-content-card\"\n [class.adf-cloud-form-content-card-fullscreen]=\"displayMode === 'fullScreen'\"\n >\n <div class=\"adf-cloud-form-content-card-container\">\n <mat-card-header *ngIf=\"showTitle || showRefreshButton || showValidationIcon\">\n <mat-card-title>\n <h4>\n <div *ngIf=\"showValidationIcon\" class=\"adf-form-validation-button\">\n <i id=\"adf-valid-form-icon\" class=\"material-icons\" *ngIf=\"form.isValid; else no_valid_form\">check_circle</i>\n <ng-template #no_valid_form>\n <i id=\"adf-invalid-form-icon\" class=\"material-icons adf-invalid-color\">error</i>\n </ng-template>\n </div>\n <div\n *ngIf=\"!displayConfiguration?.options?.fullscreen && findDisplayConfiguration('fullScreen')\"\n class=\"adf-cloud-form-fullscreen-button\"\n >\n <button\n mat-icon-button\n (click)=\"switchToDisplayMode('fullScreen')\"\n [attr.data-automation-id]=\"'adf-cloud-form-fullscreen-button'\"\n >\n <mat-icon>fullscreen</mat-icon>\n </button>\n </div>\n <div *ngIf=\"showRefreshButton\" class=\"adf-cloud-form-reload-button\" [title]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n <button mat-icon-button (click)=\"onRefreshClicked()\" [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n <span *ngIf=\"isTitleEnabled()\" class=\"adf-cloud-form-title\" [title]=\"form.taskName\"\n >{{ form.taskName }}\n <ng-container *ngIf=\"!form.taskName\">\n {{ 'FORM.FORM_RENDERER.NAMELESS_TASK' | translate }}\n </ng-container>\n </span>\n </h4>\n </mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"adf-form-container-card-content\">\n <adf-form-renderer [formDefinition]=\"form\" [readOnly]=\"readOnly\" />\n </mat-card-content>\n <mat-card-actions *ngIf=\"form.hasOutcomes()\" class=\"adf-cloud-form-content-card-actions\" align=\"end\">\n <mat-checkbox\n id=\"adf-form-open-next-task\"\n *ngIf=\"showNextTaskCheckbox && showCompleteButton\"\n [checked]=\"isNextTaskCheckboxChecked\"\n (change)=\"onNextTaskCheckboxCheckedChanged($event)\"\n >{{ 'ADF_CLOUD_TASK_FORM.OPEN_NEXT_TASK.LABEL' | translate }}</mat-checkbox\n >\n <span class=\"adf-card-actions-spacer\"></span>\n <ng-content select=\"adf-cloud-form-custom-outcomes\" />\n <ng-container *ngFor=\"let outcome of form.outcomes\">\n <button\n *ngIf=\"outcome.isVisible\"\n [id]=\"'adf-form-' + outcome.name | formatSpace\"\n [color]=\"getColorForOutcome(outcome.name)\"\n mat-button\n [disabled]=\"!isOutcomeButtonEnabled(outcome)\"\n [class.adf-form-hide-button]=\"!isOutcomeButtonVisible(outcome, form.readOnly)\"\n class=\"adf-cloud-form-custom-outcome-button\"\n (click)=\"onOutcomeClicked(outcome)\"\n >\n {{ outcome.name | translate | uppercase }}\n </button>\n </ng-container>\n </mat-card-actions>\n </div>\n </mat-card>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-cloud-form-inline-container,.adf-cloud-form-container .adf-cloud-form-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-cloud-form-container .adf-cloud-form-content{flex:1;flex-direction:column;display:flex;position:relative}.adf-cloud-form-container .adf-card-actions-spacer{flex:1 1 auto}.adf-cloud-form-fullscreen-container .adf-cloud-form-content{position:fixed;top:0;left:0;z-index:100000}.adf-cloud-form-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-cloud-form-fullscreen-button{position:absolute;right:70px;top:30px}.adf-cloud-form__display-name{font-size:var(--theme-subheading-2-font-size);opacity:.87;line-height:1.5;letter-spacing:-.4px;font-weight:400;font-style:normal;font-stretch:normal;max-width:400px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:middle;color:var(--adf-theme-foreground-text-color)}.adf-cloud-form__form-title{text-align:center;flex:1 1 auto}.adf-cloud-form-content-card{padding-bottom:2em;overflow-y:auto;position:static;height:70%}.adf-cloud-form-content-card-fullscreen{padding:0;height:100%;width:100%;position:relative}.adf-cloud-form-content-card-fullscreen-container{display:flex;flex-direction:column;height:100%}.adf-cloud-form-content-card-fullscreen-container .mat-mdc-card-content{height:100%;overflow:hidden auto}.adf-cloud-form-sidebars{display:flex;flex:1 1 auto}.adf-cloud-form-sidebars adf-viewer-render{order:1;flex:1 1 auto;display:flex}.adf-cloud-form .adf-label{white-space:normal}\n"] }]
|
|
371
371
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
372
372
|
type: Optional
|
|
373
373
|
}, {
|
|
@@ -413,4 +413,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
413
413
|
type: HostListener,
|
|
414
414
|
args: ['keydown', ['$event']]
|
|
415
415
|
}] } });
|
|
416
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jbG91ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy9mb3JtLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL2Zvcm0tY2xvdWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFDSCxzQkFBc0IsRUFFdEIsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixTQUFTLEVBR1QsU0FBUyxFQUNULGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFFWCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDMUIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLEVBQUUsSUFBSSxjQUFjLEVBQUUsTUFBTSxNQUFN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QUNiLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQixVQUFVO3dCQUNWLGlCQUFpQjtxQkFDcEIsYUFDVSxDQUFDLHVCQUF1QixDQUFDOzswQkFpR3ZCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUNBQWlDO3lDQTFGakUsT0FBTztzQkFETixLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixJQUFJO3NCQURILEtBQUs7Z0JBS04seUJBQXlCO3NCQUR4QixLQUFLO2dCQUtOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFLTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBS1AsVUFBVTtzQkFEVCxNQUFNO2dCQUtQLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFLUCxrQkFBa0I7c0JBRGpCLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixNQUFNO2dCQUtQLGNBQWM7c0JBRGIsTUFBTTtnQkFLUCw4QkFBOEI7c0JBRDdCLE1BQU07Z0JBcURQLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQ29uZmlybURpYWxvZ0NvbXBvbmVudCxcbiAgICBDb250ZW50TGlua01vZGVsLFxuICAgIEZvcm1hdFNwYWNlUGlwZSxcbiAgICBGb3JtQmFzZUNvbXBvbmVudCxcbiAgICBGb3JtRXZlbnQsXG4gICAgRm9ybUZpZWxkTW9kZWwsXG4gICAgRm9ybUZpZWxkVmFsaWRhdG9yLFxuICAgIEZvcm1Nb2RlbCxcbiAgICBGb3JtT3V0Y29tZUV2ZW50LFxuICAgIEZvcm1PdXRjb21lTW9kZWwsXG4gICAgRm9ybVJlbmRlcmVyQ29tcG9uZW50LFxuICAgIEZvcm1TZXJ2aWNlLFxuICAgIEZvcm1WYWx1ZXMsXG4gICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICBUb29sYmFyRGl2aWRlckNvbXBvbmVudCxcbiAgICBVcGxvYWRXaWRnZXRDb250ZW50TGlua01vZGVsLFxuICAgIFdpZGdldFZpc2liaWxpdHlTZXJ2aWNlXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBGb3JtQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZm9ybS1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFRhc2tWYXJpYWJsZUNsb3VkIH0gZnJvbSAnLi4vbW9kZWxzL3Rhc2stdmFyaWFibGUtY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgVGFza0RldGFpbHNDbG91ZE1vZGVsIH0gZnJvbSAnLi4vLi4vdGFzay9tb2RlbHMvdGFzay1kZXRhaWxzLWNsb3VkLm1vZGVsJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkR2VuZXJhdGlvbiB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgRm9ybUNsb3VkRGlzcGxheU1vZGUsIEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tZmllbGRzLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRm9ybUNsb3VkU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zcGlubmVyL2Zvcm0tY2xvdWQtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IERpc3BsYXlNb2RlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Rpc3BsYXktbW9kZS5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UsIE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuXG5leHBvcnQgY29uc3QgRk9STV9DTE9VRF9GSUVMRF9WQUxJREFUT1JTX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEZvcm1GaWVsZFZhbGlkYXRvcltdPignRk9STV9DTE9VRF9GSUVMRF9WQUxJREFUT1JTX1RPS0VOJyk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLWZvcm0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgRm9ybWF0U3BhY2VQaXBlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdENhcmRNb2R1bGUsXG4gICAgICAgIEZvcm1SZW5kZXJlckNvbXBvbmVudCxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgVG9vbGJhckRpdmlkZXJDb21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgICAgIEExMXlNb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtGb3JtQ2xvdWRTcGlubmVyU2VydmljZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tY2xvdWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Zvcm0tY2xvdWQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtQ2xvdWRDb21wb25lbnQgZXh0ZW5kcyBGb3JtQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcbiAgICAvKiogQXBwIG5hbWUgdG8gZmV0Y2ggY29ycmVzcG9uZGluZyBmb3JtIGFuZCB2YWx1ZXMuICovXG4gICAgQElucHV0KClcbiAgICBhcHBOYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBUaGUgYXBwbGljYXRpb24gdmVyc2lvbiB0byB1c2Ugd2hlbiBmZXRjaGluZyBkYXRhICovXG4gICAgQElucHV0KClcbiAgICBhcHBWZXJzaW9uPzogbnVtYmVyO1xuXG4gICAgLyoqIFRhc2sgaWQgdG8gZmV0Y2ggY29ycmVzcG9uZGluZyBmb3JtIGFuZCB2YWx1ZXMuICovXG4gICAgQElucHV0KClcbiAgICBmb3JtSWQ6IHN0cmluZztcblxuICAgIC8qKiBQcm9jZXNzSW5zdGFuY2VJZCBpZCB0byBmZXRjaCBjb3JyZXNwb25kaW5nIGZvcm0gYW5kIHZhbHVlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHByb2Nlc3NJbnN0YW5jZUlkOiBzdHJpbmc7XG5cbiAgICAvKiogVGFzayBpZCB0byBmZXRjaCBjb3JyZXNwb25kaW5nIGZvcm0gYW5kIHZhbHVlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRhc2tJZDogc3RyaW5nO1xuXG4gICAgLyoqIEN1c3RvbSBmb3JtIHZhbHVlcyBtYXAgdG8gYmUgdXNlZCB3aXRoIHRoZSByZW5kZXJlZCBmb3JtLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGF0YTogVGFza1ZhcmlhYmxlQ2xvdWRbXTtcblxuICAgIC8qKiBUaGUgYXZhaWxhYmxlIGRpc3BsYXkgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBmb3JtICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zOiBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25bXTtcblxuICAgIC8qKiBUb2dnbGUgcmVuZGVyaW5nIG9mIHRoZSBgT3BlbiBuZXh0IHRhc2tgIGNoZWNrYm94LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd05leHRUYXNrQ2hlY2tib3ggPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBgT3BlbiBuZXh0IHRhc2tgIGNoZWNrYm94IGlzIGNoZWNrZWQgYnkgZGVmYXVsdCBvciBub3QuICovXG4gICAgQElucHV0KClcbiAgICBpc05leHRUYXNrQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlIHJlbmRlcmluZyBvZiB0aGUgYENvbXBsZXRlYCBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICBzaG93Q29tcGxldGVCdXR0b24gPSBmYWxzZTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkIHdpdGggdGhlIGBTYXZlYCBvciBjdXN0b20gb3V0Y29tZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybVNhdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCB3aXRoIHRoZSBgQ29tcGxldGVgIG91dGNvbWUuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybUNvbXBsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybU1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBpcyBsb2FkZWQgb3IgcmVsb2FkZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybU1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBmb3JtIHZhbHVlcyBhcmUgcmVmcmVzaGVkIGR1ZSB0byBhIGRhdGEgcHJvcGVydHkgY2hhbmdlLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvcm1EYXRhUmVmcmVzaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGZvcm0gY29udGVudCBpcyBjbGlja2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvcm1Db250ZW50Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29udGVudExpbmtNb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBkaXNwbGF5IG1vZGUgY29uZmlndXJhdGlvbiBpcyB0dXJuZWQgb24uICovXG4gICAgQE91dHB1dCgpXG4gICAgZGlzcGxheU1vZGVPbiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybUNsb3VkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIGRpc3BsYXkgbW9kZSBjb25maWd1cmF0aW9uIGlzIHR1cm5lZCBvZmYuICovXG4gICAgQE91dHB1dCgpXG4gICAgZGlzcGxheU1vZGVPZmYgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbj4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGBPcGVuIG5leHQgdGFza2AgY2hlY2tib3ggd2FzIHRvZ2dsZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgbmV4dFRhc2tDaGVja2JveENoZWNrZWRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxNYXRDaGVja2JveENoYW5nZT4oKTtcblxuICAgIHByb3RlY3RlZCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICAgIG5vZGVJZDogc3RyaW5nO1xuICAgIGZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTjogYW55O1xuICAgIGZpZWxkVmFsaWRhdG9yczogRm9ybUZpZWxkVmFsaWRhdG9yW10gPSBbXTtcblxuICAgIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gICAgZGlzcGxheU1vZGU6IHN0cmluZztcbiAgICBkaXNwbGF5Q29uZmlndXJhdGlvbjogRm9ybUNsb3VkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uID0gRGlzcGxheU1vZGVTZXJ2aWNlLkRFRkFVTFRfRElTUExBWV9NT0RFX0NPTkZJR1VSQVRJT05TWzBdO1xuICAgIHN0eWxlOiBzdHJpbmcgPSAnJztcblxuICAgIHByb3RlY3RlZCBmb3JtQ2xvdWRTZXJ2aWNlID0gaW5qZWN0KEZvcm1DbG91ZFNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBmb3JtU2VydmljZSA9IGluamVjdChGb3JtU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIHZpc2liaWxpdHlTZXJ2aWNlID0gaW5qZWN0KFdpZGdldFZpc2liaWxpdHlTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gICAgcHJvdGVjdGVkIHNwaW5uZXJTZXJ2aWNlID0gaW5qZWN0KEZvcm1DbG91ZFNwaW5uZXJTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgZGlzcGxheU1vZGVTZXJ2aWNlID0gaW5qZWN0KERpc3BsYXlNb2RlU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoRk9STV9DTE9VRF9GSUVMRF9WQUxJREFUT1JTX1RPS0VOKSBpbmplY3RlZEZpZWxkVmFsaWRhdG9ycz86IEZvcm1GaWVsZFZhbGlkYXRvcltdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubG9hZEluamVjdGVkRmllbGRWYWxpZGF0b3JzKGluamVjdGVkRmllbGRWYWxpZGF0b3JzKTtcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5pbml0U3Bpbm5lckhhbmRsaW5nKHRoaXMuZGVzdHJveVJlZik7XG5cbiAgICAgICAgdGhpcy5pZCA9IHV1aWRHZW5lcmF0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5mb3JtQ29udGVudENsaWNrZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKChjb250ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFVwbG9hZFdpZGdldENvbnRlbnRMaW5rTW9kZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0Tm9kZUlkVmFsdWVGb3JWaWV3ZXJzTGlua2VkVG9VcGxvYWRXaWRnZXQoY29udGVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkZvcm1EYXRhUmVmcmVzaGVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtU2VydmljZS5mb3JtRGF0YVJlZnJlc2hlZC5uZXh0KG5ldyBGb3JtRXZlbnQodGhpcy5mb3JtKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRlbnRDbGlja2VkLmVtaXQoY29udGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UudXBkYXRlRm9ybVZhbHVlc1JlcXVlc3RlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKHZhbHVlc1RvU2V0SWZOb3RQcmVzZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uYWRkVmFsdWVzTm90UHJlc2VudCh2YWx1ZXNUb1NldElmTm90UHJlc2VudCk7XG4gICAgICAgICAgICB0aGlzLm9uRm9ybURhdGFSZWZyZXNoZWQodGhpcy5mb3JtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5mb3JtRmllbGRWYWx1ZUNoYW5nZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc2FibGVTYXZlQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2F2ZUJ1dHRvbiA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBhcHBOYW1lID0gY2hhbmdlc1snYXBwTmFtZSddO1xuXG4gICAgICAgIGlmIChhcHBOYW1lPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUJ5VGFza0lkKGFwcE5hbWUuY3VycmVudFZhbHVlLCB0aGlzLnRhc2tJZCwgdGhpcy5hcHBWZXJzaW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEZvcm1CeUlkKGFwcE5hbWUuY3VycmVudFZhbHVlLCB0aGlzLmZvcm1JZCwgdGhpcy5hcHBWZXJzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1JZCA9IGNoYW5nZXNbJ2Zvcm1JZCddO1xuICAgICAgICBpZiAoZm9ybUlkPy5jdXJyZW50VmFsdWUgJiYgdGhpcy5hcHBOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1CeUlkKHRoaXMuYXBwTmFtZSwgZm9ybUlkLmN1cnJlbnRWYWx1ZSwgdGhpcy5hcHBWZXJzaW9uKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhc2tJZCA9IGNoYW5nZXNbJ3Rhc2tJZCddO1xuICAgICAgICBpZiAodGFza0lkPy5jdXJyZW50VmFsdWUgJiYgdGhpcy5hcHBOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1CeVRhc2tJZCh0aGlzLmFwcE5hbWUsIHRhc2tJZC5jdXJyZW50VmFsdWUsIHRoaXMuYXBwVmVyc2lvbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhID0gY2hhbmdlc1snZGF0YSddPy5jdXJyZW50VmFsdWU7XG4gICAgICAgIGlmIChkYXRhPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hGb3JtRGF0YSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9ybVJlcHJlc2VudGF0aW9uID0gY2hhbmdlc1snZm9ybSddO1xuXG4gICAgICAgIGlmIChmb3JtUmVwcmVzZW50YXRpb24/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtID0gZm9ybVJlcHJlc2VudGF0aW9uLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMub25Gb3JtTG9hZGVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgRGlzcGxheU1vZGVTZXJ2aWNlLmRpc3BsYXlNb2RlJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChjaGFuZ2UpID0+IGNoYW5nZS5pZCA9PT0gdGhpcy5pZCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRpc3BsYXlNb2RlQ2hhbmdlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkRGlzcGxheU1vZGUgPSB0aGlzLmRpc3BsYXlNb2RlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGUgPSBkaXNwbGF5TW9kZUNoYW5nZS5kaXNwbGF5TW9kZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG9sZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiA9IHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLmZpbmRDb25maWd1cmF0aW9uKG9sZERpc3BsYXlNb2RlLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Rpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiA9IHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLmZpbmRDb25maWd1cmF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TW9kZUNoYW5nZS5kaXNwbGF5TW9kZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChvbGREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24/LmRpc3BsYXlNb2RlICE9PSBuZXdEaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24/LmRpc3BsYXlNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvbGREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVPZmYuZW1pdChvbGREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdEaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVPbi5lbWl0KG5ld0Rpc3BsYXlNb2RlQ29uZmlndXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlDb25maWd1cmF0aW9uID0gbmV3RGlzcGxheU1vZGVDb25maWd1cmF0aW9uO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHVzZXIgY2xpY2tzIGZvcm0gcmVmcmVzaCBidXR0b24uXG4gICAgICovXG4gICAgb25SZWZyZXNoQ2xpY2tlZCgpIHtcbiAgICAgICAgdGhpcy5sb2FkRm9ybSgpO1xuICAgIH1cblxuICAgIGxvYWRGb3JtKCkge1xuICAgICAgICBpZiAodGhpcy5hcHBOYW1lICYmIHRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1CeVRhc2tJZCh0aGlzLmFwcE5hbWUsIHRoaXMudGFza0lkLCB0aGlzLmFwcFZlcnNpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwTmFtZSAmJiB0aGlzLmZvcm1JZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQnlJZCh0aGlzLmFwcE5hbWUsIHRoaXMuZm9ybUlkLCB0aGlzLmFwcFZlcnNpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZFByb2Nlc3NWYXJpYWJsZXNCeVRhc2tJZChhcHBOYW1lOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUYXNrVmFyaWFibGVDbG91ZFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1DbG91ZFNlcnZpY2UuZ2V0VGFzayhhcHBOYW1lLCB0YXNrSWQpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHRhc2spID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FQcm9jZXNzVGFzayh0YXNrKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtQ2xvdWRTZXJ2aWNlLmdldFRhc2tWYXJpYWJsZXMoYXBwTmFtZSwgdGFza0lkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNBUHJvY2Vzc1Rhc2sodGFza1JlcHJlc2VudGF0aW9uOiBUYXNrRGV0YWlsc0Nsb3VkTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRhc2tSZXByZXNlbnRhdGlvbi5wcm9jZXNzRGVmaW5pdGlvbklkICYmIHRhc2tSZXByZXNlbnRhdGlvbi5wcm9jZXNzRGVmaW5pdGlvbkRlcGxveW1lbnRJZCAhPT0gJ251bGwnO1xuICAgIH1cblxuICAgIGdldEZvcm1CeVRhc2tJZChhcHBOYW1lOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyKTogUHJvbWlzZTxGb3JtTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPEZvcm1Nb2RlbD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGZvcmtKb2luKHRoaXMuZm9ybUNsb3VkU2VydmljZS5nZXRUYXNrRm9ybShhcHBOYW1lLCB0YXNrSWQsIHZlcnNpb24pLCB0aGlzLmZvcm1DbG91ZFNlcnZpY2UuZ2V0VGFza1ZhcmlhYmxlcyhhcHBOYW1lLCB0YXNrSWQpKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTiA9IGRhdGFbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OLnByb2Nlc3NWYXJpYWJsZXMgPSBkYXRhWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YVsxXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRm9ybSA9IHRoaXMucGFyc2VGb3JtKHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UucmVmcmVzaFZpc2liaWxpdHkocGFyc2VkRm9ybSwgdGhpcy5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZEZvcm0udmFsaWRhdGVGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0gPSBwYXJzZWRGb3JtO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLm5vZGVJZCA9ICctbXktJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Gb3JtTG9hZGVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0Rm9ybUJ5SWQoYXBwTmFtZTogc3RyaW5nLCBmb3JtSWQ6IHN0cmluZywgYXBwVmVyc2lvbj86IG51bWJlcikge1xuICAgICAgICB0aGlzLmZvcm1DbG91ZFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRGb3JtKGFwcE5hbWUsIGZvcm1JZCwgYXBwVmVyc2lvbilcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoZm9ybSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmbGF0dGVuRm9ybSA9IHsgLi4uZm9ybS5mb3JtUmVwcmVzZW50YXRpb24sIC4uLmZvcm0uZm9ybVJlcHJlc2VudGF0aW9uLmZvcm1EZWZpbml0aW9uIH07XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmbGF0dGVuRm9ybS5mb3JtRGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsYXR0ZW5Gb3JtO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChmb3JtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OID0gZm9ybTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04ucHJvY2Vzc1ZhcmlhYmxlcyA9IHRoaXMuZGF0YSB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRm9ybSA9IHRoaXMucGFyc2VGb3JtKGZvcm0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLnJlZnJlc2hWaXNpYmlsaXR5KHBhcnNlZEZvcm0pO1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWRGb3JtPy52YWxpZGF0ZUZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtID0gcGFyc2VkRm9ybTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLm5vZGVJZCA9ICctbXktJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkZvcm1Mb2FkZWQodGhpcy5mb3JtKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHNhdmVUYXNrRm9ybSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSAmJiB0aGlzLmFwcE5hbWUgJiYgdGhpcy50YXNrSWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUNsb3VkU2VydmljZVxuICAgICAgICAgICAgICAgIC5zYXZlVGFza0Zvcm0odGhpcy5hcHBOYW1lLCB0aGlzLnRhc2tJZCwgdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCwgYCR7dGhpcy5mb3JtLmlkfWAsIHRoaXMuZm9ybS52YWx1ZXMpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRhc2tTYXZlZCh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHRoaXMub25UYXNrU2F2ZWRFcnJvcihlcnJvcilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2Uub25TYXZlVGFzayh0aGlzLmlkLCB0aGlzLmRpc3BsYXlNb2RlLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29tcGxldGVUYXNrRm9ybShvdXRjb21lPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0/LmNvbmZpcm1NZXNzYWdlPy5zaG93ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuZm9ybS5jb25maXJtTWVzc2FnZS5tZXNzYWdlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzQ1MHB4J1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlRm9ybShvdXRjb21lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29tcGxldGVGb3JtKG91dGNvbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLm9uQ29tcGxldGVUYXNrKHRoaXMuaWQsIHRoaXMuZGlzcGxheU1vZGUsIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wbGV0ZUZvcm0ob3V0Y29tZT86IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5mb3JtICYmIHRoaXMuYXBwTmFtZSAmJiB0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtQ2xvdWRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmNvbXBsZXRlVGFza0Zvcm0odGhpcy5hcHBOYW1lLCB0aGlzLnRhc2tJZCwgdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCwgYCR7dGhpcy5mb3JtLmlkfWAsIHRoaXMuZm9ybS52YWx1ZXMsIG91dGNvbWUsIHRoaXMuYXBwVmVyc2lvbilcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFza0NvbXBsZXRlZCh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHRoaXMub25UYXNrQ29tcGxldGVkRXJyb3IoZXJyb3IpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBhcnNlRm9ybShmb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04/OiBhbnkpOiBGb3JtTW9kZWwgfCBudWxsIHtcbiAgICAgICAgaWYgKGZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTikge1xuICAgICAgICAgICAgY29uc3QgZm9ybVZhbHVlczogRm9ybVZhbHVlcyA9IHt9O1xuICAgICAgICAgICAgKHRoaXMuZGF0YSB8fCBbXSkuZm9yRWFjaCgodmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtVmFsdWVzW3ZhcmlhYmxlLm5hbWVdID0gdmFyaWFibGUudmFsdWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtTW9kZWwoZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OLCBmb3JtVmFsdWVzLCB0aGlzLnJlYWRPbmx5LCB0aGlzLmZvcm1TZXJ2aWNlLCB1bmRlZmluZWQsIHRoaXMuZmllbGRWYWxpZGF0b3JzKTtcbiAgICAgICAgICAgIGlmICghZm9ybSkge1xuICAgICAgICAgICAgICAgIGZvcm0ub3V0Y29tZXMgPSB0aGlzLmdldEZvcm1EZWZpbml0aW9uT3V0Y29tZXMoZm9ybSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZm9ybTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjdXN0b20gc2V0IG9mIG91dGNvbWVzIGZvciBhIEZvcm0gRGVmaW5pdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JtIEZvcm0gZGVmaW5pdGlvbiBtb2RlbC5cbiAgICAgKiBAcmV0dXJucyBsaXN0IG9mIGZvcm0gb3V0Y29tZXNcbiAgICAgKi9cbiAgICBnZXRGb3JtRGVmaW5pdGlvbk91dGNvbWVzKGZvcm06IEZvcm1Nb2RlbCk6IEZvcm1PdXRjb21lTW9kZWxbXSB7XG4gICAgICAgIHJldHVybiBbbmV3IEZvcm1PdXRjb21lTW9kZWwoZm9ybSwgeyBpZDogJyRzYXZlJywgbmFtZTogRm9ybU91dGNvbWVNb2RlbC5TQVZFX0FDVElPTiwgaXNTeXN0ZW06IHRydWUgfSldO1xuICAgIH1cblxuICAgIGNoZWNrVmlzaWJpbGl0eShmaWVsZDogRm9ybUZpZWxkTW9kZWwpIHtcbiAgICAgICAgaWYgKGZpZWxkPy5mb3JtKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLnJlZnJlc2hWaXNpYmlsaXR5KGZpZWxkLmZvcm0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoRm9ybURhdGEoKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMucGFyc2VGb3JtKHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSkge1xuICAgICAgICAgICAgdGhpcy5vbkZvcm1Mb2FkZWQodGhpcy5mb3JtKTtcbiAgICAgICAgICAgIHRoaXMub25Gb3JtRGF0YVJlZnJlc2hlZCh0aGlzLmZvcm0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRm9ybUxvYWRlZChmb3JtOiBGb3JtTW9kZWwpIHtcbiAgICAgICAgaWYgKGZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyA9IHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLmdldERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnModGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zKTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGUgPSB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5zd2l0Y2hUb0Rpc3BsYXlNb2RlKFxuICAgICAgICAgICAgICAgIHRoaXMuaWQsXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmpzb24uZGlzcGxheU1vZGUsXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZSxcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZGlzcGxheUNvbmZpZ3VyYXRpb24gPSB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5maW5kQ29uZmlndXJhdGlvbih0aGlzLmRpc3BsYXlNb2RlLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlT24uZW1pdCh0aGlzLmRpc3BsYXlDb25maWd1cmF0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmZvcm1Mb2FkZWQuZW1pdChmb3JtKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb3JtRGF0YVJlZnJlc2hlZChmb3JtOiBGb3JtTW9kZWwpIHtcbiAgICAgICAgdGhpcy5mb3JtRGF0YVJlZnJlc2hlZC5lbWl0KGZvcm0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRhc2tTYXZlZChmb3JtOiBGb3JtTW9kZWwpIHtcbiAgICAgICAgdGhpcy5mb3JtU2F2ZWQuZW1pdChmb3JtKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25UYXNrU2F2ZWRFcnJvcihlcnJvcjogYW55KSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRhc2tDb21wbGV0ZWQoZm9ybTogRm9ybU1vZGVsKSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbXBsZXRlZC5lbWl0KGZvcm0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRhc2tDb21wbGV0ZWRFcnJvcihlcnJvcjogYW55KSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkV4ZWN1dGVPdXRjb21lKG91dGNvbWU6IEZvcm1PdXRjb21lTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYXJncyA9IG5ldyBGb3JtT3V0Y29tZUV2ZW50KG91dGNvbWUpO1xuXG4gICAgICAgIGlmIChhcmdzLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXhlY3V0ZU91dGNvbWUuZW1pdChhcmdzKTtcbiAgICAgICAgcmV0dXJuICFhcmdzLmRlZmF1bHRQcmV2ZW50ZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0b3JlRm9ybUFzTWV0YWRhdGEoKSB7fVxuXG4gICAgc3dpdGNoVG9EaXNwbGF5TW9kZShuZXdEaXNwbGF5TW9kZT86IHN0cmluZykge1xuICAgICAgICB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5zd2l0Y2hUb0Rpc3BsYXlNb2RlKHRoaXMuaWQsIEZvcm1DbG91ZERpc3BsYXlNb2RlW25ld0Rpc3BsYXlNb2RlXSwgdGhpcy5kaXNwbGF5TW9kZSwgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zKTtcbiAgICB9XG5cbiAgICBmaW5kRGlzcGxheUNvbmZpZ3VyYXRpb24oZGlzcGxheU1vZGU/OiBzdHJpbmcpOiBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2UuZmluZENvbmZpZ3VyYXRpb24oRm9ybUNsb3VkRGlzcGxheU1vZGVbZGlzcGxheU1vZGVdLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgIH1cblxuICAgIGxvYWRJbmplY3RlZEZpZWxkVmFsaWRhdG9ycyhpbmplY3RlZEZpZWxkVmFsaWRhdG9yczogRm9ybUZpZWxkVmFsaWRhdG9yW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKGluamVjdGVkRmllbGRWYWxpZGF0b3JzICYmIGluamVjdGVkRmllbGRWYWxpZGF0b3JzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRWYWxpZGF0b3JzID0gWy4uLnRoaXMuZmllbGRWYWxpZGF0b3JzLCAuLi5pbmplY3RlZEZpZWxkVmFsaWRhdG9yc107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5leHRUYXNrQ2hlY2tib3hDaGVja2VkQ2hhbmdlZChldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5uZXh0VGFza0NoZWNrYm94Q2hlY2tlZENoYW5nZWQuZW1pdChldmVudCk7XG4gICAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIiFoYXNGb3JtKClcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZW1wdHktZm9ybV1cIiAvPlxuPC9kaXY+XG5cbjxkaXZcbiAgICAqbmdJZj1cImhhc0Zvcm0oKVwiXG4gICAgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1jb250YWluZXIgYWRmLWNsb3VkLWZvcm0te3sgZGlzcGxheUNvbmZpZ3VyYXRpb24/Lm9wdGlvbnM/LmZ1bGxzY3JlZW4gPyAnZnVsbHNjcmVlbicgOiAnaW5saW5lJyB9fS1jb250YWluZXJcIlxuICAgIFtzdHlsZV09XCJmb3JtU3R5bGVcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1jb250ZW50XCIgW2Nka1RyYXBGb2N1c109XCJkaXNwbGF5Q29uZmlndXJhdGlvbj8ub3B0aW9ucz8udHJhcEZvY3VzXCIgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmU+XG4gICAgICAgIDxhZGYtdG9vbGJhciBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLXRvb2xiYXJcIiAqbmdJZj1cImRpc3BsYXlDb25maWd1cmF0aW9uPy5vcHRpb25zPy5kaXNwbGF5VG9vbGJhclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtX19mb3JtLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGYtY2xvdWQtZm9ybV9fZGlzcGxheS1uYW1lXCIgW3RpdGxlXT1cImZvcm0udGFza05hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZm9ybS50YXNrTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZvcm0udGFza05hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdGT1JNLkZPUk1fUkVOREVSRVIuTkFNRUxFU1NfVEFTSycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxhZGYtdG9vbGJhci1kaXZpZGVyICpuZ0lmPVwiZGlzcGxheUNvbmZpZ3VyYXRpb24/Lm9wdGlvbnM/LmRpc3BsYXlDbG9zZUJ1dHRvblwiIC8+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkaXNwbGF5Q29uZmlndXJhdGlvbj8ub3B0aW9ucz8uZGlzcGxheUNsb3NlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWNsb3NlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItcmlnaHQtYmFja1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZm9ybS1jbG9zZS1idXR0b24nXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUb0Rpc3BsYXlNb2RlKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9hZGYtdG9vbGJhcj5cblxuICAgICAgICA8bWF0LWNhcmRcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWNvbnRlbnQtY2FyZFwiXG4gICAgICAgICAgICBbY2xhc3MuYWRmLWNsb3VkLWZvcm0tY29udGVudC1jYXJkLWZ1bGxzY3JlZW5dPVwiZGlzcGxheU1vZGUgPT09ICdmdWxsU2NyZWVuJ1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1jb250ZW50LWNhcmQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLWhlYWRlciAqbmdJZj1cInNob3dUaXRsZSB8fCBzaG93UmVmcmVzaEJ1dHRvbiB8fCBzaG93VmFsaWRhdGlvbkljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93VmFsaWRhdGlvbkljb25cIiBjbGFzcz1cImFkZi1mb3JtLXZhbGlkYXRpb24tYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGlkPVwiYWRmLXZhbGlkLWZvcm0taWNvblwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiAqbmdJZj1cImZvcm0uaXNWYWxpZDsgZWxzZSBub192YWxpZF9mb3JtXCI+Y2hlY2tfY2lyY2xlPC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vX3ZhbGlkX2Zvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBpZD1cImFkZi1pbnZhbGlkLWZvcm0taWNvblwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgYWRmLWludmFsaWQtY29sb3JcIj5lcnJvcjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRpc3BsYXlDb25maWd1cmF0aW9uPy5vcHRpb25zPy5mdWxsc2NyZWVuICYmIGZpbmREaXNwbGF5Q29uZmlndXJhdGlvbignZnVsbFNjcmVlbicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1mdWxsc2NyZWVuLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUb0Rpc3BsYXlNb2RlKCdmdWxsU2NyZWVuJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZm9ybS1mdWxsc2NyZWVuLWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZnVsbHNjcmVlbjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UmVmcmVzaEJ1dHRvblwiIGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tcmVsb2FkLWJ1dHRvblwiIFt0aXRsZV09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkZVTExTQ1JFRU4nIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvblJlZnJlc2hDbGlja2VkKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuRlVMTFNDUkVFTicgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5yZWZyZXNoPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc1RpdGxlRW5hYmxlZCgpXCIgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS10aXRsZVwiIFt0aXRsZV09XCJmb3JtLnRhc2tOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGZvcm0udGFza05hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmb3JtLnRhc2tOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnRk9STS5GT1JNX1JFTkRFUkVSLk5BTUVMRVNTX1RBU0snIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJhZGYtZm9ybS1jb250YWluZXItY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhZGYtZm9ybS1yZW5kZXJlciBbZm9ybURlZmluaXRpb25dPVwiZm9ybVwiIFtyZWFkT25seV09XCJyZWFkT25seVwiIC8+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtYWN0aW9ucyAqbmdJZj1cImZvcm0uaGFzT3V0Y29tZXMoKVwiIGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tY29udGVudC1jYXJkLWFjdGlvbnNcIiBhbGlnbj1cImVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWRmLWZvcm0tb3Blbi1uZXh0LXRhc2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd05leHRUYXNrQ2hlY2tib3ggJiYgc2hvd0NvbXBsZXRlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc05leHRUYXNrQ2hlY2tib3hDaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uTmV4dFRhc2tDaGVja2JveENoZWNrZWRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyAnQURGX0NMT1VEX1RBU0tfRk9STS5PUEVOX05FWFRfVEFTSy5MQUJFTCcgfCB0cmFuc2xhdGUgfX08L21hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGYtY2FyZC1hY3Rpb25zLXNwYWNlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi1jbG91ZC1mb3JtLWN1c3RvbS1vdXRjb21lc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvdXRjb21lIG9mIGZvcm0ub3V0Y29tZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3V0Y29tZS5pc1Zpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2FkZi1mb3JtLScgKyBvdXRjb21lLm5hbWUgfCBmb3JtYXRTcGFjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJnZXRDb2xvckZvck91dGNvbWUob3V0Y29tZS5uYW1lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc091dGNvbWVCdXR0b25FbmFibGVkKG91dGNvbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFkZi1mb3JtLWhpZGUtYnV0dG9uXT1cIiFpc091dGNvbWVCdXR0b25WaXNpYmxlKG91dGNvbWUsIGZvcm0ucmVhZE9ubHkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1jdXN0b20tb3V0Y29tZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25PdXRjb21lQ2xpY2tlZChvdXRjb21lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvdXRjb21lLm5hbWUgfCB0cmFuc2xhdGUgfCB1cHBlcmNhc2UgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWFjdGlvbnM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtY2FyZD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
416
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jbG91ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy9mb3JtLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL2Zvcm0tY2xvdWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFDSCxzQkFBc0IsRUFFdEIsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixTQUFTLEVBR1QsU0FBUyxFQUNULGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFFWCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDMUIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLEVBQUUsSUFBSSxjQUFjLEVBQUUsTUFBTSxNQUFN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QUNiLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQixVQUFVO3dCQUNWLGlCQUFpQjtxQkFDcEIsYUFDVSxDQUFDLHVCQUF1QixDQUFDOzswQkFpR3ZCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUNBQWlDO3lDQTFGakUsT0FBTztzQkFETixLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixJQUFJO3NCQURILEtBQUs7Z0JBS04seUJBQXlCO3NCQUR4QixLQUFLO2dCQUtOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFLTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBS1AsVUFBVTtzQkFEVCxNQUFNO2dCQUtQLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFLUCxrQkFBa0I7c0JBRGpCLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixNQUFNO2dCQUtQLGNBQWM7c0JBRGIsTUFBTTtnQkFLUCw4QkFBOEI7c0JBRDdCLE1BQU07Z0JBcURQLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQ29uZmlybURpYWxvZ0NvbXBvbmVudCxcbiAgICBDb250ZW50TGlua01vZGVsLFxuICAgIEZvcm1hdFNwYWNlUGlwZSxcbiAgICBGb3JtQmFzZUNvbXBvbmVudCxcbiAgICBGb3JtRXZlbnQsXG4gICAgRm9ybUZpZWxkTW9kZWwsXG4gICAgRm9ybUZpZWxkVmFsaWRhdG9yLFxuICAgIEZvcm1Nb2RlbCxcbiAgICBGb3JtT3V0Y29tZUV2ZW50LFxuICAgIEZvcm1PdXRjb21lTW9kZWwsXG4gICAgRm9ybVJlbmRlcmVyQ29tcG9uZW50LFxuICAgIEZvcm1TZXJ2aWNlLFxuICAgIEZvcm1WYWx1ZXMsXG4gICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICBUb29sYmFyRGl2aWRlckNvbXBvbmVudCxcbiAgICBVcGxvYWRXaWRnZXRDb250ZW50TGlua01vZGVsLFxuICAgIFdpZGdldFZpc2liaWxpdHlTZXJ2aWNlXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBGb3JtQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZm9ybS1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFRhc2tWYXJpYWJsZUNsb3VkIH0gZnJvbSAnLi4vbW9kZWxzL3Rhc2stdmFyaWFibGUtY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgVGFza0RldGFpbHNDbG91ZE1vZGVsIH0gZnJvbSAnLi4vLi4vdGFzay9tb2RlbHMvdGFzay1kZXRhaWxzLWNsb3VkLm1vZGVsJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkR2VuZXJhdGlvbiB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgRm9ybUNsb3VkRGlzcGxheU1vZGUsIEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tZmllbGRzLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRm9ybUNsb3VkU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zcGlubmVyL2Zvcm0tY2xvdWQtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IERpc3BsYXlNb2RlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Rpc3BsYXktbW9kZS5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UsIE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuXG5leHBvcnQgY29uc3QgRk9STV9DTE9VRF9GSUVMRF9WQUxJREFUT1JTX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEZvcm1GaWVsZFZhbGlkYXRvcltdPignRk9STV9DTE9VRF9GSUVMRF9WQUxJREFUT1JTX1RPS0VOJyk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLWZvcm0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgRm9ybWF0U3BhY2VQaXBlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdENhcmRNb2R1bGUsXG4gICAgICAgIEZvcm1SZW5kZXJlckNvbXBvbmVudCxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgVG9vbGJhckRpdmlkZXJDb21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgICAgIEExMXlNb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtGb3JtQ2xvdWRTcGlubmVyU2VydmljZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tY2xvdWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Zvcm0tY2xvdWQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtQ2xvdWRDb21wb25lbnQgZXh0ZW5kcyBGb3JtQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcbiAgICAvKiogQXBwIG5hbWUgdG8gZmV0Y2ggY29ycmVzcG9uZGluZyBmb3JtIGFuZCB2YWx1ZXMuICovXG4gICAgQElucHV0KClcbiAgICBhcHBOYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBUaGUgYXBwbGljYXRpb24gdmVyc2lvbiB0byB1c2Ugd2hlbiBmZXRjaGluZyBkYXRhICovXG4gICAgQElucHV0KClcbiAgICBhcHBWZXJzaW9uPzogbnVtYmVyO1xuXG4gICAgLyoqIFRhc2sgaWQgdG8gZmV0Y2ggY29ycmVzcG9uZGluZyBmb3JtIGFuZCB2YWx1ZXMuICovXG4gICAgQElucHV0KClcbiAgICBmb3JtSWQ6IHN0cmluZztcblxuICAgIC8qKiBQcm9jZXNzSW5zdGFuY2VJZCBpZCB0byBmZXRjaCBjb3JyZXNwb25kaW5nIGZvcm0gYW5kIHZhbHVlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHByb2Nlc3NJbnN0YW5jZUlkOiBzdHJpbmc7XG5cbiAgICAvKiogVGFzayBpZCB0byBmZXRjaCBjb3JyZXNwb25kaW5nIGZvcm0gYW5kIHZhbHVlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRhc2tJZDogc3RyaW5nO1xuXG4gICAgLyoqIEN1c3RvbSBmb3JtIHZhbHVlcyBtYXAgdG8gYmUgdXNlZCB3aXRoIHRoZSByZW5kZXJlZCBmb3JtLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGF0YTogVGFza1ZhcmlhYmxlQ2xvdWRbXTtcblxuICAgIC8qKiBUaGUgYXZhaWxhYmxlIGRpc3BsYXkgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBmb3JtICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zOiBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25bXTtcblxuICAgIC8qKiBUb2dnbGUgcmVuZGVyaW5nIG9mIHRoZSBgT3BlbiBuZXh0IHRhc2tgIGNoZWNrYm94LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd05leHRUYXNrQ2hlY2tib3ggPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBgT3BlbiBuZXh0IHRhc2tgIGNoZWNrYm94IGlzIGNoZWNrZWQgYnkgZGVmYXVsdCBvciBub3QuICovXG4gICAgQElucHV0KClcbiAgICBpc05leHRUYXNrQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlIHJlbmRlcmluZyBvZiB0aGUgYENvbXBsZXRlYCBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICBzaG93Q29tcGxldGVCdXR0b24gPSBmYWxzZTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkIHdpdGggdGhlIGBTYXZlYCBvciBjdXN0b20gb3V0Y29tZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybVNhdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCB3aXRoIHRoZSBgQ29tcGxldGVgIG91dGNvbWUuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybUNvbXBsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybU1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBpcyBsb2FkZWQgb3IgcmVsb2FkZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybU1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBmb3JtIHZhbHVlcyBhcmUgcmVmcmVzaGVkIGR1ZSB0byBhIGRhdGEgcHJvcGVydHkgY2hhbmdlLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvcm1EYXRhUmVmcmVzaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGZvcm0gY29udGVudCBpcyBjbGlja2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvcm1Db250ZW50Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29udGVudExpbmtNb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBkaXNwbGF5IG1vZGUgY29uZmlndXJhdGlvbiBpcyB0dXJuZWQgb24uICovXG4gICAgQE91dHB1dCgpXG4gICAgZGlzcGxheU1vZGVPbiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybUNsb3VkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIGRpc3BsYXkgbW9kZSBjb25maWd1cmF0aW9uIGlzIHR1cm5lZCBvZmYuICovXG4gICAgQE91dHB1dCgpXG4gICAgZGlzcGxheU1vZGVPZmYgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbj4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGBPcGVuIG5leHQgdGFza2AgY2hlY2tib3ggd2FzIHRvZ2dsZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgbmV4dFRhc2tDaGVja2JveENoZWNrZWRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxNYXRDaGVja2JveENoYW5nZT4oKTtcblxuICAgIHByb3RlY3RlZCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICAgIG5vZGVJZDogc3RyaW5nO1xuICAgIGZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTjogYW55O1xuICAgIGZpZWxkVmFsaWRhdG9yczogRm9ybUZpZWxkVmFsaWRhdG9yW10gPSBbXTtcblxuICAgIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gICAgZGlzcGxheU1vZGU6IHN0cmluZztcbiAgICBkaXNwbGF5Q29uZmlndXJhdGlvbjogRm9ybUNsb3VkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uID0gRGlzcGxheU1vZGVTZXJ2aWNlLkRFRkFVTFRfRElTUExBWV9NT0RFX0NPTkZJR1VSQVRJT05TWzBdO1xuICAgIHN0eWxlOiBzdHJpbmcgPSAnJztcblxuICAgIHByb3RlY3RlZCBmb3JtQ2xvdWRTZXJ2aWNlID0gaW5qZWN0KEZvcm1DbG91ZFNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBmb3JtU2VydmljZSA9IGluamVjdChGb3JtU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIHZpc2liaWxpdHlTZXJ2aWNlID0gaW5qZWN0KFdpZGdldFZpc2liaWxpdHlTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gICAgcHJvdGVjdGVkIHNwaW5uZXJTZXJ2aWNlID0gaW5qZWN0KEZvcm1DbG91ZFNwaW5uZXJTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgZGlzcGxheU1vZGVTZXJ2aWNlID0gaW5qZWN0KERpc3BsYXlNb2RlU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoRk9STV9DTE9VRF9GSUVMRF9WQUxJREFUT1JTX1RPS0VOKSBpbmplY3RlZEZpZWxkVmFsaWRhdG9ycz86IEZvcm1GaWVsZFZhbGlkYXRvcltdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubG9hZEluamVjdGVkRmllbGRWYWxpZGF0b3JzKGluamVjdGVkRmllbGRWYWxpZGF0b3JzKTtcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5pbml0U3Bpbm5lckhhbmRsaW5nKHRoaXMuZGVzdHJveVJlZik7XG5cbiAgICAgICAgdGhpcy5pZCA9IHV1aWRHZW5lcmF0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5mb3JtQ29udGVudENsaWNrZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKChjb250ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFVwbG9hZFdpZGdldENvbnRlbnRMaW5rTW9kZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0Tm9kZUlkVmFsdWVGb3JWaWV3ZXJzTGlua2VkVG9VcGxvYWRXaWRnZXQoY29udGVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkZvcm1EYXRhUmVmcmVzaGVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtU2VydmljZS5mb3JtRGF0YVJlZnJlc2hlZC5uZXh0KG5ldyBGb3JtRXZlbnQodGhpcy5mb3JtKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRlbnRDbGlja2VkLmVtaXQoY29udGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UudXBkYXRlRm9ybVZhbHVlc1JlcXVlc3RlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKHZhbHVlc1RvU2V0SWZOb3RQcmVzZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uYWRkVmFsdWVzTm90UHJlc2VudCh2YWx1ZXNUb1NldElmTm90UHJlc2VudCk7XG4gICAgICAgICAgICB0aGlzLm9uRm9ybURhdGFSZWZyZXNoZWQodGhpcy5mb3JtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5mb3JtRmllbGRWYWx1ZUNoYW5nZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc2FibGVTYXZlQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2F2ZUJ1dHRvbiA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBhcHBOYW1lID0gY2hhbmdlc1snYXBwTmFtZSddO1xuXG4gICAgICAgIGlmIChhcHBOYW1lPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUJ5VGFza0lkKGFwcE5hbWUuY3VycmVudFZhbHVlLCB0aGlzLnRhc2tJZCwgdGhpcy5hcHBWZXJzaW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEZvcm1CeUlkKGFwcE5hbWUuY3VycmVudFZhbHVlLCB0aGlzLmZvcm1JZCwgdGhpcy5hcHBWZXJzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1JZCA9IGNoYW5nZXNbJ2Zvcm1JZCddO1xuICAgICAgICBpZiAoZm9ybUlkPy5jdXJyZW50VmFsdWUgJiYgdGhpcy5hcHBOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1CeUlkKHRoaXMuYXBwTmFtZSwgZm9ybUlkLmN1cnJlbnRWYWx1ZSwgdGhpcy5hcHBWZXJzaW9uKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhc2tJZCA9IGNoYW5nZXNbJ3Rhc2tJZCddO1xuICAgICAgICBpZiAodGFza0lkPy5jdXJyZW50VmFsdWUgJiYgdGhpcy5hcHBOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1CeVRhc2tJZCh0aGlzLmFwcE5hbWUsIHRhc2tJZC5jdXJyZW50VmFsdWUsIHRoaXMuYXBwVmVyc2lvbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhID0gY2hhbmdlc1snZGF0YSddPy5jdXJyZW50VmFsdWU7XG4gICAgICAgIGlmIChkYXRhPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hGb3JtRGF0YSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9ybVJlcHJlc2VudGF0aW9uID0gY2hhbmdlc1snZm9ybSddO1xuXG4gICAgICAgIGlmIChmb3JtUmVwcmVzZW50YXRpb24/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtID0gZm9ybVJlcHJlc2VudGF0aW9uLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMub25Gb3JtTG9hZGVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgRGlzcGxheU1vZGVTZXJ2aWNlLmRpc3BsYXlNb2RlJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChjaGFuZ2UpID0+IGNoYW5nZS5pZCA9PT0gdGhpcy5pZCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRpc3BsYXlNb2RlQ2hhbmdlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkRGlzcGxheU1vZGUgPSB0aGlzLmRpc3BsYXlNb2RlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGUgPSBkaXNwbGF5TW9kZUNoYW5nZS5kaXNwbGF5TW9kZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG9sZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiA9IHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLmZpbmRDb25maWd1cmF0aW9uKG9sZERpc3BsYXlNb2RlLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Rpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiA9IHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLmZpbmRDb25maWd1cmF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TW9kZUNoYW5nZS5kaXNwbGF5TW9kZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChvbGREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24/LmRpc3BsYXlNb2RlICE9PSBuZXdEaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24/LmRpc3BsYXlNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvbGREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVPZmYuZW1pdChvbGREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdEaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVPbi5lbWl0KG5ld0Rpc3BsYXlNb2RlQ29uZmlndXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlDb25maWd1cmF0aW9uID0gbmV3RGlzcGxheU1vZGVDb25maWd1cmF0aW9uO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHVzZXIgY2xpY2tzIGZvcm0gcmVmcmVzaCBidXR0b24uXG4gICAgICovXG4gICAgb25SZWZyZXNoQ2xpY2tlZCgpIHtcbiAgICAgICAgdGhpcy5sb2FkRm9ybSgpO1xuICAgIH1cblxuICAgIGxvYWRGb3JtKCkge1xuICAgICAgICBpZiAodGhpcy5hcHBOYW1lICYmIHRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1CeVRhc2tJZCh0aGlzLmFwcE5hbWUsIHRoaXMudGFza0lkLCB0aGlzLmFwcFZlcnNpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwTmFtZSAmJiB0aGlzLmZvcm1JZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQnlJZCh0aGlzLmFwcE5hbWUsIHRoaXMuZm9ybUlkLCB0aGlzLmFwcFZlcnNpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZFByb2Nlc3NWYXJpYWJsZXNCeVRhc2tJZChhcHBOYW1lOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUYXNrVmFyaWFibGVDbG91ZFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1DbG91ZFNlcnZpY2UuZ2V0VGFzayhhcHBOYW1lLCB0YXNrSWQpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHRhc2spID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FQcm9jZXNzVGFzayh0YXNrKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtQ2xvdWRTZXJ2aWNlLmdldFRhc2tWYXJpYWJsZXMoYXBwTmFtZSwgdGFza0lkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNBUHJvY2Vzc1Rhc2sodGFza1JlcHJlc2VudGF0aW9uOiBUYXNrRGV0YWlsc0Nsb3VkTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRhc2tSZXByZXNlbnRhdGlvbi5wcm9jZXNzRGVmaW5pdGlvbklkICYmIHRhc2tSZXByZXNlbnRhdGlvbi5wcm9jZXNzRGVmaW5pdGlvbkRlcGxveW1lbnRJZCAhPT0gJ251bGwnO1xuICAgIH1cblxuICAgIGdldEZvcm1CeVRhc2tJZChhcHBOYW1lOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyKTogUHJvbWlzZTxGb3JtTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPEZvcm1Nb2RlbD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGZvcmtKb2luKHRoaXMuZm9ybUNsb3VkU2VydmljZS5nZXRUYXNrRm9ybShhcHBOYW1lLCB0YXNrSWQsIHZlcnNpb24pLCB0aGlzLmZvcm1DbG91ZFNlcnZpY2UuZ2V0VGFza1ZhcmlhYmxlcyhhcHBOYW1lLCB0YXNrSWQpKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTiA9IGRhdGFbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OLnByb2Nlc3NWYXJpYWJsZXMgPSBkYXRhWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YVsxXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRm9ybSA9IHRoaXMucGFyc2VGb3JtKHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UucmVmcmVzaFZpc2liaWxpdHkocGFyc2VkRm9ybSwgdGhpcy5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZEZvcm0udmFsaWRhdGVGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0gPSBwYXJzZWRGb3JtO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLm5vZGVJZCA9ICctbXktJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Gb3JtTG9hZGVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0Rm9ybUJ5SWQoYXBwTmFtZTogc3RyaW5nLCBmb3JtSWQ6IHN0cmluZywgYXBwVmVyc2lvbj86IG51bWJlcikge1xuICAgICAgICB0aGlzLmZvcm1DbG91ZFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRGb3JtKGFwcE5hbWUsIGZvcm1JZCwgYXBwVmVyc2lvbilcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoZm9ybSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmbGF0dGVuRm9ybSA9IHsgLi4uZm9ybS5mb3JtUmVwcmVzZW50YXRpb24sIC4uLmZvcm0uZm9ybVJlcHJlc2VudGF0aW9uLmZvcm1EZWZpbml0aW9uIH07XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmbGF0dGVuRm9ybS5mb3JtRGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsYXR0ZW5Gb3JtO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChmb3JtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OID0gZm9ybTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04ucHJvY2Vzc1ZhcmlhYmxlcyA9IHRoaXMuZGF0YSB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRm9ybSA9IHRoaXMucGFyc2VGb3JtKGZvcm0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLnJlZnJlc2hWaXNpYmlsaXR5KHBhcnNlZEZvcm0pO1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWRGb3JtPy52YWxpZGF0ZUZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtID0gcGFyc2VkRm9ybTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLm5vZGVJZCA9ICctbXktJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkZvcm1Mb2FkZWQodGhpcy5mb3JtKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHNhdmVUYXNrRm9ybSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSAmJiB0aGlzLmFwcE5hbWUgJiYgdGhpcy50YXNrSWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUNsb3VkU2VydmljZVxuICAgICAgICAgICAgICAgIC5zYXZlVGFza0Zvcm0odGhpcy5hcHBOYW1lLCB0aGlzLnRhc2tJZCwgdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCwgYCR7dGhpcy5mb3JtLmlkfWAsIHRoaXMuZm9ybS52YWx1ZXMpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRhc2tTYXZlZCh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHRoaXMub25UYXNrU2F2ZWRFcnJvcihlcnJvcilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2Uub25TYXZlVGFzayh0aGlzLmlkLCB0aGlzLmRpc3BsYXlNb2RlLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29tcGxldGVUYXNrRm9ybShvdXRjb21lPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0/LmNvbmZpcm1NZXNzYWdlPy5zaG93ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuZm9ybS5jb25maXJtTWVzc2FnZS5tZXNzYWdlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzQ1MHB4J1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlRm9ybShvdXRjb21lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29tcGxldGVGb3JtKG91dGNvbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLm9uQ29tcGxldGVUYXNrKHRoaXMuaWQsIHRoaXMuZGlzcGxheU1vZGUsIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wbGV0ZUZvcm0ob3V0Y29tZT86IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5mb3JtICYmIHRoaXMuYXBwTmFtZSAmJiB0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtQ2xvdWRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmNvbXBsZXRlVGFza0Zvcm0odGhpcy5hcHBOYW1lLCB0aGlzLnRhc2tJZCwgdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCwgYCR7dGhpcy5mb3JtLmlkfWAsIHRoaXMuZm9ybS52YWx1ZXMsIG91dGNvbWUsIHRoaXMuYXBwVmVyc2lvbilcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFza0NvbXBsZXRlZCh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHRoaXMub25UYXNrQ29tcGxldGVkRXJyb3IoZXJyb3IpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBhcnNlRm9ybShmb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04/OiBhbnkpOiBGb3JtTW9kZWwgfCBudWxsIHtcbiAgICAgICAgaWYgKGZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTikge1xuICAgICAgICAgICAgY29uc3QgZm9ybVZhbHVlczogRm9ybVZhbHVlcyA9IHt9O1xuICAgICAgICAgICAgKHRoaXMuZGF0YSB8fCBbXSkuZm9yRWFjaCgodmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtVmFsdWVzW3ZhcmlhYmxlLm5hbWVdID0gdmFyaWFibGUudmFsdWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtTW9kZWwoZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OLCBmb3JtVmFsdWVzLCB0aGlzLnJlYWRPbmx5LCB0aGlzLmZvcm1TZXJ2aWNlLCB1bmRlZmluZWQsIHRoaXMuZmllbGRWYWxpZGF0b3JzKTtcbiAgICAgICAgICAgIGlmICghZm9ybSkge1xuICAgICAgICAgICAgICAgIGZvcm0ub3V0Y29tZXMgPSB0aGlzLmdldEZvcm1EZWZpbml0aW9uT3V0Y29tZXMoZm9ybSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZm9ybTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjdXN0b20gc2V0IG9mIG91dGNvbWVzIGZvciBhIEZvcm0gRGVmaW5pdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JtIEZvcm0gZGVmaW5pdGlvbiBtb2RlbC5cbiAgICAgKiBAcmV0dXJucyBsaXN0IG9mIGZvcm0gb3V0Y29tZXNcbiAgICAgKi9cbiAgICBnZXRGb3JtRGVmaW5pdGlvbk91dGNvbWVzKGZvcm06IEZvcm1Nb2RlbCk6IEZvcm1PdXRjb21lTW9kZWxbXSB7XG4gICAgICAgIHJldHVybiBbbmV3IEZvcm1PdXRjb21lTW9kZWwoZm9ybSwgeyBpZDogJyRzYXZlJywgbmFtZTogRm9ybU91dGNvbWVNb2RlbC5TQVZFX0FDVElPTiwgaXNTeXN0ZW06IHRydWUgfSldO1xuICAgIH1cblxuICAgIGNoZWNrVmlzaWJpbGl0eShmaWVsZDogRm9ybUZpZWxkTW9kZWwpIHtcbiAgICAgICAgaWYgKGZpZWxkPy5mb3JtKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLnJlZnJlc2hWaXNpYmlsaXR5KGZpZWxkLmZvcm0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoRm9ybURhdGEoKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMucGFyc2VGb3JtKHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSkge1xuICAgICAgICAgICAgdGhpcy5vbkZvcm1Mb2FkZWQodGhpcy5mb3JtKTtcbiAgICAgICAgICAgIHRoaXMub25Gb3JtRGF0YVJlZnJlc2hlZCh0aGlzLmZvcm0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRm9ybUxvYWRlZChmb3JtOiBGb3JtTW9kZWwpIHtcbiAgICAgICAgaWYgKGZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyA9IHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLmdldERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnModGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zKTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGUgPSB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5zd2l0Y2hUb0Rpc3BsYXlNb2RlKFxuICAgICAgICAgICAgICAgIHRoaXMuaWQsXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmpzb24uZGlzcGxheU1vZGUsXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZSxcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZGlzcGxheUNvbmZpZ3VyYXRpb24gPSB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5maW5kQ29uZmlndXJhdGlvbih0aGlzLmRpc3BsYXlNb2RlLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlT24uZW1pdCh0aGlzLmRpc3BsYXlDb25maWd1cmF0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmZvcm1Mb2FkZWQuZW1pdChmb3JtKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb3JtRGF0YVJlZnJlc2hlZChmb3JtOiBGb3JtTW9kZWwpIHtcbiAgICAgICAgdGhpcy5mb3JtRGF0YVJlZnJlc2hlZC5lbWl0KGZvcm0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRhc2tTYXZlZChmb3JtOiBGb3JtTW9kZWwpIHtcbiAgICAgICAgdGhpcy5mb3JtU2F2ZWQuZW1pdChmb3JtKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25UYXNrU2F2ZWRFcnJvcihlcnJvcjogYW55KSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRhc2tDb21wbGV0ZWQoZm9ybTogRm9ybU1vZGVsKSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbXBsZXRlZC5lbWl0KGZvcm0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRhc2tDb21wbGV0ZWRFcnJvcihlcnJvcjogYW55KSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkV4ZWN1dGVPdXRjb21lKG91dGNvbWU6IEZvcm1PdXRjb21lTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYXJncyA9IG5ldyBGb3JtT3V0Y29tZUV2ZW50KG91dGNvbWUpO1xuXG4gICAgICAgIGlmIChhcmdzLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXhlY3V0ZU91dGNvbWUuZW1pdChhcmdzKTtcbiAgICAgICAgcmV0dXJuICFhcmdzLmRlZmF1bHRQcmV2ZW50ZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0b3JlRm9ybUFzTWV0YWRhdGEoKSB7fVxuXG4gICAgc3dpdGNoVG9EaXNwbGF5TW9kZShuZXdEaXNwbGF5TW9kZT86IHN0cmluZykge1xuICAgICAgICB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5zd2l0Y2hUb0Rpc3BsYXlNb2RlKHRoaXMuaWQsIEZvcm1DbG91ZERpc3BsYXlNb2RlW25ld0Rpc3BsYXlNb2RlXSwgdGhpcy5kaXNwbGF5TW9kZSwgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zKTtcbiAgICB9XG5cbiAgICBmaW5kRGlzcGxheUNvbmZpZ3VyYXRpb24oZGlzcGxheU1vZGU/OiBzdHJpbmcpOiBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2UuZmluZENvbmZpZ3VyYXRpb24oRm9ybUNsb3VkRGlzcGxheU1vZGVbZGlzcGxheU1vZGVdLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgIH1cblxuICAgIGxvYWRJbmplY3RlZEZpZWxkVmFsaWRhdG9ycyhpbmplY3RlZEZpZWxkVmFsaWRhdG9yczogRm9ybUZpZWxkVmFsaWRhdG9yW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKGluamVjdGVkRmllbGRWYWxpZGF0b3JzICYmIGluamVjdGVkRmllbGRWYWxpZGF0b3JzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRWYWxpZGF0b3JzID0gWy4uLnRoaXMuZmllbGRWYWxpZGF0b3JzLCAuLi5pbmplY3RlZEZpZWxkVmFsaWRhdG9yc107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5leHRUYXNrQ2hlY2tib3hDaGVja2VkQ2hhbmdlZChldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5uZXh0VGFza0NoZWNrYm94Q2hlY2tlZENoYW5nZWQuZW1pdChldmVudCk7XG4gICAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIiFoYXNGb3JtKClcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZW1wdHktZm9ybV1cIiAvPlxuPC9kaXY+XG5cbjxkaXZcbiAgICAqbmdJZj1cImhhc0Zvcm0oKVwiXG4gICAgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1jb250YWluZXIgYWRmLWNsb3VkLWZvcm0te3sgZGlzcGxheUNvbmZpZ3VyYXRpb24/Lm9wdGlvbnM/LmZ1bGxzY3JlZW4gPyAnZnVsbHNjcmVlbicgOiAnaW5saW5lJyB9fS1jb250YWluZXJcIlxuICAgIFtzdHlsZV09XCJmb3JtU3R5bGVcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1jb250ZW50XCIgW2Nka1RyYXBGb2N1c109XCJkaXNwbGF5Q29uZmlndXJhdGlvbj8ub3B0aW9ucz8udHJhcEZvY3VzXCIgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmU+XG4gICAgICAgIDxhZGYtdG9vbGJhciBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLXRvb2xiYXJcIiAqbmdJZj1cImRpc3BsYXlDb25maWd1cmF0aW9uPy5vcHRpb25zPy5kaXNwbGF5VG9vbGJhclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtX19mb3JtLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGYtY2xvdWQtZm9ybV9fZGlzcGxheS1uYW1lXCIgW3RpdGxlXT1cImZvcm0udGFza05hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZm9ybS50YXNrTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZvcm0udGFza05hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdGT1JNLkZPUk1fUkVOREVSRVIuTkFNRUxFU1NfVEFTSycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxhZGYtdG9vbGJhci1kaXZpZGVyICpuZ0lmPVwiZGlzcGxheUNvbmZpZ3VyYXRpb24/Lm9wdGlvbnM/LmRpc3BsYXlDbG9zZUJ1dHRvblwiIC8+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkaXNwbGF5Q29uZmlndXJhdGlvbj8ub3B0aW9ucz8uZGlzcGxheUNsb3NlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWNsb3NlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItcmlnaHQtYmFja1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZm9ybS1jbG9zZS1idXR0b24nXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUb0Rpc3BsYXlNb2RlKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9hZGYtdG9vbGJhcj5cblxuICAgICAgICA8bWF0LWNhcmRcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWNvbnRlbnQtY2FyZFwiXG4gICAgICAgICAgICBbY2xhc3MuYWRmLWNsb3VkLWZvcm0tY29udGVudC1jYXJkLWZ1bGxzY3JlZW5dPVwiZGlzcGxheU1vZGUgPT09ICdmdWxsU2NyZWVuJ1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1jb250ZW50LWNhcmQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLWhlYWRlciAqbmdJZj1cInNob3dUaXRsZSB8fCBzaG93UmVmcmVzaEJ1dHRvbiB8fCBzaG93VmFsaWRhdGlvbkljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93VmFsaWRhdGlvbkljb25cIiBjbGFzcz1cImFkZi1mb3JtLXZhbGlkYXRpb24tYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGlkPVwiYWRmLXZhbGlkLWZvcm0taWNvblwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiAqbmdJZj1cImZvcm0uaXNWYWxpZDsgZWxzZSBub192YWxpZF9mb3JtXCI+Y2hlY2tfY2lyY2xlPC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vX3ZhbGlkX2Zvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBpZD1cImFkZi1pbnZhbGlkLWZvcm0taWNvblwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgYWRmLWludmFsaWQtY29sb3JcIj5lcnJvcjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRpc3BsYXlDb25maWd1cmF0aW9uPy5vcHRpb25zPy5mdWxsc2NyZWVuICYmIGZpbmREaXNwbGF5Q29uZmlndXJhdGlvbignZnVsbFNjcmVlbicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1mdWxsc2NyZWVuLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUb0Rpc3BsYXlNb2RlKCdmdWxsU2NyZWVuJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZm9ybS1mdWxsc2NyZWVuLWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZnVsbHNjcmVlbjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UmVmcmVzaEJ1dHRvblwiIGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tcmVsb2FkLWJ1dHRvblwiIFt0aXRsZV09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkZVTExTQ1JFRU4nIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvblJlZnJlc2hDbGlja2VkKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuRlVMTFNDUkVFTicgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5yZWZyZXNoPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc1RpdGxlRW5hYmxlZCgpXCIgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS10aXRsZVwiIFt0aXRsZV09XCJmb3JtLnRhc2tOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGZvcm0udGFza05hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmb3JtLnRhc2tOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnRk9STS5GT1JNX1JFTkRFUkVSLk5BTUVMRVNTX1RBU0snIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJhZGYtZm9ybS1jb250YWluZXItY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhZGYtZm9ybS1yZW5kZXJlciBbZm9ybURlZmluaXRpb25dPVwiZm9ybVwiIFtyZWFkT25seV09XCJyZWFkT25seVwiIC8+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtYWN0aW9ucyAqbmdJZj1cImZvcm0uaGFzT3V0Y29tZXMoKVwiIGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tY29udGVudC1jYXJkLWFjdGlvbnNcIiBhbGlnbj1cImVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWRmLWZvcm0tb3Blbi1uZXh0LXRhc2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd05leHRUYXNrQ2hlY2tib3ggJiYgc2hvd0NvbXBsZXRlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc05leHRUYXNrQ2hlY2tib3hDaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uTmV4dFRhc2tDaGVja2JveENoZWNrZWRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyAnQURGX0NMT1VEX1RBU0tfRk9STS5PUEVOX05FWFRfVEFTSy5MQUJFTCcgfCB0cmFuc2xhdGUgfX08L21hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGYtY2FyZC1hY3Rpb25zLXNwYWNlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi1jbG91ZC1mb3JtLWN1c3RvbS1vdXRjb21lc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvdXRjb21lIG9mIGZvcm0ub3V0Y29tZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3V0Y29tZS5pc1Zpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2FkZi1mb3JtLScgKyBvdXRjb21lLm5hbWUgfCBmb3JtYXRTcGFjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJnZXRDb2xvckZvck91dGNvbWUob3V0Y29tZS5uYW1lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc091dGNvbWVCdXR0b25FbmFibGVkKG91dGNvbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFkZi1mb3JtLWhpZGUtYnV0dG9uXT1cIiFpc091dGNvbWVCdXR0b25WaXNpYmxlKG91dGNvbWUsIGZvcm0ucmVhZE9ubHkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1jdXN0b20tb3V0Y29tZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25PdXRjb21lQ2xpY2tlZChvdXRjb21lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvdXRjb21lLm5hbWUgfCB0cmFuc2xhdGUgfCB1cHBlcmNhc2UgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWFjdGlvbnM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtY2FyZD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -36,6 +36,10 @@ export class TaskScreenCloudComponent {
|
|
|
36
36
|
this.readOnly = false;
|
|
37
37
|
/** Toggle readonly state of the task. */
|
|
38
38
|
this.rootProcessInstanceId = '';
|
|
39
|
+
/** Whether the `Open next task` checkbox is checked by default or not. */
|
|
40
|
+
this.isNextTaskCheckboxChecked = false;
|
|
41
|
+
/** Toggle rendering of the `Open next task` checkbox. */
|
|
42
|
+
this.showNextTaskCheckbox = false;
|
|
39
43
|
/** Emitted when the task is saved. */
|
|
40
44
|
this.taskSaved = new EventEmitter();
|
|
41
45
|
/** Emitted when the task is completed. */
|
|
@@ -48,6 +52,8 @@ export class TaskScreenCloudComponent {
|
|
|
48
52
|
this.claimTask = new EventEmitter();
|
|
49
53
|
/** Emitted when the task is unclaimed. */
|
|
50
54
|
this.unclaimTask = new EventEmitter();
|
|
55
|
+
/** Emitted when the `Open next task` checkbox was toggled. */
|
|
56
|
+
this.nextTaskCheckboxCheckedChanged = new EventEmitter();
|
|
51
57
|
this.destroyRef = inject(DestroyRef);
|
|
52
58
|
this.screenRenderingService = inject(ScreenRenderingService);
|
|
53
59
|
}
|
|
@@ -90,13 +96,21 @@ export class TaskScreenCloudComponent {
|
|
|
90
96
|
if (this.rootProcessInstanceId && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'rootProcessInstanceId')) {
|
|
91
97
|
this.componentRef.setInput('rootProcessInstanceId', this.rootProcessInstanceId);
|
|
92
98
|
}
|
|
99
|
+
if (this.showNextTaskCheckbox && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'showNextTaskCheckbox')) {
|
|
100
|
+
this.componentRef.setInput('showNextTaskCheckbox', this.showNextTaskCheckbox);
|
|
101
|
+
}
|
|
102
|
+
if (this.isNextTaskCheckboxChecked && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'isNextTaskCheckboxChecked')) {
|
|
103
|
+
this.componentRef.setInput('isNextTaskCheckboxChecked', this.isNextTaskCheckboxChecked);
|
|
104
|
+
}
|
|
93
105
|
}
|
|
94
106
|
subscribeToOutputs() {
|
|
95
107
|
if (this.componentRef.instance?.taskSaved) {
|
|
96
108
|
this.componentRef.instance.taskSaved.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.taskSaved.emit());
|
|
97
109
|
}
|
|
98
110
|
if (this.componentRef.instance?.taskCompleted) {
|
|
99
|
-
this.componentRef.instance.taskCompleted
|
|
111
|
+
this.componentRef.instance.taskCompleted
|
|
112
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
113
|
+
.subscribe((openNextTask) => this.taskCompleted.emit(openNextTask));
|
|
100
114
|
}
|
|
101
115
|
if (this.componentRef.instance?.error) {
|
|
102
116
|
this.componentRef.instance.error.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data) => this.error.emit(data));
|
|
@@ -110,6 +124,11 @@ export class TaskScreenCloudComponent {
|
|
|
110
124
|
if (this.componentRef.instance?.cancelTask) {
|
|
111
125
|
this.componentRef.instance.cancelTask.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data) => this.cancelTask.emit(data));
|
|
112
126
|
}
|
|
127
|
+
if (this.componentRef.instance?.nextTaskCheckboxCheckedChanged) {
|
|
128
|
+
this.componentRef.instance.nextTaskCheckboxCheckedChanged
|
|
129
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
130
|
+
.subscribe((data) => this.nextTaskCheckboxCheckedChanged.emit(data));
|
|
131
|
+
}
|
|
113
132
|
}
|
|
114
133
|
switchToDisplayMode(newDisplayMode) {
|
|
115
134
|
if (this.componentRef?.instance?.switchToDisplayMode) {
|
|
@@ -117,7 +136,7 @@ export class TaskScreenCloudComponent {
|
|
|
117
136
|
}
|
|
118
137
|
}
|
|
119
138
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TaskScreenCloudComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
120
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TaskScreenCloudComponent, isStandalone: true, selector: "adf-cloud-task-screen", inputs: { taskId: "taskId", appName: "appName", canClaimTask: "canClaimTask", canUnclaimTask: "canUnclaimTask", showCancelButton: "showCancelButton", screenId: "screenId", processInstanceId: "processInstanceId", taskName: "taskName", readOnly: "readOnly", rootProcessInstanceId: "rootProcessInstanceId" }, outputs: { taskSaved: "taskSaved", taskCompleted: "taskCompleted", error: "error", cancelTask: "cancelTask", claimTask: "claimTask", unclaimTask: "unclaimTask" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<mat-card>\n <mat-card-content [ngStyle]=\"{'position':'relative'}\" >\n <ng-container #container />\n </mat-card-content>\n</mat-card>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2.MatCardContent, selector: "mat-card-content" }] }); }
|
|
139
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TaskScreenCloudComponent, isStandalone: true, selector: "adf-cloud-task-screen", inputs: { taskId: "taskId", appName: "appName", canClaimTask: "canClaimTask", canUnclaimTask: "canUnclaimTask", showCancelButton: "showCancelButton", screenId: "screenId", processInstanceId: "processInstanceId", taskName: "taskName", readOnly: "readOnly", rootProcessInstanceId: "rootProcessInstanceId", isNextTaskCheckboxChecked: "isNextTaskCheckboxChecked", showNextTaskCheckbox: "showNextTaskCheckbox" }, outputs: { taskSaved: "taskSaved", taskCompleted: "taskCompleted", error: "error", cancelTask: "cancelTask", claimTask: "claimTask", unclaimTask: "unclaimTask", nextTaskCheckboxCheckedChanged: "nextTaskCheckboxCheckedChanged" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<mat-card>\n <mat-card-content [ngStyle]=\"{'position':'relative'}\" >\n <ng-container #container />\n </mat-card-content>\n</mat-card>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2.MatCardContent, selector: "mat-card-content" }] }); }
|
|
121
140
|
}
|
|
122
141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TaskScreenCloudComponent, decorators: [{
|
|
123
142
|
type: Component,
|
|
@@ -142,6 +161,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
142
161
|
type: Input
|
|
143
162
|
}], rootProcessInstanceId: [{
|
|
144
163
|
type: Input
|
|
164
|
+
}], isNextTaskCheckboxChecked: [{
|
|
165
|
+
type: Input
|
|
166
|
+
}], showNextTaskCheckbox: [{
|
|
167
|
+
type: Input
|
|
145
168
|
}], taskSaved: [{
|
|
146
169
|
type: Output
|
|
147
170
|
}], taskCompleted: [{
|
|
@@ -154,8 +177,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
154
177
|
type: Output
|
|
155
178
|
}], unclaimTask: [{
|
|
156
179
|
type: Output
|
|
180
|
+
}], nextTaskCheckboxCheckedChanged: [{
|
|
181
|
+
type: Output
|
|
157
182
|
}], container: [{
|
|
158
183
|
type: ViewChild,
|
|
159
184
|
args: ['container', { read: ViewContainerRef, static: true }]
|
|
160
185
|
}] } });
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvc2NyZWVuL2NvbXBvbmVudHMvc2NyZWVuLWNsb3VkL3NjcmVlbi1jbG91ZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL3NjcmVlbi9jb21wb25lbnRzL3NjcmVlbi1jbG91ZC9zY3JlZW4tY2xvdWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQWdCLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQVFoRSxNQUFNLE9BQU8sd0JBQXdCO0lBTnJDO1FBV0ksb0RBQW9EO1FBRXBELFlBQU8sR0FBVyxFQUFFLENBQUM7UUFhckIsNkNBQTZDO1FBRTdDLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFFdEIsdURBQXVEO1FBRXZELHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUUvQix3QkFBd0I7UUFFeEIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUV0Qix5Q0FBeUM7UUFFekMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQix5Q0FBeUM7UUFFekMsMEJB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LEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBS04sU0FBUztzQkFEUixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFLUCxLQUFLO3NCQURKLE1BQU07Z0JBS1AsVUFBVTtzQkFEVCxNQUFNO2dCQUtQLFNBQVM7c0JBRFIsTUFBTTtnQkFLUCxXQUFXO3NCQURWLE1BQU07Z0JBSVAsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRSZWYsIERlc3Ryb3lSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NyZWVuUmVuZGVyaW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgVXNlclRhc2tDdXN0b21VaSB9IGZyb20gJy4uLy4uL21vZGVscy9zY3JlZW4tY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1jbG91ZC10YXNrLXNjcmVlbicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRDYXJkTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2NyZWVuLWNsb3VkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUYXNrU2NyZWVuQ2xvdWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKiBUYXNrIGlkIHRvIGZldGNoIGNvcnJlc3BvbmRpbmcgZm9ybSBhbmQgdmFsdWVzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFza0lkOiBzdHJpbmc7XG5cbiAgICAvKiogQXBwIG5hbWUgdG8gZmV0Y2ggZGF0YSBmb3IgZHluYW1pYyBjb21wb25lbnQuICovXG4gICAgQElucHV0KClcbiAgICBhcHBOYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBCb29sZWFuIGluZm9ybWluZyBpZiBhIHRhc2sgY2FuIGJlIGNsYWltZWQuICovXG4gICAgQElucHV0KClcbiAgICBjYW5DbGFpbVRhc2s6IGJvb2xlYW47XG5cbiAgICAvKiogQm9vbGVhbiBpbmZvcm1pbmcgaWYgYSB0YXNrIGNhbiBiZSB1bmNsYWltZWQuICovXG4gICAgQElucHV0KClcbiAgICBjYW5VbmNsYWltVGFzazogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd0NhbmNlbEJ1dHRvbjogYm9vbGVhbjtcblxuICAgIC8qKiBTY3JlZW4gaWQgdG8gY3JlYXRlIGR5bmFtaWMgY29tcG9uZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2NyZWVuSWQ6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIFByb2Nlc3MgSW5zdGFuY2UgSWQgdG8gZmV0Y2ggY29ycmVzcG9uZGluZyBkYXRhLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIE5hbWUgb2YgdGhlIHRhc2suICovXG4gICAgQElucHV0KClcbiAgICB0YXNrTmFtZTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogVG9nZ2xlIHJlYWRvbmx5IHN0YXRlIG9mIHRoZSB0YXNrLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZE9ubHkgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGUgcmVhZG9ubHkgc3RhdGUgb2YgdGhlIHRhc2suICovXG4gICAgQElucHV0KClcbiAgICByb290UHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgdGFzayBpcyBzYXZlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICB0YXNrU2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSB0YXNrIGlzIGNvbXBsZXRlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICB0YXNrQ29tcGxldGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGVyZSBpcyBhbiBlcnJvci4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgdGFzayBpcyBjYW5jZWxsZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgY2FuY2VsVGFzayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgdGFzayBpcyBjbGFpbWVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNsYWltVGFzayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgdGFzayBpcyB1bmNsYWltZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgdW5jbGFpbVRhc2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFVzZXJUYXNrQ3VzdG9tVWk+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NyZWVuUmVuZGVyaW5nU2VydmljZSA9IGluamVjdChTY3JlZW5SZW5kZXJpbmdTZXJ2aWNlKTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNyZWF0ZUR5bmFtaWNDb21wb25lbnQoKTtcbiAgICB9XG5cbiAgICBjcmVhdGVEeW5hbWljQ29tcG9uZW50KCkge1xuICAgICAgICBpZiAodGhpcy5zY3JlZW5JZCkge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50VHlwZSA9IHRoaXMuc2NyZWVuUmVuZGVyaW5nU2VydmljZS5yZXNvbHZlQ29tcG9uZW50VHlwZSh7IHR5cGU6IHRoaXMuc2NyZWVuSWQgfSk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlKTtcbiAgICAgICAgICAgIHRoaXMuc2V0SW5wdXRzRm9yRHluYW1pY0NvbXBvbmVudCgpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb091dHB1dHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldElucHV0c0ZvckR5bmFtaWNDb21wb25lbnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRhc2tJZCAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UsICd0YXNrSWQnKSkge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Rhc2tJZCcsIHRoaXMudGFza0lkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5hcHBOYW1lICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSwgJ2FwcE5hbWUnKSkge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2FwcE5hbWUnLCB0aGlzLmFwcE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNjcmVlbklkICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSwgJ3NjcmVlbklkJykpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdzY3JlZW5JZCcsIHRoaXMuc2NyZWVuSWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnByb2Nlc3NJbnN0YW5jZUlkICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSwgJ3Byb2Nlc3NJbnN0YW5jZUlkJykpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdwcm9jZXNzSW5zdGFuY2VJZCcsIHRoaXMucHJvY2Vzc0luc3RhbmNlSWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRhc2tOYW1lICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSwgJ3Rhc2tOYW1lJykpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCd0YXNrTmFtZScsIHRoaXMudGFza05hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNhbkNsYWltVGFzayAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UsICdjYW5DbGFpbVRhc2snKSkge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2NhbkNsYWltVGFzaycsIHRoaXMuY2FuQ2xhaW1UYXNrKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jYW5VbmNsYWltVGFzayAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UsICdjYW5VbmNsYWltVGFzaycpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnY2FuVW5jbGFpbVRhc2snLCB0aGlzLmNhblVuY2xhaW1UYXNrKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zaG93Q2FuY2VsQnV0dG9uICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSwgJ3Nob3dDYW5jZWxCdXR0b24nKSkge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Nob3dDYW5jZWxCdXR0b24nLCB0aGlzLnNob3dDYW5jZWxCdXR0b24pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvb3RQcm9jZXNzSW5zdGFuY2VJZCAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UsICdyb290UHJvY2Vzc0luc3RhbmNlSWQnKSkge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Jvb3RQcm9jZXNzSW5zdGFuY2VJZCcsIHRoaXMucm9vdFByb2Nlc3NJbnN0YW5jZUlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN1YnNjcmliZVRvT3V0cHV0cygpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlPy50YXNrU2F2ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnRhc2tTYXZlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50YXNrU2F2ZWQuZW1pdCgpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U/LnRhc2tDb21wbGV0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnRhc2tDb21wbGV0ZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudGFza0NvbXBsZXRlZC5lbWl0KCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZT8uZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmVycm9yLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5lcnJvci5lbWl0KGRhdGEpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZT8uY2xhaW1UYXNrKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jbGFpbVRhc2sucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLmNsYWltVGFzay5lbWl0KGRhdGEpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U/LnVuY2xhaW1UYXNrKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS51bmNsYWltVGFzay5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMudW5jbGFpbVRhc2suZW1pdChkYXRhKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlPy5jYW5jZWxUYXNrKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jYW5jZWxUYXNrLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5jYW5jZWxUYXNrLmVtaXQoZGF0YSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoVG9EaXNwbGF5TW9kZShuZXdEaXNwbGF5TW9kZT86IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWY/Lmluc3RhbmNlPy5zd2l0Y2hUb0Rpc3BsYXlNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zd2l0Y2hUb0Rpc3BsYXlNb2RlKG5ld0Rpc3BsYXlNb2RlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxtYXQtY2FyZD5cbiAgICA8bWF0LWNhcmQtY29udGVudCBbbmdTdHlsZV09XCJ7J3Bvc2l0aW9uJzoncmVsYXRpdmUnfVwiID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAjY29udGFpbmVyIC8+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD5cbiJdfQ==
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvc2NyZWVuL2NvbXBvbmVudHMvc2NyZWVuLWNsb3VkL3NjcmVlbi1jbG91ZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL3NjcmVlbi9jb21wb25lbnRzL3NjcmVlbi1jbG91ZC9zY3JlZW4tY2xvdWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQWdCLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQVNoRSxNQUFNLE9BQU8sd0JBQXdCO0lBTnJDO1FBV0ksb0RBQW9EO1FBRXBELFlBQU8sR0FBVyxFQUFFLENBQUM7UUFhckIsNkNBQTZDO1FBRTdDLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFFdEIsdURBQXVEO1FBRXZELHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUUvQix3QkFBd0I7UUFFeEIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUV0Qix5Q0FBeUM7UUFFekMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQix5Q0FBeUM7UUFFekMsMEJB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QUFDLFlBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxSCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsSSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0SSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNwSSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSw4QkFBOEIsRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLDhCQUE4QjtpQkFDcEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDekMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0UsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxjQUF1QjtRQUN2QyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNMLENBQUM7K0dBcktRLHdCQUF3QjttR0FBeEIsd0JBQXdCLGl5QkE0RUQsZ0JBQWdCLDJDQzNHcEQsd0pBS0EsMkNEdUJjLFlBQVksbUhBQUUsYUFBYTs7NEZBRzVCLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDSSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQzs4QkFNdEMsTUFBTTtzQkFETCxLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBS04seUJBQXlCO3NCQUR4QixLQUFLO2dCQUtOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFLTixTQUFTO3NCQURSLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixNQUFNO2dCQUtQLEtBQUs7c0JBREosTUFBTTtnQkFLUCxVQUFVO3NCQURULE1BQU07Z0JBS1AsU0FBUztzQkFEUixNQUFNO2dCQUtQLFdBQVc7c0JBRFYsTUFBTTtnQkFLUCw4QkFBOEI7c0JBRDdCLE1BQU07Z0JBSVAsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRSZWYsIERlc3Ryb3lSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NyZWVuUmVuZGVyaW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgVXNlclRhc2tDdXN0b21VaSB9IGZyb20gJy4uLy4uL21vZGVscy9zY3JlZW4tY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLXRhc2stc2NyZWVuJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdENhcmRNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zY3JlZW4tY2xvdWQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRhc2tTY3JlZW5DbG91ZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqIFRhc2sgaWQgdG8gZmV0Y2ggY29ycmVzcG9uZGluZyBmb3JtIGFuZCB2YWx1ZXMuICovXG4gICAgQElucHV0KClcbiAgICB0YXNrSWQ6IHN0cmluZztcblxuICAgIC8qKiBBcHAgbmFtZSB0byBmZXRjaCBkYXRhIGZvciBkeW5hbWljIGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcE5hbWU6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEJvb2xlYW4gaW5mb3JtaW5nIGlmIGEgdGFzayBjYW4gYmUgY2xhaW1lZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNhbkNsYWltVGFzazogYm9vbGVhbjtcblxuICAgIC8qKiBCb29sZWFuIGluZm9ybWluZyBpZiBhIHRhc2sgY2FuIGJlIHVuY2xhaW1lZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNhblVuY2xhaW1UYXNrOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBzaG93Q2FuY2VsQnV0dG9uOiBib29sZWFuO1xuXG4gICAgLyoqIFNjcmVlbiBpZCB0byBjcmVhdGUgZHluYW1pYyBjb21wb25lbnQuICovXG4gICAgQElucHV0KClcbiAgICBzY3JlZW5JZDogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogUHJvY2VzcyBJbnN0YW5jZSBJZCB0byBmZXRjaCBjb3JyZXNwb25kaW5nIGRhdGEuICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogTmFtZSBvZiB0aGUgdGFzay4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRhc2tOYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBUb2dnbGUgcmVhZG9ubHkgc3RhdGUgb2YgdGhlIHRhc2suICovXG4gICAgQElucHV0KClcbiAgICByZWFkT25seSA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZSByZWFkb25seSBzdGF0ZSBvZiB0aGUgdGFzay4gKi9cbiAgICBASW5wdXQoKVxuICAgIHJvb3RQcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgYE9wZW4gbmV4dCB0YXNrYCBjaGVja2JveCBpcyBjaGVja2VkIGJ5IGRlZmF1bHQgb3Igbm90LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNOZXh0VGFza0NoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZSByZW5kZXJpbmcgb2YgdGhlIGBPcGVuIG5leHQgdGFza2AgY2hlY2tib3guICovXG4gICAgQElucHV0KClcbiAgICBzaG93TmV4dFRhc2tDaGVja2JveCA9IGZhbHNlO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgdGFzayBpcyBzYXZlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICB0YXNrU2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSB0YXNrIGlzIGNvbXBsZXRlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICB0YXNrQ29tcGxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZXJlIGlzIGFuIGVycm9yLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSB0YXNrIGlzIGNhbmNlbGxlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBjYW5jZWxUYXNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSB0YXNrIGlzIGNsYWltZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgY2xhaW1UYXNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSB0YXNrIGlzIHVuY2xhaW1lZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICB1bmNsYWltVGFzayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgYE9wZW4gbmV4dCB0YXNrYCBjaGVja2JveCB3YXMgdG9nZ2xlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBuZXh0VGFza0NoZWNrYm94Q2hlY2tlZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE1hdENoZWNrYm94Q2hhbmdlPigpO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VXNlclRhc2tDdXN0b21VaT47XG4gICAgcHJpdmF0ZSByZWFkb25seSBzY3JlZW5SZW5kZXJpbmdTZXJ2aWNlID0gaW5qZWN0KFNjcmVlblJlbmRlcmluZ1NlcnZpY2UpO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRHluYW1pY0NvbXBvbmVudCgpO1xuICAgIH1cblxuICAgIGNyZWF0ZUR5bmFtaWNDb21wb25lbnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnNjcmVlbklkKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRUeXBlID0gdGhpcy5zY3JlZW5SZW5kZXJpbmdTZXJ2aWNlLnJlc29sdmVDb21wb25lbnRUeXBlKHsgdHlwZTogdGhpcy5zY3JlZW5JZCB9KTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUpO1xuICAgICAgICAgICAgdGhpcy5zZXRJbnB1dHNGb3JEeW5hbWljQ29tcG9uZW50KCk7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmliZVRvT3V0cHV0cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0SW5wdXRzRm9yRHluYW1pY0NvbXBvbmVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGFza0lkICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSwgJ3Rhc2tJZCcpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgndGFza0lkJywgdGhpcy50YXNrSWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFwcE5hbWUgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLCAnYXBwTmFtZScpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnYXBwTmFtZScsIHRoaXMuYXBwTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2NyZWVuSWQgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLCAnc2NyZWVuSWQnKSkge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3NjcmVlbklkJywgdGhpcy5zY3JlZW5JZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJvY2Vzc0luc3RhbmNlSWQgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLCAncHJvY2Vzc0luc3RhbmNlSWQnKSkge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Byb2Nlc3NJbnN0YW5jZUlkJywgdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGFza05hbWUgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLCAndGFza05hbWUnKSkge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Rhc2tOYW1lJywgdGhpcy50YXNrTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY2FuQ2xhaW1UYXNrICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSwgJ2NhbkNsYWltVGFzaycpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnY2FuQ2xhaW1UYXNrJywgdGhpcy5jYW5DbGFpbVRhc2spO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNhblVuY2xhaW1UYXNrICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSwgJ2NhblVuY2xhaW1UYXNrJykpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdjYW5VbmNsYWltVGFzaycsIHRoaXMuY2FuVW5jbGFpbVRhc2spO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNob3dDYW5jZWxCdXR0b24gJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLCAnc2hvd0NhbmNlbEJ1dHRvbicpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnc2hvd0NhbmNlbEJ1dHRvbicsIHRoaXMuc2hvd0NhbmNlbEJ1dHRvbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm9vdFByb2Nlc3NJbnN0YW5jZUlkICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSwgJ3Jvb3RQcm9jZXNzSW5zdGFuY2VJZCcpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgncm9vdFByb2Nlc3NJbnN0YW5jZUlkJywgdGhpcy5yb290UHJvY2Vzc0luc3RhbmNlSWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNob3dOZXh0VGFza0NoZWNrYm94ICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSwgJ3Nob3dOZXh0VGFza0NoZWNrYm94JykpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdzaG93TmV4dFRhc2tDaGVja2JveCcsIHRoaXMuc2hvd05leHRUYXNrQ2hlY2tib3gpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzTmV4dFRhc2tDaGVja2JveENoZWNrZWQgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLCAnaXNOZXh0VGFza0NoZWNrYm94Q2hlY2tlZCcpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnaXNOZXh0VGFza0NoZWNrYm94Q2hlY2tlZCcsIHRoaXMuaXNOZXh0VGFza0NoZWNrYm94Q2hlY2tlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdWJzY3JpYmVUb091dHB1dHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZT8udGFza1NhdmVkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50YXNrU2F2ZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudGFza1NhdmVkLmVtaXQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlPy50YXNrQ29tcGxldGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50YXNrQ29tcGxldGVkXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgob3Blbk5leHRUYXNrKSA9PiB0aGlzLnRhc2tDb21wbGV0ZWQuZW1pdChvcGVuTmV4dFRhc2spKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U/LmVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lcnJvci5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMuZXJyb3IuZW1pdChkYXRhKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U/LmNsYWltVGFzaykge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuY2xhaW1UYXNrLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5jbGFpbVRhc2suZW1pdChkYXRhKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlPy51bmNsYWltVGFzaykge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudW5jbGFpbVRhc2sucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLnVuY2xhaW1UYXNrLmVtaXQoZGF0YSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZT8uY2FuY2VsVGFzaykge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuY2FuY2VsVGFzay5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMuY2FuY2VsVGFzay5lbWl0KGRhdGEpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U/Lm5leHRUYXNrQ2hlY2tib3hDaGVja2VkQ2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubmV4dFRhc2tDaGVja2JveENoZWNrZWRDaGFuZ2VkXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5uZXh0VGFza0NoZWNrYm94Q2hlY2tlZENoYW5nZWQuZW1pdChkYXRhKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2hUb0Rpc3BsYXlNb2RlKG5ld0Rpc3BsYXlNb2RlPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2U/LnN3aXRjaFRvRGlzcGxheU1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnN3aXRjaFRvRGlzcGxheU1vZGUobmV3RGlzcGxheU1vZGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG1hdC1jYXJkPlxuICAgIDxtYXQtY2FyZC1jb250ZW50IFtuZ1N0eWxlXT1cInsncG9zaXRpb24nOidyZWxhdGl2ZSd9XCIgPlxuICAgICAgICA8bmctY29udGFpbmVyICNjb250YWluZXIgLz5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG48L21hdC1jYXJkPlxuIl19
|
|
@@ -15,4 +15,4 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
export {};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLWNsb3VkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9zY3JlZW4vbW9kZWxzL3NjcmVlbi1jbG91ZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUciLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJUYXNrQ3VzdG9tVWkge1xuICAgIGFwcE5hbWU6IHN0cmluZztcbiAgICBjYW5DbGFpbVRhc2s6IGJvb2xlYW47XG4gICAgY2FuVW5jbGFpbVRhc2s6IGJvb2xlYW47XG4gICAgcHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZztcbiAgICByb290UHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZztcbiAgICBzY3JlZW5JZDogc3RyaW5nO1xuICAgIHNob3dDYW5jZWxCdXR0b246IGJvb2xlYW47XG4gICAgdGFza05hbWU6IHN0cmluZztcbiAgICB0YXNrSWQ6IHN0cmluZztcbiAgICBpc05leHRUYXNrQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xuICAgIHNob3dOZXh0VGFza0NoZWNrYm94OiBib29sZWFuO1xuICAgIGNhbmNlbFRhc2s6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICAgIGNsYWltVGFzazogRXZlbnRFbWl0dGVyPGFueT47XG4gICAgZXJyb3I6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICAgIHN3aXRjaFRvRGlzcGxheU1vZGU/OiAobmV3RGlzcGxheU1vZGU/OiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgdGFza0NvbXBsZXRlZDogRXZlbnRFbWl0dGVyPGFueT47XG4gICAgdGFza1NhdmVkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcbiAgICB1bmNsYWltVGFzazogRXZlbnRFbWl0dGVyPGFueT47XG4gICAgbmV4dFRhc2tDaGVja2JveENoZWNrZWRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55Pjtcbn1cbiJdfQ==
|