dmencu 3.3.1 → 3.5.0
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/ayuda/asignacion.md +16 -0
- package/ayuda/circuito-encuesta.md +27 -0
- package/ayuda/control.md +13 -0
- package/ayuda/dm-cambiar-modo.md +16 -0
- package/ayuda/dm-relevamiento.md +20 -0
- package/ayuda/dm-sincronizar.md +18 -0
- package/ayuda/fin-de-campo.md +14 -0
- package/ayuda/metadatos.md +14 -0
- package/ayuda/muestra.md +14 -0
- package/ayuda/procesar.md +13 -0
- package/ayuda/recepcion.md +20 -0
- package/ayuda/supervision.md +9 -0
- package/ayuda/usuarios.md +12 -0
- package/ayuda/varios.md +23 -0
- package/dist/client/client/client.js +99 -2
- package/dist/client/client/css/menu.styl +29 -0
- package/dist/client/unlogged/css/formulario-react.styl +9 -0
- package/dist/client/unlogged/render-config.d.ts +5 -1
- package/dist/client/unlogged/render-config.js +14 -1
- package/dist/client/unlogged/render-formulario.d.ts +1 -0
- package/dist/client/unlogged/render-formulario.js +43 -2
- package/dist/client/unlogged/render-formulario.tsx +71 -0
- package/dist/client/unlogged/render-general.d.ts +2 -0
- package/dist/client/unlogged/render-general.js +2 -1
- package/dist/client/unlogged/render-general.tsx +1 -0
- package/dist/client/unlogged/render-init.d.ts +1 -0
- package/dist/client/unlogged/render-init.js +9 -2
- package/dist/client/unlogged/tipos.d.ts +19 -1
- package/dist/client/unlogged/tipos.js +1 -1
- package/dist/server/app-dmencu.d.ts +8 -1
- package/dist/server/app-dmencu.js +42 -2
- package/dist/server/ayuda.d.ts +19 -0
- package/dist/server/ayuda.js +224 -0
- package/dist/server/def-config.d.ts +1 -1
- package/dist/server/def-config.js +2 -1
- package/dist/server/procedures-dmencu.js +20 -2
- package/dist/server/server/app-dmencu.d.ts +8 -1
- package/dist/server/server/app-dmencu.js +42 -2
- package/dist/server/server/ayuda.d.ts +19 -0
- package/dist/server/server/ayuda.js +224 -0
- package/dist/server/server/def-config.d.ts +1 -1
- package/dist/server/server/def-config.js +2 -1
- package/dist/server/server/procedures-dmencu.js +18 -2
- package/dist/server/server/table-tem.d.ts +1 -0
- package/dist/server/server/table-tem.js +25 -21
- package/dist/server/server/table-tem_edicion.d.ts +2 -0
- package/dist/server/server/table-tem_edicion.js +62 -0
- package/dist/server/server/types-dmencu.d.ts +20 -1
- package/dist/server/server/types-dmencu.js +1 -1
- package/dist/server/table-tem.d.ts +1 -0
- package/dist/server/table-tem.js +25 -21
- package/dist/server/table-tem_edicion.d.ts +2 -0
- package/dist/server/table-tem_edicion.js +62 -0
- package/dist/server/types-dmencu.d.ts +20 -1
- package/dist/server/types-dmencu.js +1 -1
- package/dist/server/unlogged/tipos.d.ts +19 -1
- package/dist/server/unlogged/tipos.js +1 -1
- package/dist/test/app-para-tests.d.ts +11 -8
- package/dist/test/app-para-tests.js +8 -2
- package/dist/test/test-ayuda.d.ts +1 -0
- package/dist/test/test-ayuda.js +183 -0
- package/dist/test/test-tem-edicion.d.ts +1 -0
- package/dist/test/test-tem-edicion.js +103 -0
- package/dist/test/test.d.ts +2 -0
- package/dist/test/test.js +4 -2
- package/dist/unlogged/tipos.d.ts +19 -1
- package/dist/unlogged/tipos.js +1 -1
- package/dist/unlogged/unlogged/css/formulario-react.styl +9 -0
- package/dist/unlogged/unlogged/render-config.d.ts +5 -1
- package/dist/unlogged/unlogged/render-config.js +14 -1
- package/dist/unlogged/unlogged/render-formulario.d.ts +1 -0
- package/dist/unlogged/unlogged/render-formulario.js +43 -2
- package/dist/unlogged/unlogged/render-formulario.tsx +71 -0
- package/dist/unlogged/unlogged/render-general.d.ts +2 -0
- package/dist/unlogged/unlogged/render-general.js +2 -1
- package/dist/unlogged/unlogged/render-general.tsx +1 -0
- package/dist/unlogged/unlogged/render-init.d.ts +1 -0
- package/dist/unlogged/unlogged/render-init.js +9 -2
- package/dist/unlogged/unlogged/tipos.d.ts +19 -1
- package/dist/unlogged/unlogged/tipos.js +1 -1
- package/dist/unlogged/unlogged/unlogged.js +14 -1
- package/install/validar_manzana_casa_tem_trg.sql +25 -0
- package/package.json +5 -2
|
@@ -27,7 +27,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
27
27
|
if (v !== undefined) module.exports = v;
|
|
28
28
|
}
|
|
29
29
|
else if (typeof define === "function" && define.amd) {
|
|
30
|
-
define(["require", "exports", "procesamiento", "./procedures-dmencu", "pg-promise-strict", "mini-tools", "cast-error", "yazl", "express", "fs", "./table-roles", "./table-personal", "./table-recepcionistas", "./table-encuestadores", "./table-encuestadores", "./table-encuestadores", "./table-encuestadores", "./table-mis_encuestadores", "./table-recuperadores", "./table-supervisores", "./table-personal_rol", "./table-permisos", "./table-roles_permisos", "./table-modos_dm", "./table-parametros", "./table-roles_subordinados", "./table-no_rea", "./table-no_rea_sup", "./table-rea", "./table-rea_sup", "./table-tem", "./table-semanas", "./table-usuarios", "./table-operaciones", "./table-comunas", "./table-areas", "./table-sincronizaciones", "./table-tareas", "./table-tareas_tem", "./table-tareas_areas", "./table-areas_asignacion_general", "./table-grilla_hoja_ruta", "./table-tareas_areas", "./table-tareas_areas", "./table-tareas_areas", "./table-tareas_areas", "./table-mis_tareas", "./table-tem_asignacion", "./table-tareas_tem_recepcion", "./table-tareas_tem_ingreso", "./table-tareas_tem_fin_campo", "./table-tareas_tem_procesamiento", "./table-tareas_tem_analisis_campo", "./table-mis_tareas_areas", "./table-control_campo", "./table-control_resumen", "./table-control_dias_carga", "./table-viviendas", "./table-visitas", "./table-hogares", "./table-personas", "./table-visitas_sup", "./table-hogares_sup", "./table-personas_sup", "./table-diccionario", "./table-dictra", "./table-dicvar", "./table-estados", "./table-acciones", "./table-estados_acciones", "./table-tareas_proximas", "./table-historial_tem", "./table-inconsistencias_cumplen_condicion", "./table-tem_borradas", "./table-barrios", "./table-fracciones", "./table-radios", "./table-manzanas", "./table-area_enc_proximas", "./types-dmencu", "./def-config", "best-globals"], factory);
|
|
30
|
+
define(["require", "exports", "procesamiento", "./procedures-dmencu", "./ayuda", "pg-promise-strict", "mini-tools", "cast-error", "yazl", "express", "fs", "path", "./table-roles", "./table-personal", "./table-recepcionistas", "./table-encuestadores", "./table-encuestadores", "./table-encuestadores", "./table-encuestadores", "./table-mis_encuestadores", "./table-recuperadores", "./table-supervisores", "./table-personal_rol", "./table-permisos", "./table-roles_permisos", "./table-modos_dm", "./table-parametros", "./table-roles_subordinados", "./table-no_rea", "./table-no_rea_sup", "./table-rea", "./table-rea_sup", "./table-tem", "./table-semanas", "./table-usuarios", "./table-operaciones", "./table-comunas", "./table-areas", "./table-sincronizaciones", "./table-tareas", "./table-tareas_tem", "./table-tareas_areas", "./table-areas_asignacion_general", "./table-grilla_hoja_ruta", "./table-tareas_areas", "./table-tareas_areas", "./table-tareas_areas", "./table-tareas_areas", "./table-mis_tareas", "./table-tem_asignacion", "./table-tem_edicion", "./table-tareas_tem_recepcion", "./table-tareas_tem_ingreso", "./table-tareas_tem_fin_campo", "./table-tareas_tem_procesamiento", "./table-tareas_tem_analisis_campo", "./table-mis_tareas_areas", "./table-control_campo", "./table-control_resumen", "./table-control_dias_carga", "./table-viviendas", "./table-visitas", "./table-hogares", "./table-personas", "./table-visitas_sup", "./table-hogares_sup", "./table-personas_sup", "./table-diccionario", "./table-dictra", "./table-dicvar", "./table-estados", "./table-acciones", "./table-estados_acciones", "./table-tareas_proximas", "./table-historial_tem", "./table-inconsistencias_cumplen_condicion", "./table-tem_borradas", "./table-barrios", "./table-fracciones", "./table-radios", "./table-manzanas", "./table-area_enc_proximas", "./types-dmencu", "./ayuda", "./def-config", "best-globals"], factory);
|
|
31
31
|
}
|
|
32
32
|
})(function (require, exports) {
|
|
33
33
|
"use strict";
|
|
@@ -35,16 +35,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
35
35
|
exports.AppDmEncu = exports.TABLAS_REA_NO_REA = exports.TABLAS_ESTRUCTURA = void 0;
|
|
36
36
|
exports.getModoByPolicy = getModoByPolicy;
|
|
37
37
|
exports.permisosSegunUsuario = permisosSegunUsuario;
|
|
38
|
+
exports.quienConsultaAyuda = quienConsultaAyuda;
|
|
38
39
|
exports.refrescarEstructuraAlModificarTabla = refrescarEstructuraAlModificarTabla;
|
|
39
40
|
exports.emergeAppDmEncu = emergeAppDmEncu;
|
|
40
41
|
const procesamiento_1 = require("procesamiento");
|
|
41
42
|
const procedures_dmencu_1 = require("./procedures-dmencu");
|
|
43
|
+
const ayuda_1 = require("./ayuda");
|
|
42
44
|
const pg = require("pg-promise-strict");
|
|
43
45
|
const miniTools = require("mini-tools");
|
|
44
46
|
const cast_error_1 = require("cast-error");
|
|
45
47
|
const yazl = require("yazl");
|
|
46
48
|
const express = require("express");
|
|
47
49
|
const fs_1 = require("fs");
|
|
50
|
+
const path = require("path");
|
|
48
51
|
const table_roles_1 = require("./table-roles");
|
|
49
52
|
const table_personal_1 = require("./table-personal");
|
|
50
53
|
const table_recepcionistas_1 = require("./table-recepcionistas");
|
|
@@ -83,6 +86,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
83
86
|
const table_tareas_areas_5 = require("./table-tareas_areas");
|
|
84
87
|
const table_mis_tareas_1 = require("./table-mis_tareas");
|
|
85
88
|
const table_tem_asignacion_1 = require("./table-tem_asignacion");
|
|
89
|
+
const table_tem_edicion_1 = require("./table-tem_edicion");
|
|
86
90
|
const table_tareas_tem_recepcion_1 = require("./table-tareas_tem_recepcion");
|
|
87
91
|
const table_tareas_tem_ingreso_1 = require("./table-tareas_tem_ingreso");
|
|
88
92
|
const table_tareas_tem_fin_campo_1 = require("./table-tareas_tem_fin_campo");
|
|
@@ -115,6 +119,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
115
119
|
const table_manzanas_1 = require("./table-manzanas");
|
|
116
120
|
const table_area_enc_proximas_1 = require("./table-area_enc_proximas");
|
|
117
121
|
__exportStar(require("./types-dmencu"), exports);
|
|
122
|
+
__exportStar(require("./ayuda"), exports);
|
|
118
123
|
const def_config_1 = require("./def-config");
|
|
119
124
|
const best_globals_1 = require("best-globals");
|
|
120
125
|
const APP_DM_VERSION = "#22-12-15";
|
|
@@ -133,6 +138,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
133
138
|
}
|
|
134
139
|
return { puede: permisosDelRol === null || permisosDelRol === void 0 ? void 0 : permisosDelRol.puede };
|
|
135
140
|
}
|
|
141
|
+
// lo que decide qué temas de ayuda ve el usuario: su rol, sus permisos y el modo de la instancia
|
|
142
|
+
function quienConsultaAyuda(context) {
|
|
143
|
+
var _a, _b;
|
|
144
|
+
return {
|
|
145
|
+
rol: (_b = (_a = context.user) === null || _a === void 0 ? void 0 : _a.rol) !== null && _b !== void 0 ? _b : null,
|
|
146
|
+
superuser: !!context.superuser,
|
|
147
|
+
puede: context.puede,
|
|
148
|
+
modo: getModoByPolicy(context.be),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
136
151
|
// tablas cuya modificación cambia la estructura que se manda a los dispositivos (ver operativo_estructura_completa)
|
|
137
152
|
exports.TABLAS_ESTRUCTURA = ['casilleros', 'semanas'];
|
|
138
153
|
// tablas de rea/no rea, que además se guardan en be.caches.tableContent (ver refreshCaches)
|
|
@@ -234,6 +249,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
234
249
|
this.caches.metaEncIncluirCasillerosSaltoREL = false;
|
|
235
250
|
this.caches.timestampEstructura = new Date().getTime();
|
|
236
251
|
this.caches.tableContent.conReaHogar = {};
|
|
252
|
+
this.caches.ayuda = [];
|
|
237
253
|
}
|
|
238
254
|
// backend-plus lo declara sin parámetros pero lo llama con (context, usuario), por eso son opcionales
|
|
239
255
|
canChangePass(reqOrContext, userToChangePass) {
|
|
@@ -458,10 +474,29 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
458
474
|
//console.dir(be.caches.permisosParaNadie,{depth:9});
|
|
459
475
|
});
|
|
460
476
|
});
|
|
477
|
+
be.caches.ayuda = (0, ayuda_1.cargarAyuda)(be.getAyudaFuentes());
|
|
478
|
+
be.problemasDeAyuda().forEach(problema => console.error(problema));
|
|
461
479
|
yield this.refreshCaches();
|
|
462
480
|
yield registrarCronJobPasarAProie(be);
|
|
463
481
|
});
|
|
464
482
|
}
|
|
483
|
+
// carpetas con la ayuda para usuarios, en orden: un tema de una fuente posterior reemplaza u oculta
|
|
484
|
+
// al de una anterior con el mismo id. Las apps finales agregan la suya (ver docs/ayuda-online.md)
|
|
485
|
+
getAyudaFuentes() {
|
|
486
|
+
return [{ origen: 'dmencu', carpeta: path.join((0, ayuda_1.carpetaDelPaquete)(__dirname), 'ayuda') }];
|
|
487
|
+
}
|
|
488
|
+
// temas de ayuda del modo actual con permisos, roles u opciones de menú que no existen
|
|
489
|
+
problemasDeAyuda() {
|
|
490
|
+
var be = this;
|
|
491
|
+
var modo = getModoByPolicy(be);
|
|
492
|
+
var rutas = [];
|
|
493
|
+
Object.keys(be.caches.permisosRol).forEach(rol => {
|
|
494
|
+
var user = { rol, idper: '', usuario: '' };
|
|
495
|
+
var context = Object.assign(Object.assign({}, permisosSegunUsuario(be.caches, user)), { be, user, session: {}, username: '', machineId: '', navigator: '' });
|
|
496
|
+
rutas = rutas.concat((0, ayuda_1.rutasDelMenu)(be.getMenu(context).menu));
|
|
497
|
+
});
|
|
498
|
+
return (0, ayuda_1.problemasDeAyuda)(be.caches.ayuda.filter(tema => tema.modo == null || tema.modo == modo), be.caches.permisosSuperuser, Object.keys(be.caches.permisosRol), rutas);
|
|
499
|
+
}
|
|
465
500
|
configStaticConfig() {
|
|
466
501
|
super.configStaticConfig();
|
|
467
502
|
this.setStaticConfig(def_config_1.defConfig);
|
|
@@ -761,6 +796,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
761
796
|
if (((_b = (_a = context.puede) === null || _a === void 0 ? void 0 : _a.campo) === null || _b === void 0 ? void 0 : _b.administrar) || ((_d = (_c = context.puede) === null || _c === void 0 ? void 0 : _c.encuestas) === null || _d === void 0 ? void 0 : _d.procesar)) {
|
|
762
797
|
const submenuMuestra = [
|
|
763
798
|
{ menuType: 'table', name: 'tem', label: 'TEM' },
|
|
799
|
+
{ menuType: 'table', name: 'tem_edicion', label: 'edición TEM' },
|
|
764
800
|
{ menuType: 'proc', name: 'muestra_generar', label: 'generar muestra' },
|
|
765
801
|
{ menuType: 'table', name: 'semanas' },
|
|
766
802
|
{ menuType: 'table', name: 'area_enc_proximas' },
|
|
@@ -880,6 +916,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
880
916
|
menu.push(menuCarto);
|
|
881
917
|
}
|
|
882
918
|
}
|
|
919
|
+
if ((0, ayuda_1.temasVisibles)(this.caches.ayuda, quienConsultaAyuda(context)).length) {
|
|
920
|
+
menu.push({ menuType: 'ayuda', name: 'ayuda' });
|
|
921
|
+
}
|
|
883
922
|
return { menu };
|
|
884
923
|
}
|
|
885
924
|
prepareGetTables() {
|
|
@@ -911,6 +950,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
911
950
|
estados_acciones: table_estados_acciones_1.estados_acciones,
|
|
912
951
|
tareas_proximas: table_tareas_proximas_1.tareas_proximas,
|
|
913
952
|
tem: table_tem_1.tem,
|
|
953
|
+
tem_edicion: table_tem_edicion_1.tem_edicion,
|
|
914
954
|
historial_tem: table_historial_tem_1.historial_tem,
|
|
915
955
|
modos_dm: table_modos_dm_1.modos_dm,
|
|
916
956
|
parametros: table_parametros_1.parametros,
|
|
@@ -1051,4 +1091,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
1051
1091
|
}
|
|
1052
1092
|
exports.AppDmEncu = emergeAppDmEncu((0, procesamiento_1.emergeAppProcesamiento)((0, procesamiento_1.emergeAppConsistencias)((0, procesamiento_1.emergeAppVarCal)((0, procesamiento_1.emergeAppDatosExt)((0, procesamiento_1.emergeAppOperativos)(procesamiento_1.AppBackend))))));
|
|
1053
1093
|
});
|
|
1054
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRtZW5jdS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2ZXIvYXBwLWRtZW5jdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFlBQVksQ0FBQzs7O0lBaUhiLDBDQUVDO0lBR0Qsb0RBYUM7SUF3QkQsa0ZBZ0JDO0lBaUVELDBDQSsyQkM7SUF4bENELGlEQUE0TDtJQUM1TCwyREFBNkU7SUFFN0Usd0NBQXdDO0lBQ3hDLHdDQUF3QztJQVN4QywyQ0FBa0Q7SUFFbEQsNkJBQTZCO0lBRTdCLG1DQUFtQztJQUVuQywyQkFBb0M7SUFFcEMsK0NBQXNDO0lBQ3RDLHFEQUE0QztJQUM1QyxpRUFBd0Q7SUFDeEQsK0RBQXdGO0lBQ3hGLCtEQUFnRTtJQUNoRSwrREFBK0Q7SUFDL0QsK0RBQW1FO0lBQ25FLHVFQUE4RDtJQUM5RCwrREFBc0Q7SUFDdEQsNkRBQW9EO0lBQ3BELDZEQUFvRDtJQUNwRCxxREFBNEM7SUFDNUMsaUVBQXdEO0lBQ3hELHFEQUE0QztJQUM1Qyx5REFBZ0Q7SUFDaEQseUVBQWdFO0lBRWhFLGlEQUF3QztJQUN4Qyx5REFBZ0Q7SUFDaEQsMkNBQWtDO0lBQ2xDLG1EQUEwQztJQUMxQywyQ0FBa0M7SUFDbEMsbURBQTBDO0lBQzFDLHFEQUE0QztJQUM1QywyREFBa0Q7SUFDbEQsbURBQTBDO0lBQzFDLCtDQUFzQztJQUN0QyxxRUFBNEQ7SUFDNUQsaURBQXdDO0lBQ3hDLHlEQU00QjtJQUM1Qiw2REFBb0Q7SUFDcEQscUZBQTRFO0lBQzVFLHFFQUE0RDtJQUM1RCw2REFBb0Q7SUFDcEQsNkRBQW9EO0lBQ3BELDZEQUFvRDtJQUNwRCw2REFBb0Q7SUFDcEQseURBQWdEO0lBQ2hELGlFQUF3RDtJQUN4RCw2RUFBb0U7SUFDcEUseUVBQWdFO0lBQ2hFLDZFQUFvRTtJQUNwRSxxRkFBNEU7SUFDNUUsdUZBQThFO0lBQzlFLHFFQUE0RDtJQUM1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VSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUN6RixDQUFDO2dCQUNOLENBQUMsQ0FBQyxDQUFBO1lBQ04sQ0FBQztTQUNKLENBQUE7SUFDTCxDQUFDO0lBRVUsUUFBQSxTQUFTLEdBQUcsZUFBZSxDQUFDLElBQUEsc0NBQXNCLEVBQUMsSUFBQSxzQ0FBc0IsRUFBQyxJQUFBLCtCQUFlLEVBQUMsSUFBQSxpQ0FBaUIsRUFBQyxJQUFBLG1DQUFtQixFQUFDLDBCQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmltcG9ydCAqIGFzIHByb2Nlc2FtaWVudG8gZnJvbSBcInByb2Nlc2FtaWVudG9cIjtcclxuaW1wb3J0IHsgZW1lcmdlQXBwUHJvY2VzYW1pZW50bywgZW1lcmdlQXBwQ29uc2lzdGVuY2lhcywgZW1lcmdlQXBwVmFyQ2FsLCBlbWVyZ2VBcHBEYXRvc0V4dCwgZW1lcmdlQXBwT3BlcmF0aXZvcywgQXBwQmFja2VuZCwgQ2xpZW50TW9kdWxlRGVmaW5pdGlvbiwgT3B0c0NsaWVudFBhZ2UgfSBmcm9tIFwicHJvY2VzYW1pZW50b1wiO1xyXG5pbXBvcnQgeyBwYXNhckVuY3Vlc3Rhc0FQcm9pZSwgUHJvY2VkdXJlc0RtRW5jdSB9IGZyb20gXCIuL3Byb2NlZHVyZXMtZG1lbmN1XCI7XHJcblxyXG5pbXBvcnQgKiBhcyBwZyBmcm9tIFwicGctcHJvbWlzZS1zdHJpY3RcIjtcclxuaW1wb3J0ICogYXMgbWluaVRvb2xzIGZyb20gXCJtaW5pLXRvb2xzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBDbGllbnQsIENvbnRleHQsIENvcmVGdW5jdGlvblBhcmFtZXRlcnMsXHJcbiAgICBNZW51SW5mb0Jhc2UsXHJcbiAgICBQdWVkZSxcclxuICAgIFJlcXVlc3QsIFJlc3BvbnNlLFxyXG4gICAgU3VmaWpvc0FtYmllbnRlLFxyXG59IGZyb20gXCIuL3R5cGVzLWRtZW5jdVwiO1xyXG5cclxuaW1wb3J0IHsgZXhwZWN0ZWQsIHVuZXhwZWN0ZWQgfSBmcm9tIFwiY2FzdC1lcnJvclwiO1xyXG5cclxuaW1wb3J0ICogYXMgeWF6bCBmcm9tIFwieWF6bFwiO1xyXG5pbXBvcnQgeyBOZXh0RnVuY3Rpb24gfSBmcm9tIFwiZXhwcmVzcy1zZXJ2ZS1zdGF0aWMtY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBleHByZXNzIGZyb20gXCJleHByZXNzXCI7XHJcblxyXG5pbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gXCJmc1wiO1xyXG5cclxuaW1wb3J0IHsgcm9sZXMgfSBmcm9tIFwiLi90YWJsZS1yb2xlc1wiO1xyXG5pbXBvcnQgeyBwZXJzb25hbCB9IGZyb20gXCIuL3RhYmxlLXBlcnNvbmFsXCI7XHJcbmltcG9ydCB7IHJlY2VwY2lvbmlzdGFzIH0gZnJvbSBcIi4vdGFibGUtcmVjZXBjaW9uaXN0YXNcIjtcclxuaW1wb3J0IHsgZW5jdWVzdGFkb3Jlc19hc2lnbmFkb3MsIGluZ3Jlc2Fkb3Jlc19hc2lnbmFkb3MgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IHJlY3VwZXJhZG9yZXNfYXNpZ25hZG9zIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBzdXBlcnZpc29yZXNfYXNpZ25hZG9zIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBtaXNfc3VwZXJ2aXNvcmVzX2FzaWduYWRvcyB9IGZyb20gXCIuL3RhYmxlLWVuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgbWlzX2VuY3Vlc3RhZG9yZXMgfSBmcm9tIFwiLi90YWJsZS1taXNfZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyByZWN1cGVyYWRvcmVzIH0gZnJvbSBcIi4vdGFibGUtcmVjdXBlcmFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBzdXBlcnZpc29yZXMgfSBmcm9tIFwiLi90YWJsZS1zdXBlcnZpc29yZXNcIjtcclxuaW1wb3J0IHsgcGVyc29uYWxfcm9sIH0gZnJvbSBcIi4vdGFibGUtcGVyc29uYWxfcm9sXCI7XHJcbmltcG9ydCB7IHBlcm1pc29zIH0gZnJvbSBcIi4vdGFibGUtcGVybWlzb3NcIjtcclxuaW1wb3J0IHsgcm9sZXNfcGVybWlzb3MgfSBmcm9tIFwiLi90YWJsZS1yb2xlc19wZXJtaXNvc1wiO1xyXG5pbXBvcnQgeyBtb2Rvc19kbSB9IGZyb20gXCIuL3RhYmxlLW1vZG9zX2RtXCI7XHJcbmltcG9ydCB7IHBhcmFtZXRyb3MgfSBmcm9tIFwiLi90YWJsZS1wYXJhbWV0cm9zXCI7XHJcbmltcG9ydCB7IHJvbGVzX3N1Ym9yZGluYWRvcyB9IGZyb20gXCIuL3RhYmxlLXJvbGVzX3N1Ym9yZGluYWRvc1wiO1xyXG5cclxuaW1wb3J0IHsgbm9fcmVhIH0gZnJvbSBcIi4vdGFibGUtbm9fcmVhXCI7XHJcbmltcG9ydCB7IG5vX3JlYV9zdXAgfSBmcm9tIFwiLi90YWJsZS1ub19yZWFfc3VwXCI7XHJcbmltcG9ydCB7IHJlYSB9IGZyb20gXCIuL3RhYmxlLXJlYVwiO1xyXG5pbXBvcnQgeyByZWFfc3VwIH0gZnJvbSBcIi4vdGFibGUtcmVhX3N1cFwiO1xyXG5pbXBvcnQgeyB0ZW0gfSBmcm9tIFwiLi90YWJsZS10ZW1cIjtcclxuaW1wb3J0IHsgc2VtYW5hcyB9IGZyb20gXCIuL3RhYmxlLXNlbWFuYXNcIjtcclxuaW1wb3J0IHsgdXN1YXJpb3MgfSBmcm9tICcuL3RhYmxlLXVzdWFyaW9zJztcclxuaW1wb3J0IHsgb3BlcmFjaW9uZXMgfSBmcm9tICcuL3RhYmxlLW9wZXJhY2lvbmVzJztcclxuaW1wb3J0IHsgY29tdW5hcyB9IGZyb20gJy4vdGFibGUtY29tdW5hcyc7XHJcbmltcG9ydCB7IGFyZWFzIH0gZnJvbSAnLi90YWJsZS1hcmVhcyc7XHJcbmltcG9ydCB7IHNpbmNyb25pemFjaW9uZXMgfSBmcm9tICcuL3RhYmxlLXNpbmNyb25pemFjaW9uZXMnO1xyXG5pbXBvcnQgeyB0YXJlYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhcyc7XHJcbmltcG9ydCB7XHJcbiAgICB0YXJlYXNfdGVtLFxyXG4gICAgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2VuY3UsXHJcbiAgICB0YXJlYXNfdGVtX2FzaWduYWNpb25fcmVjdSxcclxuICAgIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9zdXBlLFxyXG4gICAgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2luZ3JcclxufSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW0nO1xyXG5pbXBvcnQgeyB0YXJlYXNfYXJlYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IGFyZWFzX2FzaWduYWNpb25fZ2VuZXJhbCB9IGZyb20gJy4vdGFibGUtYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsJztcclxuaW1wb3J0IHsgZ3JpbGxhX2hvamFfcnV0YSB9IGZyb20gJy4vdGFibGUtZ3JpbGxhX2hvamFfcnV0YSc7XHJcbmltcG9ydCB7IHRfZW5jdV9hcmVhcyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9yZWN1X2FyZWFzIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfYXJlYXMnO1xyXG5pbXBvcnQgeyB0X3N1cGVfYXJlYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IHRfaW5ncl9hcmVhcyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgbWlzX3RhcmVhcyB9IGZyb20gJy4vdGFibGUtbWlzX3RhcmVhcyc7XHJcbmltcG9ydCB7IHRlbV9hc2lnbmFjaW9uIH0gZnJvbSAnLi90YWJsZS10ZW1fYXNpZ25hY2lvbic7XHJcbmltcG9ydCB7IHRhcmVhc190ZW1fcmVjZXBjaW9uIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtX3JlY2VwY2lvbic7XHJcbmltcG9ydCB7IHRhcmVhc190ZW1faW5ncmVzbyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9pbmdyZXNvJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9maW5fY2FtcG8gfSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW1fZmluX2NhbXBvJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9wcm9jZXNhbWllbnRvIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtX3Byb2Nlc2FtaWVudG8nO1xyXG5pbXBvcnQgeyB0YXJlYXNfdGVtX2FuYWxpc2lzX2NhbXBvIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtX2FuYWxpc2lzX2NhbXBvJztcclxuaW1wb3J0IHsgbWlzX3RhcmVhc19hcmVhcyB9IGZyb20gJy4vdGFibGUtbWlzX3RhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IGNvbnRyb2xfY2FtcG8gfSBmcm9tICcuL3RhYmxlLWNvbnRyb2xfY2FtcG8nO1xyXG5pbXBvcnQgeyBjb250cm9sX3Jlc3VtZW4gfSBmcm9tICcuL3RhYmxlLWNvbnRyb2xfcmVzdW1lbic7XHJcbmltcG9ydCB7IGNvbnRyb2xfZGlhc19jYXJnYSB9IGZyb20gJy4vdGFibGUtY29udHJvbF9kaWFzX2NhcmdhJztcclxuaW1wb3J0IHsgdml2aWVuZGFzIH0gZnJvbSAnLi90YWJsZS12aXZpZW5kYXMnO1xyXG5pbXBvcnQgeyB2aXNpdGFzIH0gZnJvbSAnLi90YWJsZS12aXNpdGFzJztcclxuaW1wb3J0IHsgaG9nYXJlcyB9IGZyb20gJy4vdGFibGUtaG9nYXJlcyc7XHJcbmltcG9ydCB7IHBlcnNvbmFzIH0gZnJvbSAnLi90YWJsZS1wZXJzb25hcyc7XHJcbmltcG9ydCB7IHZpc2l0YXNfc3VwIH0gZnJvbSAnLi90YWJsZS12aXNpdGFzX3N1cCc7XHJcbmltcG9ydCB7IGhvZ2FyZXNfc3VwIH0gZnJvbSAnLi90YWJsZS1ob2dhcmVzX3N1cCc7XHJcbmltcG9ydCB7IHBlcnNvbmFzX3N1cCB9IGZyb20gJy4vdGFibGUtcGVyc29uYXNfc3VwJztcclxuaW1wb3J0IHsgZGljY2lvbmFyaW8gfSBmcm9tICcuL3RhYmxlLWRpY2Npb25hcmlvJztcclxuaW1wb3J0IHsgZGljdHJhIH0gZnJvbSAnLi90YWJsZS1kaWN0cmEnO1xyXG5pbXBvcnQgeyBkaWN2YXIgfSBmcm9tICcuL3RhYmxlLWRpY3Zhcic7XHJcblxyXG5pbXBvcnQgeyBlc3RhZG9zIH0gZnJvbSAnLi90YWJsZS1lc3RhZG9zJztcclxuaW1wb3J0IHsgYWNjaW9uZXMgfSBmcm9tICcuL3RhYmxlLWFjY2lvbmVzJztcclxuaW1wb3J0IHsgZXN0YWRvc19hY2Npb25lcyB9IGZyb20gJy4vdGFibGUtZXN0YWRvc19hY2Npb25lcyc7XHJcbmltcG9ydCB7IHRhcmVhc19wcm94aW1hcyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3Byb3hpbWFzJztcclxuaW1wb3J0IHsgaGlzdG9yaWFsX3RlbSB9IGZyb20gJy4vdGFibGUtaGlzdG9yaWFsX3RlbSc7XHJcbmltcG9ydCB7IGluY29uc2lzdGVuY2lhc19jdW1wbGVuX2NvbmRpY2lvbiB9IGZyb20gJy4vdGFibGUtaW5jb25zaXN0ZW5jaWFzX2N1bXBsZW5fY29uZGljaW9uJztcclxuaW1wb3J0IHsgdGVtX2JvcnJhZGFzIH0gZnJvbSAnLi90YWJsZS10ZW1fYm9ycmFkYXMnO1xyXG5pbXBvcnQgeyBiYXJyaW9zIH0gZnJvbSBcIi4vdGFibGUtYmFycmlvc1wiO1xyXG5pbXBvcnQgeyBmcmFjY2lvbmVzIH0gZnJvbSBcIi4vdGFibGUtZnJhY2Npb25lc1wiO1xyXG5pbXBvcnQgeyByYWRpb3MgfSBmcm9tIFwiLi90YWJsZS1yYWRpb3NcIjtcclxuaW1wb3J0IHsgbWFuemFuYXMgfSBmcm9tIFwiLi90YWJsZS1tYW56YW5hc1wiO1xyXG5pbXBvcnQgeyBhcmVhX2VuY19wcm94aW1hcyB9IGZyb20gXCIuL3RhYmxlLWFyZWFfZW5jX3Byb3hpbWFzXCI7XHJcblxyXG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy1kbWVuY3VcIjtcclxuaW1wb3J0IHsgZGVmQ29uZmlnIH0gZnJvbSBcIi4vZGVmLWNvbmZpZ1wiXHJcbmltcG9ydCB7IFByb2NlZHVyZURlZiB9IGZyb20gXCJiYWNrZW5kLXBsdXNcIjtcclxuaW1wb3J0IHsgdGFibGUgfSBmcm9tIFwiY29uc29sZVwiO1xyXG5cclxuaW1wb3J0IHsgZGF0ZXRpbWUgfSBmcm9tIFwiYmVzdC1nbG9iYWxzXCI7XHJcbmltcG9ydCB7IFByb2NlZHVyZUNvbnRleHQgfSBmcm9tIFwiYmFja2VuZC1wbHVzXCI7XHJcblxyXG5cclxuY29uc3QgQVBQX0RNX1ZFUlNJT04gPSBcIiMyMi0xMi0xNVwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZG9CeVBvbGljeShiZTogQXBwQmFja2VuZCkge1xyXG4gICAgcmV0dXJuIGJlLmNvbmZpZy5zZXJ2ZXIucG9saWN5ID09ICd3ZWInID8gJ1JFTEVWQU1JRU5UTycgOiAnR0FCSU5FVEUnO1xyXG59XHJcblxyXG4vLyBwZXJtaXNvcyBxdWUgZ2V0Q29udGV4dCBhZ3JlZ2EgYWwgY29udGV4dG8gc2Vnw7puIGVsIHVzdWFyaW8gbG9ndWVhZG8gKG8gbGEgZmFsdGEgZGUgdXN1YXJpbylcclxuZXhwb3J0IGZ1bmN0aW9uIHBlcm1pc29zU2VndW5Vc3VhcmlvKFxyXG4gICAgY2FjaGVzOiBQaWNrPEFwcEJhY2tlbmRbJ2NhY2hlcyddLCAncGVybWlzb3NSb2wnIHwgJ3Blcm1pc29zU3VwZXJ1c2VyJyB8ICdwZXJtaXNvc1BhcmFOYWRpZSc+LFxyXG4gICAgdXNlcjogQ29udGV4dFsndXNlciddIHwgdW5kZWZpbmVkXHJcbik6IHsgc3VwZXJ1c2VyPzogdHJ1ZSwgcHVlZGU/OiBQdWVkZSB9IHtcclxuICAgIGlmICh1c2VyID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4geyBwdWVkZTogY2FjaGVzLnBlcm1pc29zUGFyYU5hZGllIH07XHJcbiAgICB9XHJcbiAgICB2YXIgcm9sID0gdXNlci5yb2w7XHJcbiAgICB2YXIgcGVybWlzb3NEZWxSb2wgPSByb2wgIT0gbnVsbCA/IGNhY2hlcy5wZXJtaXNvc1JvbFtyb2xdIDogdW5kZWZpbmVkO1xyXG4gICAgaWYgKHBlcm1pc29zRGVsUm9sPy5zdXBlcnVzZXIpIHtcclxuICAgICAgICByZXR1cm4geyBzdXBlcnVzZXI6IHRydWUsIHB1ZWRlOiBjYWNoZXMucGVybWlzb3NTdXBlcnVzZXIgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IHB1ZWRlOiBwZXJtaXNvc0RlbFJvbD8ucHVlZGUgfTtcclxufVxyXG5cclxuLy8gbG8gcXVlIHVzYW4gcmVmcmVzaENhY2hlcyB5IHJlZnJlc2NhckVzdHJ1Y3R1cmFBbE1vZGlmaWNhclRhYmxhIGRlbCBjbGllbnRlIGRlIGJhc2UgKGVsIENsaWVudCBkZSBwZy1wcm9taXNlLXN0cmljdCBsbyBjdW1wbGUpXHJcbmV4cG9ydCB0eXBlIENvbnN1bHRhRGIgPSB7XHJcbiAgICBmZXRjaEFsbCgpOiBQcm9taXNlPHBnLlJlc3VsdFJvd3M+XHJcbiAgICBmZXRjaFVuaXF1ZVJvdygpOiBQcm9taXNlPHBnLlJlc3VsdE9uZVJvdz5cclxufVxyXG5leHBvcnQgdHlwZSBDbGllbnRlRGIgPSB7XHJcbiAgICBxdWVyeShzcWw6IHN0cmluZyk6IENvbnN1bHRhRGJcclxufVxyXG5cclxuLy8gdGFibGFzIGN1eWEgbW9kaWZpY2FjacOzbiBjYW1iaWEgbGEgZXN0cnVjdHVyYSBxdWUgc2UgbWFuZGEgYSBsb3MgZGlzcG9zaXRpdm9zICh2ZXIgb3BlcmF0aXZvX2VzdHJ1Y3R1cmFfY29tcGxldGEpXHJcbmV4cG9ydCBjb25zdCBUQUJMQVNfRVNUUlVDVFVSQSA9IFsnY2FzaWxsZXJvcycsICdzZW1hbmFzJ107XHJcbi8vIHRhYmxhcyBkZSByZWEvbm8gcmVhLCBxdWUgYWRlbcOhcyBzZSBndWFyZGFuIGVuIGJlLmNhY2hlcy50YWJsZUNvbnRlbnQgKHZlciByZWZyZXNoQ2FjaGVzKVxyXG5leHBvcnQgY29uc3QgVEFCTEFTX1JFQV9OT19SRUEgPSBbJ3JlYScsICdub19yZWEnLCAncmVhX3N1cCcsICdub19yZWFfc3VwJ107XHJcblxyXG5leHBvcnQgdHlwZSBSZWZyZXNjYWRvckVzdHJ1Y3R1cmEgPSB7XHJcbiAgICBjYWNoZXM6IHsgdGltZXN0YW1wRXN0cnVjdHVyYTogbnVtYmVyIH1cclxuICAgIHJlZnJlc2hDYWNoZXMoY2xpZW50OiBDbGllbnRlRGIpOiBQcm9taXNlPHZvaWQ+XHJcbn1cclxuXHJcbi8vIGVudnVlbHZlIHRhYmxlX3JlY29yZF9zYXZlL3RhYmxlX3JlY29yZF9kZWxldGUgcGFyYSBxdWUgYWwgbW9kaWZpY2FyIGVzYXMgdGFibGFzIGxvcyBkaXNwb3NpdGl2b3NcclxuLy8gcmVjaWJhbiBsYSBlc3RydWN0dXJhIG51ZXZhICh0aW1lc3RhbXBFc3RydWN0dXJhKSB5LCBzaSBzb24gZGUgcmVhL25vIHJlYSwgc2UgcmVjYXJndWVuIGxhcyBjYWNoZXNcclxuLy8gY29uIGVsIG1pc21vIGNsaWVudGUgKGRlbnRybyBkZSBsYSBtaXNtYSB0cmFuc2FjY2nDs24pXHJcbmV4cG9ydCBmdW5jdGlvbiByZWZyZXNjYXJFc3RydWN0dXJhQWxNb2RpZmljYXJUYWJsYTxDIGV4dGVuZHMgeyBjbGllbnQ6IENsaWVudGVEYiB9LCBQIGV4dGVuZHMgeyB0YWJsZTogc3RyaW5nIH0sIFIsIFJlc3RvIGV4dGVuZHMgKG9iamVjdCB8IHVuZGVmaW5lZClbXT4oXHJcbiAgICBiZTogUmVmcmVzY2Fkb3JFc3RydWN0dXJhLFxyXG4gICAgY29yZUZ1bmN0aW9uOiAoY29udGV4dDogQywgcGFyYW1ldGVyczogUCwgLi4ucmVzdG86IFJlc3RvKSA9PiBQcm9taXNlPFI+XHJcbik6IChjb250ZXh0OiBDLCBwYXJhbWV0ZXJzOiBQLCAuLi5yZXN0bzogUmVzdG8pID0+IFByb21pc2U8Uj4ge1xyXG4gICAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIChjb250ZXh0OiBDLCBwYXJhbWV0ZXJzOiBQLCAuLi5yZXN0bzogUmVzdG8pIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgY29yZUZ1bmN0aW9uKGNvbnRleHQsIHBhcmFtZXRlcnMsIC4uLnJlc3RvKTtcclxuICAgICAgICBpZiAoVEFCTEFTX0VTVFJVQ1RVUkEuaW5jbHVkZXMocGFyYW1ldGVycy50YWJsZSkpIHtcclxuICAgICAgICAgICAgYmUuY2FjaGVzLnRpbWVzdGFtcEVzdHJ1Y3R1cmEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3NlIHRvY8OzIGxhIGVzdHJ1Y3R1cmEnLCBiZS5jYWNoZXMudGltZXN0YW1wRXN0cnVjdHVyYSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFRBQkxBU19SRUFfTk9fUkVBLmluY2x1ZGVzKHBhcmFtZXRlcnMudGFibGUpKSB7XHJcbiAgICAgICAgICAgIGJlLmNhY2hlcy50aW1lc3RhbXBFc3RydWN0dXJhID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGF3YWl0IGJlLnJlZnJlc2hDYWNoZXMoY29udGV4dC5jbGllbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCByZWdpc3RyYXJDcm9uSm9iUGFzYXJBUHJvaWUgPSBhc3luYyAoYmU6IEFwcEJhY2tlbmQpID0+IHtcclxuICAgIGNvbnN0IGVqZWN1dGFyUGFzYWplID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGxvZyA9IChtc2c6IHN0cmluZywgZGF0YTogYW55ID0gJycpID0+XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2RhdGV0aW1lLm5vdygpLnRvWW1kSG1zKCl9IFtDUk9OOlBST0lFXSAke21zZ31gLCBkYXRhKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsb2coJ/CfmoAgaW5pY2lhIGNyb24gcGFzYWplIGEgcHJvaWUnKTtcclxuXHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBiZS5pblRyYW5zYWN0aW9uKG51bGwsIGFzeW5jIChjbGllbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBwYXNhckVuY3Vlc3Rhc0FQcm9pZShjbGllbnQpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGxvZygn4pyFIHJlc3VsdCBwcm9jIHBhc2FqZSBhIHByb2llOicsIHJlc3VsdCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIHZhciBlcnJvciA9IHVuZXhwZWN0ZWQoZXJyKTtcclxuICAgICAgICAgICAgbG9nKGDinYwgZXJyb3IgcGFzYWplIGEgcHJvaWU6ICR7ZXJyb3IubWVzc2FnZX1gKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBsb2coJ/Cfj4EgdGVybWluYSBjcm9uIHByb2llJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGF3YWl0IGVqZWN1dGFyUGFzYWplKCk7XHJcbiAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKGVqZWN1dGFyUGFzYWplLCAxMDAwICogNjAgKiA2MClcclxuICAgIGJlLnNodXRkb3duQ2FsbGJhY2tMaXN0QWRkKHtcclxuICAgICAgICBtZXNzYWdlOiAnYXBhZ2EgY3JvbiBwYXNhciBhIHByb2llJyxcclxuICAgICAgICBmdW46IGFzeW5jIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxuY29uc3QgZ2V0TWFuaWZlc3RJbWFnZUljb25zID0gKEFQUF9OQU1FOiBzdHJpbmcsIHN1Zmlqbzogc3RyaW5nKSA9PiBbXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTMyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjMyeDMyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTQ4JHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjQ4eDQ4XCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTY0JHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjY0eDY0XCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTcyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjcyeDcyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTE5MiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgIFwic2l6ZXNcIjogXCIxOTJ4MTkyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTUxMiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgIFwic2l6ZXNcIjogXCI1MTJ4NTEyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH1cclxuXTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBlbWVyZ2VBcHBEbUVuY3U8VCBleHRlbmRzIHByb2Nlc2FtaWVudG8uQ29uc3RydWN0b3I8cHJvY2VzYW1pZW50by5BcHBQcm9jZXNhbWllbnRvVHlwZT4+KEJhc2U6IFQpIHtcclxuICAgIHJldHVybiBjbGFzcyBBcHBEbUVuY3UgZXh0ZW5kcyBCYXNlIHtcclxuICAgICAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgICBzdXBlcihhcmdzKTtcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50ID0gdGhpcy5jYWNoZXMudGFibGVDb250ZW50IHx8IHt9O1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhID0gW11cclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHMgPSBbXVxyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy5tZXRhRW5jSW5jbHVpckNhc2lsbGVyb3NTYWx0b1JFTCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50aW1lc3RhbXBFc3RydWN0dXJhID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhciA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRTdWZpam9Gcm9tYmFzZVVybCA9IChiYXNlVXJsOiBzdHJpbmcpID0+XHJcbiAgICAgICAgICAgIGJhc2VVcmwuaW5jbHVkZXMoJ3Rlc3QnKSB8fCBiYXNlVXJsLmluY2x1ZGVzKCcvcHInKSA/ICdfdGVzdCcgOlxyXG4gICAgICAgICAgICAgICAgYmFzZVVybC5pbmNsdWRlcygnY2FwYScpID8gJ19jYXBhJyA6ICcnO1xyXG5cclxuICAgICAgICBnZXRBcHBOYW1lID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICByZXR1cm4gKChhd2FpdCBiZS5pblRyYW5zYWN0aW9uKG51bGwsIChjbGllbnQ6IHBnLkNsaWVudCkgPT5cclxuICAgICAgICAgICAgICAgIGNsaWVudC5xdWVyeShcInNlbGVjdCBvcGVyYXRpdm8gZnJvbSBwYXJhbWV0cm9zIHdoZXJlIHVuaWNvX3JlZ2lzdHJvXCIpLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICApKS52YWx1ZSBhcyBzdHJpbmcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gYmFja2VuZC1wbHVzIGxvIGRlY2xhcmEgc2luIHBhcsOhbWV0cm9zIHBlcm8gbG8gbGxhbWEgY29uIChjb250ZXh0LCB1c3VhcmlvKSwgcG9yIGVzbyBzb24gb3BjaW9uYWxlc1xyXG4gICAgICAgIG92ZXJyaWRlIGFzeW5jIGNhbkNoYW5nZVBhc3MocmVxT3JDb250ZXh0PzogUmVxdWVzdCB8IENvbnRleHQsIHVzZXJUb0NoYW5nZVBhc3M/OiBzdHJpbmcgfCBudWxsKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHZhciB1c3VhcmlvTG9ndWVhZG8gPSByZXFPckNvbnRleHQ/LnVzZXI7XHJcbiAgICAgICAgICAgIGlmIChyZXFPckNvbnRleHQgPT0gbnVsbCB8fCB1c3VhcmlvTG9ndWVhZG8gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciByb2wgPSB1c3VhcmlvTG9ndWVhZG8ucm9sO1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgYmUuaW5EYkNsaWVudChudWxsLCBhc3luYyAoY2xpZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcSA9IGJlLmRiLnF1b3RlTGl0ZXJhbDtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgIHNlbGVjdCAqIFxyXG4gICAgICAgICAgICAgICAgICBmcm9tIHVzdWFyaW9zIFxyXG4gICAgICAgICAgICAgICAgICB3aGVyZSByb2wgaW4gKHNlbGVjdCByb2xfc3Vib3JkaW5hZG8gZnJvbSByb2xlc19zdWJvcmRpbmFkb3Mgd2hlcmUgcm9sID0gJHtxKHJvbCl9KWApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHZhciBwdWVkZSA9ICEhcmVzdWx0LmZpbmQoKHVzZXIpID0+IHVzZXIudXN1YXJpbyA9PSB1c2VyVG9DaGFuZ2VQYXNzKTtcclxuICAgICAgICAgICAgdmFyIGlzQWRtaW4gPSBiZS5pc0FkbWluKHJlcU9yQ29udGV4dCk7XHJcbiAgICAgICAgICAgIHJldHVybiBpc0FkbWluIHx8IHB1ZWRlXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhc3luYyBnZXRQcm9jZWR1cmVzKCkge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICB2YXIgcHJvY2VkaW1pZW50b0FSZWVtcGxhemFyID0gW1wiY2Fzb19ndWFyZGFyXCIsIFwiY2Fzb190cmFlclwiXTtcclxuICAgICAgICAgICAgdmFyIHBhcmVudFByb2MgPSBhd2FpdCBzdXBlci5nZXRQcm9jZWR1cmVzKCk7XHJcbiAgICAgICAgICAgIHBhcmVudFByb2MgPSBwYXJlbnRQcm9jLmZpbHRlcigocHJvY2VkdXJlOiBhbnkpID0+ICFwcm9jZWRpbWllbnRvQVJlZW1wbGF6YXIuaW5jbHVkZXMocHJvY2VkdXJlLmFjdGlvbikpO1xyXG4gICAgICAgICAgICBwYXJlbnRQcm9jID0gcGFyZW50UHJvYy5tYXAocHJvY0RlZiA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvY0RlZi5hY3Rpb24gPT0gJ3RhYmxlX3JlY29yZF9zYXZlJyB8fCBwcm9jRGVmLmFjdGlvbiA9PSAndGFibGVfcmVjb3JkX2RlbGV0ZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9jRGVmLmNvcmVGdW5jdGlvbiA9IHJlZnJlc2NhckVzdHJ1Y3R1cmFBbE1vZGlmaWNhclRhYmxhKGJlLCBwcm9jRGVmLmNvcmVGdW5jdGlvbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvY0RlZjtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudFByb2MuY29uY2F0KFByb2NlZHVyZXNEbUVuY3UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhc3luYyBjaGVja0RhdGFiYXNlU3RydWN0dXJlKF9jbGllbnQ6IENsaWVudCkge1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhZGRTY2hyw7ZkaW5nZXJTZXJ2aWNlcyhtYWluQXBwOiBwcm9jZXNhbWllbnRvLkV4cHJlc3MsIGJhc2VVcmw6IHN0cmluZykge1xyXG4gICAgICAgICAgICBsZXQgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICBzdXBlci5hZGRTY2hyw7ZkaW5nZXJTZXJ2aWNlcyhtYWluQXBwLCBiYXNlVXJsKTtcclxuICAgICAgICAgICAgLy9wZXJtaXRvIGxldmFudGFyIG1pcyBpbWFnZW5lcyBlbiBhcGxpY2FjaW9uZXMgZGVwZW5kaWVudGVzXHJcbiAgICAgICAgICAgIGJlLmFwcC51c2UoJy9pbWcnLCBleHByZXNzLnN0YXRpYygnbm9kZV9tb2R1bGVzL2RtZW5jdS9kaXN0L3VubG9nZ2VkL3VubG9nZ2VkL2ltZycpKVxyXG4gICAgICAgICAgICBtYWluQXBwLnVzZShmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCBfcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVxLnNlc3Npb24gJiYgIXJlcS5zZXNzaW9uLmluc3RhbGwpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXEuc2Vzc2lvbi5pbnN0YWxsID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygpLnJlcGxhY2UoJy4nLCAnJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBuZXh0KCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgJy9zYWx2YXInLCBmdW5jdGlvbiAocmVxLCByZXMsIF9uZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIHPDqSBxdWUgdm95IGEgcmVjaWJpciB1c2VyYWdlbnQgcG9yIGxvcyBtaWRkbGV3YXJlcyBkZSBCYWNrZW5kLXBsdXNcclxuICAgICAgICAgICAgICAgIHZhciB7IHVzZXJhZ2VudCB9ID0gcmVxO1xyXG4gICAgICAgICAgICAgICAgdmFyIGh0bWxNYWluID0gYmUubWFpblBhZ2UoeyB1c2VyYWdlbnQgfSwgZmFsc2UsIHsgc2tpcE1lbnU6IHRydWUsIG9mZmxpbmVGaWxlOiB0cnVlIH0pLnRvSHRtbERvYygpO1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChodG1sTWFpbiwgJ2h0bWwnKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgJy9jYW1wbycsIGZ1bmN0aW9uIChyZXEsIHJlcywgX25leHQpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgc8OpIHF1ZSB2b3kgYSByZWNpYmlyIHVzZXJhZ2VudCBwb3IgbG9zIG1pZGRsZXdhcmVzIGRlIEJhY2tlbmQtcGx1c1xyXG4gICAgICAgICAgICAgICAgdmFyIHsgdXNlcmFnZW50LCB1c2VyIH0gPSByZXE7XHJcbiAgICAgICAgICAgICAgICBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7e3R5cGU6J2pzJywgc3JjOnN0cmluZ31bXX0gKi9cclxuICAgICAgICAgICAgICAgICAgICB2YXIgd2ViTWFuaWZlc3RQYXRoID0gJ2NhcmdhLWRtL3dlYi1tYW5pZmVzdC53ZWJtYW5pZmVzdCc7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWxNYWluID0gYmUubWFpblBhZ2UoeyB1c2VyYWdlbnQsIHVzZXIgfSwgZmFsc2UsIHsgc2tpcE1lbnU6IHRydWUsIHdlYk1hbmlmZXN0UGF0aCwgb2ZmbGluZUZpbGU6IHRydWUgfSkudG9IdG1sRG9jKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChodG1sTWFpbiwgJ2h0bWwnKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5yZWRpcmVjdCg0MDEsIGJhc2VVcmwgKyAnL2xvZ2luI3c9cGF0aCZwYXRoPS9jYW1wbycpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgJy9mYWxsYmFjay1zaW5jcm8nLCBmdW5jdGlvbiAocmVxLCByZXMsIG5leHQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGpzb25GYWxsYmFjayA9IHtcclxuICAgICAgICAgICAgICAgICAgICBvazogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ05vIHNlIGxvZ3LDsyBlc3RhYmxlY2VyIGxhIGNvbmV4aW9uIGNvbiBlbCBzZXJ2aWRvciwgY29tcHJ1ZWJlIHN1IGNvbmV4aW9uIGRlIGludGVybmV0IChyZXNwdWVzdGEgZGVzZGUgZmFsbGJhY2spJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVKc29uKGpzb25GYWxsYmFjaykocmVxLCByZXMsIG5leHQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdmFyIGNyZWF0ZVNlcnZpY2VXb3JrZXIgPSBhc3luYyBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3cgPSBhd2FpdCBmcy5yZWFkRmlsZSgnbm9kZV9tb2R1bGVzL3NlcnZpY2Utd29ya2VyLWFkbWluL2Rpc3Qvc2VydmljZS13b3JrZXItd28tbWFuaWZlc3QuanMnLCAndXRmOCcpO1xyXG4gICAgICAgICAgICAgICAgdmFyIG1hbmlmZXN0ID0gYXdhaXQgYmUuY3JlYXRlUmVzb3VyY2VzRm9yQ2FjaGVKc29uKCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3dNYW5pZmVzdCA9IHN3XHJcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoXCInLyp2ZXJzaW9uKi8nXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LnZlcnNpb24pKVxyXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiJy8qYXBwTmFtZSovJ1wiLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5hcHBOYW1lKSlcclxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxzKlxcL1xcKnVybHNUb0NhY2hlXFwqXFwvXFxzKlxcXS8sIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmNhY2hlKSlcclxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxzKlxcL1xcKmZhbGxiYWNrc1xcKlxcL1xccypcXF0vLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5mYWxsYmFja3MgfHwgW10pKVxyXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiJy8qZGVmYXVsdEZhbGxiYWNrKi8nXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmRlZmF1bHRGYWxsYmFjaykpO1xyXG4gICAgICAgICAgICAgICAgLy8ucmVwbGFjZShcIi8jQ0FDSEUkL1wiLCBcIi8oYVxcXFxkK21cXFxcZCtwXFxcXGQrdFxcXFxkK19lc3RydWN0dXJhLmpzKXwoYVxcXFxkK21cXFxcZCtwXFxcXGQrdFxcXFxkK19oZHIuanNvbikvXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN3TWFuaWZlc3RcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgYC9zdy1tYW5pZmVzdC5qc2AsIGFzeW5jIGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KGF3YWl0IGNyZWF0ZVNlcnZpY2VXb3JrZXIoKSwgJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVFcnIocmVxLCByZXMsIG5leHQpKHVuZXhwZWN0ZWQoZXJyKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgYC9jYXJnYS1kbS93ZWItbWFuaWZlc3Qud2VibWFuaWZlc3RgLCBhc3luYyBmdW5jdGlvbiAocmVxLCByZXMsIG5leHQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IEFQUF9OQU1FID0gYXdhaXQgYmUuZ2V0QXBwTmFtZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VmaWpvID0gYmUuZ2V0U3VmaWpvRnJvbWJhc2VVcmwoYmFzZVVybCk7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBgJHtBUFBfTkFNRX0ke3N1Zmlqb30gUHJvZ3Jlc3NpdmUgV2ViIEFwcGAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2hvcnRfbmFtZVwiOiBgJHtBUFBfTkFNRX0ke3N1Zmlqb30gUFdBYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBgUHJvZ3Jlc3NpdmUgV2ViIEFwcCBmb3IgJHtBUFBfTkFNRX0ke3N1Zmlqb30uYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpY29uc1wiOiBnZXRNYW5pZmVzdEltYWdlSWNvbnMoQVBQX05BTUUsIHN1ZmlqbyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJlLmdldENvbG9yc0pzb24oc3VmaWpvIGFzIFN1Zmlqb3NBbWJpZW50ZSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChKU09OLnN0cmluZ2lmeShjb250ZW50KSwgJ2FwcGxpY2F0aW9uL2pzb24nKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVFcnIocmVxLCByZXMsIG5leHQpKHVuZXhwZWN0ZWQoZXJyKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRDb2xvcnNKc29uKF9zdWZpam86IFN1Zmlqb3NBbWJpZW50ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgXCJzdGFydF91cmxcIjogXCIuLi9jYW1wb1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkaXNwbGF5XCI6IFwic3RhbmRhbG9uZVwiLFxyXG4gICAgICAgICAgICAgICAgXCJ0aGVtZV9jb2xvclwiOiBcIiMzRjUxQjVcIixcclxuICAgICAgICAgICAgICAgIFwiYmFja2dyb3VuZF9jb2xvclwiOiBcIiM2ZDYwZWRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGFkZExvZ2dlZFNlcnZpY2VzKCkge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICBzdXBlci5hZGRMb2dnZWRTZXJ2aWNlcygpO1xyXG4gICAgICAgICAgICBiZS5hcHAuZ2V0KCcvbWFuaWZlc3QubWFuaWZlc3QnLCBhc3luYyBmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBfbmV4dDogTmV4dEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVGaWxlKCdzcmMvY2xpZW50L21hbmlmZXN0Lm1hbmlmZXN0Jywge30pKHJlcSwgcmVzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLmdldCgnL2ZpbGUnLCBhc3luYyBmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihyZXEsXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWVudDogcGcuQ2xpZW50KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQucXVlcnkoXCJzZWxlY3QgcnV0YSBmcm9tIGFkanVudG9zIHdoZXJlIGlkX2FkanVudG8gPSAkMVwiLCBbcmVxLnF1ZXJ5LmlkX2FkanVudG9dKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHZhciBmaWxlUGF0aCA9IHJlc3VsdC52YWx1ZTtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUoZmlsZVBhdGgsIHt9KShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFwcC5nZXQoJy9pbWFnZW5lcycsIGFzeW5jIGZ1bmN0aW9uIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUoJ2xvY2FsLWltYWdlcy8nICsgcmVxLnF1ZXJ5LnBkZiwge30pKHJlcSwgcmVzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLmdldCgnL2Rvd25sb2FkL2FsbCcsIGFzeW5jIGZ1bmN0aW9uIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6ICgpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEudXNlciA9PSBudWxsIHx8IHJlcS51c2VyLnJvbCAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25vIGVzdMOhIGF1dG9yaXphZG8gYSBiYWphcnNlIHRvZG8nLCByZXEudXNlcilcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IHppcCA9IG5ldyB5YXpsLlppcEZpbGUoKTtcclxuICAgICAgICAgICAgICAgIHppcC5vdXRwdXRTdHJlYW0ucGlwZShyZXMpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJhc2UgPSAnbG9jYWwtYXR0YWNobWVudHMnXHJcbiAgICAgICAgICAgICAgICBsZXQgZmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKGJhc2UpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoZmlsZXMubWFwKGFzeW5jIGZ1bmN0aW9uIChmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGVQYXRoID0gYmFzZSArICcvJyArIGZpbGVOYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ID0gYXdhaXQgZnMuc3RhdChmaWxlUGF0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXQuaXNGaWxlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgemlwLmFkZEZpbGUoZmlsZVBhdGgsIGZpbGVOYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB6aXAuZW5kKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGFzeW5jIHBvc3RDb25maWcoKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHN1cGVyLnBvc3RDb25maWcoKTtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgYmUuY2FjaGVzLm1ldGFFbmNJbmNsdWlyQ2FzaWxsZXJvc1NhbHRvUkVMID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGF3YWl0IGJlLmluVHJhbnNhY3Rpb24obnVsbCwgYXN5bmMgZnVuY3Rpb24gKGNsaWVudDogcGcuQ2xpZW50KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcVBlcm1pc29zID0gYFxyXG4gICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhyLnJvbCxqc29uYl9idWlsZF9vYmplY3QoJ3N1cGVydXNlcicsci5zdXBlcnVzZXIsJ3B1ZWRlJywoXHJcbiAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHJwLnBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhycGEuYWNjaW9uLHJwYS5oYWJpbGl0YWRvKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcm9sZXNfcGVybWlzb3MgcnBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcnBhLnJvbD1ycC5yb2wgQU5EIHJwYS5wZXJtaXNvPXJwLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgIEZST00gcm9sZXNfcGVybWlzb3MgcnBcclxuICAgICAgICAgICAgICAgICAgICBXSEVSRSBycC5yb2w9ci5yb2wgI2NvbmRIYWJpbGl0YWRvI1xyXG4gICAgICAgICAgICAgICkpKVxyXG4gICAgICAgICAgICAgIEZST00gcm9sZXMgclxyXG4gICAgICAgICAgICBgO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KHFQZXJtaXNvcy5yZXBsYWNlKCcjY29uZEhhYmlsaXRhZG8jJywgJycpKS5mZXRjaFVuaXF1ZVZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KHFQZXJtaXNvcy5yZXBsYWNlKCcjY29uZEhhYmlsaXRhZG8jJywgYCBhbmQgcnAuJHtwZy5xdW90ZUlkZW50KCdoYWJpbGl0YWRvJyl9YCkpLmZldGNoVW5pcXVlVmFsdWUoKSxcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhhY2Npb24sdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcGEucGVybWlzbz1wLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBcclxuICAgICAgICAgICAgICAgIGApLmZldGNoVW5pcXVlVmFsdWUoKSxcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhhY2Npb24sZmFsc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZXJtaXNvcyBwYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHBhLnBlcm1pc289cC5wZXJtaXNvXHJcbiAgICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZXJtaXNvcyBwXHJcbiAgICAgICAgICAgICAgICBgKS5mZXRjaFVuaXF1ZVZhbHVlKClcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICBiZS5jYWNoZXMucGVybWlzb3NSb2wgPSByZXN1bHRzWzBdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zUm9sU29sb1RydWUgPSByZXN1bHRzWzFdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyID0gcmVzdWx0c1syXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGJlLmNhY2hlcy5wZXJtaXNvc1BhcmFOYWRpZSA9IHJlc3VsdHNbM10udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLmNhY2hlcy5wZXJtaXNvc1JvbFNvbG9UcnVlLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlcix7ZGVwdGg6OX0pO1xyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmRpcihiZS5jYWNoZXMucGVybWlzb3NQYXJhTmFkaWUse2RlcHRoOjl9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaENhY2hlcygpO1xyXG4gICAgICAgICAgICBhd2FpdCByZWdpc3RyYXJDcm9uSm9iUGFzYXJBUHJvaWUoYmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBjb25maWdTdGF0aWNDb25maWcoKSB7XHJcbiAgICAgICAgICAgIHN1cGVyLmNvbmZpZ1N0YXRpY0NvbmZpZygpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRpY0NvbmZpZyhkZWZDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBjbGllbnRJbmNsdWRlcyhyZXE6IFJlcXVlc3QsIG9wdHM6IE9wdHNDbGllbnRQYWdlKTogQ2xpZW50TW9kdWxlRGVmaW5pdGlvbltdIHtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgdmFyIHVubG9nZ2VkID0gb3B0cyAmJiBvcHRzLm9mZmxpbmVGaWxlO1xyXG4gICAgICAgICAgICB2YXIgbWVudWVkUmVzb3VyY2VzOiBDbGllbnRNb2R1bGVEZWZpbml0aW9uW10gPSB1bmxvZ2dlZCA/IFtcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3VubG9nZ2VkLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgXSA6IFtcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL2NsaWVudC9jbGllbnQnLCBmaWxlOiAnY2xpZW50LmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5leHRyYUZpbGVzKSB7XHJcbiAgICAgICAgICAgICAgICBtZW51ZWRSZXNvdXJjZXMgPSBtZW51ZWRSZXNvdXJjZXMuY29uY2F0KG9wdHMuZXh0cmFGaWxlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGV4dGVybmFsUmVzb3VyY2VzOiBDbGllbnRNb2R1bGVEZWZpbml0aW9uW10gPSBbXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlYWN0JywgbW9kUGF0aDogJ3VtZCcsIGZpbGU6ICdyZWFjdC5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVhY3QtZG9tJywgbW9kUGF0aDogJ3VtZCcsIGZpbGU6ICdyZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcbiAgICAgICAgICAgICAgICAvL3sgdHlwZTogJ2pzJywgbW9kdWxlOiAnQG1hdGVyaWFsLXVpL2NvcmUnLCBtb2RQYXRoOiAndW1kJywgZmlsZURldmVsb3BtZW50OidtYXRlcmlhbC11aS5kZXZlbG9wbWVudC5qcycsIGZpbGU6J21hdGVyaWFsLXVpLnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdAbXVpL21hdGVyaWFsJywgbW9kUGF0aDogJy4uL3VtZCcsIGZpbGU6ICdtYXRlcmlhbC11aS5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlZHV4JywgbW9kUGF0aDogJy4uL2Rpc3QnLCBmaWxlOiAncmVkdXgubWluLmpzJyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWFjdC1yZWR1eCcsIG1vZFBhdGg6ICcuLi9kaXN0JywgZmlsZTogJ3JlYWN0LXJlZHV4Lm1pbi5qcycgfSxcclxuICAgICAgICAgICAgICAgIC8veyB0eXBlOiAnanMnLCBtb2R1bGU6ICdxcmNvZGUnLCBtb2RQYXRoOiAnLi4vYnVpbGQnLCBmaWxlOiAncXJjb2RlLmpzJ30sXHJcbiAgICAgICAgICAgICAgICAuLi5zdXBlci5jbGllbnRJbmNsdWRlcyhyZXEsIG9wdHMpLmZpbHRlcihtID0+IG0uZmlsZSAhPSAnZm9ybXVsYXJpb3MuY3NzJylcclxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG0gPT4gIXVubG9nZ2VkIHx8IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgbS5maWxlICE9ICd2YXItY2FsLmpzJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBtLmZpbGUgIT0gJ3Zhci1jYWwuanMnXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnc2VydmljZS13b3JrZXItYWRtaW4nLCBmaWxlOiAnc2VydmljZS13b3JrZXItYWRtaW4uanMnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlZHV4LXR5cGVkLXJlZHVjZXInLCBtb2RQYXRoOiAnLi4vZGlzdCcsIGZpbGU6ICdyZWR1eC10eXBlZC1yZWR1Y2VyLmpzJyB9XHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIHZhciByZXNvdXJjZXM6IENsaWVudE1vZHVsZURlZmluaXRpb25bXSA9IFtcclxuICAgICAgICAgICAgICAgIC4uLmV4dGVybmFsUmVzb3VyY2VzLFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYWRhcHQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAndGlwb3MuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnaGVscGVycy1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2NhbGN1bG9zLWVuY3Vlc3RhLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3JlbmRlci1jb25maWcuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWluaXQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVkdXgtZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdoZWxwZXJzLWNhc2lsbGVyb3MuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYnlwYXNzLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWdlbmVyYWwuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYWJyaXItZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdjc3MnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQvY3NzJywgZmlsZTogJ2Zvcm11bGFyaW8tcmVhY3QuY3NzJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2NzcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZC9jc3MnLCBmaWxlOiAnYm9vdHN0cmFwLm1pbi5jc3MnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAndHRmJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkL2NzcycsIGZpbGU6ICdSb2JvdG8tUmVndWxhci50dGYnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICAgICAgLi4ubWVudWVkUmVzb3VyY2VzLFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnY3NzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL2NsaWVudC9jbGllbnQvY3NzJywgZmlsZTogJ21lbnUuY3NzJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzb3VyY2VzXHJcbiAgICAgICAgICAgIC8vIC5tYXAobT0+KHsuLi5tLCBmaWxlOm0uZmlsZURldmVsb3BtZW50fHxtLmZpbGV9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGFzeW5jIHJlZnJlc2hDYWNoZXMoY2xpZW50OiBDbGllbnRlRGIgfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgPSB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgfHwge307XHJcblxyXG4gICAgICAgICAgICAvLyBGdW5jacOzbiBhdXhpbGlhciBwYXJhIGVqZWN1dGFyIGxhcyBxdWVyaWVzIGNvbiBlbCBjbGllbnRlIHByb3Zpc3RvIG8gdW5vIG51ZXZvXHJcbiAgICAgICAgICAgIGNvbnN0IGV4ZWN1dGVRdWVyaWVzID0gYXN5bmMgKGRiQ2xpZW50OkNsaWVudGVEYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYSA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgc2VsZWN0ICogZnJvbSBub19yZWEgb3JkZXIgYnkgb3BlcmF0aXZvLCBvcmRlbiwgbm9fcmVhYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5yZWEgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYHNlbGVjdCAqIGZyb20gcmVhIG9yZGVyIGJ5IG9wZXJhdGl2bywgb3JkZW4sIHJlYWApLmZldGNoQWxsKCkpLnJvd3M7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHMgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgZ3J1cG8sIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWEgciBncm91cCBieSBncnVwbyBvcmRlciBieSAxXHJcbiAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX2dyb3VwczAgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgZ3J1cG8wIGFzIGdydXBvLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhIHIgZ3JvdXAgYnkgZ3J1cG8wIG9yZGVyIGJ5IDFcclxuICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBzZWxlY3QgKiBmcm9tIG5vX3JlYV9zdXAgb3JkZXIgYnkgb3BlcmF0aXZvLCBvcmRlbiwgbm9fcmVhX3N1cGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQucmVhX3N1cCA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgc2VsZWN0ICogZnJvbSByZWFfc3VwIG9yZGVyIGJ5IG9wZXJhdGl2bywgb3JkZW4sIHJlYV9zdXBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwX2dyb3VwcyA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBncnVwb19zdXAsIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWFfc3VwIHIgZ3JvdXAgYnkgZ3J1cG9fc3VwIG9yZGVyIGJ5IDFcclxuICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwX2dyb3VwczAgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgZ3J1cG8wX3N1cCBhcyBncnVwbywganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYV9zdXAgciBncm91cCBieSBncnVwbzBfc3VwIG9yZGVyIGJ5IDFcclxuICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhciA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBjb25fcmVhX2hvZ2FyLCBvcGVyYXRpdm8sIGNvbmZpZ19zb3J0ZW8gZnJvbSBvcGVyYXRpdm9zIGpvaW4gcGFyYW1ldHJvcyB1c2luZyAob3BlcmF0aXZvKSB3aGVyZSB1bmljb19yZWdpc3Ryb1xyXG4gICAgICAgIGApLmZldGNoVW5pcXVlUm93KCkpLnJvdztcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGlmIChjbGllbnQpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWN1dGVRdWVyaWVzKGNsaWVudCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmluRGJDbGllbnQobnVsbCwgYXN5bmMgKGRiQ2xpZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY3V0ZVF1ZXJpZXMoZGJDbGllbnQpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhY2hlcycsIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudClcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhY2hlcyBvaycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL3NxbE5vcmVhQ2FzZShjYW1wb05lY2VzYXJpbzpzdHJpbmcpe1xyXG4gICAgICAgIC8vICAgIHZhciBiZT10aGlzO1xyXG4gICAgICAgIC8vICAgIHJldHVybiBgQ0FTRSAke2JlLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhLm1hcCh4PT5cclxuICAgICAgICAvLyAgICAgICAgYCBXSEVOIG5vcmVhICA9ICR7YmUuZGIucXVvdGVMaXRlcmFsKHgubm9fcmVhKX06OmludGVnZXIgVEhFTiAke2JlLmRiLnF1b3RlTGl0ZXJhbCh4W2NhbXBvTmVjZXNhcmlvXSl9YFxyXG4gICAgICAgIC8vICAgICkuam9pbignJyl9IFdIRU4gVFJVRSBUSEVOIE5VTEwgRU5EYFxyXG4gICAgICAgIC8vfSAgICBcclxuICAgICAgICBvdmVycmlkZSBnZXRDb250ZXh0KHJlcTogUmVxdWVzdCk6IENvbnRleHQge1xyXG4gICAgICAgICAgICB2YXIgZmF0aGVyQ29udGV4dCA9IHN1cGVyLmdldENvbnRleHQocmVxKTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4ucGVybWlzb3NTZWd1blVzdWFyaW8odGhpcy5jYWNoZXMsIGZhdGhlckNvbnRleHQudXNlciksIC4uLmZhdGhlckNvbnRleHQgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3ZlcnJpZGUgZ2V0Q29udGV4dEZvckR1bXAoKTogQ29udGV4dCB7XHJcbiAgICAgICAgICAgIHZhciBmYXRoZXJDb250ZXh0ID0gc3VwZXIuZ2V0Q29udGV4dEZvckR1bXAoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgc3VwZXJ1c2VyOiB0cnVlLCBwdWVkZTogdGhpcy5jYWNoZXMucGVybWlzb3NTdXBlcnVzZXIsIC4uLmZhdGhlckNvbnRleHQgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3ZlcnJpZGUgYXN5bmMgZ2V0Q2xpZW50U2V0dXBGb3JTZW5kVG9Gcm9udEVuZChyZXE6IFJlcXVlc3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLihhd2FpdCBzdXBlci5nZXRDbGllbnRTZXR1cEZvclNlbmRUb0Zyb250RW5kKHJlcSkpLFxyXG4gICAgICAgICAgICAgICAgaWRwZXI6IHJlcS51c2VyPy5pZHBlclxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFzeW5jIGNyZWF0ZVJlc291cmNlc0ZvckNhY2hlSnNvbigpIHtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgY29uc3QgQVBQX05BTUUgPSBhd2FpdCBiZS5nZXRBcHBOYW1lKClcclxuICAgICAgICAgICAgY29uc3Qgc3VmaWpvID0gYmUuZ2V0U3VmaWpvRnJvbWJhc2VVcmwoYmUuY29uZmlnLnNlcnZlclsnYmFzZS11cmwnXSk7XHJcblxyXG4gICAgICAgICAgICB2YXIganNvblJlc3VsdCA9IHtcclxuICAgICAgICAgICAgICAgIHZlcnNpb246IEFQUF9ETV9WRVJTSU9OLFxyXG4gICAgICAgICAgICAgICAgYXBwTmFtZTogJ2RtZW5jdScsXHJcbiAgICAgICAgICAgICAgICBjYWNoZTogW1xyXG4gICAgICAgICAgICAgICAgICAgIFwiY2FtcG9cIixcclxuICAgICAgICAgICAgICAgICAgICBcIm9mZmxpbmVcIixcclxuICAgICAgICAgICAgICAgICAgICBcImZhbGxiYWNrLXNpbmNyb1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbWF0ZXJpYWwtdWkucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9yZWR1eC5taW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9yZWFjdC1yZWR1eC5taW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICAvL1wibGliL3FyY29kZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlcXVpcmUtYnJvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvY2FzdC1lcnJvci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2xpa2UtYXIuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9iZXN0LWdsb2JhbHMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9qc29uNGFsbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2pzLXRvLWh0bWwuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9yZWR1eC10eXBlZC1yZWR1Y2VyLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvYWRhcHQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS91bmxvZ2dlZC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2pzLXlhbWwudW1kLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3hsc3gtbm93LnVtZC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3hsc3gtbm93LWJyb3dzZXIudW1kLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbGF6eS1zb21lLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvc3FsLXRvb2xzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkaWFsb2ctcHJvbWlzZS9kaWFsb2ctcHJvbWlzZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibW9tZW50L21pbi9tb21lbnQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcInBpa2FkYXkvcGlrYWRheS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3BvbHlmaWxscy1icm8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9iaWcuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi90eXBlLXN0b3JlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvdHlwZWQtY29udHJvbHMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9hamF4LWJlc3QtcHJvbWlzZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibXktYWpheC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibXktc3RhcnQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS1sb2NhbGRiLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktd2Vic3FsZGIuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS1sb2NhbGRiLmpzLm1hcFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LXdlYnNxbGRiLmpzLm1hcFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LXRoaW5ncy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LXRhYmxlcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LWluZm9ybS1uZXQtc3RhdHVzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktbWVudS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LXNraW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9jbGllbnRlLWVuLWNhc3RlbGxhbm8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9zZXJ2aWNlLXdvcmtlci1hZG1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlZHV4LXR5cGVkLXJlZHVjZXIuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL29wZXJhdGl2b3MuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL3ZhcmNhbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvZm9ybS1zdHJ1Y3R1cmUuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL21ldGEtZW5jLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9kYXRvcy1leHQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL2NvbnNpc3RlbmNpYXMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL3Byb2Nlc2FtaWVudG8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS90aXBvcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L3JlbmRlci1jb25maWcuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9yZW5kZXItaW5pdC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L2hlbHBlcnMtY2FzaWxsZXJvcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L2hlbHBlcnMtZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L2NhbGN1bG9zLWVuY3Vlc3RhLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvYnlwYXNzLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9yZWR1eC1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvcmVuZGVyLWdlbmVyYWwuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9yZW5kZXItZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L2FicmlyLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL3Jvdy12YWxpZGF0b3IuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudC9tZW51LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJpbWcvbG9nby5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICAvL1wiaW1nL2xvZ28tZG0ucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJpbWcvbG9nby0xMjgucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJpbWcvbWFpbi1sb2FkaW5nLmdpZlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW1nL2JvcnJhci12YWxvci5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9mb25kby1zYWx0ZWFkby1lcnJvci5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9mb25kby1zYWx0ZWFkby5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9iYWNrZ3JvdW5kLXRlc3QucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgLy9cImNsaWVudC1zZXR1cFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL2Jvb3RzdHJhcC5taW4uY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvZm9ybXVsYXJpby1yZWFjdC5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcInBpa2FkYXkvcGlrYWRheS5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRpYWxvZy1wcm9taXNlL2RpYWxvZy1wcm9taXNlLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwicmVsLWVuYy9lc3RhZG9zLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL215LXRhYmxlcy5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNzcy9teS1tZW51LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL215LXRoaW5ncy5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNzcy9tZW51LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwicmVsLWVuYy9teS10aGluZ3MyLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL2Zvcm11bGFyaW8tcmVhY3QuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvUm9ib3RvLVJlZ3VsYXIudHRmXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjYXJnYS1kbS93ZWItbWFuaWZlc3Qud2VibWFuaWZlc3RcIixcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICBmYWxsYmFja3M6W1xyXG4gICAgICAgICAgICAgICAgICAgIHtwYXRoOiAnZG1fc2luY3Jvbml6YXInLCBmYWxsYmFjazonZmFsbGJhY2stc2luY3JvJ31cclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0RmFsbGJhY2s6IFwib2ZmbGluZVwiXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGpzb25SZXN1bHQuY2FjaGUgPSBqc29uUmVzdWx0LmNhY2hlLmNvbmNhdChnZXRNYW5pZmVzdEltYWdlSWNvbnMoQVBQX05BTUUsIHN1ZmlqbykubWFwKChlbGVtKSA9PiBgbWVudS8ke2VsZW0uc3JjfWApKTtcclxuXHJcbiAgICAgICAgICAgIHZhciBza2luID0gYmUuY29uZmlnWydjbGllbnQtc2V0dXAnXS5za2luO1xyXG4gICAgICAgICAgICBpZiAoc2tpbiAmJiBiZS5hY3RpdmVTa2luRmlsZXMpIHtcclxuICAgICAgICAgICAgICAgIHZhciBza2luVXJsID0gc2tpbiArICcvJztcclxuICAgICAgICAgICAgICAgIGpzb25SZXN1bHQuY2FjaGUucHVzaChgJHtza2lufS9pbWcvYmFja2dyb3VuZC10ZXN0LnBuZ2ApO1xyXG4gICAgICAgICAgICAgICAgLy8gQ29udmVydGltb3MgZWwgU2V0IGEgQXJyYXkgeSBtYXBlYW1vcyBsYXMgcnV0YXNcclxuICAgICAgICAgICAgICAgIHZhciBza2luUmVzb3VyY2VzID0gQXJyYXkuZnJvbShiZS5hY3RpdmVTa2luRmlsZXMpLm1hcChmdW5jdGlvbiAocGF0aFJlbGF0aXZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU2kgZXMgdW4gLnN0eWwsIGxvIHBlZGltb3MgY29tbyAuY3NzIHBvcnF1ZSBlbCBTZXJ2aWNlIFdvcmtlciBcclxuICAgICAgICAgICAgICAgICAgICAvLyBkZWJlIGNhY2hlYXIgZWwgcmVjdXJzbyBmaW5hbCBxdWUgZWwgbmF2ZWdhZG9yIHNvbGljaXRhLlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBza2luVXJsICsgcGF0aFJlbGF0aXZvLnJlcGxhY2UoL1xcLnN0eWwkLywgJy5jc3MnKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGpzb25SZXN1bHQuY2FjaGUgPSBqc29uUmVzdWx0LmNhY2hlLmNvbmNhdChza2luUmVzb3VyY2VzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ganNvblJlc3VsdFxyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRNZW51Q29udHJvbGVzKF9jb250ZXh0OiBDb250ZXh0KTogTWVudUluZm9CYXNlW10ge1xyXG4gICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnZW5jdWVzdGFzX3Byb2Nlc2FtaWVudG9fcGFzYXInLCBsYWJlbDogJ3Bhc2FyIGVuY3Vlc3RhcyBhIHByb2Nlc2FtaWVudG8nIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVzdW1lbicsIHRhYmxlOiAnY29udHJvbF9yZXN1bWVuJywgc2VsZWN0ZWRCeURlZmF1bHQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdkb21pbmlvJywgdGFibGU6ICdjb250cm9sX2NhbXBvX2RvbWluaW8nIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnem9uYScsIHRhYmxlOiAnY29udHJvbF9jYW1wb196b25hJyB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2NvbXVuYScsIHRhYmxlOiAnY29udHJvbF9jYW1wb19jb211bmEnIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnw6FyZWEnLCB0YWJsZTogJ2NvbnRyb2xfY2FtcG9fYXJlYScgfSxcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgZ2V0TWVudVZhcmlvcyhjb250ZXh0OiBDb250ZXh0KTogTWVudUluZm9CYXNlIHtcclxuICAgICAgICAgICAgbGV0IHN1Ym1lbnVWYXJpb3M6IE1lbnVJbmZvQmFzZVtdID0gW3sgbWVudVR5cGU6ICdhYnJpcl9lbmN1ZXN0YScsIG5hbWU6ICdhYnJpcl9lbmN1ZXN0YScgfV1cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5lZGl0YXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnaG9qYV9ydXRhJywgdGFibGU6ICdncmlsbGFfaG9qYV9ydXRhJywgbGFiZWw6ICdob2phIGRlIHJ1dGEnIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcikge1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ2VuY3Vlc3RhZG9yX2Rtc19tb3N0cmFyJywgbGFiZWw6ICdmb3J6YXIgZGVzY2FyZ2EgZW5jdWVzdGFzIERNJyB9KTtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdlbmN1ZXN0YV9ibGFucXVlYXJfcHJldmlzdWFsaXphcicsIGxhYmVsOiAnYmxhbnF1ZWFyIGVuY3Vlc3RhJyB9KTtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdlbmN1ZXN0YV9ib3JyYXJfcHJldmlzdWFsaXphcicsIGxhYmVsOiAncXVpdGFyIGVuY3Vlc3RhIGRlIGxhIG11ZXN0cmEnIH0pO1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ2VuY3Vlc3Rhc19jYXBhY2l0YWNpb25fYm9ycmFyJywgbGFiZWw6ICdxdWl0YXIgZW5jdWVzdGFzIGRlIGNhcGEgZGUgbGEgbXVlc3RyYScgfSk7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnb3BlcmF0aXZvX21pZ3JhcicsIGxhYmVsOiAnbWlncmFyIG9wZXJhdGl2bycgfSk7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnZW5jdWVzdGFfY2FwYV9hX3Byb2RfcGFzYXInLCBsYWJlbDogJ3Bhc2FyIGVuY3Vlc3RhcyBkZSBjYXBhIGEgcHJvZCcgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdpbnRlcmNhbWJpYXJfZW5jdWVzdGFzJyB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4geyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAndmFyaW9zJywgbWVudUNvbnRlbnQ6IHN1Ym1lbnVWYXJpb3MgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRNZW51QXNpZ25hY2lvbihjb250ZXh0OiBDb250ZXh0KTogTWVudUluZm9CYXNlIHtcclxuICAgICAgICAgICAgbGV0IGZpbHRyb1JlY2VwY2lvbmlzdGEgPSBjb250ZXh0LnVzZXIucm9sID09ICdyZWNlcGNpb25pc3RhJyA/IHsgcmVjZXBjaW9uaXN0YTogY29udGV4dC51c2VyLmlkcGVyIH0gOiB7fTtcclxuICAgICAgICAgICAgbGV0IHN1Ym1lbnVBc2lnbmFjaW9uOiBNZW51SW5mb0Jhc2VbXSA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51QXNpZ25hY2lvbi5wdXNoKHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdnZW5lcmFsJywgdGFibGU6ICdhcmVhc19hc2lnbmFjaW9uX2dlbmVyYWwnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN1Ym1lbnVBc2lnbmFjaW9uLnB1c2goXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZW5jdWVzdGFkb3InLCB0YWJsZTogJ3RfZW5jdV9hcmVhcycsIGZmOiB7IHRhcmVhOiAnZW5jdScsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2luZ3Jlc2Fkb3InLCB0YWJsZTogJ3RfaW5ncl9hcmVhcycsIGZmOiB7IHRhcmVhOiAnaW5ncicsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JlY3VwZXJhZG9yJywgdGFibGU6ICd0YXJlYXNfdGVtX2FzaWduYWNpb25fcmVjdScsIGZmOiB7IHRhcmVhX2FjdHVhbDogJ3JlY3UnLCB0YXJlYTogJ3JlY3UnLCAuLi5maWx0cm9SZWNlcGNpb25pc3RhIH0gfSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcikge1xyXG4gICAgICAgICAgICAgICAgc3VibWVudUFzaWduYWNpb24ucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnc3VwZXJ2aXNvcicsIHRhYmxlOiAndGFyZWFzX3RlbV9hc2lnbmFjaW9uX3N1cGUnLCBmZjogeyB0YXJlYV9hY3R1YWw6ICdzdXBlJywgdGFyZWE6ICdzdXBlJywgLi4uZmlsdHJvUmVjZXBjaW9uaXN0YSB9IH0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICByZXR1cm4geyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAnYXNpZ25hY2lvbicsIGxhYmVsOiAnYXNpZ25hY2nDs24nLCBtZW51Q29udGVudDogc3VibWVudUFzaWduYWNpb24gfVxyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRNZW51UmVjZXBjaW9uKGNvbnRleHQ6IENvbnRleHQpOiBNZW51SW5mb0Jhc2Uge1xyXG4gICAgICAgICAgICBsZXQgc3VibWVudVJlY2VwY2lvbjogTWVudUluZm9CYXNlW10gPSBbXVxyXG4gICAgICAgICAgICBzdWJtZW51UmVjZXBjaW9uLnB1c2goXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZW5jdWVzdGFkb3InLCB0YWJsZTogJ2VuY3Vlc3RhZG9yZXNfYXNpZ25hZG9zJyB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JlY3VwZXJhZG9yJywgdGFibGU6ICdyZWN1cGVyYWRvcmVzX2FzaWduYWRvcycgfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdpbmdyZXNhZG9yJywgdGFibGU6ICdpbmdyZXNhZG9yZXNfYXNpZ25hZG9zJyB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51UmVjZXBjaW9uLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3N1cGVydmlzb3InLCB0YWJsZTogJ3N1cGVydmlzb3Jlc19hc2lnbmFkb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ21pc19zdXBlcnZpc29yZXMnLCB0YWJsZTogJ21pc19zdXBlcnZpc29yZXNfYXNpZ25hZG9zJyB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7IG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdyZWNlcGNpb24nLCBsYWJlbDogJ3JlY2VwY2nDs24nLCBtZW51Q29udGVudDogc3VibWVudVJlY2VwY2lvbiB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXRNZW51Q2FydG8oY29udGV4dDogQ29udGV4dCk6IE1lbnVJbmZvQmFzZSB8IG51bGwge1xyXG4gICAgICAgICAgICBsZXQgc3VibWVudUNhcnRvOiBNZW51SW5mb0Jhc2VbXSA9IFtdXHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVDYXJ0by5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdjb211bmFzJywgdGFibGU6ICdjb211bmFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdiYXJyaW9zJywgdGFibGU6ICdiYXJyaW9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdmcmFjY2lvbmVzJywgdGFibGU6ICdmcmFjY2lvbmVzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyYWRpb3MnLCB0YWJsZTogJ3JhZGlvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnbWFuemFuYXMnLCB0YWJsZTogJ21hbnphbmFzJyB9LFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ2NhcnRvJywgbGFiZWw6ICdjYXJ0b2dyYWbDrWEnLCBtZW51Q29udGVudDogc3VibWVudUNhcnRvIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0TWVudUNvbmZpZ3VyYXIoY29udGV4dDogQ29udGV4dCk6IE1lbnVJbmZvQmFzZVtdIHtcclxuICAgICAgICAgICAgY29uc3QgbWVudUNvbmZpZ3VyYXI6IE1lbnVJbmZvQmFzZVtdID0gW107XHJcblxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyIHx8IGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN1Ym1lbnVNdWVzdHJhOiBNZW51SW5mb0Jhc2VbXSA9IFtcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGVtJywgbGFiZWw6ICdURU0nIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnbXVlc3RyYV9nZW5lcmFyJywgbGFiZWw6ICdnZW5lcmFyIG11ZXN0cmEnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3NlbWFuYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2FyZWFfZW5jX3Byb3hpbWFzJyB9LFxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnbWVudScsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ211ZXN0cmEnLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnbXVlc3RyYScsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudUNvbnRlbnQ6IHN1Ym1lbnVNdWVzdHJhXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhc2lsbGVyb3NfdGV4dG8/LmVkaXRhcikge1xyXG4gICAgICAgICAgICAgICAgbWVudUNvbmZpZ3VyYXIucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdtZW51JyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbWV0YWRhdG9zJyxcclxuICAgICAgICAgICAgICAgICAgICBtZW51Q29udGVudDogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnb3BlcmF0aXZvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAncmVhL25vcmVhJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JlYScgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdub19yZWEnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVhX3N1cCcgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdub19yZWFfc3VwJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2Zvcm11bGFyaW9zJywgdGFibGU6ICdjYXNpbGxlcm9zX3ByaW5jaXBhbGVzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncGxhbm8nLCB0YWJsZTogJ2Nhc2lsbGVyb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd2YXJpYWJsZXMnLCB0YWJsZTogJ2Nhc2lsbGVyb3MnLCBmYzogW3sgY29sdW1uOiAndmFyX25hbWUnLCBvcGVyYXRvcjogJyE9XFx1MjIwNScsIHZhbHVlOiBudWxsIH1dIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0aXBvYycsIGxhYmVsOiAndGlwb3MgZGUgY2VsZGFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGlwb2NfdGlwb2MnLCBsYWJlbDogJ2luY2x1c2lvbmVzIGRlIGNlbGRhcycgfSxcclxuICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQuc3VwZXJ1c2VyKSB7XHJcbiAgICAgICAgICAgICAgICBtZW51Q29uZmlndXJhci5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdtZW51JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2VzdGFkb3NfYWNjaW9uZXNfdGFyZWFzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlc3RhZG9zL2FjY2lvbmVzL3RhcmVhcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVDb250ZW50OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGFyZWFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2VzdGFkb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnYWNjaW9uZXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZXN0YWRvc19hY2Npb25lcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0YXJlYXNfcHJveGltYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdtb21lbnRvc19jb25zaXN0ZW5jaWEnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3BhcmFtZXRyb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ21vZG9zX2RtJyB9LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhciB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKSB7XHJcbiAgICAgICAgICAgICAgICBtZW51Q29uZmlndXJhci5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ21lbnUnLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1c3VhcmlvcycsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudUNvbnRlbnQ6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3VzdWFyaW9zJywgc2VsZWN0ZWRCeURlZmF1bHQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JvbGVzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncGVybWlzb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyb2xlc19wZXJtaXNvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIG1lbnVDb25maWd1cmFyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbG9zIG1peGlucyAobWV0YS1lbmMsIHByb2Nlc2FtaWVudG8pIGxvIGRlY2xhcmFuIHNpbiBwYXLDoW1ldHJvcywgcGVybyBiYWNrZW5kLXBsdXMgc2llbXByZSBsbyBsbGFtYSBjb24gY29udGV4dC5cclxuICAgICAgICAvLyBFbCB0aXBvIGRlIHJldG9ybm8gcXVlIGRlY2xhcmEgb3BlcmF0aXZvcyAoTWVudUluZm9bXSkgbm8gYWRtaXRlIGZvcm1hcyBxdWUgYmFja2VuZC1wbHVzIHPDrSBhY2VwdGEgeSBkbWVuY3UgdXNhXHJcbiAgICAgICAgLy8gKGZmIGNvbW8gb2JqZXRvLCBmYyBjb24gY29sdW1uKTsgc2UgZGV2dWVsdmUgTWVudUluZm9CYXNlW10sIHF1ZSBlcyBsbyBxdWUgZGVjbGFyYSBiYWNrZW5kLXBsdXMuXHJcbiAgICAgICAgLy8gUXVpdGFyIGVzdGEgbMOtbmVhIGN1YW5kbyBzZSBjb3JyaWphbiBsb3MgdGlwb3MgZGUgbWVuw7ogZW4gb3BlcmF0aXZvcy9iYWNrZW5kLXBsdXMgKGVsIGNvbXBpbGFkb3IgYXZpc2Egc2kgZGVqYSBkZSBoYWNlciBmYWx0YSkuXHJcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBNZW51RGVmaW5pdGlvbiBkZSBvcGVyYXRpdm9zIG3DoXMgZXN0cmljdG8gcXVlIGVsIGRlIGJhY2tlbmQtcGx1c1xyXG4gICAgICAgIG92ZXJyaWRlIGdldE1lbnUoY29udGV4dD86IENvbnRleHQpIHtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdnZXRNZW51IGRlIGRtZW5jdSByZXF1aWVyZSBlbCBjb250ZXh0IHBhcmEgYXJtYXIgZWwgbWVuw7ogc2Vnw7puIGxvcyBwZXJtaXNvcycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBtZW51OiBNZW51SW5mb0Jhc2VbXSA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoZ2V0TW9kb0J5UG9saWN5KGNvbnRleHQuYmUpID09PSAnUkVMRVZBTUlFTlRPJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucmVsZXZhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7IG1lbnVUeXBlOiAncGF0aCcsIG5hbWU6ICdyZWxldmFtaWVudG8nLCBwYXRoOiAnL2NhbXBvJyB9KVxyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3NpbmNyb25pemFyX2RtJywgbmFtZTogJ3NpbmNyb25pemFyJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAnY2FtYmlhcl9tb2RvX2RtJywgbmFtZTogJ2NhbWJpYXJfbW9kbycgfSxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5lZGl0YXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TWVudUFzaWduYWNpb24oY29udGV4dCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TWVudVJlY2VwY2lvbihjb250ZXh0KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RhcmVhc190ZW1fZmluX2NhbXBvJywgbGFiZWw6ICdlc3BlcmEgZmluIGRlIGNhbXBvJyB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RhcmVhc190ZW1fYW5hbGlzaXNfY2FtcG8nLCBsYWJlbDogJ2Fuw6FsaXNpcyBkZSBjYW1wbycgfSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAnc3VwZXJ2aXNpb24nLCBsYWJlbDogJ3N1cGVydmlzacOzbicsIG1lbnVDb250ZW50OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3N1cGVydmlzYXInLCB0YWJsZTogJ3RhcmVhc190ZW1faW5ncmVzbycsIGZmOiB7IHRhcmVhOiAnc3VwZScsIGFzaWduYWRvOiBjb250ZXh0LnVzZXIuaWRwZXIgfSB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmVkaXRhciB8fCBjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIgfHwgY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh0aGlzLmdldE1lbnVWYXJpb3MoY29udGV4dCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhciB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdjb250cm9sJywgbWVudUNvbnRlbnQ6IHRoaXMuZ2V0TWVudUNvbnRyb2xlcyhjb250ZXh0KSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAvKnttZW51VHlwZTondGFibGUnLCBuYW1lOidwYXJ0aWNpcGFjaW9uJyAgICAgICAgLCB0YWJsZTonY29udHJvbF9jYW1wb19wYXJ0aWNpcGFjaW9uJyAgfSwqL1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAncHJvY2VzYXInLCBtZW51Q29udGVudDogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd2YXJpYWJsZXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3ZhcmlhYmxlc19jdWVzdGlvbmFyaW8nLCB0YWJsZTogJ2Nhc2lsbGVyb3MnLCB0ZDogeyBlZGl0YWJsZTogZmFsc2UsIGFsbG93OiB7IHVwZGF0ZTogZmFsc2UsIGltcG9ydDogZmFsc2UsIGRlbGV0ZTogZmFsc2UsIGluc2VydDogZmFsc2UgfSB9LCBmYzogW3sgY29sdW1uOiAndmFyX25hbWUnLCBvcGVyYXRvcjogJyE9XFx1MjIwNScsIHZhbHVlOiBudWxsIH1dIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2NvbnNpc3RlbmNpYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2NvbnNpc3RlbmNpYXNfY3Vlc3Rpb25hcmlvJywgdGFibGU6ICdjYXNpbGxlcm9zJywgZmY6IHsgdGlwb2M6ICdDT05TJyB9IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2luY29uc2lzdGVuY2lhcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGFibGFfZGF0b3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2RpY2Npb25hcmlvJywgbGFiZWw6ICdkaWNjaW9uYXJpb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RhcmVhc190ZW1fcHJvY2VzYW1pZW50bycsIGxhYmVsOiAnZW5jdWVzdGFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZW51Q29uZmlndXJhciA9IHRoaXMuZ2V0TWVudUNvbmZpZ3VyYXIoY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobWVudUNvbmZpZ3VyYXIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHsgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ2NvbmZpZ3VyYXInLCBtZW51Q29udGVudDogbWVudUNvbmZpZ3VyYXIgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZW51Q2FydG8gPSB0aGlzLmdldE1lbnVDYXJ0byhjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIGlmIChtZW51Q2FydG8pIHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2gobWVudUNhcnRvKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4geyBtZW51IH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIHByZXBhcmVHZXRUYWJsZXMoKSB7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHN1cGVyLnByZXBhcmVHZXRUYWJsZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRUYWJsZURlZmluaXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLmdldFRhYmxlRGVmaW5pdGlvblxyXG4gICAgICAgICAgICAgICAgLCByb2xlc1xyXG4gICAgICAgICAgICAgICAgLCB1c3Vhcmlvc1xyXG4gICAgICAgICAgICAgICAgLCBwZXJzb25hbFxyXG4gICAgICAgICAgICAgICAgLCByZWNlcGNpb25pc3Rhc1xyXG4gICAgICAgICAgICAgICAgLCBlbmN1ZXN0YWRvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAgICAgLCBpbmdyZXNhZG9yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICAgICAsIHJlY3VwZXJhZG9yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICAgICAsIHN1cGVydmlzb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgICAgICwgbWlzX3N1cGVydmlzb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgICAgICwgbWlzX2VuY3Vlc3RhZG9yZXNcclxuICAgICAgICAgICAgICAgICwgcmVjdXBlcmFkb3Jlc1xyXG4gICAgICAgICAgICAgICAgLCBzdXBlcnZpc29yZXNcclxuICAgICAgICAgICAgICAgICwgcGVyc29uYWxfcm9sXHJcbiAgICAgICAgICAgICAgICAsIHBlcm1pc29zXHJcbiAgICAgICAgICAgICAgICAsIHJvbGVzX3Blcm1pc29zXHJcbiAgICAgICAgICAgICAgICAsIHJvbGVzX3N1Ym9yZGluYWRvc1xyXG4gICAgICAgICAgICAgICAgLCBub19yZWFcclxuICAgICAgICAgICAgICAgICwgbm9fcmVhX3N1cFxyXG4gICAgICAgICAgICAgICAgLCByZWFcclxuICAgICAgICAgICAgICAgICwgcmVhX3N1cFxyXG4gICAgICAgICAgICAgICAgLCBzZW1hbmFzXHJcbiAgICAgICAgICAgICAgICAsIGVzdGFkb3NcclxuICAgICAgICAgICAgICAgICwgYWNjaW9uZXNcclxuICAgICAgICAgICAgICAgICwgZXN0YWRvc19hY2Npb25lc1xyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfcHJveGltYXNcclxuICAgICAgICAgICAgICAgICwgdGVtXHJcbiAgICAgICAgICAgICAgICAsIGhpc3RvcmlhbF90ZW1cclxuICAgICAgICAgICAgICAgICwgbW9kb3NfZG1cclxuICAgICAgICAgICAgICAgICwgcGFyYW1ldHJvc1xyXG4gICAgICAgICAgICAgICAgLCBvcGVyYWNpb25lc1xyXG4gICAgICAgICAgICAgICAgLCBjb211bmFzXHJcbiAgICAgICAgICAgICAgICAsIGFyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHNpbmNyb25pemFjaW9uZXNcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1cclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2VuY3VcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX3JlY3VcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX3N1cGVcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2luZ3JcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX2FyZWFzXHJcbiAgICAgICAgICAgICAgICAsIGFyZWFzX2FzaWduYWNpb25fZ2VuZXJhbFxyXG4gICAgICAgICAgICAgICAgLCBncmlsbGFfaG9qYV9ydXRhXHJcbiAgICAgICAgICAgICAgICAsIHRfZW5jdV9hcmVhc1xyXG4gICAgICAgICAgICAgICAgLCB0X3JlY3VfYXJlYXNcclxuICAgICAgICAgICAgICAgICwgdF9zdXBlX2FyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHRfaW5ncl9hcmVhc1xyXG4gICAgICAgICAgICAgICAgLCBtaXNfdGFyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHRlbV9hc2lnbmFjaW9uXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fcmVjZXBjaW9uXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1faW5ncmVzb1xyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2Zpbl9jYW1wb1xyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX3Byb2Nlc2FtaWVudG9cclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hbmFsaXNpc19jYW1wb1xyXG4gICAgICAgICAgICAgICAgLCBtaXNfdGFyZWFzX2FyZWFzXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9cclxuICAgICAgICAgICAgICAgICwgY29udHJvbF9yZXN1bWVuXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fem9uYTogY29udGV4dCA9PiBjb250cm9sX2NhbXBvKGNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgeyBub21icmU6ICdjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOiAnY29udHJvbCBjYW1wbyB4IHpvbmEgc29sbyBjZW1lbnRvJywgY2FtcG9zQ29ydGU6IFt7IG5hbWU6ICd6b25hJywgdHlwZU5hbWU6ICd0ZXh0JyB9XSwgc2luaG9nZmluOiAhY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIsIGZpbHRyb1doZXJlOiAnZG9taW5pbz0zJyB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fY29tdW5hOiBjb250ZXh0ID0+IGNvbnRyb2xfY2FtcG8oY29udGV4dCxcclxuICAgICAgICAgICAgICAgICAgICB7IG5vbWJyZTogJ2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6ICdjb250cm9sIGNhbXBvIHggY29tdW5hIHNvbG8gY2VtZW50bycsIGNhbXBvc0NvcnRlOiBbeyBuYW1lOiAnem9uYScsIHR5cGVOYW1lOiAndGV4dCcgfSwgeyBuYW1lOiAnbnJvY29tdW5hJywgdHlwZU5hbWU6ICd0ZXh0JyB9XSwgc2luaG9nZmluOiAhY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIsIGZpbHRyb1doZXJlOiAnZG9taW5pbz0zJyB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fYXJlYTogY29udGV4dCA9PiBjb250cm9sX2NhbXBvKGNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgeyBub21icmU6ICdjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOiAnY29udHJvbCBjYW1wbyB4IGFyZWEnLCBjYW1wb3NDb3J0ZTogW3sgbmFtZTogJ3pvbmEnLCB0eXBlTmFtZTogJ3RleHQnIH0sIHsgbmFtZTogJ25yb2NvbXVuYScsIHR5cGVOYW1lOiAndGV4dCcgfSwgeyBuYW1lOiAnYXJlYScsIHR5cGVOYW1lOiAnaW50ZWdlcicgfSwgeyBuYW1lOiAncGFydGljaXBhY2lvbl9hJywgdHlwZU5hbWU6ICd0ZXh0JyB9LCB7IG5hbWU6ICdjbGFzZV9hJywgdHlwZU5hbWU6ICd0ZXh0JyB9XSwgc2luaG9nZmluOiAhY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIgfVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX3BhcnRpY2lwYWNpb246IGNvbnRleHQgPT4gY29udHJvbF9jYW1wbyhjb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbm9tYnJlOiAnY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTogJ2NvbnRyb2wgY2FtcG8geCBwYXJ0aWNpcGFjaW9uJywgY2FtcG9zQ29ydGU6IFt7IG5hbWU6ICdwYXJ0aWNpcGFjaW9uJywgdHlwZU5hbWU6ICdiaWdpbnQnIH1dLCBzaW5ob2dmaW46ICFjb250ZXh0LmJlLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIuY29uX3JlYV9ob2dhciB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fZG9taW5pbzogY29udGV4dCA9PiBjb250cm9sX2NhbXBvKGNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgeyBub21icmU6ICdjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOiAnY29udHJvbCBjYW1wbyB4IGRvbWluaW8nLCBjYW1wb3NDb3J0ZTogW3sgbmFtZTogJ2RvbWluaW8nLCB0eXBlTmFtZTogJ2ludGVnZXInIH1dLCBzaW5ob2dmaW46ICFjb250ZXh0LmJlLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIuY29uX3JlYV9ob2dhciB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfZGlhc19jYXJnYVxyXG4gICAgICAgICAgICAgICAgLCB2aXZpZW5kYXNcclxuICAgICAgICAgICAgICAgICwgdmlzaXRhc1xyXG4gICAgICAgICAgICAgICAgLCBob2dhcmVzXHJcbiAgICAgICAgICAgICAgICAsIHBlcnNvbmFzXHJcbiAgICAgICAgICAgICAgICAsIHZpc2l0YXNfc3VwXHJcbiAgICAgICAgICAgICAgICAsIGhvZ2FyZXNfc3VwXHJcbiAgICAgICAgICAgICAgICAsIHBlcnNvbmFzX3N1cFxyXG4gICAgICAgICAgICAgICAgLCBkaWNjaW9uYXJpb1xyXG4gICAgICAgICAgICAgICAgLCBkaWN2YXJcclxuICAgICAgICAgICAgICAgICwgZGljdHJhXHJcbiAgICAgICAgICAgICAgICAsIGluY29uc2lzdGVuY2lhc19jdW1wbGVuX2NvbmRpY2lvblxyXG4gICAgICAgICAgICAgICAgLCB0ZW1fYm9ycmFkYXNcclxuICAgICAgICAgICAgICAgICwgYmFycmlvc1xyXG4gICAgICAgICAgICAgICAgLCBmcmFjY2lvbmVzXHJcbiAgICAgICAgICAgICAgICAsIHJhZGlvc1xyXG4gICAgICAgICAgICAgICAgLCBtYW56YW5hc1xyXG4gICAgICAgICAgICAgICAgLCBhcmVhX2VuY19wcm94aW1hc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdjb25zaXN0ZW5jaWFzJywgZnVuY3Rpb24gKHRhYmxlRGVmLCBjb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5lZGl0YWJsZSA9IHRhYmxlRGVmLmVkaXRhYmxlIHx8IGNvbnRleHQ/LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLmZvckVhY2goZnVuY3Rpb24gKGZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLm5hbWUgPT0gJ2Vycm9yX2NvbXBpbGFjaW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQudmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignKioqKioqKioqKioqIFFVSVRBUiBFU1RPIGVycm9yX2NvbXBpbGFjaW9uIHlhIGVzIHZpc2libGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignaW5jb25zaXN0ZW5jaWFzJywgZnVuY3Rpb24gKHRhYmxlRGVmLCBjb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5zcWwgPSB7IC4uLnRhYmxlRGVmLnNxbCwgaXNUYWJsZTogdHJ1ZSB9O1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnNwbGljZSgyLCAwLFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ3ZpdmllbmRhJywgdHlwZU5hbWU6ICd0ZXh0JywgZWRpdGFibGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnaG9nYXInLCB0eXBlTmFtZTogJ2JpZ2ludCcsIGVkaXRhYmxlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ3BlcnNvbmEnLCB0eXBlTmFtZTogJ2JpZ2ludCcsIGVkaXRhYmxlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ3Zpc2l0YScsIHR5cGVOYW1lOiAnYmlnaW50JywgZWRpdGFibGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZWRpdGFibGUgPSB0YWJsZURlZi5lZGl0YWJsZSB8fCBjb250ZXh0Py5wdWVkZT8uZW5jdWVzdGFzPy5qdXN0aWZpY2FyO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLmZvckVhY2goZnVuY3Rpb24gKGZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLm5hbWUgPT0gJ3BrX2ludGVncmFkYScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQubmFtZSA9PSAnanVzdGlmaWNhY2lvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuZWRpdGFibGUgPSBjb250ZXh0Py5mb3JEdW1wIHx8IGNvbnRleHQ/LnB1ZWRlPy5lbmN1ZXN0YXM/Lmp1c3RpZmljYXI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcyA9IHRhYmxlRGVmLmZpZWxkcy5jb25jYXQoWyd0YXJlYV9hY3R1YWwnLCAndGFyZWFfYW50ZXJpb3InXS5tYXAoZm4gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG5hbWU6IGZuLCB0eXBlTmFtZTogJ3RleHQnLCBlZGl0YWJsZTogZmFsc2UsIGluVGFibGU6IGZhbHNlIH1cclxuICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgICAgLy9zYWNhciBjYW1wb3MgZGUgdml0YWxlcyEgXHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWdFeHBGaWVsZHNWaXRhID0gbmV3IFJlZ0V4cCgnXihjb21wfGluZmV8Y29kX2NhdXNhfGRvbWkpJCcpO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzID0gdGFibGVEZWYuZmllbGRzLmZpbHRlcihmID0+ICEocmVnRXhwRmllbGRzVml0YS50ZXN0KGYubmFtZSkpKVxyXG5cclxuICAgICAgICAgICAgICAgIHZhciBxX2luY29uc2lzdCA9IHRhYmxlRGVmLnNxbCEuZnJvbVxyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuc3FsIS5mcm9tID0gYFxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdCBpLiosIHQudGFyZWFfYWN0dWFsLCB0YXJlYV9hbnRlcmlvclxyXG4gICAgICAgICAgICAgICAgICBmcm9tICR7cV9pbmNvbnNpc3R9IGkgXHJcbiAgICAgICAgICAgICAgICAgIGpvaW4gdGVtIHQgb24gaS52aXZpZW5kYT10LmVuYyBhbmQgaS5vcGVyYXRpdm89dC5vcGVyYXRpdm8gXHJcbiAgICAgICAgICAgICAgICAgIGxlZnQgam9pbiB0YXJlYXNfdGVtIHR0IG9uIHQub3BlcmF0aXZvPXR0Lm9wZXJhdGl2byBhbmQgdC5lbmM9dHQuZW5jIGFuZCB0LnRhcmVhX2FjdHVhbD10dC50YXJlYSBcclxuICAgICAgICAgICAgICAgICAgbGVmdCBqb2luIGxhdGVyYWwgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgdGFyZWEgYXMgdGFyZWFfYW50ZXJpb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gaGlzdG9yaWFsX3RlbSBodFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdC5vcGVyYXRpdm8gPSBodC5vcGVyYXRpdm8gYW5kIHQuZW5jID0gaHQuZW5jXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciBieSB0c19zYWxpZGEgZGVzY1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQgMVxyXG4gICAgICAgICAgICAgICAgICAgICkgYXMgdGEgb24gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgKSAgIFxyXG4gICAgICAgICAgICBgXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdvcGVyYXRpdm9zJywgZnVuY3Rpb24gKHRhYmxlRGVmLCBjb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuc3BsaWNlKDIsIDAsIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29uZmlnX3NvcnRlbycsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZU5hbWU6ICdqc29uYicsXHJcbiAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2hhYmlsaXRhY2lvbl9ib3Rvbl9mb3JtdWxhcmlvJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTogJ2pzb25iJyxcclxuICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2VcclxuICAgICAgICAgICAgICAgIH0sIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGlzZm9ybV9jZXJyYWRvJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTogJ2Jvb2xlYW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGNvbnRleHQ/LmZvckR1bXAgfHwgY29udGV4dCAhPSBudWxsICYmIFsnYWRtaW4nLCAnZGlzX2NvbmNlcHR1YWwnXS5pbmNsdWRlcyhjb250ZXh0LnVzZXIucm9sKVxyXG4gICAgICAgICAgICAgICAgfSwge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb25fcmVhX2hvZ2FyJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTogJ2Jvb2xlYW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGJWYWx1ZTogJ3RydWUnXHJcbiAgICAgICAgICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3Blcm1pdGVfZ2VuZXJhcl9tdWVzdHJhJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTogJ2Jvb2xlYW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGJWYWx1ZTogJ2ZhbHNlJ1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCd2YXJpYWJsZXMnLCBmdW5jdGlvbiAodGFibGVEZWYsIGNvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBlc0FkbWluID0gY29udGV4dD8udXNlci5yb2wgPT09ICdhZG1pbic7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5lZGl0YWJsZSA9IHRhYmxlRGVmLmVkaXRhYmxlIHx8IGNvbnRleHQ/LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuYWxsb3cgPSB7IGRlbGV0ZTogZXNBZG1pbiB9O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignbW9tZW50b3NfY29uc2lzdGVuY2lhJywgZnVuY3Rpb24gKHRhYmxlRGVmLCBfY29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnY29uZGljaW9uJywgdHlwZU5hbWU6ICd0ZXh0JywgbnVsbGFibGU6IGZhbHNlLCBkZWZhdWx0RGJWYWx1ZTogJ3RydWUnIH0sXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbigncGFyYW1ldHJvcycsIGZ1bmN0aW9uICh0YWJsZURlZikge1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnbW9kb19kbV9kZWZlY3RvJywgdHlwZU5hbWU6ICd0ZXh0JywgZWRpdGFibGU6IHRydWUsIG51bGxhYmxlOiBmYWxzZSwgZGVmYXVsdERiVmFsdWU6IFwiJ2NhcGEnXCIgfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5mb3JlaWduS2V5cyA9IHRhYmxlRGVmLmZvcmVpZ25LZXlzIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZm9yZWlnbktleXMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7IHJlZmVyZW5jZXM6ICdtb2Rvc19kbScsIGZpZWxkczogW3sgc291cmNlOiAnbW9kb19kbV9kZWZlY3RvJywgdGFyZ2V0OiAnbW9kb19kbScgfV0gfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgQXBwRG1FbmN1ID0gZW1lcmdlQXBwRG1FbmN1KGVtZXJnZUFwcFByb2Nlc2FtaWVudG8oZW1lcmdlQXBwQ29uc2lzdGVuY2lhcyhlbWVyZ2VBcHBWYXJDYWwoZW1lcmdlQXBwRGF0b3NFeHQoZW1lcmdlQXBwT3BlcmF0aXZvcyhBcHBCYWNrZW5kKSkpKSkpO1xyXG5leHBvcnQgdHlwZSBBcHBBcHBEbUVuY3VUeXBlID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBBcHBEbUVuY3U+OyJdfQ==
|
|
1094
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRtZW5jdS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2ZXIvYXBwLWRtZW5jdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFlBQVksQ0FBQzs7O0lBc0hiLDBDQUVDO0lBR0Qsb0RBYUM7SUFHRCxnREFPQztJQXdCRCxrRkFnQkM7SUFpRUQsMENBNjRCQztJQXJvQ0QsaURBQTRMO0lBQzVMLDJEQUE2RTtJQUM3RSxtQ0FBNEg7SUFFNUgsd0NBQXdDO0lBQ3hDLHdDQUF3QztJQVV4QywyQ0FBa0Q7SUFFbEQsNkJBQTZCO0lBRTdCLG1DQUFtQztJQUVuQywyQkFBb0M7SUFDcEMsNkJBQTZCO0lBRTdCLCtDQUFzQztJQUN0QyxxREFBNEM7SUFDNUMsaUVBQXdEO0lBQ3hELCtEQUF3RjtJQUN4RiwrREFBZ0U7SUFDaEUsK0RBQStEO0lBQy9ELCtEQUFtRTtJQUNuRSx1RUFBOEQ7SUFDOUQsK0RBQXNEO0lBQ3RELDZEQUFvRDtJQUNwRCw2REFBb0Q7SUFDcEQscURBQTRDO0lBQzVDLGlFQUF3RDtJQUN4RCxxREFBNEM7SUFDNUMseURBQWdEO0lBQ2hELHlFQUFnRTtJQUVoRSxpREFBd0M7SUFDeEMseURBQWdEO0lBQ2hELDJDQUFrQztJQUNsQyxtREFBMEM7SUFDMUMsMkNBQWtDO0lBQ2xDLG1EQUEwQztJQUMxQyxxREFBNEM7SUFDNUMsMkRBQWtEO0lBQ2xELG1EQUEwQztJQUMxQywrQ0FBc0M7SUFDdEMscUVBQTREO0lBQzVELGlEQUF3QztJQUN4Qyx5REFNNEI7SUFDNUIsNkRBQW9EO0lBQ3BELHFGQUE0RTtJQUM1RSxxRUFBNEQ7SUFDNUQsNkRBQW9EO0lBQ3BELDZEQUFvRDtJQUNwRCw2REFBb0Q7SUFDcEQsNkRBQW9EO0lBQ3BELHlEQUFnRDtJQUNoRCxpRUFBd0Q7SUFDeEQsMkRBQWtEO0lBQ2xELDZFQUFvRTtJQUNwRSx5RUFBZ0U7SUFDaEUs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LFFBQVEsQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7b0JBQ2xELFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNyQixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FDekYsQ0FBQztnQkFDTixDQUFDLENBQUMsQ0FBQTtZQUNOLENBQUM7U0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVVLFFBQUEsU0FBUyxHQUFHLGVBQWUsQ0FBQyxJQUFBLHNDQUFzQixFQUFDLElBQUEsc0NBQXNCLEVBQUMsSUFBQSwrQkFBZSxFQUFDLElBQUEsaUNBQWlCLEVBQUMsSUFBQSxtQ0FBbUIsRUFBQywwQkFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgKiBhcyBwcm9jZXNhbWllbnRvIGZyb20gXCJwcm9jZXNhbWllbnRvXCI7XHJcbmltcG9ydCB7IGVtZXJnZUFwcFByb2Nlc2FtaWVudG8sIGVtZXJnZUFwcENvbnNpc3RlbmNpYXMsIGVtZXJnZUFwcFZhckNhbCwgZW1lcmdlQXBwRGF0b3NFeHQsIGVtZXJnZUFwcE9wZXJhdGl2b3MsIEFwcEJhY2tlbmQsIENsaWVudE1vZHVsZURlZmluaXRpb24sIE9wdHNDbGllbnRQYWdlIH0gZnJvbSBcInByb2Nlc2FtaWVudG9cIjtcclxuaW1wb3J0IHsgcGFzYXJFbmN1ZXN0YXNBUHJvaWUsIFByb2NlZHVyZXNEbUVuY3UgfSBmcm9tIFwiLi9wcm9jZWR1cmVzLWRtZW5jdVwiO1xyXG5pbXBvcnQgeyBjYXJnYXJBeXVkYSwgY2FycGV0YURlbFBhcXVldGUsIHByb2JsZW1hc0RlQXl1ZGEsIFF1aWVuQ29uc3VsdGFBeXVkYSwgcnV0YXNEZWxNZW51LCB0ZW1hc1Zpc2libGVzIH0gZnJvbSBcIi4vYXl1ZGFcIjtcclxuXHJcbmltcG9ydCAqIGFzIHBnIGZyb20gXCJwZy1wcm9taXNlLXN0cmljdFwiO1xyXG5pbXBvcnQgKiBhcyBtaW5pVG9vbHMgZnJvbSBcIm1pbmktdG9vbHNcIjtcclxuaW1wb3J0IHtcclxuICAgIEF5dWRhRnVlbnRlLFxyXG4gICAgQ2xpZW50LCBDb250ZXh0LCBDb3JlRnVuY3Rpb25QYXJhbWV0ZXJzLFxyXG4gICAgTWVudUluZm9CYXNlLFxyXG4gICAgUHVlZGUsXHJcbiAgICBSZXF1ZXN0LCBSZXNwb25zZSxcclxuICAgIFN1Zmlqb3NBbWJpZW50ZSxcclxufSBmcm9tIFwiLi90eXBlcy1kbWVuY3VcIjtcclxuXHJcbmltcG9ydCB7IGV4cGVjdGVkLCB1bmV4cGVjdGVkIH0gZnJvbSBcImNhc3QtZXJyb3JcIjtcclxuXHJcbmltcG9ydCAqIGFzIHlhemwgZnJvbSBcInlhemxcIjtcclxuaW1wb3J0IHsgTmV4dEZ1bmN0aW9uIH0gZnJvbSBcImV4cHJlc3Mtc2VydmUtc3RhdGljLWNvcmVcIjtcclxuaW1wb3J0ICogYXMgZXhwcmVzcyBmcm9tIFwiZXhwcmVzc1wiO1xyXG5cclxuaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tIFwiZnNcIjtcclxuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xyXG5cclxuaW1wb3J0IHsgcm9sZXMgfSBmcm9tIFwiLi90YWJsZS1yb2xlc1wiO1xyXG5pbXBvcnQgeyBwZXJzb25hbCB9IGZyb20gXCIuL3RhYmxlLXBlcnNvbmFsXCI7XHJcbmltcG9ydCB7IHJlY2VwY2lvbmlzdGFzIH0gZnJvbSBcIi4vdGFibGUtcmVjZXBjaW9uaXN0YXNcIjtcclxuaW1wb3J0IHsgZW5jdWVzdGFkb3Jlc19hc2lnbmFkb3MsIGluZ3Jlc2Fkb3Jlc19hc2lnbmFkb3MgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IHJlY3VwZXJhZG9yZXNfYXNpZ25hZG9zIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBzdXBlcnZpc29yZXNfYXNpZ25hZG9zIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBtaXNfc3VwZXJ2aXNvcmVzX2FzaWduYWRvcyB9IGZyb20gXCIuL3RhYmxlLWVuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgbWlzX2VuY3Vlc3RhZG9yZXMgfSBmcm9tIFwiLi90YWJsZS1taXNfZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyByZWN1cGVyYWRvcmVzIH0gZnJvbSBcIi4vdGFibGUtcmVjdXBlcmFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBzdXBlcnZpc29yZXMgfSBmcm9tIFwiLi90YWJsZS1zdXBlcnZpc29yZXNcIjtcclxuaW1wb3J0IHsgcGVyc29uYWxfcm9sIH0gZnJvbSBcIi4vdGFibGUtcGVyc29uYWxfcm9sXCI7XHJcbmltcG9ydCB7IHBlcm1pc29zIH0gZnJvbSBcIi4vdGFibGUtcGVybWlzb3NcIjtcclxuaW1wb3J0IHsgcm9sZXNfcGVybWlzb3MgfSBmcm9tIFwiLi90YWJsZS1yb2xlc19wZXJtaXNvc1wiO1xyXG5pbXBvcnQgeyBtb2Rvc19kbSB9IGZyb20gXCIuL3RhYmxlLW1vZG9zX2RtXCI7XHJcbmltcG9ydCB7IHBhcmFtZXRyb3MgfSBmcm9tIFwiLi90YWJsZS1wYXJhbWV0cm9zXCI7XHJcbmltcG9ydCB7IHJvbGVzX3N1Ym9yZGluYWRvcyB9IGZyb20gXCIuL3RhYmxlLXJvbGVzX3N1Ym9yZGluYWRvc1wiO1xyXG5cclxuaW1wb3J0IHsgbm9fcmVhIH0gZnJvbSBcIi4vdGFibGUtbm9fcmVhXCI7XHJcbmltcG9ydCB7IG5vX3JlYV9zdXAgfSBmcm9tIFwiLi90YWJsZS1ub19yZWFfc3VwXCI7XHJcbmltcG9ydCB7IHJlYSB9IGZyb20gXCIuL3RhYmxlLXJlYVwiO1xyXG5pbXBvcnQgeyByZWFfc3VwIH0gZnJvbSBcIi4vdGFibGUtcmVhX3N1cFwiO1xyXG5pbXBvcnQgeyB0ZW0gfSBmcm9tIFwiLi90YWJsZS10ZW1cIjtcclxuaW1wb3J0IHsgc2VtYW5hcyB9IGZyb20gXCIuL3RhYmxlLXNlbWFuYXNcIjtcclxuaW1wb3J0IHsgdXN1YXJpb3MgfSBmcm9tICcuL3RhYmxlLXVzdWFyaW9zJztcclxuaW1wb3J0IHsgb3BlcmFjaW9uZXMgfSBmcm9tICcuL3RhYmxlLW9wZXJhY2lvbmVzJztcclxuaW1wb3J0IHsgY29tdW5hcyB9IGZyb20gJy4vdGFibGUtY29tdW5hcyc7XHJcbmltcG9ydCB7IGFyZWFzIH0gZnJvbSAnLi90YWJsZS1hcmVhcyc7XHJcbmltcG9ydCB7IHNpbmNyb25pemFjaW9uZXMgfSBmcm9tICcuL3RhYmxlLXNpbmNyb25pemFjaW9uZXMnO1xyXG5pbXBvcnQgeyB0YXJlYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhcyc7XHJcbmltcG9ydCB7XHJcbiAgICB0YXJlYXNfdGVtLFxyXG4gICAgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2VuY3UsXHJcbiAgICB0YXJlYXNfdGVtX2FzaWduYWNpb25fcmVjdSxcclxuICAgIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9zdXBlLFxyXG4gICAgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2luZ3JcclxufSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW0nO1xyXG5pbXBvcnQgeyB0YXJlYXNfYXJlYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IGFyZWFzX2FzaWduYWNpb25fZ2VuZXJhbCB9IGZyb20gJy4vdGFibGUtYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsJztcclxuaW1wb3J0IHsgZ3JpbGxhX2hvamFfcnV0YSB9IGZyb20gJy4vdGFibGUtZ3JpbGxhX2hvamFfcnV0YSc7XHJcbmltcG9ydCB7IHRfZW5jdV9hcmVhcyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9yZWN1X2FyZWFzIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfYXJlYXMnO1xyXG5pbXBvcnQgeyB0X3N1cGVfYXJlYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IHRfaW5ncl9hcmVhcyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgbWlzX3RhcmVhcyB9IGZyb20gJy4vdGFibGUtbWlzX3RhcmVhcyc7XHJcbmltcG9ydCB7IHRlbV9hc2lnbmFjaW9uIH0gZnJvbSAnLi90YWJsZS10ZW1fYXNpZ25hY2lvbic7XHJcbmltcG9ydCB7IHRlbV9lZGljaW9uIH0gZnJvbSAnLi90YWJsZS10ZW1fZWRpY2lvbic7XHJcbmltcG9ydCB7IHRhcmVhc190ZW1fcmVjZXBjaW9uIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtX3JlY2VwY2lvbic7XHJcbmltcG9ydCB7IHRhcmVhc190ZW1faW5ncmVzbyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9pbmdyZXNvJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9maW5fY2FtcG8gfSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW1fZmluX2NhbXBvJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9wcm9jZXNhbWllbnRvIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtX3Byb2Nlc2FtaWVudG8nO1xyXG5pbXBvcnQgeyB0YXJlYXNfdGVtX2FuYWxpc2lzX2NhbXBvIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtX2FuYWxpc2lzX2NhbXBvJztcclxuaW1wb3J0IHsgbWlzX3RhcmVhc19hcmVhcyB9IGZyb20gJy4vdGFibGUtbWlzX3RhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IGNvbnRyb2xfY2FtcG8gfSBmcm9tICcuL3RhYmxlLWNvbnRyb2xfY2FtcG8nO1xyXG5pbXBvcnQgeyBjb250cm9sX3Jlc3VtZW4gfSBmcm9tICcuL3RhYmxlLWNvbnRyb2xfcmVzdW1lbic7XHJcbmltcG9ydCB7IGNvbnRyb2xfZGlhc19jYXJnYSB9IGZyb20gJy4vdGFibGUtY29udHJvbF9kaWFzX2NhcmdhJztcclxuaW1wb3J0IHsgdml2aWVuZGFzIH0gZnJvbSAnLi90YWJsZS12aXZpZW5kYXMnO1xyXG5pbXBvcnQgeyB2aXNpdGFzIH0gZnJvbSAnLi90YWJsZS12aXNpdGFzJztcclxuaW1wb3J0IHsgaG9nYXJlcyB9IGZyb20gJy4vdGFibGUtaG9nYXJlcyc7XHJcbmltcG9ydCB7IHBlcnNvbmFzIH0gZnJvbSAnLi90YWJsZS1wZXJzb25hcyc7XHJcbmltcG9ydCB7IHZpc2l0YXNfc3VwIH0gZnJvbSAnLi90YWJsZS12aXNpdGFzX3N1cCc7XHJcbmltcG9ydCB7IGhvZ2FyZXNfc3VwIH0gZnJvbSAnLi90YWJsZS1ob2dhcmVzX3N1cCc7XHJcbmltcG9ydCB7IHBlcnNvbmFzX3N1cCB9IGZyb20gJy4vdGFibGUtcGVyc29uYXNfc3VwJztcclxuaW1wb3J0IHsgZGljY2lvbmFyaW8gfSBmcm9tICcuL3RhYmxlLWRpY2Npb25hcmlvJztcclxuaW1wb3J0IHsgZGljdHJhIH0gZnJvbSAnLi90YWJsZS1kaWN0cmEnO1xyXG5pbXBvcnQgeyBkaWN2YXIgfSBmcm9tICcuL3RhYmxlLWRpY3Zhcic7XHJcblxyXG5pbXBvcnQgeyBlc3RhZG9zIH0gZnJvbSAnLi90YWJsZS1lc3RhZG9zJztcclxuaW1wb3J0IHsgYWNjaW9uZXMgfSBmcm9tICcuL3RhYmxlLWFjY2lvbmVzJztcclxuaW1wb3J0IHsgZXN0YWRvc19hY2Npb25lcyB9IGZyb20gJy4vdGFibGUtZXN0YWRvc19hY2Npb25lcyc7XHJcbmltcG9ydCB7IHRhcmVhc19wcm94aW1hcyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3Byb3hpbWFzJztcclxuaW1wb3J0IHsgaGlzdG9yaWFsX3RlbSB9IGZyb20gJy4vdGFibGUtaGlzdG9yaWFsX3RlbSc7XHJcbmltcG9ydCB7IGluY29uc2lzdGVuY2lhc19jdW1wbGVuX2NvbmRpY2lvbiB9IGZyb20gJy4vdGFibGUtaW5jb25zaXN0ZW5jaWFzX2N1bXBsZW5fY29uZGljaW9uJztcclxuaW1wb3J0IHsgdGVtX2JvcnJhZGFzIH0gZnJvbSAnLi90YWJsZS10ZW1fYm9ycmFkYXMnO1xyXG5pbXBvcnQgeyBiYXJyaW9zIH0gZnJvbSBcIi4vdGFibGUtYmFycmlvc1wiO1xyXG5pbXBvcnQgeyBmcmFjY2lvbmVzIH0gZnJvbSBcIi4vdGFibGUtZnJhY2Npb25lc1wiO1xyXG5pbXBvcnQgeyByYWRpb3MgfSBmcm9tIFwiLi90YWJsZS1yYWRpb3NcIjtcclxuaW1wb3J0IHsgbWFuemFuYXMgfSBmcm9tIFwiLi90YWJsZS1tYW56YW5hc1wiO1xyXG5pbXBvcnQgeyBhcmVhX2VuY19wcm94aW1hcyB9IGZyb20gXCIuL3RhYmxlLWFyZWFfZW5jX3Byb3hpbWFzXCI7XHJcblxyXG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy1kbWVuY3VcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vYXl1ZGFcIjtcclxuaW1wb3J0IHsgZGVmQ29uZmlnIH0gZnJvbSBcIi4vZGVmLWNvbmZpZ1wiXHJcbmltcG9ydCB7IFByb2NlZHVyZURlZiB9IGZyb20gXCJiYWNrZW5kLXBsdXNcIjtcclxuaW1wb3J0IHsgdGFibGUgfSBmcm9tIFwiY29uc29sZVwiO1xyXG5cclxuaW1wb3J0IHsgZGF0ZXRpbWUgfSBmcm9tIFwiYmVzdC1nbG9iYWxzXCI7XHJcbmltcG9ydCB7IFByb2NlZHVyZUNvbnRleHQgfSBmcm9tIFwiYmFja2VuZC1wbHVzXCI7XHJcblxyXG5cclxuY29uc3QgQVBQX0RNX1ZFUlNJT04gPSBcIiMyMi0xMi0xNVwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZG9CeVBvbGljeShiZTogQXBwQmFja2VuZCkge1xyXG4gICAgcmV0dXJuIGJlLmNvbmZpZy5zZXJ2ZXIucG9saWN5ID09ICd3ZWInID8gJ1JFTEVWQU1JRU5UTycgOiAnR0FCSU5FVEUnO1xyXG59XHJcblxyXG4vLyBwZXJtaXNvcyBxdWUgZ2V0Q29udGV4dCBhZ3JlZ2EgYWwgY29udGV4dG8gc2Vnw7puIGVsIHVzdWFyaW8gbG9ndWVhZG8gKG8gbGEgZmFsdGEgZGUgdXN1YXJpbylcclxuZXhwb3J0IGZ1bmN0aW9uIHBlcm1pc29zU2VndW5Vc3VhcmlvKFxyXG4gICAgY2FjaGVzOiBQaWNrPEFwcEJhY2tlbmRbJ2NhY2hlcyddLCAncGVybWlzb3NSb2wnIHwgJ3Blcm1pc29zU3VwZXJ1c2VyJyB8ICdwZXJtaXNvc1BhcmFOYWRpZSc+LFxyXG4gICAgdXNlcjogQ29udGV4dFsndXNlciddIHwgdW5kZWZpbmVkXHJcbik6IHsgc3VwZXJ1c2VyPzogdHJ1ZSwgcHVlZGU/OiBQdWVkZSB9IHtcclxuICAgIGlmICh1c2VyID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4geyBwdWVkZTogY2FjaGVzLnBlcm1pc29zUGFyYU5hZGllIH07XHJcbiAgICB9XHJcbiAgICB2YXIgcm9sID0gdXNlci5yb2w7XHJcbiAgICB2YXIgcGVybWlzb3NEZWxSb2wgPSByb2wgIT0gbnVsbCA/IGNhY2hlcy5wZXJtaXNvc1JvbFtyb2xdIDogdW5kZWZpbmVkO1xyXG4gICAgaWYgKHBlcm1pc29zRGVsUm9sPy5zdXBlcnVzZXIpIHtcclxuICAgICAgICByZXR1cm4geyBzdXBlcnVzZXI6IHRydWUsIHB1ZWRlOiBjYWNoZXMucGVybWlzb3NTdXBlcnVzZXIgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IHB1ZWRlOiBwZXJtaXNvc0RlbFJvbD8ucHVlZGUgfTtcclxufVxyXG5cclxuLy8gbG8gcXVlIGRlY2lkZSBxdcOpIHRlbWFzIGRlIGF5dWRhIHZlIGVsIHVzdWFyaW86IHN1IHJvbCwgc3VzIHBlcm1pc29zIHkgZWwgbW9kbyBkZSBsYSBpbnN0YW5jaWFcclxuZXhwb3J0IGZ1bmN0aW9uIHF1aWVuQ29uc3VsdGFBeXVkYShjb250ZXh0OiBDb250ZXh0KTogUXVpZW5Db25zdWx0YUF5dWRhIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcm9sOiBjb250ZXh0LnVzZXI/LnJvbCA/PyBudWxsLFxyXG4gICAgICAgIHN1cGVydXNlcjogISFjb250ZXh0LnN1cGVydXNlcixcclxuICAgICAgICBwdWVkZTogY29udGV4dC5wdWVkZSxcclxuICAgICAgICBtb2RvOiBnZXRNb2RvQnlQb2xpY3koY29udGV4dC5iZSksXHJcbiAgICB9O1xyXG59XHJcblxyXG4vLyBsbyBxdWUgdXNhbiByZWZyZXNoQ2FjaGVzIHkgcmVmcmVzY2FyRXN0cnVjdHVyYUFsTW9kaWZpY2FyVGFibGEgZGVsIGNsaWVudGUgZGUgYmFzZSAoZWwgQ2xpZW50IGRlIHBnLXByb21pc2Utc3RyaWN0IGxvIGN1bXBsZSlcclxuZXhwb3J0IHR5cGUgQ29uc3VsdGFEYiA9IHtcclxuICAgIGZldGNoQWxsKCk6IFByb21pc2U8cGcuUmVzdWx0Um93cz5cclxuICAgIGZldGNoVW5pcXVlUm93KCk6IFByb21pc2U8cGcuUmVzdWx0T25lUm93PlxyXG59XHJcbmV4cG9ydCB0eXBlIENsaWVudGVEYiA9IHtcclxuICAgIHF1ZXJ5KHNxbDogc3RyaW5nKTogQ29uc3VsdGFEYlxyXG59XHJcblxyXG4vLyB0YWJsYXMgY3V5YSBtb2RpZmljYWNpw7NuIGNhbWJpYSBsYSBlc3RydWN0dXJhIHF1ZSBzZSBtYW5kYSBhIGxvcyBkaXNwb3NpdGl2b3MgKHZlciBvcGVyYXRpdm9fZXN0cnVjdHVyYV9jb21wbGV0YSlcclxuZXhwb3J0IGNvbnN0IFRBQkxBU19FU1RSVUNUVVJBID0gWydjYXNpbGxlcm9zJywgJ3NlbWFuYXMnXTtcclxuLy8gdGFibGFzIGRlIHJlYS9ubyByZWEsIHF1ZSBhZGVtw6FzIHNlIGd1YXJkYW4gZW4gYmUuY2FjaGVzLnRhYmxlQ29udGVudCAodmVyIHJlZnJlc2hDYWNoZXMpXHJcbmV4cG9ydCBjb25zdCBUQUJMQVNfUkVBX05PX1JFQSA9IFsncmVhJywgJ25vX3JlYScsICdyZWFfc3VwJywgJ25vX3JlYV9zdXAnXTtcclxuXHJcbmV4cG9ydCB0eXBlIFJlZnJlc2NhZG9yRXN0cnVjdHVyYSA9IHtcclxuICAgIGNhY2hlczogeyB0aW1lc3RhbXBFc3RydWN0dXJhOiBudW1iZXIgfVxyXG4gICAgcmVmcmVzaENhY2hlcyhjbGllbnQ6IENsaWVudGVEYik6IFByb21pc2U8dm9pZD5cclxufVxyXG5cclxuLy8gZW52dWVsdmUgdGFibGVfcmVjb3JkX3NhdmUvdGFibGVfcmVjb3JkX2RlbGV0ZSBwYXJhIHF1ZSBhbCBtb2RpZmljYXIgZXNhcyB0YWJsYXMgbG9zIGRpc3Bvc2l0aXZvc1xyXG4vLyByZWNpYmFuIGxhIGVzdHJ1Y3R1cmEgbnVldmEgKHRpbWVzdGFtcEVzdHJ1Y3R1cmEpIHksIHNpIHNvbiBkZSByZWEvbm8gcmVhLCBzZSByZWNhcmd1ZW4gbGFzIGNhY2hlc1xyXG4vLyBjb24gZWwgbWlzbW8gY2xpZW50ZSAoZGVudHJvIGRlIGxhIG1pc21hIHRyYW5zYWNjacOzbilcclxuZXhwb3J0IGZ1bmN0aW9uIHJlZnJlc2NhckVzdHJ1Y3R1cmFBbE1vZGlmaWNhclRhYmxhPEMgZXh0ZW5kcyB7IGNsaWVudDogQ2xpZW50ZURiIH0sIFAgZXh0ZW5kcyB7IHRhYmxlOiBzdHJpbmcgfSwgUiwgUmVzdG8gZXh0ZW5kcyAob2JqZWN0IHwgdW5kZWZpbmVkKVtdPihcclxuICAgIGJlOiBSZWZyZXNjYWRvckVzdHJ1Y3R1cmEsXHJcbiAgICBjb3JlRnVuY3Rpb246IChjb250ZXh0OiBDLCBwYXJhbWV0ZXJzOiBQLCAuLi5yZXN0bzogUmVzdG8pID0+IFByb21pc2U8Uj5cclxuKTogKGNvbnRleHQ6IEMsIHBhcmFtZXRlcnM6IFAsIC4uLnJlc3RvOiBSZXN0bykgPT4gUHJvbWlzZTxSPiB7XHJcbiAgICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gKGNvbnRleHQ6IEMsIHBhcmFtZXRlcnM6IFAsIC4uLnJlc3RvOiBSZXN0bykge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBjb3JlRnVuY3Rpb24oY29udGV4dCwgcGFyYW1ldGVycywgLi4ucmVzdG8pO1xyXG4gICAgICAgIGlmIChUQUJMQVNfRVNUUlVDVFVSQS5pbmNsdWRlcyhwYXJhbWV0ZXJzLnRhYmxlKSkge1xyXG4gICAgICAgICAgICBiZS5jYWNoZXMudGltZXN0YW1wRXN0cnVjdHVyYSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnc2UgdG9jw7MgbGEgZXN0cnVjdHVyYScsIGJlLmNhY2hlcy50aW1lc3RhbXBFc3RydWN0dXJhKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoVEFCTEFTX1JFQV9OT19SRUEuaW5jbHVkZXMocGFyYW1ldGVycy50YWJsZSkpIHtcclxuICAgICAgICAgICAgYmUuY2FjaGVzLnRpbWVzdGFtcEVzdHJ1Y3R1cmEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgYXdhaXQgYmUucmVmcmVzaENhY2hlcyhjb250ZXh0LmNsaWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IHJlZ2lzdHJhckNyb25Kb2JQYXNhckFQcm9pZSA9IGFzeW5jIChiZTogQXBwQmFja2VuZCkgPT4ge1xyXG4gICAgY29uc3QgZWplY3V0YXJQYXNhamUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbG9nID0gKG1zZzogc3RyaW5nLCBkYXRhOiBhbnkgPSAnJykgPT5cclxuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7ZGF0ZXRpbWUubm93KCkudG9ZbWRIbXMoKX0gW0NST046UFJPSUVdICR7bXNnfWAsIGRhdGEpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxvZygn8J+agCBpbmljaWEgY3JvbiBwYXNhamUgYSBwcm9pZScpO1xyXG5cclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IGJlLmluVHJhbnNhY3Rpb24obnVsbCwgYXN5bmMgKGNsaWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHBhc2FyRW5jdWVzdGFzQVByb2llKGNsaWVudCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgbG9nKCfinIUgcmVzdWx0IHByb2MgcGFzYWplIGEgcHJvaWU6JywgcmVzdWx0KTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgdmFyIGVycm9yID0gdW5leHBlY3RlZChlcnIpO1xyXG4gICAgICAgICAgICBsb2coYOKdjCBlcnJvciBwYXNhamUgYSBwcm9pZTogJHtlcnJvci5tZXNzYWdlfWApO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIGxvZygn8J+PgSB0ZXJtaW5hIGNyb24gcHJvaWUnKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgYXdhaXQgZWplY3V0YXJQYXNhamUoKTtcclxuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoZWplY3V0YXJQYXNhamUsIDEwMDAgKiA2MCAqIDYwKVxyXG4gICAgYmUuc2h1dGRvd25DYWxsYmFja0xpc3RBZGQoe1xyXG4gICAgICAgIG1lc3NhZ2U6ICdhcGFnYSBjcm9uIHBhc2FyIGEgcHJvaWUnLFxyXG4gICAgICAgIGZ1bjogYXN5bmMgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBnZXRNYW5pZmVzdEltYWdlSWNvbnMgPSAoQVBQX05BTUU6IHN0cmluZywgc3VmaWpvOiBzdHJpbmcpID0+IFtcclxuICAgIHtcclxuICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tMzIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICBcInNpemVzXCI6IFwiMzJ4MzJcIixcclxuICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tNDgke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICBcInNpemVzXCI6IFwiNDh4NDhcIixcclxuICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tNjQke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICBcInNpemVzXCI6IFwiNjR4NjRcIixcclxuICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tNzIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICBcInNpemVzXCI6IFwiNzJ4NzJcIixcclxuICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tMTkyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjE5MngxOTJcIixcclxuICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tNTEyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjUxMng1MTJcIixcclxuICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgfVxyXG5dO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVtZXJnZUFwcERtRW5jdTxUIGV4dGVuZHMgcHJvY2VzYW1pZW50by5Db25zdHJ1Y3Rvcjxwcm9jZXNhbWllbnRvLkFwcFByb2Nlc2FtaWVudG9UeXBlPj4oQmFzZTogVCkge1xyXG4gICAgcmV0dXJuIGNsYXNzIEFwcERtRW5jdSBleHRlbmRzIEJhc2Uge1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgICAgIHN1cGVyKGFyZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgPSB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgfHwge307XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWEgPSBbXVxyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX2dyb3VwcyA9IFtdXHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLm1ldGFFbmNJbmNsdWlyQ2FzaWxsZXJvc1NhbHRvUkVMID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRpbWVzdGFtcEVzdHJ1Y3R1cmEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyID0ge307XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLmF5dWRhID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldFN1Zmlqb0Zyb21iYXNlVXJsID0gKGJhc2VVcmw6IHN0cmluZykgPT5cclxuICAgICAgICAgICAgYmFzZVVybC5pbmNsdWRlcygndGVzdCcpIHx8IGJhc2VVcmwuaW5jbHVkZXMoJy9wcicpID8gJ190ZXN0JyA6XHJcbiAgICAgICAgICAgICAgICBiYXNlVXJsLmluY2x1ZGVzKCdjYXBhJykgPyAnX2NhcGEnIDogJyc7XHJcblxyXG4gICAgICAgIGdldEFwcE5hbWUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHJldHVybiAoKGF3YWl0IGJlLmluVHJhbnNhY3Rpb24obnVsbCwgKGNsaWVudDogcGcuQ2xpZW50KSA9PlxyXG4gICAgICAgICAgICAgICAgY2xpZW50LnF1ZXJ5KFwic2VsZWN0IG9wZXJhdGl2byBmcm9tIHBhcmFtZXRyb3Mgd2hlcmUgdW5pY29fcmVnaXN0cm9cIikuZmV0Y2hVbmlxdWVWYWx1ZSgpXHJcbiAgICAgICAgICAgICkpLnZhbHVlIGFzIHN0cmluZyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBiYWNrZW5kLXBsdXMgbG8gZGVjbGFyYSBzaW4gcGFyw6FtZXRyb3MgcGVybyBsbyBsbGFtYSBjb24gKGNvbnRleHQsIHVzdWFyaW8pLCBwb3IgZXNvIHNvbiBvcGNpb25hbGVzXHJcbiAgICAgICAgb3ZlcnJpZGUgYXN5bmMgY2FuQ2hhbmdlUGFzcyhyZXFPckNvbnRleHQ/OiBSZXF1ZXN0IHwgQ29udGV4dCwgdXNlclRvQ2hhbmdlUGFzcz86IHN0cmluZyB8IG51bGwpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgdmFyIHVzdWFyaW9Mb2d1ZWFkbyA9IHJlcU9yQ29udGV4dD8udXNlcjtcclxuICAgICAgICAgICAgaWYgKHJlcU9yQ29udGV4dCA9PSBudWxsIHx8IHVzdWFyaW9Mb2d1ZWFkbyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIHJvbCA9IHVzdWFyaW9Mb2d1ZWFkby5yb2w7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBiZS5pbkRiQ2xpZW50KG51bGwsIGFzeW5jIChjbGllbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciBxID0gYmUuZGIucXVvdGVMaXRlcmFsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ICogXHJcbiAgICAgICAgICAgICAgICAgIGZyb20gdXN1YXJpb3MgXHJcbiAgICAgICAgICAgICAgICAgIHdoZXJlIHJvbCBpbiAoc2VsZWN0IHJvbF9zdWJvcmRpbmFkbyBmcm9tIHJvbGVzX3N1Ym9yZGluYWRvcyB3aGVyZSByb2wgPSAke3Eocm9sKX0pYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdmFyIHB1ZWRlID0gISFyZXN1bHQuZmluZCgodXNlcikgPT4gdXNlci51c3VhcmlvID09IHVzZXJUb0NoYW5nZVBhc3MpO1xyXG4gICAgICAgICAgICB2YXIgaXNBZG1pbiA9IGJlLmlzQWRtaW4ocmVxT3JDb250ZXh0KTtcclxuICAgICAgICAgICAgcmV0dXJuIGlzQWRtaW4gfHwgcHVlZGVcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGFzeW5jIGdldFByb2NlZHVyZXMoKSB7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHZhciBwcm9jZWRpbWllbnRvQVJlZW1wbGF6YXIgPSBbXCJjYXNvX2d1YXJkYXJcIiwgXCJjYXNvX3RyYWVyXCJdO1xyXG4gICAgICAgICAgICB2YXIgcGFyZW50UHJvYyA9IGF3YWl0IHN1cGVyLmdldFByb2NlZHVyZXMoKTtcclxuICAgICAgICAgICAgcGFyZW50UHJvYyA9IHBhcmVudFByb2MuZmlsdGVyKChwcm9jZWR1cmU6IGFueSkgPT4gIXByb2NlZGltaWVudG9BUmVlbXBsYXphci5pbmNsdWRlcyhwcm9jZWR1cmUuYWN0aW9uKSk7XHJcbiAgICAgICAgICAgIHBhcmVudFByb2MgPSBwYXJlbnRQcm9jLm1hcChwcm9jRGVmID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9jRGVmLmFjdGlvbiA9PSAndGFibGVfcmVjb3JkX3NhdmUnIHx8IHByb2NEZWYuYWN0aW9uID09ICd0YWJsZV9yZWNvcmRfZGVsZXRlJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2NEZWYuY29yZUZ1bmN0aW9uID0gcmVmcmVzY2FyRXN0cnVjdHVyYUFsTW9kaWZpY2FyVGFibGEoYmUsIHByb2NEZWYuY29yZUZ1bmN0aW9uKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBwcm9jRGVmO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICByZXR1cm4gcGFyZW50UHJvYy5jb25jYXQoUHJvY2VkdXJlc0RtRW5jdSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGFzeW5jIGNoZWNrRGF0YWJhc2VTdHJ1Y3R1cmUoX2NsaWVudDogQ2xpZW50KSB7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGFkZFNjaHLDtmRpbmdlclNlcnZpY2VzKG1haW5BcHA6IHByb2Nlc2FtaWVudG8uRXhwcmVzcywgYmFzZVVybDogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIGxldCBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHN1cGVyLmFkZFNjaHLDtmRpbmdlclNlcnZpY2VzKG1haW5BcHAsIGJhc2VVcmwpO1xyXG4gICAgICAgICAgICAvL3Blcm1pdG8gbGV2YW50YXIgbWlzIGltYWdlbmVzIGVuIGFwbGljYWNpb25lcyBkZXBlbmRpZW50ZXNcclxuICAgICAgICAgICAgYmUuYXBwLnVzZSgnL2ltZycsIGV4cHJlc3Muc3RhdGljKCdub2RlX21vZHVsZXMvZG1lbmN1L2Rpc3QvdW5sb2dnZWQvdW5sb2dnZWQvaW1nJykpXHJcbiAgICAgICAgICAgIG1haW5BcHAudXNlKGZ1bmN0aW9uIChyZXE6IFJlcXVlc3QsIF9yZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEuc2Vzc2lvbiAmJiAhcmVxLnNlc3Npb24uaW5zdGFsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcS5zZXNzaW9uLmluc3RhbGwgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCkucmVwbGFjZSgnLicsICcnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG5leHQoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwgKyAnL3NhbHZhcicsIGZ1bmN0aW9uIChyZXEsIHJlcywgX25leHQpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgc8OpIHF1ZSB2b3kgYSByZWNpYmlyIHVzZXJhZ2VudCBwb3IgbG9zIG1pZGRsZXdhcmVzIGRlIEJhY2tlbmQtcGx1c1xyXG4gICAgICAgICAgICAgICAgdmFyIHsgdXNlcmFnZW50IH0gPSByZXE7XHJcbiAgICAgICAgICAgICAgICB2YXIgaHRtbE1haW4gPSBiZS5tYWluUGFnZSh7IHVzZXJhZ2VudCB9LCBmYWxzZSwgeyBza2lwTWVudTogdHJ1ZSwgb2ZmbGluZUZpbGU6IHRydWUgfSkudG9IdG1sRG9jKCk7XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KGh0bWxNYWluLCAnaHRtbCcpKHJlcSwgcmVzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwgKyAnL2NhbXBvJywgZnVuY3Rpb24gKHJlcSwgcmVzLCBfbmV4dCkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBzw6kgcXVlIHZveSBhIHJlY2liaXIgdXNlcmFnZW50IHBvciBsb3MgbWlkZGxld2FyZXMgZGUgQmFja2VuZC1wbHVzXHJcbiAgICAgICAgICAgICAgICB2YXIgeyB1c2VyYWdlbnQsIHVzZXIgfSA9IHJlcTtcclxuICAgICAgICAgICAgICAgIGlmICh1c2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt7dHlwZTonanMnLCBzcmM6c3RyaW5nfVtdfSAqL1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB3ZWJNYW5pZmVzdFBhdGggPSAnY2FyZ2EtZG0vd2ViLW1hbmlmZXN0LndlYm1hbmlmZXN0JztcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbE1haW4gPSBiZS5tYWluUGFnZSh7IHVzZXJhZ2VudCwgdXNlciB9LCBmYWxzZSwgeyBza2lwTWVudTogdHJ1ZSwgd2ViTWFuaWZlc3RQYXRoLCBvZmZsaW5lRmlsZTogdHJ1ZSB9KS50b0h0bWxEb2MoKTtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KGh0bWxNYWluLCAnaHRtbCcpKHJlcSwgcmVzKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnJlZGlyZWN0KDQwMSwgYmFzZVVybCArICcvbG9naW4jdz1wYXRoJnBhdGg9L2NhbXBvJylcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwgKyAnL2ZhbGxiYWNrLXNpbmNybycsIGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QganNvbkZhbGxiYWNrID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIG9rOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnTm8gc2UgbG9ncsOzIGVzdGFibGVjZXIgbGEgY29uZXhpb24gY29uIGVsIHNlcnZpZG9yLCBjb21wcnVlYmUgc3UgY29uZXhpb24gZGUgaW50ZXJuZXQgKHJlc3B1ZXN0YSBkZXNkZSBmYWxsYmFjayknXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUpzb24oanNvbkZhbGxiYWNrKShyZXEsIHJlcywgbmV4dCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB2YXIgY3JlYXRlU2VydmljZVdvcmtlciA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBzdyA9IGF3YWl0IGZzLnJlYWRGaWxlKCdub2RlX21vZHVsZXMvc2VydmljZS13b3JrZXItYWRtaW4vZGlzdC9zZXJ2aWNlLXdvcmtlci13by1tYW5pZmVzdC5qcycsICd1dGY4Jyk7XHJcbiAgICAgICAgICAgICAgICB2YXIgbWFuaWZlc3QgPSBhd2FpdCBiZS5jcmVhdGVSZXNvdXJjZXNGb3JDYWNoZUpzb24oKTtcclxuICAgICAgICAgICAgICAgIHZhciBzd01hbmlmZXN0ID0gc3dcclxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShcIicvKnZlcnNpb24qLydcIiwgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QudmVyc2lvbikpXHJcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoXCInLyphcHBOYW1lKi8nXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmFwcE5hbWUpKVxyXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFtcXHMqXFwvXFwqdXJsc1RvQ2FjaGVcXCpcXC9cXHMqXFxdLywgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QuY2FjaGUpKVxyXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFtcXHMqXFwvXFwqZmFsbGJhY2tzXFwqXFwvXFxzKlxcXS8sIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmZhbGxiYWNrcyB8fCBbXSkpXHJcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoXCInLypkZWZhdWx0RmFsbGJhY2sqLydcIiwgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QuZGVmYXVsdEZhbGxiYWNrKSk7XHJcbiAgICAgICAgICAgICAgICAvLy5yZXBsYWNlKFwiLyNDQUNIRSQvXCIsIFwiLyhhXFxcXGQrbVxcXFxkK3BcXFxcZCt0XFxcXGQrX2VzdHJ1Y3R1cmEuanMpfChhXFxcXGQrbVxcXFxkK3BcXFxcZCt0XFxcXGQrX2hkci5qc29uKS9cIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc3dNYW5pZmVzdFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwgKyBgL3N3LW1hbmlmZXN0LmpzYCwgYXN5bmMgZnVuY3Rpb24gKHJlcSwgcmVzLCBuZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZVRleHQoYXdhaXQgY3JlYXRlU2VydmljZVdvcmtlcigpLCAnYXBwbGljYXRpb24vamF2YXNjcmlwdCcpKHJlcSwgcmVzKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUVycihyZXEsIHJlcywgbmV4dCkodW5leHBlY3RlZChlcnIpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwgKyBgL2NhcmdhLWRtL3dlYi1tYW5pZmVzdC53ZWJtYW5pZmVzdGAsIGFzeW5jIGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgQVBQX05BTUUgPSBhd2FpdCBiZS5nZXRBcHBOYW1lKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdWZpam8gPSBiZS5nZXRTdWZpam9Gcm9tYmFzZVVybChiYXNlVXJsKTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IGAke0FQUF9OQU1FfSR7c3VmaWpvfSBQcm9ncmVzc2l2ZSBXZWIgQXBwYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzaG9ydF9uYW1lXCI6IGAke0FQUF9OQU1FfSR7c3VmaWpvfSBQV0FgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IGBQcm9ncmVzc2l2ZSBXZWIgQXBwIGZvciAke0FQUF9OQU1FfSR7c3VmaWpvfS5gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImljb25zXCI6IGdldE1hbmlmZXN0SW1hZ2VJY29ucyhBUFBfTkFNRSwgc3VmaWpvKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYmUuZ2V0Q29sb3JzSnNvbihzdWZpam8gYXMgU3VmaWpvc0FtYmllbnRlKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KEpTT04uc3RyaW5naWZ5KGNvbnRlbnQpLCAnYXBwbGljYXRpb24vanNvbicpKHJlcSwgcmVzKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUVycihyZXEsIHJlcywgbmV4dCkodW5leHBlY3RlZChlcnIpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldENvbG9yc0pzb24oX3N1ZmlqbzogU3VmaWpvc0FtYmllbnRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBcInN0YXJ0X3VybFwiOiBcIi4uL2NhbXBvXCIsXHJcbiAgICAgICAgICAgICAgICBcImRpc3BsYXlcIjogXCJzdGFuZGFsb25lXCIsXHJcbiAgICAgICAgICAgICAgICBcInRoZW1lX2NvbG9yXCI6IFwiIzNGNTFCNVwiLFxyXG4gICAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kX2NvbG9yXCI6IFwiIzZkNjBlZFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgb3ZlcnJpZGUgYWRkTG9nZ2VkU2VydmljZXMoKSB7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHN1cGVyLmFkZExvZ2dlZFNlcnZpY2VzKCk7XHJcbiAgICAgICAgICAgIGJlLmFwcC5nZXQoJy9tYW5pZmVzdC5tYW5pZmVzdCcsIGFzeW5jIGZ1bmN0aW9uIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIF9uZXh0OiBOZXh0RnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUoJ3NyYy9jbGllbnQvbWFuaWZlc3QubWFuaWZlc3QnLCB7fSkocmVxLCByZXMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuZ2V0KCcvZmlsZScsIGFzeW5jIGZ1bmN0aW9uIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBiZS5pblRyYW5zYWN0aW9uKHJlcSxcclxuICAgICAgICAgICAgICAgICAgICAoY2xpZW50OiBwZy5DbGllbnQpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC5xdWVyeShcInNlbGVjdCBydXRhIGZyb20gYWRqdW50b3Mgd2hlcmUgaWRfYWRqdW50byA9ICQxXCIsIFtyZXEucXVlcnkuaWRfYWRqdW50b10pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmV0Y2hVbmlxdWVWYWx1ZSgpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdmFyIGZpbGVQYXRoID0gcmVzdWx0LnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRmlsZShmaWxlUGF0aCwge30pKHJlcSwgcmVzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLmdldCgnL2ltYWdlbmVzJywgYXN5bmMgZnVuY3Rpb24gKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRmlsZSgnbG9jYWwtaW1hZ2VzLycgKyByZXEucXVlcnkucGRmLCB7fSkocmVxLCByZXMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuZ2V0KCcvZG93bmxvYWQvYWxsJywgYXN5bmMgZnVuY3Rpb24gKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcS51c2VyID09IG51bGwgfHwgcmVxLnVzZXIucm9sICE9ICdhZG1pbicpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbm8gZXN0w6EgYXV0b3JpemFkbyBhIGJhamFyc2UgdG9kbycsIHJlcS51c2VyKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgemlwID0gbmV3IHlhemwuWmlwRmlsZSgpO1xyXG4gICAgICAgICAgICAgICAgemlwLm91dHB1dFN0cmVhbS5waXBlKHJlcyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgYmFzZSA9ICdsb2NhbC1hdHRhY2htZW50cydcclxuICAgICAgICAgICAgICAgIGxldCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIoYmFzZSk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChmaWxlcy5tYXAoYXN5bmMgZnVuY3Rpb24gKGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZmlsZVBhdGggPSBiYXNlICsgJy8nICsgZmlsZU5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXQgPSBhd2FpdCBmcy5zdGF0KGZpbGVQYXRoKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdC5pc0ZpbGUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB6aXAuYWRkRmlsZShmaWxlUGF0aCwgZmlsZU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIHppcC5lbmQoKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgb3ZlcnJpZGUgYXN5bmMgcG9zdENvbmZpZygpIHtcclxuICAgICAgICAgICAgYXdhaXQgc3VwZXIucG9zdENvbmZpZygpO1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICBiZS5jYWNoZXMubWV0YUVuY0luY2x1aXJDYXNpbGxlcm9zU2FsdG9SRUwgPSBmYWxzZTtcclxuICAgICAgICAgICAgYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihudWxsLCBhc3luYyBmdW5jdGlvbiAoY2xpZW50OiBwZy5DbGllbnQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBxUGVybWlzb3MgPSBgXHJcbiAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHIucm9sLGpzb25iX2J1aWxkX29iamVjdCgnc3VwZXJ1c2VyJyxyLnN1cGVydXNlciwncHVlZGUnLChcclxuICAgICAgICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2cocnAucGVybWlzbywoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHJwYS5hY2Npb24scnBhLmhhYmlsaXRhZG8pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSByb2xlc19wZXJtaXNvcyBycGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBycGEucm9sPXJwLnJvbCBBTkQgcnBhLnBlcm1pc289cnAucGVybWlzb1xyXG4gICAgICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICAgICAgICAgRlJPTSByb2xlc19wZXJtaXNvcyBycFxyXG4gICAgICAgICAgICAgICAgICAgIFdIRVJFIHJwLnJvbD1yLnJvbCAjY29uZEhhYmlsaXRhZG8jXHJcbiAgICAgICAgICAgICAgKSkpXHJcbiAgICAgICAgICAgICAgRlJPTSByb2xlcyByXHJcbiAgICAgICAgICAgIGA7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IFtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkocVBlcm1pc29zLnJlcGxhY2UoJyNjb25kSGFiaWxpdGFkbyMnLCAnJykpLmZldGNoVW5pcXVlVmFsdWUoKSxcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkocVBlcm1pc29zLnJlcGxhY2UoJyNjb25kSGFiaWxpdGFkbyMnLCBgIGFuZCBycC4ke3BnLnF1b3RlSWRlbnQoJ2hhYmlsaXRhZG8nKX1gKSkuZmV0Y2hVbmlxdWVWYWx1ZSgpLFxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2cocGVybWlzbywoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKGFjY2lvbix0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcGVybWlzb3MgcGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBwYS5wZXJtaXNvPXAucGVybWlzb1xyXG4gICAgICAgICAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgICAgICAgICAgIEZST00gcGVybWlzb3MgcFxyXG4gICAgICAgICAgICAgICAgYCkuZmV0Y2hVbmlxdWVWYWx1ZSgpLFxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2cocGVybWlzbywoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKGFjY2lvbixmYWxzZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcGEucGVybWlzbz1wLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBcclxuICAgICAgICAgICAgICAgIGApLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgIGJlLmNhY2hlcy5wZXJtaXNvc1JvbCA9IHJlc3VsdHNbMF0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICBiZS5jYWNoZXMucGVybWlzb3NSb2xTb2xvVHJ1ZSA9IHJlc3VsdHNbMV0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICBiZS5jYWNoZXMucGVybWlzb3NTdXBlcnVzZXIgPSByZXN1bHRzWzJdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zUGFyYU5hZGllID0gcmVzdWx0c1szXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5kaXIoYmUuY2FjaGVzLnBlcm1pc29zUm9sU29sb1RydWUse2RlcHRoOjl9KTtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5kaXIoYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLmNhY2hlcy5wZXJtaXNvc1BhcmFOYWRpZSx7ZGVwdGg6OX0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYmUuY2FjaGVzLmF5dWRhID0gY2FyZ2FyQXl1ZGEoYmUuZ2V0QXl1ZGFGdWVudGVzKCkpO1xyXG4gICAgICAgICAgICBiZS5wcm9ibGVtYXNEZUF5dWRhKCkuZm9yRWFjaChwcm9ibGVtYSA9PiBjb25zb2xlLmVycm9yKHByb2JsZW1hKSk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaENhY2hlcygpO1xyXG4gICAgICAgICAgICBhd2FpdCByZWdpc3RyYXJDcm9uSm9iUGFzYXJBUHJvaWUoYmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjYXJwZXRhcyBjb24gbGEgYXl1ZGEgcGFyYSB1c3VhcmlvcywgZW4gb3JkZW46IHVuIHRlbWEgZGUgdW5hIGZ1ZW50ZSBwb3N0ZXJpb3IgcmVlbXBsYXphIHUgb2N1bHRhXHJcbiAgICAgICAgLy8gYWwgZGUgdW5hIGFudGVyaW9yIGNvbiBlbCBtaXNtbyBpZC4gTGFzIGFwcHMgZmluYWxlcyBhZ3JlZ2FuIGxhIHN1eWEgKHZlciBkb2NzL2F5dWRhLW9ubGluZS5tZClcclxuICAgICAgICBnZXRBeXVkYUZ1ZW50ZXMoKTogQXl1ZGFGdWVudGVbXSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbeyBvcmlnZW46ICdkbWVuY3UnLCBjYXJwZXRhOiBwYXRoLmpvaW4oY2FycGV0YURlbFBhcXVldGUoX19kaXJuYW1lKSwgJ2F5dWRhJykgfV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRlbWFzIGRlIGF5dWRhIGRlbCBtb2RvIGFjdHVhbCBjb24gcGVybWlzb3MsIHJvbGVzIHUgb3BjaW9uZXMgZGUgbWVuw7ogcXVlIG5vIGV4aXN0ZW5cclxuICAgICAgICBwcm9ibGVtYXNEZUF5dWRhKCk6IHN0cmluZ1tdIHtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgdmFyIG1vZG8gPSBnZXRNb2RvQnlQb2xpY3koYmUpO1xyXG4gICAgICAgICAgICB2YXIgcnV0YXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGJlLmNhY2hlcy5wZXJtaXNvc1JvbCkuZm9yRWFjaChyb2wgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFyIHVzZXIgPSB7IHJvbCwgaWRwZXI6ICcnLCB1c3VhcmlvOiAnJyB9O1xyXG4gICAgICAgICAgICAgICAgdmFyIGNvbnRleHQ6IENvbnRleHQgPSB7IC4uLnBlcm1pc29zU2VndW5Vc3VhcmlvKGJlLmNhY2hlcywgdXNlciksIGJlLCB1c2VyLCBzZXNzaW9uOiB7fSwgdXNlcm5hbWU6ICcnLCBtYWNoaW5lSWQ6ICcnLCBuYXZpZ2F0b3I6ICcnIH07XHJcbiAgICAgICAgICAgICAgICBydXRhcyA9IHJ1dGFzLmNvbmNhdChydXRhc0RlbE1lbnUoYmUuZ2V0TWVudShjb250ZXh0KS5tZW51KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvYmxlbWFzRGVBeXVkYShcclxuICAgICAgICAgICAgICAgIGJlLmNhY2hlcy5heXVkYS5maWx0ZXIodGVtYSA9PiB0ZW1hLm1vZG8gPT0gbnVsbCB8fCB0ZW1hLm1vZG8gPT0gbW9kbyksXHJcbiAgICAgICAgICAgICAgICBiZS5jYWNoZXMucGVybWlzb3NTdXBlcnVzZXIsXHJcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhiZS5jYWNoZXMucGVybWlzb3NSb2wpLFxyXG4gICAgICAgICAgICAgICAgcnV0YXNcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3ZlcnJpZGUgY29uZmlnU3RhdGljQ29uZmlnKCkge1xyXG4gICAgICAgICAgICBzdXBlci5jb25maWdTdGF0aWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0aWNDb25maWcoZGVmQ29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3ZlcnJpZGUgY2xpZW50SW5jbHVkZXMocmVxOiBSZXF1ZXN0LCBvcHRzOiBPcHRzQ2xpZW50UGFnZSk6IENsaWVudE1vZHVsZURlZmluaXRpb25bXSB7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHZhciB1bmxvZ2dlZCA9IG9wdHMgJiYgb3B0cy5vZmZsaW5lRmlsZTtcclxuICAgICAgICAgICAgdmFyIG1lbnVlZFJlc291cmNlczogQ2xpZW50TW9kdWxlRGVmaW5pdGlvbltdID0gdW5sb2dnZWQgPyBbXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICd1bmxvZ2dlZC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgIF0gOiBbXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi9jbGllbnQvY2xpZW50JywgZmlsZTogJ2NsaWVudC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMuZXh0cmFGaWxlcykge1xyXG4gICAgICAgICAgICAgICAgbWVudWVkUmVzb3VyY2VzID0gbWVudWVkUmVzb3VyY2VzLmNvbmNhdChvcHRzLmV4dHJhRmlsZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBleHRlcm5hbFJlc291cmNlczogQ2xpZW50TW9kdWxlRGVmaW5pdGlvbltdID0gW1xyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWFjdCcsIG1vZFBhdGg6ICd1bWQnLCBmaWxlOiAncmVhY3QucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlYWN0LWRvbScsIG1vZFBhdGg6ICd1bWQnLCBmaWxlOiAncmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG4gICAgICAgICAgICAgICAgLy97IHR5cGU6ICdqcycsIG1vZHVsZTogJ0BtYXRlcmlhbC11aS9jb3JlJywgbW9kUGF0aDogJ3VtZCcsIGZpbGVEZXZlbG9wbWVudDonbWF0ZXJpYWwtdWkuZGV2ZWxvcG1lbnQuanMnLCBmaWxlOidtYXRlcmlhbC11aS5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnQG11aS9tYXRlcmlhbCcsIG1vZFBhdGg6ICcuLi91bWQnLCBmaWxlOiAnbWF0ZXJpYWwtdWkucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWR1eCcsIG1vZFBhdGg6ICcuLi9kaXN0JywgZmlsZTogJ3JlZHV4Lm1pbi5qcycgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVhY3QtcmVkdXgnLCBtb2RQYXRoOiAnLi4vZGlzdCcsIGZpbGU6ICdyZWFjdC1yZWR1eC5taW4uanMnIH0sXHJcbiAgICAgICAgICAgICAgICAvL3sgdHlwZTogJ2pzJywgbW9kdWxlOiAncXJjb2RlJywgbW9kUGF0aDogJy4uL2J1aWxkJywgZmlsZTogJ3FyY29kZS5qcyd9LFxyXG4gICAgICAgICAgICAgICAgLi4uc3VwZXIuY2xpZW50SW5jbHVkZXMocmVxLCBvcHRzKS5maWx0ZXIobSA9PiBtLmZpbGUgIT0gJ2Zvcm11bGFyaW9zLmNzcycpXHJcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihtID0+ICF1bmxvZ2dlZCB8fCB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIG0uZmlsZSAhPSAndmFyLWNhbC5qcydcclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgbS5maWxlICE9ICd2YXItY2FsLmpzJ1xyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3NlcnZpY2Utd29ya2VyLWFkbWluJywgZmlsZTogJ3NlcnZpY2Utd29ya2VyLWFkbWluLmpzJyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWR1eC10eXBlZC1yZWR1Y2VyJywgbW9kUGF0aDogJy4uL2Rpc3QnLCBmaWxlOiAncmVkdXgtdHlwZWQtcmVkdWNlci5qcycgfVxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB2YXIgcmVzb3VyY2VzOiBDbGllbnRNb2R1bGVEZWZpbml0aW9uW10gPSBbXHJcbiAgICAgICAgICAgICAgICAuLi5leHRlcm5hbFJlc291cmNlcyxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2FkYXB0LmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3RpcG9zLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2hlbHBlcnMtZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdjYWxjdWxvcy1lbmN1ZXN0YS5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZW5kZXItY29uZmlnLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3JlbmRlci1pbml0LmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3JlZHV4LWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnaGVscGVycy1jYXNpbGxlcm9zLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2J5cGFzcy1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3JlbmRlci1nZW5lcmFsLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3JlbmRlci1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2FicmlyLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnY3NzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkL2NzcycsIGZpbGU6ICdmb3JtdWxhcmlvLXJlYWN0LmNzcycsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdjc3MnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQvY3NzJywgZmlsZTogJ2Jvb3RzdHJhcC5taW4uY3NzJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ3R0ZicsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZC9jc3MnLCBmaWxlOiAnUm9ib3RvLVJlZ3VsYXIudHRmJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgICAgIC4uLm1lbnVlZFJlc291cmNlcyxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2NzcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi9jbGllbnQvY2xpZW50L2NzcycsIGZpbGU6ICdtZW51LmNzcycsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlc1xyXG4gICAgICAgICAgICAvLyAubWFwKG09Pih7Li4ubSwgZmlsZTptLmZpbGVEZXZlbG9wbWVudHx8bS5maWxlfSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBhc3luYyByZWZyZXNoQ2FjaGVzKGNsaWVudDogQ2xpZW50ZURiIHwgbnVsbCA9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50ID0gdGhpcy5jYWNoZXMudGFibGVDb250ZW50IHx8IHt9O1xyXG5cclxuICAgICAgICAgICAgLy8gRnVuY2nDs24gYXV4aWxpYXIgcGFyYSBlamVjdXRhciBsYXMgcXVlcmllcyBjb24gZWwgY2xpZW50ZSBwcm92aXN0byBvIHVubyBudWV2b1xyXG4gICAgICAgICAgICBjb25zdCBleGVjdXRlUXVlcmllcyA9IGFzeW5jIChkYkNsaWVudDpDbGllbnRlRGIpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWEgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYHNlbGVjdCAqIGZyb20gbm9fcmVhIG9yZGVyIGJ5IG9wZXJhdGl2bywgb3JkZW4sIG5vX3JlYWApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQucmVhID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBzZWxlY3QgKiBmcm9tIHJlYSBvcmRlciBieSBvcGVyYXRpdm8sIG9yZGVuLCByZWFgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfZ3JvdXBzID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgc2VsZWN0IGdydXBvLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhIHIgZ3JvdXAgYnkgZ3J1cG8gb3JkZXIgYnkgMVxyXG4gICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHMwID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgc2VsZWN0IGdydXBvMCBhcyBncnVwbywganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYSByIGdyb3VwIGJ5IGdydXBvMCBvcmRlciBieSAxXHJcbiAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX3N1cCA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgc2VsZWN0ICogZnJvbSBub19yZWFfc3VwIG9yZGVyIGJ5IG9wZXJhdGl2bywgb3JkZW4sIG5vX3JlYV9zdXBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50LnJlYV9zdXAgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYHNlbGVjdCAqIGZyb20gcmVhX3N1cCBvcmRlciBieSBvcGVyYXRpdm8sIG9yZGVuLCByZWFfc3VwYCkuZmV0Y2hBbGwoKSkucm93cztcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX3N1cF9ncm91cHMgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgZ3J1cG9fc3VwLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhX3N1cCByIGdyb3VwIGJ5IGdydXBvX3N1cCBvcmRlciBieSAxXHJcbiAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX3N1cF9ncm91cHMwID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgc2VsZWN0IGdydXBvMF9zdXAgYXMgZ3J1cG8sIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWFfc3VwIHIgZ3JvdXAgYnkgZ3J1cG8wX3N1cCBvcmRlciBieSAxXHJcbiAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgY29uX3JlYV9ob2dhciwgb3BlcmF0aXZvLCBjb25maWdfc29ydGVvIGZyb20gb3BlcmF0aXZvcyBqb2luIHBhcmFtZXRyb3MgdXNpbmcgKG9wZXJhdGl2bykgd2hlcmUgdW5pY29fcmVnaXN0cm9cclxuICAgICAgICBgKS5mZXRjaFVuaXF1ZVJvdygpKS5yb3c7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBpZiAoY2xpZW50KSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBleGVjdXRlUXVlcmllcyhjbGllbnQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5pbkRiQ2xpZW50KG51bGwsIGFzeW5jIChkYkNsaWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWN1dGVRdWVyaWVzKGRiQ2xpZW50KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjYWNoZXMnLCB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQpXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjYWNoZXMgb2snKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9zcWxOb3JlYUNhc2UoY2FtcG9OZWNlc2FyaW86c3RyaW5nKXtcclxuICAgICAgICAvLyAgICB2YXIgYmU9dGhpcztcclxuICAgICAgICAvLyAgICByZXR1cm4gYENBU0UgJHtiZS5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYS5tYXAoeD0+XHJcbiAgICAgICAgLy8gICAgICAgIGAgV0hFTiBub3JlYSAgPSAke2JlLmRiLnF1b3RlTGl0ZXJhbCh4Lm5vX3JlYSl9OjppbnRlZ2VyIFRIRU4gJHtiZS5kYi5xdW90ZUxpdGVyYWwoeFtjYW1wb05lY2VzYXJpb10pfWBcclxuICAgICAgICAvLyAgICApLmpvaW4oJycpfSBXSEVOIFRSVUUgVEhFTiBOVUxMIEVORGBcclxuICAgICAgICAvL30gICAgXHJcbiAgICAgICAgb3ZlcnJpZGUgZ2V0Q29udGV4dChyZXE6IFJlcXVlc3QpOiBDb250ZXh0IHtcclxuICAgICAgICAgICAgdmFyIGZhdGhlckNvbnRleHQgPSBzdXBlci5nZXRDb250ZXh0KHJlcSk7XHJcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnBlcm1pc29zU2VndW5Vc3VhcmlvKHRoaXMuY2FjaGVzLCBmYXRoZXJDb250ZXh0LnVzZXIpLCAuLi5mYXRoZXJDb250ZXh0IH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGdldENvbnRleHRGb3JEdW1wKCk6IENvbnRleHQge1xyXG4gICAgICAgICAgICB2YXIgZmF0aGVyQ29udGV4dCA9IHN1cGVyLmdldENvbnRleHRGb3JEdW1wKCk7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHN1cGVydXNlcjogdHJ1ZSwgcHVlZGU6IHRoaXMuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyLCAuLi5mYXRoZXJDb250ZXh0IH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGFzeW5jIGdldENsaWVudFNldHVwRm9yU2VuZFRvRnJvbnRFbmQocmVxOiBSZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi4oYXdhaXQgc3VwZXIuZ2V0Q2xpZW50U2V0dXBGb3JTZW5kVG9Gcm9udEVuZChyZXEpKSxcclxuICAgICAgICAgICAgICAgIGlkcGVyOiByZXEudXNlcj8uaWRwZXJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBhc3luYyBjcmVhdGVSZXNvdXJjZXNGb3JDYWNoZUpzb24oKSB7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIGNvbnN0IEFQUF9OQU1FID0gYXdhaXQgYmUuZ2V0QXBwTmFtZSgpXHJcbiAgICAgICAgICAgIGNvbnN0IHN1ZmlqbyA9IGJlLmdldFN1Zmlqb0Zyb21iYXNlVXJsKGJlLmNvbmZpZy5zZXJ2ZXJbJ2Jhc2UtdXJsJ10pO1xyXG5cclxuICAgICAgICAgICAgdmFyIGpzb25SZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiBBUFBfRE1fVkVSU0lPTixcclxuICAgICAgICAgICAgICAgIGFwcE5hbWU6ICdkbWVuY3UnLFxyXG4gICAgICAgICAgICAgICAgY2FjaGU6IFtcclxuICAgICAgICAgICAgICAgICAgICBcImNhbXBvXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJvZmZsaW5lXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJmYWxsYmFjay1zaW5jcm9cIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL21hdGVyaWFsLXVpLnByb2R1Y3Rpb24ubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvcmVkdXgubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvcmVhY3QtcmVkdXgubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgLy9cImxpYi9xcmNvZGUuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9yZXF1aXJlLWJyby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2Nhc3QtZXJyb3IuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9saWtlLWFyLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvYmVzdC1nbG9iYWxzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvanNvbjRhbGwuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9qcy10by1odG1sLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvcmVkdXgtdHlwZWQtcmVkdWNlci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L2FkYXB0LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvdW5sb2dnZWQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9qcy15YW1sLnVtZC5taW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi94bHN4LW5vdy51bWQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi94bHN4LW5vdy1icm93c2VyLnVtZC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2xhenktc29tZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3NxbC10b29scy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZGlhbG9nLXByb21pc2UvZGlhbG9nLXByb21pc2UuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcIm1vbWVudC9taW4vbW9tZW50LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJwaWthZGF5L3Bpa2FkYXkuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9wb2x5ZmlsbHMtYnJvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvYmlnLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvdHlwZS1zdG9yZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3R5cGVkLWNvbnRyb2xzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvYWpheC1iZXN0LXByb21pc2UuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcIm15LWFqYXguanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcIm15LXN0YXJ0LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktbG9jYWxkYi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LXdlYnNxbGRiLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktbG9jYWxkYi5qcy5tYXBcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS13ZWJzcWxkYi5qcy5tYXBcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS10aGluZ3MuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS10YWJsZXMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS1pbmZvcm0tbmV0LXN0YXR1cy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LW1lbnUuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS1za2luLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvY2xpZW50ZS1lbi1jYXN0ZWxsYW5vLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvc2VydmljZS13b3JrZXItYWRtaW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9yZWR1eC10eXBlZC1yZWR1Y2VyLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9vcGVyYXRpdm9zLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy92YXJjYWwuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL2Zvcm0tc3RydWN0dXJlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9tZXRhLWVuYy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvZGF0b3MtZXh0LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9jb25zaXN0ZW5jaWFzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9wcm9jZXNhbWllbnRvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvdGlwb3MuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9yZW5kZXItY29uZmlnLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvcmVuZGVyLWluaXQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9oZWxwZXJzLWNhc2lsbGVyb3MuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9oZWxwZXJzLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9jYWxjdWxvcy1lbmN1ZXN0YS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L2J5cGFzcy1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvcmVkdXgtZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L3JlbmRlci1nZW5lcmFsLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvcmVuZGVyLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9hYnJpci1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9yb3ctdmFsaWRhdG9yLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjbGllbnQvbWVudS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW1nL2xvZ28ucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgLy9cImltZy9sb2dvLWRtLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW1nL2xvZ28tMTI4LnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW1nL21haW4tbG9hZGluZy5naWZcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9ib3JyYXItdmFsb3IucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJpbWcvZm9uZG8tc2FsdGVhZG8tZXJyb3IucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJpbWcvZm9uZG8tc2FsdGVhZG8ucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJpbWcvYmFja2dyb3VuZC10ZXN0LnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vXCJjbGllbnQtc2V0dXBcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNzcy9ib290c3RyYXAubWluLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL2Zvcm11bGFyaW8tcmVhY3QuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJwaWthZGF5L3Bpa2FkYXkuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkaWFsb2ctcHJvbWlzZS9kaWFsb2ctcHJvbWlzZS5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcInJlbC1lbmMvZXN0YWRvcy5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNzcy9teS10YWJsZXMuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvbXktbWVudS5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNzcy9teS10aGluZ3MuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvbWVudS5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcInJlbC1lbmMvbXktdGhpbmdzMi5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNzcy9mb3JtdWxhcmlvLXJlYWN0LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL1JvYm90by1SZWd1bGFyLnR0ZlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2FyZ2EtZG0vd2ViLW1hbmlmZXN0LndlYm1hbmlmZXN0XCIsXHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgZmFsbGJhY2tzOltcclxuICAgICAgICAgICAgICAgICAgICB7cGF0aDogJ2RtX3NpbmNyb25pemFyJywgZmFsbGJhY2s6J2ZhbGxiYWNrLXNpbmNybyd9XHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdEZhbGxiYWNrOiBcIm9mZmxpbmVcIlxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBqc29uUmVzdWx0LmNhY2hlID0ganNvblJlc3VsdC5jYWNoZS5jb25jYXQoZ2V0TWFuaWZlc3RJbWFnZUljb25zKEFQUF9OQU1FLCBzdWZpam8pLm1hcCgoZWxlbSkgPT4gYG1lbnUvJHtlbGVtLnNyY31gKSk7XHJcblxyXG4gICAgICAgICAgICB2YXIgc2tpbiA9IGJlLmNvbmZpZ1snY2xpZW50LXNldHVwJ10uc2tpbjtcclxuICAgICAgICAgICAgaWYgKHNraW4gJiYgYmUuYWN0aXZlU2tpbkZpbGVzKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2tpblVybCA9IHNraW4gKyAnLyc7XHJcbiAgICAgICAgICAgICAgICBqc29uUmVzdWx0LmNhY2hlLnB1c2goYCR7c2tpbn0vaW1nL2JhY2tncm91bmQtdGVzdC5wbmdgKTtcclxuICAgICAgICAgICAgICAgIC8vIENvbnZlcnRpbW9zIGVsIFNldCBhIEFycmF5IHkgbWFwZWFtb3MgbGFzIHJ1dGFzXHJcbiAgICAgICAgICAgICAgICB2YXIgc2tpblJlc291cmNlcyA9IEFycmF5LmZyb20oYmUuYWN0aXZlU2tpbkZpbGVzKS5tYXAoZnVuY3Rpb24gKHBhdGhSZWxhdGl2bykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFNpIGVzIHVuIC5zdHlsLCBsbyBwZWRpbW9zIGNvbW8gLmNzcyBwb3JxdWUgZWwgU2VydmljZSBXb3JrZXIgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZGViZSBjYWNoZWFyIGVsIHJlY3Vyc28gZmluYWwgcXVlIGVsIG5hdmVnYWRvciBzb2xpY2l0YS5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2tpblVybCArIHBhdGhSZWxhdGl2by5yZXBsYWNlKC9cXC5zdHlsJC8sICcuY3NzJyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBqc29uUmVzdWx0LmNhY2hlID0ganNvblJlc3VsdC5jYWNoZS5jb25jYXQoc2tpblJlc291cmNlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGpzb25SZXN1bHRcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0TWVudUNvbnRyb2xlcyhfY29udGV4dDogQ29udGV4dCk6IE1lbnVJbmZvQmFzZVtdIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ2VuY3Vlc3Rhc19wcm9jZXNhbWllbnRvX3Bhc2FyJywgbGFiZWw6ICdwYXNhciBlbmN1ZXN0YXMgYSBwcm9jZXNhbWllbnRvJyB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3Jlc3VtZW4nLCB0YWJsZTogJ2NvbnRyb2xfcmVzdW1lbicsIHNlbGVjdGVkQnlEZWZhdWx0OiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZG9taW5pbycsIHRhYmxlOiAnY29udHJvbF9jYW1wb19kb21pbmlvJyB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3pvbmEnLCB0YWJsZTogJ2NvbnRyb2xfY2FtcG9fem9uYScgfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdjb211bmEnLCB0YWJsZTogJ2NvbnRyb2xfY2FtcG9fY29tdW5hJyB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ8OhcmVhJywgdGFibGU6ICdjb250cm9sX2NhbXBvX2FyZWEnIH0sXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGdldE1lbnVWYXJpb3MoY29udGV4dDogQ29udGV4dCk6IE1lbnVJbmZvQmFzZSB7XHJcbiAgICAgICAgICAgIGxldCBzdWJtZW51VmFyaW9zOiBNZW51SW5mb0Jhc2VbXSA9IFt7IG1lbnVUeXBlOiAnYWJyaXJfZW5jdWVzdGEnLCBuYW1lOiAnYWJyaXJfZW5jdWVzdGEnIH1dXHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uZWRpdGFyKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2hvamFfcnV0YScsIHRhYmxlOiAnZ3JpbGxhX2hvamFfcnV0YScsIGxhYmVsOiAnaG9qYSBkZSBydXRhJyB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdlbmN1ZXN0YWRvcl9kbXNfbW9zdHJhcicsIGxhYmVsOiAnZm9yemFyIGRlc2NhcmdhIGVuY3Vlc3RhcyBETScgfSk7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnZW5jdWVzdGFfYmxhbnF1ZWFyX3ByZXZpc3VhbGl6YXInLCBsYWJlbDogJ2JsYW5xdWVhciBlbmN1ZXN0YScgfSk7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnZW5jdWVzdGFfYm9ycmFyX3ByZXZpc3VhbGl6YXInLCBsYWJlbDogJ3F1aXRhciBlbmN1ZXN0YSBkZSBsYSBtdWVzdHJhJyB9KTtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdlbmN1ZXN0YXNfY2FwYWNpdGFjaW9uX2JvcnJhcicsIGxhYmVsOiAncXVpdGFyIGVuY3Vlc3RhcyBkZSBjYXBhIGRlIGxhIG11ZXN0cmEnIH0pO1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ29wZXJhdGl2b19taWdyYXInLCBsYWJlbDogJ21pZ3JhciBvcGVyYXRpdm8nIH0pO1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ2VuY3Vlc3RhX2NhcGFfYV9wcm9kX3Bhc2FyJywgbGFiZWw6ICdwYXNhciBlbmN1ZXN0YXMgZGUgY2FwYSBhIHByb2QnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnaW50ZXJjYW1iaWFyX2VuY3Vlc3RhcycgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHsgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ3ZhcmlvcycsIG1lbnVDb250ZW50OiBzdWJtZW51VmFyaW9zIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0TWVudUFzaWduYWNpb24oY29udGV4dDogQ29udGV4dCk6IE1lbnVJbmZvQmFzZSB7XHJcbiAgICAgICAgICAgIGxldCBmaWx0cm9SZWNlcGNpb25pc3RhID0gY29udGV4dC51c2VyLnJvbCA9PSAncmVjZXBjaW9uaXN0YScgPyB7IHJlY2VwY2lvbmlzdGE6IGNvbnRleHQudXNlci5pZHBlciB9IDoge307XHJcbiAgICAgICAgICAgIGxldCBzdWJtZW51QXNpZ25hY2lvbjogTWVudUluZm9CYXNlW10gPSBbXTtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcikge1xyXG4gICAgICAgICAgICAgICAgc3VibWVudUFzaWduYWNpb24ucHVzaCh7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZ2VuZXJhbCcsIHRhYmxlOiAnYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsJyB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdWJtZW51QXNpZ25hY2lvbi5wdXNoKFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2VuY3Vlc3RhZG9yJywgdGFibGU6ICd0X2VuY3VfYXJlYXMnLCBmZjogeyB0YXJlYTogJ2VuY3UnLCAuLi5maWx0cm9SZWNlcGNpb25pc3RhIH0gfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdpbmdyZXNhZG9yJywgdGFibGU6ICd0X2luZ3JfYXJlYXMnLCBmZjogeyB0YXJlYTogJ2luZ3InLCAuLi5maWx0cm9SZWNlcGNpb25pc3RhIH0gfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyZWN1cGVyYWRvcicsIHRhYmxlOiAndGFyZWFzX3RlbV9hc2lnbmFjaW9uX3JlY3UnLCBmZjogeyB0YXJlYV9hY3R1YWw6ICdyZWN1JywgdGFyZWE6ICdyZWN1JywgLi4uZmlsdHJvUmVjZXBjaW9uaXN0YSB9IH0sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVBc2lnbmFjaW9uLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3N1cGVydmlzb3InLCB0YWJsZTogJ3RhcmVhc190ZW1fYXNpZ25hY2lvbl9zdXBlJywgZmY6IHsgdGFyZWFfYWN0dWFsOiAnc3VwZScsIHRhcmVhOiAnc3VwZScsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ2FzaWduYWNpb24nLCBsYWJlbDogJ2FzaWduYWNpw7NuJywgbWVudUNvbnRlbnQ6IHN1Ym1lbnVBc2lnbmFjaW9uIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0TWVudVJlY2VwY2lvbihjb250ZXh0OiBDb250ZXh0KTogTWVudUluZm9CYXNlIHtcclxuICAgICAgICAgICAgbGV0IHN1Ym1lbnVSZWNlcGNpb246IE1lbnVJbmZvQmFzZVtdID0gW11cclxuICAgICAgICAgICAgc3VibWVudVJlY2VwY2lvbi5wdXNoKFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2VuY3Vlc3RhZG9yJywgdGFibGU6ICdlbmN1ZXN0YWRvcmVzX2FzaWduYWRvcycgfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyZWN1cGVyYWRvcicsIHRhYmxlOiAncmVjdXBlcmFkb3Jlc19hc2lnbmFkb3MnIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnaW5ncmVzYWRvcicsIHRhYmxlOiAnaW5ncmVzYWRvcmVzX2FzaWduYWRvcycgfSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcikge1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVJlY2VwY2lvbi5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdzdXBlcnZpc29yJywgdGFibGU6ICdzdXBlcnZpc29yZXNfYXNpZ25hZG9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdtaXNfc3VwZXJ2aXNvcmVzJywgdGFibGU6ICdtaXNfc3VwZXJ2aXNvcmVzX2FzaWduYWRvcycgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4geyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAncmVjZXBjaW9uJywgbGFiZWw6ICdyZWNlcGNpw7NuJywgbWVudUNvbnRlbnQ6IHN1Ym1lbnVSZWNlcGNpb24gfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0TWVudUNhcnRvKGNvbnRleHQ6IENvbnRleHQpOiBNZW51SW5mb0Jhc2UgfCBudWxsIHtcclxuICAgICAgICAgICAgbGV0IHN1Ym1lbnVDYXJ0bzogTWVudUluZm9CYXNlW10gPSBbXVxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51Q2FydG8ucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnY29tdW5hcycsIHRhYmxlOiAnY29tdW5hcycgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnYmFycmlvcycsIHRhYmxlOiAnYmFycmlvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZnJhY2Npb25lcycsIHRhYmxlOiAnZnJhY2Npb25lcycgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmFkaW9zJywgdGFibGU6ICdyYWRpb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ21hbnphbmFzJywgdGFibGU6ICdtYW56YW5hcycgfSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdjYXJ0bycsIGxhYmVsOiAnY2FydG9ncmFmw61hJywgbWVudUNvbnRlbnQ6IHN1Ym1lbnVDYXJ0byB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGxcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGdldE1lbnVDb25maWd1cmFyKGNvbnRleHQ6IENvbnRleHQpOiBNZW51SW5mb0Jhc2VbXSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1lbnVDb25maWd1cmFyOiBNZW51SW5mb0Jhc2VbXSA9IFtdO1xyXG5cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhciB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJtZW51TXVlc3RyYTogTWVudUluZm9CYXNlW10gPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RlbScsIGxhYmVsOiAnVEVNJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0ZW1fZWRpY2lvbicsIGxhYmVsOiAnZWRpY2nDs24gVEVNJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ211ZXN0cmFfZ2VuZXJhcicsIGxhYmVsOiAnZ2VuZXJhciBtdWVzdHJhJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdzZW1hbmFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdhcmVhX2VuY19wcm94aW1hcycgfSxcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICBtZW51Q29uZmlndXJhci5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ21lbnUnLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdtdWVzdHJhJyxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ211ZXN0cmEnLFxyXG4gICAgICAgICAgICAgICAgICAgIG1lbnVDb250ZW50OiBzdWJtZW51TXVlc3RyYVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYXNpbGxlcm9zX3RleHRvPy5lZGl0YXIpIHtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnbWVudScsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ21ldGFkYXRvcycsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudUNvbnRlbnQ6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ29wZXJhdGl2b3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ3JlYS9ub3JlYScsIG1lbnVDb250ZW50OltcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyZWEnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnbm9fcmVhJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JlYV9zdXAnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnbm9fcmVhX3N1cCcgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdmb3JtdWxhcmlvcycsIHRhYmxlOiAnY2FzaWxsZXJvc19wcmluY2lwYWxlcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3BsYW5vJywgdGFibGU6ICdjYXNpbGxlcm9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndmFyaWFibGVzJywgdGFibGU6ICdjYXNpbGxlcm9zJywgZmM6IFt7IGNvbHVtbjogJ3Zhcl9uYW1lJywgb3BlcmF0b3I6ICchPVxcdTIyMDUnLCB2YWx1ZTogbnVsbCB9XSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGlwb2MnLCBsYWJlbDogJ3RpcG9zIGRlIGNlbGRhcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RpcG9jX3RpcG9jJywgbGFiZWw6ICdpbmNsdXNpb25lcyBkZSBjZWxkYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnN1cGVydXNlcikge1xyXG4gICAgICAgICAgICAgICAgbWVudUNvbmZpZ3VyYXIucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnbWVudScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlc3RhZG9zX2FjY2lvbmVzX3RhcmVhcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXN0YWRvcy9hY2Npb25lcy90YXJlYXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51Q29udGVudDogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RhcmVhcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdlc3RhZG9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2FjY2lvbmVzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2VzdGFkb3NfYWNjaW9uZXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGFyZWFzX3Byb3hpbWFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnbW9tZW50b3NfY29uc2lzdGVuY2lhJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdwYXJhbWV0cm9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdtb2Rvc19kbScgfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIgfHwgY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcikge1xyXG4gICAgICAgICAgICAgICAgbWVudUNvbmZpZ3VyYXIucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdtZW51JyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAndXN1YXJpb3MnLFxyXG4gICAgICAgICAgICAgICAgICAgIG1lbnVDb250ZW50OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd1c3VhcmlvcycsIHNlbGVjdGVkQnlEZWZhdWx0OiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyb2xlcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3Blcm1pc29zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncm9sZXNfcGVybWlzb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBtZW51Q29uZmlndXJhcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGxvcyBtaXhpbnMgKG1ldGEtZW5jLCBwcm9jZXNhbWllbnRvKSBsbyBkZWNsYXJhbiBzaW4gcGFyw6FtZXRyb3MsIHBlcm8gYmFja2VuZC1wbHVzIHNpZW1wcmUgbG8gbGxhbWEgY29uIGNvbnRleHQuXHJcbiAgICAgICAgLy8gRWwgdGlwbyBkZSByZXRvcm5vIHF1ZSBkZWNsYXJhIG9wZXJhdGl2b3MgKE1lbnVJbmZvW10pIG5vIGFkbWl0ZSBmb3JtYXMgcXVlIGJhY2tlbmQtcGx1cyBzw60gYWNlcHRhIHkgZG1lbmN1IHVzYVxyXG4gICAgICAgIC8vIChmZiBjb21vIG9iamV0bywgZmMgY29uIGNvbHVtbik7IHNlIGRldnVlbHZlIE1lbnVJbmZvQmFzZVtdLCBxdWUgZXMgbG8gcXVlIGRlY2xhcmEgYmFja2VuZC1wbHVzLlxyXG4gICAgICAgIC8vIFF1aXRhciBlc3RhIGzDrW5lYSBjdWFuZG8gc2UgY29ycmlqYW4gbG9zIHRpcG9zIGRlIG1lbsO6IGVuIG9wZXJhdGl2b3MvYmFja2VuZC1wbHVzIChlbCBjb21waWxhZG9yIGF2aXNhIHNpIGRlamEgZGUgaGFjZXIgZmFsdGEpLlxyXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgTWVudURlZmluaXRpb24gZGUgb3BlcmF0aXZvcyBtw6FzIGVzdHJpY3RvIHF1ZSBlbCBkZSBiYWNrZW5kLXBsdXNcclxuICAgICAgICBvdmVycmlkZSBnZXRNZW51KGNvbnRleHQ/OiBDb250ZXh0KSB7XHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0ID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZ2V0TWVudSBkZSBkbWVuY3UgcmVxdWllcmUgZWwgY29udGV4dCBwYXJhIGFybWFyIGVsIG1lbsO6IHNlZ8O6biBsb3MgcGVybWlzb3MnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgbWVudTogTWVudUluZm9CYXNlW10gPSBbXTtcclxuICAgICAgICAgICAgaWYgKGdldE1vZG9CeVBvbGljeShjb250ZXh0LmJlKSA9PT0gJ1JFTEVWQU1JRU5UTycpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnJlbGV2YXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goeyBtZW51VHlwZTogJ3BhdGgnLCBuYW1lOiAncmVsZXZhbWllbnRvJywgcGF0aDogJy9jYW1wbycgfSlcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICdzaW5jcm9uaXphcl9kbScsIG5hbWU6ICdzaW5jcm9uaXphcicgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ2NhbWJpYXJfbW9kb19kbScsIG5hbWU6ICdjYW1iaWFyX21vZG8nIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uZWRpdGFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE1lbnVBc2lnbmFjaW9uKGNvbnRleHQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE1lbnVSZWNlcGNpb24oY29udGV4dClcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0YXJlYXNfdGVtX2Zpbl9jYW1wbycsIGxhYmVsOiAnZXNwZXJhIGZpbiBkZSBjYW1wbycgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0YXJlYXNfdGVtX2FuYWxpc2lzX2NhbXBvJywgbGFiZWw6ICdhbsOhbGlzaXMgZGUgY2FtcG8nIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ3N1cGVydmlzaW9uJywgbGFiZWw6ICdzdXBlcnZpc2nDs24nLCBtZW51Q29udGVudDogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdzdXBlcnZpc2FyJywgdGFibGU6ICd0YXJlYXNfdGVtX2luZ3Jlc28nLCBmZjogeyB0YXJlYTogJ3N1cGUnLCBhc2lnbmFkbzogY29udGV4dC51c2VyLmlkcGVyIH0gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5lZGl0YXIgfHwgY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyIHx8IGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2godGhpcy5nZXRNZW51VmFyaW9zKGNvbnRleHQpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIgfHwgY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAnY29udHJvbCcsIG1lbnVDb250ZW50OiB0aGlzLmdldE1lbnVDb250cm9sZXMoY29udGV4dCkgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLyp7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncGFydGljaXBhY2lvbicgICAgICAgICwgdGFibGU6J2NvbnRyb2xfY2FtcG9fcGFydGljaXBhY2lvbicgIH0sKi9cclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ3Byb2Nlc2FyJywgbWVudUNvbnRlbnQ6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndmFyaWFibGVzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd2YXJpYWJsZXNfY3Vlc3Rpb25hcmlvJywgdGFibGU6ICdjYXNpbGxlcm9zJywgdGQ6IHsgZWRpdGFibGU6IGZhbHNlLCBhbGxvdzogeyB1cGRhdGU6IGZhbHNlLCBpbXBvcnQ6IGZhbHNlLCBkZWxldGU6IGZhbHNlLCBpbnNlcnQ6IGZhbHNlIH0gfSwgZmM6IFt7IGNvbHVtbjogJ3Zhcl9uYW1lJywgb3BlcmF0b3I6ICchPVxcdTIyMDUnLCB2YWx1ZTogbnVsbCB9XSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdjb25zaXN0ZW5jaWFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdjb25zaXN0ZW5jaWFzX2N1ZXN0aW9uYXJpbycsIHRhYmxlOiAnY2FzaWxsZXJvcycsIGZmOiB7IHRpcG9jOiAnQ09OUycgfSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdpbmNvbnNpc3RlbmNpYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RhYmxhX2RhdG9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdkaWNjaW9uYXJpbycsIGxhYmVsOiAnZGljY2lvbmFyaW9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0YXJlYXNfdGVtX3Byb2Nlc2FtaWVudG8nLCBsYWJlbDogJ2VuY3Vlc3RhcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgbWVudUNvbmZpZ3VyYXIgPSB0aGlzLmdldE1lbnVDb25maWd1cmFyKGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1lbnVDb25maWd1cmFyLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7IG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdjb25maWd1cmFyJywgbWVudUNvbnRlbnQ6IG1lbnVDb25maWd1cmFyIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgbWVudUNhcnRvID0gdGhpcy5nZXRNZW51Q2FydG8oY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobWVudUNhcnRvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKG1lbnVDYXJ0byk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRlbWFzVmlzaWJsZXModGhpcy5jYWNoZXMuYXl1ZGEsIHF1aWVuQ29uc3VsdGFBeXVkYShjb250ZXh0KSkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBtZW51LnB1c2goeyBtZW51VHlwZTogJ2F5dWRhJywgbmFtZTogJ2F5dWRhJyB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4geyBtZW51IH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIHByZXBhcmVHZXRUYWJsZXMoKSB7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHN1cGVyLnByZXBhcmVHZXRUYWJsZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRUYWJsZURlZmluaXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLmdldFRhYmxlRGVmaW5pdGlvblxyXG4gICAgICAgICAgICAgICAgLCByb2xlc1xyXG4gICAgICAgICAgICAgICAgLCB1c3Vhcmlvc1xyXG4gICAgICAgICAgICAgICAgLCBwZXJzb25hbFxyXG4gICAgICAgICAgICAgICAgLCByZWNlcGNpb25pc3Rhc1xyXG4gICAgICAgICAgICAgICAgLCBlbmN1ZXN0YWRvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAgICAgLCBpbmdyZXNhZG9yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICAgICAsIHJlY3VwZXJhZG9yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICAgICAsIHN1cGVydmlzb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgICAgICwgbWlzX3N1cGVydmlzb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgICAgICwgbWlzX2VuY3Vlc3RhZG9yZXNcclxuICAgICAgICAgICAgICAgICwgcmVjdXBlcmFkb3Jlc1xyXG4gICAgICAgICAgICAgICAgLCBzdXBlcnZpc29yZXNcclxuICAgICAgICAgICAgICAgICwgcGVyc29uYWxfcm9sXHJcbiAgICAgICAgICAgICAgICAsIHBlcm1pc29zXHJcbiAgICAgICAgICAgICAgICAsIHJvbGVzX3Blcm1pc29zXHJcbiAgICAgICAgICAgICAgICAsIHJvbGVzX3N1Ym9yZGluYWRvc1xyXG4gICAgICAgICAgICAgICAgLCBub19yZWFcclxuICAgICAgICAgICAgICAgICwgbm9fcmVhX3N1cFxyXG4gICAgICAgICAgICAgICAgLCByZWFcclxuICAgICAgICAgICAgICAgICwgcmVhX3N1cFxyXG4gICAgICAgICAgICAgICAgLCBzZW1hbmFzXHJcbiAgICAgICAgICAgICAgICAsIGVzdGFkb3NcclxuICAgICAgICAgICAgICAgICwgYWNjaW9uZXNcclxuICAgICAgICAgICAgICAgICwgZXN0YWRvc19hY2Npb25lc1xyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfcHJveGltYXNcclxuICAgICAgICAgICAgICAgICwgdGVtXHJcbiAgICAgICAgICAgICAgICAsIHRlbV9lZGljaW9uXHJcbiAgICAgICAgICAgICAgICAsIGhpc3RvcmlhbF90ZW1cclxuICAgICAgICAgICAgICAgICwgbW9kb3NfZG1cclxuICAgICAgICAgICAgICAgICwgcGFyYW1ldHJvc1xyXG4gICAgICAgICAgICAgICAgLCBvcGVyYWNpb25lc1xyXG4gICAgICAgICAgICAgICAgLCBjb211bmFzXHJcbiAgICAgICAgICAgICAgICAsIGFyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHNpbmNyb25pemFjaW9uZXNcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1cclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2VuY3VcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX3JlY3VcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX3N1cGVcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2luZ3JcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX2FyZWFzXHJcbiAgICAgICAgICAgICAgICAsIGFyZWFzX2FzaWduYWNpb25fZ2VuZXJhbFxyXG4gICAgICAgICAgICAgICAgLCBncmlsbGFfaG9qYV9ydXRhXHJcbiAgICAgICAgICAgICAgICAsIHRfZW5jdV9hcmVhc1xyXG4gICAgICAgICAgICAgICAgLCB0X3JlY3VfYXJlYXNcclxuICAgICAgICAgICAgICAgICwgdF9zdXBlX2FyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHRfaW5ncl9hcmVhc1xyXG4gICAgICAgICAgICAgICAgLCBtaXNfdGFyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHRlbV9hc2lnbmFjaW9uXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fcmVjZXBjaW9uXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1faW5ncmVzb1xyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2Zpbl9jYW1wb1xyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX3Byb2Nlc2FtaWVudG9cclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hbmFsaXNpc19jYW1wb1xyXG4gICAgICAgICAgICAgICAgLCBtaXNfdGFyZWFzX2FyZWFzXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9cclxuICAgICAgICAgICAgICAgICwgY29udHJvbF9yZXN1bWVuXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fem9uYTogY29udGV4dCA9PiBjb250cm9sX2NhbXBvKGNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgeyBub21icmU6ICdjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOiAnY29udHJvbCBjYW1wbyB4IHpvbmEgc29sbyBjZW1lbnRvJywgY2FtcG9zQ29ydGU6IFt7IG5hbWU6ICd6b25hJywgdHlwZU5hbWU6ICd0ZXh0JyB9XSwgc2luaG9nZmluOiAhY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIsIGZpbHRyb1doZXJlOiAnZG9taW5pbz0zJyB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fY29tdW5hOiBjb250ZXh0ID0+IGNvbnRyb2xfY2FtcG8oY29udGV4dCxcclxuICAgICAgICAgICAgICAgICAgICB7IG5vbWJyZTogJ2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6ICdjb250cm9sIGNhbXBvIHggY29tdW5hIHNvbG8gY2VtZW50bycsIGNhbXBvc0NvcnRlOiBbeyBuYW1lOiAnem9uYScsIHR5cGVOYW1lOiAndGV4dCcgfSwgeyBuYW1lOiAnbnJvY29tdW5hJywgdHlwZU5hbWU6ICd0ZXh0JyB9XSwgc2luaG9nZmluOiAhY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIsIGZpbHRyb1doZXJlOiAnZG9taW5pbz0zJyB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fYXJlYTogY29udGV4dCA9PiBjb250cm9sX2NhbXBvKGNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgeyBub21icmU6ICdjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOiAnY29udHJvbCBjYW1wbyB4IGFyZWEnLCBjYW1wb3NDb3J0ZTogW3sgbmFtZTogJ3pvbmEnLCB0eXBlTmFtZTogJ3RleHQnIH0sIHsgbmFtZTogJ25yb2NvbXVuYScsIHR5cGVOYW1lOiAndGV4dCcgfSwgeyBuYW1lOiAnYXJlYScsIHR5cGVOYW1lOiAnaW50ZWdlcicgfSwgeyBuYW1lOiAncGFydGljaXBhY2lvbl9hJywgdHlwZU5hbWU6ICd0ZXh0JyB9LCB7IG5hbWU6ICdjbGFzZV9hJywgdHlwZU5hbWU6ICd0ZXh0JyB9XSwgc2luaG9nZmluOiAhY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIgfVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX3BhcnRpY2lwYWNpb246IGNvbnRleHQgPT4gY29udHJvbF9jYW1wbyhjb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbm9tYnJlOiAnY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTogJ2NvbnRyb2wgY2FtcG8geCBwYXJ0aWNpcGFjaW9uJywgY2FtcG9zQ29ydGU6IFt7IG5hbWU6ICdwYXJ0aWNpcGFjaW9uJywgdHlwZU5hbWU6ICdiaWdpbnQnIH1dLCBzaW5ob2dmaW46ICFjb250ZXh0LmJlLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIuY29uX3JlYV9ob2dhciB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fZG9taW5pbzogY29udGV4dCA9PiBjb250cm9sX2NhbXBvKGNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgeyBub21icmU6ICdjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOiAnY29udHJvbCBjYW1wbyB4IGRvbWluaW8nLCBjYW1wb3NDb3J0ZTogW3sgbmFtZTogJ2RvbWluaW8nLCB0eXBlTmFtZTogJ2ludGVnZXInIH1dLCBzaW5ob2dmaW46ICFjb250ZXh0LmJlLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIuY29uX3JlYV9ob2dhciB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfZGlhc19jYXJnYVxyXG4gICAgICAgICAgICAgICAgLCB2aXZpZW5kYXNcclxuICAgICAgICAgICAgICAgICwgdmlzaXRhc1xyXG4gICAgICAgICAgICAgICAgLCBob2dhcmVzXHJcbiAgICAgICAgICAgICAgICAsIHBlcnNvbmFzXHJcbiAgICAgICAgICAgICAgICAsIHZpc2l0YXNfc3VwXHJcbiAgICAgICAgICAgICAgICAsIGhvZ2FyZXNfc3VwXHJcbiAgICAgICAgICAgICAgICAsIHBlcnNvbmFzX3N1cFxyXG4gICAgICAgICAgICAgICAgLCBkaWNjaW9uYXJpb1xyXG4gICAgICAgICAgICAgICAgLCBkaWN2YXJcclxuICAgICAgICAgICAgICAgICwgZGljdHJhXHJcbiAgICAgICAgICAgICAgICAsIGluY29uc2lzdGVuY2lhc19jdW1wbGVuX2NvbmRpY2lvblxyXG4gICAgICAgICAgICAgICAgLCB0ZW1fYm9ycmFkYXNcclxuICAgICAgICAgICAgICAgICwgYmFycmlvc1xyXG4gICAgICAgICAgICAgICAgLCBmcmFjY2lvbmVzXHJcbiAgICAgICAgICAgICAgICAsIHJhZGlvc1xyXG4gICAgICAgICAgICAgICAgLCBtYW56YW5hc1xyXG4gICAgICAgICAgICAgICAgLCBhcmVhX2VuY19wcm94aW1hc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdjb25zaXN0ZW5jaWFzJywgZnVuY3Rpb24gKHRhYmxlRGVmLCBjb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5lZGl0YWJsZSA9IHRhYmxlRGVmLmVkaXRhYmxlIHx8IGNvbnRleHQ/LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLmZvckVhY2goZnVuY3Rpb24gKGZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLm5hbWUgPT0gJ2Vycm9yX2NvbXBpbGFjaW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQudmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignKioqKioqKioqKioqIFFVSVRBUiBFU1RPIGVycm9yX2NvbXBpbGFjaW9uIHlhIGVzIHZpc2libGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignaW5jb25zaXN0ZW5jaWFzJywgZnVuY3Rpb24gKHRhYmxlRGVmLCBjb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5zcWwgPSB7IC4uLnRhYmxlRGVmLnNxbCwgaXNUYWJsZTogdHJ1ZSB9O1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnNwbGljZSgyLCAwLFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ3ZpdmllbmRhJywgdHlwZU5hbWU6ICd0ZXh0JywgZWRpdGFibGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnaG9nYXInLCB0eXBlTmFtZTogJ2JpZ2ludCcsIGVkaXRhYmxlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ3BlcnNvbmEnLCB0eXBlTmFtZTogJ2JpZ2ludCcsIGVkaXRhYmxlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ3Zpc2l0YScsIHR5cGVOYW1lOiAnYmlnaW50JywgZWRpdGFibGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZWRpdGFibGUgPSB0YWJsZURlZi5lZGl0YWJsZSB8fCBjb250ZXh0Py5wdWVkZT8uZW5jdWVzdGFzPy5qdXN0aWZpY2FyO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLmZvckVhY2goZnVuY3Rpb24gKGZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLm5hbWUgPT0gJ3BrX2ludGVncmFkYScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQubmFtZSA9PSAnanVzdGlmaWNhY2lvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuZWRpdGFibGUgPSBjb250ZXh0Py5mb3JEdW1wIHx8IGNvbnRleHQ/LnB1ZWRlPy5lbmN1ZXN0YXM/Lmp1c3RpZmljYXI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcyA9IHRhYmxlRGVmLmZpZWxkcy5jb25jYXQoWyd0YXJlYV9hY3R1YWwnLCAndGFyZWFfYW50ZXJpb3InXS5tYXAoZm4gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG5hbWU6IGZuLCB0eXBlTmFtZTogJ3RleHQnLCBlZGl0YWJsZTogZmFsc2UsIGluVGFibGU6IGZhbHNlIH1cclxuICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgICAgLy9zYWNhciBjYW1wb3MgZGUgdml0YWxlcyEgXHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWdFeHBGaWVsZHNWaXRhID0gbmV3IFJlZ0V4cCgnXihjb21wfGluZmV8Y29kX2NhdXNhfGRvbWkpJCcpO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzID0gdGFibGVEZWYuZmllbGRzLmZpbHRlcihmID0+ICEocmVnRXhwRmllbGRzVml0YS50ZXN0KGYubmFtZSkpKVxyXG5cclxuICAgICAgICAgICAgICAgIHZhciBxX2luY29uc2lzdCA9IHRhYmxlRGVmLnNxbCEuZnJvbVxyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuc3FsIS5mcm9tID0gYFxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdCBpLiosIHQudGFyZWFfYWN0dWFsLCB0YXJlYV9hbnRlcmlvclxyXG4gICAgICAgICAgICAgICAgICBmcm9tICR7cV9pbmNvbnNpc3R9IGkgXHJcbiAgICAgICAgICAgICAgICAgIGpvaW4gdGVtIHQgb24gaS52aXZpZW5kYT10LmVuYyBhbmQgaS5vcGVyYXRpdm89dC5vcGVyYXRpdm8gXHJcbiAgICAgICAgICAgICAgICAgIGxlZnQgam9pbiB0YXJlYXNfdGVtIHR0IG9uIHQub3BlcmF0aXZvPXR0Lm9wZXJhdGl2byBhbmQgdC5lbmM9dHQuZW5jIGFuZCB0LnRhcmVhX2FjdHVhbD10dC50YXJlYSBcclxuICAgICAgICAgICAgICAgICAgbGVmdCBqb2luIGxhdGVyYWwgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgdGFyZWEgYXMgdGFyZWFfYW50ZXJpb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gaGlzdG9yaWFsX3RlbSBodFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdC5vcGVyYXRpdm8gPSBodC5vcGVyYXRpdm8gYW5kIHQuZW5jID0gaHQuZW5jXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciBieSB0c19zYWxpZGEgZGVzY1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQgMVxyXG4gICAgICAgICAgICAgICAgICAgICkgYXMgdGEgb24gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgKSAgIFxyXG4gICAgICAgICAgICBgXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdvcGVyYXRpdm9zJywgZnVuY3Rpb24gKHRhYmxlRGVmLCBjb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuc3BsaWNlKDIsIDAsIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29uZmlnX3NvcnRlbycsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZU5hbWU6ICdqc29uYicsXHJcbiAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2hhYmlsaXRhY2lvbl9ib3Rvbl9mb3JtdWxhcmlvJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTogJ2pzb25iJyxcclxuICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2VcclxuICAgICAgICAgICAgICAgIH0sIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGlzZm9ybV9jZXJyYWRvJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTogJ2Jvb2xlYW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGNvbnRleHQ/LmZvckR1bXAgfHwgY29udGV4dCAhPSBudWxsICYmIFsnYWRtaW4nLCAnZGlzX2NvbmNlcHR1YWwnXS5pbmNsdWRlcyhjb250ZXh0LnVzZXIucm9sKVxyXG4gICAgICAgICAgICAgICAgfSwge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb25fcmVhX2hvZ2FyJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTogJ2Jvb2xlYW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGJWYWx1ZTogJ3RydWUnXHJcbiAgICAgICAgICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3Blcm1pdGVfZ2VuZXJhcl9tdWVzdHJhJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTogJ2Jvb2xlYW4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGJWYWx1ZTogJ2ZhbHNlJ1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCd2YXJpYWJsZXMnLCBmdW5jdGlvbiAodGFibGVEZWYsIGNvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBlc0FkbWluID0gY29udGV4dD8udXNlci5yb2wgPT09ICdhZG1pbic7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5lZGl0YWJsZSA9IHRhYmxlRGVmLmVkaXRhYmxlIHx8IGNvbnRleHQ/LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuYWxsb3cgPSB7IGRlbGV0ZTogZXNBZG1pbiB9O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignbW9tZW50b3NfY29uc2lzdGVuY2lhJywgZnVuY3Rpb24gKHRhYmxlRGVmLCBfY29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnY29uZGljaW9uJywgdHlwZU5hbWU6ICd0ZXh0JywgbnVsbGFibGU6IGZhbHNlLCBkZWZhdWx0RGJWYWx1ZTogJ3RydWUnIH0sXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbigncGFyYW1ldHJvcycsIGZ1bmN0aW9uICh0YWJsZURlZikge1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAnbW9kb19kbV9kZWZlY3RvJywgdHlwZU5hbWU6ICd0ZXh0JywgZWRpdGFibGU6IHRydWUsIG51bGxhYmxlOiBmYWxzZSwgZGVmYXVsdERiVmFsdWU6IFwiJ2NhcGEnXCIgfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5mb3JlaWduS2V5cyA9IHRhYmxlRGVmLmZvcmVpZ25LZXlzIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZm9yZWlnbktleXMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7IHJlZmVyZW5jZXM6ICdtb2Rvc19kbScsIGZpZWxkczogW3sgc291cmNlOiAnbW9kb19kbV9kZWZlY3RvJywgdGFyZ2V0OiAnbW9kb19kbScgfV0gfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgQXBwRG1FbmN1ID0gZW1lcmdlQXBwRG1FbmN1KGVtZXJnZUFwcFByb2Nlc2FtaWVudG8oZW1lcmdlQXBwQ29uc2lzdGVuY2lhcyhlbWVyZ2VBcHBWYXJDYWwoZW1lcmdlQXBwRGF0b3NFeHQoZW1lcmdlQXBwT3BlcmF0aXZvcyhBcHBCYWNrZW5kKSkpKSkpO1xyXG5leHBvcnQgdHlwZSBBcHBBcHBEbUVuY3VUeXBlID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBBcHBEbUVuY3U+OyJdfQ==
|