kivio 1.5.1 → 1.5.2

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.
@@ -55,7 +55,6 @@ export class KvMainTableComponent {
55
55
  this.subscription = new Subscription();
56
56
  }
57
57
  ngOnInit() {
58
- this.onSearched();
59
58
  this.subscription.add(this.paginationService.paginationState$.subscribe((state) => {
60
59
  this.currentPage = state.currentPage;
61
60
  this.pageSize = state.pageSize;
@@ -313,4 +312,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
313
312
  type: HostListener,
314
313
  args: ['document:click', ['$event']]
315
314
  }] } });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtbWFpbi10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXZpby9zcmMvbGliL2NvbXBvbmVudHMva3YtbWFpbi10YWJsZS9rdi1tYWluLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9rdi1tYWluLXRhYmxlL2t2LW1haW4tdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBSU4sWUFBWSxFQUVaLFlBQVksR0FFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFLeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7QUF5QnJHLE1BQU0sT0FBTyxvQkFBb0I7SUFtQi9CLElBQWEsVUFBVSxDQUFDLEtBQWE7UUFDbkMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3JFO0lBQ0gsQ0FBQztJQTRDRCxZQUNVLGlCQUFvQyxFQUNwQyxJQUFnQjtRQURoQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFNBQUksR0FBSixJQUFJLENBQVk7UUFwRWpCLFlBQU8sR0FBcUMsRUFBRSxDQUFDO1FBQy9DLFNBQUksR0FBZ0IsRUFBRSxDQUFDO1FBRXZCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsaUJBQVksR0FBVyxvQkFBb0IsQ0FBQztRQUM1Qyx1QkFBa0IsR0FDekIsNENBQTRDLENBQUM7UUFDdEMsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFDekIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixpQkFBWSxHQUFZLElBQUksQ0FBQztRQUM3QixZQUFPLEdBQVcsU0FBUyxDQUFDO1FBQzVCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsMEJBQXFCLEdBQWEsRUFBRSxDQUFDO1FBV3BDLGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0QsaUJBQVksR0FJakIsSUFBSSxZQUFZLEVBSWpCLENBQUM7UUFFSyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQU92QyxDQUFDO1FBRUwsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFDeEIsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUNyQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixrQkFBYSxHQUFnQixFQUFFLENBQUM7UUFDekIsa0JBQWEsR0FBYSxFQUFFLENBQUM7UUFDcEMsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUNoQixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixZQUFPLEdBQVE7WUFDcEIsS0FBSyxFQUFFLEVBQUU7WUFDVCxJQUFJLEVBQUUsRUFBRTtZQUNSLGdCQUFnQixFQUFFLEVBQUU7WUFDcEIsY0FBYyxFQUFFLEVBQUU7WUFDbEIsSUFBSSxFQUFFLEVBQUU7WUFDUixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFDTSxpQkFBWSxHQUFpQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBS3JELENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUMvQyxDQUFDLEtBQXNCLEVBQUUsRUFBRTtZQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ2pDLENBQUMsQ0FDRixDQUNGLENBQUM7UUFFRixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU3QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDOUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDO1FBRTVDLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDO2dCQUMzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVk7YUFDOUIsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksRUFBRTtnQkFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDakQ7aUJBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxnQkFBZ0IsRUFBRTtnQkFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUN6RTtpQkFBTTtnQkFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUNwRDtTQUNGO0lBQ0gsQ0FBQztJQUdELGtCQUFrQixDQUFDLEtBQVk7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1lBQzlCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDM0MsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZO2FBQzlCLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTSw4QkFBOEI7UUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLEdBQUcsSUFBSTtZQUNQLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztTQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBWSxFQUFFLFNBQWlCO1FBQ2hELElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVM7WUFDNUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUs7WUFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxCLElBQUksUUFBUSxHQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3hELFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQWUsRUFBRSxFQUFFLENBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ2xCLFdBQVcsRUFBRTtpQkFDYixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDN0MsQ0FDRixDQUFDO1NBQ0g7UUFFRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQ25CLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUN0QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQ2pDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzNELENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxDQUNMLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsRUFBRTtZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQ2pDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUM7WUFDM0MsV0FBVyxFQUFFLENBQUM7WUFDZCxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1NBQzlCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN2QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUUxQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ2pELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FDakUsQ0FBQztRQUVGLElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hDO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxTQUFpQjtRQUMxQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFckMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO1lBQzdDLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksVUFBVSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDdkUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3JCO2lCQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxDQUFDLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUNyQjtTQUNGO2FBQU07WUFDTCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztZQUM3QyxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQzNCO1lBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXO29CQUN0QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7aUJBQzlCLENBQUMsQ0FBQzthQUNKO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVztZQUN0QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtTQUM5QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQWE7UUFDN0IsT0FBTyxDQUNMLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEtBQUssS0FBSyxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FDMUUsQ0FBQztJQUNKLENBQUM7SUFFTSxRQUFRLENBQUMsSUFBUztRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQWlCLEVBQUUsS0FBWTtRQUMxQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUMvQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRTlCLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNwQztTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7WUFDdkUsSUFBSSxTQUFTLEtBQUssWUFBWSxFQUFFO2dCQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDeEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDdkM7aUJBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUNsQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDaEM7WUFDRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ2pELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FDakUsQ0FBQztZQUVGLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN4QztTQUNGO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUN6QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUNoRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUU7Z0JBQy9ELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7Z0JBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQzthQUNwQztTQUNGO0lBQ0gsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLEtBQUssRUFBRSxFQUFFO1lBQ1QsSUFBSSxFQUFFLEVBQUU7WUFDUixnQkFBZ0IsRUFBRSxFQUFFO1lBQ3BCLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLElBQUksRUFBRSxFQUFFO1lBQ1IsTUFBTSxFQUFFLEVBQUU7U0FDWCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7K0dBbFVVLG9CQUFvQjttR0FBcEIsb0JBQW9CLDh5QkM5Q2pDLG1pWEFtUGUscW1YRDdNWCxZQUFZLHVqQkFDWixXQUFXLCttQkFDWCxrQkFBa0IsdUtBQ2xCLHlCQUF5Qjs7NEZBS2hCLG9CQUFvQjtrQkFaaEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLHlCQUF5QjtxQkFDMUI7K0dBS1EsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFNdUIsbUJBQW1CO3NCQUEvQyxZQUFZO3VCQUFDLGFBQWE7Z0JBQ2pCLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFVRyxjQUFjO3NCQUF2QixNQUFNO2dCQTZFUCxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIE9uSW5pdCxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgT25EZXN0cm95LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBFbGVtZW50UmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgS3ZMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4va3YtbG9hZGluZy9rdi1sb2FkaW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgUGFnaW5hdGlvblNlcnZpY2UsXHJcbiAgUGFnaW5hdGlvblN0YXRlLFxyXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BhZ2luYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBSZXNvdXJjZU5vdEZvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi4va3YtcmVzb3VyY2Utbm90LWZvdW5kL2t2LXJlc291cmNlLW5vdC1mb3VuZC5jb21wb25lbnQnO1xyXG5cclxuaW50ZXJmYWNlIFRhYmxlSXRlbSB7XHJcbiAgc3RhdGU/OiBzdHJpbmc7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICBjcmVhdGVkX2F0Pzogc3RyaW5nO1xyXG4gIGV4cGlyZV9hdD86IHN0cmluZztcclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIHNvdXJjZT86IHN0cmluZztcclxuICBkZXNjcmlwdGlvbj86IHN0cmluZztcclxuICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWt2LW1haW4tdGFibGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBLdkxvYWRpbmdDb21wb25lbnQsXHJcbiAgICBSZXNvdXJjZU5vdEZvdW5kQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LW1haW4tdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9rdi1tYWluLXRhYmxlLmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2TWFpblRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgY29sdW1uczogeyBrZXk6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10gPSBbXTtcclxuICBASW5wdXQoKSBkYXRhOiBUYWJsZUl0ZW1bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGV4dHJhRGF0YSE6IGFueVtdO1xyXG4gIEBJbnB1dCgpIHNob3dQYWdpbmF0b3I6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxhenlMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2VUaXRsZTogc3RyaW5nID0gJ1Jlc291cmNlIG5vdCBmb3VuZCc7XHJcbiAgQElucHV0KCkgbWVzc2FnZURlc2NyaXB0aW9uOiBzdHJpbmcgPVxyXG4gICAgJ1RoZSByZXF1ZXN0ZWQgcmVzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kLic7XHJcbiAgQElucHV0KCkgdG90YWxSZWNvcmRzOiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGhhc01vcmVJdGVtczogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdGFibGVJZDogc3RyaW5nID0gJ2RlZmF1bHQnO1xyXG4gIEBJbnB1dCgpIGxldEZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaWRkZW5Db2x1bW5zT25Nb2JpbGU6IHN0cmluZ1tdID0gW107XHJcbiAgdG9kYXkhOiBzdHJpbmc7XHJcbiAgc2VhcmNoVGV4dDogYW55O1xyXG4gIHBlbmRpbmdTZWFyY2g6IGFueTtcclxuICBASW5wdXQoKSBzZXQgdG90YWxJdGVtcyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVBhZ2luYXRpb25TdGF0ZSh7IHRvdGFsSXRlbXM6IHZhbHVlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQENvbnRlbnRDaGlsZCgnY2VsbEFjdGlvbnMnKSBjZWxsQWN0aW9uc1RlbXBsYXRlOiBhbnk7XHJcbiAgQE91dHB1dCgpIG9uTmFtZUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uUGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPHtcclxuICAgIHBhZ2U6IG51bWJlcjtcclxuICAgIHBhZ2VTaXplOiBudW1iZXI7XHJcbiAgICBzZWFyY2hUZXh0OiBzdHJpbmc7XHJcbiAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIHBhZ2U6IG51bWJlcjtcclxuICAgIHBhZ2VTaXplOiBudW1iZXI7XHJcbiAgICBzZWFyY2hUZXh0OiBzdHJpbmc7XHJcbiAgfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uRmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBzdGF0ZTogc3RyaW5nO1xyXG4gICAgdHlwZTogc3RyaW5nO1xyXG4gICAgY3JlYXRlZF9hdF9zdGFydDogc3RyaW5nO1xyXG4gICAgY3JlYXRlZF9hdF9lbmQ6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIHNvdXJjZTogc3RyaW5nO1xyXG4gIH0+KCk7XHJcblxyXG4gIGRyb3Bkb3duT3BlblN0YXRlID0gZmFsc2U7XHJcbiAgZHJvcGRvd25PcGVuVHlwZSA9IGZhbHNlO1xyXG4gIGRyb3Bkb3duT3BlblNvdXJjZSA9IGZhbHNlO1xyXG4gIGNhbGVuZGFyT3BlbiA9IGZhbHNlO1xyXG4gIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xyXG4gIHBhZ2VTaXplOiBudW1iZXIgPSA1O1xyXG4gIHNob3dGaWx0ZXJNZW51ID0gZmFsc2U7XHJcbiAgZmlsdGVyZWRJdGVtczogVGFibGVJdGVtW10gPSBbXTtcclxuICBwdWJsaWMgYWN0aXZlQ29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuICBvcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHB1YmxpYyBzZWFyY2hJbnB1dDogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIGZpbHRlcnM6IGFueSA9IHtcclxuICAgIHN0YXRlOiAnJyxcclxuICAgIHR5cGU6ICcnLFxyXG4gICAgY3JlYXRlZF9hdF9zdGFydDogJycsXHJcbiAgICBjcmVhdGVkX2F0X2VuZDogJycsXHJcbiAgICBuYW1lOiAnJyxcclxuICAgIHNvdXJjZTogJycsXHJcbiAgfTtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcGFnaW5hdGlvblNlcnZpY2U6IFBhZ2luYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMub25TZWFyY2hlZCgpXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UucGFnaW5hdGlvblN0YXRlJC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHN0YXRlOiBQYWdpbmF0aW9uU3RhdGUpID0+IHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBzdGF0ZS5jdXJyZW50UGFnZTtcclxuICAgICAgICAgIHRoaXMucGFnZVNpemUgPSBzdGF0ZS5wYWdlU2l6ZTtcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgICk7XHJcblxyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMudG9kYXkgPSBub3cudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IHRoaXMucGFnaW5hdGlvblNlcnZpY2UuZ2V0Q3VycmVudFN0YXRlKCk7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gY3VycmVudFN0YXRlLmN1cnJlbnRQYWdlO1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IGN1cnJlbnRTdGF0ZS5wYWdlU2l6ZTtcclxuICAgIHRoaXMuZmlsdGVycy5uYW1lID0gY3VycmVudFN0YXRlLnNlYXJjaFRleHQ7XHJcblxyXG4gICAgaWYgKHRoaXMudG90YWxSZWNvcmRzID4gMCkge1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVBhZ2luYXRpb25TdGF0ZSh7XHJcbiAgICAgICAgdG90YWxJdGVtczogdGhpcy50b3RhbFJlY29yZHMsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlRmlsdGVyZWREYXRhKCk7XHJcbiAgICBpZiAodGhpcy5sYXp5TG9hZGluZykge1xyXG4gICAgICB0aGlzLmxvYWRMYXp5RGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbHVtbnMgJiYgdGhpcy5jb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKHRoaXMuY29sdW1uc1swXS5sYWJlbCA9PT0gJ09mZmVyIG5hbWUnKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gWydDcmVhdGVkJywgJ09mZmVyZWQnLCAnQ2xvc2VkJ107XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jb2x1bW5zWzBdLmxhYmVsID09PSAnQ3VzdG9tZXIgRW1haWwnKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gWydDcmVhdGVkJywgJ1JlamVjdGVkJywgJ1BlbmRpbmcnLCAnQ2xvc2VkJywgJ0FwcHJvdmVkJ107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gWydBcHByb3ZlZCcsICdSZWplY3RlZCcsICdQZW5kaW5nJ107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVDbGlja091dHNpZGUoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW5TdGF0ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duT3BlblR5cGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW5Tb3VyY2UgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jYWxlbmRhck9wZW4gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWyd0b3RhbFJlY29yZHMnXSkge1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVBhZ2luYXRpb25TdGF0ZSh7XHJcbiAgICAgICAgdG90YWxJdGVtczogdGhpcy50b3RhbFJlY29yZHMsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2RhdGEnXSAmJiAhdGhpcy5sYXp5TG9hZGluZykge1xyXG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVuU3Vic2NyaWJlVG9QYWdpbmF0aW9uU2VydmljZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZURhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEubWFwKChpdGVtOiBUYWJsZUl0ZW0pID0+ICh7XHJcbiAgICAgIC4uLml0ZW0sXHJcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmNoYW5nZVRleHQoaXRlbS5kZXNjcmlwdGlvbiA/PyAnJywgNTApLFxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2VUZXh0KHRleHQ6IHN0cmluZywgbWF4TGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gJyc7XHJcbiAgICByZXR1cm4gdGV4dC5sZW5ndGggPiBtYXhMZW5ndGhcclxuICAgICAgPyB0ZXh0LnN1YnN0cmluZygwLCBtYXhMZW5ndGgpLnRyaW1FbmQoKSArICcuLi4nXHJcbiAgICAgIDogdGV4dDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRmlsdGVyZWREYXRhKCkge1xyXG4gICAgdGhpcy51cGRhdGVEYXRhKCk7XHJcbiAgICBpZiAoIXRoaXMubGF6eUxvYWRpbmcpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gdGhpcy5nZXRGaWx0ZXJlZERhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmlsdGVyZWREYXRhKCkge1xyXG4gICAgdGhpcy51cGRhdGVEYXRhKCk7XHJcblxyXG4gICAgbGV0IGZpbHRlcmVkOiBUYWJsZUl0ZW1bXSA9IHRoaXMuZGF0YTtcclxuICAgIGlmICh0aGlzLmZpbHRlcnMubmFtZSAmJiB0aGlzLmZpbHRlcnMubmFtZS50cmltKCkgIT09ICcnKSB7XHJcbiAgICAgIGZpbHRlcmVkID0gdGhpcy5kYXRhLmZpbHRlcigoaXRlbTogVGFibGVJdGVtKSA9PlxyXG4gICAgICAgIHRoaXMuY29sdW1ucy5zb21lKChjb2wpID0+XHJcbiAgICAgICAgICBTdHJpbmcoaXRlbVtjb2wua2V5XSlcclxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgLmluY2x1ZGVzKHRoaXMuZmlsdGVycy5uYW1lLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaWx0ZXJlZC5zbGljZShcclxuICAgICAgKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucGFnZVNpemUsXHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgKiB0aGlzLnBhZ2VTaXplXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpbHRlcmVkRGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLmxhenlMb2FkaW5nID8gdGhpcy5kYXRhIDogdGhpcy5maWx0ZXJlZEl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgdG90YWxQYWdlcygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5jYWxjdWxhdGVUb3RhbFBhZ2VzKCkgfHxcclxuICAgICAgTWF0aC5jZWlsKFxyXG4gICAgICAgIHRoaXMuZGF0YS5sZW5ndGggLyB0aGlzLnBhZ2VTaXplXHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUb0ZpcnN0UGFnZSgpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS51cGRhdGVQYWdpbmF0aW9uU3RhdGUoe1xyXG4gICAgICBjdXJyZW50UGFnZTogMSxcclxuICAgICAgc2VhcmNoVGV4dDogdGhpcy5maWx0ZXJzLm5hbWUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoZWQoKSB7XHJcbiAgICB0aGlzLmZpbHRlcnMubmFtZSA9IHRoaXMucGVuZGluZ1NlYXJjaDtcclxuICAgIHRoaXMudXBkYXRlVG9GaXJzdFBhZ2UoKTtcclxuICAgIHRoaXMudXBkYXRlRmlsdGVyZWREYXRhKCk7XHJcblxyXG4gICAgY29uc3QgaGFzRmlsdGVycyA9IE9iamVjdC52YWx1ZXModGhpcy5maWx0ZXJzKS5zb21lKFxyXG4gICAgICAodmFsdWUpID0+IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09ICcnXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChoYXNGaWx0ZXJzKSB7XHJcbiAgICAgIHRoaXMub25GaWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlcnMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJzLm5hbWUgPSAnJztcclxuICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZERhdGEoKTtcclxuICAgICAgdGhpcy5vbkZpbHRlckNoYW5nZS5lbWl0KHRoaXMuZmlsdGVycyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQYWdlKGRpcmVjdGlvbjogbnVtYmVyKSB7XHJcbiAgICBjb25zdCB0b3RhbFBhZ2VzID0gdGhpcy50b3RhbFBhZ2VzKCk7XHJcblxyXG4gICAgaWYgKHRoaXMubGF6eUxvYWRpbmcpIHtcclxuICAgICAgY29uc3QgbmV3UGFnZSA9IHRoaXMuY3VycmVudFBhZ2UgKyBkaXJlY3Rpb247XHJcbiAgICAgIGlmIChuZXdQYWdlID49IDEgJiYgbmV3UGFnZSA8PSB0b3RhbFBhZ2VzKSB7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS51cGRhdGVQYWdpbmF0aW9uU3RhdGUoeyBjdXJyZW50UGFnZTogbmV3UGFnZSB9KTtcclxuICAgICAgICB0aGlzLmxvYWRMYXp5RGF0YSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFBhZ2UgIT09IDEgJiYgbmV3UGFnZSA8IDEpIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVBhZ2luYXRpb25TdGF0ZSh7IGN1cnJlbnRQYWdlOiAxIH0pO1xyXG4gICAgICAgIHRoaXMubG9hZExhenlEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IG5ld1BhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlICsgZGlyZWN0aW9uO1xyXG4gICAgICBpZiAobmV3UGFnZSA+IDAgJiYgbmV3UGFnZSA8PSB0b3RhbFBhZ2VzKSB7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS51cGRhdGVQYWdpbmF0aW9uU3RhdGUoeyBjdXJyZW50UGFnZTogbmV3UGFnZSB9KTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmhhc01vcmVJdGVtcykge1xyXG4gICAgICAgIHRoaXMub25QYWdlQ2hhbmdlLmVtaXQoe1xyXG4gICAgICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICAgICAgc2VhcmNoVGV4dDogdGhpcy5maWx0ZXJzLm5hbWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRMYXp5RGF0YSgpIHtcclxuICAgIHRoaXMub25QYWdlQ2hhbmdlLmVtaXQoe1xyXG4gICAgICBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlLFxyXG4gICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSxcclxuICAgICAgc2VhcmNoVGV4dDogdGhpcy5maWx0ZXJzLm5hbWUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRQb3NOYW1lKHBvc0lkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5leHRyYURhdGE/LmZpbmQoKHBvcykgPT4gcG9zLnBvaW50X29mX3NhbGVfaWQgPT09IHBvc0lkKT8ubmFtZSB8fCAnJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbWl0RGF0YShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMub25OYW1lQ2xpY2tlZC5lbWl0KGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ29sdW1uKGNvbHVtbktleTogc3RyaW5nLCBldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCBjaGVja2VkID0gaW5wdXQuY2hlY2tlZDtcclxuXHJcbiAgICBpZiAoY2hlY2tlZCkge1xyXG4gICAgICBpZiAoIXRoaXMuYWN0aXZlQ29sdW1ucy5pbmNsdWRlcyhjb2x1bW5LZXkpKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVDb2x1bW5zLnB1c2goY29sdW1uS2V5KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hY3RpdmVDb2x1bW5zID0gdGhpcy5hY3RpdmVDb2x1bW5zLmZpbHRlcigoYykgPT4gYyAhPT0gY29sdW1uS2V5KTtcclxuICAgICAgaWYgKGNvbHVtbktleSA9PT0gJ2NyZWF0ZWRfYXQnKSB7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuZmlsdGVyc1snY3JlYXRlZF9hdF9zdGFydCddO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmZpbHRlcnNbJ2NyZWF0ZWRfYXRfZW5kJ107XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5maWx0ZXJzW2NvbHVtbktleV0pIHtcclxuICAgICAgICBkZWxldGUgdGhpcy5maWx0ZXJzW2NvbHVtbktleV07XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaGFzRmlsdGVycyA9IE9iamVjdC52YWx1ZXModGhpcy5maWx0ZXJzKS5zb21lKFxyXG4gICAgICAgICh2YWx1ZSkgPT4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gJydcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICghaGFzRmlsdGVycykge1xyXG4gICAgICAgIHRoaXMudXBkYXRlVG9GaXJzdFBhZ2UoKTtcclxuICAgICAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ2FsZW5kYXIoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyT3BlbiA9ICF0aGlzLmNhbGVuZGFyT3BlbjtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVJhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuZmlsdGVycy5jcmVhdGVkX2F0X3N0YXJ0ICYmIHRoaXMuZmlsdGVycy5jcmVhdGVkX2F0X2VuZCkge1xyXG4gICAgICBpZiAodGhpcy5maWx0ZXJzLmNyZWF0ZWRfYXRfc3RhcnQgPiB0aGlzLmZpbHRlcnMuY3JlYXRlZF9hdF9lbmQpIHtcclxuICAgICAgICBjb25zdCB0ZW1wID0gdGhpcy5maWx0ZXJzLmNyZWF0ZWRfYXRfc3RhcnQ7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzLmNyZWF0ZWRfYXRfc3RhcnQgPSB0aGlzLmZpbHRlcnMuY3JlYXRlZF9hdF9lbmQ7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzLmNyZWF0ZWRfYXRfZW5kID0gdGVtcDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyRmlsdGVycygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVycyA9IHtcclxuICAgICAgc3RhdGU6ICcnLFxyXG4gICAgICB0eXBlOiAnJyxcclxuICAgICAgY3JlYXRlZF9hdF9zdGFydDogJycsXHJcbiAgICAgIGNyZWF0ZWRfYXRfZW5kOiAnJyxcclxuICAgICAgbmFtZTogJycsXHJcbiAgICAgIHNvdXJjZTogJycsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5wZW5kaW5nU2VhcmNoID0gJyc7XHJcbiAgICB0aGlzLnVwZGF0ZVRvRmlyc3RQYWdlKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkRGF0YSgpO1xyXG4gICAgdGhpcy5vbkZpbHRlckNoYW5nZS5lbWl0KHRoaXMuZmlsdGVycyk7XHJcbiAgfVxyXG59IiwiPGxpYi1rdi1sb2FkaW5nIFttZXNzYWdlXT1cIm1lc3NhZ2VcIiBbaXNMb2FkaW5nXT1cImxvYWRpbmdcIiAqbmdJZj1cImxvYWRpbmdcIj4gPC9saWIta3YtbG9hZGluZz5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtc2VjdGlvblwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlcnNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZUNvbHVtbnMuaW5jbHVkZXMoY29sLmtleSlcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5rZXkgPT09ICdjcmVhdGVkX2F0J1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiIFtjbGFzcy5vcGVuXT1cImNhbGVuZGFyT3BlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAoY2xpY2spPVwiY2FsZW5kYXJPcGVuID0gIWNhbGVuZGFyT3BlbjsgZHJvcGRvd25PcGVuU3RhdGUgPSBmYWxzZTsgZHJvcGRvd25PcGVuVHlwZSA9IGZhbHNlOyBkcm9wZG93bk9wZW5Tb3VyY2UgPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlsdGVycy5jcmVhdGVkX2F0X3N0YXJ0ICYmIGZpbHRlcnMuY3JlYXRlZF9hdF9lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbHRlcnMuY3JlYXRlZF9hdF9zdGFydCB8IGRhdGU6J2RkL01NL3l5eXknIH19IC0ge3sgZmlsdGVycy5jcmVhdGVkX2F0X2VuZCB8IGRhdGU6J2RkL01NL3l5eXknIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlsdGVycy5jcmVhdGVkX2F0X3N0YXJ0ICYmICFmaWx0ZXJzLmNyZWF0ZWRfYXRfZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBmaWx0ZXJzLmNyZWF0ZWRfYXRfc3RhcnQgfCBkYXRlOidkZC9NTS95eXl5JyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWx0ZXJzLmNyZWF0ZWRfYXRfc3RhcnQgJiYgZmlsdGVycy5jcmVhdGVkX2F0X2VuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVycy5jcmVhdGVkX2F0X2VuZCB8IGRhdGU6J2RkL01NL3l5eXknIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpbHRlcnMuY3JlYXRlZF9hdF9zdGFydCAmJiAhZmlsdGVycy5jcmVhdGVkX2F0X2VuZFwiIGNsYXNzPVwicGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZWQgYXRcclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItcG9wdXBcIiAqbmdJZj1cImNhbGVuZGFyT3BlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIFsobmdNb2RlbCldPVwiZmlsdGVycy5jcmVhdGVkX2F0X3N0YXJ0XCIgKGNoYW5nZSk9XCJ1cGRhdGVSYW5nZSgpXCIgW21heF09XCJ0b2RheVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJkYXRlXCIgWyhuZ01vZGVsKV09XCJmaWx0ZXJzLmNyZWF0ZWRfYXRfZW5kXCIgKGNoYW5nZSk9XCJ1cGRhdGVSYW5nZSgpXCIgW21heF09XCJ0b2RheVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5rZXkgPT09ICdleHBpcmVfYXQnXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsPkZlY2hhOjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJkYXRlXCIgWyhuZ01vZGVsKV09XCJmaWx0ZXJzLmV4cGlyZV9hdFwiIFttYXhdPVwidG9kYXlcIiAvPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wua2V5ID09PSAnc3RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiIFtjbGFzcy5vcGVuXT1cImRyb3Bkb3duT3BlblN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAoY2xpY2spPVwiZHJvcGRvd25PcGVuU3RhdGUgPSAhZHJvcGRvd25PcGVuU3RhdGU7IGRyb3Bkb3duT3BlblR5cGUgPSBmYWxzZTsgZHJvcGRvd25PcGVuU291cmNlID0gZmFsc2U7IGNhbGVuZGFyT3BlbiA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlsdGVycy5zdGF0ZVwiIGNsYXNzPVwic3RhdGVcIiBbbmdDbGFzc109XCJmaWx0ZXJzLnN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVycy5zdGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpbHRlcnMuc3RhdGVcIiBjbGFzcz1cInBsYWNlaG9sZGVyXCI+U3RhdGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm9wdGlvbnNcIiAqbmdJZj1cImRyb3Bkb3duT3BlblN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgb3B0IG9mIG9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbHRlcnMuc3RhdGUgPSBvcHQ7IGRyb3Bkb3duT3BlblN0YXRlID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJvcHRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBvcHQgfX1cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5rZXkgPT09ICdzb3VyY2UnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRyb3Bkb3duXCIgW2NsYXNzLm9wZW5dPVwiZHJvcGRvd25PcGVuU291cmNlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiIChjbGljayk9XCJkcm9wZG93bk9wZW5Tb3VyY2UgPSAhZHJvcGRvd25PcGVuU291cmNlOyBkcm9wZG93bk9wZW5TdGF0ZSA9IGZhbHNlOyBkcm9wZG93bk9wZW5UeXBlID0gZmFsc2U7IGNhbGVuZGFyT3BlbiA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWx0ZXJzLnNvdXJjZVwiIGNsYXNzPVwic291cmNlXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVycy5zb3VyY2UgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmlsdGVycy5zb3VyY2VcIiBjbGFzcz1cInBsYWNlaG9sZGVyXCI+SW1wb3J0ZWQgZnJvbTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwib3B0aW9uc1wiICpuZ0lmPVwiZHJvcGRvd25PcGVuU291cmNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJmaWx0ZXJzLnNvdXJjZSA9J2xvY2FsJzsgZHJvcGRvd25PcGVuU291cmNlID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNvdXJjZVwiIFtuZ0NsYXNzXT1cIidsb2NhbCdcIj5sb2NhbFxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJmaWx0ZXJzLnNvdXJjZSA9ICdlY29tbWVyY2UnOyBkcm9wZG93bk9wZW5Tb3VyY2UgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic291cmNlXCIgW25nQ2xhc3NdPVwiJ2Vjb21tZXJjZSdcIj5lY29tbWVyY2VcclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICBcclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5rZXkgPT09ICd0eXBlJ1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tZHJvcGRvd25cIiBbY2xhc3Mub3Blbl09XCJkcm9wZG93bk9wZW5UeXBlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAoY2xpY2spPVwiZHJvcGRvd25PcGVuVHlwZSA9ICFkcm9wZG93bk9wZW5UeXBlOyBkcm9wZG93bk9wZW5TdGF0ZSA9IGZhbHNlOyBkcm9wZG93bk9wZW5Tb3VyY2UgPSBmYWxzZTsgY2FsZW5kYXJPcGVuID0gZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWx0ZXJzLnR5cGVcIiBjbGFzcz1cInR5cGVcIiAgW25nQ2xhc3NdPVwiZmlsdGVycy50eXBlLnJlcGxhY2UoJyAnLCAnLScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVycy50eXBlIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmlsdGVycy50eXBlXCIgY2xhc3M9XCJwbGFjZWhvbGRlclwiPk9mZmVyIHR5cGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm9wdGlvbnNcIiAqbmdJZj1cImRyb3Bkb3duT3BlblR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJmaWx0ZXJzLnR5cGUgPSdSZWd1bGFyIGF1Y3Rpb24nOyBkcm9wZG93bk9wZW5UeXBlID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0eXBlXCIgW25nQ2xhc3NdPVwiJ1JlZ3VsYXItYXVjdGlvbidcIj5SZWd1bGFyIGF1Y3Rpb25cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJmaWx0ZXJzLnR5cGUgPSAnUXVpY2sgb2ZmZXInOyBkcm9wZG93bk9wZW5UeXBlID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0eXBlXCIgW25nQ2xhc3NdPVwiJ1F1aWNrLW9mZmVyJ1wiPlF1aWNrIG9mZmVyIFxyXG4gICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1jb250YWluZXJcIiAqbmdJZj1cImxldEZpbHRlcnNcIj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJmaWx0ZXItb3ZlcmxheVwiXHJcbiAgICAgICAgICAqbmdJZj1cInNob3dGaWx0ZXJNZW51XCJcclxuICAgICAgICAgIChjbGljayk9XCJzaG93RmlsdGVyTWVudSA9IGZhbHNlXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAoY2xpY2spPVwic2hvd0ZpbHRlck1lbnUgPSAhc2hvd0ZpbHRlck1lbnU7IGRyb3Bkb3duT3BlblN0YXRlID0gZmFsc2U7IGRyb3Bkb3duT3BlblNvdXJjZSA9IGZhbHNlOyBjYWxlbmRhck9wZW4gPSBmYWxzZTsgZHJvcGRvd25PcGVuVHlwZSA9IGZhbHNlXCIgXHJcbiAgICAgICAgICBjbGFzcz1cImZpbHRlci1idXR0b25cIlxyXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzaG93RmlsdGVyTWVudVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbHVzXCI+Kzwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBmaWx0ZXItaWNvblwiPlxyXG4gICAgICAgICAgICBmaWx0ZXJfYWx0XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItbWVudVwiICpuZ0lmPVwic2hvd0ZpbHRlck1lbnVcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wua2V5ICE9PSAnbmFtZScgJiYgY29sLmtleSAhPT0gJ2ltYWdlcycgJiYgY29sLmtleSAhPT0gJ3Bvc19pZCcgJiYgY29sLmtleSAhPT0gJ3BvaW50X29mX3NhbGVfaWQnICYmIGNvbC5rZXkgIT09ICdkZXNjcmlwdGlvbicgXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWN0aXZlQ29sdW1ucy5pbmNsdWRlcyhjb2wua2V5KVwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQ29sdW1uKGNvbC5rZXksICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtdGV4dFwiPnt7IGNvbC5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgXHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBjbGFzcz1cImlucHV0XCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIkJ1c2Nhci4uLlwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwZW5kaW5nU2VhcmNoXCJcclxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25TZWFyY2hlZCgpXCJcclxuICAgICAgLz5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi0tY3JlYXRlXCIgKGNsaWNrKT1cIm9uU2VhcmNoZWQoKVwiPkJ1c2NhcjwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIoIWRhdGEgfHwgZGF0YS5sZW5ndGggPT09IDApICYmICFsb2FkaW5nXCI+XHJcbiAgICA8bGliLWt2LXJlc291cmNlLW5vdC1mb3VuZCBjbGFzcz1cInJlc291cmNlLW5vdC1mb3VuZFwiXHJcbiAgICAgIFttZXNzYWdlVGl0bGVdPVwibWVzc2FnZVRpdGxlXCJcclxuICAgICAgW21lc3NhZ2VEZXNjcmlwdGlvbl09XCJtZXNzYWdlRGVzY3JpcHRpb25cIj48L2xpYi1rdi1yZXNvdXJjZS1ub3QtZm91bmQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApIHx8IGxvYWRpbmdcIj5cclxuICAgIDx0YWJsZT5cclxuICAgICAgPHRoZWFkPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnNcIiBbY2xhc3MuaGlkZGVuLW1vYmlsZV09XCJoaWRkZW5Db2x1bW5zT25Nb2JpbGUuaW5jbHVkZXMoY29sdW1uLmtleSlcIj57eyBjb2x1bW4ubGFiZWwgfX08L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGhlYWQ+XHJcbiAgICAgIDx0Ym9keT5cclxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWREYXRhXCI+XHJcbiAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zXCIgW2NsYXNzLmhpZGRlbi1tb2JpbGVdPVwiaGlkZGVuQ29sdW1uc09uTW9iaWxlLmluY2x1ZGVzKGNvbHVtbi5rZXkpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0ZVwiIFtuZ0NsYXNzXT1cIml0ZW1bY29sdW1uLmtleV1cIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmxhYmVsID09PSAnU2VydmljZXMnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VydmljZS1pbmZvXCIgKGNsaWNrKT1cImVtaXREYXRhKGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtWyd1cmwnXSB8fCAnaHR0cHM6Ly9pLmltZ3VyLmNvbS9JblJhVnJMLmpwZydcIiBhbHQ9XCJJbWFnZW5cIiBjbGFzcz1cInNlcnZpY2UtaW1hZ2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImEtbGlua1wiPnt7IGl0ZW0ubmFtZSB9fTwvYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5rZXkgPT09ICduYW1lJyAmJiBjb2x1bW4ubGFiZWwgIT09ICdTZXJ2aWNlcydcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYS1saW5rXCIgKGNsaWNrKT1cImVtaXREYXRhKGl0ZW0pXCI+e3tcclxuICAgICAgICAgICAgICAgICAgaXRlbVtjb2x1bW4ua2V5XVxyXG4gICAgICAgICAgICAgICAgfX08L2E+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5rZXkgPT09ICdpbWFnZXMnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGltYWdlIG9mIGl0ZW1bY29sdW1uLmtleV0/LnNsaWNlKDAsIDMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlXCIgYWx0PVwiSW1hZ2VuXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtW2NvbHVtbi5rZXldPy5sZW5ndGggPiAzXCIgY2xhc3M9XCJleHRyYS1pbWFnZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAre3sgaXRlbVtjb2x1bW4ua2V5XS5sZW5ndGggLSAzIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5rZXkgPT09ICdjcmVhdGVkX2F0J1wiPlxyXG4gICAgICAgICAgICAgICAge3sgaXRlbVtjb2x1bW4ua2V5XSB8IGRhdGUgOiBcImRkL01NL3l5eXlcIiB9fVxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ua2V5ID09PSAnZXhwaXJlX2F0J1wiPlxyXG4gICAgICAgICAgICAgICAge3sgaXRlbVtjb2x1bW4ua2V5XSB8IGRhdGUgOiBcImRkL01NL3l5eXlcIiB9fVxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ua2V5ID09PSAnYWN0aW9ucydcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjZWxsQWN0aW9uc1RlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgY29sdW1uLmtleSAhPT0gJ2V4cGlyZV9hdCcgJiZcclxuICAgICAgICAgICAgICAgICAgY29sdW1uLmtleSAhPT0gJ2NyZWF0ZWRfYXQnICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbi5rZXkgIT09ICdwb2ludF9vZl9zYWxlX2lkJyAmJlxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW4ua2V5ICE9PSAnbmFtZScgJiZcclxuICAgICAgICAgICAgICAgICAgY29sdW1uLmtleSAhPT0gJ3Bvc19pZCcgJiZcclxuICAgICAgICAgICAgICAgICAgY29sdW1uLmtleSAhPT0gJ2ltYWdlcycgJiZcclxuICAgICAgICAgICAgICAgICAgY29sdW1uLmtleSAhPT0gJ2FjdGlvbnMnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGl0ZW1bY29sdW1uLmtleV0gfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi5rZXkgPT09ICdwb2ludF9vZl9zYWxlX2lkJyB8fCBjb2x1bW4ua2V5ID09PSAncG9zX2lkJ1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgZ2V0UG9zTmFtZShpdGVtW2NvbHVtbi5rZXldKSB9fVxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90Ym9keT5cclxuICAgIDwvdGFibGU+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dQYWdpbmF0b3JcIj5cclxuICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUtcGFnaW5hdGlvblwiPlxyXG4gICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb25cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNoYW5nZVBhZ2UoLTEpXCIgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSAxXCI+XHJcbiAgICAgICAgICAgICAgICAgIFByZXZpb3VzXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVBhZ2UoMSlcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXMoKSAmJiAhaGFzTW9yZUl0ZW1zXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgTmV4dFxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnJlbnQtc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+UGFnZSB7eyBjdXJyZW50UGFnZSB9fSBvZiB7eyB0b3RhbFBhZ2VzKCkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPiJdfQ==
315
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtbWFpbi10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXZpby9zcmMvbGliL2NvbXBvbmVudHMva3YtbWFpbi10YWJsZS9rdi1tYWluLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9rdi1tYWluLXRhYmxlL2t2LW1haW4tdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBSU4sWUFBWSxFQUVaLFlBQVksR0FFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFLeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7QUF5QnJHLE1BQU0sT0FBTyxvQkFBb0I7SUFtQi9CLElBQWEsVUFBVSxDQUFDLEtBQWE7UUFDbkMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3JFO0lBQ0gsQ0FBQztJQTRDRCxZQUNVLGlCQUFvQyxFQUNwQyxJQUFnQjtRQURoQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFNBQUksR0FBSixJQUFJLENBQVk7UUFwRWpCLFlBQU8sR0FBcUMsRUFBRSxDQUFDO1FBQy9DLFNB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dWpCQUNaLFdBQVcsK21CQUNYLGtCQUFrQix1S0FDbEIseUJBQXlCOzs0RkFLaEIsb0JBQW9CO2tCQVpoQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGtCQUFrQjt3QkFDbEIseUJBQXlCO3FCQUMxQjsrR0FLUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQU11QixtQkFBbUI7c0JBQS9DLFlBQVk7dUJBQUMsYUFBYTtnQkFDakIsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQVVHLGNBQWM7c0JBQXZCLE1BQU07Z0JBNEVQLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgT25Jbml0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBLdkxvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi9rdi1sb2FkaW5nL2t2LWxvYWRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBQYWdpbmF0aW9uU2VydmljZSxcclxuICBQYWdpbmF0aW9uU3RhdGUsXHJcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGFnaW5hdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJlc291cmNlTm90Rm91bmRDb21wb25lbnQgfSBmcm9tICcuLi9rdi1yZXNvdXJjZS1ub3QtZm91bmQva3YtcmVzb3VyY2Utbm90LWZvdW5kLmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgVGFibGVJdGVtIHtcclxuICBzdGF0ZT86IHN0cmluZztcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIGNyZWF0ZWRfYXQ/OiBzdHJpbmc7XHJcbiAgZXhwaXJlX2F0Pzogc3RyaW5nO1xyXG4gIG5hbWU/OiBzdHJpbmc7XHJcbiAgc291cmNlPzogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWIta3YtbWFpbi10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIEt2TG9hZGluZ0NvbXBvbmVudCxcclxuICAgIFJlc291cmNlTm90Rm91bmRDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtbWFpbi10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2t2LW1haW4tdGFibGUuY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZNYWluVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBjb2x1bW5zOiB7IGtleTogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGRhdGE6IFRhYmxlSXRlbVtdID0gW107XHJcbiAgQElucHV0KCkgZXh0cmFEYXRhITogYW55W107XHJcbiAgQElucHV0KCkgc2hvd1BhZ2luYXRvcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbGF6eUxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbWVzc2FnZVRpdGxlOiBzdHJpbmcgPSAnUmVzb3VyY2Ugbm90IGZvdW5kJztcclxuICBASW5wdXQoKSBtZXNzYWdlRGVzY3JpcHRpb246IHN0cmluZyA9XHJcbiAgICAnVGhlIHJlcXVlc3RlZCByZXNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQuJztcclxuICBASW5wdXQoKSB0b3RhbFJlY29yZHM6IG51bWJlciA9IDA7XHJcbiAgQElucHV0KCkgbWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgaGFzTW9yZUl0ZW1zOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSB0YWJsZUlkOiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcbiAgQElucHV0KCkgbGV0RmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGRlbkNvbHVtbnNPbk1vYmlsZTogc3RyaW5nW10gPSBbXTtcclxuICB0b2RheSE6IHN0cmluZztcclxuICBzZWFyY2hUZXh0OiBhbnk7XHJcbiAgcGVuZGluZ1NlYXJjaDogYW55O1xyXG4gIEBJbnB1dCgpIHNldCB0b3RhbEl0ZW1zKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UudXBkYXRlUGFnaW5hdGlvblN0YXRlKHsgdG90YWxJdGVtczogdmFsdWUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAQ29udGVudENoaWxkKCdjZWxsQWN0aW9ucycpIGNlbGxBY3Rpb25zVGVtcGxhdGU6IGFueTtcclxuICBAT3V0cHV0KCkgb25OYW1lQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25QYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8e1xyXG4gICAgcGFnZTogbnVtYmVyO1xyXG4gICAgcGFnZVNpemU6IG51bWJlcjtcclxuICAgIHNlYXJjaFRleHQ6IHN0cmluZztcclxuICB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgcGFnZTogbnVtYmVyO1xyXG4gICAgcGFnZVNpemU6IG51bWJlcjtcclxuICAgIHNlYXJjaFRleHQ6IHN0cmluZztcclxuICB9PigpO1xyXG5cclxuICBAT3V0cHV0KCkgb25GaWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIHN0YXRlOiBzdHJpbmc7XHJcbiAgICB0eXBlOiBzdHJpbmc7XHJcbiAgICBjcmVhdGVkX2F0X3N0YXJ0OiBzdHJpbmc7XHJcbiAgICBjcmVhdGVkX2F0X2VuZDogc3RyaW5nO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgc291cmNlOiBzdHJpbmc7XHJcbiAgfT4oKTtcclxuXHJcbiAgZHJvcGRvd25PcGVuU3RhdGUgPSBmYWxzZTtcclxuICBkcm9wZG93bk9wZW5UeXBlID0gZmFsc2U7XHJcbiAgZHJvcGRvd25PcGVuU291cmNlID0gZmFsc2U7XHJcbiAgY2FsZW5kYXJPcGVuID0gZmFsc2U7XHJcbiAgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XHJcbiAgcGFnZVNpemU6IG51bWJlciA9IDU7XHJcbiAgc2hvd0ZpbHRlck1lbnUgPSBmYWxzZTtcclxuICBmaWx0ZXJlZEl0ZW1zOiBUYWJsZUl0ZW1bXSA9IFtdO1xyXG4gIHB1YmxpYyBhY3RpdmVDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIG9wdGlvbnM6IHN0cmluZ1tdID0gW107XHJcbiAgcHVibGljIHNlYXJjaElucHV0OiBzdHJpbmcgPSAnJztcclxuICBwdWJsaWMgZmlsdGVyczogYW55ID0ge1xyXG4gICAgc3RhdGU6ICcnLFxyXG4gICAgdHlwZTogJycsXHJcbiAgICBjcmVhdGVkX2F0X3N0YXJ0OiAnJyxcclxuICAgIGNyZWF0ZWRfYXRfZW5kOiAnJyxcclxuICAgIG5hbWU6ICcnLFxyXG4gICAgc291cmNlOiAnJyxcclxuICB9O1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwYWdpbmF0aW9uU2VydmljZTogUGFnaW5hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVSZWY6IEVsZW1lbnRSZWZcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnBhZ2luYXRpb25TdGF0ZSQuc3Vic2NyaWJlKFxyXG4gICAgICAgIChzdGF0ZTogUGFnaW5hdGlvblN0YXRlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gc3RhdGUuY3VycmVudFBhZ2U7XHJcbiAgICAgICAgICB0aGlzLnBhZ2VTaXplID0gc3RhdGUucGFnZVNpemU7XHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLnRvZGF5ID0gbm93LnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmdldEN1cnJlbnRTdGF0ZSgpO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IGN1cnJlbnRTdGF0ZS5jdXJyZW50UGFnZTtcclxuICAgIHRoaXMucGFnZVNpemUgPSBjdXJyZW50U3RhdGUucGFnZVNpemU7XHJcbiAgICB0aGlzLmZpbHRlcnMubmFtZSA9IGN1cnJlbnRTdGF0ZS5zZWFyY2hUZXh0O1xyXG5cclxuICAgIGlmICh0aGlzLnRvdGFsUmVjb3JkcyA+IDApIHtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS51cGRhdGVQYWdpbmF0aW9uU3RhdGUoe1xyXG4gICAgICAgIHRvdGFsSXRlbXM6IHRoaXMudG90YWxSZWNvcmRzLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkRGF0YSgpO1xyXG4gICAgaWYgKHRoaXMubGF6eUxvYWRpbmcpIHtcclxuICAgICAgdGhpcy5sb2FkTGF6eURhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb2x1bW5zICYmIHRoaXMuY29sdW1ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbHVtbnNbMF0ubGFiZWwgPT09ICdPZmZlciBuYW1lJykge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IFsnQ3JlYXRlZCcsICdPZmZlcmVkJywgJ0Nsb3NlZCddO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY29sdW1uc1swXS5sYWJlbCA9PT0gJ0N1c3RvbWVyIEVtYWlsJykge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IFsnQ3JlYXRlZCcsICdSZWplY3RlZCcsICdQZW5kaW5nJywgJ0Nsb3NlZCcsICdBcHByb3ZlZCddO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IFsnQXBwcm92ZWQnLCAnUmVqZWN0ZWQnLCAnUGVuZGluZyddO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuU3RhdGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW5UeXBlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuU291cmNlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2FsZW5kYXJPcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1sndG90YWxSZWNvcmRzJ10pIHtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS51cGRhdGVQYWdpbmF0aW9uU3RhdGUoe1xyXG4gICAgICAgIHRvdGFsSXRlbXM6IHRoaXMudG90YWxSZWNvcmRzLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10gJiYgIXRoaXMubGF6eUxvYWRpbmcpIHtcclxuICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZERhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1blN1YnNjcmliZVRvUGFnaW5hdGlvblNlcnZpY2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVEYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLm1hcCgoaXRlbTogVGFibGVJdGVtKSA9PiAoe1xyXG4gICAgICAuLi5pdGVtLFxyXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5jaGFuZ2VUZXh0KGl0ZW0uZGVzY3JpcHRpb24gPz8gJycsIDUwKSxcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hhbmdlVGV4dCh0ZXh0OiBzdHJpbmcsIG1heExlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICghdGV4dCkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIHRleHQubGVuZ3RoID4gbWF4TGVuZ3RoXHJcbiAgICAgID8gdGV4dC5zdWJzdHJpbmcoMCwgbWF4TGVuZ3RoKS50cmltRW5kKCkgKyAnLi4uJ1xyXG4gICAgICA6IHRleHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZpbHRlcmVkRGF0YSgpIHtcclxuICAgIHRoaXMudXBkYXRlRGF0YSgpO1xyXG4gICAgaWYgKCF0aGlzLmxhenlMb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuZ2V0RmlsdGVyZWREYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlcmVkRGF0YSgpIHtcclxuICAgIHRoaXMudXBkYXRlRGF0YSgpO1xyXG5cclxuICAgIGxldCBmaWx0ZXJlZDogVGFibGVJdGVtW10gPSB0aGlzLmRhdGE7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJzLm5hbWUgJiYgdGhpcy5maWx0ZXJzLm5hbWUudHJpbSgpICE9PSAnJykge1xyXG4gICAgICBmaWx0ZXJlZCA9IHRoaXMuZGF0YS5maWx0ZXIoKGl0ZW06IFRhYmxlSXRlbSkgPT5cclxuICAgICAgICB0aGlzLmNvbHVtbnMuc29tZSgoY29sKSA9PlxyXG4gICAgICAgICAgU3RyaW5nKGl0ZW1bY29sLmtleV0pXHJcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIC5pbmNsdWRlcyh0aGlzLmZpbHRlcnMubmFtZS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmlsdGVyZWQuc2xpY2UoXHJcbiAgICAgICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlICogdGhpcy5wYWdlU2l6ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldCBmaWx0ZXJlZERhdGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5sYXp5TG9hZGluZyA/IHRoaXMuZGF0YSA6IHRoaXMuZmlsdGVyZWRJdGVtcztcclxuICB9XHJcblxyXG4gIHRvdGFsUGFnZXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UuY2FsY3VsYXRlVG90YWxQYWdlcygpIHx8XHJcbiAgICAgIE1hdGguY2VpbChcclxuICAgICAgICB0aGlzLmRhdGEubGVuZ3RoIC8gdGhpcy5wYWdlU2l6ZVxyXG4gICAgICApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVG9GaXJzdFBhZ2UoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UudXBkYXRlUGFnaW5hdGlvblN0YXRlKHtcclxuICAgICAgY3VycmVudFBhZ2U6IDEsXHJcbiAgICAgIHNlYXJjaFRleHQ6IHRoaXMuZmlsdGVycy5uYW1lLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaGVkKCkge1xyXG4gICAgdGhpcy5maWx0ZXJzLm5hbWUgPSB0aGlzLnBlbmRpbmdTZWFyY2g7XHJcbiAgICB0aGlzLnVwZGF0ZVRvRmlyc3RQYWdlKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkRGF0YSgpO1xyXG5cclxuICAgIGNvbnN0IGhhc0ZpbHRlcnMgPSBPYmplY3QudmFsdWVzKHRoaXMuZmlsdGVycykuc29tZShcclxuICAgICAgKHZhbHVlKSA9PiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSAnJ1xyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoaGFzRmlsdGVycykge1xyXG4gICAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVycy5uYW1lID0gJyc7XHJcbiAgICAgIHRoaXMudXBkYXRlRmlsdGVyZWREYXRhKCk7XHJcbiAgICAgIHRoaXMub25GaWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlcnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFnZShkaXJlY3Rpb246IG51bWJlcikge1xyXG4gICAgY29uc3QgdG90YWxQYWdlcyA9IHRoaXMudG90YWxQYWdlcygpO1xyXG5cclxuICAgIGlmICh0aGlzLmxhenlMb2FkaW5nKSB7XHJcbiAgICAgIGNvbnN0IG5ld1BhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlICsgZGlyZWN0aW9uO1xyXG4gICAgICBpZiAobmV3UGFnZSA+PSAxICYmIG5ld1BhZ2UgPD0gdG90YWxQYWdlcykge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UudXBkYXRlUGFnaW5hdGlvblN0YXRlKHsgY3VycmVudFBhZ2U6IG5ld1BhZ2UgfSk7XHJcbiAgICAgICAgdGhpcy5sb2FkTGF6eURhdGEoKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRQYWdlICE9PSAxICYmIG5ld1BhZ2UgPCAxKSB7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS51cGRhdGVQYWdpbmF0aW9uU3RhdGUoeyBjdXJyZW50UGFnZTogMSB9KTtcclxuICAgICAgICB0aGlzLmxvYWRMYXp5RGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBuZXdQYWdlID0gdGhpcy5jdXJyZW50UGFnZSArIGRpcmVjdGlvbjtcclxuICAgICAgaWYgKG5ld1BhZ2UgPiAwICYmIG5ld1BhZ2UgPD0gdG90YWxQYWdlcykge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UudXBkYXRlUGFnaW5hdGlvblN0YXRlKHsgY3VycmVudFBhZ2U6IG5ld1BhZ2UgfSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZERhdGEoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5oYXNNb3JlSXRlbXMpIHtcclxuICAgICAgICB0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHtcclxuICAgICAgICAgIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsXHJcbiAgICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSxcclxuICAgICAgICAgIHNlYXJjaFRleHQ6IHRoaXMuZmlsdGVycy5uYW1lLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkTGF6eURhdGEoKSB7XHJcbiAgICB0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHtcclxuICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIHNlYXJjaFRleHQ6IHRoaXMuZmlsdGVycy5uYW1lLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UG9zTmFtZShwb3NJZDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZXh0cmFEYXRhPy5maW5kKChwb3MpID0+IHBvcy5wb2ludF9vZl9zYWxlX2lkID09PSBwb3NJZCk/Lm5hbWUgfHwgJydcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdERhdGEoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLm9uTmFtZUNsaWNrZWQuZW1pdChkYXRhKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNvbHVtbihjb2x1bW5LZXk6IHN0cmluZywgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgY2hlY2tlZCA9IGlucHV0LmNoZWNrZWQ7XHJcblxyXG4gICAgaWYgKGNoZWNrZWQpIHtcclxuICAgICAgaWYgKCF0aGlzLmFjdGl2ZUNvbHVtbnMuaW5jbHVkZXMoY29sdW1uS2V5KSkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlQ29sdW1ucy5wdXNoKGNvbHVtbktleSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlQ29sdW1ucyA9IHRoaXMuYWN0aXZlQ29sdW1ucy5maWx0ZXIoKGMpID0+IGMgIT09IGNvbHVtbktleSk7XHJcbiAgICAgIGlmIChjb2x1bW5LZXkgPT09ICdjcmVhdGVkX2F0Jykge1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmZpbHRlcnNbJ2NyZWF0ZWRfYXRfc3RhcnQnXTtcclxuICAgICAgICBkZWxldGUgdGhpcy5maWx0ZXJzWydjcmVhdGVkX2F0X2VuZCddO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyc1tjb2x1bW5LZXldKSB7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuZmlsdGVyc1tjb2x1bW5LZXldO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGhhc0ZpbHRlcnMgPSBPYmplY3QudmFsdWVzKHRoaXMuZmlsdGVycykuc29tZShcclxuICAgICAgICAodmFsdWUpID0+IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09ICcnXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoIWhhc0ZpbHRlcnMpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVRvRmlyc3RQYWdlKCk7XHJcbiAgICAgICAgdGhpcy5vbkZpbHRlckNoYW5nZS5lbWl0KHRoaXMuZmlsdGVycyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZUNhbGVuZGFyKCkge1xyXG4gICAgdGhpcy5jYWxlbmRhck9wZW4gPSAhdGhpcy5jYWxlbmRhck9wZW47XHJcbiAgfVxyXG5cclxuICB1cGRhdGVSYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLmZpbHRlcnMuY3JlYXRlZF9hdF9zdGFydCAmJiB0aGlzLmZpbHRlcnMuY3JlYXRlZF9hdF9lbmQpIHtcclxuICAgICAgaWYgKHRoaXMuZmlsdGVycy5jcmVhdGVkX2F0X3N0YXJ0ID4gdGhpcy5maWx0ZXJzLmNyZWF0ZWRfYXRfZW5kKSB7XHJcbiAgICAgICAgY29uc3QgdGVtcCA9IHRoaXMuZmlsdGVycy5jcmVhdGVkX2F0X3N0YXJ0O1xyXG4gICAgICAgIHRoaXMuZmlsdGVycy5jcmVhdGVkX2F0X3N0YXJ0ID0gdGhpcy5maWx0ZXJzLmNyZWF0ZWRfYXRfZW5kO1xyXG4gICAgICAgIHRoaXMuZmlsdGVycy5jcmVhdGVkX2F0X2VuZCA9IHRlbXA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckZpbHRlcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlcnMgPSB7XHJcbiAgICAgIHN0YXRlOiAnJyxcclxuICAgICAgdHlwZTogJycsXHJcbiAgICAgIGNyZWF0ZWRfYXRfc3RhcnQ6ICcnLFxyXG4gICAgICBjcmVhdGVkX2F0X2VuZDogJycsXHJcbiAgICAgIG5hbWU6ICcnLFxyXG4gICAgICBzb3VyY2U6ICcnLFxyXG4gICAgfTtcclxuICAgIHRoaXMucGVuZGluZ1NlYXJjaCA9ICcnO1xyXG4gICAgdGhpcy51cGRhdGVUb0ZpcnN0UGFnZSgpO1xyXG4gICAgdGhpcy51cGRhdGVGaWx0ZXJlZERhdGEoKTtcclxuICAgIHRoaXMub25GaWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlcnMpO1xyXG4gIH1cclxufSIsIjxsaWIta3YtbG9hZGluZyBbbWVzc2FnZV09XCJtZXNzYWdlXCIgW2lzTG9hZGluZ109XCJsb2FkaW5nXCIgKm5nSWY9XCJsb2FkaW5nXCI+IDwvbGliLWt2LWxvYWRpbmc+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZ1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXNlY3Rpb25cIj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJzXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVDb2x1bW5zLmluY2x1ZGVzKGNvbC5rZXkpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wua2V5ID09PSAnY3JlYXRlZF9hdCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tZHJvcGRvd25cIiBbY2xhc3Mub3Blbl09XCJjYWxlbmRhck9wZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKGNsaWNrKT1cImNhbGVuZGFyT3BlbiA9ICFjYWxlbmRhck9wZW47IGRyb3Bkb3duT3BlblN0YXRlID0gZmFsc2U7IGRyb3Bkb3duT3BlblR5cGUgPSBmYWxzZTsgZHJvcGRvd25PcGVuU291cmNlID0gZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpbHRlcnMuY3JlYXRlZF9hdF9zdGFydCAmJiBmaWx0ZXJzLmNyZWF0ZWRfYXRfZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBmaWx0ZXJzLmNyZWF0ZWRfYXRfc3RhcnQgfCBkYXRlOidkZC9NTS95eXl5JyB9fSAtIHt7IGZpbHRlcnMuY3JlYXRlZF9hdF9lbmQgfCBkYXRlOidkZC9NTS95eXl5JyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpbHRlcnMuY3JlYXRlZF9hdF9zdGFydCAmJiAhZmlsdGVycy5jcmVhdGVkX2F0X2VuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVycy5jcmVhdGVkX2F0X3N0YXJ0IHwgZGF0ZTonZGQvTU0veXl5eScgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmlsdGVycy5jcmVhdGVkX2F0X3N0YXJ0ICYmIGZpbHRlcnMuY3JlYXRlZF9hdF9lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbHRlcnMuY3JlYXRlZF9hdF9lbmQgfCBkYXRlOidkZC9NTS95eXl5JyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWx0ZXJzLmNyZWF0ZWRfYXRfc3RhcnQgJiYgIWZpbHRlcnMuY3JlYXRlZF9hdF9lbmRcIiBjbGFzcz1cInBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVkIGF0XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLXBvcHVwXCIgKm5nSWY9XCJjYWxlbmRhck9wZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBbKG5nTW9kZWwpXT1cImZpbHRlcnMuY3JlYXRlZF9hdF9zdGFydFwiIChjaGFuZ2UpPVwidXBkYXRlUmFuZ2UoKVwiIFttYXhdPVwidG9kYXlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIFsobmdNb2RlbCldPVwiZmlsdGVycy5jcmVhdGVkX2F0X2VuZFwiIChjaGFuZ2UpPVwidXBkYXRlUmFuZ2UoKVwiIFttYXhdPVwidG9kYXlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wua2V5ID09PSAnZXhwaXJlX2F0J1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbD5GZWNoYTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIFsobmdNb2RlbCldPVwiZmlsdGVycy5leHBpcmVfYXRcIiBbbWF4XT1cInRvZGF5XCIgLz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmtleSA9PT0gJ3N0YXRlJ1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tZHJvcGRvd25cIiBbY2xhc3Mub3Blbl09XCJkcm9wZG93bk9wZW5TdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKGNsaWNrKT1cImRyb3Bkb3duT3BlblN0YXRlID0gIWRyb3Bkb3duT3BlblN0YXRlOyBkcm9wZG93bk9wZW5UeXBlID0gZmFsc2U7IGRyb3Bkb3duT3BlblNvdXJjZSA9IGZhbHNlOyBjYWxlbmRhck9wZW4gPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpbHRlcnMuc3RhdGVcIiBjbGFzcz1cInN0YXRlXCIgW25nQ2xhc3NdPVwiZmlsdGVycy5zdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGZpbHRlcnMuc3RhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWx0ZXJzLnN0YXRlXCIgY2xhc3M9XCJwbGFjZWhvbGRlclwiPlN0YXRlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJvcHRpb25zXCIgKm5nSWY9XCJkcm9wZG93bk9wZW5TdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG9wdCBvZiBvcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJzLnN0YXRlID0gb3B0OyBkcm9wZG93bk9wZW5TdGF0ZSA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwib3B0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3B0IH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wua2V5ID09PSAnc291cmNlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiIFtjbGFzcy5vcGVuXT1cImRyb3Bkb3duT3BlblNvdXJjZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAoY2xpY2spPVwiZHJvcGRvd25PcGVuU291cmNlID0gIWRyb3Bkb3duT3BlblNvdXJjZTsgZHJvcGRvd25PcGVuU3RhdGUgPSBmYWxzZTsgZHJvcGRvd25PcGVuVHlwZSA9IGZhbHNlOyBjYWxlbmRhck9wZW4gPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlsdGVycy5zb3VyY2VcIiBjbGFzcz1cInNvdXJjZVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbHRlcnMuc291cmNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpbHRlcnMuc291cmNlXCIgY2xhc3M9XCJwbGFjZWhvbGRlclwiPkltcG9ydGVkIGZyb208L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm9wdGlvbnNcIiAqbmdJZj1cImRyb3Bkb3duT3BlblNvdXJjZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwiZmlsdGVycy5zb3VyY2UgPSdsb2NhbCc7IGRyb3Bkb3duT3BlblNvdXJjZSA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzb3VyY2VcIiBbbmdDbGFzc109XCInbG9jYWwnXCI+bG9jYWxcclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwiZmlsdGVycy5zb3VyY2UgPSAnZWNvbW1lcmNlJzsgZHJvcGRvd25PcGVuU291cmNlID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNvdXJjZVwiIFtuZ0NsYXNzXT1cIidlY29tbWVyY2UnXCI+ZWNvbW1lcmNlXHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wua2V5ID09PSAndHlwZSdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRyb3Bkb3duXCIgW2NsYXNzLm9wZW5dPVwiZHJvcGRvd25PcGVuVHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKGNsaWNrKT1cImRyb3Bkb3duT3BlblR5cGUgPSAhZHJvcGRvd25PcGVuVHlwZTsgZHJvcGRvd25PcGVuU3RhdGUgPSBmYWxzZTsgZHJvcGRvd25PcGVuU291cmNlID0gZmFsc2U7IGNhbGVuZGFyT3BlbiA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlsdGVycy50eXBlXCIgY2xhc3M9XCJ0eXBlXCIgIFtuZ0NsYXNzXT1cImZpbHRlcnMudHlwZS5yZXBsYWNlKCcgJywgJy0nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGZpbHRlcnMudHlwZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpbHRlcnMudHlwZVwiIGNsYXNzPVwicGxhY2Vob2xkZXJcIj5PZmZlciB0eXBlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJvcHRpb25zXCIgKm5nSWY9XCJkcm9wZG93bk9wZW5UeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwiZmlsdGVycy50eXBlID0nUmVndWxhciBhdWN0aW9uJzsgZHJvcGRvd25PcGVuVHlwZSA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHlwZVwiIFtuZ0NsYXNzXT1cIidSZWd1bGFyLWF1Y3Rpb24nXCI+UmVndWxhciBhdWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwiZmlsdGVycy50eXBlID0gJ1F1aWNrIG9mZmVyJzsgZHJvcGRvd25PcGVuVHlwZSA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHlwZVwiIFtuZ0NsYXNzXT1cIidRdWljay1vZmZlcidcIj5RdWljayBvZmZlciBcclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY29udGFpbmVyXCIgKm5nSWY9XCJsZXRGaWx0ZXJzXCI+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLW92ZXJsYXlcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzaG93RmlsdGVyTWVudVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2hvd0ZpbHRlck1lbnUgPSBmYWxzZVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgKGNsaWNrKT1cInNob3dGaWx0ZXJNZW51ID0gIXNob3dGaWx0ZXJNZW51OyBkcm9wZG93bk9wZW5TdGF0ZSA9IGZhbHNlOyBkcm9wZG93bk9wZW5Tb3VyY2UgPSBmYWxzZTsgY2FsZW5kYXJPcGVuID0gZmFsc2U7IGRyb3Bkb3duT3BlblR5cGUgPSBmYWxzZVwiIFxyXG4gICAgICAgICAgY2xhc3M9XCJmaWx0ZXItYnV0dG9uXCJcclxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2hvd0ZpbHRlck1lbnVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGx1c1wiPis8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZmlsdGVyLWljb25cIj5cclxuICAgICAgICAgICAgZmlsdGVyX2FsdFxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW1lbnVcIiAqbmdJZj1cInNob3dGaWx0ZXJNZW51XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmtleSAhPT0gJ25hbWUnICYmIGNvbC5rZXkgIT09ICdpbWFnZXMnICYmIGNvbC5rZXkgIT09ICdwb3NfaWQnICYmIGNvbC5rZXkgIT09ICdwb2ludF9vZl9zYWxlX2lkJyAmJiBjb2wua2V5ICE9PSAnZGVzY3JpcHRpb24nIFwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImFjdGl2ZUNvbHVtbnMuaW5jbHVkZXMoY29sLmtleSlcIlxyXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUNvbHVtbihjb2wua2V5LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLXRleHRcIj57eyBjb2wubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIFxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgY2xhc3M9XCJpbnB1dFwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJCdXNjYXIuLi5cIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwicGVuZGluZ1NlYXJjaFwiXHJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uU2VhcmNoZWQoKVwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24tLWNyZWF0ZVwiIChjbGljayk9XCJvblNlYXJjaGVkKClcIj5CdXNjYXI8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKSAmJiAhbG9hZGluZ1wiPlxyXG4gICAgPGxpYi1rdi1yZXNvdXJjZS1ub3QtZm91bmQgY2xhc3M9XCJyZXNvdXJjZS1ub3QtZm91bmRcIlxyXG4gICAgICBbbWVzc2FnZVRpdGxlXT1cIm1lc3NhZ2VUaXRsZVwiXHJcbiAgICAgIFttZXNzYWdlRGVzY3JpcHRpb25dPVwibWVzc2FnZURlc2NyaXB0aW9uXCI+PC9saWIta3YtcmVzb3VyY2Utbm90LWZvdW5kPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB8fCBsb2FkaW5nXCI+XHJcbiAgICA8dGFibGU+XHJcbiAgICAgIDx0aGVhZD5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zXCIgW2NsYXNzLmhpZGRlbi1tb2JpbGVdPVwiaGlkZGVuQ29sdW1uc09uTW9iaWxlLmluY2x1ZGVzKGNvbHVtbi5rZXkpXCI+e3sgY29sdW1uLmxhYmVsIH19PC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3RoZWFkPlxyXG4gICAgICA8dGJvZHk+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkRGF0YVwiPlxyXG4gICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uc1wiIFtjbGFzcy5oaWRkZW4tbW9iaWxlXT1cImhpZGRlbkNvbHVtbnNPbk1vYmlsZS5pbmNsdWRlcyhjb2x1bW4ua2V5KVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdGVcIiBbbmdDbGFzc109XCJpdGVtW2NvbHVtbi5rZXldXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5sYWJlbCA9PT0gJ1NlcnZpY2VzJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlcnZpY2UtaW5mb1wiIChjbGljayk9XCJlbWl0RGF0YShpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbVsndXJsJ10gfHwgJ2h0dHBzOi8vaS5pbWd1ci5jb20vSW5SYVZyTC5qcGcnXCIgYWx0PVwiSW1hZ2VuXCIgY2xhc3M9XCJzZXJ2aWNlLWltYWdlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJhLWxpbmtcIj57eyBpdGVtLm5hbWUgfX08L2E+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ua2V5ID09PSAnbmFtZScgJiYgY29sdW1uLmxhYmVsICE9PSAnU2VydmljZXMnXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImEtbGlua1wiIChjbGljayk9XCJlbWl0RGF0YShpdGVtKVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgIGl0ZW1bY29sdW1uLmtleV1cclxuICAgICAgICAgICAgICAgIH19PC9hPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ua2V5ID09PSAnaW1hZ2VzJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpbWFnZSBvZiBpdGVtW2NvbHVtbi5rZXldPy5zbGljZSgwLCAzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVwiIGFsdD1cIkltYWdlblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbVtjb2x1bW4ua2V5XT8ubGVuZ3RoID4gM1wiIGNsYXNzPVwiZXh0cmEtaW1hZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgK3t7IGl0ZW1bY29sdW1uLmtleV0ubGVuZ3RoIC0gMyB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ua2V5ID09PSAnY3JlYXRlZF9hdCdcIj5cclxuICAgICAgICAgICAgICAgIHt7IGl0ZW1bY29sdW1uLmtleV0gfCBkYXRlIDogXCJkZC9NTS95eXl5XCIgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmtleSA9PT0gJ2V4cGlyZV9hdCdcIj5cclxuICAgICAgICAgICAgICAgIHt7IGl0ZW1bY29sdW1uLmtleV0gfCBkYXRlIDogXCJkZC9NTS95eXl5XCIgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmtleSA9PT0gJ2FjdGlvbnMnXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2VsbEFjdGlvbnNUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbi5rZXkgIT09ICdleHBpcmVfYXQnICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbi5rZXkgIT09ICdjcmVhdGVkX2F0JyAmJlxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW4ua2V5ICE9PSAncG9pbnRfb2Zfc2FsZV9pZCcgJiZcclxuICAgICAgICAgICAgICAgICAgY29sdW1uLmtleSAhPT0gJ25hbWUnICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbi5rZXkgIT09ICdwb3NfaWQnICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbi5rZXkgIT09ICdpbWFnZXMnICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbi5rZXkgIT09ICdhY3Rpb25zJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyBpdGVtW2NvbHVtbi5rZXldIH19XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4ua2V5ID09PSAncG9pbnRfb2Zfc2FsZV9pZCcgfHwgY29sdW1uLmtleSA9PT0gJ3Bvc19pZCdcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGdldFBvc05hbWUoaXRlbVtjb2x1bW4ua2V5XSkgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGJvZHk+XHJcbiAgICA8L3RhYmxlPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UGFnaW5hdG9yXCI+XHJcbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlLXBhZ2luYXRpb25cIj5cclxuICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjaGFuZ2VQYWdlKC0xKVwiIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiPlxyXG4gICAgICAgICAgICAgICAgICBQcmV2aW91c1xyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VQYWdlKDEpXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2VzKCkgJiYgIWhhc01vcmVJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIE5leHRcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJyZW50LXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlBhZ2Uge3sgY3VycmVudFBhZ2UgfX0gb2Yge3sgdG90YWxQYWdlcygpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -416,7 +416,6 @@ class KvMainTableComponent {
416
416
  this.subscription = new Subscription();
417
417
  }
418
418
  ngOnInit() {
419
- this.onSearched();
420
419
  this.subscription.add(this.paginationService.paginationState$.subscribe((state) => {
421
420
  this.currentPage = state.currentPage;
422
421
  this.pageSize = state.pageSize;
@@ -1 +1 @@
1
- {"version":3,"file":"kivio.mjs","sources":["../../../projects/kivio/src/lib/enums/action-type.enum.ts","../../../projects/kivio/src/lib/components/kv-popup/kv-popup.component.ts","../../../projects/kivio/src/lib/components/kv-popup/kv-popup.component.html","../../../projects/kivio/src/lib/components/date-picker/date-picker.component.ts","../../../projects/kivio/src/lib/components/date-picker/date-picker.component.html","../../../projects/kivio/src/lib/components/kv-resource-not-found/kv-resource-not-found.component.ts","../../../projects/kivio/src/lib/components/kv-resource-not-found/kv-resource-not-found.component.html","../../../projects/kivio/src/lib/components/kv-step/kv-step.component.ts","../../../projects/kivio/src/lib/components/kv-step/kv-step.component.html","../../../projects/kivio/src/lib/components/kv-stepper/kv-stepper.component.ts","../../../projects/kivio/src/lib/components/kv-stepper/kv-stepper.component.html","../../../projects/kivio/src/lib/components/kv-accordion/kv-accordion.component.ts","../../../projects/kivio/src/lib/components/kv-accordion/kv-accordion.component.html","../../../projects/kivio/src/lib/components/kv-alert/kv-alert.component.ts","../../../projects/kivio/src/lib/components/kv-alert/kv-alert.component.html","../../../projects/kivio/src/lib/components/kv-side-menu/kv-side-menu.component.ts","../../../projects/kivio/src/lib/components/kv-side-menu/kv-side-menu.component.html","../../../projects/kivio/src/lib/components/kv-loading/kv-loading.component.ts","../../../projects/kivio/src/lib/components/kv-loading/kv-loading.component.html","../../../projects/kivio/src/lib/services/pagination.service.ts","../../../projects/kivio/src/lib/components/kv-main-table/kv-main-table.component.ts","../../../projects/kivio/src/lib/components/kv-main-table/kv-main-table.component.html","../../../projects/kivio/src/lib/factories/form-factory.service.ts","../../../projects/kivio/src/lib/services/navigation.service.ts","../../../projects/kivio/src/lib/services/notification.service.ts","../../../projects/kivio/src/lib/services/session.service.ts","../../../projects/kivio/src/lib/injection-tokens/auth-config.ts","../../../projects/kivio/src/lib/services/auth-interceptor.service.ts","../../../projects/kivio/src/lib/services/auth.service.ts","../../../projects/kivio/src/lib/helpers/auth.helper.ts","../../../projects/kivio/src/lib/validators/password-missmatch.validator.ts","../../../projects/kivio/src/public-api.ts","../../../projects/kivio/src/kivio.ts"],"sourcesContent":["export enum ActionType {\r\n Info = \"info\",\r\n Warn = \"warn\",\r\n Error = \"error\",\r\n Advertise = \"advertise\"\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { ActionType } from '../../enums/action-type.enum';\r\n\r\n@Component({\r\n selector: 'lib-kv-popup',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './kv-popup.component.html',\r\n styleUrl: './kv-popup.component.scss'\r\n})\r\nexport class KvPopupComponent{\r\n\r\n @Input() title: string = '';\r\n @Input() description!: string;\r\n @Input() isCustomTemplate!: boolean;\r\n @Input() actionType!: ActionType;\r\n @Output() onAccept: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onClose: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public actionTypeEnum = ActionType;\r\n\r\n public onAcceptSubmit(): void {\r\n this.onAccept.emit();\r\n }\r\n\r\n public onCloseSubmit(): void {\r\n this.onClose.emit();\r\n }\r\n}","<div class=\"popup-backdrop\">\r\n <div class=\"popup-container\">\r\n <button class=\"close-button\" (click)=\"onCloseSubmit()\">\r\n <span class=\"material-symbols-outlined\">close</span>\r\n </button>\r\n <div class=\"content-container\">\r\n <div *ngIf=\"!isCustomTemplate\">\r\n <ng-container *ngIf=\"actionType === actionTypeEnum.Warn\">\r\n <i class=\"icon material-icons\">error</i>\r\n </ng-container>\r\n <ng-container *ngIf=\"actionType === actionTypeEnum.Advertise\">\r\n <i class=\"icon material-icons\">warning</i>\r\n </ng-container>\r\n </div>\r\n <div>\r\n <div class=\"title\">{{ title }}</div>\r\n <div *ngIf=\"description\">\r\n <p class=\"description\">{{ description }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"isCustomTemplate; else defaultContent\">\r\n <ng-content></ng-content>\r\n </ng-container>\r\n <ng-template #defaultContent>\r\n <ng-container *ngIf=\"actionType === actionTypeEnum.Info\">\r\n <div class=\"button-container\">\r\n <button class=\"button--cancel\" (click)=\"onCloseSubmit()\">Cancel</button>\r\n <button class=\"button--primary\" (click)=\"onAcceptSubmit()\">Aceptar</button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"actionType === actionTypeEnum.Warn\">\r\n <div class=\"button-container\">\r\n <button class=\"button--cancel\" (click)=\"onCloseSubmit()\">Cancel</button>\r\n <button class=\"button--warn\" (click)=\"onAcceptSubmit()\">Delete</button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"actionType === actionTypeEnum.Advertise\">\r\n <div class=\"button-container\">\r\n <button class=\"button--cancel\" (click)=\"onCloseSubmit()\">Cancel</button>\r\n <button class=\"button--warn\" (click)=\"onAcceptSubmit()\">Continuar</button>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Output, Input } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'lib-kv-date-picker',\r\n standalone: true,\r\n imports: [FormsModule, CommonModule],\r\n templateUrl: './date-picker.component.html',\r\n styleUrl: './date-picker.component.scss'\r\n})\r\nexport class DatePickerComponent {\r\n @Input() initialDate?: Date;\r\n @Input() showDetails = false;\r\n @Output() dateSelected = new EventEmitter<Date>();\r\n\r\n selectedDate: Date = new Date();\r\n minDate: string = '';\r\n\r\n ngOnInit() {\r\n this.minDate = this.formatDateForInput(new Date());\r\n\r\n if (this.initialDate) {\r\n this.selectedDate = this.initialDate >= new Date(this.minDate) ? this.initialDate : new Date();\r\n }\r\n }\r\n\r\n formatDateForInput(date: Date): string {\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const day = String(date.getDate()).padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n onDateChange(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n const newDate = new Date(input.value + \"T00:00:00\");\r\n\r\n if (newDate >= new Date(this.minDate)) {\r\n this.selectedDate = newDate;\r\n this.dateSelected.emit(this.selectedDate);\r\n } else {\r\n input.value = this.minDate;\r\n }\r\n }\r\n}\r\n","<div class=\"date-picker\">\r\n <input \r\n type=\"date\" \r\n [value]=\"formatDateForInput(selectedDate)\" \r\n [min]=\"minDate\" \r\n (input)=\"onDateChange($event)\" \r\n class=\"form-control\">\r\n \r\n <div *ngIf=\"showDetails\" class=\"date-details\">\r\n <p>{{ selectedDate | date:'fullDate' }}</p>\r\n </div>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-kv-resource-not-found',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './kv-resource-not-found.component.html',\r\n styleUrl: './kv-resource-not-found.component.scss'\r\n})\r\nexport class ResourceNotFoundComponent {\r\n @Input() messageTitle: string = 'Resource not found';\r\n @Input() messageDescription: string = 'The requested resource could not be found.';\r\n}\r\n","<div class=\"empty-state\">\r\n <div class=\"empty-state-content\">\r\n <i class=\"material-icons empty-icon\">rule</i>\r\n <h3>{{ messageTitle }}</h3>\r\n <p>{{ messageDescription }}</p>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-kv-step',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './kv-step.component.html',\r\n styleUrl: './kv-step.component.scss'\r\n})\r\nexport class KvStepComponent {\r\n @Input() title!: string;\r\n @Input() description!: string;\r\n @ContentChild(TemplateRef) content!: TemplateRef<any>;\r\n}\r\n","<p>kv-step works!</p>\r\n","import { CommonModule } from '@angular/common';\r\nimport { AfterContentInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList, signal, TemplateRef } from '@angular/core';\r\nimport { KvStepComponent } from '../kv-step/kv-step.component';\r\n\r\n@Component({\r\n selector: 'lib-kv-stepper',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './kv-stepper.component.html',\r\n styleUrl: './kv-stepper.component.scss'\r\n})\r\n\r\nexport class KvStepperComponent implements AfterContentInit {\r\n currentStep = signal(0);\r\n \r\n @ContentChildren(KvStepComponent) steps!: QueryList<KvStepComponent>;\r\n\r\n @Input() public isSimpleStepper: boolean = false;\r\n @Input() public isVertical: boolean = false;\r\n @Input() public isAssociated: boolean = false;\r\n @Output() submit = new EventEmitter<void>();\r\n @Output() closeEvent = new EventEmitter<void>();\r\n @Output() isLastStep = new EventEmitter<boolean>();\r\n\r\n ngAfterContentInit() {\r\n if (this.steps.length === 0) {\r\n console.error('No se encontraron pasos en el stepper');\r\n }\r\n }\r\n\r\n next() {\r\n this.isLastStep.emit(true);\r\n if (this.currentStep() < this.steps.length - 1) {\r\n this.currentStep.update(val => val + 1);\r\n }\r\n }\r\n\r\n previous() {\r\n if (this.currentStep() > 0) {\r\n this.currentStep.update(val => val - 1);\r\n this.isLastStep.emit(true);\r\n }\r\n }\r\n\r\n close() {\r\n this.closeEvent.emit();\r\n }\r\n}","<ng-container *ngIf=\"!isSimpleStepper\">\r\n <div class=\"stepper-container\">\r\n <div class=\"step-header\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"step-item\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"step-content\">\r\n <ng-container *ngIf=\"steps.get(currentStep())?.content\">\r\n <ng-container *ngTemplateOutlet=\"steps.get(currentStep())!.content\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"step-actions\">\r\n <button class=\"button--cancel\" (click)=\"close()\">Cancel</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() > 0\" (click)=\"previous()\">Anterior</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() < steps.length - 1\" (click)=\"next()\"\r\n [disabled]=\"!isAssociated\">Next</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() === steps.length - 1\"\r\n (click)=\"submit.emit()\">Create</button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isSimpleStepper && !isVertical\">\r\n <div class=\"stepper-container-simple\">\r\n <div class=\"step-header\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"step-item\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"step-content-simple\">\r\n <ng-container *ngIf=\"steps.get(currentStep())?.content\">\r\n <ng-container *ngTemplateOutlet=\"steps.get(currentStep())!.content\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isSimpleStepper && isVertical\">\r\n <div class=\"stepper-container-vertical\">\r\n <div class=\"vertical-steps\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"vertical-step-item\">\r\n <div class=\"step-indicator-container\">\r\n <div class=\"vertical-step-indicator\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n </div>\r\n <div class=\"vertical-line\" *ngIf=\"i !== steps.length - 1\"></div>\r\n </div>\r\n <div class=\"title-container\">\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n <div class=\"step-description\">{{ step.description }}</div>\r\n </div>\r\n <div class=\"vertical-step-content\" [class.active]=\"currentStep() === i\" (click)=\"currentStep.set(i)\">\r\n <div class=\"step-content-vertical\" *ngIf=\"currentStep() === i\">\r\n <ng-container *ngTemplateOutlet=\"step.content\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-kv-accordion',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './kv-accordion.component.html',\r\n styleUrl: './kv-accordion.component.scss'\r\n})\r\nexport class KvAccordionComponent {\r\n @Input() isOpen = false;\r\n @Input() title = '';\r\n @Input() shouldShowImage = true;\r\n @Input() imageUrl = 'https://i.imgur.com/InRaVrL.jpg';\r\n @Output() opened = new EventEmitter<void>();\r\n\r\n toggle() {\r\n this.isOpen = !this.isOpen;\r\n if(this.isOpen) {\r\n this.opened.emit();\r\n }\r\n }\r\n}\r\n","<div class=\"accordion\">\r\n <div class=\"accordion-header\" (click)=\"toggle()\">\r\n <div class=\"accordion-title\">\r\n <ng-container *ngIf=\"shouldShowImage\">\r\n <img width=\"40px\" [src]=\"imageUrl\" alt=\"User Avatar\" class=\"avatar\">\r\n </ng-container>\r\n <span>{{ title }}</span>\r\n </div>\r\n <span class=\"material-icons accordion-icon\" [class.open]=\"isOpen\">\r\n keyboard_arrow_down\r\n </span>\r\n </div>\r\n <div class=\"accordion-content\" [class.open]=\"isOpen\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-kv-alert',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './kv-alert.component.html',\r\n styleUrl: './kv-alert.component.scss'\r\n})\r\nexport class KvAlertComponent implements OnInit{\r\n\r\n @Input() message: string = '';\r\n @Input() description: string = '';\r\n @Input() type = 'warning';\r\n @Input() timeoutDuration: number = 5000;\r\n @Output() close = new EventEmitter<void>();\r\n\r\n ngOnInit() {\r\n if (this.timeoutDuration > 0) {\r\n setTimeout(() => this.onClose(), this.timeoutDuration);\r\n }\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n\r\n}\r\n","<div class=\"alert-container\">\r\n <div class=\"icon\" [ngClass]=\"type\">\r\n <ng-container *ngIf=\"type === 'success'\">\r\n <i class=\"icon material-icons\">check</i>\r\n </ng-container>\r\n <ng-container *ngIf=\"type !== 'success'\">\r\n <i class=\"icon material-icons\">close</i>\r\n </ng-container>\r\n </div>\r\n <div class=\"message\">\r\n <strong>{{ message }}</strong>\r\n <p>{{ description }}</p>\r\n </div>\r\n <button class=\"close-btn\" (click)=\"onClose()\">&#10006;</button>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-kv-side-menu',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './kv-side-menu.component.html',\r\n styleUrl: './kv-side-menu.component.scss'\r\n})\r\nexport class KvSideMenuComponent {\r\n @Input() breadcrumb: string = '';\r\n @Input() shouldShowEditButton: boolean = true;\r\n @Input() shouldShowCloseButton: boolean = true;\r\n @Output() onEdit: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n @Output() onClose: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onDelete: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onSaveChanges: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public isEditMode: boolean = false;\r\n\r\n public handleEditButtonClicked(): void {\r\n this.isEditMode = !this.isEditMode;\r\n this.onEdit.emit(this.isEditMode);\r\n }\r\n\r\n public handleCloseButtonClicked(): void {\r\n this.onClose.emit();\r\n }\r\n\r\n public handleDeleteButtonClicked(): void {\r\n this.onDelete.emit();\r\n }\r\n\r\n public handleSaveChangesButtonClicked(): void {\r\n this.onSaveChanges.emit();\r\n }\r\n}\r\n","<div class=\"right-menu\">\r\n <div class=\"header\">\r\n <ng-container *ngIf=\"!isEditMode\">\r\n <span>{{ breadcrumb }}</span>\r\n <div>\r\n <ng-container *ngIf=\"shouldShowEditButton\">\r\n <button class=\"delete-button section-button\" (click)=\"handleDeleteButtonClicked()\"><i\r\n class=\"icon material-icons\">delete</i></button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"shouldShowCloseButton\">\r\n <button class=\"edit-button section-button\" (click)=\"handleEditButtonClicked()\"><i\r\n class=\"icon material-icons\">edit</i></button>\r\n </ng-container>\r\n\r\n <button class=\"close-button section-button\" (click)=\"handleCloseButtonClicked()\"><i\r\n class=\"icon material-icons\">close</i></button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"isEditMode\">\r\n <button class=\"edit-button section-button\" (click)=\"handleEditButtonClicked()\"><i\r\n class=\"icon material-icons\">arrow_back</i></button>\r\n <div>\r\n <button class=\"button--primary-min\" (click)=\"handleSaveChangesButtonClicked()\">Save changes</button>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div class=\"body\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","import { CommonModule } from \"@angular/common\";\r\nimport { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'lib-kv-loading',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './kv-loading.component.html',\r\n styleUrl: './kv-loading.component.scss'\r\n })\r\n export class KvLoadingComponent{\r\n \r\n @Input() message: string = '';\r\n @Input() isLoading: boolean = false;\r\n @Input() isFullScreen: boolean = false;\r\n @Input() customIcon: string = '';\r\n @Input() customImage: string = '';\r\n @Input() iconStyles: { [key: string]: any } = {};\r\n @Input() imageStyles: { [key: string]: any } = {};\r\n \r\n }","<div class=\"loading-component\" [ngClass]=\"{'fullscreen-overlay': isFullScreen}\">\r\n <div class=\"loading-container\" *ngIf=\"isLoading\">\r\n <!-- Default spinner -->\r\n <div class=\"loading-spinner\" *ngIf=\"!customIcon && !customImage\"></div>\r\n \r\n <!-- Custom icon (font icon or SVG) -->\r\n <div class=\"custom-icon-container\" *ngIf=\"customIcon && !customImage\">\r\n <i [class]=\"customIcon\" [ngStyle]=\"iconStyles\"></i>\r\n </div>\r\n \r\n <!-- Custom image/GIF -->\r\n <div class=\"custom-image-container\" *ngIf=\"customImage\">\r\n <img [src]=\"customImage\" [alt]=\"message || 'Loading'\" [ngStyle]=\"imageStyles\">\r\n </div>\r\n \r\n <p *ngIf=\"message\">{{message}}</p>\r\n </div>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport interface PaginationState {\r\n currentPage: number;\r\n pageSize: number;\r\n searchText: string;\r\n totalItems: number;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PaginationService {\r\n private paginationState = new BehaviorSubject<PaginationState>({\r\n currentPage: 1,\r\n pageSize: 5,\r\n searchText: '',\r\n totalItems: 0\r\n });\r\n\r\n paginationState$ = this.paginationState.asObservable();\r\n\r\n updatePaginationState(state: Partial<PaginationState>) {\r\n const currentState = this.paginationState.value;\r\n this.paginationState.next({\r\n ...currentState,\r\n ...state\r\n });\r\n }\r\n\r\n getCurrentState(): PaginationState {\r\n return this.paginationState.value;\r\n }\r\n\r\n resetState() {\r\n this.paginationState.next({\r\n currentPage: 1,\r\n pageSize: 5,\r\n searchText: '',\r\n totalItems: 0\r\n });\r\n }\r\n\r\n calculateTotalPages(): number {\r\n const state = this.getCurrentState();\r\n return Math.ceil(state.totalItems / state.pageSize);\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n ContentChild,\r\n OnDestroy,\r\n HostListener,\r\n ElementRef,\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { KvLoadingComponent } from '../kv-loading/kv-loading.component';\r\nimport {\r\n PaginationService,\r\n PaginationState,\r\n} from '../../services/pagination.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { ResourceNotFoundComponent } from '../kv-resource-not-found/kv-resource-not-found.component';\r\n\r\ninterface TableItem {\r\n state?: string;\r\n type?: string;\r\n created_at?: string;\r\n expire_at?: string;\r\n name?: string;\r\n source?: string;\r\n description?: string;\r\n [key: string]: any;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-kv-main-table',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n KvLoadingComponent,\r\n ResourceNotFoundComponent,\r\n ],\r\n templateUrl: './kv-main-table.component.html',\r\n styleUrl: './kv-main-table.component.scss',\r\n})\r\nexport class KvMainTableComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() columns: { key: string; label: string }[] = [];\r\n @Input() data: TableItem[] = [];\r\n @Input() extraData!: any[];\r\n @Input() showPaginator: boolean = true;\r\n @Input() lazyLoading: boolean = false;\r\n @Input() loading: boolean = false;\r\n @Input() messageTitle: string = 'Resource not found';\r\n @Input() messageDescription: string =\r\n 'The requested resource could not be found.';\r\n @Input() totalRecords: number = 0;\r\n @Input() message: string = '';\r\n @Input() hasMoreItems: boolean = true;\r\n @Input() tableId: string = 'default';\r\n @Input() letFilters: boolean = false;\r\n @Input() hiddenColumnsOnMobile: string[] = [];\r\n today!: string;\r\n searchText: any;\r\n pendingSearch: any;\r\n @Input() set totalItems(value: number) {\r\n if (value !== undefined) {\r\n this.paginationService.updatePaginationState({ totalItems: value });\r\n }\r\n }\r\n\r\n @ContentChild('cellActions') cellActionsTemplate: any;\r\n @Output() onNameClicked: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() onPageChange: EventEmitter<{\r\n page: number;\r\n pageSize: number;\r\n searchText: string;\r\n }> = new EventEmitter<{\r\n page: number;\r\n pageSize: number;\r\n searchText: string;\r\n }>();\r\n\r\n @Output() onFilterChange = new EventEmitter<{\r\n state: string;\r\n type: string;\r\n created_at_start: string;\r\n created_at_end: string;\r\n name: string;\r\n source: string;\r\n }>();\r\n\r\n dropdownOpenState = false;\r\n dropdownOpenType = false;\r\n dropdownOpenSource = false;\r\n calendarOpen = false;\r\n currentPage: number = 1;\r\n pageSize: number = 5;\r\n showFilterMenu = false;\r\n filteredItems: TableItem[] = [];\r\n public activeColumns: string[] = [];\r\n options: string[] = [];\r\n public searchInput: string = '';\r\n public filters: any = {\r\n state: '',\r\n type: '',\r\n created_at_start: '',\r\n created_at_end: '',\r\n name: '',\r\n source: '',\r\n };\r\n private subscription: Subscription = new Subscription();\r\n\r\n constructor(\r\n private paginationService: PaginationService,\r\n private eRef: ElementRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.onSearched()\r\n this.subscription.add(\r\n this.paginationService.paginationState$.subscribe(\r\n (state: PaginationState) => {\r\n this.currentPage = state.currentPage;\r\n this.pageSize = state.pageSize;\r\n }\r\n )\r\n );\r\n\r\n const now = new Date();\r\n this.today = now.toISOString().split('T')[0];\r\n\r\n const currentState = this.paginationService.getCurrentState();\r\n this.currentPage = currentState.currentPage;\r\n this.pageSize = currentState.pageSize;\r\n this.filters.name = currentState.searchText;\r\n\r\n if (this.totalRecords > 0) {\r\n this.paginationService.updatePaginationState({\r\n totalItems: this.totalRecords,\r\n });\r\n }\r\n\r\n this.updateFilteredData();\r\n if (this.lazyLoading) {\r\n this.loadLazyData();\r\n }\r\n\r\n if (this.columns && this.columns.length > 0) {\r\n if (this.columns[0].label === 'Offer name') {\r\n this.options = ['Created', 'Offered', 'Closed'];\r\n } else if (this.columns[0].label === 'Customer Email') {\r\n this.options = ['Created', 'Rejected', 'Pending', 'Closed', 'Approved'];\r\n } else {\r\n this.options = ['Approved', 'Rejected', 'Pending'];\r\n }\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n handleClickOutside(event: Event) {\r\n if (!this.eRef.nativeElement.contains(event.target)) {\r\n this.dropdownOpenState = false;\r\n this.dropdownOpenType = false;\r\n this.dropdownOpenSource = false;\r\n this.calendarOpen = false;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['totalRecords']) {\r\n this.paginationService.updatePaginationState({\r\n totalItems: this.totalRecords,\r\n });\r\n }\r\n if (changes['data'] && !this.lazyLoading) {\r\n this.updateFilteredData();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n public unSubscribeToPaginationService(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n private updateData(): void {\r\n this.data = this.data.map((item: TableItem) => ({\r\n ...item,\r\n description: this.changeText(item.description ?? '', 50),\r\n }));\r\n }\r\n\r\n private changeText(text: string, maxLength: number): string {\r\n if (!text) return '';\r\n return text.length > maxLength\r\n ? text.substring(0, maxLength).trimEnd() + '...'\r\n : text;\r\n }\r\n\r\n private updateFilteredData() {\r\n this.updateData();\r\n if (!this.lazyLoading) {\r\n this.filteredItems = this.getFilteredData();\r\n }\r\n }\r\n\r\n private getFilteredData() {\r\n this.updateData();\r\n\r\n let filtered: TableItem[] = this.data;\r\n if (this.filters.name && this.filters.name.trim() !== '') {\r\n filtered = this.data.filter((item: TableItem) =>\r\n this.columns.some((col) =>\r\n String(item[col.key])\r\n .toLowerCase()\r\n .includes(this.filters.name.toLowerCase())\r\n )\r\n );\r\n }\r\n\r\n return filtered.slice(\r\n (this.currentPage - 1) * this.pageSize,\r\n this.currentPage * this.pageSize\r\n );\r\n }\r\n\r\n get filteredData() {\r\n return this.lazyLoading ? this.data : this.filteredItems;\r\n }\r\n\r\n totalPages(): number {\r\n return (\r\n this.paginationService.calculateTotalPages() ||\r\n Math.ceil(\r\n this.data.length / this.pageSize\r\n )\r\n );\r\n }\r\n\r\n updateToFirstPage() {\r\n this.currentPage = 1;\r\n this.paginationService.updatePaginationState({\r\n currentPage: 1,\r\n searchText: this.filters.name,\r\n });\r\n }\r\n\r\n onSearched() {\r\n this.filters.name = this.pendingSearch;\r\n this.updateToFirstPage();\r\n this.updateFilteredData();\r\n\r\n const hasFilters = Object.values(this.filters).some(\r\n (value) => value !== null && value !== undefined && value !== ''\r\n );\r\n\r\n if (hasFilters) {\r\n this.onFilterChange.emit(this.filters);\r\n } else {\r\n this.filters.name = '';\r\n this.updateFilteredData();\r\n this.onFilterChange.emit(this.filters);\r\n }\r\n }\r\n\r\n changePage(direction: number) {\r\n const totalPages = this.totalPages();\r\n\r\n if (this.lazyLoading) {\r\n const newPage = this.currentPage + direction;\r\n if (newPage >= 1 && newPage <= totalPages) {\r\n this.paginationService.updatePaginationState({ currentPage: newPage });\r\n this.loadLazyData();\r\n } else if (this.currentPage !== 1 && newPage < 1) {\r\n this.paginationService.updatePaginationState({ currentPage: 1 });\r\n this.loadLazyData();\r\n }\r\n } else {\r\n const newPage = this.currentPage + direction;\r\n if (newPage > 0 && newPage <= totalPages) {\r\n this.paginationService.updatePaginationState({ currentPage: newPage });\r\n this.updateFilteredData();\r\n }\r\n if (this.hasMoreItems) {\r\n this.onPageChange.emit({\r\n page: this.currentPage,\r\n pageSize: this.pageSize,\r\n searchText: this.filters.name,\r\n });\r\n }\r\n }\r\n }\r\n\r\n loadLazyData() {\r\n this.onPageChange.emit({\r\n page: this.currentPage,\r\n pageSize: this.pageSize,\r\n searchText: this.filters.name,\r\n });\r\n }\r\n\r\n public getPosName(posId: string): string {\r\n return (\r\n this.extraData?.find((pos) => pos.point_of_sale_id === posId)?.name || ''\r\n );\r\n }\r\n\r\n public emitData(data: any) {\r\n this.onNameClicked.emit(data);\r\n }\r\n\r\n toggleColumn(columnKey: string, event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n const checked = input.checked;\r\n\r\n if (checked) {\r\n if (!this.activeColumns.includes(columnKey)) {\r\n this.activeColumns.push(columnKey);\r\n }\r\n } else {\r\n this.activeColumns = this.activeColumns.filter((c) => c !== columnKey);\r\n if (columnKey === 'created_at') {\r\n delete this.filters['created_at_start'];\r\n delete this.filters['created_at_end'];\r\n } else if (this.filters[columnKey]) {\r\n delete this.filters[columnKey];\r\n }\r\n const hasFilters = Object.values(this.filters).some(\r\n (value) => value !== null && value !== undefined && value !== ''\r\n );\r\n\r\n if (!hasFilters) {\r\n this.updateToFirstPage();\r\n this.onFilterChange.emit(this.filters);\r\n }\r\n }\r\n }\r\n\r\n toggleCalendar() {\r\n this.calendarOpen = !this.calendarOpen;\r\n }\r\n\r\n updateRange() {\r\n if (this.filters.created_at_start && this.filters.created_at_end) {\r\n if (this.filters.created_at_start > this.filters.created_at_end) {\r\n const temp = this.filters.created_at_start;\r\n this.filters.created_at_start = this.filters.created_at_end;\r\n this.filters.created_at_end = temp;\r\n }\r\n }\r\n }\r\n\r\n public clearFilters(): void {\r\n this.filters = {\r\n state: '',\r\n type: '',\r\n created_at_start: '',\r\n created_at_end: '',\r\n name: '',\r\n source: '',\r\n };\r\n this.pendingSearch = '';\r\n this.updateToFirstPage();\r\n this.updateFilteredData();\r\n this.onFilterChange.emit(this.filters);\r\n }\r\n}","<lib-kv-loading [message]=\"message\" [isLoading]=\"loading\" *ngIf=\"loading\"> </lib-kv-loading>\r\n<ng-container *ngIf=\"!loading\">\r\n <div class=\"search-container\">\r\n <div class=\"search-section\">\r\n\r\n <div class=\"filters\">\r\n <ng-container *ngFor=\"let col of columns\">\r\n <div *ngIf=\"activeColumns.includes(col.key)\">\r\n <ng-container *ngIf=\"col.key === 'created_at'\">\r\n <div class=\"custom-dropdown\" [class.open]=\"calendarOpen\">\r\n <div class=\"selected\" (click)=\"calendarOpen = !calendarOpen; dropdownOpenState = false; dropdownOpenType = false; dropdownOpenSource = false\">\r\n <span *ngIf=\"filters.created_at_start && filters.created_at_end\">\r\n {{ filters.created_at_start | date:'dd/MM/yyyy' }} - {{ filters.created_at_end | date:'dd/MM/yyyy' }}\r\n </span>\r\n <span *ngIf=\"filters.created_at_start && !filters.created_at_end\">\r\n {{ filters.created_at_start | date:'dd/MM/yyyy' }}\r\n </span>\r\n <span *ngIf=\"!filters.created_at_start && filters.created_at_end\">\r\n {{ filters.created_at_end | date:'dd/MM/yyyy' }}\r\n </span>\r\n <span *ngIf=\"!filters.created_at_start && !filters.created_at_end\" class=\"placeholder\">\r\n Created at\r\n </span>\r\n </div>\r\n \r\n <div class=\"calendar-popup\" *ngIf=\"calendarOpen\">\r\n <input type=\"date\" [(ngModel)]=\"filters.created_at_start\" (change)=\"updateRange()\" [max]=\"today\" />\r\n <input type=\"date\" [(ngModel)]=\"filters.created_at_end\" (change)=\"updateRange()\" [max]=\"today\" />\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"col.key === 'expire_at'\">\r\n <label>Fecha:</label>\r\n <input type=\"date\" [(ngModel)]=\"filters.expire_at\" [max]=\"today\" />\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"col.key === 'state'\">\r\n <div class=\"custom-dropdown\" [class.open]=\"dropdownOpenState\">\r\n <div class=\"selected\" (click)=\"dropdownOpenState = !dropdownOpenState; dropdownOpenType = false; dropdownOpenSource = false; calendarOpen = false\">\r\n <span *ngIf=\"filters.state\" class=\"state\" [ngClass]=\"filters.state\">\r\n {{ filters.state }}\r\n </span>\r\n <span *ngIf=\"!filters.state\" class=\"placeholder\">State</span>\r\n </div>\r\n \r\n <ul class=\"options\" *ngIf=\"dropdownOpenState\">\r\n <li *ngFor=\"let opt of options\"\r\n (click)=\"filters.state = opt; dropdownOpenState = false\"\r\n class=\"state\"\r\n [ngClass]=\"opt\">\r\n {{ opt }}\r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"col.key === 'source'\">\r\n <div class=\"custom-dropdown\" [class.open]=\"dropdownOpenSource\">\r\n <div class=\"selected\" (click)=\"dropdownOpenSource = !dropdownOpenSource; dropdownOpenState = false; dropdownOpenType = false; calendarOpen = false\">\r\n <span *ngIf=\"filters.source\" class=\"source\" >\r\n {{ filters.source }}\r\n </span>\r\n <span *ngIf=\"!filters.source\" class=\"placeholder\">Imported from</span>\r\n </div>\r\n \r\n <ul class=\"options\" *ngIf=\"dropdownOpenSource\">\r\n <li (click)=\"filters.source ='local'; dropdownOpenSource = false\"\r\n class=\"source\" [ngClass]=\"'local'\">local\r\n </li>\r\n <li (click)=\"filters.source = 'ecommerce'; dropdownOpenSource = false\"\r\n class=\"source\" [ngClass]=\"'ecommerce'\">ecommerce\r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"col.key === 'type'\">\r\n <div class=\"custom-dropdown\" [class.open]=\"dropdownOpenType\">\r\n <div class=\"selected\" (click)=\"dropdownOpenType = !dropdownOpenType; dropdownOpenState = false; dropdownOpenSource = false; calendarOpen = false\">\r\n <span *ngIf=\"filters.type\" class=\"type\" [ngClass]=\"filters.type.replace(' ', '-')\">\r\n {{ filters.type }}\r\n </span>\r\n <span *ngIf=\"!filters.type\" class=\"placeholder\">Offer type</span>\r\n </div>\r\n \r\n <ul class=\"options\" *ngIf=\"dropdownOpenType\">\r\n <li (click)=\"filters.type ='Regular auction'; dropdownOpenType = false\"\r\n class=\"type\" [ngClass]=\"'Regular-auction'\">Regular auction\r\n </li>\r\n <li (click)=\"filters.type = 'Quick offer'; dropdownOpenType = false\"\r\n class=\"type\" [ngClass]=\"'Quick-offer'\">Quick offer \r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"filter-container\" *ngIf=\"letFilters\">\r\n\r\n <div\r\n class=\"filter-overlay\"\r\n *ngIf=\"showFilterMenu\"\r\n (click)=\"showFilterMenu = false\">\r\n </div>\r\n\r\n <button \r\n (click)=\"showFilterMenu = !showFilterMenu; dropdownOpenState = false; dropdownOpenSource = false; calendarOpen = false; dropdownOpenType = false\" \r\n class=\"filter-button\"\r\n [class.active]=\"showFilterMenu\"\r\n >\r\n <span class=\"plus\">+</span>\r\n <span class=\"material-symbols-outlined filter-icon\">\r\n filter_alt\r\n </span>\r\n </button>\r\n\r\n <div class=\"filter-menu\" *ngIf=\"showFilterMenu\">\r\n <ng-container *ngFor=\"let col of columns\">\r\n <ng-container *ngIf=\"col.key !== 'name' && col.key !== 'images' && col.key !== 'pos_id' && col.key !== 'point_of_sale_id' && col.key !== 'description' \">\r\n <label class=\"custom-checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"activeColumns.includes(col.key)\"\r\n (change)=\"toggleColumn(col.key, $event)\"\r\n />\r\n <span class=\"label-text\">{{ col.label }}</span>\r\n </label>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n \r\n <input\r\n type=\"text\"\r\n class=\"input\"\r\n placeholder=\"Buscar...\"\r\n [(ngModel)]=\"pendingSearch\"\r\n (keyup.enter)=\"onSearched()\"\r\n />\r\n <button class=\"button--create\" (click)=\"onSearched()\">Buscar</button>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"(!data || data.length === 0) && !loading\">\r\n <lib-kv-resource-not-found class=\"resource-not-found\"\r\n [messageTitle]=\"messageTitle\"\r\n [messageDescription]=\"messageDescription\"></lib-kv-resource-not-found>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"(data && data.length > 0) || loading\">\r\n <table>\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let column of columns\" [class.hidden-mobile]=\"hiddenColumnsOnMobile.includes(column.key)\">{{ column.label }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of filteredData\">\r\n <td *ngFor=\"let column of columns\" [class.hidden-mobile]=\"hiddenColumnsOnMobile.includes(column.key)\">\r\n <div class=\"state\" [ngClass]=\"item[column.key]\">\r\n <ng-container *ngIf=\"column.label === 'Services'\">\r\n <div class=\"service-info\" (click)=\"emitData(item)\">\r\n <img [src]=\"item['url'] || 'https://i.imgur.com/InRaVrL.jpg'\" alt=\"Imagen\" class=\"service-image\" />\r\n <a class=\"a-link\">{{ item.name }}</a>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"column.key === 'name' && column.label !== 'Services'\">\r\n <a class=\"a-link\" (click)=\"emitData(item)\">{{\r\n item[column.key]\r\n }}</a>\r\n </ng-container>\r\n <ng-container *ngIf=\"column.key === 'images'\">\r\n <div class=\"image-container\">\r\n <div *ngFor=\"let image of item[column.key]?.slice(0, 3)\">\r\n <img [src]=\"image\" alt=\"Imagen\" />\r\n </div>\r\n <div *ngIf=\"item[column.key]?.length > 3\" class=\"extra-images\">\r\n +{{ item[column.key].length - 3 }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"column.key === 'created_at'\">\r\n {{ item[column.key] | date : \"dd/MM/yyyy\" }}\r\n </ng-container>\r\n <ng-container *ngIf=\"column.key === 'expire_at'\">\r\n {{ item[column.key] | date : \"dd/MM/yyyy\" }}\r\n </ng-container>\r\n <ng-container *ngIf=\"column.key === 'actions'\">\r\n <ng-container *ngTemplateOutlet=\"cellActionsTemplate; context: { $implicit: item }\"></ng-container>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"\r\n column.key !== 'expire_at' &&\r\n column.key !== 'created_at' &&\r\n column.key !== 'point_of_sale_id' &&\r\n column.key !== 'name' &&\r\n column.key !== 'pos_id' &&\r\n column.key !== 'images' &&\r\n column.key !== 'actions'\r\n \"\r\n >\r\n {{ item[column.key] }}\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"column.key === 'point_of_sale_id' || column.key === 'pos_id'\"\r\n >\r\n {{ getPosName(item[column.key]) }}\r\n </ng-container>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ng-container *ngIf=\"showPaginator\">\r\n <table class=\"table-pagination\">\r\n <tbody>\r\n <tr>\r\n <div class=\"pagination\">\r\n <div class=\"button-section\">\r\n <button (click)=\"changePage(-1)\" [disabled]=\"currentPage === 1\">\r\n Previous\r\n </button>\r\n <button\r\n (click)=\"changePage(1)\"\r\n [disabled]=\"currentPage === totalPages() && !hasMoreItems\"\r\n >\r\n Next\r\n </button>\r\n </div>\r\n <div class=\"current-section\">\r\n <span>Page {{ currentPage }} of {{ totalPages() }}</span>\r\n </div>\r\n </div>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>","import { Injectable } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormGroup, ValidatorFn, Validators } from '@angular/forms';\r\nimport { FormFieldConfig } from '../interfaces/form-field.config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormFactoryService {\r\n constructor(private fb: FormBuilder) { }\r\n\r\n createForm(config: FormFieldConfig[], customValidator?: ValidatorFn): FormGroup {\r\n const formGroup = this.fb.group({}, { validators: customValidator });\r\n config.forEach((field) => {\r\n const control = this.fb.control(\r\n field.defaultValue || '',\r\n field.validators || []\r\n );\r\n formGroup.addControl(field.name, control);\r\n });\r\n return formGroup;\r\n }\r\n\r\n createFormArray(config: FormFieldConfig[], customValidator?: ValidatorFn): FormArray {\r\n const formArray = this.fb.array([], { validators: customValidator });\r\n config.forEach((field) => {\r\n const control = this.fb.control(\r\n field.defaultValue || '',\r\n field.validators || []\r\n );\r\n formArray.push(control);\r\n });\r\n return formArray;\r\n }\r\n\r\n createFormArrayOfGroups(config: FormFieldConfig[], initialCount: number, customValidator?: ValidatorFn): FormArray {\r\n const formArray = this.fb.array<FormGroup>([], { validators: customValidator });\r\n\r\n for (let i = 0; i < initialCount; i++) {\r\n const group = this.createForm(config);\r\n formArray.push(group);\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n createLoginForm(): FormGroup {\r\n return this.fb.group({\r\n email: ['', [Validators.required, Validators.email]],\r\n password: ['', [Validators.required, Validators.minLength(8)]],\r\n });\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NavigationService {\r\n constructor(private router: Router) { }\r\n\r\n navigateToLogin(): Promise<boolean> {\r\n return this.router.navigate(['/login']);\r\n }\r\n\r\n navigateToOffers(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/offers']);\r\n }\r\n\r\n navigateToOffersDetails(id: string): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/offers-details'], {\r\n queryParams: { offerId: id }\r\n });\r\n }\r\n\r\n navigateToResetPassword(): Promise<boolean> {\r\n return this.router.navigate(['/login/reset-password']);\r\n }\r\n\r\n navigateToPointOfSaleDetails(id: string): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/point-of-sale-details'], {\r\n queryParams: { pointOfSaleId: id }\r\n });\r\n }\r\n\r\n navigateToPointOfSale(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/point-of-sale']);\r\n }\r\n\r\n navigateToItems(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/items']);\r\n }\r\n\r\n navigateToItemsDetails(id: string, posId: string): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/items-details'], {\r\n queryParams: { itemId: id, pointOfSaleId: posId}\r\n });\r\n }\r\n\r\n navigateToRules(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/rules']);\r\n }\r\n\r\n navigateToRulesManager(offerId?: string, offerName?:string): Promise<boolean> {\r\n const queryParams: any = {};\r\n if (offerId) {\r\n queryParams.offerId = offerId;\r\n }\r\n if (offerName) {\r\n queryParams.offerName = offerName;\r\n }\r\n return this.router.navigate( ['/dashboard/rules-manager'],\r\n { queryParams }\r\n );\r\n }\r\n\r\n navigateToOfferFlow(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/offer-flow']);\r\n }\r\n\r\n navigateToPayment(price: number): Promise<boolean> {\r\n return this.router.navigate(['/auctions/payment']);\r\n }\r\n\r\n navigateToBillingRecords(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/billing-record']);\r\n }\r\n\r\n navigateToIntegrations(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/integrations']);\r\n }\r\n\r\n navigateToOrders(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/orders']);\r\n }\r\n\r\n navigateToOrderStatus(orderId: string): Promise<boolean> {\r\n return this.router.navigate(['/auctions/order-status'], {\r\n queryParams: { id: orderId}\r\n });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ActionType } from '../enums/action-type.enum';\r\n\r\ninterface PopupState {\r\n show: boolean;\r\n title: string;\r\n actionType?: ActionType;\r\n description: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService {\r\n private popupState = new BehaviorSubject<PopupState>({\r\n show: false,\r\n title: '',\r\n description: '',\r\n actionType: ActionType.Info\r\n });\r\n\r\n popupState$ = this.popupState.asObservable();\r\n\r\n showNotification(title: string, description: string, actionType?: ActionType): void {\r\n this.popupState.next({\r\n show: true,\r\n title,\r\n description,\r\n actionType: actionType || ActionType.Info\r\n });\r\n }\r\n\r\n hideNotification(): void {\r\n this.popupState.next({\r\n show: false,\r\n title: '',\r\n description: '',\r\n actionType: ActionType.Info\r\n });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, ReplaySubject, map } from 'rxjs';\r\n\r\ninterface SessionData {\r\n pointsOfSale?: any[];\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class SessionService {\r\n private sessionSubject = new ReplaySubject<SessionData | null>(1);\r\n\r\n constructor() {\r\n this.sessionSubject.next(null);\r\n }\r\n\r\n setSessionData(data: SessionData): void {\r\n this.sessionSubject.next(data);\r\n }\r\n\r\n getCurrentSessionData(): SessionData | null {\r\n let value: SessionData | null = null;\r\n this.sessionSubject.subscribe(v => value = v).unsubscribe();\r\n return value;\r\n }\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\nexport const API_KEY = new InjectionToken<string>('API_KEY');","import { inject, Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpErrorResponse\r\n} from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { CookieService } from \"ngx-cookie-service\";\r\nimport { API_KEY } from '../injection-tokens/auth-config';\r\nimport { NavigationService } from './navigation.service';\r\n\r\n@Injectable()\r\nexport class AuthInterceptor implements HttpInterceptor {\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n const cookieService = inject(CookieService);\r\n const apiKey = inject(API_KEY);\r\n const navigatorService = inject(NavigationService);\r\n\r\n const token = cookieService.get('jwt');\r\n\r\n const modifiedReq = request.clone({\r\n headers: request.headers\r\n .set('Access_token', token)\r\n .set('Api_Key', apiKey)\r\n });\r\n\r\n return next.handle(modifiedReq).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n if (error.status === 401) {\r\n cookieService.delete('jwt');\r\n cookieService.delete('jwt', '/');\r\n }\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { CookieService } from \"ngx-cookie-service\";\r\nimport { BehaviorSubject, firstValueFrom } from \"rxjs\";\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\n\r\nexport interface Session {\r\n access_token: string;\r\n refresh_token: string;\r\n expires_in?: number;\r\n user?: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n private sessionSubject = new BehaviorSubject<Session | null>(null);\r\n protected refreshTimeout: any;\r\n private apiUrl = 'http://localhost:9090/v1';\r\n private apiKey = '';\r\n\r\n constructor(\r\n private readonly cookieService: CookieService,\r\n private readonly http: HttpClient\r\n ) {\r\n this.getSession().catch(() => null);\r\n }\r\n\r\n private getHeaders(): HttpHeaders {\r\n return new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Api_Key': this.apiKey\r\n });\r\n }\r\n\r\n public configureApi(apiUrl: string, apiKey?: string): void {\r\n if (apiUrl) this.apiUrl = apiUrl;\r\n if (apiKey) this.apiKey = apiKey;\r\n }\r\n\r\n public getCurrentSession(): Session | null {\r\n return this.sessionSubject.getValue();\r\n }\r\n\r\n public signIn(email: string, password: string): Promise<any> {\r\n return firstValueFrom(\r\n this.http.post(`${this.apiUrl}/supabase-auth`, { email, password }, { headers: this.getHeaders() })\r\n ).then((response: any) => {\r\n if (response) {\r\n this.sessionSubject.next(response);\r\n localStorage.setItem('refresh_token', response.refresh_token || '');\r\n try { this.cookieService.set('apiUrl', this.apiUrl); } catch {}\r\n if (this.isValidLoginResponse(response)) {\r\n this.handleSuccessfulRefresh(response);\r\n this.startRefreshTimer(response);\r\n }\r\n }\r\n return response;\r\n });\r\n }\r\n\r\n public signOut(): Promise<any> {\r\n return firstValueFrom(\r\n this.http.post(`${this.apiUrl}/supabase-signout`, {}, { headers: this.getHeaders() })\r\n ).then((response: any) => {\r\n this.sessionSubject.next(null);\r\n this.cookieService.deleteAll();\r\n localStorage.removeItem('refresh_token');\r\n return response;\r\n }).catch(error => {\r\n console.error('Error signing out:', error);\r\n this.sessionSubject.next(null);\r\n this.cookieService.deleteAll();\r\n localStorage.removeItem('refresh_token');\r\n throw error;\r\n });\r\n }\r\n\r\n public sendResetPasswordEmail(email: string): Promise<any> {\r\n return firstValueFrom(\r\n this.http.post(`${this.apiUrl}/supabase-reset-password`, { email }, { headers: this.getHeaders() })\r\n );\r\n }\r\n\r\n public setNewPassword(newPassword: string): Promise<any> {\r\n const accessToken = this.cookieService.get('access_token');\r\n const headers = this.getHeaders().set('Authorization', `Bearer ${accessToken}`);\r\n\r\n return firstValueFrom(\r\n this.http.post(`${this.apiUrl}/supabase-set-password`, { password: newPassword }, { headers })\r\n );\r\n }\r\n\r\n public getSession(): Promise<any> {\r\n const refreshToken = localStorage.getItem('refresh_token');\r\n if (!refreshToken) {\r\n return Promise.resolve({ data: { session: null } });\r\n }\r\n \r\n const apiUrlFromCookie = this.cookieService.get('apiUrl') || this.apiUrl;\r\n return firstValueFrom(\r\n this.http.post(`${apiUrlFromCookie}/supabase-session`, { refresh_token: refreshToken }, { headers: this.getHeaders() })\r\n ).then((response: any) => {\r\n if (response?.data?.session) {\r\n this.sessionSubject.next(response.data.session);\r\n if (this.isValidLoginResponse(response.data)) {\r\n this.handleSuccessfulRefresh(response.data);\r\n this.startRefreshTimer(response.data.session);\r\n }\r\n }\r\n return response;\r\n });\r\n }\r\n\r\n public refreshSession(): Promise<any> {\r\n const refreshToken = localStorage.getItem('refresh_token');\r\n if (!refreshToken) {\r\n return Promise.resolve({ data: { session: null } });\r\n }\r\n \r\n return firstValueFrom(\r\n this.http.post(`${this.apiUrl}/supabase-refresh`, { refresh_token: refreshToken }, { headers: this.getHeaders() })\r\n ).then((response: any) => {\r\n if (response?.data) {\r\n this.sessionSubject.next(response.data);\r\n localStorage.setItem('refresh_token', response.data.refresh_token || '');\r\n if (this.isValidLoginResponse(response.data)) {\r\n this.handleSuccessfulRefresh(response.data);\r\n this.startRefreshTimer(response.data);\r\n }\r\n }\r\n return response;\r\n });\r\n }\r\n\r\n public startRefreshTimer(session: Session) {\r\n const expiresIn = session.expires_in || 3200;\r\n this.refreshTimeout = setTimeout(() => {\r\n this.refreshSession().catch(console.error);\r\n }, (expiresIn - 60) * 1000);\r\n }\r\n\r\n public getSessionObservable() {\r\n return this.sessionSubject.asObservable();\r\n }\r\n\r\n private isValidLoginResponse(data: any): boolean {\r\n return !!(\r\n data?.access_token &&\r\n data?.user?.app_metadata?.role\r\n );\r\n }\r\n\r\n private handleSuccessfulRefresh(data: any): void {\r\n const token = data!.access_token;\r\n this.cookieService.delete('jwt');\r\n this.cookieService.set('jwt', token);\r\n }\r\n}\r\n","export class AuthHelper {\r\n\r\n public static getUserId(): string | null {\r\n return localStorage.getItem(\"userId\") || null;\r\n }\r\n\r\n public static getUserRole(): string | null {\r\n return localStorage.getItem(\"userRole\") || null;\r\n }\r\n}","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport const passwordMatchValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const password = control.get('password');\r\n const confirmPassword = control.get('confirmPassword');\r\n\r\n if (!password || !confirmPassword) {\r\n return null;\r\n }\r\n\r\n if (password.pristine || confirmPassword.pristine) {\r\n return null;\r\n }\r\n\r\n return password.value === confirmPassword.value ? null : { passwordMismatch: true };\r\n};","/*\r\n * Public API Surface of kivio\r\n */\r\n\r\n//Components\r\nexport * from './lib/components/kv-popup/kv-popup.component';\r\nexport * from './lib/components/date-picker/date-picker.component';\r\nexport * from './lib/components/kv-resource-not-found/kv-resource-not-found.component'\r\nexport * from './lib/components/kv-stepper/kv-stepper.component';\r\nexport * from './lib/components/kv-step/kv-step.component';\r\nexport * from './lib/components/kv-accordion/kv-accordion.component';\r\nexport * from './lib/components/kv-alert/kv-alert.component';\r\nexport * from './lib/components/kv-side-menu/kv-side-menu.component'\r\nexport * from './lib/components/kv-main-table/kv-main-table.component'\r\nexport * from './lib/components/kv-loading/kv-loading.component';\r\n\r\n//Services\r\nexport * from './lib/factories/form-factory.service';\r\nexport * from './lib/services/navigation.service';\r\nexport * from './lib/services/notification.service';\r\nexport * from './lib/services/session.service';\r\nexport * from './lib/services/auth-interceptor.service';\r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/pagination.service';\r\n\r\n//Configs\r\nexport * from './lib/interfaces/form-field.config';\r\n\r\n//Helpers\r\nexport * from './lib/helpers/auth.helper'\r\n\r\n//Validators\r\nexport * from './lib/validators/password-missmatch.validator'\r\n\r\n//Enums\r\nexport * from './lib/enums/action-type.enum'\r\n\r\n// Injection Tokens\r\nexport * from './lib/injection-tokens/auth-config';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PaginationService","i1"],"mappings":"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"}
1
+ {"version":3,"file":"kivio.mjs","sources":["../../../projects/kivio/src/lib/enums/action-type.enum.ts","../../../projects/kivio/src/lib/components/kv-popup/kv-popup.component.ts","../../../projects/kivio/src/lib/components/kv-popup/kv-popup.component.html","../../../projects/kivio/src/lib/components/date-picker/date-picker.component.ts","../../../projects/kivio/src/lib/components/date-picker/date-picker.component.html","../../../projects/kivio/src/lib/components/kv-resource-not-found/kv-resource-not-found.component.ts","../../../projects/kivio/src/lib/components/kv-resource-not-found/kv-resource-not-found.component.html","../../../projects/kivio/src/lib/components/kv-step/kv-step.component.ts","../../../projects/kivio/src/lib/components/kv-step/kv-step.component.html","../../../projects/kivio/src/lib/components/kv-stepper/kv-stepper.component.ts","../../../projects/kivio/src/lib/components/kv-stepper/kv-stepper.component.html","../../../projects/kivio/src/lib/components/kv-accordion/kv-accordion.component.ts","../../../projects/kivio/src/lib/components/kv-accordion/kv-accordion.component.html","../../../projects/kivio/src/lib/components/kv-alert/kv-alert.component.ts","../../../projects/kivio/src/lib/components/kv-alert/kv-alert.component.html","../../../projects/kivio/src/lib/components/kv-side-menu/kv-side-menu.component.ts","../../../projects/kivio/src/lib/components/kv-side-menu/kv-side-menu.component.html","../../../projects/kivio/src/lib/components/kv-loading/kv-loading.component.ts","../../../projects/kivio/src/lib/components/kv-loading/kv-loading.component.html","../../../projects/kivio/src/lib/services/pagination.service.ts","../../../projects/kivio/src/lib/components/kv-main-table/kv-main-table.component.ts","../../../projects/kivio/src/lib/components/kv-main-table/kv-main-table.component.html","../../../projects/kivio/src/lib/factories/form-factory.service.ts","../../../projects/kivio/src/lib/services/navigation.service.ts","../../../projects/kivio/src/lib/services/notification.service.ts","../../../projects/kivio/src/lib/services/session.service.ts","../../../projects/kivio/src/lib/injection-tokens/auth-config.ts","../../../projects/kivio/src/lib/services/auth-interceptor.service.ts","../../../projects/kivio/src/lib/services/auth.service.ts","../../../projects/kivio/src/lib/helpers/auth.helper.ts","../../../projects/kivio/src/lib/validators/password-missmatch.validator.ts","../../../projects/kivio/src/public-api.ts","../../../projects/kivio/src/kivio.ts"],"sourcesContent":["export enum ActionType {\r\n Info = \"info\",\r\n Warn = \"warn\",\r\n Error = \"error\",\r\n Advertise = \"advertise\"\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { ActionType } from '../../enums/action-type.enum';\r\n\r\n@Component({\r\n selector: 'lib-kv-popup',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './kv-popup.component.html',\r\n styleUrl: './kv-popup.component.scss'\r\n})\r\nexport class KvPopupComponent{\r\n\r\n @Input() title: string = '';\r\n @Input() description!: string;\r\n @Input() isCustomTemplate!: boolean;\r\n @Input() actionType!: ActionType;\r\n @Output() onAccept: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onClose: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public actionTypeEnum = ActionType;\r\n\r\n public onAcceptSubmit(): void {\r\n this.onAccept.emit();\r\n }\r\n\r\n public onCloseSubmit(): void {\r\n this.onClose.emit();\r\n }\r\n}","<div class=\"popup-backdrop\">\r\n <div class=\"popup-container\">\r\n <button class=\"close-button\" (click)=\"onCloseSubmit()\">\r\n <span class=\"material-symbols-outlined\">close</span>\r\n </button>\r\n <div class=\"content-container\">\r\n <div *ngIf=\"!isCustomTemplate\">\r\n <ng-container *ngIf=\"actionType === actionTypeEnum.Warn\">\r\n <i class=\"icon material-icons\">error</i>\r\n </ng-container>\r\n <ng-container *ngIf=\"actionType === actionTypeEnum.Advertise\">\r\n <i class=\"icon material-icons\">warning</i>\r\n </ng-container>\r\n </div>\r\n <div>\r\n <div class=\"title\">{{ title }}</div>\r\n <div *ngIf=\"description\">\r\n <p class=\"description\">{{ description }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"isCustomTemplate; else defaultContent\">\r\n <ng-content></ng-content>\r\n </ng-container>\r\n <ng-template #defaultContent>\r\n <ng-container *ngIf=\"actionType === actionTypeEnum.Info\">\r\n <div class=\"button-container\">\r\n <button class=\"button--cancel\" (click)=\"onCloseSubmit()\">Cancel</button>\r\n <button class=\"button--primary\" (click)=\"onAcceptSubmit()\">Aceptar</button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"actionType === actionTypeEnum.Warn\">\r\n <div class=\"button-container\">\r\n <button class=\"button--cancel\" (click)=\"onCloseSubmit()\">Cancel</button>\r\n <button class=\"button--warn\" (click)=\"onAcceptSubmit()\">Delete</button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"actionType === actionTypeEnum.Advertise\">\r\n <div class=\"button-container\">\r\n <button class=\"button--cancel\" (click)=\"onCloseSubmit()\">Cancel</button>\r\n <button class=\"button--warn\" (click)=\"onAcceptSubmit()\">Continuar</button>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Output, Input } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'lib-kv-date-picker',\r\n standalone: true,\r\n imports: [FormsModule, CommonModule],\r\n templateUrl: './date-picker.component.html',\r\n styleUrl: './date-picker.component.scss'\r\n})\r\nexport class DatePickerComponent {\r\n @Input() initialDate?: Date;\r\n @Input() showDetails = false;\r\n @Output() dateSelected = new EventEmitter<Date>();\r\n\r\n selectedDate: Date = new Date();\r\n minDate: string = '';\r\n\r\n ngOnInit() {\r\n this.minDate = this.formatDateForInput(new Date());\r\n\r\n if (this.initialDate) {\r\n this.selectedDate = this.initialDate >= new Date(this.minDate) ? this.initialDate : new Date();\r\n }\r\n }\r\n\r\n formatDateForInput(date: Date): string {\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const day = String(date.getDate()).padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n onDateChange(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n const newDate = new Date(input.value + \"T00:00:00\");\r\n\r\n if (newDate >= new Date(this.minDate)) {\r\n this.selectedDate = newDate;\r\n this.dateSelected.emit(this.selectedDate);\r\n } else {\r\n input.value = this.minDate;\r\n }\r\n }\r\n}\r\n","<div class=\"date-picker\">\r\n <input \r\n type=\"date\" \r\n [value]=\"formatDateForInput(selectedDate)\" \r\n [min]=\"minDate\" \r\n (input)=\"onDateChange($event)\" \r\n class=\"form-control\">\r\n \r\n <div *ngIf=\"showDetails\" class=\"date-details\">\r\n <p>{{ selectedDate | date:'fullDate' }}</p>\r\n </div>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-kv-resource-not-found',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './kv-resource-not-found.component.html',\r\n styleUrl: './kv-resource-not-found.component.scss'\r\n})\r\nexport class ResourceNotFoundComponent {\r\n @Input() messageTitle: string = 'Resource not found';\r\n @Input() messageDescription: string = 'The requested resource could not be found.';\r\n}\r\n","<div class=\"empty-state\">\r\n <div class=\"empty-state-content\">\r\n <i class=\"material-icons empty-icon\">rule</i>\r\n <h3>{{ messageTitle }}</h3>\r\n <p>{{ messageDescription }}</p>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-kv-step',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './kv-step.component.html',\r\n styleUrl: './kv-step.component.scss'\r\n})\r\nexport class KvStepComponent {\r\n @Input() title!: string;\r\n @Input() description!: string;\r\n @ContentChild(TemplateRef) content!: TemplateRef<any>;\r\n}\r\n","<p>kv-step works!</p>\r\n","import { CommonModule } from '@angular/common';\r\nimport { AfterContentInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList, signal, TemplateRef } from '@angular/core';\r\nimport { KvStepComponent } from '../kv-step/kv-step.component';\r\n\r\n@Component({\r\n selector: 'lib-kv-stepper',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './kv-stepper.component.html',\r\n styleUrl: './kv-stepper.component.scss'\r\n})\r\n\r\nexport class KvStepperComponent implements AfterContentInit {\r\n currentStep = signal(0);\r\n \r\n @ContentChildren(KvStepComponent) steps!: QueryList<KvStepComponent>;\r\n\r\n @Input() public isSimpleStepper: boolean = false;\r\n @Input() public isVertical: boolean = false;\r\n @Input() public isAssociated: boolean = false;\r\n @Output() submit = new EventEmitter<void>();\r\n @Output() closeEvent = new EventEmitter<void>();\r\n @Output() isLastStep = new EventEmitter<boolean>();\r\n\r\n ngAfterContentInit() {\r\n if (this.steps.length === 0) {\r\n console.error('No se encontraron pasos en el stepper');\r\n }\r\n }\r\n\r\n next() {\r\n this.isLastStep.emit(true);\r\n if (this.currentStep() < this.steps.length - 1) {\r\n this.currentStep.update(val => val + 1);\r\n }\r\n }\r\n\r\n previous() {\r\n if (this.currentStep() > 0) {\r\n this.currentStep.update(val => val - 1);\r\n this.isLastStep.emit(true);\r\n }\r\n }\r\n\r\n close() {\r\n this.closeEvent.emit();\r\n }\r\n}","<ng-container *ngIf=\"!isSimpleStepper\">\r\n <div class=\"stepper-container\">\r\n <div class=\"step-header\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"step-item\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"step-content\">\r\n <ng-container *ngIf=\"steps.get(currentStep())?.content\">\r\n <ng-container *ngTemplateOutlet=\"steps.get(currentStep())!.content\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"step-actions\">\r\n <button class=\"button--cancel\" (click)=\"close()\">Cancel</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() > 0\" (click)=\"previous()\">Anterior</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() < steps.length - 1\" (click)=\"next()\"\r\n [disabled]=\"!isAssociated\">Next</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() === steps.length - 1\"\r\n (click)=\"submit.emit()\">Create</button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isSimpleStepper && !isVertical\">\r\n <div class=\"stepper-container-simple\">\r\n <div class=\"step-header\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"step-item\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"step-content-simple\">\r\n <ng-container *ngIf=\"steps.get(currentStep())?.content\">\r\n <ng-container *ngTemplateOutlet=\"steps.get(currentStep())!.content\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isSimpleStepper && isVertical\">\r\n <div class=\"stepper-container-vertical\">\r\n <div class=\"vertical-steps\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"vertical-step-item\">\r\n <div class=\"step-indicator-container\">\r\n <div class=\"vertical-step-indicator\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n </div>\r\n <div class=\"vertical-line\" *ngIf=\"i !== steps.length - 1\"></div>\r\n </div>\r\n <div class=\"title-container\">\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n <div class=\"step-description\">{{ step.description }}</div>\r\n </div>\r\n <div class=\"vertical-step-content\" [class.active]=\"currentStep() === i\" (click)=\"currentStep.set(i)\">\r\n <div class=\"step-content-vertical\" *ngIf=\"currentStep() === i\">\r\n <ng-container *ngTemplateOutlet=\"step.content\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-kv-accordion',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './kv-accordion.component.html',\r\n styleUrl: './kv-accordion.component.scss'\r\n})\r\nexport class KvAccordionComponent {\r\n @Input() isOpen = false;\r\n @Input() title = '';\r\n @Input() shouldShowImage = true;\r\n @Input() imageUrl = 'https://i.imgur.com/InRaVrL.jpg';\r\n @Output() opened = new EventEmitter<void>();\r\n\r\n toggle() {\r\n this.isOpen = !this.isOpen;\r\n if(this.isOpen) {\r\n this.opened.emit();\r\n }\r\n }\r\n}\r\n","<div class=\"accordion\">\r\n <div class=\"accordion-header\" (click)=\"toggle()\">\r\n <div class=\"accordion-title\">\r\n <ng-container *ngIf=\"shouldShowImage\">\r\n <img width=\"40px\" [src]=\"imageUrl\" alt=\"User Avatar\" class=\"avatar\">\r\n </ng-container>\r\n <span>{{ title }}</span>\r\n </div>\r\n <span class=\"material-icons accordion-icon\" [class.open]=\"isOpen\">\r\n keyboard_arrow_down\r\n </span>\r\n </div>\r\n <div class=\"accordion-content\" [class.open]=\"isOpen\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-kv-alert',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './kv-alert.component.html',\r\n styleUrl: './kv-alert.component.scss'\r\n})\r\nexport class KvAlertComponent implements OnInit{\r\n\r\n @Input() message: string = '';\r\n @Input() description: string = '';\r\n @Input() type = 'warning';\r\n @Input() timeoutDuration: number = 5000;\r\n @Output() close = new EventEmitter<void>();\r\n\r\n ngOnInit() {\r\n if (this.timeoutDuration > 0) {\r\n setTimeout(() => this.onClose(), this.timeoutDuration);\r\n }\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n\r\n}\r\n","<div class=\"alert-container\">\r\n <div class=\"icon\" [ngClass]=\"type\">\r\n <ng-container *ngIf=\"type === 'success'\">\r\n <i class=\"icon material-icons\">check</i>\r\n </ng-container>\r\n <ng-container *ngIf=\"type !== 'success'\">\r\n <i class=\"icon material-icons\">close</i>\r\n </ng-container>\r\n </div>\r\n <div class=\"message\">\r\n <strong>{{ message }}</strong>\r\n <p>{{ description }}</p>\r\n </div>\r\n <button class=\"close-btn\" (click)=\"onClose()\">&#10006;</button>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-kv-side-menu',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './kv-side-menu.component.html',\r\n styleUrl: './kv-side-menu.component.scss'\r\n})\r\nexport class KvSideMenuComponent {\r\n @Input() breadcrumb: string = '';\r\n @Input() shouldShowEditButton: boolean = true;\r\n @Input() shouldShowCloseButton: boolean = true;\r\n @Output() onEdit: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n @Output() onClose: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onDelete: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onSaveChanges: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public isEditMode: boolean = false;\r\n\r\n public handleEditButtonClicked(): void {\r\n this.isEditMode = !this.isEditMode;\r\n this.onEdit.emit(this.isEditMode);\r\n }\r\n\r\n public handleCloseButtonClicked(): void {\r\n this.onClose.emit();\r\n }\r\n\r\n public handleDeleteButtonClicked(): void {\r\n this.onDelete.emit();\r\n }\r\n\r\n public handleSaveChangesButtonClicked(): void {\r\n this.onSaveChanges.emit();\r\n }\r\n}\r\n","<div class=\"right-menu\">\r\n <div class=\"header\">\r\n <ng-container *ngIf=\"!isEditMode\">\r\n <span>{{ breadcrumb }}</span>\r\n <div>\r\n <ng-container *ngIf=\"shouldShowEditButton\">\r\n <button class=\"delete-button section-button\" (click)=\"handleDeleteButtonClicked()\"><i\r\n class=\"icon material-icons\">delete</i></button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"shouldShowCloseButton\">\r\n <button class=\"edit-button section-button\" (click)=\"handleEditButtonClicked()\"><i\r\n class=\"icon material-icons\">edit</i></button>\r\n </ng-container>\r\n\r\n <button class=\"close-button section-button\" (click)=\"handleCloseButtonClicked()\"><i\r\n class=\"icon material-icons\">close</i></button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"isEditMode\">\r\n <button class=\"edit-button section-button\" (click)=\"handleEditButtonClicked()\"><i\r\n class=\"icon material-icons\">arrow_back</i></button>\r\n <div>\r\n <button class=\"button--primary-min\" (click)=\"handleSaveChangesButtonClicked()\">Save changes</button>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div class=\"body\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","import { CommonModule } from \"@angular/common\";\r\nimport { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'lib-kv-loading',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './kv-loading.component.html',\r\n styleUrl: './kv-loading.component.scss'\r\n })\r\n export class KvLoadingComponent{\r\n \r\n @Input() message: string = '';\r\n @Input() isLoading: boolean = false;\r\n @Input() isFullScreen: boolean = false;\r\n @Input() customIcon: string = '';\r\n @Input() customImage: string = '';\r\n @Input() iconStyles: { [key: string]: any } = {};\r\n @Input() imageStyles: { [key: string]: any } = {};\r\n \r\n }","<div class=\"loading-component\" [ngClass]=\"{'fullscreen-overlay': isFullScreen}\">\r\n <div class=\"loading-container\" *ngIf=\"isLoading\">\r\n <!-- Default spinner -->\r\n <div class=\"loading-spinner\" *ngIf=\"!customIcon && !customImage\"></div>\r\n \r\n <!-- Custom icon (font icon or SVG) -->\r\n <div class=\"custom-icon-container\" *ngIf=\"customIcon && !customImage\">\r\n <i [class]=\"customIcon\" [ngStyle]=\"iconStyles\"></i>\r\n </div>\r\n \r\n <!-- Custom image/GIF -->\r\n <div class=\"custom-image-container\" *ngIf=\"customImage\">\r\n <img [src]=\"customImage\" [alt]=\"message || 'Loading'\" [ngStyle]=\"imageStyles\">\r\n </div>\r\n \r\n <p *ngIf=\"message\">{{message}}</p>\r\n </div>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport interface PaginationState {\r\n currentPage: number;\r\n pageSize: number;\r\n searchText: string;\r\n totalItems: number;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PaginationService {\r\n private paginationState = new BehaviorSubject<PaginationState>({\r\n currentPage: 1,\r\n pageSize: 5,\r\n searchText: '',\r\n totalItems: 0\r\n });\r\n\r\n paginationState$ = this.paginationState.asObservable();\r\n\r\n updatePaginationState(state: Partial<PaginationState>) {\r\n const currentState = this.paginationState.value;\r\n this.paginationState.next({\r\n ...currentState,\r\n ...state\r\n });\r\n }\r\n\r\n getCurrentState(): PaginationState {\r\n return this.paginationState.value;\r\n }\r\n\r\n resetState() {\r\n this.paginationState.next({\r\n currentPage: 1,\r\n pageSize: 5,\r\n searchText: '',\r\n totalItems: 0\r\n });\r\n }\r\n\r\n calculateTotalPages(): number {\r\n const state = this.getCurrentState();\r\n return Math.ceil(state.totalItems / state.pageSize);\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n ContentChild,\r\n OnDestroy,\r\n HostListener,\r\n ElementRef,\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { KvLoadingComponent } from '../kv-loading/kv-loading.component';\r\nimport {\r\n PaginationService,\r\n PaginationState,\r\n} from '../../services/pagination.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { ResourceNotFoundComponent } from '../kv-resource-not-found/kv-resource-not-found.component';\r\n\r\ninterface TableItem {\r\n state?: string;\r\n type?: string;\r\n created_at?: string;\r\n expire_at?: string;\r\n name?: string;\r\n source?: string;\r\n description?: string;\r\n [key: string]: any;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-kv-main-table',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n KvLoadingComponent,\r\n ResourceNotFoundComponent,\r\n ],\r\n templateUrl: './kv-main-table.component.html',\r\n styleUrl: './kv-main-table.component.scss',\r\n})\r\nexport class KvMainTableComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() columns: { key: string; label: string }[] = [];\r\n @Input() data: TableItem[] = [];\r\n @Input() extraData!: any[];\r\n @Input() showPaginator: boolean = true;\r\n @Input() lazyLoading: boolean = false;\r\n @Input() loading: boolean = false;\r\n @Input() messageTitle: string = 'Resource not found';\r\n @Input() messageDescription: string =\r\n 'The requested resource could not be found.';\r\n @Input() totalRecords: number = 0;\r\n @Input() message: string = '';\r\n @Input() hasMoreItems: boolean = true;\r\n @Input() tableId: string = 'default';\r\n @Input() letFilters: boolean = false;\r\n @Input() hiddenColumnsOnMobile: string[] = [];\r\n today!: string;\r\n searchText: any;\r\n pendingSearch: any;\r\n @Input() set totalItems(value: number) {\r\n if (value !== undefined) {\r\n this.paginationService.updatePaginationState({ totalItems: value });\r\n }\r\n }\r\n\r\n @ContentChild('cellActions') cellActionsTemplate: any;\r\n @Output() onNameClicked: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() onPageChange: EventEmitter<{\r\n page: number;\r\n pageSize: number;\r\n searchText: string;\r\n }> = new EventEmitter<{\r\n page: number;\r\n pageSize: number;\r\n searchText: string;\r\n }>();\r\n\r\n @Output() onFilterChange = new EventEmitter<{\r\n state: string;\r\n type: string;\r\n created_at_start: string;\r\n created_at_end: string;\r\n name: string;\r\n source: string;\r\n }>();\r\n\r\n dropdownOpenState = false;\r\n dropdownOpenType = false;\r\n dropdownOpenSource = false;\r\n calendarOpen = false;\r\n currentPage: number = 1;\r\n pageSize: number = 5;\r\n showFilterMenu = false;\r\n filteredItems: TableItem[] = [];\r\n public activeColumns: string[] = [];\r\n options: string[] = [];\r\n public searchInput: string = '';\r\n public filters: any = {\r\n state: '',\r\n type: '',\r\n created_at_start: '',\r\n created_at_end: '',\r\n name: '',\r\n source: '',\r\n };\r\n private subscription: Subscription = new Subscription();\r\n\r\n constructor(\r\n private paginationService: PaginationService,\r\n private eRef: ElementRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.subscription.add(\r\n this.paginationService.paginationState$.subscribe(\r\n (state: PaginationState) => {\r\n this.currentPage = state.currentPage;\r\n this.pageSize = state.pageSize;\r\n }\r\n )\r\n );\r\n\r\n const now = new Date();\r\n this.today = now.toISOString().split('T')[0];\r\n\r\n const currentState = this.paginationService.getCurrentState();\r\n this.currentPage = currentState.currentPage;\r\n this.pageSize = currentState.pageSize;\r\n this.filters.name = currentState.searchText;\r\n\r\n if (this.totalRecords > 0) {\r\n this.paginationService.updatePaginationState({\r\n totalItems: this.totalRecords,\r\n });\r\n }\r\n\r\n this.updateFilteredData();\r\n if (this.lazyLoading) {\r\n this.loadLazyData();\r\n }\r\n\r\n if (this.columns && this.columns.length > 0) {\r\n if (this.columns[0].label === 'Offer name') {\r\n this.options = ['Created', 'Offered', 'Closed'];\r\n } else if (this.columns[0].label === 'Customer Email') {\r\n this.options = ['Created', 'Rejected', 'Pending', 'Closed', 'Approved'];\r\n } else {\r\n this.options = ['Approved', 'Rejected', 'Pending'];\r\n }\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n handleClickOutside(event: Event) {\r\n if (!this.eRef.nativeElement.contains(event.target)) {\r\n this.dropdownOpenState = false;\r\n this.dropdownOpenType = false;\r\n this.dropdownOpenSource = false;\r\n this.calendarOpen = false;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['totalRecords']) {\r\n this.paginationService.updatePaginationState({\r\n totalItems: this.totalRecords,\r\n });\r\n }\r\n if (changes['data'] && !this.lazyLoading) {\r\n this.updateFilteredData();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n public unSubscribeToPaginationService(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n private updateData(): void {\r\n this.data = this.data.map((item: TableItem) => ({\r\n ...item,\r\n description: this.changeText(item.description ?? '', 50),\r\n }));\r\n }\r\n\r\n private changeText(text: string, maxLength: number): string {\r\n if (!text) return '';\r\n return text.length > maxLength\r\n ? text.substring(0, maxLength).trimEnd() + '...'\r\n : text;\r\n }\r\n\r\n private updateFilteredData() {\r\n this.updateData();\r\n if (!this.lazyLoading) {\r\n this.filteredItems = this.getFilteredData();\r\n }\r\n }\r\n\r\n private getFilteredData() {\r\n this.updateData();\r\n\r\n let filtered: TableItem[] = this.data;\r\n if (this.filters.name && this.filters.name.trim() !== '') {\r\n filtered = this.data.filter((item: TableItem) =>\r\n this.columns.some((col) =>\r\n String(item[col.key])\r\n .toLowerCase()\r\n .includes(this.filters.name.toLowerCase())\r\n )\r\n );\r\n }\r\n\r\n return filtered.slice(\r\n (this.currentPage - 1) * this.pageSize,\r\n this.currentPage * this.pageSize\r\n );\r\n }\r\n\r\n get filteredData() {\r\n return this.lazyLoading ? this.data : this.filteredItems;\r\n }\r\n\r\n totalPages(): number {\r\n return (\r\n this.paginationService.calculateTotalPages() ||\r\n Math.ceil(\r\n this.data.length / this.pageSize\r\n )\r\n );\r\n }\r\n\r\n updateToFirstPage() {\r\n this.currentPage = 1;\r\n this.paginationService.updatePaginationState({\r\n currentPage: 1,\r\n searchText: this.filters.name,\r\n });\r\n }\r\n\r\n onSearched() {\r\n this.filters.name = this.pendingSearch;\r\n this.updateToFirstPage();\r\n this.updateFilteredData();\r\n\r\n const hasFilters = Object.values(this.filters).some(\r\n (value) => value !== null && value !== undefined && value !== ''\r\n );\r\n\r\n if (hasFilters) {\r\n this.onFilterChange.emit(this.filters);\r\n } else {\r\n this.filters.name = '';\r\n this.updateFilteredData();\r\n this.onFilterChange.emit(this.filters);\r\n }\r\n }\r\n\r\n changePage(direction: number) {\r\n const totalPages = this.totalPages();\r\n\r\n if (this.lazyLoading) {\r\n const newPage = this.currentPage + direction;\r\n if (newPage >= 1 && newPage <= totalPages) {\r\n this.paginationService.updatePaginationState({ currentPage: newPage });\r\n this.loadLazyData();\r\n } else if (this.currentPage !== 1 && newPage < 1) {\r\n this.paginationService.updatePaginationState({ currentPage: 1 });\r\n this.loadLazyData();\r\n }\r\n } else {\r\n const newPage = this.currentPage + direction;\r\n if (newPage > 0 && newPage <= totalPages) {\r\n this.paginationService.updatePaginationState({ currentPage: newPage });\r\n this.updateFilteredData();\r\n }\r\n if (this.hasMoreItems) {\r\n this.onPageChange.emit({\r\n page: this.currentPage,\r\n pageSize: this.pageSize,\r\n searchText: this.filters.name,\r\n });\r\n }\r\n }\r\n }\r\n\r\n loadLazyData() {\r\n this.onPageChange.emit({\r\n page: this.currentPage,\r\n pageSize: this.pageSize,\r\n searchText: this.filters.name,\r\n });\r\n }\r\n\r\n public getPosName(posId: string): string {\r\n return (\r\n this.extraData?.find((pos) => pos.point_of_sale_id === posId)?.name || ''\r\n );\r\n }\r\n\r\n public emitData(data: any) {\r\n this.onNameClicked.emit(data);\r\n }\r\n\r\n toggleColumn(columnKey: string, event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n const checked = input.checked;\r\n\r\n if (checked) {\r\n if (!this.activeColumns.includes(columnKey)) {\r\n this.activeColumns.push(columnKey);\r\n }\r\n } else {\r\n this.activeColumns = this.activeColumns.filter((c) => c !== columnKey);\r\n if (columnKey === 'created_at') {\r\n delete this.filters['created_at_start'];\r\n delete this.filters['created_at_end'];\r\n } else if (this.filters[columnKey]) {\r\n delete this.filters[columnKey];\r\n }\r\n const hasFilters = Object.values(this.filters).some(\r\n (value) => value !== null && value !== undefined && value !== ''\r\n );\r\n\r\n if (!hasFilters) {\r\n this.updateToFirstPage();\r\n this.onFilterChange.emit(this.filters);\r\n }\r\n }\r\n }\r\n\r\n toggleCalendar() {\r\n this.calendarOpen = !this.calendarOpen;\r\n }\r\n\r\n updateRange() {\r\n if (this.filters.created_at_start && this.filters.created_at_end) {\r\n if (this.filters.created_at_start > this.filters.created_at_end) {\r\n const temp = this.filters.created_at_start;\r\n this.filters.created_at_start = this.filters.created_at_end;\r\n this.filters.created_at_end = temp;\r\n }\r\n }\r\n }\r\n\r\n public clearFilters(): void {\r\n this.filters = {\r\n state: '',\r\n type: '',\r\n created_at_start: '',\r\n created_at_end: '',\r\n name: '',\r\n source: '',\r\n };\r\n this.pendingSearch = '';\r\n this.updateToFirstPage();\r\n this.updateFilteredData();\r\n this.onFilterChange.emit(this.filters);\r\n }\r\n}","<lib-kv-loading [message]=\"message\" [isLoading]=\"loading\" *ngIf=\"loading\"> </lib-kv-loading>\r\n<ng-container *ngIf=\"!loading\">\r\n <div class=\"search-container\">\r\n <div class=\"search-section\">\r\n\r\n <div class=\"filters\">\r\n <ng-container *ngFor=\"let col of columns\">\r\n <div *ngIf=\"activeColumns.includes(col.key)\">\r\n <ng-container *ngIf=\"col.key === 'created_at'\">\r\n <div class=\"custom-dropdown\" [class.open]=\"calendarOpen\">\r\n <div class=\"selected\" (click)=\"calendarOpen = !calendarOpen; dropdownOpenState = false; dropdownOpenType = false; dropdownOpenSource = false\">\r\n <span *ngIf=\"filters.created_at_start && filters.created_at_end\">\r\n {{ filters.created_at_start | date:'dd/MM/yyyy' }} - {{ filters.created_at_end | date:'dd/MM/yyyy' }}\r\n </span>\r\n <span *ngIf=\"filters.created_at_start && !filters.created_at_end\">\r\n {{ filters.created_at_start | date:'dd/MM/yyyy' }}\r\n </span>\r\n <span *ngIf=\"!filters.created_at_start && filters.created_at_end\">\r\n {{ filters.created_at_end | date:'dd/MM/yyyy' }}\r\n </span>\r\n <span *ngIf=\"!filters.created_at_start && !filters.created_at_end\" class=\"placeholder\">\r\n Created at\r\n </span>\r\n </div>\r\n \r\n <div class=\"calendar-popup\" *ngIf=\"calendarOpen\">\r\n <input type=\"date\" [(ngModel)]=\"filters.created_at_start\" (change)=\"updateRange()\" [max]=\"today\" />\r\n <input type=\"date\" [(ngModel)]=\"filters.created_at_end\" (change)=\"updateRange()\" [max]=\"today\" />\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"col.key === 'expire_at'\">\r\n <label>Fecha:</label>\r\n <input type=\"date\" [(ngModel)]=\"filters.expire_at\" [max]=\"today\" />\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"col.key === 'state'\">\r\n <div class=\"custom-dropdown\" [class.open]=\"dropdownOpenState\">\r\n <div class=\"selected\" (click)=\"dropdownOpenState = !dropdownOpenState; dropdownOpenType = false; dropdownOpenSource = false; calendarOpen = false\">\r\n <span *ngIf=\"filters.state\" class=\"state\" [ngClass]=\"filters.state\">\r\n {{ filters.state }}\r\n </span>\r\n <span *ngIf=\"!filters.state\" class=\"placeholder\">State</span>\r\n </div>\r\n \r\n <ul class=\"options\" *ngIf=\"dropdownOpenState\">\r\n <li *ngFor=\"let opt of options\"\r\n (click)=\"filters.state = opt; dropdownOpenState = false\"\r\n class=\"state\"\r\n [ngClass]=\"opt\">\r\n {{ opt }}\r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"col.key === 'source'\">\r\n <div class=\"custom-dropdown\" [class.open]=\"dropdownOpenSource\">\r\n <div class=\"selected\" (click)=\"dropdownOpenSource = !dropdownOpenSource; dropdownOpenState = false; dropdownOpenType = false; calendarOpen = false\">\r\n <span *ngIf=\"filters.source\" class=\"source\" >\r\n {{ filters.source }}\r\n </span>\r\n <span *ngIf=\"!filters.source\" class=\"placeholder\">Imported from</span>\r\n </div>\r\n \r\n <ul class=\"options\" *ngIf=\"dropdownOpenSource\">\r\n <li (click)=\"filters.source ='local'; dropdownOpenSource = false\"\r\n class=\"source\" [ngClass]=\"'local'\">local\r\n </li>\r\n <li (click)=\"filters.source = 'ecommerce'; dropdownOpenSource = false\"\r\n class=\"source\" [ngClass]=\"'ecommerce'\">ecommerce\r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"col.key === 'type'\">\r\n <div class=\"custom-dropdown\" [class.open]=\"dropdownOpenType\">\r\n <div class=\"selected\" (click)=\"dropdownOpenType = !dropdownOpenType; dropdownOpenState = false; dropdownOpenSource = false; calendarOpen = false\">\r\n <span *ngIf=\"filters.type\" class=\"type\" [ngClass]=\"filters.type.replace(' ', '-')\">\r\n {{ filters.type }}\r\n </span>\r\n <span *ngIf=\"!filters.type\" class=\"placeholder\">Offer type</span>\r\n </div>\r\n \r\n <ul class=\"options\" *ngIf=\"dropdownOpenType\">\r\n <li (click)=\"filters.type ='Regular auction'; dropdownOpenType = false\"\r\n class=\"type\" [ngClass]=\"'Regular-auction'\">Regular auction\r\n </li>\r\n <li (click)=\"filters.type = 'Quick offer'; dropdownOpenType = false\"\r\n class=\"type\" [ngClass]=\"'Quick-offer'\">Quick offer \r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"filter-container\" *ngIf=\"letFilters\">\r\n\r\n <div\r\n class=\"filter-overlay\"\r\n *ngIf=\"showFilterMenu\"\r\n (click)=\"showFilterMenu = false\">\r\n </div>\r\n\r\n <button \r\n (click)=\"showFilterMenu = !showFilterMenu; dropdownOpenState = false; dropdownOpenSource = false; calendarOpen = false; dropdownOpenType = false\" \r\n class=\"filter-button\"\r\n [class.active]=\"showFilterMenu\"\r\n >\r\n <span class=\"plus\">+</span>\r\n <span class=\"material-symbols-outlined filter-icon\">\r\n filter_alt\r\n </span>\r\n </button>\r\n\r\n <div class=\"filter-menu\" *ngIf=\"showFilterMenu\">\r\n <ng-container *ngFor=\"let col of columns\">\r\n <ng-container *ngIf=\"col.key !== 'name' && col.key !== 'images' && col.key !== 'pos_id' && col.key !== 'point_of_sale_id' && col.key !== 'description' \">\r\n <label class=\"custom-checkbox\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"activeColumns.includes(col.key)\"\r\n (change)=\"toggleColumn(col.key, $event)\"\r\n />\r\n <span class=\"label-text\">{{ col.label }}</span>\r\n </label>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n \r\n <input\r\n type=\"text\"\r\n class=\"input\"\r\n placeholder=\"Buscar...\"\r\n [(ngModel)]=\"pendingSearch\"\r\n (keyup.enter)=\"onSearched()\"\r\n />\r\n <button class=\"button--create\" (click)=\"onSearched()\">Buscar</button>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"(!data || data.length === 0) && !loading\">\r\n <lib-kv-resource-not-found class=\"resource-not-found\"\r\n [messageTitle]=\"messageTitle\"\r\n [messageDescription]=\"messageDescription\"></lib-kv-resource-not-found>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"(data && data.length > 0) || loading\">\r\n <table>\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let column of columns\" [class.hidden-mobile]=\"hiddenColumnsOnMobile.includes(column.key)\">{{ column.label }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of filteredData\">\r\n <td *ngFor=\"let column of columns\" [class.hidden-mobile]=\"hiddenColumnsOnMobile.includes(column.key)\">\r\n <div class=\"state\" [ngClass]=\"item[column.key]\">\r\n <ng-container *ngIf=\"column.label === 'Services'\">\r\n <div class=\"service-info\" (click)=\"emitData(item)\">\r\n <img [src]=\"item['url'] || 'https://i.imgur.com/InRaVrL.jpg'\" alt=\"Imagen\" class=\"service-image\" />\r\n <a class=\"a-link\">{{ item.name }}</a>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"column.key === 'name' && column.label !== 'Services'\">\r\n <a class=\"a-link\" (click)=\"emitData(item)\">{{\r\n item[column.key]\r\n }}</a>\r\n </ng-container>\r\n <ng-container *ngIf=\"column.key === 'images'\">\r\n <div class=\"image-container\">\r\n <div *ngFor=\"let image of item[column.key]?.slice(0, 3)\">\r\n <img [src]=\"image\" alt=\"Imagen\" />\r\n </div>\r\n <div *ngIf=\"item[column.key]?.length > 3\" class=\"extra-images\">\r\n +{{ item[column.key].length - 3 }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"column.key === 'created_at'\">\r\n {{ item[column.key] | date : \"dd/MM/yyyy\" }}\r\n </ng-container>\r\n <ng-container *ngIf=\"column.key === 'expire_at'\">\r\n {{ item[column.key] | date : \"dd/MM/yyyy\" }}\r\n </ng-container>\r\n <ng-container *ngIf=\"column.key === 'actions'\">\r\n <ng-container *ngTemplateOutlet=\"cellActionsTemplate; context: { $implicit: item }\"></ng-container>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"\r\n column.key !== 'expire_at' &&\r\n column.key !== 'created_at' &&\r\n column.key !== 'point_of_sale_id' &&\r\n column.key !== 'name' &&\r\n column.key !== 'pos_id' &&\r\n column.key !== 'images' &&\r\n column.key !== 'actions'\r\n \"\r\n >\r\n {{ item[column.key] }}\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"column.key === 'point_of_sale_id' || column.key === 'pos_id'\"\r\n >\r\n {{ getPosName(item[column.key]) }}\r\n </ng-container>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ng-container *ngIf=\"showPaginator\">\r\n <table class=\"table-pagination\">\r\n <tbody>\r\n <tr>\r\n <div class=\"pagination\">\r\n <div class=\"button-section\">\r\n <button (click)=\"changePage(-1)\" [disabled]=\"currentPage === 1\">\r\n Previous\r\n </button>\r\n <button\r\n (click)=\"changePage(1)\"\r\n [disabled]=\"currentPage === totalPages() && !hasMoreItems\"\r\n >\r\n Next\r\n </button>\r\n </div>\r\n <div class=\"current-section\">\r\n <span>Page {{ currentPage }} of {{ totalPages() }}</span>\r\n </div>\r\n </div>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>","import { Injectable } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormGroup, ValidatorFn, Validators } from '@angular/forms';\r\nimport { FormFieldConfig } from '../interfaces/form-field.config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormFactoryService {\r\n constructor(private fb: FormBuilder) { }\r\n\r\n createForm(config: FormFieldConfig[], customValidator?: ValidatorFn): FormGroup {\r\n const formGroup = this.fb.group({}, { validators: customValidator });\r\n config.forEach((field) => {\r\n const control = this.fb.control(\r\n field.defaultValue || '',\r\n field.validators || []\r\n );\r\n formGroup.addControl(field.name, control);\r\n });\r\n return formGroup;\r\n }\r\n\r\n createFormArray(config: FormFieldConfig[], customValidator?: ValidatorFn): FormArray {\r\n const formArray = this.fb.array([], { validators: customValidator });\r\n config.forEach((field) => {\r\n const control = this.fb.control(\r\n field.defaultValue || '',\r\n field.validators || []\r\n );\r\n formArray.push(control);\r\n });\r\n return formArray;\r\n }\r\n\r\n createFormArrayOfGroups(config: FormFieldConfig[], initialCount: number, customValidator?: ValidatorFn): FormArray {\r\n const formArray = this.fb.array<FormGroup>([], { validators: customValidator });\r\n\r\n for (let i = 0; i < initialCount; i++) {\r\n const group = this.createForm(config);\r\n formArray.push(group);\r\n }\r\n\r\n return formArray;\r\n }\r\n\r\n createLoginForm(): FormGroup {\r\n return this.fb.group({\r\n email: ['', [Validators.required, Validators.email]],\r\n password: ['', [Validators.required, Validators.minLength(8)]],\r\n });\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NavigationService {\r\n constructor(private router: Router) { }\r\n\r\n navigateToLogin(): Promise<boolean> {\r\n return this.router.navigate(['/login']);\r\n }\r\n\r\n navigateToOffers(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/offers']);\r\n }\r\n\r\n navigateToOffersDetails(id: string): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/offers-details'], {\r\n queryParams: { offerId: id }\r\n });\r\n }\r\n\r\n navigateToResetPassword(): Promise<boolean> {\r\n return this.router.navigate(['/login/reset-password']);\r\n }\r\n\r\n navigateToPointOfSaleDetails(id: string): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/point-of-sale-details'], {\r\n queryParams: { pointOfSaleId: id }\r\n });\r\n }\r\n\r\n navigateToPointOfSale(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/point-of-sale']);\r\n }\r\n\r\n navigateToItems(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/items']);\r\n }\r\n\r\n navigateToItemsDetails(id: string, posId: string): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/items-details'], {\r\n queryParams: { itemId: id, pointOfSaleId: posId}\r\n });\r\n }\r\n\r\n navigateToRules(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/rules']);\r\n }\r\n\r\n navigateToRulesManager(offerId?: string, offerName?:string): Promise<boolean> {\r\n const queryParams: any = {};\r\n if (offerId) {\r\n queryParams.offerId = offerId;\r\n }\r\n if (offerName) {\r\n queryParams.offerName = offerName;\r\n }\r\n return this.router.navigate( ['/dashboard/rules-manager'],\r\n { queryParams }\r\n );\r\n }\r\n\r\n navigateToOfferFlow(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/offer-flow']);\r\n }\r\n\r\n navigateToPayment(price: number): Promise<boolean> {\r\n return this.router.navigate(['/auctions/payment']);\r\n }\r\n\r\n navigateToBillingRecords(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/billing-record']);\r\n }\r\n\r\n navigateToIntegrations(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/integrations']);\r\n }\r\n\r\n navigateToOrders(): Promise<boolean> {\r\n return this.router.navigate(['/dashboard/orders']);\r\n }\r\n\r\n navigateToOrderStatus(orderId: string): Promise<boolean> {\r\n return this.router.navigate(['/auctions/order-status'], {\r\n queryParams: { id: orderId}\r\n });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ActionType } from '../enums/action-type.enum';\r\n\r\ninterface PopupState {\r\n show: boolean;\r\n title: string;\r\n actionType?: ActionType;\r\n description: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService {\r\n private popupState = new BehaviorSubject<PopupState>({\r\n show: false,\r\n title: '',\r\n description: '',\r\n actionType: ActionType.Info\r\n });\r\n\r\n popupState$ = this.popupState.asObservable();\r\n\r\n showNotification(title: string, description: string, actionType?: ActionType): void {\r\n this.popupState.next({\r\n show: true,\r\n title,\r\n description,\r\n actionType: actionType || ActionType.Info\r\n });\r\n }\r\n\r\n hideNotification(): void {\r\n this.popupState.next({\r\n show: false,\r\n title: '',\r\n description: '',\r\n actionType: ActionType.Info\r\n });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, ReplaySubject, map } from 'rxjs';\r\n\r\ninterface SessionData {\r\n pointsOfSale?: any[];\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class SessionService {\r\n private sessionSubject = new ReplaySubject<SessionData | null>(1);\r\n\r\n constructor() {\r\n this.sessionSubject.next(null);\r\n }\r\n\r\n setSessionData(data: SessionData): void {\r\n this.sessionSubject.next(data);\r\n }\r\n\r\n getCurrentSessionData(): SessionData | null {\r\n let value: SessionData | null = null;\r\n this.sessionSubject.subscribe(v => value = v).unsubscribe();\r\n return value;\r\n }\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\nexport const API_KEY = new InjectionToken<string>('API_KEY');","import { inject, Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpErrorResponse\r\n} from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { CookieService } from \"ngx-cookie-service\";\r\nimport { API_KEY } from '../injection-tokens/auth-config';\r\nimport { NavigationService } from './navigation.service';\r\n\r\n@Injectable()\r\nexport class AuthInterceptor implements HttpInterceptor {\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n const cookieService = inject(CookieService);\r\n const apiKey = inject(API_KEY);\r\n const navigatorService = inject(NavigationService);\r\n\r\n const token = cookieService.get('jwt');\r\n\r\n const modifiedReq = request.clone({\r\n headers: request.headers\r\n .set('Access_token', token)\r\n .set('Api_Key', apiKey)\r\n });\r\n\r\n return next.handle(modifiedReq).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n if (error.status === 401) {\r\n cookieService.delete('jwt');\r\n cookieService.delete('jwt', '/');\r\n }\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { CookieService } from \"ngx-cookie-service\";\r\nimport { BehaviorSubject, firstValueFrom } from \"rxjs\";\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\n\r\nexport interface Session {\r\n access_token: string;\r\n refresh_token: string;\r\n expires_in?: number;\r\n user?: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n private sessionSubject = new BehaviorSubject<Session | null>(null);\r\n protected refreshTimeout: any;\r\n private apiUrl = 'http://localhost:9090/v1';\r\n private apiKey = '';\r\n\r\n constructor(\r\n private readonly cookieService: CookieService,\r\n private readonly http: HttpClient\r\n ) {\r\n this.getSession().catch(() => null);\r\n }\r\n\r\n private getHeaders(): HttpHeaders {\r\n return new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Api_Key': this.apiKey\r\n });\r\n }\r\n\r\n public configureApi(apiUrl: string, apiKey?: string): void {\r\n if (apiUrl) this.apiUrl = apiUrl;\r\n if (apiKey) this.apiKey = apiKey;\r\n }\r\n\r\n public getCurrentSession(): Session | null {\r\n return this.sessionSubject.getValue();\r\n }\r\n\r\n public signIn(email: string, password: string): Promise<any> {\r\n return firstValueFrom(\r\n this.http.post(`${this.apiUrl}/supabase-auth`, { email, password }, { headers: this.getHeaders() })\r\n ).then((response: any) => {\r\n if (response) {\r\n this.sessionSubject.next(response);\r\n localStorage.setItem('refresh_token', response.refresh_token || '');\r\n try { this.cookieService.set('apiUrl', this.apiUrl); } catch {}\r\n if (this.isValidLoginResponse(response)) {\r\n this.handleSuccessfulRefresh(response);\r\n this.startRefreshTimer(response);\r\n }\r\n }\r\n return response;\r\n });\r\n }\r\n\r\n public signOut(): Promise<any> {\r\n return firstValueFrom(\r\n this.http.post(`${this.apiUrl}/supabase-signout`, {}, { headers: this.getHeaders() })\r\n ).then((response: any) => {\r\n this.sessionSubject.next(null);\r\n this.cookieService.deleteAll();\r\n localStorage.removeItem('refresh_token');\r\n return response;\r\n }).catch(error => {\r\n console.error('Error signing out:', error);\r\n this.sessionSubject.next(null);\r\n this.cookieService.deleteAll();\r\n localStorage.removeItem('refresh_token');\r\n throw error;\r\n });\r\n }\r\n\r\n public sendResetPasswordEmail(email: string): Promise<any> {\r\n return firstValueFrom(\r\n this.http.post(`${this.apiUrl}/supabase-reset-password`, { email }, { headers: this.getHeaders() })\r\n );\r\n }\r\n\r\n public setNewPassword(newPassword: string): Promise<any> {\r\n const accessToken = this.cookieService.get('access_token');\r\n const headers = this.getHeaders().set('Authorization', `Bearer ${accessToken}`);\r\n\r\n return firstValueFrom(\r\n this.http.post(`${this.apiUrl}/supabase-set-password`, { password: newPassword }, { headers })\r\n );\r\n }\r\n\r\n public getSession(): Promise<any> {\r\n const refreshToken = localStorage.getItem('refresh_token');\r\n if (!refreshToken) {\r\n return Promise.resolve({ data: { session: null } });\r\n }\r\n \r\n const apiUrlFromCookie = this.cookieService.get('apiUrl') || this.apiUrl;\r\n return firstValueFrom(\r\n this.http.post(`${apiUrlFromCookie}/supabase-session`, { refresh_token: refreshToken }, { headers: this.getHeaders() })\r\n ).then((response: any) => {\r\n if (response?.data?.session) {\r\n this.sessionSubject.next(response.data.session);\r\n if (this.isValidLoginResponse(response.data)) {\r\n this.handleSuccessfulRefresh(response.data);\r\n this.startRefreshTimer(response.data.session);\r\n }\r\n }\r\n return response;\r\n });\r\n }\r\n\r\n public refreshSession(): Promise<any> {\r\n const refreshToken = localStorage.getItem('refresh_token');\r\n if (!refreshToken) {\r\n return Promise.resolve({ data: { session: null } });\r\n }\r\n \r\n return firstValueFrom(\r\n this.http.post(`${this.apiUrl}/supabase-refresh`, { refresh_token: refreshToken }, { headers: this.getHeaders() })\r\n ).then((response: any) => {\r\n if (response?.data) {\r\n this.sessionSubject.next(response.data);\r\n localStorage.setItem('refresh_token', response.data.refresh_token || '');\r\n if (this.isValidLoginResponse(response.data)) {\r\n this.handleSuccessfulRefresh(response.data);\r\n this.startRefreshTimer(response.data);\r\n }\r\n }\r\n return response;\r\n });\r\n }\r\n\r\n public startRefreshTimer(session: Session) {\r\n const expiresIn = session.expires_in || 3200;\r\n this.refreshTimeout = setTimeout(() => {\r\n this.refreshSession().catch(console.error);\r\n }, (expiresIn - 60) * 1000);\r\n }\r\n\r\n public getSessionObservable() {\r\n return this.sessionSubject.asObservable();\r\n }\r\n\r\n private isValidLoginResponse(data: any): boolean {\r\n return !!(\r\n data?.access_token &&\r\n data?.user?.app_metadata?.role\r\n );\r\n }\r\n\r\n private handleSuccessfulRefresh(data: any): void {\r\n const token = data!.access_token;\r\n this.cookieService.delete('jwt');\r\n this.cookieService.set('jwt', token);\r\n }\r\n}\r\n","export class AuthHelper {\r\n\r\n public static getUserId(): string | null {\r\n return localStorage.getItem(\"userId\") || null;\r\n }\r\n\r\n public static getUserRole(): string | null {\r\n return localStorage.getItem(\"userRole\") || null;\r\n }\r\n}","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport const passwordMatchValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const password = control.get('password');\r\n const confirmPassword = control.get('confirmPassword');\r\n\r\n if (!password || !confirmPassword) {\r\n return null;\r\n }\r\n\r\n if (password.pristine || confirmPassword.pristine) {\r\n return null;\r\n }\r\n\r\n return password.value === confirmPassword.value ? null : { passwordMismatch: true };\r\n};","/*\r\n * Public API Surface of kivio\r\n */\r\n\r\n//Components\r\nexport * from './lib/components/kv-popup/kv-popup.component';\r\nexport * from './lib/components/date-picker/date-picker.component';\r\nexport * from './lib/components/kv-resource-not-found/kv-resource-not-found.component'\r\nexport * from './lib/components/kv-stepper/kv-stepper.component';\r\nexport * from './lib/components/kv-step/kv-step.component';\r\nexport * from './lib/components/kv-accordion/kv-accordion.component';\r\nexport * from './lib/components/kv-alert/kv-alert.component';\r\nexport * from './lib/components/kv-side-menu/kv-side-menu.component'\r\nexport * from './lib/components/kv-main-table/kv-main-table.component'\r\nexport * from './lib/components/kv-loading/kv-loading.component';\r\n\r\n//Services\r\nexport * from './lib/factories/form-factory.service';\r\nexport * from './lib/services/navigation.service';\r\nexport * from './lib/services/notification.service';\r\nexport * from './lib/services/session.service';\r\nexport * from './lib/services/auth-interceptor.service';\r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/pagination.service';\r\n\r\n//Configs\r\nexport * from './lib/interfaces/form-field.config';\r\n\r\n//Helpers\r\nexport * from './lib/helpers/auth.helper'\r\n\r\n//Validators\r\nexport * from './lib/validators/password-missmatch.validator'\r\n\r\n//Enums\r\nexport * from './lib/enums/action-type.enum'\r\n\r\n// Injection Tokens\r\nexport * from './lib/injection-tokens/auth-config';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PaginationService","i1"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kivio",
3
- "version": "1.5.1",
3
+ "version": "1.5.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0"