@experteam-mx/ngx-table 2.3.35 → 2.3.36
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.
|
@@ -185,6 +185,9 @@ export class NgxTableComponent {
|
|
|
185
185
|
actions: this.configsDefault.actions,
|
|
186
186
|
...this.configs
|
|
187
187
|
};
|
|
188
|
+
if (!this.configs.labels) {
|
|
189
|
+
this.configs.labels = {};
|
|
190
|
+
}
|
|
188
191
|
if (!this.configs.labels.tooltips) {
|
|
189
192
|
this.configs.labels.tooltips = {};
|
|
190
193
|
}
|
|
@@ -360,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImpor
|
|
|
360
363
|
type: ViewChild,
|
|
361
364
|
args: ['selectAll']
|
|
362
365
|
}] } });
|
|
363
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10YWJsZS9zcmMvbGliL25neC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGFibGUvc3JjL2xpYi9uZ3gtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBcUIsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWlCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVFsSCxNQUFNLE9BQU8saUJBQWlCO0lBMkg1QixZQUNTLGdCQUFpQztRQUFqQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBM0hqQyxZQUFPLEdBQVUsRUFBRSxDQUFDO1FBQzdCLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBRWpCLGNBQVMsR0FBVSxFQUFFLENBQUM7UUFDL0Isb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFHNUIsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFFZCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUlsRCxtQkFBYyxHQUFRO1lBQ3BCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixJQUFJLEVBQUUsQ0FBQztZQUNQLFFBQVEsRUFBRSxFQUFFO1lBQ1osY0FBYyxFQUFFLENBQUM7WUFDakIsU0FBUyxFQUFFLFFBQVE7WUFDbkIsTUFBTSxFQUFFO2dCQUNOLFdBQVcsRUFBRSxvQkFBb0I7Z0JBQ2pDLFFBQVEsRUFBQztvQkFDUCxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRO2lCQUNsQzthQUNGO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLE1BQU0sRUFBRSxLQUFLO2dC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LENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDO2FBQ3RFO1lBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7Z0JBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO2FBQ3hFO1lBRUQsSUFBSSxHQUFHLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRTtnQkFDbkUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7YUFDcEU7U0FDRjtJQUNILENBQUM7OzhHQWxZVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixnVUNSOUIsNndkQXFKQTsyRkQ3SWEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLFdBQVc7c0dBS1osT0FBTztzQkFBZixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUdJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFFaUIsY0FBYztzQkFBckMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdCwgT25DaGFuZ2VzLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5neFRhYmxlU2VydmljZSB9IGZyb20gJy4vbmd4LXRhYmxlLnNlcnZpY2UnXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25neC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LXRhYmxlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE5neFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIGhlYWRSb3c6IGFueVtdID0gW107XHJcbiAgaGVhZFJvd1JlbmRlcjogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcmVnaXN0ZXJzOiBhbnlbXSA9IFtdO1xyXG4gIHJlZ2lzdGVyc1JlbmRlcjogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgY29uZmlnczogYW55O1xyXG4gIGNvbmZpZ3NSZW5kZXI6IGFueSA9IHt9O1xyXG5cclxuICBAT3V0cHV0KCkgY2hhbmdlUGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0PigpO1xyXG4gIEBPdXRwdXQoKSBjbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEFsbCcpIGNoZWNrU2VsZWN0QWxsOiBhbnk7XHJcblxyXG4gIGNvbmZpZ3NEZWZhdWx0OiBhbnkgPSB7XHJcbiAgICB0aXRsZVRhYmxlOiBudWxsLFxyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBwYWdpbmF0aW9uQWN0aXZlOiBmYWxzZSxcclxuICAgIHBhZ2U6IDEsXHJcbiAgICBwYWdlU2l6ZTogMTUsXHJcbiAgICBjb2xsZWN0aW9uU2l6ZTogMCxcclxuICAgIHRhYmxlU2l6ZTogJ25vcm1hbCcsXHJcbiAgICBsYWJlbHM6IHtcclxuICAgICAgbm9SZWdpc3RlcnM6ICdSZWdpc3RlcnMgbm8gZm91bmQnLFxyXG4gICAgICB0b29sdGlwczp7XHJcbiAgICAgICAgLi4udGhpcy5fTmd4VGFibGVTZXJ2aWNlLnRvb2x0aXBzXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzZWFyY2g6IHtcclxuICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgdGV4dFNlYXJjaDogJycsXHJcbiAgICAgIHBsYWNlaG9sZGVyU2VhcmNoOiAnU2VhcmNoJ1xyXG4gICAgfSxcclxuICAgIG9yZGVyOiB7XHJcbiAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgIGZpZWxkOiBudWxsLFxyXG4gICAgICBhc2M6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgYWN0aW9uczoge1xyXG4gICAgICBhZGQ6IHtcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGxhYmVsSHRtbDogbnVsbFxyXG4gICAgICB9LFxyXG4gICAgICBzZWxlY3Q6IHtcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGxhYmVsSHRtbDogbnVsbFxyXG4gICAgICB9LFxyXG4gICAgICBlZGl0OiB7XHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBsYWJlbEh0bWw6IG51bGwsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlbGV0ZToge1xyXG4gICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgbGFiZWxIdG1sOiBudWxsLFxyXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBlbmFibGVkOiB7XHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBsYWJlbEh0bWw6IG51bGwsXHJcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICAgIH0sXHJcbiAgICAgIGRpc2FibGVkOiB7XHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBsYWJlbEh0bWw6IG51bGwsXHJcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICAgIH0sXHJcbiAgICAgIGxvZ2luQXM6IHtcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGxhYmVsSHRtbDogbnVsbCxcclxuICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2VcclxuICAgICAgfSxcclxuICAgICAgY2hlY2s6IHtcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBjaGVja2VkOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBlbmFibGVTZWxlY3RlZDoge1xyXG4gICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgbGFiZWxIdG1sOiBudWxsLFxyXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlXHJcbiAgICAgIH0sXHJcbiAgICAgIGRpc2FibGVTZWxlY3RlZDoge1xyXG4gICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgbGFiZWxIdG1sOiBudWxsLFxyXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgY29sSGVhZDoge1xyXG4gICAgICBsYWJlbDogbnVsbCxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGZpZWxkOiBudWxsLFxyXG4gICAgICBvcmRlcjoge1xyXG4gICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgYXNjOiBmYWxzZVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgZW5hYmxlQWxsOiB7XHJcbiAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICBsYWJlbEh0bWw6ICdFbmFibGUgYWxsJ1xyXG4gICAgfSxcclxuICAgIGRpc2FibGVBbGw6IHtcclxuICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgZGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIGxhYmVsSHRtbDogJ0Rpc2FibGUgYWxsJ1xyXG4gICAgfSxcclxuICAgIHNhdmVDaGFuZ2VzOiB7XHJcbiAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICBsYWJlbEh0bWw6ICdTYXZlIGNoYW5nZXMnLFxyXG4gICAgICBsb2FkaW5nOiBmYWxzZVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGRhdGFJZDogYW55XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIF9OZ3hUYWJsZVNlcnZpY2U6IE5neFRhYmxlU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5kYXRhSWQgPSBfTmd4VGFibGVTZXJ2aWNlLmRhdGFJZFxyXG4gIH1cclxuXHJcbiAgb2JqZWN0S2V5cyhyZWdpc3RlcnM6IGFueSkge1xyXG4gICAgbGV0IHJlZ2lzdHJvcyA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGtleSBvZiBPYmplY3Qua2V5cyhyZWdpc3RlcnMpKSB7XHJcbiAgICAgIGlmIChrZXkgIT0gJ2NvbmZpZ1JlZ2lzdGVyJykge1xyXG4gICAgICAgIHJlZ2lzdHJvcy5wdXNoKGtleSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVnaXN0cm9zO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5jb25maWdzID0gdGhpcy5jb25maWdzUmVuZGVyO1xyXG5cclxuICAgIHRoaXMuY2hhbmdlUGFnZS5lbWl0KHtcclxuICAgICAgLi4udGhpcy5jb25maWdzUmVuZGVyXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uS2V5U2VhcmNoKCkge1xyXG4gICAgdGhpcy5jb25maWdzID0gdGhpcy5jb25maWdzUmVuZGVyO1xyXG5cclxuICAgIHRoaXMuY2hhbmdlUGFnZS5lbWl0KHtcclxuICAgICAgLi4udGhpcy5jb25maWdzUmVuZGVyXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUmVzdGFyU2VhY2goKSB7XHJcbiAgICB0aGlzLmNvbmZpZ3NSZW5kZXIuc2VhcmNoLnRleHRTZWFyY2ggPSAnJztcclxuICAgIHRoaXMuY29uZmlncyA9IHRoaXMuY29uZmlnc1JlbmRlcjtcclxuXHJcbiAgICB0aGlzLmNoYW5nZVBhZ2UuZW1pdCh7XHJcbiAgICAgIC4uLnRoaXMuY29uZmlnc1JlbmRlclxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkNsaWNrKG9iamVjdDogYW55KSB7XHJcbiAgICBvYmplY3QuZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBvYmplY3QuZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIHRoaXMuY2xpY2tFdmVudC5lbWl0KHtcclxuICAgICAgdHlwZTogb2JqZWN0LnR5cGUsXHJcbiAgICAgIGRhdGE6IG9iamVjdC5kYXRhLFxyXG4gICAgICBpbmRleDogb2JqZWN0LmluZGV4XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIHRoaXMuaGVhZFJvd1JlbmRlciA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGhlYWQgb2YgdGhpcy5oZWFkUm93KSB7XHJcbiAgICAgIHRoaXMuaGVhZFJvd1JlbmRlci5wdXNoKHtcclxuICAgICAgICAuLi50aGlzLmNvbmZpZ3NEZWZhdWx0LmNvbEhlYWQsXHJcbiAgICAgICAgLi4uaGVhZCxcclxuICAgICAgICBvcmRlcjoge1xyXG4gICAgICAgICAgLi4udGhpcy5jb25maWdzRGVmYXVsdC5jb2xIZWFkLm9yZGVyLFxyXG4gICAgICAgICAgLi4uaGVhZC5vcmRlclxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb25maWdzUmVuZGVyID0ge1xyXG4gICAgICB0aXRsZVRhYmxlOiB0aGlzLmNvbmZpZ3NEZWZhdWx0LnRpdGxlVGFibGUsXHJcbiAgICAgIGxvYWRpbmc6IHRoaXMuY29uZmlnc0RlZmF1bHQubG9hZGluZyxcclxuICAgICAgcGFnaW5hdGlvbkFjdGl2ZTogdGhpcy5jb25maWdzRGVmYXVsdC5wYWdpbmF0aW9uQWN0aXZlLFxyXG4gICAgICBwYWdlOiB0aGlzLmNvbmZpZ3NEZWZhdWx0LnBhZ2UsXHJcbiAgICAgIHBhZ2VTaXplOiB0aGlzLmNvbmZpZ3NEZWZhdWx0LnBhZ2VTaXplLFxyXG4gICAgICBjb2xsZWN0aW9uU2l6ZTogdGhpcy5jb25maWdzRGVmYXVsdC5jb2xsZWN0aW9uU2l6ZSxcclxuICAgICAgdGFibGVTaXplOiB0aGlzLmNvbmZpZ3NEZWZhdWx0LnRhYmxlU2l6ZSxcclxuICAgICAgbGFiZWxzOiB0aGlzLmNvbmZpZ3NEZWZhdWx0LmxhYmVscyxcclxuICAgICAgc2VhcmNoOiB0aGlzLmNvbmZpZ3NEZWZhdWx0LnNlYXJjaCxcclxuICAgICAgb3JkZXI6IHRoaXMuY29uZmlnc0RlZmF1bHQub3JkZXIsXHJcbiAgICAgIGFjdGlvbnM6IHRoaXMuY29uZmlnc0RlZmF1bHQuYWN0aW9ucyxcclxuICAgICAgLi4udGhpcy5jb25maWdzXHJcbiAgICB9O1xyXG5cclxuICAgIGlmKCAhdGhpcy5jb25maWdzLmxhYmVscy50b29sdGlwcyApe1xyXG4gICAgICB0aGlzLmNvbmZpZ3MubGFiZWxzLnRvb2x0aXBzID0ge31cclxuICAgIH1cclxuXHJcbiAgICBpZiggIXRoaXMuY29uZmlncy5sYWJlbHMudG9vbHRpcHMuY2xlYXJTZWFyY2ggKXtcclxuICAgICAgdGhpcy5jb25maWdzLmxhYmVscy50b29sdGlwcy5jbGVhclNlYXJjaCA9ICcnXHJcbiAgICB9XHJcbiAgICBpZiggdGhpcy5jb25maWdzLmxhYmVscy50b29sdGlwcy5jbGVhclNlYXJjaCA9PSAnJyB8fCB0aGlzLmNvbmZpZ3NEZWZhdWx0LmxhYmVscy50b29sdGlwcy5jbGVhclNlYXJjaCAhPSB0aGlzLl9OZ3hUYWJsZVNlcnZpY2UudG9vbHRpcHMuY2xlYXJTZWFyY2ggKXtcclxuICAgICAgdGhpcy5jb25maWdzUmVuZGVyLmxhYmVscy50b29sdGlwcy5jbGVhclNlYXJjaCA9IHRoaXMuX05neFRhYmxlU2VydmljZS50b29sdGlwcy5jbGVhclNlYXJjaFxyXG4gICAgICB0aGlzLmNvbmZpZ3NEZWZhdWx0LmxhYmVscy50b29sdGlwcy5jbGVhclNlYXJjaCA9IHRoaXMuX05neFRhYmxlU2VydmljZS50b29sdGlwcy5jbGVhclNlYXJjaFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0Q29uZmlnc0RlZmF1bHQoJ2VuYWJsZUFsbCcpO1xyXG4gICAgdGhpcy5zZXRDb25maWdzRGVmYXVsdCgnZGlzYWJsZUFsbCcpO1xyXG4gICAgdGhpcy5zZXRDb25maWdzRGVmYXVsdCgnc2F2ZUNoYW5nZXMnKTtcclxuXHJcbiAgICB0aGlzLnJlZ2lzdGVyc1JlbmRlciA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IHJlZ2lzdGVyIG9mIHRoaXMucmVnaXN0ZXJzKSB7XHJcbiAgICAgIHRoaXMucmVnaXN0ZXJzUmVuZGVyLnB1c2goe1xyXG4gICAgICAgIC4uLnJlZ2lzdGVyLFxyXG4gICAgICAgIGNvbmZpZ1JlZ2lzdGVyOiB7XHJcbiAgICAgICAgICBhY3Rpb25zOiB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuY29uZmlnc1JlbmRlci5hY3Rpb25zLFxyXG4gICAgICAgICAgICBsb2dpbkFzOiB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5jb25maWdzUmVuZGVyLmFjdGlvbnMubG9naW5Bc1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjaGVjazoge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuY29uZmlnc1JlbmRlci5hY3Rpb25zLmNoZWNrXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC4uLnJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0b3BQcm9wYWdhdGlvbihlOiBhbnkpIHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RBbGwoKSB7XHJcbiAgICB0aGlzLmNoZWNrU2VsZWN0QWxsLm5hdGl2ZUVsZW1lbnQuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jaGVja1NlbGVjdEFsbC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgIGxldCBjb250Q2hlY2sgPSB0aGlzLmdldFNlbGVjdGVkUGljZXMoKTtcclxuXHJcbiAgICBsZXQgcmVnaXN0ZXJDaGVja3NFbmFibGVkID0gdGhpcy5yZWdpc3RlcnNSZW5kZXIuZmlsdGVyKChlbGVtZW50KT0+e1xyXG4gICAgICByZXR1cm4gIWVsZW1lbnQuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5kaXNhYmxlZCAmJiBlbGVtZW50LmNvbmZpZ1JlZ2lzdGVyLmFjdGlvbnMuY2hlY2suYWN0aXZlXHJcbiAgICB9KVxyXG5cclxuICAgIGlmIChyZWdpc3RlckNoZWNrc0VuYWJsZWQubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZWdpc3RlckNoZWNrc0VuYWJsZWQubGVuZ3RoID09IGNvbnRDaGVjaykge1xyXG4gICAgICB0aGlzLmNoZWNrU2VsZWN0QWxsLm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoY29udENoZWNrICE9IDApIHtcclxuICAgICAgICB0aGlzLmNoZWNrU2VsZWN0QWxsLm5hdGl2ZUVsZW1lbnQuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uQWN0aW9uQ2xpY2soe1xyXG4gICAgICB0eXBlOiAnY2hlY2tlZCcsXHJcbiAgICAgIGRhdGE6IHRoaXMuY2hlY2tlZFJlZ2lzdGVycygpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkUGljZXMoKSB7XHJcbiAgICBsZXQgY29udENoZWNrID0gMDtcclxuICAgIGxldCByZWdpc3RlckNoZWNrc0VuYWJsZWQgPSB0aGlzLnJlZ2lzdGVyc1JlbmRlci5maWx0ZXIoKGVsZW1lbnQpPT57XHJcbiAgICAgIHJldHVybiAhZWxlbWVudC5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmRpc2FibGVkICYmIGVsZW1lbnQuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5hY3RpdmVcclxuICAgIH0pXHJcblxyXG4gICAgZm9yIChsZXQgcmVnaXN0ZXIgb2YgcmVnaXN0ZXJDaGVja3NFbmFibGVkKSB7XHJcbiAgICAgIGNvbnRDaGVjayArPSAocmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5jaGVja2VkID8gMSA6IDApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb250Q2hlY2s7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZVNlbGVjdEFsbCgpIHtcclxuICAgIGxldCByZWdpc3RlckNoZWNrc0VuYWJsZWQgPSB0aGlzLnJlZ2lzdGVyc1JlbmRlci5maWx0ZXIoKGVsZW1lbnQpPT57XHJcbiAgICAgIHJldHVybiAhZWxlbWVudC5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmRpc2FibGVkICYmIGVsZW1lbnQuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5hY3RpdmVcclxuICAgIH0pXHJcbiAgICBpZiAodGhpcy5jaGVja1NlbGVjdEFsbC5uYXRpdmVFbGVtZW50LmNoZWNrZWQpIHtcclxuICAgICAgZm9yIChsZXQgcmVnaXN0ZXIgb2YgcmVnaXN0ZXJDaGVja3NFbmFibGVkKSB7XHJcbiAgICAgICAgcmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChsZXQgcmVnaXN0ZXIgb2YgcmVnaXN0ZXJDaGVja3NFbmFibGVkKSB7XHJcbiAgICAgICAgcmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uQWN0aW9uQ2xpY2soe1xyXG4gICAgICB0eXBlOiAnY2hlY2tlZCcsXHJcbiAgICAgIGRhdGE6IHRoaXMuY2hlY2tlZFJlZ2lzdGVycygpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNoZWNrZWRSZWdpc3RlcnMoKSB7XHJcbiAgICBsZXQgY2hlY2tlZFJlZ2lzdGVyID0gW107XHJcbiAgICBsZXQgcmVnaXN0ZXJDaGVja3NFbmFibGVkID0gdGhpcy5yZWdpc3RlcnNSZW5kZXIuZmlsdGVyKChlbGVtZW50KT0+e1xyXG4gICAgICByZXR1cm4gIWVsZW1lbnQuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5kaXNhYmxlZCAmJiBlbGVtZW50LmNvbmZpZ1JlZ2lzdGVyLmFjdGlvbnMuY2hlY2suYWN0aXZlXHJcbiAgICB9KVxyXG5cclxuICAgIGZvciAobGV0IHJlZ2lzdGVyIG9mIHJlZ2lzdGVyQ2hlY2tzRW5hYmxlZCkge1xyXG4gICAgICBpZiAocmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5jaGVja2VkKSB7XHJcbiAgICAgICAgY2hlY2tlZFJlZ2lzdGVyLnB1c2goe1xyXG4gICAgICAgICAgLi4ucmVnaXN0ZXJcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjaGVja2VkUmVnaXN0ZXI7XHJcbiAgfVxyXG5cclxuICBhY3RpdmVPcmRlcihjb25maWc6IGFueSkge1xyXG4gICAgZm9yIChsZXQgaGVhZCBvZiB0aGlzLmhlYWRSb3dSZW5kZXIpIHtcclxuICAgICAgaWYgKGhlYWQuZmllbGQgPT0gY29uZmlnLmZpZWxkKSB7XHJcbiAgICAgICAgaGVhZC5vcmRlci5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGhlYWQub3JkZXIuYXNjID0gY29uZmlnLmFzYztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBoZWFkLm9yZGVyLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk9yZGVyQ2hhbmdlKGNvbmZpZzogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZU9yZGVyKHtcclxuICAgICAgZmllbGQ6IGNvbmZpZy5maWVsZCxcclxuICAgICAgYXNjOiBjb25maWcuYXNjXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdCh7XHJcbiAgICAgIHR5cGU6ICdvcmRlcicsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBmaWVsZDogY29uZmlnLmZpZWxkLFxyXG4gICAgICAgIGFzYzogY29uZmlnLmFzY1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXIoKTtcclxuXHJcbiAgICB0aGlzLl9OZ3hUYWJsZVNlcnZpY2Uub25DaGFuZ2VUb29sdGlwcy5zdWJzY3JpYmUoXHJcbiAgICAgIChzdGF0dXMpPT57XHJcbiAgICAgICAgaWYoc3RhdHVzKXtcclxuICAgICAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlcigpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q29uZmlnc0RlZmF1bHQoa2V5OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ3NSZW5kZXJba2V5XSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnc1JlbmRlcltrZXldID0gdGhpcy5jb25maWdzRGVmYXVsdFtrZXldO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnc1JlbmRlcltrZXldLmFjdGl2ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWdzUmVuZGVyW2tleV0uYWN0aXZlID0gdGhpcy5jb25maWdzRGVmYXVsdFtrZXldLmFjdGl2ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuY29uZmlnc1JlbmRlcltrZXldLmRpc2FibGVkID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmNvbmZpZ3NSZW5kZXJba2V5XS5kaXNhYmxlZCA9IHRoaXMuY29uZmlnc0RlZmF1bHRba2V5XS5kaXNhYmxlZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuY29uZmlnc1JlbmRlcltrZXldLmxhYmVsSHRtbCA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWdzUmVuZGVyW2tleV0ubGFiZWxIdG1sID0gdGhpcy5jb25maWdzRGVmYXVsdFtrZXldLmxhYmVsSHRtbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGtleSA9PSAnc2F2ZUNoYW5nZXMnICYmIHRoaXMuY29uZmlnc1JlbmRlcltrZXldLmxvYWRpbmcgPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuY29uZmlnc1JlbmRlcltrZXldLmxvYWRpbmcgPSB0aGlzLmNvbmZpZ3NEZWZhdWx0W2tleV0ubG9hZGluZztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICA8aDMgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci50aXRsZVRhYmxlICE9IG51bGxcIj57eyBjb25maWdzUmVuZGVyLnRpdGxlVGFibGUgfX08L2gzPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtZW5kIG1iLTJcIiAqbmdJZj1cIihjb25maWdzUmVuZGVyLmFjdGlvbnMuZW5hYmxlU2VsZWN0ZWQ/LmFjdGl2ZSkgfHwgKGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5kaXNhYmxlU2VsZWN0ZWQ/LmFjdGl2ZSkgfHwgY29uZmlnc1JlbmRlci5lbmFibGVBbGwuYWN0aXZlIHx8IGNvbmZpZ3NSZW5kZXIuZGlzYWJsZUFsbC5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5zYXZlQ2hhbmdlcy5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5hY3Rpb25zLmFkZD8uYWN0aXZlIHx8IGNvbmZpZ3NSZW5kZXIuc2VhcmNoLmFjdGl2ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiAqbmdJZj1cIihjb25maWdzUmVuZGVyLmFjdGlvbnMuZW5hYmxlU2VsZWN0ZWQ/LmFjdGl2ZSkgfHwgKGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5kaXNhYmxlU2VsZWN0ZWQ/LmFjdGl2ZSkgfHwgY29uZmlnc1JlbmRlci5lbmFibGVBbGwuYWN0aXZlIHx8IGNvbmZpZ3NSZW5kZXIuZGlzYWJsZUFsbC5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5zYXZlQ2hhbmdlcy5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5hY3Rpb25zLmFkZD8uYWN0aXZlXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwiZW5hYmxlLXNlbGVjdGVkLXt7IGRhdGFJZCB9fVwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmVuYWJsZVNlbGVjdGVkPy5hY3RpdmVcIiBbZGlzYWJsZWRdPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmVuYWJsZVNlbGVjdGVkPy5sb2FkaW5nIHx8IGNoZWNrZWRSZWdpc3RlcnMoKS5sZW5ndGggPT0gMFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBteC0xXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsdHlwZTogJ2VuYWJsZVNlbGVjdGVkJywgZGF0YTogY2hlY2tlZFJlZ2lzdGVycygpfSlcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmVuYWJsZVNlbGVjdGVkPy5sb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5lbmFibGVTZWxlY3RlZC5sYWJlbEh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cImRpc2FibGUtc2VsZWN0ZWQte3sgZGF0YUlkIH19XCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuZGlzYWJsZVNlbGVjdGVkPy5hY3RpdmVcIiBbZGlzYWJsZWRdPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmRpc2FibGVTZWxlY3RlZD8ubG9hZGluZyB8fCBjaGVja2VkUmVnaXN0ZXJzKCkubGVuZ3RoID09IDBcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBteC0xXCIgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKHtldmVudDogJGV2ZW50LHR5cGU6ICdkaXNhYmxlU2VsZWN0ZWQnLCBkYXRhOiBjaGVja2VkUmVnaXN0ZXJzKCl9KVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuZGlzYWJsZVNlbGVjdGVkPy5sb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5kaXNhYmxlU2VsZWN0ZWQ/LmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwiZW5hYmxlLWFsbC17eyBkYXRhSWQgfX1cIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuZW5hYmxlQWxsLmFjdGl2ZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBteC0xXCIgW2Rpc2FibGVkXT1cImNvbmZpZ3NSZW5kZXIuZW5hYmxlQWxsLmRpc2FibGVkXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsIHR5cGU6ICdlbmFibGVBbGwnfSlcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZmlnc1JlbmRlci5lbmFibGVBbGwubGFiZWxIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJkaXNhYmxlLWFsbC17eyBkYXRhSWQgfX1cIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuZGlzYWJsZUFsbC5hY3RpdmVcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBteC0xXCIgW2Rpc2FibGVkXT1cImNvbmZpZ3NSZW5kZXIuZGlzYWJsZUFsbC5kaXNhYmxlZFwiIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKHtldmVudDogJGV2ZW50LCB0eXBlOiAnZGlzYWJsZUFsbCd9KVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjb25maWdzUmVuZGVyLmRpc2FibGVBbGwubGFiZWxIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJzYXZlLWNoYW5nZXMte3sgZGF0YUlkIH19XCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLnNhdmVDaGFuZ2VzLmFjdGl2ZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBteC0xXCIgW2Rpc2FibGVkXT1cImNvbmZpZ3NSZW5kZXIuc2F2ZUNoYW5nZXMuZGlzYWJsZWQgfHwgY29uZmlnc1JlbmRlci5zYXZlQ2hhbmdlcy5sb2FkaW5nXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsIHR5cGU6ICdzYXZlQ2hhbmdlcyd9KVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb25maWdzUmVuZGVyLnNhdmVDaGFuZ2VzLmxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4mbmJzcDtcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZmlnc1JlbmRlci5zYXZlQ2hhbmdlcy5sYWJlbEh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cImFkZC1yZWdpc3Rlci17eyBkYXRhSWQgfX1cIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5hZGQ/LmFjdGl2ZVwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKHtldmVudDogJGV2ZW50LCB0eXBlOiAnYWRkJ30pXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5hZGQ/LmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zXCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLnNlYXJjaC5hY3RpdmVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgYXR0ci5kYXRhLWlkPVwiaW5wdXQtc2VhcmNoLXt7IGRhdGFJZCB9fVwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImNvbmZpZ3NSZW5kZXIuc2VhcmNoLnRleHRTZWFyY2hcIiBbcGxhY2Vob2xkZXJdPVwiY29uZmlnc1JlbmRlci5zZWFyY2gucGxhY2Vob2xkZXJTZWFyY2ggIT0gdW5kZWZpbmVkID8gY29uZmlnc1JlbmRlci5zZWFyY2gucGxhY2Vob2xkZXJTZWFyY2ggOiAnJ1wiIChpbnB1dCk9XCJvbktleVNlYXJjaCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cInJlc3RhcnQtc2VhcmNoLXt7IGRhdGFJZCB9fVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvblJlc3RhclNlYWNoKClcIiBbbmdiVG9vbHRpcF09XCJjb25maWdzUmVuZGVyLmxhYmVscz8udG9vbHRpcHM/LmNsZWFyU2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS1hcnJvdy1jb3VudGVyY2xvY2t3aXNlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciAqbmdJZj1cImNvbmZpZ3NSZW5kZXIubG9hZGluZ1wiIGNvdW50PVwiNVwiPjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuICAgIDxwICpuZ0lmPVwiIWNvbmZpZ3NSZW5kZXIubG9hZGluZyAmJiBjb25maWdzUmVuZGVyLmNvbGxlY3Rpb25TaXplID09IDBcIiBjbGFzcz1cInRleHQtY2VudGVyXCI+e3sgY29uZmlnc1JlbmRlci5sYWJlbHMubm9SZWdpc3RlcnMgfX08L3A+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWNvbmZpZ3NSZW5kZXIubG9hZGluZyAmJiBjb25maWdzUmVuZGVyLmNvbGxlY3Rpb25TaXplID4gMFwiIGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtYm9yZGVyZWRcIiBbY2xhc3MudGFibGUtc21dPVwiY29uZmlnc1JlbmRlci50YWJsZVNpemUgPT0gJ3NtYWxsJ1wiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5jaGVjaz8uYWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdHRyLmRhdGEtaWQ9XCJib3gtc2VsZWN0LWFsbC17eyBkYXRhSWQgfX1cIiAjc2VsZWN0QWxsIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIChjaGFuZ2UpPVwib25DaGFuZ2VTZWxlY3RBbGwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2wgb2YgaGVhZFJvd1JlbmRlclwiIFtjbGFzcy5wb2ludGVyXT1cImNvbC5vcmRlci52aXNpYmxlXCIgKGNsaWNrKT1cIiggY29sLm9yZGVyLnZpc2libGUgPyBvbk9yZGVyQ2hhbmdlKHsgZmllbGQ6IGNvbC5maWVsZCwgYXNjOiAoIGNvbC5vcmRlci5hY3RpdmUgPyAhY29sLm9yZGVyLmFzYyA6IHRydWUgKSB9KSA6IHJldHVybiApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29sLmxhYmVsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbC5vcmRlci52aXNpYmxlICYmIGNvbC5vcmRlci5hY3RpdmUgJiYgIWNvbC5vcmRlci5hc2NcIiBjbGFzcz1cImJpIGJpLWNoZXZyb24tZG93biBtcy0xXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbC5vcmRlci52aXNpYmxlICYmIGNvbC5vcmRlci5hY3RpdmUgJiYgY29sLm9yZGVyLmFzY1wiIGNsYXNzPVwiYmkgYmktY2hldnJvbi11cCBtcy0xXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY29sLWNvbXBhY3RcIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5lZGl0Py5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5hY3Rpb25zLmRlbGV0ZT8uYWN0aXZlIHx8IGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5lbmFibGVkPy5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5hY3Rpb25zLmRpc2FibGVkPy5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5hY3Rpb25zLmxvZ2luQXM/LmFjdGl2ZVwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByZWdpc3RlciBvZiByZWdpc3RlcnNSZW5kZXI7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgYXR0ci5kYXRhLWlkPVwic2VsZWN0LXJlZ2lzdGVyLXt7IGRhdGFJZCB9fS17eyBpIH19XCIgW2NsYXNzLnBvaW50ZXJdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LnNlbGVjdD8uYWN0aXZlXCIgKGNsaWNrKT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5zZWxlY3Q/LmFjdGl2ZSA/IG9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsdHlwZTogJ3NlbGVjdCcsZGF0YTogcmVnaXN0ZXIsIGluZGV4OiBpfSk6cmV0dXJuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuY2hlY2s/LmFjdGl2ZVwiIChjbGljayk9XCJzdG9wUHJvcGFnYXRpb24oJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5hY3RpdmVcIiBbZGlzYWJsZWRdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5kaXNhYmxlZFwiIGF0dHIuZGF0YS1pZD1cImJveC1zZWxlY3QtcmVnaXN0ZXIte3sgZGF0YUlkIH19LXt7IGkgfX1cIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyLmFjdGlvbnMuY2hlY2suY2hlY2tlZFwiIChjaGFuZ2UpPVwic2V0U2VsZWN0QWxsKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBoZWFkUm93UmVuZGVyOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgW2NsYXNzLnRleHQtZW5kXT1cImNvbC50eXBlID09ICdudW1iZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb2wuZmllbGQgIT0gJ2lzX2FjdGl2ZSc7IGVsc2UgcmVuZGVySXNBY3RpdmVcIiBbaW5uZXJIVE1MXT1cInJlZ2lzdGVyc1tpXVsoY29sLmZpZWxkID09IG51bGwgfHwgY29sLmZpZWxkID09ICcnID8gb2JqZWN0S2V5cyhyZWdpc3Rlcilbal0gOiBjb2wuZmllbGQpXVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3JlbmRlcklzQWN0aXZlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXR0ci5kYXRhLWlkPVwiYm94LWlzLWFjdGl2ZS17eyBkYXRhSWQgfX0te3sgaSB9fVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIFtuZ01vZGVsXT1cInJlZ2lzdGVyc1tpXVtjb2wuZmllbGRdXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25BY3Rpb25DbGljayh7dHlwZTogJ2NoYW5nZUlzQWN0aXZlJywgZGF0YTogJGV2ZW50LCBpbmRleDogaX0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5lZGl0Py5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5hY3Rpb25zLmRlbGV0ZT8uYWN0aXZlIHx8IGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5lbmFibGVkPy5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5hY3Rpb25zLmRpc2FibGVkPy5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5hY3Rpb25zLmxvZ2luQXM/LmFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJlZGl0LXJlZ2lzdGVyLXt7IGRhdGFJZCB9fS17eyBpIH19XCIgKm5nSWY9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZWRpdD8uYWN0aXZlXCIgW2Rpc2FibGVkXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5lZGl0Py5kaXNhYmxlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBteC0xXCIgW2NsYXNzLmJ0bi1zbV09XCJjb25maWdzUmVuZGVyLnRhYmxlU2l6ZSA9PSAnc21hbGwnXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsdHlwZTogJ2VkaXQnLGRhdGE6IHJlZ2lzdGVyLCBpbmRleDogaX0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZWRpdD8ubGFiZWxIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cImRlbGV0ZS1yZWdpc3Rlci17eyBkYXRhSWQgfX0te3sgaSB9fVwiICpuZ0lmPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmRlbGV0ZT8uYWN0aXZlXCIgW2Rpc2FibGVkXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5kZWxldGU/LmxvYWRpbmcgfHwgcmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmRlbGV0ZT8uZGlzYWJsZWRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBteC0xXCIgW2NsYXNzLmJ0bi1zbV09XCJjb25maWdzUmVuZGVyLnRhYmxlU2l6ZSA9PSAnc21hbGwnXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsdHlwZTogJ2RlbGV0ZScsZGF0YTogcmVnaXN0ZXIsIGluZGV4OiBpfSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5kZWxldGU/LmxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4mbmJzcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGVsZXRlPy5sYWJlbEh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwiZW5hYmxlLXJlZ2lzdGVyLXt7IGRhdGFJZCB9fS17eyBpIH19XCIgKm5nSWY9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZW5hYmxlZD8uYWN0aXZlXCIgW2Rpc2FibGVkXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5lbmFibGVkPy5sb2FkaW5nIHx8IHJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5lbmFibGVkPy5kaXNhYmxlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBteC0xXCIgW2NsYXNzLmJ0bi1zbV09XCJjb25maWdzUmVuZGVyLnRhYmxlU2l6ZSA9PSAnc21hbGwnXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsdHlwZTogJ2VuYWJsZWQnLGRhdGE6IHJlZ2lzdGVyLCBpbmRleDogaX0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZW5hYmxlZD8ubG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5lbmFibGVkPy5sYWJlbEh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwiZGlzYWJsZS1yZWdpc3Rlci17eyBkYXRhSWQgfX0te3sgaSB9fVwiICpuZ0lmPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmRpc2FibGVkPy5hY3RpdmVcIiBbZGlzYWJsZWRdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmRpc2FibGVkPy5sb2FkaW5nIHx8IHJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5kaXNhYmxlZD8uZGlzYWJsZWRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBteC0xXCIgW2NsYXNzLmJ0bi1zbV09XCJjb25maWdzUmVuZGVyLnRhYmxlU2l6ZSA9PSAnc21hbGwnXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsdHlwZTogJ2Rpc2FibGVkJyxkYXRhOiByZWdpc3RlciwgaW5kZXg6IGl9KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmRpc2FibGVkPy5sb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmRpc2FibGVkPy5sYWJlbEh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwibG9naW4tYXMte3sgZGF0YUlkIH19LXt7IGkgfX1cIiAqbmdJZj1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5sb2dpbkFzPy5hY3RpdmVcIiBbZGlzYWJsZWRdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmxvZ2luQXM/LmxvYWRpbmcgfHwgcmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmxvZ2luQXM/LmRpc2FibGVkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG14LTFcIiBbY2xhc3MuYnRuLXNtXT1cImNvbmZpZ3NSZW5kZXIudGFibGVTaXplID09ICdzbWFsbCdcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCx0eXBlOiAnbG9naW5BcycsZGF0YTogcmVnaXN0ZXIsIGluZGV4OiBpfSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5sb2dpbkFzPy5sb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmxvZ2luQXM/LmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tc3RpY2t5IGJvdHRvbS0wIGJnLXdoaXRlXCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLnBhZ2luYXRpb25BY3RpdmUgJiYgY29uZmlnc1JlbmRlci5jb2xsZWN0aW9uU2l6ZSA+IDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1lbmQgYm9yZGVyLXRvcCBwdC0yXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgPG5nYi1wYWdpbmF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cImNvbmZpZ3NSZW5kZXIucGFnZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uU2l6ZV09XCJjb25maWdzUmVuZGVyLmNvbGxlY3Rpb25TaXplXCJcclxuICAgICAgICAgICAgICAgICAgICBbKHBhZ2UpXT1cImNvbmZpZ3NSZW5kZXIucGFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21heFNpemVdPVwiNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JvdGF0ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbYm91bmRhcnlMaW5rc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbZWxsaXBzZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhZ2luYXRpb25OdW1iZXIgbGV0LXBhZ2U+PHNwYW4gYXR0ci5kYXRhLWlkPVwicGFnZS17eyBkYXRhSWQgfX0te3sgcGFnZSB9fVwiPnt7IHBhZ2UgfX08L3NwYW4+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFnaW5hdGlvbkZpcnN0PjxzcGFuIGF0dHIuZGF0YS1pZD1cInBhZ2UtZmlyc3Qte3sgZGF0YUlkIH19XCI+wqvCqzwvc3Bhbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYWdpbmF0aW9uTGFzdD48c3BhbiBhdHRyLmRhdGEtaWQ9XCJwYWdlLWxhc3Qte3sgZGF0YUlkIH19XCI+wrvCuzwvc3Bhbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYWdpbmF0aW9uUHJldmlvdXM+PHNwYW4gYXR0ci5kYXRhLWlkPVwicGFnZS1wcmV2aXVzLXt7IGRhdGFJZCB9fVwiPsKrPC9zcGFuPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhZ2luYXRpb25OZXh0PjxzcGFuIGF0dHIuZGF0YS1pZD1cInBhZ2UtbmV4dC17eyBkYXRhSWQgfX1cIj7Cuzwvc3Bhbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZ2ItcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
366
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10YWJsZS9zcmMvbGliL25neC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGFibGUvc3JjL2xpYi9uZ3gtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBcUIsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWlCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVFsSCxNQUFNLE9BQU8saUJBQWlCO0lBMkg1QixZQUNTLGdCQUFpQztRQUFqQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBM0hqQyxZQUFPLEdBQVUsRUFBRSxDQUFDO1FBQzdCLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBRWpCLGNBQVMsR0FBVSxFQUFFLENBQUM7UUFDL0Isb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFHNUIsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFFZCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUlsRCxtQkFBYyxHQUFRO1lBQ3BCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixJQUFJLEVBQUUsQ0FBQztZQUNQLFFBQVEsRUFBRSxFQUFFO1lBQ1osY0FBYyxFQUFFLENBQUM7WUFDakIsU0FBUyxFQUFFLFFBQVE7WUFDbkIsTUFBTSxFQUFFO2dCQUNOLFdBQVcsRUFBRSxvQkFBb0I7Z0JBQ2pDLFFBQVEsRUFBQztvQkFDUCxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRO2lCQUNsQzthQUNGO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLE1BQU0sRUFBRSxLQUFLO2dC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Q0FBQzthQUNsRTtZQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFO2dCQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQzthQUN0RTtZQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFO2dCQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQzthQUN4RTtZQUVELElBQUksR0FBRyxJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUU7Z0JBQ25FLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO2FBQ3BFO1NBQ0Y7SUFDSCxDQUFDOzs4R0F0WVUsaUJBQWlCO2tHQUFqQixpQkFBaUIsZ1VDUjlCLDZ3ZEFxSkE7MkZEN0lhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxXQUFXO3NHQUtaLE9BQU87c0JBQWYsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFHSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRWlCLGNBQWM7c0JBQXJDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXQsIE9uQ2hhbmdlcywgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ3hUYWJsZVNlcnZpY2UgfSBmcm9tICcuL25neC10YWJsZS5zZXJ2aWNlJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25neC10YWJsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBoZWFkUm93OiBhbnlbXSA9IFtdO1xyXG4gIGhlYWRSb3dSZW5kZXI6IGFueVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHJlZ2lzdGVyczogYW55W10gPSBbXTtcclxuICByZWdpc3RlcnNSZW5kZXI6IGFueVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZ3M6IGFueTtcclxuICBjb25maWdzUmVuZGVyOiBhbnkgPSB7fTtcclxuXHJcbiAgQE91dHB1dCgpIGNoYW5nZVBhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE9iamVjdD4oKTtcclxuICBAT3V0cHV0KCkgY2xpY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0PigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdzZWxlY3RBbGwnKSBjaGVja1NlbGVjdEFsbDogYW55O1xyXG5cclxuICBjb25maWdzRGVmYXVsdDogYW55ID0ge1xyXG4gICAgdGl0bGVUYWJsZTogbnVsbCxcclxuICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgcGFnaW5hdGlvbkFjdGl2ZTogZmFsc2UsXHJcbiAgICBwYWdlOiAxLFxyXG4gICAgcGFnZVNpemU6IDE1LFxyXG4gICAgY29sbGVjdGlvblNpemU6IDAsXHJcbiAgICB0YWJsZVNpemU6ICdub3JtYWwnLFxyXG4gICAgbGFiZWxzOiB7XHJcbiAgICAgIG5vUmVnaXN0ZXJzOiAnUmVnaXN0ZXJzIG5vIGZvdW5kJyxcclxuICAgICAgdG9vbHRpcHM6e1xyXG4gICAgICAgIC4uLnRoaXMuX05neFRhYmxlU2VydmljZS50b29sdGlwc1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgc2VhcmNoOiB7XHJcbiAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgIHRleHRTZWFyY2g6ICcnLFxyXG4gICAgICBwbGFjZWhvbGRlclNlYXJjaDogJ1NlYXJjaCdcclxuICAgIH0sXHJcbiAgICBvcmRlcjoge1xyXG4gICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICBmaWVsZDogbnVsbCxcclxuICAgICAgYXNjOiBmYWxzZVxyXG4gICAgfSxcclxuICAgIGFjdGlvbnM6IHtcclxuICAgICAgYWRkOiB7XHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBsYWJlbEh0bWw6IG51bGxcclxuICAgICAgfSxcclxuICAgICAgc2VsZWN0OiB7XHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBsYWJlbEh0bWw6IG51bGxcclxuICAgICAgfSxcclxuICAgICAgZWRpdDoge1xyXG4gICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgbGFiZWxIdG1sOiBudWxsLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBkZWxldGU6IHtcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGxhYmVsSHRtbDogbnVsbCxcclxuICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2VcclxuICAgICAgfSxcclxuICAgICAgZW5hYmxlZDoge1xyXG4gICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgbGFiZWxIdG1sOiBudWxsLFxyXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBkaXNhYmxlZDoge1xyXG4gICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgbGFiZWxIdG1sOiBudWxsLFxyXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBsb2dpbkFzOiB7XHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBsYWJlbEh0bWw6IG51bGwsXHJcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICAgIH0sXHJcbiAgICAgIGNoZWNrOiB7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgY2hlY2tlZDogZmFsc2VcclxuICAgICAgfSxcclxuICAgICAgZW5hYmxlU2VsZWN0ZWQ6IHtcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGxhYmVsSHRtbDogbnVsbCxcclxuICAgICAgICBsb2FkaW5nOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBkaXNhYmxlU2VsZWN0ZWQ6IHtcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGxhYmVsSHRtbDogbnVsbCxcclxuICAgICAgICBsb2FkaW5nOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGNvbEhlYWQ6IHtcclxuICAgICAgbGFiZWw6IG51bGwsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBmaWVsZDogbnVsbCxcclxuICAgICAgb3JkZXI6IHtcclxuICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGFzYzogZmFsc2VcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGVuYWJsZUFsbDoge1xyXG4gICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgbGFiZWxIdG1sOiAnRW5hYmxlIGFsbCdcclxuICAgIH0sXHJcbiAgICBkaXNhYmxlQWxsOiB7XHJcbiAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICBsYWJlbEh0bWw6ICdEaXNhYmxlIGFsbCdcclxuICAgIH0sXHJcbiAgICBzYXZlQ2hhbmdlczoge1xyXG4gICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgbGFiZWxIdG1sOiAnU2F2ZSBjaGFuZ2VzJyxcclxuICAgICAgbG9hZGluZzogZmFsc2VcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBkYXRhSWQ6IGFueVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBfTmd4VGFibGVTZXJ2aWNlOiBOZ3hUYWJsZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuZGF0YUlkID0gX05neFRhYmxlU2VydmljZS5kYXRhSWRcclxuICB9XHJcblxyXG4gIG9iamVjdEtleXMocmVnaXN0ZXJzOiBhbnkpIHtcclxuICAgIGxldCByZWdpc3Ryb3MgPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBrZXkgb2YgT2JqZWN0LmtleXMocmVnaXN0ZXJzKSkge1xyXG4gICAgICBpZiAoa2V5ICE9ICdjb25maWdSZWdpc3RlcicpIHtcclxuICAgICAgICByZWdpc3Ryb3MucHVzaChrZXkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlZ2lzdHJvcztcclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZSgpIHtcclxuICAgIHRoaXMuY29uZmlncyA9IHRoaXMuY29uZmlnc1JlbmRlcjtcclxuXHJcbiAgICB0aGlzLmNoYW5nZVBhZ2UuZW1pdCh7XHJcbiAgICAgIC4uLnRoaXMuY29uZmlnc1JlbmRlclxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbktleVNlYXJjaCgpIHtcclxuICAgIHRoaXMuY29uZmlncyA9IHRoaXMuY29uZmlnc1JlbmRlcjtcclxuXHJcbiAgICB0aGlzLmNoYW5nZVBhZ2UuZW1pdCh7XHJcbiAgICAgIC4uLnRoaXMuY29uZmlnc1JlbmRlclxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJlc3RhclNlYWNoKCkge1xyXG4gICAgdGhpcy5jb25maWdzUmVuZGVyLnNlYXJjaC50ZXh0U2VhcmNoID0gJyc7XHJcbiAgICB0aGlzLmNvbmZpZ3MgPSB0aGlzLmNvbmZpZ3NSZW5kZXI7XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VQYWdlLmVtaXQoe1xyXG4gICAgICAuLi50aGlzLmNvbmZpZ3NSZW5kZXJcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb25DbGljayhvYmplY3Q6IGFueSkge1xyXG4gICAgb2JqZWN0LmV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgb2JqZWN0LmV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdCh7XHJcbiAgICAgIHR5cGU6IG9iamVjdC50eXBlLFxyXG4gICAgICBkYXRhOiBvYmplY3QuZGF0YSxcclxuICAgICAgaW5kZXg6IG9iamVjdC5pbmRleFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICB0aGlzLmhlYWRSb3dSZW5kZXIgPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBoZWFkIG9mIHRoaXMuaGVhZFJvdykge1xyXG4gICAgICB0aGlzLmhlYWRSb3dSZW5kZXIucHVzaCh7XHJcbiAgICAgICAgLi4udGhpcy5jb25maWdzRGVmYXVsdC5jb2xIZWFkLFxyXG4gICAgICAgIC4uLmhlYWQsXHJcbiAgICAgICAgb3JkZXI6IHtcclxuICAgICAgICAgIC4uLnRoaXMuY29uZmlnc0RlZmF1bHQuY29sSGVhZC5vcmRlcixcclxuICAgICAgICAgIC4uLmhlYWQub3JkZXJcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29uZmlnc1JlbmRlciA9IHtcclxuICAgICAgdGl0bGVUYWJsZTogdGhpcy5jb25maWdzRGVmYXVsdC50aXRsZVRhYmxlLFxyXG4gICAgICBsb2FkaW5nOiB0aGlzLmNvbmZpZ3NEZWZhdWx0LmxvYWRpbmcsXHJcbiAgICAgIHBhZ2luYXRpb25BY3RpdmU6IHRoaXMuY29uZmlnc0RlZmF1bHQucGFnaW5hdGlvbkFjdGl2ZSxcclxuICAgICAgcGFnZTogdGhpcy5jb25maWdzRGVmYXVsdC5wYWdlLFxyXG4gICAgICBwYWdlU2l6ZTogdGhpcy5jb25maWdzRGVmYXVsdC5wYWdlU2l6ZSxcclxuICAgICAgY29sbGVjdGlvblNpemU6IHRoaXMuY29uZmlnc0RlZmF1bHQuY29sbGVjdGlvblNpemUsXHJcbiAgICAgIHRhYmxlU2l6ZTogdGhpcy5jb25maWdzRGVmYXVsdC50YWJsZVNpemUsXHJcbiAgICAgIGxhYmVsczogdGhpcy5jb25maWdzRGVmYXVsdC5sYWJlbHMsXHJcbiAgICAgIHNlYXJjaDogdGhpcy5jb25maWdzRGVmYXVsdC5zZWFyY2gsXHJcbiAgICAgIG9yZGVyOiB0aGlzLmNvbmZpZ3NEZWZhdWx0Lm9yZGVyLFxyXG4gICAgICBhY3Rpb25zOiB0aGlzLmNvbmZpZ3NEZWZhdWx0LmFjdGlvbnMsXHJcbiAgICAgIC4uLnRoaXMuY29uZmlnc1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiggIXRoaXMuY29uZmlncy5sYWJlbHMgKXtcclxuICAgICAgdGhpcy5jb25maWdzLmxhYmVscyA9IHt9XHJcbiAgICB9XHJcblxyXG4gICAgaWYoICF0aGlzLmNvbmZpZ3MubGFiZWxzLnRvb2x0aXBzICl7XHJcbiAgICAgIHRoaXMuY29uZmlncy5sYWJlbHMudG9vbHRpcHMgPSB7fVxyXG4gICAgfVxyXG5cclxuICAgIGlmKCAhdGhpcy5jb25maWdzLmxhYmVscy50b29sdGlwcy5jbGVhclNlYXJjaCApe1xyXG4gICAgICB0aGlzLmNvbmZpZ3MubGFiZWxzLnRvb2x0aXBzLmNsZWFyU2VhcmNoID0gJydcclxuICAgIH1cclxuICAgIGlmKCB0aGlzLmNvbmZpZ3MubGFiZWxzLnRvb2x0aXBzLmNsZWFyU2VhcmNoID09ICcnIHx8IHRoaXMuY29uZmlnc0RlZmF1bHQubGFiZWxzLnRvb2x0aXBzLmNsZWFyU2VhcmNoICE9IHRoaXMuX05neFRhYmxlU2VydmljZS50b29sdGlwcy5jbGVhclNlYXJjaCApe1xyXG4gICAgICB0aGlzLmNvbmZpZ3NSZW5kZXIubGFiZWxzLnRvb2x0aXBzLmNsZWFyU2VhcmNoID0gdGhpcy5fTmd4VGFibGVTZXJ2aWNlLnRvb2x0aXBzLmNsZWFyU2VhcmNoXHJcbiAgICAgIHRoaXMuY29uZmlnc0RlZmF1bHQubGFiZWxzLnRvb2x0aXBzLmNsZWFyU2VhcmNoID0gdGhpcy5fTmd4VGFibGVTZXJ2aWNlLnRvb2x0aXBzLmNsZWFyU2VhcmNoXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRDb25maWdzRGVmYXVsdCgnZW5hYmxlQWxsJyk7XHJcbiAgICB0aGlzLnNldENvbmZpZ3NEZWZhdWx0KCdkaXNhYmxlQWxsJyk7XHJcbiAgICB0aGlzLnNldENvbmZpZ3NEZWZhdWx0KCdzYXZlQ2hhbmdlcycpO1xyXG5cclxuICAgIHRoaXMucmVnaXN0ZXJzUmVuZGVyID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgcmVnaXN0ZXIgb2YgdGhpcy5yZWdpc3RlcnMpIHtcclxuICAgICAgdGhpcy5yZWdpc3RlcnNSZW5kZXIucHVzaCh7XHJcbiAgICAgICAgLi4ucmVnaXN0ZXIsXHJcbiAgICAgICAgY29uZmlnUmVnaXN0ZXI6IHtcclxuICAgICAgICAgIGFjdGlvbnM6IHtcclxuICAgICAgICAgICAgLi4udGhpcy5jb25maWdzUmVuZGVyLmFjdGlvbnMsXHJcbiAgICAgICAgICAgIGxvZ2luQXM6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5sb2dpbkFzXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNoZWNrOiB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5jb25maWdzUmVuZGVyLmFjdGlvbnMuY2hlY2tcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLi4ucmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnNcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcFByb3BhZ2F0aW9uKGU6IGFueSkge1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdEFsbCgpIHtcclxuICAgIHRoaXMuY2hlY2tTZWxlY3RBbGwubmF0aXZlRWxlbWVudC5pbmRldGVybWluYXRlID0gZmFsc2U7XHJcbiAgICB0aGlzLmNoZWNrU2VsZWN0QWxsLm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgbGV0IGNvbnRDaGVjayA9IHRoaXMuZ2V0U2VsZWN0ZWRQaWNlcygpO1xyXG5cclxuICAgIGxldCByZWdpc3RlckNoZWNrc0VuYWJsZWQgPSB0aGlzLnJlZ2lzdGVyc1JlbmRlci5maWx0ZXIoKGVsZW1lbnQpPT57XHJcbiAgICAgIHJldHVybiAhZWxlbWVudC5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmRpc2FibGVkICYmIGVsZW1lbnQuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5hY3RpdmVcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHJlZ2lzdGVyQ2hlY2tzRW5hYmxlZC5sZW5ndGggPT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlZ2lzdGVyQ2hlY2tzRW5hYmxlZC5sZW5ndGggPT0gY29udENoZWNrKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tTZWxlY3RBbGwubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChjb250Q2hlY2sgIT0gMCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tTZWxlY3RBbGwubmF0aXZlRWxlbWVudC5pbmRldGVybWluYXRlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25BY3Rpb25DbGljayh7XHJcbiAgICAgIHR5cGU6ICdjaGVja2VkJyxcclxuICAgICAgZGF0YTogdGhpcy5jaGVja2VkUmVnaXN0ZXJzKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRQaWNlcygpIHtcclxuICAgIGxldCBjb250Q2hlY2sgPSAwO1xyXG4gICAgbGV0IHJlZ2lzdGVyQ2hlY2tzRW5hYmxlZCA9IHRoaXMucmVnaXN0ZXJzUmVuZGVyLmZpbHRlcigoZWxlbWVudCk9PntcclxuICAgICAgcmV0dXJuICFlbGVtZW50LmNvbmZpZ1JlZ2lzdGVyLmFjdGlvbnMuY2hlY2suZGlzYWJsZWQgJiYgZWxlbWVudC5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmFjdGl2ZVxyXG4gICAgfSlcclxuXHJcbiAgICBmb3IgKGxldCByZWdpc3RlciBvZiByZWdpc3RlckNoZWNrc0VuYWJsZWQpIHtcclxuICAgICAgY29udENoZWNrICs9IChyZWdpc3Rlci5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmNoZWNrZWQgPyAxIDogMCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbnRDaGVjaztcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlU2VsZWN0QWxsKCkge1xyXG4gICAgbGV0IHJlZ2lzdGVyQ2hlY2tzRW5hYmxlZCA9IHRoaXMucmVnaXN0ZXJzUmVuZGVyLmZpbHRlcigoZWxlbWVudCk9PntcclxuICAgICAgcmV0dXJuICFlbGVtZW50LmNvbmZpZ1JlZ2lzdGVyLmFjdGlvbnMuY2hlY2suZGlzYWJsZWQgJiYgZWxlbWVudC5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmFjdGl2ZVxyXG4gICAgfSlcclxuICAgIGlmICh0aGlzLmNoZWNrU2VsZWN0QWxsLm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCkge1xyXG4gICAgICBmb3IgKGxldCByZWdpc3RlciBvZiByZWdpc3RlckNoZWNrc0VuYWJsZWQpIHtcclxuICAgICAgICByZWdpc3Rlci5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCByZWdpc3RlciBvZiByZWdpc3RlckNoZWNrc0VuYWJsZWQpIHtcclxuICAgICAgICByZWdpc3Rlci5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25BY3Rpb25DbGljayh7XHJcbiAgICAgIHR5cGU6ICdjaGVja2VkJyxcclxuICAgICAgZGF0YTogdGhpcy5jaGVja2VkUmVnaXN0ZXJzKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tlZFJlZ2lzdGVycygpIHtcclxuICAgIGxldCBjaGVja2VkUmVnaXN0ZXIgPSBbXTtcclxuICAgIGxldCByZWdpc3RlckNoZWNrc0VuYWJsZWQgPSB0aGlzLnJlZ2lzdGVyc1JlbmRlci5maWx0ZXIoKGVsZW1lbnQpPT57XHJcbiAgICAgIHJldHVybiAhZWxlbWVudC5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmRpc2FibGVkICYmIGVsZW1lbnQuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5hY3RpdmVcclxuICAgIH0pXHJcblxyXG4gICAgZm9yIChsZXQgcmVnaXN0ZXIgb2YgcmVnaXN0ZXJDaGVja3NFbmFibGVkKSB7XHJcbiAgICAgIGlmIChyZWdpc3Rlci5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmNoZWNrZWQpIHtcclxuICAgICAgICBjaGVja2VkUmVnaXN0ZXIucHVzaCh7XHJcbiAgICAgICAgICAuLi5yZWdpc3RlclxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNoZWNrZWRSZWdpc3RlcjtcclxuICB9XHJcblxyXG4gIGFjdGl2ZU9yZGVyKGNvbmZpZzogYW55KSB7XHJcbiAgICBmb3IgKGxldCBoZWFkIG9mIHRoaXMuaGVhZFJvd1JlbmRlcikge1xyXG4gICAgICBpZiAoaGVhZC5maWVsZCA9PSBjb25maWcuZmllbGQpIHtcclxuICAgICAgICBoZWFkLm9yZGVyLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgaGVhZC5vcmRlci5hc2MgPSBjb25maWcuYXNjO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGhlYWQub3JkZXIuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uT3JkZXJDaGFuZ2UoY29uZmlnOiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlT3JkZXIoe1xyXG4gICAgICBmaWVsZDogY29uZmlnLmZpZWxkLFxyXG4gICAgICBhc2M6IGNvbmZpZy5hc2NcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY2xpY2tFdmVudC5lbWl0KHtcclxuICAgICAgdHlwZTogJ29yZGVyJyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGZpZWxkOiBjb25maWcuZmllbGQsXHJcbiAgICAgICAgYXNjOiBjb25maWcuYXNjXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlcigpO1xyXG5cclxuICAgIHRoaXMuX05neFRhYmxlU2VydmljZS5vbkNoYW5nZVRvb2x0aXBzLnN1YnNjcmliZShcclxuICAgICAgKHN0YXR1cyk9PntcclxuICAgICAgICBpZihzdGF0dXMpe1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgfVxyXG5cclxuICBzZXRDb25maWdzRGVmYXVsdChrZXk6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnc1JlbmRlcltrZXldID09IG51bGwpIHtcclxuICAgICAgdGhpcy5jb25maWdzUmVuZGVyW2tleV0gPSB0aGlzLmNvbmZpZ3NEZWZhdWx0W2tleV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5jb25maWdzUmVuZGVyW2tleV0uYWN0aXZlID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmNvbmZpZ3NSZW5kZXJba2V5XS5hY3RpdmUgPSB0aGlzLmNvbmZpZ3NEZWZhdWx0W2tleV0uYWN0aXZlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5jb25maWdzUmVuZGVyW2tleV0uZGlzYWJsZWQgPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuY29uZmlnc1JlbmRlcltrZXldLmRpc2FibGVkID0gdGhpcy5jb25maWdzRGVmYXVsdFtrZXldLmRpc2FibGVkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5jb25maWdzUmVuZGVyW2tleV0ubGFiZWxIdG1sID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmNvbmZpZ3NSZW5kZXJba2V5XS5sYWJlbEh0bWwgPSB0aGlzLmNvbmZpZ3NEZWZhdWx0W2tleV0ubGFiZWxIdG1sO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoa2V5ID09ICdzYXZlQ2hhbmdlcycgJiYgdGhpcy5jb25maWdzUmVuZGVyW2tleV0ubG9hZGluZyA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWdzUmVuZGVyW2tleV0ubG9hZGluZyA9IHRoaXMuY29uZmlnc0RlZmF1bHRba2V5XS5sb2FkaW5nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgIDxoMyBjbGFzcz1cInRleHQtY2VudGVyXCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLnRpdGxlVGFibGUgIT0gbnVsbFwiPnt7IGNvbmZpZ3NSZW5kZXIudGl0bGVUYWJsZSB9fTwvaDM+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1lbmQgbWItMlwiICpuZ0lmPVwiKGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5lbmFibGVTZWxlY3RlZD8uYWN0aXZlKSB8fCAoY29uZmlnc1JlbmRlci5hY3Rpb25zLmRpc2FibGVTZWxlY3RlZD8uYWN0aXZlKSB8fCBjb25maWdzUmVuZGVyLmVuYWJsZUFsbC5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5kaXNhYmxlQWxsLmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLnNhdmVDaGFuZ2VzLmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMuYWRkPy5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5zZWFyY2guYWN0aXZlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiICpuZ0lmPVwiKGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5lbmFibGVTZWxlY3RlZD8uYWN0aXZlKSB8fCAoY29uZmlnc1JlbmRlci5hY3Rpb25zLmRpc2FibGVTZWxlY3RlZD8uYWN0aXZlKSB8fCBjb25maWdzUmVuZGVyLmVuYWJsZUFsbC5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5kaXNhYmxlQWxsLmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLnNhdmVDaGFuZ2VzLmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMuYWRkPy5hY3RpdmVcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJlbmFibGUtc2VsZWN0ZWQte3sgZGF0YUlkIH19XCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuZW5hYmxlU2VsZWN0ZWQ/LmFjdGl2ZVwiIFtkaXNhYmxlZF09XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuZW5hYmxlU2VsZWN0ZWQ/LmxvYWRpbmcgfHwgY2hlY2tlZFJlZ2lzdGVycygpLmxlbmd0aCA9PSAwXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIG14LTFcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCx0eXBlOiAnZW5hYmxlU2VsZWN0ZWQnLCBkYXRhOiBjaGVja2VkUmVnaXN0ZXJzKCl9KVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuZW5hYmxlU2VsZWN0ZWQ/LmxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4mbmJzcDtcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmVuYWJsZVNlbGVjdGVkLmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwiZGlzYWJsZS1zZWxlY3RlZC17eyBkYXRhSWQgfX1cIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5kaXNhYmxlU2VsZWN0ZWQ/LmFjdGl2ZVwiIFtkaXNhYmxlZF09XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuZGlzYWJsZVNlbGVjdGVkPy5sb2FkaW5nIHx8IGNoZWNrZWRSZWdpc3RlcnMoKS5sZW5ndGggPT0gMFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIG14LTFcIiAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsdHlwZTogJ2Rpc2FibGVTZWxlY3RlZCcsIGRhdGE6IGNoZWNrZWRSZWdpc3RlcnMoKX0pXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5kaXNhYmxlU2VsZWN0ZWQ/LmxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4mbmJzcDtcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmRpc2FibGVTZWxlY3RlZD8ubGFiZWxIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJlbmFibGUtYWxsLXt7IGRhdGFJZCB9fVwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5lbmFibGVBbGwuYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIG14LTFcIiBbZGlzYWJsZWRdPVwiY29uZmlnc1JlbmRlci5lbmFibGVBbGwuZGlzYWJsZWRcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCwgdHlwZTogJ2VuYWJsZUFsbCd9KVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjb25maWdzUmVuZGVyLmVuYWJsZUFsbC5sYWJlbEh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cImRpc2FibGUtYWxsLXt7IGRhdGFJZCB9fVwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5kaXNhYmxlQWxsLmFjdGl2ZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIG14LTFcIiBbZGlzYWJsZWRdPVwiY29uZmlnc1JlbmRlci5kaXNhYmxlQWxsLmRpc2FibGVkXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsIHR5cGU6ICdkaXNhYmxlQWxsJ30pXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbmZpZ3NSZW5kZXIuZGlzYWJsZUFsbC5sYWJlbEh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cInNhdmUtY2hhbmdlcy17eyBkYXRhSWQgfX1cIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuc2F2ZUNoYW5nZXMuYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG14LTFcIiBbZGlzYWJsZWRdPVwiY29uZmlnc1JlbmRlci5zYXZlQ2hhbmdlcy5kaXNhYmxlZCB8fCBjb25maWdzUmVuZGVyLnNhdmVDaGFuZ2VzLmxvYWRpbmdcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCwgdHlwZTogJ3NhdmVDaGFuZ2VzJ30pXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuc2F2ZUNoYW5nZXMubG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjb25maWdzUmVuZGVyLnNhdmVDaGFuZ2VzLmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwiYWRkLXJlZ2lzdGVyLXt7IGRhdGFJZCB9fVwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmFkZD8uYWN0aXZlXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsIHR5cGU6ICdhZGQnfSlcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmFkZD8ubGFiZWxIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTNcIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuc2VhcmNoLmFjdGl2ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBhdHRyLmRhdGEtaWQ9XCJpbnB1dC1zZWFyY2gte3sgZGF0YUlkIH19XCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiY29uZmlnc1JlbmRlci5zZWFyY2gudGV4dFNlYXJjaFwiIFtwbGFjZWhvbGRlcl09XCJjb25maWdzUmVuZGVyLnNlYXJjaC5wbGFjZWhvbGRlclNlYXJjaCAhPSB1bmRlZmluZWQgPyBjb25maWdzUmVuZGVyLnNlYXJjaC5wbGFjZWhvbGRlclNlYXJjaCA6ICcnXCIgKGlucHV0KT1cIm9uS2V5U2VhcmNoKClcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwicmVzdGFydC1zZWFyY2gte3sgZGF0YUlkIH19XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uUmVzdGFyU2VhY2goKVwiIFtuZ2JUb29sdGlwXT1cImNvbmZpZ3NSZW5kZXIubGFiZWxzPy50b29sdGlwcz8uY2xlYXJTZWFyY2hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWFycm93LWNvdW50ZXJjbG9ja3dpc2VcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwiY29uZmlnc1JlbmRlci5sb2FkaW5nXCIgY291bnQ9XCI1XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG4gICAgPHAgKm5nSWY9XCIhY29uZmlnc1JlbmRlci5sb2FkaW5nICYmIGNvbmZpZ3NSZW5kZXIuY29sbGVjdGlvblNpemUgPT0gMFwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj57eyBjb25maWdzUmVuZGVyLmxhYmVscy5ub1JlZ2lzdGVycyB9fTwvcD5cclxuICAgIDxkaXYgKm5nSWY9XCIhY29uZmlnc1JlbmRlci5sb2FkaW5nICYmIGNvbmZpZ3NSZW5kZXIuY29sbGVjdGlvblNpemUgPiAwXCIgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc3RyaXBlZCB0YWJsZS1ib3JkZXJlZFwiIFtjbGFzcy50YWJsZS1zbV09XCJjb25maWdzUmVuZGVyLnRhYmxlU2l6ZSA9PSAnc21hbGwnXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmNoZWNrPy5hY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF0dHIuZGF0YS1pZD1cImJveC1zZWxlY3QtYWxsLXt7IGRhdGFJZCB9fVwiICNzZWxlY3RBbGwgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgKGNoYW5nZSk9XCJvbkNoYW5nZVNlbGVjdEFsbCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBoZWFkUm93UmVuZGVyXCIgW2NsYXNzLnBvaW50ZXJdPVwiY29sLm9yZGVyLnZpc2libGVcIiAoY2xpY2spPVwiKCBjb2wub3JkZXIudmlzaWJsZSA/IG9uT3JkZXJDaGFuZ2UoeyBmaWVsZDogY29sLmZpZWxkLCBhc2M6ICggY29sLm9yZGVyLmFjdGl2ZSA/ICFjb2wub3JkZXIuYXNjIDogdHJ1ZSApIH0pIDogcmV0dXJuIClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjb2wubGFiZWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29sLm9yZGVyLnZpc2libGUgJiYgY29sLm9yZGVyLmFjdGl2ZSAmJiAhY29sLm9yZGVyLmFzY1wiIGNsYXNzPVwiYmkgYmktY2hldnJvbi1kb3duIG1zLTFcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29sLm9yZGVyLnZpc2libGUgJiYgY29sLm9yZGVyLmFjdGl2ZSAmJiBjb2wub3JkZXIuYXNjXCIgY2xhc3M9XCJiaSBiaS1jaGV2cm9uLXVwIG1zLTFcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjb2wtY29tcGFjdFwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmVkaXQ/LmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMuZGVsZXRlPy5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5hY3Rpb25zLmVuYWJsZWQ/LmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMuZGlzYWJsZWQ/LmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMubG9naW5Bcz8uYWN0aXZlXCI+PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJlZ2lzdGVyIG9mIHJlZ2lzdGVyc1JlbmRlcjsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciBhdHRyLmRhdGEtaWQ9XCJzZWxlY3QtcmVnaXN0ZXIte3sgZGF0YUlkIH19LXt7IGkgfX1cIiBbY2xhc3MucG9pbnRlcl09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uc2VsZWN0Py5hY3RpdmVcIiAoY2xpY2spPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LnNlbGVjdD8uYWN0aXZlID8gb25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCx0eXBlOiAnc2VsZWN0JyxkYXRhOiByZWdpc3RlciwgaW5kZXg6IGl9KTpyZXR1cm5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5jaGVjaz8uYWN0aXZlXCIgKGNsaWNrKT1cInN0b3BQcm9wYWdhdGlvbigkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmFjdGl2ZVwiIFtkaXNhYmxlZF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmRpc2FibGVkXCIgYXR0ci5kYXRhLWlkPVwiYm94LXNlbGVjdC1yZWdpc3Rlci17eyBkYXRhSWQgfX0te3sgaSB9fVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5jaGVja2VkXCIgKGNoYW5nZSk9XCJzZXRTZWxlY3RBbGwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGhlYWRSb3dSZW5kZXI7IGxldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbY2xhc3MudGV4dC1lbmRdPVwiY29sLnR5cGUgPT0gJ251bWJlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbC5maWVsZCAhPSAnaXNfYWN0aXZlJzsgZWxzZSByZW5kZXJJc0FjdGl2ZVwiIFtpbm5lckhUTUxdPVwicmVnaXN0ZXJzW2ldWyhjb2wuZmllbGQgPT0gbnVsbCB8fCBjb2wuZmllbGQgPT0gJycgPyBvYmplY3RLZXlzKHJlZ2lzdGVyKVtqXSA6IGNvbC5maWVsZCldXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVuZGVySXNBY3RpdmU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdHRyLmRhdGEtaWQ9XCJib3gtaXMtYWN0aXZlLXt7IGRhdGFJZCB9fS17eyBpIH19XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgW25nTW9kZWxdPVwicmVnaXN0ZXJzW2ldW2NvbC5maWVsZF1cIiAobmdNb2RlbENoYW5nZSk9XCJvbkFjdGlvbkNsaWNrKHt0eXBlOiAnY2hhbmdlSXNBY3RpdmUnLCBkYXRhOiAkZXZlbnQsIGluZGV4OiBpfSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmVkaXQ/LmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMuZGVsZXRlPy5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5hY3Rpb25zLmVuYWJsZWQ/LmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMuZGlzYWJsZWQ/LmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMubG9naW5Bcz8uYWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cImVkaXQtcmVnaXN0ZXIte3sgZGF0YUlkIH19LXt7IGkgfX1cIiAqbmdJZj1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5lZGl0Py5hY3RpdmVcIiBbZGlzYWJsZWRdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmVkaXQ/LmRpc2FibGVkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG14LTFcIiBbY2xhc3MuYnRuLXNtXT1cImNvbmZpZ3NSZW5kZXIudGFibGVTaXplID09ICdzbWFsbCdcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCx0eXBlOiAnZWRpdCcsZGF0YTogcmVnaXN0ZXIsIGluZGV4OiBpfSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5lZGl0Py5sYWJlbEh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwiZGVsZXRlLXJlZ2lzdGVyLXt7IGRhdGFJZCB9fS17eyBpIH19XCIgKm5nSWY9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGVsZXRlPy5hY3RpdmVcIiBbZGlzYWJsZWRdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmRlbGV0ZT8ubG9hZGluZyB8fCByZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGVsZXRlPy5kaXNhYmxlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIG14LTFcIiBbY2xhc3MuYnRuLXNtXT1cImNvbmZpZ3NSZW5kZXIudGFibGVTaXplID09ICdzbWFsbCdcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCx0eXBlOiAnZGVsZXRlJyxkYXRhOiByZWdpc3RlciwgaW5kZXg6IGl9KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmRlbGV0ZT8ubG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5kZWxldGU/LmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJlbmFibGUtcmVnaXN0ZXIte3sgZGF0YUlkIH19LXt7IGkgfX1cIiAqbmdJZj1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5lbmFibGVkPy5hY3RpdmVcIiBbZGlzYWJsZWRdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmVuYWJsZWQ/LmxvYWRpbmcgfHwgcmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmVuYWJsZWQ/LmRpc2FibGVkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIG14LTFcIiBbY2xhc3MuYnRuLXNtXT1cImNvbmZpZ3NSZW5kZXIudGFibGVTaXplID09ICdzbWFsbCdcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCx0eXBlOiAnZW5hYmxlZCcsZGF0YTogcmVnaXN0ZXIsIGluZGV4OiBpfSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5lbmFibGVkPy5sb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmVuYWJsZWQ/LmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJkaXNhYmxlLXJlZ2lzdGVyLXt7IGRhdGFJZCB9fS17eyBpIH19XCIgKm5nSWY9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGlzYWJsZWQ/LmFjdGl2ZVwiIFtkaXNhYmxlZF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGlzYWJsZWQ/LmxvYWRpbmcgfHwgcmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmRpc2FibGVkPy5kaXNhYmxlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIG14LTFcIiBbY2xhc3MuYnRuLXNtXT1cImNvbmZpZ3NSZW5kZXIudGFibGVTaXplID09ICdzbWFsbCdcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCx0eXBlOiAnZGlzYWJsZWQnLGRhdGE6IHJlZ2lzdGVyLCBpbmRleDogaX0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGlzYWJsZWQ/LmxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4mbmJzcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGlzYWJsZWQ/LmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJsb2dpbi1hcy17eyBkYXRhSWQgfX0te3sgaSB9fVwiICpuZ0lmPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmxvZ2luQXM/LmFjdGl2ZVwiIFtkaXNhYmxlZF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8ubG9naW5Bcz8ubG9hZGluZyB8fCByZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8ubG9naW5Bcz8uZGlzYWJsZWRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXgtMVwiIFtjbGFzcy5idG4tc21dPVwiY29uZmlnc1JlbmRlci50YWJsZVNpemUgPT0gJ3NtYWxsJ1wiIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKHtldmVudDogJGV2ZW50LHR5cGU6ICdsb2dpbkFzJyxkYXRhOiByZWdpc3RlciwgaW5kZXg6IGl9KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmxvZ2luQXM/LmxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4mbmJzcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8ubG9naW5Bcz8ubGFiZWxIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1zdGlja3kgYm90dG9tLTAgYmctd2hpdGVcIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIucGFnaW5hdGlvbkFjdGl2ZSAmJiBjb25maWdzUmVuZGVyLmNvbGxlY3Rpb25TaXplID4gMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWVuZCBib3JkZXItdG9wIHB0LTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICA8bmdiLXBhZ2luYXRpb25cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwiY29uZmlnc1JlbmRlci5wYWdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25TaXplXT1cImNvbmZpZ3NSZW5kZXIuY29sbGVjdGlvblNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsocGFnZSldPVwiY29uZmlnc1JlbmRlci5wYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbWF4U2l6ZV09XCI1XCJcclxuICAgICAgICAgICAgICAgICAgICBbcm90YXRlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtib3VuZGFyeUxpbmtzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtlbGxpcHNlc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFnaW5hdGlvbk51bWJlciBsZXQtcGFnZT48c3BhbiBhdHRyLmRhdGEtaWQ9XCJwYWdlLXt7IGRhdGFJZCB9fS17eyBwYWdlIH19XCI+e3sgcGFnZSB9fTwvc3Bhbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYWdpbmF0aW9uRmlyc3Q+PHNwYW4gYXR0ci5kYXRhLWlkPVwicGFnZS1maXJzdC17eyBkYXRhSWQgfX1cIj7Cq8KrPC9zcGFuPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhZ2luYXRpb25MYXN0PjxzcGFuIGF0dHIuZGF0YS1pZD1cInBhZ2UtbGFzdC17eyBkYXRhSWQgfX1cIj7Cu8K7PC9zcGFuPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhZ2luYXRpb25QcmV2aW91cz48c3BhbiBhdHRyLmRhdGEtaWQ9XCJwYWdlLXByZXZpdXMte3sgZGF0YUlkIH19XCI+wqs8L3NwYW4+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFnaW5hdGlvbk5leHQ+PHNwYW4gYXR0ci5kYXRhLWlkPVwicGFnZS1uZXh0LXt7IGRhdGFJZCB9fVwiPsK7PC9zcGFuPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -189,6 +189,9 @@ class NgxTableComponent {
|
|
|
189
189
|
this.headRowRender.push(Object.assign(Object.assign(Object.assign({}, this.configsDefault.colHead), head), { order: Object.assign(Object.assign({}, this.configsDefault.colHead.order), head.order) }));
|
|
190
190
|
}
|
|
191
191
|
this.configsRender = Object.assign({ titleTable: this.configsDefault.titleTable, loading: this.configsDefault.loading, paginationActive: this.configsDefault.paginationActive, page: this.configsDefault.page, pageSize: this.configsDefault.pageSize, collectionSize: this.configsDefault.collectionSize, tableSize: this.configsDefault.tableSize, labels: this.configsDefault.labels, search: this.configsDefault.search, order: this.configsDefault.order, actions: this.configsDefault.actions }, this.configs);
|
|
192
|
+
if (!this.configs.labels) {
|
|
193
|
+
this.configs.labels = {};
|
|
194
|
+
}
|
|
192
195
|
if (!this.configs.labels.tooltips) {
|
|
193
196
|
this.configs.labels.tooltips = {};
|
|
194
197
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"experteam-mx-ngx-table.mjs","sources":["../../../projects/ngx-table/src/lib/ngx-table.service.ts","../../../projects/ngx-table/src/lib/ngx-table.component.ts","../../../projects/ngx-table/src/lib/ngx-table.component.html","../../../projects/ngx-table/src/lib/ngx-table.module.ts","../../../projects/ngx-table/src/public-api.ts","../../../projects/ngx-table/src/experteam-mx-ngx-table.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxTableService {\r\n\r\n dataCount = 0\r\n\r\n onChangeTooltips = new BehaviorSubject<boolean>(false);\r\n tooltips: any = {\r\n clearSearch: 'Clear Search'\r\n }\r\n\r\n constructor() { }\r\n\r\n get dataId(){\r\n return this.dataCount ++\r\n }\r\n\r\n changeTooltips( tooltips: any ){\r\n this.tooltips = {\r\n ...this.tooltips,\r\n ...tooltips\r\n }\r\n\r\n this.onChangeTooltips.next( true )\r\n }\r\n}\r\n","import {Component, OnInit, OnChanges, Input, Output, EventEmitter, SimpleChanges, ViewChild} from '@angular/core';\r\nimport { NgxTableService } from './ngx-table.service'\r\n\r\n@Component({\r\n selector: 'ngx-table',\r\n templateUrl: './ngx-table.component.html',\r\n styleUrls: ['./ngx-table.component.scss']\r\n})\r\nexport class NgxTableComponent implements OnInit, OnChanges {\r\n @Input() headRow: any[] = [];\r\n headRowRender: any[] = [];\r\n\r\n @Input() registers: any[] = [];\r\n registersRender: any[] = [];\r\n\r\n @Input() configs: any;\r\n configsRender: any = {};\r\n\r\n @Output() changePage = new EventEmitter<Object>();\r\n @Output() clickEvent = new EventEmitter<Object>();\r\n\r\n @ViewChild('selectAll') checkSelectAll: any;\r\n\r\n configsDefault: any = {\r\n titleTable: null,\r\n loading: false,\r\n paginationActive: false,\r\n page: 1,\r\n pageSize: 15,\r\n collectionSize: 0,\r\n tableSize: 'normal',\r\n labels: {\r\n noRegisters: 'Registers no found',\r\n tooltips:{\r\n ...this._NgxTableService.tooltips\r\n }\r\n },\r\n search: {\r\n active: false,\r\n textSearch: '',\r\n placeholderSearch: 'Search'\r\n },\r\n order: {\r\n active: false,\r\n field: null,\r\n asc: false\r\n },\r\n actions: {\r\n add: {\r\n active: false,\r\n labelHtml: null\r\n },\r\n select: {\r\n active: false,\r\n labelHtml: null\r\n },\r\n edit: {\r\n active: false,\r\n labelHtml: null,\r\n disabled: false\r\n },\r\n delete: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n enabled: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n disabled: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n loginAs: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n check: {\r\n disabled: false,\r\n active: false,\r\n checked: false\r\n },\r\n enableSelected: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false\r\n },\r\n disableSelected: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false\r\n },\r\n },\r\n colHead: {\r\n label: null,\r\n type: 'string',\r\n field: null,\r\n order: {\r\n visible: false,\r\n active: false,\r\n asc: false\r\n }\r\n },\r\n enableAll: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Enable all'\r\n },\r\n disableAll: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Disable all'\r\n },\r\n saveChanges: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Save changes',\r\n loading: false\r\n }\r\n };\r\n\r\n dataId: any\r\n\r\n constructor(\r\n public _NgxTableService: NgxTableService\r\n ) {\r\n this.dataId = _NgxTableService.dataId\r\n }\r\n\r\n objectKeys(registers: any) {\r\n let registros = [];\r\n\r\n for (let key of Object.keys(registers)) {\r\n if (key != 'configRegister') {\r\n registros.push(key);\r\n }\r\n }\r\n\r\n return registros;\r\n }\r\n\r\n onPageChange() {\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n }\r\n\r\n onKeySearch() {\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n }\r\n\r\n onRestarSeach() {\r\n this.configsRender.search.textSearch = '';\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n }\r\n\r\n onActionClick(object: any) {\r\n object.event?.preventDefault();\r\n object.event?.stopPropagation();\r\n\r\n this.clickEvent.emit({\r\n type: object.type,\r\n data: object.data,\r\n index: object.index\r\n });\r\n }\r\n\r\n render() {\r\n this.headRowRender = [];\r\n\r\n for (let head of this.headRow) {\r\n this.headRowRender.push({\r\n ...this.configsDefault.colHead,\r\n ...head,\r\n order: {\r\n ...this.configsDefault.colHead.order,\r\n ...head.order\r\n }\r\n });\r\n }\r\n\r\n this.configsRender = {\r\n titleTable: this.configsDefault.titleTable,\r\n loading: this.configsDefault.loading,\r\n paginationActive: this.configsDefault.paginationActive,\r\n page: this.configsDefault.page,\r\n pageSize: this.configsDefault.pageSize,\r\n collectionSize: this.configsDefault.collectionSize,\r\n tableSize: this.configsDefault.tableSize,\r\n labels: this.configsDefault.labels,\r\n search: this.configsDefault.search,\r\n order: this.configsDefault.order,\r\n actions: this.configsDefault.actions,\r\n ...this.configs\r\n };\r\n\r\n if( !this.configs.labels.tooltips ){\r\n this.configs.labels.tooltips = {}\r\n }\r\n\r\n if( !this.configs.labels.tooltips.clearSearch ){\r\n this.configs.labels.tooltips.clearSearch = ''\r\n }\r\n if( this.configs.labels.tooltips.clearSearch == '' || this.configsDefault.labels.tooltips.clearSearch != this._NgxTableService.tooltips.clearSearch ){\r\n this.configsRender.labels.tooltips.clearSearch = this._NgxTableService.tooltips.clearSearch\r\n this.configsDefault.labels.tooltips.clearSearch = this._NgxTableService.tooltips.clearSearch\r\n }\r\n\r\n this.setConfigsDefault('enableAll');\r\n this.setConfigsDefault('disableAll');\r\n this.setConfigsDefault('saveChanges');\r\n\r\n this.registersRender = [];\r\n\r\n for (let register of this.registers) {\r\n this.registersRender.push({\r\n ...register,\r\n configRegister: {\r\n actions: {\r\n ...this.configsRender.actions,\r\n loginAs: {\r\n ...this.configsRender.actions.loginAs\r\n },\r\n check: {\r\n ...this.configsRender.actions.check\r\n },\r\n ...register.configRegister?.actions\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n stopPropagation(e: any) {\r\n e.stopPropagation();\r\n }\r\n\r\n setSelectAll() {\r\n this.checkSelectAll.nativeElement.indeterminate = false;\r\n this.checkSelectAll.nativeElement.checked = false;\r\n let contCheck = this.getSelectedPices();\r\n\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n if (registerChecksEnabled.length == 0) {\r\n return;\r\n }\r\n\r\n if (registerChecksEnabled.length == contCheck) {\r\n this.checkSelectAll.nativeElement.checked = true;\r\n } else {\r\n if (contCheck != 0) {\r\n this.checkSelectAll.nativeElement.indeterminate = true;\r\n }\r\n }\r\n\r\n this.onActionClick({\r\n type: 'checked',\r\n data: this.checkedRegisters()\r\n });\r\n }\r\n\r\n getSelectedPices() {\r\n let contCheck = 0;\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n for (let register of registerChecksEnabled) {\r\n contCheck += (register.configRegister.actions.check.checked ? 1 : 0);\r\n }\r\n\r\n return contCheck;\r\n }\r\n\r\n onChangeSelectAll() {\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n if (this.checkSelectAll.nativeElement.checked) {\r\n for (let register of registerChecksEnabled) {\r\n register.configRegister.actions.check.checked = true;\r\n }\r\n } else {\r\n for (let register of registerChecksEnabled) {\r\n register.configRegister.actions.check.checked = false;\r\n }\r\n }\r\n\r\n this.onActionClick({\r\n type: 'checked',\r\n data: this.checkedRegisters()\r\n });\r\n }\r\n\r\n checkedRegisters() {\r\n let checkedRegister = [];\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n for (let register of registerChecksEnabled) {\r\n if (register.configRegister.actions.check.checked) {\r\n checkedRegister.push({\r\n ...register\r\n });\r\n }\r\n }\r\n\r\n return checkedRegister;\r\n }\r\n\r\n activeOrder(config: any) {\r\n for (let head of this.headRowRender) {\r\n if (head.field == config.field) {\r\n head.order.active = true;\r\n head.order.asc = config.asc;\r\n } else {\r\n head.order.active = false;\r\n }\r\n }\r\n }\r\n\r\n onOrderChange(config: any) {\r\n this.activeOrder({\r\n field: config.field,\r\n asc: config.asc\r\n });\r\n\r\n this.clickEvent.emit({\r\n type: 'order',\r\n data: {\r\n field: config.field,\r\n asc: config.asc\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.render();\r\n\r\n this._NgxTableService.onChangeTooltips.subscribe(\r\n (status)=>{\r\n if(status){\r\n this.render();\r\n }\r\n }\r\n )\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.render();\r\n }\r\n\r\n setConfigsDefault(key: string) {\r\n if (this.configsRender[key] == null) {\r\n this.configsRender[key] = this.configsDefault[key];\r\n } else {\r\n if (this.configsRender[key].active == null) {\r\n this.configsRender[key].active = this.configsDefault[key].active;\r\n }\r\n\r\n if (this.configsRender[key].disabled == null) {\r\n this.configsRender[key].disabled = this.configsDefault[key].disabled;\r\n }\r\n\r\n if (this.configsRender[key].labelHtml == null) {\r\n this.configsRender[key].labelHtml = this.configsDefault[key].labelHtml;\r\n }\r\n\r\n if (key == 'saveChanges' && this.configsRender[key].loading == null) {\r\n this.configsRender[key].loading = this.configsDefault[key].loading;\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"container-fluid\">\r\n <h3 class=\"text-center\" *ngIf=\"configsRender.titleTable != null\">{{ configsRender.titleTable }}</h3>\r\n <div class=\"row justify-content-end mb-2\" *ngIf=\"(configsRender.actions.enableSelected?.active) || (configsRender.actions.disableSelected?.active) || configsRender.enableAll.active || configsRender.disableAll.active || configsRender.saveChanges.active || configsRender.actions.add?.active || configsRender.search.active\">\r\n <div class=\"col d-flex justify-content-end\" *ngIf=\"(configsRender.actions.enableSelected?.active) || (configsRender.actions.disableSelected?.active) || configsRender.enableAll.active || configsRender.disableAll.active || configsRender.saveChanges.active || configsRender.actions.add?.active\">\r\n <button attr.data-id=\"enable-selected-{{ dataId }}\" *ngIf=\"configsRender.actions.enableSelected?.active\" [disabled]=\"configsRender.actions.enableSelected?.loading || checkedRegisters().length == 0\" type=\"button\" class=\"btn btn-success mx-1\" (click)=\"onActionClick({event: $event,type: 'enableSelected', data: checkedRegisters()})\">\r\n <span *ngIf=\"configsRender.actions.enableSelected?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"configsRender.actions.enableSelected.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-selected-{{ dataId }}\" *ngIf=\"configsRender.actions.disableSelected?.active\" [disabled]=\"configsRender.actions.disableSelected?.loading || checkedRegisters().length == 0\" type=\"button\" class=\"btn btn-danger mx-1\" (click)=\"onActionClick({event: $event,type: 'disableSelected', data: checkedRegisters()})\">\r\n <span *ngIf=\"configsRender.actions.disableSelected?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"configsRender.actions.disableSelected?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"enable-all-{{ dataId }}\" *ngIf=\"configsRender.enableAll.active\" type=\"button\" class=\"btn btn-success mx-1\" [disabled]=\"configsRender.enableAll.disabled\" (click)=\"onActionClick({event: $event, type: 'enableAll'})\">\r\n <span [innerHTML]=\"configsRender.enableAll.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-all-{{ dataId }}\" *ngIf=\"configsRender.disableAll.active\" type=\"button\" class=\"btn btn-danger mx-1\" [disabled]=\"configsRender.disableAll.disabled\" (click)=\"onActionClick({event: $event, type: 'disableAll'})\">\r\n <span [innerHTML]=\"configsRender.disableAll.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"save-changes-{{ dataId }}\" *ngIf=\"configsRender.saveChanges.active\" type=\"button\" class=\"btn btn-primary mx-1\" [disabled]=\"configsRender.saveChanges.disabled || configsRender.saveChanges.loading\" (click)=\"onActionClick({event: $event, type: 'saveChanges'})\">\r\n <span *ngIf=\"configsRender.saveChanges.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"configsRender.saveChanges.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"add-register-{{ dataId }}\" *ngIf=\"configsRender.actions.add?.active\" class=\"btn btn-success\" type=\"button\" (click)=\"onActionClick({event: $event, type: 'add'})\">\r\n <span [innerHTML]=\"configsRender.actions.add?.labelHtml\"></span>\r\n </button>\r\n </div>\r\n <div class=\"col-lg-3\" *ngIf=\"configsRender.search.active\">\r\n <div class=\"input-group\">\r\n <input attr.data-id=\"input-search-{{ dataId }}\" type=\"text\" class=\"form-control\" [(ngModel)]=\"configsRender.search.textSearch\" [placeholder]=\"configsRender.search.placeholderSearch != undefined ? configsRender.search.placeholderSearch : ''\" (input)=\"onKeySearch()\">\r\n <button attr.data-id=\"restart-search-{{ dataId }}\" class=\"btn btn-primary\" type=\"button\" (click)=\"onRestarSeach()\" [ngbTooltip]=\"configsRender.labels?.tooltips?.clearSearch\">\r\n <i class=\"bi bi-arrow-counterclockwise\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <ngx-skeleton-loader *ngIf=\"configsRender.loading\" count=\"5\"></ngx-skeleton-loader>\r\n <p *ngIf=\"!configsRender.loading && configsRender.collectionSize == 0\" class=\"text-center\">{{ configsRender.labels.noRegisters }}</p>\r\n <div *ngIf=\"!configsRender.loading && configsRender.collectionSize > 0\" class=\"table-responsive\">\r\n <table class=\"table table-striped table-bordered\" [class.table-sm]=\"configsRender.tableSize == 'small'\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-center\" *ngIf=\"configsRender.actions.check?.active\">\r\n <input attr.data-id=\"box-select-all-{{ dataId }}\" #selectAll class=\"form-check-input\" type=\"checkbox\" (change)=\"onChangeSelectAll()\">\r\n </th>\r\n <th *ngFor=\"let col of headRowRender\" [class.pointer]=\"col.order.visible\" (click)=\"( col.order.visible ? onOrderChange({ field: col.field, asc: ( col.order.active ? !col.order.asc : true ) }) : return )\">\r\n <span [innerHTML]=\"col.label\"></span>\r\n <i *ngIf=\"col.order.visible && col.order.active && !col.order.asc\" class=\"bi bi-chevron-down ms-1\"></i>\r\n <i *ngIf=\"col.order.visible && col.order.active && col.order.asc\" class=\"bi bi-chevron-up ms-1\"></i>\r\n </th>\r\n <th class=\"col-compact\" *ngIf=\"configsRender.actions.edit?.active || configsRender.actions.delete?.active || configsRender.actions.enabled?.active || configsRender.actions.disabled?.active || configsRender.actions.loginAs?.active\"></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let register of registersRender; let i = index\">\r\n <tr attr.data-id=\"select-register-{{ dataId }}-{{ i }}\" [class.pointer]=\"register.configRegister?.actions?.select?.active\" (click)=\"register.configRegister?.actions?.select?.active ? onActionClick({event: $event,type: 'select',data: register, index: i}):return\">\r\n <td class=\"text-center\" *ngIf=\"configsRender.actions.check?.active\" (click)=\"stopPropagation($event)\">\r\n <input *ngIf=\"register.configRegister.actions.check.active\" [disabled]=\"register.configRegister.actions.check.disabled\" attr.data-id=\"box-select-register-{{ dataId }}-{{ i }}\" class=\"form-check-input\" type=\"checkbox\" [(ngModel)]=\"register.configRegister.actions.check.checked\" (change)=\"setSelectAll()\">\r\n </td>\r\n\r\n <ng-container *ngFor=\"let col of headRowRender; let j = index\">\r\n <td [class.text-end]=\"col.type == 'number'\">\r\n <span *ngIf=\"col.field != 'is_active'; else renderIsActive\" [innerHTML]=\"registers[i][(col.field == null || col.field == '' ? objectKeys(register)[j] : col.field)]\"></span>\r\n <ng-template #renderIsActive>\r\n <input attr.data-id=\"box-is-active-{{ dataId }}-{{ i }}\" class=\"form-check-input\" type=\"checkbox\" [ngModel]=\"registers[i][col.field]\" (ngModelChange)=\"onActionClick({type: 'changeIsActive', data: $event, index: i})\">\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n\r\n <td class=\"text-nowrap\" *ngIf=\"configsRender.actions.edit?.active || configsRender.actions.delete?.active || configsRender.actions.enabled?.active || configsRender.actions.disabled?.active || configsRender.actions.loginAs?.active\">\r\n <button attr.data-id=\"edit-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.edit?.active\" [disabled]=\"register.configRegister?.actions?.edit?.disabled\" type=\"button\" class=\"btn btn-primary mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'edit',data: register, index: i})\">\r\n <span [innerHTML]=\"register.configRegister?.actions?.edit?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"delete-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.delete?.active\" [disabled]=\"register.configRegister?.actions?.delete?.loading || register.configRegister?.actions?.delete?.disabled\" type=\"button\" class=\"btn btn-danger mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'delete',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.delete?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.delete?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"enable-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.enabled?.active\" [disabled]=\"register.configRegister?.actions?.enabled?.loading || register.configRegister?.actions?.enabled?.disabled\" type=\"button\" class=\"btn btn-success mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'enabled',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.enabled?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.enabled?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.disabled?.active\" [disabled]=\"register.configRegister?.actions?.disabled?.loading || register.configRegister?.actions?.disabled?.disabled\" type=\"button\" class=\"btn btn-danger mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'disabled',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.disabled?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.disabled?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"login-as-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.loginAs?.active\" [disabled]=\"register.configRegister?.actions?.loginAs?.loading || register.configRegister?.actions?.loginAs?.disabled\" type=\"button\" class=\"btn btn-primary mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'loginAs',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.loginAs?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.loginAs?.labelHtml\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"position-sticky bottom-0 bg-white\" *ngIf=\"configsRender.paginationActive && configsRender.collectionSize > 0\">\r\n <div class=\"row justify-content-end border-top pt-2\">\r\n <div class=\"col-sm-6\">\r\n <ngb-pagination\r\n class=\"d-flex justify-content-center\"\r\n [pageSize]=\"configsRender.pageSize\"\r\n [collectionSize]=\"configsRender.collectionSize\"\r\n [(page)]=\"configsRender.page\"\r\n [maxSize]=\"5\"\r\n [rotate]=\"true\"\r\n [boundaryLinks]=\"true\"\r\n [ellipses]=\"true\"\r\n (pageChange)=\"onPageChange()\"\r\n size=\"sm\"\r\n >\r\n <ng-template ngbPaginationNumber let-page><span attr.data-id=\"page-{{ dataId }}-{{ page }}\">{{ page }}</span></ng-template>\r\n <ng-template ngbPaginationFirst><span attr.data-id=\"page-first-{{ dataId }}\">««</span></ng-template>\r\n <ng-template ngbPaginationLast><span attr.data-id=\"page-last-{{ dataId }}\">»»</span></ng-template>\r\n <ng-template ngbPaginationPrevious><span attr.data-id=\"page-previus-{{ dataId }}\">«</span></ng-template>\r\n <ng-template ngbPaginationNext><span attr.data-id=\"page-next-{{ dataId }}\">»</span></ng-template>\r\n </ngb-pagination>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { NgxTableComponent } from './ngx-table.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxTableComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n NgbModule,\r\n NgxSkeletonLoaderModule,\r\n ],\r\n exports: [\r\n NgxTableComponent\r\n ]\r\n})\r\nexport class NgxTableModule { }\r\n","/*\r\n * Public API Surface of ngx-table\r\n */\r\n\r\nexport * from './lib/ngx-table.service';\r\nexport * from './lib/ngx-table.component';\r\nexport * from './lib/ngx-table.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"experteam-mx-ngx-table.mjs","sources":["../../../projects/ngx-table/src/lib/ngx-table.service.ts","../../../projects/ngx-table/src/lib/ngx-table.component.ts","../../../projects/ngx-table/src/lib/ngx-table.component.html","../../../projects/ngx-table/src/lib/ngx-table.module.ts","../../../projects/ngx-table/src/public-api.ts","../../../projects/ngx-table/src/experteam-mx-ngx-table.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxTableService {\r\n\r\n dataCount = 0\r\n\r\n onChangeTooltips = new BehaviorSubject<boolean>(false);\r\n tooltips: any = {\r\n clearSearch: 'Clear Search'\r\n }\r\n\r\n constructor() { }\r\n\r\n get dataId(){\r\n return this.dataCount ++\r\n }\r\n\r\n changeTooltips( tooltips: any ){\r\n this.tooltips = {\r\n ...this.tooltips,\r\n ...tooltips\r\n }\r\n\r\n this.onChangeTooltips.next( true )\r\n }\r\n}\r\n","import {Component, OnInit, OnChanges, Input, Output, EventEmitter, SimpleChanges, ViewChild} from '@angular/core';\r\nimport { NgxTableService } from './ngx-table.service'\r\n\r\n@Component({\r\n selector: 'ngx-table',\r\n templateUrl: './ngx-table.component.html',\r\n styleUrls: ['./ngx-table.component.scss']\r\n})\r\nexport class NgxTableComponent implements OnInit, OnChanges {\r\n @Input() headRow: any[] = [];\r\n headRowRender: any[] = [];\r\n\r\n @Input() registers: any[] = [];\r\n registersRender: any[] = [];\r\n\r\n @Input() configs: any;\r\n configsRender: any = {};\r\n\r\n @Output() changePage = new EventEmitter<Object>();\r\n @Output() clickEvent = new EventEmitter<Object>();\r\n\r\n @ViewChild('selectAll') checkSelectAll: any;\r\n\r\n configsDefault: any = {\r\n titleTable: null,\r\n loading: false,\r\n paginationActive: false,\r\n page: 1,\r\n pageSize: 15,\r\n collectionSize: 0,\r\n tableSize: 'normal',\r\n labels: {\r\n noRegisters: 'Registers no found',\r\n tooltips:{\r\n ...this._NgxTableService.tooltips\r\n }\r\n },\r\n search: {\r\n active: false,\r\n textSearch: '',\r\n placeholderSearch: 'Search'\r\n },\r\n order: {\r\n active: false,\r\n field: null,\r\n asc: false\r\n },\r\n actions: {\r\n add: {\r\n active: false,\r\n labelHtml: null\r\n },\r\n select: {\r\n active: false,\r\n labelHtml: null\r\n },\r\n edit: {\r\n active: false,\r\n labelHtml: null,\r\n disabled: false\r\n },\r\n delete: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n enabled: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n disabled: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n loginAs: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n check: {\r\n disabled: false,\r\n active: false,\r\n checked: false\r\n },\r\n enableSelected: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false\r\n },\r\n disableSelected: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false\r\n },\r\n },\r\n colHead: {\r\n label: null,\r\n type: 'string',\r\n field: null,\r\n order: {\r\n visible: false,\r\n active: false,\r\n asc: false\r\n }\r\n },\r\n enableAll: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Enable all'\r\n },\r\n disableAll: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Disable all'\r\n },\r\n saveChanges: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Save changes',\r\n loading: false\r\n }\r\n };\r\n\r\n dataId: any\r\n\r\n constructor(\r\n public _NgxTableService: NgxTableService\r\n ) {\r\n this.dataId = _NgxTableService.dataId\r\n }\r\n\r\n objectKeys(registers: any) {\r\n let registros = [];\r\n\r\n for (let key of Object.keys(registers)) {\r\n if (key != 'configRegister') {\r\n registros.push(key);\r\n }\r\n }\r\n\r\n return registros;\r\n }\r\n\r\n onPageChange() {\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n }\r\n\r\n onKeySearch() {\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n }\r\n\r\n onRestarSeach() {\r\n this.configsRender.search.textSearch = '';\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n }\r\n\r\n onActionClick(object: any) {\r\n object.event?.preventDefault();\r\n object.event?.stopPropagation();\r\n\r\n this.clickEvent.emit({\r\n type: object.type,\r\n data: object.data,\r\n index: object.index\r\n });\r\n }\r\n\r\n render() {\r\n this.headRowRender = [];\r\n\r\n for (let head of this.headRow) {\r\n this.headRowRender.push({\r\n ...this.configsDefault.colHead,\r\n ...head,\r\n order: {\r\n ...this.configsDefault.colHead.order,\r\n ...head.order\r\n }\r\n });\r\n }\r\n\r\n this.configsRender = {\r\n titleTable: this.configsDefault.titleTable,\r\n loading: this.configsDefault.loading,\r\n paginationActive: this.configsDefault.paginationActive,\r\n page: this.configsDefault.page,\r\n pageSize: this.configsDefault.pageSize,\r\n collectionSize: this.configsDefault.collectionSize,\r\n tableSize: this.configsDefault.tableSize,\r\n labels: this.configsDefault.labels,\r\n search: this.configsDefault.search,\r\n order: this.configsDefault.order,\r\n actions: this.configsDefault.actions,\r\n ...this.configs\r\n };\r\n\r\n if( !this.configs.labels ){\r\n this.configs.labels = {}\r\n }\r\n\r\n if( !this.configs.labels.tooltips ){\r\n this.configs.labels.tooltips = {}\r\n }\r\n\r\n if( !this.configs.labels.tooltips.clearSearch ){\r\n this.configs.labels.tooltips.clearSearch = ''\r\n }\r\n if( this.configs.labels.tooltips.clearSearch == '' || this.configsDefault.labels.tooltips.clearSearch != this._NgxTableService.tooltips.clearSearch ){\r\n this.configsRender.labels.tooltips.clearSearch = this._NgxTableService.tooltips.clearSearch\r\n this.configsDefault.labels.tooltips.clearSearch = this._NgxTableService.tooltips.clearSearch\r\n }\r\n\r\n this.setConfigsDefault('enableAll');\r\n this.setConfigsDefault('disableAll');\r\n this.setConfigsDefault('saveChanges');\r\n\r\n this.registersRender = [];\r\n\r\n for (let register of this.registers) {\r\n this.registersRender.push({\r\n ...register,\r\n configRegister: {\r\n actions: {\r\n ...this.configsRender.actions,\r\n loginAs: {\r\n ...this.configsRender.actions.loginAs\r\n },\r\n check: {\r\n ...this.configsRender.actions.check\r\n },\r\n ...register.configRegister?.actions\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n stopPropagation(e: any) {\r\n e.stopPropagation();\r\n }\r\n\r\n setSelectAll() {\r\n this.checkSelectAll.nativeElement.indeterminate = false;\r\n this.checkSelectAll.nativeElement.checked = false;\r\n let contCheck = this.getSelectedPices();\r\n\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n if (registerChecksEnabled.length == 0) {\r\n return;\r\n }\r\n\r\n if (registerChecksEnabled.length == contCheck) {\r\n this.checkSelectAll.nativeElement.checked = true;\r\n } else {\r\n if (contCheck != 0) {\r\n this.checkSelectAll.nativeElement.indeterminate = true;\r\n }\r\n }\r\n\r\n this.onActionClick({\r\n type: 'checked',\r\n data: this.checkedRegisters()\r\n });\r\n }\r\n\r\n getSelectedPices() {\r\n let contCheck = 0;\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n for (let register of registerChecksEnabled) {\r\n contCheck += (register.configRegister.actions.check.checked ? 1 : 0);\r\n }\r\n\r\n return contCheck;\r\n }\r\n\r\n onChangeSelectAll() {\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n if (this.checkSelectAll.nativeElement.checked) {\r\n for (let register of registerChecksEnabled) {\r\n register.configRegister.actions.check.checked = true;\r\n }\r\n } else {\r\n for (let register of registerChecksEnabled) {\r\n register.configRegister.actions.check.checked = false;\r\n }\r\n }\r\n\r\n this.onActionClick({\r\n type: 'checked',\r\n data: this.checkedRegisters()\r\n });\r\n }\r\n\r\n checkedRegisters() {\r\n let checkedRegister = [];\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n for (let register of registerChecksEnabled) {\r\n if (register.configRegister.actions.check.checked) {\r\n checkedRegister.push({\r\n ...register\r\n });\r\n }\r\n }\r\n\r\n return checkedRegister;\r\n }\r\n\r\n activeOrder(config: any) {\r\n for (let head of this.headRowRender) {\r\n if (head.field == config.field) {\r\n head.order.active = true;\r\n head.order.asc = config.asc;\r\n } else {\r\n head.order.active = false;\r\n }\r\n }\r\n }\r\n\r\n onOrderChange(config: any) {\r\n this.activeOrder({\r\n field: config.field,\r\n asc: config.asc\r\n });\r\n\r\n this.clickEvent.emit({\r\n type: 'order',\r\n data: {\r\n field: config.field,\r\n asc: config.asc\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.render();\r\n\r\n this._NgxTableService.onChangeTooltips.subscribe(\r\n (status)=>{\r\n if(status){\r\n this.render();\r\n }\r\n }\r\n )\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.render();\r\n }\r\n\r\n setConfigsDefault(key: string) {\r\n if (this.configsRender[key] == null) {\r\n this.configsRender[key] = this.configsDefault[key];\r\n } else {\r\n if (this.configsRender[key].active == null) {\r\n this.configsRender[key].active = this.configsDefault[key].active;\r\n }\r\n\r\n if (this.configsRender[key].disabled == null) {\r\n this.configsRender[key].disabled = this.configsDefault[key].disabled;\r\n }\r\n\r\n if (this.configsRender[key].labelHtml == null) {\r\n this.configsRender[key].labelHtml = this.configsDefault[key].labelHtml;\r\n }\r\n\r\n if (key == 'saveChanges' && this.configsRender[key].loading == null) {\r\n this.configsRender[key].loading = this.configsDefault[key].loading;\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"container-fluid\">\r\n <h3 class=\"text-center\" *ngIf=\"configsRender.titleTable != null\">{{ configsRender.titleTable }}</h3>\r\n <div class=\"row justify-content-end mb-2\" *ngIf=\"(configsRender.actions.enableSelected?.active) || (configsRender.actions.disableSelected?.active) || configsRender.enableAll.active || configsRender.disableAll.active || configsRender.saveChanges.active || configsRender.actions.add?.active || configsRender.search.active\">\r\n <div class=\"col d-flex justify-content-end\" *ngIf=\"(configsRender.actions.enableSelected?.active) || (configsRender.actions.disableSelected?.active) || configsRender.enableAll.active || configsRender.disableAll.active || configsRender.saveChanges.active || configsRender.actions.add?.active\">\r\n <button attr.data-id=\"enable-selected-{{ dataId }}\" *ngIf=\"configsRender.actions.enableSelected?.active\" [disabled]=\"configsRender.actions.enableSelected?.loading || checkedRegisters().length == 0\" type=\"button\" class=\"btn btn-success mx-1\" (click)=\"onActionClick({event: $event,type: 'enableSelected', data: checkedRegisters()})\">\r\n <span *ngIf=\"configsRender.actions.enableSelected?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"configsRender.actions.enableSelected.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-selected-{{ dataId }}\" *ngIf=\"configsRender.actions.disableSelected?.active\" [disabled]=\"configsRender.actions.disableSelected?.loading || checkedRegisters().length == 0\" type=\"button\" class=\"btn btn-danger mx-1\" (click)=\"onActionClick({event: $event,type: 'disableSelected', data: checkedRegisters()})\">\r\n <span *ngIf=\"configsRender.actions.disableSelected?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"configsRender.actions.disableSelected?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"enable-all-{{ dataId }}\" *ngIf=\"configsRender.enableAll.active\" type=\"button\" class=\"btn btn-success mx-1\" [disabled]=\"configsRender.enableAll.disabled\" (click)=\"onActionClick({event: $event, type: 'enableAll'})\">\r\n <span [innerHTML]=\"configsRender.enableAll.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-all-{{ dataId }}\" *ngIf=\"configsRender.disableAll.active\" type=\"button\" class=\"btn btn-danger mx-1\" [disabled]=\"configsRender.disableAll.disabled\" (click)=\"onActionClick({event: $event, type: 'disableAll'})\">\r\n <span [innerHTML]=\"configsRender.disableAll.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"save-changes-{{ dataId }}\" *ngIf=\"configsRender.saveChanges.active\" type=\"button\" class=\"btn btn-primary mx-1\" [disabled]=\"configsRender.saveChanges.disabled || configsRender.saveChanges.loading\" (click)=\"onActionClick({event: $event, type: 'saveChanges'})\">\r\n <span *ngIf=\"configsRender.saveChanges.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"configsRender.saveChanges.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"add-register-{{ dataId }}\" *ngIf=\"configsRender.actions.add?.active\" class=\"btn btn-success\" type=\"button\" (click)=\"onActionClick({event: $event, type: 'add'})\">\r\n <span [innerHTML]=\"configsRender.actions.add?.labelHtml\"></span>\r\n </button>\r\n </div>\r\n <div class=\"col-lg-3\" *ngIf=\"configsRender.search.active\">\r\n <div class=\"input-group\">\r\n <input attr.data-id=\"input-search-{{ dataId }}\" type=\"text\" class=\"form-control\" [(ngModel)]=\"configsRender.search.textSearch\" [placeholder]=\"configsRender.search.placeholderSearch != undefined ? configsRender.search.placeholderSearch : ''\" (input)=\"onKeySearch()\">\r\n <button attr.data-id=\"restart-search-{{ dataId }}\" class=\"btn btn-primary\" type=\"button\" (click)=\"onRestarSeach()\" [ngbTooltip]=\"configsRender.labels?.tooltips?.clearSearch\">\r\n <i class=\"bi bi-arrow-counterclockwise\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <ngx-skeleton-loader *ngIf=\"configsRender.loading\" count=\"5\"></ngx-skeleton-loader>\r\n <p *ngIf=\"!configsRender.loading && configsRender.collectionSize == 0\" class=\"text-center\">{{ configsRender.labels.noRegisters }}</p>\r\n <div *ngIf=\"!configsRender.loading && configsRender.collectionSize > 0\" class=\"table-responsive\">\r\n <table class=\"table table-striped table-bordered\" [class.table-sm]=\"configsRender.tableSize == 'small'\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-center\" *ngIf=\"configsRender.actions.check?.active\">\r\n <input attr.data-id=\"box-select-all-{{ dataId }}\" #selectAll class=\"form-check-input\" type=\"checkbox\" (change)=\"onChangeSelectAll()\">\r\n </th>\r\n <th *ngFor=\"let col of headRowRender\" [class.pointer]=\"col.order.visible\" (click)=\"( col.order.visible ? onOrderChange({ field: col.field, asc: ( col.order.active ? !col.order.asc : true ) }) : return )\">\r\n <span [innerHTML]=\"col.label\"></span>\r\n <i *ngIf=\"col.order.visible && col.order.active && !col.order.asc\" class=\"bi bi-chevron-down ms-1\"></i>\r\n <i *ngIf=\"col.order.visible && col.order.active && col.order.asc\" class=\"bi bi-chevron-up ms-1\"></i>\r\n </th>\r\n <th class=\"col-compact\" *ngIf=\"configsRender.actions.edit?.active || configsRender.actions.delete?.active || configsRender.actions.enabled?.active || configsRender.actions.disabled?.active || configsRender.actions.loginAs?.active\"></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let register of registersRender; let i = index\">\r\n <tr attr.data-id=\"select-register-{{ dataId }}-{{ i }}\" [class.pointer]=\"register.configRegister?.actions?.select?.active\" (click)=\"register.configRegister?.actions?.select?.active ? onActionClick({event: $event,type: 'select',data: register, index: i}):return\">\r\n <td class=\"text-center\" *ngIf=\"configsRender.actions.check?.active\" (click)=\"stopPropagation($event)\">\r\n <input *ngIf=\"register.configRegister.actions.check.active\" [disabled]=\"register.configRegister.actions.check.disabled\" attr.data-id=\"box-select-register-{{ dataId }}-{{ i }}\" class=\"form-check-input\" type=\"checkbox\" [(ngModel)]=\"register.configRegister.actions.check.checked\" (change)=\"setSelectAll()\">\r\n </td>\r\n\r\n <ng-container *ngFor=\"let col of headRowRender; let j = index\">\r\n <td [class.text-end]=\"col.type == 'number'\">\r\n <span *ngIf=\"col.field != 'is_active'; else renderIsActive\" [innerHTML]=\"registers[i][(col.field == null || col.field == '' ? objectKeys(register)[j] : col.field)]\"></span>\r\n <ng-template #renderIsActive>\r\n <input attr.data-id=\"box-is-active-{{ dataId }}-{{ i }}\" class=\"form-check-input\" type=\"checkbox\" [ngModel]=\"registers[i][col.field]\" (ngModelChange)=\"onActionClick({type: 'changeIsActive', data: $event, index: i})\">\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n\r\n <td class=\"text-nowrap\" *ngIf=\"configsRender.actions.edit?.active || configsRender.actions.delete?.active || configsRender.actions.enabled?.active || configsRender.actions.disabled?.active || configsRender.actions.loginAs?.active\">\r\n <button attr.data-id=\"edit-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.edit?.active\" [disabled]=\"register.configRegister?.actions?.edit?.disabled\" type=\"button\" class=\"btn btn-primary mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'edit',data: register, index: i})\">\r\n <span [innerHTML]=\"register.configRegister?.actions?.edit?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"delete-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.delete?.active\" [disabled]=\"register.configRegister?.actions?.delete?.loading || register.configRegister?.actions?.delete?.disabled\" type=\"button\" class=\"btn btn-danger mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'delete',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.delete?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.delete?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"enable-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.enabled?.active\" [disabled]=\"register.configRegister?.actions?.enabled?.loading || register.configRegister?.actions?.enabled?.disabled\" type=\"button\" class=\"btn btn-success mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'enabled',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.enabled?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.enabled?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.disabled?.active\" [disabled]=\"register.configRegister?.actions?.disabled?.loading || register.configRegister?.actions?.disabled?.disabled\" type=\"button\" class=\"btn btn-danger mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'disabled',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.disabled?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.disabled?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"login-as-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.loginAs?.active\" [disabled]=\"register.configRegister?.actions?.loginAs?.loading || register.configRegister?.actions?.loginAs?.disabled\" type=\"button\" class=\"btn btn-primary mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'loginAs',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.loginAs?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.loginAs?.labelHtml\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"position-sticky bottom-0 bg-white\" *ngIf=\"configsRender.paginationActive && configsRender.collectionSize > 0\">\r\n <div class=\"row justify-content-end border-top pt-2\">\r\n <div class=\"col-sm-6\">\r\n <ngb-pagination\r\n class=\"d-flex justify-content-center\"\r\n [pageSize]=\"configsRender.pageSize\"\r\n [collectionSize]=\"configsRender.collectionSize\"\r\n [(page)]=\"configsRender.page\"\r\n [maxSize]=\"5\"\r\n [rotate]=\"true\"\r\n [boundaryLinks]=\"true\"\r\n [ellipses]=\"true\"\r\n (pageChange)=\"onPageChange()\"\r\n size=\"sm\"\r\n >\r\n <ng-template ngbPaginationNumber let-page><span attr.data-id=\"page-{{ dataId }}-{{ page }}\">{{ page }}</span></ng-template>\r\n <ng-template ngbPaginationFirst><span attr.data-id=\"page-first-{{ dataId }}\">««</span></ng-template>\r\n <ng-template ngbPaginationLast><span attr.data-id=\"page-last-{{ dataId }}\">»»</span></ng-template>\r\n <ng-template ngbPaginationPrevious><span attr.data-id=\"page-previus-{{ dataId }}\">«</span></ng-template>\r\n <ng-template ngbPaginationNext><span attr.data-id=\"page-next-{{ dataId }}\">»</span></ng-template>\r\n </ngb-pagination>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { NgxTableComponent } from './ngx-table.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxTableComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n NgbModule,\r\n NgxSkeletonLoaderModule,\r\n ],\r\n exports: [\r\n NgxTableComponent\r\n ]\r\n})\r\nexport class NgxTableModule { }\r\n","/*\r\n * Public API Surface of ngx-table\r\n */\r\n\r\nexport * from './lib/ngx-table.service';\r\nexport * from './lib/ngx-table.component';\r\nexport * from './lib/ngx-table.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"experteam-mx-ngx-table.mjs","sources":["../../../projects/ngx-table/src/lib/ngx-table.service.ts","../../../projects/ngx-table/src/lib/ngx-table.component.ts","../../../projects/ngx-table/src/lib/ngx-table.component.html","../../../projects/ngx-table/src/lib/ngx-table.module.ts","../../../projects/ngx-table/src/public-api.ts","../../../projects/ngx-table/src/experteam-mx-ngx-table.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxTableService {\r\n\r\n dataCount = 0\r\n\r\n onChangeTooltips = new BehaviorSubject<boolean>(false);\r\n tooltips: any = {\r\n clearSearch: 'Clear Search'\r\n }\r\n\r\n constructor() { }\r\n\r\n get dataId(){\r\n return this.dataCount ++\r\n }\r\n\r\n changeTooltips( tooltips: any ){\r\n this.tooltips = {\r\n ...this.tooltips,\r\n ...tooltips\r\n }\r\n\r\n this.onChangeTooltips.next( true )\r\n }\r\n}\r\n","import {Component, OnInit, OnChanges, Input, Output, EventEmitter, SimpleChanges, ViewChild} from '@angular/core';\r\nimport { NgxTableService } from './ngx-table.service'\r\n\r\n@Component({\r\n selector: 'ngx-table',\r\n templateUrl: './ngx-table.component.html',\r\n styleUrls: ['./ngx-table.component.scss']\r\n})\r\nexport class NgxTableComponent implements OnInit, OnChanges {\r\n @Input() headRow: any[] = [];\r\n headRowRender: any[] = [];\r\n\r\n @Input() registers: any[] = [];\r\n registersRender: any[] = [];\r\n\r\n @Input() configs: any;\r\n configsRender: any = {};\r\n\r\n @Output() changePage = new EventEmitter<Object>();\r\n @Output() clickEvent = new EventEmitter<Object>();\r\n\r\n @ViewChild('selectAll') checkSelectAll: any;\r\n\r\n configsDefault: any = {\r\n titleTable: null,\r\n loading: false,\r\n paginationActive: false,\r\n page: 1,\r\n pageSize: 15,\r\n collectionSize: 0,\r\n tableSize: 'normal',\r\n labels: {\r\n noRegisters: 'Registers no found',\r\n tooltips:{\r\n ...this._NgxTableService.tooltips\r\n }\r\n },\r\n search: {\r\n active: false,\r\n textSearch: '',\r\n placeholderSearch: 'Search'\r\n },\r\n order: {\r\n active: false,\r\n field: null,\r\n asc: false\r\n },\r\n actions: {\r\n add: {\r\n active: false,\r\n labelHtml: null\r\n },\r\n select: {\r\n active: false,\r\n labelHtml: null\r\n },\r\n edit: {\r\n active: false,\r\n labelHtml: null,\r\n disabled: false\r\n },\r\n delete: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n enabled: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n disabled: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n loginAs: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n check: {\r\n disabled: false,\r\n active: false,\r\n checked: false\r\n },\r\n enableSelected: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false\r\n },\r\n disableSelected: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false\r\n },\r\n },\r\n colHead: {\r\n label: null,\r\n type: 'string',\r\n field: null,\r\n order: {\r\n visible: false,\r\n active: false,\r\n asc: false\r\n }\r\n },\r\n enableAll: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Enable all'\r\n },\r\n disableAll: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Disable all'\r\n },\r\n saveChanges: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Save changes',\r\n loading: false\r\n }\r\n };\r\n\r\n dataId: any\r\n\r\n constructor(\r\n public _NgxTableService: NgxTableService\r\n ) {\r\n this.dataId = _NgxTableService.dataId\r\n }\r\n\r\n objectKeys(registers: any) {\r\n let registros = [];\r\n\r\n for (let key of Object.keys(registers)) {\r\n if (key != 'configRegister') {\r\n registros.push(key);\r\n }\r\n }\r\n\r\n return registros;\r\n }\r\n\r\n onPageChange() {\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n }\r\n\r\n onKeySearch() {\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n }\r\n\r\n onRestarSeach() {\r\n this.configsRender.search.textSearch = '';\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n }\r\n\r\n onActionClick(object: any) {\r\n object.event?.preventDefault();\r\n object.event?.stopPropagation();\r\n\r\n this.clickEvent.emit({\r\n type: object.type,\r\n data: object.data,\r\n index: object.index\r\n });\r\n }\r\n\r\n render() {\r\n this.headRowRender = [];\r\n\r\n for (let head of this.headRow) {\r\n this.headRowRender.push({\r\n ...this.configsDefault.colHead,\r\n ...head,\r\n order: {\r\n ...this.configsDefault.colHead.order,\r\n ...head.order\r\n }\r\n });\r\n }\r\n\r\n this.configsRender = {\r\n titleTable: this.configsDefault.titleTable,\r\n loading: this.configsDefault.loading,\r\n paginationActive: this.configsDefault.paginationActive,\r\n page: this.configsDefault.page,\r\n pageSize: this.configsDefault.pageSize,\r\n collectionSize: this.configsDefault.collectionSize,\r\n tableSize: this.configsDefault.tableSize,\r\n labels: this.configsDefault.labels,\r\n search: this.configsDefault.search,\r\n order: this.configsDefault.order,\r\n actions: this.configsDefault.actions,\r\n ...this.configs\r\n };\r\n\r\n if( !this.configs.labels.tooltips ){\r\n this.configs.labels.tooltips = {}\r\n }\r\n\r\n if( !this.configs.labels.tooltips.clearSearch ){\r\n this.configs.labels.tooltips.clearSearch = ''\r\n }\r\n if( this.configs.labels.tooltips.clearSearch == '' || this.configsDefault.labels.tooltips.clearSearch != this._NgxTableService.tooltips.clearSearch ){\r\n this.configsRender.labels.tooltips.clearSearch = this._NgxTableService.tooltips.clearSearch\r\n this.configsDefault.labels.tooltips.clearSearch = this._NgxTableService.tooltips.clearSearch\r\n }\r\n\r\n this.setConfigsDefault('enableAll');\r\n this.setConfigsDefault('disableAll');\r\n this.setConfigsDefault('saveChanges');\r\n\r\n this.registersRender = [];\r\n\r\n for (let register of this.registers) {\r\n this.registersRender.push({\r\n ...register,\r\n configRegister: {\r\n actions: {\r\n ...this.configsRender.actions,\r\n loginAs: {\r\n ...this.configsRender.actions.loginAs\r\n },\r\n check: {\r\n ...this.configsRender.actions.check\r\n },\r\n ...register.configRegister?.actions\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n stopPropagation(e: any) {\r\n e.stopPropagation();\r\n }\r\n\r\n setSelectAll() {\r\n this.checkSelectAll.nativeElement.indeterminate = false;\r\n this.checkSelectAll.nativeElement.checked = false;\r\n let contCheck = this.getSelectedPices();\r\n\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n if (registerChecksEnabled.length == 0) {\r\n return;\r\n }\r\n\r\n if (registerChecksEnabled.length == contCheck) {\r\n this.checkSelectAll.nativeElement.checked = true;\r\n } else {\r\n if (contCheck != 0) {\r\n this.checkSelectAll.nativeElement.indeterminate = true;\r\n }\r\n }\r\n\r\n this.onActionClick({\r\n type: 'checked',\r\n data: this.checkedRegisters()\r\n });\r\n }\r\n\r\n getSelectedPices() {\r\n let contCheck = 0;\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n for (let register of registerChecksEnabled) {\r\n contCheck += (register.configRegister.actions.check.checked ? 1 : 0);\r\n }\r\n\r\n return contCheck;\r\n }\r\n\r\n onChangeSelectAll() {\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n if (this.checkSelectAll.nativeElement.checked) {\r\n for (let register of registerChecksEnabled) {\r\n register.configRegister.actions.check.checked = true;\r\n }\r\n } else {\r\n for (let register of registerChecksEnabled) {\r\n register.configRegister.actions.check.checked = false;\r\n }\r\n }\r\n\r\n this.onActionClick({\r\n type: 'checked',\r\n data: this.checkedRegisters()\r\n });\r\n }\r\n\r\n checkedRegisters() {\r\n let checkedRegister = [];\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n for (let register of registerChecksEnabled) {\r\n if (register.configRegister.actions.check.checked) {\r\n checkedRegister.push({\r\n ...register\r\n });\r\n }\r\n }\r\n\r\n return checkedRegister;\r\n }\r\n\r\n activeOrder(config: any) {\r\n for (let head of this.headRowRender) {\r\n if (head.field == config.field) {\r\n head.order.active = true;\r\n head.order.asc = config.asc;\r\n } else {\r\n head.order.active = false;\r\n }\r\n }\r\n }\r\n\r\n onOrderChange(config: any) {\r\n this.activeOrder({\r\n field: config.field,\r\n asc: config.asc\r\n });\r\n\r\n this.clickEvent.emit({\r\n type: 'order',\r\n data: {\r\n field: config.field,\r\n asc: config.asc\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.render();\r\n\r\n this._NgxTableService.onChangeTooltips.subscribe(\r\n (status)=>{\r\n if(status){\r\n this.render();\r\n }\r\n }\r\n )\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.render();\r\n }\r\n\r\n setConfigsDefault(key: string) {\r\n if (this.configsRender[key] == null) {\r\n this.configsRender[key] = this.configsDefault[key];\r\n } else {\r\n if (this.configsRender[key].active == null) {\r\n this.configsRender[key].active = this.configsDefault[key].active;\r\n }\r\n\r\n if (this.configsRender[key].disabled == null) {\r\n this.configsRender[key].disabled = this.configsDefault[key].disabled;\r\n }\r\n\r\n if (this.configsRender[key].labelHtml == null) {\r\n this.configsRender[key].labelHtml = this.configsDefault[key].labelHtml;\r\n }\r\n\r\n if (key == 'saveChanges' && this.configsRender[key].loading == null) {\r\n this.configsRender[key].loading = this.configsDefault[key].loading;\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"container-fluid\">\r\n <h3 class=\"text-center\" *ngIf=\"configsRender.titleTable != null\">{{ configsRender.titleTable }}</h3>\r\n <div class=\"row justify-content-end mb-2\" *ngIf=\"(configsRender.actions.enableSelected?.active) || (configsRender.actions.disableSelected?.active) || configsRender.enableAll.active || configsRender.disableAll.active || configsRender.saveChanges.active || configsRender.actions.add?.active || configsRender.search.active\">\r\n <div class=\"col d-flex justify-content-end\" *ngIf=\"(configsRender.actions.enableSelected?.active) || (configsRender.actions.disableSelected?.active) || configsRender.enableAll.active || configsRender.disableAll.active || configsRender.saveChanges.active || configsRender.actions.add?.active\">\r\n <button attr.data-id=\"enable-selected-{{ dataId }}\" *ngIf=\"configsRender.actions.enableSelected?.active\" [disabled]=\"configsRender.actions.enableSelected?.loading || checkedRegisters().length == 0\" type=\"button\" class=\"btn btn-success mx-1\" (click)=\"onActionClick({event: $event,type: 'enableSelected', data: checkedRegisters()})\">\r\n <span *ngIf=\"configsRender.actions.enableSelected?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"configsRender.actions.enableSelected.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-selected-{{ dataId }}\" *ngIf=\"configsRender.actions.disableSelected?.active\" [disabled]=\"configsRender.actions.disableSelected?.loading || checkedRegisters().length == 0\" type=\"button\" class=\"btn btn-danger mx-1\" (click)=\"onActionClick({event: $event,type: 'disableSelected', data: checkedRegisters()})\">\r\n <span *ngIf=\"configsRender.actions.disableSelected?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"configsRender.actions.disableSelected?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"enable-all-{{ dataId }}\" *ngIf=\"configsRender.enableAll.active\" type=\"button\" class=\"btn btn-success mx-1\" [disabled]=\"configsRender.enableAll.disabled\" (click)=\"onActionClick({event: $event, type: 'enableAll'})\">\r\n <span [innerHTML]=\"configsRender.enableAll.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-all-{{ dataId }}\" *ngIf=\"configsRender.disableAll.active\" type=\"button\" class=\"btn btn-danger mx-1\" [disabled]=\"configsRender.disableAll.disabled\" (click)=\"onActionClick({event: $event, type: 'disableAll'})\">\r\n <span [innerHTML]=\"configsRender.disableAll.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"save-changes-{{ dataId }}\" *ngIf=\"configsRender.saveChanges.active\" type=\"button\" class=\"btn btn-primary mx-1\" [disabled]=\"configsRender.saveChanges.disabled || configsRender.saveChanges.loading\" (click)=\"onActionClick({event: $event, type: 'saveChanges'})\">\r\n <span *ngIf=\"configsRender.saveChanges.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"configsRender.saveChanges.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"add-register-{{ dataId }}\" *ngIf=\"configsRender.actions.add?.active\" class=\"btn btn-success\" type=\"button\" (click)=\"onActionClick({event: $event, type: 'add'})\">\r\n <span [innerHTML]=\"configsRender.actions.add?.labelHtml\"></span>\r\n </button>\r\n </div>\r\n <div class=\"col-lg-3\" *ngIf=\"configsRender.search.active\">\r\n <div class=\"input-group\">\r\n <input attr.data-id=\"input-search-{{ dataId }}\" type=\"text\" class=\"form-control\" [(ngModel)]=\"configsRender.search.textSearch\" [placeholder]=\"configsRender.search.placeholderSearch != undefined ? configsRender.search.placeholderSearch : ''\" (input)=\"onKeySearch()\">\r\n <button attr.data-id=\"restart-search-{{ dataId }}\" class=\"btn btn-primary\" type=\"button\" (click)=\"onRestarSeach()\" [ngbTooltip]=\"configsRender.labels?.tooltips?.clearSearch\">\r\n <i class=\"bi bi-arrow-counterclockwise\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <ngx-skeleton-loader *ngIf=\"configsRender.loading\" count=\"5\"></ngx-skeleton-loader>\r\n <p *ngIf=\"!configsRender.loading && configsRender.collectionSize == 0\" class=\"text-center\">{{ configsRender.labels.noRegisters }}</p>\r\n <div *ngIf=\"!configsRender.loading && configsRender.collectionSize > 0\" class=\"table-responsive\">\r\n <table class=\"table table-striped table-bordered\" [class.table-sm]=\"configsRender.tableSize == 'small'\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-center\" *ngIf=\"configsRender.actions.check?.active\">\r\n <input attr.data-id=\"box-select-all-{{ dataId }}\" #selectAll class=\"form-check-input\" type=\"checkbox\" (change)=\"onChangeSelectAll()\">\r\n </th>\r\n <th *ngFor=\"let col of headRowRender\" [class.pointer]=\"col.order.visible\" (click)=\"( col.order.visible ? onOrderChange({ field: col.field, asc: ( col.order.active ? !col.order.asc : true ) }) : return )\">\r\n <span [innerHTML]=\"col.label\"></span>\r\n <i *ngIf=\"col.order.visible && col.order.active && !col.order.asc\" class=\"bi bi-chevron-down ms-1\"></i>\r\n <i *ngIf=\"col.order.visible && col.order.active && col.order.asc\" class=\"bi bi-chevron-up ms-1\"></i>\r\n </th>\r\n <th class=\"col-compact\" *ngIf=\"configsRender.actions.edit?.active || configsRender.actions.delete?.active || configsRender.actions.enabled?.active || configsRender.actions.disabled?.active || configsRender.actions.loginAs?.active\"></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let register of registersRender; let i = index\">\r\n <tr attr.data-id=\"select-register-{{ dataId }}-{{ i }}\" [class.pointer]=\"register.configRegister?.actions?.select?.active\" (click)=\"register.configRegister?.actions?.select?.active ? onActionClick({event: $event,type: 'select',data: register, index: i}):return\">\r\n <td class=\"text-center\" *ngIf=\"configsRender.actions.check?.active\" (click)=\"stopPropagation($event)\">\r\n <input *ngIf=\"register.configRegister.actions.check.active\" [disabled]=\"register.configRegister.actions.check.disabled\" attr.data-id=\"box-select-register-{{ dataId }}-{{ i }}\" class=\"form-check-input\" type=\"checkbox\" [(ngModel)]=\"register.configRegister.actions.check.checked\" (change)=\"setSelectAll()\">\r\n </td>\r\n\r\n <ng-container *ngFor=\"let col of headRowRender; let j = index\">\r\n <td [class.text-end]=\"col.type == 'number'\">\r\n <span *ngIf=\"col.field != 'is_active'; else renderIsActive\" [innerHTML]=\"registers[i][(col.field == null || col.field == '' ? objectKeys(register)[j] : col.field)]\"></span>\r\n <ng-template #renderIsActive>\r\n <input attr.data-id=\"box-is-active-{{ dataId }}-{{ i }}\" class=\"form-check-input\" type=\"checkbox\" [ngModel]=\"registers[i][col.field]\" (ngModelChange)=\"onActionClick({type: 'changeIsActive', data: $event, index: i})\">\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n\r\n <td class=\"text-nowrap\" *ngIf=\"configsRender.actions.edit?.active || configsRender.actions.delete?.active || configsRender.actions.enabled?.active || configsRender.actions.disabled?.active || configsRender.actions.loginAs?.active\">\r\n <button attr.data-id=\"edit-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.edit?.active\" [disabled]=\"register.configRegister?.actions?.edit?.disabled\" type=\"button\" class=\"btn btn-primary mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'edit',data: register, index: i})\">\r\n <span [innerHTML]=\"register.configRegister?.actions?.edit?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"delete-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.delete?.active\" [disabled]=\"register.configRegister?.actions?.delete?.loading || register.configRegister?.actions?.delete?.disabled\" type=\"button\" class=\"btn btn-danger mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'delete',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.delete?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.delete?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"enable-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.enabled?.active\" [disabled]=\"register.configRegister?.actions?.enabled?.loading || register.configRegister?.actions?.enabled?.disabled\" type=\"button\" class=\"btn btn-success mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'enabled',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.enabled?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.enabled?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.disabled?.active\" [disabled]=\"register.configRegister?.actions?.disabled?.loading || register.configRegister?.actions?.disabled?.disabled\" type=\"button\" class=\"btn btn-danger mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'disabled',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.disabled?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.disabled?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"login-as-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.loginAs?.active\" [disabled]=\"register.configRegister?.actions?.loginAs?.loading || register.configRegister?.actions?.loginAs?.disabled\" type=\"button\" class=\"btn btn-primary mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'loginAs',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.loginAs?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.loginAs?.labelHtml\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"position-sticky bottom-0 bg-white\" *ngIf=\"configsRender.paginationActive && configsRender.collectionSize > 0\">\r\n <div class=\"row justify-content-end border-top pt-2\">\r\n <div class=\"col-sm-6\">\r\n <ngb-pagination\r\n class=\"d-flex justify-content-center\"\r\n [pageSize]=\"configsRender.pageSize\"\r\n [collectionSize]=\"configsRender.collectionSize\"\r\n [(page)]=\"configsRender.page\"\r\n [maxSize]=\"5\"\r\n [rotate]=\"true\"\r\n [boundaryLinks]=\"true\"\r\n [ellipses]=\"true\"\r\n (pageChange)=\"onPageChange()\"\r\n size=\"sm\"\r\n >\r\n <ng-template ngbPaginationNumber let-page><span attr.data-id=\"page-{{ dataId }}-{{ page }}\">{{ page }}</span></ng-template>\r\n <ng-template ngbPaginationFirst><span attr.data-id=\"page-first-{{ dataId }}\">««</span></ng-template>\r\n <ng-template ngbPaginationLast><span attr.data-id=\"page-last-{{ dataId }}\">»»</span></ng-template>\r\n <ng-template ngbPaginationPrevious><span attr.data-id=\"page-previus-{{ dataId }}\">«</span></ng-template>\r\n <ng-template ngbPaginationNext><span attr.data-id=\"page-next-{{ dataId }}\">»</span></ng-template>\r\n </ngb-pagination>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { NgxTableComponent } from './ngx-table.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxTableComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n NgbModule,\r\n NgxSkeletonLoaderModule,\r\n ],\r\n exports: [\r\n NgxTableComponent\r\n ]\r\n})\r\nexport class NgxTableModule { }\r\n","/*\r\n * Public API Surface of ngx-table\r\n */\r\n\r\nexport * from './lib/ngx-table.service';\r\nexport * from './lib/ngx-table.component';\r\nexport * from './lib/ngx-table.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;MAMa,eAAe;IAS1B;QAPA,cAAS,GAAG,CAAC,CAAA;QAEb,qBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QACvD,aAAQ,GAAQ;YACd,WAAW,EAAE,cAAc;SAC5B,CAAA;KAEgB;IAEjB,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,SAAS,EAAG,CAAA;KACzB;IAED,cAAc,CAAE,QAAa;QAC3B,IAAI,CAAC,QAAQ,GAAG;YACd,GAAG,IAAI,CAAC,QAAQ;YAChB,GAAG,QAAQ;SACZ,CAAA;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;KACnC;;4GAtBU,eAAe;gHAAf,eAAe,cAFd,MAAM;2FAEP,eAAe;kBAH3B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCGY,iBAAiB;IA2H5B,YACS,gBAAiC;QAAjC,qBAAgB,GAAhB,gBAAgB,CAAiB;QA3HjC,YAAO,GAAU,EAAE,CAAC;QAC7B,kBAAa,GAAU,EAAE,CAAC;QAEjB,cAAS,GAAU,EAAE,CAAC;QAC/B,oBAAe,GAAU,EAAE,CAAC;QAG5B,kBAAa,GAAQ,EAAE,CAAC;QAEd,eAAU,GAAG,IAAI,YAAY,EAAU,CAAC;QACxC,eAAU,GAAG,IAAI,YAAY,EAAU,CAAC;QAIlD,mBAAc,GAAQ;YACpB,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,KAAK;YACd,gBAAgB,EAAE,KAAK;YACvB,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,EAAE;YACZ,cAAc,EAAE,CAAC;YACjB,SAAS,EAAE,QAAQ;YACnB,MAAM,EAAE;gBACN,WAAW,EAAE,oBAAoB;gBACjC,QAAQ,EAAC;oBACP,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ;iBAClC;aACF;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,KAAK;gBACb,UAAU,EAAE,EAAE;gBACd,iBAAiB,EAAE,QAAQ;aAC5B;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,IAAI;gBACX,GAAG,EAAE,KAAK;aACX;YACD,OAAO,EAAE;gBACP,GAAG,EAAE;oBACH,MAAM,EAAE,KAAK;oBACb,SAAS,EAAE,IAAI;iBAChB;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE,KAAK;oBACb,SAAS,EAAE,IAAI;iBAChB;gBACD,IAAI,EAAE;oBACJ,MAAM,EAAE,KAAK;oBACb,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,KAAK;iBAChB;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE,KAAK;oBACb,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,KAAK;iBAChB;gBACD,OAAO,EAAE;oBACP,MAAM,EAAE,KAAK;oBACb,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,KAAK;iBAChB;gBACD,QAAQ,EAAE;oBACR,MAAM,EAAE,KAAK;oBACb,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,KAAK;iBAChB;gBACD,OAAO,EAAE;oBACP,MAAM,EAAE,KAAK;oBACb,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,KAAK;iBAChB;gBACD,KAAK,EAAE;oBACL,QAAQ,EAAE,KAAK;oBACf,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,KAAK;iBACf;gBACD,cAAc,EAAE;oBACd,MAAM,EAAE,KAAK;oBACb,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE,KAAK;iBACf;gBACD,eAAe,EAAE;oBACf,MAAM,EAAE,KAAK;oBACb,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE,KAAK;iBACf;aACF;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,KAAK;oBACb,GAAG,EAAE,KAAK;iBACX;aACF;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,YAAY;aACxB;YACD,UAAU,EAAE;gBACV,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,aAAa;aACzB;YACD,WAAW,EAAE;gBACX,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,cAAc;gBACzB,OAAO,EAAE,KAAK;aACf;SACF,CAAC;QAOA,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAA;KACtC;IAED,UAAU,CAAC,SAAc;QACvB,IAAI,SAAS,GAAG,EAAE,CAAC;QAEnB,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACtC,IAAI,GAAG,IAAI,gBAAgB,EAAE;gBAC3B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACrB;SACF;QAED,OAAO,SAAS,CAAC;KAClB;IAED,YAAY;QACV,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QAElC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,GAAG,IAAI,CAAC,aAAa;SACtB,CAAC,CAAC;KACJ;IAED,WAAW;QACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QAElC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,GAAG,IAAI,CAAC,aAAa;SACtB,CAAC,CAAC;KACJ;IAED,aAAa;QACX,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QAElC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,GAAG,IAAI,CAAC,aAAa;SACtB,CAAC,CAAC;KACJ;IAED,aAAa,CAAC,MAAW;QACvB,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC;QAEhC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;KACJ;IAED,MAAM;QACJ,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAExB,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;YAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO;gBAC9B,GAAG,IAAI;gBACP,KAAK,EAAE;oBACL,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK;oBACpC,GAAG,IAAI,CAAC,KAAK;iBACd;aACF,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,aAAa,GAAG;YACnB,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU;YAC1C,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO;YACpC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB;YACtD,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI;YAC9B,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ;YACtC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc;YAClD,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS;YACxC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;YAClC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;YAClC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK;YAChC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO;YACpC,GAAG,IAAI,CAAC,OAAO;SAChB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;YACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAA;SAClC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;YAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAA;SAC9C;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,EAAE;YACnJ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAA;YAC3F,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAA;SAC7F;QAED,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACrC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAEtC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAE1B,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACnC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACxB,GAAG,QAAQ;gBACX,cAAc,EAAE;oBACd,OAAO,EAAE;wBACP,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;wBAC7B,OAAO,EAAE;4BACP,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO;yBACtC;wBACD,KAAK,EAAE;4BACL,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK;yBACpC;wBACD,GAAG,QAAQ,CAAC,cAAc,EAAE,OAAO;qBACpC;iBACF;aACF,CAAC,CAAC;SACJ;KACF;IAED,eAAe,CAAC,CAAM;QACpB,CAAC,CAAC,eAAe,EAAE,CAAC;KACrB;IAED,YAAY;QACV,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC;QACxD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;QAClD,IAAI,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExC,IAAI,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO;YAC9D,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAA;SACrG,CAAC,CAAA;QAEF,IAAI,qBAAqB,CAAC,MAAM,IAAI,CAAC,EAAE;YACrC,OAAO;SACR;QAED,IAAI,qBAAqB,CAAC,MAAM,IAAI,SAAS,EAAE;YAC7C,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;SAClD;aAAM;YACL,IAAI,SAAS,IAAI,CAAC,EAAE;gBAClB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC;aACxD;SACF;QAED,IAAI,CAAC,aAAa,CAAC;YACjB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE;SAC9B,CAAC,CAAC;KACJ;IAED,gBAAgB;QACd,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO;YAC9D,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAA;SACrG,CAAC,CAAA;QAEF,KAAK,IAAI,QAAQ,IAAI,qBAAqB,EAAE;YAC1C,SAAS,KAAK,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SACtE;QAED,OAAO,SAAS,CAAC;KAClB;IAED,iBAAiB;QACf,IAAI,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO;YAC9D,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAA;SACrG,CAAC,CAAA;QACF,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE;YAC7C,KAAK,IAAI,QAAQ,IAAI,qBAAqB,EAAE;gBAC1C,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;aACtD;SACF;aAAM;YACL,KAAK,IAAI,QAAQ,IAAI,qBAAqB,EAAE;gBAC1C,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;aACvD;SACF;QAED,IAAI,CAAC,aAAa,CAAC;YACjB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE;SAC9B,CAAC,CAAC;KACJ;IAED,gBAAgB;QACd,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO;YAC9D,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAA;SACrG,CAAC,CAAA;QAEF,KAAK,IAAI,QAAQ,IAAI,qBAAqB,EAAE;YAC1C,IAAI,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;gBACjD,eAAe,CAAC,IAAI,CAAC;oBACnB,GAAG,QAAQ;iBACZ,CAAC,CAAC;aACJ;SACF;QAED,OAAO,eAAe,CAAC;KACxB;IAED,WAAW,CAAC,MAAW;QACrB,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;YACnC,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE;gBAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;aAC7B;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;aAC3B;SACF;KACF;IAED,aAAa,CAAC,MAAW;QACvB,IAAI,CAAC,WAAW,CAAC;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,OAAO;YACb,IAAI,EAAE;gBACJ,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB;SACF,CAAC,CAAC;KACJ;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAC9C,CAAC,MAAM;YACL,IAAG,MAAM,EAAC;gBACR,IAAI,CAAC,MAAM,EAAE,CAAC;aACf;SACF,CACF,CAAA;KACF;IAED,WAAW,CAAC,OAAsB;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;IAED,iBAAiB,CAAC,GAAW;QAC3B,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;YACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;SACpD;aAAM;YACL,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE;gBAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;aAClE;YAED,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE;gBAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;aACtE;YAED,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,IAAI,EAAE;gBAC7C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;aACxE;YAED,IAAI,GAAG,IAAI,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,IAAI,EAAE;gBACnE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;aACpE;SACF;KACF;;8GAlYU,iBAAiB;kGAAjB,iBAAiB,gUCR9B,6wdAqJA;2FD7Ia,iBAAiB;kBAL7B,SAAS;+BACE,WAAW;mGAKZ,OAAO;sBAAf,KAAK;gBAGG,SAAS;sBAAjB,KAAK;gBAGG,OAAO;sBAAf,KAAK;gBAGI,UAAU;sBAAnB,MAAM;gBACG,UAAU;sBAAnB,MAAM;gBAEiB,cAAc;sBAArC,SAAS;uBAAC,WAAW;;;MECX,cAAc;;2GAAd,cAAc;4GAAd,cAAc,iBAZvB,iBAAiB,aAGjB,aAAa;QACb,WAAW;QACX,SAAS;QACT,uBAAuB,aAGvB,iBAAiB;4GAGR,cAAc,YAVhB;YACP,aAAa;YACb,WAAW;YACX,SAAS;YACT,uBAAuB;SACxB;2FAKU,cAAc;kBAd1B,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,iBAAiB;qBAClB;oBACD,OAAO,EAAE;wBACP,aAAa;wBACb,WAAW;wBACX,SAAS;wBACT,uBAAuB;qBACxB;oBACD,OAAO,EAAE;wBACP,iBAAiB;qBAClB;iBACF;;;ACrBD;;;;ACAA;;;;;;"}
|
|
1
|
+
{"version":3,"file":"experteam-mx-ngx-table.mjs","sources":["../../../projects/ngx-table/src/lib/ngx-table.service.ts","../../../projects/ngx-table/src/lib/ngx-table.component.ts","../../../projects/ngx-table/src/lib/ngx-table.component.html","../../../projects/ngx-table/src/lib/ngx-table.module.ts","../../../projects/ngx-table/src/public-api.ts","../../../projects/ngx-table/src/experteam-mx-ngx-table.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxTableService {\r\n\r\n dataCount = 0\r\n\r\n onChangeTooltips = new BehaviorSubject<boolean>(false);\r\n tooltips: any = {\r\n clearSearch: 'Clear Search'\r\n }\r\n\r\n constructor() { }\r\n\r\n get dataId(){\r\n return this.dataCount ++\r\n }\r\n\r\n changeTooltips( tooltips: any ){\r\n this.tooltips = {\r\n ...this.tooltips,\r\n ...tooltips\r\n }\r\n\r\n this.onChangeTooltips.next( true )\r\n }\r\n}\r\n","import {Component, OnInit, OnChanges, Input, Output, EventEmitter, SimpleChanges, ViewChild} from '@angular/core';\r\nimport { NgxTableService } from './ngx-table.service'\r\n\r\n@Component({\r\n selector: 'ngx-table',\r\n templateUrl: './ngx-table.component.html',\r\n styleUrls: ['./ngx-table.component.scss']\r\n})\r\nexport class NgxTableComponent implements OnInit, OnChanges {\r\n @Input() headRow: any[] = [];\r\n headRowRender: any[] = [];\r\n\r\n @Input() registers: any[] = [];\r\n registersRender: any[] = [];\r\n\r\n @Input() configs: any;\r\n configsRender: any = {};\r\n\r\n @Output() changePage = new EventEmitter<Object>();\r\n @Output() clickEvent = new EventEmitter<Object>();\r\n\r\n @ViewChild('selectAll') checkSelectAll: any;\r\n\r\n configsDefault: any = {\r\n titleTable: null,\r\n loading: false,\r\n paginationActive: false,\r\n page: 1,\r\n pageSize: 15,\r\n collectionSize: 0,\r\n tableSize: 'normal',\r\n labels: {\r\n noRegisters: 'Registers no found',\r\n tooltips:{\r\n ...this._NgxTableService.tooltips\r\n }\r\n },\r\n search: {\r\n active: false,\r\n textSearch: '',\r\n placeholderSearch: 'Search'\r\n },\r\n order: {\r\n active: false,\r\n field: null,\r\n asc: false\r\n },\r\n actions: {\r\n add: {\r\n active: false,\r\n labelHtml: null\r\n },\r\n select: {\r\n active: false,\r\n labelHtml: null\r\n },\r\n edit: {\r\n active: false,\r\n labelHtml: null,\r\n disabled: false\r\n },\r\n delete: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n enabled: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n disabled: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n loginAs: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n check: {\r\n disabled: false,\r\n active: false,\r\n checked: false\r\n },\r\n enableSelected: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false\r\n },\r\n disableSelected: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false\r\n },\r\n },\r\n colHead: {\r\n label: null,\r\n type: 'string',\r\n field: null,\r\n order: {\r\n visible: false,\r\n active: false,\r\n asc: false\r\n }\r\n },\r\n enableAll: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Enable all'\r\n },\r\n disableAll: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Disable all'\r\n },\r\n saveChanges: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Save changes',\r\n loading: false\r\n }\r\n };\r\n\r\n dataId: any\r\n\r\n constructor(\r\n public _NgxTableService: NgxTableService\r\n ) {\r\n this.dataId = _NgxTableService.dataId\r\n }\r\n\r\n objectKeys(registers: any) {\r\n let registros = [];\r\n\r\n for (let key of Object.keys(registers)) {\r\n if (key != 'configRegister') {\r\n registros.push(key);\r\n }\r\n }\r\n\r\n return registros;\r\n }\r\n\r\n onPageChange() {\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n }\r\n\r\n onKeySearch() {\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n }\r\n\r\n onRestarSeach() {\r\n this.configsRender.search.textSearch = '';\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n }\r\n\r\n onActionClick(object: any) {\r\n object.event?.preventDefault();\r\n object.event?.stopPropagation();\r\n\r\n this.clickEvent.emit({\r\n type: object.type,\r\n data: object.data,\r\n index: object.index\r\n });\r\n }\r\n\r\n render() {\r\n this.headRowRender = [];\r\n\r\n for (let head of this.headRow) {\r\n this.headRowRender.push({\r\n ...this.configsDefault.colHead,\r\n ...head,\r\n order: {\r\n ...this.configsDefault.colHead.order,\r\n ...head.order\r\n }\r\n });\r\n }\r\n\r\n this.configsRender = {\r\n titleTable: this.configsDefault.titleTable,\r\n loading: this.configsDefault.loading,\r\n paginationActive: this.configsDefault.paginationActive,\r\n page: this.configsDefault.page,\r\n pageSize: this.configsDefault.pageSize,\r\n collectionSize: this.configsDefault.collectionSize,\r\n tableSize: this.configsDefault.tableSize,\r\n labels: this.configsDefault.labels,\r\n search: this.configsDefault.search,\r\n order: this.configsDefault.order,\r\n actions: this.configsDefault.actions,\r\n ...this.configs\r\n };\r\n\r\n if( !this.configs.labels ){\r\n this.configs.labels = {}\r\n }\r\n\r\n if( !this.configs.labels.tooltips ){\r\n this.configs.labels.tooltips = {}\r\n }\r\n\r\n if( !this.configs.labels.tooltips.clearSearch ){\r\n this.configs.labels.tooltips.clearSearch = ''\r\n }\r\n if( this.configs.labels.tooltips.clearSearch == '' || this.configsDefault.labels.tooltips.clearSearch != this._NgxTableService.tooltips.clearSearch ){\r\n this.configsRender.labels.tooltips.clearSearch = this._NgxTableService.tooltips.clearSearch\r\n this.configsDefault.labels.tooltips.clearSearch = this._NgxTableService.tooltips.clearSearch\r\n }\r\n\r\n this.setConfigsDefault('enableAll');\r\n this.setConfigsDefault('disableAll');\r\n this.setConfigsDefault('saveChanges');\r\n\r\n this.registersRender = [];\r\n\r\n for (let register of this.registers) {\r\n this.registersRender.push({\r\n ...register,\r\n configRegister: {\r\n actions: {\r\n ...this.configsRender.actions,\r\n loginAs: {\r\n ...this.configsRender.actions.loginAs\r\n },\r\n check: {\r\n ...this.configsRender.actions.check\r\n },\r\n ...register.configRegister?.actions\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n stopPropagation(e: any) {\r\n e.stopPropagation();\r\n }\r\n\r\n setSelectAll() {\r\n this.checkSelectAll.nativeElement.indeterminate = false;\r\n this.checkSelectAll.nativeElement.checked = false;\r\n let contCheck = this.getSelectedPices();\r\n\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n if (registerChecksEnabled.length == 0) {\r\n return;\r\n }\r\n\r\n if (registerChecksEnabled.length == contCheck) {\r\n this.checkSelectAll.nativeElement.checked = true;\r\n } else {\r\n if (contCheck != 0) {\r\n this.checkSelectAll.nativeElement.indeterminate = true;\r\n }\r\n }\r\n\r\n this.onActionClick({\r\n type: 'checked',\r\n data: this.checkedRegisters()\r\n });\r\n }\r\n\r\n getSelectedPices() {\r\n let contCheck = 0;\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n for (let register of registerChecksEnabled) {\r\n contCheck += (register.configRegister.actions.check.checked ? 1 : 0);\r\n }\r\n\r\n return contCheck;\r\n }\r\n\r\n onChangeSelectAll() {\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n if (this.checkSelectAll.nativeElement.checked) {\r\n for (let register of registerChecksEnabled) {\r\n register.configRegister.actions.check.checked = true;\r\n }\r\n } else {\r\n for (let register of registerChecksEnabled) {\r\n register.configRegister.actions.check.checked = false;\r\n }\r\n }\r\n\r\n this.onActionClick({\r\n type: 'checked',\r\n data: this.checkedRegisters()\r\n });\r\n }\r\n\r\n checkedRegisters() {\r\n let checkedRegister = [];\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n for (let register of registerChecksEnabled) {\r\n if (register.configRegister.actions.check.checked) {\r\n checkedRegister.push({\r\n ...register\r\n });\r\n }\r\n }\r\n\r\n return checkedRegister;\r\n }\r\n\r\n activeOrder(config: any) {\r\n for (let head of this.headRowRender) {\r\n if (head.field == config.field) {\r\n head.order.active = true;\r\n head.order.asc = config.asc;\r\n } else {\r\n head.order.active = false;\r\n }\r\n }\r\n }\r\n\r\n onOrderChange(config: any) {\r\n this.activeOrder({\r\n field: config.field,\r\n asc: config.asc\r\n });\r\n\r\n this.clickEvent.emit({\r\n type: 'order',\r\n data: {\r\n field: config.field,\r\n asc: config.asc\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.render();\r\n\r\n this._NgxTableService.onChangeTooltips.subscribe(\r\n (status)=>{\r\n if(status){\r\n this.render();\r\n }\r\n }\r\n )\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.render();\r\n }\r\n\r\n setConfigsDefault(key: string) {\r\n if (this.configsRender[key] == null) {\r\n this.configsRender[key] = this.configsDefault[key];\r\n } else {\r\n if (this.configsRender[key].active == null) {\r\n this.configsRender[key].active = this.configsDefault[key].active;\r\n }\r\n\r\n if (this.configsRender[key].disabled == null) {\r\n this.configsRender[key].disabled = this.configsDefault[key].disabled;\r\n }\r\n\r\n if (this.configsRender[key].labelHtml == null) {\r\n this.configsRender[key].labelHtml = this.configsDefault[key].labelHtml;\r\n }\r\n\r\n if (key == 'saveChanges' && this.configsRender[key].loading == null) {\r\n this.configsRender[key].loading = this.configsDefault[key].loading;\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"container-fluid\">\r\n <h3 class=\"text-center\" *ngIf=\"configsRender.titleTable != null\">{{ configsRender.titleTable }}</h3>\r\n <div class=\"row justify-content-end mb-2\" *ngIf=\"(configsRender.actions.enableSelected?.active) || (configsRender.actions.disableSelected?.active) || configsRender.enableAll.active || configsRender.disableAll.active || configsRender.saveChanges.active || configsRender.actions.add?.active || configsRender.search.active\">\r\n <div class=\"col d-flex justify-content-end\" *ngIf=\"(configsRender.actions.enableSelected?.active) || (configsRender.actions.disableSelected?.active) || configsRender.enableAll.active || configsRender.disableAll.active || configsRender.saveChanges.active || configsRender.actions.add?.active\">\r\n <button attr.data-id=\"enable-selected-{{ dataId }}\" *ngIf=\"configsRender.actions.enableSelected?.active\" [disabled]=\"configsRender.actions.enableSelected?.loading || checkedRegisters().length == 0\" type=\"button\" class=\"btn btn-success mx-1\" (click)=\"onActionClick({event: $event,type: 'enableSelected', data: checkedRegisters()})\">\r\n <span *ngIf=\"configsRender.actions.enableSelected?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"configsRender.actions.enableSelected.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-selected-{{ dataId }}\" *ngIf=\"configsRender.actions.disableSelected?.active\" [disabled]=\"configsRender.actions.disableSelected?.loading || checkedRegisters().length == 0\" type=\"button\" class=\"btn btn-danger mx-1\" (click)=\"onActionClick({event: $event,type: 'disableSelected', data: checkedRegisters()})\">\r\n <span *ngIf=\"configsRender.actions.disableSelected?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"configsRender.actions.disableSelected?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"enable-all-{{ dataId }}\" *ngIf=\"configsRender.enableAll.active\" type=\"button\" class=\"btn btn-success mx-1\" [disabled]=\"configsRender.enableAll.disabled\" (click)=\"onActionClick({event: $event, type: 'enableAll'})\">\r\n <span [innerHTML]=\"configsRender.enableAll.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-all-{{ dataId }}\" *ngIf=\"configsRender.disableAll.active\" type=\"button\" class=\"btn btn-danger mx-1\" [disabled]=\"configsRender.disableAll.disabled\" (click)=\"onActionClick({event: $event, type: 'disableAll'})\">\r\n <span [innerHTML]=\"configsRender.disableAll.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"save-changes-{{ dataId }}\" *ngIf=\"configsRender.saveChanges.active\" type=\"button\" class=\"btn btn-primary mx-1\" [disabled]=\"configsRender.saveChanges.disabled || configsRender.saveChanges.loading\" (click)=\"onActionClick({event: $event, type: 'saveChanges'})\">\r\n <span *ngIf=\"configsRender.saveChanges.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"configsRender.saveChanges.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"add-register-{{ dataId }}\" *ngIf=\"configsRender.actions.add?.active\" class=\"btn btn-success\" type=\"button\" (click)=\"onActionClick({event: $event, type: 'add'})\">\r\n <span [innerHTML]=\"configsRender.actions.add?.labelHtml\"></span>\r\n </button>\r\n </div>\r\n <div class=\"col-lg-3\" *ngIf=\"configsRender.search.active\">\r\n <div class=\"input-group\">\r\n <input attr.data-id=\"input-search-{{ dataId }}\" type=\"text\" class=\"form-control\" [(ngModel)]=\"configsRender.search.textSearch\" [placeholder]=\"configsRender.search.placeholderSearch != undefined ? configsRender.search.placeholderSearch : ''\" (input)=\"onKeySearch()\">\r\n <button attr.data-id=\"restart-search-{{ dataId }}\" class=\"btn btn-primary\" type=\"button\" (click)=\"onRestarSeach()\" [ngbTooltip]=\"configsRender.labels?.tooltips?.clearSearch\">\r\n <i class=\"bi bi-arrow-counterclockwise\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <ngx-skeleton-loader *ngIf=\"configsRender.loading\" count=\"5\"></ngx-skeleton-loader>\r\n <p *ngIf=\"!configsRender.loading && configsRender.collectionSize == 0\" class=\"text-center\">{{ configsRender.labels.noRegisters }}</p>\r\n <div *ngIf=\"!configsRender.loading && configsRender.collectionSize > 0\" class=\"table-responsive\">\r\n <table class=\"table table-striped table-bordered\" [class.table-sm]=\"configsRender.tableSize == 'small'\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-center\" *ngIf=\"configsRender.actions.check?.active\">\r\n <input attr.data-id=\"box-select-all-{{ dataId }}\" #selectAll class=\"form-check-input\" type=\"checkbox\" (change)=\"onChangeSelectAll()\">\r\n </th>\r\n <th *ngFor=\"let col of headRowRender\" [class.pointer]=\"col.order.visible\" (click)=\"( col.order.visible ? onOrderChange({ field: col.field, asc: ( col.order.active ? !col.order.asc : true ) }) : return )\">\r\n <span [innerHTML]=\"col.label\"></span>\r\n <i *ngIf=\"col.order.visible && col.order.active && !col.order.asc\" class=\"bi bi-chevron-down ms-1\"></i>\r\n <i *ngIf=\"col.order.visible && col.order.active && col.order.asc\" class=\"bi bi-chevron-up ms-1\"></i>\r\n </th>\r\n <th class=\"col-compact\" *ngIf=\"configsRender.actions.edit?.active || configsRender.actions.delete?.active || configsRender.actions.enabled?.active || configsRender.actions.disabled?.active || configsRender.actions.loginAs?.active\"></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let register of registersRender; let i = index\">\r\n <tr attr.data-id=\"select-register-{{ dataId }}-{{ i }}\" [class.pointer]=\"register.configRegister?.actions?.select?.active\" (click)=\"register.configRegister?.actions?.select?.active ? onActionClick({event: $event,type: 'select',data: register, index: i}):return\">\r\n <td class=\"text-center\" *ngIf=\"configsRender.actions.check?.active\" (click)=\"stopPropagation($event)\">\r\n <input *ngIf=\"register.configRegister.actions.check.active\" [disabled]=\"register.configRegister.actions.check.disabled\" attr.data-id=\"box-select-register-{{ dataId }}-{{ i }}\" class=\"form-check-input\" type=\"checkbox\" [(ngModel)]=\"register.configRegister.actions.check.checked\" (change)=\"setSelectAll()\">\r\n </td>\r\n\r\n <ng-container *ngFor=\"let col of headRowRender; let j = index\">\r\n <td [class.text-end]=\"col.type == 'number'\">\r\n <span *ngIf=\"col.field != 'is_active'; else renderIsActive\" [innerHTML]=\"registers[i][(col.field == null || col.field == '' ? objectKeys(register)[j] : col.field)]\"></span>\r\n <ng-template #renderIsActive>\r\n <input attr.data-id=\"box-is-active-{{ dataId }}-{{ i }}\" class=\"form-check-input\" type=\"checkbox\" [ngModel]=\"registers[i][col.field]\" (ngModelChange)=\"onActionClick({type: 'changeIsActive', data: $event, index: i})\">\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n\r\n <td class=\"text-nowrap\" *ngIf=\"configsRender.actions.edit?.active || configsRender.actions.delete?.active || configsRender.actions.enabled?.active || configsRender.actions.disabled?.active || configsRender.actions.loginAs?.active\">\r\n <button attr.data-id=\"edit-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.edit?.active\" [disabled]=\"register.configRegister?.actions?.edit?.disabled\" type=\"button\" class=\"btn btn-primary mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'edit',data: register, index: i})\">\r\n <span [innerHTML]=\"register.configRegister?.actions?.edit?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"delete-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.delete?.active\" [disabled]=\"register.configRegister?.actions?.delete?.loading || register.configRegister?.actions?.delete?.disabled\" type=\"button\" class=\"btn btn-danger mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'delete',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.delete?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.delete?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"enable-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.enabled?.active\" [disabled]=\"register.configRegister?.actions?.enabled?.loading || register.configRegister?.actions?.enabled?.disabled\" type=\"button\" class=\"btn btn-success mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'enabled',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.enabled?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.enabled?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.disabled?.active\" [disabled]=\"register.configRegister?.actions?.disabled?.loading || register.configRegister?.actions?.disabled?.disabled\" type=\"button\" class=\"btn btn-danger mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'disabled',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.disabled?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.disabled?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"login-as-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.loginAs?.active\" [disabled]=\"register.configRegister?.actions?.loginAs?.loading || register.configRegister?.actions?.loginAs?.disabled\" type=\"button\" class=\"btn btn-primary mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'loginAs',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.loginAs?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div> \r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.loginAs?.labelHtml\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"position-sticky bottom-0 bg-white\" *ngIf=\"configsRender.paginationActive && configsRender.collectionSize > 0\">\r\n <div class=\"row justify-content-end border-top pt-2\">\r\n <div class=\"col-sm-6\">\r\n <ngb-pagination\r\n class=\"d-flex justify-content-center\"\r\n [pageSize]=\"configsRender.pageSize\"\r\n [collectionSize]=\"configsRender.collectionSize\"\r\n [(page)]=\"configsRender.page\"\r\n [maxSize]=\"5\"\r\n [rotate]=\"true\"\r\n [boundaryLinks]=\"true\"\r\n [ellipses]=\"true\"\r\n (pageChange)=\"onPageChange()\"\r\n size=\"sm\"\r\n >\r\n <ng-template ngbPaginationNumber let-page><span attr.data-id=\"page-{{ dataId }}-{{ page }}\">{{ page }}</span></ng-template>\r\n <ng-template ngbPaginationFirst><span attr.data-id=\"page-first-{{ dataId }}\">««</span></ng-template>\r\n <ng-template ngbPaginationLast><span attr.data-id=\"page-last-{{ dataId }}\">»»</span></ng-template>\r\n <ng-template ngbPaginationPrevious><span attr.data-id=\"page-previus-{{ dataId }}\">«</span></ng-template>\r\n <ng-template ngbPaginationNext><span attr.data-id=\"page-next-{{ dataId }}\">»</span></ng-template>\r\n </ngb-pagination>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { NgxTableComponent } from './ngx-table.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxTableComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n NgbModule,\r\n NgxSkeletonLoaderModule,\r\n ],\r\n exports: [\r\n NgxTableComponent\r\n ]\r\n})\r\nexport class NgxTableModule { }\r\n","/*\r\n * Public API Surface of ngx-table\r\n */\r\n\r\nexport * from './lib/ngx-table.service';\r\nexport * from './lib/ngx-table.component';\r\nexport * from './lib/ngx-table.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|