@openziti/ziti-console-lib 0.6.3 → 0.6.4

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 (82) hide show
  1. package/assets/styles/global.scss +91 -5
  2. package/assets/styles/ziti.css +2 -2
  3. package/esm2022/lib/features/config-editor/config-editor.component.mjs +76 -15
  4. package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs +7 -3
  5. package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs +22 -1
  6. package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +10 -9
  7. package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +2 -2
  8. package/esm2022/lib/features/dynamic-widgets/port-ranges/port-ranges.component.mjs +4 -1
  9. package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +27 -5
  10. package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +21 -13
  11. package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +9 -5
  12. package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +9 -5
  13. package/esm2022/lib/features/json-view/json-view.component.mjs +3 -3
  14. package/esm2022/lib/features/messaging/growler.component.mjs +4 -4
  15. package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +33 -4
  16. package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +2 -4
  17. package/esm2022/lib/features/qr-code/qr-code.component.mjs +4 -1
  18. package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +7 -1
  19. package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +10 -3
  20. package/esm2022/lib/pages/configurations/configurations-page.component.mjs +7 -1
  21. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +2 -2
  22. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.service.mjs +2 -17
  23. package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +2 -2
  24. package/esm2022/lib/pages/edge-routers/edge-routers-page.service.mjs +22 -32
  25. package/esm2022/lib/pages/identities/identities-page.component.mjs +2 -2
  26. package/esm2022/lib/pages/identities/identities-page.service.mjs +19 -30
  27. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +2 -2
  28. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.mjs +3 -18
  29. package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +2 -3
  30. package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +2 -17
  31. package/esm2022/lib/pages/services/services-page.component.mjs +2 -2
  32. package/esm2022/lib/pages/services/services-page.service.mjs +9 -17
  33. package/esm2022/lib/shared/list-page-component.class.mjs +17 -2
  34. package/esm2022/lib/shared/list-page-service.class.mjs +22 -4
  35. package/esm2022/lib/version.mjs +2 -2
  36. package/fesm2022/openziti-ziti-console-lib.mjs +319 -188
  37. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  38. package/lib/features/config-editor/config-editor.component.d.ts +7 -3
  39. package/lib/features/config-editor/config-editor.component.d.ts.map +1 -1
  40. package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts +2 -0
  41. package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts.map +1 -1
  42. package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts +5 -0
  43. package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts.map +1 -1
  44. package/lib/features/dynamic-widgets/number/number-input.component.d.ts +2 -0
  45. package/lib/features/dynamic-widgets/number/number-input.component.d.ts.map +1 -1
  46. package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts +1 -0
  47. package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts.map +1 -1
  48. package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts +8 -6
  49. package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts.map +1 -1
  50. package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts +2 -0
  51. package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts.map +1 -1
  52. package/lib/features/dynamic-widgets/string/string-input.component.d.ts +2 -0
  53. package/lib/features/dynamic-widgets/string/string-input.component.d.ts.map +1 -1
  54. package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts +2 -0
  55. package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts.map +1 -1
  56. package/lib/features/json-view/json-view.component.d.ts +2 -2
  57. package/lib/features/json-view/json-view.component.d.ts.map +1 -1
  58. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +3 -0
  59. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
  60. package/lib/features/projectable-forms/service/service-form.service.d.ts.map +1 -1
  61. package/lib/features/qr-code/qr-code.component.d.ts.map +1 -1
  62. package/lib/pages/auth-policies/auth-policies-page.component.d.ts.map +1 -1
  63. package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +1 -1
  64. package/lib/pages/configurations/configurations-page.component.d.ts.map +1 -1
  65. package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts +0 -2
  66. package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts.map +1 -1
  67. package/lib/pages/edge-routers/edge-routers-page.service.d.ts +5 -3
  68. package/lib/pages/edge-routers/edge-routers-page.service.d.ts.map +1 -1
  69. package/lib/pages/identities/identities-page.service.d.ts +4 -2
  70. package/lib/pages/identities/identities-page.service.d.ts.map +1 -1
  71. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts +0 -2
  72. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts.map +1 -1
  73. package/lib/pages/service-policies/service-policies-page.component.d.ts.map +1 -1
  74. package/lib/pages/service-policies/service-policies-page.service.d.ts +0 -2
  75. package/lib/pages/service-policies/service-policies-page.service.d.ts.map +1 -1
  76. package/lib/pages/services/services-page.service.d.ts +4 -2
  77. package/lib/pages/services/services-page.service.d.ts.map +1 -1
  78. package/lib/shared/list-page-component.class.d.ts +2 -0
  79. package/lib/shared/list-page-component.class.d.ts.map +1 -1
  80. package/lib/shared/list-page-service.class.d.ts +6 -0
  81. package/lib/shared/list-page-service.class.d.ts.map +1 -1
  82. package/package.json +1 -1
@@ -15,11 +15,15 @@ class NumberInputComponent {
15
15
  this.error = '';
16
16
  this.fieldValueChange = new EventEmitter();
17
17
  this.valueChange = new Subject();
18
+ this._isValid = true;
18
19
  }
19
20
  set fieldName(name) {
20
21
  this._fieldName = name;
21
22
  this._idName = name.replace(/\s/g, '').toLowerCase();
22
23
  }
24
+ setIsValid(isValid) {
25
+ this._isValid = isValid;
26
+ }
23
27
  onKeyup() {
24
28
  debounce(() => {
25
29
  this.fieldValueChange.emit(this.fieldValue);
@@ -28,7 +32,7 @@ class NumberInputComponent {
28
32
  }
29
33
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
34
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NumberInputComponent, selector: "lib-number-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
31
- <div [ngClass]="fieldClass">
35
+ <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="{{!_isValid ? 'invalid' : ''}} number-input-container">
32
36
  <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
33
37
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
34
38
  type="number" class="jsonEntry"
@@ -36,15 +40,13 @@ class NumberInputComponent {
36
40
  [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
37
41
  <div *ngIf="error" class="error">{{error}}</div>
38
42
  </div>
39
- `, isInline: true, 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
43
+ `, isInline: true, styles: [".number-input-container{margin:var(--marginSmall) 0}.number-input-container label{margin-bottom:0;margin-top:0}.number-input-container input.error{border-color:red}.number-input-container div.error{color:red}\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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
40
44
  }
41
45
  export { NumberInputComponent };
42
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NumberInputComponent, decorators: [{
43
47
  type: Component,
44
- args: [{
45
- selector: 'lib-number-input',
46
- template: `
47
- <div [ngClass]="fieldClass">
48
+ args: [{ selector: 'lib-number-input', template: `
49
+ <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="{{!_isValid ? 'invalid' : ''}} number-input-container">
48
50
  <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
49
51
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
50
52
  type="number" class="jsonEntry"
@@ -52,8 +54,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
52
54
  [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
53
55
  <div *ngIf="error" class="error">{{error}}</div>
54
56
  </div>
55
- `
56
- }]
57
+ `, styles: [".number-input-container{margin:var(--marginSmall) 0}.number-input-container label{margin-bottom:0;margin-top:0}.number-input-container input.error{border-color:red}.number-input-container div.error{color:red}\n"] }]
57
58
  }], propDecorators: { fieldName: [{
58
59
  type: Input
59
60
  }], fieldValue: [{
@@ -71,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
71
72
  }], fieldValueChange: [{
72
73
  type: Output
73
74
  }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvbnVtYmVyL251bWJlci1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFhYSxvQkFBb0I7SUFiakM7UUFjRSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFNYixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDbkUsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztLQVFqRDtJQW5CQyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQVVELE9BQU87UUFDTCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ1osQ0FBQzsrR0FyQlUsb0JBQW9CO21HQUFwQixvQkFBb0IsaVNBWHJCOzs7Ozs7Ozs7Q0FTWDs7U0FFWSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFiaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixRQUFRLEVBQUU7Ozs7Ozs7OztDQVNYO2lCQUNBOzhCQUljLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7ZGVib3VuY2V9IGZyb20gXCJsb2Rhc2hcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLW51bWJlci1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZENsYXNzXCI+XG4gICAgICA8bGFiZWwgZm9yPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCIgIFtuZ1N0eWxlXT1cInsnY29sb3InOiBsYWJlbENvbG9yfVwiPnt7X2ZpZWxkTmFtZX19PC9sYWJlbD5cbiAgICAgIDxpbnB1dCBpZD1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiXG4gICAgICAgICB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJqc29uRW50cnlcIlxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZXJyb3InOiBlcnJvcn1cIlxuICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJmaWVsZFZhbHVlXCIgKHBhc3RlKT1cIm9uS2V5dXAoKVwiIChrZXl1cCk9XCJvbktleXVwKClcIi8+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImVycm9yXCI+e3tlcnJvcn19PC9kaXY+XG4gICAgPC9kaXY+XG5gXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlcklucHV0Q29tcG9uZW50IHtcbiAgX2ZpZWxkTmFtZSA9ICdGaWVsZCBMYWJlbCc7XG4gIF9pZE5hbWUgPSAnZmllbGRuYW1lJztcbiAgQElucHV0KCkgc2V0IGZpZWxkTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZE5hbWUgPSBuYW1lO1xuICAgIHRoaXMuX2lkTmFtZSA9IG5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIEBJbnB1dCgpIGZpZWxkVmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgcGFyZW50YWdlOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBsYWJlbENvbG9yID0gJyMwMDAwMDAnO1xuICBASW5wdXQoKSBmaWVsZENsYXNzID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yID0gJyc7XG4gIEBPdXRwdXQoKSBmaWVsZFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJ8IHVuZGVmaW5lZD4oKTtcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxudW1iZXJ8IHVuZGVmaW5lZD4gKCk7XG5cbiAgb25LZXl1cCgpIHtcbiAgICBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgfSwgNTAwKSgpO1xuICB9XG59XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvbnVtYmVyL251bWJlci1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFjYSxvQkFBb0I7SUFkakM7UUFlRSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFNYixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDbkUsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQUVoRCxhQUFRLEdBQUcsSUFBSSxDQUFDO0tBV2pCO0lBeEJDLElBQWEsU0FBUyxDQUFDLElBQVk7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBV00sVUFBVSxDQUFDLE9BQU87UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU87UUFDTCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ1osQ0FBQzsrR0ExQlUsb0JBQW9CO21HQUFwQixvQkFBb0IsaVNBWnJCOzs7Ozs7Ozs7R0FTVDs7U0FHVSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFkaEMsU0FBUzsrQkFDRSxrQkFBa0IsWUFDbEI7Ozs7Ozs7OztHQVNUOzhCQU1ZLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7ZGVib3VuY2V9IGZyb20gXCJsb2Rhc2hcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLW51bWJlci1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZENsYXNzICsgKCFfaXNWYWxpZCA/ICdpbnZhbGlkJyA6ICcnKVwiIGNsYXNzPVwie3shX2lzVmFsaWQgPyAnaW52YWxpZCcgOiAnJ319IG51bWJlci1pbnB1dC1jb250YWluZXJcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJzY2hlbWFfe3twYXJlbnRhZ2U/cGFyZW50YWdlKydfJzonJ319e3tfaWROYW1lfX1cIiAgW25nU3R5bGVdPVwieydjb2xvcic6IGxhYmVsQ29sb3J9XCI+e3tfZmllbGROYW1lfX08L2xhYmVsPlxuICAgICAgPGlucHV0IGlkPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCJcbiAgICAgICAgIHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImpzb25FbnRyeVwiXG4gICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlcnJvcic6IGVycm9yfVwiXG4gICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbKG5nTW9kZWwpXT1cImZpZWxkVmFsdWVcIiAocGFzdGUpPVwib25LZXl1cCgpXCIgKGtleXVwKT1cIm9uS2V5dXAoKVwiLz5cbiAgICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57e2Vycm9yfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJ251bWJlci1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlcklucHV0Q29tcG9uZW50IHtcbiAgX2ZpZWxkTmFtZSA9ICdGaWVsZCBMYWJlbCc7XG4gIF9pZE5hbWUgPSAnZmllbGRuYW1lJztcbiAgQElucHV0KCkgc2V0IGZpZWxkTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZE5hbWUgPSBuYW1lO1xuICAgIHRoaXMuX2lkTmFtZSA9IG5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIEBJbnB1dCgpIGZpZWxkVmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgcGFyZW50YWdlOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBsYWJlbENvbG9yID0gJyMwMDAwMDAnO1xuICBASW5wdXQoKSBmaWVsZENsYXNzID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yID0gJyc7XG4gIEBPdXRwdXQoKSBmaWVsZFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJ8IHVuZGVmaW5lZD4oKTtcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxudW1iZXJ8IHVuZGVmaW5lZD4gKCk7XG5cbiAgX2lzVmFsaWQgPSB0cnVlO1xuICBwdWJsaWMgc2V0SXNWYWxpZChpc1ZhbGlkKSB7XG4gICAgdGhpcy5faXNWYWxpZCA9IGlzVmFsaWQ7XG4gIH1cblxuICBvbktleXVwKCkge1xuICAgIGRlYm91bmNlKCgpID0+IHtcbiAgICAgIHRoaXMuZmllbGRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy5maWVsZFZhbHVlKTtcbiAgICB9LCA1MDApKCk7XG4gIH1cbn1cbiJdfQ==
@@ -65,7 +65,7 @@ class ObjectComponent {
65
65
  <div *ngIf="showAdd" class="save-button button" (click)="addClicked()">Add</div>
66
66
  </div>
67
67
  </div>
68
- `, isInline: true, styles: [":host>label{margin-top:0}.wrapper{border-radius:.5rem;padding:var(--paddingMedium);display:flex;flex-direction:column;gap:5px;margin-top:var(--marginMedium)}.wrapper.closed{cursor:pointer}.wrapper .object-main-content[hidden]{display:none}.wrapper .save-button{margin-top:var(--marginSmall);height:35px;min-width:140px}.object-header-container{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.object-header-container .object-header-title{width:100%;display:flex;justify-content:space-between;align-items:center;height:23px;cursor:pointer}.object-header-container .object-label{margin:0;cursor:pointer}.expand-toggle{font-family:zac;font-weight:600;font-size:23px;width:27px;color:var(--stroke);height:20px;margin-top:-3px;cursor:pointer}.expand-toggle:before{content:\"\\e91f\"}.expand-toggle.open{transform:rotate(270deg)}.added-items-list{margin-top:var(--marginSmall);width:100%}.added-items-list label,.added-items-list .added-items-label{margin-top:0}.added-items-list .object-list-items-container{background-color:#ffffff4d;border-radius:var(--inputBorderRadius);display:flex;flex-direction:column;padding:5px}.added-items-list .object-list-items-container .none-added-label{padding-left:var(--paddingSmall);color:var(--white);opacity:.7}.added-items-list .object-list-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.added-items-list .object-list-item .preview-name{color:var(--formBackground);font-weight:600;margin-left:var(--marginSmall);margin-bottom:2px}.added-items-list .object-list-item .icon-clear{color:var(--formBackground);cursor:pointer}.added-items-list .object-list-item .icon-clear:hover{color:var(--primary)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
68
+ `, isInline: true, styles: [":host>label{margin-top:0}.wrapper{border-radius:.3rem;padding:calc(var(--paddingSmall) + 2px) var(--paddingXL);display:flex;flex-direction:column;gap:5px;margin-top:var(--marginXL)}.wrapper.closed{cursor:pointer}.wrapper .object-main-content{display:flex;flex-direction:column;gap:5px}.wrapper .object-main-content[hidden]{display:none}.wrapper .save-button{margin-top:var(--marginSmall);margin-bottom:var(--marginSmall);height:35px;min-width:140px;border-style:solid;border-width:1px;border-color:var(--stroke)}.object-header-container{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.object-header-container .object-header-title{width:100%;display:flex;justify-content:space-between;align-items:center;height:23px;cursor:pointer}.object-header-container .object-label{margin:0;cursor:pointer}.expand-toggle{font-family:zac;font-weight:600;font-size:23px;width:15px;color:var(--stroke);height:20px;margin-top:-3px;cursor:pointer}.expand-toggle:before{content:\"\\e91f\"}.expand-toggle.open{transform:rotate(270deg);margin-top:7px;margin-right:3px}.added-items-list{margin-top:var(--marginSmall);width:100%}.added-items-list label,.added-items-list .added-items-label{margin-top:0}.added-items-list .object-list-items-container{background-color:#ffffff4d;border-radius:var(--inputBorderRadius);display:flex;flex-direction:column;padding:5px}.added-items-list .object-list-items-container .none-added-label{padding-left:var(--paddingSmall);color:var(--white);opacity:.7}.added-items-list .object-list-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.added-items-list .object-list-item .preview-name{color:var(--formBackground);font-weight:600;margin-left:var(--marginSmall);margin-bottom:2px}.added-items-list .object-list-item .icon-clear{color:var(--formBackground);cursor:pointer}.added-items-list .object-list-item .icon-clear:hover{color:var(--primary)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
69
69
  }
70
70
  export { ObjectComponent };
71
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ObjectComponent, decorators: [{
@@ -92,7 +92,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
92
92
  <div *ngIf="showAdd" class="save-button button" (click)="addClicked()">Add</div>
93
93
  </div>
94
94
  </div>
95
- `, styles: [":host>label{margin-top:0}.wrapper{border-radius:.5rem;padding:var(--paddingMedium);display:flex;flex-direction:column;gap:5px;margin-top:var(--marginMedium)}.wrapper.closed{cursor:pointer}.wrapper .object-main-content[hidden]{display:none}.wrapper .save-button{margin-top:var(--marginSmall);height:35px;min-width:140px}.object-header-container{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.object-header-container .object-header-title{width:100%;display:flex;justify-content:space-between;align-items:center;height:23px;cursor:pointer}.object-header-container .object-label{margin:0;cursor:pointer}.expand-toggle{font-family:zac;font-weight:600;font-size:23px;width:27px;color:var(--stroke);height:20px;margin-top:-3px;cursor:pointer}.expand-toggle:before{content:\"\\e91f\"}.expand-toggle.open{transform:rotate(270deg)}.added-items-list{margin-top:var(--marginSmall);width:100%}.added-items-list label,.added-items-list .added-items-label{margin-top:0}.added-items-list .object-list-items-container{background-color:#ffffff4d;border-radius:var(--inputBorderRadius);display:flex;flex-direction:column;padding:5px}.added-items-list .object-list-items-container .none-added-label{padding-left:var(--paddingSmall);color:var(--white);opacity:.7}.added-items-list .object-list-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.added-items-list .object-list-item .preview-name{color:var(--formBackground);font-weight:600;margin-left:var(--marginSmall);margin-bottom:2px}.added-items-list .object-list-item .icon-clear{color:var(--formBackground);cursor:pointer}.added-items-list .object-list-item .icon-clear:hover{color:var(--primary)}\n"] }]
95
+ `, styles: [":host>label{margin-top:0}.wrapper{border-radius:.3rem;padding:calc(var(--paddingSmall) + 2px) var(--paddingXL);display:flex;flex-direction:column;gap:5px;margin-top:var(--marginXL)}.wrapper.closed{cursor:pointer}.wrapper .object-main-content{display:flex;flex-direction:column;gap:5px}.wrapper .object-main-content[hidden]{display:none}.wrapper .save-button{margin-top:var(--marginSmall);margin-bottom:var(--marginSmall);height:35px;min-width:140px;border-style:solid;border-width:1px;border-color:var(--stroke)}.object-header-container{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.object-header-container .object-header-title{width:100%;display:flex;justify-content:space-between;align-items:center;height:23px;cursor:pointer}.object-header-container .object-label{margin:0;cursor:pointer}.expand-toggle{font-family:zac;font-weight:600;font-size:23px;width:15px;color:var(--stroke);height:20px;margin-top:-3px;cursor:pointer}.expand-toggle:before{content:\"\\e91f\"}.expand-toggle.open{transform:rotate(270deg);margin-top:7px;margin-right:3px}.added-items-list{margin-top:var(--marginSmall);width:100%}.added-items-list label,.added-items-list .added-items-label{margin-top:0}.added-items-list .object-list-items-container{background-color:#ffffff4d;border-radius:var(--inputBorderRadius);display:flex;flex-direction:column;padding:5px}.added-items-list .object-list-items-container .none-added-label{padding-left:var(--paddingSmall);color:var(--white);opacity:.7}.added-items-list .object-list-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.added-items-list .object-list-item .preview-name{color:var(--formBackground);font-weight:600;margin-left:var(--marginSmall);margin-bottom:2px}.added-items-list .object-list-item .icon-clear{color:var(--formBackground);cursor:pointer}.added-items-list .object-list-item .icon-clear:hover{color:var(--primary)}\n"] }]
96
96
  }], ctorParameters: function () { return []; }, propDecorators: { wrapperContents: [{
97
97
  type: ViewChild,
98
98
  args: ["wrappercontents", { read: ViewContainerRef, static: true }]
@@ -83,6 +83,9 @@ class PortRangesComponent {
83
83
  });
84
84
  this.invalid = invalid;
85
85
  }
86
+ setIsValid(isValid) {
87
+ this.invalid = !isValid;
88
+ }
86
89
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PortRangesComponent, deps: [{ token: i1.ValidationService }], target: i0.ɵɵFactoryTarget.Component }); }
87
90
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PortRangesComponent, selector: "lib-port-ranges", inputs: { fieldValue: "fieldValue" }, outputs: { fieldValueChanged: "fieldValueChanged" }, ngImport: i0, template: "<label>PORT RANGES</label>\n<p-chips\n (onAdd)=\"validateConfig()\"\n (onRemove)=\"validateConfig()\"\n (keyup)=\"onKeyup($event)\"\n [(ngModel)]=\"fieldValue\"\n [allowDuplicate]=\"false\"\n [ngClass]=\"{ error: invalid }\"\n [placeholder]=\"'80 120-125 443 8080'\"\n [addOnBlur]=\"true\"\n separator=\",\"\n>\n</p-chips>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.Chips, selector: "p-chips", inputs: ["style", "styleClass", "disabled", "field", "placeholder", "max", "ariaLabel", "ariaLabelledBy", "tabindex", "inputId", "allowDuplicate", "inputStyle", "inputStyleClass", "addOnTab", "addOnBlur", "separator", "showClear"], outputs: ["onAdd", "onRemove", "onFocus", "onBlur", "onChipClick", "onClear"] }] }); }
88
91
  }
@@ -95,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
95
98
  }], fieldValueChanged: [{
96
99
  type: Output
97
100
  }] } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydC1yYW5nZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9wb3J0LXJhbmdlcy9wb3J0LXJhbmdlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvZHluYW1pYy13aWRnZXRzL3BvcnQtcmFuZ2VzL3BvcnQtcmFuZ2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBR3JFLE1BS2EsbUJBQW1CO0lBTzlCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBTC9DLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFDcEIsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekUsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUNqQixZQUFPLEdBQVksS0FBSyxDQUFDO0lBRWtDLENBQUM7SUFFNUQsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxPQUFPLENBQUMsRUFBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBTTtRQUNsQixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDckMsSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUU7WUFDbEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO1lBQzVDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNqQjtJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsT0FBTztTQUNSO1FBQ0QsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDdEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNyQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNmLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ2YsT0FBTztpQkFDUjthQUNGO2lCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQzVCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ2hDLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ2YsT0FBTztpQkFDUjtxQkFBTSxJQUFJLEtBQUssR0FBRyxLQUFLLEVBQUU7b0JBQ3hCLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ2YsT0FBTztpQkFDUjthQUNGO2lCQUFNO2dCQUNMLE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDaEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7K0dBaEVVLG1CQUFtQjttR0FBbkIsbUJBQW1CLGtKQ3hCaEMsbVlBWVU7O1NEWUcsbUJBQW1COzRGQUFuQixtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCO3dHQU1sQixVQUFVO3NCQUFsQixLQUFLO2dCQUNJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtWYWxpZGF0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcG9ydC1yYW5nZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9ydC1yYW5nZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wb3J0LXJhbmdlcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBvcnRSYW5nZXNDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIGZpZWxkVmFsdWU6IGFueSA9ICcnO1xuICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIGVycm9yczogYW55ID0ge307XG4gIGludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZSkge31cblxuICBnZXRQcm9wZXJ0aWVzKCkge1xuICAgIGlmICghdGhpcy5maWVsZFZhbHVlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IHJhbmdlcyA9IHRoaXMudmFsaWRhdGlvblNlcnZpY2UuZ2V0UG9ydFJhbmdlcyh0aGlzLmZpZWxkVmFsdWUpO1xuICAgIHJldHVybiBbe2tleTogJ3BvcnRSYW5nZXMnLCB2YWx1ZTogcmFuZ2VzfV07XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKHJhbmdlcykge1xuICAgIGlmICghcmFuZ2VzKSB7XG4gICAgICB0aGlzLmZpZWxkVmFsdWUgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5maWVsZFZhbHVlID0gdGhpcy52YWxpZGF0aW9uU2VydmljZS5jb21iaW5lUG9ydFJhbmdlcyhyYW5nZXMpO1xuICB9XG5cbiAgb25LZXl1cChldmVudDogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gZXZlbnQua2V5Py50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChrZXkgPT09IFwiIFwiIHx8IGtleSA9PT0gJ2VudGVyJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBlbGVtZW50LmJsdXIoKTtcbiAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUNvbmZpZygpIHtcbiAgICBpZiAoIXRoaXMuZmllbGRWYWx1ZSkge1xuICAgICAgdGhpcy5pbnZhbGlkID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBpbnZhbGlkID0gZmFsc2U7XG4gICAgdGhpcy5maWVsZFZhbHVlLmZvckVhY2goKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB2YWxzID0gdmFsLnNwbGl0KCctJyk7XG4gICAgICBpZiAodmFscy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29uc3QgcG9ydCA9IHBhcnNlSW50KHZhbCk7XG4gICAgICAgIGlmIChpc05hTihwb3J0KSkge1xuICAgICAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh2YWxzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBjb25zdCBwb3J0MSA9IHBhcnNlSW50KHZhbHNbMF0pO1xuICAgICAgICBjb25zdCBwb3J0MiA9IHBhcnNlSW50KHZhbHNbMV0pO1xuICAgICAgICBpZiAoaXNOYU4ocG9ydDEpIHx8IGlzTmFOKHBvcnQyKSkge1xuICAgICAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChwb3J0MSA+IHBvcnQyKSB7XG4gICAgICAgICAgaW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnZhbGlkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmludmFsaWQgPSBpbnZhbGlkO1xuICB9XG59XG4iLCI8bGFiZWw+UE9SVCBSQU5HRVM8L2xhYmVsPlxuPHAtY2hpcHNcbiAgICAgICAgKG9uQWRkKT1cInZhbGlkYXRlQ29uZmlnKClcIlxuICAgICAgICAob25SZW1vdmUpPVwidmFsaWRhdGVDb25maWcoKVwiXG4gICAgICAgIChrZXl1cCk9XCJvbktleXVwKCRldmVudClcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkVmFsdWVcIlxuICAgICAgICBbYWxsb3dEdXBsaWNhdGVdPVwiZmFsc2VcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGVycm9yOiBpbnZhbGlkIH1cIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJzgwIDEyMC0xMjUgNDQzIDgwODAnXCJcbiAgICAgICAgW2FkZE9uQmx1cl09XCJ0cnVlXCJcbiAgICAgICAgc2VwYXJhdG9yPVwiLFwiXG4+XG48L3AtY2hpcHM+Il19
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydC1yYW5nZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9wb3J0LXJhbmdlcy9wb3J0LXJhbmdlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvZHluYW1pYy13aWRnZXRzL3BvcnQtcmFuZ2VzL3BvcnQtcmFuZ2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBR3JFLE1BS2EsbUJBQW1CO0lBTzlCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBTC9DLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFDcEIsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekUsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUNqQixZQUFPLEdBQVksS0FBSyxDQUFDO0lBRWtDLENBQUM7SUFFNUQsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxPQUFPLENBQUMsRUFBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBTTtRQUNsQixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDckMsSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUU7WUFDbEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO1lBQzVDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNqQjtJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsT0FBTztTQUNSO1FBQ0QsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDdEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNyQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNmLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ2YsT0FBTztpQkFDUjthQUNGO2lCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQzVCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ2hDLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ2YsT0FBTztpQkFDUjtxQkFBTSxJQUFJLEtBQUssR0FBRyxLQUFLLEVBQUU7b0JBQ3hCLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ2YsT0FBTztpQkFDUjthQUNGO2lCQUFNO2dCQUNMLE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDaEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxVQUFVLENBQUMsT0FBTztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBQzFCLENBQUM7K0dBcEVVLG1CQUFtQjttR0FBbkIsbUJBQW1CLGtKQ3hCaEMsbVlBWVU7O1NEWUcsbUJBQW1COzRGQUFuQixtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCO3dHQU1sQixVQUFVO3NCQUFsQixLQUFLO2dCQUNJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtWYWxpZGF0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcG9ydC1yYW5nZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9ydC1yYW5nZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wb3J0LXJhbmdlcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBvcnRSYW5nZXNDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIGZpZWxkVmFsdWU6IGFueSA9ICcnO1xuICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIGVycm9yczogYW55ID0ge307XG4gIGludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZSkge31cblxuICBnZXRQcm9wZXJ0aWVzKCkge1xuICAgIGlmICghdGhpcy5maWVsZFZhbHVlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IHJhbmdlcyA9IHRoaXMudmFsaWRhdGlvblNlcnZpY2UuZ2V0UG9ydFJhbmdlcyh0aGlzLmZpZWxkVmFsdWUpO1xuICAgIHJldHVybiBbe2tleTogJ3BvcnRSYW5nZXMnLCB2YWx1ZTogcmFuZ2VzfV07XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKHJhbmdlcykge1xuICAgIGlmICghcmFuZ2VzKSB7XG4gICAgICB0aGlzLmZpZWxkVmFsdWUgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5maWVsZFZhbHVlID0gdGhpcy52YWxpZGF0aW9uU2VydmljZS5jb21iaW5lUG9ydFJhbmdlcyhyYW5nZXMpO1xuICB9XG5cbiAgb25LZXl1cChldmVudDogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gZXZlbnQua2V5Py50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChrZXkgPT09IFwiIFwiIHx8IGtleSA9PT0gJ2VudGVyJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBlbGVtZW50LmJsdXIoKTtcbiAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUNvbmZpZygpIHtcbiAgICBpZiAoIXRoaXMuZmllbGRWYWx1ZSkge1xuICAgICAgdGhpcy5pbnZhbGlkID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBpbnZhbGlkID0gZmFsc2U7XG4gICAgdGhpcy5maWVsZFZhbHVlLmZvckVhY2goKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB2YWxzID0gdmFsLnNwbGl0KCctJyk7XG4gICAgICBpZiAodmFscy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29uc3QgcG9ydCA9IHBhcnNlSW50KHZhbCk7XG4gICAgICAgIGlmIChpc05hTihwb3J0KSkge1xuICAgICAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh2YWxzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBjb25zdCBwb3J0MSA9IHBhcnNlSW50KHZhbHNbMF0pO1xuICAgICAgICBjb25zdCBwb3J0MiA9IHBhcnNlSW50KHZhbHNbMV0pO1xuICAgICAgICBpZiAoaXNOYU4ocG9ydDEpIHx8IGlzTmFOKHBvcnQyKSkge1xuICAgICAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChwb3J0MSA+IHBvcnQyKSB7XG4gICAgICAgICAgaW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnZhbGlkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmludmFsaWQgPSBpbnZhbGlkO1xuICB9XG5cbiAgcHVibGljIHNldElzVmFsaWQoaXNWYWxpZCkge1xuICAgIHRoaXMuaW52YWxpZCA9ICFpc1ZhbGlkO1xuICB9XG59XG4iLCI8bGFiZWw+UE9SVCBSQU5HRVM8L2xhYmVsPlxuPHAtY2hpcHNcbiAgICAgICAgKG9uQWRkKT1cInZhbGlkYXRlQ29uZmlnKClcIlxuICAgICAgICAob25SZW1vdmUpPVwidmFsaWRhdGVDb25maWcoKVwiXG4gICAgICAgIChrZXl1cCk9XCJvbktleXVwKCRldmVudClcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkVmFsdWVcIlxuICAgICAgICBbYWxsb3dEdXBsaWNhdGVdPVwiZmFsc2VcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGVycm9yOiBpbnZhbGlkIH1cIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJzgwIDEyMC0xMjUgNDQzIDgwODAnXCJcbiAgICAgICAgW2FkZE9uQmx1cl09XCJ0cnVlXCJcbiAgICAgICAgc2VwYXJhdG9yPVwiLFwiXG4+XG48L3AtY2hpcHM+Il19
@@ -50,6 +50,12 @@ class ProtocolAddressPortInputComponent {
50
50
  this.portFieldName = 'Port';
51
51
  this.checkAddressDebounced = debounce(this.checkAddress, 100, { maxWait: 100, leading: true });
52
52
  this.errors = {};
53
+ this.props = [
54
+ { key: 'protocol', value: undefined },
55
+ { key: 'address', value: undefined },
56
+ { key: 'hostname', value: undefined },
57
+ { key: 'port', value: undefined }
58
+ ];
53
59
  this._addressChanged = false;
54
60
  }
55
61
  ngOnInit() {
@@ -82,13 +88,29 @@ class ProtocolAddressPortInputComponent {
82
88
  const address = isEmpty(this.address) ? undefined : this.address;
83
89
  const hostname = isEmpty(this.hostname) ? undefined : this.hostname;
84
90
  const port = !isNumber(this.port) ? undefined : this.port;
85
- const props = [
91
+ this.props = [
86
92
  { key: 'protocol', value: protocol },
87
- { key: 'address', value: address },
88
- { key: 'hostname', value: hostname },
89
93
  { key: 'port', value: port }
90
94
  ];
91
- return props;
95
+ if (this.showAddress) {
96
+ this.props.push({ key: 'address', value: address });
97
+ }
98
+ if (this.showHostName) {
99
+ this.props.push({ key: 'hostname', value: hostname });
100
+ }
101
+ return this.props;
102
+ }
103
+ setValidationErrors(propertyPath = '', validationErrors) {
104
+ this.props.forEach((prop) => {
105
+ const hasValidationError = validationErrors?.some((error) => {
106
+ let pathToMach = error.instancePath;
107
+ if (!isEmpty(error?.params?.missingProperty)) {
108
+ pathToMach += '/' + error?.params?.missingProperty;
109
+ }
110
+ return pathToMach === propertyPath + '/' + prop.key;
111
+ });
112
+ this.errors[prop.key] = hasValidationError;
113
+ });
92
114
  }
93
115
  isValid() {
94
116
  this.errors = {};
@@ -177,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
177
199
  }], protocolChange: [{
178
200
  type: Output
179
201
  }] } });
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2wtYWRkcmVzcy1wb3J0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvcHJvdG9jb2wtYWRkcmVzcy1wb3J0L3Byb3RvY29sLWFkZHJlc3MtcG9ydC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvZHluYW1pYy13aWRnZXRzL3Byb3RvY29sLWFkZHJlc3MtcG9ydC9wcm90b2NvbC1hZGRyZXNzLXBvcnQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQUMsU0FBUyxFQUFXLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUE4QixNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sQ0FBQyxFQUFFLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7OztBQUdwRSxNQUthLGlDQUFpQztJQW1DNUMsWUFBb0IsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFqQy9DLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFD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RyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRG9DaGVjaywgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgXywge2RlYm91bmNlLCBpc0VtcHR5LCBpc051bWJlciwgaXNOaWwsIGlzTmFOfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQge1ZhbGlkYXRpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdmFsaWRhdGlvbi5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1wcm90b2NvbC1hZGRyZXNzLXBvcnQtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvdG9jb2wtYWRkcmVzcy1wb3J0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvdG9jb2wtYWRkcmVzcy1wb3J0LWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUHJvdG9jb2xBZGRyZXNzUG9ydElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrIHtcbiAgQElucHV0KCkgcHJvdG9jb2xMaXN0OiBhbnk7XG4gIEBJbnB1dCgpIHNob3dQcm90b2NvbCA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dBZGRyZXNzID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0hvc3ROYW1lID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1BvcnQgPSB0cnVlO1xuICBASW5wdXQoKSBkaXNhYmxlUHJvdG9jb2wgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZUFkZHJlc3MgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZUhvc3ROYW1lID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVQb3J0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHByb3RvY29sOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFkZHJlc3M6IHN0cmluZztcbiAgQElucHV0KCkgaG9zdG5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgcG9ydDogbnVtYmVyO1xuICBASW5wdXQoKSBwYXJlbnRhZ2U6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIGxhYmVsQ29sb3IgPSAnIzAwMDAwMCc7XG4gIEBJbnB1dCgpIGxhYmVsUHJlZml4ID0gJyc7XG4gIEBJbnB1dCgpIGZpZWxkQ2xhc3MgPSAnJztcbiAgQElucHV0KCkgZXJyb3IgPSAnJztcbiAgQE91dHB1dCgpIGZpZWxkVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgYWRkcmVzc0NoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGhvc3RuYW1lQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcHJvdG9jb2xDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIHZhbHVlQ2hhbmdlID0gbmV3IFN1YmplY3Q8YW55PiAoKTtcblxuICBwcm90b2NvbEZpZWxkTmFtZSA9ICdQcm90b2NvbCc7XG4gIGFkZHJlc3NGaWVsZE5hbWUgPSAnQWRkcmVzcyc7XG4gIGhvc3RuYW1lRmllbGROYW1lID0gJ0hvc3QgTmFtZSc7XG4gIHBvcnRGaWVsZE5hbWUgPSAnUG9ydCc7XG5cbiAgY2hlY2tBZGRyZXNzRGVib3VuY2VkID0gZGVib3VuY2UodGhpcy5jaGVja0FkZHJlc3MsIDEwMCwge21heFdhaXQ6IDEwMCwgbGVhZGluZzogdHJ1ZX0pO1xuXG4gIGVycm9ycyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlKSB7XG4gIH1cbiAgbmdPbkluaXQoKSB7XG5cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICB0aGlzLmNoZWNrQWRkcmVzc0RlYm91bmNlZCgpO1xuICB9XG5cbiAgX2FkZHJlc3NDaGFuZ2VkID0gZmFsc2U7XG4gIF9wcmV2QWRkcmVzcztcbiAgY2hlY2tBZGRyZXNzKCkge1xuICAgIHRoaXMuX2FkZHJlc3NDaGFuZ2VkID0gIV8uaXNFcXVhbCh0aGlzLl9wcmV2QWRkcmVzcywgdGhpcy5hZGRyZXNzKTtcbiAgICB0aGlzLmFkZHJlc3NDaGFuZ2UuZW1pdCh0aGlzLmFkZHJlc3MpO1xuICB9XG5cbiAgdXBkYXRlKCkge1xuICAgIHRoaXMucG9ydENoYW5nZS5lbWl0KHRoaXMucG9ydCk7XG4gICAgdGhpcy5hZGRyZXNzQ2hhbmdlLmVtaXQodGhpcy5hZGRyZXNzKTtcbiAgICB0aGlzLmhvc3RuYW1lQ2hhbmdlLmVtaXQodGhpcy5ob3N0bmFtZSk7XG4gICAgdGhpcy5wcm90b2NvbENoYW5nZS5lbWl0KHRoaXMucHJvdG9jb2wpO1xuICB9XG5cbiAgZ2V0IGNsYXNzTmFtZSgpIHtcbiAgICBsZXQgY2xhc3NOYW1lID0gJ2FkZHJlc3NGdWxsJ1xuICAgIGlmICghdGhpcy5zaG93UHJvdG9jb2wgJiYgKHRoaXMuc2hvd0hvc3ROYW1lIHx8IHRoaXMuc2hvd0FkZHJlc3MpICYmICh0aGlzLnNob3dQb3J0KSkge1xuICAgICAgY2xhc3NOYW1lID0gJ2hvc3QtbmFtZS1wb3J0JztcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnNob3dQcm90b2NvbCAmJiAhdGhpcy5zaG93UG9ydCAmJiAodGhpcy5zaG93SG9zdE5hbWUgfHwgdGhpcy5zaG93QWRkcmVzcykpIHtcbiAgICAgIGNsYXNzTmFtZSA9ICdhZGRyZXNzLW9ubHknO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG5cbiAgZ2V0UHJvcGVydGllcygpIHtcbiAgICBjb25zdCBwcm90b2NvbCA9IGlzRW1wdHkodGhpcy5wcm90b2NvbCkgPyB1bmRlZmluZWQgOiB0aGlzLnByb3RvY29sO1xuICAgIGNvbnN0IGFkZHJlc3MgPSBpc0VtcHR5KHRoaXMuYWRkcmVzcykgPyB1bmRlZmluZWQgOiB0aGlzLmFkZHJlc3M7XG4gICAgY29uc3QgaG9zdG5hbWUgPSBpc0VtcHR5KHRoaXMuaG9zdG5hbWUpID8gdW5kZWZpbmVkIDogdGhpcy5ob3N0bmFtZTtcbiAgICBjb25zdCBwb3J0ID0gIWlzTnVtYmVyKHRoaXMucG9ydCkgPyB1bmRlZmluZWQgOiB0aGlzLnBvcnQ7XG5cbiAgICBjb25zdCBwcm9wcyA9IFtcbiAgICAgIHtrZXk6ICdwcm90b2NvbCcsIHZhbHVlOiBwcm90b2NvbH0sXG4gICAgICB7a2V5OiAnYWRkcmVzcycsIHZhbHVlOiBhZGRyZXNzfSxcbiAgICAgIHtrZXk6ICdob3N0bmFtZScsIHZhbHVlOiBob3N0bmFtZX0sXG4gICAgICB7a2V5OiAncG9ydCcsIHZhbHVlOiBwb3J0fVxuICAgIF07XG4gICAgcmV0dXJuIHByb3BzO1xuICB9XG5cbiAgaXNWYWxpZCgpIHtcbiAgICB0aGlzLmVycm9ycyA9IHt9O1xuICAgIGlmICghaXNFbXB0eSh0aGlzLnBhcmVudGFnZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG93UHJvdG9jb2wgJiYgIXRoaXMuZGlzYWJsZVByb3RvY29sKSB7XG4gICAgICBpZihpc0VtcHR5KHRoaXMucHJvdG9jb2wpKSB7XG4gICAgICAgIHRoaXMuZXJyb3JzWydwcm90b2NvbCddID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd0FkZHJlc3MgJiYgIXRoaXMuZGlzYWJsZUFkZHJlc3MpIHtcbiAgICAgIGlmKGlzRW1wdHkodGhpcy5hZGRyZXNzKSkge1xuICAgICAgICB0aGlzLmVycm9yc1snYWRkcmVzcyddID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd0hvc3ROYW1lICYmICF0aGlzLmRpc2FibGVIb3N0TmFtZSkge1xuICAgICAgaWYoaXNFbXB0eSh0aGlzLmhvc3RuYW1lKSkge1xuICAgICAgICB0aGlzLmVycm9yc1snaG9zdG5hbWUnXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dQb3J0ICYmICF0aGlzLmRpc2FibGVQb3J0KSB7XG4gICAgICBpZihpc05pbCh0aGlzLnBvcnQpIHx8IGlzTmFOKHRoaXMucG9ydCkpIHtcbiAgICAgICAgdGhpcy5lcnJvcnNbJ3BvcnQnXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpc0VtcHR5KHRoaXMuZXJyb3JzKTtcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMoZGF0YTogYW55KSB7XG4gICAgdGhpcy5wcm90b2NvbCA9IGRhdGEucHJvdG9jb2w7XG4gICAgdGhpcy5hZGRyZXNzID0gZGF0YS5hZGRyZXNzO1xuICAgIHRoaXMucG9ydCA9IGRhdGEucG9ydDtcbiAgICB0aGlzLmhvc3RuYW1lID0gZGF0YS5ob3N0bmFtZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdyaWQge3tjbGFzc05hbWV9fVwiPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93UHJvdG9jb2xcIiBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6IGRpc2FibGVQcm90b2NvbCwgaW52YWxpZDogZXJyb3JzWydwcm90b2NvbCddfVwiPlxuICAgICAgICA8bGliLXNlbGVjdG9yLWlucHV0IFtmaWVsZE5hbWVdPVwicHJvdG9jb2xGaWVsZE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFsoZmllbGRWYWx1ZSldPVwicHJvdG9jb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbENvbG9yXT1cImxhYmVsQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZUxpc3RdPVwiWyd0Y3AnLCAndWRwJ11cIlxuICAgICAgICAgICAgICAgICAgICAgIChmaWVsZFZhbHVlQ2hhbmdlKT1cInVwZGF0ZSgpXCJcbiAgICAgICAgPjwvbGliLXNlbGVjdG9yLWlucHV0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJzaG93QWRkcmVzc1wiIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogZGlzYWJsZUFkZHJlc3MsIGludmFsaWQ6IGVycm9yc1snYWRkcmVzcyddfVwiPlxuICAgICAgICA8bGliLXN0cmluZy1pbnB1dCBbZmllbGROYW1lXT1cImFkZHJlc3NGaWVsZE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBbKGZpZWxkVmFsdWUpXT1cImFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxDb2xvcl09XCJsYWJlbENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidob3N0Lm5hbWUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkVmFsdWVDaGFuZ2UpPVwidXBkYXRlKClcIlxuICAgICAgICA+PC9saWItc3RyaW5nLWlucHV0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJzaG93SG9zdE5hbWVcIiBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6IGRpc2FibGVIb3N0TmFtZSwgaW52YWxpZDogZXJyb3JzWydob3N0bmFtZSddfVwiPlxuICAgICAgICA8bGliLXN0cmluZy1pbnB1dCBbZmllbGROYW1lXT1cImhvc3RuYW1lRmllbGROYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhmaWVsZFZhbHVlKV09XCJob3N0bmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbENvbG9yXT1cImxhYmVsQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2hvc3QubmFtZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGRWYWx1ZUNoYW5nZSk9XCJ1cGRhdGUoKVwiXG4gICAgICAgID48L2xpYi1zdHJpbmctaW5wdXQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInNob3dQb3J0XCIgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiBkaXNhYmxlUG9ydCwgaW52YWxpZDogZXJyb3JzWydwb3J0J119XCI+XG4gICAgICAgIDxsaWItbnVtYmVyLWlucHV0IFtmaWVsZE5hbWVdPVwicG9ydEZpZWxkTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIFsoZmllbGRWYWx1ZSldPVwicG9ydFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbENvbG9yXT1cImxhYmVsQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJzAnXCJcbiAgICAgICAgICAgICAgICAgICAgKGZpZWxkVmFsdWVDaGFuZ2UpPVwidXBkYXRlKClcIlxuICAgICAgICA+PC9saWItbnVtYmVyLWlucHV0PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2wtYWRkcmVzcy1wb3J0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvcHJvdG9jb2wtYWRkcmVzcy1wb3J0L3Byb3RvY29sLWFkZHJlc3MtcG9ydC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvZHluYW1pYy13aWRnZXRzL3Byb3RvY29sLWFkZHJlc3MtcG9ydC9wcm90b2NvbC1hZGRyZXNzLXBvcnQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQUMsU0FBUyxFQUFXLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUE4QixNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sQ0FBQyxFQUFFLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7OztBQUdwRSxNQUthLGlDQUFpQztJQTBDNUMsWUFBb0IsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF4Qy9DLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFD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O2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBEb0NoZWNrLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCBfLCB7ZGVib3VuY2UsIGlzRW1wdHksIGlzTnVtYmVyLCBpc05pbCwgaXNOYU59IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7VmFsaWRhdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy92YWxpZGF0aW9uLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXByb3RvY29sLWFkZHJlc3MtcG9ydC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm90b2NvbC1hZGRyZXNzLXBvcnQtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm90b2NvbC1hZGRyZXNzLXBvcnQtaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm90b2NvbEFkZHJlc3NQb3J0SW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xuICBASW5wdXQoKSBwcm90b2NvbExpc3Q6IGFueTtcbiAgQElucHV0KCkgc2hvd1Byb3RvY29sID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0FkZHJlc3MgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93SG9zdE5hbWUgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93UG9ydCA9IHRydWU7XG4gIEBJbnB1dCgpIGRpc2FibGVQcm90b2NvbCA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlQWRkcmVzcyA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlSG9zdE5hbWUgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZVBvcnQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHJvdG9jb2w6IHN0cmluZztcbiAgQElucHV0KCkgYWRkcmVzczogc3RyaW5nO1xuICBASW5wdXQoKSBob3N0bmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBwb3J0OiBudW1iZXI7XG4gIEBJbnB1dCgpIHBhcmVudGFnZTogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgbGFiZWxDb2xvciA9ICcjMDAwMDAwJztcbiAgQElucHV0KCkgbGFiZWxQcmVmaXggPSAnJztcbiAgQElucHV0KCkgZmllbGRDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBlcnJvciA9ICcnO1xuICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHBvcnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBhZGRyZXNzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgaG9zdG5hbWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBwcm90b2NvbENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxhbnk+ICgpO1xuXG4gIHByb3RvY29sRmllbGROYW1lID0gJ1Byb3RvY29sJztcbiAgYWRkcmVzc0ZpZWxkTmFtZSA9ICdBZGRyZXNzJztcbiAgaG9zdG5hbWVGaWVsZE5hbWUgPSAnSG9zdCBOYW1lJztcbiAgcG9ydEZpZWxkTmFtZSA9ICdQb3J0JztcblxuICBjaGVja0FkZHJlc3NEZWJvdW5jZWQgPSBkZWJvdW5jZSh0aGlzLmNoZWNrQWRkcmVzcywgMTAwLCB7bWF4V2FpdDogMTAwLCBsZWFkaW5nOiB0cnVlfSk7XG5cbiAgZXJyb3JzID0ge307XG5cbiAgcHJvcHMgPSBbXG4gICAge2tleTogJ3Byb3RvY29sJywgdmFsdWU6IHVuZGVmaW5lZH0sXG4gICAge2tleTogJ2FkZHJlc3MnLCB2YWx1ZTogdW5kZWZpbmVkfSxcbiAgICB7a2V5OiAnaG9zdG5hbWUnLCB2YWx1ZTogdW5kZWZpbmVkfSxcbiAgICB7a2V5OiAncG9ydCcsIHZhbHVlOiB1bmRlZmluZWR9XG4gIF1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZSkge1xuICB9XG4gIG5nT25Jbml0KCkge1xuXG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgdGhpcy5jaGVja0FkZHJlc3NEZWJvdW5jZWQoKTtcbiAgfVxuXG4gIF9hZGRyZXNzQ2hhbmdlZCA9IGZhbHNlO1xuICBfcHJldkFkZHJlc3M7XG4gIGNoZWNrQWRkcmVzcygpIHtcbiAgICB0aGlzLl9hZGRyZXNzQ2hhbmdlZCA9ICFfLmlzRXF1YWwodGhpcy5fcHJldkFkZHJlc3MsIHRoaXMuYWRkcmVzcyk7XG4gICAgdGhpcy5hZGRyZXNzQ2hhbmdlLmVtaXQodGhpcy5hZGRyZXNzKTtcbiAgfVxuXG4gIHVwZGF0ZSgpIHtcbiAgICB0aGlzLnBvcnRDaGFuZ2UuZW1pdCh0aGlzLnBvcnQpO1xuICAgIHRoaXMuYWRkcmVzc0NoYW5nZS5lbWl0KHRoaXMuYWRkcmVzcyk7XG4gICAgdGhpcy5ob3N0bmFtZUNoYW5nZS5lbWl0KHRoaXMuaG9zdG5hbWUpO1xuICAgIHRoaXMucHJvdG9jb2xDaGFuZ2UuZW1pdCh0aGlzLnByb3RvY29sKTtcbiAgfVxuXG4gIGdldCBjbGFzc05hbWUoKSB7XG4gICAgbGV0IGNsYXNzTmFtZSA9ICdhZGRyZXNzRnVsbCdcbiAgICBpZiAoIXRoaXMuc2hvd1Byb3RvY29sICYmICh0aGlzLnNob3dIb3N0TmFtZSB8fCB0aGlzLnNob3dBZGRyZXNzKSAmJiAodGhpcy5zaG93UG9ydCkpIHtcbiAgICAgIGNsYXNzTmFtZSA9ICdob3N0LW5hbWUtcG9ydCc7XG4gICAgfSBlbHNlIGlmICghdGhpcy5zaG93UHJvdG9jb2wgJiYgIXRoaXMuc2hvd1BvcnQgJiYgKHRoaXMuc2hvd0hvc3ROYW1lIHx8IHRoaXMuc2hvd0FkZHJlc3MpKSB7XG4gICAgICBjbGFzc05hbWUgPSAnYWRkcmVzcy1vbmx5JztcbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgY29uc3QgcHJvdG9jb2wgPSBpc0VtcHR5KHRoaXMucHJvdG9jb2wpID8gdW5kZWZpbmVkIDogdGhpcy5wcm90b2NvbDtcbiAgICBjb25zdCBhZGRyZXNzID0gaXNFbXB0eSh0aGlzLmFkZHJlc3MpID8gdW5kZWZpbmVkIDogdGhpcy5hZGRyZXNzO1xuICAgIGNvbnN0IGhvc3RuYW1lID0gaXNFbXB0eSh0aGlzLmhvc3RuYW1lKSA/IHVuZGVmaW5lZCA6IHRoaXMuaG9zdG5hbWU7XG4gICAgY29uc3QgcG9ydCA9ICFpc051bWJlcih0aGlzLnBvcnQpID8gdW5kZWZpbmVkIDogdGhpcy5wb3J0O1xuXG4gICAgdGhpcy5wcm9wcyA9IFtcbiAgICAgIHtrZXk6ICdwcm90b2NvbCcsIHZhbHVlOiBwcm90b2NvbH0sXG4gICAgICB7a2V5OiAncG9ydCcsIHZhbHVlOiBwb3J0fVxuICAgIF07XG4gICAgaWYgKHRoaXMuc2hvd0FkZHJlc3MpIHtcbiAgICAgIHRoaXMucHJvcHMucHVzaCh7a2V5OiAnYWRkcmVzcycsIHZhbHVlOiBhZGRyZXNzfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dIb3N0TmFtZSkge1xuICAgICAgdGhpcy5wcm9wcy5wdXNoKHtrZXk6ICdob3N0bmFtZScsIHZhbHVlOiBob3N0bmFtZX0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcztcbiAgfVxuXG4gIHNldFZhbGlkYXRpb25FcnJvcnMocHJvcGVydHlQYXRoID0gJycsIHZhbGlkYXRpb25FcnJvcnM6IGFueVtdKSB7XG4gICAgdGhpcy5wcm9wcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICBjb25zdCBoYXNWYWxpZGF0aW9uRXJyb3I6IGFueSA9IHZhbGlkYXRpb25FcnJvcnM/LnNvbWUoKGVycm9yKSA9PiB7XG4gICAgICAgIGxldCBwYXRoVG9NYWNoID0gZXJyb3IuaW5zdGFuY2VQYXRoO1xuICAgICAgICBpZiAoIWlzRW1wdHkoZXJyb3I/LnBhcmFtcz8ubWlzc2luZ1Byb3BlcnR5KSkge1xuICAgICAgICAgIHBhdGhUb01hY2ggKz0gJy8nICsgZXJyb3I/LnBhcmFtcz8ubWlzc2luZ1Byb3BlcnR5XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhdGhUb01hY2ggPT09IHByb3BlcnR5UGF0aCArICcvJyArIHByb3Aua2V5O1xuICAgICAgfSk7XG4gICAgICB0aGlzLmVycm9yc1twcm9wLmtleV0gPSBoYXNWYWxpZGF0aW9uRXJyb3I7XG4gICAgfSk7XG4gIH1cblxuICBpc1ZhbGlkKCkge1xuICAgIHRoaXMuZXJyb3JzID0ge307XG4gICAgaWYgKCFpc0VtcHR5KHRoaXMucGFyZW50YWdlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dQcm90b2NvbCAmJiAhdGhpcy5kaXNhYmxlUHJvdG9jb2wpIHtcbiAgICAgIGlmKGlzRW1wdHkodGhpcy5wcm90b2NvbCkpIHtcbiAgICAgICAgdGhpcy5lcnJvcnNbJ3Byb3RvY29sJ10gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5zaG93QWRkcmVzcyAmJiAhdGhpcy5kaXNhYmxlQWRkcmVzcykge1xuICAgICAgaWYoaXNFbXB0eSh0aGlzLmFkZHJlc3MpKSB7XG4gICAgICAgIHRoaXMuZXJyb3JzWydhZGRyZXNzJ10gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5zaG93SG9zdE5hbWUgJiYgIXRoaXMuZGlzYWJsZUhvc3ROYW1lKSB7XG4gICAgICBpZihpc0VtcHR5KHRoaXMuaG9zdG5hbWUpKSB7XG4gICAgICAgIHRoaXMuZXJyb3JzWydob3N0bmFtZSddID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd1BvcnQgJiYgIXRoaXMuZGlzYWJsZVBvcnQpIHtcbiAgICAgIGlmKGlzTmlsKHRoaXMucG9ydCkgfHwgaXNOYU4odGhpcy5wb3J0KSkge1xuICAgICAgICB0aGlzLmVycm9yc1sncG9ydCddID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzRW1wdHkodGhpcy5lcnJvcnMpO1xuICB9XG5cbiAgc2V0UHJvcGVydGllcyhkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnByb3RvY29sID0gZGF0YS5wcm90b2NvbDtcbiAgICB0aGlzLmFkZHJlc3MgPSBkYXRhLmFkZHJlc3M7XG4gICAgdGhpcy5wb3J0ID0gZGF0YS5wb3J0O1xuICAgIHRoaXMuaG9zdG5hbWUgPSBkYXRhLmhvc3RuYW1lO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ3JpZCB7e2NsYXNzTmFtZX19XCI+XG4gICAgPGRpdiAqbmdJZj1cInNob3dQcm90b2NvbFwiIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogZGlzYWJsZVByb3RvY29sLCBpbnZhbGlkOiBlcnJvcnNbJ3Byb3RvY29sJ119XCI+XG4gICAgICAgIDxsaWItc2VsZWN0b3ItaW5wdXQgW2ZpZWxkTmFtZV09XCJwcm90b2NvbEZpZWxkTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgWyhmaWVsZFZhbHVlKV09XCJwcm90b2NvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsQ29sb3JdPVwibGFiZWxDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlTGlzdF09XCJbJ3RjcCcsICd1ZHAnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGZpZWxkVmFsdWVDaGFuZ2UpPVwidXBkYXRlKClcIlxuICAgICAgICA+PC9saWItc2VsZWN0b3ItaW5wdXQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInNob3dBZGRyZXNzXCIgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiBkaXNhYmxlQWRkcmVzcywgaW52YWxpZDogZXJyb3JzWydhZGRyZXNzJ119XCI+XG4gICAgICAgIDxsaWItc3RyaW5nLWlucHV0IFtmaWVsZE5hbWVdPVwiYWRkcmVzc0ZpZWxkTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIFsoZmllbGRWYWx1ZSldPVwiYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbENvbG9yXT1cImxhYmVsQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2hvc3QubmFtZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGRWYWx1ZUNoYW5nZSk9XCJ1cGRhdGUoKVwiXG4gICAgICAgID48L2xpYi1zdHJpbmctaW5wdXQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInNob3dIb3N0TmFtZVwiIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogZGlzYWJsZUhvc3ROYW1lLCBpbnZhbGlkOiBlcnJvcnNbJ2hvc3RuYW1lJ119XCI+XG4gICAgICAgIDxsaWItc3RyaW5nLWlucHV0IFtmaWVsZE5hbWVdPVwiaG9zdG5hbWVGaWVsZE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKGZpZWxkVmFsdWUpXT1cImhvc3RuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsQ29sb3JdPVwibGFiZWxDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInaG9zdC5uYW1lJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZFZhbHVlQ2hhbmdlKT1cInVwZGF0ZSgpXCJcbiAgICAgICAgPjwvbGliLXN0cmluZy1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1BvcnRcIiBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6IGRpc2FibGVQb3J0LCBpbnZhbGlkOiBlcnJvcnNbJ3BvcnQnXX1cIj5cbiAgICAgICAgPGxpYi1udW1iZXItaW5wdXQgW2ZpZWxkTmFtZV09XCJwb3J0RmllbGROYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgWyhmaWVsZFZhbHVlKV09XCJwb3J0XCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsQ29sb3JdPVwibGFiZWxDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInMCdcIlxuICAgICAgICAgICAgICAgICAgICAoZmllbGRWYWx1ZUNoYW5nZSk9XCJ1cGRhdGUoKVwiXG4gICAgICAgID48L2xpYi1udW1iZXItaW5wdXQ+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { Subject } from "rxjs";
3
- import { debounce } from "lodash";
3
+ import { debounce, defer } from "lodash";
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
6
  import * as i2 from "@angular/forms";
@@ -18,6 +18,7 @@ class SelectorInputComponent {
18
18
  this.error = '';
19
19
  this.fieldValueChange = new EventEmitter();
20
20
  this.valueChange = new Subject();
21
+ this._isValid = true;
21
22
  }
22
23
  set fieldName(name) {
23
24
  this._fieldName = name;
@@ -26,12 +27,22 @@ class SelectorInputComponent {
26
27
  set valueList(list) {
27
28
  this.listIsObject = list?.length > 0 && typeof list[0] !== 'string';
28
29
  this._valueList = list;
29
- list.forEach(val => {
30
- if (val.default)
31
- this.fieldValue = val;
30
+ let valToSet;
31
+ list.forEach(item => {
32
+ if (item.default) {
33
+ valToSet = item.value;
34
+ }
35
+ });
36
+ valToSet = valToSet || this.fieldValue;
37
+ this.fieldValue = undefined;
38
+ defer(() => {
39
+ this.fieldValue = valToSet;
32
40
  });
33
41
  }
34
42
  ;
43
+ setIsValid(isValid) {
44
+ this._isValid = isValid;
45
+ }
35
46
  selected() {
36
47
  debounce(() => {
37
48
  this.fieldValueChange.emit(this.fieldValue);
@@ -40,7 +51,7 @@ class SelectorInputComponent {
40
51
  }
41
52
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectorInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
53
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SelectorInputComponent, selector: "lib-selector-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", valueList: "valueList", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
43
- <div [ngClass]="fieldClass">
54
+ <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="selector-input-container">
44
55
  <label [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
45
56
  <select id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
46
57
  class="jsonEntry"
@@ -56,15 +67,13 @@ class SelectorInputComponent {
56
67
  </select>
57
68
  <div *ngIf="error" class="error">{{error}}</div>
58
69
  </div>
59
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
70
+ `, isInline: true, styles: [".selector-input-container{margin:var(--marginSmall) 0}.selector-input-container label{margin-bottom:0;margin-top:0}.selector-input-container input.error{border-color:red}.selector-input-container div.error{color:red}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
60
71
  }
61
72
  export { SelectorInputComponent };
62
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectorInputComponent, decorators: [{
63
74
  type: Component,
64
- args: [{
65
- selector: 'lib-selector-input',
66
- template: `
67
- <div [ngClass]="fieldClass">
75
+ args: [{ selector: 'lib-selector-input', template: `
76
+ <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="selector-input-container">
68
77
  <label [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
69
78
  <select id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
70
79
  class="jsonEntry"
@@ -80,8 +89,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
80
89
  </select>
81
90
  <div *ngIf="error" class="error">{{error}}</div>
82
91
  </div>
83
- `
84
- }]
92
+ `, styles: [".selector-input-container{margin:var(--marginSmall) 0}.selector-input-container label{margin-bottom:0;margin-top:0}.selector-input-container input.error{border-color:red}.selector-input-container div.error{color:red}\n"] }]
85
93
  }], propDecorators: { fieldName: [{
86
94
  type: Input
87
95
  }], fieldValue: [{
@@ -101,4 +109,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
101
109
  }], fieldValueChange: [{
102
110
  type: Output
103
111
  }] } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9zZWxlY3Rvci9zZWxlY3Rvci1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFxQmEsc0JBQXNCO0lBckJuQztRQXNCRSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFDdEIsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQUN2QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUtaLGVBQVUsR0FBTyxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQVF6QixlQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNWLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEQsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0tBUXRDO0lBMUJDLElBQWEsU0FBUyxDQUFDLElBQVk7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBSUQsSUFBYSxTQUFTLENBQUMsSUFBVztRQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksRUFBRSxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQztRQUNwRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pCLElBQUcsR0FBRyxDQUFDLE9BQU87Z0JBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUEsQ0FBQztJQU9GLFFBQVE7UUFDTixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ1osQ0FBQzsrR0E5QlUsc0JBQXNCO21HQUF0QixzQkFBc0IsMlRBbkJ2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpQlg7O1NBRVksc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBckJsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpQlg7aUJBQ0E7OEJBTWMsU0FBUztzQkFBckIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDTyxTQUFTO3NCQUFyQixLQUFLO2dCQU9HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2RlYm91bmNlfSBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1zZWxlY3Rvci1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZENsYXNzXCI+XG4gICAgICA8bGFiZWwgW25nU3R5bGVdPVwieydjb2xvcic6IGxhYmVsQ29sb3J9XCI+e3tfZmllbGROYW1lfX08L2xhYmVsPlxuICAgICAgPHNlbGVjdCBpZD1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiXG4gICAgICAgICAgICAgY2xhc3M9XCJqc29uRW50cnlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Vycm9yJzogZXJyb3J9XCJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkVmFsdWVcIiAoY2hhbmdlKT1cInNlbGVjdGVkKClcIj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgKm5nSWY9XCJwbGFjZWhvbGRlclwiPnt7cGxhY2Vob2xkZXJ9fTwvb3B0aW9uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxpc3RJc09iamVjdFwiPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG5hbWUgb2YgX3ZhbHVlTGlzdFwiIFt2YWx1ZV09XCJuYW1lXCI+e3tuYW1lfX08L29wdGlvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaXN0SXNPYmplY3RcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkYXRhIG9mIF92YWx1ZUxpc3RcIiBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiPnt7ZGF0YS5uYW1lfX08L29wdGlvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57e2Vycm9yfX08L2Rpdj5cbiAgICA8L2Rpdj5cbmBcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0b3JJbnB1dENvbXBvbmVudCB7XG4gIF9maWVsZE5hbWUgPSAnRmllbGQgTGFiZWwnO1xuICBfaWROYW1lID0gJ2ZpZWxkbmFtZSc7XG4gIF92YWx1ZUxpc3Q6IGFueVtdID0gW107XG4gIGxpc3RJc09iamVjdCA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgZmllbGROYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkTmFtZSA9IG5hbWU7XG4gICAgdGhpcy5faWROYW1lID0gbmFtZS5yZXBsYWNlKC9cXHMvZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgQElucHV0KCkgZmllbGRWYWx1ZTphbnkgPSAnJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgcGFyZW50YWdlOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBzZXQgdmFsdWVMaXN0KGxpc3Q6IGFueVtdKSB7XG4gICAgdGhpcy5saXN0SXNPYmplY3QgPSBsaXN0Py5sZW5ndGggPiAwICYmIHR5cGVvZiBsaXN0WzBdICE9PSAnc3RyaW5nJztcbiAgICB0aGlzLl92YWx1ZUxpc3QgPSBsaXN0O1xuICAgIGxpc3QuZm9yRWFjaCh2YWwgPT4ge1xuICAgICAgaWYodmFsLmRlZmF1bHQpIHRoaXMuZmllbGRWYWx1ZSA9IHZhbDtcbiAgICB9KTtcbiAgfTtcbiAgQElucHV0KCkgbGFiZWxDb2xvciA9ICcjMDAwMDAwJztcbiAgQElucHV0KCkgZmllbGRDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBlcnJvciA9ICcnO1xuICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICB2YWx1ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4gKCk7XG5cbiAgc2VsZWN0ZWQoKSB7XG4gICAgZGVib3VuY2UoKCkgPT4ge1xuICAgICAgdGhpcy5maWVsZFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5maWVsZFZhbHVlKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgIH0sIDUwMCkoKTtcbiAgfVxufVxuIl19
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9zZWxlY3Rvci9zZWxlY3Rvci1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7O0FBRXZDLE1Bc0JhLHNCQUFzQjtJQXRCbkM7UUF1QkUsZUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMzQixZQUFPLEdBQUcsV0FBVyxDQUFDO1FBQ3RCLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFLWixlQUFVLEdBQU8sRUFBRSxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFpQnpCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFckMsYUFBUSxHQUFHLElBQUksQ0FBQztLQVdqQjtJQXhDQyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUlELElBQWEsU0FBUyxDQUFDLElBQVc7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUM7UUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxRQUFRLENBQUM7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xCLElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDZixRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUN2QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFBQSxDQUFDO0lBU0ssVUFBVSxDQUFFLE9BQU87UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELFFBQVE7UUFDTixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ1osQ0FBQzsrR0E1Q1Usc0JBQXNCO21HQUF0QixzQkFBc0IsMlRBcEJ2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQ7O1NBR1Usc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBdEJsQyxTQUFTOytCQUNFLG9CQUFvQixZQUNwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQ7OEJBUVksU0FBUztzQkFBckIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDTyxTQUFTO3NCQUFyQixLQUFLO2dCQWdCRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtkZWJvdW5jZSwgZGVmZXJ9IGZyb20gXCJsb2Rhc2hcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXNlbGVjdG9yLWlucHV0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cImZpZWxkQ2xhc3MgKyAoIV9pc1ZhbGlkID8gJ2ludmFsaWQnIDogJycpXCIgY2xhc3M9XCJzZWxlY3Rvci1pbnB1dC1jb250YWluZXJcIj5cbiAgICAgIDxsYWJlbCBbbmdTdHlsZV09XCJ7J2NvbG9yJzogbGFiZWxDb2xvcn1cIj57e19maWVsZE5hbWV9fTwvbGFiZWw+XG4gICAgICA8c2VsZWN0IGlkPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCJcbiAgICAgICAgICAgICBjbGFzcz1cImpzb25FbnRyeVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZXJyb3InOiBlcnJvcn1cIlxuICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiIChjaGFuZ2UpPVwic2VsZWN0ZWQoKVwiPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIiAqbmdJZj1cInBsYWNlaG9sZGVyXCI+e3twbGFjZWhvbGRlcn19PC9vcHRpb24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbGlzdElzT2JqZWN0XCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbmFtZSBvZiBfdmFsdWVMaXN0XCIgW3ZhbHVlXT1cIm5hbWVcIj57e25hbWV9fTwvb3B0aW9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3RJc09iamVjdFwiPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGRhdGEgb2YgX3ZhbHVlTGlzdFwiIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCI+e3tkYXRhLm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc2VsZWN0PlxuICAgICAgPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiPnt7ZXJyb3J9fTwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnc2VsZWN0b3ItaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RvcklucHV0Q29tcG9uZW50IHtcbiAgX2ZpZWxkTmFtZSA9ICdGaWVsZCBMYWJlbCc7XG4gIF9pZE5hbWUgPSAnZmllbGRuYW1lJztcbiAgX3ZhbHVlTGlzdDogYW55W10gPSBbXTtcbiAgbGlzdElzT2JqZWN0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNldCBmaWVsZE5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGROYW1lID0gbmFtZTtcbiAgICB0aGlzLl9pZE5hbWUgPSBuYW1lLnJlcGxhY2UoL1xccy9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuICBASW5wdXQoKSBmaWVsZFZhbHVlOmFueSA9ICcnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSBwYXJlbnRhZ2U6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIHNldCB2YWx1ZUxpc3QobGlzdDogYW55W10pIHtcbiAgICB0aGlzLmxpc3RJc09iamVjdCA9IGxpc3Q/Lmxlbmd0aCA+IDAgJiYgdHlwZW9mIGxpc3RbMF0gIT09ICdzdHJpbmcnO1xuICAgIHRoaXMuX3ZhbHVlTGlzdCA9IGxpc3Q7XG4gICAgbGV0IHZhbFRvU2V0O1xuICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmKGl0ZW0uZGVmYXVsdCkge1xuICAgICAgICB2YWxUb1NldCA9IGl0ZW0udmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFsVG9TZXQgPSB2YWxUb1NldCB8fCB0aGlzLmZpZWxkVmFsdWU7XG4gICAgdGhpcy5maWVsZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIHRoaXMuZmllbGRWYWx1ZSA9IHZhbFRvU2V0O1xuICAgIH0pO1xuICB9O1xuXG4gIEBJbnB1dCgpIGxhYmVsQ29sb3IgPSAnIzAwMDAwMCc7XG4gIEBJbnB1dCgpIGZpZWxkQ2xhc3MgPSAnJztcbiAgQElucHV0KCkgZXJyb3IgPSAnJztcbiAgQE91dHB1dCgpIGZpZWxkVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxzdHJpbmc+ICgpO1xuXG4gIF9pc1ZhbGlkID0gdHJ1ZTtcbiAgcHVibGljIHNldElzVmFsaWQgKGlzVmFsaWQpIHtcbiAgICB0aGlzLl9pc1ZhbGlkID0gaXNWYWxpZDtcbiAgfVxuXG4gIHNlbGVjdGVkKCkge1xuICAgIGRlYm91bmNlKCgpID0+IHtcbiAgICAgIHRoaXMuZmllbGRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy5maWVsZFZhbHVlKTtcbiAgICB9LCA1MDApKCk7XG4gIH1cbn1cbiJdfQ==
@@ -16,11 +16,15 @@ class StringInputComponent {
16
16
  this.error = '';
17
17
  this.fieldValueChange = new EventEmitter();
18
18
  this.valueChange = new Subject();
19
+ this._isValid = true;
19
20
  }
20
21
  set fieldName(name) {
21
22
  this._fieldName = name;
22
23
  this._idName = name.replace(/\s/g, '').toLowerCase();
23
24
  }
25
+ setIsValid(isValid) {
26
+ this._isValid = isValid;
27
+ }
24
28
  onKeyup() {
25
29
  debounce(() => {
26
30
  this.fieldValueChange.emit(this.fieldValue);
@@ -29,7 +33,7 @@ class StringInputComponent {
29
33
  }
30
34
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StringInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
35
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: StringInputComponent, selector: "lib-string-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
32
- <div [ngClass]="fieldClass">
36
+ <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="string-input-container">
33
37
  <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
34
38
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
35
39
  type="text" class="jsonEntry"
@@ -37,13 +41,13 @@ class StringInputComponent {
37
41
  [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
38
42
  <div *ngIf="error" class="error">{{error}}</div>
39
43
  </div>
40
- `, isInline: true, styles: ["input.error{border-color:red}\n", "div.error{color:red}\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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
44
+ `, isInline: true, styles: [".string-input-container{margin:var(--marginSmall) 0}.string-input-container label{margin-bottom:0;margin-top:0}.string-input-container input.error{border-color:red}.string-input-container div.error{color:red}\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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
41
45
  }
42
46
  export { StringInputComponent };
43
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StringInputComponent, decorators: [{
44
48
  type: Component,
45
49
  args: [{ selector: 'lib-string-input', template: `
46
- <div [ngClass]="fieldClass">
50
+ <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="string-input-container">
47
51
  <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
48
52
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
49
53
  type="text" class="jsonEntry"
@@ -51,7 +55,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
51
55
  [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
52
56
  <div *ngIf="error" class="error">{{error}}</div>
53
57
  </div>
54
- `, styles: ["input.error{border-color:red}\n", "div.error{color:red}\n"] }]
58
+ `, styles: [".string-input-container{margin:var(--marginSmall) 0}.string-input-container label{margin-bottom:0;margin-top:0}.string-input-container input.error{border-color:red}.string-input-container div.error{color:red}\n"] }]
55
59
  }], propDecorators: { fieldName: [{
56
60
  type: Input
57
61
  }], fieldValue: [{
@@ -69,4 +73,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
69
73
  }], fieldValueChange: [{
70
74
  type: Output
71
75
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvc3RyaW5nL3N0cmluZy1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFjYSxvQkFBb0I7SUFkakM7UUFlSSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFLYixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDVixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3hELGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztLQVF4QztJQW5CRyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQVVELE9BQU87UUFDSCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2QsQ0FBQzsrR0FyQlEsb0JBQW9CO21HQUFwQixvQkFBb0IsaVNBWnJCOzs7Ozs7Ozs7R0FTVDs7U0FHVSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFkaEMsU0FBUzsrQkFDRSxrQkFBa0IsWUFDbEI7Ozs7Ozs7OztHQVNUOzhCQU1jLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtkZWJvdW5jZX0gZnJvbSBcImxvZGFzaFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc3RyaW5nLWlucHV0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZmllbGRDbGFzc1wiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJzY2hlbWFfe3twYXJlbnRhZ2U/cGFyZW50YWdlKydfJzonJ319e3tfaWROYW1lfX1cIiAgW25nU3R5bGVdPVwieydjb2xvcic6IGxhYmVsQ29sb3J9XCI+e3tfZmllbGROYW1lfX08L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dCBpZD1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJqc29uRW50cnlcIlxuICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Vycm9yJzogZXJyb3J9XCJcbiAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJmaWVsZFZhbHVlXCIgKHBhc3RlKT1cIm9uS2V5dXAoKVwiIChrZXl1cCk9XCJvbktleXVwKClcIi8+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiPnt7ZXJyb3J9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gIGAsXG4gICAgc3R5bGVzOlsnaW5wdXQuZXJyb3Ige2JvcmRlci1jb2xvcjpyZWQ7fScsJ2Rpdi5lcnJvciB7Y29sb3I6cmVkfSddXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0lucHV0Q29tcG9uZW50IHtcbiAgICBfZmllbGROYW1lID0gJ0ZpZWxkIExhYmVsJztcbiAgICBfaWROYW1lID0gJ2ZpZWxkbmFtZSc7XG4gICAgQElucHV0KCkgc2V0IGZpZWxkTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZmllbGROYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5faWROYW1lID0gbmFtZS5yZXBsYWNlKC9cXHMvZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIGZpZWxkVmFsdWUgPSAnJztcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICAgIEBJbnB1dCgpIHBhcmVudGFnZTogc3RyaW5nW10gPSBbXTtcbiAgICBASW5wdXQoKSBsYWJlbENvbG9yID0gJyMwMDAwMDAnO1xuICAgIEBJbnB1dCgpIGZpZWxkQ2xhc3MgPSAnJztcbiAgICBASW5wdXQoKSBlcnJvciA9ICcnO1xuICAgIEBPdXRwdXQoKSBmaWVsZFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxzdHJpbmc+ICgpO1xuXG4gICAgb25LZXl1cCgpIHtcbiAgICAgICAgZGVib3VuY2UoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5maWVsZFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5maWVsZFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICB9LCA1MDApKCk7XG4gICAgfVxufVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvc3RyaW5nL3N0cmluZy1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFjYSxvQkFBb0I7SUFkakM7UUFlSSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFLYixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDVixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3hELGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUVyQyxhQUFRLEdBQUcsSUFBSSxDQUFDO0tBV25CO0lBeEJHLElBQWEsU0FBUyxDQUFDLElBQVk7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBV00sVUFBVSxDQUFFLE9BQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVELE9BQU87UUFDSCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2QsQ0FBQzsrR0ExQlEsb0JBQW9CO21HQUFwQixvQkFBb0IsaVNBWnJCOzs7Ozs7Ozs7R0FTVDs7U0FHVSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFkaEMsU0FBUzsrQkFDRSxrQkFBa0IsWUFDbEI7Ozs7Ozs7OztHQVNUOzhCQU1jLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtkZWJvdW5jZX0gZnJvbSBcImxvZGFzaFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc3RyaW5nLWlucHV0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZmllbGRDbGFzcyArICghX2lzVmFsaWQgPyAnaW52YWxpZCcgOiAnJylcIiBjbGFzcz1cInN0cmluZy1pbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCIgIFtuZ1N0eWxlXT1cInsnY29sb3InOiBsYWJlbENvbG9yfVwiPnt7X2ZpZWxkTmFtZX19PC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgaWQ9XCJzY2hlbWFfe3twYXJlbnRhZ2U/cGFyZW50YWdlKydfJzonJ319e3tfaWROYW1lfX1cIlxuICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIGNsYXNzPVwianNvbkVudHJ5XCJcbiAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlcnJvcic6IGVycm9yfVwiXG4gICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiIChwYXN0ZSk9XCJvbktleXVwKClcIiAoa2V5dXApPVwib25LZXl1cCgpXCIvPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57e2Vycm9yfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICBgLFxuICAgIHN0eWxlVXJsczogWydzdHJpbmctaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdJbnB1dENvbXBvbmVudCB7XG4gICAgX2ZpZWxkTmFtZSA9ICdGaWVsZCBMYWJlbCc7XG4gICAgX2lkTmFtZSA9ICdmaWVsZG5hbWUnO1xuICAgIEBJbnB1dCgpIHNldCBmaWVsZE5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZpZWxkTmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuX2lkTmFtZSA9IG5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBASW5wdXQoKSBmaWVsZFZhbHVlID0gJyc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgICBASW5wdXQoKSBwYXJlbnRhZ2U6IHN0cmluZ1tdID0gW107XG4gICAgQElucHV0KCkgbGFiZWxDb2xvciA9ICcjMDAwMDAwJztcbiAgICBASW5wdXQoKSBmaWVsZENsYXNzID0gJyc7XG4gICAgQElucHV0KCkgZXJyb3IgPSAnJztcbiAgICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIHZhbHVlQ2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nPiAoKTtcblxuICAgIF9pc1ZhbGlkID0gdHJ1ZTtcbiAgICBwdWJsaWMgc2V0SXNWYWxpZCAoaXNWYWxpZCkge1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gaXNWYWxpZDtcbiAgICB9XG5cbiAgICBvbktleXVwKCkge1xuICAgICAgICBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICAgIH0sIDUwMCkoKTtcbiAgICB9XG59XG4iXX0=
@@ -32,6 +32,7 @@ class TextListInputComponent {
32
32
  this.error = '';
33
33
  this.fieldValueChange = new EventEmitter();
34
34
  this.valueChange = new Subject();
35
+ this._isValid = true;
35
36
  }
36
37
  set fieldName(name) {
37
38
  this._fieldName = name;
@@ -61,9 +62,12 @@ class TextListInputComponent {
61
62
  this.valueChange.next(this.fieldValue);
62
63
  }, 500)();
63
64
  }
65
+ setIsValid(isValid) {
66
+ this._isValid = isValid;
67
+ }
64
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextListInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
69
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TextListInputComponent, selector: "lib-text-list-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
66
- <div [ngClass]="fieldClass">
70
+ <div [ngClass]="fieldClass + (!_isValid ? ' invalid' : '')">
67
71
  <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
68
72
  <p-chips id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
69
73
  (keyup)="onKeyup($event)"
@@ -71,7 +75,7 @@ class TextListInputComponent {
71
75
  [allowDuplicate]="false"
72
76
  [placeholder]="placeholder"
73
77
  [addOnBlur]="true"
74
- [ngClass]="fieldClass"
78
+ [ngClass]="fieldClass + (!_isValid ? ' invalid' : '')"
75
79
  (onBlur)="emitEvents()"
76
80
  separator=",">
77
81
  </p-chips>
@@ -83,7 +87,7 @@ export { TextListInputComponent };
83
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextListInputComponent, decorators: [{
84
88
  type: Component,
85
89
  args: [{ selector: 'lib-text-list-input', template: `
86
- <div [ngClass]="fieldClass">
90
+ <div [ngClass]="fieldClass + (!_isValid ? ' invalid' : '')">
87
91
  <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
88
92
  <p-chips id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
89
93
  (keyup)="onKeyup($event)"
@@ -91,7 +95,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
91
95
  [allowDuplicate]="false"
92
96
  [placeholder]="placeholder"
93
97
  [addOnBlur]="true"
94
- [ngClass]="fieldClass"
98
+ [ngClass]="fieldClass + (!_isValid ? ' invalid' : '')"
95
99
  (onBlur)="emitEvents()"
96
100
  separator=",">
97
101
  </p-chips>
@@ -116,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
116
120
  }], fieldValueChange: [{
117
121
  type: Output
118
122
  }] } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1saXN0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvdGV4dC1saXN0L3RleHQtbGlzdC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7O0FBRXpDLE1Bb0JhLHNCQUFzQjtJQXBCbkM7UUFxQkUsZUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMzQixZQUFPLEdBQUcsV0FBVyxDQUFDO1FBTXRCLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBV2IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNWLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEQsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0tBb0J0QztJQTFDQyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUdELElBQ0ksVUFBVSxDQUFDLEdBQUc7UUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyRSxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFVRCxPQUFPLENBQUMsS0FBVTtRQUNoQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLEtBQUssT0FBTyxFQUFFO1lBQ2xDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7WUFDNUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxVQUFVO1FBQ1IsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNaLENBQUM7K0dBNUNVLHNCQUFzQjttR0FBdEIsc0JBQXNCLG9TQWxCdkI7Ozs7Ozs7Ozs7Ozs7OztFQWVWOztTQUdXLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQXBCbEMsU0FBUzsrQkFDRSxxQkFBcUIsWUFDckI7Ozs7Ozs7Ozs7Ozs7OztFQWVWOzhCQU1hLFNBQVM7c0JBQXJCLEtBQUs7Z0JBT0YsVUFBVTtzQkFEYixLQUFLO3VCQUFDLFlBQVk7Z0JBVVYsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2RlYm91bmNlLCBpc0VtcHR5fSBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi10ZXh0LWxpc3QtaW5wdXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW25nQ2xhc3NdPVwiZmllbGRDbGFzc1wiPlxuICAgICAgPGxhYmVsIGZvcj1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiICBbbmdTdHlsZV09XCJ7J2NvbG9yJzogbGFiZWxDb2xvcn1cIj57e19maWVsZE5hbWV9fTwvbGFiZWw+XG4gICAgICA8cC1jaGlwcyBpZD1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiXG4gICAgICAgICAgKGtleXVwKT1cIm9uS2V5dXAoJGV2ZW50KVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZFZhbHVlXCJcbiAgICAgICAgICBbYWxsb3dEdXBsaWNhdGVdPVwiZmFsc2VcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgW2FkZE9uQmx1cl09XCJ0cnVlXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJmaWVsZENsYXNzXCIgXG4gICAgICAgICAgKG9uQmx1cik9XCJlbWl0RXZlbnRzKClcIlxuICAgICAgICAgIHNlcGFyYXRvcj1cIixcIj5cbiAgICAgIDwvcC1jaGlwcz5cbiAgICAgIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57e2Vycm9yfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiBgLFxuICBzdHlsZVVybHM6WycuL3RleHQtbGlzdC1pbnB1dC5jb21wb25lbnQuc2NzcycgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGV4dExpc3RJbnB1dENvbXBvbmVudCB7XG4gIF9maWVsZE5hbWUgPSAnRmllbGQgTGFiZWwnO1xuICBfaWROYW1lID0gJ2ZpZWxkbmFtZSc7XG4gIEBJbnB1dCgpIHNldCBmaWVsZE5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGROYW1lID0gbmFtZTtcbiAgICB0aGlzLl9pZE5hbWUgPSBuYW1lLnJlcGxhY2UoL1xccy9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIF9maWVsZFZhbHVlOiBhbnkgPSAnJztcbiAgQElucHV0KCdmaWVsZFZhbHVlJylcbiAgc2V0IGZpZWxkVmFsdWUodmFsKSB7XG4gICAgdGhpcy5fZmllbGRWYWx1ZSA9IHZhbDtcbiAgfVxuXG4gIGdldCBmaWVsZFZhbHVlKCkge1xuICAgIGNvbnN0IHZhbCA9IGlzRW1wdHkodGhpcy5fZmllbGRWYWx1ZSkgPyB1bmRlZmluZWQgOiB0aGlzLl9maWVsZFZhbHVlO1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSBwYXJlbnRhZ2U6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIGxhYmVsQ29sb3IgPSAnIzAwMDAwMCc7XG4gIEBJbnB1dCgpIGZpZWxkQ2xhc3MgPSAnJztcbiAgQElucHV0KCkgZXJyb3IgPSAnJztcbiAgQE91dHB1dCgpIGZpZWxkVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxzdHJpbmc+ICgpO1xuXG4gIG9uS2V5dXAoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleT8udG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoa2V5ID09PSBcIiBcIiB8fCBrZXkgPT09ICdlbnRlcicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBlbGVtZW50LmJsdXIoKTtcbiAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0RXZlbnRzKCk7XG4gIH1cblxuICBlbWl0RXZlbnRzKCkge1xuICAgIGRlYm91bmNlKCgpID0+IHtcbiAgICAgIHRoaXMuZmllbGRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy5maWVsZFZhbHVlKTtcbiAgICB9LCA1MDApKCk7XG4gIH1cbn1cbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1saXN0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvdGV4dC1saXN0L3RleHQtbGlzdC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7O0FBRXpDLE1Bb0JhLHNCQUFzQjtJQXBCbkM7UUFxQkUsZUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMzQixZQUFPLEdBQUcsV0FBVyxDQUFDO1FBTXRCLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBV2IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNWLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEQsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBcUJyQyxhQUFRLEdBQUcsSUFBSSxDQUFDO0tBS2pCO0lBaERDLElBQWEsU0FBUyxDQUFDLElBQVk7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBR0QsSUFDSSxVQUFVLENBQUMsR0FBRztRQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JFLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQVVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDckMsSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUU7WUFDbEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztZQUM1QyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDakI7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVU7UUFDUixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUdNLFVBQVUsQ0FBQyxPQUFPO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7K0dBakRVLHNCQUFzQjttR0FBdEIsc0JBQXNCLG9TQWxCdkI7Ozs7Ozs7Ozs7Ozs7OztFQWVWOztTQUdXLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQXBCbEMsU0FBUzsrQkFDRSxxQkFBcUIsWUFDckI7Ozs7Ozs7Ozs7Ozs7OztFQWVWOzhCQU1hLFNBQVM7c0JBQXJCLEtBQUs7Z0JBT0YsVUFBVTtzQkFEYixLQUFLO3VCQUFDLFlBQVk7Z0JBVVYsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2RlYm91bmNlLCBpc0VtcHR5fSBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi10ZXh0LWxpc3QtaW5wdXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW25nQ2xhc3NdPVwiZmllbGRDbGFzcyArICghX2lzVmFsaWQgPyAnIGludmFsaWQnIDogJycpXCI+XG4gICAgICA8bGFiZWwgZm9yPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCIgIFtuZ1N0eWxlXT1cInsnY29sb3InOiBsYWJlbENvbG9yfVwiPnt7X2ZpZWxkTmFtZX19PC9sYWJlbD5cbiAgICAgIDxwLWNoaXBzIGlkPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCJcbiAgICAgICAgICAoa2V5dXApPVwib25LZXl1cCgkZXZlbnQpXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkVmFsdWVcIlxuICAgICAgICAgIFthbGxvd0R1cGxpY2F0ZV09XCJmYWxzZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbYWRkT25CbHVyXT1cInRydWVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImZpZWxkQ2xhc3MgKyAoIV9pc1ZhbGlkID8gJyBpbnZhbGlkJyA6ICcnKVwiIFxuICAgICAgICAgIChvbkJsdXIpPVwiZW1pdEV2ZW50cygpXCJcbiAgICAgICAgICBzZXBhcmF0b3I9XCIsXCI+XG4gICAgICA8L3AtY2hpcHM+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImVycm9yXCI+e3tlcnJvcn19PC9kaXY+XG4gICAgPC9kaXY+XG4gYCxcbiAgc3R5bGVVcmxzOlsnLi90ZXh0LWxpc3QtaW5wdXQuY29tcG9uZW50LnNjc3MnICBdXG59KVxuZXhwb3J0IGNsYXNzIFRleHRMaXN0SW5wdXRDb21wb25lbnQge1xuICBfZmllbGROYW1lID0gJ0ZpZWxkIExhYmVsJztcbiAgX2lkTmFtZSA9ICdmaWVsZG5hbWUnO1xuICBASW5wdXQoKSBzZXQgZmllbGROYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkTmFtZSA9IG5hbWU7XG4gICAgdGhpcy5faWROYW1lID0gbmFtZS5yZXBsYWNlKC9cXHMvZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBfZmllbGRWYWx1ZTogYW55ID0gJyc7XG4gIEBJbnB1dCgnZmllbGRWYWx1ZScpXG4gIHNldCBmaWVsZFZhbHVlKHZhbCkge1xuICAgIHRoaXMuX2ZpZWxkVmFsdWUgPSB2YWw7XG4gIH1cblxuICBnZXQgZmllbGRWYWx1ZSgpIHtcbiAgICBjb25zdCB2YWwgPSBpc0VtcHR5KHRoaXMuX2ZpZWxkVmFsdWUpID8gdW5kZWZpbmVkIDogdGhpcy5fZmllbGRWYWx1ZTtcbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgcGFyZW50YWdlOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBsYWJlbENvbG9yID0gJyMwMDAwMDAnO1xuICBASW5wdXQoKSBmaWVsZENsYXNzID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yID0gJyc7XG4gIEBPdXRwdXQoKSBmaWVsZFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIHZhbHVlQ2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nPiAoKTtcblxuICBvbktleXVwKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGtleSA9PT0gXCIgXCIgfHwga2V5ID09PSAnZW50ZXInKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgZWxlbWVudC5ibHVyKCk7XG4gICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMuZW1pdEV2ZW50cygpO1xuICB9XG5cbiAgZW1pdEV2ZW50cygpIHtcbiAgICBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgfSwgNTAwKSgpO1xuICB9XG5cbiAgX2lzVmFsaWQgPSB0cnVlO1xuICBwdWJsaWMgc2V0SXNWYWxpZChpc1ZhbGlkKSB7XG4gICAgdGhpcy5faXNWYWxpZCA9IGlzVmFsaWQ7XG4gIH1cblxufVxuIl19