@alfresco/adf-process-services-cloud 8.1.0-15865093855 → 8.1.0-15928551305
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/app/components/app-details-cloud/app-details-cloud.component.mjs +4 -4
- package/esm2022/lib/app/components/app-list-cloud/app-list-cloud.component.mjs +8 -9
- package/esm2022/lib/common/date-range-filter/date-range-filter.component.mjs +9 -10
- package/esm2022/lib/form/components/form-cloud.component.mjs +9 -10
- package/esm2022/lib/form/components/form-definition-selector-cloud.component.mjs +7 -8
- package/esm2022/lib/form/components/spinner/form-spinner.component.mjs +5 -6
- package/esm2022/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.mjs +6 -7
- package/esm2022/lib/form/components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component.mjs +9 -10
- package/esm2022/lib/form/components/widgets/data-table/data-table.widget.mjs +4 -5
- package/esm2022/lib/form/components/widgets/date/date-cloud.widget.mjs +10 -11
- package/esm2022/lib/form/components/widgets/display-external-property/display-external-property.widget.mjs +8 -9
- package/esm2022/lib/form/components/widgets/dropdown/dropdown-cloud.widget.mjs +5 -6
- package/esm2022/lib/form/components/widgets/file-viewer/file-viewer.widget.mjs +4 -5
- package/esm2022/lib/form/components/widgets/group/group-cloud.widget.mjs +5 -6
- package/esm2022/lib/form/components/widgets/people/people-cloud.widget.mjs +5 -6
- package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer.widget.mjs +4 -5
- package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.mjs +5 -6
- package/esm2022/lib/form/components/widgets/upload/upload-cloud.widget.mjs +8 -9
- package/esm2022/lib/group/components/group-cloud.component.mjs +14 -15
- package/esm2022/lib/people/components/people-cloud.component.mjs +14 -15
- package/esm2022/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.mjs +11 -12
- package/esm2022/lib/process/process-filters/components/process-filter-dialog/process-filter-dialog-cloud.component.mjs +10 -11
- package/esm2022/lib/process/process-filters/components/process-filters/process-filters-cloud.component.mjs +6 -7
- package/esm2022/lib/process/process-list/components/process-list-cloud.component.mjs +4 -5
- package/esm2022/lib/process/start-process/components/start-process-cloud.component.mjs +13 -14
- package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component.mjs +15 -16
- package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component.mjs +15 -16
- package/esm2022/lib/task/task-filters/components/service-task-filters/service-task-filters-cloud.component.mjs +6 -7
- package/esm2022/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.mjs +8 -9
- package/esm2022/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.mjs +8 -9
- package/esm2022/lib/task/task-filters/components/task-filters/task-filters-cloud.component.mjs +5 -6
- package/esm2022/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.mjs +7 -8
- package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/user-task-cloud-buttons.component.mjs +5 -6
- package/esm2022/lib/task/task-list/components/service-task-list/service-task-list-cloud.component.mjs +5 -6
- package/esm2022/lib/task/task-list/components/task-list/task-list-cloud.component.mjs +5 -6
- package/fesm2022/adf-process-services-cloud.mjs +113 -114
- package/fesm2022/adf-process-services-cloud.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -17,18 +17,17 @@
|
|
|
17
17
|
import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';
|
|
18
18
|
import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
19
19
|
import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';
|
|
20
|
-
import {
|
|
20
|
+
import { TranslatePipe } from '@ngx-translate/core';
|
|
21
21
|
import { MatButtonModule } from '@angular/material/button';
|
|
22
22
|
import { MatCardModule } from '@angular/material/card';
|
|
23
23
|
import { MatInputModule } from '@angular/material/input';
|
|
24
24
|
import * as i0 from "@angular/core";
|
|
25
|
-
import * as i1 from "@
|
|
26
|
-
import * as i2 from "@angular/material/
|
|
27
|
-
import * as i3 from "@angular/material/
|
|
28
|
-
import * as i4 from "@angular/material/
|
|
29
|
-
import * as i5 from "@angular/
|
|
30
|
-
import * as i6 from "@angular/
|
|
31
|
-
import * as i7 from "@angular/material/dialog";
|
|
25
|
+
import * as i1 from "@angular/material/button";
|
|
26
|
+
import * as i2 from "@angular/material/card";
|
|
27
|
+
import * as i3 from "@angular/material/input";
|
|
28
|
+
import * as i4 from "@angular/material/form-field";
|
|
29
|
+
import * as i5 from "@angular/forms";
|
|
30
|
+
import * as i6 from "@angular/material/dialog";
|
|
32
31
|
export class ProcessFilterDialogCloudComponent {
|
|
33
32
|
constructor() {
|
|
34
33
|
this.dialogRef = inject((MatDialogRef));
|
|
@@ -50,10 +49,10 @@ export class ProcessFilterDialogCloudComponent {
|
|
|
50
49
|
this.dialogRef.close();
|
|
51
50
|
}
|
|
52
51
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessFilterDialogCloudComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessFilterDialogCloudComponent, isStandalone: true, selector: "adf-cloud-process-filter-dialog-cloud", ngImport: i0, template: "<div class=\"adf-process-filter-dialog\">\n <span mat-dialog-title id=\"adf-process-filter-dialog-title\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.TITLE' | translate}}\n </span>\n <mat-card appearance=\"outlined\" class=\"adf-process-filter-dialog-card\">\n <mat-card-content class=\"adf-process-filter-dialog-card-content\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"adf-process-filter-name\" [floatLabel]=\"'auto'\">\n <input\n matInput\n placeholder=\"{{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.FILTER_NAME' | translate }}\"\n [formControl]=\"filterForm.controls.name\" id=\"adf-filter-name-id\">\n </mat-form-field>\n </form>\n </mat-card-content>\n <mat-card-actions class='adf-process-filter-dialog-actions'>\n <button mat-button (click)=\"onSaveClick()\" id=\"adf-save-button-id\" [disabled]=\"!filterForm.valid\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.SAVE' | translate}}\n </button>\n <button mat-button (click)=\"onCancelClick()\" id=\"adf-cancel-button-id\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.CANCEL' | translate}}\n </button>\n </mat-card-actions>\n </mat-card>\n</div>\n", styles: ["adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card{padding:0;box-shadow:none}adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card .adf-process-filter-name{flex:1}adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card .adf-process-filter-dialog-actions{display:flex;max-height:100%;place-content:flex-end;align-items:flex-end}\n"], dependencies: [{ kind: "
|
|
52
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessFilterDialogCloudComponent, isStandalone: true, selector: "adf-cloud-process-filter-dialog-cloud", ngImport: i0, template: "<div class=\"adf-process-filter-dialog\">\n <span mat-dialog-title id=\"adf-process-filter-dialog-title\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.TITLE' | translate}}\n </span>\n <mat-card appearance=\"outlined\" class=\"adf-process-filter-dialog-card\">\n <mat-card-content class=\"adf-process-filter-dialog-card-content\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"adf-process-filter-name\" [floatLabel]=\"'auto'\">\n <input\n matInput\n placeholder=\"{{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.FILTER_NAME' | translate }}\"\n [formControl]=\"filterForm.controls.name\" id=\"adf-filter-name-id\">\n </mat-form-field>\n </form>\n </mat-card-content>\n <mat-card-actions class='adf-process-filter-dialog-actions'>\n <button mat-button (click)=\"onSaveClick()\" id=\"adf-save-button-id\" [disabled]=\"!filterForm.valid\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.SAVE' | translate}}\n </button>\n <button mat-button (click)=\"onCancelClick()\" id=\"adf-cancel-button-id\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.CANCEL' | translate}}\n </button>\n </mat-card-actions>\n </mat-card>\n</div>\n", styles: ["adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card{padding:0;box-shadow:none}adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card .adf-process-filter-name{flex:1}adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card .adf-process-filter-dialog-actions{display:flex;max-height:100%;place-content:flex-end;align-items:flex-end}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i2.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i6.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
54
53
|
}
|
|
55
54
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessFilterDialogCloudComponent, decorators: [{
|
|
56
55
|
type: Component,
|
|
57
|
-
args: [{ selector: 'adf-cloud-process-filter-dialog-cloud', standalone: true, imports: [
|
|
56
|
+
args: [{ selector: 'adf-cloud-process-filter-dialog-cloud', standalone: true, imports: [TranslatePipe, MatButtonModule, MatCardModule, MatInputModule, ReactiveFormsModule, MatDialogModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-process-filter-dialog\">\n <span mat-dialog-title id=\"adf-process-filter-dialog-title\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.TITLE' | translate}}\n </span>\n <mat-card appearance=\"outlined\" class=\"adf-process-filter-dialog-card\">\n <mat-card-content class=\"adf-process-filter-dialog-card-content\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"adf-process-filter-name\" [floatLabel]=\"'auto'\">\n <input\n matInput\n placeholder=\"{{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.FILTER_NAME' | translate }}\"\n [formControl]=\"filterForm.controls.name\" id=\"adf-filter-name-id\">\n </mat-form-field>\n </form>\n </mat-card-content>\n <mat-card-actions class='adf-process-filter-dialog-actions'>\n <button mat-button (click)=\"onSaveClick()\" id=\"adf-save-button-id\" [disabled]=\"!filterForm.valid\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.SAVE' | translate}}\n </button>\n <button mat-button (click)=\"onCancelClick()\" id=\"adf-cancel-button-id\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.CANCEL' | translate}}\n </button>\n </mat-card-actions>\n </mat-card>\n</div>\n", styles: ["adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card{padding:0;box-shadow:none}adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card .adf-process-filter-name{flex:1}adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card .adf-process-filter-dialog-actions{display:flex;max-height:100%;place-content:flex-end;align-items:flex-end}\n"] }]
|
|
58
57
|
}] });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWZpbHRlcnMvY29tcG9uZW50cy9wcm9jZXNzLWZpbHRlci1kaWFsb2cvcHJvY2Vzcy1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWZpbHRlcnMvY29tcG9uZW50cy9wcm9jZXNzLWZpbHRlci1kaWFsb2cvcHJvY2Vzcy1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7QUFXekQsTUFBTSxPQUFPLGlDQUFpQztJQVQ5QztRQVVvQixjQUFTLEdBQUcsTUFBTSxDQUFDLENBQUEsWUFBK0MsQ0FBQSxDQUFDLENBQUM7UUFDcEUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUcvQyxnQkFBVyxHQUFHLE9BQU8sQ0FBQztRQUV0QixlQUFVLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDdkIsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQy9ELENBQUMsQ0FBQztLQWFOO2FBbEJpQixnQkFBVyxHQUFHLE1BQU0sQUFBVCxDQUFVO0lBT25DLFdBQVc7UUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUNqQixNQUFNLEVBQUUsaUNBQWlDLENBQUMsV0FBVztZQUNyRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLO1NBQzVDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDOytHQXJCUSxpQ0FBaUM7bUdBQWpDLGlDQUFpQyxpR0NsQzlDLDQxQ0F5QkEsZ2dCREdjLGFBQWEsaURBQUUsZUFBZSwyTkFBRSxhQUFhLHlWQUFFLGNBQWMscWpCQUFFLG1CQUFtQiwrOUJBQUUsZUFBZTs7NEZBTXBHLGlDQUFpQztrQkFUN0MsU0FBUzsrQkFDSSx1Q0FBdUMsY0FDckMsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsQ0FBQyxtQkFHN0YsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nTW9kdWxlLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1jbG91ZC1wcm9jZXNzLWZpbHRlci1kaWFsb2ctY2xvdWQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RyYW5zbGF0ZVBpcGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0Q2FyZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE1hdERpYWxvZ01vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtZmlsdGVyLWRpYWxvZy1jbG91ZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzcy1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBQcm9jZXNzRmlsdGVyRGlhbG9nQ2xvdWRDb21wb25lbnQge1xuICAgIHB1YmxpYyByZWFkb25seSBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmPFByb2Nlc3NGaWx0ZXJEaWFsb2dDbG91ZENvbXBvbmVudD4pO1xuICAgIHB1YmxpYyByZWFkb25seSBkYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSk7XG5cbiAgICBwdWJsaWMgc3RhdGljIEFDVElPTl9TQVZFID0gJ1NBVkUnO1xuICAgIGRlZmF1bHRJY29uID0gJ2luYm94JztcblxuICAgIGZpbHRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sKHRoaXMuZGF0YS5uYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgfSk7XG5cbiAgICBvblNhdmVDbGljaygpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgYWN0aW9uOiBQcm9jZXNzRmlsdGVyRGlhbG9nQ2xvdWRDb21wb25lbnQuQUNUSU9OX1NBVkUsXG4gICAgICAgICAgICBpY29uOiB0aGlzLmRlZmF1bHRJY29uLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5maWx0ZXJGb3JtLmNvbnRyb2xzLm5hbWUudmFsdWVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DYW5jZWxDbGljaygpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLXByb2Nlc3MtZmlsdGVyLWRpYWxvZ1wiPlxuICAgIDxzcGFuIG1hdC1kaWFsb2ctdGl0bGUgaWQ9XCJhZGYtcHJvY2Vzcy1maWx0ZXItZGlhbG9nLXRpdGxlXCI+XG4gICAgICAgICB7eyAnQURGX0NMT1VEX0VESVRfUFJPQ0VTU19GSUxURVIuRElBTE9HLlRJVExFJyB8IHRyYW5zbGF0ZX19XG4gICAgPC9zcGFuPlxuICAgIDxtYXQtY2FyZCBhcHBlYXJhbmNlPVwib3V0bGluZWRcIiBjbGFzcz1cImFkZi1wcm9jZXNzLWZpbHRlci1kaWFsb2ctY2FyZFwiPlxuICAgICAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImFkZi1wcm9jZXNzLWZpbHRlci1kaWFsb2ctY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIj5cbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhZGYtcHJvY2Vzcy1maWx0ZXItbmFtZVwiIFtmbG9hdExhYmVsXT1cIidhdXRvJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0FERl9DTE9VRF9FRElUX1BST0NFU1NfRklMVEVSLkZJTFRFUl9OQU1FJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmaWx0ZXJGb3JtLmNvbnRyb2xzLm5hbWVcIiBpZD1cImFkZi1maWx0ZXItbmFtZS1pZFwiPlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgPG1hdC1jYXJkLWFjdGlvbnMgY2xhc3M9J2FkZi1wcm9jZXNzLWZpbHRlci1kaWFsb2ctYWN0aW9ucyc+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cIm9uU2F2ZUNsaWNrKClcIiBpZD1cImFkZi1zYXZlLWJ1dHRvbi1pZFwiIFtkaXNhYmxlZF09XCIhZmlsdGVyRm9ybS52YWxpZFwiPlxuICAgICAgICAgICAgICAgIHt7ICdBREZfQ0xPVURfRURJVF9QUk9DRVNTX0ZJTFRFUi5ESUFMT0cuU0FWRScgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cIm9uQ2FuY2VsQ2xpY2soKVwiIGlkPVwiYWRmLWNhbmNlbC1idXR0b24taWRcIj5cbiAgICAgICAgICAgICAgIHt7ICdBREZfQ0xPVURfRURJVF9QUk9DRVNTX0ZJTFRFUi5ESUFMT0cuQ0FOQ0VMJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxuICAgIDwvbWF0LWNhcmQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -21,14 +21,13 @@ import { debounceTime, tap } from 'rxjs/operators';
|
|
|
21
21
|
import { ProcessListCloudService } from '../../../process-list/services/process-list-cloud.service';
|
|
22
22
|
import { ProcessFilterCloudAdapter } from '../../../process-list/models/process-cloud-query-request.model';
|
|
23
23
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
24
|
-
import {
|
|
24
|
+
import { TranslatePipe } from '@ngx-translate/core';
|
|
25
25
|
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
|
|
26
26
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
27
27
|
import { MatListModule } from '@angular/material/list';
|
|
28
28
|
import * as i0 from "@angular/core";
|
|
29
|
-
import * as i1 from "@
|
|
30
|
-
import * as i2 from "@angular/material/
|
|
31
|
-
import * as i3 from "@angular/material/list";
|
|
29
|
+
import * as i1 from "@angular/material/progress-spinner";
|
|
30
|
+
import * as i2 from "@angular/material/list";
|
|
32
31
|
export class ProcessFiltersCloudComponent {
|
|
33
32
|
constructor() {
|
|
34
33
|
/** (required) The application name */
|
|
@@ -266,11 +265,11 @@ export class ProcessFiltersCloudComponent {
|
|
|
266
265
|
: this.processListCloudService.getProcessCounter(filter.appName, filter.status);
|
|
267
266
|
}
|
|
268
267
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessFiltersCloudComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
269
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessFiltersCloudComponent, isStandalone: true, selector: "adf-cloud-process-filters", inputs: { appName: "appName", searchApiMethod: "searchApiMethod", filterParam: "filterParam", showIcons: "showIcons" }, outputs: { filterSelected: "filterSelected", filterClicked: "filterClicked", success: "success", error: "error", updatedFilter: "updatedFilter" }, usesOnChanges: true, ngImport: i0, template: "<mat-action-list class=\"adf-process-filters\" *ngIf=\"filters$ | async as filterList; else loading\">\n <button\n *ngFor=\"let filter of filterList\"\n mat-list-item\n (click)=\"onFilterClick(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n [class.adf-active]=\"currentFilter === filter\"\n >\n <div class=\"adf-process-filters__entry\">\n <div>\n <adf-icon\n data-automation-id=\"adf-filter-icon\"\n *ngIf=\"showIcons\"\n [value]=\"filter.icon\" />\n <span\n data-automation-id=\"adf-filter-label\"\n class=\"adf-filter-action-button__label\">\n {{ filter.name | translate }}\n </span>\n </div>\n <span\n *ngIf=\"counters[filter.key]\"\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-process-filters__entry-counter\"\n [class.adf-active]=\"isFilterUpdated(filter.key)\"\n >\n {{ counters[filter.key] }}\n </span>\n </div>\n </button>\n</mat-action-list>\n<ng-template #loading>\n <ng-container>\n <div class=\"adf-app-list-spinner\">\n <mat-spinner />\n </div>\n </ng-container>\n</ng-template>\n", styles: [".adf-process-filters{margin-right:calc(-1 * var(--adf-theme-spacing))}.adf-process-filters__entry{font-size:var(--theme-body-1-font-size);color:var(--adf-theme-foreground-text-color-054);display:flex;align-items:center;justify-content:space-between;flex:1;height:100%;gap:var(--adf-theme-spacing)}.adf-process-filters__entry:hover{color:var(--theme-primary-color)}.adf-process-filters__entry-counter{padding:0 5px;border-radius:15px}.adf-process-filters__entry-counter.adf-active{background-color:var(--theme-accent-color);color:var(--theme-accent-color-default-contrast);font-size:smaller}.adf-process-filters .adf-active .adf-process-filters__entry{color:var(--theme-primary-color)}\n"], dependencies: [{ kind: "
|
|
268
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessFiltersCloudComponent, isStandalone: true, selector: "adf-cloud-process-filters", inputs: { appName: "appName", searchApiMethod: "searchApiMethod", filterParam: "filterParam", showIcons: "showIcons" }, outputs: { filterSelected: "filterSelected", filterClicked: "filterClicked", success: "success", error: "error", updatedFilter: "updatedFilter" }, usesOnChanges: true, ngImport: i0, template: "<mat-action-list class=\"adf-process-filters\" *ngIf=\"filters$ | async as filterList; else loading\">\n <button\n *ngFor=\"let filter of filterList\"\n mat-list-item\n (click)=\"onFilterClick(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n [class.adf-active]=\"currentFilter === filter\"\n >\n <div class=\"adf-process-filters__entry\">\n <div>\n <adf-icon\n data-automation-id=\"adf-filter-icon\"\n *ngIf=\"showIcons\"\n [value]=\"filter.icon\" />\n <span\n data-automation-id=\"adf-filter-label\"\n class=\"adf-filter-action-button__label\">\n {{ filter.name | translate }}\n </span>\n </div>\n <span\n *ngIf=\"counters[filter.key]\"\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-process-filters__entry-counter\"\n [class.adf-active]=\"isFilterUpdated(filter.key)\"\n >\n {{ counters[filter.key] }}\n </span>\n </div>\n </button>\n</mat-action-list>\n<ng-template #loading>\n <ng-container>\n <div class=\"adf-app-list-spinner\">\n <mat-spinner />\n </div>\n </ng-container>\n</ng-template>\n", styles: [".adf-process-filters{margin-right:calc(-1 * var(--adf-theme-spacing))}.adf-process-filters__entry{font-size:var(--theme-body-1-font-size);color:var(--adf-theme-foreground-text-color-054);display:flex;align-items:center;justify-content:space-between;flex:1;height:100%;gap:var(--adf-theme-spacing)}.adf-process-filters__entry:hover{color:var(--theme-primary-color)}.adf-process-filters__entry-counter{padding:0 5px;border-radius:15px}.adf-process-filters__entry-counter.adf-active{background-color:var(--theme-accent-color);color:var(--theme-accent-color-default-contrast);font-size:smaller}.adf-process-filters .adf-active .adf-process-filters__entry{color:var(--theme-primary-color)}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: IconComponent, selector: "adf-icon", inputs: ["color", "fontSet", "value"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i2.MatActionList, selector: "mat-action-list", exportAs: ["matActionList"] }, { kind: "component", type: i2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
270
269
|
}
|
|
271
270
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessFiltersCloudComponent, decorators: [{
|
|
272
271
|
type: Component,
|
|
273
|
-
args: [{ selector: 'adf-cloud-process-filters', standalone: true, imports: [
|
|
272
|
+
args: [{ selector: 'adf-cloud-process-filters', standalone: true, imports: [TranslatePipe, IconComponent, NgIf, MatProgressSpinnerModule, NgForOf, MatListModule, AsyncPipe], encapsulation: ViewEncapsulation.None, template: "<mat-action-list class=\"adf-process-filters\" *ngIf=\"filters$ | async as filterList; else loading\">\n <button\n *ngFor=\"let filter of filterList\"\n mat-list-item\n (click)=\"onFilterClick(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n [class.adf-active]=\"currentFilter === filter\"\n >\n <div class=\"adf-process-filters__entry\">\n <div>\n <adf-icon\n data-automation-id=\"adf-filter-icon\"\n *ngIf=\"showIcons\"\n [value]=\"filter.icon\" />\n <span\n data-automation-id=\"adf-filter-label\"\n class=\"adf-filter-action-button__label\">\n {{ filter.name | translate }}\n </span>\n </div>\n <span\n *ngIf=\"counters[filter.key]\"\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-process-filters__entry-counter\"\n [class.adf-active]=\"isFilterUpdated(filter.key)\"\n >\n {{ counters[filter.key] }}\n </span>\n </div>\n </button>\n</mat-action-list>\n<ng-template #loading>\n <ng-container>\n <div class=\"adf-app-list-spinner\">\n <mat-spinner />\n </div>\n </ng-container>\n</ng-template>\n", styles: [".adf-process-filters{margin-right:calc(-1 * var(--adf-theme-spacing))}.adf-process-filters__entry{font-size:var(--theme-body-1-font-size);color:var(--adf-theme-foreground-text-color-054);display:flex;align-items:center;justify-content:space-between;flex:1;height:100%;gap:var(--adf-theme-spacing)}.adf-process-filters__entry:hover{color:var(--theme-primary-color)}.adf-process-filters__entry-counter{padding:0 5px;border-radius:15px}.adf-process-filters__entry-counter.adf-active{background-color:var(--theme-accent-color);color:var(--theme-accent-color-default-contrast);font-size:smaller}.adf-process-filters .adf-active .adf-process-filters__entry{color:var(--theme-primary-color)}\n"] }]
|
|
274
273
|
}], propDecorators: { appName: [{
|
|
275
274
|
type: Input
|
|
276
275
|
}], searchApiMethod: [{
|
|
@@ -290,4 +289,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
290
289
|
}], updatedFilter: [{
|
|
291
290
|
type: Output
|
|
292
291
|
}] } });
|
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWZpbHRlcnMvY29tcG9uZW50cy9wcm9jZXNzLWZpbHRlcnMvcHJvY2Vzcy1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWZpbHRlcnMvY29tcG9uZW50cy9wcm9jZXNzLWZpbHRlcnMvcHJvY2Vzcy1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhKLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV6RixPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FB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Uzs7NEZBS2xHLDRCQUE0QjtrQkFSeEMsU0FBUzsrQkFDSSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQLENBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsaUJBRzdGLGlCQUFpQixDQUFDLElBQUk7OEJBS3JDLE9BQU87c0JBRE4sS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixjQUFjO3NCQURiLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixNQUFNO2dCQUtQLE9BQU87c0JBRE4sTUFBTTtnQkFLUCxLQUFLO3NCQURKLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByb2Nlc3NGaWx0ZXJDbG91ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcm9jZXNzLWZpbHRlci1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Byb2Nlc3MtZmlsdGVyLWNsb3VkLm1vZGVsJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UsIEljb25Db21wb25lbnQsIFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJQYXJhbXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL3Rhc2svdGFzay1maWx0ZXJzL21vZGVscy9maWx0ZXItY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQcm9jZXNzTGlzdENsb3VkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb2Nlc3MtbGlzdC9zZXJ2aWNlcy9wcm9jZXNzLWxpc3QtY2xvdWQuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9jZXNzRmlsdGVyQ2xvdWRBZGFwdGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvY2Vzcy1saXN0L21vZGVscy9wcm9jZXNzLWNsb3VkLXF1ZXJ5LXJlcXVlc3QubW9kZWwnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLXByb2Nlc3MtZmlsdGVycycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBJY29uQ29tcG9uZW50LCBOZ0lmLCBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsIE5nRm9yT2YsIE1hdExpc3RNb2R1bGUsIEFzeW5jUGlwZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtZmlsdGVycy1jbG91ZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzcy1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBQcm9jZXNzRmlsdGVyc0Nsb3VkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIC8qKiAocmVxdWlyZWQpIFRoZSBhcHBsaWNhdGlvbiBuYW1lICovXG4gICAgQElucHV0KClcbiAgICBhcHBOYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiAob3B0aW9uYWwpIEZyb20gQWN0aXZpdGkgOC43LjAgZm9yd2FyZCwgdXNlIHRoZSAnUE9TVCcgbWV0aG9kIHRvIGdldCB0aGUgcHJvY2VzcyBjb3VudCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VhcmNoQXBpTWV0aG9kOiAnR0VUJyB8ICdQT1NUJyA9ICdHRVQnO1xuXG4gICAgLyoqIChvcHRpb25hbCkgVGhlIGZpbHRlciB0byBiZSBzZWxlY3RlZCBieSBkZWZhdWx0ICovXG4gICAgQElucHV0KClcbiAgICBmaWx0ZXJQYXJhbTogRmlsdGVyUGFyYW1zTW9kZWw7XG5cbiAgICAvKiogKG9wdGlvbmFsKSBUb2dnbGVzIHNob3dpbmcgYW4gaWNvbiBieSB0aGUgc2lkZSBvZiBlYWNoIGZpbHRlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0ljb25zOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgZmlsdGVyIGlzIGJlaW5nIHNlbGVjdGVkIGJhc2VkIG9uIHRoZSBmaWx0ZXJQYXJhbSBpbnB1dC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBmaWx0ZXJTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgZmlsdGVyIGlzIGJlaW5nIGNsaWNrZWQgZnJvbSB0aGUgVUkuICovXG4gICAgQE91dHB1dCgpXG4gICAgZmlsdGVyQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGZpbHRlcnMgYXJlIGxvYWRlZCBzdWNjZXNzZnVsbHkgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGFueSBlcnJvciBvY2N1cnMgd2hpbGUgbG9hZGluZyB0aGUgZmlsdGVycyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGZpbHRlciBpcyB1cGRhdGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHVwZGF0ZWRGaWx0ZXI6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBmaWx0ZXJzJDogT2JzZXJ2YWJsZTxQcm9jZXNzRmlsdGVyQ2xvdWRNb2RlbFtdPjtcbiAgICBjdXJyZW50RmlsdGVyPzogUHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWw7XG4gICAgZmlsdGVyczogUHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWxbXSA9IFtdO1xuICAgIGNvdW50ZXJzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gICAgZW5hYmxlTm90aWZpY2F0aW9uczogYm9vbGVhbjtcbiAgICBjdXJyZW50RmlsdGVyc1ZhbHVlczogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAgIHVwZGF0ZWRGaWx0ZXJzU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzRmlsdGVyQ2xvdWRTZXJ2aWNlID0gaW5qZWN0KFByb2Nlc3NGaWx0ZXJDbG91ZFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRpb25TZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0aW9uU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBDb25maWdTZXJ2aWNlID0gaW5qZWN0KEFwcENvbmZpZ1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc0xpc3RDbG91ZFNlcnZpY2UgPSBpbmplY3QoUHJvY2Vzc0xpc3RDbG91ZFNlcnZpY2UpO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZW5hYmxlTm90aWZpY2F0aW9ucyA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXQoJ25vdGlmaWNhdGlvbnMnLCB0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMuYXBwTmFtZSA9PT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0RmlsdGVycyh0aGlzLmFwcE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdFByb2Nlc3NOb3RpZmljYXRpb24oKTtcbiAgICAgICAgdGhpcy5nZXRGaWx0ZXJLZXlzQWZ0ZXJFeHRlcm5hbFJlZnJlc2hpbmcoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IGFwcE5hbWUgPSBjaGFuZ2VzWydhcHBOYW1lJ107XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGNoYW5nZXNbJ2ZpbHRlclBhcmFtJ107XG4gICAgICAgIGlmIChhcHBOYW1lPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0RmlsdGVycyhhcHBOYW1lLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyICYmIGZpbHRlci5jdXJyZW50VmFsdWUgIT09IGZpbHRlci5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEZpbHRlckFuZEVtaXQoZmlsdGVyLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGZXRjaCB0aGUgZmlsdGVyIGxpc3QgYmFzZWQgb24gYXBwTmFtZVxuICAgICAqXG4gICAgICogQHBhcmFtIGFwcE5hbWUgYXBwbGljYXRpb24gbmFtZVxuICAgICAqL1xuICAgIGdldEZpbHRlcnMoYXBwTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVycyQgPSB0aGlzLnByb2Nlc3NGaWx0ZXJDbG91ZFNlcnZpY2UuZ2V0UHJvY2Vzc0ZpbHRlcnMoYXBwTmFtZSk7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJzJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRGaWx0ZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnMgPSByZXMgfHwgW107XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RmlsdGVyQ291bnRlcnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEZpbHRlckFuZEVtaXQodGhpcy5maWx0ZXJQYXJhbSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzLmVtaXQocmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlckNvdW50ZXJzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIGNvdW50ZXIgY29sbGVjdGlvbiBmb3IgZmlsdGVyc1xuICAgICAqL1xuICAgIGluaXRGaWx0ZXJDb3VudGVycygpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzLmZvckVhY2goKGZpbHRlcikgPT4gKHRoaXMuY291bnRlcnNbZmlsdGVyLmtleV0gPSAwKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzcyB0aGUgc2VsZWN0ZWQgZmlsdGVyIGFzIG5leHRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJhbUZpbHRlciBmaWx0ZXIgbW9kZWxcbiAgICAgKi9cbiAgICBzZWxlY3RGaWx0ZXIocGFyYW1GaWx0ZXI6IEZpbHRlclBhcmFtc01vZGVsKSB7XG4gICAgICAgIGlmICghcGFyYW1GaWx0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZWZlcnJlZEZpbHRlciA9IHRoaXMuZmlsdGVycy5maW5kKChmaWx0ZXIpID0+IHBhcmFtRmlsdGVyLmlkID09PSBmaWx0ZXIuaWQpO1xuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIgPVxuICAgICAgICAgICAgcHJlZmVycmVkRmlsdGVyID8/XG4gICAgICAgICAgICB0aGlzLmZpbHRlcnMuZmluZChcbiAgICAgICAgICAgICAgICAoZmlsdGVyLCBpbmRleCkgPT5cbiAgICAgICAgICAgICAgICAgICAgcGFyYW1GaWx0ZXIuaWQgPT09IGZpbHRlci5pZCB8fFxuICAgICAgICAgICAgICAgICAgICAocGFyYW1GaWx0ZXIubmFtZSAmJiB0aGlzLmNoZWNrRmlsdGVyTmFtZXNFcXVhbGl0eShwYXJhbUZpbHRlci5uYW1lLCBmaWx0ZXIubmFtZSkpIHx8XG4gICAgICAgICAgICAgICAgICAgIChwYXJhbUZpbHRlci5rZXkgJiYgcGFyYW1GaWx0ZXIua2V5ID09PSBmaWx0ZXIua2V5KSB8fFxuICAgICAgICAgICAgICAgICAgICBwYXJhbUZpbHRlci5pbmRleCA9PT0gaW5kZXhcbiAgICAgICAgICAgICk7IC8vIGZhbGxiYWNrIHRvIHByZXNlcnZlIHRoZSBwcmV2aW91cyBiZWhhdmlvclxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGVxdWFsaXR5IG9mIHRoZSBmaWx0ZXIgbmFtZXMgYnkgdHJhbnNsYXRpbmcgdGhlIGdpdmVuIG5hbWUgc3RyaW5nc1xuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUxIHNvdXJjZSBuYW1lXG4gICAgICogQHBhcmFtIG5hbWUyIHRhcmdldCBuYW1lXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIGZpbHRlciBuYW1lcyBhcmUgZXF1YWwsIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICovXG4gICAgcHJpdmF0ZSBjaGVja0ZpbHRlck5hbWVzRXF1YWxpdHkobmFtZTE6IHN0cmluZywgbmFtZTI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0cmFuc2xhdGVkTmFtZTEgPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KG5hbWUxKTtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZE5hbWUyID0gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UuaW5zdGFudChuYW1lMik7XG5cbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWROYW1lMS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSB0cmFuc2xhdGVkTmFtZTIudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIGFuZCBlbWl0cyB0aGUgZ2l2ZW4gZmlsdGVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV3UGFyYW1GaWx0ZXIgbmV3IHBhcmFtZXRlciBmaWx0ZXJcbiAgICAgKi9cbiAgICBzZWxlY3RGaWx0ZXJBbmRFbWl0KG5ld1BhcmFtRmlsdGVyOiBGaWx0ZXJQYXJhbXNNb2RlbCkge1xuICAgICAgICBpZiAobmV3UGFyYW1GaWx0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RmlsdGVyKG5ld1BhcmFtRmlsdGVyKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VsZWN0ZWQuZW1pdCh0aGlzLmN1cnJlbnRGaWx0ZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGZpbHRlciB3aXRoIHRoZSBpZFxuICAgICAqXG4gICAgICogQHBhcmFtIGlkIGZpbHRlciBpZFxuICAgICAqL1xuICAgIHNlbGVjdEZpbHRlckJ5SWQoaWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlbGVjdEZpbHRlckFuZEVtaXQoeyBpZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIGFuZCBlbWl0cyB0aGUgY2xpY2tlZCBmaWx0ZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgZmlsdGVyIG1vZGVsXG4gICAgICovXG4gICAgb25GaWx0ZXJDbGljayhmaWx0ZXI6IFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsKSB7XG4gICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckNsaWNrZWQuZW1pdCh0aGlzLmN1cnJlbnRGaWx0ZXIpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJDb3VudGVyKHRoaXMuY3VycmVudEZpbHRlcik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRGaWx0ZXJzU2V0LmRlbGV0ZShmaWx0ZXIua2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBhcyBkZWZhdWx0IHByb2Nlc3MgZmlsdGVyIHRoZSBmaXJzdCBpbiB0aGUgbGlzdFxuICAgICAqL1xuICAgIHNlbGVjdERlZmF1bHRQcm9jZXNzRmlsdGVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNGaWx0ZXJMaXN0RW1wdHkoKSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyID0gdGhpcy5maWx0ZXJzWzBdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGN1cnJlbnQgZmlsdGVyXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBmaWx0ZXIgbW9kZWxcbiAgICAgKi9cbiAgICBnZXRDdXJyZW50RmlsdGVyKCk6IFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEZpbHRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZmlsdGVyIGxpc3QgaXMgZW1wdHlcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiBmaWx0ZXIgbGlzdCBpcyBlbXB0eSwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBpc0ZpbHRlckxpc3RFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVycyA9PT0gdW5kZWZpbmVkIHx8ICh0aGlzLmZpbHRlcnMgJiYgdGhpcy5maWx0ZXJzLmxlbmd0aCA9PT0gMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzZXQgdGhlIGZpbHRlcnNcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlc2V0RmlsdGVyKCkge1xuICAgICAgICB0aGlzLmZpbHRlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlzQWN0aXZlRmlsdGVyKGZpbHRlcjogUHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEZpbHRlci5uYW1lID09PSBmaWx0ZXIubmFtZTtcbiAgICB9XG5cbiAgICBpbml0UHJvY2Vzc05vdGlmaWNhdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwTmFtZSAmJiB0aGlzLmVuYWJsZU5vdGlmaWNhdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc0ZpbHRlckNsb3VkU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRQcm9jZXNzTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uKHRoaXMuYXBwTmFtZSlcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwMCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlckNvdW50ZXJzKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlIG92ZXIgZmlsdGVycyBhbmQgdXBkYXRlIGNvdW50ZXJzXG4gICAgICovXG4gICAgdXBkYXRlRmlsdGVyQ291bnRlcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKChmaWx0ZXI6IFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlckNvdW50ZXIoZmlsdGVyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIEdldCBjdXJyZW50IHZhbHVlIGZvciBmaWx0ZXIgYW5kIGNoZWNrIGlmIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsdGVyIGZpbHRlclxuICAgICAqL1xuICAgIHVwZGF0ZUZpbHRlckNvdW50ZXIoZmlsdGVyOiBQcm9jZXNzRmlsdGVyQ2xvdWRNb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAoIWZpbHRlcj8uc2hvd0NvdW50ZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmV0Y2hQcm9jZXNzRmlsdGVyQ291bnRlcihmaWx0ZXIpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKGZpbHRlckNvdW50ZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0lmRmlsdGVyVmFsdWVzSGFzQmVlblVwZGF0ZWQoZmlsdGVyLmtleSwgZmlsdGVyQ291bnRlcik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50ZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNvdW50ZXJzLFxuICAgICAgICAgICAgICAgICAgICBbZmlsdGVyLmtleV06IGRhdGFcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2hlY2tJZkZpbHRlclZhbHVlc0hhc0JlZW5VcGRhdGVkKGZpbHRlcktleTogc3RyaW5nLCBmaWx0ZXJWYWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXJzVmFsdWVzW2ZpbHRlcktleV0gPT09IHVuZGVmaW5lZCB8fCB0aGlzLmN1cnJlbnRGaWx0ZXJzVmFsdWVzW2ZpbHRlcktleV0gIT09IGZpbHRlclZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJzVmFsdWVzW2ZpbHRlcktleV0gPSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlZEZpbHRlci5lbWl0KGZpbHRlcktleSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRGaWx0ZXJzU2V0LmFkZChmaWx0ZXJLZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNGaWx0ZXJVcGRhdGVkKGZpbHRlck5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVkRmlsdGVyc1NldC5oYXMoZmlsdGVyTmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGZpbGVyIGtleSB3aGVuIGZpbHRlciB3YXMgcmVmcmVzaGVkIGJ5IGV4dGVybmFsIGFjdGlvblxuICAgICAqXG4gICAgICovXG4gICAgZ2V0RmlsdGVyS2V5c0FmdGVyRXh0ZXJuYWxSZWZyZXNoaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb2Nlc3NGaWx0ZXJDbG91ZFNlcnZpY2UuZmlsdGVyS2V5VG9CZVJlZnJlc2hlZCQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChmaWx0ZXJLZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVkRmlsdGVyc1NldC5kZWxldGUoZmlsdGVyS2V5KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmZXRjaFByb2Nlc3NGaWx0ZXJDb3VudGVyKGZpbHRlcjogUHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWwpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hBcGlNZXRob2QgPT09ICdQT1NUJ1xuICAgICAgICAgICAgPyB0aGlzLnByb2Nlc3NMaXN0Q2xvdWRTZXJ2aWNlLmdldFByb2Nlc3NMaXN0Q291bnRlcihuZXcgUHJvY2Vzc0ZpbHRlckNsb3VkQWRhcHRlcihmaWx0ZXIpKVxuICAgICAgICAgICAgOiB0aGlzLnByb2Nlc3NMaXN0Q2xvdWRTZXJ2aWNlLmdldFByb2Nlc3NDb3VudGVyKGZpbHRlci5hcHBOYW1lLCBmaWx0ZXIuc3RhdHVzKTtcbiAgICB9XG59XG4iLCI8bWF0LWFjdGlvbi1saXN0IGNsYXNzPVwiYWRmLXByb2Nlc3MtZmlsdGVyc1wiICpuZ0lmPVwiZmlsdGVycyQgfCBhc3luYyBhcyBmaWx0ZXJMaXN0OyBlbHNlIGxvYWRpbmdcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZmlsdGVyTGlzdFwiXG4gICAgICAgIG1hdC1saXN0LWl0ZW1cbiAgICAgICAgKGNsaWNrKT1cIm9uRmlsdGVyQ2xpY2soZmlsdGVyKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmlsdGVyLm5hbWUgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaWRdPVwiZmlsdGVyLmlkXCJcbiAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cImZpbHRlci5rZXkgKyAnX2ZpbHRlcidcIlxuICAgICAgICBbY2xhc3MuYWRmLWFjdGl2ZV09XCJjdXJyZW50RmlsdGVyID09PSBmaWx0ZXJcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1wcm9jZXNzLWZpbHRlcnNfX2VudHJ5XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxhZGYtaWNvblxuICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtZmlsdGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dJY29uc1wiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmaWx0ZXIuaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWZpbHRlci1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWZpbHRlci1hY3Rpb24tYnV0dG9uX19sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBmaWx0ZXIubmFtZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvdW50ZXJzW2ZpbHRlci5rZXldXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiZmlsdGVyLmtleSArICdfZmlsdGVyLWNvdW50ZXInXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1wcm9jZXNzLWZpbHRlcnNfX2VudHJ5LWNvdW50ZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hZGYtYWN0aXZlXT1cImlzRmlsdGVyVXBkYXRlZChmaWx0ZXIua2V5KVwiXG4gICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgY291bnRlcnNbZmlsdGVyLmtleV0gfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9idXR0b24+XG48L21hdC1hY3Rpb24tbGlzdD5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgICA8bmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWFwcC1saXN0LXNwaW5uZXJcIj5cbiAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAvPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
292
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWZpbHRlcnMvY29tcG9uZW50cy9wcm9jZXNzLWZpbHRlcnMvcHJvY2Vzcy1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWZpbHRlcnMvY29tcG9uZW50cy9wcm9jZXNzLWZpbHRlcnMvcHJvY2Vzcy1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhKLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV6RixPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FB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Ozs0RkFLaEcsNEJBQTRCO2tCQVJ4QyxTQUFTOytCQUNJLDJCQUEyQixjQUN6QixJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxpQkFHM0YsaUJBQWlCLENBQUMsSUFBSTs4QkFLckMsT0FBTztzQkFETixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixXQUFXO3NCQURWLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLGNBQWM7c0JBRGIsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBS1AsT0FBTztzQkFETixNQUFNO2dCQUtQLEtBQUs7c0JBREosTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvY2Vzc0ZpbHRlckNsb3VkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2Nlc3MtZmlsdGVyLWNsb3VkLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvY2Vzcy1maWx0ZXItY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSwgSWNvbkNvbXBvbmVudCwgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEZpbHRlclBhcmFtc01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vdGFzay90YXNrLWZpbHRlcnMvbW9kZWxzL2ZpbHRlci1jbG91ZC5tb2RlbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFByb2Nlc3NMaXN0Q2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJvY2Vzcy1saXN0L3NlcnZpY2VzL3Byb2Nlc3MtbGlzdC1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2Nlc3NGaWx0ZXJDbG91ZEFkYXB0ZXIgfSBmcm9tICcuLi8uLi8uLi9wcm9jZXNzLWxpc3QvbW9kZWxzL3Byb2Nlc3MtY2xvdWQtcXVlcnktcmVxdWVzdC5tb2RlbCc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLXByb2Nlc3MtZmlsdGVycycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVHJhbnNsYXRlUGlwZSwgSWNvbkNvbXBvbmVudCwgTmdJZiwgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLCBOZ0Zvck9mLCBNYXRMaXN0TW9kdWxlLCBBc3luY1BpcGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzLWZpbHRlcnMtY2xvdWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2Nlc3MtZmlsdGVycy1jbG91ZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0ZpbHRlcnNDbG91ZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICAvKiogKHJlcXVpcmVkKSBUaGUgYXBwbGljYXRpb24gbmFtZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwTmFtZTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogKG9wdGlvbmFsKSBGcm9tIEFjdGl2aXRpIDguNy4wIGZvcndhcmQsIHVzZSB0aGUgJ1BPU1QnIG1ldGhvZCB0byBnZXQgdGhlIHByb2Nlc3MgY291bnQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlYXJjaEFwaU1ldGhvZDogJ0dFVCcgfCAnUE9TVCcgPSAnR0VUJztcblxuICAgIC8qKiAob3B0aW9uYWwpIFRoZSBmaWx0ZXIgdG8gYmUgc2VsZWN0ZWQgYnkgZGVmYXVsdCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsdGVyUGFyYW06IEZpbHRlclBhcmFtc01vZGVsO1xuXG4gICAgLyoqIChvcHRpb25hbCkgVG9nZ2xlcyBzaG93aW5nIGFuIGljb24gYnkgdGhlIHNpZGUgb2YgZWFjaCBmaWx0ZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dJY29uczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIGZpbHRlciBpcyBiZWluZyBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgZmlsdGVyUGFyYW0gaW5wdXQuICovXG4gICAgQE91dHB1dCgpXG4gICAgZmlsdGVyU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIGZpbHRlciBpcyBiZWluZyBjbGlja2VkIGZyb20gdGhlIFVJLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZpbHRlckNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBmaWx0ZXJzIGFyZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5ICovXG4gICAgQE91dHB1dCgpXG4gICAgc3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhbnkgZXJyb3Igb2NjdXJzIHdoaWxlIGxvYWRpbmcgdGhlIGZpbHRlcnMgKi9cbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBmaWx0ZXIgaXMgdXBkYXRlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICB1cGRhdGVkRmlsdGVyOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgZmlsdGVycyQ6IE9ic2VydmFibGU8UHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWxbXT47XG4gICAgY3VycmVudEZpbHRlcj86IFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsO1xuICAgIGZpbHRlcnM6IFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsW10gPSBbXTtcbiAgICBjb3VudGVyczogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAgIGVuYWJsZU5vdGlmaWNhdGlvbnM6IGJvb2xlYW47XG4gICAgY3VycmVudEZpbHRlcnNWYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgICB1cGRhdGVkRmlsdGVyc1NldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc0ZpbHRlckNsb3VkU2VydmljZSA9IGluamVjdChQcm9jZXNzRmlsdGVyQ2xvdWRTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChUcmFuc2xhdGlvblNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnU2VydmljZSA9IGluamVjdChBcHBDb25maWdTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2Nlc3NMaXN0Q2xvdWRTZXJ2aWNlID0gaW5qZWN0KFByb2Nlc3NMaXN0Q2xvdWRTZXJ2aWNlKTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmVuYWJsZU5vdGlmaWNhdGlvbnMgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0KCdub3RpZmljYXRpb25zJywgdHJ1ZSk7XG4gICAgICAgIGlmICh0aGlzLmFwcE5hbWUgPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZpbHRlcnModGhpcy5hcHBOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluaXRQcm9jZXNzTm90aWZpY2F0aW9uKCk7XG4gICAgICAgIHRoaXMuZ2V0RmlsdGVyS2V5c0FmdGVyRXh0ZXJuYWxSZWZyZXNoaW5nKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBhcHBOYW1lID0gY2hhbmdlc1snYXBwTmFtZSddO1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSBjaGFuZ2VzWydmaWx0ZXJQYXJhbSddO1xuICAgICAgICBpZiAoYXBwTmFtZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZpbHRlcnMoYXBwTmFtZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlciAmJiBmaWx0ZXIuY3VycmVudFZhbHVlICE9PSBmaWx0ZXIucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RGaWx0ZXJBbmRFbWl0KGZpbHRlci5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmV0Y2ggdGhlIGZpbHRlciBsaXN0IGJhc2VkIG9uIGFwcE5hbWVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBOYW1lIGFwcGxpY2F0aW9uIG5hbWVcbiAgICAgKi9cbiAgICBnZXRGaWx0ZXJzKGFwcE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcnMkID0gdGhpcy5wcm9jZXNzRmlsdGVyQ2xvdWRTZXJ2aWNlLmdldFByb2Nlc3NGaWx0ZXJzKGFwcE5hbWUpO1xuXG4gICAgICAgIHRoaXMuZmlsdGVycyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0RmlsdGVyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzID0gcmVzIHx8IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdEZpbHRlckNvdW50ZXJzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RGaWx0ZXJBbmRFbWl0KHRoaXMuZmlsdGVyUGFyYW0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHJlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJDb3VudGVycygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZSBjb3VudGVyIGNvbGxlY3Rpb24gZm9yIGZpbHRlcnNcbiAgICAgKi9cbiAgICBpbml0RmlsdGVyQ291bnRlcnMoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKChmaWx0ZXIpID0+ICh0aGlzLmNvdW50ZXJzW2ZpbHRlci5rZXldID0gMCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3MgdGhlIHNlbGVjdGVkIGZpbHRlciBhcyBuZXh0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1GaWx0ZXIgZmlsdGVyIG1vZGVsXG4gICAgICovXG4gICAgc2VsZWN0RmlsdGVyKHBhcmFtRmlsdGVyOiBGaWx0ZXJQYXJhbXNNb2RlbCkge1xuICAgICAgICBpZiAoIXBhcmFtRmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmVmZXJyZWRGaWx0ZXIgPSB0aGlzLmZpbHRlcnMuZmluZCgoZmlsdGVyKSA9PiBwYXJhbUZpbHRlci5pZCA9PT0gZmlsdGVyLmlkKTtcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyID1cbiAgICAgICAgICAgIHByZWZlcnJlZEZpbHRlciA/P1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGZpbHRlciwgaW5kZXgpID0+XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtRmlsdGVyLmlkID09PSBmaWx0ZXIuaWQgfHxcbiAgICAgICAgICAgICAgICAgICAgKHBhcmFtRmlsdGVyLm5hbWUgJiYgdGhpcy5jaGVja0ZpbHRlck5hbWVzRXF1YWxpdHkocGFyYW1GaWx0ZXIubmFtZSwgZmlsdGVyLm5hbWUpKSB8fFxuICAgICAgICAgICAgICAgICAgICAocGFyYW1GaWx0ZXIua2V5ICYmIHBhcmFtRmlsdGVyLmtleSA9PT0gZmlsdGVyLmtleSkgfHxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1GaWx0ZXIuaW5kZXggPT09IGluZGV4XG4gICAgICAgICAgICApOyAvLyBmYWxsYmFjayB0byBwcmVzZXJ2ZSB0aGUgcHJldmlvdXMgYmVoYXZpb3JcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBlcXVhbGl0eSBvZiB0aGUgZmlsdGVyIG5hbWVzIGJ5IHRyYW5zbGF0aW5nIHRoZSBnaXZlbiBuYW1lIHN0cmluZ3NcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lMSBzb3VyY2UgbmFtZVxuICAgICAqIEBwYXJhbSBuYW1lMiB0YXJnZXQgbmFtZVxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiBmaWx0ZXIgbmFtZXMgYXJlIGVxdWFsLCBvdGhlcndpc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIHByaXZhdGUgY2hlY2tGaWx0ZXJOYW1lc0VxdWFsaXR5KG5hbWUxOiBzdHJpbmcsIG5hbWUyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZE5hbWUxID0gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UuaW5zdGFudChuYW1lMSk7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWROYW1lMiA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQobmFtZTIpO1xuXG4gICAgICAgIHJldHVybiB0cmFuc2xhdGVkTmFtZTEudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gdHJhbnNsYXRlZE5hbWUyLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0cyBhbmQgZW1pdHMgdGhlIGdpdmVuIGZpbHRlclxuICAgICAqXG4gICAgICogQHBhcmFtIG5ld1BhcmFtRmlsdGVyIG5ldyBwYXJhbWV0ZXIgZmlsdGVyXG4gICAgICovXG4gICAgc2VsZWN0RmlsdGVyQW5kRW1pdChuZXdQYXJhbUZpbHRlcjogRmlsdGVyUGFyYW1zTW9kZWwpIHtcbiAgICAgICAgaWYgKG5ld1BhcmFtRmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEZpbHRlcihuZXdQYXJhbUZpbHRlcik7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclNlbGVjdGVkLmVtaXQodGhpcy5jdXJyZW50RmlsdGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBmaWx0ZXIgd2l0aCB0aGUgaWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZCBmaWx0ZXIgaWRcbiAgICAgKi9cbiAgICBzZWxlY3RGaWx0ZXJCeUlkKGlkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RGaWx0ZXJBbmRFbWl0KHsgaWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0cyBhbmQgZW1pdHMgdGhlIGNsaWNrZWQgZmlsdGVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsdGVyIGZpbHRlciBtb2RlbFxuICAgICAqL1xuICAgIG9uRmlsdGVyQ2xpY2soZmlsdGVyOiBQcm9jZXNzRmlsdGVyQ2xvdWRNb2RlbCkge1xuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEZpbHRlcihmaWx0ZXIpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJDbGlja2VkLmVtaXQodGhpcy5jdXJyZW50RmlsdGVyKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmlsdGVyQ291bnRlcih0aGlzLmN1cnJlbnRGaWx0ZXIpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVkRmlsdGVyc1NldC5kZWxldGUoZmlsdGVyLmtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgYXMgZGVmYXVsdCBwcm9jZXNzIGZpbHRlciB0aGUgZmlyc3QgaW4gdGhlIGxpc3RcbiAgICAgKi9cbiAgICBzZWxlY3REZWZhdWx0UHJvY2Vzc0ZpbHRlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRmlsdGVyTGlzdEVtcHR5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlciA9IHRoaXMuZmlsdGVyc1swXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjdXJyZW50IGZpbHRlclxuICAgICAqXG4gICAgICogQHJldHVybnMgZmlsdGVyIG1vZGVsXG4gICAgICovXG4gICAgZ2V0Q3VycmVudEZpbHRlcigpOiBQcm9jZXNzRmlsdGVyQ2xvdWRNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWx0ZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGZpbHRlciBsaXN0IGlzIGVtcHR5XG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgZmlsdGVyIGxpc3QgaXMgZW1wdHksIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICovXG4gICAgaXNGaWx0ZXJMaXN0RW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcnMgPT09IHVuZGVmaW5lZCB8fCAodGhpcy5maWx0ZXJzICYmIHRoaXMuZmlsdGVycy5sZW5ndGggPT09IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0IHRoZSBmaWx0ZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSByZXNldEZpbHRlcigpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gW107XG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlciA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpc0FjdGl2ZUZpbHRlcihmaWx0ZXI6IFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWx0ZXIubmFtZSA9PT0gZmlsdGVyLm5hbWU7XG4gICAgfVxuXG4gICAgaW5pdFByb2Nlc3NOb3RpZmljYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFwcE5hbWUgJiYgdGhpcy5lbmFibGVOb3RpZmljYXRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NGaWx0ZXJDbG91ZFNlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0UHJvY2Vzc05vdGlmaWNhdGlvblN1YnNjcmlwdGlvbih0aGlzLmFwcE5hbWUpXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMDApLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJDb3VudGVycygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZSBvdmVyIGZpbHRlcnMgYW5kIHVwZGF0ZSBjb3VudGVyc1xuICAgICAqL1xuICAgIHVwZGF0ZUZpbHRlckNvdW50ZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyOiBQcm9jZXNzRmlsdGVyQ2xvdWRNb2RlbCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJDb3VudGVyKGZpbHRlcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBHZXQgY3VycmVudCB2YWx1ZSBmb3IgZmlsdGVyIGFuZCBjaGVjayBpZiB2YWx1ZSBoYXMgY2hhbmdlZFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbHRlciBmaWx0ZXJcbiAgICAgKi9cbiAgICB1cGRhdGVGaWx0ZXJDb3VudGVyKGZpbHRlcjogUHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFmaWx0ZXI/LnNob3dDb3VudGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZldGNoUHJvY2Vzc0ZpbHRlckNvdW50ZXIoZmlsdGVyKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChmaWx0ZXJDb3VudGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tJZkZpbHRlclZhbHVlc0hhc0JlZW5VcGRhdGVkKGZpbHRlci5rZXksIGZpbHRlckNvdW50ZXIpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudGVycyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jb3VudGVycyxcbiAgICAgICAgICAgICAgICAgICAgW2ZpbHRlci5rZXldOiBkYXRhXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNoZWNrSWZGaWx0ZXJWYWx1ZXNIYXNCZWVuVXBkYXRlZChmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyVmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyc1ZhbHVlc1tmaWx0ZXJLZXldID09PSB1bmRlZmluZWQgfHwgdGhpcy5jdXJyZW50RmlsdGVyc1ZhbHVlc1tmaWx0ZXJLZXldICE9PSBmaWx0ZXJWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyc1ZhbHVlc1tmaWx0ZXJLZXldID0gZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRGaWx0ZXIuZW1pdChmaWx0ZXJLZXkpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVkRmlsdGVyc1NldC5hZGQoZmlsdGVyS2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzRmlsdGVyVXBkYXRlZChmaWx0ZXJOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlZEZpbHRlcnNTZXQuaGFzKGZpbHRlck5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBmaWxlciBrZXkgd2hlbiBmaWx0ZXIgd2FzIHJlZnJlc2hlZCBieSBleHRlcm5hbCBhY3Rpb25cbiAgICAgKlxuICAgICAqL1xuICAgIGdldEZpbHRlcktleXNBZnRlckV4dGVybmFsUmVmcmVzaGluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRmlsdGVyQ2xvdWRTZXJ2aWNlLmZpbHRlcktleVRvQmVSZWZyZXNoZWQkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZmlsdGVyS2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlZEZpbHRlcnNTZXQuZGVsZXRlKGZpbHRlcktleSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmV0Y2hQcm9jZXNzRmlsdGVyQ291bnRlcihmaWx0ZXI6IFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoQXBpTWV0aG9kID09PSAnUE9TVCdcbiAgICAgICAgICAgID8gdGhpcy5wcm9jZXNzTGlzdENsb3VkU2VydmljZS5nZXRQcm9jZXNzTGlzdENvdW50ZXIobmV3IFByb2Nlc3NGaWx0ZXJDbG91ZEFkYXB0ZXIoZmlsdGVyKSlcbiAgICAgICAgICAgIDogdGhpcy5wcm9jZXNzTGlzdENsb3VkU2VydmljZS5nZXRQcm9jZXNzQ291bnRlcihmaWx0ZXIuYXBwTmFtZSwgZmlsdGVyLnN0YXR1cyk7XG4gICAgfVxufVxuIiwiPG1hdC1hY3Rpb24tbGlzdCBjbGFzcz1cImFkZi1wcm9jZXNzLWZpbHRlcnNcIiAqbmdJZj1cImZpbHRlcnMkIHwgYXN5bmMgYXMgZmlsdGVyTGlzdDsgZWxzZSBsb2FkaW5nXCI+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGZpbHRlckxpc3RcIlxuICAgICAgICBtYXQtbGlzdC1pdGVtXG4gICAgICAgIChjbGljayk9XCJvbkZpbHRlckNsaWNrKGZpbHRlcilcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpbHRlci5uYW1lIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2lkXT1cImZpbHRlci5pZFwiXG4gICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCJmaWx0ZXIua2V5ICsgJ19maWx0ZXInXCJcbiAgICAgICAgW2NsYXNzLmFkZi1hY3RpdmVdPVwiY3VycmVudEZpbHRlciA9PT0gZmlsdGVyXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtcHJvY2Vzcy1maWx0ZXJzX19lbnRyeVwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8YWRmLWljb25cbiAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWZpbHRlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93SWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZmlsdGVyLmljb25cIiAvPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1maWx0ZXItbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1maWx0ZXItYWN0aW9uLWJ1dHRvbl9fbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVyLm5hbWUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb3VudGVyc1tmaWx0ZXIua2V5XVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cImZpbHRlci5rZXkgKyAnX2ZpbHRlci1jb3VudGVyJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtcHJvY2Vzcy1maWx0ZXJzX19lbnRyeS1jb3VudGVyXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWRmLWFjdGl2ZV09XCJpc0ZpbHRlclVwZGF0ZWQoZmlsdGVyLmtleSlcIlxuICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGNvdW50ZXJzW2ZpbHRlci5rZXldIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvYnV0dG9uPlxuPC9tYXQtYWN0aW9uLWxpc3Q+XG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1hcHAtbGlzdC1zcGlubmVyXCI+XG4gICAgICAgICAgICA8bWF0LXNwaW5uZXIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|