valtech-components 2.0.1003 → 2.0.1004
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/components/organisms/permissions-view/permissions-view.component.mjs +9 -6
- package/esm2022/lib/services/preferences/preferences.service.mjs +19 -9
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +27 -14
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -121,13 +121,16 @@ export class PermissionsViewComponent {
|
|
|
121
121
|
for (const perm of role.permissions) {
|
|
122
122
|
const [resource, action] = perm.split(':');
|
|
123
123
|
const entry = byResource.get(resource);
|
|
124
|
-
//
|
|
125
|
-
//
|
|
126
|
-
|
|
124
|
+
// Sin entrada en el catálogo (el backend omite los recursos internal para
|
|
125
|
+
// no-platform-admins) o entrada internal → NUNCA se muestra a nivel de
|
|
126
|
+
// producto. Defensa en profundidad junto al filtro del backend (ADR-024).
|
|
127
|
+
// Nota: el rol puede traer el permiso aunque el recurso esté filtrado del
|
|
128
|
+
// catálogo (ej. admin tiene templates:*); por eso se descarta lo no resuelto.
|
|
129
|
+
if (!entry || entry.scope === 'internal') {
|
|
127
130
|
continue;
|
|
128
131
|
}
|
|
129
132
|
const label = this.permLabel(resource, action);
|
|
130
|
-
if (entry
|
|
133
|
+
if (entry.scope === 'app') {
|
|
131
134
|
if (entry.appId === currentAppId) {
|
|
132
135
|
appPerms.push(label);
|
|
133
136
|
}
|
|
@@ -139,7 +142,7 @@ export class PermissionsViewComponent {
|
|
|
139
142
|
}
|
|
140
143
|
}
|
|
141
144
|
else {
|
|
142
|
-
//
|
|
145
|
+
// scope === 'org' → gestión de la organización del cliente
|
|
143
146
|
orgPerms.push(label);
|
|
144
147
|
}
|
|
145
148
|
}
|
|
@@ -513,4 +516,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
513
516
|
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
514
517
|
type: Input
|
|
515
518
|
}] } });
|
|
516
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3Blcm1pc3Npb25zLXZpZXcvcGVybWlzc2lvbnMtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQWtCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQXNCLE1BQU0sa0RBQWtELENBQUM7QUFHaEgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRWhFLE1BQU0saUJBQWlCLEdBQUcsc0JBQXNCLENBQUM7QUFpQmpEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQW1QSCxNQUFNLE9BQU8sd0JBQXdCO0lBeUJuQyxzRUFBc0U7SUFDdEUsSUFBWSxFQUFFO1FBQ1osT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDO0lBQzdDLENBQUM7SUEwQkQ7UUFyRFEsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLFlBQU8sR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUMzQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoQyxVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBU2xELG1CQUFjLEdBQUcsUUFBUSxDQUFrQyxHQUFHLEVBQUU7WUFDdkUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQTBCLENBQUM7WUFDbEcsTUFBTSxNQUFNLEdBQTBCLEVBQUUsR0FBRyxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMvRSxPQUFPO2dCQUNMLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZSxJQUFJLElBQUk7Z0JBQy9DLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZSxJQUFJLElBQUk7Z0JBQy9DLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYSxJQUFJLGlCQUFpQjthQUN6RCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFPTSxZQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLGNBQVMsR0FBRyxNQUFNLENBQWlCLElBQUksQ0FBQyxDQUFDO1FBQ2pDLFVBQUssR0FBRyxNQUFNLENBQWEsRUFBRSxDQUFDLENBQUM7UUFFdkMsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ25FLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRXBFLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFHaEIsQ0FBQztZQUNULE9BQU8sQ0FBQyxFQUFFLFdBQVcsSUFBSSxDQUFDLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUVNLHFCQUFnQixHQUFHLFFBQVEsQ0FBMEIsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNuRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFDdEIsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsU0FBUztZQUNmLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTztTQUMzRSxDQUFDLENBQUMsQ0FBQztRQUdGLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSTtRQUNGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsUUFBUSxDQUFDO1lBQ1AsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUMxQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1NBQ3hDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDWCxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtnQkFDckMsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7Z0JBQ3pELEtBQUssTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLFdBQVc7b0JBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDWixDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUM5QixJQUFJLENBQUMsYUFBYSxDQUNoQjtvQkFDRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO29CQUNaLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVztvQkFDMUIsV0FBVyxFQUFFLENBQUMsQ0FBQyxXQUFXLElBQUksRUFBRTtvQkFDaEMsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksS0FBSztpQkFDOUIsRUFDRCxVQUFVLEVBQ1YsWUFBWSxDQUNiLENBQ0YsQ0FDRixDQUFDO2dCQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUNuQixJQU1DLEVBQ0QsVUFBMkMsRUFDM0MsWUFBb0I7UUFFcEIsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUM5QixNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUUvQyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0MsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2QywwRUFBMEU7WUFDMUUsa0VBQWtFO1lBQ2xFLElBQUksS0FBSyxFQUFFLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDaEMsU0FBUztZQUNYLENBQUM7WUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMvQyxJQUFJLEtBQUssRUFBRSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQzNCLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxZQUFZLEVBQUUsQ0FBQztvQkFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdkIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDO29CQUNqQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDeEMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDaEIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzdCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sNkRBQTZEO2dCQUM3RCxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQW9CLEVBQUUsQ0FBQztRQUNuQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDVixHQUFHLEVBQUUsS0FBSztnQkFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUM7Z0JBQzFCLEtBQUssRUFBRSxRQUFRO2FBQ2hCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksVUFBVSxFQUFFLENBQUM7WUFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDVixHQUFHLEVBQUUsU0FBUyxLQUFLLEVBQUU7Z0JBQ3JCLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDMUQsS0FBSzthQUNOLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixNQUFNO1lBQ04sUUFBUSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQztTQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVTLEVBQUUsQ0FBQyxHQUFXO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsTUFBTSxHQUFHLEdBQUcsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLE9BQU8sS0FBSyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdkMsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLE1BQU0sR0FBRyxHQUEyQjtZQUNsQyxNQUFNLEVBQUUsWUFBWTtZQUNwQixNQUFNLEVBQUUsWUFBWTtZQUNwQixLQUFLLEVBQUUsV0FBVztZQUNsQixXQUFXLEVBQUUsZ0JBQWdCO1lBQzdCLFdBQVcsRUFBRSxnQkFBZ0I7WUFDN0IsY0FBYyxFQUFFLG1CQUFtQjtZQUNuQyxjQUFjLEVBQUUsbUJBQW1CO1lBQ25DLGNBQWMsRUFBRSxtQkFBbUI7U0FDcEMsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxRQUFnQixFQUFFLE1BQWM7UUFDeEMsSUFBSSxRQUFRLEtBQUssR0FBRyxJQUFJLE1BQU0sS0FBSyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLFFBQVEsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM1RyxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEcsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLE9BQU8sR0FBRyxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQzsrR0F4TVUsd0JBQXdCO21HQUF4Qix3QkFBd0IsOEdBOU96Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3SlQsdXFDQXpKUyxVQUFVLHlHQUFFLGdCQUFnQiwyRUFBRSxhQUFhLHdIQUFFLGNBQWMseUVBQUUsYUFBYSx3RUFBRSxlQUFlOzs0RkErTzFGLHdCQUF3QjtrQkFsUHBDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsWUFDNUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0pUO3dEQW1HUSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIElucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvblNwaW5uZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFBpbGxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGlsbC9waWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvb3JnLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29ubmVjdFBhZ2VSZWZyZXNoIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1yZWZyZXNoL3BhZ2UtcmVmcmVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25DYXRhbG9nU2VydmljZSwgUGVybWlzc2lvblJlc291cmNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL3Blcm1pc3Npb24tY2F0YWxvZy5zZXJ2aWNlJztcblxuaW1wb3J0IHsgUGVybWlzc2lvbnNWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBQRVJNSVNTSU9OU19WSUVXX0kxOE4gfSBmcm9tICcuL3Blcm1pc3Npb25zLXZpZXcuaTE4bic7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ1NldHRpbmdzLlBlcm1pc3Npb25zJztcblxuaW50ZXJmYWNlIFBlcm1Hcm91cFZpZXcge1xuICBrZXk6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgcGVybXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgUm9sZVZpZXcge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpc1N5c3RlbTogYm9vbGVhbjtcbiAgZ3JvdXBzOiBQZXJtR3JvdXBWaWV3W107XG4gIGhhc1Blcm1zOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGB2YWwtcGVybWlzc2lvbnMtdmlld2Ag4oCUIHZpc3RhIFBlcm1pc29zIGZ1bGwtZmVhdHVyZSBhdXRvY29udGVuaWRhIChvcmdhbmlzbSkuXG4gKiBWaXNvciBSQkFDIGRlIHNvbG8gbGVjdHVyYTogbXVlc3RyYSBsb3Mgcm9sZXMgZGVsIHNpc3RlbWEgKFZpc29yL0VkaXRvci9BZG1pbiArXG4gKiByb2xlcyBkZSBwbGF0YWZvcm1hKSB5IGxvcyByb2xlcyBwZXJzb25hbGl6YWRvcyBkZSBsYSBvcmcgYWN0aXZhLCBjb24gZWxcbiAqIGNhdMOhbG9nbyBkZSBwZXJtaXNvcyBhZ3J1cGFkbyBwb3IgYWxjYW5jZSAoYXBwIGFjdHVhbCAvIHBsYXRhZm9ybWEgLyBvdHJhcyBhcHBzKS5cbiAqIFByb21vdmlkYSBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLlxuICpcbiAqICoqUkJBQyBpbnRlcm5vKiogKGNvbW8gYG9yZ2FuaXphdGlvbi12aWV3YCk6IGxlZSBsYSBvcmcgYWN0aXZhIHbDrWFcbiAqIGBBdXRoU2VydmljZS51c2VyKCkuYWN0aXZlT3JnSWRgLiBMYSB2aXN0YSBOTyBtdXRhIG5hZGEg4oCUIGVsIGNvbnRyb2wgZGUgcXVpw6luXG4gKiBwdWVkZSB2ZXJsYSBlcyByZXNwb25zYWJpbGlkYWQgZGVsIGd1YXJkIGRlIHJ1dGEgZGVsIGNvbnN1bWVyOyBubyBoYXkgZ2F0aW5nXG4gKiBmaW5vIGludGVybm8gbmkgc2UgZXhwb25lIGNvbW8gY29uZmlnLlxuICpcbiAqIERhdG9zOiBgZm9ya0pvaW5gIGRlIGBPcmdTZXJ2aWNlLmxpc3RPcmdSb2xlcyhvcmdJZClgIChyb2xlcyBkZSBsYSBvcmcpICtcbiAqIGBQZXJtaXNzaW9uQ2F0YWxvZ1NlcnZpY2UuZ2V0Q2F0YWxvZyhvcmdJZClgIChjYXTDoWxvZ28gKyBhcHBJZCBhY3R1YWwpLiBFbFxuICogY2F0w6Fsb2dvIGRlZmluZSBlbCBhbGNhbmNlIChgc2NvcGVgL2BhcHBJZGApIGRlIGNhZGEgcmVjdXJzbyBwYXJhIGFncnVwYXIuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLiBgQWN0aXZhdGVkUm91dGVgIHNlXG4gKiBpbnllY3RhIGB7IG9wdGlvbmFsOiB0cnVlIH1gIHNvbG8gcGFyYSBsZWVyIGVsIHJvdXRlIGRhdGEgZGUgY29uZmlnLiBBdXRvLXJlZ2lzdHJhXG4gKiBzdXMgZGVmYXVsdHMgaTE4biAoZXMvZW4pIHNpIGVsIGNvbnN1bWVyIG5vIHByb3ZlecOzIGVsIG5hbWVzcGFjZSAoZGVmYXVsdFxuICogYFNldHRpbmdzLlBlcm1pc3Npb25zYCkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wZXJtaXNzaW9ucy12aWV3JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvblNwaW5uZXIsIERpc3BsYXlDb21wb25lbnQsIFBpbGxDb21wb25lbnQsIFRpdGxlQ29tcG9uZW50LCBUZXh0Q29tcG9uZW50LCBCdXR0b25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJwYWdlXCI+XG4gICAgICA8aGVhZGVyIGNsYXNzPVwicGFnZS1oZWFkZXJcIj5cbiAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGNvbnRlbnQ6IHR0KCdwYWdlVGl0bGUnKSB9XCIgLz5cbiAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDogdHQoJ3BhZ2VEZXNjcmlwdGlvbicpLFxuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgPC9oZWFkZXI+XG5cbiAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLXJvd1wiPlxuICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKGxvYWRFcnJvcigpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci1yb3dcIj5cbiAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdlcnJvclRpdGxlJyksXG4gICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwicmV0cnlCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cImxvYWQoKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93U3lzdGVtUm9sZXMpIHtcbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInBlcm0tc2VjdGlvblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm0tc2VjdGlvbl9faGVhZGVyXCI+XG4gICAgICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdzeXN0ZW1Sb2xlc1RpdGxlJyksXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiB0dCgnc3lzdGVtUm9sZXNIaW50JyksXG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm9sZS1saXN0XCI+XG4gICAgICAgICAgICAgIEBmb3IgKHJvbGUgb2Ygc3lzdGVtUm9sZXMoKTsgdHJhY2sgcm9sZS5pZCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWNhcmRfX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvbGUtY2FyZF9fbmFtZVwiPnt7IHJvbGVMYWJlbChyb2xlLm5hbWUpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8dmFsLXBpbGxcbiAgICAgICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHR0KCdzeXN0ZW1CYWRnZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodDogJ2JvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJvbGUuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb2xlLWNhcmRfX2Rlc2NcIj57eyByb2xlLmRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmICghcm9sZS5oYXNQZXJtcykge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybS1jaGlwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybS1jaGlwIHBlcm0tY2hpcC0tZW1wdHlcIj57eyB0dCgnbm9QZXJtaXNzaW9ucycpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAZm9yIChnIG9mIHJvbGUuZ3JvdXBzOyB0cmFjayBnLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcm0tZ3JvdXBfX2xhYmVsXCI+e3sgZy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtLWNoaXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHAgb2YgZy5wZXJtczsgdHJhY2sgcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybS1jaGlwXCI+e3sgcCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dDdXN0b21Sb2xlcykge1xuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwicGVybS1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybS1zZWN0aW9uX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgY29udGVudDogdHQoJ2N1c3RvbVJvbGVzVGl0bGUnKSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdjdXN0b21Sb2xlc0hpbnQnKSxcbiAgICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoY3VzdG9tUm9sZXMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdub0N1c3RvbVJvbGVzJyksXG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWxpc3RcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChyb2xlIG9mIGN1c3RvbVJvbGVzKCk7IHRyYWNrIHJvbGUuaWQpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvbGUtY2FyZF9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb2xlLWNhcmRfX25hbWVcIj57eyByb2xlLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHJvbGUuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvbGUtY2FyZF9fZGVzY1wiPnt7IHJvbGUuZGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmICghcm9sZS5oYXNQZXJtcykge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtLWNoaXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcm0tY2hpcCBwZXJtLWNoaXAtLWVtcHR5XCI+e3sgdHQoJ25vUGVybWlzc2lvbnMnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGZvciAoZyBvZiByb2xlLmdyb3VwczsgdHJhY2sgZy5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybS1ncm91cF9fbGFiZWxcIj57eyBnLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybS1jaGlwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHAgb2YgZy5wZXJtczsgdHJhY2sgcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJtLWNoaXBcIj57eyBwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5wYWdlIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgICBtYXgtd2lkdGg6IDcyMHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIH1cbiAgICAgIC5wYWdlLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gICAgICB9XG4gICAgICAuc3Bpbm5lci1yb3csXG4gICAgICAuZXJyb3Itcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxNnB4O1xuICAgICAgICBwYWRkaW5nOiAzMnB4IDA7XG4gICAgICB9XG4gICAgICAucGVybS1zZWN0aW9uIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzJweDtcbiAgICAgIH1cbiAgICAgIC5wZXJtLXNlY3Rpb25fX2hlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgICB9XG4gICAgICAucm9sZS1saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuICAgICAgLnJvbGUtY2FyZCB7XG4gICAgICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxNnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG4gICAgICAucm9sZS1jYXJkX19oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgfVxuICAgICAgLnJvbGUtY2FyZF9fbmFtZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5yb2xlLWNhcmRfX2Rlc2Mge1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWdyb3VwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICB9XG4gICAgICAucGVybS1ncm91cF9fbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWNoaXBzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWNoaXAge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDNweCAxMHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLnBlcm0tY2hpcC0tZW1wdHkge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnNWaWV3Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBvcmdTZXJ2aWNlID0gaW5qZWN0KE9yZ1NlcnZpY2UpO1xuICBwcml2YXRlIGNhdGFsb2cgPSBpbmplY3QoUGVybWlzc2lvbkNhdGFsb2dTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIC8qKlxuICAgKiBDb25maWcgdsOtYSBASW5wdXQgKG9iamVjdC1maXJzdCkuIFNpIG5vIHNlIHBhc2EsIHNlIGNhZSBhbCByb3V0ZSBkYXRhXG4gICAqIGBwZXJtaXNzaW9uc0NvbmZpZ2AgKHBvYmxhZG8gcG9yIGBwcm92aWRlVmFsdGVjaFBlcm1pc3Npb25zUm91dGVzYCkuXG4gICAqIGByZXNvbHZlZENvbmZpZ2AgbWVyZ2VhIGNvbiBsb3MgZGVmYXVsdHMg4oCUIGBASW5wdXRgIGdhbmEgc29icmUgcm91dGUgZGF0YS5cbiAgICovXG4gIEBJbnB1dCgpIGNvbmZpZz86IFBlcm1pc3Npb25zVmlld0NvbmZpZztcblxuICByZWFkb25seSByZXNvbHZlZENvbmZpZyA9IGNvbXB1dGVkPFJlcXVpcmVkPFBlcm1pc3Npb25zVmlld0NvbmZpZz4+KCgpID0+IHtcbiAgICBjb25zdCBmcm9tUm91dGUgPSAodGhpcy5yb3V0ZT8uc25hcHNob3QuZGF0YVsncGVybWlzc2lvbnNDb25maWcnXSA/PyB7fSkgYXMgUGVybWlzc2lvbnNWaWV3Q29uZmlnO1xuICAgIGNvbnN0IG1lcmdlZDogUGVybWlzc2lvbnNWaWV3Q29uZmlnID0geyAuLi5mcm9tUm91dGUsIC4uLih0aGlzLmNvbmZpZyA/PyB7fSkgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc2hvd1N5c3RlbVJvbGVzOiBtZXJnZWQuc2hvd1N5c3RlbVJvbGVzID8/IHRydWUsXG4gICAgICBzaG93Q3VzdG9tUm9sZXM6IG1lcmdlZC5zaG93Q3VzdG9tUm9sZXMgPz8gdHJ1ZSxcbiAgICAgIGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgIH07XG4gIH0pO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biByZXN1ZWx0byAoY2FwdHVyYWRvIHBhcmEgbGxhbWFkYXMgbm8tcmVhY3RpdmFzKS4gKi9cbiAgcHJpdmF0ZSBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9hZEVycm9yID0gc2lnbmFsPHVua25vd24gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb2xlcyA9IHNpZ25hbDxSb2xlVmlld1tdPihbXSk7XG5cbiAgcmVhZG9ubHkgc3lzdGVtUm9sZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJvbGVzKCkuZmlsdGVyKHIgPT4gci5pc1N5c3RlbSkpO1xuICByZWFkb25seSBjdXN0b21Sb2xlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMucm9sZXMoKS5maWx0ZXIociA9PiAhci5pc1N5c3RlbSkpO1xuXG4gIHJlYWRvbmx5IGFjdGl2ZU9yZ0lkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHUgPSB0aGlzLmF1dGgudXNlcigpIGFzIHtcbiAgICAgIGFjdGl2ZU9yZ0lkPzogc3RyaW5nO1xuICAgICAgYWN0aXZlT3JnPzogc3RyaW5nO1xuICAgIH0gfCBudWxsO1xuICAgIHJldHVybiB1Py5hY3RpdmVPcmdJZCA/PyB1Py5hY3RpdmVPcmcgPz8gJyc7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHJldHJ5QnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdyZXRyeScpLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICBzdGF0ZTogdGhpcy5sb2FkaW5nKCkgPyBDb21wb25lbnRTdGF0ZXMuRElTQUJMRUQgOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgfSkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UobnMpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KG5zLCBQRVJNSVNTSU9OU19WSUVXX0kxOE4pO1xuICAgIH1cbiAgICB0aGlzLm5hdi5zZXRCYWNrSGVhZGVyKCdwYWdlVGl0bGUnLCBucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgICB0aGlzLmxvYWQoKTtcbiAgICBjb25uZWN0UGFnZVJlZnJlc2goKCkgPT4gdGhpcy5sb2FkKCkpO1xuICB9XG5cbiAgbG9hZCgpOiB2b2lkIHtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMuYWN0aXZlT3JnSWQoKTtcbiAgICBpZiAoIW9yZ0lkKSByZXR1cm47XG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmxvYWRFcnJvci5zZXQobnVsbCk7XG4gICAgZm9ya0pvaW4oe1xuICAgICAgcm9sZXM6IHRoaXMub3JnU2VydmljZS5saXN0T3JnUm9sZXMob3JnSWQpLFxuICAgICAgY2F0YWxvZzogdGhpcy5jYXRhbG9nLmdldENhdGFsb2cob3JnSWQpLFxuICAgIH0pLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoeyByb2xlczogcmF3Um9sZXMsIGNhdGFsb2cgfSkgPT4ge1xuICAgICAgICBjb25zdCBieVJlc291cmNlID0gbmV3IE1hcDxzdHJpbmcsIFBlcm1pc3Npb25SZXNvdXJjZT4oKTtcbiAgICAgICAgZm9yIChjb25zdCByIG9mIGNhdGFsb2cucGVybWlzc2lvbnMpIGJ5UmVzb3VyY2Uuc2V0KHIucmVzb3VyY2UsIHIpO1xuICAgICAgICBjb25zdCBjdXJyZW50QXBwSWQgPSBjYXRhbG9nLmFwcElkO1xuICAgICAgICB0aGlzLnJvbGVzLnNldChcbiAgICAgICAgICAocmF3Um9sZXMgPz8gW10pLm1hcCgocjogYW55KSA9PlxuICAgICAgICAgICAgdGhpcy5idWlsZFJvbGVWaWV3KFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IHIuaWQsXG4gICAgICAgICAgICAgICAgbmFtZTogci5uYW1lLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiByLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zOiByLnBlcm1pc3Npb25zID8/IFtdLFxuICAgICAgICAgICAgICAgIGlzU3lzdGVtOiByLmlzU3lzdGVtID8/IGZhbHNlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBieVJlc291cmNlLFxuICAgICAgICAgICAgICBjdXJyZW50QXBwSWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLmxvYWRFcnJvci5zZXQoZXJyKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJvbGVWaWV3KFxuICAgIHJvbGU6IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICAgIHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbiAgICAgIGlzU3lzdGVtOiBib29sZWFuO1xuICAgIH0sXG4gICAgYnlSZXNvdXJjZTogTWFwPHN0cmluZywgUGVybWlzc2lvblJlc291cmNlPixcbiAgICBjdXJyZW50QXBwSWQ6IHN0cmluZ1xuICApOiBSb2xlVmlldyB7XG4gICAgY29uc3QgYXBwUGVybXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3Qgb3JnUGVybXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3Qgb3RoZXJCeUFwcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcblxuICAgIGZvciAoY29uc3QgcGVybSBvZiByb2xlLnBlcm1pc3Npb25zKSB7XG4gICAgICBjb25zdCBbcmVzb3VyY2UsIGFjdGlvbl0gPSBwZXJtLnNwbGl0KCc6Jyk7XG4gICAgICBjb25zdCBlbnRyeSA9IGJ5UmVzb3VyY2UuZ2V0KHJlc291cmNlKTtcbiAgICAgIC8vIGludGVybmFsIChvcGVyYWNpw7NuIGRlIHBsYXRhZm9ybWEpIE5VTkNBIHNlIG11ZXN0cmEgYSBuaXZlbCBkZSBwcm9kdWN0b1xuICAgICAgLy8g4oCUIGRlZmVuc2EgZW4gcHJvZnVuZGlkYWQganVudG8gYWwgZmlsdHJvIGRlbCBiYWNrZW5kIChBRFItMDI0KS5cbiAgICAgIGlmIChlbnRyeT8uc2NvcGUgPT09ICdpbnRlcm5hbCcpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBsYWJlbCA9IHRoaXMucGVybUxhYmVsKHJlc291cmNlLCBhY3Rpb24pO1xuICAgICAgaWYgKGVudHJ5Py5zY29wZSA9PT0gJ2FwcCcpIHtcbiAgICAgICAgaWYgKGVudHJ5LmFwcElkID09PSBjdXJyZW50QXBwSWQpIHtcbiAgICAgICAgICBhcHBQZXJtcy5wdXNoKGxhYmVsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBhcHBJZCA9IGVudHJ5LmFwcElkID8/ICc/JztcbiAgICAgICAgICBjb25zdCBhcnIgPSBvdGhlckJ5QXBwLmdldChhcHBJZCkgPz8gW107XG4gICAgICAgICAgYXJyLnB1c2gobGFiZWwpO1xuICAgICAgICAgIG90aGVyQnlBcHAuc2V0KGFwcElkLCBhcnIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBvcmcgbyBkZXNjb25vY2lkbyDihpIgZ2VzdGnDs24gZGUgbGEgb3JnYW5pemFjacOzbiBkZWwgY2xpZW50ZVxuICAgICAgICBvcmdQZXJtcy5wdXNoKGxhYmVsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBncm91cHM6IFBlcm1Hcm91cFZpZXdbXSA9IFtdO1xuICAgIGlmIChhcHBQZXJtcy5sZW5ndGgpIHtcbiAgICAgIGdyb3Vwcy5wdXNoKHsga2V5OiAnYXBwJywgbGFiZWw6IHRoaXMudHQoJ2dyb3VwQXBwJyksIHBlcm1zOiBhcHBQZXJtcyB9KTtcbiAgICB9XG4gICAgaWYgKG9yZ1Blcm1zLmxlbmd0aCkge1xuICAgICAgZ3JvdXBzLnB1c2goe1xuICAgICAgICBrZXk6ICdvcmcnLFxuICAgICAgICBsYWJlbDogdGhpcy50dCgnZ3JvdXBPcmcnKSxcbiAgICAgICAgcGVybXM6IG9yZ1Blcm1zLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgW2FwcElkLCBwZXJtc10gb2Ygb3RoZXJCeUFwcCkge1xuICAgICAgZ3JvdXBzLnB1c2goe1xuICAgICAgICBrZXk6IGBvdGhlcjoke2FwcElkfWAsXG4gICAgICAgIGxhYmVsOiBgJHt0aGlzLnR0KCdncm91cE90aGVyJyl9OiAke3RoaXMuYXBwTGFiZWwoYXBwSWQpfWAsXG4gICAgICAgIHBlcm1zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiByb2xlLmlkLFxuICAgICAgbmFtZTogcm9sZS5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHJvbGUuZGVzY3JpcHRpb24sXG4gICAgICBpc1N5c3RlbTogcm9sZS5pc1N5c3RlbSxcbiAgICAgIGdyb3VwcyxcbiAgICAgIGhhc1Blcm1zOiBncm91cHMubGVuZ3RoID4gMCxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHR0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxuXG4gIGFwcExhYmVsKGFwcElkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGtleSA9IGBhcHBfJHthcHBJZH1gO1xuICAgIGNvbnN0IGxhYmVsID0gdGhpcy50dChrZXkpO1xuICAgIHJldHVybiBsYWJlbCA9PT0ga2V5ID8gYXBwSWQgOiBsYWJlbDtcbiAgfVxuXG4gIHJvbGVMYWJlbChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIHZpZXdlcjogJ3JvbGVWaWV3ZXInLFxuICAgICAgZWRpdG9yOiAncm9sZUVkaXRvcicsXG4gICAgICBhZG1pbjogJ3JvbGVBZG1pbicsXG4gICAgICBzdXBlcl9hZG1pbjogJ3JvbGVTdXBlckFkbWluJyxcbiAgICAgIGJpbmdvX2FkbWluOiAncm9sZUJpbmdvQWRtaW4nLFxuICAgICAgYmluZ29fdGVzb3Jlcm86ICdyb2xlQmluZ29UZXNvcmVybycsXG4gICAgICBiaW5nb190YXF1aWxsYTogJ3JvbGVCaW5nb1RhcXVpbGxhJyxcbiAgICAgIGJpbmdvX29wZXJhdG9yOiAncm9sZUJpbmdvT3BlcmF0b3InLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMudHQobWFwW25hbWVdID8/IG5hbWUpO1xuICB9XG5cbiAgcGVybUxhYmVsKHJlc291cmNlOiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAocmVzb3VyY2UgPT09ICcqJyAmJiBhY3Rpb24gPT09ICcqJykgcmV0dXJuIHRoaXMudHQoJ3Blcm1BbGwnKTtcbiAgICBjb25zdCByZXNLZXkgPSByZXNvdXJjZSA9PT0gJyonID8gJ3Blcm1BbGwnIDogYHBlcm0ke3Jlc291cmNlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7cmVzb3VyY2Uuc2xpY2UoMSl9YDtcbiAgICBjb25zdCBhY3RLZXkgPSBhY3Rpb24gPT09ICcqJyA/ICdwZXJtQWxsJyA6IGBwZXJtJHthY3Rpb24uY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHthY3Rpb24uc2xpY2UoMSl9YDtcbiAgICBjb25zdCByZXMgPSB0aGlzLnR0KHJlc0tleSk7XG4gICAgY29uc3QgYWN0ID0gdGhpcy50dChhY3RLZXkpO1xuICAgIHJldHVybiBgJHtyZXN9OiAke2FjdH1gO1xuICB9XG59XG4iXX0=
|
|
519
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3Blcm1pc3Npb25zLXZpZXcvcGVybWlzc2lvbnMtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQWtCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUN6RixPQUFPLEVB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QUFNLENBQUMsQ0FBQztRQUM1QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLE9BQU8sR0FBRyxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQzsrR0EzTVUsd0JBQXdCO21HQUF4Qix3QkFBd0IsOEdBOU96Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3SlQsdXFDQXpKUyxVQUFVLHlHQUFFLGdCQUFnQiwyRUFBRSxhQUFhLHdIQUFFLGNBQWMseUVBQUUsYUFBYSx3RUFBRSxlQUFlOzs0RkErTzFGLHdCQUF3QjtrQkFsUHBDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsWUFDNUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0pUO3dEQW1HUSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIElucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvblNwaW5uZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFBpbGxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGlsbC9waWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvb3JnLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29ubmVjdFBhZ2VSZWZyZXNoIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1yZWZyZXNoL3BhZ2UtcmVmcmVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25DYXRhbG9nU2VydmljZSwgUGVybWlzc2lvblJlc291cmNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL3Blcm1pc3Npb24tY2F0YWxvZy5zZXJ2aWNlJztcblxuaW1wb3J0IHsgUGVybWlzc2lvbnNWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBQRVJNSVNTSU9OU19WSUVXX0kxOE4gfSBmcm9tICcuL3Blcm1pc3Npb25zLXZpZXcuaTE4bic7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ1NldHRpbmdzLlBlcm1pc3Npb25zJztcblxuaW50ZXJmYWNlIFBlcm1Hcm91cFZpZXcge1xuICBrZXk6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgcGVybXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgUm9sZVZpZXcge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpc1N5c3RlbTogYm9vbGVhbjtcbiAgZ3JvdXBzOiBQZXJtR3JvdXBWaWV3W107XG4gIGhhc1Blcm1zOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGB2YWwtcGVybWlzc2lvbnMtdmlld2Ag4oCUIHZpc3RhIFBlcm1pc29zIGZ1bGwtZmVhdHVyZSBhdXRvY29udGVuaWRhIChvcmdhbmlzbSkuXG4gKiBWaXNvciBSQkFDIGRlIHNvbG8gbGVjdHVyYTogbXVlc3RyYSBsb3Mgcm9sZXMgZGVsIHNpc3RlbWEgKFZpc29yL0VkaXRvci9BZG1pbiArXG4gKiByb2xlcyBkZSBwbGF0YWZvcm1hKSB5IGxvcyByb2xlcyBwZXJzb25hbGl6YWRvcyBkZSBsYSBvcmcgYWN0aXZhLCBjb24gZWxcbiAqIGNhdMOhbG9nbyBkZSBwZXJtaXNvcyBhZ3J1cGFkbyBwb3IgYWxjYW5jZSAoYXBwIGFjdHVhbCAvIHBsYXRhZm9ybWEgLyBvdHJhcyBhcHBzKS5cbiAqIFByb21vdmlkYSBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLlxuICpcbiAqICoqUkJBQyBpbnRlcm5vKiogKGNvbW8gYG9yZ2FuaXphdGlvbi12aWV3YCk6IGxlZSBsYSBvcmcgYWN0aXZhIHbDrWFcbiAqIGBBdXRoU2VydmljZS51c2VyKCkuYWN0aXZlT3JnSWRgLiBMYSB2aXN0YSBOTyBtdXRhIG5hZGEg4oCUIGVsIGNvbnRyb2wgZGUgcXVpw6luXG4gKiBwdWVkZSB2ZXJsYSBlcyByZXNwb25zYWJpbGlkYWQgZGVsIGd1YXJkIGRlIHJ1dGEgZGVsIGNvbnN1bWVyOyBubyBoYXkgZ2F0aW5nXG4gKiBmaW5vIGludGVybm8gbmkgc2UgZXhwb25lIGNvbW8gY29uZmlnLlxuICpcbiAqIERhdG9zOiBgZm9ya0pvaW5gIGRlIGBPcmdTZXJ2aWNlLmxpc3RPcmdSb2xlcyhvcmdJZClgIChyb2xlcyBkZSBsYSBvcmcpICtcbiAqIGBQZXJtaXNzaW9uQ2F0YWxvZ1NlcnZpY2UuZ2V0Q2F0YWxvZyhvcmdJZClgIChjYXTDoWxvZ28gKyBhcHBJZCBhY3R1YWwpLiBFbFxuICogY2F0w6Fsb2dvIGRlZmluZSBlbCBhbGNhbmNlIChgc2NvcGVgL2BhcHBJZGApIGRlIGNhZGEgcmVjdXJzbyBwYXJhIGFncnVwYXIuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLiBgQWN0aXZhdGVkUm91dGVgIHNlXG4gKiBpbnllY3RhIGB7IG9wdGlvbmFsOiB0cnVlIH1gIHNvbG8gcGFyYSBsZWVyIGVsIHJvdXRlIGRhdGEgZGUgY29uZmlnLiBBdXRvLXJlZ2lzdHJhXG4gKiBzdXMgZGVmYXVsdHMgaTE4biAoZXMvZW4pIHNpIGVsIGNvbnN1bWVyIG5vIHByb3ZlecOzIGVsIG5hbWVzcGFjZSAoZGVmYXVsdFxuICogYFNldHRpbmdzLlBlcm1pc3Npb25zYCkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wZXJtaXNzaW9ucy12aWV3JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvblNwaW5uZXIsIERpc3BsYXlDb21wb25lbnQsIFBpbGxDb21wb25lbnQsIFRpdGxlQ29tcG9uZW50LCBUZXh0Q29tcG9uZW50LCBCdXR0b25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJwYWdlXCI+XG4gICAgICA8aGVhZGVyIGNsYXNzPVwicGFnZS1oZWFkZXJcIj5cbiAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGNvbnRlbnQ6IHR0KCdwYWdlVGl0bGUnKSB9XCIgLz5cbiAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDogdHQoJ3BhZ2VEZXNjcmlwdGlvbicpLFxuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgPC9oZWFkZXI+XG5cbiAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLXJvd1wiPlxuICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKGxvYWRFcnJvcigpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci1yb3dcIj5cbiAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdlcnJvclRpdGxlJyksXG4gICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwicmV0cnlCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cImxvYWQoKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93U3lzdGVtUm9sZXMpIHtcbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInBlcm0tc2VjdGlvblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm0tc2VjdGlvbl9faGVhZGVyXCI+XG4gICAgICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdzeXN0ZW1Sb2xlc1RpdGxlJyksXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiB0dCgnc3lzdGVtUm9sZXNIaW50JyksXG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm9sZS1saXN0XCI+XG4gICAgICAgICAgICAgIEBmb3IgKHJvbGUgb2Ygc3lzdGVtUm9sZXMoKTsgdHJhY2sgcm9sZS5pZCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWNhcmRfX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvbGUtY2FyZF9fbmFtZVwiPnt7IHJvbGVMYWJlbChyb2xlLm5hbWUpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8dmFsLXBpbGxcbiAgICAgICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHR0KCdzeXN0ZW1CYWRnZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodDogJ2JvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJvbGUuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb2xlLWNhcmRfX2Rlc2NcIj57eyByb2xlLmRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmICghcm9sZS5oYXNQZXJtcykge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybS1jaGlwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybS1jaGlwIHBlcm0tY2hpcC0tZW1wdHlcIj57eyB0dCgnbm9QZXJtaXNzaW9ucycpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAZm9yIChnIG9mIHJvbGUuZ3JvdXBzOyB0cmFjayBnLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcm0tZ3JvdXBfX2xhYmVsXCI+e3sgZy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtLWNoaXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHAgb2YgZy5wZXJtczsgdHJhY2sgcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybS1jaGlwXCI+e3sgcCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dDdXN0b21Sb2xlcykge1xuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwicGVybS1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybS1zZWN0aW9uX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgY29udGVudDogdHQoJ2N1c3RvbVJvbGVzVGl0bGUnKSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdjdXN0b21Sb2xlc0hpbnQnKSxcbiAgICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoY3VzdG9tUm9sZXMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdub0N1c3RvbVJvbGVzJyksXG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWxpc3RcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChyb2xlIG9mIGN1c3RvbVJvbGVzKCk7IHRyYWNrIHJvbGUuaWQpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvbGUtY2FyZF9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb2xlLWNhcmRfX25hbWVcIj57eyByb2xlLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHJvbGUuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvbGUtY2FyZF9fZGVzY1wiPnt7IHJvbGUuZGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmICghcm9sZS5oYXNQZXJtcykge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtLWNoaXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcm0tY2hpcCBwZXJtLWNoaXAtLWVtcHR5XCI+e3sgdHQoJ25vUGVybWlzc2lvbnMnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGZvciAoZyBvZiByb2xlLmdyb3VwczsgdHJhY2sgZy5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybS1ncm91cF9fbGFiZWxcIj57eyBnLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybS1jaGlwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHAgb2YgZy5wZXJtczsgdHJhY2sgcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJtLWNoaXBcIj57eyBwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5wYWdlIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgICBtYXgtd2lkdGg6IDcyMHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIH1cbiAgICAgIC5wYWdlLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gICAgICB9XG4gICAgICAuc3Bpbm5lci1yb3csXG4gICAgICAuZXJyb3Itcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxNnB4O1xuICAgICAgICBwYWRkaW5nOiAzMnB4IDA7XG4gICAgICB9XG4gICAgICAucGVybS1zZWN0aW9uIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzJweDtcbiAgICAgIH1cbiAgICAgIC5wZXJtLXNlY3Rpb25fX2hlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgICB9XG4gICAgICAucm9sZS1saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuICAgICAgLnJvbGUtY2FyZCB7XG4gICAgICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxNnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG4gICAgICAucm9sZS1jYXJkX19oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgfVxuICAgICAgLnJvbGUtY2FyZF9fbmFtZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5yb2xlLWNhcmRfX2Rlc2Mge1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWdyb3VwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICB9XG4gICAgICAucGVybS1ncm91cF9fbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWNoaXBzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWNoaXAge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDNweCAxMHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLnBlcm0tY2hpcC0tZW1wdHkge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnNWaWV3Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBvcmdTZXJ2aWNlID0gaW5qZWN0KE9yZ1NlcnZpY2UpO1xuICBwcml2YXRlIGNhdGFsb2cgPSBpbmplY3QoUGVybWlzc2lvbkNhdGFsb2dTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIC8qKlxuICAgKiBDb25maWcgdsOtYSBASW5wdXQgKG9iamVjdC1maXJzdCkuIFNpIG5vIHNlIHBhc2EsIHNlIGNhZSBhbCByb3V0ZSBkYXRhXG4gICAqIGBwZXJtaXNzaW9uc0NvbmZpZ2AgKHBvYmxhZG8gcG9yIGBwcm92aWRlVmFsdGVjaFBlcm1pc3Npb25zUm91dGVzYCkuXG4gICAqIGByZXNvbHZlZENvbmZpZ2AgbWVyZ2VhIGNvbiBsb3MgZGVmYXVsdHMg4oCUIGBASW5wdXRgIGdhbmEgc29icmUgcm91dGUgZGF0YS5cbiAgICovXG4gIEBJbnB1dCgpIGNvbmZpZz86IFBlcm1pc3Npb25zVmlld0NvbmZpZztcblxuICByZWFkb25seSByZXNvbHZlZENvbmZpZyA9IGNvbXB1dGVkPFJlcXVpcmVkPFBlcm1pc3Npb25zVmlld0NvbmZpZz4+KCgpID0+IHtcbiAgICBjb25zdCBmcm9tUm91dGUgPSAodGhpcy5yb3V0ZT8uc25hcHNob3QuZGF0YVsncGVybWlzc2lvbnNDb25maWcnXSA/PyB7fSkgYXMgUGVybWlzc2lvbnNWaWV3Q29uZmlnO1xuICAgIGNvbnN0IG1lcmdlZDogUGVybWlzc2lvbnNWaWV3Q29uZmlnID0geyAuLi5mcm9tUm91dGUsIC4uLih0aGlzLmNvbmZpZyA/PyB7fSkgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc2hvd1N5c3RlbVJvbGVzOiBtZXJnZWQuc2hvd1N5c3RlbVJvbGVzID8/IHRydWUsXG4gICAgICBzaG93Q3VzdG9tUm9sZXM6IG1lcmdlZC5zaG93Q3VzdG9tUm9sZXMgPz8gdHJ1ZSxcbiAgICAgIGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgIH07XG4gIH0pO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biByZXN1ZWx0byAoY2FwdHVyYWRvIHBhcmEgbGxhbWFkYXMgbm8tcmVhY3RpdmFzKS4gKi9cbiAgcHJpdmF0ZSBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9hZEVycm9yID0gc2lnbmFsPHVua25vd24gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb2xlcyA9IHNpZ25hbDxSb2xlVmlld1tdPihbXSk7XG5cbiAgcmVhZG9ubHkgc3lzdGVtUm9sZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJvbGVzKCkuZmlsdGVyKHIgPT4gci5pc1N5c3RlbSkpO1xuICByZWFkb25seSBjdXN0b21Sb2xlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMucm9sZXMoKS5maWx0ZXIociA9PiAhci5pc1N5c3RlbSkpO1xuXG4gIHJlYWRvbmx5IGFjdGl2ZU9yZ0lkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHUgPSB0aGlzLmF1dGgudXNlcigpIGFzIHtcbiAgICAgIGFjdGl2ZU9yZ0lkPzogc3RyaW5nO1xuICAgICAgYWN0aXZlT3JnPzogc3RyaW5nO1xuICAgIH0gfCBudWxsO1xuICAgIHJldHVybiB1Py5hY3RpdmVPcmdJZCA/PyB1Py5hY3RpdmVPcmcgPz8gJyc7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHJldHJ5QnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdyZXRyeScpLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICBzdGF0ZTogdGhpcy5sb2FkaW5nKCkgPyBDb21wb25lbnRTdGF0ZXMuRElTQUJMRUQgOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgfSkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UobnMpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KG5zLCBQRVJNSVNTSU9OU19WSUVXX0kxOE4pO1xuICAgIH1cbiAgICB0aGlzLm5hdi5zZXRCYWNrSGVhZGVyKCdwYWdlVGl0bGUnLCBucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgICB0aGlzLmxvYWQoKTtcbiAgICBjb25uZWN0UGFnZVJlZnJlc2goKCkgPT4gdGhpcy5sb2FkKCkpO1xuICB9XG5cbiAgbG9hZCgpOiB2b2lkIHtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMuYWN0aXZlT3JnSWQoKTtcbiAgICBpZiAoIW9yZ0lkKSByZXR1cm47XG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmxvYWRFcnJvci5zZXQobnVsbCk7XG4gICAgZm9ya0pvaW4oe1xuICAgICAgcm9sZXM6IHRoaXMub3JnU2VydmljZS5saXN0T3JnUm9sZXMob3JnSWQpLFxuICAgICAgY2F0YWxvZzogdGhpcy5jYXRhbG9nLmdldENhdGFsb2cob3JnSWQpLFxuICAgIH0pLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoeyByb2xlczogcmF3Um9sZXMsIGNhdGFsb2cgfSkgPT4ge1xuICAgICAgICBjb25zdCBieVJlc291cmNlID0gbmV3IE1hcDxzdHJpbmcsIFBlcm1pc3Npb25SZXNvdXJjZT4oKTtcbiAgICAgICAgZm9yIChjb25zdCByIG9mIGNhdGFsb2cucGVybWlzc2lvbnMpIGJ5UmVzb3VyY2Uuc2V0KHIucmVzb3VyY2UsIHIpO1xuICAgICAgICBjb25zdCBjdXJyZW50QXBwSWQgPSBjYXRhbG9nLmFwcElkO1xuICAgICAgICB0aGlzLnJvbGVzLnNldChcbiAgICAgICAgICAocmF3Um9sZXMgPz8gW10pLm1hcCgocjogYW55KSA9PlxuICAgICAgICAgICAgdGhpcy5idWlsZFJvbGVWaWV3KFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IHIuaWQsXG4gICAgICAgICAgICAgICAgbmFtZTogci5uYW1lLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiByLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zOiByLnBlcm1pc3Npb25zID8/IFtdLFxuICAgICAgICAgICAgICAgIGlzU3lzdGVtOiByLmlzU3lzdGVtID8/IGZhbHNlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBieVJlc291cmNlLFxuICAgICAgICAgICAgICBjdXJyZW50QXBwSWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLmxvYWRFcnJvci5zZXQoZXJyKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJvbGVWaWV3KFxuICAgIHJvbGU6IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICAgIHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbiAgICAgIGlzU3lzdGVtOiBib29sZWFuO1xuICAgIH0sXG4gICAgYnlSZXNvdXJjZTogTWFwPHN0cmluZywgUGVybWlzc2lvblJlc291cmNlPixcbiAgICBjdXJyZW50QXBwSWQ6IHN0cmluZ1xuICApOiBSb2xlVmlldyB7XG4gICAgY29uc3QgYXBwUGVybXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3Qgb3JnUGVybXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3Qgb3RoZXJCeUFwcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcblxuICAgIGZvciAoY29uc3QgcGVybSBvZiByb2xlLnBlcm1pc3Npb25zKSB7XG4gICAgICBjb25zdCBbcmVzb3VyY2UsIGFjdGlvbl0gPSBwZXJtLnNwbGl0KCc6Jyk7XG4gICAgICBjb25zdCBlbnRyeSA9IGJ5UmVzb3VyY2UuZ2V0KHJlc291cmNlKTtcbiAgICAgIC8vIFNpbiBlbnRyYWRhIGVuIGVsIGNhdMOhbG9nbyAoZWwgYmFja2VuZCBvbWl0ZSBsb3MgcmVjdXJzb3MgaW50ZXJuYWwgcGFyYVxuICAgICAgLy8gbm8tcGxhdGZvcm0tYWRtaW5zKSBvIGVudHJhZGEgaW50ZXJuYWwg4oaSIE5VTkNBIHNlIG11ZXN0cmEgYSBuaXZlbCBkZVxuICAgICAgLy8gcHJvZHVjdG8uIERlZmVuc2EgZW4gcHJvZnVuZGlkYWQganVudG8gYWwgZmlsdHJvIGRlbCBiYWNrZW5kIChBRFItMDI0KS5cbiAgICAgIC8vIE5vdGE6IGVsIHJvbCBwdWVkZSB0cmFlciBlbCBwZXJtaXNvIGF1bnF1ZSBlbCByZWN1cnNvIGVzdMOpIGZpbHRyYWRvIGRlbFxuICAgICAgLy8gY2F0w6Fsb2dvIChlai4gYWRtaW4gdGllbmUgdGVtcGxhdGVzOiopOyBwb3IgZXNvIHNlIGRlc2NhcnRhIGxvIG5vIHJlc3VlbHRvLlxuICAgICAgaWYgKCFlbnRyeSB8fCBlbnRyeS5zY29wZSA9PT0gJ2ludGVybmFsJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5wZXJtTGFiZWwocmVzb3VyY2UsIGFjdGlvbik7XG4gICAgICBpZiAoZW50cnkuc2NvcGUgPT09ICdhcHAnKSB7XG4gICAgICAgIGlmIChlbnRyeS5hcHBJZCA9PT0gY3VycmVudEFwcElkKSB7XG4gICAgICAgICAgYXBwUGVybXMucHVzaChsYWJlbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgYXBwSWQgPSBlbnRyeS5hcHBJZCA/PyAnPyc7XG4gICAgICAgICAgY29uc3QgYXJyID0gb3RoZXJCeUFwcC5nZXQoYXBwSWQpID8/IFtdO1xuICAgICAgICAgIGFyci5wdXNoKGxhYmVsKTtcbiAgICAgICAgICBvdGhlckJ5QXBwLnNldChhcHBJZCwgYXJyKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc2NvcGUgPT09ICdvcmcnIOKGkiBnZXN0acOzbiBkZSBsYSBvcmdhbml6YWNpw7NuIGRlbCBjbGllbnRlXG4gICAgICAgIG9yZ1Blcm1zLnB1c2gobGFiZWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGdyb3VwczogUGVybUdyb3VwVmlld1tdID0gW107XG4gICAgaWYgKGFwcFBlcm1zLmxlbmd0aCkge1xuICAgICAgZ3JvdXBzLnB1c2goeyBrZXk6ICdhcHAnLCBsYWJlbDogdGhpcy50dCgnZ3JvdXBBcHAnKSwgcGVybXM6IGFwcFBlcm1zIH0pO1xuICAgIH1cbiAgICBpZiAob3JnUGVybXMubGVuZ3RoKSB7XG4gICAgICBncm91cHMucHVzaCh7XG4gICAgICAgIGtleTogJ29yZycsXG4gICAgICAgIGxhYmVsOiB0aGlzLnR0KCdncm91cE9yZycpLFxuICAgICAgICBwZXJtczogb3JnUGVybXMsXG4gICAgICB9KTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBbYXBwSWQsIHBlcm1zXSBvZiBvdGhlckJ5QXBwKSB7XG4gICAgICBncm91cHMucHVzaCh7XG4gICAgICAgIGtleTogYG90aGVyOiR7YXBwSWR9YCxcbiAgICAgICAgbGFiZWw6IGAke3RoaXMudHQoJ2dyb3VwT3RoZXInKX06ICR7dGhpcy5hcHBMYWJlbChhcHBJZCl9YCxcbiAgICAgICAgcGVybXMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHJvbGUuaWQsXG4gICAgICBuYW1lOiByb2xlLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcm9sZS5kZXNjcmlwdGlvbixcbiAgICAgIGlzU3lzdGVtOiByb2xlLmlzU3lzdGVtLFxuICAgICAgZ3JvdXBzLFxuICAgICAgaGFzUGVybXM6IGdyb3Vwcy5sZW5ndGggPiAwLFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgdHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMubnMpO1xuICB9XG5cbiAgYXBwTGFiZWwoYXBwSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qga2V5ID0gYGFwcF8ke2FwcElkfWA7XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLnR0KGtleSk7XG4gICAgcmV0dXJuIGxhYmVsID09PSBrZXkgPyBhcHBJZCA6IGxhYmVsO1xuICB9XG5cbiAgcm9sZUxhYmVsKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgdmlld2VyOiAncm9sZVZpZXdlcicsXG4gICAgICBlZGl0b3I6ICdyb2xlRWRpdG9yJyxcbiAgICAgIGFkbWluOiAncm9sZUFkbWluJyxcbiAgICAgIHN1cGVyX2FkbWluOiAncm9sZVN1cGVyQWRtaW4nLFxuICAgICAgYmluZ29fYWRtaW46ICdyb2xlQmluZ29BZG1pbicsXG4gICAgICBiaW5nb190ZXNvcmVybzogJ3JvbGVCaW5nb1Rlc29yZXJvJyxcbiAgICAgIGJpbmdvX3RhcXVpbGxhOiAncm9sZUJpbmdvVGFxdWlsbGEnLFxuICAgICAgYmluZ29fb3BlcmF0b3I6ICdyb2xlQmluZ29PcGVyYXRvcicsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy50dChtYXBbbmFtZV0gPz8gbmFtZSk7XG4gIH1cblxuICBwZXJtTGFiZWwocmVzb3VyY2U6IHN0cmluZywgYWN0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChyZXNvdXJjZSA9PT0gJyonICYmIGFjdGlvbiA9PT0gJyonKSByZXR1cm4gdGhpcy50dCgncGVybUFsbCcpO1xuICAgIGNvbnN0IHJlc0tleSA9IHJlc291cmNlID09PSAnKicgPyAncGVybUFsbCcgOiBgcGVybSR7cmVzb3VyY2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtyZXNvdXJjZS5zbGljZSgxKX1gO1xuICAgIGNvbnN0IGFjdEtleSA9IGFjdGlvbiA9PT0gJyonID8gJ3Blcm1BbGwnIDogYHBlcm0ke2FjdGlvbi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke2FjdGlvbi5zbGljZSgxKX1gO1xuICAgIGNvbnN0IHJlcyA9IHRoaXMudHQocmVzS2V5KTtcbiAgICBjb25zdCBhY3QgPSB0aGlzLnR0KGFjdEtleSk7XG4gICAgcmV0dXJuIGAke3Jlc306ICR7YWN0fWA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -65,6 +65,12 @@ export class PreferencesService {
|
|
|
65
65
|
if (this.fontSizeService) {
|
|
66
66
|
this._fontSize.set(this.fontSizeService.size());
|
|
67
67
|
}
|
|
68
|
+
// Mismo seed para theme — ThemeService aplica su valor de localStorage en
|
|
69
|
+
// bootstrap (`currentOption`). Necesario para desgatear el effect de theme
|
|
70
|
+
// (abajo) sin que el default 'auto' pise el tema restaurado.
|
|
71
|
+
if (this.themeService) {
|
|
72
|
+
this._theme.set(this.themeService.currentOption);
|
|
73
|
+
}
|
|
68
74
|
// Auto-bind al user actual. effect() corre en injection context (constructor OK).
|
|
69
75
|
// allowSignalWrites: bindToUser/unbind escriben `_synced` (señal interna sin
|
|
70
76
|
// dependencias del propio effect) → seguro y necesario.
|
|
@@ -77,14 +83,18 @@ export class PreferencesService {
|
|
|
77
83
|
this.unbind();
|
|
78
84
|
}
|
|
79
85
|
}, { allowSignalWrites: true });
|
|
80
|
-
// Side-effect: aplicar theme
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
//
|
|
86
|
+
// Side-effect: aplicar theme. SIN gate `_synced` (local-first, igual que
|
|
87
|
+
// fontSize): ThemeService/localStorage es la verdad del dispositivo y
|
|
88
|
+
// `_theme` viene seedeado arriba. Aplicar siempre que cambie da apply
|
|
89
|
+
// optimista al instante; el sync cross-device también aplica vía snapshot.
|
|
90
|
+
// Gatearlo en `_synced` hacía que el primer cambio de un user nuevo (sin doc
|
|
91
|
+
// Firestore aún) no se aplicara: el selector mostraba "Dark" pero el tema no
|
|
92
|
+
// cambiaba. (El selector de idioma no sufre esto porque val-language-selector
|
|
93
|
+
// llama i18n.setLanguage directo; el de theme depende solo de este effect.)
|
|
94
|
+
// OJO: usar `toggleUserPreference()` y NO el setter `Theme =`. El setter solo
|
|
95
|
+
// persiste localStorage + emite el BehaviorSubject; no aplica las clases
|
|
96
|
+
// `body.dark`/`html.ion-palette-dark` que el palette de Ionic necesita.
|
|
85
97
|
effect(() => {
|
|
86
|
-
if (!this._synced())
|
|
87
|
-
return;
|
|
88
98
|
const t = this._theme();
|
|
89
99
|
if (this.themeService) {
|
|
90
100
|
this.themeService.toggleUserPreference(t);
|
|
@@ -100,7 +110,7 @@ export class PreferencesService {
|
|
|
100
110
|
}
|
|
101
111
|
});
|
|
102
112
|
// Side-effect: aplicar fontSize.
|
|
103
|
-
// SIN gate `_synced` (
|
|
113
|
+
// SIN gate `_synced` (igual que theme): el tamaño es una
|
|
104
114
|
// preferencia local-first — FontSizeService/localStorage es la verdad del
|
|
105
115
|
// dispositivo y `_fontSize` ya viene seedeado de ahí arriba. Aplicar siempre
|
|
106
116
|
// que cambie permite que el cambio del usuario surta efecto al instante
|
|
@@ -237,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
237
247
|
}] }, { type: i6.I18nService, decorators: [{
|
|
238
248
|
type: Optional
|
|
239
249
|
}] }] });
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvcHJlZmVyZW5jZXMvcHJlZmVyZW5jZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBZ0IsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQWdCckQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUE2QjdCLFlBQ3VDLE1BQXlCLEVBQ3RELFNBQTJCLEVBQzNCLElBQWlCLEVBQ2pCLElBQWdCLEVBQ0osWUFBaUMsRUFDakMsZUFBdUMsRUFDdkMsSUFBd0I7UUFOUCxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN0RCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDSixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFNBQUksR0FBSixJQUFJLENBQW9CO1FBbkM3QixXQUFNLEdBQUcsTUFBTSxDQUFtQixNQUFNLENBQUMsQ0FBQztRQUMxQyxjQUFTLEdBQUcsTUFBTSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQUM5QyxjQUFTLEdBQUcsTUFBTSxDQUFzQixRQUFRLENBQUMsQ0FBQztRQUNuRSxvRkFBb0Y7UUFDcEYsZ0VBQWdFO1FBQy9DLHlCQUFvQixHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMvRCxzRkFBc0Y7UUFDckUs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QmxCLGtCQUFrQixjQURMLE1BQU07OzRGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkErQjdCLE1BQU07MkJBQUMsbUJBQW1COzswQkFJMUIsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIGVmZmVjdCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVkFMVEVDSF9BVVRIX0NPTkZJRyB9IGZyb20gJy4uL2F1dGgvY29uZmlnJztcbmltcG9ydCB7IFZhbHRlY2hBdXRoQ29uZmlnIH0gZnJvbSAnLi4vYXV0aC90eXBlcyc7XG5pbXBvcnQgeyBGaXJlc3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vZmlyZWJhc2UvZmlyZXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4bkxhbmcgfSBmcm9tICcuLi9pMThuL3R5cGVzJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vaTE4bi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGhlbWVPcHRpb24sIFRoZW1lU2VydmljZSB9IGZyb20gJy4uL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9udFNpemVPcHRpb24sIEZvbnRTaXplU2VydmljZSB9IGZyb20gJy4uL2ZvbnQtc2l6ZS9mb250LXNpemUuc2VydmljZSc7XG5pbXBvcnQge1xuICBQcmVmZXJlbmNlc0RvY3VtZW50LFxuICBQcmVmZXJlbmNlc0ZvbnRTaXplLFxuICBQcmVmZXJlbmNlc0xhbmd1YWdlLFxuICBQcmVmZXJlbmNlc1RoZW1lLFxuICBQcmVmZXJlbmNlc1VwZGF0ZSxcbiAgUHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZSxcbn0gZnJvbSAnLi9wcmVmZXJlbmNlcy50eXBlcyc7XG5cbi8qKlxuICogUHJlZmVyZW5jZXNTZXJ2aWNlIOKAlCBwcmVmZXJlbmNpYXMgZGVsIHVzZXIgZW4gZWwgZG9jIGNhbsOzbmljbyBGaXJlc3RvcmVcbiAqIGAvYXBwcy97YXBwSWR9L3VzZXJzL3t1aWR9L3ByZWZlcmVuY2VzL21haW5gLlxuICpcbiAqIFJlYWQgcmVhY3Rpdm8gKHNpZ25hbHMpIHZpYSBsaXN0ZW5lciBGaXJlc3RvcmUuXG4gKiBXcml0ZSB2aWEgYFBVVCAvdjIvYXV0aC9wcmVmZXJlbmNlc2AgKGNsaWVudGUgTlVOQ0EgZXNjcmliZSBGaXJlc3RvcmUgZGlyZWN0byDigJRcbiAqIHZlciBtZW1vcmlhIGBmZWVkYmFja19ub19kaXJlY3RfZmlyZXN0b3JlX3dyaXRlc2ApLlxuICpcbiAqIFNpZGUtZWZmZWN0cyBhdXRvbcOhdGljb3M6XG4gKiAtIEN1YW5kbyBgdGhlbWUoKWAgY2FtYmlhIOKGkiBgVGhlbWVTZXJ2aWNlLlRoZW1lID0gLi4uYFxuICogLSBDdWFuZG8gYGxhbmd1YWdlKClgIGNhbWJpYSDihpIgYEkxOG5TZXJ2aWNlLnNldExhbmd1YWdlKC4uLilgXG4gKlxuICogQXV0by1iaW5kIGFsIHVzZXIgYWN0dWFsIHZpYSBgQXV0aFNlcnZpY2UudXNlcigpYC4gU2luIHVzZXIgKGxvZ291dCkg4oaSIHVuYmluZC5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQcmVmZXJlbmNlc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF90aGVtZSA9IHNpZ25hbDxQcmVmZXJlbmNlc1RoZW1lPignYXV0bycpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sYW5ndWFnZSA9IHNpZ25hbDxQcmVmZXJlbmNlc0xhbmd1YWdlPignZXMnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZm9udFNpemUgPSBzaWduYWw8UHJlZmVyZW5jZXNGb250U2l6ZT4oJ21lZGl1bScpO1xuICAvLyBEZWZhdWx0IGBmYWxzZWAgKG9wdC1pbikuIEVsIHVzZXIgZGViZSBhY3RpdmFyIGV4cGzDrWNpdGFtZW50ZSBsYXMgbm90aWZpY2FjaW9uZXM7XG4gIC8vIG5vIGFzdW1pbW9zIGNvbnNlbnRpbWllbnRvIGltcGzDrWNpdG8uIEJhY2tlbmQgZGViZSBjb2luY2lkaXIuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25vdGlmaWNhdGlvbnNNYXN0ZXIgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogYHRydWVgIGRlc3B1w6lzIGRlbCBwcmltZXIgc25hcHNob3QgRmlyZXN0b3JlLiBBbnRlcywgZGVmYXVsdHMgc2luIHNpZGUtZWZmZWN0cy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfc3luY2VkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSB0aGVtZSA9IHRoaXMuX3RoZW1lLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgbGFuZ3VhZ2UgPSB0aGlzLl9sYW5ndWFnZS5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IGZvbnRTaXplID0gdGhpcy5fZm9udFNpemUuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBub3RpZmljYXRpb25zTWFzdGVyID0gdGhpcy5fbm90aWZpY2F0aW9uc01hc3Rlci5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IHN5bmNlZCA9IHRoaXMuX3N5bmNlZC5hc1JlYWRvbmx5KCk7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgY3VycmVudFVzZXJJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIGB0cnVlYCBtaWVudHJhcyB1biBgdXBkYXRlKClgIGVzdMOhIGVuIHZ1ZWxvIChQVVQgYWwgYmFja2VuZCkuXG4gICAqXG4gICAqIEVsIGxpc3RlbmVyIEZpcmVzdG9yZSAoYGJpbmRUb1VzZXJgKSBlcyByZWFsLXRpbWUgeSBwdWVkZSBlbWl0aXIgdW4gc25hcHNob3RcbiAgICogKnN0YWxlKiDigJQgYW50ZXJpb3IgYWwgc3luYyBkZWwgYmFja2VuZCDigJQgcXVlIHBpc2Fyw61hIGVsIHZhbG9yIG9wdGltaXN0YSBkZVxuICAgKiBgX25vdGlmaWNhdGlvbnNNYXN0ZXJgIHkgcmV2ZXJ0aXLDrWEgZWwgdG9nZ2xlLiBNaWVudHJhcyBlc3RlIGZsYWcgZXN0w6kgYHRydWVgXG4gICAqIGVsIGxpc3RlbmVyIGlnbm9yYSBsYXMgZW1pc2lvbmVzOyBlbCBgdXBkYXRlKClgIHlhIGFsaW5lYSBsYXMgc2XDsWFsZXMgY29uIGxhXG4gICAqIHJlc3B1ZXN0YSBkZWwgYmFja2VuZCBhbCB0ZXJtaW5hci5cbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZUluRmxpZ2h0ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogVmFsdGVjaEF1dGhDb25maWcsXG4gICAgcHJpdmF0ZSBmaXJlc3RvcmU6IEZpcmVzdG9yZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZSB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb250U2l6ZVNlcnZpY2U6IEZvbnRTaXplU2VydmljZSB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBpMThuOiBJMThuU2VydmljZSB8IG51bGxcbiAgKSB7XG4gICAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLnVuYmluZCgpKTtcblxuICAgIC8vIFNlZWQgYF9mb250U2l6ZWAgY29uIGVsIHZhbG9yIHF1ZSBGb250U2l6ZVNlcnZpY2UgeWEgcmVzdGF1csOzIGRlc2RlXG4gICAgLy8gbG9jYWxTdG9yYWdlIGVuIHN1IGNvbnN0cnVjdG9yIChwcm92aWRlZEluIHJvb3Qg4oaSIHlhIGNvcnJpw7MgYWwgaW55ZWN0YXJsb1xuICAgIC8vIGFjw6EpLiBTaW4gZXN0bywgZWwgc2lnbmFsIGFycmFuY2EgZW4gJ21lZGl1bScgeSBlbCBlZmZlY3QgZGUgYWJham8g4oCUcXVlXG4gICAgLy8gZGlzcGFyYSBhbCBtYXJjYXJzZSBgc3luY2VkYOKAlCBmb3J6YXLDrWEgJ21lZGl1bScgcGlzYW5kbyBlbCB0YW1hw7FvXG4gICAgLy8gcmVzdGF1cmFkbyBjdWFuZG8gZWwgc25hcHNob3QgRmlyZXN0b3JlIE5PIHRyYWUgYGZvbnRTaXplYCAodXNlciBzaW4gZXNlXG4gICAgLy8gY2FtcG8gZW4gZWwgbWlycm9yKS4gQnVnOiBjYW1iaWFzIGVsIHRhbWHDsW8sIHJlZnJlc2NhcyB5IHNlIHBpZXJkZS5cbiAgICBpZiAodGhpcy5mb250U2l6ZVNlcnZpY2UpIHtcbiAgICAgIHRoaXMuX2ZvbnRTaXplLnNldCh0aGlzLmZvbnRTaXplU2VydmljZS5zaXplKCkgYXMgUHJlZmVyZW5jZXNGb250U2l6ZSk7XG4gICAgfVxuXG4gICAgLy8gQXV0by1iaW5kIGFsIHVzZXIgYWN0dWFsLiBlZmZlY3QoKSBjb3JyZSBlbiBpbmplY3Rpb24gY29udGV4dCAoY29uc3RydWN0b3IgT0spLlxuICAgIC8vIGFsbG93U2lnbmFsV3JpdGVzOiBiaW5kVG9Vc2VyL3VuYmluZCBlc2NyaWJlbiBgX3N5bmNlZGAgKHNlw7FhbCBpbnRlcm5hIHNpblxuICAgIC8vIGRlcGVuZGVuY2lhcyBkZWwgcHJvcGlvIGVmZmVjdCkg4oaSIHNlZ3VybyB5IG5lY2VzYXJpby5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmF1dGgudXNlcigpO1xuICAgICAgICBpZiAodXNlcj8udXNlcklkKSB7XG4gICAgICAgICAgdGhpcy5iaW5kVG9Vc2VyKHVzZXIudXNlcklkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnVuYmluZCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIC8vIFNpZGUtZWZmZWN0OiBhcGxpY2FyIHRoZW1lIGxvY2FsIGN1YW5kbyBsbGVnYSBzbmFwc2hvdCByZWFsLlxuICAgIC8vIE9KTzogdXNhciBgdG9nZ2xlVXNlclByZWZlcmVuY2UoKWAgeSBOTyBlbCBzZXR0ZXIgYFRoZW1lID1gLiBFbCBzZXR0ZXJcbiAgICAvLyBzb2xvIHBlcnNpc3RlIGxvY2FsU3RvcmFnZSArIGVtaXRlIGVsIEJlaGF2aW9yU3ViamVjdDsgbm8gYXBsaWNhIGxhc1xuICAgIC8vIGNsYXNlcyBgYm9keS5kYXJrYC9gYm9keS5saWdodGAgcXVlIGVsIHBhbGV0dGUgYGRhcmsuY2xhc3MuY3NzYCBkZVxuICAgIC8vIElvbmljIG5lY2VzaXRhIHBhcmEgY29ubXV0YXIgZWwgdGVtYSB2aXNpYmxlLlxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3N5bmNlZCgpKSByZXR1cm47XG4gICAgICBjb25zdCB0ID0gdGhpcy5fdGhlbWUoKTtcbiAgICAgIGlmICh0aGlzLnRoZW1lU2VydmljZSkge1xuICAgICAgICB0aGlzLnRoZW1lU2VydmljZS50b2dnbGVVc2VyUHJlZmVyZW5jZSh0IGFzIFRoZW1lT3B0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFNpZGUtZWZmZWN0OiBhcGxpY2FyIGxhbmd1YWdlIGxvY2FsIGN1YW5kbyBsbGVnYSBzbmFwc2hvdCByZWFsLlxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3N5bmNlZCgpKSByZXR1cm47XG4gICAgICBjb25zdCBsID0gdGhpcy5fbGFuZ3VhZ2UoKTtcbiAgICAgIGlmICh0aGlzLmkxOG4gJiYgdGhpcy5pMThuLmxhbmcoKSAhPT0gbCkge1xuICAgICAgICB0aGlzLmkxOG4uc2V0TGFuZ3VhZ2UobCBhcyBJMThuTGFuZyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTaWRlLWVmZmVjdDogYXBsaWNhciBmb250U2l6ZS5cbiAgICAvLyBTSU4gZ2F0ZSBgX3N5bmNlZGAgKGEgZGlmZXJlbmNpYSBkZSB0aGVtZS9sYW5ndWFnZSk6IGVsIHRhbWHDsW8gZXMgdW5hXG4gICAgLy8gcHJlZmVyZW5jaWEgbG9jYWwtZmlyc3Qg4oCUIEZvbnRTaXplU2VydmljZS9sb2NhbFN0b3JhZ2UgZXMgbGEgdmVyZGFkIGRlbFxuICAgIC8vIGRpc3Bvc2l0aXZvIHkgYF9mb250U2l6ZWAgeWEgdmllbmUgc2VlZGVhZG8gZGUgYWjDrSBhcnJpYmEuIEFwbGljYXIgc2llbXByZVxuICAgIC8vIHF1ZSBjYW1iaWUgcGVybWl0ZSBxdWUgZWwgY2FtYmlvIGRlbCB1c3VhcmlvIHN1cnRhIGVmZWN0byBhbCBpbnN0YW50ZVxuICAgIC8vIChvcHRpbWlzdGEsIHNpbiBlc3BlcmFyIGVsIHJvdW5kLXRyaXAgYSBGaXJlc3RvcmUpIHkgcXVlIGVsIHN5bmNcbiAgICAvLyBjcm9zcy1kZXZpY2UgdGFtYmnDqW4gYXBsaXF1ZSBhbCBsbGVnYXIgZWwgc25hcHNob3QuIEdhdGVhcmxvIGVuIGBfc3luY2VkYFxuICAgIC8vIGhhY8OtYSBxdWUgZWwgcHJpbWVyIGNhbWJpbyBkZSB1biB1c2VyIG51ZXZvIChzaW4gZG9jIEZpcmVzdG9yZSBhw7puKSBubyBzZVxuICAgIC8vIGFwbGljYXJhOiBlbCBzZWxlY3RvciBtb3N0cmFiYSBcIkdyYW5kZVwiIHBlcm8gZWwgZm9udC1zaXplIG5vIGNhbWJpYWJhLlxuICAgIC8vIGFsbG93U2lnbmFsV3JpdGVzOiBmb250U2l6ZVNlcnZpY2Uuc2V0U2l6ZSgpIGVzY3JpYmUgdGhpcy5fc2l6ZSAoc2lnbmFsKS5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZzID0gdGhpcy5fZm9udFNpemUoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9udFNpemVTZXJ2aWNlKSB7XG4gICAgICAgICAgdGhpcy5mb250U2l6ZVNlcnZpY2Uuc2V0U2l6ZShmcyBhcyBGb250U2l6ZU9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgLyoqIEFjdHVhbGl6YSBwcmVmZXJlbmNpYXMgdmlhIGJhY2tlbmQuIE9wdGltaXN0aWMgVUk6IGFwbGljYSBsb2NhbCwgcmV2aWVydGUgc2kgZmFsbGEuICovXG4gIGFzeW5jIHVwZGF0ZShwYXJ0aWFsOiBQcmVmZXJlbmNlc1VwZGF0ZSk6IFByb21pc2U8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuY29uZmlnLmFwaVVybH0vdjIvYXV0aC9wcmVmZXJlbmNlc2A7XG5cbiAgICBjb25zdCBwcmV2ID0ge1xuICAgICAgdGhlbWU6IHRoaXMuX3RoZW1lKCksXG4gICAgICBsYW5ndWFnZTogdGhpcy5fbGFuZ3VhZ2UoKSxcbiAgICAgIGZvbnRTaXplOiB0aGlzLl9mb250U2l6ZSgpLFxuICAgICAgbWFzdGVyOiB0aGlzLl9ub3RpZmljYXRpb25zTWFzdGVyKCksXG4gICAgfTtcblxuICAgIGlmIChwYXJ0aWFsLnRoZW1lKSB0aGlzLl90aGVtZS5zZXQocGFydGlhbC50aGVtZSk7XG4gICAgaWYgKHBhcnRpYWwubGFuZ3VhZ2UpIHRoaXMuX2xhbmd1YWdlLnNldChwYXJ0aWFsLmxhbmd1YWdlKTtcbiAgICBpZiAocGFydGlhbC5mb250U2l6ZSkgdGhpcy5fZm9udFNpemUuc2V0KHBhcnRpYWwuZm9udFNpemUpO1xuICAgIGlmIChwYXJ0aWFsLm5vdGlmaWNhdGlvbnMgJiYgdHlwZW9mIHBhcnRpYWwubm90aWZpY2F0aW9ucy5tYXN0ZXIgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fbm90aWZpY2F0aW9uc01hc3Rlci5zZXQocGFydGlhbC5ub3RpZmljYXRpb25zLm1hc3Rlcik7XG4gICAgfVxuXG4gICAgLy8gQmxvcXVlYXIgZWwgbGlzdGVuZXIgRmlyZXN0b3JlIG1pZW50cmFzIGVsIFBVVCBlc3TDoSBlbiB2dWVsbzogdW4gc25hcHNob3RcbiAgICAvLyBzdGFsZSBubyBkZWJlIHBpc2FyIGVsIHZhbG9yIG9wdGltaXN0YSByZWNpw6luIGFwbGljYWRvLlxuICAgIHRoaXMuX3VwZGF0ZUluRmxpZ2h0ID0gdHJ1ZTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBFbnZpYXIgYXBwSWQgZXhwbMOtY2l0byDigJQgZWwgYmFja2VuZCBsbyB1c2EgcGFyYSBlc2NyaWJpciBlbCBtaXJyb3JcbiAgICAgIC8vIEZpcmVzdG9yZSBlbiBhcHBzL3thcHBJZH0vLi4uIGNvcnJlY3RvLCBzaW4gZGVwZW5kZXIgZGVsIGhlYWRlciBPcmlnaW5cbiAgICAgIC8vIChxdWUgZW4gUFdBIGlPUyBwdWVkZSBubyByZXNvbHZlciBhbCBBcHBJRCBlc3BlcmFkbykuXG4gICAgICBjb25zdCBib2R5ID0geyAuLi5wYXJ0aWFsLCBhcHBJZDogdGhpcy5jb25maWcuYXBwSWQgfTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wdXQ8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4odXJsLCBib2R5KSk7XG4gICAgICAvLyBFbCBsaXN0ZW5lciBGaXJlc3RvcmUgZXMgbGEgZnVlbnRlIGZpbmFsLCBwZXJvIGFsaW5lYXIgeWEgY29uIGxhXG4gICAgICAvLyByZXNwdWVzdGEgZGVsIGJhY2tlbmQgYWNlbGVyYSBVWCAoZXNwZWNpYWxtZW50ZSBzaSBlbCBsaXN0ZW5lclxuICAgICAgLy8gdGFyZGEgZW4gcHJvcGFnYXIpLlxuICAgICAgaWYgKHJlcy50aGVtZSkgdGhpcy5fdGhlbWUuc2V0KHJlcy50aGVtZSBhcyBQcmVmZXJlbmNlc1RoZW1lKTtcbiAgICAgIGlmIChyZXMubGFuZ3VhZ2UpIHRoaXMuX2xhbmd1YWdlLnNldChyZXMubGFuZ3VhZ2UgYXMgUHJlZmVyZW5jZXNMYW5ndWFnZSk7XG4gICAgICBpZiAocmVzLmZvbnRTaXplKSB0aGlzLl9mb250U2l6ZS5zZXQocmVzLmZvbnRTaXplIGFzIFByZWZlcmVuY2VzRm9udFNpemUpO1xuICAgICAgaWYgKHR5cGVvZiByZXMubm90aWZpY2F0aW9ucz8ubWFzdGVyID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uc01hc3Rlci5zZXQocmVzLm5vdGlmaWNhdGlvbnMubWFzdGVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBSZXZlcnQgb3B0aW1pc3RpYy5cbiAgICAgIHRoaXMuX3RoZW1lLnNldChwcmV2LnRoZW1lKTtcbiAgICAgIHRoaXMuX2xhbmd1YWdlLnNldChwcmV2Lmxhbmd1YWdlKTtcbiAgICAgIHRoaXMuX2ZvbnRTaXplLnNldChwcmV2LmZvbnRTaXplKTtcbiAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnNNYXN0ZXIuc2V0KHByZXYubWFzdGVyKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fdXBkYXRlSW5GbGlnaHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzZXRUaGVtZSh0aGVtZTogUHJlZmVyZW5jZXNUaGVtZSk6IFByb21pc2U8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZSh7IHRoZW1lIH0pO1xuICB9XG5cbiAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IFByZWZlcmVuY2VzTGFuZ3VhZ2UpOiBQcm9taXNlPFByZWZlcmVuY2VzVXBkYXRlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoeyBsYW5ndWFnZSB9KTtcbiAgfVxuXG4gIHNldEZvbnRTaXplKGZvbnRTaXplOiBQcmVmZXJlbmNlc0ZvbnRTaXplKTogUHJvbWlzZTxQcmVmZXJlbmNlc1VwZGF0ZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlKHsgZm9udFNpemUgfSk7XG4gIH1cblxuICBzZXROb3RpZmljYXRpb25zTWFzdGVyKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPFByZWZlcmVuY2VzVXBkYXRlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoeyBub3RpZmljYXRpb25zOiB7IG1hc3RlcjogZW5hYmxlZCB9IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBiaW5kVG9Vc2VyKHVzZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFVzZXJJZCA9PT0gdXNlcklkICYmIHRoaXMuc3Vic2NyaXB0aW9uKSByZXR1cm47XG4gICAgdGhpcy51bmJpbmQoKTtcbiAgICB0aGlzLmN1cnJlbnRVc2VySWQgPSB1c2VySWQ7XG4gICAgLy8gRmlyZXN0b3JlU2VydmljZS5kb2NDaGFuZ2VzIHByZWZpamEgYXV0b23DoXRpY2FtZW50ZSBgYXBwcy97YXBwSWR9L2BcbiAgICAvLyBjdWFuZG8gYGNvbmZpZy5hcHBJZGAgZXN0w6Egc2V0ZWFkbyBlbiBWYWx0ZWNoQXV0aENvbmZpZy5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZmlyZXN0b3JlXG4gICAgICAuZG9jQ2hhbmdlczxQcmVmZXJlbmNlc0RvY3VtZW50ICYgeyBpZD86IHN0cmluZyB9PihgdXNlcnMvJHt1c2VySWR9L3ByZWZlcmVuY2VzYCwgJ21haW4nKVxuICAgICAgLnN1YnNjcmliZShkb2MgPT4ge1xuICAgICAgICBpZiAoIWRvYykge1xuICAgICAgICAgIC8vIERvYyBubyBleGlzdGUgYcO6biAodXNlciBudWV2bywgc2luIHByaW1lciBzeW5jKS4gTWFudGVuZW1vc1xuICAgICAgICAgIC8vIGRlZmF1bHRzIGxvY2FsZXMgcGVybyBOTyBtYXJjYW1vcyBzeW5jZWQg4oCUIGxvcyBzaWRlLWVmZmVjdHMgbm9cbiAgICAgICAgICAvLyBwaXNhbiBlbCB0aGVtZS9sYW5nIGxvY2FsZXMgY29uIHZhbG9yZXMgYXJiaXRyYXJpb3MuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElnbm9yYXIgZW1pc2lvbmVzIGRlbCBsaXN0ZW5lciBtaWVudHJhcyBoYXkgdW4gdXBkYXRlKCkgZW4gdnVlbG86IHVuXG4gICAgICAgIC8vIHNuYXBzaG90IHN0YWxlIChhbnRlcmlvciBhbCBzeW5jIGRlbCBiYWNrZW5kKSByZXZlcnRpcsOtYSBlbCB2YWxvclxuICAgICAgICAvLyBvcHRpbWlzdGEuIEVsIHVwZGF0ZSgpIHlhIGFsaW5lYSBsYXMgc2XDsWFsZXMgY29uIGxhIHJlc3B1ZXN0YSByZWFsLlxuICAgICAgICBpZiAodGhpcy5fdXBkYXRlSW5GbGlnaHQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvYy50aGVtZSkgdGhpcy5fdGhlbWUuc2V0KGRvYy50aGVtZSk7XG4gICAgICAgIGlmIChkb2MubGFuZ3VhZ2UpIHRoaXMuX2xhbmd1YWdlLnNldChkb2MubGFuZ3VhZ2UpO1xuICAgICAgICBpZiAoZG9jLmZvbnRTaXplKSB0aGlzLl9mb250U2l6ZS5zZXQoZG9jLmZvbnRTaXplKTtcbiAgICAgICAgaWYgKGRvYy5ub3RpZmljYXRpb25zICYmIHR5cGVvZiBkb2Mubm90aWZpY2F0aW9ucy5tYXN0ZXIgPT09ICdib29sZWFuJykge1xuICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnNNYXN0ZXIuc2V0KGRvYy5ub3RpZmljYXRpb25zLm1hc3Rlcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3luY2VkLnNldCh0cnVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1bmJpbmQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50VXNlcklkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX3N5bmNlZC5zZXQoZmFsc2UpO1xuICB9XG59XG4iXX0=
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvcHJlZmVyZW5jZXMvcHJlZmVyZW5jZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBZ0IsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQWdCckQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUE2QjdCLFlBQ3VDLE1BQXlCLEVBQ3RELFNBQTJCLEVBQzNCLElBQWlCLEVBQ2pCLElBQWdCLEVBQ0osWUFBaUMsRUFDakMsZUFBdUMsRUFDdkMsSUFBd0I7UUFOUCxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN0RCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDSixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFNBQUksR0FBSixJQUFJLENBQW9CO1FBbkM3QixXQUFNLEdBQUcsTUFBTSxDQUFtQixNQUFNLENBQUMsQ0FBQztRQUMxQyxjQUFTLEdBQUcsTUFBTSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQUM5QyxjQUFTLEdBQUcsTUFBTSxDQUFzQixRQUFRLENBQUMsQ0FBQztRQUNuRSxvRkFBb0Y7UUFDcEYsZ0VBQWdFO1FBQy9DLHlCQUFvQixHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMvRCxzRkFBc0Y7UUFDckUs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LEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQzsrR0EvTlUsa0JBQWtCLGtCQThCbkIsbUJBQW1CO21IQTlCbEIsa0JBQWtCLGNBREwsTUFBTTs7NEZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQStCN0IsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUkxQixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBWQUxURUNIX0FVVEhfQ09ORklHIH0gZnJvbSAnLi4vYXV0aC9jb25maWcnO1xuaW1wb3J0IHsgVmFsdGVjaEF1dGhDb25maWcgfSBmcm9tICcuLi9hdXRoL3R5cGVzJztcbmltcG9ydCB7IEZpcmVzdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9maXJlYmFzZS9maXJlc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBJMThuTGFuZyB9IGZyb20gJy4uL2kxOG4vdHlwZXMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi9pMThuL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBUaGVtZU9wdGlvbiwgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vdGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyBGb250U2l6ZU9wdGlvbiwgRm9udFNpemVTZXJ2aWNlIH0gZnJvbSAnLi4vZm9udC1zaXplL2ZvbnQtc2l6ZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFByZWZlcmVuY2VzRG9jdW1lbnQsXG4gIFByZWZlcmVuY2VzRm9udFNpemUsXG4gIFByZWZlcmVuY2VzTGFuZ3VhZ2UsXG4gIFByZWZlcmVuY2VzVGhlbWUsXG4gIFByZWZlcmVuY2VzVXBkYXRlLFxuICBQcmVmZXJlbmNlc1VwZGF0ZVJlc3BvbnNlLFxufSBmcm9tICcuL3ByZWZlcmVuY2VzLnR5cGVzJztcblxuLyoqXG4gKiBQcmVmZXJlbmNlc1NlcnZpY2Ug4oCUIHByZWZlcmVuY2lhcyBkZWwgdXNlciBlbiBlbCBkb2MgY2Fuw7NuaWNvIEZpcmVzdG9yZVxuICogYC9hcHBzL3thcHBJZH0vdXNlcnMve3VpZH0vcHJlZmVyZW5jZXMvbWFpbmAuXG4gKlxuICogUmVhZCByZWFjdGl2byAoc2lnbmFscykgdmlhIGxpc3RlbmVyIEZpcmVzdG9yZS5cbiAqIFdyaXRlIHZpYSBgUFVUIC92Mi9hdXRoL3ByZWZlcmVuY2VzYCAoY2xpZW50ZSBOVU5DQSBlc2NyaWJlIEZpcmVzdG9yZSBkaXJlY3RvIOKAlFxuICogdmVyIG1lbW9yaWEgYGZlZWRiYWNrX25vX2RpcmVjdF9maXJlc3RvcmVfd3JpdGVzYCkuXG4gKlxuICogU2lkZS1lZmZlY3RzIGF1dG9tw6F0aWNvczpcbiAqIC0gQ3VhbmRvIGB0aGVtZSgpYCBjYW1iaWEg4oaSIGBUaGVtZVNlcnZpY2UuVGhlbWUgPSAuLi5gXG4gKiAtIEN1YW5kbyBgbGFuZ3VhZ2UoKWAgY2FtYmlhIOKGkiBgSTE4blNlcnZpY2Uuc2V0TGFuZ3VhZ2UoLi4uKWBcbiAqXG4gKiBBdXRvLWJpbmQgYWwgdXNlciBhY3R1YWwgdmlhIGBBdXRoU2VydmljZS51c2VyKClgLiBTaW4gdXNlciAobG9nb3V0KSDihpIgdW5iaW5kLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFByZWZlcmVuY2VzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RoZW1lID0gc2lnbmFsPFByZWZlcmVuY2VzVGhlbWU+KCdhdXRvJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xhbmd1YWdlID0gc2lnbmFsPFByZWZlcmVuY2VzTGFuZ3VhZ2U+KCdlcycpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb250U2l6ZSA9IHNpZ25hbDxQcmVmZXJlbmNlc0ZvbnRTaXplPignbWVkaXVtJyk7XG4gIC8vIERlZmF1bHQgYGZhbHNlYCAob3B0LWluKS4gRWwgdXNlciBkZWJlIGFjdGl2YXIgZXhwbMOtY2l0YW1lbnRlIGxhcyBub3RpZmljYWNpb25lcztcbiAgLy8gbm8gYXN1bWltb3MgY29uc2VudGltaWVudG8gaW1wbMOtY2l0by4gQmFja2VuZCBkZWJlIGNvaW5jaWRpci5cbiAgcHJpdmF0ZSByZWFkb25seSBfbm90aWZpY2F0aW9uc01hc3RlciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIC8qKiBgdHJ1ZWAgZGVzcHXDqXMgZGVsIHByaW1lciBzbmFwc2hvdCBGaXJlc3RvcmUuIEFudGVzLCBkZWZhdWx0cyBzaW4gc2lkZS1lZmZlY3RzLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9zeW5jZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IHRoZW1lID0gdGhpcy5fdGhlbWUuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBsYW5ndWFnZSA9IHRoaXMuX2xhbmd1YWdlLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgZm9udFNpemUgPSB0aGlzLl9mb250U2l6ZS5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbnNNYXN0ZXIgPSB0aGlzLl9ub3RpZmljYXRpb25zTWFzdGVyLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgc3luY2VkID0gdGhpcy5fc3luY2VkLmFzUmVhZG9ubHkoKTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBjdXJyZW50VXNlcklkPzogc3RyaW5nO1xuICAvKipcbiAgICogYHRydWVgIG1pZW50cmFzIHVuIGB1cGRhdGUoKWAgZXN0w6EgZW4gdnVlbG8gKFBVVCBhbCBiYWNrZW5kKS5cbiAgICpcbiAgICogRWwgbGlzdGVuZXIgRmlyZXN0b3JlIChgYmluZFRvVXNlcmApIGVzIHJlYWwtdGltZSB5IHB1ZWRlIGVtaXRpciB1biBzbmFwc2hvdFxuICAgKiAqc3RhbGUqIOKAlCBhbnRlcmlvciBhbCBzeW5jIGRlbCBiYWNrZW5kIOKAlCBxdWUgcGlzYXLDrWEgZWwgdmFsb3Igb3B0aW1pc3RhIGRlXG4gICAqIGBfbm90aWZpY2F0aW9uc01hc3RlcmAgeSByZXZlcnRpcsOtYSBlbCB0b2dnbGUuIE1pZW50cmFzIGVzdGUgZmxhZyBlc3TDqSBgdHJ1ZWBcbiAgICogZWwgbGlzdGVuZXIgaWdub3JhIGxhcyBlbWlzaW9uZXM7IGVsIGB1cGRhdGUoKWAgeWEgYWxpbmVhIGxhcyBzZcOxYWxlcyBjb24gbGFcbiAgICogcmVzcHVlc3RhIGRlbCBiYWNrZW5kIGFsIHRlcm1pbmFyLlxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlSW5GbGlnaHQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBWYWx0ZWNoQXV0aENvbmZpZyxcbiAgICBwcml2YXRlIGZpcmVzdG9yZTogRmlyZXN0b3JlU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGg6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvbnRTaXplU2VydmljZTogRm9udFNpemVTZXJ2aWNlIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGkxOG46IEkxOG5TZXJ2aWNlIHwgbnVsbFxuICApIHtcbiAgICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHRoaXMudW5iaW5kKCkpO1xuXG4gICAgLy8gU2VlZCBgX2ZvbnRTaXplYCBjb24gZWwgdmFsb3IgcXVlIEZvbnRTaXplU2VydmljZSB5YSByZXN0YXVyw7MgZGVzZGVcbiAgICAvLyBsb2NhbFN0b3JhZ2UgZW4gc3UgY29uc3RydWN0b3IgKHByb3ZpZGVkSW4gcm9vdCDihpIgeWEgY29ycmnDsyBhbCBpbnllY3RhcmxvXG4gICAgLy8gYWPDoSkuIFNpbiBlc3RvLCBlbCBzaWduYWwgYXJyYW5jYSBlbiAnbWVkaXVtJyB5IGVsIGVmZmVjdCBkZSBhYmFqbyDigJRxdWVcbiAgICAvLyBkaXNwYXJhIGFsIG1hcmNhcnNlIGBzeW5jZWRg4oCUIGZvcnphcsOtYSAnbWVkaXVtJyBwaXNhbmRvIGVsIHRhbWHDsW9cbiAgICAvLyByZXN0YXVyYWRvIGN1YW5kbyBlbCBzbmFwc2hvdCBGaXJlc3RvcmUgTk8gdHJhZSBgZm9udFNpemVgICh1c2VyIHNpbiBlc2VcbiAgICAvLyBjYW1wbyBlbiBlbCBtaXJyb3IpLiBCdWc6IGNhbWJpYXMgZWwgdGFtYcOxbywgcmVmcmVzY2FzIHkgc2UgcGllcmRlLlxuICAgIGlmICh0aGlzLmZvbnRTaXplU2VydmljZSkge1xuICAgICAgdGhpcy5fZm9udFNpemUuc2V0KHRoaXMuZm9udFNpemVTZXJ2aWNlLnNpemUoKSBhcyBQcmVmZXJlbmNlc0ZvbnRTaXplKTtcbiAgICB9XG5cbiAgICAvLyBNaXNtbyBzZWVkIHBhcmEgdGhlbWUg4oCUIFRoZW1lU2VydmljZSBhcGxpY2Egc3UgdmFsb3IgZGUgbG9jYWxTdG9yYWdlIGVuXG4gICAgLy8gYm9vdHN0cmFwIChgY3VycmVudE9wdGlvbmApLiBOZWNlc2FyaW8gcGFyYSBkZXNnYXRlYXIgZWwgZWZmZWN0IGRlIHRoZW1lXG4gICAgLy8gKGFiYWpvKSBzaW4gcXVlIGVsIGRlZmF1bHQgJ2F1dG8nIHBpc2UgZWwgdGVtYSByZXN0YXVyYWRvLlxuICAgIGlmICh0aGlzLnRoZW1lU2VydmljZSkge1xuICAgICAgdGhpcy5fdGhlbWUuc2V0KHRoaXMudGhlbWVTZXJ2aWNlLmN1cnJlbnRPcHRpb24gYXMgUHJlZmVyZW5jZXNUaGVtZSk7XG4gICAgfVxuXG4gICAgLy8gQXV0by1iaW5kIGFsIHVzZXIgYWN0dWFsLiBlZmZlY3QoKSBjb3JyZSBlbiBpbmplY3Rpb24gY29udGV4dCAoY29uc3RydWN0b3IgT0spLlxuICAgIC8vIGFsbG93U2lnbmFsV3JpdGVzOiBiaW5kVG9Vc2VyL3VuYmluZCBlc2NyaWJlbiBgX3N5bmNlZGAgKHNlw7FhbCBpbnRlcm5hIHNpblxuICAgIC8vIGRlcGVuZGVuY2lhcyBkZWwgcHJvcGlvIGVmZmVjdCkg4oaSIHNlZ3VybyB5IG5lY2VzYXJpby5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmF1dGgudXNlcigpO1xuICAgICAgICBpZiAodXNlcj8udXNlcklkKSB7XG4gICAgICAgICAgdGhpcy5iaW5kVG9Vc2VyKHVzZXIudXNlcklkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnVuYmluZCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIC8vIFNpZGUtZWZmZWN0OiBhcGxpY2FyIHRoZW1lLiBTSU4gZ2F0ZSBgX3N5bmNlZGAgKGxvY2FsLWZpcnN0LCBpZ3VhbCBxdWVcbiAgICAvLyBmb250U2l6ZSk6IFRoZW1lU2VydmljZS9sb2NhbFN0b3JhZ2UgZXMgbGEgdmVyZGFkIGRlbCBkaXNwb3NpdGl2byB5XG4gICAgLy8gYF90aGVtZWAgdmllbmUgc2VlZGVhZG8gYXJyaWJhLiBBcGxpY2FyIHNpZW1wcmUgcXVlIGNhbWJpZSBkYSBhcHBseVxuICAgIC8vIG9wdGltaXN0YSBhbCBpbnN0YW50ZTsgZWwgc3luYyBjcm9zcy1kZXZpY2UgdGFtYmnDqW4gYXBsaWNhIHbDrWEgc25hcHNob3QuXG4gICAgLy8gR2F0ZWFybG8gZW4gYF9zeW5jZWRgIGhhY8OtYSBxdWUgZWwgcHJpbWVyIGNhbWJpbyBkZSB1biB1c2VyIG51ZXZvIChzaW4gZG9jXG4gICAgLy8gRmlyZXN0b3JlIGHDum4pIG5vIHNlIGFwbGljYXJhOiBlbCBzZWxlY3RvciBtb3N0cmFiYSBcIkRhcmtcIiBwZXJvIGVsIHRlbWEgbm9cbiAgICAvLyBjYW1iaWFiYS4gKEVsIHNlbGVjdG9yIGRlIGlkaW9tYSBubyBzdWZyZSBlc3RvIHBvcnF1ZSB2YWwtbGFuZ3VhZ2Utc2VsZWN0b3JcbiAgICAvLyBsbGFtYSBpMThuLnNldExhbmd1YWdlIGRpcmVjdG87IGVsIGRlIHRoZW1lIGRlcGVuZGUgc29sbyBkZSBlc3RlIGVmZmVjdC4pXG4gICAgLy8gT0pPOiB1c2FyIGB0b2dnbGVVc2VyUHJlZmVyZW5jZSgpYCB5IE5PIGVsIHNldHRlciBgVGhlbWUgPWAuIEVsIHNldHRlciBzb2xvXG4gICAgLy8gcGVyc2lzdGUgbG9jYWxTdG9yYWdlICsgZW1pdGUgZWwgQmVoYXZpb3JTdWJqZWN0OyBubyBhcGxpY2EgbGFzIGNsYXNlc1xuICAgIC8vIGBib2R5LmRhcmtgL2BodG1sLmlvbi1wYWxldHRlLWRhcmtgIHF1ZSBlbCBwYWxldHRlIGRlIElvbmljIG5lY2VzaXRhLlxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB0ID0gdGhpcy5fdGhlbWUoKTtcbiAgICAgIGlmICh0aGlzLnRoZW1lU2VydmljZSkge1xuICAgICAgICB0aGlzLnRoZW1lU2VydmljZS50b2dnbGVVc2VyUHJlZmVyZW5jZSh0IGFzIFRoZW1lT3B0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFNpZGUtZWZmZWN0OiBhcGxpY2FyIGxhbmd1YWdlIGxvY2FsIGN1YW5kbyBsbGVnYSBzbmFwc2hvdCByZWFsLlxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3N5bmNlZCgpKSByZXR1cm47XG4gICAgICBjb25zdCBsID0gdGhpcy5fbGFuZ3VhZ2UoKTtcbiAgICAgIGlmICh0aGlzLmkxOG4gJiYgdGhpcy5pMThuLmxhbmcoKSAhPT0gbCkge1xuICAgICAgICB0aGlzLmkxOG4uc2V0TGFuZ3VhZ2UobCBhcyBJMThuTGFuZyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTaWRlLWVmZmVjdDogYXBsaWNhciBmb250U2l6ZS5cbiAgICAvLyBTSU4gZ2F0ZSBgX3N5bmNlZGAgKGlndWFsIHF1ZSB0aGVtZSk6IGVsIHRhbWHDsW8gZXMgdW5hXG4gICAgLy8gcHJlZmVyZW5jaWEgbG9jYWwtZmlyc3Qg4oCUIEZvbnRTaXplU2VydmljZS9sb2NhbFN0b3JhZ2UgZXMgbGEgdmVyZGFkIGRlbFxuICAgIC8vIGRpc3Bvc2l0aXZvIHkgYF9mb250U2l6ZWAgeWEgdmllbmUgc2VlZGVhZG8gZGUgYWjDrSBhcnJpYmEuIEFwbGljYXIgc2llbXByZVxuICAgIC8vIHF1ZSBjYW1iaWUgcGVybWl0ZSBxdWUgZWwgY2FtYmlvIGRlbCB1c3VhcmlvIHN1cnRhIGVmZWN0byBhbCBpbnN0YW50ZVxuICAgIC8vIChvcHRpbWlzdGEsIHNpbiBlc3BlcmFyIGVsIHJvdW5kLXRyaXAgYSBGaXJlc3RvcmUpIHkgcXVlIGVsIHN5bmNcbiAgICAvLyBjcm9zcy1kZXZpY2UgdGFtYmnDqW4gYXBsaXF1ZSBhbCBsbGVnYXIgZWwgc25hcHNob3QuIEdhdGVhcmxvIGVuIGBfc3luY2VkYFxuICAgIC8vIGhhY8OtYSBxdWUgZWwgcHJpbWVyIGNhbWJpbyBkZSB1biB1c2VyIG51ZXZvIChzaW4gZG9jIEZpcmVzdG9yZSBhw7puKSBubyBzZVxuICAgIC8vIGFwbGljYXJhOiBlbCBzZWxlY3RvciBtb3N0cmFiYSBcIkdyYW5kZVwiIHBlcm8gZWwgZm9udC1zaXplIG5vIGNhbWJpYWJhLlxuICAgIC8vIGFsbG93U2lnbmFsV3JpdGVzOiBmb250U2l6ZVNlcnZpY2Uuc2V0U2l6ZSgpIGVzY3JpYmUgdGhpcy5fc2l6ZSAoc2lnbmFsKS5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZzID0gdGhpcy5fZm9udFNpemUoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9udFNpemVTZXJ2aWNlKSB7XG4gICAgICAgICAgdGhpcy5mb250U2l6ZVNlcnZpY2Uuc2V0U2l6ZShmcyBhcyBGb250U2l6ZU9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgLyoqIEFjdHVhbGl6YSBwcmVmZXJlbmNpYXMgdmlhIGJhY2tlbmQuIE9wdGltaXN0aWMgVUk6IGFwbGljYSBsb2NhbCwgcmV2aWVydGUgc2kgZmFsbGEuICovXG4gIGFzeW5jIHVwZGF0ZShwYXJ0aWFsOiBQcmVmZXJlbmNlc1VwZGF0ZSk6IFByb21pc2U8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuY29uZmlnLmFwaVVybH0vdjIvYXV0aC9wcmVmZXJlbmNlc2A7XG5cbiAgICBjb25zdCBwcmV2ID0ge1xuICAgICAgdGhlbWU6IHRoaXMuX3RoZW1lKCksXG4gICAgICBsYW5ndWFnZTogdGhpcy5fbGFuZ3VhZ2UoKSxcbiAgICAgIGZvbnRTaXplOiB0aGlzLl9mb250U2l6ZSgpLFxuICAgICAgbWFzdGVyOiB0aGlzLl9ub3RpZmljYXRpb25zTWFzdGVyKCksXG4gICAgfTtcblxuICAgIGlmIChwYXJ0aWFsLnRoZW1lKSB0aGlzLl90aGVtZS5zZXQocGFydGlhbC50aGVtZSk7XG4gICAgaWYgKHBhcnRpYWwubGFuZ3VhZ2UpIHRoaXMuX2xhbmd1YWdlLnNldChwYXJ0aWFsLmxhbmd1YWdlKTtcbiAgICBpZiAocGFydGlhbC5mb250U2l6ZSkgdGhpcy5fZm9udFNpemUuc2V0KHBhcnRpYWwuZm9udFNpemUpO1xuICAgIGlmIChwYXJ0aWFsLm5vdGlmaWNhdGlvbnMgJiYgdHlwZW9mIHBhcnRpYWwubm90aWZpY2F0aW9ucy5tYXN0ZXIgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fbm90aWZpY2F0aW9uc01hc3Rlci5zZXQocGFydGlhbC5ub3RpZmljYXRpb25zLm1hc3Rlcik7XG4gICAgfVxuXG4gICAgLy8gQmxvcXVlYXIgZWwgbGlzdGVuZXIgRmlyZXN0b3JlIG1pZW50cmFzIGVsIFBVVCBlc3TDoSBlbiB2dWVsbzogdW4gc25hcHNob3RcbiAgICAvLyBzdGFsZSBubyBkZWJlIHBpc2FyIGVsIHZhbG9yIG9wdGltaXN0YSByZWNpw6luIGFwbGljYWRvLlxuICAgIHRoaXMuX3VwZGF0ZUluRmxpZ2h0ID0gdHJ1ZTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBFbnZpYXIgYXBwSWQgZXhwbMOtY2l0byDigJQgZWwgYmFja2VuZCBsbyB1c2EgcGFyYSBlc2NyaWJpciBlbCBtaXJyb3JcbiAgICAgIC8vIEZpcmVzdG9yZSBlbiBhcHBzL3thcHBJZH0vLi4uIGNvcnJlY3RvLCBzaW4gZGVwZW5kZXIgZGVsIGhlYWRlciBPcmlnaW5cbiAgICAgIC8vIChxdWUgZW4gUFdBIGlPUyBwdWVkZSBubyByZXNvbHZlciBhbCBBcHBJRCBlc3BlcmFkbykuXG4gICAgICBjb25zdCBib2R5ID0geyAuLi5wYXJ0aWFsLCBhcHBJZDogdGhpcy5jb25maWcuYXBwSWQgfTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wdXQ8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4odXJsLCBib2R5KSk7XG4gICAgICAvLyBFbCBsaXN0ZW5lciBGaXJlc3RvcmUgZXMgbGEgZnVlbnRlIGZpbmFsLCBwZXJvIGFsaW5lYXIgeWEgY29uIGxhXG4gICAgICAvLyByZXNwdWVzdGEgZGVsIGJhY2tlbmQgYWNlbGVyYSBVWCAoZXNwZWNpYWxtZW50ZSBzaSBlbCBsaXN0ZW5lclxuICAgICAgLy8gdGFyZGEgZW4gcHJvcGFnYXIpLlxuICAgICAgaWYgKHJlcy50aGVtZSkgdGhpcy5fdGhlbWUuc2V0KHJlcy50aGVtZSBhcyBQcmVmZXJlbmNlc1RoZW1lKTtcbiAgICAgIGlmIChyZXMubGFuZ3VhZ2UpIHRoaXMuX2xhbmd1YWdlLnNldChyZXMubGFuZ3VhZ2UgYXMgUHJlZmVyZW5jZXNMYW5ndWFnZSk7XG4gICAgICBpZiAocmVzLmZvbnRTaXplKSB0aGlzLl9mb250U2l6ZS5zZXQocmVzLmZvbnRTaXplIGFzIFByZWZlcmVuY2VzRm9udFNpemUpO1xuICAgICAgaWYgKHR5cGVvZiByZXMubm90aWZpY2F0aW9ucz8ubWFzdGVyID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uc01hc3Rlci5zZXQocmVzLm5vdGlmaWNhdGlvbnMubWFzdGVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBSZXZlcnQgb3B0aW1pc3RpYy5cbiAgICAgIHRoaXMuX3RoZW1lLnNldChwcmV2LnRoZW1lKTtcbiAgICAgIHRoaXMuX2xhbmd1YWdlLnNldChwcmV2Lmxhbmd1YWdlKTtcbiAgICAgIHRoaXMuX2ZvbnRTaXplLnNldChwcmV2LmZvbnRTaXplKTtcbiAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnNNYXN0ZXIuc2V0KHByZXYubWFzdGVyKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fdXBkYXRlSW5GbGlnaHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzZXRUaGVtZSh0aGVtZTogUHJlZmVyZW5jZXNUaGVtZSk6IFByb21pc2U8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZSh7IHRoZW1lIH0pO1xuICB9XG5cbiAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IFByZWZlcmVuY2VzTGFuZ3VhZ2UpOiBQcm9taXNlPFByZWZlcmVuY2VzVXBkYXRlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoeyBsYW5ndWFnZSB9KTtcbiAgfVxuXG4gIHNldEZvbnRTaXplKGZvbnRTaXplOiBQcmVmZXJlbmNlc0ZvbnRTaXplKTogUHJvbWlzZTxQcmVmZXJlbmNlc1VwZGF0ZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlKHsgZm9udFNpemUgfSk7XG4gIH1cblxuICBzZXROb3RpZmljYXRpb25zTWFzdGVyKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPFByZWZlcmVuY2VzVXBkYXRlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoeyBub3RpZmljYXRpb25zOiB7IG1hc3RlcjogZW5hYmxlZCB9IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBiaW5kVG9Vc2VyKHVzZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFVzZXJJZCA9PT0gdXNlcklkICYmIHRoaXMuc3Vic2NyaXB0aW9uKSByZXR1cm47XG4gICAgdGhpcy51bmJpbmQoKTtcbiAgICB0aGlzLmN1cnJlbnRVc2VySWQgPSB1c2VySWQ7XG4gICAgLy8gRmlyZXN0b3JlU2VydmljZS5kb2NDaGFuZ2VzIHByZWZpamEgYXV0b23DoXRpY2FtZW50ZSBgYXBwcy97YXBwSWR9L2BcbiAgICAvLyBjdWFuZG8gYGNvbmZpZy5hcHBJZGAgZXN0w6Egc2V0ZWFkbyBlbiBWYWx0ZWNoQXV0aENvbmZpZy5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZmlyZXN0b3JlXG4gICAgICAuZG9jQ2hhbmdlczxQcmVmZXJlbmNlc0RvY3VtZW50ICYgeyBpZD86IHN0cmluZyB9PihgdXNlcnMvJHt1c2VySWR9L3ByZWZlcmVuY2VzYCwgJ21haW4nKVxuICAgICAgLnN1YnNjcmliZShkb2MgPT4ge1xuICAgICAgICBpZiAoIWRvYykge1xuICAgICAgICAgIC8vIERvYyBubyBleGlzdGUgYcO6biAodXNlciBudWV2bywgc2luIHByaW1lciBzeW5jKS4gTWFudGVuZW1vc1xuICAgICAgICAgIC8vIGRlZmF1bHRzIGxvY2FsZXMgcGVybyBOTyBtYXJjYW1vcyBzeW5jZWQg4oCUIGxvcyBzaWRlLWVmZmVjdHMgbm9cbiAgICAgICAgICAvLyBwaXNhbiBlbCB0aGVtZS9sYW5nIGxvY2FsZXMgY29uIHZhbG9yZXMgYXJiaXRyYXJpb3MuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElnbm9yYXIgZW1pc2lvbmVzIGRlbCBsaXN0ZW5lciBtaWVudHJhcyBoYXkgdW4gdXBkYXRlKCkgZW4gdnVlbG86IHVuXG4gICAgICAgIC8vIHNuYXBzaG90IHN0YWxlIChhbnRlcmlvciBhbCBzeW5jIGRlbCBiYWNrZW5kKSByZXZlcnRpcsOtYSBlbCB2YWxvclxuICAgICAgICAvLyBvcHRpbWlzdGEuIEVsIHVwZGF0ZSgpIHlhIGFsaW5lYSBsYXMgc2XDsWFsZXMgY29uIGxhIHJlc3B1ZXN0YSByZWFsLlxuICAgICAgICBpZiAodGhpcy5fdXBkYXRlSW5GbGlnaHQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvYy50aGVtZSkgdGhpcy5fdGhlbWUuc2V0KGRvYy50aGVtZSk7XG4gICAgICAgIGlmIChkb2MubGFuZ3VhZ2UpIHRoaXMuX2xhbmd1YWdlLnNldChkb2MubGFuZ3VhZ2UpO1xuICAgICAgICBpZiAoZG9jLmZvbnRTaXplKSB0aGlzLl9mb250U2l6ZS5zZXQoZG9jLmZvbnRTaXplKTtcbiAgICAgICAgaWYgKGRvYy5ub3RpZmljYXRpb25zICYmIHR5cGVvZiBkb2Mubm90aWZpY2F0aW9ucy5tYXN0ZXIgPT09ICdib29sZWFuJykge1xuICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnNNYXN0ZXIuc2V0KGRvYy5ub3RpZmljYXRpb25zLm1hc3Rlcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3luY2VkLnNldCh0cnVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1bmJpbmQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50VXNlcklkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX3N5bmNlZC5zZXQoZmFsc2UpO1xuICB9XG59XG4iXX0=
|
package/esm2022/lib/version.mjs
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Current version of valtech-components.
|
|
3
3
|
* This is automatically updated during the publish process.
|
|
4
4
|
*/
|
|
5
|
-
export const VERSION = '2.0.
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
export const VERSION = '2.0.1004';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC4xMDA0JztcbiJdfQ==
|
|
@@ -54,7 +54,7 @@ import 'prismjs/components/prism-json';
|
|
|
54
54
|
* Current version of valtech-components.
|
|
55
55
|
* This is automatically updated during the publish process.
|
|
56
56
|
*/
|
|
57
|
-
const VERSION = '2.0.
|
|
57
|
+
const VERSION = '2.0.1004';
|
|
58
58
|
|
|
59
59
|
// Control de estado de refresco (singleton a nivel de módulo)
|
|
60
60
|
let isRefreshing = false;
|
|
@@ -42488,6 +42488,12 @@ class PreferencesService {
|
|
|
42488
42488
|
if (this.fontSizeService) {
|
|
42489
42489
|
this._fontSize.set(this.fontSizeService.size());
|
|
42490
42490
|
}
|
|
42491
|
+
// Mismo seed para theme — ThemeService aplica su valor de localStorage en
|
|
42492
|
+
// bootstrap (`currentOption`). Necesario para desgatear el effect de theme
|
|
42493
|
+
// (abajo) sin que el default 'auto' pise el tema restaurado.
|
|
42494
|
+
if (this.themeService) {
|
|
42495
|
+
this._theme.set(this.themeService.currentOption);
|
|
42496
|
+
}
|
|
42491
42497
|
// Auto-bind al user actual. effect() corre en injection context (constructor OK).
|
|
42492
42498
|
// allowSignalWrites: bindToUser/unbind escriben `_synced` (señal interna sin
|
|
42493
42499
|
// dependencias del propio effect) → seguro y necesario.
|
|
@@ -42500,14 +42506,18 @@ class PreferencesService {
|
|
|
42500
42506
|
this.unbind();
|
|
42501
42507
|
}
|
|
42502
42508
|
}, { allowSignalWrites: true });
|
|
42503
|
-
// Side-effect: aplicar theme
|
|
42504
|
-
//
|
|
42505
|
-
//
|
|
42506
|
-
//
|
|
42507
|
-
//
|
|
42509
|
+
// Side-effect: aplicar theme. SIN gate `_synced` (local-first, igual que
|
|
42510
|
+
// fontSize): ThemeService/localStorage es la verdad del dispositivo y
|
|
42511
|
+
// `_theme` viene seedeado arriba. Aplicar siempre que cambie da apply
|
|
42512
|
+
// optimista al instante; el sync cross-device también aplica vía snapshot.
|
|
42513
|
+
// Gatearlo en `_synced` hacía que el primer cambio de un user nuevo (sin doc
|
|
42514
|
+
// Firestore aún) no se aplicara: el selector mostraba "Dark" pero el tema no
|
|
42515
|
+
// cambiaba. (El selector de idioma no sufre esto porque val-language-selector
|
|
42516
|
+
// llama i18n.setLanguage directo; el de theme depende solo de este effect.)
|
|
42517
|
+
// OJO: usar `toggleUserPreference()` y NO el setter `Theme =`. El setter solo
|
|
42518
|
+
// persiste localStorage + emite el BehaviorSubject; no aplica las clases
|
|
42519
|
+
// `body.dark`/`html.ion-palette-dark` que el palette de Ionic necesita.
|
|
42508
42520
|
effect(() => {
|
|
42509
|
-
if (!this._synced())
|
|
42510
|
-
return;
|
|
42511
42521
|
const t = this._theme();
|
|
42512
42522
|
if (this.themeService) {
|
|
42513
42523
|
this.themeService.toggleUserPreference(t);
|
|
@@ -42523,7 +42533,7 @@ class PreferencesService {
|
|
|
42523
42533
|
}
|
|
42524
42534
|
});
|
|
42525
42535
|
// Side-effect: aplicar fontSize.
|
|
42526
|
-
// SIN gate `_synced` (
|
|
42536
|
+
// SIN gate `_synced` (igual que theme): el tamaño es una
|
|
42527
42537
|
// preferencia local-first — FontSizeService/localStorage es la verdad del
|
|
42528
42538
|
// dispositivo y `_fontSize` ya viene seedeado de ahí arriba. Aplicar siempre
|
|
42529
42539
|
// que cambie permite que el cambio del usuario surta efecto al instante
|
|
@@ -51047,13 +51057,16 @@ class PermissionsViewComponent {
|
|
|
51047
51057
|
for (const perm of role.permissions) {
|
|
51048
51058
|
const [resource, action] = perm.split(':');
|
|
51049
51059
|
const entry = byResource.get(resource);
|
|
51050
|
-
//
|
|
51051
|
-
//
|
|
51052
|
-
|
|
51060
|
+
// Sin entrada en el catálogo (el backend omite los recursos internal para
|
|
51061
|
+
// no-platform-admins) o entrada internal → NUNCA se muestra a nivel de
|
|
51062
|
+
// producto. Defensa en profundidad junto al filtro del backend (ADR-024).
|
|
51063
|
+
// Nota: el rol puede traer el permiso aunque el recurso esté filtrado del
|
|
51064
|
+
// catálogo (ej. admin tiene templates:*); por eso se descarta lo no resuelto.
|
|
51065
|
+
if (!entry || entry.scope === 'internal') {
|
|
51053
51066
|
continue;
|
|
51054
51067
|
}
|
|
51055
51068
|
const label = this.permLabel(resource, action);
|
|
51056
|
-
if (entry
|
|
51069
|
+
if (entry.scope === 'app') {
|
|
51057
51070
|
if (entry.appId === currentAppId) {
|
|
51058
51071
|
appPerms.push(label);
|
|
51059
51072
|
}
|
|
@@ -51065,7 +51078,7 @@ class PermissionsViewComponent {
|
|
|
51065
51078
|
}
|
|
51066
51079
|
}
|
|
51067
51080
|
else {
|
|
51068
|
-
//
|
|
51081
|
+
// scope === 'org' → gestión de la organización del cliente
|
|
51069
51082
|
orgPerms.push(label);
|
|
51070
51083
|
}
|
|
51071
51084
|
}
|