@ai-table/grid 0.0.17 → 0.0.18

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,7 +16,7 @@ export class FieldMenu extends ThyDropdownAbstractMenu {
16
16
  }
17
17
  }
18
18
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: FieldMenu, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: FieldMenu, isStandalone: true, selector: "field-menu", inputs: { fieldId: "fieldId", aiTable: "aiTable", fieldMenus: "fieldMenus", origin: "origin", position: "position" }, usesInheritance: true, ngImport: i0, template: "@for (menu of fieldMenus; track index; let index = $index) {\n @if (menu.type === 'divider') {\n <thy-divider [thyStyle]=\"'solid'\"></thy-divider>\n } @else {\n @if ((menu.hidden && !menu.hidden(aiTable, field)) || !menu.hidden) {\n <a thyDropdownMenuItem href=\"javascript:;\" (click)=\"execute(menu)\">\n <thy-icon [thyIconName]=\"menu.icon!\"></thy-icon>\n <span>{{ menu.name! }}</span>\n </a>\n }\n }\n}\n", dependencies: [{ kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: ThyDivider, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "directive", type: ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: FieldMenu, isStandalone: true, selector: "field-menu", inputs: { fieldId: "fieldId", aiTable: "aiTable", fieldMenus: "fieldMenus", origin: "origin", position: "position" }, usesInheritance: true, ngImport: i0, template: "@for (menu of fieldMenus; track index; let index = $index) {\n @if ((menu.hidden && !menu.hidden(aiTable, field)) || !menu.hidden) {\n @if (menu.type === 'divider') {\n <thy-divider [thyStyle]=\"'solid'\"></thy-divider>\n } @else {\n <a\n thyDropdownMenuItem\n href=\"javascript:;\"\n (click)=\"execute(menu)\"\n [thyDisabled]=\"!!(menu.disabled && menu.disabled(aiTable, field))\"\n >\n <thy-icon [thyIconName]=\"menu.icon!\"></thy-icon>\n <span>{{ menu.name! }}</span>\n </a>\n }\n }\n}\n", dependencies: [{ kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: ThyDivider, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "directive", type: ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20
20
  }
21
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: FieldMenu, decorators: [{
22
22
  type: Component,
@@ -27,7 +27,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
27
27
  ThyDropdownMenuItemDirective,
28
28
  ThyDropdownMenuItemNameDirective,
29
29
  ThyDropdownMenuItemIconDirective
30
- ], template: "@for (menu of fieldMenus; track index; let index = $index) {\n @if (menu.type === 'divider') {\n <thy-divider [thyStyle]=\"'solid'\"></thy-divider>\n } @else {\n @if ((menu.hidden && !menu.hidden(aiTable, field)) || !menu.hidden) {\n <a thyDropdownMenuItem href=\"javascript:;\" (click)=\"execute(menu)\">\n <thy-icon [thyIconName]=\"menu.icon!\"></thy-icon>\n <span>{{ menu.name! }}</span>\n </a>\n }\n }\n}\n" }]
30
+ ], template: "@for (menu of fieldMenus; track index; let index = $index) {\n @if ((menu.hidden && !menu.hidden(aiTable, field)) || !menu.hidden) {\n @if (menu.type === 'divider') {\n <thy-divider [thyStyle]=\"'solid'\"></thy-divider>\n } @else {\n <a\n thyDropdownMenuItem\n href=\"javascript:;\"\n (click)=\"execute(menu)\"\n [thyDisabled]=\"!!(menu.disabled && menu.disabled(aiTable, field))\"\n >\n <thy-icon [thyIconName]=\"menu.icon!\"></thy-icon>\n <span>{{ menu.name! }}</span>\n </a>\n }\n }\n}\n" }]
31
31
  }], propDecorators: { fieldId: [{
32
32
  type: Input,
33
33
  args: [{ required: true }]
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
42
42
  }], position: [{
43
43
  type: Input
44
44
  }] } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9jb21wb25lbnRzL2ZpZWxkLW1lbnUvZmllbGQtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9jb21wb25lbnRzL2ZpZWxkLW1lbnUvZmllbGQtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLDRCQUE0QixFQUM1QixnQ0FBZ0MsRUFDaEMsZ0NBQWdDLEVBQ25DLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWtCMUMsTUFBTSxPQUFPLFNBQVUsU0FBUSx1QkFBdUI7SUFkdEQ7O1FBeUJJLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBRSxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO0tBT047SUFMRyxPQUFPLENBQUMsSUFBMEI7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEYsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRixDQUFDO0lBQ0wsQ0FBQzs4R0FuQlEsU0FBUztrR0FBVCxTQUFTLG1OQzNCdEIsOGVBWUEsNENET1EsT0FBTyxzTUFDUCxVQUFVLHFKQUVWLDRCQUE0Qjs7MkZBS3ZCLFNBQVM7a0JBZHJCLFNBQVM7K0JBQ0ksWUFBWSxjQUVWLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDTCxPQUFPO3dCQUNQLFVBQVU7d0JBQ1Ysd0JBQXdCO3dCQUN4Qiw0QkFBNEI7d0JBQzVCLGdDQUFnQzt3QkFDaEMsZ0NBQWdDO3FCQUNuQzs4QkFHMEIsT0FBTztzQkFBakMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBRUUsT0FBTztzQkFBakMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBRUUsVUFBVTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBRWhCLE1BQU07c0JBQWQsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlEaXZpZGVyIH0gZnJvbSAnbmd4LXRldGh5cy9kaXZpZGVyJztcbmltcG9ydCB7XG4gICAgVGh5RHJvcGRvd25BYnN0cmFjdE1lbnUsXG4gICAgVGh5RHJvcGRvd25NZW51Q29tcG9uZW50LFxuICAgIFRoeURyb3Bkb3duTWVudUl0ZW1EaXJlY3RpdmUsXG4gICAgVGh5RHJvcGRvd25NZW51SXRlbUljb25EaXJlY3RpdmUsXG4gICAgVGh5RHJvcGRvd25NZW51SXRlbU5hbWVEaXJlY3RpdmVcbn0gZnJvbSAnbmd4LXRldGh5cy9kcm9wZG93bic7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IEFJVGFibGUgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVGaWVsZE1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vdHlwZXMvZmllbGQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZpZWxkLW1lbnUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWVsZC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgVGh5SWNvbixcbiAgICAgICAgVGh5RGl2aWRlcixcbiAgICAgICAgVGh5RHJvcGRvd25NZW51Q29tcG9uZW50LFxuICAgICAgICBUaHlEcm9wZG93bk1lbnVJdGVtRGlyZWN0aXZlLFxuICAgICAgICBUaHlEcm9wZG93bk1lbnVJdGVtTmFtZURpcmVjdGl2ZSxcbiAgICAgICAgVGh5RHJvcGRvd25NZW51SXRlbUljb25EaXJlY3RpdmVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkTWVudSBleHRlbmRzIFRoeURyb3Bkb3duQWJzdHJhY3RNZW51IHtcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBmaWVsZElkITogc3RyaW5nO1xuXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgYWlUYWJsZSE6IEFJVGFibGU7XG5cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBmaWVsZE1lbnVzITogQUlUYWJsZUZpZWxkTWVudUl0ZW1bXTtcblxuICAgIEBJbnB1dCgpIG9yaWdpbiE6IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgcG9zaXRpb24hOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH07XG5cbiAgICBmaWVsZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWlUYWJsZS5maWVsZHMoKS5maW5kKChpdGVtKSA9PiBpdGVtLl9pZCA9PT0gdGhpcy5maWVsZElkKSE7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlKG1lbnU6IEFJVGFibGVGaWVsZE1lbnVJdGVtKSB7XG4gICAgICAgIGlmICgobWVudS5kaXNhYmxlZCAmJiAhbWVudS5kaXNhYmxlZCh0aGlzLmFpVGFibGUsIHRoaXMuZmllbGQpKSB8fCAhbWVudS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgbWVudS5leGVjICYmIG1lbnUuZXhlYyh0aGlzLmFpVGFibGUsIHRoaXMuZmllbGQsIHRoaXMub3JpZ2luLCB0aGlzLnBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBmb3IgKG1lbnUgb2YgZmllbGRNZW51czsgdHJhY2sgaW5kZXg7IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgIEBpZiAobWVudS50eXBlID09PSAnZGl2aWRlcicpIHtcbiAgICAgICAgPHRoeS1kaXZpZGVyIFt0aHlTdHlsZV09XCInc29saWQnXCI+PC90aHktZGl2aWRlcj5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQGlmICgobWVudS5oaWRkZW4gJiYgIW1lbnUuaGlkZGVuKGFpVGFibGUsIGZpZWxkKSkgfHwgIW1lbnUuaGlkZGVuKSB7XG4gICAgICAgICAgICA8YSB0aHlEcm9wZG93bk1lbnVJdGVtIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwiZXhlY3V0ZShtZW51KVwiPlxuICAgICAgICAgICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwibWVudS5pY29uIVwiPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgbWVudS5uYW1lISB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9jb21wb25lbnRzL2ZpZWxkLW1lbnUvZmllbGQtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9jb21wb25lbnRzL2ZpZWxkLW1lbnUvZmllbGQtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLDRCQUE0QixFQUM1QixnQ0FBZ0MsRUFDaEMsZ0NBQWdDLEVBQ25DLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWtCMUMsTUFBTSxPQUFPLFNBQVUsU0FBUSx1QkFBdUI7SUFkdEQ7O1FBeUJJLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBRSxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO0tBT047SUFMRyxPQUFPLENBQUMsSUFBMEI7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEYsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRixDQUFDO0lBQ0wsQ0FBQzs4R0FuQlEsU0FBUztrR0FBVCxTQUFTLG1OQzNCdEIsNm9CQWlCQSw0Q0RFUSxPQUFPLHNNQUNQLFVBQVUscUpBRVYsNEJBQTRCOzsyRkFLdkIsU0FBUztrQkFkckIsU0FBUzsrQkFDSSxZQUFZLGNBRVYsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNMLE9BQU87d0JBQ1AsVUFBVTt3QkFDVix3QkFBd0I7d0JBQ3hCLDRCQUE0Qjt3QkFDNUIsZ0NBQWdDO3dCQUNoQyxnQ0FBZ0M7cUJBQ25DOzhCQUcwQixPQUFPO3NCQUFqQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFFRSxPQUFPO3NCQUFqQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFFRSxVQUFVO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFFaEIsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeURpdmlkZXIgfSBmcm9tICduZ3gtdGV0aHlzL2RpdmlkZXInO1xuaW1wb3J0IHtcbiAgICBUaHlEcm9wZG93bkFic3RyYWN0TWVudSxcbiAgICBUaHlEcm9wZG93bk1lbnVDb21wb25lbnQsXG4gICAgVGh5RHJvcGRvd25NZW51SXRlbURpcmVjdGl2ZSxcbiAgICBUaHlEcm9wZG93bk1lbnVJdGVtSWNvbkRpcmVjdGl2ZSxcbiAgICBUaHlEcm9wZG93bk1lbnVJdGVtTmFtZURpcmVjdGl2ZVxufSBmcm9tICduZ3gtdGV0aHlzL2Ryb3Bkb3duJztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgQUlUYWJsZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgQUlUYWJsZUZpZWxkTWVudUl0ZW0gfSBmcm9tICcuLi8uLi90eXBlcy9maWVsZCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmllbGQtbWVudScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBUaHlJY29uLFxuICAgICAgICBUaHlEaXZpZGVyLFxuICAgICAgICBUaHlEcm9wZG93bk1lbnVDb21wb25lbnQsXG4gICAgICAgIFRoeURyb3Bkb3duTWVudUl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIFRoeURyb3Bkb3duTWVudUl0ZW1OYW1lRGlyZWN0aXZlLFxuICAgICAgICBUaHlEcm9wZG93bk1lbnVJdGVtSWNvbkRpcmVjdGl2ZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRmllbGRNZW51IGV4dGVuZHMgVGh5RHJvcGRvd25BYnN0cmFjdE1lbnUge1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGZpZWxkSWQhOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBhaVRhYmxlITogQUlUYWJsZTtcblxuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGZpZWxkTWVudXMhOiBBSVRhYmxlRmllbGRNZW51SXRlbVtdO1xuXG4gICAgQElucHV0KCkgb3JpZ2luITogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBwb3NpdGlvbiE6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTtcblxuICAgIGZpZWxkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5haVRhYmxlLmZpZWxkcygpLmZpbmQoKGl0ZW0pID0+IGl0ZW0uX2lkID09PSB0aGlzLmZpZWxkSWQpITtcbiAgICB9KTtcblxuICAgIGV4ZWN1dGUobWVudTogQUlUYWJsZUZpZWxkTWVudUl0ZW0pIHtcbiAgICAgICAgaWYgKChtZW51LmRpc2FibGVkICYmICFtZW51LmRpc2FibGVkKHRoaXMuYWlUYWJsZSwgdGhpcy5maWVsZCkpIHx8ICFtZW51LmRpc2FibGVkKSB7XG4gICAgICAgICAgICBtZW51LmV4ZWMgJiYgbWVudS5leGVjKHRoaXMuYWlUYWJsZSwgdGhpcy5maWVsZCwgdGhpcy5vcmlnaW4sIHRoaXMucG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGZvciAobWVudSBvZiBmaWVsZE1lbnVzOyB0cmFjayBpbmRleDsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgQGlmICgobWVudS5oaWRkZW4gJiYgIW1lbnUuaGlkZGVuKGFpVGFibGUsIGZpZWxkKSkgfHwgIW1lbnUuaGlkZGVuKSB7XG4gICAgICAgIEBpZiAobWVudS50eXBlID09PSAnZGl2aWRlcicpIHtcbiAgICAgICAgICAgIDx0aHktZGl2aWRlciBbdGh5U3R5bGVdPVwiJ3NvbGlkJ1wiPjwvdGh5LWRpdmlkZXI+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICB0aHlEcm9wZG93bk1lbnVJdGVtXG4gICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImV4ZWN1dGUobWVudSlcIlxuICAgICAgICAgICAgICAgIFt0aHlEaXNhYmxlZF09XCIhIShtZW51LmRpc2FibGVkICYmIG1lbnUuZGlzYWJsZWQoYWlUYWJsZSwgZmllbGQpKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJtZW51Lmljb24hXCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBtZW51Lm5hbWUhIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -80,7 +80,7 @@ export class Coordinate {
80
80
  offset = itemMetadata.offset + itemMetadata.size;
81
81
  }
82
82
  for (let i = lastMeasuredIndex + 1; i <= index; i++) {
83
- const size = isColumnType ? this.columnIndicesMap[i] : this.rowIndicesMap[i] ?? this.rowHeight;
83
+ const size = isColumnType ? this.columnIndicesMap[i] : (this.rowIndicesMap[i] ?? this.rowHeight);
84
84
  cellMetadataMap[i] = {
85
85
  offset,
86
86
  size
@@ -219,4 +219,4 @@ export class Coordinate {
219
219
  };
220
220
  }
221
221
  }
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29vcmRpbmF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2NvcmUvY29vcmRpbmF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTBDLG9CQUFvQixFQUFrQixNQUFNLFVBQVUsQ0FBQztBQUV4Rzs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBdUJuQixZQUFZLEVBQ1IsU0FBUyxFQUNULFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULGFBQWEsR0FBRyxFQUFFLEVBQ2xCLGdCQUFnQixHQUFHLEVBQUUsRUFDckIsV0FBVyxHQUFHLENBQUMsRUFDZixjQUFjLEdBQUcsQ0FBQyxFQUNsQixpQkFBaUIsR0FBRyxDQUFDLEVBQ0w7UUExQnBCLHFCQUFxQjtRQUNkLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUMxQyxzQkFBc0I7UUFDZixxQkFBZ0IsR0FBbUIsRUFBRSxDQUFDO1FBSzdDLGVBQWU7UUFDUixpQkFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLGVBQWU7UUFDUixvQkFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLG1CQUFjLEdBQXdDLEVBQUUsQ0FBQztRQUN6RCxzQkFBaUIsR0FBd0MsRUFBRSxDQUFDO1FBYy9ELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENB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LE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0YsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xHLE9BQU87WUFDSCxDQUFDO1lBQ0QsQ0FBQztZQUNELEtBQUs7WUFDTCxNQUFNO1NBQ1QsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFJVGFibGVDZWxsTWV0YURhdGEsIEFJVGFibGVDb29yZGluYXRlLCBBSVRhYmxlUm93Q29sdW1uVHlwZSwgQUlUYWJsZVNpemVNYXAgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICog55So5LqO5p6E5bu6IENhbnZhcyDln7rnoYDlnZDmoIfns7vvvIzlkI7nu63nmoTnu5jliLblt6XkvZzku6XmraTkuLrln7rnoYBcbiAqL1xuZXhwb3J0IGNsYXNzIENvb3JkaW5hdGUge1xuICAgIHByb3RlY3RlZCBfcm93SGVpZ2h0OiBudW1iZXI7XG4gICAgcHVibGljIHJvd0NvdW50OiBudW1iZXI7XG4gICAgcHVibGljIGNvbHVtbkNvdW50OiBudW1iZXI7XG4gICAgcHVibGljIGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQ7XG4gICAgcHVibGljIGNvbnRhaW5lcldpZHRoOiBudW1iZXI7XG4gICAgcHVibGljIGNvbnRhaW5lckhlaWdodDogbnVtYmVyO1xuICAgIC8vIOeUqCBpbmRleCDmmKDlsIQg5q+P5LiA6KGM55qEIOmrmOW6plxuICAgIHB1YmxpYyByb3dJbmRpY2VzTWFwOiBBSVRhYmxlU2l6ZU1hcCA9IHt9O1xuICAgIC8vIOeUqCBpbmRleCDmmKDlsIQg5q+P5LiA5YiXIOeahCDlrr3luqZcbiAgICBwdWJsaWMgY29sdW1uSW5kaWNlc01hcDogQUlUYWJsZVNpemVNYXAgPSB7fTtcbiAgICAvLyDpmaTljrvooajlpLTlkoznvJblj7fliJfnnJ/mraPljZXlhYPmoLznu5jliLbnmoTliJ3lp4vlgLwgeFxuICAgIHB1YmxpYyByb3dJbml0U2l6ZTogbnVtYmVyO1xuICAgIC8vIOmZpOWOu+ihqOWktOWSjOe8luWPt+WIl+ecn+ato+WNleWFg+agvOe7mOWItueahOWIneWni+WAvCB5XG4gICAgcHVibGljIGNvbHVtbkluaXRTaXplOiBudW1iZXI7XG4gICAgLy8g6KGM5Z2Q5qCH6ZuG5Lit5pyA5ZCO5LiA6KGM55qE57Si5byVXG4gICAgcHVibGljIGxhc3RSb3dJbmRleCA9IC0xO1xuICAgIC8vIOWIl+WdkOagh+mbhuS4reacgOWQjuS4gOWIl+eahOe0ouW8lVxuICAgIHB1YmxpYyBsYXN0Q29sdW1uSW5kZXggPSAtMTtcbiAgICBwdWJsaWMgcm93TWV0YURhdGFNYXA6IFJlY29yZDxudW1iZXIsIEFJVGFibGVDZWxsTWV0YURhdGE+ID0ge307XG4gICAgcHVibGljIGNvbHVtbk1ldGFEYXRhTWFwOiBSZWNvcmQ8bnVtYmVyLCBBSVRhYmxlQ2VsbE1ldGFEYXRhPiA9IHt9O1xuICAgIHB1YmxpYyBmcm96ZW5Db2x1bW5Db3VudDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3Ioe1xuICAgICAgICByb3dIZWlnaHQsXG4gICAgICAgIHJvd0NvdW50LFxuICAgICAgICBjb2x1bW5Db3VudCxcbiAgICAgICAgY29udGFpbmVyLFxuICAgICAgICByb3dJbmRpY2VzTWFwID0ge30sXG4gICAgICAgIGNvbHVtbkluZGljZXNNYXAgPSB7fSxcbiAgICAgICAgcm93SW5pdFNpemUgPSAwLFxuICAgICAgICBjb2x1bW5Jbml0U2l6ZSA9IDAsXG4gICAgICAgIGZyb3plbkNvbHVtbkNvdW50ID0gMFxuICAgIH06IEFJVGFibGVDb29yZGluYXRlKSB7XG4gICAgICAgIHRoaXMuX3Jvd0hlaWdodCA9IHJvd0hlaWdodDtcbiAgICAgICAgdGhpcy5yb3dDb3VudCA9IHJvd0NvdW50O1xuICAgICAgICB0aGlzLmNvbHVtbkNvdW50ID0gY29sdW1uQ291bnQ7XG4gICAgICAgIHRoaXMucm93SW5pdFNpemUgPSByb3dJbml0U2l6ZTtcbiAgICAgICAgdGhpcy5jb2x1bW5Jbml0U2l6ZSA9IGNvbHVtbkluaXRTaXplO1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyLm9mZnNldFdpZHRoO1xuICAgICAgICB0aGlzLnJvd0luZGljZXNNYXAgPSByb3dJbmRpY2VzTWFwO1xuICAgICAgICB0aGlzLmNvbHVtbkluZGljZXNNYXAgPSBjb2x1bW5JbmRpY2VzTWFwO1xuICAgICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IGNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIHRoaXMuZnJvemVuQ29sdW1uQ291bnQgPSBmcm96ZW5Db2x1bW5Db3VudDtcbiAgICAgICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByb3dIZWlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dIZWlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCByb3dIZWlnaHQoaGVpZ2h0OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fcm93SGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaAu+WuveW6plxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG90YWxXaWR0aCgpIHtcbiAgICAgICAgY29uc3QgeyBvZmZzZXQsIHNpemUgfSA9IHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKHRoaXMuY29sdW1uQ291bnQgLSAxLCBBSVRhYmxlUm93Q29sdW1uVHlwZS5jb2x1bW4pO1xuICAgICAgICByZXR1cm4gb2Zmc2V0ICsgc2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmgLvpq5jluqZcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRvdGFsSGVpZ2h0KCkge1xuICAgICAgICBjb25zdCB7IG9mZnNldCwgc2l6ZSB9ID0gdGhpcy5nZXRDZWxsTWV0YURhdGEodGhpcy5yb3dDb3VudCAtIDEsIEFJVGFibGVSb3dDb2x1bW5UeXBlLnJvdyk7XG4gICAgICAgIHJldHVybiBvZmZzZXQgKyBzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagueaNriByb3dJbmRleCDojrflj5blr7nlupTooYzpq5hcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Um93SGVpZ2h0KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm93SW5kaWNlc01hcFtpbmRleF0gPz8gdGhpcy5yb3dIZWlnaHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2uIGNvbHVtbkluZGV4IOiOt+WPluWvueW6lOWIl+WuvVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb2x1bW5XaWR0aChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbkluZGljZXNNYXBbaW5kZXhdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiOt+WPluavj+S4qiBjZWxsIOWeguebtC/msLTlubPmlrnlkJHnmoTlnZDmoIfkv6Hmga9cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0Q2VsbE1ldGFEYXRhKGluZGV4OiBudW1iZXIsIGl0ZW1UeXBlOiBBSVRhYmxlUm93Q29sdW1uVHlwZSk6IEFJVGFibGVDZWxsTWV0YURhdGEge1xuICAgICAgICBsZXQgY2VsbE1ldGFkYXRhTWFwLCBsYXN0TWVhc3VyZWRJbmRleCwgb2Zmc2V0O1xuICAgICAgICBjb25zdCBpc0NvbHVtblR5cGUgPSBpdGVtVHlwZSA9PT0gQUlUYWJsZVJvd0NvbHVtblR5cGUuY29sdW1uO1xuICAgICAgICBpZiAoaXNDb2x1bW5UeXBlKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSB0aGlzLmNvbHVtbkluaXRTaXplO1xuICAgICAgICAgICAgbGFzdE1lYXN1cmVkSW5kZXggPSB0aGlzLmxhc3RDb2x1bW5JbmRleDtcbiAgICAgICAgICAgIGNlbGxNZXRhZGF0YU1hcCA9IHRoaXMuY29sdW1uTWV0YURhdGFNYXA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvZmZzZXQgPSB0aGlzLnJvd0luaXRTaXplO1xuICAgICAgICAgICAgbGFzdE1lYXN1cmVkSW5kZXggPSB0aGlzLmxhc3RSb3dJbmRleDtcbiAgICAgICAgICAgIGNlbGxNZXRhZGF0YU1hcCA9IHRoaXMucm93TWV0YURhdGFNYXA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4ID4gbGFzdE1lYXN1cmVkSW5kZXgpIHtcbiAgICAgICAgICAgIGlmIChsYXN0TWVhc3VyZWRJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbU1ldGFkYXRhID0gY2VsbE1ldGFkYXRhTWFwW2xhc3RNZWFzdXJlZEluZGV4XTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPSBpdGVtTWV0YWRhdGEub2Zmc2V0ICsgaXRlbU1ldGFkYXRhLnNpemU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBsYXN0TWVhc3VyZWRJbmRleCArIDE7IGkgPD0gaW5kZXg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemUgPSBpc0NvbHVtblR5cGUgPyB0aGlzLmNvbHVtbkluZGljZXNNYXBbaV0gOiB0aGlzLnJvd0luZGljZXNNYXBbaV0gPz8gdGhpcy5yb3dIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICBjZWxsTWV0YWRhdGFNYXBbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHNpemU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNDb2x1bW5UeXBlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0Q29sdW1uSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0Um93SW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2VsbE1ldGFkYXRhTWFwW2luZGV4XSB8fCB7IHNpemU6IDAsIG9mZnNldDogMCB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOafpeaJvuacgOi/keeahOWNleWFg+agvOe0ouW8lVxuICAgICAqIOaAp+iDvei+g+W3ru+8jOS9huaXoOiuuuWmguS9lemDveWPr+S7peaJvuWIsFxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZpbmROZWFyZXN0Q2VsbEluZGV4KGluZGV4OiBudW1iZXIsIG9mZnNldDogbnVtYmVyLCBpdGVtVHlwZTogQUlUYWJsZVJvd0NvbHVtblR5cGUpIHtcbiAgICAgICAgY29uc3QgaXRlbUNvdW50ID0gaXRlbVR5cGUgPT09IEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbiA/IHRoaXMuY29sdW1uQ291bnQgOiB0aGlzLnJvd0NvdW50O1xuICAgICAgICBsZXQgaW50ZXJ2YWwgPSAxO1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGl0ZW1Db3VudCAmJiB0aGlzLmdldENlbGxNZXRhRGF0YShpbmRleCwgaXRlbVR5cGUpLm9mZnNldCA8IG9mZnNldCkge1xuICAgICAgICAgICAgaW5kZXggKz0gaW50ZXJ2YWw7XG4gICAgICAgICAgICBpbnRlcnZhbCAqPSAyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmROZWFyZXN0Q2VsbEluZGV4QnlCaW5hcnkob2Zmc2V0LCBNYXRoLmZsb29yKGluZGV4IC8gMiksIE1hdGgubWluKGluZGV4LCBpdGVtQ291bnQgLSAxKSwgaXRlbVR5cGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOS6jOWIhuazleafpeaJvuacgOi/keeahOWNleWFg+agvOe0ouW8lVxuICAgICAqIOaAp+iDveabtOS9s++8jOS9humcgOimgeWKoOi9veaVsOaNrlxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZpbmROZWFyZXN0Q2VsbEluZGV4QnlCaW5hcnkob2Zmc2V0OiBudW1iZXIsIGxvdzogbnVtYmVyLCBoaWdoOiBudW1iZXIsIGl0ZW1UeXBlOiBBSVRhYmxlUm93Q29sdW1uVHlwZSkge1xuICAgICAgICB3aGlsZSAobG93IDw9IGhpZ2gpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pZGRsZSA9IGxvdyArIE1hdGguZmxvb3IoKGhpZ2ggLSBsb3cpIC8gMik7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50T2Zmc2V0ID0gdGhpcy5nZXRDZWxsTWV0YURhdGEobWlkZGxlLCBpdGVtVHlwZSkub2Zmc2V0O1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudE9mZnNldCA9PT0gb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pZGRsZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudE9mZnNldCA8IG9mZnNldCkge1xuICAgICAgICAgICAgICAgIGxvdyA9IG1pZGRsZSArIDE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRPZmZzZXQgPiBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICBoaWdoID0gbWlkZGxlIC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG93ID4gLTEgPyBsb3cgLSAxIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoLnmja7lgY/np7vph4/mn6Xmib7mnIDov5HnmoTljZXlhYPmoLzntKLlvJVcbiAgICAgKi9cbiAgICBwdWJsaWMgZmluZE5lYXJlc3RDZWxsSW5kZXgob2Zmc2V0OiBudW1iZXIsIGl0ZW1UeXBlOiBBSVRhYmxlUm93Q29sdW1uVHlwZSkge1xuICAgICAgICBsZXQgbGFzdEluZGV4O1xuICAgICAgICBpZiAoaXRlbVR5cGUgPT09IEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbikge1xuICAgICAgICAgICAgbGFzdEluZGV4ID0gdGhpcy5sYXN0Q29sdW1uSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsYXN0SW5kZXggPSB0aGlzLmxhc3RSb3dJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjZWxsT2Zmc2V0ID0gdGhpcy5nZXRDZWxsTWV0YURhdGEobGFzdEluZGV4LCBpdGVtVHlwZSkub2Zmc2V0O1xuICAgICAgICBjb25zdCBsYXN0TWVhc3VyZWRJdGVtT2Zmc2V0ID0gbGFzdEluZGV4ID4gMCA/IGNlbGxPZmZzZXQgOiAwO1xuXG4gICAgICAgIGlmIChsYXN0TWVhc3VyZWRJdGVtT2Zmc2V0ID49IG9mZnNldCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmROZWFyZXN0Q2VsbEluZGV4QnlCaW5hcnkob2Zmc2V0LCAwLCBsYXN0SW5kZXgsIGl0ZW1UeXBlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZmluZE5lYXJlc3RDZWxsSW5kZXgoTWF0aC5tYXgoMCwgbGFzdEluZGV4KSwgb2Zmc2V0LCBpdGVtVHlwZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2u5Z6C55u05YGP56e76YeP5om+5Yiw6LW35aeL5Y2V5YWD5qC855qE57Si5byVXG4gICAgICovXG4gICAgcHVibGljIGdldFJvd1N0YXJ0SW5kZXgob2Zmc2V0OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZE5lYXJlc3RDZWxsSW5kZXgob2Zmc2V0LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5yb3cpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagueaNruWeguebtOi1t+Wni+WNleWFg+agvOeahOe0ouW8leafpeaJvue7k+adn+WNleWFg+agvOeahOe0ouW8lVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSb3dTdG9wSW5kZXgoc3RhcnRJbmRleDogbnVtYmVyLCBzY3JvbGxUb3A6IG51bWJlcikge1xuICAgICAgICBjb25zdCBpdGVtTWV0YWRhdGEgPSB0aGlzLmdldENlbGxNZXRhRGF0YShzdGFydEluZGV4LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5yb3cpO1xuICAgICAgICBjb25zdCBtYXhPZmZzZXQgPSBzY3JvbGxUb3AgKyB0aGlzLmNvbnRhaW5lckhlaWdodDtcbiAgICAgICAgbGV0IG9mZnNldCA9IGl0ZW1NZXRhZGF0YS5vZmZzZXQgKyBpdGVtTWV0YWRhdGEuc2l6ZTtcbiAgICAgICAgbGV0IHN0b3BJbmRleCA9IHN0YXJ0SW5kZXg7XG5cbiAgICAgICAgd2hpbGUgKHN0b3BJbmRleCA8IHRoaXMucm93Q291bnQgLSAxICYmIG9mZnNldCA8IG1heE9mZnNldCkge1xuICAgICAgICAgICAgc3RvcEluZGV4Kys7XG4gICAgICAgICAgICBvZmZzZXQgKz0gdGhpcy5nZXRDZWxsTWV0YURhdGEoc3RvcEluZGV4LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5yb3cpLnNpemU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0b3BJbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoLnmja7msLTlubPlgY/np7vph4/mib7liLDotbflp4vljZXlhYPmoLznmoTntKLlvJVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29sdW1uU3RhcnRJbmRleChvZmZzZXQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kTmVhcmVzdENlbGxJbmRleChvZmZzZXQsIEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2u5rC05bmz6LW35aeL5Y2V5YWD5qC855qE57Si5byV5p+l5om+57uT5p2f5Y2V5YWD5qC855qE57Si5byVXG4gICAgICovXG4gICAgcHVibGljIGdldENvbHVtblN0b3BJbmRleChzdGFydEluZGV4OiBudW1iZXIsIHNjcm9sbExlZnQ6IG51bWJlcikge1xuICAgICAgICBjb25zdCBpdGVtTWV0YWRhdGEgPSB0aGlzLmdldENlbGxNZXRhRGF0YShzdGFydEluZGV4LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5jb2x1bW4pO1xuICAgICAgICBjb25zdCBtYXhPZmZzZXQgPSBzY3JvbGxMZWZ0ICsgdGhpcy5jb250YWluZXJXaWR0aDtcbiAgICAgICAgbGV0IG9mZnNldCA9IGl0ZW1NZXRhZGF0YS5vZmZzZXQgKyBpdGVtTWV0YWRhdGEuc2l6ZTtcbiAgICAgICAgbGV0IHN0b3BJbmRleCA9IHN0YXJ0SW5kZXg7XG5cbiAgICAgICAgd2hpbGUgKHN0b3BJbmRleCA8IHRoaXMuY29sdW1uQ291bnQgLSAxICYmIG9mZnNldCA8IG1heE9mZnNldCkge1xuICAgICAgICAgICAgc3RvcEluZGV4Kys7XG4gICAgICAgICAgICBvZmZzZXQgKz0gdGhpcy5nZXRDZWxsTWV0YURhdGEoc3RvcEluZGV4LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5jb2x1bW4pLnNpemU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0b3BJbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoLnmja4gcm93SW5kZXgg6I635Y+W5Z6C55u05YGP56e76YePXG4gICAgICovXG4gICAgcHVibGljIGdldFJvd09mZnNldChyb3dJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENlbGxNZXRhRGF0YShyb3dJbmRleCwgQUlUYWJsZVJvd0NvbHVtblR5cGUucm93KS5vZmZzZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2uIGNvbHVtbkluZGV4IOiOt+WPluawtOW5s+WBj+enu+mHj1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb2x1bW5PZmZzZXQoY29sdW1uSW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDZWxsTWV0YURhdGEoY29sdW1uSW5kZXgsIEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbikub2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWGu+e7k+WMuuWfn+WuveW6plxuICAgICAqL1xuICAgIGdldCBmcm96ZW5Db2x1bW5XaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29sdW1uT2Zmc2V0KHRoaXMuZnJvemVuQ29sdW1uQ291bnQpIC0gdGhpcy5jb2x1bW5Jbml0U2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoLnmja4gcm93SW5kZXgsIGNvbHVtbkluZGV4IOiOt+WPluWNleWFg+agvOWdkOagh+S/oeaBr1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDZWxsUmVjdChyb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHsgc2l6ZTogaGVpZ2h0LCBvZmZzZXQ6IHkgfSA9IHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKHJvd0luZGV4LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5yb3cpO1xuICAgICAgICBjb25zdCB7IHNpemU6IHdpZHRoLCBvZmZzZXQ6IHggfSA9IHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKGNvbHVtbkluZGV4LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5jb2x1bW4pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeCxcbiAgICAgICAgICAgIHksXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29vcmRpbmF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2NvcmUvY29vcmRpbmF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTBDLG9CQUFvQixFQUFrQixNQUFNLFVBQVUsQ0FBQztBQUV4Rzs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBdUJuQixZQUFZLEVBQ1IsU0FBUyxFQUNULFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULGFBQWEsR0FBRyxFQUFFLEVBQ2xCLGdCQUFnQixHQUFHLEVBQUUsRUFDckIsV0FBVyxHQUFHLENBQUMsRUFDZixjQUFjLEdBQUcsQ0FBQyxFQUNsQixpQkFBaUIsR0FBRyxDQUFDLEVBQ0w7UUExQnBCLHFCQUFxQjtRQUNkLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUMxQyxzQkFBc0I7UUFDZixxQkFBZ0IsR0FBbUIsRUFBRSxDQUFDO1FBSzdDLGVBQWU7UUFDUixpQkFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLGVBQWU7UUFDUixvQkFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLG1CQUFjLEdBQXdDLEVBQUUsQ0FBQztRQUN6RCxzQkFBaUIsR0FBd0MsRUFBRSxDQUFDO1FBYy9ELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENB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LElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdGLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRyxPQUFPO1lBQ0gsQ0FBQztZQUNELENBQUM7WUFDRCxLQUFLO1lBQ0wsTUFBTTtTQUNULENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBSVRhYmxlQ2VsbE1ldGFEYXRhLCBBSVRhYmxlQ29vcmRpbmF0ZSwgQUlUYWJsZVJvd0NvbHVtblR5cGUsIEFJVGFibGVTaXplTWFwIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIOeUqOS6juaehOW7uiBDYW52YXMg5Z+656GA5Z2Q5qCH57O777yM5ZCO57ut55qE57uY5Yi25bel5L2c5Lul5q2k5Li65Z+656GAXG4gKi9cbmV4cG9ydCBjbGFzcyBDb29yZGluYXRlIHtcbiAgICBwcm90ZWN0ZWQgX3Jvd0hlaWdodDogbnVtYmVyO1xuICAgIHB1YmxpYyByb3dDb3VudDogbnVtYmVyO1xuICAgIHB1YmxpYyBjb2x1bW5Db3VudDogbnVtYmVyO1xuICAgIHB1YmxpYyBjb250YWluZXI6IEhUTUxEaXZFbGVtZW50O1xuICAgIHB1YmxpYyBjb250YWluZXJXaWR0aDogbnVtYmVyO1xuICAgIHB1YmxpYyBjb250YWluZXJIZWlnaHQ6IG51bWJlcjtcbiAgICAvLyDnlKggaW5kZXgg5pig5bCEIOavj+S4gOihjOeahCDpq5jluqZcbiAgICBwdWJsaWMgcm93SW5kaWNlc01hcDogQUlUYWJsZVNpemVNYXAgPSB7fTtcbiAgICAvLyDnlKggaW5kZXgg5pig5bCEIOavj+S4gOWIlyDnmoQg5a695bqmXG4gICAgcHVibGljIGNvbHVtbkluZGljZXNNYXA6IEFJVGFibGVTaXplTWFwID0ge307XG4gICAgLy8g6Zmk5Y676KGo5aS05ZKM57yW5Y+35YiX55yf5q2j5Y2V5YWD5qC857uY5Yi255qE5Yid5aeL5YC8IHhcbiAgICBwdWJsaWMgcm93SW5pdFNpemU6IG51bWJlcjtcbiAgICAvLyDpmaTljrvooajlpLTlkoznvJblj7fliJfnnJ/mraPljZXlhYPmoLznu5jliLbnmoTliJ3lp4vlgLwgeVxuICAgIHB1YmxpYyBjb2x1bW5Jbml0U2l6ZTogbnVtYmVyO1xuICAgIC8vIOihjOWdkOagh+mbhuS4reacgOWQjuS4gOihjOeahOe0ouW8lVxuICAgIHB1YmxpYyBsYXN0Um93SW5kZXggPSAtMTtcbiAgICAvLyDliJflnZDmoIfpm4bkuK3mnIDlkI7kuIDliJfnmoTntKLlvJVcbiAgICBwdWJsaWMgbGFzdENvbHVtbkluZGV4ID0gLTE7XG4gICAgcHVibGljIHJvd01ldGFEYXRhTWFwOiBSZWNvcmQ8bnVtYmVyLCBBSVRhYmxlQ2VsbE1ldGFEYXRhPiA9IHt9O1xuICAgIHB1YmxpYyBjb2x1bW5NZXRhRGF0YU1hcDogUmVjb3JkPG51bWJlciwgQUlUYWJsZUNlbGxNZXRhRGF0YT4gPSB7fTtcbiAgICBwdWJsaWMgZnJvemVuQ29sdW1uQ291bnQ6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHtcbiAgICAgICAgcm93SGVpZ2h0LFxuICAgICAgICByb3dDb3VudCxcbiAgICAgICAgY29sdW1uQ291bnQsXG4gICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgcm93SW5kaWNlc01hcCA9IHt9LFxuICAgICAgICBjb2x1bW5JbmRpY2VzTWFwID0ge30sXG4gICAgICAgIHJvd0luaXRTaXplID0gMCxcbiAgICAgICAgY29sdW1uSW5pdFNpemUgPSAwLFxuICAgICAgICBmcm96ZW5Db2x1bW5Db3VudCA9IDBcbiAgICB9OiBBSVRhYmxlQ29vcmRpbmF0ZSkge1xuICAgICAgICB0aGlzLl9yb3dIZWlnaHQgPSByb3dIZWlnaHQ7XG4gICAgICAgIHRoaXMucm93Q291bnQgPSByb3dDb3VudDtcbiAgICAgICAgdGhpcy5jb2x1bW5Db3VudCA9IGNvbHVtbkNvdW50O1xuICAgICAgICB0aGlzLnJvd0luaXRTaXplID0gcm93SW5pdFNpemU7XG4gICAgICAgIHRoaXMuY29sdW1uSW5pdFNpemUgPSBjb2x1bW5Jbml0U2l6ZTtcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IGNvbnRhaW5lci5vZmZzZXRXaWR0aDtcbiAgICAgICAgdGhpcy5yb3dJbmRpY2VzTWFwID0gcm93SW5kaWNlc01hcDtcbiAgICAgICAgdGhpcy5jb2x1bW5JbmRpY2VzTWFwID0gY29sdW1uSW5kaWNlc01hcDtcbiAgICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSBjb250YWluZXIub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB0aGlzLmZyb3plbkNvbHVtbkNvdW50ID0gZnJvemVuQ29sdW1uQ291bnQ7XG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm93SGVpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93SGVpZ2h0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgcm93SGVpZ2h0KGhlaWdodDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3Jvd0hlaWdodCA9IGhlaWdodDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmgLvlrr3luqZcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRvdGFsV2lkdGgoKSB7XG4gICAgICAgIGNvbnN0IHsgb2Zmc2V0LCBzaXplIH0gPSB0aGlzLmdldENlbGxNZXRhRGF0YSh0aGlzLmNvbHVtbkNvdW50IC0gMSwgQUlUYWJsZVJvd0NvbHVtblR5cGUuY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIG9mZnNldCArIHNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5oC76auY5bqmXG4gICAgICovXG4gICAgcHVibGljIGdldCB0b3RhbEhlaWdodCgpIHtcbiAgICAgICAgY29uc3QgeyBvZmZzZXQsIHNpemUgfSA9IHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKHRoaXMucm93Q291bnQgLSAxLCBBSVRhYmxlUm93Q29sdW1uVHlwZS5yb3cpO1xuICAgICAgICByZXR1cm4gb2Zmc2V0ICsgc2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoLnmja4gcm93SW5kZXgg6I635Y+W5a+55bqU6KGM6auYXG4gICAgICovXG4gICAgcHVibGljIGdldFJvd0hlaWdodChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvd0luZGljZXNNYXBbaW5kZXhdID8/IHRoaXMucm93SGVpZ2h0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagueaNriBjb2x1bW5JbmRleCDojrflj5blr7nlupTliJflrr1cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29sdW1uV2lkdGgoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5JbmRpY2VzTWFwW2luZGV4XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDojrflj5bmr4/kuKogY2VsbCDlnoLnm7Qv5rC05bmz5pa55ZCR55qE5Z2Q5qCH5L+h5oGvXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldENlbGxNZXRhRGF0YShpbmRleDogbnVtYmVyLCBpdGVtVHlwZTogQUlUYWJsZVJvd0NvbHVtblR5cGUpOiBBSVRhYmxlQ2VsbE1ldGFEYXRhIHtcbiAgICAgICAgbGV0IGNlbGxNZXRhZGF0YU1hcCwgbGFzdE1lYXN1cmVkSW5kZXgsIG9mZnNldDtcbiAgICAgICAgY29uc3QgaXNDb2x1bW5UeXBlID0gaXRlbVR5cGUgPT09IEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbjtcbiAgICAgICAgaWYgKGlzQ29sdW1uVHlwZSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5jb2x1bW5Jbml0U2l6ZTtcbiAgICAgICAgICAgIGxhc3RNZWFzdXJlZEluZGV4ID0gdGhpcy5sYXN0Q29sdW1uSW5kZXg7XG4gICAgICAgICAgICBjZWxsTWV0YWRhdGFNYXAgPSB0aGlzLmNvbHVtbk1ldGFEYXRhTWFwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5yb3dJbml0U2l6ZTtcbiAgICAgICAgICAgIGxhc3RNZWFzdXJlZEluZGV4ID0gdGhpcy5sYXN0Um93SW5kZXg7XG4gICAgICAgICAgICBjZWxsTWV0YWRhdGFNYXAgPSB0aGlzLnJvd01ldGFEYXRhTWFwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA+IGxhc3RNZWFzdXJlZEluZGV4KSB7XG4gICAgICAgICAgICBpZiAobGFzdE1lYXN1cmVkSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1NZXRhZGF0YSA9IGNlbGxNZXRhZGF0YU1hcFtsYXN0TWVhc3VyZWRJbmRleF07XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gaXRlbU1ldGFkYXRhLm9mZnNldCArIGl0ZW1NZXRhZGF0YS5zaXplO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gbGFzdE1lYXN1cmVkSW5kZXggKyAxOyBpIDw9IGluZGV4OyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXplID0gaXNDb2x1bW5UeXBlID8gdGhpcy5jb2x1bW5JbmRpY2VzTWFwW2ldIDogKHRoaXMucm93SW5kaWNlc01hcFtpXSA/PyB0aGlzLnJvd0hlaWdodCk7XG5cbiAgICAgICAgICAgICAgICBjZWxsTWV0YWRhdGFNYXBbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHNpemU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNDb2x1bW5UeXBlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0Q29sdW1uSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0Um93SW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2VsbE1ldGFkYXRhTWFwW2luZGV4XSB8fCB7IHNpemU6IDAsIG9mZnNldDogMCB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOafpeaJvuacgOi/keeahOWNleWFg+agvOe0ouW8lVxuICAgICAqIOaAp+iDvei+g+W3ru+8jOS9huaXoOiuuuWmguS9lemDveWPr+S7peaJvuWIsFxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZpbmROZWFyZXN0Q2VsbEluZGV4KGluZGV4OiBudW1iZXIsIG9mZnNldDogbnVtYmVyLCBpdGVtVHlwZTogQUlUYWJsZVJvd0NvbHVtblR5cGUpIHtcbiAgICAgICAgY29uc3QgaXRlbUNvdW50ID0gaXRlbVR5cGUgPT09IEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbiA/IHRoaXMuY29sdW1uQ291bnQgOiB0aGlzLnJvd0NvdW50O1xuICAgICAgICBsZXQgaW50ZXJ2YWwgPSAxO1xuXG4gICAgICAgIHdoaWxlIChpbmRleCA8IGl0ZW1Db3VudCAmJiB0aGlzLmdldENlbGxNZXRhRGF0YShpbmRleCwgaXRlbVR5cGUpLm9mZnNldCA8IG9mZnNldCkge1xuICAgICAgICAgICAgaW5kZXggKz0gaW50ZXJ2YWw7XG4gICAgICAgICAgICBpbnRlcnZhbCAqPSAyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmROZWFyZXN0Q2VsbEluZGV4QnlCaW5hcnkob2Zmc2V0LCBNYXRoLmZsb29yKGluZGV4IC8gMiksIE1hdGgubWluKGluZGV4LCBpdGVtQ291bnQgLSAxKSwgaXRlbVR5cGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOS6jOWIhuazleafpeaJvuacgOi/keeahOWNleWFg+agvOe0ouW8lVxuICAgICAqIOaAp+iDveabtOS9s++8jOS9humcgOimgeWKoOi9veaVsOaNrlxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZpbmROZWFyZXN0Q2VsbEluZGV4QnlCaW5hcnkob2Zmc2V0OiBudW1iZXIsIGxvdzogbnVtYmVyLCBoaWdoOiBudW1iZXIsIGl0ZW1UeXBlOiBBSVRhYmxlUm93Q29sdW1uVHlwZSkge1xuICAgICAgICB3aGlsZSAobG93IDw9IGhpZ2gpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pZGRsZSA9IGxvdyArIE1hdGguZmxvb3IoKGhpZ2ggLSBsb3cpIC8gMik7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50T2Zmc2V0ID0gdGhpcy5nZXRDZWxsTWV0YURhdGEobWlkZGxlLCBpdGVtVHlwZSkub2Zmc2V0O1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudE9mZnNldCA9PT0gb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pZGRsZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudE9mZnNldCA8IG9mZnNldCkge1xuICAgICAgICAgICAgICAgIGxvdyA9IG1pZGRsZSArIDE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRPZmZzZXQgPiBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICBoaWdoID0gbWlkZGxlIC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG93ID4gLTEgPyBsb3cgLSAxIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoLnmja7lgY/np7vph4/mn6Xmib7mnIDov5HnmoTljZXlhYPmoLzntKLlvJVcbiAgICAgKi9cbiAgICBwdWJsaWMgZmluZE5lYXJlc3RDZWxsSW5kZXgob2Zmc2V0OiBudW1iZXIsIGl0ZW1UeXBlOiBBSVRhYmxlUm93Q29sdW1uVHlwZSkge1xuICAgICAgICBsZXQgbGFzdEluZGV4O1xuICAgICAgICBpZiAoaXRlbVR5cGUgPT09IEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbikge1xuICAgICAgICAgICAgbGFzdEluZGV4ID0gdGhpcy5sYXN0Q29sdW1uSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsYXN0SW5kZXggPSB0aGlzLmxhc3RSb3dJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjZWxsT2Zmc2V0ID0gdGhpcy5nZXRDZWxsTWV0YURhdGEobGFzdEluZGV4LCBpdGVtVHlwZSkub2Zmc2V0O1xuICAgICAgICBjb25zdCBsYXN0TWVhc3VyZWRJdGVtT2Zmc2V0ID0gbGFzdEluZGV4ID4gMCA/IGNlbGxPZmZzZXQgOiAwO1xuXG4gICAgICAgIGlmIChsYXN0TWVhc3VyZWRJdGVtT2Zmc2V0ID49IG9mZnNldCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmROZWFyZXN0Q2VsbEluZGV4QnlCaW5hcnkob2Zmc2V0LCAwLCBsYXN0SW5kZXgsIGl0ZW1UeXBlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZmluZE5lYXJlc3RDZWxsSW5kZXgoTWF0aC5tYXgoMCwgbGFzdEluZGV4KSwgb2Zmc2V0LCBpdGVtVHlwZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2u5Z6C55u05YGP56e76YeP5om+5Yiw6LW35aeL5Y2V5YWD5qC855qE57Si5byVXG4gICAgICovXG4gICAgcHVibGljIGdldFJvd1N0YXJ0SW5kZXgob2Zmc2V0OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZE5lYXJlc3RDZWxsSW5kZXgob2Zmc2V0LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5yb3cpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagueaNruWeguebtOi1t+Wni+WNleWFg+agvOeahOe0ouW8leafpeaJvue7k+adn+WNleWFg+agvOeahOe0ouW8lVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSb3dTdG9wSW5kZXgoc3RhcnRJbmRleDogbnVtYmVyLCBzY3JvbGxUb3A6IG51bWJlcikge1xuICAgICAgICBjb25zdCBpdGVtTWV0YWRhdGEgPSB0aGlzLmdldENlbGxNZXRhRGF0YShzdGFydEluZGV4LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5yb3cpO1xuICAgICAgICBjb25zdCBtYXhPZmZzZXQgPSBzY3JvbGxUb3AgKyB0aGlzLmNvbnRhaW5lckhlaWdodDtcbiAgICAgICAgbGV0IG9mZnNldCA9IGl0ZW1NZXRhZGF0YS5vZmZzZXQgKyBpdGVtTWV0YWRhdGEuc2l6ZTtcbiAgICAgICAgbGV0IHN0b3BJbmRleCA9IHN0YXJ0SW5kZXg7XG5cbiAgICAgICAgd2hpbGUgKHN0b3BJbmRleCA8IHRoaXMucm93Q291bnQgLSAxICYmIG9mZnNldCA8IG1heE9mZnNldCkge1xuICAgICAgICAgICAgc3RvcEluZGV4Kys7XG4gICAgICAgICAgICBvZmZzZXQgKz0gdGhpcy5nZXRDZWxsTWV0YURhdGEoc3RvcEluZGV4LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5yb3cpLnNpemU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0b3BJbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoLnmja7msLTlubPlgY/np7vph4/mib7liLDotbflp4vljZXlhYPmoLznmoTntKLlvJVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29sdW1uU3RhcnRJbmRleChvZmZzZXQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kTmVhcmVzdENlbGxJbmRleChvZmZzZXQsIEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2u5rC05bmz6LW35aeL5Y2V5YWD5qC855qE57Si5byV5p+l5om+57uT5p2f5Y2V5YWD5qC855qE57Si5byVXG4gICAgICovXG4gICAgcHVibGljIGdldENvbHVtblN0b3BJbmRleChzdGFydEluZGV4OiBudW1iZXIsIHNjcm9sbExlZnQ6IG51bWJlcikge1xuICAgICAgICBjb25zdCBpdGVtTWV0YWRhdGEgPSB0aGlzLmdldENlbGxNZXRhRGF0YShzdGFydEluZGV4LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5jb2x1bW4pO1xuICAgICAgICBjb25zdCBtYXhPZmZzZXQgPSBzY3JvbGxMZWZ0ICsgdGhpcy5jb250YWluZXJXaWR0aDtcbiAgICAgICAgbGV0IG9mZnNldCA9IGl0ZW1NZXRhZGF0YS5vZmZzZXQgKyBpdGVtTWV0YWRhdGEuc2l6ZTtcbiAgICAgICAgbGV0IHN0b3BJbmRleCA9IHN0YXJ0SW5kZXg7XG5cbiAgICAgICAgd2hpbGUgKHN0b3BJbmRleCA8IHRoaXMuY29sdW1uQ291bnQgLSAxICYmIG9mZnNldCA8IG1heE9mZnNldCkge1xuICAgICAgICAgICAgc3RvcEluZGV4Kys7XG4gICAgICAgICAgICBvZmZzZXQgKz0gdGhpcy5nZXRDZWxsTWV0YURhdGEoc3RvcEluZGV4LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5jb2x1bW4pLnNpemU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0b3BJbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoLnmja4gcm93SW5kZXgg6I635Y+W5Z6C55u05YGP56e76YePXG4gICAgICovXG4gICAgcHVibGljIGdldFJvd09mZnNldChyb3dJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENlbGxNZXRhRGF0YShyb3dJbmRleCwgQUlUYWJsZVJvd0NvbHVtblR5cGUucm93KS5vZmZzZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2uIGNvbHVtbkluZGV4IOiOt+WPluawtOW5s+WBj+enu+mHj1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb2x1bW5PZmZzZXQoY29sdW1uSW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDZWxsTWV0YURhdGEoY29sdW1uSW5kZXgsIEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbikub2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWGu+e7k+WMuuWfn+WuveW6plxuICAgICAqL1xuICAgIGdldCBmcm96ZW5Db2x1bW5XaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29sdW1uT2Zmc2V0KHRoaXMuZnJvemVuQ29sdW1uQ291bnQpIC0gdGhpcy5jb2x1bW5Jbml0U2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoLnmja4gcm93SW5kZXgsIGNvbHVtbkluZGV4IOiOt+WPluWNleWFg+agvOWdkOagh+S/oeaBr1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDZWxsUmVjdChyb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHsgc2l6ZTogaGVpZ2h0LCBvZmZzZXQ6IHkgfSA9IHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKHJvd0luZGV4LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5yb3cpO1xuICAgICAgICBjb25zdCB7IHNpemU6IHdpZHRoLCBvZmZzZXQ6IHggfSA9IHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKGNvbHVtbkluZGV4LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5jb2x1bW4pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeCxcbiAgICAgICAgICAgIHksXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
@@ -37,7 +37,7 @@ export class AITableDomGrid extends AITableGridBase {
37
37
  origin: moreBtn,
38
38
  editOrigin: fieldAction,
39
39
  fieldId: field._id,
40
- fieldMenus: this.fieldMenus
40
+ fieldMenus: this.fieldMenus()
41
41
  });
42
42
  }
43
43
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AITableDomGrid, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
@@ -79,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
79
79
  MemberSettingPipe
80
80
  ], providers: [AITableGridEventService, AITableGridFieldService, AITableGridSelectionService], template: "<div class=\"grid-header d-flex\">\n <div class=\"grid-column-checkbox grid-cell grid-checkbox\">\n <label thyCheckbox thyLabelText=\"\" [ngModel]=\"isSelectedAll()\" (ngModelChange)=\"toggleSelectAll($event)\"></label>\n </div>\n @for (field of gridData().fields; track field._id) {\n <div\n class=\"grid-cell grid-field\"\n #fieldAction\n [attr.fieldId]=\"field._id\"\n [ngClass]=\"{ highlight: aiTable.selection().selectedFields.has(field._id) }\"\n [ngStyle]=\"{ width: field.width + 'px' }\"\n >\n <span class=\"text-truncate\">\n <thy-icon [thyIconName]=\"field.icon!\" class=\"mr-2 text-muted\"></thy-icon>\n <span>{{ field.name }}</span>\n </span>\n <a\n href=\"javascript:;\"\n class=\"grid-field-action\"\n thyAction\n thyIcon=\"more-vertical\"\n (click)=\"openFieldMenu($event, field, fieldAction)\"\n >\n </a>\n </div>\n }\n <div class=\"grid-column-blank cursor-pointer\" #gridColumnBlank (click)=\"addField(gridColumnBlank)\">\n <thy-icon thyIconName=\"plus\"></thy-icon>\n </div>\n</div>\n<div class=\"grid-body d-flex\">\n @for (record of gridData().records; track record._id; let index = $index) {\n <div class=\"grid-row d-flex\" [ngClass]=\"{ highlight: (record._id | isSelectRecord: aiTable.selection()) }\">\n <div class=\"grid-row-index grid-checkbox\">\n <label\n [ngClass]=\"(record._id | isSelectRecord: aiTable.selection()) ? 'checked-box' : 'unchecked-box'\"\n thyCheckbox\n thyLabelText=\"\"\n [ngModel]=\"record._id | isSelectRecord: aiTable.selection()\"\n (ngModelChange)=\"selectRecord(record._id)\"\n ></label>\n <span [ngClass]=\"(record._id | isSelectRecord: aiTable.selection()) ? 'grid-row-no-number' : 'grid-row-number'\">\n {{ index + 1 }}\n </span>\n </div>\n @for (field of gridData().fields; track field._id) {\n <div\n #cell\n class=\"grid-cell\"\n [ngClass]=\"{\n highlight: aiTable.selection().selectedCells.has(record._id) || aiTable.selection().selectedFields.has(field._id),\n selected: aiTable.selection().selectedCells.get(record._id)?.hasOwnProperty(field._id)\n }\"\n [attr.type]=\"[field.type]\"\n [attr.fieldId]=\"[field._id]\"\n [attr.recordId]=\"[record._id]\"\n [ngStyle]=\"{ width: field.width + 'px' }\"\n >\n @switch (field.type) {\n @case (AITableFieldType.select) {\n @let fieldValue = record.values[field._id];\n @let settings = field.settings! | selectSetting;\n @let options = settings['options'];\n @let optionStyle = settings['option_style'] || AITableSelectOptionStyle.tag;\n @let isTagStyle = optionStyle === AITableSelectOptionStyle.tag;\n\n @if (!settings['is_multiple'] && fieldValue | selectOption: options; as selectedOption) {\n @if (isTagStyle) {\n <select-option class=\"mb-1 mr-1\" [field]=\"field\" [displayOption]=\"selectedOption\"></select-option>\n } @else {\n <div thyTag class=\"mb-1 mr-1\">\n <select-option [field]=\"field\" [displayOption]=\"selectedOption\"></select-option>\n </div>\n }\n } @else {\n @let maxShowCount = 2;\n\n <div class=\"d-flex\">\n @if (fieldValue | selectOptions: options; as selectedOptions) {\n @for (option of selectedOptions; track option!._id; let i = $index) {\n @if (i + 1 <= maxShowCount) {\n @if (isTagStyle) {\n <select-option\n class=\"mb-1 mr-1\"\n [field]=\"field\"\n [displayOption]=\"option!\"\n ></select-option>\n } @else {\n <div thyTag class=\"mb-1 mr-1\">\n <select-option [field]=\"field\" [displayOption]=\"option!\"></select-option>\n </div>\n }\n }\n }\n\n @let selectedLength = selectedOptions.length || 0;\n @if (selectedOptions && maxShowCount < selectedLength) {\n @let shape = isTagStyle ? 'pill' : 'rectangle';\n @let isHidden = maxShowCount >= selectedLength;\n\n <thy-tag\n class=\"cursor-pointer\"\n [class.multi-property-value-hidden]=\"isHidden\"\n [thyShape]=\"shape\"\n >\n <span class=\"text-truncate\"> +{{ selectedLength - maxShowCount }} </span>\n </thy-tag>\n }\n }\n </div>\n }\n }\n @case (AITableFieldType.date) {\n {{ record.values[field._id].timestamp | thyDatePickerFormat }}\n }\n @case (AITableFieldType.updatedAt) {\n <div class=\"d-block user-select-none\">\n <span class=\"text-truncate\">\n {{ record.values[field._id] | thyDatePickerFormat: 'yyyy-MM-dd HH:mm' }}\n </span>\n </div>\n }\n @case (AITableFieldType.createdAt) {\n <div class=\"d-block user-select-none\">\n <span class=\"text-truncate\">\n {{ record.values[field._id] | thyDatePickerFormat: 'yyyy-MM-dd HH:mm' }}\n </span>\n </div>\n }\n @case (AITableFieldType.rate) {\n <thy-rate [ngModel]=\"record.values[field._id]\"></thy-rate>\n }\n @case (AITableFieldType.link) {\n <a\n class=\"d-block\"\n target=\"_blank\"\n [href]=\"record.values[field._id]?.url\"\n thyStopPropagation\n thyFlexibleText\n [thyTooltipContent]=\"record.values[field._id]?.text\"\n >\n {{ record.values[field._id]?.text }}\n </a>\n }\n @case (AITableFieldType.progress) {\n <thy-progress\n class=\"w-100\"\n [thyValue]=\"record.values[field._id] || 0\"\n [thySize]=\"record.values[field._id]?.config?.size || 'md'\"\n [thyMax]=\"record.values[field._id]?.config?.max || 100\"\n [thyType]=\"record.values[field._id]?.config?.progressType || 'success'\"\n >\n <span> {{ record.values[field._id] || 0 }}{{ record.values[field._id]?.config?.suffix || '%' }} </span>\n </thy-progress>\n }\n @case (AITableFieldType.member) {\n @let settings = field.settings! | memberSetting;\n\n @if (!settings!['is_multiple']) {\n @let recordValues = record.values[field._id] | user: aiReferences()!;\n\n @if (recordValues && recordValues.length) {\n <thy-avatar\n [thyName]=\"recordValues[0].display_name!\"\n [thySrc]=\"recordValues[0].avatar!\"\n thySize=\"xs\"\n thyShowName=\"true\"\n ></thy-avatar>\n }\n } @else {\n @let recordValues = record.values[field._id] | user: aiReferences()!;\n\n <thy-avatar-list thyAvatarSize=\"xs\">\n @for (item of recordValues; track $index) {\n <thy-avatar [thyName]=\"item.display_name!\" [thySrc]=\"item.avatar!\"></thy-avatar>\n }\n </thy-avatar-list>\n }\n }\n @case (AITableFieldType.createdBy) {\n @let recordValues = record.values[field._id] | user: aiReferences()!;\n\n @if (recordValues && recordValues.length) {\n <thy-avatar\n [thyName]=\"recordValues[0].display_name!\"\n [thySrc]=\"recordValues[0].avatar!\"\n thySize=\"xs\"\n thyShowName=\"true\"\n ></thy-avatar>\n }\n }\n @case (AITableFieldType.updatedBy) {\n @let recordValues = record.values[field._id] | user: aiReferences()!;\n\n @if (recordValues && recordValues.length) {\n <thy-avatar\n [thyName]=\"recordValues[0].display_name!\"\n [thySrc]=\"recordValues[0].avatar!\"\n thySize=\"xs\"\n thyShowName=\"true\"\n ></thy-avatar>\n }\n }\n @default {\n <span class=\"text-truncate\"> {{ record.values[field._id] }}</span>\n }\n }\n <div class=\"autofill-container\"></div>\n </div>\n }\n <div class=\"grid-column-blank\"></div>\n </div>\n }\n <div class=\"grid-row-insert grid-row cursor-pointer\" (click)=\"addRecord()\">\n <thy-icon thyIconName=\"plus\"></thy-icon>\n </div>\n</div>\n\n<div #activeBorder class=\"active-border\"></div>\n" }]
81
81
  }] });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvZG9tLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvZG9tLWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdC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ZXQsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUaHlBY3Rpb24gfSBmcm9tICduZ3gtdGV0aHlzL2FjdGlvbic7XG5pbXBvcnQgeyBUaHlBdmF0YXJNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2F2YXRhcic7XG5pbXBvcnQgeyBUaHlDaGVja2JveE1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvY2hlY2tib3gnO1xuaW1wb3J0IHsgVGh5RGF0ZVBpY2tlckZvcm1hdFBpcGUgfSBmcm9tICduZ3gtdGV0aHlzL2RhdGUtcGlja2VyJztcbmltcG9ydCB7IFRoeURyb3Bkb3duRGlyZWN0aXZlLCBUaHlEcm9wZG93bk1lbnVDb21wb25lbnQgfSBmcm9tICduZ3gtdGV0aHlzL2Ryb3Bkb3duJztcbmltcG9ydCB7IFRoeUZsZXhpYmxlVGV4dCB9IGZyb20gJ25neC10ZXRoeXMvZmxleGlibGUtdGV4dCc7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IFRoeVBvcG92ZXJNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgVGh5UHJvZ3Jlc3MgfSBmcm9tICduZ3gtdGV0aHlzL3Byb2dyZXNzJztcbmltcG9ydCB7IFRoeVJhdGUgfSBmcm9tICduZ3gtdGV0aHlzL3JhdGUnO1xuaW1wb3J0IHsgVGh5U3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgVGh5VGFnIH0gZnJvbSAnbmd4LXRldGh5cy90YWcnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NFZGl0b3JDb21wb25lbnQsIFNlbGVjdE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBGaWVsZE1lbnUgfSBmcm9tICcuL2NvbXBvbmVudHMvZmllbGQtbWVudS9maWVsZC1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBSVRhYmxlRmllbGRQcm9wZXJ0eUVkaXRvciB9IGZyb20gJy4vY29tcG9uZW50cy9maWVsZC1wcm9wZXJ0eS1lZGl0b3IvZmllbGQtcHJvcGVydHktZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBSVRhYmxlRmllbGQgfSBmcm9tICcuL2NvcmUnO1xuaW1wb3J0IHsgQUlUYWJsZUdyaWRCYXNlIH0gZnJvbSAnLi9ncmlkLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IElzU2VsZWN0UmVjb3JkUGlwZSwgTWVtYmVyU2V0dGluZ1BpcGUsIFNlbGVjdE9wdGlvblBpcGUsIFNlbGVjdE9wdGlvbnNQaXBlLCBTZWxlY3RTZXR0aW5nUGlwZSwgVXNlclBpcGUgfSBmcm9tICcuL3BpcGVzL2dyaWQucGlwZSc7XG5pbXBvcnQgeyBBSVRhYmxlR3JpZEV2ZW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBSVRhYmxlR3JpZEZpZWxkU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZmllbGQuc2VydmljZSc7XG5pbXBvcnQgeyBBSVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGJ1aWxkR3JpZERhdGEgfSBmcm9tICcuL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhaS10YWJsZS1kb20tZ3JpZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RvbS1ncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdhaS10YWJsZS1ncmlkIGFpLXRhYmxlLWRvbS1ncmlkJ1xuICAgIH0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBOZ0NvbXBvbmVudE91dGxldCxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgU2VsZWN0T3B0aW9uUGlwZSxcbiAgICAgICAgU2VsZWN0T3B0aW9uc1BpcGUsXG4gICAgICAgIFRoeVRhZyxcbiAgICAgICAgVGh5UG9wb3Zlck1vZHVsZSxcbiAgICAgICAgVGh5SWNvbixcbiAgICAgICAgVGh5UmF0ZSxcbiAgICAgICAgVGh5UHJvZ3Jlc3MsXG4gICAgICAgIEFJVGFibGVGaWVsZFByb3BlcnR5RWRpdG9yLFxuICAgICAgICBUaHlEYXRlUGlja2VyRm9ybWF0UGlwZSxcbiAgICAgICAgVGh5RmxleGlibGVUZXh0LFxuICAgICAgICBUaHlTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUsXG4gICAgICAgIEZpZWxkTWVudSxcbiAgICAgICAgVGh5QWN0aW9uLFxuICAgICAgICBUaHlEcm9wZG93bkRpcmVjdGl2ZSxcbiAgICAgICAgVGh5RHJvcGRvd25NZW51Q29tcG9uZW50LFxuICAgICAgICBUaHlDaGVja2JveE1vZHVsZSxcbiAgICAgICAgUHJvZ3Jlc3NFZGl0b3JDb21wb25lbnQsXG4gICAgICAgIFRoeUF2YXRhck1vZHVsZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgSXNTZWxlY3RSZWNvcmRQaXBlLFxuICAgICAgICBQcm9ncmVzc0VkaXRvckNvbXBvbmVudCxcbiAgICAgICAgU2VsZWN0T3B0aW9uQ29tcG9uZW50LFxuICAgICAgICBVc2VyUGlwZSxcbiAgICAgICAgU2VsZWN0U2V0dGluZ1BpcGUsXG4gICAgICAgIE1lbWJlclNldHRpbmdQaXBlXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtBSVRhYmxlR3JpZEV2ZW50U2VydmljZSwgQUlUYWJsZUdyaWRGaWVsZFNlcnZpY2UsIEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQUlUYWJsZURvbUdyaWQgZXh0ZW5kcyBBSVRhYmxlR3JpZEJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnN1YnNjcmliZUV2ZW50cygpO1xuICAgIH1cblxuICAgIG9wZW5GaWVsZE1lbnUoZTogRXZlbnQsIGZpZWxkOiBBSVRhYmxlRmllbGQsIGZpZWxkQWN0aW9uOiBIVE1MRWxlbWVudCkge1xuICAgICAgICBjb25zdCBtb3JlQnRuID0gKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSEuY2xvc2VzdCgnLmdyaWQtZmllbGQtYWN0aW9uJyk7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRGaWVsZFNlcnZpY2Uub3BlbkZpZWxkTWVudSh0aGlzLmFpVGFibGUsIHtcbiAgICAgICAgICAgIG9yaWdpbjogbW9yZUJ0bixcbiAgICAgICAgICAgIGVkaXRPcmlnaW46IGZpZWxkQWN0aW9uLFxuICAgICAgICAgICAgZmllbGRJZDogZmllbGQuX2lkLFxuICAgICAgICAgICAgZmllbGRNZW51czogdGhpcy5maWVsZE1lbnVzXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJncmlkLWhlYWRlciBkLWZsZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1jb2x1bW4tY2hlY2tib3ggZ3JpZC1jZWxsIGdyaWQtY2hlY2tib3hcIj5cbiAgICAgICAgPGxhYmVsIHRoeUNoZWNrYm94IHRoeUxhYmVsVGV4dD1cIlwiIFtuZ01vZGVsXT1cImlzU2VsZWN0ZWRBbGwoKVwiIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbCgkZXZlbnQpXCI+PC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICBAZm9yIChmaWVsZCBvZiBncmlkRGF0YSgpLmZpZWxkczsgdHJhY2sgZmllbGQuX2lkKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZ3JpZC1jZWxsIGdyaWQtZmllbGRcIlxuICAgICAgICAgICAgI2ZpZWxkQWN0aW9uXG4gICAgICAgICAgICBbYXR0ci5maWVsZElkXT1cImZpZWxkLl9pZFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGhpZ2hsaWdodDogYWlUYWJsZS5zZWxlY3Rpb24oKS5zZWxlY3RlZEZpZWxkcy5oYXMoZmllbGQuX2lkKSB9XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6IGZpZWxkLndpZHRoICsgJ3B4JyB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJmaWVsZC5pY29uIVwiIGNsYXNzPVwibXItMiB0ZXh0LW11dGVkXCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWVsZC5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdyaWQtZmllbGQtYWN0aW9uXCJcbiAgICAgICAgICAgICAgICB0aHlBY3Rpb25cbiAgICAgICAgICAgICAgICB0aHlJY29uPVwibW9yZS12ZXJ0aWNhbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5GaWVsZE1lbnUoJGV2ZW50LCBmaWVsZCwgZmllbGRBY3Rpb24pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXYgY2xhc3M9XCJncmlkLWNvbHVtbi1ibGFuayBjdXJzb3ItcG9pbnRlclwiICNncmlkQ29sdW1uQmxhbmsgKGNsaWNrKT1cImFkZEZpZWxkKGdyaWRDb2x1bW5CbGFuaylcIj5cbiAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwicGx1c1wiPjwvdGh5LWljb24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJncmlkLWJvZHkgZC1mbGV4XCI+XG4gICAgQGZvciAocmVjb3JkIG9mIGdyaWREYXRhKCkucmVjb3JkczsgdHJhY2sgcmVjb3JkLl9pZDsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXJvdyBkLWZsZXhcIiBbbmdDbGFzc109XCJ7IGhpZ2hsaWdodDogKHJlY29yZC5faWQgfCBpc1NlbGVjdFJlY29yZDogYWlUYWJsZS5zZWxlY3Rpb24oKSkgfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtcm93LWluZGV4IGdyaWQtY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKHJlY29yZC5faWQgfCBpc1NlbGVjdFJlY29yZDogYWlUYWJsZS5zZWxlY3Rpb24oKSkgPyAnY2hlY2tlZC1ib3gnIDogJ3VuY2hlY2tlZC1ib3gnXCJcbiAgICAgICAgICAgICAgICAgICAgdGh5Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgdGh5TGFiZWxUZXh0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicmVjb3JkLl9pZCB8IGlzU2VsZWN0UmVjb3JkOiBhaVRhYmxlLnNlbGVjdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0UmVjb3JkKHJlY29yZC5faWQpXCJcbiAgICAgICAgICAgICAgICA+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCIocmVjb3JkLl9pZCB8IGlzU2VsZWN0UmVjb3JkOiBhaVRhYmxlLnNlbGVjdGlvbigpKSA/ICdncmlkLXJvdy1uby1udW1iZXInIDogJ2dyaWQtcm93LW51bWJlcidcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaW5kZXggKyAxIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAZm9yIChmaWVsZCBvZiBncmlkRGF0YSgpLmZpZWxkczsgdHJhY2sgZmllbGQuX2lkKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAjY2VsbFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdyaWQtY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogYWlUYWJsZS5zZWxlY3Rpb24oKS5zZWxlY3RlZENlbGxzLmhhcyhyZWNvcmQuX2lkKSB8fCBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkRmllbGRzLmhhcyhmaWVsZC5faWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRDZWxscy5nZXQocmVjb3JkLl9pZCk/Lmhhc093blByb3BlcnR5KGZpZWxkLl9pZClcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnR5cGVdPVwiW2ZpZWxkLnR5cGVdXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmllbGRJZF09XCJbZmllbGQuX2lkXVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnJlY29yZElkXT1cIltyZWNvcmQuX2lkXVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6IGZpZWxkLndpZHRoICsgJ3B4JyB9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChBSVRhYmxlRmllbGRUeXBlLnNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgZmllbGRWYWx1ZSA9IHJlY29yZC52YWx1ZXNbZmllbGQuX2lkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IHNldHRpbmdzID0gZmllbGQuc2V0dGluZ3MhIHwgc2VsZWN0U2V0dGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IG9wdGlvbnMgPSBzZXR0aW5nc1snb3B0aW9ucyddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgb3B0aW9uU3R5bGUgPSBzZXR0aW5nc1snb3B0aW9uX3N0eWxlJ10gfHwgQUlUYWJsZVNlbGVjdE9wdGlvblN0eWxlLnRhZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGlzVGFnU3R5bGUgPSBvcHRpb25TdHlsZSA9PT0gQUlUYWJsZVNlbGVjdE9wdGlvblN0eWxlLnRhZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIXNldHRpbmdzWydpc19tdWx0aXBsZSddICYmIGZpZWxkVmFsdWUgfCBzZWxlY3RPcHRpb246IG9wdGlvbnM7IGFzIHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNUYWdTdHlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdC1vcHRpb24gY2xhc3M9XCJtYi0xIG1yLTFcIiBbZmllbGRdPVwiZmllbGRcIiBbZGlzcGxheU9wdGlvbl09XCJzZWxlY3RlZE9wdGlvblwiPjwvc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRoeVRhZyBjbGFzcz1cIm1iLTEgbXItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3Qtb3B0aW9uIFtmaWVsZF09XCJmaWVsZFwiIFtkaXNwbGF5T3B0aW9uXT1cInNlbGVjdGVkT3B0aW9uXCI+PC9zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBtYXhTaG93Q291bnQgPSAyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmllbGRWYWx1ZSB8IHNlbGVjdE9wdGlvbnM6IG9wdGlvbnM7IGFzIHNlbGVjdGVkT3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBzZWxlY3RlZE9wdGlvbnM7IHRyYWNrIG9wdGlvbiEuX2lkOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGkgKyAxIDw9IG1heFNob3dDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc1RhZ1N0eWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYi0xIG1yLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheU9wdGlvbl09XCJvcHRpb24hXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aHlUYWcgY2xhc3M9XCJtYi0xIG1yLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdC1vcHRpb24gW2ZpZWxkXT1cImZpZWxkXCIgW2Rpc3BsYXlPcHRpb25dPVwib3B0aW9uIVwiPjwvc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgc2VsZWN0ZWRMZW5ndGggPSBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoIHx8IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzZWxlY3RlZE9wdGlvbnMgJiYgbWF4U2hvd0NvdW50IDwgc2VsZWN0ZWRMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBzaGFwZSA9IGlzVGFnU3R5bGUgPyAncGlsbCcgOiAncmVjdGFuZ2xlJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBpc0hpZGRlbiA9IG1heFNob3dDb3VudCA+PSBzZWxlY3RlZExlbmd0aDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGh5LXRhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MubXVsdGktcHJvcGVydHktdmFsdWUtaGlkZGVuXT1cImlzSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aHlTaGFwZV09XCJzaGFwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPiAre3sgc2VsZWN0ZWRMZW5ndGggLSBtYXhTaG93Q291bnQgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoeS10YWc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoQUlUYWJsZUZpZWxkVHlwZS5kYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVjb3JkLnZhbHVlc1tmaWVsZC5faWRdLnRpbWVzdGFtcCB8IHRoeURhdGVQaWNrZXJGb3JtYXQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChBSVRhYmxlRmllbGRUeXBlLnVwZGF0ZWRBdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWJsb2NrIHVzZXItc2VsZWN0LW5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZWNvcmQudmFsdWVzW2ZpZWxkLl9pZF0gfCB0aHlEYXRlUGlja2VyRm9ybWF0OiAneXl5eS1NTS1kZCBISDptbScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKEFJVGFibGVGaWVsZFR5cGUuY3JlYXRlZEF0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtYmxvY2sgdXNlci1zZWxlY3Qtbm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlY29yZC52YWx1ZXNbZmllbGQuX2lkXSB8IHRoeURhdGVQaWNrZXJGb3JtYXQ6ICd5eXl5LU1NLWRkIEhIOm1tJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoQUlUYWJsZUZpZWxkVHlwZS5yYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoeS1yYXRlIFtuZ01vZGVsXT1cInJlY29yZC52YWx1ZXNbZmllbGQuX2lkXVwiPjwvdGh5LXJhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoQUlUYWJsZUZpZWxkVHlwZS5saW5rKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwicmVjb3JkLnZhbHVlc1tmaWVsZC5faWRdPy51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHlTdG9wUHJvcGFnYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGh5RmxleGlibGVUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aHlUb29sdGlwQ29udGVudF09XCJyZWNvcmQudmFsdWVzW2ZpZWxkLl9pZF0/LnRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVjb3JkLnZhbHVlc1tmaWVsZC5faWRdPy50ZXh0IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKEFJVGFibGVGaWVsZFR5cGUucHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGh5LXByb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGh5VmFsdWVdPVwicmVjb3JkLnZhbHVlc1tmaWVsZC5faWRdIHx8IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGh5U2l6ZV09XCJyZWNvcmQudmFsdWVzW2ZpZWxkLl9pZF0/LmNvbmZpZz8uc2l6ZSB8fCAnbWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoeU1heF09XCJyZWNvcmQudmFsdWVzW2ZpZWxkLl9pZF0/LmNvbmZpZz8ubWF4IHx8IDEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aHlUeXBlXT1cInJlY29yZC52YWx1ZXNbZmllbGQuX2lkXT8uY29uZmlnPy5wcm9ncmVzc1R5cGUgfHwgJ3N1Y2Nlc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiB7eyByZWNvcmQudmFsdWVzW2ZpZWxkLl9pZF0gfHwgMCB9fXt7IHJlY29yZC52YWx1ZXNbZmllbGQuX2lkXT8uY29uZmlnPy5zdWZmaXggfHwgJyUnIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoeS1wcm9ncmVzcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChBSVRhYmxlRmllbGRUeXBlLm1lbWJlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgc2V0dGluZ3MgPSBmaWVsZC5zZXR0aW5ncyEgfCBtZW1iZXJTZXR0aW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghc2V0dGluZ3MhWydpc19tdWx0aXBsZSddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgcmVjb3JkVmFsdWVzID0gcmVjb3JkLnZhbHVlc1tmaWVsZC5faWRdIHwgdXNlcjogYWlSZWZlcmVuY2VzKCkhO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocmVjb3JkVmFsdWVzICYmIHJlY29yZFZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aHktYXZhdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoeU5hbWVdPVwicmVjb3JkVmFsdWVzWzBdLmRpc3BsYXlfbmFtZSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aHlTcmNdPVwicmVjb3JkVmFsdWVzWzBdLmF2YXRhciFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoeVNpemU9XCJ4c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGh5U2hvd05hbWU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3RoeS1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCByZWNvcmRWYWx1ZXMgPSByZWNvcmQudmFsdWVzW2ZpZWxkLl9pZF0gfCB1c2VyOiBhaVJlZmVyZW5jZXMoKSE7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoeS1hdmF0YXItbGlzdCB0aHlBdmF0YXJTaXplPVwieHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgcmVjb3JkVmFsdWVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGh5LWF2YXRhciBbdGh5TmFtZV09XCJpdGVtLmRpc3BsYXlfbmFtZSFcIiBbdGh5U3JjXT1cIml0ZW0uYXZhdGFyIVwiPjwvdGh5LWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aHktYXZhdGFyLWxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKEFJVGFibGVGaWVsZFR5cGUuY3JlYXRlZEJ5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCByZWNvcmRWYWx1ZXMgPSByZWNvcmQudmFsdWVzW2ZpZWxkLl9pZF0gfCB1c2VyOiBhaVJlZmVyZW5jZXMoKSE7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHJlY29yZFZhbHVlcyAmJiByZWNvcmRWYWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aHktYXZhdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGh5TmFtZV09XCJyZWNvcmRWYWx1ZXNbMF0uZGlzcGxheV9uYW1lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGh5U3JjXT1cInJlY29yZFZhbHVlc1swXS5hdmF0YXIhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoeVNpemU9XCJ4c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHlTaG93TmFtZT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC90aHktYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChBSVRhYmxlRmllbGRUeXBlLnVwZGF0ZWRCeSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgcmVjb3JkVmFsdWVzID0gcmVjb3JkLnZhbHVlc1tmaWVsZC5faWRdIHwgdXNlcjogYWlSZWZlcmVuY2VzKCkhO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChyZWNvcmRWYWx1ZXMgJiYgcmVjb3JkVmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGh5LWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoeU5hbWVdPVwicmVjb3JkVmFsdWVzWzBdLmRpc3BsYXlfbmFtZSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoeVNyY109XCJyZWNvcmRWYWx1ZXNbMF0uYXZhdGFyIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHlTaXplPVwieHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGh5U2hvd05hbWU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdGh5LWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+IHt7IHJlY29yZC52YWx1ZXNbZmllbGQuX2lkXSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2ZpbGwtY29udGFpbmVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1jb2x1bW4tYmxhbmtcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXYgY2xhc3M9XCJncmlkLXJvdy1pbnNlcnQgZ3JpZC1yb3cgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYWRkUmVjb3JkKClcIj5cbiAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwicGx1c1wiPjwvdGh5LWljb24+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAjYWN0aXZlQm9yZGVyIGNsYXNzPVwiYWN0aXZlLWJvcmRlclwiPjwvZGl2PlxuIl19
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvZG9tLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvZG9tLWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdC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dE91dGxldCwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRoeUFjdGlvbiB9IGZyb20gJ25neC10ZXRoeXMvYWN0aW9uJztcbmltcG9ydCB7IFRoeUF2YXRhck1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvYXZhdGFyJztcbmltcG9ydCB7IFRoeUNoZWNrYm94TW9kdWxlIH0gZnJvbSAnbmd4LXRldGh5cy9jaGVja2JveCc7XG5pbXBvcnQgeyBUaHlEYXRlUGlja2VyRm9ybWF0UGlwZSB9IGZyb20gJ25neC10ZXRoeXMvZGF0ZS1waWNrZXInO1xuaW1wb3J0IHsgVGh5RHJvcGRvd25EaXJlY3RpdmUsIFRoeURyb3Bkb3duTWVudUNvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvZHJvcGRvd24nO1xuaW1wb3J0IHsgVGh5RmxleGlibGVUZXh0IH0gZnJvbSAnbmd4LXRldGh5cy9mbGV4aWJsZS10ZXh0JztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5UG9wb3Zlck1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaHlQcm9ncmVzcyB9IGZyb20gJ25neC10ZXRoeXMvcHJvZ3Jlc3MnO1xuaW1wb3J0IHsgVGh5UmF0ZSB9IGZyb20gJ25neC10ZXRoeXMvcmF0ZSc7XG5pbXBvcnQgeyBUaHlTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL3NoYXJlZCc7XG5pbXBvcnQgeyBUaHlUYWcgfSBmcm9tICduZ3gtdGV0aHlzL3RhZyc7XG5pbXBvcnQgeyBQcm9ncmVzc0VkaXRvckNvbXBvbmVudCwgU2VsZWN0T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IEZpZWxkTWVudSB9IGZyb20gJy4vY29tcG9uZW50cy9maWVsZC1tZW51L2ZpZWxkLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEFJVGFibGVGaWVsZFByb3BlcnR5RWRpdG9yIH0gZnJvbSAnLi9jb21wb25lbnRzL2ZpZWxkLXByb3BlcnR5LWVkaXRvci9maWVsZC1wcm9wZXJ0eS1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IEFJVGFibGVGaWVsZCB9IGZyb20gJy4vY29yZSc7XG5pbXBvcnQgeyBBSVRhYmxlR3JpZEJhc2UgfSBmcm9tICcuL2dyaWQtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXNTZWxlY3RSZWNvcmRQaXBlLCBNZW1iZXJTZXR0aW5nUGlwZSwgU2VsZWN0T3B0aW9uUGlwZSwgU2VsZWN0T3B0aW9uc1BpcGUsIFNlbGVjdFNldHRpbmdQaXBlLCBVc2VyUGlwZSB9IGZyb20gJy4vcGlwZXMvZ3JpZC5waXBlJztcbmltcG9ydCB7IEFJVGFibGVHcmlkRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFJVGFibGVHcmlkRmllbGRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9maWVsZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgYnVpbGRHcmlkRGF0YSB9IGZyb20gJy4vdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLWRvbS1ncmlkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZG9tLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2FpLXRhYmxlLWdyaWQgYWktdGFibGUtZG9tLWdyaWQnXG4gICAgfSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIE5nQ29tcG9uZW50T3V0bGV0LFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBTZWxlY3RPcHRpb25QaXBlLFxuICAgICAgICBTZWxlY3RPcHRpb25zUGlwZSxcbiAgICAgICAgVGh5VGFnLFxuICAgICAgICBUaHlQb3BvdmVyTW9kdWxlLFxuICAgICAgICBUaHlJY29uLFxuICAgICAgICBUaHlSYXRlLFxuICAgICAgICBUaHlQcm9ncmVzcyxcbiAgICAgICAgQUlUYWJsZUZpZWxkUHJvcGVydHlFZGl0b3IsXG4gICAgICAgIFRoeURhdGVQaWNrZXJGb3JtYXRQaXBlLFxuICAgICAgICBUaHlGbGV4aWJsZVRleHQsXG4gICAgICAgIFRoeVN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSxcbiAgICAgICAgRmllbGRNZW51LFxuICAgICAgICBUaHlBY3Rpb24sXG4gICAgICAgIFRoeURyb3Bkb3duRGlyZWN0aXZlLFxuICAgICAgICBUaHlEcm9wZG93bk1lbnVDb21wb25lbnQsXG4gICAgICAgIFRoeUNoZWNrYm94TW9kdWxlLFxuICAgICAgICBQcm9ncmVzc0VkaXRvckNvbXBvbmVudCxcbiAgICAgICAgVGh5QXZhdGFyTW9kdWxlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBJc1NlbGVjdFJlY29yZFBpcGUsXG4gICAgICAgIFByb2dyZXNzRWRpdG9yQ29tcG9uZW50LFxuICAgICAgICBTZWxlY3RPcHRpb25Db21wb25lbnQsXG4gICAgICAgIFVzZXJQaXBlLFxuICAgICAgICBTZWxlY3RTZXR0aW5nUGlwZSxcbiAgICAgICAgTWVtYmVyU2V0dGluZ1BpcGVcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW0FJVGFibGVHcmlkRXZlbnRTZXJ2aWNlLCBBSVRhYmxlR3JpZEZpZWxkU2VydmljZSwgQUlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBBSVRhYmxlRG9tR3JpZCBleHRlbmRzIEFJVGFibGVHcmlkQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlRXZlbnRzKCk7XG4gICAgfVxuXG4gICAgb3BlbkZpZWxkTWVudShlOiBFdmVudCwgZmllbGQ6IEFJVGFibGVGaWVsZCwgZmllbGRBY3Rpb246IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IG1vcmVCdG4gPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpIS5jbG9zZXN0KCcuZ3JpZC1maWVsZC1hY3Rpb24nKTtcbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZEZpZWxkU2VydmljZS5vcGVuRmllbGRNZW51KHRoaXMuYWlUYWJsZSwge1xuICAgICAgICAgICAgb3JpZ2luOiBtb3JlQnRuLFxuICAgICAgICAgICAgZWRpdE9yaWdpbjogZmllbGRBY3Rpb24sXG4gICAgICAgICAgICBmaWVsZElkOiBmaWVsZC5faWQsXG4gICAgICAgICAgICBmaWVsZE1lbnVzOiB0aGlzLmZpZWxkTWVudXMoKVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ3JpZC1oZWFkZXIgZC1mbGV4XCI+XG4gICAgPGRpdiBjbGFzcz1cImdyaWQtY29sdW1uLWNoZWNrYm94IGdyaWQtY2VsbCBncmlkLWNoZWNrYm94XCI+XG4gICAgICAgIDxsYWJlbCB0aHlDaGVja2JveCB0aHlMYWJlbFRleHQ9XCJcIiBbbmdNb2RlbF09XCJpc1NlbGVjdGVkQWxsKClcIiAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoJGV2ZW50KVwiPjwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgQGZvciAoZmllbGQgb2YgZ3JpZERhdGEoKS5maWVsZHM7IHRyYWNrIGZpZWxkLl9pZCkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImdyaWQtY2VsbCBncmlkLWZpZWxkXCJcbiAgICAgICAgICAgICNmaWVsZEFjdGlvblxuICAgICAgICAgICAgW2F0dHIuZmllbGRJZF09XCJmaWVsZC5faWRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBoaWdobGlnaHQ6IGFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRGaWVsZHMuaGFzKGZpZWxkLl9pZCkgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiBmaWVsZC53aWR0aCArICdweCcgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwiZmllbGQuaWNvbiFcIiBjbGFzcz1cIm1yLTIgdGV4dC1tdXRlZFwiPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgZmllbGQubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJncmlkLWZpZWxkLWFjdGlvblwiXG4gICAgICAgICAgICAgICAgdGh5QWN0aW9uXG4gICAgICAgICAgICAgICAgdGh5SWNvbj1cIm1vcmUtdmVydGljYWxcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRmllbGRNZW51KCRldmVudCwgZmllbGQsIGZpZWxkQWN0aW9uKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1jb2x1bW4tYmxhbmsgY3Vyc29yLXBvaW50ZXJcIiAjZ3JpZENvbHVtbkJsYW5rIChjbGljayk9XCJhZGRGaWVsZChncmlkQ29sdW1uQmxhbmspXCI+XG4gICAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cInBsdXNcIj48L3RoeS1pY29uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ3JpZC1ib2R5IGQtZmxleFwiPlxuICAgIEBmb3IgKHJlY29yZCBvZiBncmlkRGF0YSgpLnJlY29yZHM7IHRyYWNrIHJlY29yZC5faWQ7IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1yb3cgZC1mbGV4XCIgW25nQ2xhc3NdPVwieyBoaWdobGlnaHQ6IChyZWNvcmQuX2lkIHwgaXNTZWxlY3RSZWNvcmQ6IGFpVGFibGUuc2VsZWN0aW9uKCkpIH1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXJvdy1pbmRleCBncmlkLWNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihyZWNvcmQuX2lkIHwgaXNTZWxlY3RSZWNvcmQ6IGFpVGFibGUuc2VsZWN0aW9uKCkpID8gJ2NoZWNrZWQtYm94JyA6ICd1bmNoZWNrZWQtYm94J1wiXG4gICAgICAgICAgICAgICAgICAgIHRoeUNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIHRoeUxhYmVsVGV4dD1cIlwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJlY29yZC5faWQgfCBpc1NlbGVjdFJlY29yZDogYWlUYWJsZS5zZWxlY3Rpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdFJlY29yZChyZWNvcmQuX2lkKVwiXG4gICAgICAgICAgICAgICAgPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiKHJlY29yZC5faWQgfCBpc1NlbGVjdFJlY29yZDogYWlUYWJsZS5zZWxlY3Rpb24oKSkgPyAnZ3JpZC1yb3ctbm8tbnVtYmVyJyA6ICdncmlkLXJvdy1udW1iZXInXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGluZGV4ICsgMSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGZvciAoZmllbGQgb2YgZ3JpZERhdGEoKS5maWVsZHM7IHRyYWNrIGZpZWxkLl9pZCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgI2NlbGxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncmlkLWNlbGxcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IGFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRDZWxscy5oYXMocmVjb3JkLl9pZCkgfHwgYWlUYWJsZS5zZWxlY3Rpb24oKS5zZWxlY3RlZEZpZWxkcy5oYXMoZmllbGQuX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkQ2VsbHMuZ2V0KHJlY29yZC5faWQpPy5oYXNPd25Qcm9wZXJ0eShmaWVsZC5faWQpXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50eXBlXT1cIltmaWVsZC50eXBlXVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkSWRdPVwiW2ZpZWxkLl9pZF1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5yZWNvcmRJZF09XCJbcmVjb3JkLl9pZF1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiBmaWVsZC53aWR0aCArICdweCcgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoQUlUYWJsZUZpZWxkVHlwZS5zZWxlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGZpZWxkVmFsdWUgPSByZWNvcmQudmFsdWVzW2ZpZWxkLl9pZF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBzZXR0aW5ncyA9IGZpZWxkLnNldHRpbmdzISB8IHNlbGVjdFNldHRpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBvcHRpb25zID0gc2V0dGluZ3NbJ29wdGlvbnMnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IG9wdGlvblN0eWxlID0gc2V0dGluZ3NbJ29wdGlvbl9zdHlsZSddIHx8IEFJVGFibGVTZWxlY3RPcHRpb25TdHlsZS50YWc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGxldCBpc1RhZ1N0eWxlID0gb3B0aW9uU3R5bGUgPT09IEFJVGFibGVTZWxlY3RPcHRpb25TdHlsZS50YWc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFzZXR0aW5nc1snaXNfbXVsdGlwbGUnXSAmJiBmaWVsZFZhbHVlIHwgc2VsZWN0T3B0aW9uOiBvcHRpb25zOyBhcyBzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzVGFnU3R5bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3Qtb3B0aW9uIGNsYXNzPVwibWItMSBtci0xXCIgW2ZpZWxkXT1cImZpZWxkXCIgW2Rpc3BsYXlPcHRpb25dPVwic2VsZWN0ZWRPcHRpb25cIj48L3NlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aHlUYWcgY2xhc3M9XCJtYi0xIG1yLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0LW9wdGlvbiBbZmllbGRdPVwiZmllbGRcIiBbZGlzcGxheU9wdGlvbl09XCJzZWxlY3RlZE9wdGlvblwiPjwvc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgbWF4U2hvd0NvdW50ID0gMjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGZpZWxkVmFsdWUgfCBzZWxlY3RPcHRpb25zOiBvcHRpb25zOyBhcyBzZWxlY3RlZE9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2Ygc2VsZWN0ZWRPcHRpb25zOyB0cmFjayBvcHRpb24hLl9pZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpICsgMSA8PSBtYXhTaG93Q291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNUYWdTdHlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3Qtb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMSBtci0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlPcHRpb25dPVwib3B0aW9uIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGh5VGFnIGNsYXNzPVwibWItMSBtci0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3Qtb3B0aW9uIFtmaWVsZF09XCJmaWVsZFwiIFtkaXNwbGF5T3B0aW9uXT1cIm9wdGlvbiFcIj48L3NlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IHNlbGVjdGVkTGVuZ3RoID0gc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCB8fCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2VsZWN0ZWRPcHRpb25zICYmIG1heFNob3dDb3VudCA8IHNlbGVjdGVkTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgc2hhcGUgPSBpc1RhZ1N0eWxlID8gJ3BpbGwnIDogJ3JlY3RhbmdsZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgaXNIaWRkZW4gPSBtYXhTaG93Q291bnQgPj0gc2VsZWN0ZWRMZW5ndGg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoeS10YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm11bHRpLXByb3BlcnR5LXZhbHVlLWhpZGRlbl09XCJpc0hpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGh5U2hhcGVdPVwic2hhcGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj4gK3t7IHNlbGVjdGVkTGVuZ3RoIC0gbWF4U2hvd0NvdW50IH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aHktdGFnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKEFJVGFibGVGaWVsZFR5cGUuZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlY29yZC52YWx1ZXNbZmllbGQuX2lkXS50aW1lc3RhbXAgfCB0aHlEYXRlUGlja2VyRm9ybWF0IH19XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoQUlUYWJsZUZpZWxkVHlwZS51cGRhdGVkQXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ibG9jayB1c2VyLXNlbGVjdC1ub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVjb3JkLnZhbHVlc1tmaWVsZC5faWRdIHwgdGh5RGF0ZVBpY2tlckZvcm1hdDogJ3l5eXktTU0tZGQgSEg6bW0nIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChBSVRhYmxlRmllbGRUeXBlLmNyZWF0ZWRBdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWJsb2NrIHVzZXItc2VsZWN0LW5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZWNvcmQudmFsdWVzW2ZpZWxkLl9pZF0gfCB0aHlEYXRlUGlja2VyRm9ybWF0OiAneXl5eS1NTS1kZCBISDptbScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKEFJVGFibGVGaWVsZFR5cGUucmF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aHktcmF0ZSBbbmdNb2RlbF09XCJyZWNvcmQudmFsdWVzW2ZpZWxkLl9pZF1cIj48L3RoeS1yYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKEFJVGFibGVGaWVsZFR5cGUubGluaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cInJlY29yZC52YWx1ZXNbZmllbGQuX2lkXT8udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGh5U3RvcFByb3BhZ2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoeUZsZXhpYmxlVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGh5VG9vbHRpcENvbnRlbnRdPVwicmVjb3JkLnZhbHVlc1tmaWVsZC5faWRdPy50ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlY29yZC52YWx1ZXNbZmllbGQuX2lkXT8udGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChBSVRhYmxlRmllbGRUeXBlLnByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoeS1wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoeVZhbHVlXT1cInJlY29yZC52YWx1ZXNbZmllbGQuX2lkXSB8fCAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoeVNpemVdPVwicmVjb3JkLnZhbHVlc1tmaWVsZC5faWRdPy5jb25maWc/LnNpemUgfHwgJ21kJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aHlNYXhdPVwicmVjb3JkLnZhbHVlc1tmaWVsZC5faWRdPy5jb25maWc/Lm1heCB8fCAxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGh5VHlwZV09XCJyZWNvcmQudmFsdWVzW2ZpZWxkLl9pZF0/LmNvbmZpZz8ucHJvZ3Jlc3NUeXBlIHx8ICdzdWNjZXNzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ge3sgcmVjb3JkLnZhbHVlc1tmaWVsZC5faWRdIHx8IDAgfX17eyByZWNvcmQudmFsdWVzW2ZpZWxkLl9pZF0/LmNvbmZpZz8uc3VmZml4IHx8ICclJyB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aHktcHJvZ3Jlc3M+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoQUlUYWJsZUZpZWxkVHlwZS5tZW1iZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IHNldHRpbmdzID0gZmllbGQuc2V0dGluZ3MhIHwgbWVtYmVyU2V0dGluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIXNldHRpbmdzIVsnaXNfbXVsdGlwbGUnXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IHJlY29yZFZhbHVlcyA9IHJlY29yZC52YWx1ZXNbZmllbGQuX2lkXSB8IHVzZXI6IGFpUmVmZXJlbmNlcygpITtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHJlY29yZFZhbHVlcyAmJiByZWNvcmRWYWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGh5LWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aHlOYW1lXT1cInJlY29yZFZhbHVlc1swXS5kaXNwbGF5X25hbWUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGh5U3JjXT1cInJlY29yZFZhbHVlc1swXS5hdmF0YXIhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHlTaXplPVwieHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoeVNob3dOYW1lPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC90aHktYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgcmVjb3JkVmFsdWVzID0gcmVjb3JkLnZhbHVlc1tmaWVsZC5faWRdIHwgdXNlcjogYWlSZWZlcmVuY2VzKCkhO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aHktYXZhdGFyLWxpc3QgdGh5QXZhdGFyU2l6ZT1cInhzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHJlY29yZFZhbHVlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoeS1hdmF0YXIgW3RoeU5hbWVdPVwiaXRlbS5kaXNwbGF5X25hbWUhXCIgW3RoeVNyY109XCJpdGVtLmF2YXRhciFcIj48L3RoeS1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGh5LWF2YXRhci1saXN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChBSVRhYmxlRmllbGRUeXBlLmNyZWF0ZWRCeSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgcmVjb3JkVmFsdWVzID0gcmVjb3JkLnZhbHVlc1tmaWVsZC5faWRdIHwgdXNlcjogYWlSZWZlcmVuY2VzKCkhO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChyZWNvcmRWYWx1ZXMgJiYgcmVjb3JkVmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGh5LWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoeU5hbWVdPVwicmVjb3JkVmFsdWVzWzBdLmRpc3BsYXlfbmFtZSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoeVNyY109XCJyZWNvcmRWYWx1ZXNbMF0uYXZhdGFyIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHlTaXplPVwieHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGh5U2hvd05hbWU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdGh5LWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoQUlUYWJsZUZpZWxkVHlwZS51cGRhdGVkQnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbGV0IHJlY29yZFZhbHVlcyA9IHJlY29yZC52YWx1ZXNbZmllbGQuX2lkXSB8IHVzZXI6IGFpUmVmZXJlbmNlcygpITtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocmVjb3JkVmFsdWVzICYmIHJlY29yZFZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoeS1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aHlOYW1lXT1cInJlY29yZFZhbHVlc1swXS5kaXNwbGF5X25hbWUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aHlTcmNdPVwicmVjb3JkVmFsdWVzWzBdLmF2YXRhciFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGh5U2l6ZT1cInhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoeVNob3dOYW1lPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3RoeS1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPiB7eyByZWNvcmQudmFsdWVzW2ZpZWxkLl9pZF0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9maWxsLWNvbnRhaW5lclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtY29sdW1uLWJsYW5rXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1yb3ctaW5zZXJ0IGdyaWQtcm93IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImFkZFJlY29yZCgpXCI+XG4gICAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cInBsdXNcIj48L3RoeS1pY29uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgI2FjdGl2ZUJvcmRlciBjbGFzcz1cImFjdGl2ZS1ib3JkZXJcIj48L2Rpdj5cbiJdfQ==
@@ -25,6 +25,9 @@ export class AITableGridBase {
25
25
  this.aiAddRecord = output();
26
26
  this.aiAddField = output();
27
27
  this.aiUpdateFieldValue = output();
28
+ this.fieldMenus = computed(() => {
29
+ return this.aiFieldConfig()?.fieldMenus || [];
30
+ });
28
31
  this.gridData = computed(() => {
29
32
  if (this.aiBuildRenderDataFn && this.aiBuildRenderDataFn() && this.aiTable) {
30
33
  return this.aiBuildRenderDataFn()(this.aiTable);
@@ -44,7 +47,6 @@ export class AITableGridBase {
44
47
  ngOnInit() {
45
48
  this.initAITable();
46
49
  this.initService();
47
- this.buildFieldMenus();
48
50
  }
49
51
  initAITable() {
50
52
  this.aiTable = createAITable(this.aiRecords, this.aiFields);
@@ -60,9 +62,6 @@ export class AITableGridBase {
60
62
  this.aiTableGridFieldService.initAIFieldConfig(this.aiFieldConfig());
61
63
  AI_TABLE_GRID_FIELD_SERVICE_MAP.set(this.aiTable, this.aiTableGridFieldService);
62
64
  }
63
- buildFieldMenus() {
64
- this.fieldMenus = this.aiFieldConfig()?.fieldMenus || [];
65
- }
66
65
  addRecord() {
67
66
  const records = this.gridData().records;
68
67
  const recordCount = records.length;
@@ -151,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
151
150
  changeDetection: ChangeDetectionStrategy.OnPush
152
151
  }]
153
152
  }] });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2dyaWQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RSxPQUFPLEVBTUgsZ0JBQWdCLEVBRWhCLHdCQUF3QixFQUV4QixhQUFhLEVBQ2Isa0JBQWtCLEVBRXJCLE1BQU0sUUFBUSxDQUFDO0FBQ2hCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQVUzRSxNQUFNLE9BQU8sZUFBZTtJQU41QjtRQU9JLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFrQixDQUFDO1FBRTdDLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFpQixDQUFDO1FBRTNDLGtCQUFhLEdBQUcsS0FBSyxFQUFpQixDQUFDO1FBRXZDLGVBQVUsR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUU5QixjQUFTLEdBQUcsS0FBSyxFQUFjLENBQUM7UUFFaEMsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFxQixDQUFDO1FB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QVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLENBQWE7UUFDdEMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSyxDQUFDLENBQUMsTUFBc0IsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNoRixNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFLLENBQUMsQ0FBQyxNQUFzQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3pGLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7OEdBbktRLGVBQWU7a0dBQWYsZUFBZSx1dkNBSmQsRUFBRTs7MkZBSUgsZUFBZTtrQkFOM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBtb2RlbCxcbiAgICBOZ1pvbmUsXG4gICAgT25Jbml0LFxuICAgIG91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgbWVyZ2VXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEQkxfQ0xJQ0tfRURJVF9UWVBFLCBNT1VTRU9WRVJfRURJVF9UWVBFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgICBBZGRGaWVsZE9wdGlvbnMsXG4gICAgQWRkUmVjb3JkT3B0aW9ucyxcbiAgICBBSVBsdWdpbixcbiAgICBBSVRhYmxlLFxuICAgIEFJVGFibGVGaWVsZHMsXG4gICAgQUlUYWJsZUZpZWxkVHlwZSxcbiAgICBBSVRhYmxlUmVjb3JkcyxcbiAgICBBSVRhYmxlU2VsZWN0T3B0aW9uU3R5bGUsXG4gICAgQUlUYWJsZVZhbHVlLFxuICAgIGNyZWF0ZUFJVGFibGUsXG4gICAgY3JlYXRlRGVmYXVsdEZpZWxkLFxuICAgIFVwZGF0ZUZpZWxkVmFsdWVPcHRpb25zXG59IGZyb20gJy4vY29yZSc7XG5pbXBvcnQgeyBBSVRhYmxlR3JpZEV2ZW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBSV9UQUJMRV9HUklEX0ZJRUxEX1NFUlZJQ0VfTUFQLCBBSVRhYmxlR3JpZEZpZWxkU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZmllbGQuc2VydmljZSc7XG5pbXBvcnQgeyBBSVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFJRmllbGRDb25maWcsIEFJVGFibGVGaWVsZE1lbnVJdGVtLCBBSVRhYmxlUmVmZXJlbmNlcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQUlUYWJsZUZpZWxkUHJvcGVydHlFZGl0b3IgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLWdyaWQtYmFzZScsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQUlUYWJsZUdyaWRCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBhaVJlY29yZHMgPSBtb2RlbC5yZXF1aXJlZDxBSVRhYmxlUmVjb3Jkcz4oKTtcblxuICAgIGFpRmllbGRzID0gbW9kZWwucmVxdWlyZWQ8QUlUYWJsZUZpZWxkcz4oKTtcblxuICAgIGFpRmllbGRDb25maWcgPSBpbnB1dDxBSUZpZWxkQ29uZmlnPigpO1xuXG4gICAgYWlSZWFkb25seSA9IGlucHV0PGJvb2xlYW4+KCk7XG5cbiAgICBhaVBsdWdpbnMgPSBpbnB1dDxBSVBsdWdpbltdPigpO1xuXG4gICAgYWlSZWZlcmVuY2VzID0gaW5wdXQucmVxdWlyZWQ8QUlUYWJsZVJlZmVyZW5jZXM+KCk7XG5cbiAgICBhaUJ1aWxkUmVuZGVyRGF0YUZuID0gaW5wdXQ8KGFpVGFibGU6IEFJVGFibGUpID0+IEFJVGFibGVWYWx1ZT4oKTtcblxuICAgIEFJVGFibGVGaWVsZFR5cGUgPSBBSVRhYmxlRmllbGRUeXBlO1xuXG4gICAgQUlUYWJsZVNlbGVjdE9wdGlvblN0eWxlID0gQUlUYWJsZVNlbGVjdE9wdGlvblN0eWxlO1xuXG4gICAgYWlUYWJsZSE6IEFJVGFibGU7XG5cbiAgICBpc1NlbGVjdGVkQWxsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5haVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkUmVjb3Jkcy5zaXplID09PSB0aGlzLmFpUmVjb3JkcygpLmxlbmd0aDtcbiAgICB9KTtcblxuICAgIGFpVGFibGVJbml0aWFsaXplZCA9IG91dHB1dDxBSVRhYmxlPigpO1xuXG4gICAgYWlBZGRSZWNvcmQgPSBvdXRwdXQ8QWRkUmVjb3JkT3B0aW9ucz4oKTtcblxuICAgIGFpQWRkRmllbGQgPSBvdXRwdXQ8QWRkRmllbGRPcHRpb25zPigpO1xuXG4gICAgYWlVcGRhdGVGaWVsZFZhbHVlID0gb3V0cHV0PFVwZGF0ZUZpZWxkVmFsdWVPcHRpb25zPigpO1xuXG4gICAgZmllbGRNZW51cyE6IEFJVGFibGVGaWVsZE1lbnVJdGVtW107XG5cbiAgICBtb3VzZW92ZXJSZWYhOiBUaHlQb3BvdmVyUmVmPGFueT47XG5cbiAgICBncmlkRGF0YSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuYWlCdWlsZFJlbmRlckRhdGFGbiAmJiB0aGlzLmFpQnVpbGRSZW5kZXJEYXRhRm4oKSAmJiB0aGlzLmFpVGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFpQnVpbGRSZW5kZXJEYXRhRm4oKSEodGhpcy5haVRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVjb3JkczogdGhpcy5haVJlY29yZHMoKSxcbiAgICAgICAgICAgIGZpZWxkczogdGhpcy5haUZpZWxkcygpXG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcHJvdGVjdGVkIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICAgcHJvdGVjdGVkIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJvdGVjdGVkIGFpVGFibGVHcmlkRmllbGRTZXJ2aWNlID0gaW5qZWN0KEFJVGFibGVHcmlkRmllbGRTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgYWlUYWJsZUdyaWRFdmVudFNlcnZpY2UgPSBpbmplY3QoQUlUYWJsZUdyaWRFdmVudFNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBhaVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UgPSBpbmplY3QoQUlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlKTtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRBSVRhYmxlKCk7XG4gICAgICAgIHRoaXMuaW5pdFNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5idWlsZEZpZWxkTWVudXMoKTtcbiAgICB9XG5cbiAgICBpbml0QUlUYWJsZSgpIHtcbiAgICAgICAgdGhpcy5haVRhYmxlID0gY3JlYXRlQUlUYWJsZSh0aGlzLmFpUmVjb3JkcywgdGhpcy5haUZpZWxkcyk7XG4gICAgICAgIHRoaXMuYWlQbHVnaW5zKCk/LmZvckVhY2goKHBsdWdpbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlID0gcGx1Z2luKHRoaXMuYWlUYWJsZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFpVGFibGVJbml0aWFsaXplZC5lbWl0KHRoaXMuYWlUYWJsZSk7XG4gICAgfVxuXG4gICAgaW5pdFNlcnZpY2UoKSB7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRFdmVudFNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzLmFpVGFibGUsIHRoaXMuYWlGaWVsZENvbmZpZygpPy5maWVsZFByb3BlcnR5RWRpdG9yKTtcbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzLmFpVGFibGUpO1xuICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLnJlZ2lzdGVyRXZlbnRzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZEZpZWxkU2VydmljZS5pbml0QUlGaWVsZENvbmZpZyh0aGlzLmFpRmllbGRDb25maWcoKSk7XG4gICAgICAgIEFJX1RBQkxFX0dSSURfRklFTERfU0VSVklDRV9NQVAuc2V0KHRoaXMuYWlUYWJsZSwgdGhpcy5haVRhYmxlR3JpZEZpZWxkU2VydmljZSk7XG4gICAgfVxuXG4gICAgYnVpbGRGaWVsZE1lbnVzKCkge1xuICAgICAgICB0aGlzLmZpZWxkTWVudXMgPSB0aGlzLmFpRmllbGRDb25maWcoKT8uZmllbGRNZW51cyB8fCBbXTtcbiAgICB9XG5cbiAgICBhZGRSZWNvcmQoKSB7XG4gICAgICAgIGNvbnN0IHJlY29yZHMgPSB0aGlzLmdyaWREYXRhKCkucmVjb3JkcztcbiAgICAgICAgY29uc3QgcmVjb3JkQ291bnQgPSByZWNvcmRzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5haUFkZFJlY29yZC5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbklkOiByZWNvcmRDb3VudCA+IDAgPyByZWNvcmRzW3JlY29yZHMubGVuZ3RoIC0gMV0uX2lkIDogJydcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2VsZWN0UmVjb3JkKHJlY29yZElkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0UmVjb3JkKHJlY29yZElkKTtcbiAgICB9XG5cbiAgICB0b2dnbGVTZWxlY3RBbGwoY2hlY2tlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS50b2dnbGVTZWxlY3RBbGwoY2hlY2tlZCk7XG4gICAgfVxuXG4gICAgYWRkRmllbGQoZ3JpZENvbHVtbkJsYW5rPzogSFRNTEVsZW1lbnQsIHBvc2l0aW9uPzogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gY3JlYXRlRGVmYXVsdEZpZWxkKHRoaXMuYWlUYWJsZSwgQUlUYWJsZUZpZWxkVHlwZS50ZXh0KTtcbiAgICAgICAgY29uc3QgcG9wb3ZlclJlZiA9IHRoaXMuYWlUYWJsZUdyaWRGaWVsZFNlcnZpY2UuZWRpdEZpZWxkUHJvcGVydHkodGhpcy5haVRhYmxlLCB7XG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIGlzVXBkYXRlOiBmYWxzZSxcbiAgICAgICAgICAgIG9yaWdpbjogZ3JpZENvbHVtbkJsYW5rISxcbiAgICAgICAgICAgIHBvc2l0aW9uXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocG9wb3ZlclJlZiAmJiAhdGhpcy5haUZpZWxkQ29uZmlnKCk/LmZpZWxkUHJvcGVydHlFZGl0b3IpIHtcbiAgICAgICAgICAgIChwb3BvdmVyUmVmLmNvbXBvbmVudEluc3RhbmNlIGFzIEFJVGFibGVGaWVsZFByb3BlcnR5RWRpdG9yKS5hZGRGaWVsZC5zdWJzY3JpYmUoKGRlZmF1bHRWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JpZERhdGEoKS5maWVsZHM7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRDb3VudCA9IGZpZWxkcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhpcy5haUFkZEZpZWxkLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5JZDogZmllbGRDb3VudCA+IDAgPyBmaWVsZHNbZmllbGRzLmxlbmd0aCAtIDFdLl9pZCA6ICcnLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN1YnNjcmliZUV2ZW50cygpIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5kYmxDbGlja0V2ZW50JC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYmxDbGljayhldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYWlUYWJsZUdyaWRFdmVudFNlcnZpY2UubW91c2Vkb3duRXZlbnQkXG4gICAgICAgICAgICAgICAgLnBpcGUobWVyZ2VXaXRoKHRoaXMuYWlUYWJsZUdyaWRFdmVudFNlcnZpY2UuZ2xvYmFsTW91c2Vkb3duRXZlbnQkKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UudXBkYXRlU2VsZWN0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5tb3VzZW92ZXJFdmVudCQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubW91c2VvdmVySGFuZGxlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5nbG9iYWxNb3VzZW92ZXJFdmVudCQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VIb3ZlckNlbGxFZGl0b3IoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGJsQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgY29uc3QgY2VsbERvbSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5ncmlkLWNlbGwnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgdHlwZSA9IGNlbGxEb20gJiYgKGNlbGxEb20uZ2V0QXR0cmlidXRlKCd0eXBlJykhIGFzIEFJVGFibGVGaWVsZFR5cGUpO1xuICAgICAgICBpZiAodHlwZSAmJiBEQkxfQ0xJQ0tfRURJVF9UWVBFLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLm9wZW5FZGl0KGNlbGxEb20pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3VzZW92ZXJIYW5kbGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMubW91c2VvdmVyUmVmKSB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlb3ZlclJlZj8uY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjZWxsRG9tID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLmdyaWQtY2VsbCcpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCB0eXBlID0gY2VsbERvbSAmJiAoY2VsbERvbS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSEgYXMgQUlUYWJsZUZpZWxkVHlwZSk7XG4gICAgICAgIGlmICh0eXBlICYmIE1PVVNFT1ZFUl9FRElUX1RZUEUuaW5jbHVkZXModHlwZSkpIHtcbiAgICAgICAgICAgIHRoaXMubW91c2VvdmVyUmVmID0gdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5vcGVuRWRpdChjZWxsRG9tKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VIb3ZlckNlbGxFZGl0b3IoZTogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5tb3VzZW92ZXJSZWYpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc0dyaWQgPSBlLnRhcmdldCAmJiAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5haS10YWJsZS1ncmlkJyk7XG4gICAgICAgICAgICBjb25zdCBoYXNDZWxsRWRpdG9yID0gZS50YXJnZXQgJiYgKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcuZ3JpZC1jZWxsLWVkaXRvcicpO1xuICAgICAgICAgICAgaWYgKCFoYXNHcmlkICYmICFoYXNDZWxsRWRpdG9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3VzZW92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2dyaWQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RSxPQUFPLEVBTUgsZ0JBQWdCLEVBRWhCLHdCQUF3QixFQUV4QixhQUFhLEVBQ2Isa0JBQWtCLEVBRXJCLE1BQU0sUUFBUSxDQUFDO0FBQ2hCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQVUzRSxNQUFNLE9BQU8sZUFBZTtJQU41QjtRQU9JLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFrQixDQUFDO1FBRTdDLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFpQixDQUFDO1FBRTNDLGtCQUFhLEdBQUcsS0FBSyxFQUFpQixDQUFDO1FBRXZDLGVBQVUsR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUU5QixjQUFTLEdBQUcsS0FBSyxFQUFjLENBQUM7UUFFaEMsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFxQixDQUFDO1FB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QUFJLENBQUMsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLENBQWE7UUFDdEMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSyxDQUFDLENBQUMsTUFBc0IsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNoRixNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFLLENBQUMsQ0FBQyxNQUFzQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3pGLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7OEdBaEtRLGVBQWU7a0dBQWYsZUFBZSx1dkNBSmQsRUFBRTs7MkZBSUgsZUFBZTtrQkFOM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBtb2RlbCxcbiAgICBOZ1pvbmUsXG4gICAgT25Jbml0LFxuICAgIG91dHB1dCxcbiAgICBTaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyUmVmIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCB7IG1lcmdlV2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgREJMX0NMSUNLX0VESVRfVFlQRSwgTU9VU0VPVkVSX0VESVRfVFlQRSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gICAgQWRkRmllbGRPcHRpb25zLFxuICAgIEFkZFJlY29yZE9wdGlvbnMsXG4gICAgQUlQbHVnaW4sXG4gICAgQUlUYWJsZSxcbiAgICBBSVRhYmxlRmllbGRzLFxuICAgIEFJVGFibGVGaWVsZFR5cGUsXG4gICAgQUlUYWJsZVJlY29yZHMsXG4gICAgQUlUYWJsZVNlbGVjdE9wdGlvblN0eWxlLFxuICAgIEFJVGFibGVWYWx1ZSxcbiAgICBjcmVhdGVBSVRhYmxlLFxuICAgIGNyZWF0ZURlZmF1bHRGaWVsZCxcbiAgICBVcGRhdGVGaWVsZFZhbHVlT3B0aW9uc1xufSBmcm9tICcuL2NvcmUnO1xuaW1wb3J0IHsgQUlUYWJsZUdyaWRFdmVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQUlfVEFCTEVfR1JJRF9GSUVMRF9TRVJWSUNFX01BUCwgQUlUYWJsZUdyaWRGaWVsZFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2ZpZWxkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQUlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBSUZpZWxkQ29uZmlnLCBBSVRhYmxlRmllbGRNZW51SXRlbSwgQUlUYWJsZVJlZmVyZW5jZXMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEFJVGFibGVGaWVsZFByb3BlcnR5RWRpdG9yIH0gZnJvbSAnLi9jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhaS10YWJsZS1ncmlkLWJhc2UnLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFJVGFibGVHcmlkQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgYWlSZWNvcmRzID0gbW9kZWwucmVxdWlyZWQ8QUlUYWJsZVJlY29yZHM+KCk7XG5cbiAgICBhaUZpZWxkcyA9IG1vZGVsLnJlcXVpcmVkPEFJVGFibGVGaWVsZHM+KCk7XG5cbiAgICBhaUZpZWxkQ29uZmlnID0gaW5wdXQ8QUlGaWVsZENvbmZpZz4oKTtcblxuICAgIGFpUmVhZG9ubHkgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gICAgYWlQbHVnaW5zID0gaW5wdXQ8QUlQbHVnaW5bXT4oKTtcblxuICAgIGFpUmVmZXJlbmNlcyA9IGlucHV0LnJlcXVpcmVkPEFJVGFibGVSZWZlcmVuY2VzPigpO1xuXG4gICAgYWlCdWlsZFJlbmRlckRhdGFGbiA9IGlucHV0PChhaVRhYmxlOiBBSVRhYmxlKSA9PiBBSVRhYmxlVmFsdWU+KCk7XG5cbiAgICBBSVRhYmxlRmllbGRUeXBlID0gQUlUYWJsZUZpZWxkVHlwZTtcblxuICAgIEFJVGFibGVTZWxlY3RPcHRpb25TdHlsZSA9IEFJVGFibGVTZWxlY3RPcHRpb25TdHlsZTtcblxuICAgIGFpVGFibGUhOiBBSVRhYmxlO1xuXG4gICAgaXNTZWxlY3RlZEFsbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWlUYWJsZS5zZWxlY3Rpb24oKS5zZWxlY3RlZFJlY29yZHMuc2l6ZSA9PT0gdGhpcy5haVJlY29yZHMoKS5sZW5ndGg7XG4gICAgfSk7XG5cbiAgICBhaVRhYmxlSW5pdGlhbGl6ZWQgPSBvdXRwdXQ8QUlUYWJsZT4oKTtcblxuICAgIGFpQWRkUmVjb3JkID0gb3V0cHV0PEFkZFJlY29yZE9wdGlvbnM+KCk7XG5cbiAgICBhaUFkZEZpZWxkID0gb3V0cHV0PEFkZEZpZWxkT3B0aW9ucz4oKTtcblxuICAgIGFpVXBkYXRlRmllbGRWYWx1ZSA9IG91dHB1dDxVcGRhdGVGaWVsZFZhbHVlT3B0aW9ucz4oKTtcblxuICAgIGZpZWxkTWVudXM6IFNpZ25hbDxBSVRhYmxlRmllbGRNZW51SXRlbVtdPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWlGaWVsZENvbmZpZygpPy5maWVsZE1lbnVzIHx8IFtdO1xuICAgIH0pO1xuXG4gICAgbW91c2VvdmVyUmVmITogVGh5UG9wb3ZlclJlZjxhbnk+O1xuXG4gICAgZ3JpZERhdGEgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmFpQnVpbGRSZW5kZXJEYXRhRm4gJiYgdGhpcy5haUJ1aWxkUmVuZGVyRGF0YUZuKCkgJiYgdGhpcy5haVRhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5haUJ1aWxkUmVuZGVyRGF0YUZuKCkhKHRoaXMuYWlUYWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlY29yZHM6IHRoaXMuYWlSZWNvcmRzKCksXG4gICAgICAgICAgICBmaWVsZHM6IHRoaXMuYWlGaWVsZHMoKVxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIHByb3RlY3RlZCBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByb3RlY3RlZCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByb3RlY3RlZCBhaVRhYmxlR3JpZEZpZWxkU2VydmljZSA9IGluamVjdChBSVRhYmxlR3JpZEZpZWxkU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIGFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlID0gaW5qZWN0KEFJVGFibGVHcmlkRXZlbnRTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZSk7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0QUlUYWJsZSgpO1xuICAgICAgICB0aGlzLmluaXRTZXJ2aWNlKCk7XG4gICAgfVxuXG4gICAgaW5pdEFJVGFibGUoKSB7XG4gICAgICAgIHRoaXMuYWlUYWJsZSA9IGNyZWF0ZUFJVGFibGUodGhpcy5haVJlY29yZHMsIHRoaXMuYWlGaWVsZHMpO1xuICAgICAgICB0aGlzLmFpUGx1Z2lucygpPy5mb3JFYWNoKChwbHVnaW4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWlUYWJsZSA9IHBsdWdpbih0aGlzLmFpVGFibGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5haVRhYmxlSW5pdGlhbGl6ZWQuZW1pdCh0aGlzLmFpVGFibGUpO1xuICAgIH1cblxuICAgIGluaXRTZXJ2aWNlKCkge1xuICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLmluaXRpYWxpemUodGhpcy5haVRhYmxlLCB0aGlzLmFpRmllbGRDb25maWcoKT8uZmllbGRQcm9wZXJ0eUVkaXRvcik7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLmluaXRpYWxpemUodGhpcy5haVRhYmxlKTtcbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5yZWdpc3RlckV2ZW50cyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRGaWVsZFNlcnZpY2UuaW5pdEFJRmllbGRDb25maWcodGhpcy5haUZpZWxkQ29uZmlnKCkpO1xuICAgICAgICBBSV9UQUJMRV9HUklEX0ZJRUxEX1NFUlZJQ0VfTUFQLnNldCh0aGlzLmFpVGFibGUsIHRoaXMuYWlUYWJsZUdyaWRGaWVsZFNlcnZpY2UpO1xuICAgIH1cblxuICAgIGFkZFJlY29yZCgpIHtcbiAgICAgICAgY29uc3QgcmVjb3JkcyA9IHRoaXMuZ3JpZERhdGEoKS5yZWNvcmRzO1xuICAgICAgICBjb25zdCByZWNvcmRDb3VudCA9IHJlY29yZHMubGVuZ3RoO1xuICAgICAgICB0aGlzLmFpQWRkUmVjb3JkLmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luSWQ6IHJlY29yZENvdW50ID4gMCA/IHJlY29yZHNbcmVjb3Jkcy5sZW5ndGggLSAxXS5faWQgOiAnJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZWxlY3RSZWNvcmQocmVjb3JkSWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5zZWxlY3RSZWNvcmQocmVjb3JkSWQpO1xuICAgIH1cblxuICAgIHRvZ2dsZVNlbGVjdEFsbChjaGVja2VkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLnRvZ2dsZVNlbGVjdEFsbChjaGVja2VkKTtcbiAgICB9XG5cbiAgICBhZGRGaWVsZChncmlkQ29sdW1uQmxhbms/OiBIVE1MRWxlbWVudCwgcG9zaXRpb24/OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0pIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBjcmVhdGVEZWZhdWx0RmllbGQodGhpcy5haVRhYmxlLCBBSVRhYmxlRmllbGRUeXBlLnRleHQpO1xuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gdGhpcy5haVRhYmxlR3JpZEZpZWxkU2VydmljZS5lZGl0RmllbGRQcm9wZXJ0eSh0aGlzLmFpVGFibGUsIHtcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgaXNVcGRhdGU6IGZhbHNlLFxuICAgICAgICAgICAgb3JpZ2luOiBncmlkQ29sdW1uQmxhbmshLFxuICAgICAgICAgICAgcG9zaXRpb25cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwb3BvdmVyUmVmICYmICF0aGlzLmFpRmllbGRDb25maWcoKT8uZmllbGRQcm9wZXJ0eUVkaXRvcikge1xuICAgICAgICAgICAgKHBvcG92ZXJSZWYuY29tcG9uZW50SW5zdGFuY2UgYXMgQUlUYWJsZUZpZWxkUHJvcGVydHlFZGl0b3IpLmFkZEZpZWxkLnN1YnNjcmliZSgoZGVmYXVsdFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5ncmlkRGF0YSgpLmZpZWxkcztcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZENvdW50ID0gZmllbGRzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB0aGlzLmFpQWRkRmllbGQuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbklkOiBmaWVsZENvdW50ID4gMCA/IGZpZWxkc1tmaWVsZHMubGVuZ3RoIC0gMV0uX2lkIDogJycsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3Vic2NyaWJlRXZlbnRzKCkge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLmRibENsaWNrRXZlbnQkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRibENsaWNrKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5tb3VzZWRvd25FdmVudCRcbiAgICAgICAgICAgICAgICAucGlwZShtZXJnZVdpdGgodGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5nbG9iYWxNb3VzZWRvd25FdmVudCQpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS51cGRhdGVTZWxlY3QoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLm1vdXNlb3ZlckV2ZW50JC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3VzZW92ZXJIYW5kbGUoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLmdsb2JhbE1vdXNlb3ZlckV2ZW50JC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZUhvdmVyQ2VsbEVkaXRvcihldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkYmxDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBjb25zdCBjZWxsRG9tID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLmdyaWQtY2VsbCcpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCB0eXBlID0gY2VsbERvbSAmJiAoY2VsbERvbS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSEgYXMgQUlUYWJsZUZpZWxkVHlwZSk7XG4gICAgICAgIGlmICh0eXBlICYmIERCTF9DTElDS19FRElUX1RZUEUuaW5jbHVkZXModHlwZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYWlUYWJsZUdyaWRFdmVudFNlcnZpY2Uub3BlbkVkaXQoY2VsbERvbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdXNlb3ZlckhhbmRsZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5tb3VzZW92ZXJSZWYpIHtcbiAgICAgICAgICAgIHRoaXMubW91c2VvdmVyUmVmPy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGxEb20gPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcuZ3JpZC1jZWxsJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBjZWxsRG9tICYmIChjZWxsRG9tLmdldEF0dHJpYnV0ZSgndHlwZScpISBhcyBBSVRhYmxlRmllbGRUeXBlKTtcbiAgICAgICAgaWYgKHR5cGUgJiYgTU9VU0VPVkVSX0VESVRfVFlQRS5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgICAgICAgdGhpcy5tb3VzZW92ZXJSZWYgPSB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLm9wZW5FZGl0KGNlbGxEb20pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZUhvdmVyQ2VsbEVkaXRvcihlOiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLm1vdXNlb3ZlclJlZikge1xuICAgICAgICAgICAgY29uc3QgaGFzR3JpZCA9IGUudGFyZ2V0ICYmIChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLmFpLXRhYmxlLWdyaWQnKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc0NlbGxFZGl0b3IgPSBlLnRhcmdldCAmJiAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5ncmlkLWNlbGwtZWRpdG9yJyk7XG4gICAgICAgICAgICBpZiAoIWhhc0dyaWQgJiYgIWhhc0NlbGxFZGl0b3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdXNlb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19