@bizdoc/core 2.2.2 → 2.2.3

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.
@@ -80,11 +80,11 @@ export class DesignerCubeFilterComponent {
80
80
  this._destroy.complete();
81
81
  }
82
82
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: DesignerCubeFilterComponent, deps: [{ token: i1.CubeService }, { token: i2.DesignerRef }, { token: i3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
83
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: DesignerCubeFilterComponent, selector: "bizdoc-designer-cube-filter", inputs: { cube: "cube", form: "form" }, usesOnChanges: true, ngImport: i0, template: "<h2 class=\"mat-mdc-title\">{{'Filters'|translate}}</h2>\r\n<div [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngFor=\"let a of cube.axes\" [ngSwitch]=\"a.selectionMode\" [attr.data-help]=\"'axis-'+a.name\">\r\n <ng-container *ngSwitchCase=\"'Pattern'\">\r\n <input matInput autocomplete=\"off\"\r\n [pattern]=\"pattern\" [autofocus]\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title||a.name\" />\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'AxisPatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'Search'\">\r\n <input matInput autocomplete=\"off\" type=\"search\"\r\n [matAutocomplete]=\"segment\" #inp\r\n [placeholder]=\"a.title||a.name\" />\r\n <mat-autocomplete #segment [displayWith]=\"display\"\r\n (optionSelected)=\"change(a.name, $event)\">\r\n <mat-option *ngFor=\"let r of sources[a.name] | async | filter : 'value' : inp.value | slice:0:50\" [value]=\"r\">{{r.value}}</mat-option>\r\n </mat-autocomplete>\r\n <button mat-icon-button *ngIf=\"inp.value\" matSuffix aria-label=\"\" (click)=\"inp.value = ''; form.controls[a.name].setValue(null)\"><mat-icon>close</mat-icon></button>\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'AxisPatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <mat-select [formControlName]=\"a.name\" [placeholder]=\"a.title||a.name\" [multiple]=\"a.selectionMode === 'Multiple'\" *ngSwitchDefault>\r\n <mat-option *ngIf=\"a.selectionMode !== 'Multiple'\">{{'All' | translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of sources[a.name] | async\" [value]=\"r.key\">{{r.value}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n", styles: ["form{padding:8px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "aria-describedby", "panelClass", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i10.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: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SlicePipe, name: "slice" }, { kind: "pipe", type: i12.FilterPipe, name: "filter" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }] }); }
83
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: DesignerCubeFilterComponent, selector: "bizdoc-designer-cube-filter", inputs: { cube: "cube", form: "form" }, usesOnChanges: true, ngImport: i0, template: "<h2 class=\"mat-mdc-title\">{{'Filters'|translate}}</h2>\r\n<div [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngFor=\"let a of cube.axes\" [ngSwitch]=\"a.selectionMode\" [attr.data-help]=\"'axis-'+a.name\">\r\n <ng-container *ngSwitchCase=\"'Pattern'\">\r\n <input matInput autocomplete=\"off\"\r\n [pattern]=\"pattern\" [autofocus]\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title||a.name\" />\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'AxisPatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'Search'\">\r\n <input matInput autocomplete=\"off\" type=\"search\"\r\n [matAutocomplete]=\"segment\" #inp\r\n [placeholder]=\"a.title||a.name\" />\r\n <mat-autocomplete #segment [displayWith]=\"display\"\r\n (optionSelected)=\"change(a.name, $event)\">\r\n <mat-option *ngFor=\"let r of sources[a.name] | async | filter : 'value' : inp.value | slice:0:50\" [value]=\"r\">{{r.value}}</mat-option>\r\n </mat-autocomplete>\r\n <button mat-icon-button *ngIf=\"inp.value\" matSuffix aria-label=\"\" (click)=\"inp.value = ''; form.controls[a.name].setValue(null)\"><mat-icon>close</mat-icon></button>\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'AxisPatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <mat-select [formControlName]=\"a.name\" [placeholder]=\"a.title||a.name\" [multiple]=\"a.selectionMode === 'Multiple'\" *ngSwitchDefault>\r\n <mat-option *ngIf=\"a.selectionMode !== 'Multiple'\">{{'All' | translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of sources[a.name] | async\" [value]=\"r.key\">{{r.value}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "aria-describedby", "panelClass", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i10.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: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SlicePipe, name: "slice" }, { kind: "pipe", type: i12.FilterPipe, name: "filter" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }] }); }
84
84
  }
85
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: DesignerCubeFilterComponent, decorators: [{
86
86
  type: Component,
87
- args: [{ selector: 'bizdoc-designer-cube-filter', template: "<h2 class=\"mat-mdc-title\">{{'Filters'|translate}}</h2>\r\n<div [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngFor=\"let a of cube.axes\" [ngSwitch]=\"a.selectionMode\" [attr.data-help]=\"'axis-'+a.name\">\r\n <ng-container *ngSwitchCase=\"'Pattern'\">\r\n <input matInput autocomplete=\"off\"\r\n [pattern]=\"pattern\" [autofocus]\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title||a.name\" />\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'AxisPatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'Search'\">\r\n <input matInput autocomplete=\"off\" type=\"search\"\r\n [matAutocomplete]=\"segment\" #inp\r\n [placeholder]=\"a.title||a.name\" />\r\n <mat-autocomplete #segment [displayWith]=\"display\"\r\n (optionSelected)=\"change(a.name, $event)\">\r\n <mat-option *ngFor=\"let r of sources[a.name] | async | filter : 'value' : inp.value | slice:0:50\" [value]=\"r\">{{r.value}}</mat-option>\r\n </mat-autocomplete>\r\n <button mat-icon-button *ngIf=\"inp.value\" matSuffix aria-label=\"\" (click)=\"inp.value = ''; form.controls[a.name].setValue(null)\"><mat-icon>close</mat-icon></button>\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'AxisPatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <mat-select [formControlName]=\"a.name\" [placeholder]=\"a.title||a.name\" [multiple]=\"a.selectionMode === 'Multiple'\" *ngSwitchDefault>\r\n <mat-option *ngIf=\"a.selectionMode !== 'Multiple'\">{{'All' | translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of sources[a.name] | async\" [value]=\"r.key\">{{r.value}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n", styles: ["form{padding:8px}\n"] }]
87
+ args: [{ selector: 'bizdoc-designer-cube-filter', template: "<h2 class=\"mat-mdc-title\">{{'Filters'|translate}}</h2>\r\n<div [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngFor=\"let a of cube.axes\" [ngSwitch]=\"a.selectionMode\" [attr.data-help]=\"'axis-'+a.name\">\r\n <ng-container *ngSwitchCase=\"'Pattern'\">\r\n <input matInput autocomplete=\"off\"\r\n [pattern]=\"pattern\" [autofocus]\r\n [formControlName]=\"a.name\" [placeholder]=\"a.title||a.name\" />\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'AxisPatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'Search'\">\r\n <input matInput autocomplete=\"off\" type=\"search\"\r\n [matAutocomplete]=\"segment\" #inp\r\n [placeholder]=\"a.title||a.name\" />\r\n <mat-autocomplete #segment [displayWith]=\"display\"\r\n (optionSelected)=\"change(a.name, $event)\">\r\n <mat-option *ngFor=\"let r of sources[a.name] | async | filter : 'value' : inp.value | slice:0:50\" [value]=\"r\">{{r.value}}</mat-option>\r\n </mat-autocomplete>\r\n <button mat-icon-button *ngIf=\"inp.value\" matSuffix aria-label=\"\" (click)=\"inp.value = ''; form.controls[a.name].setValue(null)\"><mat-icon>close</mat-icon></button>\r\n <mat-error *ngIf=\"form.controls[a.name].invalid\">{{'AxisPatternErr' |translate}}</mat-error>\r\n </ng-container>\r\n <mat-select [formControlName]=\"a.name\" [placeholder]=\"a.title||a.name\" [multiple]=\"a.selectionMode === 'Multiple'\" *ngSwitchDefault>\r\n <mat-option *ngIf=\"a.selectionMode !== 'Multiple'\">{{'All' | translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of sources[a.name] | async\" [value]=\"r.key\">{{r.value}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n" }]
88
88
  }], ctorParameters: () => [{ type: i1.CubeService }, { type: i2.DesignerRef }, { type: i3.FormBuilder }], propDecorators: { cube: [{
89
89
  type: Input
90
90
  }], form: [{
@@ -54,4 +54,4 @@ export function programName(name) {
54
54
  replace(CAP_NAME_CHAR, (c, i) => (i > 0 && name.charAt(i - 1) !== '-' ? '-' : '') + c.toLowerCase()).
55
55
  replace(NON_NAME_CHAR, '');
56
56
  }
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjbGFyYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9hcmNoaXRlY3R1cmUvZGVjbGFyYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLFVBQVUsRUFBRSxjQUFjO0lBQzFCLGtCQUFrQixFQUFFLGFBQWE7SUFDakMsUUFBUSxFQUFFLFlBQVk7SUFDdEIsUUFBUSxFQUFFLFlBQVk7SUFDdEIsTUFBTSxFQUFFLFVBQVU7Q0FDbkIsQ0FBQztBQUNGLE1BQU0sYUFBYSxHQUFHLFNBQVMsRUFDN0IsYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUM1QixNQUFNO0FBQ04sTUFBTSxPQUFPLFdBQVc7SUFFdEIsWUFBb0IsU0FBd0IsRUFDbEMsUUFBc0IsRUFDdkIsSUFBZ0I7UUFGTCxjQUFTLEdBQVQsU0FBUyxDQUFlO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQWM7UUFDdkIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUh6QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUdMLENBQUM7SUFDOUIsSUFBSSxRQUFRLEtBQW1CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxLQUFLLEtBQXFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDckQsTUFBTSxLQUFLLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsTUFBTSxDQUFDLE9BQW9CO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBdUIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQy9CLFNBQVMsRUFBRSxDQUFDO29CQUNWLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEdBQUc7aUJBQ3BDLENBQUMsRUFBRSxNQUFNLEVBQUcsSUFBSSxDQUFDLFFBQXlCLENBQUMsUUFBUTtTQUNyRCxDQUFDLENBQUM7UUFDRixPQUF3QixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDOUMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBU0QsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFxQjtJQUN6QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFDRCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQXNCO0lBQ25ELElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDeEIsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ2pCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFDRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVk7SUFDdEMsT0FBTyxJQUFJO1FBQ1QsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7UUFDakIsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFNjb3BlVHlwZSB9IGZyb20gXCIuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tIFwiLi4vLi4vY29yZS9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IHsgQXhlc01hcCwgQ2hhcnRUeXBlLCBDdWJlRmlsdGVyLCBGaWVsZEluZm8sIEZvbGRlckNvbHVtbiwgR3VpZGVTdGVwLCBMb2NhbGl6ZWRTdHJpbmcsIFBvc2l0aW9uUG9saWN5LCBWaWV3VHlwZSB9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuZXhwb3J0IGNvbnN0IEZBTUlMWV9TVkcgPSB7XHJcbiAgXCJBenVyZVwiOiBgYXp1cmUuc3ZnYCxcclxuICAnU0FQJzogYHNhcC5zdmdgLFxyXG4gICdNZmcnOiBgcWFkLnN2Z2AsXHJcbiAgJ1ByaW9yaXR5JzogYHByaW9yaXR5LnN2Z2AsXHJcbiAgJ0FjdGl2ZSBEaXJlY3RvcnknOiBgd2luZG93cy5zdmdgLFxyXG4gICdBbWF6b24nOiBgYW1hem9uLnN2Z2AsXHJcbiAgJ0dvb2dsZSc6IGBnb29nbGUuc3ZnYCxcclxuICAnT2t0YSc6IGBva3RhLnN2Z2BcclxufTtcclxuY29uc3QgQ0FQX05BTUVfQ0hBUiA9IC9bQS1aXSsvZyxcclxuICBOT05fTkFNRV9DSEFSID0gL1teXFx3XSsvZztcclxuLyoqICovXHJcbmV4cG9ydCBjbGFzcyBEZXNpZ25lclJlZjxPID0gYW55PiB7XHJcbiAgX3VubG9jayQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Rlc2lnbmVyOiBEZXNpZ25lck1vZGVsLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudE1vZGVsLFxyXG4gICAgcHVibGljIG1vZGU6IERlc2lnbk1vZGUpIHsgfVxyXG4gIGdldCBkZXNpZ25lcigpOiBEZXNpZ25lckluZm8geyByZXR1cm4gdGhpcy5fZGVzaWduZXI7IH1cclxuICBnZXQgbW9kZWwoKTogRWxlbWVudEluZm88Tz4geyByZXR1cm4gdGhpcy5fZWxlbWVudDsgfVxyXG4gIHVubG9jaygpIHsgcmV0dXJuIHRoaXMuX3VubG9jayQuYXNPYnNlcnZhYmxlKCk7IH1cclxuICBjcmVhdGUoZWxlbWVudDogRWxlbWVudEluZm8pIHtcclxuICAgIGNvbnN0IHJlZiA9IG5ldyBEZXNpZ25lclJlZih0aGlzLl9kZXNpZ25lciwgZWxlbWVudCBhcyBFbGVtZW50TW9kZWwsICd3aWRnZXQnKTtcclxuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcclxuICAgICAgcHJvdmlkZXJzOiBbe1xyXG4gICAgICAgIHByb3ZpZGU6IERlc2lnbmVyUmVmLCB1c2VWYWx1ZTogcmVmXHJcbiAgICAgIH1dLCBwYXJlbnQ6ICh0aGlzLl9lbGVtZW50IGFzIEVsZW1lbnRNb2RlbCkuaW5qZWN0b3JcclxuICAgIH0pO1xyXG4gICAgKGVsZW1lbnQgYXMgRWxlbWVudE1vZGVsKS5pbmplY3RvciA9IGluamVjdG9yO1xyXG4gICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVzaWduZXJFbGVtZW50Q29tcG9uZW50PFQ+IHtcclxuICBtb2RlbDogRWxlbWVudEluZm88VD47XHJcbiAgbW9kZTogRGVzaWduTW9kZTtcclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgb25Db250aW51ZT8oKTtcclxuICBvbkZpbmlzaD8oKTtcclxufVxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIERlc2lnbk1vZGUgPSAnYWRkJyB8ICdlZGl0JyB8ICd3aWRnZXQnO1xyXG5leHBvcnQgZnVuY3Rpb24gY2xvbmUoZWxlbWVudDogRWxlbWVudE1vZGVsKSB7XHJcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZWxlbWVudCkpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBsb2NhbGl6ZVN0cmluZyh2YWx1ZTogTG9jYWxpemVkU3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XHJcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSlcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyh2YWx1ZSlbMF07XHJcbn1cclxuLyoqXHJcbiAqIFxyXG4gKiBAcGFyYW0gbmFtZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHByb2dyYW1OYW1lKG5hbWU6IHN0cmluZykge1xyXG4gIHJldHVybiBuYW1lLlxyXG4gICAgcmVwbGFjZSgnICcsICctJykuXHJcbiAgICByZXBsYWNlKENBUF9OQU1FX0NIQVIsIChjLCBpKSA9PiAoaSA+IDAgJiYgbmFtZS5jaGFyQXQoaSAtIDEpICE9PSAnLScgPyAnLScgOiAnJykgKyBjLnRvTG93ZXJDYXNlKCkpLlxyXG4gICAgcmVwbGFjZShOT05fTkFNRV9DSEFSLCAnJyk7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEZXNpZ25lck1vZGVsIHtcclxuICBjdXJyZW5jaWVzOiBFbGVtZW50TW9kZWxbXTtcclxuICB0eXBlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0VHlwZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGd1aWRlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICByZXBvcnRzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRSZXBvcnRzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBmb3JtczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0Rm9ybXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGN1YmVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIGpvYnM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdEN1YmVzOiBUZW1wbGF0ZUluZm9bXTtcclxuICB1dGlsaXRpZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdFV0aWxpdGllczogVGVtcGxhdGVJbmZvW107XHJcbiAgZm9sZGVyczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICByb2xlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICBydWxlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0UnVsZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIHBvbGljaWVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRQb2xpY2llczogVGVtcGxhdGVJbmZvW107XHJcbiAgdmlld3M6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdFZpZXdzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBub2RlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0Tm9kZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIHdpZGdldHM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdFdpZGdldHM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGFjdGlvbnM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdEFjdGlvbnM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGF0dHJpYnV0ZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgY29udHJvbHM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdEF0dHJpYnV0ZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIHN0YXRlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlSW5mbyB7XHJcbiAgdGVtcGxhdGU/OiBzdHJpbmc7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAga2V5Pzogc3RyaW5nO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgZmFtaWx5Pzogc3RyaW5nO1xyXG4gIGhlbHA/OiBzdHJpbmc7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICBhcmd1bWVudHM/OiBGaWVsZEluZm9bXTtcclxuICBjb25maWd1cmF0aW9uRmlsZT86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRNb2RlbDxUID0gYW55PiB7XHJcbiAgZ3JvdXBzOiBhbnlbXTtcclxuICBrZXk/OiBzdHJpbmc7XHJcbiAgZm9ybWF0Pzogc3RyaW5nO1xyXG4gIGluamVjdG9yOiBJbmplY3RvcjtcclxuICBvcmRpbmFsPzogbnVtYmVyO1xyXG4gIGhlbHA/OiBzdHJpbmc7XHJcbiAgY29uZmlndXJhdGlvbkZpbGU/OiBzdHJpbmc7XHJcbiAgdGVtcGxhdGU/OiBzdHJpbmc7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICByZXNvdXJjZVR5cGU/OiBzdHJpbmc7XHJcbiAgY29weU9mPzogc3RyaW5nO1xyXG4gIGZhbWlseT86IHN0cmluZztcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcclxuICBkcmFmdD86IGJvb2xlYW47XHJcbiAgZW1wdHk/OiBib29sZWFuO1xyXG4gIG9wdGlvbnM/OiBUO1xyXG4gIGFyZ3VtZW50cz86IEZpZWxkSW5mb1tdO1xyXG4gIHByaXZpbGVnZXM/OiBQcml2aWxlZ2VzTW9kZWw7XHJcbiAgZmlsdGVycz86IEN1YmVGaWx0ZXI7XHJcbiAgY29sdW1ucz86IEZvbGRlckNvbHVtbltdO1xyXG4gIGFub21hbHk/OiBBbm9tYWx5UG9saWN5O1xyXG4gIHZlcmI/OiBzdHJpbmc7XHJcbiAgeW91Pzogc3RyaW5nO1xyXG4gIHlvdU1hbGU/OiBzdHJpbmc7XHJcbiAgeW91RmVtYWxlPzogc3RyaW5nO1xyXG4gIHBhc3Q/OiBzdHJpbmc7XHJcbiAgcGFzdE1hbGU/OiBzdHJpbmc7XHJcbiAgcGFzdEZlbWFsZT86IHN0cmluZztcclxuICBhZGplY3RpdmU/OiBzdHJpbmc7XHJcbiAgbG9nZ2FibGU/OiBib29sZWFuO1xyXG4gIGFkamVjdGl2ZVBsdXJhbD86IHN0cmluZztcclxuICBhc3NpZ25hYmxlPzogYm9vbGVhbjtcclxuICBwb3NpdGlvbj86IFBvc2l0aW9uUG9saWN5O1xyXG4gIG11bHRpcGxlPzogYm9vbGVhbjtcclxuICBzaGFwZT86IHN0cmluZztcclxuICBncm91cD86IG51bWJlcjtcclxuICBkYXRhVHlwZT86IHN0cmluZztcclxuICBzdGVwcz86IEd1aWRlU3RlcFtdO1xyXG4gIGN1cnJlbmN5Q29kZT86IHN0cmluZztcclxuICBheGVzPzogQ3ViZUF4aXNNb2RlbFtdO1xyXG4gIHZpZXdzPzogQ3ViZVZpZXdNb2RlbFtdO1xyXG4gIGluZGljZXM/OiBDdWJlSW5kZXhNb2RlbFtdO1xyXG4gIHNjb3BlPzogU2NvcGVUeXBlO1xyXG4gIGNvbG9yPzogc3RyaW5nO1xyXG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcclxuICBydWxlcz86IFBlcm1pc3Npb25Nb2RlbFtdO1xyXG4gIHBvc2l0aW9ucz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfTtcclxuICBwYXR0ZXJucz86IFBhdHRlcm5Nb2RlbFtdO1xyXG4gIHByaW9yaXR5PzogbnVtYmVyO1xyXG4gIGN1YmVzPzogc3RyaW5nW107XHJcbiAgdmFsdWU/OiBzdHJpbmc7XHJcbiAgc2VxdWVuY2VQb2xpY3k/OiAnQm90aCcgfCAnRWl0aGVyJyB8ICdIaWdoZXInO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3ViZUluZGV4TW9kZWwge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBhY2N1bXVsYXRlPzogYm9vbGVhbjtcclxuICBoaWRkZW4/OiBib29sZWFuO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBDdWJlVmlld01vZGVsIHtcclxuICBwcml2aWxlZ2VzPzogUHJpdmlsZWdlc01vZGVsO1xyXG4gIHhBeGlzOiBzdHJpbmdbXTtcclxuICBzZXJpZXM/OiBzdHJpbmdbXTtcclxuICBmaWx0ZXJzPzogQXhlc01hcDtcclxuICBpbmRpY2VzPzogc3RyaW5nW107XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBndWlkZT86IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICB0eXBlOiBWaWV3VHlwZTtcclxuICBjaGFydFR5cGU/OiBDaGFydFR5cGU7XHJcbiAgaW5kaWNlc0NoYXJ0VHlwZT86IENoYXJ0VHlwZTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5Nb2RlbCB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBheGVzOiBBeGVzTWFwO1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgcnVsZT86IHN0cmluZztcclxuICByb2xlcz86IHN0cmluZ1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3ViZUF4aXNNb2RlbCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgZGF0YVR5cGU6IHN0cmluZztcclxuICBjb21iaW5hdGlvbj86IGJvb2xlYW47XHJcbiAgaW5kZXhhYmxlPzogYm9vbGVhbjtcclxuICBzZW5zaXRpdmU/OiBib29sZWFuO1xyXG4gIHJlc291cmNlVHlwZT86IHN0cmluZztcclxuICBzZWxlY3Rpb25Nb2RlPzogJ1NpbmdsZScgfCAnUGF0dGVybicgfCAnTXVsdGlwbGUnIHwgJ1NlYXJjaCcgfCAnTm9uZSc7XHJcbiAgZGVzY2VuZGVudE9mPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCB0eXBlIEFub21hbHlQb2xpY3kgPSAnUG9zaXRpb25zJyB8ICdSZWNpcGllbnRzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybk1vZGVsIHtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIHJlc291cmNlVHlwZT86IHN0cmluZztcclxuICBheGVzOiBBeGVzTWFwO1xyXG4gIHJ1bGU/OiBzdHJpbmc7XHJcbiAgcm9sZXM/OiBzdHJpbmdbXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25Nb2RlbCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgcnVsZT86IHN0cmluZztcclxuICByb2xlcz86IHN0cmluZ1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJpdmlsZWdlc01vZGVsIHtcclxuICBydWxlPzogc3RyaW5nO1xyXG4gIHJvbGVzPzogc3RyaW5nW107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEZXNpZ25lckluZm8ge1xyXG4gIGN1cnJlbmNpZXM6IEVsZW1lbnRJbmZvW107XHJcbiAgdHlwZXM6IEVsZW1lbnRJbmZvW107XHJcbiAgZ3VpZGVzOiBFbGVtZW50SW5mb1tdO1xyXG4gIHJlcG9ydHM6IEVsZW1lbnRJbmZvW107XHJcbiAgdFJlcG9ydHM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGZvcm1zOiBFbGVtZW50SW5mb1tdO1xyXG4gIGN1YmVzOiBFbGVtZW50SW5mb1tdO1xyXG4gIGNvbnRyb2xzOiBFbGVtZW50SW5mb1tdO1xyXG4gIHV0aWxpdGllczogRWxlbWVudEluZm9bXTtcclxuICBmb2xkZXJzOiBFbGVtZW50SW5mb1tdO1xyXG4gIG5vZGVzOiBFbGVtZW50SW5mb1tdO1xyXG4gIHJvbGVzOiBFbGVtZW50SW5mb1tdO1xyXG4gIHJ1bGVzOiBFbGVtZW50SW5mb1tdO1xyXG4gIHBvbGljaWVzOiBFbGVtZW50SW5mb1tdO1xyXG4gIHZpZXdzOiBFbGVtZW50SW5mb1tdO1xyXG4gIHdpZGdldHM6IEVsZW1lbnRJbmZvW107XHJcbiAgYWN0aW9uczogRWxlbWVudEluZm9bXTtcclxuICBzdGF0ZXM6IEVsZW1lbnRJbmZvW107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50SW5mbzxUID0gYW55PiB7XHJcbiAgZmFtaWx5Pzogc3RyaW5nO1xyXG4gIHR5cGU/OiBzdHJpbmc7XHJcbiAga2V5Pzogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0aXRsZTogTG9jYWxpemVkU3RyaW5nO1xyXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcclxuICBkcmFmdD86IGJvb2xlYW47XHJcbiAgZW1wdHk/OiBib29sZWFuO1xyXG4gIG9wdGlvbnM/OiBUO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudEZhbWlseTxUID0gYW55PiB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBlbGVtZW50czogRWxlbWVudEluZm9bXTtcclxufVxyXG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjbGFyYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9hcmNoaXRlY3R1cmUvZGVjbGFyYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLFVBQVUsRUFBRSxjQUFjO0lBQzFCLGtCQUFrQixFQUFFLGFBQWE7SUFDakMsUUFBUSxFQUFFLFlBQVk7SUFDdEIsUUFBUSxFQUFFLFlBQVk7SUFDdEIsTUFBTSxFQUFFLFVBQVU7Q0FDbkIsQ0FBQztBQUNGLE1BQU0sYUFBYSxHQUFHLFNBQVMsRUFDN0IsYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUM1QixNQUFNO0FBQ04sTUFBTSxPQUFPLFdBQVc7SUFFdEIsWUFBb0IsU0FBd0IsRUFDbEMsUUFBc0IsRUFDdkIsSUFBZ0I7UUFGTCxjQUFTLEdBQVQsU0FBUyxDQUFlO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQWM7UUFDdkIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUh6QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUdMLENBQUM7SUFDOUIsSUFBSSxRQUFRLEtBQW1CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxLQUFLLEtBQXFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDckQsTUFBTSxLQUFLLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsTUFBTSxDQUFDLE9BQW9CO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBdUIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQy9CLFNBQVMsRUFBRSxDQUFDO29CQUNWLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEdBQUc7aUJBQ3BDLENBQUMsRUFBRSxNQUFNLEVBQUcsSUFBSSxDQUFDLFFBQXlCLENBQUMsUUFBUTtTQUNyRCxDQUFDLENBQUM7UUFDRixPQUF3QixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDOUMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBU0QsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFxQjtJQUN6QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFDRCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQXNCO0lBQ25ELElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDeEIsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ2pCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFDRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVk7SUFDdEMsT0FBTyxJQUFJO1FBQ1QsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7UUFDakIsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFNjb3BlVHlwZSB9IGZyb20gXCIuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tIFwiLi4vLi4vY29yZS9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IHsgQXhlc01hcCwgQ2hhcnRUeXBlLCBDdWJlRmlsdGVyLCBGaWVsZEluZm8sIEZvbGRlckNvbHVtbiwgR3VpZGVTdGVwLCBMb2NhbGl6ZWRTdHJpbmcsIFBvc2l0aW9uUG9saWN5LCBWaWV3VHlwZSB9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuZXhwb3J0IGNvbnN0IEZBTUlMWV9TVkcgPSB7XHJcbiAgXCJBenVyZVwiOiBgYXp1cmUuc3ZnYCxcclxuICAnU0FQJzogYHNhcC5zdmdgLFxyXG4gICdNZmcnOiBgcWFkLnN2Z2AsXHJcbiAgJ1ByaW9yaXR5JzogYHByaW9yaXR5LnN2Z2AsXHJcbiAgJ0FjdGl2ZSBEaXJlY3RvcnknOiBgd2luZG93cy5zdmdgLFxyXG4gICdBbWF6b24nOiBgYW1hem9uLnN2Z2AsXHJcbiAgJ0dvb2dsZSc6IGBnb29nbGUuc3ZnYCxcclxuICAnT2t0YSc6IGBva3RhLnN2Z2BcclxufTtcclxuY29uc3QgQ0FQX05BTUVfQ0hBUiA9IC9bQS1aXSsvZyxcclxuICBOT05fTkFNRV9DSEFSID0gL1teXFx3XSsvZztcclxuLyoqICovXHJcbmV4cG9ydCBjbGFzcyBEZXNpZ25lclJlZjxPID0gYW55PiB7XHJcbiAgX3VubG9jayQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Rlc2lnbmVyOiBEZXNpZ25lck1vZGVsLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudE1vZGVsLFxyXG4gICAgcHVibGljIG1vZGU6IERlc2lnbk1vZGUpIHsgfVxyXG4gIGdldCBkZXNpZ25lcigpOiBEZXNpZ25lckluZm8geyByZXR1cm4gdGhpcy5fZGVzaWduZXI7IH1cclxuICBnZXQgbW9kZWwoKTogRWxlbWVudEluZm88Tz4geyByZXR1cm4gdGhpcy5fZWxlbWVudDsgfVxyXG4gIHVubG9jaygpIHsgcmV0dXJuIHRoaXMuX3VubG9jayQuYXNPYnNlcnZhYmxlKCk7IH1cclxuICBjcmVhdGUoZWxlbWVudDogRWxlbWVudEluZm8pIHtcclxuICAgIGNvbnN0IHJlZiA9IG5ldyBEZXNpZ25lclJlZih0aGlzLl9kZXNpZ25lciwgZWxlbWVudCBhcyBFbGVtZW50TW9kZWwsICd3aWRnZXQnKTtcclxuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcclxuICAgICAgcHJvdmlkZXJzOiBbe1xyXG4gICAgICAgIHByb3ZpZGU6IERlc2lnbmVyUmVmLCB1c2VWYWx1ZTogcmVmXHJcbiAgICAgIH1dLCBwYXJlbnQ6ICh0aGlzLl9lbGVtZW50IGFzIEVsZW1lbnRNb2RlbCkuaW5qZWN0b3JcclxuICAgIH0pO1xyXG4gICAgKGVsZW1lbnQgYXMgRWxlbWVudE1vZGVsKS5pbmplY3RvciA9IGluamVjdG9yO1xyXG4gICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVzaWduZXJFbGVtZW50Q29tcG9uZW50PFQ+IHtcclxuICBtb2RlbDogRWxlbWVudEluZm88VD47XHJcbiAgbW9kZTogRGVzaWduTW9kZTtcclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgb25Db250aW51ZT8oKTtcclxuICBvbkZpbmlzaD8oKTtcclxufVxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIERlc2lnbk1vZGUgPSAnYWRkJyB8ICdlZGl0JyB8ICd3aWRnZXQnO1xyXG5leHBvcnQgZnVuY3Rpb24gY2xvbmUoZWxlbWVudDogRWxlbWVudE1vZGVsKSB7XHJcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZWxlbWVudCkpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBsb2NhbGl6ZVN0cmluZyh2YWx1ZTogTG9jYWxpemVkU3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XHJcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSlcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyh2YWx1ZSlbMF07XHJcbn1cclxuLyoqXHJcbiAqIFxyXG4gKiBAcGFyYW0gbmFtZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHByb2dyYW1OYW1lKG5hbWU6IHN0cmluZykge1xyXG4gIHJldHVybiBuYW1lLlxyXG4gICAgcmVwbGFjZSgnICcsICctJykuXHJcbiAgICByZXBsYWNlKENBUF9OQU1FX0NIQVIsIChjLCBpKSA9PiAoaSA+IDAgJiYgbmFtZS5jaGFyQXQoaSAtIDEpICE9PSAnLScgPyAnLScgOiAnJykgKyBjLnRvTG93ZXJDYXNlKCkpLlxyXG4gICAgcmVwbGFjZShOT05fTkFNRV9DSEFSLCAnJyk7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEZXNpZ25lck1vZGVsIHtcclxuICBjdXJyZW5jaWVzOiBFbGVtZW50TW9kZWxbXTtcclxuICB0eXBlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0VHlwZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGd1aWRlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICByZXBvcnRzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRSZXBvcnRzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBmb3JtczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0Rm9ybXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGN1YmVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIGpvYnM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgc291cmNlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0Q3ViZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIHV0aWxpdGllczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0VXRpbGl0aWVzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBmb2xkZXJzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHJvbGVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHJ1bGVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRSdWxlczogVGVtcGxhdGVJbmZvW107XHJcbiAgcG9saWNpZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdFBvbGljaWVzOiBUZW1wbGF0ZUluZm9bXTtcclxuICB2aWV3czogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0Vmlld3M6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIG5vZGVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHROb2RlczogVGVtcGxhdGVJbmZvW107XHJcbiAgd2lkZ2V0czogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0V2lkZ2V0czogVGVtcGxhdGVJbmZvW107XHJcbiAgYWN0aW9uczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0QWN0aW9uczogVGVtcGxhdGVJbmZvW107XHJcbiAgYXR0cmlidXRlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICBjb250cm9sczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0QXR0cmlidXRlczogVGVtcGxhdGVJbmZvW107XHJcbiAgc3RhdGVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVJbmZvIHtcclxuICB0ZW1wbGF0ZT86IHN0cmluZztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBrZXk/OiBzdHJpbmc7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBmYW1pbHk/OiBzdHJpbmc7XHJcbiAgaGVscD86IHN0cmluZztcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIGFyZ3VtZW50cz86IEZpZWxkSW5mb1tdO1xyXG4gIGNvbmZpZ3VyYXRpb25GaWxlPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudE1vZGVsPFQgPSBhbnk+IHtcclxuICByZWd1bGFyRXhwcmVzc2lvbj86IHN0cmluZztcclxuICBncm91cHM6IGFueVtdO1xyXG4gIGtleT86IHN0cmluZztcclxuICBmb3JtYXQ/OiBzdHJpbmc7XHJcbiAgaW5qZWN0b3I6IEluamVjdG9yO1xyXG4gIG9yZGluYWw/OiBudW1iZXI7XHJcbiAgaGVscD86IHN0cmluZztcclxuICBjb25maWd1cmF0aW9uRmlsZT86IHN0cmluZztcclxuICB0ZW1wbGF0ZT86IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIHJlc291cmNlVHlwZT86IHN0cmluZztcclxuICBjb3B5T2Y/OiBzdHJpbmc7XHJcbiAgZmFtaWx5Pzogc3RyaW5nO1xyXG4gIHR5cGU/OiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGRyYWZ0PzogYm9vbGVhbjtcclxuICBlbXB0eT86IGJvb2xlYW47XHJcbiAgb3B0aW9ucz86IFQ7XHJcbiAgYXJndW1lbnRzPzogRmllbGRJbmZvW107XHJcbiAgcHJpdmlsZWdlcz86IFByaXZpbGVnZXNNb2RlbDtcclxuICBmaWx0ZXJzPzogQ3ViZUZpbHRlcjtcclxuICBjb2x1bW5zPzogRm9sZGVyQ29sdW1uW107XHJcbiAgYW5vbWFseT86IEFub21hbHlQb2xpY3k7XHJcbiAgdmVyYj86IHN0cmluZztcclxuICB5b3U/OiBzdHJpbmc7XHJcbiAgeW91TWFsZT86IHN0cmluZztcclxuICB5b3VGZW1hbGU/OiBzdHJpbmc7XHJcbiAgcGFzdD86IHN0cmluZztcclxuICBwYXN0TWFsZT86IHN0cmluZztcclxuICBwYXN0RmVtYWxlPzogc3RyaW5nO1xyXG4gIGFkamVjdGl2ZT86IHN0cmluZztcclxuICBsb2dnYWJsZT86IGJvb2xlYW47XHJcbiAgYWRqZWN0aXZlUGx1cmFsPzogc3RyaW5nO1xyXG4gIGFzc2lnbmFibGU/OiBib29sZWFuO1xyXG4gIHBvc2l0aW9uPzogUG9zaXRpb25Qb2xpY3k7XHJcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xyXG4gIHNoYXBlPzogc3RyaW5nO1xyXG4gIGdyb3VwPzogbnVtYmVyO1xyXG4gIGRhdGFUeXBlPzogc3RyaW5nO1xyXG4gIHN0ZXBzPzogR3VpZGVTdGVwW107XHJcbiAgY3VycmVuY3lDb2RlPzogc3RyaW5nO1xyXG4gIGF4ZXM/OiBDdWJlQXhpc01vZGVsW107XHJcbiAgdmlld3M/OiBDdWJlVmlld01vZGVsW107XHJcbiAgaW5kaWNlcz86IEN1YmVJbmRleE1vZGVsW107XHJcbiAgc2NvcGU/OiBTY29wZVR5cGU7XHJcbiAgY29sb3I/OiBzdHJpbmc7XHJcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xyXG4gIHJ1bGVzPzogUGVybWlzc2lvbk1vZGVsW107XHJcbiAgcG9zaXRpb25zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9O1xyXG4gIHBhdHRlcm5zPzogUGF0dGVybk1vZGVsW107XHJcbiAgcHJpb3JpdHk/OiBudW1iZXI7XHJcbiAgY3ViZXM/OiBzdHJpbmdbXTtcclxuICB2YWx1ZT86IHN0cmluZztcclxuICBzZXF1ZW5jZVBvbGljeT86ICdCb3RoJyB8ICdFaXRoZXInIHwgJ0hpZ2hlcic7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBDdWJlSW5kZXhNb2RlbCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGFjY3VtdWxhdGU/OiBib29sZWFuO1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgdGl0bGU6IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEN1YmVWaWV3TW9kZWwge1xyXG4gIHByaXZpbGVnZXM/OiBQcml2aWxlZ2VzTW9kZWw7XHJcbiAgeEF4aXM6IHN0cmluZ1tdO1xyXG4gIHNlcmllcz86IHN0cmluZ1tdO1xyXG4gIGZpbHRlcnM/OiBBeGVzTWFwO1xyXG4gIGluZGljZXM/OiBzdHJpbmdbXTtcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGd1aWRlPzogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIHR5cGU6IFZpZXdUeXBlO1xyXG4gIGNoYXJ0VHlwZT86IENoYXJ0VHlwZTtcclxuICBpbmRpY2VzQ2hhcnRUeXBlPzogQ2hhcnRUeXBlO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybk1vZGVsIHtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGF4ZXM6IEF4ZXNNYXA7XHJcbiAgaGlkZGVuPzogYm9vbGVhbjtcclxuICBydWxlPzogc3RyaW5nO1xyXG4gIHJvbGVzPzogc3RyaW5nW107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBDdWJlQXhpc01vZGVsIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBkYXRhVHlwZTogc3RyaW5nO1xyXG4gIGNvbWJpbmF0aW9uPzogYm9vbGVhbjtcclxuICBpbmRleGFibGU/OiBib29sZWFuO1xyXG4gIHNlbnNpdGl2ZT86IGJvb2xlYW47XHJcbiAgcmVzb3VyY2VUeXBlPzogc3RyaW5nO1xyXG4gIHNlbGVjdGlvbk1vZGU/OiAnU2luZ2xlJyB8ICdQYXR0ZXJuJyB8ICdNdWx0aXBsZScgfCAnU2VhcmNoJyB8ICdOb25lJztcclxuICBkZXNjZW5kZW50T2Y/OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IHR5cGUgQW5vbWFseVBvbGljeSA9ICdQb3NpdGlvbnMnIHwgJ1JlY2lwaWVudHMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuTW9kZWwge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgcmVzb3VyY2VUeXBlPzogc3RyaW5nO1xyXG4gIGF4ZXM6IEF4ZXNNYXA7XHJcbiAgcnVsZT86IHN0cmluZztcclxuICByb2xlcz86IHN0cmluZ1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUGVybWlzc2lvbk1vZGVsIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBydWxlPzogc3RyaW5nO1xyXG4gIHJvbGVzPzogc3RyaW5nW107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBQcml2aWxlZ2VzTW9kZWwge1xyXG4gIHJ1bGU/OiBzdHJpbmc7XHJcbiAgcm9sZXM/OiBzdHJpbmdbXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERlc2lnbmVySW5mbyB7XHJcbiAgY3VycmVuY2llczogRWxlbWVudEluZm9bXTtcclxuICB0eXBlczogRWxlbWVudEluZm9bXTtcclxuICBndWlkZXM6IEVsZW1lbnRJbmZvW107XHJcbiAgcmVwb3J0czogRWxlbWVudEluZm9bXTtcclxuICB0UmVwb3J0czogVGVtcGxhdGVJbmZvW107XHJcbiAgZm9ybXM6IEVsZW1lbnRJbmZvW107XHJcbiAgY3ViZXM6IEVsZW1lbnRJbmZvW107XHJcbiAgY29udHJvbHM6IEVsZW1lbnRJbmZvW107XHJcbiAgdXRpbGl0aWVzOiBFbGVtZW50SW5mb1tdO1xyXG4gIGZvbGRlcnM6IEVsZW1lbnRJbmZvW107XHJcbiAgbm9kZXM6IEVsZW1lbnRJbmZvW107XHJcbiAgcm9sZXM6IEVsZW1lbnRJbmZvW107XHJcbiAgcnVsZXM6IEVsZW1lbnRJbmZvW107XHJcbiAgcG9saWNpZXM6IEVsZW1lbnRJbmZvW107XHJcbiAgdmlld3M6IEVsZW1lbnRJbmZvW107XHJcbiAgd2lkZ2V0czogRWxlbWVudEluZm9bXTtcclxuICBhY3Rpb25zOiBFbGVtZW50SW5mb1tdO1xyXG4gIHN0YXRlczogRWxlbWVudEluZm9bXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRJbmZvPFQgPSBhbnk+IHtcclxuICBmYW1pbHk/OiBzdHJpbmc7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICBrZXk/OiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBMb2NhbGl6ZWRTdHJpbmc7XHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGRyYWZ0PzogYm9vbGVhbjtcclxuICBlbXB0eT86IGJvb2xlYW47XHJcbiAgb3B0aW9ucz86IFQ7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50RmFtaWx5PFQgPSBhbnk+IHtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGVsZW1lbnRzOiBFbGVtZW50SW5mb1tdO1xyXG59XHJcbiJdfQ==
@@ -25,6 +25,7 @@ import { UtilityDesignComponent } from "./elements/utility.component";
25
25
  import { ViewDesignComponent } from "./elements/view.component";
26
26
  import { WidgetDesignComponent } from "./elements/widget.component";
27
27
  import { JobDesignComponent } from "./elements/job.component";
28
+ import { SourceDesignComponent } from "./elements/source.component";
28
29
  import * as i0 from "@angular/core";
29
30
  import * as i1 from "../../core/slots/router.service";
30
31
  import * as i2 from "../../core/translate.service";
@@ -69,7 +70,8 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
69
70
  { elements: r.views, type: 'Views', comp: ViewDesignComponent, templates: r.tViews },
70
71
  { elements: r.guides, type: 'Guides', comp: GuideDesignComponent, templates: [{ title: this._translate.get('Guide') }] },
71
72
  { elements: r.cubes, type: 'Cubes', comp: CubeDesignComponent, templates: r.tCubes },
72
- { elements: r.jobs, type: 'Jobs', comp: JobDesignComponent, templates: r.tCubes },
73
+ { elements: r.jobs, type: 'Jobs', comp: JobDesignComponent, templates: [] },
74
+ { elements: r.sources, type: 'Sources', comp: SourceDesignComponent, templates: [] },
73
75
  { elements: r.folders, type: 'Folders', comp: FolderDesignComponent, templates: [{ title: this._translate.get('Folder') }] },
74
76
  { elements: r.roles, type: 'Roles', comp: RoleDesignComponent, templates: [{ title: this._translate.get('Role') }] },
75
77
  { elements: r.states, type: 'States', comp: StateDesignComponent, templates: [{ title: this._translate.get('State') }] },
@@ -290,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
290
292
  type: HostListener,
291
293
  args: ['keydown', ['$event']]
292
294
  }] } });
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9hcmNoaXRlY3R1cmUvZGVzaWduZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9hcmNoaXRlY3R1cmUvZGVzaWduZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFNL0MsT0FBTyxFQUE2QyxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBRXhILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxN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QUUsQ0FBQztnQkFDekIsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDO2dCQUN4QixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUM7Z0JBQ3pCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELFNBQVMsS0FBSyxDQUFDLEdBQUcsVUFBNEI7WUFDNUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDOzhHQXpQVSw4QkFBOEI7a0dBQTlCLDhCQUE4Qix3SkM1QzNDLDRuR0FtREEscXJKRFhjLENBQUMsYUFBYSxDQUFDOztBQUloQiw4QkFBOEI7SUFEMUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLCtCQUErQixFQUFFLENBQUM7R0FDekMsOEJBQThCLENBMFAxQzs7MkZBMVBZLDhCQUE4QjtrQkFQMUMsU0FBUztpQ0FHSSxDQUFDLGFBQWEsQ0FBQyxRQUNyQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7aVBBK0V2QixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcclxuaW1wb3J0IHsgdGFwIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgaXRlbUFuaW1hdGlvbiB9IGZyb20gXCIuLi8uLi9jb3JlL2FuaW1hdGlvbnNcIjtcclxuaW1wb3J0IHsgVXRpbGl0eUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlL2Jhc2VcIjtcclxuaW1wb3J0IHsgT3BlblBvbGljeSB9IGZyb20gXCIuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgQml6RG9jIH0gZnJvbSBcIi4uLy4uL2NvcmUvZGVjb3JhdG9yc1wiO1xyXG5pbXBvcnQgeyBjbGVhbnVwIH0gZnJvbSBcIi4uLy4uL2NvcmUvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQYW5lc1JvdXRlciB9IGZyb20gXCIuLi8uLi9jb3JlL3Nsb3RzL3JvdXRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBVdGlsaXR5UmVmIH0gZnJvbSBcIi4uL3V0aWxpdHktcmVmXCI7XHJcbmltcG9ydCB7IEVsZW1lbnRNb2RlbCwgRGVzaWduZXJNb2RlbCwgVGVtcGxhdGVJbmZvLCBwcm9ncmFtTmFtZSwgRGVzaWduZXJSZWYsIGNsb25lLCBEZXNpZ25Nb2RlIH0gZnJvbSBcIi4vZGVjbGFyYXRpb25zXCI7XHJcbmltcG9ydCB7IERlc2lnbmVyVHlwZUVsZW1lbnRDb21wb25lbnQgfSBmcm9tIFwiLi9kZXNpZ25lci5iYXNlXCI7XHJcbmltcG9ydCB7IEFjdGlvbkRlc2lnbmVyQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvYWN0aW9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBBdHRyaWJ1dGVEZXNpZ25Db21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy9hdHRyaWJ1dGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvbnRyb2xEZXNpZ25Db21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy9jb250cm9sLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDdWJlRGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvY3ViZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRm9sZGVyRGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvZm9sZGVyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBGb3JtRGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvZm9ybS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgR3VpZGVEZXNpZ25Db21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy9ndWlkZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgTm9kZURlc2lnbmVyQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvbm9kZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUG9saWN5RGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvcG9saWN5LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBSZXBvcnREZXNpZ25lckNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL3JlcG9ydC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUm9sZURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL3JvbGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFJ1bGVEZXNpZ25Db21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy9ydWxlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBTdGF0ZURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL3N0YXRlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBUeXBlRGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvdHlwZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgVXRpbGl0eURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL3V0aWxpdHkuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFZpZXdEZXNpZ25Db21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy92aWV3LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBXaWRnZXREZXNpZ25Db21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy93aWRnZXQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEpvYkRlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2pvYi5jb21wb25lbnRcIjtcclxuY29uc3QgQ0hBUkFDVEVSID0gL1tcXHddfFNwYWNlYmFyLztcclxuLyoqICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnZGVzaWduZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydkZXNpZ25lci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtpdGVtQW5pbWF0aW9uXSxcclxuICBob3N0OiB7IHRhYmluZGV4OiAnMCcgfVxyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdiaXpkb2MtY29uZmlndXJhdGlvbi1kZXNpZ25lcicgfSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25EZXNpZ25lckNvbXBvbmVudCBpbXBsZW1lbnRzIFV0aWxpdHlDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgc2VhcmNoQnk6IHN0cmluZztcclxuICBsb2FkaW5nID0gdHJ1ZTtcclxuICBzYXZpbmcgPSBmYWxzZTtcclxuICBkaXJ0eSA9IGZhbHNlO1xyXG4gIHNlY3Rpb25zOiBTZWN0aW9uW107XHJcbiAgbW9kZWw6IERlc2lnbmVyTW9kZWw7XHJcbiAgcHJpdmF0ZSBfdHlwaW5nVGltZXI6IGFueTtcclxuICBwcml2YXRlIF9jbGVhclRpbWVyOiBhbnk7XHJcbiAgcHJpdmF0ZSBfc2VjdGlvbnM6IFNlY3Rpb25bXTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3BhbmVzOiBQYW5lc1JvdXRlcixcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3BzOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcclxuICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgX3JlZjogVXRpbGl0eVJlZjxib29sZWFuLCBEZXNpZ25lck1vZGVsLCBEZXNpZ25lck1vZGVsPikgeyB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZWYucG9wdWxhdGUoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSByO1xyXG4gICAgICB0aGlzLnNlY3Rpb25zID0gdGhpcy5fc2VjdGlvbnMgPSBbXHJcbiAgICAgICAgeyBlbGVtZW50czogci5mb3JtcywgdHlwZTogJ0Zvcm1zJywgY29tcDogRm9ybURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiByLnRGb3JtcyB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIuYWN0aW9ucywgdHlwZTogJ0FjdGlvbnMnLCBjb21wOiBBY3Rpb25EZXNpZ25lckNvbXBvbmVudCwgdGVtcGxhdGVzOiByLnRBY3Rpb25zIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5yZXBvcnRzLCB0eXBlOiAnUmVwb3J0cycsIGNvbXA6IFJlcG9ydERlc2lnbmVyQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudFJlcG9ydHMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLndpZGdldHMsIHR5cGU6ICdXaWRnZXRzJywgY29tcDogV2lkZ2V0RGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudFdpZGdldHMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnZpZXdzLCB0eXBlOiAnVmlld3MnLCBjb21wOiBWaWV3RGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudFZpZXdzIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5ndWlkZXMsIHR5cGU6ICdHdWlkZXMnLCBjb21wOiBHdWlkZURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiBbeyB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnR3VpZGUnKSB9XSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIuY3ViZXMsIHR5cGU6ICdDdWJlcycsIGNvbXA6IEN1YmVEZXNpZ25Db21wb25lbnQsIHRlbXBsYXRlczogci50Q3ViZXMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLmpvYnMsIHR5cGU6ICdKb2JzJywgY29tcDogSm9iRGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudEN1YmVzIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5mb2xkZXJzLCB0eXBlOiAnRm9sZGVycycsIGNvbXA6IEZvbGRlckRlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiBbeyB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnRm9sZGVyJykgfV0gfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnJvbGVzLCB0eXBlOiAnUm9sZXMnLCBjb21wOiBSb2xlRGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IFt7IHRpdGxlOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdSb2xlJykgfV0gfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnN0YXRlcywgdHlwZTogJ1N0YXRlcycsIGNvbXA6IFN0YXRlRGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IFt7IHRpdGxlOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdTdGF0ZScpIH1dIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci51dGlsaXRpZXMsIHR5cGU6ICdUb29scycsIGNvbXA6IFV0aWxpdHlEZXNpZ25Db21wb25lbnQsIHRlbXBsYXRlczogci50VXRpbGl0aWVzIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci50eXBlcywgdHlwZTogJ1R5cGVzJywgY29tcDogVHlwZURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiByLnRUeXBlcyB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIubm9kZXMsIHR5cGU6ICdOb2RlcycsIGNvbXA6IE5vZGVEZXNpZ25lckNvbXBvbmVudCwgdGVtcGxhdGVzOiByLnROb2RlcyB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIuYXR0cmlidXRlcywgdHlwZTogJ0F0dHJpYnV0ZXMnLCBjb21wOiBBdHRyaWJ1dGVEZXNpZ25Db21wb25lbnQsIHRlbXBsYXRlczogci50QXR0cmlidXRlcyB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIucG9saWNpZXMsIHR5cGU6ICdQb2xpY2llcycsIGNvbXA6IFBvbGljeURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiByLnRQb2xpY2llcyB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIuY29udHJvbHMsIHR5cGU6ICdDb250cm9scycsIGNvbXA6IENvbnRyb2xEZXNpZ25Db21wb25lbnQsIHRlbXBsYXRlczogW10gfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnJ1bGVzLCB0eXBlOiAnUnVsZXMnLCBjb21wOiBSdWxlRGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudFJ1bGVzIH0sXHJcbiAgICAgIF07XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaChzID0+XHJcbiAgICAgICAgcy5lbGVtZW50cy5mb3JFYWNoKGUgPT4ge1xyXG4gICAgICAgICAgaWYgKCFlLm9wdGlvbnMpIGUub3B0aW9ucyA9IHt9O1xyXG5cclxuICAgICAgICAgIGUuaW5qZWN0b3IgPSB0aGlzLl9jcmVhdGVJbmplY3RvcihlLCAnd2lkZ2V0Jyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICAgIC8vIHR5cGluZyBrZXlkb3duIGxpc3RlbmVyXHJcbiAgICB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8RWxlbWVudE1vZGVsW10+KSB7XHJcbiAgICBjb25zdCByYW5nZSA9IGV2ZW50LmNvbnRhaW5lci5kYXRhLnNsaWNlKFxyXG4gICAgICBNYXRoLm1pbihldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpLFxyXG4gICAgICBNYXRoLm1heChldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpXHJcbiAgICApLCBmaWxlID0gcmFuZ2VbMF0uY29uZmlndXJhdGlvbkZpbGU7XHJcbiAgICBpZlxyXG4gICAgICAvLyBhY3Jvc3MgZmlsZXNcclxuICAgICAgKHJhbmdlLnNsaWNlKDEpLnNvbWUoZSA9PiBlLmNvbmZpZ3VyYXRpb25GaWxlICE9PSBmaWxlKSkge1xyXG4gICAgICAvLyBzdGFydCBvcmRpbmFsXHJcbiAgICAgIGxldCBpID0gZXZlbnQuY29udGFpbmVyLmRhdGFbZXZlbnQuY3VycmVudEluZGV4XS5vcmRpbmFsIHx8IC0xO1xyXG4gICAgICAvLyBzZXQgb3JkaW5hbCB0byBpdGVtcyBpbiByYW5nZVxyXG4gICAgICByYW5nZS5mb3JFYWNoKGUgPT4gZS5vcmRpbmFsID0gaSsrKTtcclxuICAgICAgLy8gaW5jcmVhc2Ugb3RoZXIgaGlnaGVyIHRoYW4gbGFzdCBpbiByYW5nZVxyXG4gICAgICBldmVudC5jb250YWluZXIuZGF0YS5maWx0ZXIoZSA9PiBlLm9yZGluYWwgJiYgZS5vcmRpbmFsID4gaSkuZm9yRWFjaChlID0+IGUub3JkaW5hbCArPSAxKTtcclxuICAgIH0gZWxzZSAvLyBuYXRpdmUgb3JkZXIgaW4gY29sbGVjdGlvblxyXG4gICAgICByYW5nZS5mb3JFYWNoKGUgPT4gZS5vcmRpbmFsID0gbnVsbCk7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEN0cmwtcyBzYXZlLCBzZWFyY2hcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuY3RybEtleSAmJiAoZXZlbnQua2V5ID09PSAnUycgfHwgZXZlbnQua2V5ID09PSAncycpKSB7XHJcbiAgICAgIHRoaXMuZGlydHkgJiYgdGhpcy5zYXZlKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaEJ5ICYmIGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHRoaXMuY2xlYXJTZWFyY2goKTtcclxuICAgIGVsc2UgaWYgKGV2ZW50LmNvZGUuc3RhcnRzV2l0aCgnS2V5JykgfHwgZXZlbnQua2V5ID09ICdTcGFjZScpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3R5cGluZ1RpbWVyKTtcclxuICAgICAgLy9jbGVhclRpbWVvdXQodGhpcy5fY2xlYXJUaW1lcik7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnkgPSB0aGlzLnNlYXJjaEJ5ID8gdGhpcy5zZWFyY2hCeSArIGV2ZW50LmtleSA6IGV2ZW50LmtleTtcclxuICAgICAgdGhpcy5fdHlwaW5nVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+XHJcbiAgICAgICAgdGhpcy5zZWN0aW9ucyA9IHRoaXMuX3NlYXJjaCh0aGlzLnNlYXJjaEJ5KSwgMTUwKTtcclxuICAgIH1cclxuICB9XHJcbiAgY2xlYXJTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaEJ5ID0gbnVsbDtcclxuICAgIHRoaXMuc2VjdGlvbnMgPSB0aGlzLl9zZWN0aW9ucztcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLl90eXBpbmdUaW1lcik7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NlYXJjaCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzZWN0aW9uczogU2VjdGlvbltdID0gW107XHJcbiAgICB0aGlzLl9zZWN0aW9ucy5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICBjb25zdCBlbGVtZW50cyA9IHMuZWxlbWVudHMuXHJcbiAgICAgICAgZmlsdGVyKGUgPT4gKGUudGl0bGUgfHwgZS5uYW1lKS50b0xvd2VyQ2FzZSgpLlxyXG4gICAgICAgICAgaW5kZXhPZih2YWx1ZSkgPiAtMSk7XHJcbiAgICAgIGlmIChlbGVtZW50cy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCB7IGNvbXAsIHRlbXBsYXRlcywgdHlwZSB9ID0gcztcclxuICAgICAgICBzZWN0aW9ucy5wdXNoKHsgZWxlbWVudHMsIGNvbXAsIHRlbXBsYXRlcywgdHlwZSB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvL3RoaXMuX2NsZWFyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VhcmNoQnkgPSBudWxsLCA1MDAwKTtcclxuICAgIHJldHVybiBzZWN0aW9ucztcclxuICB9XHJcbiAgcHJpdmF0ZSBfaW5zZXJ0KHNlY3Rpb246IFNlY3Rpb24sIGVsZW1lbnQ6IEVsZW1lbnRNb2RlbCwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgbGV0IGkgPSBlbGVtZW50Lm5hbWUubGFzdEluZGV4T2YoJ18nKSxcclxuICAgICAgaiA9IGVsZW1lbnQudGl0bGUubGFzdEluZGV4T2YoJyAnKSxcclxuICAgICAgbiA9IDAsIG5hbWUsIHRpdGxlO1xyXG4gICAgZG8ge1xyXG4gICAgICBuKys7XHJcbiAgICAgIG5hbWUgPSAoaSA8IDAgfHwgaXNOYU4ocGFyc2VJbnQoZWxlbWVudC5uYW1lLnN1YnN0cmluZyhpICsgMSkpKSA/IGVsZW1lbnQubmFtZSA6IGVsZW1lbnQubmFtZS5zdWJzdHJpbmcoMCwgaSkpICsgJ18nICsgbjtcclxuICAgICAgdGl0bGUgPSAoaiA8IDAgfHwgaXNOYU4ocGFyc2VJbnQoZWxlbWVudC50aXRsZS5zdWJzdHJpbmcoaiArIDEpKSkgPyBlbGVtZW50LnRpdGxlIDogZWxlbWVudC50aXRsZS5zdWJzdHJpbmcoMCwgaikpICsgJyAnICsgbjtcclxuICAgIH1cclxuICAgIHdoaWxlIChzZWN0aW9uLmVsZW1lbnRzLmZpbmQoZSA9PiBlLm5hbWUgPT09IG5hbWUgfHwgZS50aXRsZSA9PT0gdGl0bGUpKTtcclxuICAgIGVsZW1lbnQubmFtZSA9IG5hbWUsIGVsZW1lbnQudGl0bGUgPSB0aXRsZTtcclxuXHJcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuX2NyZWF0ZUluamVjdG9yKGVsZW1lbnQsICd3aWRnZXQnKTtcclxuICAgIGVsZW1lbnQuaW5qZWN0b3IgPSBpbmplY3RvcjtcclxuICAgIHRoaXMuX29wZW4oZWxlbWVudCwgc2VjdGlvbiwgJ2FkZCcpLnRoZW4oKCkgPT5cclxuICAgICAgc2VjdGlvbi5lbGVtZW50cy5zcGxpY2UoaW5kZXggKyAxLCAwLCBlbGVtZW50KVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfb3BlbihlbGVtZW50OiBFbGVtZW50TW9kZWwsXHJcbiAgICBzZWN0aW9uOiBTZWN0aW9uLFxyXG4gICAgbW9kZTogRGVzaWduTW9kZSwgdGl0bGU/OiBzdHJpbmcpIHtcclxuICAgIGxldCBlY2xvbmUgPSB7IC4uLmVsZW1lbnQgfTtcclxuICAgIGRlbGV0ZSBlY2xvbmUuaW5qZWN0b3I7XHJcbiAgICBlY2xvbmUgPSBjbG9uZShlY2xvbmUpOyAvLyBkZWVwXHJcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuX2NyZWF0ZUluamVjdG9yKGVjbG9uZSwgbW9kZSk7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT5cclxuICAgICAgdGhpcy5fcGFuZXMubmF2aWdhdGU8RGVzaWduZXJUeXBlRWxlbWVudENvbXBvbmVudD4oc2VjdGlvbi5jb21wLCB7XHJcbiAgICAgICAgcG9saWN5OiBtb2RlID09PSAnYWRkJyA/IE9wZW5Qb2xpY3kuRGlhbG9nIHwgT3BlblBvbGljeS5TdHJldGNoIDpcclxuICAgICAgICAgIE9wZW5Qb2xpY3kuVGFiIHwgT3BlblBvbGljeS5Ub2dnbGUgfCBPcGVuUG9saWN5LkRlZmVyLFxyXG4gICAgICBncm91cDogdGhpcy5fdHJhbnNsYXRlLmdldChzZWN0aW9uLnR5cGUpLFxyXG4gICAgICAvL3RpdGxlLFxyXG4gICAgICBpbmplY3RvcjogaW5qZWN0b3JcclxuICAgIH0pLnRoZW4ocGFuZSA9PiB7XHJcbiAgICAgIHBhbmUuaW5zdGFuY2UuZGVzaWduZXIub25TYXZlLnN1YnNjcmliZShlbCA9PiB7XHJcbiAgICAgICAgaWYgKGVsKSB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQsIGVsKTtcclxuICAgICAgICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gICAgICAgICAgcmVzb2x2ZShlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgcmVqZWN0KCk7XHJcbiAgICAgICAgcGFuZS5jbG9zZSgpO1xyXG4gICAgICB9KTtcclxuICAgICAgcGFuZS5jbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCkpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuICBwcml2YXRlIF9jcmVhdGVJbmplY3RvcihlbGVtZW50OiBFbGVtZW50TW9kZWw8YW55PiwgbW9kZTogRGVzaWduTW9kZSkge1xyXG4gICAgY29uc3QgcmVmID0gbmV3IERlc2lnbmVyUmVmKHRoaXMubW9kZWwsIGVsZW1lbnQsIG1vZGUpO1xyXG5cclxuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcclxuICAgICAgcHJvdmlkZXJzOiBbe1xyXG4gICAgICAgIHByb3ZpZGU6IERlc2lnbmVyUmVmLCB1c2VWYWx1ZTogcmVmXHJcbiAgICAgIH1dLCBwYXJlbnQ6IHRoaXMuX2luamVjdG9yXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBpbmplY3RvcjtcclxuICB9XHJcbiAgYWRkKHNlY3Rpb246IFNlY3Rpb24sIG1lbnU6IE1hdE1lbnVUcmlnZ2VyLCBldnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAoc2VjdGlvbi50ZW1wbGF0ZXMubGVuZ3RoID4gMSlcclxuICAgICAgbWVudS5vcGVuTWVudSgpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlKHNlY3Rpb24sIHNlY3Rpb24udGVtcGxhdGVzWzBdKTtcclxuICAgIH1cclxuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuICBjcmVhdGUoc2VjdGlvbjogU2VjdGlvbiwgdGVtcGxhdGU6IFRlbXBsYXRlSW5mbykge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgLi4udGVtcGxhdGUsXHJcbiAgICAgIG5hbWU6IHByb2dyYW1OYW1lKHRlbXBsYXRlLmtleSB8fCB0ZW1wbGF0ZS50aXRsZSksXHJcbiAgICAgIGRyYWZ0OiB0cnVlLFxyXG4gICAgICBvcHRpb25zOiB7fVxyXG4gICAgfSBhcyBFbGVtZW50TW9kZWw7XHJcbiAgICB0aGlzLl9pbnNlcnQoc2VjdGlvbiwgZWxlbWVudCwgc2VjdGlvbi5lbGVtZW50cy5sZW5ndGgpO1xyXG4gIH1cclxuICByZW1vdmUoc2VjdGlvbjogU2VjdGlvbiwgZWxlbWVudDogRWxlbWVudE1vZGVsKSB7XHJcbiAgICBzZWN0aW9uLmVsZW1lbnRzLnJlbW92ZShlbGVtZW50KTtcclxuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gIH1cclxuICBjb3B5KHNlY3Rpb246IFNlY3Rpb24sIGVsZW1lbnQ6IEVsZW1lbnRNb2RlbCkge1xyXG4gICAgbGV0IGVjbG9uZSA9IHtcclxuICAgICAgLi4uZWxlbWVudCxcclxuICAgICAgY29weU9mOiBlbGVtZW50Lm5hbWUsXHJcbiAgICAgIGRyYWZ0OiB0cnVlXHJcbiAgICB9O1xyXG4gICAgZGVsZXRlIGVjbG9uZS5pbmplY3RvcjtcclxuICAgIGRlbGV0ZSBlY2xvbmUucmVzb3VyY2VUeXBlO1xyXG4gICAgZWNsb25lID0gY2xvbmUoZWNsb25lKTsgLy8gZGVlcFxyXG4gICAgdGhpcy5faW5zZXJ0KHNlY3Rpb24sIGVjbG9uZSwgc2VjdGlvbi5lbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpKTtcclxuICB9XHJcbiAgZWRpdChlbGVtZW50OiBFbGVtZW50TW9kZWwsIHNlY3Rpb246IFNlY3Rpb24pIHtcclxuICAgIHRoaXMuX29wZW4oZWxlbWVudCwgc2VjdGlvbiwgJ2VkaXQnKTtcclxuICB9XHJcbiAgdG9nZ2xlRGlzYWJsZWQoZWxlbWVudDogRWxlbWVudE1vZGVsKSB7XHJcbiAgICBlbGVtZW50LmRpc2FibGVkID0gIWVsZW1lbnQuZGlzYWJsZWQ7XHJcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgc2F2ZSgpIHtcclxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHsgY29udHJvbHMsIGF0dHJpYnV0ZXMsIHBvbGljaWVzLCBhY3Rpb25zLCBjdWJlcywgZm9sZGVycywgZm9ybXMsIGd1aWRlcywgcmVwb3J0cywgcm9sZXMsIHJ1bGVzLCBzdGF0ZXMsIHR5cGVzLCB1dGlsaXRpZXMsIHZpZXdzLCB3aWRnZXRzLCBub2RlcyB9ID0gdGhpcy5tb2RlbDtcclxuICAgIGNvbnN0IG1vZGVsID0ge1xyXG4gICAgICBhY3Rpb25zOiBzdHJpcChhY3Rpb25zKSxcclxuICAgICAgY3ViZXM6IHN0cmlwKGN1YmVzKSxcclxuICAgICAgZm9sZGVyczogc3RyaXAoZm9sZGVycyksXHJcbiAgICAgIGZvcm1zOiBzdHJpcChmb3JtcyksXHJcbiAgICAgIGd1aWRlczogc3RyaXAoZ3VpZGVzKSxcclxuICAgICAgcmVwb3J0czogc3RyaXAocmVwb3J0cyksXHJcbiAgICAgIHJvbGVzOiBzdHJpcChyb2xlcyksXHJcbiAgICAgIHJ1bGVzOiBzdHJpcChydWxlcyksXHJcbiAgICAgIHBvbGljaWVzOiBzdHJpcChwb2xpY2llcyksXHJcbiAgICAgIHN0YXRlczogc3RyaXAoc3RhdGVzKSxcclxuICAgICAgdHlwZXM6IHN0cmlwKHR5cGVzKSxcclxuICAgICAgdXRpbGl0aWVzOiBzdHJpcCh1dGlsaXRpZXMpLFxyXG4gICAgICB2aWV3czogc3RyaXAodmlld3MpLFxyXG4gICAgICBub2Rlczogc3RyaXAobm9kZXMpLFxyXG4gICAgICB3aWRnZXRzOiBzdHJpcCh3aWRnZXRzKSxcclxuICAgICAgY29udHJvbHM6IHN0cmlwKGNvbnRyb2xzKSxcclxuICAgICAgYXR0cmlidXRlczogc3RyaXAoYXR0cmlidXRlcylcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5fcmVmLmV4ZWN1dGUoXHJcbiAgICAgIG1vZGVsIGFzIGFueSkucGlwZSh0YXAoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3BzLnRvYXN0KCdDaGFuZ2VzU2F2ZWQnKTtcclxuICAgICAgICAgIGFwcGx5KHBvbGljaWVzLCBhY3Rpb25zLCBjdWJlcywgZm9sZGVycywgZm9ybXMsIGd1aWRlcywgcmVwb3J0cywgcm9sZXMsIHJ1bGVzLCBzdGF0ZXMsIHR5cGVzLCB1dGlsaXRpZXMsIHZpZXdzLCB3aWRnZXRzKTtcclxuICAgICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2VcclxuICAgICAgICAgIHRoaXMuX3Nlc3Npb24ucmVmcmVzaCgpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH0sIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9wcy5lcnJvcigpO1xyXG4gICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG4gICAgZnVuY3Rpb24gc3RyaXAoZWxlbWVudHM6IEVsZW1lbnRNb2RlbFtdKSB7XHJcbiAgICAgIHJldHVybiBlbGVtZW50cy5tYXAoZSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHsgLi4uZSB9O1xyXG4gICAgICAgIGRlbGV0ZSBlbGVtZW50LmluamVjdG9yO1xyXG4gICAgICAgIGRlbGV0ZSBlbGVtZW50LmFyZ3VtZW50cztcclxuICAgICAgICByZXR1cm4gY2xlYW51cChlbGVtZW50KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBhcHBseSguLi5jb2xsZWN0aW9uOiBFbGVtZW50TW9kZWxbXVtdKSB7XHJcbiAgICAgIGNvbGxlY3Rpb24uZm9yRWFjaChzID0+IHMuZm9yRWFjaChlID0+IGRlbGV0ZSBlLmRyYWZ0KSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbmludGVyZmFjZSBTZWN0aW9uIHtcclxuICBjb21wOiBDb21wb25lbnRUeXBlPGFueT47XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIGVsZW1lbnRzOiBFbGVtZW50TW9kZWxbXTtcclxuICB0ZW1wbGF0ZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG59XHJcbiIsIjxtYXQtdG9vbGJhcj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cIiFkaXJ0eSB8fCBsb2FkaW5nIHx8IHNhdmluZ1wiIFtiaXpkb2NUb29sdGlwXT1cIidTYXZlJ3x0cmFuc2xhdGVcIj48bWF0LWljb24+c2F2ZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCIgW2Rpc2FibGVkXT1cIiFzZWFyY2hCeVwiIFtiaXpkb2NUb29sdGlwXT1cIidDbGVhcid8dHJhbnNsYXRlXCI+PG1hdC1pY29uPnNlYXJjaF9vZmY8L21hdC1pY29uPjwvYnV0dG9uPlxyXG48L21hdC10b29sYmFyPlxyXG48bWF0LXByb2dyZXNzLWJhciBbbW9kZV09XCJsb2FkaW5nID8gJ2J1ZmZlcicgOiAnaW5kZXRlcm1pbmF0ZSdcIiBbc3R5bGUudmlzaWJpbGl0eV09XCJsb2FkaW5nID8gJ3Zpc2libGUnOidoaWRkZW4nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG48Yml6ZG9jLW5vbmUgKm5nSWY9XCJsb2FkaW5nXCIgdGl0bGU9XCJTZXR0aW5nVGhpbmdzVXBcIiBbc3VidGl0bGVdPVwiUGxlYXNlV2FpdFwiIGljb249XCJhcmNoaXRlY3R1cmVcIj48L2JpemRvYy1ub25lPlxyXG48c2VjdGlvbiAqbmdGb3I9XCJsZXQgcyBvZiBzZWN0aW9uc1wiPlxyXG4gIDxoMiBjbGFzcz1cIm1hdC1tZGMtdGl0bGVcIj57e3MudHlwZSB8IHRyYW5zbGF0ZX19PC9oMj5cclxuICA8IS0tPGhyIC8+LS0+XHJcbiAgPGRpdiBjbGFzcz1cImVsZW1lbnRzXCIgY2RrRHJvcExpc3QgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIiBbY2RrRHJvcExpc3REYXRhXT1cInMuZWxlbWVudHNcIiAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxyXG4gICAgPG1hdC1jYXJkICpuZ0Zvcj1cImxldCBlIG9mIHMuZWxlbWVudHNcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZS5kaXNhYmxlZFwiIGNka0RyYWcgY2RrRHJhZ1Jvb3RFbGVtZW50PVwiLm1hdC1tZGMtY2FyZC10aXRsZVwiPlxyXG4gICAgICA8IS0tIEBpdGVtLS0+XHJcbiAgICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgPG1hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAge3tlLnRpdGxlfGxvY2FsaXplZFN0cmluZ319XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICA8bWF0LWljb24gW2JpemRvY1Rvb2x0aXBdPVwiZS5oZWxwXCIgW2JpemRvY1Rvb2x0aXBEdXJhdGlvbl09XCI2MDAwXCIgKm5nSWY9XCJlLmhlbHBcIj5oZWxwX291dGxpbmU8L21hdC1pY29uPlxyXG4gICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgPG1hdC1jYXJkLXN1YnRpdGxlPlxyXG4gICAgICAgICAge3tlLm5hbWV9fVxyXG4gICAgICAgIDwvbWF0LWNhcmQtc3VidGl0bGU+XHJcbiAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cInMuY29tcDsgaW5qZWN0b3I6IGUuaW5qZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPG1hdC1jYXJkLWFjdGlvbnMgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjb3B5KHMsIGUpXCIgKm5nSWY9XCIhZS5jb3B5T2ZcIiBbYml6ZG9jVG9vbHRpcF09XCInQ29weSd8dHJhbnNsYXRlXCI+PG1hdC1pY29uPmZpbGVfY29weTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlKHMsIGUpXCIgKm5nSWY9XCJlLmRyYWZ0IHx8IGUuZW1wdHlcIiBbYml6ZG9jVG9vbHRpcF09XCInRGlzY2FyZCd8dHJhbnNsYXRlXCI+PG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlRGlzYWJsZWQoZSlcIiBbYml6ZG9jVG9vbHRpcF09XCIoZS5kaXNhYmxlZCA/ICdFbmFibGUnIDogJ0Rpc2FibGUnKXx0cmFuc2xhdGVcIj48bWF0LWljb24+e3tlLmRpc2FibGVkID8gJ3Zpc2liaWxpdHknIDogJ3Zpc2liaWxpdHlfb2ZmJ319PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJlZGl0KGUsIHMpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1NldHRpbmdzJ3x0cmFuc2xhdGVcIj48bWF0LWljb24+c2V0dGluZ3M8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWRkLWVsZW1lbnRcIiBtYXRSaXBwbGUgKGNsaWNrKT1cImFkZChzLCBtZW51VHJpZ2dlciwgJGV2ZW50KVwiICpuZ0lmPVwicy50ZW1wbGF0ZXM/Lmxlbmd0aFwiPlxyXG4gICAgICA8c3BhbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwidGVtcGxhdGVNZW51XCIgI21lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIj48L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uPjxtYXQtaWNvbiBbYml6ZG9jVG9vbHRpcF09XCInTmV3J3x0cmFuc2xhdGVcIiBkaXNhYmxlUmlwcGxlPVwidHJ1ZVwiPmFkZDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgIDxtYXQtbWVudSAjdGVtcGxhdGVNZW51PlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgdCBvZiBzLnRlbXBsYXRlc1wiIChjbGljayk9XCJjcmVhdGUocywgdClcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidC5mYW1pbHlcIj5cclxuICAgICAgICAgICAge3t0LmZhbWlseX19XHJcbiAgICAgICAgICAgICZuYnNwOy0mbmJzcDtcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICB7e3QudGl0bGV9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1tZW51PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuIl19
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9hcmNoaXRlY3R1cmUvZGVzaWduZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9hcmNoaXRlY3R1cmUvZGVzaWduZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFNL0MsT0FBTyxFQUE2QyxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBRXhILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ3BFLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQztBQUNsQyxNQUFNO0FBUUMsSUFBTSw4QkFBOEIsR0FBcEMsTUFBTSw4QkFBOEI7SUFVekMsWUFDVSxNQUFtQixFQUNuQixVQUE0QixFQUM1QixHQUFrQixFQUNsQixRQUF3QixFQUN4QixRQUFvQyxFQUNwQyxTQUFtQixFQUNuQixJQUF1RDtRQU52RCxXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsYUFBUSxHQUFSLFFBQVEsQ0FBNEI7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFtRDtRQWZqRSxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFVBQUssR0FBRyxLQUFLLENBQUM7SUFhdUQsQ0FBQztJQUN0RSxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUc7Z0JBQy9CLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BGLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7Z0JBQzlGLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7Z0JBQzlGLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7Z0JBQzVGLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BGLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUN4SCxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO2dCQUNwRixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7Z0JBQzNFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtnQkFDcEYsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQzVILEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUNwSCxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDeEgsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRTtnQkFDL0YsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtnQkFDcEYsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtnQkFDdEYsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRTtnQkFDeEcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtnQkFDL0YsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO2dCQUN2RixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO2FBQ3JGLENBQUM7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUN4QixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPO29CQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUUvQixDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUNILENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUNILDBCQUEwQjtRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQWtDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FDbEQsRUFBRSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO1FBQ3JDO1FBQ0UsZUFBZTtTQUNkLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ3pELGdCQUFnQjtZQUNoQixJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQy9ELGdDQUFnQztZQUNoQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLDJDQUEyQztZQUMzQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztTQUMzRjthQUFNLDZCQUE2QjtZQUNsQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN2QyxlQUFlLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUNEOzs7T0FHRztJQUVILG1CQUFtQixDQUFDLEtBQW9CO1FBQ3RDLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDN0QsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN6QjthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVE7WUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDbEUsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLE9BQU8sRUFBRTtZQUM3RCxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2hDLGlDQUFpQztZQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUN0RSxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQy9CLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNPLE9BQU8sQ0FBQyxLQUFhO1FBQzNCLE1BQU0sUUFBUSxHQUFjLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN6QixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUTtnQkFDekIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUU7Z0JBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDbkIsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUNwRDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsa0VBQWtFO1FBQ2xFLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDTyxPQUFPLENBQUMsT0FBZ0IsRUFBRSxPQUFxQixFQUFFLEtBQWE7UUFDcEUsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQ25DLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFDbEMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDO1FBQ3JCLEdBQUc7WUFDRCxDQUFDLEVBQUUsQ0FBQztZQUNKLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ3pILEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQzlILFFBQ00sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxFQUFFO1FBQ3pFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRTNDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQzVDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUMvQyxDQUFDO0lBQ0osQ0FBQztJQUNPLEtBQUssQ0FBQyxPQUFxQixFQUNqQyxPQUFnQixFQUNoQixJQUFnQixFQUFFLEtBQWM7UUFDaEMsSUFBSSxNQUFNLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQzVCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUN2QixNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTztRQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUErQixPQUFPLENBQUMsSUFBSSxFQUFFO1lBQy9ELE1BQU0sRUFBRSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0QsVUFBVSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLO1lBQ3pELEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3hDLFFBQVE7WUFDUixRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDM0MsSUFBSSxFQUFFLEVBQUU7b0JBQ04sTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO29CQUNsQixPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ2I7O29CQUNJLE1BQU0sRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBQ08sZUFBZSxDQUFDLE9BQTBCLEVBQUUsSUFBZ0I7UUFDbEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFdkQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUMvQixTQUFTLEVBQUUsQ0FBQztvQkFDVixPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHO2lCQUNwQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzNCLENBQUMsQ0FBQztRQUNILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxHQUFHLENBQUMsT0FBZ0IsRUFBRSxJQUFvQixFQUFFLEdBQVU7UUFDcEQsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzlCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNiO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVDO1FBQ0QsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxNQUFNLENBQUMsT0FBZ0IsRUFBRSxRQUFzQjtRQUM3QyxNQUFNLE9BQU8sR0FBRztZQUNkLEdBQUcsUUFBUTtZQUNYLElBQUksRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ2pELEtBQUssRUFBRSxJQUFJO1lBQ1gsT0FBTyxFQUFFLEVBQUU7U0FDSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxNQUFNLENBQUMsT0FBZ0IsRUFBRSxPQUFxQjtRQUM1QyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSSxDQUFDLE9BQWdCLEVBQUUsT0FBcUI7UUFDMUMsSUFBSSxNQUFNLEdBQUc7WUFDWCxHQUFHLE9BQU87WUFDVixNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDcEIsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3ZCLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQztRQUMzQixNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsSUFBSSxDQUFDLE9BQXFCLEVBQUUsT0FBZ0I7UUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxjQUFjLENBQUMsT0FBcUI7UUFDbEMsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDckMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUk7UUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEssTUFBTSxLQUFLLEdBQUc7WUFDWixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN2QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNuQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN2QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNuQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNyQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN2QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNuQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNuQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUN6QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNyQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNuQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUMzQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNuQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNuQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN2QixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUN6QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQztTQUM5QixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FDdEIsS0FBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNyQixJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUMvQixLQUFLLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN6SCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEMsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7WUFDckIsQ0FBQztTQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ04sU0FBUyxLQUFLLENBQUMsUUFBd0I7WUFDckMsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN0QixNQUFNLE9BQU8sR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQztnQkFDeEIsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDO2dCQUN6QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxTQUFTLEtBQUssQ0FBQyxHQUFHLFVBQTRCO1lBQzVDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQzs4R0ExUFUsOEJBQThCO2tHQUE5Qiw4QkFBOEIsd0pDN0MzQyw0bkdBbURBLHFySkRWYyxDQUFDLGFBQWEsQ0FBQzs7QUFJaEIsOEJBQThCO0lBRDFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSwrQkFBK0IsRUFBRSxDQUFDO0dBQ3pDLDhCQUE4QixDQTJQMUM7OzJGQTNQWSw4QkFBOEI7a0JBUDFDLFNBQVM7aUNBR0ksQ0FBQyxhQUFhLENBQUMsUUFDckIsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO2lQQWdGdkIsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RyYWctZHJvcFwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdG9yLCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGl0ZW1BbmltYXRpb24gfSBmcm9tIFwiLi4vLi4vY29yZS9hbmltYXRpb25zXCI7XHJcbmltcG9ydCB7IFV0aWxpdHlDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS9iYXNlXCI7XHJcbmltcG9ydCB7IE9wZW5Qb2xpY3kgfSBmcm9tIFwiLi4vLi4vY29yZS9jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gXCIuLi8uLi9jb3JlL2RlY29yYXRvcnNcIjtcclxuaW1wb3J0IHsgY2xlYW51cCB9IGZyb20gXCIuLi8uLi9jb3JlL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUGFuZXNSb3V0ZXIgfSBmcm9tIFwiLi4vLi4vY29yZS9zbG90cy9yb3V0ZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVXRpbGl0eVJlZiB9IGZyb20gXCIuLi91dGlsaXR5LXJlZlwiO1xyXG5pbXBvcnQgeyBFbGVtZW50TW9kZWwsIERlc2lnbmVyTW9kZWwsIFRlbXBsYXRlSW5mbywgcHJvZ3JhbU5hbWUsIERlc2lnbmVyUmVmLCBjbG9uZSwgRGVzaWduTW9kZSB9IGZyb20gXCIuL2RlY2xhcmF0aW9uc1wiO1xyXG5pbXBvcnQgeyBEZXNpZ25lclR5cGVFbGVtZW50Q29tcG9uZW50IH0gZnJvbSBcIi4vZGVzaWduZXIuYmFzZVwiO1xyXG5pbXBvcnQgeyBBY3Rpb25EZXNpZ25lckNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2FjdGlvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQXR0cmlidXRlRGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvYXR0cmlidXRlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDb250cm9sRGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvY29udHJvbC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ3ViZURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2N1YmUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEZvbGRlckRlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2ZvbGRlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRm9ybURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2Zvcm0uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEd1aWRlRGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvZ3VpZGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IE5vZGVEZXNpZ25lckNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL25vZGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFBvbGljeURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL3BvbGljeS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUmVwb3J0RGVzaWduZXJDb21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy9yZXBvcnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFJvbGVEZXNpZ25Db21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy9yb2xlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBSdWxlRGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvcnVsZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgU3RhdGVEZXNpZ25Db21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy9zdGF0ZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgVHlwZURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL3R5cGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFV0aWxpdHlEZXNpZ25Db21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy91dGlsaXR5LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBWaWV3RGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvdmlldy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgV2lkZ2V0RGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvd2lkZ2V0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBKb2JEZXNpZ25Db21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy9qb2IuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFNvdXJjZURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL3NvdXJjZS5jb21wb25lbnRcIjtcclxuY29uc3QgQ0hBUkFDVEVSID0gL1tcXHddfFNwYWNlYmFyLztcclxuLyoqICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnZGVzaWduZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydkZXNpZ25lci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtpdGVtQW5pbWF0aW9uXSxcclxuICBob3N0OiB7IHRhYmluZGV4OiAnMCcgfVxyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdiaXpkb2MtY29uZmlndXJhdGlvbi1kZXNpZ25lcicgfSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25EZXNpZ25lckNvbXBvbmVudCBpbXBsZW1lbnRzIFV0aWxpdHlDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgc2VhcmNoQnk6IHN0cmluZztcclxuICBsb2FkaW5nID0gdHJ1ZTtcclxuICBzYXZpbmcgPSBmYWxzZTtcclxuICBkaXJ0eSA9IGZhbHNlO1xyXG4gIHNlY3Rpb25zOiBTZWN0aW9uW107XHJcbiAgbW9kZWw6IERlc2lnbmVyTW9kZWw7XHJcbiAgcHJpdmF0ZSBfdHlwaW5nVGltZXI6IGFueTtcclxuICBwcml2YXRlIF9jbGVhclRpbWVyOiBhbnk7XHJcbiAgcHJpdmF0ZSBfc2VjdGlvbnM6IFNlY3Rpb25bXTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3BhbmVzOiBQYW5lc1JvdXRlcixcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3BzOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcclxuICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgX3JlZjogVXRpbGl0eVJlZjxib29sZWFuLCBEZXNpZ25lck1vZGVsLCBEZXNpZ25lck1vZGVsPikgeyB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZWYucG9wdWxhdGUoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSByO1xyXG4gICAgICB0aGlzLnNlY3Rpb25zID0gdGhpcy5fc2VjdGlvbnMgPSBbXHJcbiAgICAgICAgeyBlbGVtZW50czogci5mb3JtcywgdHlwZTogJ0Zvcm1zJywgY29tcDogRm9ybURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiByLnRGb3JtcyB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIuYWN0aW9ucywgdHlwZTogJ0FjdGlvbnMnLCBjb21wOiBBY3Rpb25EZXNpZ25lckNvbXBvbmVudCwgdGVtcGxhdGVzOiByLnRBY3Rpb25zIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5yZXBvcnRzLCB0eXBlOiAnUmVwb3J0cycsIGNvbXA6IFJlcG9ydERlc2lnbmVyQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudFJlcG9ydHMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLndpZGdldHMsIHR5cGU6ICdXaWRnZXRzJywgY29tcDogV2lkZ2V0RGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudFdpZGdldHMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnZpZXdzLCB0eXBlOiAnVmlld3MnLCBjb21wOiBWaWV3RGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudFZpZXdzIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5ndWlkZXMsIHR5cGU6ICdHdWlkZXMnLCBjb21wOiBHdWlkZURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiBbeyB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnR3VpZGUnKSB9XSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIuY3ViZXMsIHR5cGU6ICdDdWJlcycsIGNvbXA6IEN1YmVEZXNpZ25Db21wb25lbnQsIHRlbXBsYXRlczogci50Q3ViZXMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLmpvYnMsIHR5cGU6ICdKb2JzJywgY29tcDogSm9iRGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IFtdIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5zb3VyY2VzLCB0eXBlOiAnU291cmNlcycsIGNvbXA6IFNvdXJjZURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiBbXSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIuZm9sZGVycywgdHlwZTogJ0ZvbGRlcnMnLCBjb21wOiBGb2xkZXJEZXNpZ25Db21wb25lbnQsIHRlbXBsYXRlczogW3sgdGl0bGU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0ZvbGRlcicpIH1dIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5yb2xlcywgdHlwZTogJ1JvbGVzJywgY29tcDogUm9sZURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiBbeyB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnUm9sZScpIH1dIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5zdGF0ZXMsIHR5cGU6ICdTdGF0ZXMnLCBjb21wOiBTdGF0ZURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiBbeyB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnU3RhdGUnKSB9XSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIudXRpbGl0aWVzLCB0eXBlOiAnVG9vbHMnLCBjb21wOiBVdGlsaXR5RGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudFV0aWxpdGllcyB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIudHlwZXMsIHR5cGU6ICdUeXBlcycsIGNvbXA6IFR5cGVEZXNpZ25Db21wb25lbnQsIHRlbXBsYXRlczogci50VHlwZXMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLm5vZGVzLCB0eXBlOiAnTm9kZXMnLCBjb21wOiBOb2RlRGVzaWduZXJDb21wb25lbnQsIHRlbXBsYXRlczogci50Tm9kZXMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLmF0dHJpYnV0ZXMsIHR5cGU6ICdBdHRyaWJ1dGVzJywgY29tcDogQXR0cmlidXRlRGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudEF0dHJpYnV0ZXMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnBvbGljaWVzLCB0eXBlOiAnUG9saWNpZXMnLCBjb21wOiBQb2xpY3lEZXNpZ25Db21wb25lbnQsIHRlbXBsYXRlczogci50UG9saWNpZXMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLmNvbnRyb2xzLCB0eXBlOiAnQ29udHJvbHMnLCBjb21wOiBDb250cm9sRGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IFtdIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5ydWxlcywgdHlwZTogJ1J1bGVzJywgY29tcDogUnVsZURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiByLnRSdWxlcyB9LFxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLnNlY3Rpb25zLmZvckVhY2gocyA9PlxyXG4gICAgICAgIHMuZWxlbWVudHMuZm9yRWFjaChlID0+IHtcclxuICAgICAgICAgIGlmICghZS5vcHRpb25zKSBlLm9wdGlvbnMgPSB7fTtcclxuXHJcbiAgICAgICAgICBlLmluamVjdG9yID0gdGhpcy5fY3JlYXRlSW5qZWN0b3IoZSwgJ3dpZGdldCcpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgICAvLyB0eXBpbmcga2V5ZG93biBsaXN0ZW5lclxyXG4gICAgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEVsZW1lbnRNb2RlbFtdPikge1xyXG4gICAgY29uc3QgcmFuZ2UgPSBldmVudC5jb250YWluZXIuZGF0YS5zbGljZShcclxuICAgICAgTWF0aC5taW4oZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KSxcclxuICAgICAgTWF0aC5tYXgoZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KVxyXG4gICAgKSwgZmlsZSA9IHJhbmdlWzBdLmNvbmZpZ3VyYXRpb25GaWxlO1xyXG4gICAgaWZcclxuICAgICAgLy8gYWNyb3NzIGZpbGVzXHJcbiAgICAgIChyYW5nZS5zbGljZSgxKS5zb21lKGUgPT4gZS5jb25maWd1cmF0aW9uRmlsZSAhPT0gZmlsZSkpIHtcclxuICAgICAgLy8gc3RhcnQgb3JkaW5hbFxyXG4gICAgICBsZXQgaSA9IGV2ZW50LmNvbnRhaW5lci5kYXRhW2V2ZW50LmN1cnJlbnRJbmRleF0ub3JkaW5hbCB8fCAtMTtcclxuICAgICAgLy8gc2V0IG9yZGluYWwgdG8gaXRlbXMgaW4gcmFuZ2VcclxuICAgICAgcmFuZ2UuZm9yRWFjaChlID0+IGUub3JkaW5hbCA9IGkrKyk7XHJcbiAgICAgIC8vIGluY3JlYXNlIG90aGVyIGhpZ2hlciB0aGFuIGxhc3QgaW4gcmFuZ2VcclxuICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEuZmlsdGVyKGUgPT4gZS5vcmRpbmFsICYmIGUub3JkaW5hbCA+IGkpLmZvckVhY2goZSA9PiBlLm9yZGluYWwgKz0gMSk7XHJcbiAgICB9IGVsc2UgLy8gbmF0aXZlIG9yZGVyIGluIGNvbGxlY3Rpb25cclxuICAgICAgcmFuZ2UuZm9yRWFjaChlID0+IGUub3JkaW5hbCA9IG51bGwpO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDdHJsLXMgc2F2ZSwgc2VhcmNoXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgKGV2ZW50LmtleSA9PT0gJ1MnIHx8IGV2ZW50LmtleSA9PT0gJ3MnKSkge1xyXG4gICAgICB0aGlzLmRpcnR5ICYmIHRoaXMuc2F2ZSgpLnN1YnNjcmliZSgpO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hCeSAmJiBldmVudC5rZXkgPT09ICdFc2NhcGUnKSB0aGlzLmNsZWFyU2VhcmNoKCk7XHJcbiAgICBlbHNlIGlmIChldmVudC5jb2RlLnN0YXJ0c1dpdGgoJ0tleScpIHx8IGV2ZW50LmtleSA9PSAnU3BhY2UnKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90eXBpbmdUaW1lcik7XHJcbiAgICAgIC8vY2xlYXJUaW1lb3V0KHRoaXMuX2NsZWFyVGltZXIpO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5ID0gdGhpcy5zZWFyY2hCeSA/IHRoaXMuc2VhcmNoQnkgKyBldmVudC5rZXkgOiBldmVudC5rZXk7XHJcbiAgICAgIHRoaXMuX3R5cGluZ1RpbWVyID0gc2V0VGltZW91dCgoKSA9PlxyXG4gICAgICAgIHRoaXMuc2VjdGlvbnMgPSB0aGlzLl9zZWFyY2godGhpcy5zZWFyY2hCeSksIDE1MCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNsZWFyU2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hCeSA9IG51bGw7XHJcbiAgICB0aGlzLnNlY3Rpb25zID0gdGhpcy5fc2VjdGlvbnM7XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fdHlwaW5nVGltZXIpO1xyXG4gIH1cclxuICBwcml2YXRlIF9zZWFyY2godmFsdWU6IHN0cmluZykge1xyXG4gICAgY29uc3Qgc2VjdGlvbnM6IFNlY3Rpb25bXSA9IFtdO1xyXG4gICAgdGhpcy5fc2VjdGlvbnMuZm9yRWFjaChzID0+IHtcclxuICAgICAgY29uc3QgZWxlbWVudHMgPSBzLmVsZW1lbnRzLlxyXG4gICAgICAgIGZpbHRlcihlID0+IChlLnRpdGxlIHx8IGUubmFtZSkudG9Mb3dlckNhc2UoKS5cclxuICAgICAgICAgIGluZGV4T2YodmFsdWUpID4gLTEpO1xyXG4gICAgICBpZiAoZWxlbWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgeyBjb21wLCB0ZW1wbGF0ZXMsIHR5cGUgfSA9IHM7XHJcbiAgICAgICAgc2VjdGlvbnMucHVzaCh7IGVsZW1lbnRzLCBjb21wLCB0ZW1wbGF0ZXMsIHR5cGUgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy90aGlzLl9jbGVhclRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlYXJjaEJ5ID0gbnVsbCwgNTAwMCk7XHJcbiAgICByZXR1cm4gc2VjdGlvbnM7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2luc2VydChzZWN0aW9uOiBTZWN0aW9uLCBlbGVtZW50OiBFbGVtZW50TW9kZWwsIGluZGV4OiBudW1iZXIpIHtcclxuICAgIGxldCBpID0gZWxlbWVudC5uYW1lLmxhc3RJbmRleE9mKCdfJyksXHJcbiAgICAgIGogPSBlbGVtZW50LnRpdGxlLmxhc3RJbmRleE9mKCcgJyksXHJcbiAgICAgIG4gPSAwLCBuYW1lLCB0aXRsZTtcclxuICAgIGRvIHtcclxuICAgICAgbisrO1xyXG4gICAgICBuYW1lID0gKGkgPCAwIHx8IGlzTmFOKHBhcnNlSW50KGVsZW1lbnQubmFtZS5zdWJzdHJpbmcoaSArIDEpKSkgPyBlbGVtZW50Lm5hbWUgOiBlbGVtZW50Lm5hbWUuc3Vic3RyaW5nKDAsIGkpKSArICdfJyArIG47XHJcbiAgICAgIHRpdGxlID0gKGogPCAwIHx8IGlzTmFOKHBhcnNlSW50KGVsZW1lbnQudGl0bGUuc3Vic3RyaW5nKGogKyAxKSkpID8gZWxlbWVudC50aXRsZSA6IGVsZW1lbnQudGl0bGUuc3Vic3RyaW5nKDAsIGopKSArICcgJyArIG47XHJcbiAgICB9XHJcbiAgICB3aGlsZSAoc2VjdGlvbi5lbGVtZW50cy5maW5kKGUgPT4gZS5uYW1lID09PSBuYW1lIHx8IGUudGl0bGUgPT09IHRpdGxlKSk7XHJcbiAgICBlbGVtZW50Lm5hbWUgPSBuYW1lLCBlbGVtZW50LnRpdGxlID0gdGl0bGU7XHJcblxyXG4gICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLl9jcmVhdGVJbmplY3RvcihlbGVtZW50LCAnd2lkZ2V0Jyk7XHJcbiAgICBlbGVtZW50LmluamVjdG9yID0gaW5qZWN0b3I7XHJcbiAgICB0aGlzLl9vcGVuKGVsZW1lbnQsIHNlY3Rpb24sICdhZGQnKS50aGVuKCgpID0+XHJcbiAgICAgIHNlY3Rpb24uZWxlbWVudHMuc3BsaWNlKGluZGV4ICsgMSwgMCwgZWxlbWVudClcclxuICAgICk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX29wZW4oZWxlbWVudDogRWxlbWVudE1vZGVsLFxyXG4gICAgc2VjdGlvbjogU2VjdGlvbixcclxuICAgIG1vZGU6IERlc2lnbk1vZGUsIHRpdGxlPzogc3RyaW5nKSB7XHJcbiAgICBsZXQgZWNsb25lID0geyAuLi5lbGVtZW50IH07XHJcbiAgICBkZWxldGUgZWNsb25lLmluamVjdG9yO1xyXG4gICAgZWNsb25lID0gY2xvbmUoZWNsb25lKTsgLy8gZGVlcFxyXG4gICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLl9jcmVhdGVJbmplY3RvcihlY2xvbmUsIG1vZGUpO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XHJcbiAgICAgIHRoaXMuX3BhbmVzLm5hdmlnYXRlPERlc2lnbmVyVHlwZUVsZW1lbnRDb21wb25lbnQ+KHNlY3Rpb24uY29tcCwge1xyXG4gICAgICAgIHBvbGljeTogbW9kZSA9PT0gJ2FkZCcgPyBPcGVuUG9saWN5LkRpYWxvZyB8IE9wZW5Qb2xpY3kuU3RyZXRjaCA6XHJcbiAgICAgICAgICBPcGVuUG9saWN5LlRhYiB8IE9wZW5Qb2xpY3kuVG9nZ2xlIHwgT3BlblBvbGljeS5EZWZlcixcclxuICAgICAgZ3JvdXA6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoc2VjdGlvbi50eXBlKSxcclxuICAgICAgLy90aXRsZSxcclxuICAgICAgaW5qZWN0b3I6IGluamVjdG9yXHJcbiAgICB9KS50aGVuKHBhbmUgPT4ge1xyXG4gICAgICBwYW5lLmluc3RhbmNlLmRlc2lnbmVyLm9uU2F2ZS5zdWJzY3JpYmUoZWwgPT4ge1xyXG4gICAgICAgIGlmIChlbCkge1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LCBlbCk7XHJcbiAgICAgICAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICAgICAgICAgIHJlc29sdmUoZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHJlamVjdCgpO1xyXG4gICAgICAgIHBhbmUuY2xvc2UoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHBhbmUuY2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpKTtcclxuICAgIH0pKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY3JlYXRlSW5qZWN0b3IoZWxlbWVudDogRWxlbWVudE1vZGVsPGFueT4sIG1vZGU6IERlc2lnbk1vZGUpIHtcclxuICAgIGNvbnN0IHJlZiA9IG5ldyBEZXNpZ25lclJlZih0aGlzLm1vZGVsLCBlbGVtZW50LCBtb2RlKTtcclxuXHJcbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgIHByb3ZpZGVyczogW3tcclxuICAgICAgICBwcm92aWRlOiBEZXNpZ25lclJlZiwgdXNlVmFsdWU6IHJlZlxyXG4gICAgICB9XSwgcGFyZW50OiB0aGlzLl9pbmplY3RvclxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaW5qZWN0b3I7XHJcbiAgfVxyXG4gIGFkZChzZWN0aW9uOiBTZWN0aW9uLCBtZW51OiBNYXRNZW51VHJpZ2dlciwgZXZ0OiBFdmVudCkge1xyXG4gICAgaWYgKHNlY3Rpb24udGVtcGxhdGVzLmxlbmd0aCA+IDEpXHJcbiAgICAgIG1lbnUub3Blbk1lbnUoKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZShzZWN0aW9uLCBzZWN0aW9uLnRlbXBsYXRlc1swXSk7XHJcbiAgICB9XHJcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcbiAgY3JlYXRlKHNlY3Rpb246IFNlY3Rpb24sIHRlbXBsYXRlOiBUZW1wbGF0ZUluZm8pIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIC4uLnRlbXBsYXRlLFxyXG4gICAgICBuYW1lOiBwcm9ncmFtTmFtZSh0ZW1wbGF0ZS5rZXkgfHwgdGVtcGxhdGUudGl0bGUpLFxyXG4gICAgICBkcmFmdDogdHJ1ZSxcclxuICAgICAgb3B0aW9uczoge31cclxuICAgIH0gYXMgRWxlbWVudE1vZGVsO1xyXG4gICAgdGhpcy5faW5zZXJ0KHNlY3Rpb24sIGVsZW1lbnQsIHNlY3Rpb24uZWxlbWVudHMubGVuZ3RoKTtcclxuICB9XHJcbiAgcmVtb3ZlKHNlY3Rpb246IFNlY3Rpb24sIGVsZW1lbnQ6IEVsZW1lbnRNb2RlbCkge1xyXG4gICAgc2VjdGlvbi5lbGVtZW50cy5yZW1vdmUoZWxlbWVudCk7XHJcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgY29weShzZWN0aW9uOiBTZWN0aW9uLCBlbGVtZW50OiBFbGVtZW50TW9kZWwpIHtcclxuICAgIGxldCBlY2xvbmUgPSB7XHJcbiAgICAgIC4uLmVsZW1lbnQsXHJcbiAgICAgIGNvcHlPZjogZWxlbWVudC5uYW1lLFxyXG4gICAgICBkcmFmdDogdHJ1ZVxyXG4gICAgfTtcclxuICAgIGRlbGV0ZSBlY2xvbmUuaW5qZWN0b3I7XHJcbiAgICBkZWxldGUgZWNsb25lLnJlc291cmNlVHlwZTtcclxuICAgIGVjbG9uZSA9IGNsb25lKGVjbG9uZSk7IC8vIGRlZXBcclxuICAgIHRoaXMuX2luc2VydChzZWN0aW9uLCBlY2xvbmUsIHNlY3Rpb24uZWxlbWVudHMuaW5kZXhPZihlbGVtZW50KSk7XHJcbiAgfVxyXG4gIGVkaXQoZWxlbWVudDogRWxlbWVudE1vZGVsLCBzZWN0aW9uOiBTZWN0aW9uKSB7XHJcbiAgICB0aGlzLl9vcGVuKGVsZW1lbnQsIHNlY3Rpb24sICdlZGl0Jyk7XHJcbiAgfVxyXG4gIHRvZ2dsZURpc2FibGVkKGVsZW1lbnQ6IEVsZW1lbnRNb2RlbCkge1xyXG4gICAgZWxlbWVudC5kaXNhYmxlZCA9ICFlbGVtZW50LmRpc2FibGVkO1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIHNhdmUoKSB7XHJcbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XHJcbiAgICBjb25zdCB7IGNvbnRyb2xzLCBhdHRyaWJ1dGVzLCBwb2xpY2llcywgYWN0aW9ucywgY3ViZXMsIGZvbGRlcnMsIGZvcm1zLCBndWlkZXMsIHJlcG9ydHMsIHJvbGVzLCBydWxlcywgc3RhdGVzLCB0eXBlcywgdXRpbGl0aWVzLCB2aWV3cywgd2lkZ2V0cywgbm9kZXMgfSA9IHRoaXMubW9kZWw7XHJcbiAgICBjb25zdCBtb2RlbCA9IHtcclxuICAgICAgYWN0aW9uczogc3RyaXAoYWN0aW9ucyksXHJcbiAgICAgIGN1YmVzOiBzdHJpcChjdWJlcyksXHJcbiAgICAgIGZvbGRlcnM6IHN0cmlwKGZvbGRlcnMpLFxyXG4gICAgICBmb3Jtczogc3RyaXAoZm9ybXMpLFxyXG4gICAgICBndWlkZXM6IHN0cmlwKGd1aWRlcyksXHJcbiAgICAgIHJlcG9ydHM6IHN0cmlwKHJlcG9ydHMpLFxyXG4gICAgICByb2xlczogc3RyaXAocm9sZXMpLFxyXG4gICAgICBydWxlczogc3RyaXAocnVsZXMpLFxyXG4gICAgICBwb2xpY2llczogc3RyaXAocG9saWNpZXMpLFxyXG4gICAgICBzdGF0ZXM6IHN0cmlwKHN0YXRlcyksXHJcbiAgICAgIHR5cGVzOiBzdHJpcCh0eXBlcyksXHJcbiAgICAgIHV0aWxpdGllczogc3RyaXAodXRpbGl0aWVzKSxcclxuICAgICAgdmlld3M6IHN0cmlwKHZpZXdzKSxcclxuICAgICAgbm9kZXM6IHN0cmlwKG5vZGVzKSxcclxuICAgICAgd2lkZ2V0czogc3RyaXAod2lkZ2V0cyksXHJcbiAgICAgIGNvbnRyb2xzOiBzdHJpcChjb250cm9scyksXHJcbiAgICAgIGF0dHJpYnV0ZXM6IHN0cmlwKGF0dHJpYnV0ZXMpXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlZi5leGVjdXRlKFxyXG4gICAgICBtb2RlbCBhcyBhbnkpLnBpcGUodGFwKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9wcy50b2FzdCgnQ2hhbmdlc1NhdmVkJyk7XHJcbiAgICAgICAgICBhcHBseShwb2xpY2llcywgYWN0aW9ucywgY3ViZXMsIGZvbGRlcnMsIGZvcm1zLCBndWlkZXMsIHJlcG9ydHMsIHJvbGVzLCBydWxlcywgc3RhdGVzLCB0eXBlcywgdXRpbGl0aWVzLCB2aWV3cywgd2lkZ2V0cyk7XHJcbiAgICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLl9zZXNzaW9uLnJlZnJlc2goKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9LCBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fcHMuZXJyb3IoKTtcclxuICAgICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgIH0pKTtcclxuICAgIGZ1bmN0aW9uIHN0cmlwKGVsZW1lbnRzOiBFbGVtZW50TW9kZWxbXSkge1xyXG4gICAgICByZXR1cm4gZWxlbWVudHMubWFwKGUgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB7IC4uLmUgfTtcclxuICAgICAgICBkZWxldGUgZWxlbWVudC5pbmplY3RvcjtcclxuICAgICAgICBkZWxldGUgZWxlbWVudC5hcmd1bWVudHM7XHJcbiAgICAgICAgcmV0dXJuIGNsZWFudXAoZWxlbWVudCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gYXBwbHkoLi4uY29sbGVjdGlvbjogRWxlbWVudE1vZGVsW11bXSkge1xyXG4gICAgICBjb2xsZWN0aW9uLmZvckVhY2gocyA9PiBzLmZvckVhY2goZSA9PiBkZWxldGUgZS5kcmFmdCkpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgU2VjdGlvbiB7XHJcbiAgY29tcDogQ29tcG9uZW50VHlwZTxhbnk+O1xyXG4gIHR5cGU6IHN0cmluZztcclxuICBlbGVtZW50czogRWxlbWVudE1vZGVsW107XHJcbiAgdGVtcGxhdGVzOiBUZW1wbGF0ZUluZm9bXTtcclxufVxyXG4iLCI8bWF0LXRvb2xiYXI+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInNhdmUoKVwiIFtkaXNhYmxlZF09XCIhZGlydHkgfHwgbG9hZGluZyB8fCBzYXZpbmdcIiBbYml6ZG9jVG9vbHRpcF09XCInU2F2ZSd8dHJhbnNsYXRlXCI+PG1hdC1pY29uPnNhdmU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiIFtkaXNhYmxlZF09XCIhc2VhcmNoQnlcIiBbYml6ZG9jVG9vbHRpcF09XCInQ2xlYXInfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5zZWFyY2hfb2ZmPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuPG1hdC1wcm9ncmVzcy1iYXIgW21vZGVdPVwibG9hZGluZyA/ICdidWZmZXInIDogJ2luZGV0ZXJtaW5hdGUnXCIgW3N0eWxlLnZpc2liaWxpdHldPVwibG9hZGluZyA/ICd2aXNpYmxlJzonaGlkZGVuJ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuPGJpemRvYy1ub25lICpuZ0lmPVwibG9hZGluZ1wiIHRpdGxlPVwiU2V0dGluZ1RoaW5nc1VwXCIgW3N1YnRpdGxlXT1cIlBsZWFzZVdhaXRcIiBpY29uPVwiYXJjaGl0ZWN0dXJlXCI+PC9iaXpkb2Mtbm9uZT5cclxuPHNlY3Rpb24gKm5nRm9yPVwibGV0IHMgb2Ygc2VjdGlvbnNcIj5cclxuICA8aDIgY2xhc3M9XCJtYXQtbWRjLXRpdGxlXCI+e3tzLnR5cGUgfCB0cmFuc2xhdGV9fTwvaDI+XHJcbiAgPCEtLTxociAvPi0tPlxyXG4gIDxkaXYgY2xhc3M9XCJlbGVtZW50c1wiIGNka0Ryb3BMaXN0IGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCIgW2Nka0Ryb3BMaXN0RGF0YV09XCJzLmVsZW1lbnRzXCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cclxuICAgIDxtYXQtY2FyZCAqbmdGb3I9XCJsZXQgZSBvZiBzLmVsZW1lbnRzXCIgW2NsYXNzLmRpc2FibGVkXT1cImUuZGlzYWJsZWRcIiBjZGtEcmFnIGNka0RyYWdSb290RWxlbWVudD1cIi5tYXQtbWRjLWNhcmQtdGl0bGVcIj5cclxuICAgICAgPCEtLSBAaXRlbS0tPlxyXG4gICAgICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgIHt7ZS50aXRsZXxsb2NhbGl6ZWRTdHJpbmd9fVxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPG1hdC1pY29uIFtiaXpkb2NUb29sdGlwXT1cImUuaGVscFwiIFtiaXpkb2NUb29sdGlwRHVyYXRpb25dPVwiNjAwMFwiICpuZ0lmPVwiZS5oZWxwXCI+aGVscF9vdXRsaW5lPC9tYXQtaWNvbj5cclxuICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgIDxtYXQtY2FyZC1zdWJ0aXRsZT5cclxuICAgICAgICAgIHt7ZS5uYW1lfX1cclxuICAgICAgICA8L21hdC1jYXJkLXN1YnRpdGxlPlxyXG4gICAgICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJzLmNvbXA7IGluamVjdG9yOiBlLmluamVjdG9yXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgIDxtYXQtY2FyZC1hY3Rpb25zIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY29weShzLCBlKVwiICpuZ0lmPVwiIWUuY29weU9mXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NvcHknfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5maWxlX2NvcHk8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlbW92ZShzLCBlKVwiICpuZ0lmPVwiZS5kcmFmdCB8fCBlLmVtcHR5XCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0Rpc2NhcmQnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInRvZ2dsZURpc2FibGVkKGUpXCIgW2JpemRvY1Rvb2x0aXBdPVwiKGUuZGlzYWJsZWQgPyAnRW5hYmxlJyA6ICdEaXNhYmxlJyl8dHJhbnNsYXRlXCI+PG1hdC1pY29uPnt7ZS5kaXNhYmxlZCA/ICd2aXNpYmlsaXR5JyA6ICd2aXNpYmlsaXR5X29mZid9fTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZWRpdChlLCBzKVwiIFtiaXpkb2NUb29sdGlwXT1cIidTZXR0aW5ncyd8dHJhbnNsYXRlXCI+PG1hdC1pY29uPnNldHRpbmdzPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICA8L21hdC1jYXJkLWFjdGlvbnM+XHJcbiAgICA8L21hdC1jYXJkPlxyXG4gICAgPGRpdiBjbGFzcz1cImFkZC1lbGVtZW50XCIgbWF0UmlwcGxlIChjbGljayk9XCJhZGQocywgbWVudVRyaWdnZXIsICRldmVudClcIiAqbmdJZj1cInMudGVtcGxhdGVzPy5sZW5ndGhcIj5cclxuICAgICAgPHNwYW4gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInRlbXBsYXRlTWVudVwiICNtZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCI+PC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbj48bWF0LWljb24gW2JpemRvY1Rvb2x0aXBdPVwiJ05ldyd8dHJhbnNsYXRlXCIgZGlzYWJsZVJpcHBsZT1cInRydWVcIj5hZGQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8bWF0LW1lbnUgI3RlbXBsYXRlTWVudT5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHQgb2Ygcy50ZW1wbGF0ZXNcIiAoY2xpY2spPVwiY3JlYXRlKHMsIHQpXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInQuZmFtaWx5XCI+XHJcbiAgICAgICAgICAgIHt7dC5mYW1pbHl9fVxyXG4gICAgICAgICAgICAmbmJzcDstJm5ic3A7XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAge3t0LnRpdGxlfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9tYXQtbWVudT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { Component } from "@angular/core";
2
+ import { DesignerTypeElementComponent } from "../designer.base";
3
+ import { Validators } from "@angular/forms";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "@angular/material/form-field";
7
+ import * as i3 from "@angular/material/input";
8
+ import * as i4 from "../designer-element.component";
9
+ import * as i5 from "../../../core/pipes/sanitize-html.pipe";
10
+ import * as i6 from "../../../core/pipes/translate.pipe";
11
+ export class SourceDesignComponent extends DesignerTypeElementComponent {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.form = this._fb.group({
15
+ regularExpression: this._fb.control(null, Validators.required)
16
+ });
17
+ }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SourceDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: SourceDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<bizdoc-designer-element [form]=\"form\" [privileges]=\"true\" [view]=\"view\" (back)=\"view = null\" [context]=\"context\">\r\n <!-- widget -->\r\n <ng-template bizdocContent>\r\n <dl>\r\n <dt></dt>\r\n <dd>{{model.regularExpression}}</dd>\r\n </dl>\r\n </ng-template>\r\n <!-- edit -->\r\n <ng-template bizdocEditContent>\r\n <div [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"regularExpression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n</bizdoc-designer-element>\r\n", dependencies: [{ kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { 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: "directive", type: i4.EditContentDirective, selector: "[bizdocEditContent]" }, { kind: "directive", type: i4.WidgetContentDirective, selector: "[bizdocContent]" }, { kind: "component", type: i4.DesignerItemComponent, selector: "bizdoc-designer-element", inputs: ["privileges", "icon", "form", "view", "context"], outputs: ["continue", "back", "save"] }, { kind: "pipe", type: i5.SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: SourceDesignComponent, decorators: [{
22
+ type: Component,
23
+ args: [{ template: "<bizdoc-designer-element [form]=\"form\" [privileges]=\"true\" [view]=\"view\" (back)=\"view = null\" [context]=\"context\">\r\n <!-- widget -->\r\n <ng-template bizdocContent>\r\n <dl>\r\n <dt></dt>\r\n <dd>{{model.regularExpression}}</dd>\r\n </dl>\r\n </ng-template>\r\n <!-- edit -->\r\n <ng-template bizdocEditContent>\r\n <div [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"regularExpression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n</bizdoc-designer-element>\r\n" }]
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vYXJjaGl0ZWN0dXJlL2VsZW1lbnRzL3NvdXJjZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2FyY2hpdGVjdHVyZS9lbGVtZW50cy9zb3VyY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBTTVDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSw0QkFBNEI7SUFKdkU7O1FBS1csU0FBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQzdCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQy9ELENBQUMsQ0FBQztLQUNKOzhHQUpZLHFCQUFxQjtrR0FBckIscUJBQXFCLDJFQ1JsQywyd0JBa0JBOzsyRkRWYSxxQkFBcUI7a0JBSmpDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERlc2lnbmVyVHlwZUVsZW1lbnRDb21wb25lbnQgfSBmcm9tIFwiLi4vZGVzaWduZXIuYmFzZVwiO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJ3NvdXJjZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgLy9zdHlsZVVybHM6IFsnc291cmNlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNvdXJjZURlc2lnbkNvbXBvbmVudCBleHRlbmRzIERlc2lnbmVyVHlwZUVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlYWRvbmx5IGZvcm0gPSB0aGlzLl9mYi5ncm91cCh7XHJcbiAgICByZWd1bGFyRXhwcmVzc2lvbjogdGhpcy5fZmIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gIH0pO1xyXG59XHJcbiIsIjxiaXpkb2MtZGVzaWduZXItZWxlbWVudCBbZm9ybV09XCJmb3JtXCIgW3ByaXZpbGVnZXNdPVwidHJ1ZVwiIFt2aWV3XT1cInZpZXdcIiAoYmFjayk9XCJ2aWV3ID0gbnVsbFwiIFtjb250ZXh0XT1cImNvbnRleHRcIj5cclxuICA8IS0tIHdpZGdldCAtLT5cclxuICA8bmctdGVtcGxhdGUgYml6ZG9jQ29udGVudD5cclxuICAgIDxkbD5cclxuICAgICAgPGR0PjwvZHQ+XHJcbiAgICAgIDxkZD57e21vZGVsLnJlZ3VsYXJFeHByZXNzaW9ufX08L2RkPlxyXG4gICAgPC9kbD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDwhLS0gZWRpdCAtLT5cclxuICA8bmctdGVtcGxhdGUgYml6ZG9jRWRpdENvbnRlbnQ+XHJcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiY29sdW1uXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicmVndWxhckV4cHJlc3Npb25cIiBbcGxhY2Vob2xkZXJdPVwiJ1JlZ2V4J3wgdHJhbnNsYXRlXCIgcmVxdWlyZWQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgICA8bWF0LWhpbnQ+PHNwYW4gW2lubmVySFRNTF09XCInUmVnZXhIaW50JyB8IHRyYW5zbGF0ZSA6ICdodHRwczovL3JlZ2V4MTAxLmNvbS8nfCBzYW5pdGl6ZUh0bWxcIj48L3NwYW4+PC9tYXQtaGludD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYml6ZG9jLWRlc2lnbmVyLWVsZW1lbnQ+XHJcbiJdfQ==