@rivet-health/design-system 28.3.0 → 28.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/input/simple-select/simple-select.component.mjs +2 -2
- package/esm2020/lib/table/table/table/table.component.mjs +3 -3
- package/esm2020/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.mjs +3 -3
- package/esm2020/lib/table/table/table-column-settings/table-column-settings.component.mjs +3 -3
- package/esm2020/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.mjs +3 -3
- package/esm2020/lib/visualization/funnel-chart/funnel-chart.component.mjs +3 -3
- package/esm2020/lib/visualization/stacked-column/stacked-column.component.mjs +3 -3
- package/esm2020/lib/visualization/stacked-row/stacked-row.component.mjs +3 -3
- package/esm2020/lib/visualization/time-series/time-series.component.mjs +3 -3
- package/fesm2015/rivet-health-design-system.mjs +18 -18
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +18 -18
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/table/table/table/table.component.d.ts +2 -2
- package/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -48,7 +48,7 @@ export class SimpleSelectComponent extends InputLabelComponent {
|
|
|
48
48
|
showSingleSelected: true,
|
|
49
49
|
});
|
|
50
50
|
this.selectedOptionSubscription = this.manager?.state
|
|
51
|
-
.pipe(map(s => [...s.selection.selected][0] ?? null), filter(selection => selection?.id !== this.selectedOption?.id)
|
|
51
|
+
.pipe(map(s => [...s.selection.selected][0] ?? null), distinctUntilChanged(isEqual), filter(selection => selection?.id !== this.selectedOption?.id))
|
|
52
52
|
.subscribe(selection => {
|
|
53
53
|
this.selectedOptionChange.next(selection);
|
|
54
54
|
});
|
|
@@ -122,4 +122,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
122
122
|
}], selectedOptionChange: [{
|
|
123
123
|
type: Output
|
|
124
124
|
}] } });
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9zaW1wbGUtc2VsZWN0L3NpbXBsZS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvc2ltcGxlLXNlbGVjdC9zaW1wbGUtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFRNUMsTUFBTSxPQUFPLHFCQUNYLFNBQVEsbUJBQW1CO0lBUDdCOztRQVdFLGlCQUFZLEdBQStCLEVBQUUsQ0FBQztRQUc5QyxtQkFBYyxHQUFhLElBQUksQ0FBQztRQUdoQyxTQUFJLEdBQXlCLFFBQVEsQ0FBQztRQUd0QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFHeEIseUJBQW9CLEdBQWtEO1lBQ3BFLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztRQWdJRix5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO0tBQ3JEO0lBbEdDLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVB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Z0JBSU4sZUFBZTtzQkFEZCxZQUFZO3VCQUFDLFNBQVM7Z0JBSXZCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxRQUFRO2dCQUl0QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsUUFBUTtnQkFJdEIsY0FBYztzQkFEYixZQUFZO3VCQUFDLFFBQVE7Z0JBc0d0QixvQkFBb0I7c0JBRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUZ1c2VPcHRpb25zIH0gZnJvbSAnZnVzZS5qcyc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbnB1dExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQtbGFiZWwvaW5wdXQtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdC9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSaXZTZWxlY3QgfSBmcm9tICcuLi9zZWxlY3Qvc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtc2ltcGxlLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaW1wbGUtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2ltcGxlLXNlbGVjdC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTaW1wbGVTZWxlY3RDb21wb25lbnQ8TyBleHRlbmRzIFJpdlNlbGVjdC5CYXNlT3B0aW9uPlxuICBleHRlbmRzIElucHV0TGFiZWxDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpXG4gIG9wdGlvbkdyb3VwczogUml2U2VsZWN0Lk9wdGlvbkdyb3VwPE8+W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBzZWxlY3RlZE9wdGlvbjogTyB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNpemU6IFNlbGVjdENvbXBvbmVudC5TaXplID0gJ21lZGl1bSc7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBsb2NrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBmaWx0ZXJhYmlsaXR5T3B0aW9uczogU2ltcGxlU2VsZWN0Q29tcG9uZW50LkZpbHRlcmFiaWxpdHlPcHRpb25zPE8+ID0ge1xuICAgIGVuYWJsZWQ6IGZhbHNlLFxuICB9O1xuXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIG1heEhlaWdodD86IHN0cmluZztcblxuICBASW5wdXQoKVxuICBtYXhXaWR0aD86IHN0cmluZztcblxuICBASW5wdXQoKVxuICBtaW5IZWlnaHQ/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgbWluV2lkdGg/OiBzdHJpbmc7XG5cbiAgQENvbnRlbnRDaGlsZCgndHJpZ2dlcicpXG4gIHRyaWdnZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgc3RhdGU6IFJpdlNlbGVjdC5GdWxsU3RhdGU8Tz4gfT47XG5cbiAgQENvbnRlbnRDaGlsZCgnb3B0aW9uJylcbiAgb3B0aW9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IG5vZGU6IFJpdlNlbGVjdC5GdWxsT3B0aW9uPE8+IH0+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ2hlYWRlcicpXG4gIGhlYWRlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyBzdGF0ZTogUml2U2VsZWN0LkZ1bGxTdGF0ZTxPPiB9PjtcblxuICBAQ29udGVudENoaWxkKCdmb290ZXInKVxuICBmb290ZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgc3RhdGU6IFJpdlNlbGVjdC5GdWxsU3RhdGU8Tz4gfT47XG5cbiAgbWFuYWdlcj86IFJpdlNlbGVjdC5NYW5hZ2VyPE8+O1xuICBzZWxlY3RlZE9wdGlvblN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tYW5hZ2VyID0gUml2U2VsZWN0LmNyZWF0ZUluTWVtb3J5TWFuYWdlcigoKSA9PiB0aGlzLm9wdGlvbkdyb3Vwcywge1xuICAgICAgYWxsb3dNdWx0aVNlbGVjdDogZmFsc2UsXG4gICAgICBhbGxvd1NlYXJjaDogdGhpcy5maWx0ZXJhYmlsaXR5T3B0aW9ucy5lbmFibGVkLFxuICAgICAgYWxsb3dTZWxlY3RBbGw6IGZhbHNlLFxuICAgICAgZGlzcGxheUxpbWl0OiAxMDAsXG4gICAgICBkaXZpZGVyczogZmFsc2UsXG4gICAgICBmdXNlT3B0aW9uczogdGhpcy5maWx0ZXJhYmlsaXR5T3B0aW9ucy5lbmFibGVkXG4gICAgICAgID8gdGhpcy5maWx0ZXJhYmlsaXR5T3B0aW9ucy5mdXNlT3B0aW9uc1xuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgICBzZWxlY3RlZDogbmV3IFJpdlNlbGVjdC5PcHRpb25TZXQoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID8gW3RoaXMuc2VsZWN0ZWRPcHRpb25dIDogW10sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uKHRoaXMucGxhY2Vob2xkZXJcbiAgICAgICAgICA/IHsgZGlzcGxheTogeyBwbGFjZWhvbGRlcjogdGhpcy5wbGFjZWhvbGRlciB9IH1cbiAgICAgICAgICA6IG51bGwpLFxuICAgICAgfSxcbiAgICAgIGlubGluZTogZmFsc2UsXG4gICAgICBtYXhIZWlnaHQ6IHRoaXMubWF4SGVpZ2h0LFxuICAgICAgbWF4V2lkdGg6IHRoaXMubWF4V2lkdGgsXG4gICAgICBtaW5IZWlnaHQ6IHRoaXMubWluSGVpZ2h0LFxuICAgICAgbWluV2lkdGg6IHRoaXMubWluV2lkdGgsXG4gICAgICBzZWFyY2hQbGFjZWhvbGRlcjogdGhpcy5maWx0ZXJhYmlsaXR5T3B0aW9ucy5lbmFibGVkXG4gICAgICAgID8gdGhpcy5maWx0ZXJhYmlsaXR5T3B0aW9ucy5wbGFjZWhvbGRlclxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHNob3dTaW5nbGVTZWxlY3RlZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25TdWJzY3JpcHRpb24gPSB0aGlzLm1hbmFnZXI/LnN0YXRlXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHMgPT4gWy4uLnMuc2VsZWN0aW9uLnNlbGVjdGVkXVswXSA/PyBudWxsKSxcbiAgICAgICAgZmlsdGVyKHNlbGVjdGlvbiA9PiBzZWxlY3Rpb24/LmlkICE9PSB0aGlzLnNlbGVjdGVkT3B0aW9uPy5pZCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzRXF1YWwpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShzZWxlY3Rpb24gPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uQ2hhbmdlLm5leHQoc2VsZWN0aW9uKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXNbJ29wdGlvbkdyb3VwcyddICYmXG4gICAgICAhaXNFcXVhbChcbiAgICAgICAgY2hhbmdlc1snb3B0aW9uR3JvdXBzJ10ucHJldmlvdXNWYWx1ZSxcbiAgICAgICAgY2hhbmdlc1snb3B0aW9uR3JvdXBzJ10uY3VycmVudFZhbHVlLFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhpcy5tYW5hZ2VyPy5hY3Rpb25zLm5leHQoeyB0eXBlOiAnbG9hZCcgfSk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgY2hhbmdlc1snc2VsZWN0ZWRPcHRpb24nXSAmJlxuICAgICAgIWlzRXF1YWwoXG4gICAgICAgIGNoYW5nZXNbJ3NlbGVjdGVkT3B0aW9uJ10ucHJldmlvdXNWYWx1ZSxcbiAgICAgICAgY2hhbmdlc1snc2VsZWN0ZWRPcHRpb24nXS5jdXJyZW50VmFsdWUsXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLm1hbmFnZXI/LmFjdGlvbnMubmV4dCh7XG4gICAgICAgIHR5cGU6ICdzZWxlY3Rpb25DaGFuZ2UnLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgc2VsZWN0ZWQ6IG5ldyBSaXZTZWxlY3QuT3B0aW9uU2V0KFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA/IFt0aGlzLnNlbGVjdGVkT3B0aW9uXSA6IFtdLFxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzWydmaWx0ZXJhYmlsaXR5T3B0aW9ucyddICYmXG4gICAgICAhY2hhbmdlc1snZmlsdGVyYWJpbGl0eU9wdGlvbnMnXS5maXJzdENoYW5nZSAmJlxuICAgICAgIWlzRXF1YWwoXG4gICAgICAgIGNoYW5nZXNbJ2ZpbHRlcmFiaWxpdHlPcHRpb25zJ10ucHJldmlvdXNWYWx1ZSxcbiAgICAgICAgY2hhbmdlc1snZmlsdGVyYWJpbGl0eU9wdGlvbnMnXS5jdXJyZW50VmFsdWUsXG4gICAgICApXG4gICAgKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdIZWFkcyB1cDogY2hhbmdpbmcgZmlsdGVyYWJpbGl0eU9wdGlvbnMgb24gPHJpdi1zaW1wbGUtc2VsZWN0PiBhZnRlciBpbml0aWFsaXphdGlvbiBoYXMgbm8gZWZmZWN0JyxcbiAgICAgICAgJ1dhczonLFxuICAgICAgICBjaGFuZ2VzWydmaWx0ZXJhYmlsaXR5T3B0aW9ucyddLnByZXZpb3VzVmFsdWUsXG4gICAgICAgICdDaGFuZ2VkIHRvOicsXG4gICAgICAgIGNoYW5nZXNbJ2ZpbHRlcmFiaWxpdHlPcHRpb25zJ10uY3VycmVudFZhbHVlLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGlzc3VlQWN0aW9uKGFjdGlvbjogUml2U2VsZWN0LkFjdGlvbjxPPik6IHZvaWQge1xuICAgIHRoaXMubWFuYWdlcj8uYWN0aW9ucy5uZXh0KGFjdGlvbik7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRPcHRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE8gfCBudWxsPigpO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFNpbXBsZVNlbGVjdENvbXBvbmVudCB7XG4gIGV4cG9ydCB0eXBlIEZpbHRlcmFiaWxpdHlPcHRpb25zPE8gZXh0ZW5kcyBSaXZTZWxlY3QuQmFzZU9wdGlvbj4gPVxuICAgIHwge1xuICAgICAgICBlbmFibGVkOiBmYWxzZTtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgZW5hYmxlZDogdHJ1ZTtcbiAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgICAgIGZ1c2VPcHRpb25zPzogSUZ1c2VPcHRpb25zPE8+O1xuICAgICAgfTtcbn1cbiIsIjxyaXYtc2VsZWN0XG4gIFttYW5hZ2VyXT1cIm1hbmFnZXJcIlxuICBbc2l6ZV09XCJzaXplXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2xvY2tlZF09XCJsb2NrZWRcIlxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbaGVscF09XCJoZWxwXCJcbiAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgW2xhYmVsQWN0aW9uVGV4dF09XCJsYWJlbEFjdGlvblRleHRcIlxuICAobGFiZWxBY3Rpb24pPVwibGFiZWxBY3Rpb24uZW1pdCgkZXZlbnQpXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyaWdnZXJUZW1wbGF0ZTsgbGV0IHRyaWdnZXJUcGxcIj5cbiAgICA8bmctdGVtcGxhdGUgI3RyaWdnZXIgbGV0LXN0YXRlPVwic3RhdGVcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJpZ2dlclRwbFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHN0YXRlIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25UZW1wbGF0ZTsgbGV0IG9wdGlvblRwbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uIGxldC1ub2RlPVwibm9kZVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImN1c3RvbS1ub2RlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm5vZGUuZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0U2VsZWN0ZWRPcHRpb24nLFxuICAgICAgICAgICAgaWQ6IG5vZGUuaWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgIHR5cGU6ICdvcGVuQ2hhbmdlJyxcbiAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgfSlcbiAgICAgICAgXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25UcGxcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG5vZGUgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZTsgbGV0IGhlYWRlclRwbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyIGxldC1zdGF0ZT1cInN0YXRlXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclRwbFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHN0YXRlIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb290ZXJUZW1wbGF0ZTsgbGV0IGZvb3RlclRwbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyIGxldC1zdGF0ZT1cInN0YXRlXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclRwbFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHN0YXRlIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9yaXYtc2VsZWN0PlxuIl19
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9zaW1wbGUtc2VsZWN0L3NpbXBsZS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvc2ltcGxlLXNlbGVjdC9zaW1wbGUtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFRNUMsTUFBTSxPQUFPLHFCQUNYLFNBQVEsbUJBQW1CO0lBUDdCOztRQVdFLGlCQUFZLEdBQStCLEVBQUUsQ0FBQztRQUc5QyxtQkFBYyxHQUFhLElBQUksQ0FBQztRQUdoQyxTQUFJLEdBQXlCLFFBQVEsQ0FBQztRQUd0QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFHeEIseUJBQW9CLEdBQWtEO1lBQ3BFLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztRQWdJRix5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO0tBQ3JEO0lBbEdDLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVB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Z0JBSU4sZUFBZTtzQkFEZCxZQUFZO3VCQUFDLFNBQVM7Z0JBSXZCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxRQUFRO2dCQUl0QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsUUFBUTtnQkFJdEIsY0FBYztzQkFEYixZQUFZO3VCQUFDLFFBQVE7Z0JBc0d0QixvQkFBb0I7c0JBRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUZ1c2VPcHRpb25zIH0gZnJvbSAnZnVzZS5qcyc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbnB1dExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQtbGFiZWwvaW5wdXQtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdC9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSaXZTZWxlY3QgfSBmcm9tICcuLi9zZWxlY3Qvc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtc2ltcGxlLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaW1wbGUtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2ltcGxlLXNlbGVjdC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTaW1wbGVTZWxlY3RDb21wb25lbnQ8TyBleHRlbmRzIFJpdlNlbGVjdC5CYXNlT3B0aW9uPlxuICBleHRlbmRzIElucHV0TGFiZWxDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpXG4gIG9wdGlvbkdyb3VwczogUml2U2VsZWN0Lk9wdGlvbkdyb3VwPE8+W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBzZWxlY3RlZE9wdGlvbjogTyB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNpemU6IFNlbGVjdENvbXBvbmVudC5TaXplID0gJ21lZGl1bSc7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBsb2NrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBmaWx0ZXJhYmlsaXR5T3B0aW9uczogU2ltcGxlU2VsZWN0Q29tcG9uZW50LkZpbHRlcmFiaWxpdHlPcHRpb25zPE8+ID0ge1xuICAgIGVuYWJsZWQ6IGZhbHNlLFxuICB9O1xuXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIG1heEhlaWdodD86IHN0cmluZztcblxuICBASW5wdXQoKVxuICBtYXhXaWR0aD86IHN0cmluZztcblxuICBASW5wdXQoKVxuICBtaW5IZWlnaHQ/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgbWluV2lkdGg/OiBzdHJpbmc7XG5cbiAgQENvbnRlbnRDaGlsZCgndHJpZ2dlcicpXG4gIHRyaWdnZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgc3RhdGU6IFJpdlNlbGVjdC5GdWxsU3RhdGU8Tz4gfT47XG5cbiAgQENvbnRlbnRDaGlsZCgnb3B0aW9uJylcbiAgb3B0aW9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IG5vZGU6IFJpdlNlbGVjdC5GdWxsT3B0aW9uPE8+IH0+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ2hlYWRlcicpXG4gIGhlYWRlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyBzdGF0ZTogUml2U2VsZWN0LkZ1bGxTdGF0ZTxPPiB9PjtcblxuICBAQ29udGVudENoaWxkKCdmb290ZXInKVxuICBmb290ZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgc3RhdGU6IFJpdlNlbGVjdC5GdWxsU3RhdGU8Tz4gfT47XG5cbiAgbWFuYWdlcj86IFJpdlNlbGVjdC5NYW5hZ2VyPE8+O1xuICBzZWxlY3RlZE9wdGlvblN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tYW5hZ2VyID0gUml2U2VsZWN0LmNyZWF0ZUluTWVtb3J5TWFuYWdlcigoKSA9PiB0aGlzLm9wdGlvbkdyb3Vwcywge1xuICAgICAgYWxsb3dNdWx0aVNlbGVjdDogZmFsc2UsXG4gICAgICBhbGxvd1NlYXJjaDogdGhpcy5maWx0ZXJhYmlsaXR5T3B0aW9ucy5lbmFibGVkLFxuICAgICAgYWxsb3dTZWxlY3RBbGw6IGZhbHNlLFxuICAgICAgZGlzcGxheUxpbWl0OiAxMDAsXG4gICAgICBkaXZpZGVyczogZmFsc2UsXG4gICAgICBmdXNlT3B0aW9uczogdGhpcy5maWx0ZXJhYmlsaXR5T3B0aW9ucy5lbmFibGVkXG4gICAgICAgID8gdGhpcy5maWx0ZXJhYmlsaXR5T3B0aW9ucy5mdXNlT3B0aW9uc1xuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgICBzZWxlY3RlZDogbmV3IFJpdlNlbGVjdC5PcHRpb25TZXQoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID8gW3RoaXMuc2VsZWN0ZWRPcHRpb25dIDogW10sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uKHRoaXMucGxhY2Vob2xkZXJcbiAgICAgICAgICA/IHsgZGlzcGxheTogeyBwbGFjZWhvbGRlcjogdGhpcy5wbGFjZWhvbGRlciB9IH1cbiAgICAgICAgICA6IG51bGwpLFxuICAgICAgfSxcbiAgICAgIGlubGluZTogZmFsc2UsXG4gICAgICBtYXhIZWlnaHQ6IHRoaXMubWF4SGVpZ2h0LFxuICAgICAgbWF4V2lkdGg6IHRoaXMubWF4V2lkdGgsXG4gICAgICBtaW5IZWlnaHQ6IHRoaXMubWluSGVpZ2h0LFxuICAgICAgbWluV2lkdGg6IHRoaXMubWluV2lkdGgsXG4gICAgICBzZWFyY2hQbGFjZWhvbGRlcjogdGhpcy5maWx0ZXJhYmlsaXR5T3B0aW9ucy5lbmFibGVkXG4gICAgICAgID8gdGhpcy5maWx0ZXJhYmlsaXR5T3B0aW9ucy5wbGFjZWhvbGRlclxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHNob3dTaW5nbGVTZWxlY3RlZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25TdWJzY3JpcHRpb24gPSB0aGlzLm1hbmFnZXI/LnN0YXRlXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHMgPT4gWy4uLnMuc2VsZWN0aW9uLnNlbGVjdGVkXVswXSA/PyBudWxsKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNFcXVhbCksXG4gICAgICAgIGZpbHRlcihzZWxlY3Rpb24gPT4gc2VsZWN0aW9uPy5pZCAhPT0gdGhpcy5zZWxlY3RlZE9wdGlvbj8uaWQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShzZWxlY3Rpb24gPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uQ2hhbmdlLm5leHQoc2VsZWN0aW9uKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXNbJ29wdGlvbkdyb3VwcyddICYmXG4gICAgICAhaXNFcXVhbChcbiAgICAgICAgY2hhbmdlc1snb3B0aW9uR3JvdXBzJ10ucHJldmlvdXNWYWx1ZSxcbiAgICAgICAgY2hhbmdlc1snb3B0aW9uR3JvdXBzJ10uY3VycmVudFZhbHVlLFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhpcy5tYW5hZ2VyPy5hY3Rpb25zLm5leHQoeyB0eXBlOiAnbG9hZCcgfSk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgY2hhbmdlc1snc2VsZWN0ZWRPcHRpb24nXSAmJlxuICAgICAgIWlzRXF1YWwoXG4gICAgICAgIGNoYW5nZXNbJ3NlbGVjdGVkT3B0aW9uJ10ucHJldmlvdXNWYWx1ZSxcbiAgICAgICAgY2hhbmdlc1snc2VsZWN0ZWRPcHRpb24nXS5jdXJyZW50VmFsdWUsXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLm1hbmFnZXI/LmFjdGlvbnMubmV4dCh7XG4gICAgICAgIHR5cGU6ICdzZWxlY3Rpb25DaGFuZ2UnLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgc2VsZWN0ZWQ6IG5ldyBSaXZTZWxlY3QuT3B0aW9uU2V0KFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA/IFt0aGlzLnNlbGVjdGVkT3B0aW9uXSA6IFtdLFxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzWydmaWx0ZXJhYmlsaXR5T3B0aW9ucyddICYmXG4gICAgICAhY2hhbmdlc1snZmlsdGVyYWJpbGl0eU9wdGlvbnMnXS5maXJzdENoYW5nZSAmJlxuICAgICAgIWlzRXF1YWwoXG4gICAgICAgIGNoYW5nZXNbJ2ZpbHRlcmFiaWxpdHlPcHRpb25zJ10ucHJldmlvdXNWYWx1ZSxcbiAgICAgICAgY2hhbmdlc1snZmlsdGVyYWJpbGl0eU9wdGlvbnMnXS5jdXJyZW50VmFsdWUsXG4gICAgICApXG4gICAgKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdIZWFkcyB1cDogY2hhbmdpbmcgZmlsdGVyYWJpbGl0eU9wdGlvbnMgb24gPHJpdi1zaW1wbGUtc2VsZWN0PiBhZnRlciBpbml0aWFsaXphdGlvbiBoYXMgbm8gZWZmZWN0JyxcbiAgICAgICAgJ1dhczonLFxuICAgICAgICBjaGFuZ2VzWydmaWx0ZXJhYmlsaXR5T3B0aW9ucyddLnByZXZpb3VzVmFsdWUsXG4gICAgICAgICdDaGFuZ2VkIHRvOicsXG4gICAgICAgIGNoYW5nZXNbJ2ZpbHRlcmFiaWxpdHlPcHRpb25zJ10uY3VycmVudFZhbHVlLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGlzc3VlQWN0aW9uKGFjdGlvbjogUml2U2VsZWN0LkFjdGlvbjxPPik6IHZvaWQge1xuICAgIHRoaXMubWFuYWdlcj8uYWN0aW9ucy5uZXh0KGFjdGlvbik7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRPcHRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE8gfCBudWxsPigpO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFNpbXBsZVNlbGVjdENvbXBvbmVudCB7XG4gIGV4cG9ydCB0eXBlIEZpbHRlcmFiaWxpdHlPcHRpb25zPE8gZXh0ZW5kcyBSaXZTZWxlY3QuQmFzZU9wdGlvbj4gPVxuICAgIHwge1xuICAgICAgICBlbmFibGVkOiBmYWxzZTtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgZW5hYmxlZDogdHJ1ZTtcbiAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgICAgIGZ1c2VPcHRpb25zPzogSUZ1c2VPcHRpb25zPE8+O1xuICAgICAgfTtcbn1cbiIsIjxyaXYtc2VsZWN0XG4gIFttYW5hZ2VyXT1cIm1hbmFnZXJcIlxuICBbc2l6ZV09XCJzaXplXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2xvY2tlZF09XCJsb2NrZWRcIlxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbaGVscF09XCJoZWxwXCJcbiAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgW2xhYmVsQWN0aW9uVGV4dF09XCJsYWJlbEFjdGlvblRleHRcIlxuICAobGFiZWxBY3Rpb24pPVwibGFiZWxBY3Rpb24uZW1pdCgkZXZlbnQpXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyaWdnZXJUZW1wbGF0ZTsgbGV0IHRyaWdnZXJUcGxcIj5cbiAgICA8bmctdGVtcGxhdGUgI3RyaWdnZXIgbGV0LXN0YXRlPVwic3RhdGVcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJpZ2dlclRwbFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHN0YXRlIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25UZW1wbGF0ZTsgbGV0IG9wdGlvblRwbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uIGxldC1ub2RlPVwibm9kZVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImN1c3RvbS1ub2RlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm5vZGUuZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0U2VsZWN0ZWRPcHRpb24nLFxuICAgICAgICAgICAgaWQ6IG5vZGUuaWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgIHR5cGU6ICdvcGVuQ2hhbmdlJyxcbiAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgfSlcbiAgICAgICAgXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25UcGxcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG5vZGUgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZTsgbGV0IGhlYWRlclRwbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyIGxldC1zdGF0ZT1cInN0YXRlXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclRwbFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHN0YXRlIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb290ZXJUZW1wbGF0ZTsgbGV0IGZvb3RlclRwbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyIGxldC1zdGF0ZT1cInN0YXRlXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclRwbFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHN0YXRlIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9yaXYtc2VsZWN0PlxuIl19
|
|
@@ -145,10 +145,10 @@ export class TableComponent {
|
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
148
|
-
TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TableComponent, selector: "riv-table", inputs: { manager: "manager" }, host: { listeners: { "document:keydown": "keyDown($event)", "document:keyup": "keyUp($event)" } }, queries: [{ propertyName: "cellTemplate", first: true, predicate: ["cell"], descendants: true }, { propertyName: "menuTemplate", first: true, predicate: ["menu"], descendants: true }, { propertyName: "selectionTemplate", first: true, predicate: ["selection"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true }, { propertyName: "subheaderTemplate", first: true, predicate: ["subheader"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container *ngIf=\"selectionCalloutPosition | async; let position\">\n <ng-container *ngIf=\"s.selection.selectedCount > 0 && selectionTemplate\">\n <riv-callout\n *riv-overlay\n [anchor]=\"position\"\n [isModal]=\"false\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [preferredPosition]=\"'top-right'\"\n >\n <ng-container\n *ngTemplateOutlet=\"selectionTemplate; context: { state: s }\"\n ></ng-container>\n </riv-callout>\n </ng-container>\n </ng-container>\n <riv-loading-cover\n [loading]=\"s.load.loading\"\n [errorMessage]=\"s.load.error ? getErrorMessage(s.load.error) : undefined\"\n >\n <header *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { state: s }\"\n ></ng-container>\n </header>\n <div\n class=\"container\"\n [ngClass]=\"{\n 'container-ungrouped': !s.result.isGrouped,\n 'has-header': !s.result.isGrouped && headerTemplate\n }\"\n (rivClientSize)=\"containerSize.next($event)\"\n >\n <ng-container\n *ngFor=\"\n let group of s.result.isGrouped\n ? s.result.rowGroups\n : [s.result.rowsAsGroup];\n let last = last\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n subheaderTemplate || null;\n context: { state: s, group }\n \"\n ></ng-container>\n <div [ngClass]=\"{ 'subcontainer-grouped': s.result.isGrouped }\">\n <table>\n <thead>\n <tr>\n <th *ngIf=\"!!s.selection.allowSelection\" class=\"selection-head\">\n <div\n *ngIf=\"\n s.selection.allowSelection !== 'individual' &&\n s.selection.allowSelection === true\n \"\n class=\"checkbox-wrapper\"\n >\n <riv-checkbox\n *ngIf=\"!s.result.isGrouped\"\n [value]=\"s.selection.isAllSelected === true\"\n [indeterminate]=\"\n s.selection.isAllSelected === 'indeterminate'\n \"\n (valueChange)=\"\n manager?.actions?.next({ type: 'allSelectedChange' })\n \"\n ></riv-checkbox>\n <riv-checkbox\n *ngIf=\"s.result.isGrouped\"\n [value]=\"group.selected === true\"\n [indeterminate]=\"group.selected === 'indeterminate'\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'groupSelectionChange',\n payload: group\n })\n \"\n ></riv-checkbox>\n </div>\n </th>\n <th\n *ngFor=\"let column of s.display.columns; let i = index\"\n [class.pinned]=\"column.pinned\"\n [style.left.px]=\"column.left\"\n [style.width.px]=\"getWidth(column)\"\n draggable=\"true\"\n droppable=\"true\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n [class.dragged-over-left]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx > i\n \"\n [class.dragged-over-right]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx < i\n \"\n >\n <div\n *ngIf=\"\n !column.orderable &&\n !column.filterable &&\n !s.display.columnsAreFreezable &&\n !s.display.columnsAreHideable\n \"\n class=\"header-wrapper\"\n [class.left]=\"column.alignment === 'left'\"\n [class.right]=\"column.alignment === 'right'\"\n >\n {{ s.display.columnNameMap.get(column.key) }}\n </div>\n <riv-menu\n *ngIf=\"\n column.orderable ||\n column.filterable ||\n s.display.columnsAreFreezable ||\n s.display.columnsAreHideable\n \"\n >\n <ng-template #trigger>\n <button\n type=\"button\"\n class=\"header-wrapper\"\n [class.left]=\"column.alignment === 'left'\"\n [class.right]=\"column.alignment === 'right'\"\n [class.active]=\"s.query.order?.column === column.key\"\n >\n {{ s.display.columnNameMap.get(column.key) }}\n <span class=\"icon-container\">\n <riv-icon\n [size]=\"12\"\n [name]=\"\n s.query.order?.direction === 'desc'\n ? 'ArrowDown'\n : 'ArrowUp'\n \"\n ></riv-icon>\n </span>\n </button>\n <table-header-resize-handle\n (dragResize)=\"setWidth(column.key, $event)\"\n ></table-header-resize-handle>\n </ng-template>\n <ng-container *ngIf=\"column.orderable\">\n <button\n *ngIf=\"\n !(\n s.query.order?.column === column.key &&\n s.query.order?.direction === 'asc'\n )\n \"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: {\n direction: 'asc',\n column: column.key\n }\n })\n \"\n >\n Sort ascending\n </button>\n <button\n *ngIf=\"s.query.order?.column === column.key\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: null\n })\n \"\n >\n Remove sort\n </button>\n <button\n *ngIf=\"\n !(\n s.query.order?.column === column.key &&\n s.query.order?.direction === 'desc'\n )\n \"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: {\n direction: 'desc',\n column: column.key\n }\n })\n \"\n >\n Sort descending\n </button>\n </ng-container>\n <riv-menu-divider\n *ngIf=\"column.orderable && column.filterable\"\n ></riv-menu-divider>\n <button\n *ngIf=\"column.filterable\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'filterAdd',\n columnKey: column.key\n })\n \"\n >\n Add a filter\n </button>\n <riv-menu-divider\n *ngIf=\"\n (column.orderable || column.filterable) &&\n (s.display.columnsAreFreezable ||\n s.display.columnsAreHideable)\n \"\n ></riv-menu-divider>\n <ng-container *ngIf=\"s.display.columnsAreFreezable\">\n <button\n *ngIf=\"!column.pinned\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnsFreezeUpToChange',\n freeze: true,\n index: i\n })\n \"\n >\n Freeze up to column\n </button>\n <button\n *ngIf=\"column.pinned\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnsFreezeUpToChange',\n freeze: false,\n index: 0\n })\n \"\n >\n Un-freeze columns\n </button>\n </ng-container>\n <button\n *ngIf=\"s.display.columnsAreHideable\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnEnabledChange',\n column: column.key,\n enabled: false\n })\n \"\n >\n Hide column\n </button>\n </riv-menu>\n </th>\n <th *ngIf=\"menuTemplate\" class=\"menu-head\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container\n *ngIf=\"s.result.totalMatchingRowCount > 0; else empty\"\n >\n <ng-container *ngFor=\"let row of group.rows\">\n <ng-template #rowBody>\n <td\n *ngIf=\"\n s.selection.allowSelection === true ||\n s.selection.allowSelection === 'individual'\n \"\n class=\"selection-body\"\n (click)=\"$event.preventDefault()\"\n >\n <label\n class=\"checkbox-wrapper\"\n (click)=\"$event.stopPropagation()\"\n >\n <riv-checkbox\n [identifier]=\"'riv-table-selection-' + row.id\"\n [value]=\"row.selected\"\n (valueChange)=\"selectionChange(row.id, $event)\"\n ></riv-checkbox>\n </label>\n </td>\n <td\n *ngFor=\"let column of s.display.columns\"\n [class.pinned]=\"column.pinned\"\n [class.advanced]=\"column.dataType === 'advanced'\"\n [style.left.px]=\"column.left\"\n [style.text-align]=\"column.alignment\"\n (click)=\"handleClick($event, column)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n cellTemplate || null;\n context: { row: row, column: column }\n \"\n ></ng-container>\n </td>\n <td\n *ngIf=\"menuTemplate\"\n class=\"menu-body\"\n (click)=\"\n $event.stopPropagation(); $event.preventDefault()\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n menuTemplate || null;\n context: { row: row }\n \"\n ></ng-container>\n </td>\n </ng-template>\n <ng-container *ngIf=\"row.rowLink; let rl\">\n <a\n *ngIf=\"isExternalRowLink(rl)\"\n [href]=\"rl.href\"\n class=\"row-link\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </a>\n <a\n *ngIf=\"isInternalRowLink(rl)\"\n [routerLink]=\"rl.routerLink\"\n [queryParams]=\"rl.queryParams\"\n [queryParamsHandling]=\"rl.queryParamsHandling\"\n class=\"row-link\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </a>\n </ng-container>\n <tr\n *ngIf=\"!row.rowLink\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </tr>\n </ng-container>\n </ng-container>\n <ng-template #empty>\n <tr>\n <td [attr.colspan]=\"s.display.columns.length\">\n <riv-zero-state\n *ngIf=\"s.display.zeroStateMessage; let message\"\n [message]=\"message\"\n ></riv-zero-state>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n </div>\n <div\n class=\"footer\"\n *ngIf=\"\n s.result.isGrouped &&\n group.totalMatchingRowCount > s.query.grouping.countPerGroup &&\n group.rows.length == s.query.grouping.countPerGroup\n \"\n >\n <span\n rivLink\n class=\"footer-link\"\n (click)=\"\n manager?.actions?.next({\n type: 'viewMoreKeyChange',\n viewMoreKey: group.groupData.key.toString()\n })\n \"\n >View all {{ group.totalMatchingRowCount }}</span\n >\n </div>\n <br *ngIf=\"!last\" />\n </ng-container>\n </div>\n <div *ngIf=\"s.query.pagination.showControls\" class=\"pagination\">\n <div class=\"page-size-controls\">\n <ng-container *ngIf=\"!s.result.isGrouped\">\n <span> Results per page: </span>\n <riv-simple-select\n [selectedOption]=\"{\n id: s.query.pagination.pageSize.toString(),\n title: s.query.pagination.pageSize.toString(),\n value: s.query.pagination.pageSize\n }\"\n (selectedOptionChange)=\"\n manager?.actions?.next({\n type: 'pageSizeChange',\n size: $event?.value || 25\n })\n \"\n [optionGroups]=\"pageSizeOptions\"\n [size]=\"'small'\"\n ></riv-simple-select>\n </ng-container>\n </div>\n <span\n *ngIf=\"s.result.totalMatchingRowCount > 0 && !s.result.isGrouped\"\n class=\"page-data-indicator\"\n >\n {{ s.query.pagination.pageRowStart | rivNumber }}-{{\n s.query.pagination.pageRowEnd | rivNumber\n }}\n of\n {{ s.result.totalMatchingRowCount | rivNumber }}\n </span>\n <div *ngIf=\"s.query.pagination.showControls\" class=\"pagination-controls\">\n <button\n rivButton\n [variant]=\"'basic'\"\n [size]=\"'small'\"\n [icon]=\"'ArrowLeft'\"\n type=\"button\"\n [disabled]=\"s.query.pagination.previous === null\"\n (click)=\"manager?.actions?.next({ type: 'previousPageNavigate' })\"\n ></button>\n <span\n *ngIf=\"s.query.pagination.pages[0] > 0\"\n class=\"truncated-pages left\"\n >\n …\n </span>\n <button\n *ngFor=\"let page of s.query.pagination.pages\"\n class=\"page\"\n type=\"button\"\n [disabled]=\"page === s.query.pagination.page\"\n (click)=\"manager?.actions?.next({ type: 'pageChange', page })\"\n >\n {{ page + 1 }}\n </button>\n <span\n *ngIf=\"\n s.query.pagination.pages[s.query.pagination.pages.length - 1] <\n s.query.pagination.pageCount - 1\n \"\n class=\"truncated-pages right\"\n >\n …\n </span>\n <button\n rivButton\n [variant]=\"'basic'\"\n [size]=\"'small'\"\n [icon]=\"'ArrowRight'\"\n type=\"button\"\n [disabled]=\"s.query.pagination.next === null\"\n (click)=\"manager?.actions?.next({ type: 'nextPageNavigate' })\"\n ></button>\n </div>\n </div>\n </riv-loading-cover>\n</ng-container>\n", styles: [":host{display:flex;min-height:0}riv-loading-cover{width:100%;display:grid;grid-template-rows:1fr auto;gap:0}header{border-width:var(--border-width) var(--border-width) 0 var(--border-width);border-style:solid;border-color:var(--border-light);border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium)}header:has(+ div > .subheader){border-bottom-width:var(--border-width);border-bottom-left-radius:var(--border-radius-medium);border-bottom-right-radius:var(--border-radius-medium);margin-bottom:var(--size-large)}header+.container>.subcontainer{border-top-left-radius:0;border-top-right-radius:0}.container{overflow:auto}.container-ungrouped{border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-medium)}.container-ungrouped.has-header{border-top-left-radius:0;border-top-right-radius:0}.subcontainer-grouped{overflow:auto;border:var(--border-width) solid var(--border-light);border-top-right-radius:var(--border-radius-medium);border-top-left-radius:var(--border-radius-medium)}.subcontainer-grouped:not(:has(+ .footer)){border-bottom-right-radius:var(--border-radius-medium);border-bottom-left-radius:var(--border-radius-medium)}table{border-collapse:separate;width:100%;table-layout:fixed}thead{position:sticky;top:0;z-index:var(--above-scroll-z-index)}th{border-bottom:var(--border-width) solid var(--border-light);background-color:var(--surface-light-1);position:relative}th:not(:last-child){border-right:var(--border-width) solid var(--border-light)}th.pinned{position:sticky;top:0;z-index:1}th.dragged-over-left:before,th.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}th.dragged-over-left:before{left:0}th.dragged-over-right:before{right:0}th.selection-head{width:var(--size-xxlarge);position:sticky;z-index:1;left:0;vertical-align:middle;height:calc(var(--base-grid-size) * 8 + var(--border-width))}.checkbox-wrapper{display:flex;justify-content:center;align-items:center}label.checkbox-wrapper{cursor:pointer;width:100%;height:100%}th.menu-head{width:var(--size-xxlarge);position:sticky;z-index:1;right:0}th>riv-menu{width:100%}.header-wrapper{font-size:calc(var(--base-grid-size) * 2.75);font-weight:var(--font-weight-heavy);line-height:1;text-transform:uppercase;letter-spacing:calc(var(--base-grid-size) / 4);padding:var(--size-xsmall) var(--size-small);display:inline-flex;align-items:center;justify-content:center;width:100%;height:calc(var(--base-grid-size) * 8);white-space:nowrap}.header-wrapper.left{justify-content:flex-start}.header-wrapper.right{justify-content:flex-end}button.header-wrapper{transition:background-color var(--short-transition);cursor:pointer}button.header-wrapper:hover{background-color:var(--black-20)}button.header-wrapper .icon-container{overflow:hidden;display:inline-block;width:0;height:1em;opacity:0;padding-left:0;transition:width var(--medium-transition),opacity var(--medium-transition),color var(--medium-transition),padding-left var(--medium-transition)}button.header-wrapper.active .icon-container{width:calc(var(--base-grid-size) * 3.5);padding-left:var(--size-xsmall);opacity:1}button.header-wrapper:hover .icon-container{color:var(--type-light-low-contrast)}button.header-wrapper.active .icon-container{color:var(--brand)}a.row-link{display:table-row;text-decoration:none;color:inherit}a.row-link td{transition:background-color var(--short-transition)}a.row-link:hover td{background-color:var(--surface-light-2)}a.row-link:active td{background-color:var(--surface-light-3)}td{border-bottom:var(--border-width) solid var(--border-light);height:calc(var(--base-grid-size) * 8);padding:var(--size-xxsmall) var(--size-small);font:var(--body-small);vertical-align:middle;text-align:center;background-color:var(--surface-light-0)}tr.grayed td,a.row-link.grayed td{background-color:var(--gray-30)}tbody>*:last-child>td{border-bottom:none}td.pinned{position:sticky;z-index:1}td.pinned:not(:has(+ td.pinned)){border-right:var(--border-width) solid var(--border-light)}td.advanced,td.selection-body,td.menu-body{padding:0;vertical-align:middle}td.selection-body{position:sticky;z-index:1;left:0}td.menu-body{position:sticky;z-index:1;right:0}.pagination{margin-top:var(--size-small);display:flex;justify-content:space-between;gap:var(--size-large)}.page-size-controls,.pagination-controls{display:flex;align-items:center;gap:var(--size-xsmall)}.page-data-indicator{display:flex;align-items:center;flex-grow:1;justify-content:flex-end;font:var(--body-medium);color:var(--type-light-low-contrast)}.page-size-controls span{font:var(--body-medium)}.page{display:flex;align-items:center;justify-content:center;min-width:calc(var(--base-grid-size) * 7.5);height:calc(var(--base-grid-size) * 7.5);padding:var(--size-xxsmall);font:var(--input-medium);color:var(--purp-80);border-radius:var(--border-radius-small);transition:background-color var(--short-transition)}.page:hover,.page:disabled{background-color:var(--black-20)}.page:active:not(:disabled){background-color:var(--black-40)}.page:not(:disabled){cursor:pointer}.truncated-pages{color:var(--type-light-disabled)}.truncated-pages.left{padding-left:var(--size-small)}.truncated-pages.right{padding-right:var(--size-small)}.footer{background-color:var(--surface-light-1);border-bottom:var(--border-width) solid var(--border-light);border-left:var(--border-width) solid var(--border-light);border-right:var(--border-width) solid var(--border-light);border-bottom-left-radius:var(--border-radius-medium);border-bottom-right-radius:var(--border-radius-medium);text-align:right;padding:calc(var(--base-grid-size) / 2);font:var(--body-medium)}.footer-link{margin-right:var(--size-medium)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "active"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i5.CheckboxComponent, selector: "riv-checkbox", inputs: ["name", "identifier", "value", "checkedColorToken", "indeterminateColorToken", "checkboxTooltip", "indeterminate", "disabled", "required"], outputs: ["valueChange"] }, { kind: "component", type: i6.IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "component", type: i7.LinkComponent, selector: "[rivLink]", inputs: ["disabled", "locked", "theme"] }, { kind: "component", type: i8.LoadingCoverComponent, selector: "riv-loading-cover", inputs: ["loading", "loadingSize", "errorMessage"] }, { kind: "component", type: i9.MenuComponent, selector: "riv-menu", inputs: ["preferredPosition"] }, { kind: "component", type: i10.MenuDividerComponent, selector: "riv-menu-divider" }, { kind: "component", type: i11.MenuItemComponent, selector: "[riv-menu-item]", inputs: ["locked", "disabled", "variant"] }, { kind: "directive", type: i12.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i13.SimpleSelectComponent, selector: "riv-simple-select", inputs: ["optionGroups", "selectedOption", "size", "disabled", "locked", "filterabilityOptions", "placeholder", "maxHeight", "maxWidth", "minHeight", "minWidth"], outputs: ["selectedOptionChange"] }, { kind: "directive", type: i14.SizeDirective, selector: "[rivClientSize]", outputs: ["rivClientSize"] }, { kind: "component", type: i15.TableHeaderResizeHandleComponent, selector: "table-header-resize-handle", outputs: ["dragResize"] }, { kind: "component", type: i16.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message", "title", "icon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i17.NumberPipe, name: "rivNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
148
|
+
TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TableComponent, selector: "riv-table", inputs: { manager: "manager" }, host: { listeners: { "document:keydown": "keyDown($event)", "document:keyup": "keyUp($event)" } }, queries: [{ propertyName: "cellTemplate", first: true, predicate: ["cell"], descendants: true }, { propertyName: "menuTemplate", first: true, predicate: ["menu"], descendants: true }, { propertyName: "selectionTemplate", first: true, predicate: ["selection"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true }, { propertyName: "subheaderTemplate", first: true, predicate: ["subheader"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container *ngIf=\"selectionCalloutPosition | async; let position\">\n <ng-container *ngIf=\"s.selection.selectedCount > 0 && selectionTemplate\">\n <riv-callout\n *riv-overlay\n [anchor]=\"position\"\n [isModal]=\"false\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [preferredPosition]=\"'top-right'\"\n >\n <ng-container\n *ngTemplateOutlet=\"selectionTemplate; context: { state: s }\"\n ></ng-container>\n </riv-callout>\n </ng-container>\n </ng-container>\n <riv-loading-cover\n [loading]=\"s.load.loading\"\n [errorMessage]=\"s.load.error ? getErrorMessage(s.load.error) : undefined\"\n >\n <header *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { state: s }\"\n ></ng-container>\n </header>\n <div\n class=\"container\"\n [ngClass]=\"{\n 'container-ungrouped': !s.result.isGrouped,\n 'has-header': !s.result.isGrouped && headerTemplate\n }\"\n (rivClientSize)=\"containerSize.next($event)\"\n >\n <ng-container\n *ngFor=\"\n let group of s.result.isGrouped\n ? s.result.rowGroups\n : [s.result.rowsAsGroup];\n let last = last\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n subheaderTemplate || null;\n context: { state: s, group }\n \"\n ></ng-container>\n <div [ngClass]=\"{ 'subcontainer-grouped': s.result.isGrouped }\">\n <table>\n <thead>\n <tr>\n <th *ngIf=\"!!s.selection.allowSelection\" class=\"selection-head\">\n <div\n *ngIf=\"\n s.selection.allowSelection !== 'individual' &&\n s.selection.allowSelection === true\n \"\n class=\"checkbox-wrapper\"\n >\n <riv-checkbox\n *ngIf=\"!s.result.isGrouped\"\n [value]=\"s.selection.isAllSelected === true\"\n [indeterminate]=\"\n s.selection.isAllSelected === 'indeterminate'\n \"\n (valueChange)=\"\n manager?.actions?.next({ type: 'allSelectedChange' })\n \"\n ></riv-checkbox>\n <riv-checkbox\n *ngIf=\"s.result.isGrouped\"\n [value]=\"group.selected === true\"\n [indeterminate]=\"group.selected === 'indeterminate'\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'groupSelectionChange',\n payload: group\n })\n \"\n ></riv-checkbox>\n </div>\n </th>\n <th\n *ngFor=\"let column of s.display.columns; let i = index\"\n [class.pinned]=\"column.pinned\"\n [style.left.px]=\"column.left\"\n [style.width.px]=\"getWidth(column)\"\n draggable=\"true\"\n droppable=\"true\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n [class.dragged-over-left]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx > i\n \"\n [class.dragged-over-right]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx < i\n \"\n >\n <div\n *ngIf=\"\n !column.orderable &&\n !column.filterable &&\n !s.display.columnsAreFreezable &&\n !s.display.columnsAreHideable\n \"\n class=\"header-wrapper\"\n [class.left]=\"column.alignment === 'left'\"\n [class.right]=\"column.alignment === 'right'\"\n >\n {{ s.display.columnNameMap.get(column.key) }}\n </div>\n <riv-menu\n *ngIf=\"\n column.orderable ||\n column.filterable ||\n s.display.columnsAreFreezable ||\n s.display.columnsAreHideable\n \"\n >\n <ng-template #trigger>\n <button\n type=\"button\"\n class=\"header-wrapper\"\n [class.left]=\"column.alignment === 'left'\"\n [class.right]=\"column.alignment === 'right'\"\n [class.active]=\"s.query.order?.column === column.key\"\n >\n {{ s.display.columnNameMap.get(column.key) }}\n <span class=\"icon-container\">\n <riv-icon\n [size]=\"12\"\n [name]=\"\n s.query.order?.direction === 'desc'\n ? 'ArrowDown'\n : 'ArrowUp'\n \"\n ></riv-icon>\n </span>\n </button>\n <riv-table-header-resize-handle\n (dragResize)=\"setWidth(column.key, $event)\"\n ></riv-table-header-resize-handle>\n </ng-template>\n <ng-container *ngIf=\"column.orderable\">\n <button\n *ngIf=\"\n !(\n s.query.order?.column === column.key &&\n s.query.order?.direction === 'asc'\n )\n \"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: {\n direction: 'asc',\n column: column.key\n }\n })\n \"\n >\n Sort ascending\n </button>\n <button\n *ngIf=\"s.query.order?.column === column.key\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: null\n })\n \"\n >\n Remove sort\n </button>\n <button\n *ngIf=\"\n !(\n s.query.order?.column === column.key &&\n s.query.order?.direction === 'desc'\n )\n \"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: {\n direction: 'desc',\n column: column.key\n }\n })\n \"\n >\n Sort descending\n </button>\n </ng-container>\n <riv-menu-divider\n *ngIf=\"column.orderable && column.filterable\"\n ></riv-menu-divider>\n <button\n *ngIf=\"column.filterable\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'filterAdd',\n columnKey: column.key\n })\n \"\n >\n Add a filter\n </button>\n <riv-menu-divider\n *ngIf=\"\n (column.orderable || column.filterable) &&\n (s.display.columnsAreFreezable ||\n s.display.columnsAreHideable)\n \"\n ></riv-menu-divider>\n <ng-container *ngIf=\"s.display.columnsAreFreezable\">\n <button\n *ngIf=\"!column.pinned\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnsFreezeUpToChange',\n freeze: true,\n index: i\n })\n \"\n >\n Freeze up to column\n </button>\n <button\n *ngIf=\"column.pinned\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnsFreezeUpToChange',\n freeze: false,\n index: 0\n })\n \"\n >\n Un-freeze columns\n </button>\n </ng-container>\n <button\n *ngIf=\"s.display.columnsAreHideable\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnEnabledChange',\n column: column.key,\n enabled: false\n })\n \"\n >\n Hide column\n </button>\n </riv-menu>\n </th>\n <th *ngIf=\"menuTemplate\" class=\"menu-head\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container\n *ngIf=\"s.result.totalMatchingRowCount > 0; else empty\"\n >\n <ng-container *ngFor=\"let row of group.rows\">\n <ng-template #rowBody>\n <td\n *ngIf=\"\n s.selection.allowSelection === true ||\n s.selection.allowSelection === 'individual'\n \"\n class=\"selection-body\"\n (click)=\"$event.preventDefault()\"\n >\n <label\n class=\"checkbox-wrapper\"\n (click)=\"$event.stopPropagation()\"\n >\n <riv-checkbox\n [identifier]=\"'riv-table-selection-' + row.id\"\n [value]=\"row.selected\"\n (valueChange)=\"selectionChange(row.id, $event)\"\n ></riv-checkbox>\n </label>\n </td>\n <td\n *ngFor=\"let column of s.display.columns\"\n [class.pinned]=\"column.pinned\"\n [class.advanced]=\"column.dataType === 'advanced'\"\n [style.left.px]=\"column.left\"\n [style.text-align]=\"column.alignment\"\n (click)=\"handleClick($event, column)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n cellTemplate || null;\n context: { row: row, column: column }\n \"\n ></ng-container>\n </td>\n <td\n *ngIf=\"menuTemplate\"\n class=\"menu-body\"\n (click)=\"\n $event.stopPropagation(); $event.preventDefault()\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n menuTemplate || null;\n context: { row: row }\n \"\n ></ng-container>\n </td>\n </ng-template>\n <ng-container *ngIf=\"row.rowLink; let rl\">\n <a\n *ngIf=\"isExternalRowLink(rl)\"\n [href]=\"rl.href\"\n class=\"row-link\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </a>\n <a\n *ngIf=\"isInternalRowLink(rl)\"\n [routerLink]=\"rl.routerLink\"\n [queryParams]=\"rl.queryParams\"\n [queryParamsHandling]=\"rl.queryParamsHandling\"\n class=\"row-link\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </a>\n </ng-container>\n <tr\n *ngIf=\"!row.rowLink\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </tr>\n </ng-container>\n </ng-container>\n <ng-template #empty>\n <tr>\n <td [attr.colspan]=\"s.display.columns.length\">\n <riv-zero-state\n *ngIf=\"s.display.zeroStateMessage; let message\"\n [message]=\"message\"\n ></riv-zero-state>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n </div>\n <div\n class=\"footer\"\n *ngIf=\"\n s.result.isGrouped &&\n group.totalMatchingRowCount > s.query.grouping.countPerGroup &&\n group.rows.length === s.query.grouping.countPerGroup\n \"\n >\n <span\n rivLink\n class=\"footer-link\"\n (click)=\"\n manager?.actions?.next({\n type: 'viewMoreKeyChange',\n viewMoreKey: group.groupData.key.toString()\n })\n \"\n >View all {{ group.totalMatchingRowCount }}</span\n >\n </div>\n <br *ngIf=\"!last\" />\n </ng-container>\n </div>\n <div *ngIf=\"s.query.pagination.showControls\" class=\"pagination\">\n <div class=\"page-size-controls\">\n <ng-container *ngIf=\"!s.result.isGrouped\">\n <span> Results per page: </span>\n <riv-simple-select\n [selectedOption]=\"{\n id: s.query.pagination.pageSize.toString(),\n title: s.query.pagination.pageSize.toString(),\n value: s.query.pagination.pageSize\n }\"\n (selectedOptionChange)=\"\n manager?.actions?.next({\n type: 'pageSizeChange',\n size: $event?.value || 25\n })\n \"\n [optionGroups]=\"pageSizeOptions\"\n [size]=\"'small'\"\n ></riv-simple-select>\n </ng-container>\n </div>\n <span\n *ngIf=\"s.result.totalMatchingRowCount > 0 && !s.result.isGrouped\"\n class=\"page-data-indicator\"\n >\n {{ s.query.pagination.pageRowStart | rivNumber }}-{{\n s.query.pagination.pageRowEnd | rivNumber\n }}\n of\n {{ s.result.totalMatchingRowCount | rivNumber }}\n </span>\n <div *ngIf=\"s.query.pagination.showControls\" class=\"pagination-controls\">\n <button\n rivButton\n [variant]=\"'basic'\"\n [size]=\"'small'\"\n [icon]=\"'ArrowLeft'\"\n type=\"button\"\n [disabled]=\"s.query.pagination.previous === null\"\n (click)=\"manager?.actions?.next({ type: 'previousPageNavigate' })\"\n ></button>\n <span\n *ngIf=\"s.query.pagination.pages[0] > 0\"\n class=\"truncated-pages left\"\n >\n …\n </span>\n <button\n *ngFor=\"let page of s.query.pagination.pages\"\n class=\"page\"\n type=\"button\"\n [disabled]=\"page === s.query.pagination.page\"\n (click)=\"manager?.actions?.next({ type: 'pageChange', page })\"\n >\n {{ page + 1 }}\n </button>\n <span\n *ngIf=\"\n s.query.pagination.pages[s.query.pagination.pages.length - 1] <\n s.query.pagination.pageCount - 1\n \"\n class=\"truncated-pages right\"\n >\n …\n </span>\n <button\n rivButton\n [variant]=\"'basic'\"\n [size]=\"'small'\"\n [icon]=\"'ArrowRight'\"\n type=\"button\"\n [disabled]=\"s.query.pagination.next === null\"\n (click)=\"manager?.actions?.next({ type: 'nextPageNavigate' })\"\n ></button>\n </div>\n </div>\n </riv-loading-cover>\n</ng-container>\n", styles: [":host{display:flex;min-height:0}riv-loading-cover{width:100%;display:grid;grid-template-rows:1fr auto;gap:0}header{border-width:var(--border-width) var(--border-width) 0 var(--border-width);border-style:solid;border-color:var(--border-light);border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium)}header:has(+ div > .subheader){border-bottom-width:var(--border-width);border-bottom-left-radius:var(--border-radius-medium);border-bottom-right-radius:var(--border-radius-medium);margin-bottom:var(--size-large)}header+.container>.subcontainer{border-top-left-radius:0;border-top-right-radius:0}.container{overflow:auto}.container-ungrouped{border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-medium)}.container-ungrouped.has-header{border-top-left-radius:0;border-top-right-radius:0}.subcontainer-grouped{overflow:auto;border:var(--border-width) solid var(--border-light);border-top-right-radius:var(--border-radius-medium);border-top-left-radius:var(--border-radius-medium)}.subcontainer-grouped:not(:has(+ .footer)){border-bottom-right-radius:var(--border-radius-medium);border-bottom-left-radius:var(--border-radius-medium)}table{border-collapse:separate;width:100%;table-layout:fixed}thead{position:sticky;top:0;z-index:var(--above-scroll-z-index)}th{border-bottom:var(--border-width) solid var(--border-light);background-color:var(--surface-light-1);position:relative}th:not(:last-child){border-right:var(--border-width) solid var(--border-light)}th.pinned{position:sticky;top:0;z-index:1}th.dragged-over-left:before,th.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}th.dragged-over-left:before{left:0}th.dragged-over-right:before{right:0}th.selection-head{width:var(--size-xxlarge);position:sticky;z-index:1;left:0;vertical-align:middle;height:calc(var(--base-grid-size) * 8 + var(--border-width))}.checkbox-wrapper{display:flex;justify-content:center;align-items:center}label.checkbox-wrapper{cursor:pointer;width:100%;height:100%}th.menu-head{width:var(--size-xxlarge);position:sticky;z-index:1;right:0}th>riv-menu{width:100%}.header-wrapper{font-size:calc(var(--base-grid-size) * 2.75);font-weight:var(--font-weight-heavy);line-height:1;text-transform:uppercase;letter-spacing:calc(var(--base-grid-size) / 4);padding:var(--size-xsmall) var(--size-small);display:inline-flex;align-items:center;justify-content:center;width:100%;height:calc(var(--base-grid-size) * 8);white-space:nowrap}.header-wrapper.left{justify-content:flex-start}.header-wrapper.right{justify-content:flex-end}button.header-wrapper{transition:background-color var(--short-transition);cursor:pointer}button.header-wrapper:hover{background-color:var(--black-20)}button.header-wrapper .icon-container{overflow:hidden;display:inline-block;width:0;height:1em;opacity:0;padding-left:0;transition:width var(--medium-transition),opacity var(--medium-transition),color var(--medium-transition),padding-left var(--medium-transition)}button.header-wrapper.active .icon-container{width:calc(var(--base-grid-size) * 3.5);padding-left:var(--size-xsmall);opacity:1}button.header-wrapper:hover .icon-container{color:var(--type-light-low-contrast)}button.header-wrapper.active .icon-container{color:var(--brand)}a.row-link{display:table-row;text-decoration:none;color:inherit}a.row-link td{transition:background-color var(--short-transition)}a.row-link:hover td{background-color:var(--surface-light-2)}a.row-link:active td{background-color:var(--surface-light-3)}td{border-bottom:var(--border-width) solid var(--border-light);height:calc(var(--base-grid-size) * 8);padding:var(--size-xxsmall) var(--size-small);font:var(--body-small);vertical-align:middle;text-align:center;background-color:var(--surface-light-0)}tr.grayed td,a.row-link.grayed td{background-color:var(--gray-30)}tbody>*:last-child>td{border-bottom:none}td.pinned{position:sticky;z-index:1}td.pinned:not(:has(+ td.pinned)){border-right:var(--border-width) solid var(--border-light)}td.advanced,td.selection-body,td.menu-body{padding:0;vertical-align:middle}td.selection-body{position:sticky;z-index:1;left:0}td.menu-body{position:sticky;z-index:1;right:0}.pagination{margin-top:var(--size-small);display:flex;justify-content:space-between;gap:var(--size-large)}.page-size-controls,.pagination-controls{display:flex;align-items:center;gap:var(--size-xsmall)}.page-data-indicator{display:flex;align-items:center;flex-grow:1;justify-content:flex-end;font:var(--body-medium);color:var(--type-light-low-contrast)}.page-size-controls span{font:var(--body-medium)}.page{display:flex;align-items:center;justify-content:center;min-width:calc(var(--base-grid-size) * 7.5);height:calc(var(--base-grid-size) * 7.5);padding:var(--size-xxsmall);font:var(--input-medium);color:var(--purp-80);border-radius:var(--border-radius-small);transition:background-color var(--short-transition)}.page:hover,.page:disabled{background-color:var(--black-20)}.page:active:not(:disabled){background-color:var(--black-40)}.page:not(:disabled){cursor:pointer}.truncated-pages{color:var(--type-light-disabled)}.truncated-pages.left{padding-left:var(--size-small)}.truncated-pages.right{padding-right:var(--size-small)}.footer{background-color:var(--surface-light-1);border-bottom:var(--border-width) solid var(--border-light);border-left:var(--border-width) solid var(--border-light);border-right:var(--border-width) solid var(--border-light);border-bottom-left-radius:var(--border-radius-medium);border-bottom-right-radius:var(--border-radius-medium);text-align:right;padding:calc(var(--base-grid-size) / 2);font:var(--body-medium)}.footer-link{margin-right:var(--size-medium)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "active"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i5.CheckboxComponent, selector: "riv-checkbox", inputs: ["name", "identifier", "value", "checkedColorToken", "indeterminateColorToken", "checkboxTooltip", "indeterminate", "disabled", "required"], outputs: ["valueChange"] }, { kind: "component", type: i6.IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "component", type: i7.LinkComponent, selector: "[rivLink]", inputs: ["disabled", "locked", "theme"] }, { kind: "component", type: i8.LoadingCoverComponent, selector: "riv-loading-cover", inputs: ["loading", "loadingSize", "errorMessage"] }, { kind: "component", type: i9.MenuComponent, selector: "riv-menu", inputs: ["preferredPosition"] }, { kind: "component", type: i10.MenuDividerComponent, selector: "riv-menu-divider" }, { kind: "component", type: i11.MenuItemComponent, selector: "[riv-menu-item]", inputs: ["locked", "disabled", "variant"] }, { kind: "directive", type: i12.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i13.SimpleSelectComponent, selector: "riv-simple-select", inputs: ["optionGroups", "selectedOption", "size", "disabled", "locked", "filterabilityOptions", "placeholder", "maxHeight", "maxWidth", "minHeight", "minWidth"], outputs: ["selectedOptionChange"] }, { kind: "directive", type: i14.SizeDirective, selector: "[rivClientSize]", outputs: ["rivClientSize"] }, { kind: "component", type: i15.TableHeaderResizeHandleComponent, selector: "riv-table-header-resize-handle", outputs: ["dragResize"] }, { kind: "component", type: i16.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message", "title", "icon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i17.NumberPipe, name: "rivNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
149
149
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableComponent, decorators: [{
|
|
150
150
|
type: Component,
|
|
151
|
-
args: [{ selector: 'riv-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container *ngIf=\"selectionCalloutPosition | async; let position\">\n <ng-container *ngIf=\"s.selection.selectedCount > 0 && selectionTemplate\">\n <riv-callout\n *riv-overlay\n [anchor]=\"position\"\n [isModal]=\"false\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [preferredPosition]=\"'top-right'\"\n >\n <ng-container\n *ngTemplateOutlet=\"selectionTemplate; context: { state: s }\"\n ></ng-container>\n </riv-callout>\n </ng-container>\n </ng-container>\n <riv-loading-cover\n [loading]=\"s.load.loading\"\n [errorMessage]=\"s.load.error ? getErrorMessage(s.load.error) : undefined\"\n >\n <header *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { state: s }\"\n ></ng-container>\n </header>\n <div\n class=\"container\"\n [ngClass]=\"{\n 'container-ungrouped': !s.result.isGrouped,\n 'has-header': !s.result.isGrouped && headerTemplate\n }\"\n (rivClientSize)=\"containerSize.next($event)\"\n >\n <ng-container\n *ngFor=\"\n let group of s.result.isGrouped\n ? s.result.rowGroups\n : [s.result.rowsAsGroup];\n let last = last\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n subheaderTemplate || null;\n context: { state: s, group }\n \"\n ></ng-container>\n <div [ngClass]=\"{ 'subcontainer-grouped': s.result.isGrouped }\">\n <table>\n <thead>\n <tr>\n <th *ngIf=\"!!s.selection.allowSelection\" class=\"selection-head\">\n <div\n *ngIf=\"\n s.selection.allowSelection !== 'individual' &&\n s.selection.allowSelection === true\n \"\n class=\"checkbox-wrapper\"\n >\n <riv-checkbox\n *ngIf=\"!s.result.isGrouped\"\n [value]=\"s.selection.isAllSelected === true\"\n [indeterminate]=\"\n s.selection.isAllSelected === 'indeterminate'\n \"\n (valueChange)=\"\n manager?.actions?.next({ type: 'allSelectedChange' })\n \"\n ></riv-checkbox>\n <riv-checkbox\n *ngIf=\"s.result.isGrouped\"\n [value]=\"group.selected === true\"\n [indeterminate]=\"group.selected === 'indeterminate'\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'groupSelectionChange',\n payload: group\n })\n \"\n ></riv-checkbox>\n </div>\n </th>\n <th\n *ngFor=\"let column of s.display.columns; let i = index\"\n [class.pinned]=\"column.pinned\"\n [style.left.px]=\"column.left\"\n [style.width.px]=\"getWidth(column)\"\n draggable=\"true\"\n droppable=\"true\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n [class.dragged-over-left]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx > i\n \"\n [class.dragged-over-right]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx < i\n \"\n >\n <div\n *ngIf=\"\n !column.orderable &&\n !column.filterable &&\n !s.display.columnsAreFreezable &&\n !s.display.columnsAreHideable\n \"\n class=\"header-wrapper\"\n [class.left]=\"column.alignment === 'left'\"\n [class.right]=\"column.alignment === 'right'\"\n >\n {{ s.display.columnNameMap.get(column.key) }}\n </div>\n <riv-menu\n *ngIf=\"\n column.orderable ||\n column.filterable ||\n s.display.columnsAreFreezable ||\n s.display.columnsAreHideable\n \"\n >\n <ng-template #trigger>\n <button\n type=\"button\"\n class=\"header-wrapper\"\n [class.left]=\"column.alignment === 'left'\"\n [class.right]=\"column.alignment === 'right'\"\n [class.active]=\"s.query.order?.column === column.key\"\n >\n {{ s.display.columnNameMap.get(column.key) }}\n <span class=\"icon-container\">\n <riv-icon\n [size]=\"12\"\n [name]=\"\n s.query.order?.direction === 'desc'\n ? 'ArrowDown'\n : 'ArrowUp'\n \"\n ></riv-icon>\n </span>\n </button>\n <table-header-resize-handle\n (dragResize)=\"setWidth(column.key, $event)\"\n ></table-header-resize-handle>\n </ng-template>\n <ng-container *ngIf=\"column.orderable\">\n <button\n *ngIf=\"\n !(\n s.query.order?.column === column.key &&\n s.query.order?.direction === 'asc'\n )\n \"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: {\n direction: 'asc',\n column: column.key\n }\n })\n \"\n >\n Sort ascending\n </button>\n <button\n *ngIf=\"s.query.order?.column === column.key\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: null\n })\n \"\n >\n Remove sort\n </button>\n <button\n *ngIf=\"\n !(\n s.query.order?.column === column.key &&\n s.query.order?.direction === 'desc'\n )\n \"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: {\n direction: 'desc',\n column: column.key\n }\n })\n \"\n >\n Sort descending\n </button>\n </ng-container>\n <riv-menu-divider\n *ngIf=\"column.orderable && column.filterable\"\n ></riv-menu-divider>\n <button\n *ngIf=\"column.filterable\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'filterAdd',\n columnKey: column.key\n })\n \"\n >\n Add a filter\n </button>\n <riv-menu-divider\n *ngIf=\"\n (column.orderable || column.filterable) &&\n (s.display.columnsAreFreezable ||\n s.display.columnsAreHideable)\n \"\n ></riv-menu-divider>\n <ng-container *ngIf=\"s.display.columnsAreFreezable\">\n <button\n *ngIf=\"!column.pinned\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnsFreezeUpToChange',\n freeze: true,\n index: i\n })\n \"\n >\n Freeze up to column\n </button>\n <button\n *ngIf=\"column.pinned\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnsFreezeUpToChange',\n freeze: false,\n index: 0\n })\n \"\n >\n Un-freeze columns\n </button>\n </ng-container>\n <button\n *ngIf=\"s.display.columnsAreHideable\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnEnabledChange',\n column: column.key,\n enabled: false\n })\n \"\n >\n Hide column\n </button>\n </riv-menu>\n </th>\n <th *ngIf=\"menuTemplate\" class=\"menu-head\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container\n *ngIf=\"s.result.totalMatchingRowCount > 0; else empty\"\n >\n <ng-container *ngFor=\"let row of group.rows\">\n <ng-template #rowBody>\n <td\n *ngIf=\"\n s.selection.allowSelection === true ||\n s.selection.allowSelection === 'individual'\n \"\n class=\"selection-body\"\n (click)=\"$event.preventDefault()\"\n >\n <label\n class=\"checkbox-wrapper\"\n (click)=\"$event.stopPropagation()\"\n >\n <riv-checkbox\n [identifier]=\"'riv-table-selection-' + row.id\"\n [value]=\"row.selected\"\n (valueChange)=\"selectionChange(row.id, $event)\"\n ></riv-checkbox>\n </label>\n </td>\n <td\n *ngFor=\"let column of s.display.columns\"\n [class.pinned]=\"column.pinned\"\n [class.advanced]=\"column.dataType === 'advanced'\"\n [style.left.px]=\"column.left\"\n [style.text-align]=\"column.alignment\"\n (click)=\"handleClick($event, column)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n cellTemplate || null;\n context: { row: row, column: column }\n \"\n ></ng-container>\n </td>\n <td\n *ngIf=\"menuTemplate\"\n class=\"menu-body\"\n (click)=\"\n $event.stopPropagation(); $event.preventDefault()\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n menuTemplate || null;\n context: { row: row }\n \"\n ></ng-container>\n </td>\n </ng-template>\n <ng-container *ngIf=\"row.rowLink; let rl\">\n <a\n *ngIf=\"isExternalRowLink(rl)\"\n [href]=\"rl.href\"\n class=\"row-link\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </a>\n <a\n *ngIf=\"isInternalRowLink(rl)\"\n [routerLink]=\"rl.routerLink\"\n [queryParams]=\"rl.queryParams\"\n [queryParamsHandling]=\"rl.queryParamsHandling\"\n class=\"row-link\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </a>\n </ng-container>\n <tr\n *ngIf=\"!row.rowLink\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </tr>\n </ng-container>\n </ng-container>\n <ng-template #empty>\n <tr>\n <td [attr.colspan]=\"s.display.columns.length\">\n <riv-zero-state\n *ngIf=\"s.display.zeroStateMessage; let message\"\n [message]=\"message\"\n ></riv-zero-state>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n </div>\n <div\n class=\"footer\"\n *ngIf=\"\n s.result.isGrouped &&\n group.totalMatchingRowCount > s.query.grouping.countPerGroup &&\n group.rows.length == s.query.grouping.countPerGroup\n \"\n >\n <span\n rivLink\n class=\"footer-link\"\n (click)=\"\n manager?.actions?.next({\n type: 'viewMoreKeyChange',\n viewMoreKey: group.groupData.key.toString()\n })\n \"\n >View all {{ group.totalMatchingRowCount }}</span\n >\n </div>\n <br *ngIf=\"!last\" />\n </ng-container>\n </div>\n <div *ngIf=\"s.query.pagination.showControls\" class=\"pagination\">\n <div class=\"page-size-controls\">\n <ng-container *ngIf=\"!s.result.isGrouped\">\n <span> Results per page: </span>\n <riv-simple-select\n [selectedOption]=\"{\n id: s.query.pagination.pageSize.toString(),\n title: s.query.pagination.pageSize.toString(),\n value: s.query.pagination.pageSize\n }\"\n (selectedOptionChange)=\"\n manager?.actions?.next({\n type: 'pageSizeChange',\n size: $event?.value || 25\n })\n \"\n [optionGroups]=\"pageSizeOptions\"\n [size]=\"'small'\"\n ></riv-simple-select>\n </ng-container>\n </div>\n <span\n *ngIf=\"s.result.totalMatchingRowCount > 0 && !s.result.isGrouped\"\n class=\"page-data-indicator\"\n >\n {{ s.query.pagination.pageRowStart | rivNumber }}-{{\n s.query.pagination.pageRowEnd | rivNumber\n }}\n of\n {{ s.result.totalMatchingRowCount | rivNumber }}\n </span>\n <div *ngIf=\"s.query.pagination.showControls\" class=\"pagination-controls\">\n <button\n rivButton\n [variant]=\"'basic'\"\n [size]=\"'small'\"\n [icon]=\"'ArrowLeft'\"\n type=\"button\"\n [disabled]=\"s.query.pagination.previous === null\"\n (click)=\"manager?.actions?.next({ type: 'previousPageNavigate' })\"\n ></button>\n <span\n *ngIf=\"s.query.pagination.pages[0] > 0\"\n class=\"truncated-pages left\"\n >\n …\n </span>\n <button\n *ngFor=\"let page of s.query.pagination.pages\"\n class=\"page\"\n type=\"button\"\n [disabled]=\"page === s.query.pagination.page\"\n (click)=\"manager?.actions?.next({ type: 'pageChange', page })\"\n >\n {{ page + 1 }}\n </button>\n <span\n *ngIf=\"\n s.query.pagination.pages[s.query.pagination.pages.length - 1] <\n s.query.pagination.pageCount - 1\n \"\n class=\"truncated-pages right\"\n >\n …\n </span>\n <button\n rivButton\n [variant]=\"'basic'\"\n [size]=\"'small'\"\n [icon]=\"'ArrowRight'\"\n type=\"button\"\n [disabled]=\"s.query.pagination.next === null\"\n (click)=\"manager?.actions?.next({ type: 'nextPageNavigate' })\"\n ></button>\n </div>\n </div>\n </riv-loading-cover>\n</ng-container>\n", styles: [":host{display:flex;min-height:0}riv-loading-cover{width:100%;display:grid;grid-template-rows:1fr auto;gap:0}header{border-width:var(--border-width) var(--border-width) 0 var(--border-width);border-style:solid;border-color:var(--border-light);border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium)}header:has(+ div > .subheader){border-bottom-width:var(--border-width);border-bottom-left-radius:var(--border-radius-medium);border-bottom-right-radius:var(--border-radius-medium);margin-bottom:var(--size-large)}header+.container>.subcontainer{border-top-left-radius:0;border-top-right-radius:0}.container{overflow:auto}.container-ungrouped{border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-medium)}.container-ungrouped.has-header{border-top-left-radius:0;border-top-right-radius:0}.subcontainer-grouped{overflow:auto;border:var(--border-width) solid var(--border-light);border-top-right-radius:var(--border-radius-medium);border-top-left-radius:var(--border-radius-medium)}.subcontainer-grouped:not(:has(+ .footer)){border-bottom-right-radius:var(--border-radius-medium);border-bottom-left-radius:var(--border-radius-medium)}table{border-collapse:separate;width:100%;table-layout:fixed}thead{position:sticky;top:0;z-index:var(--above-scroll-z-index)}th{border-bottom:var(--border-width) solid var(--border-light);background-color:var(--surface-light-1);position:relative}th:not(:last-child){border-right:var(--border-width) solid var(--border-light)}th.pinned{position:sticky;top:0;z-index:1}th.dragged-over-left:before,th.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}th.dragged-over-left:before{left:0}th.dragged-over-right:before{right:0}th.selection-head{width:var(--size-xxlarge);position:sticky;z-index:1;left:0;vertical-align:middle;height:calc(var(--base-grid-size) * 8 + var(--border-width))}.checkbox-wrapper{display:flex;justify-content:center;align-items:center}label.checkbox-wrapper{cursor:pointer;width:100%;height:100%}th.menu-head{width:var(--size-xxlarge);position:sticky;z-index:1;right:0}th>riv-menu{width:100%}.header-wrapper{font-size:calc(var(--base-grid-size) * 2.75);font-weight:var(--font-weight-heavy);line-height:1;text-transform:uppercase;letter-spacing:calc(var(--base-grid-size) / 4);padding:var(--size-xsmall) var(--size-small);display:inline-flex;align-items:center;justify-content:center;width:100%;height:calc(var(--base-grid-size) * 8);white-space:nowrap}.header-wrapper.left{justify-content:flex-start}.header-wrapper.right{justify-content:flex-end}button.header-wrapper{transition:background-color var(--short-transition);cursor:pointer}button.header-wrapper:hover{background-color:var(--black-20)}button.header-wrapper .icon-container{overflow:hidden;display:inline-block;width:0;height:1em;opacity:0;padding-left:0;transition:width var(--medium-transition),opacity var(--medium-transition),color var(--medium-transition),padding-left var(--medium-transition)}button.header-wrapper.active .icon-container{width:calc(var(--base-grid-size) * 3.5);padding-left:var(--size-xsmall);opacity:1}button.header-wrapper:hover .icon-container{color:var(--type-light-low-contrast)}button.header-wrapper.active .icon-container{color:var(--brand)}a.row-link{display:table-row;text-decoration:none;color:inherit}a.row-link td{transition:background-color var(--short-transition)}a.row-link:hover td{background-color:var(--surface-light-2)}a.row-link:active td{background-color:var(--surface-light-3)}td{border-bottom:var(--border-width) solid var(--border-light);height:calc(var(--base-grid-size) * 8);padding:var(--size-xxsmall) var(--size-small);font:var(--body-small);vertical-align:middle;text-align:center;background-color:var(--surface-light-0)}tr.grayed td,a.row-link.grayed td{background-color:var(--gray-30)}tbody>*:last-child>td{border-bottom:none}td.pinned{position:sticky;z-index:1}td.pinned:not(:has(+ td.pinned)){border-right:var(--border-width) solid var(--border-light)}td.advanced,td.selection-body,td.menu-body{padding:0;vertical-align:middle}td.selection-body{position:sticky;z-index:1;left:0}td.menu-body{position:sticky;z-index:1;right:0}.pagination{margin-top:var(--size-small);display:flex;justify-content:space-between;gap:var(--size-large)}.page-size-controls,.pagination-controls{display:flex;align-items:center;gap:var(--size-xsmall)}.page-data-indicator{display:flex;align-items:center;flex-grow:1;justify-content:flex-end;font:var(--body-medium);color:var(--type-light-low-contrast)}.page-size-controls span{font:var(--body-medium)}.page{display:flex;align-items:center;justify-content:center;min-width:calc(var(--base-grid-size) * 7.5);height:calc(var(--base-grid-size) * 7.5);padding:var(--size-xxsmall);font:var(--input-medium);color:var(--purp-80);border-radius:var(--border-radius-small);transition:background-color var(--short-transition)}.page:hover,.page:disabled{background-color:var(--black-20)}.page:active:not(:disabled){background-color:var(--black-40)}.page:not(:disabled){cursor:pointer}.truncated-pages{color:var(--type-light-disabled)}.truncated-pages.left{padding-left:var(--size-small)}.truncated-pages.right{padding-right:var(--size-small)}.footer{background-color:var(--surface-light-1);border-bottom:var(--border-width) solid var(--border-light);border-left:var(--border-width) solid var(--border-light);border-right:var(--border-width) solid var(--border-light);border-bottom-left-radius:var(--border-radius-medium);border-bottom-right-radius:var(--border-radius-medium);text-align:right;padding:calc(var(--base-grid-size) / 2);font:var(--body-medium)}.footer-link{margin-right:var(--size-medium)}\n"] }]
|
|
151
|
+
args: [{ selector: 'riv-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container *ngIf=\"selectionCalloutPosition | async; let position\">\n <ng-container *ngIf=\"s.selection.selectedCount > 0 && selectionTemplate\">\n <riv-callout\n *riv-overlay\n [anchor]=\"position\"\n [isModal]=\"false\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [preferredPosition]=\"'top-right'\"\n >\n <ng-container\n *ngTemplateOutlet=\"selectionTemplate; context: { state: s }\"\n ></ng-container>\n </riv-callout>\n </ng-container>\n </ng-container>\n <riv-loading-cover\n [loading]=\"s.load.loading\"\n [errorMessage]=\"s.load.error ? getErrorMessage(s.load.error) : undefined\"\n >\n <header *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { state: s }\"\n ></ng-container>\n </header>\n <div\n class=\"container\"\n [ngClass]=\"{\n 'container-ungrouped': !s.result.isGrouped,\n 'has-header': !s.result.isGrouped && headerTemplate\n }\"\n (rivClientSize)=\"containerSize.next($event)\"\n >\n <ng-container\n *ngFor=\"\n let group of s.result.isGrouped\n ? s.result.rowGroups\n : [s.result.rowsAsGroup];\n let last = last\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n subheaderTemplate || null;\n context: { state: s, group }\n \"\n ></ng-container>\n <div [ngClass]=\"{ 'subcontainer-grouped': s.result.isGrouped }\">\n <table>\n <thead>\n <tr>\n <th *ngIf=\"!!s.selection.allowSelection\" class=\"selection-head\">\n <div\n *ngIf=\"\n s.selection.allowSelection !== 'individual' &&\n s.selection.allowSelection === true\n \"\n class=\"checkbox-wrapper\"\n >\n <riv-checkbox\n *ngIf=\"!s.result.isGrouped\"\n [value]=\"s.selection.isAllSelected === true\"\n [indeterminate]=\"\n s.selection.isAllSelected === 'indeterminate'\n \"\n (valueChange)=\"\n manager?.actions?.next({ type: 'allSelectedChange' })\n \"\n ></riv-checkbox>\n <riv-checkbox\n *ngIf=\"s.result.isGrouped\"\n [value]=\"group.selected === true\"\n [indeterminate]=\"group.selected === 'indeterminate'\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'groupSelectionChange',\n payload: group\n })\n \"\n ></riv-checkbox>\n </div>\n </th>\n <th\n *ngFor=\"let column of s.display.columns; let i = index\"\n [class.pinned]=\"column.pinned\"\n [style.left.px]=\"column.left\"\n [style.width.px]=\"getWidth(column)\"\n draggable=\"true\"\n droppable=\"true\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n [class.dragged-over-left]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx > i\n \"\n [class.dragged-over-right]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx < i\n \"\n >\n <div\n *ngIf=\"\n !column.orderable &&\n !column.filterable &&\n !s.display.columnsAreFreezable &&\n !s.display.columnsAreHideable\n \"\n class=\"header-wrapper\"\n [class.left]=\"column.alignment === 'left'\"\n [class.right]=\"column.alignment === 'right'\"\n >\n {{ s.display.columnNameMap.get(column.key) }}\n </div>\n <riv-menu\n *ngIf=\"\n column.orderable ||\n column.filterable ||\n s.display.columnsAreFreezable ||\n s.display.columnsAreHideable\n \"\n >\n <ng-template #trigger>\n <button\n type=\"button\"\n class=\"header-wrapper\"\n [class.left]=\"column.alignment === 'left'\"\n [class.right]=\"column.alignment === 'right'\"\n [class.active]=\"s.query.order?.column === column.key\"\n >\n {{ s.display.columnNameMap.get(column.key) }}\n <span class=\"icon-container\">\n <riv-icon\n [size]=\"12\"\n [name]=\"\n s.query.order?.direction === 'desc'\n ? 'ArrowDown'\n : 'ArrowUp'\n \"\n ></riv-icon>\n </span>\n </button>\n <riv-table-header-resize-handle\n (dragResize)=\"setWidth(column.key, $event)\"\n ></riv-table-header-resize-handle>\n </ng-template>\n <ng-container *ngIf=\"column.orderable\">\n <button\n *ngIf=\"\n !(\n s.query.order?.column === column.key &&\n s.query.order?.direction === 'asc'\n )\n \"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: {\n direction: 'asc',\n column: column.key\n }\n })\n \"\n >\n Sort ascending\n </button>\n <button\n *ngIf=\"s.query.order?.column === column.key\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: null\n })\n \"\n >\n Remove sort\n </button>\n <button\n *ngIf=\"\n !(\n s.query.order?.column === column.key &&\n s.query.order?.direction === 'desc'\n )\n \"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: {\n direction: 'desc',\n column: column.key\n }\n })\n \"\n >\n Sort descending\n </button>\n </ng-container>\n <riv-menu-divider\n *ngIf=\"column.orderable && column.filterable\"\n ></riv-menu-divider>\n <button\n *ngIf=\"column.filterable\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'filterAdd',\n columnKey: column.key\n })\n \"\n >\n Add a filter\n </button>\n <riv-menu-divider\n *ngIf=\"\n (column.orderable || column.filterable) &&\n (s.display.columnsAreFreezable ||\n s.display.columnsAreHideable)\n \"\n ></riv-menu-divider>\n <ng-container *ngIf=\"s.display.columnsAreFreezable\">\n <button\n *ngIf=\"!column.pinned\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnsFreezeUpToChange',\n freeze: true,\n index: i\n })\n \"\n >\n Freeze up to column\n </button>\n <button\n *ngIf=\"column.pinned\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnsFreezeUpToChange',\n freeze: false,\n index: 0\n })\n \"\n >\n Un-freeze columns\n </button>\n </ng-container>\n <button\n *ngIf=\"s.display.columnsAreHideable\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnEnabledChange',\n column: column.key,\n enabled: false\n })\n \"\n >\n Hide column\n </button>\n </riv-menu>\n </th>\n <th *ngIf=\"menuTemplate\" class=\"menu-head\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container\n *ngIf=\"s.result.totalMatchingRowCount > 0; else empty\"\n >\n <ng-container *ngFor=\"let row of group.rows\">\n <ng-template #rowBody>\n <td\n *ngIf=\"\n s.selection.allowSelection === true ||\n s.selection.allowSelection === 'individual'\n \"\n class=\"selection-body\"\n (click)=\"$event.preventDefault()\"\n >\n <label\n class=\"checkbox-wrapper\"\n (click)=\"$event.stopPropagation()\"\n >\n <riv-checkbox\n [identifier]=\"'riv-table-selection-' + row.id\"\n [value]=\"row.selected\"\n (valueChange)=\"selectionChange(row.id, $event)\"\n ></riv-checkbox>\n </label>\n </td>\n <td\n *ngFor=\"let column of s.display.columns\"\n [class.pinned]=\"column.pinned\"\n [class.advanced]=\"column.dataType === 'advanced'\"\n [style.left.px]=\"column.left\"\n [style.text-align]=\"column.alignment\"\n (click)=\"handleClick($event, column)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n cellTemplate || null;\n context: { row: row, column: column }\n \"\n ></ng-container>\n </td>\n <td\n *ngIf=\"menuTemplate\"\n class=\"menu-body\"\n (click)=\"\n $event.stopPropagation(); $event.preventDefault()\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n menuTemplate || null;\n context: { row: row }\n \"\n ></ng-container>\n </td>\n </ng-template>\n <ng-container *ngIf=\"row.rowLink; let rl\">\n <a\n *ngIf=\"isExternalRowLink(rl)\"\n [href]=\"rl.href\"\n class=\"row-link\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </a>\n <a\n *ngIf=\"isInternalRowLink(rl)\"\n [routerLink]=\"rl.routerLink\"\n [queryParams]=\"rl.queryParams\"\n [queryParamsHandling]=\"rl.queryParamsHandling\"\n class=\"row-link\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </a>\n </ng-container>\n <tr\n *ngIf=\"!row.rowLink\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </tr>\n </ng-container>\n </ng-container>\n <ng-template #empty>\n <tr>\n <td [attr.colspan]=\"s.display.columns.length\">\n <riv-zero-state\n *ngIf=\"s.display.zeroStateMessage; let message\"\n [message]=\"message\"\n ></riv-zero-state>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n </div>\n <div\n class=\"footer\"\n *ngIf=\"\n s.result.isGrouped &&\n group.totalMatchingRowCount > s.query.grouping.countPerGroup &&\n group.rows.length === s.query.grouping.countPerGroup\n \"\n >\n <span\n rivLink\n class=\"footer-link\"\n (click)=\"\n manager?.actions?.next({\n type: 'viewMoreKeyChange',\n viewMoreKey: group.groupData.key.toString()\n })\n \"\n >View all {{ group.totalMatchingRowCount }}</span\n >\n </div>\n <br *ngIf=\"!last\" />\n </ng-container>\n </div>\n <div *ngIf=\"s.query.pagination.showControls\" class=\"pagination\">\n <div class=\"page-size-controls\">\n <ng-container *ngIf=\"!s.result.isGrouped\">\n <span> Results per page: </span>\n <riv-simple-select\n [selectedOption]=\"{\n id: s.query.pagination.pageSize.toString(),\n title: s.query.pagination.pageSize.toString(),\n value: s.query.pagination.pageSize\n }\"\n (selectedOptionChange)=\"\n manager?.actions?.next({\n type: 'pageSizeChange',\n size: $event?.value || 25\n })\n \"\n [optionGroups]=\"pageSizeOptions\"\n [size]=\"'small'\"\n ></riv-simple-select>\n </ng-container>\n </div>\n <span\n *ngIf=\"s.result.totalMatchingRowCount > 0 && !s.result.isGrouped\"\n class=\"page-data-indicator\"\n >\n {{ s.query.pagination.pageRowStart | rivNumber }}-{{\n s.query.pagination.pageRowEnd | rivNumber\n }}\n of\n {{ s.result.totalMatchingRowCount | rivNumber }}\n </span>\n <div *ngIf=\"s.query.pagination.showControls\" class=\"pagination-controls\">\n <button\n rivButton\n [variant]=\"'basic'\"\n [size]=\"'small'\"\n [icon]=\"'ArrowLeft'\"\n type=\"button\"\n [disabled]=\"s.query.pagination.previous === null\"\n (click)=\"manager?.actions?.next({ type: 'previousPageNavigate' })\"\n ></button>\n <span\n *ngIf=\"s.query.pagination.pages[0] > 0\"\n class=\"truncated-pages left\"\n >\n …\n </span>\n <button\n *ngFor=\"let page of s.query.pagination.pages\"\n class=\"page\"\n type=\"button\"\n [disabled]=\"page === s.query.pagination.page\"\n (click)=\"manager?.actions?.next({ type: 'pageChange', page })\"\n >\n {{ page + 1 }}\n </button>\n <span\n *ngIf=\"\n s.query.pagination.pages[s.query.pagination.pages.length - 1] <\n s.query.pagination.pageCount - 1\n \"\n class=\"truncated-pages right\"\n >\n …\n </span>\n <button\n rivButton\n [variant]=\"'basic'\"\n [size]=\"'small'\"\n [icon]=\"'ArrowRight'\"\n type=\"button\"\n [disabled]=\"s.query.pagination.next === null\"\n (click)=\"manager?.actions?.next({ type: 'nextPageNavigate' })\"\n ></button>\n </div>\n </div>\n </riv-loading-cover>\n</ng-container>\n", styles: [":host{display:flex;min-height:0}riv-loading-cover{width:100%;display:grid;grid-template-rows:1fr auto;gap:0}header{border-width:var(--border-width) var(--border-width) 0 var(--border-width);border-style:solid;border-color:var(--border-light);border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium)}header:has(+ div > .subheader){border-bottom-width:var(--border-width);border-bottom-left-radius:var(--border-radius-medium);border-bottom-right-radius:var(--border-radius-medium);margin-bottom:var(--size-large)}header+.container>.subcontainer{border-top-left-radius:0;border-top-right-radius:0}.container{overflow:auto}.container-ungrouped{border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-medium)}.container-ungrouped.has-header{border-top-left-radius:0;border-top-right-radius:0}.subcontainer-grouped{overflow:auto;border:var(--border-width) solid var(--border-light);border-top-right-radius:var(--border-radius-medium);border-top-left-radius:var(--border-radius-medium)}.subcontainer-grouped:not(:has(+ .footer)){border-bottom-right-radius:var(--border-radius-medium);border-bottom-left-radius:var(--border-radius-medium)}table{border-collapse:separate;width:100%;table-layout:fixed}thead{position:sticky;top:0;z-index:var(--above-scroll-z-index)}th{border-bottom:var(--border-width) solid var(--border-light);background-color:var(--surface-light-1);position:relative}th:not(:last-child){border-right:var(--border-width) solid var(--border-light)}th.pinned{position:sticky;top:0;z-index:1}th.dragged-over-left:before,th.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}th.dragged-over-left:before{left:0}th.dragged-over-right:before{right:0}th.selection-head{width:var(--size-xxlarge);position:sticky;z-index:1;left:0;vertical-align:middle;height:calc(var(--base-grid-size) * 8 + var(--border-width))}.checkbox-wrapper{display:flex;justify-content:center;align-items:center}label.checkbox-wrapper{cursor:pointer;width:100%;height:100%}th.menu-head{width:var(--size-xxlarge);position:sticky;z-index:1;right:0}th>riv-menu{width:100%}.header-wrapper{font-size:calc(var(--base-grid-size) * 2.75);font-weight:var(--font-weight-heavy);line-height:1;text-transform:uppercase;letter-spacing:calc(var(--base-grid-size) / 4);padding:var(--size-xsmall) var(--size-small);display:inline-flex;align-items:center;justify-content:center;width:100%;height:calc(var(--base-grid-size) * 8);white-space:nowrap}.header-wrapper.left{justify-content:flex-start}.header-wrapper.right{justify-content:flex-end}button.header-wrapper{transition:background-color var(--short-transition);cursor:pointer}button.header-wrapper:hover{background-color:var(--black-20)}button.header-wrapper .icon-container{overflow:hidden;display:inline-block;width:0;height:1em;opacity:0;padding-left:0;transition:width var(--medium-transition),opacity var(--medium-transition),color var(--medium-transition),padding-left var(--medium-transition)}button.header-wrapper.active .icon-container{width:calc(var(--base-grid-size) * 3.5);padding-left:var(--size-xsmall);opacity:1}button.header-wrapper:hover .icon-container{color:var(--type-light-low-contrast)}button.header-wrapper.active .icon-container{color:var(--brand)}a.row-link{display:table-row;text-decoration:none;color:inherit}a.row-link td{transition:background-color var(--short-transition)}a.row-link:hover td{background-color:var(--surface-light-2)}a.row-link:active td{background-color:var(--surface-light-3)}td{border-bottom:var(--border-width) solid var(--border-light);height:calc(var(--base-grid-size) * 8);padding:var(--size-xxsmall) var(--size-small);font:var(--body-small);vertical-align:middle;text-align:center;background-color:var(--surface-light-0)}tr.grayed td,a.row-link.grayed td{background-color:var(--gray-30)}tbody>*:last-child>td{border-bottom:none}td.pinned{position:sticky;z-index:1}td.pinned:not(:has(+ td.pinned)){border-right:var(--border-width) solid var(--border-light)}td.advanced,td.selection-body,td.menu-body{padding:0;vertical-align:middle}td.selection-body{position:sticky;z-index:1;left:0}td.menu-body{position:sticky;z-index:1;right:0}.pagination{margin-top:var(--size-small);display:flex;justify-content:space-between;gap:var(--size-large)}.page-size-controls,.pagination-controls{display:flex;align-items:center;gap:var(--size-xsmall)}.page-data-indicator{display:flex;align-items:center;flex-grow:1;justify-content:flex-end;font:var(--body-medium);color:var(--type-light-low-contrast)}.page-size-controls span{font:var(--body-medium)}.page{display:flex;align-items:center;justify-content:center;min-width:calc(var(--base-grid-size) * 7.5);height:calc(var(--base-grid-size) * 7.5);padding:var(--size-xxsmall);font:var(--input-medium);color:var(--purp-80);border-radius:var(--border-radius-small);transition:background-color var(--short-transition)}.page:hover,.page:disabled{background-color:var(--black-20)}.page:active:not(:disabled){background-color:var(--black-40)}.page:not(:disabled){cursor:pointer}.truncated-pages{color:var(--type-light-disabled)}.truncated-pages.left{padding-left:var(--size-small)}.truncated-pages.right{padding-right:var(--size-small)}.footer{background-color:var(--surface-light-1);border-bottom:var(--border-width) solid var(--border-light);border-left:var(--border-width) solid var(--border-light);border-right:var(--border-width) solid var(--border-light);border-bottom-left-radius:var(--border-radius-medium);border-bottom-right-radius:var(--border-radius-medium);text-align:right;padding:calc(var(--base-grid-size) / 2);font:var(--body-medium)}.footer-link{margin-right:var(--size-medium)}\n"] }]
|
|
152
152
|
}], propDecorators: { manager: [{
|
|
153
153
|
type: Input
|
|
154
154
|
}], cellTemplate: [{
|
|
@@ -173,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
173
173
|
type: HostListener,
|
|
174
174
|
args: ['document:keyup', ['$event']]
|
|
175
175
|
}] } });
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvdGFibGUvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvdGFibGUvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjcEMsTUFBTSxPQUFPLGNBQWM7SUFOM0I7UUFvQ1csWUFBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFeEIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ3ZDLDZCQUF3QixHQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3pELENBQUM7UUFtQ0ssb0JBQWUsR0FBNEM7WUFDbEU7Z0JBQ0UsT0FBTyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDM0MsRUFBRSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUU7b0JBQ3ZCLEtBQUssRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFO29CQUMxQixLQUFLLEVBQUUsUUFBUTtpQkFDaEIsQ0FBQyxDQUFDO2FBQ0o7U0FDRixDQUFDO1FBRU8sZUFBVSxHQUF5QyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUNyRSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBRVEsb0JBQWUsR0FBbUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQXdCN0QscUJBQWdCLEdBQWtCLElBQUksQ0FBQztRQUN2Qyx5QkFBb0IsR0FBa0IsSUFBSSxDQUFDO1FBNEJuQyxVQUFLLEdBQVksS0FBSyxDQUFDO0tBcUNoQztJQXhJQyxlQUFlO1FBQ2IsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzdCLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDcEMsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUMzQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FDMUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDOUQsQ0FBQztZQUNGLElBQUksZ0JBQWdCLEdBQUcsY0FBYyxFQUFFO2dCQUNyQyw0REFBNEQ7Z0JBQzVELEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTztxQkFDcEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztxQkFDckIsT0FBTyxFQUFFLEVBQUU7b0JBQ1osTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQzNCLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDeEQsQ0FBQztvQkFDRixJQUFJLGlCQUFpQixHQUFHLGNBQWMsRUFBRTt3QkFDdEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDOzRCQUN6QixJQUFJLEVBQUUseUJBQXlCOzRCQUMvQixLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7NEJBQ1osTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDO3lCQUNkLENBQUMsQ0FBQzt3QkFDSCxNQUFNO3FCQUNQO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQWdCRCxRQUFRLENBQUMsTUFBUyxFQUFFLEtBQW9CO1FBQ3RDLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNsQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4RCxJQUFJLGNBQWMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUN6QixJQUFJLEVBQUUsbUJBQW1CO29CQUN6QixNQUFNO29CQUNOLGNBQWMsRUFBRSxjQUFjO2lCQUMvQixDQUFDLENBQUM7YUFDSjtZQUNELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JDO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBQ0QsUUFBUSxDQUFDLE1BQThCO1FBQ3JDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3pFO2FBQU07WUFDTCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBS0QsU0FBUyxDQUFDLEdBQVc7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQWU7UUFDdEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWU7UUFDbEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDekIsSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQ3BDLFFBQVEsRUFBRSxPQUFPO2FBQ2xCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLENBQVU7UUFDeEIsSUFBSSxDQUFDLFlBQVksS0FBSztZQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUN6QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVE7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssSUFBSTtZQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDOztZQUN4RCxPQUFPLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFLRCxPQUFPLENBQUMsS0FBb0I7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFHRCxLQUFLLENBQUMsS0FBb0I7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYyxFQUFFLFFBQWlCO1FBQy9DLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQztZQUN6QixJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLEVBQUUsRUFBRSxLQUFLO1lBQ1QsUUFBUTtZQUNSLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSztTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCLEVBQUUsTUFBOEI7UUFDM0QsSUFBSSxNQUFNLENBQUMsbUJBQW1CO1lBQUUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZELElBQUksTUFBTSxDQUFDLG9CQUFvQjtZQUFFLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQsaUJBQWlCLENBQ2YsT0FBeUI7UUFFekIsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsaUJBQWlCLENBQ2YsT0FBeUI7UUFFekIsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQztJQUNyQyxDQUFDOzsyR0E3S1UsY0FBYzsrRkFBZCxjQUFjLDBvQkMxQjNCLDhua0JBcWRBOzJGRDNiYSxjQUFjO2tCQU4xQixTQUFTOytCQUNFLFdBQVcsbUJBR0osdUJBQXVCLENBQUMsTUFBTTs4QkFTL0MsT0FBTztzQkFETixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxNQUFNO2dCQU9wQixZQUFZO3NCQURYLFlBQVk7dUJBQUMsTUFBTTtnQkFJcEIsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLFdBQVc7Z0JBSXpCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxRQUFRO2dCQUl0QixpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsV0FBVztnQkFvSHpCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNNUMsS0FBSztzQkFESixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVHJhY2tCeUZ1bmN0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHN1bSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUml2U2VsZWN0IH0gZnJvbSAnLi4vLi4vLi4vaW5wdXQvc2VsZWN0L3N0YXRlJztcbmltcG9ydCB7IFJpdlRhYmxlIH0gZnJvbSAnLi4vc3RhdGUnO1xuXG50eXBlIFBhZ2VTaXplT3B0aW9uID0ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB2YWx1ZTogbnVtYmVyO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQ8XG4gIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAgPSB7IGtleTogJycgfSxcbj4ge1xuICBASW5wdXQoKVxuICBtYW5hZ2VyPzogUml2VGFibGUuTWFuYWdlcjxSLCBDLCBGLCBHPjtcblxuICBAQ29udGVudENoaWxkKCdjZWxsJylcbiAgY2VsbFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8e1xuICAgIHJvdzogUml2VGFibGUuRnVsbFJvdzxSPjtcbiAgICBjb2x1bW46IFJpdlRhYmxlLkZ1bGxDb2x1bW48Qz47XG4gIH0+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ21lbnUnKVxuICBtZW51VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IHJvdzogUml2VGFibGUuRnVsbFJvdzxSPiB9PjtcblxuICBAQ29udGVudENoaWxkKCdzZWxlY3Rpb24nKVxuICBzZWxlY3Rpb25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgc3RhdGU6IFJpdlRhYmxlLkZ1bGxTdGF0ZTxSLCBDLCBGLCBHPiB9PjtcblxuICBAQ29udGVudENoaWxkKCdoZWFkZXInKVxuICBoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgc3RhdGU6IFJpdlRhYmxlLkZ1bGxTdGF0ZTxSLCBDLCBGLCBHPiB9PjtcblxuICBAQ29udGVudENoaWxkKCdzdWJoZWFkZXInKVxuICBzdWJoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHtcbiAgICBzdGF0ZTogUml2VGFibGUuRnVsbFN0YXRlPFIsIEMsIEYsIEc+O1xuICAgIGdyb3VwOiBSaXZUYWJsZS5Sb3dHcm91cDxSLCBHPjtcbiAgfT47XG5cbiAgcmVhZG9ubHkgZGVzdHJveSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcmVhZG9ubHkgY29udGFpbmVyU2l6ZSA9IG5ldyBTdWJqZWN0PERPTVJlY3Q+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbkNhbGxvdXRQb3NpdGlvbjogT2JzZXJ2YWJsZTxET01SZWN0PiA9XG4gICAgdGhpcy5jb250YWluZXJTaXplLnBpcGUoXG4gICAgICBtYXAocmVjdCA9PiBuZXcgRE9NUmVjdChyZWN0LnggKyA0NCwgcmVjdC55IC0gMTIsIDAsIDApKSxcbiAgICApO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLm1hbmFnZXIhLnN0YXRlLCB0aGlzLmNvbnRhaW5lclNpemVdKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSkpXG4gICAgICAuc3Vic2NyaWJlKChbc3RhdGUsIGNvbnRhaW5lclNpemVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyU2l6ZS53aWR0aDtcbiAgICAgICAgY29uc3QgdG90YWxGcm96ZW5XaWR0aCA9IHN1bShcbiAgICAgICAgICBzdGF0ZS5kaXNwbGF5LmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQpLm1hcChjID0+IGMud2lkdGgpLFxuICAgICAgICApO1xuICAgICAgICBpZiAodG90YWxGcm96ZW5XaWR0aCA+IGNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaG93IG1hbnkgY29sdW1ucyBjYW4gYmUgcGlubmVkIHdpdGhvdXQgb3ZlcmZsb3dpbmcuXG4gICAgICAgICAgZm9yIChjb25zdCBbaV0gb2Ygc3RhdGUuZGlzcGxheS5jb2x1bW5zXG4gICAgICAgICAgICAuZmlsdGVyKGMgPT4gYy5waW5uZWQpXG4gICAgICAgICAgICAuZW50cmllcygpKSB7XG4gICAgICAgICAgICBjb25zdCBzbGljZWRGcm96ZW5XaWR0aCA9IHN1bShcbiAgICAgICAgICAgICAgc3RhdGUuZGlzcGxheS5jb2x1bW5zLnNsaWNlKDAsIGkgKyAxKS5tYXAoYyA9PiBjLndpZHRoKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoc2xpY2VkRnJvemVuV2lkdGggPiBjb250YWluZXJXaWR0aCkge1xuICAgICAgICAgICAgICB0aGlzLm1hbmFnZXI/LmFjdGlvbnMubmV4dCh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2NvbHVtbnNGcmVlemVVcFRvQ2hhbmdlJyxcbiAgICAgICAgICAgICAgICBpbmRleDogaSAtIDEsXG4gICAgICAgICAgICAgICAgZnJlZXplOiBpID4gMCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kubmV4dChudWxsKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHBhZ2VTaXplT3B0aW9uczogUml2U2VsZWN0Lk9wdGlvbkdyb3VwPFBhZ2VTaXplT3B0aW9uPltdID0gW1xuICAgIHtcbiAgICAgIG9wdGlvbnM6IFJpdlRhYmxlLnBhZ2VTaXplcy5tYXAocGFnZVNpemUgPT4gKHtcbiAgICAgICAgaWQ6IHBhZ2VTaXplLnRvU3RyaW5nKCksXG4gICAgICAgIHRpdGxlOiBwYWdlU2l6ZS50b1N0cmluZygpLFxuICAgICAgICB2YWx1ZTogcGFnZVNpemUsXG4gICAgICB9KSksXG4gICAgfSxcbiAgXTtcblxuICByZWFkb25seSB0cmFja0J5Um93OiBUcmFja0J5RnVuY3Rpb248Uml2VGFibGUuRnVsbFJvdzxSPj4gPSAoXywgcm93KSA9PlxuICAgIHJvdy5pZDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHRlbXBvcmFyeVdpZHRoczogTWFwPEMsIG51bWJlcj4gPSBuZXcgTWFwKCk7XG4gIHNldFdpZHRoKGNvbHVtbjogQywgd2lkdGg6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAod2lkdGggPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRlbXBvcmFyeVdpZHRoID0gdGhpcy50ZW1wb3JhcnlXaWR0aHMuZ2V0KGNvbHVtbik7XG4gICAgICBpZiAodGVtcG9yYXJ5V2lkdGgpIHtcbiAgICAgICAgdGhpcy5tYW5hZ2VyPy5hY3Rpb25zLm5leHQoe1xuICAgICAgICAgIHR5cGU6ICdjb2x1bW5XaWR0aENoYW5nZScsXG4gICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIHByZWZlcnJlZFdpZHRoOiB0ZW1wb3JhcnlXaWR0aCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnRlbXBvcmFyeVdpZHRocy5kZWxldGUoY29sdW1uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZW1wb3JhcnlXaWR0aHMuc2V0KGNvbHVtbiwgd2lkdGgpO1xuICAgIH1cbiAgfVxuICBnZXRXaWR0aChjb2x1bW46IFJpdlRhYmxlLkZ1bGxDb2x1bW48Qz4pOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnRlbXBvcmFyeVdpZHRocy5oYXMoY29sdW1uLmtleSkpIHtcbiAgICAgIHJldHVybiBNYXRoLm1heCh0aGlzLnRlbXBvcmFyeVdpZHRocy5nZXQoY29sdW1uLmtleSkhLCBjb2x1bW4ubWluV2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY29sdW1uLndpZHRoO1xuICAgIH1cbiAgfVxuXG4gIGRyYWdnZWRDb2x1bW5JZHg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBkcmFnZ2VkT3ZlckNvbHVtbklkeDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgZHJhZ1N0YXJ0KGlkeDogbnVtYmVyKSB7XG4gICAgdGhpcy5kcmFnZ2VkQ29sdW1uSWR4ID0gaWR4O1xuICB9XG5cbiAgZHJhZ092ZXIob250b0lkeDogbnVtYmVyKSB7XG4gICAgdGhpcy5kcmFnZ2VkT3ZlckNvbHVtbklkeCA9IG9udG9JZHg7XG4gIH1cblxuICBkcm9wKG9udG9JZHg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmRyYWdnZWRDb2x1bW5JZHggIT09IG51bGwpIHtcbiAgICAgIHRoaXMubWFuYWdlcj8uYWN0aW9ucy5uZXh0KHtcbiAgICAgICAgdHlwZTogJ2NvbHVtbk9yZGVyQ2hhbmdlJyxcbiAgICAgICAgcHJldmlvdXNJbmRleDogdGhpcy5kcmFnZ2VkQ29sdW1uSWR4LFxuICAgICAgICBuZXdJbmRleDogb250b0lkeCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kcmFnZ2VkT3ZlckNvbHVtbklkeCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKGU6IHVua25vd24pOiBzdHJpbmcge1xuICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHJldHVybiBlLm1lc3NhZ2U7XG4gICAgaWYgKHR5cGVvZiBlID09PSAnc3RyaW5nJykgcmV0dXJuIGU7XG4gICAgaWYgKHR5cGVvZiBlID09PSAnb2JqZWN0JyAmJiBlICE9PSBudWxsKSByZXR1cm4gZS50b1N0cmluZygpO1xuICAgIGVsc2UgcmV0dXJuICdBbiBlcnJvciBvY2N1cnJlZC4nO1xuICB9XG5cbiAgcHJpdmF0ZSBzaGlmdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBrZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5zaGlmdCA9IGV2ZW50LnNoaWZ0S2V5O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAnLCBbJyRldmVudCddKVxuICBrZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMuc2hpZnQgPSBldmVudC5zaGlmdEtleTtcbiAgfVxuXG4gIHNlbGVjdGlvbkNoYW5nZShyb3dJZDogUlsnaWQnXSwgc2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm1hbmFnZXI/LmFjdGlvbnMubmV4dCh7XG4gICAgICB0eXBlOiAncm93U2VsZWN0ZWRDaGFuZ2UnLFxuICAgICAgaWQ6IHJvd0lkLFxuICAgICAgc2VsZWN0ZWQsXG4gICAgICBjb250aWd1b3VzOiB0aGlzLnNoaWZ0LFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGNvbHVtbjogUml2VGFibGUuRnVsbENvbHVtbjxDPikge1xuICAgIGlmIChjb2x1bW4uY2xpY2tQcmV2ZW50RGVmYXVsdCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoY29sdW1uLmNsaWNrU3RvcFByb3BhZ2F0aW9uKSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGlzRXh0ZXJuYWxSb3dMaW5rKFxuICAgIHJvd0xpbms6IFJpdlRhYmxlLlJvd0xpbmssXG4gICk6IHJvd0xpbmsgaXMgUml2VGFibGUuRXh0ZXJuYWxSb3dMaW5rIHtcbiAgICByZXR1cm4gcm93TGluay50eXBlID09PSAnZXh0ZXJuYWwnO1xuICB9XG5cbiAgaXNJbnRlcm5hbFJvd0xpbmsoXG4gICAgcm93TGluazogUml2VGFibGUuUm93TGluayxcbiAgKTogcm93TGluayBpcyBSaXZUYWJsZS5JbnRlcm5hbFJvd0xpbmsge1xuICAgIHJldHVybiByb3dMaW5rLnR5cGUgPT09ICdpbnRlcm5hbCc7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJtYW5hZ2VyPy5zdGF0ZSB8IGFzeW5jOyBsZXQgc1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uQ2FsbG91dFBvc2l0aW9uIHwgYXN5bmM7IGxldCBwb3NpdGlvblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzLnNlbGVjdGlvbi5zZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3Rpb25UZW1wbGF0ZVwiPlxuICAgICAgPHJpdi1jYWxsb3V0XG4gICAgICAgICpyaXYtb3ZlcmxheVxuICAgICAgICBbYW5jaG9yXT1cInBvc2l0aW9uXCJcbiAgICAgICAgW2lzTW9kYWxdPVwiZmFsc2VcIlxuICAgICAgICBbdGhlbWVdPVwiJ2xpZ2h0J1wiXG4gICAgICAgIFtzaG93Q2FyZXRdPVwiZmFsc2VcIlxuICAgICAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ3RvcC1yaWdodCdcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3Rpb25UZW1wbGF0ZTsgY29udGV4dDogeyBzdGF0ZTogcyB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9yaXYtY2FsbG91dD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxyaXYtbG9hZGluZy1jb3ZlclxuICAgIFtsb2FkaW5nXT1cInMubG9hZC5sb2FkaW5nXCJcbiAgICBbZXJyb3JNZXNzYWdlXT1cInMubG9hZC5lcnJvciA/IGdldEVycm9yTWVzc2FnZShzLmxvYWQuZXJyb3IpIDogdW5kZWZpbmVkXCJcbiAgPlxuICAgIDxoZWFkZXIgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7IHN0YXRlOiBzIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvaGVhZGVyPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY29udGFpbmVyXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2NvbnRhaW5lci11bmdyb3VwZWQnOiAhcy5yZXN1bHQuaXNHcm91cGVkLFxuICAgICAgICAnaGFzLWhlYWRlcic6ICFzLnJlc3VsdC5pc0dyb3VwZWQgJiYgaGVhZGVyVGVtcGxhdGVcbiAgICAgIH1cIlxuICAgICAgKHJpdkNsaWVudFNpemUpPVwiY29udGFpbmVyU2l6ZS5uZXh0KCRldmVudClcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgbGV0IGdyb3VwIG9mIHMucmVzdWx0LmlzR3JvdXBlZFxuICAgICAgICAgICAgPyBzLnJlc3VsdC5yb3dHcm91cHNcbiAgICAgICAgICAgIDogW3MucmVzdWx0LnJvd3NBc0dyb3VwXTtcbiAgICAgICAgICBsZXQgbGFzdCA9IGxhc3RcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBzdWJoZWFkZXJUZW1wbGF0ZSB8fCBudWxsO1xuICAgICAgICAgICAgY29udGV4dDogeyBzdGF0ZTogcywgZ3JvdXAgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7ICdzdWJjb250YWluZXItZ3JvdXBlZCc6IHMucmVzdWx0LmlzR3JvdXBlZCB9XCI+XG4gICAgICAgICAgPHRhYmxlPlxuICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiISFzLnNlbGVjdGlvbi5hbGxvd1NlbGVjdGlvblwiIGNsYXNzPVwic2VsZWN0aW9uLWhlYWRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICBzLnNlbGVjdGlvbi5hbGxvd1NlbGVjdGlvbiAhPT0gJ2luZGl2aWR1YWwnICYmXG4gICAgICAgICAgICAgICAgICAgICAgcy5zZWxlY3Rpb24uYWxsb3dTZWxlY3Rpb24gPT09IHRydWVcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja2JveC13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXMucmVzdWx0LmlzR3JvdXBlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInMuc2VsZWN0aW9uLmlzQWxsU2VsZWN0ZWQgPT09IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcy5zZWxlY3Rpb24uaXNBbGxTZWxlY3RlZCA9PT0gJ2luZGV0ZXJtaW5hdGUnXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ2FsbFNlbGVjdGVkQ2hhbmdlJyB9KVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48L3Jpdi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicy5yZXN1bHQuaXNHcm91cGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ3JvdXAuc2VsZWN0ZWQgPT09IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImdyb3VwLnNlbGVjdGVkID09PSAnaW5kZXRlcm1pbmF0ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZ3JvdXBTZWxlY3Rpb25DaGFuZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiBncm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9yaXYtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBzLmRpc3BsYXkuY29sdW1uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MucGlubmVkXT1cImNvbHVtbi5waW5uZWRcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiY29sdW1uLmxlZnRcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImdldFdpZHRoKGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBkcm9wcGFibGU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwiZHJhZ1N0YXJ0KGkpXCJcbiAgICAgICAgICAgICAgICAgIChkcmFnZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgICAgKGRyYWdvdmVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBkcmFnT3ZlcihpKVwiXG4gICAgICAgICAgICAgICAgICAoZHJvcCk9XCJkcm9wKGkpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItbGVmdF09XCJcbiAgICAgICAgICAgICAgICAgICAgZHJhZ2dlZE92ZXJDb2x1bW5JZHggPT09IGkgJiZcbiAgICAgICAgICAgICAgICAgICAgZHJhZ2dlZENvbHVtbklkeCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICBkcmFnZ2VkQ29sdW1uSWR4ID4gaVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItcmlnaHRdPVwiXG4gICAgICAgICAgICAgICAgICAgIGRyYWdnZWRPdmVyQ29sdW1uSWR4ID09PSBpICYmXG4gICAgICAgICAgICAgICAgICAgIGRyYWdnZWRDb2x1bW5JZHggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgICAgZHJhZ2dlZENvbHVtbklkeCA8IGlcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICFjb2x1bW4ub3JkZXJhYmxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWNvbHVtbi5maWx0ZXJhYmxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgIXMuZGlzcGxheS5jb2x1bW5zQXJlRnJlZXphYmxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgIXMuZGlzcGxheS5jb2x1bW5zQXJlSGlkZWFibGVcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5sZWZ0XT1cImNvbHVtbi5hbGlnbm1lbnQgPT09ICdsZWZ0J1wiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5yaWdodF09XCJjb2x1bW4uYWxpZ25tZW50ID09PSAncmlnaHQnXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgcy5kaXNwbGF5LmNvbHVtbk5hbWVNYXAuZ2V0KGNvbHVtbi5rZXkpIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxyaXYtbWVudVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5vcmRlcmFibGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uZmlsdGVyYWJsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgIHMuZGlzcGxheS5jb2x1bW5zQXJlRnJlZXphYmxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgcy5kaXNwbGF5LmNvbHVtbnNBcmVIaWRlYWJsZVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5sZWZ0XT1cImNvbHVtbi5hbGlnbm1lbnQgPT09ICdsZWZ0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MucmlnaHRdPVwiY29sdW1uLmFsaWdubWVudCA9PT0gJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInMucXVlcnkub3JkZXI/LmNvbHVtbiA9PT0gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcy5kaXNwbGF5LmNvbHVtbk5hbWVNYXAuZ2V0KGNvbHVtbi5rZXkpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMucXVlcnkub3JkZXI/LmRpcmVjdGlvbiA9PT0gJ2Rlc2MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ0Fycm93RG93bidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnQXJyb3dVcCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGFibGUtaGVhZGVyLXJlc2l6ZS1oYW5kbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIChkcmFnUmVzaXplKT1cInNldFdpZHRoKGNvbHVtbi5rZXksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3RhYmxlLWhlYWRlci1yZXNpemUtaGFuZGxlPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLm9yZGVyYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5xdWVyeS5vcmRlcj8uY29sdW1uID09PSBjb2x1bW4ua2V5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5xdWVyeS5vcmRlcj8uZGlyZWN0aW9uID09PSAnYXNjJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcml2LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb3JkZXJDaGFuZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2FzYycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgYXNjZW5kaW5nXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzLnF1ZXJ5Lm9yZGVyPy5jb2x1bW4gPT09IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcml2LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb3JkZXJDaGFuZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlIHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMucXVlcnkub3JkZXI/LmNvbHVtbiA9PT0gY29sdW1uLmtleSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMucXVlcnkub3JkZXI/LmRpcmVjdGlvbiA9PT0gJ2Rlc2MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByaXYtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdvcmRlckNoYW5nZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAnZGVzYycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgZGVzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1tZW51LWRpdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi5vcmRlcmFibGUgJiYgY29sdW1uLmZpbHRlcmFibGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9yaXYtbWVudS1kaXZpZGVyPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4uZmlsdGVyYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcml2LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdmaWx0ZXJBZGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5LZXk6IGNvbHVtbi5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIEFkZCBhIGZpbHRlclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1tZW51LWRpdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbHVtbi5vcmRlcmFibGUgfHwgY29sdW1uLmZpbHRlcmFibGUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAocy5kaXNwbGF5LmNvbHVtbnNBcmVGcmVlemFibGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcy5kaXNwbGF5LmNvbHVtbnNBcmVIaWRlYWJsZSlcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9yaXYtbWVudS1kaXZpZGVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicy5kaXNwbGF5LmNvbHVtbnNBcmVGcmVlemFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb2x1bW4ucGlubmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpdi1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY29sdW1uc0ZyZWV6ZVVwVG9DaGFuZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWV6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBGcmVlemUgdXAgdG8gY29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4ucGlubmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpdi1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY29sdW1uc0ZyZWV6ZVVwVG9DaGFuZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWV6ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgVW4tZnJlZXplIGNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInMuZGlzcGxheS5jb2x1bW5zQXJlSGlkZWFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgIHJpdi1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY29sdW1uRW5hYmxlZENoYW5nZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIEhpZGUgY29sdW1uXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9yaXYtbWVudT5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIm1lbnVUZW1wbGF0ZVwiIGNsYXNzPVwibWVudS1oZWFkXCI+PC90aD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInMucmVzdWx0LnRvdGFsTWF0Y2hpbmdSb3dDb3VudCA+IDA7IGVsc2UgZW1wdHlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIGdyb3VwLnJvd3NcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcm93Qm9keT5cbiAgICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHMuc2VsZWN0aW9uLmFsbG93U2VsZWN0aW9uID09PSB0cnVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBzLnNlbGVjdGlvbi5hbGxvd1NlbGVjdGlvbiA9PT0gJ2luZGl2aWR1YWwnXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdGlvbi1ib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94LXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJpdi1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRlbnRpZmllcl09XCIncml2LXRhYmxlLXNlbGVjdGlvbi0nICsgcm93LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInJvdy5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZWxlY3Rpb25DaGFuZ2Uocm93LmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3Jpdi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHMuZGlzcGxheS5jb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MucGlubmVkXT1cImNvbHVtbi5waW5uZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hZHZhbmNlZF09XCJjb2x1bW4uZGF0YVR5cGUgPT09ICdhZHZhbmNlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImNvbHVtbi5sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudGV4dC1hbGlnbl09XCJjb2x1bW4uYWxpZ25tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZSB8fCBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHJvdzogcm93LCBjb2x1bW46IGNvbHVtbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudS1ib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVUZW1wbGF0ZSB8fCBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHJvdzogcm93IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cucm93TGluazsgbGV0IHJsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0V4dGVybmFsUm93TGluayhybClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cInJsLmhyZWZcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93LWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ncmF5ZWRdPVwicy5kaXNwbGF5LnJvd3NBcmVHcmF5ZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJvd0JvZHlcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNJbnRlcm5hbFJvd0xpbmsocmwpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJybC5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwicmwucXVlcnlQYXJhbXNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cInJsLnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93LWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ncmF5ZWRdPVwicy5kaXNwbGF5LnJvd3NBcmVHcmF5ZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJvd0JvZHlcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcm93LnJvd0xpbmtcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZ3JheWVkXT1cInMuZGlzcGxheS5yb3dzQXJlR3JheWVkXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJvd0JvZHlcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5PlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cInMuZGlzcGxheS5jb2x1bW5zLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8cml2LXplcm8tc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInMuZGlzcGxheS56ZXJvU3RhdGVNZXNzYWdlOyBsZXQgbWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgID48L3Jpdi16ZXJvLXN0YXRlPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZm9vdGVyXCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcy5yZXN1bHQuaXNHcm91cGVkICYmXG4gICAgICAgICAgICBncm91cC50b3RhbE1hdGNoaW5nUm93Q291bnQgPiBzLnF1ZXJ5Lmdyb3VwaW5nLmNvdW50UGVyR3JvdXAgJiZcbiAgICAgICAgICAgIGdyb3VwLnJvd3MubGVuZ3RoID09IHMucXVlcnkuZ3JvdXBpbmcuY291bnRQZXJHcm91cFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgcml2TGlua1xuICAgICAgICAgICAgY2xhc3M9XCJmb290ZXItbGlua1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICd2aWV3TW9yZUtleUNoYW5nZScsXG4gICAgICAgICAgICAgICAgdmlld01vcmVLZXk6IGdyb3VwLmdyb3VwRGF0YS5rZXkudG9TdHJpbmcoKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5WaWV3IGFsbCB7eyBncm91cC50b3RhbE1hdGNoaW5nUm93Q291bnQgfX08L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnIgKm5nSWY9XCIhbGFzdFwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwicy5xdWVyeS5wYWdpbmF0aW9uLnNob3dDb250cm9sc1wiIGNsYXNzPVwicGFnaW5hdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhZ2Utc2l6ZS1jb250cm9sc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXMucmVzdWx0LmlzR3JvdXBlZFwiPlxuICAgICAgICAgIDxzcGFuPiBSZXN1bHRzIHBlciBwYWdlOiA8L3NwYW4+XG4gICAgICAgICAgPHJpdi1zaW1wbGUtc2VsZWN0XG4gICAgICAgICAgICBbc2VsZWN0ZWRPcHRpb25dPVwie1xuICAgICAgICAgICAgICBpZDogcy5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgIHRpdGxlOiBzLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZVNpemUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgdmFsdWU6IHMucXVlcnkucGFnaW5hdGlvbi5wYWdlU2l6ZVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAoc2VsZWN0ZWRPcHRpb25DaGFuZ2UpPVwiXG4gICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdwYWdlU2l6ZUNoYW5nZScsXG4gICAgICAgICAgICAgICAgc2l6ZTogJGV2ZW50Py52YWx1ZSB8fCAyNVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtvcHRpb25Hcm91cHNdPVwicGFnZVNpemVPcHRpb25zXCJcbiAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgID48L3Jpdi1zaW1wbGUtc2VsZWN0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJzLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgPiAwICYmICFzLnJlc3VsdC5pc0dyb3VwZWRcIlxuICAgICAgICBjbGFzcz1cInBhZ2UtZGF0YS1pbmRpY2F0b3JcIlxuICAgICAgPlxuICAgICAgICB7eyBzLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZVJvd1N0YXJ0IHwgcml2TnVtYmVyIH19LXt7XG4gICAgICAgICAgcy5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VSb3dFbmQgfCByaXZOdW1iZXJcbiAgICAgICAgfX1cbiAgICAgICAgb2ZcbiAgICAgICAge3sgcy5yZXN1bHQudG90YWxNYXRjaGluZ1Jvd0NvdW50IHwgcml2TnVtYmVyIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8ZGl2ICpuZ0lmPVwicy5xdWVyeS5wYWdpbmF0aW9uLnNob3dDb250cm9sc1wiIGNsYXNzPVwicGFnaW5hdGlvbi1jb250cm9sc1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgW3ZhcmlhbnRdPVwiJ2Jhc2ljJ1wiXG4gICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgW2ljb25dPVwiJ0Fycm93TGVmdCdcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzLnF1ZXJ5LnBhZ2luYXRpb24ucHJldmlvdXMgPT09IG51bGxcIlxuICAgICAgICAgIChjbGljayk9XCJtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3ByZXZpb3VzUGFnZU5hdmlnYXRlJyB9KVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cInMucXVlcnkucGFnaW5hdGlvbi5wYWdlc1swXSA+IDBcIlxuICAgICAgICAgIGNsYXNzPVwidHJ1bmNhdGVkLXBhZ2VzIGxlZnRcIlxuICAgICAgICA+XG4gICAgICAgICAgJmhlbGxpcDtcbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHBhZ2Ugb2Ygcy5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VzXCJcbiAgICAgICAgICBjbGFzcz1cInBhZ2VcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdlID09PSBzLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAncGFnZUNoYW5nZScsIHBhZ2UgfSlcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcGFnZSArIDEgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHMucXVlcnkucGFnaW5hdGlvbi5wYWdlc1tzLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZXMubGVuZ3RoIC0gMV0gPFxuICAgICAgICAgICAgcy5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VDb3VudCAtIDFcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwidHJ1bmNhdGVkLXBhZ2VzIHJpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgICZoZWxsaXA7XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgIFt2YXJpYW50XT1cIidiYXNpYydcIlxuICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgIFtpY29uXT1cIidBcnJvd1JpZ2h0J1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInMucXVlcnkucGFnaW5hdGlvbi5uZXh0ID09PSBudWxsXCJcbiAgICAgICAgICAoY2xpY2spPVwibWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICduZXh0UGFnZU5hdmlnYXRlJyB9KVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3Jpdi1sb2FkaW5nLWNvdmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvdGFibGUvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvdGFibGUvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjcEMsTUFBTSxPQUFPLGNBQWM7SUFOM0I7UUFxQ1csWUFBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFeEIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ3ZDLDZCQUF3QixHQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3pELENBQUM7UUFtQ0ssb0JBQWUsR0FBNEM7WUFDbEU7Z0JBQ0UsT0FBTyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFD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Z0JBSXpCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxRQUFRO2dCQUl0QixpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsV0FBVztnQkFvSHpCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNNUMsS0FBSztzQkFESixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFRlbXBsYXRlUmVmLFxuICBUcmFja0J5RnVuY3Rpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc3VtIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSaXZTZWxlY3QgfSBmcm9tICcuLi8uLi8uLi9pbnB1dC9zZWxlY3Qvc3RhdGUnO1xuaW1wb3J0IHsgUml2VGFibGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbnR5cGUgUGFnZVNpemVPcHRpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXI7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudDxcbiAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCA9IHsga2V5OiAnJyB9LFxuPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKVxuICBtYW5hZ2VyPzogUml2VGFibGUuTWFuYWdlcjxSLCBDLCBGLCBHPjtcblxuICBAQ29udGVudENoaWxkKCdjZWxsJylcbiAgY2VsbFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8e1xuICAgIHJvdzogUml2VGFibGUuRnVsbFJvdzxSPjtcbiAgICBjb2x1bW46IFJpdlRhYmxlLkZ1bGxDb2x1bW48Qz47XG4gIH0+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ21lbnUnKVxuICBtZW51VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IHJvdzogUml2VGFibGUuRnVsbFJvdzxSPiB9PjtcblxuICBAQ29udGVudENoaWxkKCdzZWxlY3Rpb24nKVxuICBzZWxlY3Rpb25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgc3RhdGU6IFJpdlRhYmxlLkZ1bGxTdGF0ZTxSLCBDLCBGLCBHPiB9PjtcblxuICBAQ29udGVudENoaWxkKCdoZWFkZXInKVxuICBoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgc3RhdGU6IFJpdlRhYmxlLkZ1bGxTdGF0ZTxSLCBDLCBGLCBHPiB9PjtcblxuICBAQ29udGVudENoaWxkKCdzdWJoZWFkZXInKVxuICBzdWJoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHtcbiAgICBzdGF0ZTogUml2VGFibGUuRnVsbFN0YXRlPFIsIEMsIEYsIEc+O1xuICAgIGdyb3VwOiBSaXZUYWJsZS5Sb3dHcm91cDxSLCBHPjtcbiAgfT47XG5cbiAgcmVhZG9ubHkgZGVzdHJveSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcmVhZG9ubHkgY29udGFpbmVyU2l6ZSA9IG5ldyBTdWJqZWN0PERPTVJlY3Q+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbkNhbGxvdXRQb3NpdGlvbjogT2JzZXJ2YWJsZTxET01SZWN0PiA9XG4gICAgdGhpcy5jb250YWluZXJTaXplLnBpcGUoXG4gICAgICBtYXAocmVjdCA9PiBuZXcgRE9NUmVjdChyZWN0LnggKyA0NCwgcmVjdC55IC0gMTIsIDAsIDApKSxcbiAgICApO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLm1hbmFnZXIhLnN0YXRlLCB0aGlzLmNvbnRhaW5lclNpemVdKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSkpXG4gICAgICAuc3Vic2NyaWJlKChbc3RhdGUsIGNvbnRhaW5lclNpemVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyU2l6ZS53aWR0aDtcbiAgICAgICAgY29uc3QgdG90YWxGcm96ZW5XaWR0aCA9IHN1bShcbiAgICAgICAgICBzdGF0ZS5kaXNwbGF5LmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQpLm1hcChjID0+IGMud2lkdGgpLFxuICAgICAgICApO1xuICAgICAgICBpZiAodG90YWxGcm96ZW5XaWR0aCA+IGNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaG93IG1hbnkgY29sdW1ucyBjYW4gYmUgcGlubmVkIHdpdGhvdXQgb3ZlcmZsb3dpbmcuXG4gICAgICAgICAgZm9yIChjb25zdCBbaV0gb2Ygc3RhdGUuZGlzcGxheS5jb2x1bW5zXG4gICAgICAgICAgICAuZmlsdGVyKGMgPT4gYy5waW5uZWQpXG4gICAgICAgICAgICAuZW50cmllcygpKSB7XG4gICAgICAgICAgICBjb25zdCBzbGljZWRGcm96ZW5XaWR0aCA9IHN1bShcbiAgICAgICAgICAgICAgc3RhdGUuZGlzcGxheS5jb2x1bW5zLnNsaWNlKDAsIGkgKyAxKS5tYXAoYyA9PiBjLndpZHRoKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoc2xpY2VkRnJvemVuV2lkdGggPiBjb250YWluZXJXaWR0aCkge1xuICAgICAgICAgICAgICB0aGlzLm1hbmFnZXI/LmFjdGlvbnMubmV4dCh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2NvbHVtbnNGcmVlemVVcFRvQ2hhbmdlJyxcbiAgICAgICAgICAgICAgICBpbmRleDogaSAtIDEsXG4gICAgICAgICAgICAgICAgZnJlZXplOiBpID4gMCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kubmV4dChudWxsKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHBhZ2VTaXplT3B0aW9uczogUml2U2VsZWN0Lk9wdGlvbkdyb3VwPFBhZ2VTaXplT3B0aW9uPltdID0gW1xuICAgIHtcbiAgICAgIG9wdGlvbnM6IFJpdlRhYmxlLnBhZ2VTaXplcy5tYXAocGFnZVNpemUgPT4gKHtcbiAgICAgICAgaWQ6IHBhZ2VTaXplLnRvU3RyaW5nKCksXG4gICAgICAgIHRpdGxlOiBwYWdlU2l6ZS50b1N0cmluZygpLFxuICAgICAgICB2YWx1ZTogcGFnZVNpemUsXG4gICAgICB9KSksXG4gICAgfSxcbiAgXTtcblxuICByZWFkb25seSB0cmFja0J5Um93OiBUcmFja0J5RnVuY3Rpb248Uml2VGFibGUuRnVsbFJvdzxSPj4gPSAoXywgcm93KSA9PlxuICAgIHJvdy5pZDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHRlbXBvcmFyeVdpZHRoczogTWFwPEMsIG51bWJlcj4gPSBuZXcgTWFwKCk7XG4gIHNldFdpZHRoKGNvbHVtbjogQywgd2lkdGg6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAod2lkdGggPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRlbXBvcmFyeVdpZHRoID0gdGhpcy50ZW1wb3JhcnlXaWR0aHMuZ2V0KGNvbHVtbik7XG4gICAgICBpZiAodGVtcG9yYXJ5V2lkdGgpIHtcbiAgICAgICAgdGhpcy5tYW5hZ2VyPy5hY3Rpb25zLm5leHQoe1xuICAgICAgICAgIHR5cGU6ICdjb2x1bW5XaWR0aENoYW5nZScsXG4gICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIHByZWZlcnJlZFdpZHRoOiB0ZW1wb3JhcnlXaWR0aCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnRlbXBvcmFyeVdpZHRocy5kZWxldGUoY29sdW1uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZW1wb3JhcnlXaWR0aHMuc2V0KGNvbHVtbiwgd2lkdGgpO1xuICAgIH1cbiAgfVxuICBnZXRXaWR0aChjb2x1bW46IFJpdlRhYmxlLkZ1bGxDb2x1bW48Qz4pOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnRlbXBvcmFyeVdpZHRocy5oYXMoY29sdW1uLmtleSkpIHtcbiAgICAgIHJldHVybiBNYXRoLm1heCh0aGlzLnRlbXBvcmFyeVdpZHRocy5nZXQoY29sdW1uLmtleSkhLCBjb2x1bW4ubWluV2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY29sdW1uLndpZHRoO1xuICAgIH1cbiAgfVxuXG4gIGRyYWdnZWRDb2x1bW5JZHg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBkcmFnZ2VkT3ZlckNvbHVtbklkeDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgZHJhZ1N0YXJ0KGlkeDogbnVtYmVyKSB7XG4gICAgdGhpcy5kcmFnZ2VkQ29sdW1uSWR4ID0gaWR4O1xuICB9XG5cbiAgZHJhZ092ZXIob250b0lkeDogbnVtYmVyKSB7XG4gICAgdGhpcy5kcmFnZ2VkT3ZlckNvbHVtbklkeCA9IG9udG9JZHg7XG4gIH1cblxuICBkcm9wKG9udG9JZHg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmRyYWdnZWRDb2x1bW5JZHggIT09IG51bGwpIHtcbiAgICAgIHRoaXMubWFuYWdlcj8uYWN0aW9ucy5uZXh0KHtcbiAgICAgICAgdHlwZTogJ2NvbHVtbk9yZGVyQ2hhbmdlJyxcbiAgICAgICAgcHJldmlvdXNJbmRleDogdGhpcy5kcmFnZ2VkQ29sdW1uSWR4LFxuICAgICAgICBuZXdJbmRleDogb250b0lkeCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kcmFnZ2VkT3ZlckNvbHVtbklkeCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKGU6IHVua25vd24pOiBzdHJpbmcge1xuICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHJldHVybiBlLm1lc3NhZ2U7XG4gICAgaWYgKHR5cGVvZiBlID09PSAnc3RyaW5nJykgcmV0dXJuIGU7XG4gICAgaWYgKHR5cGVvZiBlID09PSAnb2JqZWN0JyAmJiBlICE9PSBudWxsKSByZXR1cm4gZS50b1N0cmluZygpO1xuICAgIGVsc2UgcmV0dXJuICdBbiBlcnJvciBvY2N1cnJlZC4nO1xuICB9XG5cbiAgcHJpdmF0ZSBzaGlmdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBrZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5zaGlmdCA9IGV2ZW50LnNoaWZ0S2V5O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAnLCBbJyRldmVudCddKVxuICBrZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMuc2hpZnQgPSBldmVudC5zaGlmdEtleTtcbiAgfVxuXG4gIHNlbGVjdGlvbkNoYW5nZShyb3dJZDogUlsnaWQnXSwgc2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm1hbmFnZXI/LmFjdGlvbnMubmV4dCh7XG4gICAgICB0eXBlOiAncm93U2VsZWN0ZWRDaGFuZ2UnLFxuICAgICAgaWQ6IHJvd0lkLFxuICAgICAgc2VsZWN0ZWQsXG4gICAgICBjb250aWd1b3VzOiB0aGlzLnNoaWZ0LFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGNvbHVtbjogUml2VGFibGUuRnVsbENvbHVtbjxDPikge1xuICAgIGlmIChjb2x1bW4uY2xpY2tQcmV2ZW50RGVmYXVsdCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoY29sdW1uLmNsaWNrU3RvcFByb3BhZ2F0aW9uKSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGlzRXh0ZXJuYWxSb3dMaW5rKFxuICAgIHJvd0xpbms6IFJpdlRhYmxlLlJvd0xpbmssXG4gICk6IHJvd0xpbmsgaXMgUml2VGFibGUuRXh0ZXJuYWxSb3dMaW5rIHtcbiAgICByZXR1cm4gcm93TGluay50eXBlID09PSAnZXh0ZXJuYWwnO1xuICB9XG5cbiAgaXNJbnRlcm5hbFJvd0xpbmsoXG4gICAgcm93TGluazogUml2VGFibGUuUm93TGluayxcbiAgKTogcm93TGluayBpcyBSaXZUYWJsZS5JbnRlcm5hbFJvd0xpbmsge1xuICAgIHJldHVybiByb3dMaW5rLnR5cGUgPT09ICdpbnRlcm5hbCc7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJtYW5hZ2VyPy5zdGF0ZSB8IGFzeW5jOyBsZXQgc1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uQ2FsbG91dFBvc2l0aW9uIHwgYXN5bmM7IGxldCBwb3NpdGlvblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzLnNlbGVjdGlvbi5zZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3Rpb25UZW1wbGF0ZVwiPlxuICAgICAgPHJpdi1jYWxsb3V0XG4gICAgICAgICpyaXYtb3ZlcmxheVxuICAgICAgICBbYW5jaG9yXT1cInBvc2l0aW9uXCJcbiAgICAgICAgW2lzTW9kYWxdPVwiZmFsc2VcIlxuICAgICAgICBbdGhlbWVdPVwiJ2xpZ2h0J1wiXG4gICAgICAgIFtzaG93Q2FyZXRdPVwiZmFsc2VcIlxuICAgICAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ3RvcC1yaWdodCdcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3Rpb25UZW1wbGF0ZTsgY29udGV4dDogeyBzdGF0ZTogcyB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9yaXYtY2FsbG91dD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxyaXYtbG9hZGluZy1jb3ZlclxuICAgIFtsb2FkaW5nXT1cInMubG9hZC5sb2FkaW5nXCJcbiAgICBbZXJyb3JNZXNzYWdlXT1cInMubG9hZC5lcnJvciA/IGdldEVycm9yTWVzc2FnZShzLmxvYWQuZXJyb3IpIDogdW5kZWZpbmVkXCJcbiAgPlxuICAgIDxoZWFkZXIgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7IHN0YXRlOiBzIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvaGVhZGVyPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY29udGFpbmVyXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2NvbnRhaW5lci11bmdyb3VwZWQnOiAhcy5yZXN1bHQuaXNHcm91cGVkLFxuICAgICAgICAnaGFzLWhlYWRlcic6ICFzLnJlc3VsdC5pc0dyb3VwZWQgJiYgaGVhZGVyVGVtcGxhdGVcbiAgICAgIH1cIlxuICAgICAgKHJpdkNsaWVudFNpemUpPVwiY29udGFpbmVyU2l6ZS5uZXh0KCRldmVudClcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgbGV0IGdyb3VwIG9mIHMucmVzdWx0LmlzR3JvdXBlZFxuICAgICAgICAgICAgPyBzLnJlc3VsdC5yb3dHcm91cHNcbiAgICAgICAgICAgIDogW3MucmVzdWx0LnJvd3NBc0dyb3VwXTtcbiAgICAgICAgICBsZXQgbGFzdCA9IGxhc3RcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBzdWJoZWFkZXJUZW1wbGF0ZSB8fCBudWxsO1xuICAgICAgICAgICAgY29udGV4dDogeyBzdGF0ZTogcywgZ3JvdXAgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7ICdzdWJjb250YWluZXItZ3JvdXBlZCc6IHMucmVzdWx0LmlzR3JvdXBlZCB9XCI+XG4gICAgICAgICAgPHRhYmxlPlxuICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiISFzLnNlbGVjdGlvbi5hbGxvd1NlbGVjdGlvblwiIGNsYXNzPVwic2VsZWN0aW9uLWhlYWRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICBzLnNlbGVjdGlvbi5hbGxvd1NlbGVjdGlvbiAhPT0gJ2luZGl2aWR1YWwnICYmXG4gICAgICAgICAgICAgICAgICAgICAgcy5zZWxlY3Rpb24uYWxsb3dTZWxlY3Rpb24gPT09IHRydWVcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja2JveC13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXMucmVzdWx0LmlzR3JvdXBlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInMuc2VsZWN0aW9uLmlzQWxsU2VsZWN0ZWQgPT09IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcy5zZWxlY3Rpb24uaXNBbGxTZWxlY3RlZCA9PT0gJ2luZGV0ZXJtaW5hdGUnXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ2FsbFNlbGVjdGVkQ2hhbmdlJyB9KVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48L3Jpdi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicy5yZXN1bHQuaXNHcm91cGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ3JvdXAuc2VsZWN0ZWQgPT09IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImdyb3VwLnNlbGVjdGVkID09PSAnaW5kZXRlcm1pbmF0ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZ3JvdXBTZWxlY3Rpb25DaGFuZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiBncm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9yaXYtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBzLmRpc3BsYXkuY29sdW1uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MucGlubmVkXT1cImNvbHVtbi5waW5uZWRcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiY29sdW1uLmxlZnRcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImdldFdpZHRoKGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBkcm9wcGFibGU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwiZHJhZ1N0YXJ0KGkpXCJcbiAgICAgICAgICAgICAgICAgIChkcmFnZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgICAgKGRyYWdvdmVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBkcmFnT3ZlcihpKVwiXG4gICAgICAgICAgICAgICAgICAoZHJvcCk9XCJkcm9wKGkpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItbGVmdF09XCJcbiAgICAgICAgICAgICAgICAgICAgZHJhZ2dlZE92ZXJDb2x1bW5JZHggPT09IGkgJiZcbiAgICAgICAgICAgICAgICAgICAgZHJhZ2dlZENvbHVtbklkeCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICBkcmFnZ2VkQ29sdW1uSWR4ID4gaVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItcmlnaHRdPVwiXG4gICAgICAgICAgICAgICAgICAgIGRyYWdnZWRPdmVyQ29sdW1uSWR4ID09PSBpICYmXG4gICAgICAgICAgICAgICAgICAgIGRyYWdnZWRDb2x1bW5JZHggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgICAgZHJhZ2dlZENvbHVtbklkeCA8IGlcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICFjb2x1bW4ub3JkZXJhYmxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWNvbHVtbi5maWx0ZXJhYmxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgIXMuZGlzcGxheS5jb2x1bW5zQXJlRnJlZXphYmxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgIXMuZGlzcGxheS5jb2x1bW5zQXJlSGlkZWFibGVcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5sZWZ0XT1cImNvbHVtbi5hbGlnbm1lbnQgPT09ICdsZWZ0J1wiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5yaWdodF09XCJjb2x1bW4uYWxpZ25tZW50ID09PSAncmlnaHQnXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgcy5kaXNwbGF5LmNvbHVtbk5hbWVNYXAuZ2V0KGNvbHVtbi5rZXkpIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxyaXYtbWVudVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5vcmRlcmFibGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uZmlsdGVyYWJsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgIHMuZGlzcGxheS5jb2x1bW5zQXJlRnJlZXphYmxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgcy5kaXNwbGF5LmNvbHVtbnNBcmVIaWRlYWJsZVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RyaWdnZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5sZWZ0XT1cImNvbHVtbi5hbGlnbm1lbnQgPT09ICdsZWZ0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MucmlnaHRdPVwiY29sdW1uLmFsaWdubWVudCA9PT0gJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInMucXVlcnkub3JkZXI/LmNvbHVtbiA9PT0gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcy5kaXNwbGF5LmNvbHVtbk5hbWVNYXAuZ2V0KGNvbHVtbi5rZXkpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMucXVlcnkub3JkZXI/LmRpcmVjdGlvbiA9PT0gJ2Rlc2MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ0Fycm93RG93bidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnQXJyb3dVcCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8cml2LXRhYmxlLWhlYWRlci1yZXNpemUtaGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ1Jlc2l6ZSk9XCJzZXRXaWR0aChjb2x1bW4ua2V5LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9yaXYtdGFibGUtaGVhZGVyLXJlc2l6ZS1oYW5kbGU+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ub3JkZXJhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnF1ZXJ5Lm9yZGVyPy5jb2x1bW4gPT09IGNvbHVtbi5rZXkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnF1ZXJ5Lm9yZGVyPy5kaXJlY3Rpb24gPT09ICdhc2MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByaXYtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdvcmRlckNoYW5nZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAnYXNjJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBhc2NlbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInMucXVlcnkub3JkZXI/LmNvbHVtbiA9PT0gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByaXYtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdvcmRlckNoYW5nZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmUgc29ydFxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5xdWVyeS5vcmRlcj8uY29sdW1uID09PSBjb2x1bW4ua2V5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5xdWVyeS5vcmRlcj8uZGlyZWN0aW9uID09PSAnZGVzYydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpdi1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ29yZGVyQ2hhbmdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246ICdkZXNjJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBkZXNjZW5kaW5nXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8cml2LW1lbnUtZGl2aWRlclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLm9yZGVyYWJsZSAmJiBjb2x1bW4uZmlsdGVyYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgID48L3Jpdi1tZW51LWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi5maWx0ZXJhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICByaXYtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2ZpbHRlckFkZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbktleTogY29sdW1uLmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgQWRkIGEgZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8cml2LW1lbnUtZGl2aWRlclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY29sdW1uLm9yZGVyYWJsZSB8fCBjb2x1bW4uZmlsdGVyYWJsZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChzLmRpc3BsYXkuY29sdW1uc0FyZUZyZWV6YWJsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLmRpc3BsYXkuY29sdW1uc0FyZUhpZGVhYmxlKVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48L3Jpdi1tZW51LWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzLmRpc3BsYXkuY29sdW1uc0FyZUZyZWV6YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbHVtbi5waW5uZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcml2LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdjb2x1bW5zRnJlZXplVXBUb0NoYW5nZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZXplOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZyZWV6ZSB1cCB0byBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi5waW5uZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcml2LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdjb2x1bW5zRnJlZXplVXBUb0NoYW5nZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZXplOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBVbi1mcmVlemUgY29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicy5kaXNwbGF5LmNvbHVtbnNBcmVIaWRlYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcml2LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdjb2x1bW5FbmFibGVkQ2hhbmdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgSGlkZSBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L3Jpdi1tZW51PlxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwibWVudVRlbXBsYXRlXCIgY2xhc3M9XCJtZW51LWhlYWRcIj48L3RoPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwicy5yZXN1bHQudG90YWxNYXRjaGluZ1Jvd0NvdW50ID4gMDsgZWxzZSBlbXB0eVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2YgZ3JvdXAucm93c1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyb3dCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcy5zZWxlY3Rpb24uYWxsb3dTZWxlY3Rpb24gPT09IHRydWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHMuc2VsZWN0aW9uLmFsbG93U2VsZWN0aW9uID09PSAnaW5kaXZpZHVhbCdcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0aW9uLWJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tib3gtd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cml2LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpZGVudGlmaWVyXT1cIidyaXYtdGFibGUtc2VsZWN0aW9uLScgKyByb3cuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicm93LnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNlbGVjdGlvbkNoYW5nZShyb3cuaWQsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvcml2LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygcy5kaXNwbGF5LmNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5waW5uZWRdPVwiY29sdW1uLnBpbm5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFkdmFuY2VkXT1cImNvbHVtbi5kYXRhVHlwZSA9PT0gJ2FkdmFuY2VkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiY29sdW1uLmxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50ZXh0LWFsaWduXT1cImNvbHVtbi5hbGlnbm1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQsIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFRlbXBsYXRlIHx8IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgcm93OiByb3csIGNvbHVtbjogY29sdW1uIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnVUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZW51LWJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudVRlbXBsYXRlIHx8IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgcm93OiByb3cgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5yb3dMaW5rOyBsZXQgcmxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzRXh0ZXJuYWxSb3dMaW5rKHJsKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwicmwuaHJlZlwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3ctbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmdyYXllZF09XCJzLmRpc3BsYXkucm93c0FyZUdyYXllZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicm93Qm9keVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0ludGVybmFsUm93TGluayhybClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cInJsLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJybC5xdWVyeVBhcmFtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwicmwucXVlcnlQYXJhbXNIYW5kbGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3ctbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmdyYXllZF09XCJzLmRpc3BsYXkucm93c0FyZUdyYXllZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicm93Qm9keVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFyb3cucm93TGlua1wiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ncmF5ZWRdPVwicy5kaXNwbGF5LnJvd3NBcmVHcmF5ZWRcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicm93Qm9keVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHk+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwicy5kaXNwbGF5LmNvbHVtbnMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxyaXYtemVyby1zdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicy5kaXNwbGF5Lnplcm9TdGF0ZU1lc3NhZ2U7IGxldCBtZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcml2LXplcm8tc3RhdGU+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmb290ZXJcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBzLnJlc3VsdC5pc0dyb3VwZWQgJiZcbiAgICAgICAgICAgIGdyb3VwLnRvdGFsTWF0Y2hpbmdSb3dDb3VudCA+IHMucXVlcnkuZ3JvdXBpbmcuY291bnRQZXJHcm91cCAmJlxuICAgICAgICAgICAgZ3JvdXAucm93cy5sZW5ndGggPT09IHMucXVlcnkuZ3JvdXBpbmcuY291bnRQZXJHcm91cFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgcml2TGlua1xuICAgICAgICAgICAgY2xhc3M9XCJmb290ZXItbGlua1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICd2aWV3TW9yZUtleUNoYW5nZScsXG4gICAgICAgICAgICAgICAgdmlld01vcmVLZXk6IGdyb3VwLmdyb3VwRGF0YS5rZXkudG9TdHJpbmcoKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5WaWV3IGFsbCB7eyBncm91cC50b3RhbE1hdGNoaW5nUm93Q291bnQgfX08L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnIgKm5nSWY9XCIhbGFzdFwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwicy5xdWVyeS5wYWdpbmF0aW9uLnNob3dDb250cm9sc1wiIGNsYXNzPVwicGFnaW5hdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhZ2Utc2l6ZS1jb250cm9sc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXMucmVzdWx0LmlzR3JvdXBlZFwiPlxuICAgICAgICAgIDxzcGFuPiBSZXN1bHRzIHBlciBwYWdlOiA8L3NwYW4+XG4gICAgICAgICAgPHJpdi1zaW1wbGUtc2VsZWN0XG4gICAgICAgICAgICBbc2VsZWN0ZWRPcHRpb25dPVwie1xuICAgICAgICAgICAgICBpZDogcy5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgIHRpdGxlOiBzLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZVNpemUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgdmFsdWU6IHMucXVlcnkucGFnaW5hdGlvbi5wYWdlU2l6ZVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAoc2VsZWN0ZWRPcHRpb25DaGFuZ2UpPVwiXG4gICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdwYWdlU2l6ZUNoYW5nZScsXG4gICAgICAgICAgICAgICAgc2l6ZTogJGV2ZW50Py52YWx1ZSB8fCAyNVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtvcHRpb25Hcm91cHNdPVwicGFnZVNpemVPcHRpb25zXCJcbiAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgID48L3Jpdi1zaW1wbGUtc2VsZWN0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJzLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgPiAwICYmICFzLnJlc3VsdC5pc0dyb3VwZWRcIlxuICAgICAgICBjbGFzcz1cInBhZ2UtZGF0YS1pbmRpY2F0b3JcIlxuICAgICAgPlxuICAgICAgICB7eyBzLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZVJvd1N0YXJ0IHwgcml2TnVtYmVyIH19LXt7XG4gICAgICAgICAgcy5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VSb3dFbmQgfCByaXZOdW1iZXJcbiAgICAgICAgfX1cbiAgICAgICAgb2ZcbiAgICAgICAge3sgcy5yZXN1bHQudG90YWxNYXRjaGluZ1Jvd0NvdW50IHwgcml2TnVtYmVyIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8ZGl2ICpuZ0lmPVwicy5xdWVyeS5wYWdpbmF0aW9uLnNob3dDb250cm9sc1wiIGNsYXNzPVwicGFnaW5hdGlvbi1jb250cm9sc1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgW3ZhcmlhbnRdPVwiJ2Jhc2ljJ1wiXG4gICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgW2ljb25dPVwiJ0Fycm93TGVmdCdcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzLnF1ZXJ5LnBhZ2luYXRpb24ucHJldmlvdXMgPT09IG51bGxcIlxuICAgICAgICAgIChjbGljayk9XCJtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3ByZXZpb3VzUGFnZU5hdmlnYXRlJyB9KVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cInMucXVlcnkucGFnaW5hdGlvbi5wYWdlc1swXSA+IDBcIlxuICAgICAgICAgIGNsYXNzPVwidHJ1bmNhdGVkLXBhZ2VzIGxlZnRcIlxuICAgICAgICA+XG4gICAgICAgICAgJmhlbGxpcDtcbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHBhZ2Ugb2Ygcy5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VzXCJcbiAgICAgICAgICBjbGFzcz1cInBhZ2VcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdlID09PSBzLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAncGFnZUNoYW5nZScsIHBhZ2UgfSlcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcGFnZSArIDEgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHMucXVlcnkucGFnaW5hdGlvbi5wYWdlc1tzLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZXMubGVuZ3RoIC0gMV0gPFxuICAgICAgICAgICAgcy5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VDb3VudCAtIDFcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwidHJ1bmNhdGVkLXBhZ2VzIHJpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgICZoZWxsaXA7XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgIFt2YXJpYW50XT1cIidiYXNpYydcIlxuICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgIFtpY29uXT1cIidBcnJvd1JpZ2h0J1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInMucXVlcnkucGFnaW5hdGlvbi5uZXh0ID09PSBudWxsXCJcbiAgICAgICAgICAoY2xpY2spPVwibWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICduZXh0UGFnZU5hdmlnYXRlJyB9KVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3Jpdi1sb2FkaW5nLWNvdmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|