cax-design-system 2.7.2 → 2.7.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.
Files changed (30) hide show
  1. package/README.md +1 -1
  2. package/accordion/accordion.d.ts +5 -1
  3. package/calendar/calendar.d.ts +8 -1
  4. package/esm2022/accordion/accordion.mjs +11 -4
  5. package/esm2022/calendar/calendar.mjs +35 -3
  6. package/esm2022/dropdown/dropdown.mjs +3 -3
  7. package/esm2022/inputtextarea/inputtextarea.component.mjs +16 -4
  8. package/esm2022/navigation/navigation.mjs +64 -29
  9. package/esm2022/table/components/column-filter/column-filter.mjs +2 -2
  10. package/esm2022/table/components/column-filter-form-element/column-filter-form-element.mjs +2 -2
  11. package/fesm2022/cax-design-system-accordion.mjs +10 -3
  12. package/fesm2022/cax-design-system-accordion.mjs.map +1 -1
  13. package/fesm2022/cax-design-system-calendar.mjs +34 -2
  14. package/fesm2022/cax-design-system-calendar.mjs.map +1 -1
  15. package/fesm2022/cax-design-system-dropdown.mjs +2 -2
  16. package/fesm2022/cax-design-system-dropdown.mjs.map +1 -1
  17. package/fesm2022/cax-design-system-inputtextarea.mjs +15 -3
  18. package/fesm2022/cax-design-system-inputtextarea.mjs.map +1 -1
  19. package/fesm2022/cax-design-system-navigation.mjs +63 -28
  20. package/fesm2022/cax-design-system-navigation.mjs.map +1 -1
  21. package/fesm2022/cax-design-system-table.mjs +2 -2
  22. package/fesm2022/cax-design-system-table.mjs.map +1 -1
  23. package/inputtextarea/inputtextarea.component.d.ts +7 -1
  24. package/navigation/navigation.d.ts +3 -1
  25. package/package.json +180 -180
  26. package/resources/cax.min.scss +1 -1
  27. package/resources/cax.scss +21 -8
  28. package/resources/components/calendar/calendar.scss +220 -190
  29. package/resources/components/dropdown/dropdown.scss +8 -0
  30. package/resources/components/navigation/navigation.scss +27 -2
@@ -31,6 +31,12 @@ export class InputTextareaComponent {
31
31
  charCounter = false;
32
32
  /** Value of the textarea */
33
33
  value = '';
34
+ /** Text to display when the input is valid */
35
+ successText;
36
+ /** Text to display when the input is invalid */
37
+ errorText;
38
+ /** Whether the input is in an invalid state */
39
+ invalid = false;
34
40
  /** Event emitted when the textarea is resized */
35
41
  onResize = new EventEmitter();
36
42
  /** Reference to the textarea element */
@@ -87,13 +93,13 @@ export class InputTextareaComponent {
87
93
  this.onResize.emit(event || {});
88
94
  }
89
95
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: InputTextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
90
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: InputTextareaComponent, selector: "cax-inputtextarea", inputs: { label: "label", textareaId: "textareaId", rows: "rows", cols: "cols", placeholder: "placeholder", maxlength: "maxlength", minlength: "minlength", disabled: "disabled", readonly: "readonly", autoResize: "autoResize", variant: "variant", charCounter: "charCounter", value: "value", style: "style" }, outputs: { onResize: "onResize", valueChange: "valueChange" }, providers: [
96
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: InputTextareaComponent, selector: "cax-inputtextarea", inputs: { label: "label", textareaId: "textareaId", rows: "rows", cols: "cols", placeholder: "placeholder", maxlength: "maxlength", minlength: "minlength", disabled: "disabled", readonly: "readonly", autoResize: "autoResize", variant: "variant", charCounter: "charCounter", value: "value", successText: "successText", errorText: "errorText", invalid: "invalid", style: "style" }, outputs: { onResize: "onResize", valueChange: "valueChange" }, providers: [
91
97
  {
92
98
  provide: NG_VALUE_ACCESSOR,
93
99
  useExisting: forwardRef(() => InputTextareaComponent),
94
100
  multi: true
95
101
  }
96
- ], viewQueries: [{ propertyName: "el", first: true, predicate: ["textarea"], descendants: true }], ngImport: i0, template: "<div class=\"cax-input-container\">\r\n <label [attr.for]=\"textareaId\" class=\"cax-label\" [ngClass]=\"{'disabled-opacity': disabled}\"> {{ label }} </label>\r\n <textarea\r\n #textarea\r\n [rows]=\"rows\"\r\n [cols]=\"cols\"\r\n [placeholder]=\"placeholder\"\r\n [maxlength]=\"maxlength\"\r\n [minlength]=\"minlength\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly ? true : null\"\r\n [ngClass]=\"{\r\n 'filled-style': variant === 'filled',\r\n 'outlined-style': variant === 'outlined',\r\n 'cax-inputtextarea-disabled': disabled,\r\n 'disabled-opacity': disabled\r\n }\"\r\n caxInputTextarea\r\n [autoResize]=\"autoResize\"\r\n (input)=\"onInput($event)\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"value = $event; valueChange.emit($event); onChange($event); onTouched()\"\r\n (blur)=\"onTouched()\"\r\n [ngStyle]=\"style\"\r\n ></textarea>\r\n</div>\r\n", styles: ["@layer cax{.cax-inputtextarea-resizable{overflow:hidden;resize:none}.cax-fluid .cax-inputtextarea{width:100%}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.InputTextareadirective, selector: "[caxInputTextarea]", inputs: ["autoResize", "variant"], outputs: ["onResize"] }] });
102
+ ], viewQueries: [{ propertyName: "el", first: true, predicate: ["textarea"], descendants: true }], ngImport: i0, template: "<div class=\"cax-input-container\">\r\n <label [attr.for]=\"textareaId\" class=\"cax-label\" [ngClass]=\"{'disabled-opacity': disabled}\"> {{ label }} </label>\r\n <textarea\r\n #textarea\r\n [rows]=\"rows\"\r\n [cols]=\"cols\"\r\n [placeholder]=\"placeholder\"\r\n [maxlength]=\"maxlength\"\r\n [minlength]=\"minlength\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly ? true : null\"\r\n [ngClass]=\"{\r\n 'filled-style': variant === 'filled',\r\n 'outlined-style': variant === 'outlined',\r\n 'cax-inputtextarea-disabled': disabled,\r\n 'disabled-opacity': disabled,\r\n 'cax-input-invalid': invalid\r\n }\"\r\n caxInputTextarea\r\n [autoResize]=\"autoResize\"\r\n (input)=\"onInput($event)\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"value = $event; valueChange.emit($event); onChange($event); onTouched()\"\r\n (blur)=\"onTouched()\"\r\n [ngStyle]=\"style\"\r\n ></textarea>\r\n\r\n <!-- Error Message with conditional opacity -->\r\n <small *ngIf=\"invalid\" id=\"helper-text\" class=\"cax-error\" [ngClass]=\"{'disabled-opacity': disabled}\"> {{ errorText }} </small>\r\n\r\n <!-- Helper Text with conditional opacity -->\r\n <small *ngIf=\"successText && !invalid\" id=\"helper-text\" class=\"cax-helper-text\" [ngClass]=\"{'disabled-opacity': disabled}\"> {{ successText }} </small>\r\n</div>\r\n", styles: ["@layer cax{.cax-inputtextarea-resizable{overflow:hidden;resize:none}.cax-fluid .cax-inputtextarea{width:100%}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.InputTextareadirective, selector: "[caxInputTextarea]", inputs: ["autoResize", "variant"], outputs: ["onResize"] }] });
97
103
  }
98
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: InputTextareaComponent, decorators: [{
99
105
  type: Component,
@@ -103,7 +109,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
103
109
  useExisting: forwardRef(() => InputTextareaComponent),
104
110
  multi: true
105
111
  }
106
- ], template: "<div class=\"cax-input-container\">\r\n <label [attr.for]=\"textareaId\" class=\"cax-label\" [ngClass]=\"{'disabled-opacity': disabled}\"> {{ label }} </label>\r\n <textarea\r\n #textarea\r\n [rows]=\"rows\"\r\n [cols]=\"cols\"\r\n [placeholder]=\"placeholder\"\r\n [maxlength]=\"maxlength\"\r\n [minlength]=\"minlength\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly ? true : null\"\r\n [ngClass]=\"{\r\n 'filled-style': variant === 'filled',\r\n 'outlined-style': variant === 'outlined',\r\n 'cax-inputtextarea-disabled': disabled,\r\n 'disabled-opacity': disabled\r\n }\"\r\n caxInputTextarea\r\n [autoResize]=\"autoResize\"\r\n (input)=\"onInput($event)\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"value = $event; valueChange.emit($event); onChange($event); onTouched()\"\r\n (blur)=\"onTouched()\"\r\n [ngStyle]=\"style\"\r\n ></textarea>\r\n</div>\r\n", styles: ["@layer cax{.cax-inputtextarea-resizable{overflow:hidden;resize:none}.cax-fluid .cax-inputtextarea{width:100%}}\n"] }]
112
+ ], template: "<div class=\"cax-input-container\">\r\n <label [attr.for]=\"textareaId\" class=\"cax-label\" [ngClass]=\"{'disabled-opacity': disabled}\"> {{ label }} </label>\r\n <textarea\r\n #textarea\r\n [rows]=\"rows\"\r\n [cols]=\"cols\"\r\n [placeholder]=\"placeholder\"\r\n [maxlength]=\"maxlength\"\r\n [minlength]=\"minlength\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly ? true : null\"\r\n [ngClass]=\"{\r\n 'filled-style': variant === 'filled',\r\n 'outlined-style': variant === 'outlined',\r\n 'cax-inputtextarea-disabled': disabled,\r\n 'disabled-opacity': disabled,\r\n 'cax-input-invalid': invalid\r\n }\"\r\n caxInputTextarea\r\n [autoResize]=\"autoResize\"\r\n (input)=\"onInput($event)\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"value = $event; valueChange.emit($event); onChange($event); onTouched()\"\r\n (blur)=\"onTouched()\"\r\n [ngStyle]=\"style\"\r\n ></textarea>\r\n\r\n <!-- Error Message with conditional opacity -->\r\n <small *ngIf=\"invalid\" id=\"helper-text\" class=\"cax-error\" [ngClass]=\"{'disabled-opacity': disabled}\"> {{ errorText }} </small>\r\n\r\n <!-- Helper Text with conditional opacity -->\r\n <small *ngIf=\"successText && !invalid\" id=\"helper-text\" class=\"cax-helper-text\" [ngClass]=\"{'disabled-opacity': disabled}\"> {{ successText }} </small>\r\n</div>\r\n", styles: ["@layer cax{.cax-inputtextarea-resizable{overflow:hidden;resize:none}.cax-fluid .cax-inputtextarea{width:100%}}\n"] }]
107
113
  }], propDecorators: { label: [{
108
114
  type: Input
109
115
  }], textareaId: [{
@@ -130,6 +136,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
130
136
  type: Input
131
137
  }], value: [{
132
138
  type: Input
139
+ }], successText: [{
140
+ type: Input
141
+ }], errorText: [{
142
+ type: Input
143
+ }], invalid: [{
144
+ type: Input
133
145
  }], onResize: [{
134
146
  type: Output
135
147
  }], el: [{
@@ -140,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
140
152
  }], valueChange: [{
141
153
  type: Output
142
154
  }] } });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXR0ZXh0YXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW5wdXR0ZXh0YXJlYS9pbnB1dHRleHRhcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9pbnB1dHRleHRhcmVhL2lucHV0dGV4dGFyZWEuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBNkIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQWNuRCxNQUFNLE9BQU8sc0JBQXNCO0lBQy9CLDZCQUE2QjtJQUNwQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBRTVCLGlDQUFpQztJQUN4QixVQUFVLEdBQVcsWUFBWSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVwRixzQ0FBc0M7SUFDN0IsSUFBSSxHQUFXLENBQUMsQ0FBQztJQUUxQix5Q0FBeUM7SUFDaEMsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUUzQix3Q0FBd0M7SUFDL0IsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUVsQywyQ0FBMkM7SUFDbEMsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFFekMsNENBQTRDO0lBQ25DLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBRXpDLHVDQUF1QztJQUM5QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBRW5DLHdDQUF3QztJQUMvQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBRW5DLGdEQUFnRDtJQUN2QyxVQUFVLEdBQVksS0FBSyxDQUFDO0lBRXJDLHNEQUFzRDtJQUM3QyxPQUFPLEdB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QUFDO1FBQ3BELENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQzt1R0E1R1Esc0JBQXNCOzJGQUF0QixzQkFBc0IsK1pBUnBCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztnQkFDckQsS0FBSyxFQUFFLElBQUk7YUFDZDtTQUNKLDBIQ2JMLHUvQkEwQkE7OzJGRFhhLHNCQUFzQjtrQkFabEMsU0FBUzsrQkFDSSxtQkFBbUIsYUFHbEI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUM7NEJBQ3JELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzhCQUlRLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFHRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUdJLFFBQVE7c0JBQWpCLE1BQU07Z0JBR2dCLEVBQUU7c0JBQXhCLFNBQVM7dUJBQUMsVUFBVTtnQkFFWixLQUFLO3NCQUFiLEtBQUs7Z0JBZ0JJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYXgtaW5wdXR0ZXh0YXJlYScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0dGV4dGFyZWEuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXR0ZXh0YXJlYS5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRUZXh0YXJlYUNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dFRleHRhcmVhQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIExhYmVsIGZvciB0aGUgdGV4dGFyZWEgKi9cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogVW5pcXVlIElEIGZvciB0aGUgdGV4dGFyZWEgKi9cbiAgICBASW5wdXQoKSB0ZXh0YXJlYUlkOiBzdHJpbmcgPSBgdGV4dGFyZWEtJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSl9YDtcblxuICAgIC8qKiBOdW1iZXIgb2Ygcm93cyBmb3IgdGhlIHRleHRhcmVhICovXG4gICAgQElucHV0KCkgcm93czogbnVtYmVyID0gNTtcblxuICAgIC8qKiBOdW1iZXIgb2YgY29sdW1ucyBmb3IgdGhlIHRleHRhcmVhICovXG4gICAgQElucHV0KCkgY29sczogbnVtYmVyID0gNTA7XG5cbiAgICAvKiogUGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIHRleHRhcmVhICovXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIE1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgYWxsb3dlZCAqL1xuICAgIEBJbnB1dCgpIG1heGxlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogTWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyByZXF1aXJlZCAqL1xuICAgIEBJbnB1dCgpIG1pbmxlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGV4dGFyZWEgaXMgZGlzYWJsZWQgKi9cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRleHRhcmVhIGlzIHJlYWQtb25seSAqL1xuICAgIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBlbmFibGUgdGhlIGF1dG8tcmVzaXplIGZlYXR1cmUgKi9cbiAgICBASW5wdXQoKSBhdXRvUmVzaXplOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogVmFyaWFudCBvZiB0aGUgdGV4dGFyZWE6ICdmaWxsZWQnIG9yICdvdXRsaW5lZCcgKi9cbiAgICBASW5wdXQoKSB2YXJpYW50OiAnZmlsbGVkJyB8ICdvdXRsaW5lZCcgPSAnb3V0bGluZWQnO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2hhcmFjdGVyIGNvdW50ZXIgKi9cbiAgICBASW5wdXQoKSBjaGFyQ291bnRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFZhbHVlIG9mIHRoZSB0ZXh0YXJlYSAqL1xuICAgIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHRleHRhcmVhIGlzIHJlc2l6ZWQgKi9cbiAgICBAT3V0cHV0KCkgb25SZXNpemU6IEV2ZW50RW1pdHRlcjxFdmVudCB8IHt9PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQgfCB7fT4oKTtcblxuICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHRleHRhcmVhIGVsZW1lbnQgKi9cbiAgICBAVmlld0NoaWxkKCd0ZXh0YXJlYScpIGVsITogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpIHN0eWxlPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAgIC8qKiBFdmVudCBoYW5kbGVyIGZvciByZXNpemUgZXZlbnRzICovXG4gICAgb25SZXNpemVIYW5kbGVyKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLm9uUmVzaXplLmVtaXQoZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5hdXRvUmVzaXplKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvUmVzaXplKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgLy8gQ2hhbmdlZCBmcm9tIHByaXZhdGUgdG8gcHVibGljIHRvIGFsbG93IGFjY2VzcyBmcm9tIHRlbXBsYXRlXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4ge307XG4gICAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8ICcnO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICB0aGlzLnZhbHVlID0gaW5wdXQudmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcblxuICAgICAgICAvLyBBbHNvIGhhbmRsZSByZXNpemUgaWYgYXV0b1Jlc2l6ZSBpcyBlbmFibGVkXG4gICAgICAgIGlmICh0aGlzLmF1dG9SZXNpemUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2l6ZShldmVudD86IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ICsgJ3B4JztcblxuICAgICAgICBpZiAocGFyc2VGbG9hdCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0KSA+PSBwYXJzZUZsb2F0KHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5tYXhIZWlnaHQpKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3ZlcmZsb3dZID0gJ3Njcm9sbCc7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLm1heEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vblJlc2l6ZS5lbWl0KGV2ZW50IHx8IHt9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2F4LWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgPGxhYmVsIFthdHRyLmZvcl09XCJ0ZXh0YXJlYUlkXCIgY2xhc3M9XCJjYXgtbGFiZWxcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkLW9wYWNpdHknOiBkaXNhYmxlZH1cIj4ge3sgbGFiZWwgfX0gPC9sYWJlbD5cclxuICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgICN0ZXh0YXJlYVxyXG4gICAgICAgIFtyb3dzXT1cInJvd3NcIlxyXG4gICAgICAgIFtjb2xzXT1cImNvbHNcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgW21heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxyXG4gICAgICAgIFttaW5sZW5ndGhdPVwibWlubGVuZ3RoXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seSA/IHRydWUgOiBudWxsXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICdmaWxsZWQtc3R5bGUnOiB2YXJpYW50ID09PSAnZmlsbGVkJyxcclxuICAgICAgJ291dGxpbmVkLXN0eWxlJzogdmFyaWFudCA9PT0gJ291dGxpbmVkJyxcclxuICAgICAgJ2NheC1pbnB1dHRleHRhcmVhLWRpc2FibGVkJzogZGlzYWJsZWQsXHJcbiAgICAgICdkaXNhYmxlZC1vcGFjaXR5JzogZGlzYWJsZWRcclxuICAgIH1cIlxyXG4gICAgICAgIGNheElucHV0VGV4dGFyZWFcclxuICAgICAgICBbYXV0b1Jlc2l6ZV09XCJhdXRvUmVzaXplXCJcclxuICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcclxuICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWUgPSAkZXZlbnQ7IHZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KTsgb25DaGFuZ2UoJGV2ZW50KTsgb25Ub3VjaGVkKClcIlxyXG4gICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJzdHlsZVwiXHJcbiAgICA+PC90ZXh0YXJlYT5cclxuPC9kaXY+XHJcbiJdfQ==
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXR0ZXh0YXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW5wdXR0ZXh0YXJlYS9pbnB1dHRleHRhcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9pbnB1dHRleHRhcmVhL2lucHV0dGV4dGFyZWEuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBNkIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQWNuRCxNQUFNLE9BQU8sc0JBQXNCO0lBQy9CLDZCQUE2QjtJQUNwQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBRTVCLGlDQUFpQztJQUN4QixVQUFVLEdBQVcsWUFBWSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVwRixzQ0FBc0M7SUFDN0IsSUFBSSxHQUFXLENBQUMsQ0FBQztJQUUxQix5Q0FBeUM7SUFDaEMsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUUzQix3Q0FBd0M7SUFDL0IsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUVsQywyQ0FBMkM7SUFDbEMsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFFekMsNENBQTRDO0lBQ25DLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBRXpDLHVDQUF1QztJQUM5QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBRW5DLHdDQUF3QztJQUMvQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBRW5DLGdEQUFnRDtJQUN2QyxVQUFVLEdBQVksS0FBSyxDQUFDO0lBRXJDLHNEQUFzRDtJQUM3QyxPQUFPLEdB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O3NCQUF4QixTQUFTO3VCQUFDLFVBQVU7Z0JBRVosS0FBSztzQkFBYixLQUFLO2dCQWdCSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY2F4LWlucHV0dGV4dGFyZWEnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dHRleHRhcmVhLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0dGV4dGFyZWEuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0VGV4dGFyZWFDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRUZXh0YXJlYUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBMYWJlbCBmb3IgdGhlIHRleHRhcmVhICovXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIFVuaXF1ZSBJRCBmb3IgdGhlIHRleHRhcmVhICovXG4gICAgQElucHV0KCkgdGV4dGFyZWFJZDogc3RyaW5nID0gYHRleHRhcmVhLSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpfWA7XG5cbiAgICAvKiogTnVtYmVyIG9mIHJvd3MgZm9yIHRoZSB0ZXh0YXJlYSAqL1xuICAgIEBJbnB1dCgpIHJvd3M6IG51bWJlciA9IDU7XG5cbiAgICAvKiogTnVtYmVyIG9mIGNvbHVtbnMgZm9yIHRoZSB0ZXh0YXJlYSAqL1xuICAgIEBJbnB1dCgpIGNvbHM6IG51bWJlciA9IDUwO1xuXG4gICAgLyoqIFBsYWNlaG9sZGVyIHRleHQgZm9yIHRoZSB0ZXh0YXJlYSAqL1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBNYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGFsbG93ZWQgKi9cbiAgICBASW5wdXQoKSBtYXhsZW5ndGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIE1pbmltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVxdWlyZWQgKi9cbiAgICBASW5wdXQoKSBtaW5sZW5ndGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRleHRhcmVhIGlzIGRpc2FibGVkICovXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB0ZXh0YXJlYSBpcyByZWFkLW9ubHkgKi9cbiAgICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBhdXRvLXJlc2l6ZSBmZWF0dXJlICovXG4gICAgQElucHV0KCkgYXV0b1Jlc2l6ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFZhcmlhbnQgb2YgdGhlIHRleHRhcmVhOiAnZmlsbGVkJyBvciAnb3V0bGluZWQnICovXG4gICAgQElucHV0KCkgdmFyaWFudDogJ2ZpbGxlZCcgfCAnb3V0bGluZWQnID0gJ291dGxpbmVkJztcblxuICAgIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNoYXJhY3RlciBjb3VudGVyICovXG4gICAgQElucHV0KCkgY2hhckNvdW50ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBWYWx1ZSBvZiB0aGUgdGV4dGFyZWEgKi9cbiAgICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogVGV4dCB0byBkaXNwbGF5IHdoZW4gdGhlIGlucHV0IGlzIHZhbGlkICovXG4gICAgQElucHV0KCkgc3VjY2Vzc1RleHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogVGV4dCB0byBkaXNwbGF5IHdoZW4gdGhlIGlucHV0IGlzIGludmFsaWQgKi9cbiAgICBASW5wdXQoKSBlcnJvclRleHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgaW5wdXQgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZSAqL1xuICAgIEBJbnB1dCgpIGludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHRleHRhcmVhIGlzIHJlc2l6ZWQgKi9cbiAgICBAT3V0cHV0KCkgb25SZXNpemU6IEV2ZW50RW1pdHRlcjxFdmVudCB8IHt9PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQgfCB7fT4oKTtcblxuICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHRleHRhcmVhIGVsZW1lbnQgKi9cbiAgICBAVmlld0NoaWxkKCd0ZXh0YXJlYScpIGVsITogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpIHN0eWxlPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAgIC8qKiBFdmVudCBoYW5kbGVyIGZvciByZXNpemUgZXZlbnRzICovXG4gICAgb25SZXNpemVIYW5kbGVyKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLm9uUmVzaXplLmVtaXQoZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5hdXRvUmVzaXplKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvUmVzaXplKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgLy8gQ2hhbmdlZCBmcm9tIHByaXZhdGUgdG8gcHVibGljIHRvIGFsbG93IGFjY2VzcyBmcm9tIHRlbXBsYXRlXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4ge307XG4gICAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8ICcnO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICB0aGlzLnZhbHVlID0gaW5wdXQudmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcblxuICAgICAgICAvLyBBbHNvIGhhbmRsZSByZXNpemUgaWYgYXV0b1Jlc2l6ZSBpcyBlbmFibGVkXG4gICAgICAgIGlmICh0aGlzLmF1dG9SZXNpemUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2l6ZShldmVudD86IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ICsgJ3B4JztcblxuICAgICAgICBpZiAocGFyc2VGbG9hdCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0KSA+PSBwYXJzZUZsb2F0KHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5tYXhIZWlnaHQpKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3ZlcmZsb3dZID0gJ3Njcm9sbCc7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLm1heEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vblJlc2l6ZS5lbWl0KGV2ZW50IHx8IHt9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2F4LWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgPGxhYmVsIFthdHRyLmZvcl09XCJ0ZXh0YXJlYUlkXCIgY2xhc3M9XCJjYXgtbGFiZWxcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkLW9wYWNpdHknOiBkaXNhYmxlZH1cIj4ge3sgbGFiZWwgfX0gPC9sYWJlbD5cclxuICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgICN0ZXh0YXJlYVxyXG4gICAgICAgIFtyb3dzXT1cInJvd3NcIlxyXG4gICAgICAgIFtjb2xzXT1cImNvbHNcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgW21heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxyXG4gICAgICAgIFttaW5sZW5ndGhdPVwibWlubGVuZ3RoXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seSA/IHRydWUgOiBudWxsXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICdmaWxsZWQtc3R5bGUnOiB2YXJpYW50ID09PSAnZmlsbGVkJyxcclxuICAgICAgJ291dGxpbmVkLXN0eWxlJzogdmFyaWFudCA9PT0gJ291dGxpbmVkJyxcclxuICAgICAgJ2NheC1pbnB1dHRleHRhcmVhLWRpc2FibGVkJzogZGlzYWJsZWQsXHJcbiAgICAgICdkaXNhYmxlZC1vcGFjaXR5JzogZGlzYWJsZWQsXHJcbiAgICAgICdjYXgtaW5wdXQtaW52YWxpZCc6IGludmFsaWRcclxuICAgIH1cIlxyXG4gICAgICAgIGNheElucHV0VGV4dGFyZWFcclxuICAgICAgICBbYXV0b1Jlc2l6ZV09XCJhdXRvUmVzaXplXCJcclxuICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcclxuICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWUgPSAkZXZlbnQ7IHZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KTsgb25DaGFuZ2UoJGV2ZW50KTsgb25Ub3VjaGVkKClcIlxyXG4gICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJzdHlsZVwiXHJcbiAgICA+PC90ZXh0YXJlYT5cclxuXHJcbiAgICA8IS0tIEVycm9yIE1lc3NhZ2Ugd2l0aCBjb25kaXRpb25hbCBvcGFjaXR5IC0tPlxyXG4gICAgPHNtYWxsICpuZ0lmPVwiaW52YWxpZFwiIGlkPVwiaGVscGVyLXRleHRcIiBjbGFzcz1cImNheC1lcnJvclwiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQtb3BhY2l0eSc6IGRpc2FibGVkfVwiPiB7eyBlcnJvclRleHQgfX0gPC9zbWFsbD5cclxuXHJcbiAgICA8IS0tIEhlbHBlciBUZXh0IHdpdGggY29uZGl0aW9uYWwgb3BhY2l0eSAtLT5cclxuICAgIDxzbWFsbCAqbmdJZj1cInN1Y2Nlc3NUZXh0ICYmICFpbnZhbGlkXCIgaWQ9XCJoZWxwZXItdGV4dFwiIGNsYXNzPVwiY2F4LWhlbHBlci10ZXh0XCIgW25nQ2xhc3NdPVwieydkaXNhYmxlZC1vcGFjaXR5JzogZGlzYWJsZWR9XCI+IHt7IHN1Y2Nlc3NUZXh0IH19IDwvc21hbGw+XHJcbjwvZGl2PlxyXG4iXX0=