aril 1.2.9 → 1.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/esm2022/theme/layout/app/history/history.service.mjs +4 -3
  2. package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +6 -5
  3. package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +17 -8
  4. package/esm2022/ui/autoComplete/src/auto-complete.component.mjs +13 -9
  5. package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +5 -5
  6. package/esm2022/ui-business/rolePicker/src/role-picker.component.mjs +13 -9
  7. package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +1 -1
  8. package/fesm2022/aril-theme-layout.mjs +23 -13
  9. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  10. package/fesm2022/aril-ui-autoComplete.mjs +12 -8
  11. package/fesm2022/aril-ui-autoComplete.mjs.map +1 -1
  12. package/fesm2022/aril-ui-business-assetPicker.mjs +4 -4
  13. package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -1
  14. package/fesm2022/aril-ui-business-rolePicker.mjs +12 -8
  15. package/fesm2022/aril-ui-business-rolePicker.mjs.map +1 -1
  16. package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
  17. package/package.json +183 -183
  18. package/theme/layout/app/history/history.service.ts +5 -2
  19. package/theme/layout/app/site-map/site-map-sidebar.component.html +121 -121
  20. package/theme/layout/app/site-map/site-map-sidebar.component.ts +3 -2
  21. package/theme/layout/app/static-sidebar/static-sidebar.component.d.ts +0 -1
  22. package/theme/layout/app/static-sidebar/static-sidebar.component.html +3 -3
  23. package/theme/layout/app/static-sidebar/static-sidebar.component.ts +14 -7
  24. package/ui/autoComplete/src/auto-complete.component.d.ts +3 -1
  25. package/ui-business/assetPicker/src/asset-picker.component.d.ts +1 -1
  26. package/ui-business/rolePicker/src/role-picker.component.d.ts +3 -1
@@ -112,12 +112,13 @@ export class HistoryService {
112
112
  }
113
113
  getHistoryItemsBySearchTerm(searchTerm) {
114
114
  const history = this.getHistoryFromStorage();
115
- const lowerSearchTerm = searchTerm.toLowerCase();
116
115
  const currentLang = this.translocoService.getActiveLang();
116
+ const lowerSearchTerm = searchTerm.toLocaleLowerCase(currentLang);
117
117
  return history.filter((item) => {
118
118
  // Search in current language title
119
119
  const currentTitle = item.multiLanguageTitle?.[currentLang] || item.title;
120
- return currentTitle.toLowerCase().includes(lowerSearchTerm) || item.url.toLowerCase().includes(lowerSearchTerm);
120
+ return (currentTitle.toLocaleLowerCase(currentLang).includes(lowerSearchTerm) ||
121
+ item.url.toLocaleLowerCase(currentLang).includes(lowerSearchTerm));
121
122
  });
122
123
  }
123
124
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HistoryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -129,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
129
130
  providedIn: 'root'
130
131
  }]
131
132
  }], ctorParameters: () => [] });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2hpc3RvcnkvaGlzdG9yeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQWdCbEQsTUFBTSxPQUFPLGNBQWM7SUFLc0QsQ0FBQztJQVVqRjtRQWRpQixnQkFBVyxHQUFHLGNBQWMsQ0FBQztRQUM3QixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFL0IsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDekQsYUFBUSxHQUE4QixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWhGLDJDQUEyQztRQUNuQyxrQkFBYSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0IsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUdwQyxJ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V0FBVyxDQUFDLENBQUM7WUFDdEQsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLHNEQUFzRCxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVFLE9BQU8sRUFBRSxDQUFDO1FBQ1gsQ0FBQztJQUNGLENBQUM7SUFFTSwyQkFBMkIsQ0FBQyxVQUFrQjtRQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QyxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBaUIsQ0FBQztRQUV6RSxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM5QixtQ0FBbUM7WUFDbkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztZQUMxRSxPQUFPLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakgsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQW5JVyxjQUFjO2tIQUFkLGNBQWMsY0FGZCxNQUFNOzsyRkFFTixjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IFB1YlN1YlNlcnZpY2UgfSBmcm9tICdhcmlsL3V0aWwvcHViLXN1Yic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEhpc3RvcnlJdGVtIHtcclxuXHRpZDogc3RyaW5nO1xyXG5cdHRpdGxlOiBzdHJpbmc7XHJcblx0bXVsdGlMYW5ndWFnZVRpdGxlPzoge1xyXG5cdFx0dHI/OiBzdHJpbmc7XHJcblx0XHRlbj86IHN0cmluZztcclxuXHR9O1xyXG5cdHVybDogc3RyaW5nO1xyXG5cdHRpbWVzdGFtcDogbnVtYmVyO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXN0b3J5U2VydmljZSB7XHJcblx0cHJpdmF0ZSByZWFkb25seSBTVE9SQUdFX0tFWSA9ICdwYWdlX2hpc3RvcnknO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgTUFYX0hJU1RPUllfU0laRSA9IDIwO1xyXG5cclxuXHRwcml2YXRlIGhpc3RvcnlTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIaXN0b3J5SXRlbVtdPihbXSk7XHJcblx0cHVibGljIGhpc3RvcnkkOiBPYnNlcnZhYmxlPEhpc3RvcnlJdGVtW10+ID0gdGhpcy5oaXN0b3J5U3ViamVjdC5hc09ic2VydmFibGUoKTs7XHJcblxyXG5cdC8vIEV4Y2x1ZGVkIHBhdGhzIHRoYXQgc2hvdWxkbid0IGJlIHRyYWNrZWRcclxuXHRwcml2YXRlIGV4Y2x1ZGVkUGF0aHMgPSBbJy9sb2dpbiddO1xyXG5cclxuXHRwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cdHByaXZhdGUgdHJhbnNsb2NvU2VydmljZSA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcclxuXHRwcml2YXRlIHB1YlN1YlNlcnZpY2UgPSBpbmplY3QoUHViU3ViU2VydmljZSk7XHJcblx0cHJpdmF0ZSB0aXRsZVNlcnZpY2UgPSBpbmplY3QoVGl0bGUpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHRoaXMubG9hZEhpc3RvcnlGcm9tU3RvcmFnZSgpO1xyXG5cdFx0dGhpcy5pbml0aWFsaXplQnJlYWRjcnVtYkxpc3RlbmVyKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGluaXRpYWxpemVCcmVhZGNydW1iTGlzdGVuZXIoKTogdm9pZCB7XHJcblx0XHQvLyBMaXN0ZW4gZm9yIGJyZWFkY3J1bWIgdXBkYXRlcyB0byB0cmFjayBuYXZpZ2F0aW9uIGhpc3RvcnlcclxuXHRcdHRoaXMucHViU3ViU2VydmljZS5zdWJzY3JpYmUoJ2JyZWFkY3J1bWJVcGRhdGVkJywgKGRhdGEpID0+IHtcclxuXHRcdFx0Y29uc3QgdXJsID0gZGF0YT8ucGF0aDtcclxuXHRcdFx0Y29uc3QgcGFnZVRpdGxlID0gZGF0YT8uY3VzdG9tPy5wYWdlVGl0bGU7XHJcblx0XHRcdFxyXG5cdFx0XHRpZiAodXJsICYmIHBhZ2VUaXRsZSAmJiBwYWdlVGl0bGUgIT09ICcuLi4nKSB7XHJcblx0XHRcdFx0dGhpcy5hZGRUb0hpc3RvcnkodXJsLCBwYWdlVGl0bGUpO1xyXG5cdFx0XHRcdHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHBhZ2VUaXRsZSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhZGRUb0hpc3RvcnkodXJsOiBzdHJpbmcsIHBhZ2VUaXRsZT86IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuc2hvdWxkRXhjbHVkZVVybCh1cmwpKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBtdWx0aUxhbmd1YWdlVGl0bGU6IHsgdHI/OiBzdHJpbmc7IGVuPzogc3RyaW5nIH0gPSB7fTtcclxuXHJcblx0XHQgaWYgKHBhZ2VUaXRsZSkge1xyXG5cdFx0XHRtdWx0aUxhbmd1YWdlVGl0bGUudHIgPSBwYWdlVGl0bGU7XHJcblx0XHRcdG11bHRpTGFuZ3VhZ2VUaXRsZS5lbiA9IHBhZ2VUaXRsZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IGdsb2JhbFBhZ2VUaXRsZSA9IGJyaWRnZS5wYWdlVGl0bGUoKTtcclxuXHRcdFx0aWYgKGdsb2JhbFBhZ2VUaXRsZSkge1xyXG5cdFx0XHRcdG11bHRpTGFuZ3VhZ2VUaXRsZS50ciA9IGdsb2JhbFBhZ2VUaXRsZTtcclxuXHRcdFx0XHRtdWx0aUxhbmd1YWdlVGl0bGUuZW4gPSBnbG9iYWxQYWdlVGl0bGU7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Ly8gRmFsbGJhY2sgZm9yIHBhZ2VzIG5vdCBpbiBtZW51IGFuZCBubyBnbG9iYWwgdGl0bGVcclxuXHRcdFx0XHRtdWx0aUxhbmd1YWdlVGl0bGUudHIgPSAnQmlsaW5tZXllbiBTYXlmYSc7XHJcblx0XHRcdFx0bXVsdGlMYW5ndWFnZVRpdGxlLmVuID0gJ1Vua25vd24gUGFnZSc7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsb2NvU2VydmljZS5nZXRBY3RpdmVMYW5nKCkgYXMgJ3RyJyB8ICdlbic7XHJcblx0XHRjb25zdCB0aXRsZSA9IG11bHRpTGFuZ3VhZ2VUaXRsZVtjdXJyZW50TGFuZ10gfHwgbXVsdGlMYW5ndWFnZVRpdGxlLnRyIHx8ICdVbmtub3duIFBhZ2UnO1xyXG5cdFx0Y29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuXHRcdGNvbnN0IGlkID0gdGhpcy5nZW5lcmF0ZUlkKHVybCwgdGltZXN0YW1wKTtcclxuXHJcblx0XHRjb25zdCBuZXdJdGVtOiBIaXN0b3J5SXRlbSA9IHtcclxuXHRcdFx0aWQsXHJcblx0XHRcdHRpdGxlLFxyXG5cdFx0XHRtdWx0aUxhbmd1YWdlVGl0bGUsXHJcblx0XHRcdHVybCxcclxuXHRcdFx0dGltZXN0YW1wXHJcblx0XHR9O1xyXG5cclxuXHRcdGxldCBoaXN0b3J5ID0gdGhpcy5nZXRIaXN0b3J5RnJvbVN0b3JhZ2UoKTtcclxuXHRcdGhpc3RvcnkgPSBoaXN0b3J5LmZpbHRlcigoaXRlbSkgPT4gaXRlbS51cmwgIT09IHVybCk7XHJcblx0XHRoaXN0b3J5LnVuc2hpZnQobmV3SXRlbSk7XHJcblxyXG5cdFx0Ly8gTGltaXQgaGlzdG9yeSBzaXplXHJcblx0XHRpZiAoaGlzdG9yeS5sZW5ndGggPiB0aGlzLk1BWF9ISVNUT1JZX1NJWkUpIHtcclxuXHRcdFx0aGlzdG9yeSA9IGhpc3Rvcnkuc2xpY2UoMCwgdGhpcy5NQVhfSElTVE9SWV9TSVpFKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnNhdmVIaXN0b3J5VG9TdG9yYWdlKGhpc3RvcnkpO1xyXG5cdFx0dGhpcy5oaXN0b3J5U3ViamVjdC5uZXh0KGhpc3RvcnkpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzaG91bGRFeGNsdWRlVXJsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5leGNsdWRlZFBhdGhzLnNvbWUoKGV4Y2x1ZGVkUGF0aCkgPT4gdXJsLnN0YXJ0c1dpdGgoZXhjbHVkZWRQYXRoKSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdlbmVyYXRlSWQodXJsOiBzdHJpbmcsIHRpbWVzdGFtcDogbnVtYmVyKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBgJHt1cmwucmVwbGFjZSgvW15hLXpBLVowLTldL2csICdfJyl9XyR7dGltZXN0YW1wfWA7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGxvYWRIaXN0b3J5RnJvbVN0b3JhZ2UoKTogdm9pZCB7XHJcblx0XHRjb25zdCBoaXN0b3J5ID0gdGhpcy5nZXRIaXN0b3J5RnJvbVN0b3JhZ2UoKTtcclxuXHRcdHRoaXMuaGlzdG9yeVN1YmplY3QubmV4dChoaXN0b3J5KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2F2ZUhpc3RvcnlUb1N0b3JhZ2UoaGlzdG9yeTogSGlzdG9yeUl0ZW1bXSk6IHZvaWQge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkoaGlzdG9yeSkpO1xyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKCdGYWlsZWQgdG8gc2F2ZSBuYXZpZ2F0aW9uIGhpc3RvcnkgdG8gbG9jYWxTdG9yYWdlOicsIGVycm9yKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHB1YmxpYyBjbGVhckhpc3RvcnkoKTogdm9pZCB7XHJcblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlNUT1JBR0VfS0VZKTtcclxuXHRcdHRoaXMuaGlzdG9yeVN1YmplY3QubmV4dChbXSk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgbmF2aWdhdGVUb0hpc3RvcnlJdGVtKGl0ZW06IEhpc3RvcnlJdGVtKTogdm9pZCB7XHJcblx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaXRlbS51cmxdKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0SGlzdG9yeUZyb21TdG9yYWdlKCk6IEhpc3RvcnlJdGVtW10ge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5TVE9SQUdFX0tFWSk7XHJcblx0XHRcdHJldHVybiBzdG9yZWQgPyBKU09OLnBhcnNlKHN0b3JlZCkgOiBbXTtcclxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignRmFpbGVkIHRvIGxvYWQgbmF2aWdhdGlvbiBoaXN0b3J5IGZyb20gbG9jYWxTdG9yYWdlOicsIGVycm9yKTtcclxuXHRcdFx0cmV0dXJuIFtdO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGdldEhpc3RvcnlJdGVtc0J5U2VhcmNoVGVybShzZWFyY2hUZXJtOiBzdHJpbmcpOiBIaXN0b3J5SXRlbVtdIHtcclxuXHRcdGNvbnN0IGhpc3RvcnkgPSB0aGlzLmdldEhpc3RvcnlGcm9tU3RvcmFnZSgpO1xyXG5cdFx0Y29uc3QgbG93ZXJTZWFyY2hUZXJtID0gc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0Y29uc3QgY3VycmVudExhbmcgPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UuZ2V0QWN0aXZlTGFuZygpIGFzICd0cicgfCAnZW4nO1xyXG5cclxuXHRcdHJldHVybiBoaXN0b3J5LmZpbHRlcigoaXRlbSkgPT4ge1xyXG5cdFx0XHQvLyBTZWFyY2ggaW4gY3VycmVudCBsYW5ndWFnZSB0aXRsZVxyXG5cdFx0XHRjb25zdCBjdXJyZW50VGl0bGUgPSBpdGVtLm11bHRpTGFuZ3VhZ2VUaXRsZT8uW2N1cnJlbnRMYW5nXSB8fCBpdGVtLnRpdGxlO1xyXG5cdFx0XHRyZXR1cm4gY3VycmVudFRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJTZWFyY2hUZXJtKSB8fCBpdGVtLnVybC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyU2VhcmNoVGVybSk7XHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIl19
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2hpc3RvcnkvaGlzdG9yeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQWdCbEQsTUFBTSxPQUFPLGNBQWM7SUFLc0QsQ0FBQztJQVVqRjtRQWRpQixnQkFBVyxHQUFHLGNBQWMsQ0FBQztRQUM3QixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFL0IsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDekQsYUFBUSxHQUE4QixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWhGLDJDQUEyQztRQUNuQyxrQkFBYSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0IsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUdwQyxJ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J0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IFB1YlN1YlNlcnZpY2UgfSBmcm9tICdhcmlsL3V0aWwvcHViLXN1Yic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEhpc3RvcnlJdGVtIHtcclxuXHRpZDogc3RyaW5nO1xyXG5cdHRpdGxlOiBzdHJpbmc7XHJcblx0bXVsdGlMYW5ndWFnZVRpdGxlPzoge1xyXG5cdFx0dHI/OiBzdHJpbmc7XHJcblx0XHRlbj86IHN0cmluZztcclxuXHR9O1xyXG5cdHVybDogc3RyaW5nO1xyXG5cdHRpbWVzdGFtcDogbnVtYmVyO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXN0b3J5U2VydmljZSB7XHJcblx0cHJpdmF0ZSByZWFkb25seSBTVE9SQUdFX0tFWSA9ICdwYWdlX2hpc3RvcnknO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgTUFYX0hJU1RPUllfU0laRSA9IDIwO1xyXG5cclxuXHRwcml2YXRlIGhpc3RvcnlTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIaXN0b3J5SXRlbVtdPihbXSk7XHJcblx0cHVibGljIGhpc3RvcnkkOiBPYnNlcnZhYmxlPEhpc3RvcnlJdGVtW10+ID0gdGhpcy5oaXN0b3J5U3ViamVjdC5hc09ic2VydmFibGUoKTs7XHJcblxyXG5cdC8vIEV4Y2x1ZGVkIHBhdGhzIHRoYXQgc2hvdWxkbid0IGJlIHRyYWNrZWRcclxuXHRwcml2YXRlIGV4Y2x1ZGVkUGF0aHMgPSBbJy9sb2dpbiddO1xyXG5cclxuXHRwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cdHByaXZhdGUgdHJhbnNsb2NvU2VydmljZSA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcclxuXHRwcml2YXRlIHB1YlN1YlNlcnZpY2UgPSBpbmplY3QoUHViU3ViU2VydmljZSk7XHJcblx0cHJpdmF0ZSB0aXRsZVNlcnZpY2UgPSBpbmplY3QoVGl0bGUpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHRoaXMubG9hZEhpc3RvcnlGcm9tU3RvcmFnZSgpO1xyXG5cdFx0dGhpcy5pbml0aWFsaXplQnJlYWRjcnVtYkxpc3RlbmVyKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGluaXRpYWxpemVCcmVhZGNydW1iTGlzdGVuZXIoKTogdm9pZCB7XHJcblx0XHQvLyBMaXN0ZW4gZm9yIGJyZWFkY3J1bWIgdXBkYXRlcyB0byB0cmFjayBuYXZpZ2F0aW9uIGhpc3RvcnlcclxuXHRcdHRoaXMucHViU3ViU2VydmljZS5zdWJzY3JpYmUoJ2JyZWFkY3J1bWJVcGRhdGVkJywgKGRhdGEpID0+IHtcclxuXHRcdFx0Y29uc3QgdXJsID0gZGF0YT8ucGF0aDtcclxuXHRcdFx0Y29uc3QgcGFnZVRpdGxlID0gZGF0YT8uY3VzdG9tPy5wYWdlVGl0bGU7XHJcblx0XHRcdFxyXG5cdFx0XHRpZiAodXJsICYmIHBhZ2VUaXRsZSAmJiBwYWdlVGl0bGUgIT09ICcuLi4nKSB7XHJcblx0XHRcdFx0dGhpcy5hZGRUb0hpc3RvcnkodXJsLCBwYWdlVGl0bGUpO1xyXG5cdFx0XHRcdHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHBhZ2VUaXRsZSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhZGRUb0hpc3RvcnkodXJsOiBzdHJpbmcsIHBhZ2VUaXRsZT86IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuc2hvdWxkRXhjbHVkZVVybCh1cmwpKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBtdWx0aUxhbmd1YWdlVGl0bGU6IHsgdHI/OiBzdHJpbmc7IGVuPzogc3RyaW5nIH0gPSB7fTtcclxuXHJcblx0XHQgaWYgKHBhZ2VUaXRsZSkge1xyXG5cdFx0XHRtdWx0aUxhbmd1YWdlVGl0bGUudHIgPSBwYWdlVGl0bGU7XHJcblx0XHRcdG11bHRpTGFuZ3VhZ2VUaXRsZS5lbiA9IHBhZ2VUaXRsZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IGdsb2JhbFBhZ2VUaXRsZSA9IGJyaWRnZS5wYWdlVGl0bGUoKTtcclxuXHRcdFx0aWYgKGdsb2JhbFBhZ2VUaXRsZSkge1xyXG5cdFx0XHRcdG11bHRpTGFuZ3VhZ2VUaXRsZS50ciA9IGdsb2JhbFBhZ2VUaXRsZTtcclxuXHRcdFx0XHRtdWx0aUxhbmd1YWdlVGl0bGUuZW4gPSBnbG9iYWxQYWdlVGl0bGU7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Ly8gRmFsbGJhY2sgZm9yIHBhZ2VzIG5vdCBpbiBtZW51IGFuZCBubyBnbG9iYWwgdGl0bGVcclxuXHRcdFx0XHRtdWx0aUxhbmd1YWdlVGl0bGUudHIgPSAnQmlsaW5tZXllbiBTYXlmYSc7XHJcblx0XHRcdFx0bXVsdGlMYW5ndWFnZVRpdGxlLmVuID0gJ1Vua25vd24gUGFnZSc7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsb2NvU2VydmljZS5nZXRBY3RpdmVMYW5nKCkgYXMgJ3RyJyB8ICdlbic7XHJcblx0XHRjb25zdCB0aXRsZSA9IG11bHRpTGFuZ3VhZ2VUaXRsZVtjdXJyZW50TGFuZ10gfHwgbXVsdGlMYW5ndWFnZVRpdGxlLnRyIHx8ICdVbmtub3duIFBhZ2UnO1xyXG5cdFx0Y29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuXHRcdGNvbnN0IGlkID0gdGhpcy5nZW5lcmF0ZUlkKHVybCwgdGltZXN0YW1wKTtcclxuXHJcblx0XHRjb25zdCBuZXdJdGVtOiBIaXN0b3J5SXRlbSA9IHtcclxuXHRcdFx0aWQsXHJcblx0XHRcdHRpdGxlLFxyXG5cdFx0XHRtdWx0aUxhbmd1YWdlVGl0bGUsXHJcblx0XHRcdHVybCxcclxuXHRcdFx0dGltZXN0YW1wXHJcblx0XHR9O1xyXG5cclxuXHRcdGxldCBoaXN0b3J5ID0gdGhpcy5nZXRIaXN0b3J5RnJvbVN0b3JhZ2UoKTtcclxuXHRcdGhpc3RvcnkgPSBoaXN0b3J5LmZpbHRlcigoaXRlbSkgPT4gaXRlbS51cmwgIT09IHVybCk7XHJcblx0XHRoaXN0b3J5LnVuc2hpZnQobmV3SXRlbSk7XHJcblxyXG5cdFx0Ly8gTGltaXQgaGlzdG9yeSBzaXplXHJcblx0XHRpZiAoaGlzdG9yeS5sZW5ndGggPiB0aGlzLk1BWF9ISVNUT1JZX1NJWkUpIHtcclxuXHRcdFx0aGlzdG9yeSA9IGhpc3Rvcnkuc2xpY2UoMCwgdGhpcy5NQVhfSElTVE9SWV9TSVpFKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnNhdmVIaXN0b3J5VG9TdG9yYWdlKGhpc3RvcnkpO1xyXG5cdFx0dGhpcy5oaXN0b3J5U3ViamVjdC5uZXh0KGhpc3RvcnkpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzaG91bGRFeGNsdWRlVXJsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5leGNsdWRlZFBhdGhzLnNvbWUoKGV4Y2x1ZGVkUGF0aCkgPT4gdXJsLnN0YXJ0c1dpdGgoZXhjbHVkZWRQYXRoKSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdlbmVyYXRlSWQodXJsOiBzdHJpbmcsIHRpbWVzdGFtcDogbnVtYmVyKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBgJHt1cmwucmVwbGFjZSgvW15hLXpBLVowLTldL2csICdfJyl9XyR7dGltZXN0YW1wfWA7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGxvYWRIaXN0b3J5RnJvbVN0b3JhZ2UoKTogdm9pZCB7XHJcblx0XHRjb25zdCBoaXN0b3J5ID0gdGhpcy5nZXRIaXN0b3J5RnJvbVN0b3JhZ2UoKTtcclxuXHRcdHRoaXMuaGlzdG9yeVN1YmplY3QubmV4dChoaXN0b3J5KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2F2ZUhpc3RvcnlUb1N0b3JhZ2UoaGlzdG9yeTogSGlzdG9yeUl0ZW1bXSk6IHZvaWQge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkoaGlzdG9yeSkpO1xyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKCdGYWlsZWQgdG8gc2F2ZSBuYXZpZ2F0aW9uIGhpc3RvcnkgdG8gbG9jYWxTdG9yYWdlOicsIGVycm9yKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHB1YmxpYyBjbGVhckhpc3RvcnkoKTogdm9pZCB7XHJcblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlNUT1JBR0VfS0VZKTtcclxuXHRcdHRoaXMuaGlzdG9yeVN1YmplY3QubmV4dChbXSk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgbmF2aWdhdGVUb0hpc3RvcnlJdGVtKGl0ZW06IEhpc3RvcnlJdGVtKTogdm9pZCB7XHJcblx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaXRlbS51cmxdKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0SGlzdG9yeUZyb21TdG9yYWdlKCk6IEhpc3RvcnlJdGVtW10ge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5TVE9SQUdFX0tFWSk7XHJcblx0XHRcdHJldHVybiBzdG9yZWQgPyBKU09OLnBhcnNlKHN0b3JlZCkgOiBbXTtcclxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignRmFpbGVkIHRvIGxvYWQgbmF2aWdhdGlvbiBoaXN0b3J5IGZyb20gbG9jYWxTdG9yYWdlOicsIGVycm9yKTtcclxuXHRcdFx0cmV0dXJuIFtdO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGdldEhpc3RvcnlJdGVtc0J5U2VhcmNoVGVybShzZWFyY2hUZXJtOiBzdHJpbmcpOiBIaXN0b3J5SXRlbVtdIHtcclxuXHRcdGNvbnN0IGhpc3RvcnkgPSB0aGlzLmdldEhpc3RvcnlGcm9tU3RvcmFnZSgpO1xyXG5cdFx0Y29uc3QgY3VycmVudExhbmcgPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UuZ2V0QWN0aXZlTGFuZygpIGFzICd0cicgfCAnZW4nO1xyXG5cdFx0Y29uc3QgbG93ZXJTZWFyY2hUZXJtID0gc2VhcmNoVGVybS50b0xvY2FsZUxvd2VyQ2FzZShjdXJyZW50TGFuZyk7XHJcblxyXG5cdFx0cmV0dXJuIGhpc3RvcnkuZmlsdGVyKChpdGVtKSA9PiB7XHJcblx0XHRcdC8vIFNlYXJjaCBpbiBjdXJyZW50IGxhbmd1YWdlIHRpdGxlXHJcblx0XHRcdGNvbnN0IGN1cnJlbnRUaXRsZSA9IGl0ZW0ubXVsdGlMYW5ndWFnZVRpdGxlPy5bY3VycmVudExhbmddIHx8IGl0ZW0udGl0bGU7XHJcblx0XHRcdHJldHVybiAoXHJcblx0XHRcdFx0Y3VycmVudFRpdGxlLnRvTG9jYWxlTG93ZXJDYXNlKGN1cnJlbnRMYW5nKS5pbmNsdWRlcyhsb3dlclNlYXJjaFRlcm0pIHx8XHJcblx0XHRcdFx0aXRlbS51cmwudG9Mb2NhbGVMb3dlckNhc2UoY3VycmVudExhbmcpLmluY2x1ZGVzKGxvd2VyU2VhcmNoVGVybSlcclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -91,7 +91,8 @@ export class SiteMapSidebarComponent {
91
91
  return count;
92
92
  }
93
93
  onSearchChange() {
94
- const searchTerm = this.searchTerm()?.toLowerCase()?.trim();
94
+ const currentLang = this.translocoService.getActiveLang();
95
+ const searchTerm = this.searchTerm()?.toLocaleLowerCase(currentLang)?.trim();
95
96
  if (!searchTerm) {
96
97
  this.filteredNodes.set(this.siteMapNodes());
97
98
  }
@@ -108,7 +109,7 @@ export class SiteMapSidebarComponent {
108
109
  const labelText = typeof node.label === 'string' ?
109
110
  node.label
110
111
  : node.label?.[currentLang] || node.label?.tr || node.label?.en || '';
111
- const matches = labelText.toLowerCase().includes(searchTerm);
112
+ const matches = labelText.toLocaleLowerCase(currentLang).includes(searchTerm);
112
113
  let filteredChildren = [];
113
114
  if (node.children) {
114
115
  filteredChildren = this.filterNodes(node.children, searchTerm);
@@ -146,7 +147,7 @@ export class SiteMapSidebarComponent {
146
147
  return node.key || `${index}`;
147
148
  }
148
149
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SiteMapSidebarComponent, deps: [{ token: i1.LayoutService }, { token: i2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
149
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: SiteMapSidebarComponent, isStandalone: true, selector: "app-site-map-sidebar", ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'siteMap'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\r\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"sitemap-content\">\r\n\t\t<div class=\"search-section grid p-fluid m-0\">\r\n\t\t\t<aril-text\r\n\t\t\t\t[placeholder]=\"t('searchPages')\"\r\n\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\tclass=\"col-10 m-0\">\r\n\t\t\t</aril-text>\r\n\t\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\r\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"expandAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"collapseAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t<!-- Site Map Tree -->\r\n\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"sitemap-tree\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<!-- Recursive Tree Node Template -->\r\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\r\n\r\n\t\t\t\t\t\t@if (node.routerLink) {\r\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Recursive Children -->\r\n\t\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i8.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: TranslateJsonPipe, name: "translateJson" }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
150
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: SiteMapSidebarComponent, isStandalone: true, selector: "app-site-map-sidebar", ngImport: i0, template: "<p-sidebar\n\t[(visible)]=\"visible\"\n\tposition=\"right\"\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\n\t*transloco=\"let t; read: 'siteMap'\">\n\t<ng-template pTemplate=\"header\">\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\n\t\t\t<div class=\"flex align-items-center gap-2\">\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n\n\t<div class=\"sitemap-content\">\n\t\t<div class=\"search-section grid p-fluid m-0\">\n\t\t\t<aril-text\n\t\t\t\t[placeholder]=\"t('searchPages')\"\n\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\n\t\t\t\tclass=\"col-10 m-0\">\n\t\t\t</aril-text>\n\t\t\t@if (filteredNodes().length > 0) {\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\n\t\t\t\t\t<fa-icon\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\n\t\t\t\t\t\tsize=\"xl\"\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\t(click)=\"expandAll()\">\n\t\t\t\t\t</fa-icon>\n\t\t\t\t\t<fa-icon\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\n\t\t\t\t\t\tsize=\"xl\"\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\t(click)=\"collapseAll()\">\n\t\t\t\t\t</fa-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\n\t\t<!-- Site Map Tree -->\n\t\t@if (filteredNodes().length > 0) {\n\t\t\t<div class=\"sitemap-tree\">\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\n\t\t\t\t\t<div class=\"tree-container\">\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</p-scrollPanel>\n\t\t\t</div>\n\t\t} @else {\n\t\t\t<div class=\"empty-state\">\n\t\t\t\t<div class=\"empty-content\">\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\n\t\t\t\t\t<h3 class=\"empty-title\">\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\n\t\t\t\t\t</h3>\n\t\t\t\t\t<p class=\"empty-message\">\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\n\t\t\t\t\t</p>\n\t\t\t\t\t@if (searchTerm()) {\n\t\t\t\t\t\t<aril-button\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\n\t\t\t\t\t\t\ticon=\"TIMES\"\n\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\n\t\t\t\t\t\t</aril-button>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\n\t\t<!-- Recursive Tree Node Template -->\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\n\t\t\t\t<div\n\t\t\t\t\tclass=\"node-item\"\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\n\t\t\t\t\t<div class=\"node-content\">\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (node.icon) {\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\n\n\t\t\t\t\t\t@if (node.routerLink) {\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Recursive Children -->\n\t\t\t\t@if (node.children && node.expanded) {\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\n\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</div>\n\t\t</ng-template>\n\t</div>\n</p-sidebar>\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i8.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: TranslateJsonPipe, name: "translateJson" }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
150
151
  }
151
152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SiteMapSidebarComponent, decorators: [{
152
153
  type: Component,
@@ -162,6 +163,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
162
163
  TranslocoModule,
163
164
  TranslateJsonPipe,
164
165
  FontAwesomeModule
165
- ], template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'siteMap'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\r\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"sitemap-content\">\r\n\t\t<div class=\"search-section grid p-fluid m-0\">\r\n\t\t\t<aril-text\r\n\t\t\t\t[placeholder]=\"t('searchPages')\"\r\n\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\tclass=\"col-10 m-0\">\r\n\t\t\t</aril-text>\r\n\t\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\r\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"expandAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"collapseAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t<!-- Site Map Tree -->\r\n\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"sitemap-tree\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<!-- Recursive Tree Node Template -->\r\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\r\n\r\n\t\t\t\t\t\t@if (node.routerLink) {\r\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Recursive Children -->\r\n\t\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"] }]
166
+ ], template: "<p-sidebar\n\t[(visible)]=\"visible\"\n\tposition=\"right\"\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\n\t*transloco=\"let t; read: 'siteMap'\">\n\t<ng-template pTemplate=\"header\">\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\n\t\t\t<div class=\"flex align-items-center gap-2\">\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n\n\t<div class=\"sitemap-content\">\n\t\t<div class=\"search-section grid p-fluid m-0\">\n\t\t\t<aril-text\n\t\t\t\t[placeholder]=\"t('searchPages')\"\n\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\n\t\t\t\tclass=\"col-10 m-0\">\n\t\t\t</aril-text>\n\t\t\t@if (filteredNodes().length > 0) {\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\n\t\t\t\t\t<fa-icon\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\n\t\t\t\t\t\tsize=\"xl\"\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\t(click)=\"expandAll()\">\n\t\t\t\t\t</fa-icon>\n\t\t\t\t\t<fa-icon\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\n\t\t\t\t\t\tsize=\"xl\"\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\t(click)=\"collapseAll()\">\n\t\t\t\t\t</fa-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\n\t\t<!-- Site Map Tree -->\n\t\t@if (filteredNodes().length > 0) {\n\t\t\t<div class=\"sitemap-tree\">\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\n\t\t\t\t\t<div class=\"tree-container\">\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</p-scrollPanel>\n\t\t\t</div>\n\t\t} @else {\n\t\t\t<div class=\"empty-state\">\n\t\t\t\t<div class=\"empty-content\">\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\n\t\t\t\t\t<h3 class=\"empty-title\">\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\n\t\t\t\t\t</h3>\n\t\t\t\t\t<p class=\"empty-message\">\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\n\t\t\t\t\t</p>\n\t\t\t\t\t@if (searchTerm()) {\n\t\t\t\t\t\t<aril-button\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\n\t\t\t\t\t\t\ticon=\"TIMES\"\n\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\n\t\t\t\t\t\t</aril-button>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\n\t\t<!-- Recursive Tree Node Template -->\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\n\t\t\t\t<div\n\t\t\t\t\tclass=\"node-item\"\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\n\t\t\t\t\t<div class=\"node-content\">\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (node.icon) {\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\n\n\t\t\t\t\t\t@if (node.routerLink) {\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Recursive Children -->\n\t\t\t\t@if (node.children && node.expanded) {\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\n\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</div>\n\t\t</ng-template>\n\t</div>\n</p-sidebar>\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"] }]
166
167
  }], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.TranslocoService }] });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFFdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7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LFNBQVM7aUNBQ0csSUFBSSxZQUNOLHNCQUFzQixXQUN2Qjt3QkFDUixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGlCQUFpQjtxQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgU2Nyb2xsUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Njcm9sbHBhbmVsJztcclxuaW1wb3J0IHsgU2lkZWJhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2lkZWJhcic7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5cclxuaW1wb3J0IHsgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvdGV4dCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUpzb25QaXBlIH0gZnJvbSAnYXJpbC91dGlsL3BpcGVzJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xyXG5pbXBvcnQgeyBzb2xpZEljb25zIH0gZnJvbSAnYXJpbC91dGlsL2xpYic7XHJcblxyXG5pbnRlcmZhY2UgTWVudU5vZGUge1xyXG5cdGtleTogc3RyaW5nO1xyXG5cdGxhYmVsOiBzdHJpbmcgfCBvYmplY3Q7XHJcblx0aWNvbj86IHN0cmluZztcclxuXHRyb3V0ZXJMaW5rPzogc3RyaW5nO1xyXG5cdGNoaWxkcmVuPzogTWVudU5vZGVbXTtcclxuXHRleHBhbmRlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcHAtc2l0ZS1tYXAtc2lkZWJhcicsXHJcblx0aW1wb3J0czogW1xyXG5cdFx0Q29tbW9uTW9kdWxlLFxyXG5cdFx0Rm9ybXNNb2R1bGUsXHJcblx0XHRSb3V0ZXJNb2R1bGUsXHJcblx0XHRTaWRlYmFyTW9kdWxlLFxyXG5cdFx0U2Nyb2xsUGFuZWxNb2R1bGUsXHJcblx0XHRUb29sdGlwTW9kdWxlLFxyXG5cdFx0QnV0dG9uQ29tcG9uZW50LFxyXG5cdFx0VGV4dENvbXBvbmVudCxcclxuXHRcdFRyYW5zbG9jb01vZHVsZSxcclxuXHRcdFRyYW5zbGF0ZUpzb25QaXBlLFxyXG5cdFx0Rm9udEF3ZXNvbWVNb2R1bGVcclxuXHRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9zaXRlLW1hcC1zaWRlYmFyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9zaXRlLW1hcC1zaWRlYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpdGVNYXBTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRzaXRlTWFwTm9kZXMgPSBzaWduYWw8TWVudU5vZGVbXT4oW10pO1xyXG5cdGZpbHRlcmVkTm9kZXMgPSBzaWduYWw8TWVudU5vZGVbXT4oW10pO1xyXG5cdHNlYXJjaFRlcm0gPSBzaWduYWw8c3RyaW5nPignJyk7XHJcblx0dG90YWxQYWdlcyA9IHNpZ25hbDxudW1iZXI+KDApO1xyXG4gIHNvbGlkSWNvbnMgPSBzb2xpZEljb25zO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlXHJcblx0KSB7fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMubG9hZFNpdGVNYXAoKTtcclxuXHR9XHJcblxyXG5cdGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zaXRlTWFwU2lkZWJhclZpc2libGU7XHJcblx0fVxyXG5cclxuXHRzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnNpdGVNYXBTaWRlYmFyVmlzaWJsZSA9IHZhbHVlO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBsb2FkU2l0ZU1hcCgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IG1lbnVJdGVtcyA9IGJyaWRnZS5ob3N0TWVudUl0ZW1zKCk7XHJcblx0XHRjb25zdCBub2RlcyA9IHRoaXMuYnVpbGRTaXRlTWFwTm9kZXMobWVudUl0ZW1zKTtcclxuXHRcdGNvbnN0IHRvdGFsQ291bnQgPSB0aGlzLmNvdW50VG90YWxQYWdlcyhub2Rlcyk7XHJcblxyXG5cdFx0dGhpcy5zaXRlTWFwTm9kZXMuc2V0KG5vZGVzKTtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQobm9kZXMpO1xyXG5cdFx0dGhpcy50b3RhbFBhZ2VzLnNldCh0b3RhbENvdW50KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYnVpbGRTaXRlTWFwTm9kZXMoaXRlbXM6IGFueVtdLCBwYXJlbnRLZXkgPSAnJyk6IE1lbnVOb2RlW10ge1xyXG5cdFx0cmV0dXJuIGl0ZW1zXHJcblx0XHRcdC5maWx0ZXIoKGl0ZW0pID0+IHtcclxuXHRcdFx0XHQvLyBLZWVwIHRoZSBob21lIHBhZ2Ugcm91dGUgKFwiL1wiKSBhbmQgYW55IG5vbi1lbXB0eSByb3V0ZXNcclxuXHRcdFx0XHRyZXR1cm4gIWl0ZW0ucm91dGVyTGluayB8fCBpdGVtLnJvdXRlckxpbmsgPT09ICcvJyB8fCBpdGVtLnJvdXRlckxpbmsudHJpbSgpICE9PSAnJztcclxuXHRcdFx0fSlcclxuXHRcdFx0Lm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCBrZXkgPSBwYXJlbnRLZXkgPyBgJHtwYXJlbnRLZXl9LSR7aW5kZXh9YCA6IGAke2luZGV4fWA7XHJcblxyXG5cdFx0XHRcdGxldCBsYWJlbDogc3RyaW5nIHwgb2JqZWN0O1xyXG5cdFx0XHRcdGlmIChpdGVtLnJvdXRlckxpbmsgPT09ICcvJykge1xyXG5cdFx0XHRcdFx0bGFiZWwgPSB7IHRyOiAnQW5hc2F5ZmEnLCBlbjogJ0hvbWUnIH07XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGxhYmVsID0gaXRlbS5sYWJlbCB8fCB7IHRyOiAnQmlsaW5tZXllbicsIGVuOiAnVW5rbm93bicgfTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGNvbnN0IG5vZGU6IE1lbnVOb2RlID0ge1xyXG5cdFx0XHRcdFx0a2V5LFxyXG5cdFx0XHRcdFx0bGFiZWwsXHJcblx0XHRcdFx0XHRpY29uOiBpdGVtLmljb24sXHJcblx0XHRcdFx0XHRyb3V0ZXJMaW5rOiBpdGVtLnJvdXRlckxpbmssXHJcblx0XHRcdFx0XHRleHBhbmRlZDogZmFsc2VcclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHRpZiAoaXRlbS5pdGVtcyAmJiBpdGVtLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdG5vZGUuY2hpbGRyZW4gPSB0aGlzLmJ1aWxkU2l0ZU1hcE5vZGVzKGl0ZW0uaXRlbXMsIGtleSk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRyZXR1cm4gbm9kZTtcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNvdW50VG90YWxQYWdlcyhub2RlczogTWVudU5vZGVbXSk6IG51bWJlciB7XHJcblx0XHRsZXQgY291bnQgPSAwO1xyXG5cdFx0Zm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcblx0XHRcdGlmIChub2RlLnJvdXRlckxpbmspIHtcclxuXHRcdFx0XHRjb3VudCsrO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChub2RlLmNoaWxkcmVuKSB7XHJcblx0XHRcdFx0Y291bnQgKz0gdGhpcy5jb3VudFRvdGFsUGFnZXMobm9kZS5jaGlsZHJlbik7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBjb3VudDtcclxuXHR9XHJcblxyXG5cdG9uU2VhcmNoQ2hhbmdlKCk6IHZvaWQge1xyXG5cdFx0Y29uc3Qgc2VhcmNoVGVybSA9IHRoaXMuc2VhcmNoVGVybSgpPy50b0xvd2VyQ2FzZSgpPy50cmltKCk7XHJcblx0XHRpZiAoIXNlYXJjaFRlcm0pIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldCh0aGlzLnNpdGVNYXBOb2RlcygpKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IGZpbHRlcmVkID0gdGhpcy5maWx0ZXJOb2Rlcyh0aGlzLnNpdGVNYXBOb2RlcygpLCBzZWFyY2hUZXJtKTtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChmaWx0ZXJlZCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZpbHRlck5vZGVzKG5vZGVzOiBNZW51Tm9kZVtdLCBzZWFyY2hUZXJtOiBzdHJpbmcpOiBNZW51Tm9kZVtdIHtcclxuXHRcdGNvbnN0IGZpbHRlcmVkOiBNZW51Tm9kZVtdID0gW107XHJcblx0XHRjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsb2NvU2VydmljZS5nZXRBY3RpdmVMYW5nKCk7XHJcblxyXG5cdFx0Zm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcblx0XHRcdC8vIENvbnZlcnQgbGFiZWwgdG8gc3RyaW5nIGZvciBzZWFyY2ggYmFzZWQgb24gYWN0aXZlIGxhbmd1YWdlXHJcblx0XHRcdGNvbnN0IGxhYmVsVGV4dCA9XHJcblx0XHRcdFx0dHlwZW9mIG5vZGUubGFiZWwgPT09ICdzdHJpbmcnID9cclxuXHRcdFx0XHRcdG5vZGUubGFiZWxcclxuXHRcdFx0XHQ6XHQobm9kZS5sYWJlbCBhcyBhbnkpPy5bY3VycmVudExhbmddIHx8IChub2RlLmxhYmVsIGFzIGFueSk/LnRyIHx8IChub2RlLmxhYmVsIGFzIGFueSk/LmVuIHx8ICcnO1xyXG5cclxuXHRcdFx0Y29uc3QgbWF0Y2hlcyA9IGxhYmVsVGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pO1xyXG5cdFx0XHRsZXQgZmlsdGVyZWRDaGlsZHJlbjogTWVudU5vZGVbXSA9IFtdO1xyXG5cclxuXHRcdFx0aWYgKG5vZGUuY2hpbGRyZW4pIHtcclxuXHRcdFx0XHRmaWx0ZXJlZENoaWxkcmVuID0gdGhpcy5maWx0ZXJOb2Rlcyhub2RlLmNoaWxkcmVuLCBzZWFyY2hUZXJtKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKG1hdGNoZXMgfHwgZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0ZmlsdGVyZWQucHVzaCh7XHJcblx0XHRcdFx0XHQuLi5ub2RlLFxyXG5cdFx0XHRcdFx0Y2hpbGRyZW46IGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoID4gMCA/IGZpbHRlcmVkQ2hpbGRyZW4gOiBub2RlLmNoaWxkcmVuLFxyXG5cdFx0XHRcdFx0ZXhwYW5kZWQ6IGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoID4gMFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGZpbHRlcmVkO1xyXG5cdH1cclxuXHJcblx0ZXhwYW5kQWxsKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgZXhwYW5kZWQgPSB0aGlzLmV4cGFuZE5vZGVzKHRoaXMuZmlsdGVyZWROb2RlcygpLCB0cnVlKTtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLmV4cGFuZGVkXSk7XHJcblx0fVxyXG5cclxuXHRjb2xsYXBzZUFsbCgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGNvbGxhcHNlZCA9IHRoaXMuZXhwYW5kTm9kZXModGhpcy5maWx0ZXJlZE5vZGVzKCksIGZhbHNlKTtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLmNvbGxhcHNlZF0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBleHBhbmROb2Rlcyhub2RlczogTWVudU5vZGVbXSwgZXhwYW5kZWQ6IGJvb2xlYW4pOiBNZW51Tm9kZVtdIHtcclxuXHRcdHJldHVybiBub2Rlcy5tYXAoKG5vZGUpID0+ICh7XHJcblx0XHRcdC4uLm5vZGUsXHJcblx0XHRcdGV4cGFuZGVkLFxyXG5cdFx0XHRjaGlsZHJlbjogbm9kZS5jaGlsZHJlbiA/IHRoaXMuZXhwYW5kTm9kZXMobm9kZS5jaGlsZHJlbiwgZXhwYW5kZWQpIDogdW5kZWZpbmVkXHJcblx0XHR9KSk7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVOb2RlKG5vZGU6IE1lbnVOb2RlKTogdm9pZCB7XHJcblx0XHRub2RlLmV4cGFuZGVkID0gIW5vZGUuZXhwYW5kZWQ7XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KFsuLi50aGlzLmZpbHRlcmVkTm9kZXMoKV0pO1xyXG5cdH1cclxuXHJcblx0dHJhY2tCeUtleShpbmRleDogbnVtYmVyLCBub2RlOiBNZW51Tm9kZSk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gbm9kZS5rZXkgfHwgYCR7aW5kZXh9YDtcclxuXHR9XHJcbn1cclxuIiwiPHAtc2lkZWJhclxyXG5cdFsodmlzaWJsZSldPVwidmlzaWJsZVwiXHJcblx0cG9zaXRpb249XCJyaWdodFwiXHJcblx0W3RyYW5zaXRpb25PcHRpb25zXT1cIicuM3MgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknXCJcclxuXHRzdHlsZUNsYXNzPVwibGF5b3V0LXNpdGVtYXAtc2lkZWJhciB3LWZ1bGwgc206dy0zMHJlbVwiXHJcblx0KnRyYW5zbG9jbz1cImxldCB0OyByZWFkOiAnc2l0ZU1hcCdcIj5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTIgdy1mdWxsXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG5cdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktc2l0ZW1hcCB0ZXh0LXByaW1hcnkgdGV4dC14bFwiPjwvaT5cclxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+e3sgdCgnc2l0ZU1hcCcpIH19PC9zcGFuPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwidG90YWwtcGFnZXNcIj57eyB0b3RhbFBhZ2VzKCkgfX0ge3sgdCgncGFnZXMnKSB9fTwvc3Bhbj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwic2l0ZW1hcC1jb250ZW50XCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwic2VhcmNoLXNlY3Rpb24gZ3JpZCBwLWZsdWlkIG0tMFwiPlxyXG5cdFx0XHQ8YXJpbC10ZXh0XHJcblx0XHRcdFx0W3BsYWNlaG9sZGVyXT1cInQoJ3NlYXJjaFBhZ2VzJylcIlxyXG5cdFx0XHRcdFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXHJcblx0XHRcdFx0KG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoKVwiXHJcblx0XHRcdFx0Y2xhc3M9XCJjb2wtMTAgbS0wXCI+XHJcblx0XHRcdDwvYXJpbC10ZXh0PlxyXG5cdFx0XHRAaWYgKGZpbHRlcmVkTm9kZXMoKS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtMiBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtLTAgcC0wXCI+XHJcblx0XHRcdFx0XHQ8ZmEtaWNvblxyXG5cdFx0XHRcdFx0XHRbaWNvbl09XCJzb2xpZEljb25zLmZhQW5nbGVzRG93blwiXHJcblx0XHRcdFx0XHRcdHNpemU9XCJ4bFwiXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwiY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpXCJcclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJjb2wtMSBjdXJzb3ItcG9pbnRlclwiXHJcblx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCdleHBhbmRBbGwnKVwiXHJcblx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcblx0XHRcdFx0XHRcdChjbGljayk9XCJleHBhbmRBbGwoKVwiPlxyXG5cdFx0XHRcdFx0PC9mYS1pY29uPlxyXG5cdFx0XHRcdFx0PGZhLWljb25cclxuXHRcdFx0XHRcdFx0W2ljb25dPVwic29saWRJY29ucy5mYUFuZ2xlc1VwXCJcclxuXHRcdFx0XHRcdFx0c2l6ZT1cInhsXCJcclxuXHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogdmFyKC0tcmVkLTUwMClcIlxyXG5cdFx0XHRcdFx0XHRjbGFzcz1cImNvbC0xIG1sLTMgY3Vyc29yLXBvaW50ZXJcIlxyXG5cdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwidCgnY29sbGFwc2VBbGwnKVwiXHJcblx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcblx0XHRcdFx0XHRcdChjbGljayk9XCJjb2xsYXBzZUFsbCgpXCI+XHJcblx0XHRcdFx0XHQ8L2ZhLWljb24+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdH1cclxuXHRcdDwvZGl2PlxyXG5cclxuXHRcdDwhLS0gU2l0ZSBNYXAgVHJlZSAtLT5cclxuXHRcdEBpZiAoZmlsdGVyZWROb2RlcygpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cInNpdGVtYXAtdHJlZVwiPlxyXG5cdFx0XHRcdDxwLXNjcm9sbFBhbmVsIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnIH1cIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0cmVlLWNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdFx0XHRAZm9yIChub2RlIG9mIGZpbHRlcmVkTm9kZXMoKTsgdHJhY2sgdHJhY2tCeUtleSgkaW5kZXgsIG5vZGUpKSB7XHJcblx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVOb2RlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2RlLCBsZXZlbDogMCB9XCI+PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvcC1zY3JvbGxQYW5lbD5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9IEBlbHNlIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImVtcHR5LWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktc2l0ZW1hcCBlbXB0eS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0PGgzIGNsYXNzPVwiZW1wdHktdGl0bGVcIj5cclxuXHRcdFx0XHRcdFx0e3sgc2VhcmNoVGVybSgpID8gdCgnbm9TZWFyY2hSZXN1bHRzJykgOiB0KCdub1BhZ2VzJykgfX1cclxuXHRcdFx0XHRcdDwvaDM+XHJcblx0XHRcdFx0XHQ8cCBjbGFzcz1cImVtcHR5LW1lc3NhZ2VcIj5cclxuXHRcdFx0XHRcdFx0e3sgc2VhcmNoVGVybSgpID8gdCgndHJ5RGlmZmVyZW50S2V5d29yZHMnKSA6ICcnIH19XHJcblx0XHRcdFx0XHQ8L3A+XHJcblx0XHRcdFx0XHRAaWYgKHNlYXJjaFRlcm0oKSkge1xyXG5cdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRbbGFiZWxdPVwidCgnY2xlYXJTZWFyY2gnKVwiXHJcblx0XHRcdFx0XHRcdFx0aWNvbj1cIlRJTUVTXCJcclxuXHRcdFx0XHRcdFx0XHRjb2xvcj1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRcdFx0W291dGxpbmVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrRXZlbnQpPVwic2VhcmNoVGVybS5zZXQoJycpOyBvblNlYXJjaENoYW5nZSgpXCI+XHJcblx0XHRcdFx0XHRcdDwvYXJpbC1idXR0b24+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fVxyXG5cclxuXHRcdDwhLS0gUmVjdXJzaXZlIFRyZWUgTm9kZSBUZW1wbGF0ZSAtLT5cclxuXHRcdDxuZy10ZW1wbGF0ZSAjdHJlZU5vZGVUZW1wbGF0ZSBsZXQtbm9kZSBsZXQtbGV2ZWw9XCJsZXZlbFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwidHJlZS1ub2RlXCIgW3N0eWxlLm1hcmdpbi1sZWZ0LnB4XT1cImxldmVsICogMjBcIj5cclxuXHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRjbGFzcz1cIm5vZGUtaXRlbVwiXHJcblx0XHRcdFx0XHRbY2xhc3MuaGFzLWNoaWxkcmVuXT1cIm5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5pcy1wYWdlXT1cIm5vZGUucm91dGVyTGlua1wiXHJcblx0XHRcdFx0XHRbcm91dGVyTGlua109XCJub2RlLnJvdXRlckxpbmtcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIiFub2RlLnJvdXRlckxpbmsgPyB0b2dnbGVOb2RlKG5vZGUpIDogKHZpc2libGUgPSBmYWxzZSlcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJub2RlLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0b2dnbGUtYnRuXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlTm9kZShub2RlKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaVwiIFtjbGFzcy5waS1jaGV2cm9uLXJpZ2h0XT1cIiFub2RlLmV4cGFuZGVkXCIgW2NsYXNzLnBpLWNoZXZyb24tZG93bl09XCJub2RlLmV4cGFuZGVkXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuaWNvbikge1xyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwibm9kZS1pY29uXCIgW2NsYXNzXT1cIm5vZGUuaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5vZGUtbGFiZWxcIj57eyBub2RlLmxhYmVsIHwgdHJhbnNsYXRlSnNvbiB9fTwvc3Bhbj5cclxuXHJcblx0XHRcdFx0XHRcdEBpZiAobm9kZS5yb3V0ZXJMaW5rKSB7XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJleHRlcm5hbC1pY29uIHBpIHBpLWV4dGVybmFsLWxpbmtcIj48L2k+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0XHQ8IS0tIFJlY3Vyc2l2ZSBDaGlsZHJlbiAtLT5cclxuXHRcdFx0XHRAaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5leHBhbmRlZCkge1xyXG5cdFx0XHRcdFx0QGZvciAoY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbjsgdHJhY2sgdHJhY2tCeUtleSgkaW5kZXgsIGNoaWxkKSkge1xyXG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyXHJcblx0XHRcdFx0XHRcdFx0Km5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmVlTm9kZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY2hpbGQsIGxldmVsOiBsZXZlbCArIDEgfVwiPjwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdDwvZGl2PlxyXG48L3Atc2lkZWJhcj5cclxuIl19
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFFdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7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LHNYQUNiLGVBQWUsOE5BQ2YsYUFBYSxrTEFDYixlQUFlLDROQUNmLGlCQUFpQixxREFDakIsaUJBQWlCOzsyRkFLTix1QkFBdUI7a0JBbkJuQyxTQUFTO2lDQUNHLElBQUksWUFDTixzQkFBc0IsV0FDdkI7d0JBQ1IsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixpQkFBaUI7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFNjcm9sbFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zY3JvbGxwYW5lbCc7XHJcbmltcG9ydCB7IFNpZGViYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3NpZGViYXInO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdhcmlsL3VpL2J1dHRvbic7XHJcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICdhcmlsL3VpL3RleHQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVKc29uUGlwZSB9IGZyb20gJ2FyaWwvdXRpbC9waXBlcyc7XHJcblxyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb250QXdlc29tZU1vZHVsZSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcclxuaW1wb3J0IHsgc29saWRJY29ucyB9IGZyb20gJ2FyaWwvdXRpbC9saWInO1xyXG5cclxuaW50ZXJmYWNlIE1lbnVOb2RlIHtcclxuXHRrZXk6IHN0cmluZztcclxuXHRsYWJlbDogc3RyaW5nIHwgb2JqZWN0O1xyXG5cdGljb24/OiBzdHJpbmc7XHJcblx0cm91dGVyTGluaz86IHN0cmluZztcclxuXHRjaGlsZHJlbj86IE1lbnVOb2RlW107XHJcblx0ZXhwYW5kZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXBwLXNpdGUtbWFwLXNpZGViYXInLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdENvbW1vbk1vZHVsZSxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0Um91dGVyTW9kdWxlLFxyXG5cdFx0U2lkZWJhck1vZHVsZSxcclxuXHRcdFNjcm9sbFBhbmVsTW9kdWxlLFxyXG5cdFx0VG9vbHRpcE1vZHVsZSxcclxuXHRcdEJ1dHRvbkNvbXBvbmVudCxcclxuXHRcdFRleHRDb21wb25lbnQsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRUcmFuc2xhdGVKc29uUGlwZSxcclxuXHRcdEZvbnRBd2Vzb21lTW9kdWxlXHJcblx0XSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaXRlTWFwU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0c2l0ZU1hcE5vZGVzID0gc2lnbmFsPE1lbnVOb2RlW10+KFtdKTtcclxuXHRmaWx0ZXJlZE5vZGVzID0gc2lnbmFsPE1lbnVOb2RlW10+KFtdKTtcclxuXHRzZWFyY2hUZXJtID0gc2lnbmFsPHN0cmluZz4oJycpO1xyXG5cdHRvdGFsUGFnZXMgPSBzaWduYWw8bnVtYmVyPigwKTtcclxuICBzb2xpZEljb25zID0gc29saWRJY29ucztcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHByaXZhdGUgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZVxyXG5cdCkge31cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRTaXRlTWFwKCk7XHJcblx0fVxyXG5cclxuXHRnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2l0ZU1hcFNpZGViYXJWaXNpYmxlO1xyXG5cdH1cclxuXHJcblx0c2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zaXRlTWFwU2lkZWJhclZpc2libGUgPSB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgbG9hZFNpdGVNYXAoKTogdm9pZCB7XHJcblx0XHRjb25zdCBtZW51SXRlbXMgPSBicmlkZ2UuaG9zdE1lbnVJdGVtcygpO1xyXG5cdFx0Y29uc3Qgbm9kZXMgPSB0aGlzLmJ1aWxkU2l0ZU1hcE5vZGVzKG1lbnVJdGVtcyk7XHJcblx0XHRjb25zdCB0b3RhbENvdW50ID0gdGhpcy5jb3VudFRvdGFsUGFnZXMobm9kZXMpO1xyXG5cclxuXHRcdHRoaXMuc2l0ZU1hcE5vZGVzLnNldChub2Rlcyk7XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KG5vZGVzKTtcclxuXHRcdHRoaXMudG90YWxQYWdlcy5zZXQodG90YWxDb3VudCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGJ1aWxkU2l0ZU1hcE5vZGVzKGl0ZW1zOiBhbnlbXSwgcGFyZW50S2V5ID0gJycpOiBNZW51Tm9kZVtdIHtcclxuXHRcdHJldHVybiBpdGVtc1xyXG5cdFx0XHQuZmlsdGVyKChpdGVtKSA9PiB7XHJcblx0XHRcdFx0Ly8gS2VlcCB0aGUgaG9tZSBwYWdlIHJvdXRlIChcIi9cIikgYW5kIGFueSBub24tZW1wdHkgcm91dGVzXHJcblx0XHRcdFx0cmV0dXJuICFpdGVtLnJvdXRlckxpbmsgfHwgaXRlbS5yb3V0ZXJMaW5rID09PSAnLycgfHwgaXRlbS5yb3V0ZXJMaW5rLnRyaW0oKSAhPT0gJyc7XHJcblx0XHRcdH0pXHJcblx0XHRcdC5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qga2V5ID0gcGFyZW50S2V5ID8gYCR7cGFyZW50S2V5fS0ke2luZGV4fWAgOiBgJHtpbmRleH1gO1xyXG5cclxuXHRcdFx0XHRsZXQgbGFiZWw6IHN0cmluZyB8IG9iamVjdDtcclxuXHRcdFx0XHRpZiAoaXRlbS5yb3V0ZXJMaW5rID09PSAnLycpIHtcclxuXHRcdFx0XHRcdGxhYmVsID0geyB0cjogJ0FuYXNheWZhJywgZW46ICdIb21lJyB9O1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRsYWJlbCA9IGl0ZW0ubGFiZWwgfHwgeyB0cjogJ0JpbGlubWV5ZW4nLCBlbjogJ1Vua25vd24nIH07XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRjb25zdCBub2RlOiBNZW51Tm9kZSA9IHtcclxuXHRcdFx0XHRcdGtleSxcclxuXHRcdFx0XHRcdGxhYmVsLFxyXG5cdFx0XHRcdFx0aWNvbjogaXRlbS5pY29uLFxyXG5cdFx0XHRcdFx0cm91dGVyTGluazogaXRlbS5yb3V0ZXJMaW5rLFxyXG5cdFx0XHRcdFx0ZXhwYW5kZWQ6IGZhbHNlXHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0aWYgKGl0ZW0uaXRlbXMgJiYgaXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRub2RlLmNoaWxkcmVuID0gdGhpcy5idWlsZFNpdGVNYXBOb2RlcyhpdGVtLml0ZW1zLCBrZXkpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0cmV0dXJuIG5vZGU7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjb3VudFRvdGFsUGFnZXMobm9kZXM6IE1lbnVOb2RlW10pOiBudW1iZXIge1xyXG5cdFx0bGV0IGNvdW50ID0gMDtcclxuXHRcdGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG5cdFx0XHRpZiAobm9kZS5yb3V0ZXJMaW5rKSB7XHJcblx0XHRcdFx0Y291bnQrKztcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAobm9kZS5jaGlsZHJlbikge1xyXG5cdFx0XHRcdGNvdW50ICs9IHRoaXMuY291bnRUb3RhbFBhZ2VzKG5vZGUuY2hpbGRyZW4pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY291bnQ7XHJcblx0fVxyXG5cclxuXHRvblNlYXJjaENoYW5nZSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHRcdGNvbnN0IHNlYXJjaFRlcm0gPSB0aGlzLnNlYXJjaFRlcm0oKT8udG9Mb2NhbGVMb3dlckNhc2UoY3VycmVudExhbmcpPy50cmltKCk7XHJcblx0XHRpZiAoIXNlYXJjaFRlcm0pIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldCh0aGlzLnNpdGVNYXBOb2RlcygpKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IGZpbHRlcmVkID0gdGhpcy5maWx0ZXJOb2Rlcyh0aGlzLnNpdGVNYXBOb2RlcygpLCBzZWFyY2hUZXJtKTtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChmaWx0ZXJlZCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZpbHRlck5vZGVzKG5vZGVzOiBNZW51Tm9kZVtdLCBzZWFyY2hUZXJtOiBzdHJpbmcpOiBNZW51Tm9kZVtdIHtcclxuXHRcdGNvbnN0IGZpbHRlcmVkOiBNZW51Tm9kZVtdID0gW107XHJcblx0XHRjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsb2NvU2VydmljZS5nZXRBY3RpdmVMYW5nKCk7XHJcblxyXG5cdFx0Zm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcblx0XHRcdC8vIENvbnZlcnQgbGFiZWwgdG8gc3RyaW5nIGZvciBzZWFyY2ggYmFzZWQgb24gYWN0aXZlIGxhbmd1YWdlXHJcblx0XHRcdGNvbnN0IGxhYmVsVGV4dCA9XHJcblx0XHRcdFx0dHlwZW9mIG5vZGUubGFiZWwgPT09ICdzdHJpbmcnID9cclxuXHRcdFx0XHRcdG5vZGUubGFiZWxcclxuXHRcdFx0XHQ6XHQobm9kZS5sYWJlbCBhcyBhbnkpPy5bY3VycmVudExhbmddIHx8IChub2RlLmxhYmVsIGFzIGFueSk/LnRyIHx8IChub2RlLmxhYmVsIGFzIGFueSk/LmVuIHx8ICcnO1xyXG5cclxuXHRcdFx0Y29uc3QgbWF0Y2hlcyA9IGxhYmVsVGV4dC50b0xvY2FsZUxvd2VyQ2FzZShjdXJyZW50TGFuZykuaW5jbHVkZXMoc2VhcmNoVGVybSk7XHJcblx0XHRcdGxldCBmaWx0ZXJlZENoaWxkcmVuOiBNZW51Tm9kZVtdID0gW107XHJcblxyXG5cdFx0XHRpZiAobm9kZS5jaGlsZHJlbikge1xyXG5cdFx0XHRcdGZpbHRlcmVkQ2hpbGRyZW4gPSB0aGlzLmZpbHRlck5vZGVzKG5vZGUuY2hpbGRyZW4sIHNlYXJjaFRlcm0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAobWF0Y2hlcyB8fCBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRmaWx0ZXJlZC5wdXNoKHtcclxuXHRcdFx0XHRcdC4uLm5vZGUsXHJcblx0XHRcdFx0XHRjaGlsZHJlbjogZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwID8gZmlsdGVyZWRDaGlsZHJlbiA6IG5vZGUuY2hpbGRyZW4sXHJcblx0XHRcdFx0XHRleHBhbmRlZDogZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmlsdGVyZWQ7XHJcblx0fVxyXG5cclxuXHRleHBhbmRBbGwoKTogdm9pZCB7XHJcblx0XHRjb25zdCBleHBhbmRlZCA9IHRoaXMuZXhwYW5kTm9kZXModGhpcy5maWx0ZXJlZE5vZGVzKCksIHRydWUpO1xyXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChbLi4uZXhwYW5kZWRdKTtcclxuXHR9XHJcblxyXG5cdGNvbGxhcHNlQWxsKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgY29sbGFwc2VkID0gdGhpcy5leHBhbmROb2Rlcyh0aGlzLmZpbHRlcmVkTm9kZXMoKSwgZmFsc2UpO1xyXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChbLi4uY29sbGFwc2VkXSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGV4cGFuZE5vZGVzKG5vZGVzOiBNZW51Tm9kZVtdLCBleHBhbmRlZDogYm9vbGVhbik6IE1lbnVOb2RlW10ge1xyXG5cdFx0cmV0dXJuIG5vZGVzLm1hcCgobm9kZSkgPT4gKHtcclxuXHRcdFx0Li4ubm9kZSxcclxuXHRcdFx0ZXhwYW5kZWQsXHJcblx0XHRcdGNoaWxkcmVuOiBub2RlLmNoaWxkcmVuID8gdGhpcy5leHBhbmROb2Rlcyhub2RlLmNoaWxkcmVuLCBleHBhbmRlZCkgOiB1bmRlZmluZWRcclxuXHRcdH0pKTtcclxuXHR9XHJcblxyXG5cdHRvZ2dsZU5vZGUobm9kZTogTWVudU5vZGUpOiB2b2lkIHtcclxuXHRcdG5vZGUuZXhwYW5kZWQgPSAhbm9kZS5leHBhbmRlZDtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLnRoaXMuZmlsdGVyZWROb2RlcygpXSk7XHJcblx0fVxyXG5cclxuXHR0cmFja0J5S2V5KGluZGV4OiBudW1iZXIsIG5vZGU6IE1lbnVOb2RlKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBub2RlLmtleSB8fCBgJHtpbmRleH1gO1xyXG5cdH1cclxufVxyXG4iLCI8cC1zaWRlYmFyXG5cdFsodmlzaWJsZSldPVwidmlzaWJsZVwiXG5cdHBvc2l0aW9uPVwicmlnaHRcIlxuXHRbdHJhbnNpdGlvbk9wdGlvbnNdPVwiJy4zcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSdcIlxuXHRzdHlsZUNsYXNzPVwibGF5b3V0LXNpdGVtYXAtc2lkZWJhciB3LWZ1bGwgc206dy0zMHJlbVwiXG5cdCp0cmFuc2xvY289XCJsZXQgdDsgcmVhZDogJ3NpdGVNYXAnXCI+XG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cblx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTIgdy1mdWxsXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cblx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1zaXRlbWFwIHRleHQtcHJpbWFyeSB0ZXh0LXhsXCI+PC9pPlxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+e3sgdCgnc2l0ZU1hcCcpIH19PC9zcGFuPlxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRvdGFsLXBhZ2VzXCI+e3sgdG90YWxQYWdlcygpIH19IHt7IHQoJ3BhZ2VzJykgfX08L3NwYW4+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9uZy10ZW1wbGF0ZT5cblxuXHQ8ZGl2IGNsYXNzPVwic2l0ZW1hcC1jb250ZW50XCI+XG5cdFx0PGRpdiBjbGFzcz1cInNlYXJjaC1zZWN0aW9uIGdyaWQgcC1mbHVpZCBtLTBcIj5cblx0XHRcdDxhcmlsLXRleHRcblx0XHRcdFx0W3BsYWNlaG9sZGVyXT1cInQoJ3NlYXJjaFBhZ2VzJylcIlxuXHRcdFx0XHRbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxuXHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgpXCJcblx0XHRcdFx0Y2xhc3M9XCJjb2wtMTAgbS0wXCI+XG5cdFx0XHQ8L2FyaWwtdGV4dD5cblx0XHRcdEBpZiAoZmlsdGVyZWROb2RlcygpLmxlbmd0aCA+IDApIHtcblx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtMiBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtLTAgcC0wXCI+XG5cdFx0XHRcdFx0PGZhLWljb25cblx0XHRcdFx0XHRcdFtpY29uXT1cInNvbGlkSWNvbnMuZmFBbmdsZXNEb3duXCJcblx0XHRcdFx0XHRcdHNpemU9XCJ4bFwiXG5cdFx0XHRcdFx0XHRzdHlsZT1cImNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKVwiXG5cdFx0XHRcdFx0XHRjbGFzcz1cImNvbC0xIGN1cnNvci1wb2ludGVyXCJcblx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCdleHBhbmRBbGwnKVwiXG5cdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cImV4cGFuZEFsbCgpXCI+XG5cdFx0XHRcdFx0PC9mYS1pY29uPlxuXHRcdFx0XHRcdDxmYS1pY29uXG5cdFx0XHRcdFx0XHRbaWNvbl09XCJzb2xpZEljb25zLmZhQW5nbGVzVXBcIlxuXHRcdFx0XHRcdFx0c2l6ZT1cInhsXCJcblx0XHRcdFx0XHRcdHN0eWxlPVwiY29sb3I6IHZhcigtLXJlZC01MDApXCJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY29sLTEgbWwtMyBjdXJzb3ItcG9pbnRlclwiXG5cdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwidCgnY29sbGFwc2VBbGwnKVwiXG5cdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cImNvbGxhcHNlQWxsKClcIj5cblx0XHRcdFx0XHQ8L2ZhLWljb24+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0fVxuXHRcdDwvZGl2PlxuXG5cdFx0PCEtLSBTaXRlIE1hcCBUcmVlIC0tPlxuXHRcdEBpZiAoZmlsdGVyZWROb2RlcygpLmxlbmd0aCA+IDApIHtcblx0XHRcdDxkaXYgY2xhc3M9XCJzaXRlbWFwLXRyZWVcIj5cblx0XHRcdFx0PHAtc2Nyb2xsUGFuZWwgW3N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfVwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0cmVlLWNvbnRhaW5lclwiPlxuXHRcdFx0XHRcdFx0QGZvciAobm9kZSBvZiBmaWx0ZXJlZE5vZGVzKCk7IHRyYWNrIHRyYWNrQnlLZXkoJGluZGV4LCBub2RlKSkge1xuXHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZU5vZGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUsIGxldmVsOiAwIH1cIj48L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9wLXNjcm9sbFBhbmVsPlxuXHRcdFx0PC9kaXY+XG5cdFx0fSBAZWxzZSB7XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImVtcHR5LWNvbnRlbnRcIj5cblx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLXNpdGVtYXAgZW1wdHktaWNvblwiPjwvaT5cblx0XHRcdFx0XHQ8aDMgY2xhc3M9XCJlbXB0eS10aXRsZVwiPlxuXHRcdFx0XHRcdFx0e3sgc2VhcmNoVGVybSgpID8gdCgnbm9TZWFyY2hSZXN1bHRzJykgOiB0KCdub1BhZ2VzJykgfX1cblx0XHRcdFx0XHQ8L2gzPlxuXHRcdFx0XHRcdDxwIGNsYXNzPVwiZW1wdHktbWVzc2FnZVwiPlxuXHRcdFx0XHRcdFx0e3sgc2VhcmNoVGVybSgpID8gdCgndHJ5RGlmZmVyZW50S2V5d29yZHMnKSA6ICcnIH19XG5cdFx0XHRcdFx0PC9wPlxuXHRcdFx0XHRcdEBpZiAoc2VhcmNoVGVybSgpKSB7XG5cdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cblx0XHRcdFx0XHRcdFx0W2xhYmVsXT1cInQoJ2NsZWFyU2VhcmNoJylcIlxuXHRcdFx0XHRcdFx0XHRpY29uPVwiVElNRVNcIlxuXHRcdFx0XHRcdFx0XHRjb2xvcj1cInNlY29uZGFyeVwiXG5cdFx0XHRcdFx0XHRcdFtvdXRsaW5lZF09XCJ0cnVlXCJcblx0XHRcdFx0XHRcdFx0c2l6ZT1cInNtXCJcblx0XHRcdFx0XHRcdFx0KGNsaWNrRXZlbnQpPVwic2VhcmNoVGVybS5zZXQoJycpOyBvblNlYXJjaENoYW5nZSgpXCI+XG5cdFx0XHRcdFx0XHQ8L2FyaWwtYnV0dG9uPlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHR9XG5cblx0XHQ8IS0tIFJlY3Vyc2l2ZSBUcmVlIE5vZGUgVGVtcGxhdGUgLS0+XG5cdFx0PG5nLXRlbXBsYXRlICN0cmVlTm9kZVRlbXBsYXRlIGxldC1ub2RlIGxldC1sZXZlbD1cImxldmVsXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwidHJlZS1ub2RlXCIgW3N0eWxlLm1hcmdpbi1sZWZ0LnB4XT1cImxldmVsICogMjBcIj5cblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdGNsYXNzPVwibm9kZS1pdGVtXCJcblx0XHRcdFx0XHRbY2xhc3MuaGFzLWNoaWxkcmVuXT1cIm5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwXCJcblx0XHRcdFx0XHRbY2xhc3MuaXMtcGFnZV09XCJub2RlLnJvdXRlckxpbmtcIlxuXHRcdFx0XHRcdFtyb3V0ZXJMaW5rXT1cIm5vZGUucm91dGVyTGlua1wiXG5cdFx0XHRcdFx0KGNsaWNrKT1cIiFub2RlLnJvdXRlckxpbmsgPyB0b2dnbGVOb2RlKG5vZGUpIDogKHZpc2libGUgPSBmYWxzZSlcIj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibm9kZS1jb250ZW50XCI+XG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0b2dnbGUtYnRuXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlTm9kZShub2RlKVwiPlxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGlcIiBbY2xhc3MucGktY2hldnJvbi1yaWdodF09XCIhbm9kZS5leHBhbmRlZFwiIFtjbGFzcy5waS1jaGV2cm9uLWRvd25dPVwibm9kZS5leHBhbmRlZFwiPjwvaT5cblx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdEBpZiAobm9kZS5pY29uKSB7XG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwibm9kZS1pY29uXCIgW2NsYXNzXT1cIm5vZGUuaWNvblwiPjwvaT5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibm9kZS1sYWJlbFwiPnt7IG5vZGUubGFiZWwgfCB0cmFuc2xhdGVKc29uIH19PC9zcGFuPlxuXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUucm91dGVyTGluaykge1xuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImV4dGVybmFsLWljb24gcGkgcGktZXh0ZXJuYWwtbGlua1wiPjwvaT5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cblx0XHRcdFx0PCEtLSBSZWN1cnNpdmUgQ2hpbGRyZW4gLS0+XG5cdFx0XHRcdEBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmV4cGFuZGVkKSB7XG5cdFx0XHRcdFx0QGZvciAoY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbjsgdHJhY2sgdHJhY2tCeUtleSgkaW5kZXgsIGNoaWxkKSkge1xuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lclxuXHRcdFx0XHRcdFx0XHQqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVOb2RlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjaGlsZCwgbGV2ZWw6IGxldmVsICsgMSB9XCI+PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHQ8L2Rpdj5cbjwvcC1zaWRlYmFyPlxuIl19