asp-lib 1.1.5 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/assign-roles/assign-roles.component.mjs +48 -18
- package/esm2022/lib/role-menu-options/role-menu-options.component.mjs +34 -47
- package/fesm2022/asp-lib.mjs +85 -69
- package/fesm2022/asp-lib.mjs.map +1 -1
- package/lib/assign-roles/assign-roles.component.d.ts +10 -6
- package/lib/role-menu-options/role-menu-options.component.d.ts +3 -2
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ import { CdkDropList } from '@angular/cdk/drag-drop';
|
|
|
2
2
|
import { Component, Inject, ViewChild } from '@angular/core';
|
|
3
3
|
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
4
4
|
import { FormControl } from '@angular/forms';
|
|
5
|
+
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "@angular/material/dialog";
|
|
7
8
|
import * as i2 from "../services/security-admin.service";
|
|
@@ -18,22 +19,16 @@ const entityNames = {
|
|
|
18
19
|
User: "Usuario"
|
|
19
20
|
};
|
|
20
21
|
export class AssignRolesComponent {
|
|
21
|
-
get dragOptions() {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
removeRole(role) {
|
|
25
|
-
this.assigned.delete(role.id);
|
|
22
|
+
get dragOptions() {
|
|
23
|
+
// Roles disponibles (filtrados y no asignados)
|
|
24
|
+
return this.filteredAvailableRoles.filter(role => !this.assigned.has(role.id)) ?? [];
|
|
26
25
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
// this.dragDropField?.control.setValue(this.dragDropField?.options?.filter(option => this.assigned.has(option.id)) ?? []);
|
|
31
|
-
// this.dragDropField?.control.setValue(this.dragDropField.control.value?.push?.(event.item.data))
|
|
32
|
-
}
|
|
33
|
-
this.setDropHover(false);
|
|
26
|
+
get droppedItems() {
|
|
27
|
+
// Roles asignados (NO filtrados - siempre muestra todos los asignados)
|
|
28
|
+
return this.allRoles.filter(role => this.assigned.has(role.id)) ?? [];
|
|
34
29
|
}
|
|
35
|
-
|
|
36
|
-
this.
|
|
30
|
+
get entityName() {
|
|
31
|
+
return ` - ${entityNames[this.entity.entityType]}`;
|
|
37
32
|
}
|
|
38
33
|
constructor(dialogRef, data, securityAdminService, snackbar) {
|
|
39
34
|
this.dialogRef = dialogRef;
|
|
@@ -41,7 +36,8 @@ export class AssignRolesComponent {
|
|
|
41
36
|
this.securityAdminService = securityAdminService;
|
|
42
37
|
this.snackbar = snackbar;
|
|
43
38
|
this.theme = 'default';
|
|
44
|
-
this.
|
|
39
|
+
this.allRoles = []; // Lista completa de todos los roles
|
|
40
|
+
this.filteredAvailableRoles = []; // Lista filtrada de roles disponibles
|
|
45
41
|
this.dropHover = false;
|
|
46
42
|
this.assigned = new Set([]);
|
|
47
43
|
this.search = new FormControl('');
|
|
@@ -60,6 +56,35 @@ export class AssignRolesComponent {
|
|
|
60
56
|
this.loadRoleOptions();
|
|
61
57
|
this.loadAssignedRoles();
|
|
62
58
|
}
|
|
59
|
+
ngOnInit() {
|
|
60
|
+
// Configurar el filtrado en tiempo real
|
|
61
|
+
this.search.valueChanges.pipe(debounceTime(300), distinctUntilChanged()).subscribe(searchTerm => {
|
|
62
|
+
this.filterAvailableRoles(searchTerm || '');
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
filterAvailableRoles(searchTerm) {
|
|
66
|
+
if (!searchTerm.trim()) {
|
|
67
|
+
// Si no hay término de búsqueda, mostrar todos los roles disponibles
|
|
68
|
+
this.filteredAvailableRoles = [...this.allRoles];
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// Filtrar SOLO los roles disponibles por name (case insensitive)
|
|
72
|
+
const term = searchTerm.toLowerCase();
|
|
73
|
+
this.filteredAvailableRoles = this.allRoles.filter(role => role.name?.toLowerCase().includes(term));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
removeRole(role) {
|
|
77
|
+
this.assigned.delete(role.id);
|
|
78
|
+
}
|
|
79
|
+
drop(event) {
|
|
80
|
+
if (!(event.previousContainer === event.container)) {
|
|
81
|
+
this.assigned.add(event.item.data?.id);
|
|
82
|
+
}
|
|
83
|
+
this.setDropHover(false);
|
|
84
|
+
}
|
|
85
|
+
setDropHover(value) {
|
|
86
|
+
this.dropHover = value;
|
|
87
|
+
}
|
|
63
88
|
loadAssignedRoles() {
|
|
64
89
|
this.loadingSelection = true;
|
|
65
90
|
this.securityAdminService.getAssignedRoles(this.entity.id, this.entity.entityType).subscribe({
|
|
@@ -91,14 +116,18 @@ export class AssignRolesComponent {
|
|
|
91
116
|
completeRoles.push(role);
|
|
92
117
|
}
|
|
93
118
|
if (completeRoles.length === response.load.length) {
|
|
94
|
-
|
|
119
|
+
const sortedRoles = completeRoles.sort((a, b) => a.name.localeCompare(b.name));
|
|
120
|
+
this.allRoles = [...sortedRoles]; // Lista completa
|
|
121
|
+
this.filteredAvailableRoles = [...sortedRoles]; // Inicialmente mostrar todos
|
|
95
122
|
this.loadingOptions = false;
|
|
96
123
|
}
|
|
97
124
|
},
|
|
98
125
|
error: () => {
|
|
99
126
|
completeRoles.push(role);
|
|
100
127
|
if (completeRoles.length === response.load.length) {
|
|
101
|
-
|
|
128
|
+
const sortedRoles = completeRoles.sort((a, b) => a.name.localeCompare(b.name));
|
|
129
|
+
this.allRoles = [...sortedRoles]; // Lista completa
|
|
130
|
+
this.filteredAvailableRoles = [...sortedRoles]; // Inicialmente mostrar todos
|
|
102
131
|
this.loadingOptions = false;
|
|
103
132
|
}
|
|
104
133
|
}
|
|
@@ -129,6 +158,7 @@ export class AssignRolesComponent {
|
|
|
129
158
|
});
|
|
130
159
|
}
|
|
131
160
|
onClose() {
|
|
161
|
+
this.search.setValue(''); // Limpiar búsqueda al cerrar
|
|
132
162
|
this.dialogRef.close();
|
|
133
163
|
}
|
|
134
164
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssignRolesComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.SecurityAdminService }, { token: i3.SnackbarService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -147,4 +177,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
147
177
|
type: ViewChild,
|
|
148
178
|
args: ['dragOptionsList']
|
|
149
179
|
}] } });
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduLXJvbGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9hc3NpZ24tcm9sZXMvYXNzaWduLXJvbGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9hc3NpZ24tcm9sZXMvYXNzaWduLXJvbGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUl6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7OztBQVM3QyxNQUFNLFdBQVcsR0FBRztJQUNuQixRQUFRLEVBQUUsU0FBUztJQUNuQixJQUFJLEVBQUUsU0FBUztDQUNmLENBQUE7QUFPRCxNQUFNLE9BQU8sb0JBQW9CO0lBV2hDLElBQUksV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUYsSUFBSSxZQUFZLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUYsSUFBSSxVQUFVLEtBQUssT0FB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QUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMxRyxJQUFJLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDdkIsSUFBSSxRQUFRLENBQUMsWUFBWSxLQUFLLEdBQUcsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtpQkFDM0M7cUJBQU07b0JBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsbUNBQW1DLENBQUMsQ0FBQztpQkFDM0Q7WUFDRixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDNUQsQ0FBQztTQUNELENBQUMsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQXZIVyxvQkFBb0IsOENBc0N2QixlQUFlO21HQXRDWixvQkFBb0IsK1FDekJqQyx3N0VBMkNNOzs0RkRsQk8sb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNDLGtCQUFrQjs7MEJBMEMxQixNQUFNOzJCQUFDLGVBQWU7NkdBN0JJLGNBQWM7c0JBQXpDLFNBQVM7dUJBQUMsZUFBZTtnQkFDSSxnQkFBZ0I7c0JBQTdDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBSb2xlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uL3JvbGUtY2FyZC9yb2xlLWNhcmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VjdXJpdHlBZG1pblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZWN1cml0eS1hZG1pbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVxdWVzdERldGFpbHMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc25hY2tiYXIuc2VydmljZSc7XHJcblxyXG5pbnRlcmZhY2UgRW50aXR5IHtcclxuXHRpZDogbnVtYmVyLFxyXG5cdG5hbWU6IHN0cmluZyxcclxuXHRlbnRpdHlUeXBlOiBcIkN1c3RvbWVyXCIgfCBcIlVzZXJcIlxyXG59XHJcblxyXG5jb25zdCBlbnRpdHlOYW1lcyA9IHtcclxuXHRDdXN0b21lcjogXCJFbXByZXNhXCIsXHJcblx0VXNlcjogXCJVc3VhcmlvXCJcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdsaWItYXNzaWduLXJvbGVzJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vYXNzaWduLXJvbGVzLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi4vYXNzZXRzL2ZvbnRzL3N0eWxlLmNzcycsICcuLi9hc3NldHMvdGhlbWUuc2NzcycsICcuL2Fzc2lnbi1yb2xlcy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3NpZ25Sb2xlc0NvbXBvbmVudCB7XHJcblx0dGhlbWU6IHN0cmluZyA9ICdkZWZhdWx0JztcclxuXHRyb2xlczogYW55W10gPSBbXTtcclxuXHRkcm9wSG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRhc3NpZ25lZDogU2V0PHN0cmluZyB8IG51bWJlcj4gPSBuZXcgU2V0KFtdKTtcclxuXHRzZWFyY2ggPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XHJcblx0bG9hZGluZ09wdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRsb2FkaW5nU2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblx0ZW50aXR5OiBFbnRpdHkgPSB7IGlkOiAtMSwgbmFtZTogJycsIGVudGl0eVR5cGU6IFwiVXNlclwiIH07XHJcblx0QFZpZXdDaGlsZCgnZHJvcEl0ZW1zTGlzdCcpIGRyb3BJdGVtc0xpc3QxOiBhbnkgPSBDZGtEcm9wTGlzdDtcclxuXHRAVmlld0NoaWxkKCdkcmFnT3B0aW9uc0xpc3QnKSBkcmFnT3B0aW9uc0xpc3QxOiBhbnkgPSBDZGtEcm9wTGlzdDtcclxuXHRnZXQgZHJhZ09wdGlvbnMoKSB7IHJldHVybiB0aGlzLnJvbGVzLmZpbHRlcihyb2xlID0+ICF0aGlzLmFzc2lnbmVkLmhhcyhyb2xlLmlkKSkgPz8gW107IH1cclxuXHRnZXQgZHJvcHBlZEl0ZW1zKCkgeyByZXR1cm4gdGhpcy5yb2xlcy5maWx0ZXIocm9sZSA9PiB0aGlzLmFzc2lnbmVkLmhhcyhyb2xlLmlkKSkgPz8gW107IH1cclxuXHRnZXQgZW50aXR5TmFtZSgpIHsgcmV0dXJuIGAgLSAke2VudGl0eU5hbWVzW3RoaXMuZW50aXR5LmVudGl0eVR5cGVdfWAgfVxyXG5cclxuXHRyZW1vdmVSb2xlKHJvbGU6IGFueSkge1xyXG5cdFx0dGhpcy5hc3NpZ25lZC5kZWxldGUocm9sZS5pZCk7XHJcblx0fVxyXG5cclxuXHR1aUFjdGlvbnMgPSBbeyBpY29uOiAnbWVudS1iaW4nLCBjYWxsYmFjazogKHJvbGU6IGFueSkgPT4gdGhpcy5yZW1vdmVSb2xlKHJvbGUpIH1dXHJcblxyXG5cclxuXHRkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnlbXT4pIHtcclxuXHJcblx0XHRpZiAoIShldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSkge1xyXG5cclxuXHRcdFx0dGhpcy5hc3NpZ25lZC5hZGQoZXZlbnQuaXRlbS5kYXRhPy5pZCk7XHJcblx0XHRcdC8vIHRoaXMuZHJhZ0Ryb3BGaWVsZD8uY29udHJvbC5zZXRWYWx1ZSh0aGlzLmRyYWdEcm9wRmllbGQ/Lm9wdGlvbnM/LmZpbHRlcihvcHRpb24gPT4gdGhpcy5hc3NpZ25lZC5oYXMob3B0aW9uLmlkKSkgPz8gW10pO1xyXG5cdFx0XHQvLyB0aGlzLmRyYWdEcm9wRmllbGQ/LmNvbnRyb2wuc2V0VmFsdWUodGhpcy5kcmFnRHJvcEZpZWxkLmNvbnRyb2wudmFsdWU/LnB1c2g/LihldmVudC5pdGVtLmRhdGEpKVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5zZXREcm9wSG92ZXIoZmFsc2UpO1xyXG5cdH1cclxuXHJcblx0c2V0RHJvcEhvdmVyKHZhbHVlOiBib29sZWFuKSB7XHJcblx0XHR0aGlzLmRyb3BIb3ZlciA9IHZhbHVlO1xyXG5cdH1cclxuXHJcblx0Y29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEFzc2lnblJvbGVzQ29tcG9uZW50PixcclxuXHRcdEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogeyB0aGVtZTogc3RyaW5nLCBlbnRpdHlUeXBlOiBcIkN1c3RvbWVyXCIgfCBcIlVzZXJcIiB9LFxyXG5cdFx0cHJpdmF0ZSBzZWN1cml0eUFkbWluU2VydmljZTogU2VjdXJpdHlBZG1pblNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHNuYWNrYmFyOiBTbmFja2JhclNlcnZpY2UpIHtcclxuXHRcdHRoaXMudGhlbWUgPSBkYXRhLnRoZW1lO1xyXG5cdFx0bGV0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VjdXJpdHlBZG1pblNlcnZpY2Uuc2VsZWN0ZWRJdGVtO1xyXG5cdFx0dGhpcy5lbnRpdHkgPSB7IC4uLnNlbGVjdGVkSXRlbSwgZW50aXR5VHlwZTogZGF0YS5lbnRpdHlUeXBlLCBuYW1lOiBbc2VsZWN0ZWRJdGVtPy5uYW1lLCBzZWxlY3RlZEl0ZW0/Lmxhc3RuYW1lID8/ICcnXS5qb2luKCcgJykgfTtcclxuXHRcdHRoaXMubG9hZFJvbGVPcHRpb25zKCk7XHJcblx0XHR0aGlzLmxvYWRBc3NpZ25lZFJvbGVzKCk7XHJcblx0fVxyXG5cclxuXHRsb2FkQXNzaWduZWRSb2xlcygpIHtcclxuXHRcdHRoaXMubG9hZGluZ1NlbGVjdGlvbiA9IHRydWU7XHJcblxyXG5cdFx0dGhpcy5zZWN1cml0eUFkbWluU2VydmljZS5nZXRBc3NpZ25lZFJvbGVzKHRoaXMuZW50aXR5LmlkLCB0aGlzLmVudGl0eS5lbnRpdHlUeXBlKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGlmIChyZXNwb25zZS5yZXNwb25zZUNvZGUgPT09IDIwMCkge1xyXG5cdFx0XHRcdFx0dGhpcy5hc3NpZ25lZCA9IG5ldyBTZXQocmVzcG9uc2UubG9hZC5tYXAoKHJvbGU6IGFueSkgPT4gcm9sZS5pZCkpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmxvYWRpbmdTZWxlY3Rpb24gPSBmYWxzZTtcclxuXHRcdFx0fSAsXHJcblx0XHRcdGVycm9yOiAoKSA9PiB0aGlzLmxvYWRpbmdTZWxlY3Rpb24gPSBmYWxzZVxyXG5cdFx0fSlcclxuXHR9XHJcblxyXG5cdGxvYWRSb2xlT3B0aW9ucygpIHtcclxuXHRcdHRoaXMubG9hZGluZ09wdGlvbnMgPSB0cnVlO1xyXG5cdFx0dGhpcy5zZWN1cml0eUFkbWluU2VydmljZS5nZXRSb2xlcygpLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0aWYgKHJlc3BvbnNlLnJlc3BvbnNlQ29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRsZXQgY29tcGxldGVSb2xlczogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdGlmIChyZXNwb25zZS5sb2FkLmxlbmd0aCA8IDEpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5sb2FkaW5nT3B0aW9ucyA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0Zm9yIChsZXQgcm9sZSBvZiByZXNwb25zZS5sb2FkKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2VjdXJpdHlBZG1pblNlcnZpY2UuZ2V0UmVzb3VyY2VzQnlSb2xlKHJvbGUuaWQpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0XHRcdFx0bmV4dDogKHJvbGVSZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAocm9sZVJlc3BvbnNlLnJlc3BvbnNlQ29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlUm9sZXMucHVzaCh7IC4uLnJvbGUsIHJlc291cmNlczogcm9sZVJlc3BvbnNlLmxvYWQgfSk7XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZVJvbGVzLnB1c2gocm9sZSk7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoY29tcGxldGVSb2xlcy5sZW5ndGggPT09IHJlc3BvbnNlLmxvYWQubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMucm9sZXMgPSBjb21wbGV0ZVJvbGVzLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRpbmdPcHRpb25zID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcGxldGVSb2xlcy5wdXNoKHJvbGUpO1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGNvbXBsZXRlUm9sZXMubGVuZ3RoID09PSByZXNwb25zZS5sb2FkLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJvbGVzID0gY29tcGxldGVSb2xlcy5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkaW5nT3B0aW9ucyA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nT3B0aW9ucyA9IGZhbHNlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6ICgpID0+IHRoaXMubG9hZGluZ09wdGlvbnMgPSBmYWxzZVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRvblNhdmUoKSB7XHJcblx0XHR0aGlzLnNuYWNrYmFyLmluZm8oJ0d1YXJkYW5kby4uLicpXHJcblx0XHR0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLmFzc2lnblJvbGVzKHRoaXMuZW50aXR5LmlkLCB0aGlzLmRyb3BwZWRJdGVtcywgdGhpcy5lbnRpdHkuZW50aXR5VHlwZSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcG9uc2UucmVzcG9uc2VDb2RlID09PSAyMDApIHtcclxuXHRcdFx0XHRcdHRoaXMuc25hY2tiYXIuc3VjY2VzcygnUm9sZXMgQWN0dWFsaXphZG9zJylcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5zbmFja2Jhci53YXJuaW5nKCdPY3VycmnDsyB1biBlcnJvciBhbCBhc2lnbmFyIHJvbGVzJyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLnNuYWNrYmFyLndhcm5pbmcoJ09jdXJyacOzIHVuIGVycm9yIGFsIGFzaWduYXIgcm9sZXMnKTtcclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHR9XHJcblxyXG5cdG9uQ2xvc2UoKSB7XHJcblx0XHR0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG5cdH1cclxuXHJcblx0cm9sZUFjdGlvbnMgPSBbXHJcblx0XHR7IGljb246ICdtZW51LWJpbicsIGNhbGxiYWNrOiAocm9sZTogYW55KSA9PiB7IHRoaXMuYXNzaWduZWQuZGVsZXRlKHJvbGUuaWQpIH0gfVxyXG5cdF1cclxuXHJcbn1cclxuIiwiPGRpdiBbYXR0ci5kYXRhLXRoZW1lXT1cInRoZW1lXCIgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCI+XHJcblx0PGRpdiBjbGFzcz1cInRpdGxlLWNvbnRhaW5lclwiPlxyXG5cdFx0PGkgY2xhc3M9XCJtZW51LWdlYXJcIj48L2k+XHJcblx0XHQ8ZGl2IGNsYXNzPVwidGl0bGVcIj5cclxuXHRcdFx0PHNwYW4gY2xhc3M9XCJ0aXRsZS1sYWJlbFwiPnt7J0Fzc2lnbi9SZW1vdmUnIHwgdHJhbnNsYXRlfX0ge3sncm9sZXMnIHwgdHJhbnNsYXRlfX0ge3tlbnRpdHlOYW1lfX08L3NwYW4+XHJcblx0XHRcdDxzcGFuIGNsYXNzPVwidGl0bGUtbmFtZVwiPnt7ZW50aXR5Lm5hbWV9fTwvc3Bhbj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG5cdFx0PGJ1dHRvbiBjbGFzcz1cInByaW1hcnlcIiAoY2xpY2spPVwib25TYXZlKClcIj57eydTYXZlJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcblx0XHQ8YnV0dG9uIGNsYXNzPVwiZ2hvc3RcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+PGkgY2xhc3M9XCJtZW51LWNsb3NlXCI+PC9pPjwvYnV0dG9uPlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBbYXR0ci5kYXRhLXRoZW1lXT1cInRoZW1lXCIgY2xhc3M9XCJkaWFsb2ctY29udGVudFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJhdmFpbGFibGVcIj5cclxuXHRcdDxsaWItaW5wdXQgbmdEZWZhdWx0Q29udHJvbCBbZm9ybUNvbnRyb2xdPVwic2VhcmNoXCIgbmFtZT1cInNlYXJjaFwiIFtsYWJlbF09XCInU2VhcmNoLi4uJyB8IHRyYW5zbGF0ZVwiIFtjbGVhckJ1dHRvbl09XCJ0cnVlXCJcclxuXHRcdFx0aWNvbj1cIm1lbnUtc2VhcmNoXCIgW3RoZW1lXT1cInRoZW1lXCI+PC9saWItaW5wdXQ+XHJcblx0XHQ8bGliLWxvYWRlciB0eXBlPVwiYmFyXCIgW2xvYWRpbmddPVwibG9hZGluZ09wdGlvbnNcIiBbdGhlbWVdPVwidGhlbWVcIj48L2xpYi1sb2FkZXI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiZHJhZy1pdGVtc1wiIGNka0Ryb3BMaXN0IGNka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkICNkcmFnT3B0aW9uc0xpc3Q9XCJjZGtEcm9wTGlzdFwiXHJcblx0XHRcdFtjZGtEcm9wTGlzdERhdGFdPVwiZHJhZ09wdGlvbnNcIiBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJkcm9wSXRlbXNMaXN0MVwiPlxyXG5cdFx0XHQ8bGliLXJvbGUtY2FyZCBbYXR0ci5kYXRhLXRoZW1lXT1cInRoZW1lXCIgW3RoZW1lXT1cInRoZW1lXCIgKm5nRm9yPVwibGV0IHJvbGUgb2YgZHJhZ09wdGlvbnNcIiBbb2JqZWN0XT1cInJvbGVcIiBbaW5mb0J1dHRvbl09XCJ0cnVlXCIgY2RrRHJhZyBbY2RrRHJhZ0RhdGFdPVwicm9sZVwiPjwvbGliLXJvbGUtY2FyZD5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJhc3NpZ25lZC1hcmVhXCI+XHJcblx0XHQ8c3BhbiBjbGFzcz1cImFzc2lnbmVkLWFyZWEtbGFiZWxcIj5Sb2xlcyBBc2lnbmFkb3M8L3NwYW4+XHJcblx0XHQ8bGliLWxvYWRlciB0eXBlPVwiYmFyXCIgW3RoZW1lXT1cInRoZW1lXCIgW2xvYWRpbmddPVwibG9hZGluZ1NlbGVjdGlvblwiPjwvbGliLWxvYWRlcj5cclxuXHRcdDxkaXYgY2xhc3M9XCJkcm9wcGVkLWl0ZW1zLWFyZWFcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImRyb3AtYXJlYS1jb250YWluZXJcIj5cclxuXHRcdFx0XHQ8ZGl2IFtjbGFzc109XCJbIGRyb3BIb3Zlcj8nZHJvcC1hcmVhLWhvdmVyJzonJywgJ2Ryb3AtYXJlYSddXCI+XHJcblx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImRyb3AtYXJlYS1sYWJlbFwiPkFycmFzdHJhciBSb2xlcyBBcXXDrTwvc3Bhbj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJkcm9wLWxpc3RcIiBjZGtEcm9wTGlzdCAjZHJvcEl0ZW1zTGlzdD1cImNka0Ryb3BMaXN0XCIgW2Nka0Ryb3BMaXN0RGF0YV09XCJkcm9wcGVkSXRlbXNcIlxyXG5cdFx0XHRcdFx0XHRbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJkcmFnT3B0aW9uc0xpc3QxXCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIlxyXG5cdFx0XHRcdFx0XHQoY2RrRHJvcExpc3RFbnRlcmVkKT1cInNldERyb3BIb3Zlcih0cnVlKVwiIChjZGtEcm9wTGlzdEV4aXRlZCk9XCJzZXREcm9wSG92ZXIoZmFsc2UpXCJcclxuXHRcdFx0XHRcdFx0Y2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWQ+PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZHJvcC1pdGVtc1wiPlxyXG5cdFx0XHRcdDxsaWItcm9sZS1jYXJkICpuZ0Zvcj1cImxldCByb2xlIG9mIGRyb3BwZWRJdGVtc1wiIFtvYmplY3RdPVwicm9sZVwiIFtpbmZvQnV0dG9uXT1cInRydWVcIiAgW3RoZW1lXT1cInRoZW1lXCIgW2FjdGlvbnNdPVwidWlBY3Rpb25zXCI+PC9saWItcm9sZS1jYXJkPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduLXJvbGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9hc3NpZ24tcm9sZXMvYXNzaWduLXJvbGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9hc3NpZ24tcm9sZXMvYXNzaWduLXJvbGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUl6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7QUFRcEUsTUFBTSxXQUFXLEdBQUc7SUFDaEIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsSUFBSSxFQUFFLFNBQVM7Q0FDbEIsQ0FBQTtBQU9ELE1BQU0sT0FBTyxvQkFBb0I7SUFhN0IsSUFBSSxXQUFXO1FBQ1gsK0NBQStDO1FBQy9DLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pGLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDWix1RUFBdUU7UUFDdkUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMs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IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBSb2xlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uL3JvbGUtY2FyZC9yb2xlLWNhcmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VjdXJpdHlBZG1pblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZWN1cml0eS1hZG1pbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVxdWVzdERldGFpbHMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc25hY2tiYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbnRlcmZhY2UgRW50aXR5IHtcclxuICAgIGlkOiBudW1iZXIsXHJcbiAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICBlbnRpdHlUeXBlOiBcIkN1c3RvbWVyXCIgfCBcIlVzZXJcIlxyXG59XHJcblxyXG5jb25zdCBlbnRpdHlOYW1lcyA9IHtcclxuICAgIEN1c3RvbWVyOiBcIkVtcHJlc2FcIixcclxuICAgIFVzZXI6IFwiVXN1YXJpb1wiXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItYXNzaWduLXJvbGVzJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hc3NpZ24tcm9sZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4uL2Fzc2V0cy9mb250cy9zdHlsZS5jc3MnLCAnLi4vYXNzZXRzL3RoZW1lLnNjc3MnLCAnLi9hc3NpZ24tcm9sZXMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNzaWduUm9sZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgdGhlbWU6IHN0cmluZyA9ICdkZWZhdWx0JztcclxuICAgIGFsbFJvbGVzOiBhbnlbXSA9IFtdOyAvLyBMaXN0YSBjb21wbGV0YSBkZSB0b2RvcyBsb3Mgcm9sZXNcclxuICAgIGZpbHRlcmVkQXZhaWxhYmxlUm9sZXM6IGFueVtdID0gW107IC8vIExpc3RhIGZpbHRyYWRhIGRlIHJvbGVzIGRpc3BvbmlibGVzXHJcbiAgICBkcm9wSG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGFzc2lnbmVkOiBTZXQ8c3RyaW5nIHwgbnVtYmVyPiA9IG5ldyBTZXQoW10pO1xyXG4gICAgc2VhcmNoID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xyXG4gICAgbG9hZGluZ09wdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWRpbmdTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGVudGl0eTogRW50aXR5ID0geyBpZDogLTEsIG5hbWU6ICcnLCBlbnRpdHlUeXBlOiBcIlVzZXJcIiB9O1xyXG4gICAgQFZpZXdDaGlsZCgnZHJvcEl0ZW1zTGlzdCcpIGRyb3BJdGVtc0xpc3QxOiBhbnkgPSBDZGtEcm9wTGlzdDtcclxuICAgIEBWaWV3Q2hpbGQoJ2RyYWdPcHRpb25zTGlzdCcpIGRyYWdPcHRpb25zTGlzdDE6IGFueSA9IENka0Ryb3BMaXN0O1xyXG4gICAgXHJcbiAgICBnZXQgZHJhZ09wdGlvbnMoKSB7IFxyXG4gICAgICAgIC8vIFJvbGVzIGRpc3BvbmlibGVzIChmaWx0cmFkb3MgeSBubyBhc2lnbmFkb3MpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRBdmFpbGFibGVSb2xlcy5maWx0ZXIocm9sZSA9PiAhdGhpcy5hc3NpZ25lZC5oYXMocm9sZS5pZCkpID8/IFtdOyBcclxuICAgIH1cclxuICAgIFxyXG4gICAgZ2V0IGRyb3BwZWRJdGVtcygpIHsgXHJcbiAgICAgICAgLy8gUm9sZXMgYXNpZ25hZG9zIChOTyBmaWx0cmFkb3MgLSBzaWVtcHJlIG11ZXN0cmEgdG9kb3MgbG9zIGFzaWduYWRvcylcclxuICAgICAgICByZXR1cm4gdGhpcy5hbGxSb2xlcy5maWx0ZXIocm9sZSA9PiB0aGlzLmFzc2lnbmVkLmhhcyhyb2xlLmlkKSkgPz8gW107IFxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBnZXQgZW50aXR5TmFtZSgpIHsgXHJcbiAgICAgICAgcmV0dXJuIGAgLSAke2VudGl0eU5hbWVzW3RoaXMuZW50aXR5LmVudGl0eVR5cGVdfWAgXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEFzc2lnblJvbGVzQ29tcG9uZW50PixcclxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IHsgdGhlbWU6IHN0cmluZywgZW50aXR5VHlwZTogXCJDdXN0b21lclwiIHwgXCJVc2VyXCIgfSxcclxuICAgICAgICBwcml2YXRlIHNlY3VyaXR5QWRtaW5TZXJ2aWNlOiBTZWN1cml0eUFkbWluU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHNuYWNrYmFyOiBTbmFja2JhclNlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLnRoZW1lID0gZGF0YS50aGVtZTtcclxuICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWN1cml0eUFkbWluU2VydmljZS5zZWxlY3RlZEl0ZW07XHJcbiAgICAgICAgdGhpcy5lbnRpdHkgPSB7IC4uLnNlbGVjdGVkSXRlbSwgZW50aXR5VHlwZTogZGF0YS5lbnRpdHlUeXBlLCBuYW1lOiBbc2VsZWN0ZWRJdGVtPy5uYW1lLCBzZWxlY3RlZEl0ZW0/Lmxhc3RuYW1lID8/ICcnXS5qb2luKCcgJykgfTtcclxuICAgICAgICB0aGlzLmxvYWRSb2xlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMubG9hZEFzc2lnbmVkUm9sZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICAvLyBDb25maWd1cmFyIGVsIGZpbHRyYWRvIGVuIHRpZW1wbyByZWFsXHJcbiAgICAgICAgdGhpcy5zZWFyY2gudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxyXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoc2VhcmNoVGVybSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQXZhaWxhYmxlUm9sZXMoc2VhcmNoVGVybSB8fCAnJyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyQXZhaWxhYmxlUm9sZXMoc2VhcmNoVGVybTogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKCFzZWFyY2hUZXJtLnRyaW0oKSkge1xyXG4gICAgICAgICAgICAvLyBTaSBubyBoYXkgdMOpcm1pbm8gZGUgYsO6c3F1ZWRhLCBtb3N0cmFyIHRvZG9zIGxvcyByb2xlcyBkaXNwb25pYmxlc1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkQXZhaWxhYmxlUm9sZXMgPSBbLi4udGhpcy5hbGxSb2xlc107XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gRmlsdHJhciBTT0xPIGxvcyByb2xlcyBkaXNwb25pYmxlcyBwb3IgbmFtZSAoY2FzZSBpbnNlbnNpdGl2ZSlcclxuICAgICAgICAgICAgY29uc3QgdGVybSA9IHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZEF2YWlsYWJsZVJvbGVzID0gdGhpcy5hbGxSb2xlcy5maWx0ZXIocm9sZSA9PiBcclxuICAgICAgICAgICAgICAgIHJvbGUubmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVSb2xlKHJvbGU6IGFueSkge1xyXG4gICAgICAgIHRoaXMuYXNzaWduZWQuZGVsZXRlKHJvbGUuaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHVpQWN0aW9ucyA9IFt7IGljb246ICdtZW51LWJpbicsIGNhbGxiYWNrOiAocm9sZTogYW55KSA9PiB0aGlzLnJlbW92ZVJvbGUocm9sZSkgfV1cclxuXHJcbiAgICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnlbXT4pIHtcclxuICAgICAgICBpZiAoIShldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSkge1xyXG4gICAgICAgICAgICB0aGlzLmFzc2lnbmVkLmFkZChldmVudC5pdGVtLmRhdGE/LmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXREcm9wSG92ZXIoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERyb3BIb3Zlcih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuZHJvcEhvdmVyID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZEFzc2lnbmVkUm9sZXMoKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VsZWN0aW9uID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5zZWN1cml0eUFkbWluU2VydmljZS5nZXRBc3NpZ25lZFJvbGVzKHRoaXMuZW50aXR5LmlkLCB0aGlzLmVudGl0eS5lbnRpdHlUeXBlKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3BvbnNlQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hc3NpZ25lZCA9IG5ldyBTZXQocmVzcG9uc2UubG9hZC5tYXAoKHJvbGU6IGFueSkgPT4gcm9sZS5pZCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yOiAoKSA9PiB0aGlzLmxvYWRpbmdTZWxlY3Rpb24gPSBmYWxzZVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgbG9hZFJvbGVPcHRpb25zKCkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ09wdGlvbnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VjdXJpdHlBZG1pblNlcnZpY2UuZ2V0Um9sZXMoKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3BvbnNlQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXBsZXRlUm9sZXM6IGFueVtdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmxvYWQubGVuZ3RoIDwgMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdPcHRpb25zID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHJvbGUgb2YgcmVzcG9uc2UubG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLmdldFJlc291cmNlc0J5Um9sZShyb2xlLmlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogKHJvbGVSZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvbGVSZXNwb25zZS5yZXNwb25zZUNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZVJvbGVzLnB1c2goeyAuLi5yb2xlLCByZXNvdXJjZXM6IHJvbGVSZXNwb25zZS5sb2FkIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlUm9sZXMucHVzaChyb2xlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlUm9sZXMubGVuZ3RoID09PSByZXNwb25zZS5sb2FkLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3J0ZWRSb2xlcyA9IGNvbXBsZXRlUm9sZXMuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsUm9sZXMgPSBbLi4uc29ydGVkUm9sZXNdOyAvLyBMaXN0YSBjb21wbGV0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkQXZhaWxhYmxlUm9sZXMgPSBbLi4uc29ydGVkUm9sZXNdOyAvLyBJbmljaWFsbWVudGUgbW9zdHJhciB0b2Rvc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdPcHRpb25zID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVSb2xlcy5wdXNoKHJvbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZVJvbGVzLmxlbmd0aCA9PT0gcmVzcG9uc2UubG9hZC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc29ydGVkUm9sZXMgPSBjb21wbGV0ZVJvbGVzLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbFJvbGVzID0gWy4uLnNvcnRlZFJvbGVzXTsgLy8gTGlzdGEgY29tcGxldGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZEF2YWlsYWJsZVJvbGVzID0gWy4uLnNvcnRlZFJvbGVzXTsgLy8gSW5pY2lhbG1lbnRlIG1vc3RyYXIgdG9kb3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nT3B0aW9ucyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ09wdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHRoaXMubG9hZGluZ09wdGlvbnMgPSBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2F2ZSgpIHtcclxuICAgICAgICB0aGlzLnNuYWNrYmFyLmluZm8oJ0d1YXJkYW5kby4uLicpXHJcbiAgICAgICAgdGhpcy5zZWN1cml0eUFkbWluU2VydmljZS5hc3NpZ25Sb2xlcyh0aGlzLmVudGl0eS5pZCwgdGhpcy5kcm9wcGVkSXRlbXMsIHRoaXMuZW50aXR5LmVudGl0eVR5cGUpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzcG9uc2VDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNuYWNrYmFyLnN1Y2Nlc3MoJ1JvbGVzIEFjdHVhbGl6YWRvcycpXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc25hY2tiYXIud2FybmluZygnT2N1cnJpw7MgdW4gZXJyb3IgYWwgYXNpZ25hciByb2xlcycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tiYXIud2FybmluZygnT2N1cnJpw7MgdW4gZXJyb3IgYWwgYXNpZ25hciByb2xlcycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBvbkNsb3NlKCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoLnNldFZhbHVlKCcnKTsgLy8gTGltcGlhciBiw7pzcXVlZGEgYWwgY2VycmFyXHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICByb2xlQWN0aW9ucyA9IFtcclxuICAgICAgICB7IGljb246ICdtZW51LWJpbicsIGNhbGxiYWNrOiAocm9sZTogYW55KSA9PiB7IHRoaXMuYXNzaWduZWQuZGVsZXRlKHJvbGUuaWQpIH0gfVxyXG4gICAgXVxyXG59IiwiPGRpdiBbYXR0ci5kYXRhLXRoZW1lXT1cInRoZW1lXCIgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCI+XHJcblx0PGRpdiBjbGFzcz1cInRpdGxlLWNvbnRhaW5lclwiPlxyXG5cdFx0PGkgY2xhc3M9XCJtZW51LWdlYXJcIj48L2k+XHJcblx0XHQ8ZGl2IGNsYXNzPVwidGl0bGVcIj5cclxuXHRcdFx0PHNwYW4gY2xhc3M9XCJ0aXRsZS1sYWJlbFwiPnt7J0Fzc2lnbi9SZW1vdmUnIHwgdHJhbnNsYXRlfX0ge3sncm9sZXMnIHwgdHJhbnNsYXRlfX0ge3tlbnRpdHlOYW1lfX08L3NwYW4+XHJcblx0XHRcdDxzcGFuIGNsYXNzPVwidGl0bGUtbmFtZVwiPnt7ZW50aXR5Lm5hbWV9fTwvc3Bhbj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG5cdFx0PGJ1dHRvbiBjbGFzcz1cInByaW1hcnlcIiAoY2xpY2spPVwib25TYXZlKClcIj57eydTYXZlJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcblx0XHQ8YnV0dG9uIGNsYXNzPVwiZ2hvc3RcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+PGkgY2xhc3M9XCJtZW51LWNsb3NlXCI+PC9pPjwvYnV0dG9uPlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBbYXR0ci5kYXRhLXRoZW1lXT1cInRoZW1lXCIgY2xhc3M9XCJkaWFsb2ctY29udGVudFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJhdmFpbGFibGVcIj5cclxuXHRcdDxsaWItaW5wdXQgbmdEZWZhdWx0Q29udHJvbCBbZm9ybUNvbnRyb2xdPVwic2VhcmNoXCIgbmFtZT1cInNlYXJjaFwiIFtsYWJlbF09XCInU2VhcmNoLi4uJyB8IHRyYW5zbGF0ZVwiIFtjbGVhckJ1dHRvbl09XCJ0cnVlXCJcclxuXHRcdFx0aWNvbj1cIm1lbnUtc2VhcmNoXCIgW3RoZW1lXT1cInRoZW1lXCI+PC9saWItaW5wdXQ+XHJcblx0XHQ8bGliLWxvYWRlciB0eXBlPVwiYmFyXCIgW2xvYWRpbmddPVwibG9hZGluZ09wdGlvbnNcIiBbdGhlbWVdPVwidGhlbWVcIj48L2xpYi1sb2FkZXI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiZHJhZy1pdGVtc1wiIGNka0Ryb3BMaXN0IGNka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkICNkcmFnT3B0aW9uc0xpc3Q9XCJjZGtEcm9wTGlzdFwiXHJcblx0XHRcdFtjZGtEcm9wTGlzdERhdGFdPVwiZHJhZ09wdGlvbnNcIiBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJkcm9wSXRlbXNMaXN0MVwiPlxyXG5cdFx0XHQ8bGliLXJvbGUtY2FyZCBbYXR0ci5kYXRhLXRoZW1lXT1cInRoZW1lXCIgW3RoZW1lXT1cInRoZW1lXCIgKm5nRm9yPVwibGV0IHJvbGUgb2YgZHJhZ09wdGlvbnNcIiBbb2JqZWN0XT1cInJvbGVcIiBbaW5mb0J1dHRvbl09XCJ0cnVlXCIgY2RrRHJhZyBbY2RrRHJhZ0RhdGFdPVwicm9sZVwiPjwvbGliLXJvbGUtY2FyZD5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJhc3NpZ25lZC1hcmVhXCI+XHJcblx0XHQ8c3BhbiBjbGFzcz1cImFzc2lnbmVkLWFyZWEtbGFiZWxcIj5Sb2xlcyBBc2lnbmFkb3M8L3NwYW4+XHJcblx0XHQ8bGliLWxvYWRlciB0eXBlPVwiYmFyXCIgW3RoZW1lXT1cInRoZW1lXCIgW2xvYWRpbmddPVwibG9hZGluZ1NlbGVjdGlvblwiPjwvbGliLWxvYWRlcj5cclxuXHRcdDxkaXYgY2xhc3M9XCJkcm9wcGVkLWl0ZW1zLWFyZWFcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImRyb3AtYXJlYS1jb250YWluZXJcIj5cclxuXHRcdFx0XHQ8ZGl2IFtjbGFzc109XCJbIGRyb3BIb3Zlcj8nZHJvcC1hcmVhLWhvdmVyJzonJywgJ2Ryb3AtYXJlYSddXCI+XHJcblx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImRyb3AtYXJlYS1sYWJlbFwiPkFycmFzdHJhciBSb2xlcyBBcXXDrTwvc3Bhbj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJkcm9wLWxpc3RcIiBjZGtEcm9wTGlzdCAjZHJvcEl0ZW1zTGlzdD1cImNka0Ryb3BMaXN0XCIgW2Nka0Ryb3BMaXN0RGF0YV09XCJkcm9wcGVkSXRlbXNcIlxyXG5cdFx0XHRcdFx0XHRbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJkcmFnT3B0aW9uc0xpc3QxXCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIlxyXG5cdFx0XHRcdFx0XHQoY2RrRHJvcExpc3RFbnRlcmVkKT1cInNldERyb3BIb3Zlcih0cnVlKVwiIChjZGtEcm9wTGlzdEV4aXRlZCk9XCJzZXREcm9wSG92ZXIoZmFsc2UpXCJcclxuXHRcdFx0XHRcdFx0Y2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWQ+PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZHJvcC1pdGVtc1wiPlxyXG5cdFx0XHRcdDxsaWItcm9sZS1jYXJkICpuZ0Zvcj1cImxldCByb2xlIG9mIGRyb3BwZWRJdGVtc1wiIFtvYmplY3RdPVwicm9sZVwiIFtpbmZvQnV0dG9uXT1cInRydWVcIiAgW3RoZW1lXT1cInRoZW1lXCIgW2FjdGlvbnNdPVwidWlBY3Rpb25zXCI+PC9saWItcm9sZS1jYXJkPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==
|