dmencu 2.0.33 → 2.1.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/dist/server/server/app-dmencu.js +6 -3
- 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.d.ts +2 -3
- package/dist/server/server/procedures-dmencu.js +90 -77
- package/dist/server/server/table-area_enc_proximas.d.ts +2 -0
- package/dist/server/server/table-area_enc_proximas.js +30 -0
- package/dist/server/server/table-barrios copy.d.ts +2 -0
- package/dist/server/server/table-barrios copy.js +35 -0
- package/dist/server/server/table-proximo_enc_area.d.ts +2 -0
- package/dist/server/server/table-proximo_enc_area.js +35 -0
- package/dist/server/server/table-proximo_num_enc_.d.ts +2 -0
- package/dist/server/server/table-proximo_num_enc_.js +35 -0
- package/dist/server/server/table-proximo_num_enc_area.d.ts +2 -0
- package/dist/server/server/table-proximo_num_enc_area.js +35 -0
- package/dist/server/server/table-/302/241area_enc_proximas.d.ts +2 -0
- package/dist/server/server/table-/302/241area_enc_proximas.js +35 -0
- package/install/obtener_siguiente_contador_area.sql +47 -0
- package/package.json +1 -1
|
@@ -18,7 +18,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
18
18
|
if (v !== undefined) module.exports = v;
|
|
19
19
|
}
|
|
20
20
|
else if (typeof define === "function" && define.amd) {
|
|
21
|
-
define(["require", "exports", "procesamiento", "./procedures-dmencu", "pg-promise-strict", "mini-tools", "cast-error", "yazl", "like-ar", "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-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", "./types-dmencu", "./def-config"], factory);
|
|
21
|
+
define(["require", "exports", "procesamiento", "./procedures-dmencu", "pg-promise-strict", "mini-tools", "cast-error", "yazl", "like-ar", "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-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"], factory);
|
|
22
22
|
}
|
|
23
23
|
})(function (require, exports) {
|
|
24
24
|
"use strict";
|
|
@@ -100,6 +100,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
100
100
|
const table_fracciones_1 = require("./table-fracciones");
|
|
101
101
|
const table_radios_1 = require("./table-radios");
|
|
102
102
|
const table_manzanas_1 = require("./table-manzanas");
|
|
103
|
+
const table_area_enc_proximas_1 = require("./table-area_enc_proximas");
|
|
103
104
|
__exportStar(require("./types-dmencu"), exports);
|
|
104
105
|
const def_config_1 = require("./def-config");
|
|
105
106
|
const APP_DM_VERSION = "#22-12-15";
|
|
@@ -674,6 +675,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
674
675
|
{ menuType: 'table', name: 'tem', label: 'TEM' },
|
|
675
676
|
{ menuType: 'proc', name: 'muestra_generar', label: 'generar muestra' },
|
|
676
677
|
{ menuType: 'table', name: 'semanas' },
|
|
678
|
+
{ menuType: 'table', name: 'area_enc_proximas' },
|
|
677
679
|
];
|
|
678
680
|
menuConfigurar.push({ menuType: 'menu', name: 'muestra', label: 'muestra', menuContent: submenuMuestra });
|
|
679
681
|
}
|
|
@@ -794,7 +796,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
794
796
|
barrios: table_barrios_1.barrios,
|
|
795
797
|
fracciones: table_fracciones_1.fracciones,
|
|
796
798
|
radios: table_radios_1.radios,
|
|
797
|
-
manzanas: table_manzanas_1.manzanas
|
|
799
|
+
manzanas: table_manzanas_1.manzanas,
|
|
800
|
+
area_enc_proximas: table_area_enc_proximas_1.area_enc_proximas
|
|
798
801
|
};
|
|
799
802
|
be.appendToTableDefinition('consistencias', function (tableDef, context) {
|
|
800
803
|
var _a, _b;
|
|
@@ -889,4 +892,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
889
892
|
}
|
|
890
893
|
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))))));
|
|
891
894
|
});
|
|
892
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRtZW5jdS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvYXBwLWRtZW5jdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFlBQVksQ0FBQzs7O0lBb0liLDBDQXl5QkM7SUExNkJELGlEQUEwTDtJQUMxTCwyREFBNkY7SUFFN0Ysd0NBQXdDO0lBRXhDLHdDQUF3QztJQVF4QywyQ0FBd0M7SUFFeEMsNkJBQTZCO0lBRTdCLGtDQUFrQztJQUNsQyxtQ0FBbUM7SUFFbkMsMkJBQW1DO0lBRW5DLCtDQUFvRDtJQUNwRCxxREFBdUQ7SUFDdkQsaUVBQTZEO0lBQzdELCtEQUF3RjtJQUN4RiwrREFBZ0U7SUFDaEUsK0RBQWdFO0lBQ2hFLCtEQUFvRTtJQUNwRSx1RUFBZ0U7SUFDaEUsK0RBQTREO0lBQzVELDZEQUEyRDtJQUMzRCw2REFBMkQ7SUFDM0QscURBQXVEO0lBQ3ZELGlFQUE2RDtJQUM3RCxxREFBdUQ7SUFDdkQseURBQXlEO0lBQ3pELHlFQUFpRTtJQUVqRSxpREFBcUQ7SUFDckQseURBQXlEO0lBQ3pELDJDQUFrRDtJQUNsRCxtREFBc0Q7SUFDdEQscURBQXVEO0lBQ3ZELDJEQUEwRDtJQUMxRCxtREFBc0Q7SUFDdEQsK0NBQW9EO0lBQ3BELHFFQUErRDtJQUMvRCxpREFBcUQ7SUFDckQseURBSW9FO0lBQ3BFLDZEQUEyRDtJQUMzRCxxRkFBNEU7SUFDNUUscUVBQStEO0lBQy9ELDZEQUEyRDtJQUMzRCw2REFBMkQ7SUFDM0QsNkRBQTJEO0lBQzNELDZEQUEyRDtJQUMzRCx5REFBeUQ7SUFDekQsaUVBQTZEO0lBQzdELDZFQUFtRTtJQUNuRSx5RUFBK0Q7SUFDL0QsNkVBQW1FO0lBQ25FLHFGQUEyRTtJQUMzRSx1RkFBNkU7SUFDN0UscUVBQStEO0lBQy9ELCtEQUE0RDtJQUM1RCxtRUFBOEQ7SUFDOUQseUVBQWlFO0lBQ2pFLHVEQUF3RDtJQUN4RCxt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LFFBQVEsRUFBQyxDQUMxRyxDQUFDO29CQUNGLFFBQVEsQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7b0JBQ2xELFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNyQixFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLENBQUMsRUFBQyxNQUFNLEVBQUMsaUJBQWlCLEVBQUUsTUFBTSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsQ0FDakYsQ0FBQztnQkFDTixDQUFDLENBQUMsQ0FBQTtZQUNOLENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVVLFFBQUEsU0FBUyxHQUFHLGVBQWUsQ0FBQyxJQUFBLHNDQUFzQixFQUFDLElBQUEsc0NBQXNCLEVBQUMsSUFBQSwrQkFBZSxFQUFDLElBQUEsaUNBQWlCLEVBQUMsSUFBQSxtQ0FBbUIsRUFBQywwQkFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgKiBhcyBwcm9jZXNhbWllbnRvIGZyb20gXCJwcm9jZXNhbWllbnRvXCI7XHJcbmltcG9ydCB7ZW1lcmdlQXBwUHJvY2VzYW1pZW50bywgZW1lcmdlQXBwQ29uc2lzdGVuY2lhcywgZW1lcmdlQXBwVmFyQ2FsLCBlbWVyZ2VBcHBEYXRvc0V4dCwgZW1lcmdlQXBwT3BlcmF0aXZvcywgQXBwQmFja2VuZCwgQ2xpZW50TW9kdWxlRGVmaW5pdGlvbiwgT3B0c0NsaWVudFBhZ2V9IGZyb20gXCJwcm9jZXNhbWllbnRvXCI7XHJcbmltcG9ydCB7QUNDSU9OX1BBU0FSX1BST0lFLCBnZXRPcGVyYXRpdm9BY3R1YWwsIFByb2NlZHVyZXNEbUVuY3V9IGZyb20gXCIuL3Byb2NlZHVyZXMtZG1lbmN1XCI7XHJcblxyXG5pbXBvcnQgKiBhcyBwZyBmcm9tIFwicGctcHJvbWlzZS1zdHJpY3RcIjtcclxuaW1wb3J0IHtqc29ufSBmcm9tIFwicGctcHJvbWlzZS1zdHJpY3RcIjtcclxuaW1wb3J0ICogYXMgbWluaVRvb2xzIGZyb20gXCJtaW5pLXRvb2xzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBDbGllbnQsIENvbnRleHQsIENvcmVGdW5jdGlvblBhcmFtZXRlcnMsIFxyXG4gICAgTWVudUluZm9CYXNlLCBcclxuICAgIFJlcXVlc3QsIFJlc3BvbnNlLFxyXG4gICAgU3VmaWpvc0FtYmllbnRlLFxyXG59IGZyb20gXCIuL3R5cGVzLWRtZW5jdVwiO1xyXG5cclxuaW1wb3J0IHsgdW5leHBlY3RlZCB9IGZyb20gXCJjYXN0LWVycm9yXCI7XHJcblxyXG5pbXBvcnQgKiBhcyB5YXpsIGZyb20gXCJ5YXpsXCI7XHJcbmltcG9ydCB7IE5leHRGdW5jdGlvbiB9IGZyb20gXCJleHByZXNzLXNlcnZlLXN0YXRpYy1jb3JlXCI7XHJcbmltcG9ydCAqIGFzIGxpa2VBciBmcm9tIFwibGlrZS1hclwiO1xyXG5pbXBvcnQgKiBhcyBleHByZXNzIGZyb20gXCJleHByZXNzXCI7XHJcblxyXG5pbXBvcnQge3Byb21pc2VzIGFzIGZzIH0gZnJvbSBcImZzXCI7XHJcblxyXG5pbXBvcnQgeyByb2xlcyAgICAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtcm9sZXNcIjtcclxuaW1wb3J0IHsgcGVyc29uYWwgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXBlcnNvbmFsXCI7XHJcbmltcG9ydCB7IHJlY2VwY2lvbmlzdGFzICAgICAgfSBmcm9tIFwiLi90YWJsZS1yZWNlcGNpb25pc3Rhc1wiO1xyXG5pbXBvcnQgeyBlbmN1ZXN0YWRvcmVzX2FzaWduYWRvcywgaW5ncmVzYWRvcmVzX2FzaWduYWRvcyB9IGZyb20gXCIuL3RhYmxlLWVuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgcmVjdXBlcmFkb3Jlc19hc2lnbmFkb3MgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IHN1cGVydmlzb3Jlc19hc2lnbmFkb3MgIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBtaXNfc3VwZXJ2aXNvcmVzX2FzaWduYWRvcyAgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IG1pc19lbmN1ZXN0YWRvcmVzICAgfSBmcm9tIFwiLi90YWJsZS1taXNfZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyByZWN1cGVyYWRvcmVzICAgICAgIH0gZnJvbSBcIi4vdGFibGUtcmVjdXBlcmFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBzdXBlcnZpc29yZXMgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtc3VwZXJ2aXNvcmVzXCI7XHJcbmltcG9ydCB7IHBlcnNvbmFsX3JvbCAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1wZXJzb25hbF9yb2xcIjtcclxuaW1wb3J0IHsgcGVybWlzb3MgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXBlcm1pc29zXCI7XHJcbmltcG9ydCB7IHJvbGVzX3Blcm1pc29zICAgICAgfSBmcm9tIFwiLi90YWJsZS1yb2xlc19wZXJtaXNvc1wiO1xyXG5pbXBvcnQgeyBtb2Rvc19kbSAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtbW9kb3NfZG1cIjtcclxuaW1wb3J0IHsgcGFyYW1ldHJvcyAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXBhcmFtZXRyb3NcIjtcclxuaW1wb3J0IHsgcm9sZXNfc3Vib3JkaW5hZG9zICB9IGZyb20gXCIuL3RhYmxlLXJvbGVzX3N1Ym9yZGluYWRvc1wiO1xyXG5cclxuaW1wb3J0IHtub19yZWEgICAgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLW5vX3JlYVwiO1xyXG5pbXBvcnQge25vX3JlYV9zdXAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtbm9fcmVhX3N1cFwiO1xyXG5pbXBvcnQge3RlbSAgICAgICAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtdGVtXCI7XHJcbmltcG9ydCB7c2VtYW5hcyAgICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1zZW1hbmFzXCI7XHJcbmltcG9ydCB7IHVzdWFyaW9zICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXVzdWFyaW9zJztcclxuaW1wb3J0IHsgb3BlcmFjaW9uZXMgICAgICAgICB9IGZyb20gJy4vdGFibGUtb3BlcmFjaW9uZXMnO1xyXG5pbXBvcnQgeyBjb211bmFzICAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1jb211bmFzJztcclxuaW1wb3J0IHsgYXJlYXMgICAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtYXJlYXMnO1xyXG5pbXBvcnQgeyBzaW5jcm9uaXphY2lvbmVzICAgIH0gZnJvbSAnLi90YWJsZS1zaW5jcm9uaXphY2lvbmVzJztcclxuaW1wb3J0IHsgdGFyZWFzICAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbSwgXHJcbiAgICAgICAgIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9lbmN1LCBcclxuICAgICAgICAgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX3JlY3UsIFxyXG4gICAgICAgICB0YXJlYXNfdGVtX2FzaWduYWNpb25fc3VwZSxcclxuICAgICAgICAgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2luZ3IgICAgIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtJztcclxuaW1wb3J0IHsgdGFyZWFzX2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsIH0gZnJvbSAnLi90YWJsZS1hcmVhc19hc2lnbmFjaW9uX2dlbmVyYWwnO1xyXG5pbXBvcnQgeyBncmlsbGFfaG9qYV9ydXRhICAgIH0gZnJvbSAnLi90YWJsZS1ncmlsbGFfaG9qYV9ydXRhJztcclxuaW1wb3J0IHsgdF9lbmN1X2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9yZWN1X2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9zdXBlX2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9pbmdyX2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgbWlzX3RhcmVhcyAgICAgICAgICB9IGZyb20gJy4vdGFibGUtbWlzX3RhcmVhcyc7XHJcbmltcG9ydCB7IHRlbV9hc2lnbmFjaW9uICAgICAgfSBmcm9tICcuL3RhYmxlLXRlbV9hc2lnbmFjaW9uJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9yZWNlcGNpb259IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9yZWNlcGNpb24nO1xyXG5pbXBvcnQgeyB0YXJlYXNfdGVtX2luZ3Jlc299IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9pbmdyZXNvJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9maW5fY2FtcG99IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9maW5fY2FtcG8nO1xyXG5pbXBvcnQgeyB0YXJlYXNfdGVtX3Byb2Nlc2FtaWVudG99IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9wcm9jZXNhbWllbnRvJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9hbmFsaXNpc19jYW1wb30gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtX2FuYWxpc2lzX2NhbXBvJztcclxuaW1wb3J0IHsgbWlzX3RhcmVhc19hcmVhcyAgICB9IGZyb20gJy4vdGFibGUtbWlzX3RhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IGNvbnRyb2xfY2FtcG8gICAgICAgfSBmcm9tICcuL3RhYmxlLWNvbnRyb2xfY2FtcG8nO1xyXG5pbXBvcnQgeyBjb250cm9sX3Jlc3VtZW4gICAgIH0gZnJvbSAnLi90YWJsZS1jb250cm9sX3Jlc3VtZW4nO1xyXG5pbXBvcnQgeyBjb250cm9sX2RpYXNfY2FyZ2EgIH0gZnJvbSAnLi90YWJsZS1jb250cm9sX2RpYXNfY2FyZ2EnO1xyXG5pbXBvcnQgeyB2aXZpZW5kYXMgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS12aXZpZW5kYXMnO1xyXG5pbXBvcnQgeyB2aXNpdGFzICAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS12aXNpdGFzJztcclxuaW1wb3J0IHsgaG9nYXJlcyAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtaG9nYXJlcyc7XHJcbmltcG9ydCB7IHBlcnNvbmFzICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXBlcnNvbmFzJztcclxuaW1wb3J0IHsgdmlzaXRhc19zdXAgICAgICAgICB9IGZyb20gJy4vdGFibGUtdmlzaXRhc19zdXAnO1xyXG5pbXBvcnQgeyBob2dhcmVzX3N1cCAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1ob2dhcmVzX3N1cCc7XHJcbmltcG9ydCB7IHBlcnNvbmFzX3N1cCAgICAgICAgfSBmcm9tICcuL3RhYmxlLXBlcnNvbmFzX3N1cCc7XHJcbmltcG9ydCB7IGRpY2Npb25hcmlvICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWRpY2Npb25hcmlvJztcclxuaW1wb3J0IHsgZGljdHJhICAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtZGljdHJhJztcclxuaW1wb3J0IHsgZGljdmFyICAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtZGljdmFyJztcclxuXHJcbmltcG9ydCB7IGVzdGFkb3MgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWVzdGFkb3MnO1xyXG5pbXBvcnQgeyBhY2Npb25lcyAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1hY2Npb25lcyc7XHJcbmltcG9ydCB7IGVzdGFkb3NfYWNjaW9uZXMgICAgfSBmcm9tICcuL3RhYmxlLWVzdGFkb3NfYWNjaW9uZXMnO1xyXG5pbXBvcnQgeyB0YXJlYXNfcHJveGltYXMgICAgIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfcHJveGltYXMnO1xyXG5pbXBvcnQgeyBoaXN0b3JpYWxfdGVtICAgICAgIH0gZnJvbSAnLi90YWJsZS1oaXN0b3JpYWxfdGVtJztcclxuaW1wb3J0IHsgaW5jb25zaXN0ZW5jaWFzX2N1bXBsZW5fY29uZGljaW9uICAgICAgIH0gZnJvbSAnLi90YWJsZS1pbmNvbnNpc3RlbmNpYXNfY3VtcGxlbl9jb25kaWNpb24nO1xyXG5pbXBvcnQgeyB0ZW1fYm9ycmFkYXMgICAgICAgIH0gZnJvbSAnLi90YWJsZS10ZW1fYm9ycmFkYXMnO1xyXG5pbXBvcnQgeyBiYXJyaW9zICAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtYmFycmlvc1wiO1xyXG5pbXBvcnQgeyBmcmFjY2lvbmVzICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtZnJhY2Npb25lc1wiO1xyXG5pbXBvcnQgeyByYWRpb3MgICAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtcmFkaW9zXCI7XHJcbmltcG9ydCB7IG1hbnphbmFzICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1tYW56YW5hc1wiO1xyXG5cclxuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMtZG1lbmN1XCI7XHJcbmltcG9ydCB7ZGVmQ29uZmlnfSBmcm9tIFwiLi9kZWYtY29uZmlnXCJcclxuaW1wb3J0IHsgUHJvY2VkdXJlRGVmIH0gZnJvbSBcImJhY2tlbmQtcGx1c1wiO1xyXG5pbXBvcnQgeyB0YWJsZSB9IGZyb20gXCJjb25zb2xlXCI7XHJcblxyXG5jb25zdCBBUFBfRE1fVkVSU0lPTj1cIiMyMi0xMi0xNVwiO1xyXG5cclxuY29uc3QgcmVnaXN0cmFyQ3JvbkpvYlBhc2FyQVByb2llID0gYXN5bmMgKGJlOkFwcEJhY2tlbmQpID0+IHtcclxuICAgIGxldCBwcm9jZWR1cmVzID0gYXdhaXQgYmUuZ2V0UHJvY2VkdXJlcygpXHJcbiAgICB2YXIgcHJvY1Bhc2FyID0gcHJvY2VkdXJlcy5maW5kKChwcm9jOlByb2NlZHVyZURlZik9PnByb2MuYWN0aW9uID09IEFDQ0lPTl9QQVNBUl9QUk9JRSlcclxuICAgIHZhciBjb250ZXh0ID0gYmUuZ2V0Q29udGV4dEZvckR1bXAoKTtcclxuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCk9PntcclxuICAgICAgICB0cnl7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdpbmljaWEgY3JvbiBwb3NhamUgYSBwcm9pZScpXHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBiZS5pblRyYW5zYWN0aW9uKG51bGwsIGFzeW5jIChjbGllbnQpPT57XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmNsaWVudD1jbGllbnQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgcHJvY1Bhc2FyLmNvcmVGdW5jdGlvbihjb250ZXh0LFtdKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJyZXN1bHQgcHJvYyBwYXNhamUgYSBwcm9pZTogXCIsIHJlc3VsdClcclxuICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYGVycm9yIHBhc2FqZSBhIHByb2llLiAke2Vyci5tZXNzYWdlfWApO1xyXG4gICAgICAgIH1maW5hbGx5e1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygndGVybWluYSBjcm9uIHByb2llJylcclxuICAgICAgICB9XHJcbiAgICB9LDEwMDAqNjAqNjApXHJcbiAgICBiZS5zaHV0ZG93bkNhbGxiYWNrTGlzdEFkZCh7XHJcbiAgICAgICAgbWVzc2FnZTonYXBhZ2EgY3JvbiBwYXNhciBhIHByb2llJyxcclxuICAgICAgICBmdW46YXN5bmMgZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVtZXJnZUFwcERtRW5jdTxUIGV4dGVuZHMgcHJvY2VzYW1pZW50by5Db25zdHJ1Y3Rvcjxwcm9jZXNhbWllbnRvLkFwcFByb2Nlc2FtaWVudG9UeXBlPj4oQmFzZTpUKXtcclxuICByZXR1cm4gY2xhc3MgQXBwRG1FbmN1IGV4dGVuZHMgQmFzZXtcclxuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6YW55W10peyBcclxuICAgICAgICBzdXBlcihhcmdzKTsgXHJcbiAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50ID0gdGhpcy5jYWNoZXMudGFibGVDb250ZW50IHx8IHt9O1xyXG4gICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWE9W11cclxuICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX2dyb3Vwcz1bXVxyXG4gICAgICAgIHRoaXMuY2FjaGVzLm1ldGFFbmNJbmNsdWlyQ2FzaWxsZXJvc1NhbHRvUkVMID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYWNoZXMudGltZXN0YW1wRXN0cnVjdHVyYSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhciA9IHt9O1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgYXN5bmMgY2FuQ2hhbmdlUGFzcyhyZXFPckNvbnRleHQsIHVzZXJUb0NoYW5nZVBhc3Mpe1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IGJlLmluRGJDbGllbnQobnVsbCwgYXN5bmMgKGNsaWVudCk9PntcclxuICAgICAgICAgICAgdmFyIHEgPSBiZS5kYi5xdW90ZUxpdGVyYWw7XHJcbiAgICAgICAgICAgIHZhciByb2wgPSByZXFPckNvbnRleHQudXNlci5yb2w7XHJcbiAgICAgICAgICAgIHJldHVybiAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgIHNlbGVjdCAqIFxyXG4gICAgICAgICAgICAgICAgICBmcm9tIHVzdWFyaW9zIFxyXG4gICAgICAgICAgICAgICAgICB3aGVyZSByb2wgaW4gKHNlbGVjdCByb2xfc3Vib3JkaW5hZG8gZnJvbSByb2xlc19zdWJvcmRpbmFkb3Mgd2hlcmUgcm9sID0gJHtxKHJvbCl9KWApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB2YXIgcHVlZGUgPSAhIXJlc3VsdC5maW5kKCh1c2VyKT0+dXNlci51c3VhcmlvID09IHVzZXJUb0NoYW5nZVBhc3MpO1xyXG4gICAgICAgIHZhciBpc0FkbWluID0gYmUuaXNBZG1pbihyZXFPckNvbnRleHQpO1xyXG4gICAgICAgIHJldHVybiBpc0FkbWluIHx8IHB1ZWRlXHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhc3luYyBnZXRQcm9jZWR1cmVzKCl7XHJcbiAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICB2YXIgcHJvY2VkaW1pZW50b0FSZWVtcGxhemFyPVtcImNhc29fZ3VhcmRhclwiLFwiY2Fzb190cmFlclwiXTtcclxuICAgICAgICB2YXIgcGFyZW50UHJvYyA9IGF3YWl0IHN1cGVyLmdldFByb2NlZHVyZXMoKTtcclxuICAgICAgICBwYXJlbnRQcm9jID0gcGFyZW50UHJvYy5maWx0ZXIoKHByb2NlZHVyZTphbnkpID0+ICFwcm9jZWRpbWllbnRvQVJlZW1wbGF6YXIuaW5jbHVkZXMocHJvY2VkdXJlLmFjdGlvbikpO1xyXG4gICAgICAgIHBhcmVudFByb2MgPSBwYXJlbnRQcm9jLm1hcChwcm9jRGVmPT57XHJcbiAgICAgICAgICAgIGlmKHByb2NEZWYuYWN0aW9uID09ICd0YWJsZV9yZWNvcmRfc2F2ZScgfHwgcHJvY0RlZi5hY3Rpb24gPT0gJ3RhYmxlX3JlY29yZF9kZWxldGUnKXtcclxuICAgICAgICAgICAgICAgIHZhciBjb3JlRnVuY3Rpb25JbnRlcm5vID0gcHJvY0RlZi5jb3JlRnVuY3Rpb247XHJcbiAgICAgICAgICAgICAgICBwcm9jRGVmLmNvcmVGdW5jdGlvbiA9IGFzeW5jIGZ1bmN0aW9uKGNvbnRleHQ6Q29udGV4dCwgcGFyYW1ldGVyczpDb3JlRnVuY3Rpb25QYXJhbWV0ZXJzKXtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgY29yZUZ1bmN0aW9uSW50ZXJubyhjb250ZXh0LCBwYXJhbWV0ZXJzKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHBhcmFtZXRlcnMudGFibGUgPT0gJ2Nhc2lsbGVyb3MnKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmUuY2FjaGVzLnRpbWVzdGFtcEVzdHJ1Y3R1cmEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3NlIHRvY8OzIGxhIGVzdHJ1Y3R1cmEnLCBiZS5jYWNoZXMudGltZXN0YW1wRXN0cnVjdHVyYSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcHJvY0RlZjtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBwYXJlbnRQcm9jLmNvbmNhdChQcm9jZWR1cmVzRG1FbmN1KTtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGFzeW5jIGNoZWNrRGF0YWJhc2VTdHJ1Y3R1cmUoX2NsaWVudDpDbGllbnQpe1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgYWRkU2NocsO2ZGluZ2VyU2VydmljZXMobWFpbkFwcDpwcm9jZXNhbWllbnRvLkV4cHJlc3MsIGJhc2VVcmw6c3RyaW5nKXtcclxuICAgICAgICBsZXQgYmU9dGhpcztcclxuICAgICAgICBzdXBlci5hZGRTY2hyw7ZkaW5nZXJTZXJ2aWNlcyhtYWluQXBwLCBiYXNlVXJsKTtcclxuICAgICAgICAvL3Blcm1pdG8gbGV2YW50YXIgbWlzIGltYWdlbmVzIGVuIGFwbGljYWNpb25lcyBkZXBlbmRpZW50ZXNcclxuICAgICAgICBiZS5hcHAudXNlKCcvaW1nJywgZXhwcmVzcy5zdGF0aWMoJ25vZGVfbW9kdWxlcy9kbWVuY3UvZGlzdC91bmxvZ2dlZC91bmxvZ2dlZC9pbWcnKSlcclxuICAgICAgICBtYWluQXBwLnVzZShmdW5jdGlvbihyZXE6UmVxdWVzdCxfcmVzOlJlc3BvbnNlLCBuZXh0Ok5leHRGdW5jdGlvbil7XHJcbiAgICAgICAgICAgIGlmKHJlcS5zZXNzaW9uICYmICFyZXEuc2Vzc2lvbi5pbnN0YWxsKXtcclxuICAgICAgICAgICAgICAgIHJlcS5zZXNzaW9uLmluc3RhbGw9TWF0aC5yYW5kb20oKS50b1N0cmluZygpLnJlcGxhY2UoJy4nLCcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBuZXh0KCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsKycvc2FsdmFyJyxhc3luYyBmdW5jdGlvbihyZXEscmVzLF9uZXh0KXtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBzw6kgcXVlIHZveSBhIHJlY2liaXIgdXNlcmFnZW50IHBvciBsb3MgbWlkZGxld2FyZXMgZGUgQmFja2VuZC1wbHVzXHJcbiAgICAgICAgICAgIHZhciB7dXNlcmFnZW50fSA9IHJlcTtcclxuICAgICAgICAgICAgdmFyIGh0bWxNYWluPWJlLm1haW5QYWdlKHt1c2VyYWdlbnR9LCBmYWxzZSwge3NraXBNZW51OnRydWUsIG9mZmxpbmVGaWxlOnRydWV9KS50b0h0bWxEb2MoKTtcclxuICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChodG1sTWFpbiwnaHRtbCcpKHJlcSxyZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwrJy9jYW1wbycsYXN5bmMgZnVuY3Rpb24ocmVxLHJlcyxfbmV4dCl7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgc8OpIHF1ZSB2b3kgYSByZWNpYmlyIHVzZXJhZ2VudCBwb3IgbG9zIG1pZGRsZXdhcmVzIGRlIEJhY2tlbmQtcGx1c1xyXG4gICAgICAgICAgICB2YXIge3VzZXJhZ2VudCwgdXNlcn0gPSByZXE7XHJcbiAgICAgICAgICAgIGlmKHVzZXIpe1xyXG4gICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt7dHlwZTonanMnLCBzcmM6c3RyaW5nfVtdfSAqL1xyXG4gICAgICAgICAgICAgICAgdmFyIHdlYk1hbmlmZXN0UGF0aCA9ICdjYXJnYS1kbS93ZWItbWFuaWZlc3Qud2VibWFuaWZlc3QnO1xyXG4gICAgICAgICAgICAgICAgdmFyIGh0bWxNYWluPWJlLm1haW5QYWdlKHt1c2VyYWdlbnQsIHVzZXJ9LCBmYWxzZSwge3NraXBNZW51OnRydWUsIHdlYk1hbmlmZXN0UGF0aCwgb2ZmbGluZUZpbGU6dHJ1ZX0pLnRvSHRtbERvYygpO1xyXG4gICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KGh0bWxNYWluLCdodG1sJykocmVxLHJlcyk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgcmVzLnJlZGlyZWN0KDQwMSwgYmFzZVVybCsnL2xvZ2luI3c9cGF0aCZwYXRoPS9jYW1wbycpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB2YXIgY3JlYXRlU2VydmljZVdvcmtlciA9IGFzeW5jIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIHZhciBzdyA9IGF3YWl0IGZzLnJlYWRGaWxlKCdub2RlX21vZHVsZXMvc2VydmljZS13b3JrZXItYWRtaW4vZGlzdC9zZXJ2aWNlLXdvcmtlci13by1tYW5pZmVzdC5qcycsICd1dGY4Jyk7XHJcbiAgICAgICAgICAgIHZhciBtYW5pZmVzdCA9IGJlLmNyZWF0ZVJlc291cmNlc0ZvckNhY2hlSnNvbigpO1xyXG4gICAgICAgICAgICB2YXIgc3dNYW5pZmVzdCA9IHN3XHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZShcIicvKnZlcnNpb24qLydcIiwgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QudmVyc2lvbikpXHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZShcIicvKmFwcE5hbWUqLydcIiwgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QuYXBwTmFtZSkpXHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxzKlxcL1xcKnVybHNUb0NhY2hlXFwqXFwvXFxzKlxcXS8sIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmNhY2hlKSlcclxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFtcXHMqXFwvXFwqZmFsbGJhY2tzXFwqXFwvXFxzKlxcXS8sIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmZhbGxiYWNrIHx8IFtdKSk7XHJcbiAgICAgICAgICAgICAgICAvLy5yZXBsYWNlKFwiLyNDQUNIRSQvXCIsIFwiLyhhXFxcXGQrbVxcXFxkK3BcXFxcZCt0XFxcXGQrX2VzdHJ1Y3R1cmEuanMpfChhXFxcXGQrbVxcXFxkK3BcXFxcZCt0XFxcXGQrX2hkci5qc29uKS9cIik7XHJcbiAgICAgICAgICAgIHJldHVybiBzd01hbmlmZXN0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwrYC9zdy1tYW5pZmVzdC5qc2AsIGFzeW5jIGZ1bmN0aW9uKHJlcSwgcmVzLCBuZXh0KXtcclxuICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChhd2FpdCBjcmVhdGVTZXJ2aWNlV29ya2VyKCksJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnKShyZXEscmVzKTtcclxuICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVFcnIocmVxLHJlcyxuZXh0KSh1bmV4cGVjdGVkKGVycikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbWFpbkFwcC5nZXQoYmFzZVVybCtgL2NhcmdhLWRtL3dlYi1tYW5pZmVzdC53ZWJtYW5pZmVzdGAsIGFzeW5jIGZ1bmN0aW9uKHJlcSwgcmVzLCBuZXh0KXtcclxuICAgICAgICAgICAgY29uc3QgQVBQX05BTUUgPSAoYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihudWxsLCAoY2xpZW50OnBnLkNsaWVudCk9PlxyXG4gICAgICAgICAgICAgICAgY2xpZW50LnF1ZXJ5KFwic2VsZWN0IG9wZXJhdGl2byBmcm9tIHBhcmFtZXRyb3Mgd2hlcmUgdW5pY29fcmVnaXN0cm9cIikuZmV0Y2hVbmlxdWVWYWx1ZSgpXHJcbiAgICAgICAgICAgICkpLnZhbHVlO1xyXG4gICAgICAgICAgICB2YXIgc3VmaWpvID0gYmFzZVVybC5pbmNsdWRlcygndGVzdCcpIHx8IGJhc2VVcmwuaW5jbHVkZXMoJy9wcicpPydfdGVzdCc6XHJcbiAgICAgICAgICAgICAgICBiYXNlVXJsLmluY2x1ZGVzKCdjYXBhJyk/J19jYXBhJzonJztcclxuICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHtcclxuICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IGAke0FQUF9OQU1FfSR7c3VmaWpvfSBQcm9ncmVzc2l2ZSBXZWIgQXBwYCxcclxuICAgICAgICAgICAgICAgICAgXCJzaG9ydF9uYW1lXCI6IGAke0FQUF9OQU1FfSR7c3VmaWpvfSBQV0FgLFxyXG4gICAgICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IGBQcm9ncmVzc2l2ZSBXZWIgQXBwIGZvciAke0FQUF9OQU1FfSR7c3VmaWpvfS5gLFxyXG4gICAgICAgICAgICAgICAgICBcImljb25zXCI6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tMzIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCIzMngzMlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS00OCR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaXplc1wiOiBcIjQ4eDQ4XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTY0JHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNpemVzXCI6IFwiNjR4NjRcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tNzIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCI3Mng3MlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS0xOTIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCIxOTJ4MTkyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTUxMiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaXplc1wiOiBcIjUxMng1MTJcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAuLi5iZS5nZXRDb2xvcnNKc29uKHN1ZmlqbyBhcyBTdWZpam9zQW1iaWVudGUpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KEpTT04uc3RyaW5naWZ5KGNvbnRlbnQpLCAnYXBwbGljYXRpb24vanNvbicpKHJlcSxyZXMpO1xyXG4gICAgICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUVycihyZXEsIHJlcywgbmV4dCkodW5leHBlY3RlZChlcnIpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZ2V0Q29sb3JzSnNvbihfc3VmaWpvOiBTdWZpam9zQW1iaWVudGUpe1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFwic3RhcnRfdXJsXCI6IFwiLi4vY2FtcG9cIixcclxuICAgICAgICAgICAgXCJkaXNwbGF5XCI6IFwic3RhbmRhbG9uZVwiLFxyXG4gICAgICAgICAgICBcInRoZW1lX2NvbG9yXCI6IFwiIzNGNTFCNVwiLFxyXG4gICAgICAgICAgICBcImJhY2tncm91bmRfY29sb3JcIjogXCIjNmQ2MGVkXCJcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhZGRMb2dnZWRTZXJ2aWNlcygpe1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgc3VwZXIuYWRkTG9nZ2VkU2VydmljZXMoKTtcclxuICAgICAgICBiZS5hcHAuZ2V0KCcvbWFuaWZlc3QubWFuaWZlc3QnLCBhc3luYyBmdW5jdGlvbihyZXE6UmVxdWVzdCwgcmVzOlJlc3BvbnNlLCBfbmV4dDpOZXh0RnVuY3Rpb24pe1xyXG4gICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVGaWxlKCdzcmMvY2xpZW50L21hbmlmZXN0Lm1hbmlmZXN0Jyx7fSkocmVxLHJlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hcHAuZ2V0KCcvZmlsZScsIGFzeW5jIGZ1bmN0aW9uKHJlcTpSZXF1ZXN0LHJlczpSZXNwb25zZSl7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBiZS5pblRyYW5zYWN0aW9uKHJlcSwgXHJcbiAgICAgICAgICAgICAgICAoY2xpZW50OnBnLkNsaWVudCk9PlxyXG4gICAgICAgICAgICAgICAgY2xpZW50LnF1ZXJ5KFwic2VsZWN0IHJ1dGEgZnJvbSBhZGp1bnRvcyB3aGVyZSBpZF9hZGp1bnRvID0gJDFcIixbcmVxLnF1ZXJ5LmlkX2FkanVudG9dKVxyXG4gICAgICAgICAgICAgICAgLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB2YXIgcGF0aCA9IHJlc3VsdC52YWx1ZTtcclxuICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRmlsZShwYXRoLHt9KShyZXEscmVzKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFwcC5nZXQoJy9pbWFnZW5lcycsIGFzeW5jIGZ1bmN0aW9uKHJlcTpSZXF1ZXN0LHJlczpSZXNwb25zZSl7XHJcbiAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUoJ2xvY2FsLWltYWdlcy8nK3JlcS5xdWVyeS5wZGYse30pKHJlcSxyZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYXBwLmdldCgnL2Rvd25sb2FkL2FsbCcsYXN5bmMgZnVuY3Rpb24ocmVxOlJlcXVlc3QsIHJlczpSZXNwb25zZSwgbmV4dDooKT0+dm9pZCl7XHJcbiAgICAgICAgICAgIGlmKHJlcS51c2VyPT1udWxsIHx8IHJlcS51c2VyLnJvbCE9J2FkbWluJyl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbm8gZXN0w6EgYXV0b3JpemFkbyBhIGJhamFyc2UgdG9kbycscmVxLnVzZXIpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB6aXAgPSBuZXcgeWF6bC5aaXBGaWxlKCk7XHJcbiAgICAgICAgICAgIHppcC5vdXRwdXRTdHJlYW0ucGlwZShyZXMpO1xyXG4gICAgICAgICAgICBsZXQgYmFzZSA9ICdsb2NhbC1hdHRhY2htZW50cydcclxuICAgICAgICAgICAgbGV0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihiYXNlKTtcclxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoZmlsZXMubWFwKGFzeW5jIGZ1bmN0aW9uKGZpbGVOYW1lOnN0cmluZyl7XHJcbiAgICAgICAgICAgICAgICB2YXIgcGF0aCA9IGJhc2UrJy8nK2ZpbGVOYW1lO1xyXG4gICAgICAgICAgICAgICAgdmFyIHN0YXQgPSBhd2FpdCBmcy5zdGF0KHBhdGgpO1xyXG4gICAgICAgICAgICAgICAgaWYoc3RhdC5pc0ZpbGUoKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgemlwLmFkZEZpbGUocGF0aCxmaWxlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgemlwLmVuZCgpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhc3luYyBwb3N0Q29uZmlnKCl7XHJcbiAgICAgICAgYXdhaXQgc3VwZXIucG9zdENvbmZpZygpO1xyXG4gICAgICAgIHZhciBiZT10aGlzO1xyXG4gICAgICAgIGJlLmNhY2hlcy5tZXRhRW5jSW5jbHVpckNhc2lsbGVyb3NTYWx0b1JFTCA9IGZhbHNlO1xyXG4gICAgICAgIGF3YWl0IGJlLmluVHJhbnNhY3Rpb24obnVsbCwgYXN5bmMgZnVuY3Rpb24oY2xpZW50OnBnLkNsaWVudCl7XHJcbiAgICAgICAgICAgIHZhciBxUGVybWlzb3M9YFxyXG4gICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhyLnJvbCxqc29uYl9idWlsZF9vYmplY3QoJ3N1cGVydXNlcicsci5zdXBlcnVzZXIsJ3B1ZWRlJywoXHJcbiAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHJwLnBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhycGEuYWNjaW9uLHJwYS5oYWJpbGl0YWRvKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcm9sZXNfcGVybWlzb3MgcnBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcnBhLnJvbD1ycC5yb2wgQU5EIHJwYS5wZXJtaXNvPXJwLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgIEZST00gcm9sZXNfcGVybWlzb3MgcnBcclxuICAgICAgICAgICAgICAgICAgICBXSEVSRSBycC5yb2w9ci5yb2wgI2NvbmRIYWJpbGl0YWRvI1xyXG4gICAgICAgICAgICAgICkpKVxyXG4gICAgICAgICAgICAgIEZST00gcm9sZXMgclxyXG4gICAgICAgICAgICBgO1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0cyA9IFtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5xdWVyeShxUGVybWlzb3MucmVwbGFjZSgnI2NvbmRIYWJpbGl0YWRvIycsJycpKS5mZXRjaFVuaXF1ZVZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkocVBlcm1pc29zLnJlcGxhY2UoJyNjb25kSGFiaWxpdGFkbyMnLGAgYW5kIHJwLiR7cGcucXVvdGVJZGVudCgnaGFiaWxpdGFkbycpfWApKS5mZXRjaFVuaXF1ZVZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhhY2Npb24sdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcGEucGVybWlzbz1wLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBcclxuICAgICAgICAgICAgICAgIGApLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBiZS5jYWNoZXMucGVybWlzb3NSb2w9cmVzdWx0c1swXS52YWx1ZTtcclxuICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zUm9sU29sb1RydWU9cmVzdWx0c1sxXS52YWx1ZTtcclxuICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyPXJlc3VsdHNbMl0udmFsdWU7XHJcbiAgICAgICAgICAgIGJlLmNhY2hlcy5wZXJtaXNvc1BhcmFOYWRpZT1saWtlQXIoYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyKS5tYXAocD0+bGlrZUFyKHApLm1hcChfPT5mYWxzZSkucGxhaW4oKSkucGxhaW4oKVxyXG4gICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLmNhY2hlcy5wZXJtaXNvc1JvbFNvbG9UcnVlLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kaXIoYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kaXIoYmUuY2FjaGVzLnBlcm1pc29zUGFyYU5hZGllLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoQ2FjaGVzKCk7XHJcbiAgICAgICAgYXdhaXQgcmVnaXN0cmFyQ3JvbkpvYlBhc2FyQVByb2llKGJlKTtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGNvbmZpZ1N0YXRpY0NvbmZpZygpe1xyXG4gICAgICAgIHN1cGVyLmNvbmZpZ1N0YXRpY0NvbmZpZygpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGljQ29uZmlnKGRlZkNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBjbGllbnRJbmNsdWRlcyhyZXE6UmVxdWVzdCwgb3B0czpPcHRzQ2xpZW50UGFnZSk6Q2xpZW50TW9kdWxlRGVmaW5pdGlvbltdIHtcclxuICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgIHZhciB1bmxvZ2dlZCA9IG9wdHMgJiYgb3B0cy5vZmZsaW5lRmlsZTtcclxuICAgICAgICB2YXIgbWVudWVkUmVzb3VyY2VzOkNsaWVudE1vZHVsZURlZmluaXRpb25bXT0gdW5sb2dnZWQ/W1xyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICd1bmxvZ2dlZC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgXTpbXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL2NsaWVudC9jbGllbnQnLCBmaWxlOiAnY2xpZW50LmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIGlmKG9wdHMgJiYgb3B0cy5leHRyYUZpbGVzKXtcclxuICAgICAgICAgICAgbWVudWVkUmVzb3VyY2VzID0gbWVudWVkUmVzb3VyY2VzLmNvbmNhdChvcHRzLmV4dHJhRmlsZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZXh0ZXJuYWxSZXNvdXJjZXM6Q2xpZW50TW9kdWxlRGVmaW5pdGlvbltdID0gW1xyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlYWN0JywgbW9kUGF0aDogJ3VtZCcsIGZpbGVEZXZlbG9wbWVudDoncmVhY3QuZGV2ZWxvcG1lbnQuanMnLCBmaWxlOidyZWFjdC5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWFjdC1kb20nLCBtb2RQYXRoOiAndW1kJywgZmlsZURldmVsb3BtZW50OidyZWFjdC1kb20uZGV2ZWxvcG1lbnQuanMnLCBmaWxlOidyZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcbiAgICAgICAgICAgIC8veyB0eXBlOiAnanMnLCBtb2R1bGU6ICdAbWF0ZXJpYWwtdWkvY29yZScsIG1vZFBhdGg6ICd1bWQnLCBmaWxlRGV2ZWxvcG1lbnQ6J21hdGVyaWFsLXVpLmRldmVsb3BtZW50LmpzJywgZmlsZTonbWF0ZXJpYWwtdWkucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnQG11aS9tYXRlcmlhbCcsIG1vZFBhdGg6ICcuLi91bWQnLCBmaWxlRGV2ZWxvcG1lbnQ6J21hdGVyaWFsLXVpLmRldmVsb3BtZW50LmpzJywgZmlsZTonbWF0ZXJpYWwtdWkucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcblxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlZHV4JywgbW9kUGF0aDonLi4vZGlzdCcsIGZpbGVEZXZlbG9wbWVudDoncmVkdXguanMnLCBmaWxlOidyZWR1eC5taW4uanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVhY3QtcmVkdXgnLCBtb2RQYXRoOicuLi9kaXN0JywgZmlsZURldmVsb3BtZW50OidyZWFjdC1yZWR1eC5qcycsIGZpbGU6J3JlYWN0LXJlZHV4Lm1pbi5qcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdtZW1vaXplLW9uZScsICBmaWxlOidtZW1vaXplLW9uZS5qcycgfSxcclxuICAgICAgICAgICAgLy97IHR5cGU6ICdqcycsIG1vZHVsZTogJ3FyY29kZScsIG1vZFBhdGg6ICcuLi9idWlsZCcsIGZpbGU6ICdxcmNvZGUuanMnfSxcclxuICAgICAgICAgICAgLi4uc3VwZXIuY2xpZW50SW5jbHVkZXMocmVxLCBvcHRzKS5maWx0ZXIobT0+bS5maWxlIT0nZm9ybXVsYXJpb3MuY3NzJylcclxuICAgICAgICAgICAgLmZpbHRlcihtPT4hdW5sb2dnZWQgfHwgdHJ1ZVxyXG4gICAgICAgICAgICAgICAgJiYgbS5maWxlIT0ndmFyLWNhbC5qcydcclxuICAgICAgICAgICAgICAgICYmIG0uZmlsZSE9J3Zhci1jYWwuanMnICAgICBcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdzZXJ2aWNlLXdvcmtlci1hZG1pbicsICBmaWxlOidzZXJ2aWNlLXdvcmtlci1hZG1pbi5qcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWR1eC10eXBlZC1yZWR1Y2VyJywgbW9kUGF0aDonLi4vZGlzdCcsIGZpbGU6J3JlZHV4LXR5cGVkLXJlZHVjZXIuanMnIH1cclxuICAgICAgICBdO1xyXG4gICAgICAgIHZhciByZXNvdXJjZXM6Q2xpZW50TW9kdWxlRGVmaW5pdGlvbltdID0gW1xyXG4gICAgICAgICAgICAuLi5leHRlcm5hbFJlc291cmNlcyxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYWRhcHQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICd0aXBvcy5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2J5cGFzcy1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVkdXgtZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3JlbmRlci1nZW5lcmFsLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdhYnJpci1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnY3NzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL2NsaWVudC9jbGllbnQvY3NzJywgZmlsZTogJ21lbnUuY3NzJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnY3NzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkL2NzcycsIGZpbGU6ICdmb3JtdWxhcmlvLXJlYWN0LmNzcycsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2NzcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZC9jc3MnLCBmaWxlOiAnYm9vdHN0cmFwLm1pbi5jc3MnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICd0dGYnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQvY3NzJywgZmlsZTogJ1JvYm90by1SZWd1bGFyLnR0ZicsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgIC4uLiBtZW51ZWRSZXNvdXJjZXMsXHJcbiAgICAgICAgXVxyXG4gICAgICAgIHJldHVybiByZXNvdXJjZXNcclxuICAgICAgICAvLyAubWFwKG09Pih7Li4ubSwgZmlsZTptLmZpbGVEZXZlbG9wbWVudHx8bS5maWxlfSkpO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgcmVmcmVzaENhY2hlcygpe1xyXG4gICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudCA9IHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudCB8fCB7fTtcclxuICAgICAgICBhd2FpdCB0aGlzLmluRGJDbGllbnQobnVsbCwgYXN5bmMgKGNsaWVudCk9PntcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYSA9IChhd2FpdCBjbGllbnQucXVlcnkoYHNlbGVjdCAqIGZyb20gbm9fcmVhIG9yZGVyIGJ5IG5vX3JlYWApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjYWNoZXMnLHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWEpXHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfZ3JvdXBzID0gKGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgICAgICBzZWxlY3QgZ3J1cG8sIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWEgciBncm91cCBieSBncnVwbyBvcmRlciBieSAxXHJcbiAgICAgICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfZ3JvdXBzMCA9IChhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0IGdydXBvMCBhcyBncnVwbywganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYSByIGdyb3VwIGJ5IGdydXBvMCBvcmRlciBieSAxXHJcbiAgICAgICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwID0gKGF3YWl0IGNsaWVudC5xdWVyeShgc2VsZWN0ICogZnJvbSBub19yZWFfc3VwIG9yZGVyIGJ5IG5vX3JlYV9zdXBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY2FjaGVzJyx0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX3N1cClcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXBfZ3JvdXBzID0gKGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBncnVwb19zdXAsIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWFfc3VwIHIgZ3JvdXAgYnkgZ3J1cG9fc3VwIG9yZGVyIGJ5IDFcclxuICAgICAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXBfZ3JvdXBzMCA9IChhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgZ3J1cG8wX3N1cCBhcyBncnVwbywganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYV9zdXAgciBncm91cCBieSBncnVwbzBfc3VwIG9yZGVyIGJ5IDFcclxuICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhciA9IChhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgY29uX3JlYV9ob2dhcixvcGVyYXRpdm8sIGNvbmZpZ19zb3J0ZW8gZnJvbSBvcGVyYXRpdm9zIGpvaW4gcGFyYW1ldHJvcyB1c2luZyAob3BlcmF0aXZvKSB3aGVyZSB1bmljb19yZWdpc3Ryb1xyXG4gICAgICAgICAgICAgYCkuZmV0Y2hVbmlxdWVSb3coKSkucm93O1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdjYWNoZXMgJyx0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIgKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgY29uc29sZS5sb2coJ2NhY2hlcyBvaycpO1xyXG4gICAgfVxyXG4gICAgLy9zcWxOb3JlYUNhc2UoY2FtcG9OZWNlc2FyaW86c3RyaW5nKXtcclxuICAgIC8vICAgIHZhciBiZT10aGlzO1xyXG4gICAgLy8gICAgcmV0dXJuIGBDQVNFICR7YmUuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWEubWFwKHg9PlxyXG4gICAgLy8gICAgICAgIGAgV0hFTiBub3JlYSAgPSAke2JlLmRiLnF1b3RlTGl0ZXJhbCh4Lm5vX3JlYSl9OjppbnRlZ2VyIFRIRU4gJHtiZS5kYi5xdW90ZUxpdGVyYWwoeFtjYW1wb05lY2VzYXJpb10pfWBcclxuICAgIC8vICAgICkuam9pbignJyl9IFdIRU4gVFJVRSBUSEVOIE5VTEwgRU5EYFxyXG4gICAgLy99ICAgIFxyXG4gICAgb3ZlcnJpZGUgZ2V0Q29udGV4dChyZXE6UmVxdWVzdCk6Q29udGV4dHtcclxuICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgIHZhciBmYXRoZXJDb250ZXh0ID0gc3VwZXIuZ2V0Q29udGV4dChyZXEpO1xyXG4gICAgICAgIGlmKGZhdGhlckNvbnRleHQudXNlcil7XHJcbiAgICAgICAgICAgIGlmKHJlcS51c2VyPy5yb2wgIT1udWxsICYmIGJlLmNhY2hlcy5wZXJtaXNvc1JvbFtyZXEudXNlci5yb2xdPy5zdXBlcnVzZXIpe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtzdXBlcnVzZXI6dHJ1ZSwgcHVlZGU6IGJlLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlciwgLi4uZmF0aGVyQ29udGV4dH1cclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge3B1ZWRlOiBiZS5jYWNoZXMucGVybWlzb3NSb2xbcmVxLnVzZXIucm9sXT8ucHVlZGUsIC4uLmZhdGhlckNvbnRleHR9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtwdWVkZTpiZS5jYWNoZXMucGVybWlzb3NQYXJhTmFkaWUsIC4uLmZhdGhlckNvbnRleHR9O1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgZ2V0Q29udGV4dEZvckR1bXAoKTpDb250ZXh0e1xyXG4gICAgICAgIHZhciBmYXRoZXJDb250ZXh0ID0gc3VwZXIuZ2V0Q29udGV4dEZvckR1bXAoKTtcclxuICAgICAgICByZXR1cm4ge3N1cGVydXNlcjp0cnVlLCBwdWVkZTogdGhpcy5jYWNoZXMucGVybWlzb3NTdXBlcnVzZXIsIC4uLmZhdGhlckNvbnRleHR9O1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgYXN5bmMgZ2V0Q2xpZW50U2V0dXBGb3JTZW5kVG9Gcm9udEVuZChyZXE6UmVxdWVzdCl7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uKGF3YWl0IHN1cGVyLmdldENsaWVudFNldHVwRm9yU2VuZFRvRnJvbnRFbmQocmVxKSksXHJcbiAgICAgICAgICAgIGlkcGVyOiByZXEudXNlcj8uaWRwZXJcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjcmVhdGVSZXNvdXJjZXNGb3JDYWNoZUpzb24oKXtcclxuICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgIHZhciBqc29uUmVzdWx0ID0ge1xyXG4gICAgICAgICAgICB2ZXJzaW9uOiBBUFBfRE1fVkVSU0lPTixcclxuICAgICAgICAgICAgYXBwTmFtZTogJ2RtZW5jdScsXHJcbiAgICAgICAgICAgIGNhY2hlOiBbXHJcbiAgICAgICAgICAgICAgICBcImNhbXBvXCIsXHJcbiAgICAgICAgICAgICAgICBcIm9mZmxpbmVcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL21hdGVyaWFsLXVpLnByb2R1Y3Rpb24ubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9yZWR1eC5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3JlYWN0LXJlZHV4Lm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbWVtb2l6ZS1vbmUuanNcIixcclxuICAgICAgICAgICAgICAgIC8vXCJsaWIvcXJjb2RlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9yZXF1aXJlLWJyby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvY2FzdC1lcnJvci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbGlrZS1hci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvYmVzdC1nbG9iYWxzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9qc29uNGFsbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvanMtdG8taHRtbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvcmVkdXgtdHlwZWQtcmVkdWNlci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkbWVuY3UvYWRhcHQuanNcIixcclxuICAgICAgICAgICAgICAgIFwiZG1lbmN1L3VubG9nZ2VkLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9qcy15YW1sLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi94bHN4LmNvcmUubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9sYXp5LXNvbWUuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3NxbC10b29scy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkaWFsb2ctcHJvbWlzZS9kaWFsb2ctcHJvbWlzZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJtb21lbnQvbWluL21vbWVudC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJwaWthZGF5L3Bpa2FkYXkuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3BvbHlmaWxscy1icm8uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2JpZy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvdHlwZS1zdG9yZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvdHlwZWQtY29udHJvbHMuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2FqYXgtYmVzdC1wcm9taXNlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcIm15LWFqYXguanNcIixcclxuICAgICAgICAgICAgICAgIFwibXktc3RhcnQuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LWxvY2FsZGIuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LXdlYnNxbGRiLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9teS1sb2NhbGRiLmpzLm1hcFwiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbXktd2Vic3FsZGIuanMubWFwXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9teS10aGluZ3MuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LXRhYmxlcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbXktaW5mb3JtLW5ldC1zdGF0dXMuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LW1lbnUuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LXNraW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2NsaWVudGUtZW4tY2FzdGVsbGFuby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvc2VydmljZS13b3JrZXItYWRtaW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3JlZHV4LXR5cGVkLXJlZHVjZXIuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvb3BlcmF0aXZvcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy92YXJjYWwuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvZm9ybS1zdHJ1Y3R1cmUuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvbWV0YS1lbmMuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvZGF0b3MtZXh0LmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL2NvbnNpc3RlbmNpYXMuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvcHJvY2VzYW1pZW50by5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkbWVuY3UvdGlwb3MuanNcIixcclxuICAgICAgICAgICAgICAgIFwiZG1lbmN1L2J5cGFzcy1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImRtZW5jdS9yZWR1eC1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImRtZW5jdS9yZW5kZXItZ2VuZXJhbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkbWVuY3UvcmVuZGVyLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgIFwiZG1lbmN1L2FicmlyLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvcm93LXZhbGlkYXRvci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjbGllbnQvbWVudS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvbG9nby5wbmdcIixcclxuICAgICAgICAgICAgICAgIC8vXCJpbWcvbG9nby1kbS5wbmdcIixcclxuICAgICAgICAgICAgICAgIFwiaW1nL2xvZ28tMTI4LnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvbWFpbi1sb2FkaW5nLmdpZlwiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvYm9ycmFyLXZhbG9yLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvZm9uZG8tc2FsdGVhZG8tZXJyb3IucG5nXCIsXHJcbiAgICAgICAgICAgICAgICBcImltZy9mb25kby1zYWx0ZWFkby5wbmdcIixcclxuICAgICAgICAgICAgICAgIFwiaW1nL2JhY2tncm91bmQtdGVzdC5wbmdcIixcclxuICAgICAgICAgICAgICAgIC8vXCJjbGllbnQtc2V0dXBcIixcclxuICAgICAgICAgICAgICAgIFwiY3NzL2Jvb3RzdHJhcC5taW4uY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNzcy9mb3JtdWxhcmlvLXJlYWN0LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJwaWthZGF5L3Bpa2FkYXkuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcImRpYWxvZy1wcm9taXNlL2RpYWxvZy1wcm9taXNlLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJyZWwtZW5jL2VzdGFkb3MuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNzcy9teS10YWJsZXMuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNzcy9teS1tZW51LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjc3MvbXktdGhpbmdzLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjc3MvbWVudS5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwicmVsLWVuYy9teS10aGluZ3MyLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjc3MvZm9ybXVsYXJpby1yZWFjdC5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwiY3NzL1JvYm90by1SZWd1bGFyLnR0ZlwiXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIGZhbGxiYWNrOiBbXHJcbiAgICAgICAgICAgICAgICB7XCJwYXRoXCI6XCJsb2dpblwiLCBcImZhbGxiYWNrXCI6XCJvZmZsaW5lXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wicGF0aFwiOlwibG9nb3V0XCIsIFwiZmFsbGJhY2tcIjpcIm9mZmxpbmVcIn0sXHJcbiAgICAgICAgICAgICAgICB7XCJwYXRoXCI6XCJsb2dpbiNpPXNpbmNyb25pemFyXCIsIFwiZmFsbGJhY2tcIjpcIm9mZmxpbmVcIn0sXHJcbiAgICAgICAgICAgICAgICB7XCJwYXRoXCI6XCJtZW51I2k9c2luY3Jvbml6YXJcIiwgXCJmYWxsYmFja1wiOlwib2ZmbGluZVwifSxcclxuICAgICAgICAgICAgICAgIHtcInBhdGhcIjpcImxvZ2luI2k9Y2FtYmlhcl9tb2RvX2RtXCIsIFwiZmFsbGJhY2tcIjpcIm9mZmxpbmVcIn0sXHJcbiAgICAgICAgICAgICAgICB7XCJwYXRoXCI6XCJtZW51I2k9Y2FtYmlhcl9tb2RvX2RtXCIsIFwiZmFsbGJhY2tcIjpcIm9mZmxpbmVcIn1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGpzb25SZXN1bHRcclxuICAgIH1cclxuICAgIGdldE1lbnVDb250cm9sZXMoY29udGV4dDpDb250ZXh0KSB7IHJldHVybiBbXHJcbiAgICAgICAge21lbnVUeXBlOidwcm9jJywgbmFtZTonZW5jdWVzdGFzX3Byb2Nlc2FtaWVudG9fcGFzYXInLCBsYWJlbDogJ3Bhc2FyIGVuY3Vlc3RhcyBhIHByb2Nlc2FtaWVudG8nfSxcclxuICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncmVzdW1lbicsIHRhYmxlOidjb250cm9sX3Jlc3VtZW4nLCBzZWxlY3RlZEJ5RGVmYXVsdDp0cnVlfSxcclxuICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonZG9taW5pbycsIHRhYmxlOidjb250cm9sX2NhbXBvX2RvbWluaW8nfSxcclxuICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonem9uYScgICAsIHRhYmxlOidjb250cm9sX2NhbXBvX3pvbmEnICB9LFxyXG4gICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidjb211bmEnICwgdGFibGU6J2NvbnRyb2xfY2FtcG9fY29tdW5hJ30sXHJcbiAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J8OhcmVhJyAgICwgdGFibGU6J2NvbnRyb2xfY2FtcG9fYXJlYScgIH0sXHJcbiAgICBdfTtcclxuICAgIGdldE1lbnVWYXJpb3MoY29udGV4dDpDb250ZXh0KSB7IFxyXG4gICAgICAgIGxldCBzdWJtZW51VmFyaW9zOk1lbnVJbmZvQmFzZVtdID0gW3ttZW51VHlwZTogJ2FicmlyX2VuY3Vlc3RhJywgbmFtZTogJ2FicmlyX2VuY3Vlc3RhJ31dXHJcbiAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmVkaXRhcil7XHJcbiAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7bWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdob2phX3J1dGEnLCB0YWJsZTogJ2dyaWxsYV9ob2phX3J1dGEnLCBsYWJlbDogJ2hvamEgZGUgcnV0YSd9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpe1xyXG4gICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goe21lbnVUeXBlOidwcm9jJywgbmFtZTonZW5jdWVzdGFkb3JfZG1zX21vc3RyYXInLCBsYWJlbDonZm9yemFyIGRlc2NhcmdhIGVuY3Vlc3RhcyBETSd9KTtcclxuICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHttZW51VHlwZToncHJvYycsIG5hbWU6J2VuY3Vlc3RhX2JsYW5xdWVhcl9wcmV2aXN1YWxpemFyJywgbGFiZWw6J2JsYW5xdWVhciBlbmN1ZXN0YSd9KTtcclxuICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHttZW51VHlwZToncHJvYycsIG5hbWU6J2VuY3Vlc3RhX2JvcnJhcl9wcmV2aXN1YWxpemFyJywgbGFiZWw6J3F1aXRhciBlbmN1ZXN0YSBkZSBsYSBtdWVzdHJhJ30pO1xyXG4gICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goe21lbnVUeXBlOidwcm9jJywgbmFtZTonZW5jdWVzdGFzX2NhcGFjaXRhY2lvbl9ib3JyYXInLCBsYWJlbDoncXVpdGFyIGVuY3Vlc3RhcyBkZSBjYXBhIGRlIGxhIG11ZXN0cmEnfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpe1xyXG4gICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goe21lbnVUeXBlOidwcm9jJywgbmFtZTonaW50ZXJjYW1iaWFyX2VuY3Vlc3Rhcyd9KTtcclxuICAgICAgICB9IFxyXG4gICAgICAgIHJldHVybiB7bWVudVR5cGU6ICdtZW51JywgbmFtZTogJ3ZhcmlvcycsIG1lbnVDb250ZW50OiBzdWJtZW51VmFyaW9zfVxyXG4gICAgfVxyXG4gICAgZ2V0TWVudUFzaWduYWNpb24oY29udGV4dDpDb250ZXh0KSB7IFxyXG4gICAgICAgIGxldCBmaWx0cm9SZWNlcGNpb25pc3RhID0gY29udGV4dC51c2VyLnJvbD09J3JlY2VwY2lvbmlzdGEnID8ge3JlY2VwY2lvbmlzdGE6IGNvbnRleHQudXNlci5pZHBlcn0gOiB7fTtcclxuICAgICAgICBsZXQgc3VibWVudUFzaWduYWNpb246TWVudUluZm9CYXNlW10gPSBbXTtcclxuICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgIHN1Ym1lbnVBc2lnbmFjaW9uLnB1c2goeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2dlbmVyYWwnLCB0YWJsZTogJ2FyZWFzX2FzaWduYWNpb25fZ2VuZXJhbCcgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1Ym1lbnVBc2lnbmFjaW9uLnB1c2goXHJcbiAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdlbmN1ZXN0YWRvcicsIHRhYmxlOiAndF9lbmN1X2FyZWFzJywgZmY6IHsgdGFyZWE6ICdlbmN1JywgLi4uZmlsdHJvUmVjZXBjaW9uaXN0YSB9IH0sXHJcbiAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdpbmdyZXNhZG9yJywgIHRhYmxlOiAndF9pbmdyX2FyZWFzJywgZmY6IHsgdGFyZWE6ICdpbmdyJywgLi4uZmlsdHJvUmVjZXBjaW9uaXN0YSB9IH0sXHJcbiAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyZWN1cGVyYWRvcicsIHRhYmxlOiAndGFyZWFzX3RlbV9hc2lnbmFjaW9uX3JlY3UnLCBmZjogeyB0YXJlYV9hY3R1YWw6ICdyZWN1JywgdGFyZWE6ICdyZWN1JywgLi4uZmlsdHJvUmVjZXBjaW9uaXN0YSB9IH0sXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpe1xyXG4gICAgICAgICAgICBzdWJtZW51QXNpZ25hY2lvbi5wdXNoKFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3N1cGVydmlzb3InICwgdGFibGU6ICd0YXJlYXNfdGVtX2FzaWduYWNpb25fc3VwZScsIGZmOiB7IHRhcmVhX2FjdHVhbDogJ3N1cGUnLCB0YXJlYTogJ3N1cGUnLCAuLi5maWx0cm9SZWNlcGNpb25pc3RhIH0gfSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidhc2lnbmFjaW9uJywgbGFiZWw6J2FzaWduYWNpw7NuJyAsbWVudUNvbnRlbnQ6IHN1Ym1lbnVBc2lnbmFjaW9ufVxyXG4gICAgfVxyXG4gICAgZ2V0TWVudVJlY2VwY2lvbihjb250ZXh0OkNvbnRleHQpIHsgXHJcbiAgICAgICAgbGV0IHN1Ym1lbnVSZWNlcGNpb246TWVudUluZm9CYXNlW10gPSBbXVxyXG4gICAgICAgIHN1Ym1lbnVSZWNlcGNpb24ucHVzaChcclxuICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2VuY3Vlc3RhZG9yJywgdGFibGU6J2VuY3Vlc3RhZG9yZXNfYXNpZ25hZG9zJ30sXHJcbiAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidyZWN1cGVyYWRvcicsIHRhYmxlOidyZWN1cGVyYWRvcmVzX2FzaWduYWRvcyd9LFxyXG4gICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonaW5ncmVzYWRvcicsIHRhYmxlOidpbmdyZXNhZG9yZXNfYXNpZ25hZG9zJ30sXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpe1xyXG4gICAgICAgICAgICBzdWJtZW51UmVjZXBjaW9uLnB1c2goXHJcbiAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonc3VwZXJ2aXNvcicgLCB0YWJsZTonc3VwZXJ2aXNvcmVzX2FzaWduYWRvcycgfSxcclxuICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOiAnbWlzX3N1cGVydmlzb3JlcycgLCB0YWJsZTogJ21pc19zdXBlcnZpc29yZXNfYXNpZ25hZG9zJ31cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHttZW51VHlwZTonbWVudScsIG5hbWU6J3JlY2VwY2lvbicsIGxhYmVsOidyZWNlcGNpw7NuJyAsbWVudUNvbnRlbnQ6c3VibWVudVJlY2VwY2lvbn1cclxuICAgIH1cclxuXHJcbiAgICBnZXRNZW51Q2FydG8oY29udGV4dDpDb250ZXh0KSB7XHJcbiAgICAgICAgbGV0IHN1Ym1lbnVDYXJ0bzpNZW51SW5mb0Jhc2VbXSA9IFtdXHJcbiAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKXtcclxuICAgICAgICAgICAgc3VibWVudUNhcnRvLnB1c2goXHJcbiAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonY29tdW5hcycgICAgLCB0YWJsZTonY29tdW5hcyd9LFxyXG4gICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2JhcnJpb3MnICAgICwgdGFibGU6J2JhcnJpb3MnfSxcclxuICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidmcmFjY2lvbmVzJyAsIHRhYmxlOidmcmFjY2lvbmVzJ30sXHJcbiAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncmFkaW9zJyAgICAgLCB0YWJsZToncmFkaW9zJyB9LFxyXG4gICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J21hbnphbmFzJyAgICwgdGFibGU6J21hbnphbmFzJ30sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgcmV0dXJuIHttZW51VHlwZTonbWVudScgICwgbmFtZTonY2FydG8nLCBsYWJlbDonY2FydG9ncmFmw61hJywgbWVudUNvbnRlbnQ6c3VibWVudUNhcnRvfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbFxyXG4gICAgfVxyXG5cclxuICAgIGdldE1lbnUoY29udGV4dDpDb250ZXh0KXtcclxuICAgICAgICBsZXQgbWVudTpNZW51SW5mb0Jhc2VbXSA9IFtdO1xyXG4gICAgICAgIGlmKHRoaXMuY29uZmlnLnNlcnZlci5wb2xpY3k9PSd3ZWInKXtcclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzLnJlbGV2YXIpe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5jb25maWdbJ2NsaWVudC1zZXR1cCddLmFtYmllbnRlPT0nZGVtbycgfHwgdGhpcy5jb25maWdbJ2NsaWVudC1zZXR1cCddLmFtYmllbnRlPT0ndGVzdCcgfHwgdGhpcy5jb25maWdbJ2NsaWVudC1zZXR1cCddLmFtYmllbnRlPT0nY2FwYScpe1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7bWVudVR5cGU6J2RlbW8nLCBuYW1lOidkZW1vJywgc2VsZWN0ZWRCeURlZmF1bHQ6dHJ1ZX0pXHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goe21lbnVUeXBlOidwYXRoJywgbmFtZToncmVsZXZhbWllbnRvJywgcGF0aDonL2NhbXBvJ30pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidzaW5jcm9uaXphcl9kbScsIG5hbWU6J3NpbmNyb25pemFyJ30sXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidjYW1iaWFyX21vZG9fZG0nLCBuYW1lOidjYW1iaWFyX21vZG8nfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmVkaXRhcil7XHJcbiAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRNZW51QXNpZ25hY2lvbihjb250ZXh0KSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE1lbnVSZWNlcGNpb24oY29udGV4dClcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpe1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGFyZWFzX3RlbV9maW5fY2FtcG8nLCBsYWJlbDonZXNwZXJhIGZpbiBkZSBjYW1wbyd9KVxyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGFyZWFzX3RlbV9hbmFsaXNpc19jYW1wbycsIGxhYmVsOidhbsOhbGlzaXMgZGUgY2FtcG8nfSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidzdXBlcnZpc2lvbicsIGxhYmVsOidzdXBlcnZpc2nDs24nICxtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidzdXBlcnZpc2FyJyAsIHRhYmxlOid0YXJlYXNfdGVtX2luZ3Jlc28nLCBmZjp7dGFyZWE6J3N1cGUnLCBhc2lnbmFkbzpjb250ZXh0LnVzZXIuaWRwZXIgfSB9XHJcbiAgICAgICAgICAgICAgICAgICAgXX1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYW1wbz8uZWRpdGFyfHxjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXJ8fGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpe1xyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKHRoaXMuZ2V0TWVudVZhcmlvcyhjb250ZXh0KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyfHxjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKXtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidjb250cm9sJywgbWVudUNvbnRlbnQ6ICB0aGlzLmdldE1lbnVDb250cm9sZXMoY29udGV4dCkgfSApICA7XHJcbiAgICAgICAgICAgICAgICAgLyp7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncGFydGljaXBhY2lvbicgICAgICAgICwgdGFibGU6J2NvbnRyb2xfY2FtcG9fcGFydGljaXBhY2lvbicgIH0sKi9cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcil7XHJcbiAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZToncHJvY2VzYXInLCBtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid2YXJpYWJsZXMnICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid2YXJpYWJsZXNfY3Vlc3Rpb25hcmlvJyAgICAgLCB0YWJsZTonY2FzaWxsZXJvcycsIHRkOiB7ZWRpdGFibGU6ZmFsc2UsIGFsbG93Ont1cGRhdGU6ZmFsc2UsIGltcG9ydDogZmFsc2UsIGRlbGV0ZTpmYWxzZSwgaW5zZXJ0OmZhbHNlfX0sIGZjOlt7Y29sdW1uOid2YXJfbmFtZScsIG9wZXJhdG9yOichPVxcdTIyMDUnLCB2YWx1ZTpudWxsfV19LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonY29uc2lzdGVuY2lhcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonY29uc2lzdGVuY2lhc19jdWVzdGlvbmFyaW8nICwgdGFibGU6J2Nhc2lsbGVyb3MnLCBmZjp7dGlwb2M6J0NPTlMnfX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidpbmNvbnNpc3RlbmNpYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RhYmxhX2RhdG9zJyAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2RpY2Npb25hcmlvJyAgLCBsYWJlbDonZGljY2lvbmFyaW9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGFyZWFzX3RlbV9wcm9jZXNhbWllbnRvJywgbGFiZWw6J2VuY3Vlc3Rhcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgIF19LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgbWVudUNvbmZpZ3VyYXI6TWVudUluZm9CYXNlW10gPSBbXTtcclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyfHxjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKXtcclxuICAgICAgICAgICAgICAgIGxldCBzdWJtZW51TXVlc3RyYTpNZW51SW5mb0Jhc2VbXSA9IFtcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGVtJywgbGFiZWw6ICdURU0nfSxcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3Byb2MnLCAgbmFtZTonbXVlc3RyYV9nZW5lcmFyJywgbGFiZWw6J2dlbmVyYXIgbXVlc3RyYSd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidzZW1hbmFzJ30sXHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICBtZW51Q29uZmlndXJhci5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonbWVudScsIG5hbWU6J211ZXN0cmEnLCBsYWJlbDonbXVlc3RyYScsIG1lbnVDb250ZW50OnN1Ym1lbnVNdWVzdHJhfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYXNpbGxlcm9zX3RleHRvPy5lZGl0YXIpe1xyXG4gICAgICAgICAgICAgICAgbWVudUNvbmZpZ3VyYXIucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidtZXRhZGF0b3MnLCBtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidvcGVyYXRpdm9zJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidmb3JtdWxhcmlvcycgICAsIHRhYmxlOidjYXNpbGxlcm9zX3ByaW5jaXBhbGVzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidwbGFubycgICAgICAgICAsIHRhYmxlOidjYXNpbGxlcm9zJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid2YXJpYWJsZXMnICAgICAsIHRhYmxlOidjYXNpbGxlcm9zJywgZmM6W3tjb2x1bW46J3Zhcl9uYW1lJywgb3BlcmF0b3I6JyE9XFx1MjIwNScsIHZhbHVlOm51bGx9XX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0aXBvYycgICAgICAgICAsIGxhYmVsOid0aXBvcyBkZSBjZWxkYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RpcG9jX3RpcG9jJyAgICwgbGFiZWw6J2luY2x1c2lvbmVzIGRlIGNlbGRhcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgIF19LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihjb250ZXh0LnN1cGVydXNlcil7XHJcbiAgICAgICAgICAgICAgICBtZW51Q29uZmlndXJhci5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonbWVudScsIG5hbWU6J2VzdGFkb3NfYWNjaW9uZXNfdGFyZWFzJywgbGFiZWw6J2VzdGFkb3MvYWNjaW9uZXMvdGFyZWFzJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGFyZWFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidlc3RhZG9zJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidhY2Npb25lcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonZXN0YWRvc19hY2Npb25lcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGFyZWFzX3Byb3hpbWFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgXX0sXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J21vbWVudG9zX2NvbnNpc3RlbmNpYSd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidwYXJhbWV0cm9zJ30sXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J21vZG9zX2RtJ30sXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyIHx8IGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpe1xyXG4gICAgICAgICAgICAgICAgbWVudUNvbmZpZ3VyYXIucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOid1c3VhcmlvcycsIG1lbnVDb250ZW50OltcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3VzdWFyaW9zJywgc2VsZWN0ZWRCeURlZmF1bHQ6dHJ1ZX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidyb2xlcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncGVybWlzb3MnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3JvbGVzX3Blcm1pc29zJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgXX0sXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYobWVudUNvbmZpZ3VyYXIubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7bWVudVR5cGU6J21lbnUnLCBuYW1lOidjb25maWd1cmFyJywgbWVudUNvbnRlbnQ6bWVudUNvbmZpZ3VyYXJ9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBtZW51Q2FydG8gPSB0aGlzLmdldE1lbnVDYXJ0byhjb250ZXh0KTtcclxuICAgICAgICAgICAgaWYobWVudUNhcnRvKXtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaChtZW51Q2FydG8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7bWVudX07XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBwcmVwYXJlR2V0VGFibGVzKCl7XHJcbiAgICAgICAgdmFyIGJlPXRoaXM7XHJcbiAgICAgICAgc3VwZXIucHJlcGFyZUdldFRhYmxlcygpO1xyXG4gICAgICAgIHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uPXtcclxuICAgICAgICAgICAgLi4udGhpcy5nZXRUYWJsZURlZmluaXRpb25cclxuICAgICAgICAgICAgLCByb2xlc1xyXG4gICAgICAgICAgICAsIHVzdWFyaW9zXHJcbiAgICAgICAgICAgICwgcGVyc29uYWxcclxuICAgICAgICAgICAgLCByZWNlcGNpb25pc3Rhc1xyXG4gICAgICAgICAgICAsIGVuY3Vlc3RhZG9yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICwgaW5ncmVzYWRvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAsIHJlY3VwZXJhZG9yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICwgc3VwZXJ2aXNvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAsIG1pc19zdXBlcnZpc29yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICwgbWlzX2VuY3Vlc3RhZG9yZXNcclxuICAgICAgICAgICAgLCByZWN1cGVyYWRvcmVzXHJcbiAgICAgICAgICAgICwgc3VwZXJ2aXNvcmVzXHJcbiAgICAgICAgICAgICwgcGVyc29uYWxfcm9sXHJcbiAgICAgICAgICAgICwgcGVybWlzb3NcclxuICAgICAgICAgICAgLCByb2xlc19wZXJtaXNvc1xyXG4gICAgICAgICAgICAsIHJvbGVzX3N1Ym9yZGluYWRvc1xyXG4gICAgICAgICAgICAsIG5vX3JlYVxyXG4gICAgICAgICAgICAsIG5vX3JlYV9zdXBcclxuICAgICAgICAgICAgLCBzZW1hbmFzXHJcbiAgICAgICAgICAgICwgZXN0YWRvc1xyXG4gICAgICAgICAgICAsIGFjY2lvbmVzXHJcbiAgICAgICAgICAgICwgZXN0YWRvc19hY2Npb25lc1xyXG4gICAgICAgICAgICAsIHRhcmVhc19wcm94aW1hc1xyXG4gICAgICAgICAgICAsIHRlbVxyXG4gICAgICAgICAgICAsIGhpc3RvcmlhbF90ZW1cclxuICAgICAgICAgICAgLCBtb2Rvc19kbVxyXG4gICAgICAgICAgICAsIHBhcmFtZXRyb3NcclxuICAgICAgICAgICAgLCBvcGVyYWNpb25lc1xyXG4gICAgICAgICAgICAsIGNvbXVuYXNcclxuICAgICAgICAgICAgLCBhcmVhc1xyXG4gICAgICAgICAgICAsIHNpbmNyb25pemFjaW9uZXNcclxuICAgICAgICAgICAgLCB0YXJlYXNcclxuICAgICAgICAgICAgLCB0YXJlYXNfdGVtXHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2VuY3VcclxuICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2FzaWduYWNpb25fcmVjdVxyXG4gICAgICAgICAgICAsIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9zdXBlXHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2luZ3JcclxuICAgICAgICAgICAgLCB0YXJlYXNfYXJlYXNcclxuICAgICAgICAgICAgLCBhcmVhc19hc2lnbmFjaW9uX2dlbmVyYWxcclxuICAgICAgICAgICAgLCBncmlsbGFfaG9qYV9ydXRhXHJcbiAgICAgICAgICAgICwgdF9lbmN1X2FyZWFzXHJcbiAgICAgICAgICAgICwgdF9yZWN1X2FyZWFzXHJcbiAgICAgICAgICAgICwgdF9zdXBlX2FyZWFzXHJcbiAgICAgICAgICAgICwgdF9pbmdyX2FyZWFzXHJcbiAgICAgICAgICAgICwgbWlzX3RhcmVhc1xyXG4gICAgICAgICAgICAsIHRlbV9hc2lnbmFjaW9uXHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9yZWNlcGNpb25cclxuICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2luZ3Jlc29cclxuICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2Zpbl9jYW1wb1xyXG4gICAgICAgICAgICAsIHRhcmVhc190ZW1fcHJvY2VzYW1pZW50b1xyXG4gICAgICAgICAgICAsIHRhcmVhc190ZW1fYW5hbGlzaXNfY2FtcG9cclxuICAgICAgICAgICAgLCBtaXNfdGFyZWFzX2FyZWFzXHJcbiAgICAgICAgICAgICwgY29udHJvbF9jYW1wb1xyXG4gICAgICAgICAgICAsIGNvbnRyb2xfcmVzdW1lblxyXG4gICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fem9uYTogY29udGV4dD0+Y29udHJvbF9jYW1wbyhjb250ZXh0LCBcclxuICAgICAgICAgICAgICAgIHtub21icmU6J2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6J2NvbnRyb2wgY2FtcG8geCB6b25hIHNvbG8gY2VtZW50bycsIGNhbXBvc0NvcnRlOlt7bmFtZTonem9uYScsIHR5cGVOYW1lOid0ZXh0J31dLCBzaW5ob2dmaW46IWNvbnRleHQuYmUuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhci5jb25fcmVhX2hvZ2FyLGZpbHRyb1doZXJlOidkb21pbmlvPTMnIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fY29tdW5hOiBjb250ZXh0PT5jb250cm9sX2NhbXBvKGNvbnRleHQsIFxyXG4gICAgICAgICAgICAgICAge25vbWJyZTonY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTonY29udHJvbCBjYW1wbyB4IGNvbXVuYSBzb2xvIGNlbWVudG8nLCBjYW1wb3NDb3J0ZTpbe25hbWU6J3pvbmEnLCB0eXBlTmFtZTondGV4dCd9LHtuYW1lOiducm9jb211bmEnLCB0eXBlTmFtZTondGV4dCd9XSwgc2luaG9nZmluOiFjb250ZXh0LmJlLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIuY29uX3JlYV9ob2dhcixmaWx0cm9XaGVyZTonZG9taW5pbz0zJyB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2FyZWE6IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggYXJlYScsIGNhbXBvc0NvcnRlOlt7bmFtZTonem9uYScsIHR5cGVOYW1lOid0ZXh0J30se25hbWU6J25yb2NvbXVuYScsIHR5cGVOYW1lOid0ZXh0J30se25hbWU6J2FyZWEnLCB0eXBlTmFtZTonaW50ZWdlcid9LHtuYW1lOidwYXJ0aWNpcGFjaW9uX2EnLCB0eXBlTmFtZTondGV4dCd9LHtuYW1lOidjbGFzZV9hJywgdHlwZU5hbWU6J3RleHQnfV0gLHNpbmhvZ2ZpbjohY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXJ9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX3BhcnRpY2lwYWNpb246IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggcGFydGljaXBhY2lvbicsIGNhbXBvc0NvcnRlOlt7bmFtZToncGFydGljaXBhY2lvbicsIHR5cGVOYW1lOidiaWdpbnQnfV0sc2luaG9nZmluOiFjb250ZXh0LmJlLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIuY29uX3JlYV9ob2dhcn1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fZG9taW5pbzogY29udGV4dD0+Y29udHJvbF9jYW1wbyhjb250ZXh0LCBcclxuICAgICAgICAgICAgICAgIHtub21icmU6J2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6J2NvbnRyb2wgY2FtcG8geCBkb21pbmlvJywgY2FtcG9zQ29ydGU6W3tuYW1lOidkb21pbmlvJywgdHlwZU5hbWU6J2ludGVnZXInfV0sc2luaG9nZmluOiFjb250ZXh0LmJlLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIuY29uX3JlYV9ob2dhcn1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAsIGNvbnRyb2xfZGlhc19jYXJnYVxyXG4gICAgICAgICAgICAsIHZpdmllbmRhc1xyXG4gICAgICAgICAgICAsIHZpc2l0YXNcclxuICAgICAgICAgICAgLCBob2dhcmVzXHJcbiAgICAgICAgICAgICwgcGVyc29uYXNcclxuICAgICAgICAgICAgLCB2aXNpdGFzX3N1cFxyXG4gICAgICAgICAgICAsIGhvZ2FyZXNfc3VwXHJcbiAgICAgICAgICAgICwgcGVyc29uYXNfc3VwXHJcbiAgICAgICAgICAgICwgZGljY2lvbmFyaW9cclxuICAgICAgICAgICAgLCBkaWN2YXJcclxuICAgICAgICAgICAgLCBkaWN0cmFcclxuICAgICAgICAgICAgLCBpbmNvbnNpc3RlbmNpYXNfY3VtcGxlbl9jb25kaWNpb25cclxuICAgICAgICAgICAgLCB0ZW1fYm9ycmFkYXNcclxuICAgICAgICAgICAgLCBiYXJyaW9zXHJcbiAgICAgICAgICAgICwgZnJhY2Npb25lc1xyXG4gICAgICAgICAgICAsIHJhZGlvc1xyXG4gICAgICAgICAgICAsIG1hbnphbmFzXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdjb25zaXN0ZW5jaWFzJyxmdW5jdGlvbih0YWJsZURlZiwgY29udGV4dCl7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmVkaXRhYmxlPXRhYmxlRGVmLmVkaXRhYmxlIHx8IGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXI7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uKGZpZWxkKXtcclxuICAgICAgICAgICAgICAgIGlmKGZpZWxkLm5hbWU9PSdlcnJvcl9jb21waWxhY2lvbicpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGZpZWxkLnZpc2libGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCcqKioqKioqKioqKiogUVVJVEFSIEVTVE8gZXJyb3JfY29tcGlsYWNpb24geWEgZXMgdmlzaWJsZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBmaWVsZC52aXNpYmxlPXRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignaW5jb25zaXN0ZW5jaWFzJyxmdW5jdGlvbih0YWJsZURlZiwgY29udGV4dCl7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLnNxbD17Li4udGFibGVEZWYuc3FsLCBpc1RhYmxlOnRydWV9O1xyXG4gICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuc3BsaWNlKDIsMCxcclxuICAgICAgICAgICAgICAgIHtuYW1lOid2aXZpZW5kYScgICAgLCB0eXBlTmFtZTondGV4dCcgICAgICwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAgICAgIHtuYW1lOidob2dhcicgICAgICAgLCB0eXBlTmFtZTonYmlnaW50JyAgICwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAgICAgIHtuYW1lOidwZXJzb25hJyAgICAgLCB0eXBlTmFtZTonYmlnaW50JyAgICwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAgICAgIHtuYW1lOid2aXNpdGEnICAgICAgLCB0eXBlTmFtZTonYmlnaW50JyAgICwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGFibGVEZWYuZWRpdGFibGU9dGFibGVEZWYuZWRpdGFibGUgfHwgY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzLmp1c3RpZmljYXI7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uKGZpZWxkKXtcclxuICAgICAgICAgICAgICAgIGlmKGZpZWxkLm5hbWU9PSdwa19pbnRlZ3JhZGEnKXtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZC52aXNpYmxlPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYoZmllbGQubmFtZT09J2p1c3RpZmljYWNpb24nKXtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZC5lZGl0YWJsZT1jb250ZXh0Py5mb3JEdW1wIHx8IGNvbnRleHQ/LnB1ZWRlPy5lbmN1ZXN0YXMuanVzdGlmaWNhcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzPXRhYmxlRGVmLmZpZWxkcy5jb25jYXQoWyd0YXJlYV9hY3R1YWwnLCd0YXJlYV9hbnRlcmlvciddLm1hcChmbj0+e1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtuYW1lOiBmbiAgICwgdHlwZU5hbWU6ICd0ZXh0JyAgLCBlZGl0YWJsZTogZmFsc2UsIGluVGFibGU6IGZhbHNlfVxyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgLy9zYWNhciBjYW1wb3MgZGUgdml0YWxlcyEgXHJcbiAgICAgICAgICAgIGNvbnN0IHJlZ0V4cEZpZWxkc1ZpdGE9IG5ldyBSZWdFeHAoJ14oY29tcHxpbmZlfGNvZF9jYXVzYXxkb21pKSQnKTtcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzID0gdGFibGVEZWYuZmllbGRzLmZpbHRlcihmPT4hKHJlZ0V4cEZpZWxkc1ZpdGEudGVzdChmLm5hbWUpKSlcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB2YXIgcV9pbmNvbnNpc3Q9IHRhYmxlRGVmLnNxbCEuZnJvbVxyXG4gICAgICAgICAgICB0YWJsZURlZi5zcWwhLmZyb209YFxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdCBpLiosIHQudGFyZWFfYWN0dWFsLCB0YXJlYV9hbnRlcmlvclxyXG4gICAgICAgICAgICAgICAgICBmcm9tICR7cV9pbmNvbnNpc3R9IGkgXHJcbiAgICAgICAgICAgICAgICAgIGpvaW4gdGVtIHQgb24gaS52aXZpZW5kYT10LmVuYyBhbmQgaS5vcGVyYXRpdm89dC5vcGVyYXRpdm8gXHJcbiAgICAgICAgICAgICAgICAgIGxlZnQgam9pbiB0YXJlYXNfdGVtIHR0IG9uIHQub3BlcmF0aXZvPXR0Lm9wZXJhdGl2byBhbmQgdC5lbmM9dHQuZW5jIGFuZCB0LnRhcmVhX2FjdHVhbD10dC50YXJlYSBcclxuICAgICAgICAgICAgICAgICAgbGVmdCBqb2luIGxhdGVyYWwgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgdGFyZWEgYXMgdGFyZWFfYW50ZXJpb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gaGlzdG9yaWFsX3RlbSBodFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdC5vcGVyYXRpdm8gPSBodC5vcGVyYXRpdm8gYW5kIHQuZW5jID0gaHQuZW5jXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciBieSB0c19zYWxpZGEgZGVzY1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQgMVxyXG4gICAgICAgICAgICAgICAgICAgICkgYXMgdGEgb24gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgKSAgIFxyXG4gICAgICAgICAgICBgXHJcbiAgICAgICAgfSlcclxuICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignb3BlcmF0aXZvcycsZnVuY3Rpb24odGFibGVEZWYsIGNvbnRleHQpe1xyXG4gICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuc3BsaWNlKDIsMCx7XHJcbiAgICAgICAgICAgICAgICBuYW1lOidjb25maWdfc29ydGVvJywgXHJcbiAgICAgICAgICAgICAgICB0eXBlTmFtZTonanNvbmInLFxyXG4gICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0se1xyXG4gICAgICAgICAgICAgICAgbmFtZTonaGFiaWxpdGFjaW9uX2JvdG9uX2Zvcm11bGFyaW8nLCBcclxuICAgICAgICAgICAgICAgIHR5cGVOYW1lOidqc29uYicsXHJcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSx7XHJcbiAgICAgICAgICAgICAgICBuYW1lOidkaXNmb3JtX2NlcnJhZG8nLCBcclxuICAgICAgICAgICAgICAgIHR5cGVOYW1lOidib29sZWFuJywgXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLCBcclxuICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBjb250ZXh0Py5mb3JEdW1wfHxbJ2FkbWluJywnZGlzX2NvbmNlcHR1YWwnXS5pbmNsdWRlcyhjb250ZXh0LnVzZXIucm9sKVxyXG4gICAgICAgICAgICB9LHtcclxuICAgICAgICAgICAgICAgIG5hbWU6J2Nvbl9yZWFfaG9nYXInLCBcclxuICAgICAgICAgICAgICAgIHR5cGVOYW1lOidib29sZWFuJywgXHJcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0RGJWYWx1ZTogJ3RydWUnXHJcbiAgICAgICAgICAgIH0se1xyXG4gICAgICAgICAgICAgICAgbmFtZToncGVybWl0ZV9nZW5lcmFyX211ZXN0cmEnLCBcclxuICAgICAgICAgICAgICAgIHR5cGVOYW1lOidib29sZWFuJywgXHJcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0RGJWYWx1ZTogJ2ZhbHNlJ1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCd2YXJpYWJsZXMnLGZ1bmN0aW9uKHRhYmxlRGVmLCBjb250ZXh0KXtcclxuICAgICAgICAgICAgdmFyIGVzQWRtaW49IGNvbnRleHQ/LnVzZXIucm9sPT09J2FkbWluJztcclxuICAgICAgICAgICAgdGFibGVEZWYuZWRpdGFibGU9dGFibGVEZWYuZWRpdGFibGUgfHwgY29udGV4dD8ucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXI7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmFsbG93PXtkZWxldGU6IGVzQWRtaW59OyAgICAgICAgICAgIFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ21vbWVudG9zX2NvbnNpc3RlbmNpYScsZnVuY3Rpb24odGFibGVEZWYsIF9jb250ZXh0KXtcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnB1c2goXHJcbiAgICAgICAgICAgICAgICB7bmFtZTonY29uZGljaW9uJywgdHlwZU5hbWU6J3RleHQnICwgIG51bGxhYmxlOiBmYWxzZSwgZGVmYXVsdERiVmFsdWU6J3RydWUnfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdwYXJhbWV0cm9zJyxmdW5jdGlvbih0YWJsZURlZil7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5wdXNoKFxyXG4gICAgICAgICAgICAgICAge25hbWU6J21vZG9fZG1fZGVmZWN0bycgICwgdHlwZU5hbWU6J3RleHQnICAsIGVkaXRhYmxlOiB0cnVlLCBudWxsYWJsZTogZmFsc2UsIGRlZmF1bHREYlZhbHVlOlwiJ2NhcGEnXCJ9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0YWJsZURlZi5mb3JlaWduS2V5cyA9IHRhYmxlRGVmLmZvcmVpZ25LZXlzIHx8IFtdO1xyXG4gICAgICAgICAgICB0YWJsZURlZi5mb3JlaWduS2V5cy5wdXNoKFxyXG4gICAgICAgICAgICAgICAge3JlZmVyZW5jZXM6J21vZG9zX2RtJywgZmllbGRzOlt7c291cmNlOidtb2RvX2RtX2RlZmVjdG8nLCB0YXJnZXQ6J21vZG9fZG0nfV19XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgQXBwRG1FbmN1ID0gZW1lcmdlQXBwRG1FbmN1KGVtZXJnZUFwcFByb2Nlc2FtaWVudG8oZW1lcmdlQXBwQ29uc2lzdGVuY2lhcyhlbWVyZ2VBcHBWYXJDYWwoZW1lcmdlQXBwRGF0b3NFeHQoZW1lcmdlQXBwT3BlcmF0aXZvcyhBcHBCYWNrZW5kKSkpKSkpO1xyXG5leHBvcnQgdHlwZSBBcHBBcHBEbUVuY3VUeXBlID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBBcHBEbUVuY3U+OyJdfQ==
|
|
895
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRtZW5jdS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvYXBwLWRtZW5jdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFlBQVksQ0FBQzs7O0lBcUliLDBDQTJ5QkM7SUE3NkJELGlEQUEwTDtJQUMxTCwyREFBNkY7SUFFN0Ysd0NBQXdDO0lBRXhDLHdDQUF3QztJQVF4QywyQ0FBd0M7SUFFeEMsNkJBQTZCO0lBRTdCLGtDQUFrQztJQUNsQyxtQ0FBbUM7SUFFbkMsMkJBQW1DO0lBRW5DLCtDQUFvRDtJQUNwRCxxREFBdUQ7SUFDdkQsaUVBQTZEO0lBQzdELCtEQUF3RjtJQUN4RiwrREFBZ0U7SUFDaEUsK0RBQWdFO0lBQ2hFLCtEQUFvRTtJQUNwRSx1RUFBZ0U7SUFDaEUsK0RBQTREO0lBQzVELDZEQUEyRDtJQUMzRCw2REFBMkQ7SUFDM0QscURBQXVEO0lBQ3ZELGlFQUE2RDtJQUM3RCxxREFBdUQ7SUFDdkQseURBQXlEO0lBQ3pELHlFQUFpRTtJQUVqRSxpREFBcUQ7SUFDckQseURBQXlEO0lBQ3pELDJDQUFrRDtJQUNsRCxtREFBc0Q7SUFDdEQscURBQXVEO0lBQ3ZELDJEQUEwRDtJQUMxRCxtREFBc0Q7SUFDdEQsK0NBQW9EO0lBQ3BELHFFQUErRDtJQUMvRCxpREFBcUQ7SUFDckQseURBSW9FO0lBQ3BFLDZEQUEyRDtJQUMzRCxxRkFBNEU7SUFDNUUscUVBQStEO0lBQy9ELDZEQUEyRDtJQUMzRCw2REFBMkQ7SUFDM0QsNkRBQTJEO0lBQzNELDZEQUEyRDtJQUMzRCx5REFBeUQ7SUFDekQsaUVBQTZEO0lBQzdELDZFQUFtRTtJQUNuRSx5RUFBK0Q7SUFDL0QsNkVBQW1FO0lBQ25FLHFGQUEyRTtJQUMzRSx1RkFBNkU7SUFDN0UscUVBQStEO0lBQy9ELCtEQUE0RDtJQUM1RCxtRUFBOEQ7SUFDOUQseUVBQWlFO0lBQ2pFLHVEQUF3RDtJQUN4RCxt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QUMsSUFBSSxFQUFDLGlCQUFpQixFQUFJLFFBQVEsRUFBQyxNQUFNLEVBQUksUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBQyxRQUFRLEVBQUMsQ0FDMUcsQ0FBQztvQkFDRixRQUFRLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO29CQUNsRCxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDckIsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLENBQ2pGLENBQUM7Z0JBQ04sQ0FBQyxDQUFDLENBQUE7WUFDTixDQUFDO1NBQ0YsQ0FBQTtJQUNILENBQUM7SUFFVSxRQUFBLFNBQVMsR0FBRyxlQUFlLENBQUMsSUFBQSxzQ0FBc0IsRUFBQyxJQUFBLHNDQUFzQixFQUFDLElBQUEsK0JBQWUsRUFBQyxJQUFBLGlDQUFpQixFQUFDLElBQUEsbUNBQW1CLEVBQUMsMEJBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuaW1wb3J0ICogYXMgcHJvY2VzYW1pZW50byBmcm9tIFwicHJvY2VzYW1pZW50b1wiO1xyXG5pbXBvcnQge2VtZXJnZUFwcFByb2Nlc2FtaWVudG8sIGVtZXJnZUFwcENvbnNpc3RlbmNpYXMsIGVtZXJnZUFwcFZhckNhbCwgZW1lcmdlQXBwRGF0b3NFeHQsIGVtZXJnZUFwcE9wZXJhdGl2b3MsIEFwcEJhY2tlbmQsIENsaWVudE1vZHVsZURlZmluaXRpb24sIE9wdHNDbGllbnRQYWdlfSBmcm9tIFwicHJvY2VzYW1pZW50b1wiO1xyXG5pbXBvcnQge0FDQ0lPTl9QQVNBUl9QUk9JRSwgZ2V0T3BlcmF0aXZvQWN0dWFsLCBQcm9jZWR1cmVzRG1FbmN1fSBmcm9tIFwiLi9wcm9jZWR1cmVzLWRtZW5jdVwiO1xyXG5cclxuaW1wb3J0ICogYXMgcGcgZnJvbSBcInBnLXByb21pc2Utc3RyaWN0XCI7XHJcbmltcG9ydCB7anNvbn0gZnJvbSBcInBnLXByb21pc2Utc3RyaWN0XCI7XHJcbmltcG9ydCAqIGFzIG1pbmlUb29scyBmcm9tIFwibWluaS10b29sc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgQ2xpZW50LCBDb250ZXh0LCBDb3JlRnVuY3Rpb25QYXJhbWV0ZXJzLCBcclxuICAgIE1lbnVJbmZvQmFzZSwgXHJcbiAgICBSZXF1ZXN0LCBSZXNwb25zZSxcclxuICAgIFN1Zmlqb3NBbWJpZW50ZSxcclxufSBmcm9tIFwiLi90eXBlcy1kbWVuY3VcIjtcclxuXHJcbmltcG9ydCB7IHVuZXhwZWN0ZWQgfSBmcm9tIFwiY2FzdC1lcnJvclwiO1xyXG5cclxuaW1wb3J0ICogYXMgeWF6bCBmcm9tIFwieWF6bFwiO1xyXG5pbXBvcnQgeyBOZXh0RnVuY3Rpb24gfSBmcm9tIFwiZXhwcmVzcy1zZXJ2ZS1zdGF0aWMtY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBsaWtlQXIgZnJvbSBcImxpa2UtYXJcIjtcclxuaW1wb3J0ICogYXMgZXhwcmVzcyBmcm9tIFwiZXhwcmVzc1wiO1xyXG5cclxuaW1wb3J0IHtwcm9taXNlcyBhcyBmcyB9IGZyb20gXCJmc1wiO1xyXG5cclxuaW1wb3J0IHsgcm9sZXMgICAgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXJvbGVzXCI7XHJcbmltcG9ydCB7IHBlcnNvbmFsICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1wZXJzb25hbFwiO1xyXG5pbXBvcnQgeyByZWNlcGNpb25pc3RhcyAgICAgIH0gZnJvbSBcIi4vdGFibGUtcmVjZXBjaW9uaXN0YXNcIjtcclxuaW1wb3J0IHsgZW5jdWVzdGFkb3Jlc19hc2lnbmFkb3MsIGluZ3Jlc2Fkb3Jlc19hc2lnbmFkb3MgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IHJlY3VwZXJhZG9yZXNfYXNpZ25hZG9zIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBzdXBlcnZpc29yZXNfYXNpZ25hZG9zICB9IGZyb20gXCIuL3RhYmxlLWVuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgbWlzX3N1cGVydmlzb3Jlc19hc2lnbmFkb3MgIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBtaXNfZW5jdWVzdGFkb3JlcyAgIH0gZnJvbSBcIi4vdGFibGUtbWlzX2VuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgcmVjdXBlcmFkb3JlcyAgICAgICB9IGZyb20gXCIuL3RhYmxlLXJlY3VwZXJhZG9yZXNcIjtcclxuaW1wb3J0IHsgc3VwZXJ2aXNvcmVzICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXN1cGVydmlzb3Jlc1wiO1xyXG5pbXBvcnQgeyBwZXJzb25hbF9yb2wgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtcGVyc29uYWxfcm9sXCI7XHJcbmltcG9ydCB7IHBlcm1pc29zICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1wZXJtaXNvc1wiO1xyXG5pbXBvcnQgeyByb2xlc19wZXJtaXNvcyAgICAgIH0gZnJvbSBcIi4vdGFibGUtcm9sZXNfcGVybWlzb3NcIjtcclxuaW1wb3J0IHsgbW9kb3NfZG0gICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLW1vZG9zX2RtXCI7XHJcbmltcG9ydCB7IHBhcmFtZXRyb3MgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1wYXJhbWV0cm9zXCI7XHJcbmltcG9ydCB7IHJvbGVzX3N1Ym9yZGluYWRvcyAgfSBmcm9tIFwiLi90YWJsZS1yb2xlc19zdWJvcmRpbmFkb3NcIjtcclxuXHJcbmltcG9ydCB7bm9fcmVhICAgICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1ub19yZWFcIjtcclxuaW1wb3J0IHtub19yZWFfc3VwICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLW5vX3JlYV9zdXBcIjtcclxuaW1wb3J0IHt0ZW0gICAgICAgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXRlbVwiO1xyXG5pbXBvcnQge3NlbWFuYXMgICAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtc2VtYW5hc1wiO1xyXG5pbXBvcnQgeyB1c3VhcmlvcyAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS11c3Vhcmlvcyc7XHJcbmltcG9ydCB7IG9wZXJhY2lvbmVzICAgICAgICAgfSBmcm9tICcuL3RhYmxlLW9wZXJhY2lvbmVzJztcclxuaW1wb3J0IHsgY29tdW5hcyAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtY29tdW5hcyc7XHJcbmltcG9ydCB7IGFyZWFzICAgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWFyZWFzJztcclxuaW1wb3J0IHsgc2luY3Jvbml6YWNpb25lcyAgICB9IGZyb20gJy4vdGFibGUtc2luY3Jvbml6YWNpb25lcyc7XHJcbmltcG9ydCB7IHRhcmVhcyAgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXRhcmVhcyc7XHJcbmltcG9ydCB7IHRhcmVhc190ZW0sIFxyXG4gICAgICAgICB0YXJlYXNfdGVtX2FzaWduYWNpb25fZW5jdSwgXHJcbiAgICAgICAgIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9yZWN1LCBcclxuICAgICAgICAgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX3N1cGUsXHJcbiAgICAgICAgIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9pbmdyICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbSc7XHJcbmltcG9ydCB7IHRhcmVhc19hcmVhcyAgICAgICAgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IGFyZWFzX2FzaWduYWNpb25fZ2VuZXJhbCB9IGZyb20gJy4vdGFibGUtYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsJztcclxuaW1wb3J0IHsgZ3JpbGxhX2hvamFfcnV0YSAgICB9IGZyb20gJy4vdGFibGUtZ3JpbGxhX2hvamFfcnV0YSc7XHJcbmltcG9ydCB7IHRfZW5jdV9hcmVhcyAgICAgICAgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IHRfcmVjdV9hcmVhcyAgICAgICAgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IHRfc3VwZV9hcmVhcyAgICAgICAgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IHRfaW5ncl9hcmVhcyAgICAgICAgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IG1pc190YXJlYXMgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLW1pc190YXJlYXMnO1xyXG5pbXBvcnQgeyB0ZW1fYXNpZ25hY2lvbiAgICAgIH0gZnJvbSAnLi90YWJsZS10ZW1fYXNpZ25hY2lvbic7XHJcbmltcG9ydCB7IHRhcmVhc190ZW1fcmVjZXBjaW9ufSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW1fcmVjZXBjaW9uJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9pbmdyZXNvfSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW1faW5ncmVzbyc7XHJcbmltcG9ydCB7IHRhcmVhc190ZW1fZmluX2NhbXBvfSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW1fZmluX2NhbXBvJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9wcm9jZXNhbWllbnRvfSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW1fcHJvY2VzYW1pZW50byc7XHJcbmltcG9ydCB7IHRhcmVhc190ZW1fYW5hbGlzaXNfY2FtcG99IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9hbmFsaXNpc19jYW1wbyc7XHJcbmltcG9ydCB7IG1pc190YXJlYXNfYXJlYXMgICAgfSBmcm9tICcuL3RhYmxlLW1pc190YXJlYXNfYXJlYXMnO1xyXG5pbXBvcnQgeyBjb250cm9sX2NhbXBvICAgICAgIH0gZnJvbSAnLi90YWJsZS1jb250cm9sX2NhbXBvJztcclxuaW1wb3J0IHsgY29udHJvbF9yZXN1bWVuICAgICB9IGZyb20gJy4vdGFibGUtY29udHJvbF9yZXN1bWVuJztcclxuaW1wb3J0IHsgY29udHJvbF9kaWFzX2NhcmdhICB9IGZyb20gJy4vdGFibGUtY29udHJvbF9kaWFzX2NhcmdhJztcclxuaW1wb3J0IHsgdml2aWVuZGFzICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtdml2aWVuZGFzJztcclxuaW1wb3J0IHsgdmlzaXRhcyAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtdmlzaXRhcyc7XHJcbmltcG9ydCB7IGhvZ2FyZXMgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWhvZ2FyZXMnO1xyXG5pbXBvcnQgeyBwZXJzb25hcyAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1wZXJzb25hcyc7XHJcbmltcG9ydCB7IHZpc2l0YXNfc3VwICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXZpc2l0YXNfc3VwJztcclxuaW1wb3J0IHsgaG9nYXJlc19zdXAgICAgICAgICB9IGZyb20gJy4vdGFibGUtaG9nYXJlc19zdXAnO1xyXG5pbXBvcnQgeyBwZXJzb25hc19zdXAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1wZXJzb25hc19zdXAnO1xyXG5pbXBvcnQgeyBkaWNjaW9uYXJpbyAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1kaWNjaW9uYXJpbyc7XHJcbmltcG9ydCB7IGRpY3RyYSAgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWRpY3RyYSc7XHJcbmltcG9ydCB7IGRpY3ZhciAgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWRpY3Zhcic7XHJcblxyXG5pbXBvcnQgeyBlc3RhZG9zICAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1lc3RhZG9zJztcclxuaW1wb3J0IHsgYWNjaW9uZXMgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtYWNjaW9uZXMnO1xyXG5pbXBvcnQgeyBlc3RhZG9zX2FjY2lvbmVzICAgIH0gZnJvbSAnLi90YWJsZS1lc3RhZG9zX2FjY2lvbmVzJztcclxuaW1wb3J0IHsgdGFyZWFzX3Byb3hpbWFzICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3Byb3hpbWFzJztcclxuaW1wb3J0IHsgaGlzdG9yaWFsX3RlbSAgICAgICB9IGZyb20gJy4vdGFibGUtaGlzdG9yaWFsX3RlbSc7XHJcbmltcG9ydCB7IGluY29uc2lzdGVuY2lhc19jdW1wbGVuX2NvbmRpY2lvbiAgICAgICB9IGZyb20gJy4vdGFibGUtaW5jb25zaXN0ZW5jaWFzX2N1bXBsZW5fY29uZGljaW9uJztcclxuaW1wb3J0IHsgdGVtX2JvcnJhZGFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGVtX2JvcnJhZGFzJztcclxuaW1wb3J0IHsgYmFycmlvcyAgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLWJhcnJpb3NcIjtcclxuaW1wb3J0IHsgZnJhY2Npb25lcyAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLWZyYWNjaW9uZXNcIjtcclxuaW1wb3J0IHsgcmFkaW9zICAgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXJhZGlvc1wiO1xyXG5pbXBvcnQgeyBtYW56YW5hcyAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtbWFuemFuYXNcIjtcclxuaW1wb3J0IHsgYXJlYV9lbmNfcHJveGltYXMgICB9IGZyb20gXCIuL3RhYmxlLWFyZWFfZW5jX3Byb3hpbWFzXCI7XHJcblxyXG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy1kbWVuY3VcIjtcclxuaW1wb3J0IHtkZWZDb25maWd9IGZyb20gXCIuL2RlZi1jb25maWdcIlxyXG5pbXBvcnQgeyBQcm9jZWR1cmVEZWYgfSBmcm9tIFwiYmFja2VuZC1wbHVzXCI7XHJcbmltcG9ydCB7IHRhYmxlIH0gZnJvbSBcImNvbnNvbGVcIjtcclxuXHJcbmNvbnN0IEFQUF9ETV9WRVJTSU9OPVwiIzIyLTEyLTE1XCI7XHJcblxyXG5jb25zdCByZWdpc3RyYXJDcm9uSm9iUGFzYXJBUHJvaWUgPSBhc3luYyAoYmU6QXBwQmFja2VuZCkgPT4ge1xyXG4gICAgbGV0IHByb2NlZHVyZXMgPSBhd2FpdCBiZS5nZXRQcm9jZWR1cmVzKClcclxuICAgIHZhciBwcm9jUGFzYXIgPSBwcm9jZWR1cmVzLmZpbmQoKHByb2M6UHJvY2VkdXJlRGVmKT0+cHJvYy5hY3Rpb24gPT0gQUNDSU9OX1BBU0FSX1BST0lFKVxyXG4gICAgdmFyIGNvbnRleHQgPSBiZS5nZXRDb250ZXh0Rm9yRHVtcCgpO1xyXG4gICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChhc3luYyAoKT0+e1xyXG4gICAgICAgIHRyeXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2luaWNpYSBjcm9uIHBvc2FqZSBhIHByb2llJylcclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IGJlLmluVHJhbnNhY3Rpb24obnVsbCwgYXN5bmMgKGNsaWVudCk9PntcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuY2xpZW50PWNsaWVudDtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBwcm9jUGFzYXIuY29yZUZ1bmN0aW9uKGNvbnRleHQsW10pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInJlc3VsdCBwcm9jIHBhc2FqZSBhIHByb2llOiBcIiwgcmVzdWx0KVxyXG4gICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgZXJyb3IgcGFzYWplIGEgcHJvaWUuICR7ZXJyLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgfWZpbmFsbHl7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd0ZXJtaW5hIGNyb24gcHJvaWUnKVxyXG4gICAgICAgIH1cclxuICAgIH0sMTAwMCo2MCo2MClcclxuICAgIGJlLnNodXRkb3duQ2FsbGJhY2tMaXN0QWRkKHtcclxuICAgICAgICBtZXNzYWdlOidhcGFnYSBjcm9uIHBhc2FyIGEgcHJvaWUnLFxyXG4gICAgICAgIGZ1bjphc3luYyBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZW1lcmdlQXBwRG1FbmN1PFQgZXh0ZW5kcyBwcm9jZXNhbWllbnRvLkNvbnN0cnVjdG9yPHByb2Nlc2FtaWVudG8uQXBwUHJvY2VzYW1pZW50b1R5cGU+PihCYXNlOlQpe1xyXG4gIHJldHVybiBjbGFzcyBBcHBEbUVuY3UgZXh0ZW5kcyBCYXNle1xyXG4gICAgY29uc3RydWN0b3IoLi4uYXJnczphbnlbXSl7IFxyXG4gICAgICAgIHN1cGVyKGFyZ3MpOyBcclxuICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgPSB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgfHwge307XHJcbiAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYT1bXVxyXG4gICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfZ3JvdXBzPVtdXHJcbiAgICAgICAgdGhpcy5jYWNoZXMubWV0YUVuY0luY2x1aXJDYXNpbGxlcm9zU2FsdG9SRUwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhY2hlcy50aW1lc3RhbXBFc3RydWN0dXJhID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyID0ge307XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhc3luYyBjYW5DaGFuZ2VQYXNzKHJlcU9yQ29udGV4dCwgdXNlclRvQ2hhbmdlUGFzcyl7XHJcbiAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgYmUuaW5EYkNsaWVudChudWxsLCBhc3luYyAoY2xpZW50KT0+e1xyXG4gICAgICAgICAgICB2YXIgcSA9IGJlLmRiLnF1b3RlTGl0ZXJhbDtcclxuICAgICAgICAgICAgdmFyIHJvbCA9IHJlcU9yQ29udGV4dC51c2VyLnJvbDtcclxuICAgICAgICAgICAgcmV0dXJuIChhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ICogXHJcbiAgICAgICAgICAgICAgICAgIGZyb20gdXN1YXJpb3MgXHJcbiAgICAgICAgICAgICAgICAgIHdoZXJlIHJvbCBpbiAoc2VsZWN0IHJvbF9zdWJvcmRpbmFkbyBmcm9tIHJvbGVzX3N1Ym9yZGluYWRvcyB3aGVyZSByb2wgPSAke3Eocm9sKX0pYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICB9KVxyXG4gICAgICAgIHZhciBwdWVkZSA9ICEhcmVzdWx0LmZpbmQoKHVzZXIpPT51c2VyLnVzdWFyaW8gPT0gdXNlclRvQ2hhbmdlUGFzcyk7XHJcbiAgICAgICAgdmFyIGlzQWRtaW4gPSBiZS5pc0FkbWluKHJlcU9yQ29udGV4dCk7XHJcbiAgICAgICAgcmV0dXJuIGlzQWRtaW4gfHwgcHVlZGVcclxuICAgICAgICBcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGFzeW5jIGdldFByb2NlZHVyZXMoKXtcclxuICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgIHZhciBwcm9jZWRpbWllbnRvQVJlZW1wbGF6YXI9W1wiY2Fzb19ndWFyZGFyXCIsXCJjYXNvX3RyYWVyXCJdO1xyXG4gICAgICAgIHZhciBwYXJlbnRQcm9jID0gYXdhaXQgc3VwZXIuZ2V0UHJvY2VkdXJlcygpO1xyXG4gICAgICAgIHBhcmVudFByb2MgPSBwYXJlbnRQcm9jLmZpbHRlcigocHJvY2VkdXJlOmFueSkgPT4gIXByb2NlZGltaWVudG9BUmVlbXBsYXphci5pbmNsdWRlcyhwcm9jZWR1cmUuYWN0aW9uKSk7XHJcbiAgICAgICAgcGFyZW50UHJvYyA9IHBhcmVudFByb2MubWFwKHByb2NEZWY9PntcclxuICAgICAgICAgICAgaWYocHJvY0RlZi5hY3Rpb24gPT0gJ3RhYmxlX3JlY29yZF9zYXZlJyB8fCBwcm9jRGVmLmFjdGlvbiA9PSAndGFibGVfcmVjb3JkX2RlbGV0ZScpe1xyXG4gICAgICAgICAgICAgICAgdmFyIGNvcmVGdW5jdGlvbkludGVybm8gPSBwcm9jRGVmLmNvcmVGdW5jdGlvbjtcclxuICAgICAgICAgICAgICAgIHByb2NEZWYuY29yZUZ1bmN0aW9uID0gYXN5bmMgZnVuY3Rpb24oY29udGV4dDpDb250ZXh0LCBwYXJhbWV0ZXJzOkNvcmVGdW5jdGlvblBhcmFtZXRlcnMpe1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBjb3JlRnVuY3Rpb25JbnRlcm5vKGNvbnRleHQsIHBhcmFtZXRlcnMpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYocGFyYW1ldGVycy50YWJsZSA9PSAnY2FzaWxsZXJvcycpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiZS5jYWNoZXMudGltZXN0YW1wRXN0cnVjdHVyYSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2UgdG9jw7MgbGEgZXN0cnVjdHVyYScsIGJlLmNhY2hlcy50aW1lc3RhbXBFc3RydWN0dXJhKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBwcm9jRGVmO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgcmV0dXJuIHBhcmVudFByb2MuY29uY2F0KFByb2NlZHVyZXNEbUVuY3UpO1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgYXN5bmMgY2hlY2tEYXRhYmFzZVN0cnVjdHVyZShfY2xpZW50OkNsaWVudCl7XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhZGRTY2hyw7ZkaW5nZXJTZXJ2aWNlcyhtYWluQXBwOnByb2Nlc2FtaWVudG8uRXhwcmVzcywgYmFzZVVybDpzdHJpbmcpe1xyXG4gICAgICAgIGxldCBiZT10aGlzO1xyXG4gICAgICAgIHN1cGVyLmFkZFNjaHLDtmRpbmdlclNlcnZpY2VzKG1haW5BcHAsIGJhc2VVcmwpO1xyXG4gICAgICAgIC8vcGVybWl0byBsZXZhbnRhciBtaXMgaW1hZ2VuZXMgZW4gYXBsaWNhY2lvbmVzIGRlcGVuZGllbnRlc1xyXG4gICAgICAgIGJlLmFwcC51c2UoJy9pbWcnLCBleHByZXNzLnN0YXRpYygnbm9kZV9tb2R1bGVzL2RtZW5jdS9kaXN0L3VubG9nZ2VkL3VubG9nZ2VkL2ltZycpKVxyXG4gICAgICAgIG1haW5BcHAudXNlKGZ1bmN0aW9uKHJlcTpSZXF1ZXN0LF9yZXM6UmVzcG9uc2UsIG5leHQ6TmV4dEZ1bmN0aW9uKXtcclxuICAgICAgICAgICAgaWYocmVxLnNlc3Npb24gJiYgIXJlcS5zZXNzaW9uLmluc3RhbGwpe1xyXG4gICAgICAgICAgICAgICAgcmVxLnNlc3Npb24uaW5zdGFsbD1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCkucmVwbGFjZSgnLicsJycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG5leHQoKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwrJy9zYWx2YXInLGFzeW5jIGZ1bmN0aW9uKHJlcSxyZXMsX25leHQpe1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIHPDqSBxdWUgdm95IGEgcmVjaWJpciB1c2VyYWdlbnQgcG9yIGxvcyBtaWRkbGV3YXJlcyBkZSBCYWNrZW5kLXBsdXNcclxuICAgICAgICAgICAgdmFyIHt1c2VyYWdlbnR9ID0gcmVxO1xyXG4gICAgICAgICAgICB2YXIgaHRtbE1haW49YmUubWFpblBhZ2Uoe3VzZXJhZ2VudH0sIGZhbHNlLCB7c2tpcE1lbnU6dHJ1ZSwgb2ZmbGluZUZpbGU6dHJ1ZX0pLnRvSHRtbERvYygpO1xyXG4gICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KGh0bWxNYWluLCdodG1sJykocmVxLHJlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbWFpbkFwcC5nZXQoYmFzZVVybCsnL2NhbXBvJyxhc3luYyBmdW5jdGlvbihyZXEscmVzLF9uZXh0KXtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBzw6kgcXVlIHZveSBhIHJlY2liaXIgdXNlcmFnZW50IHBvciBsb3MgbWlkZGxld2FyZXMgZGUgQmFja2VuZC1wbHVzXHJcbiAgICAgICAgICAgIHZhciB7dXNlcmFnZW50LCB1c2VyfSA9IHJlcTtcclxuICAgICAgICAgICAgaWYodXNlcil7XHJcbiAgICAgICAgICAgICAgICAvKiogQHR5cGUge3t0eXBlOidqcycsIHNyYzpzdHJpbmd9W119ICovXHJcbiAgICAgICAgICAgICAgICB2YXIgd2ViTWFuaWZlc3RQYXRoID0gJ2NhcmdhLWRtL3dlYi1tYW5pZmVzdC53ZWJtYW5pZmVzdCc7XHJcbiAgICAgICAgICAgICAgICB2YXIgaHRtbE1haW49YmUubWFpblBhZ2Uoe3VzZXJhZ2VudCwgdXNlcn0sIGZhbHNlLCB7c2tpcE1lbnU6dHJ1ZSwgd2ViTWFuaWZlc3RQYXRoLCBvZmZsaW5lRmlsZTp0cnVlfSkudG9IdG1sRG9jKCk7XHJcbiAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZVRleHQoaHRtbE1haW4sJ2h0bWwnKShyZXEscmVzKTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICByZXMucmVkaXJlY3QoNDAxLCBiYXNlVXJsKycvbG9naW4jdz1wYXRoJnBhdGg9L2NhbXBvJylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHZhciBjcmVhdGVTZXJ2aWNlV29ya2VyID0gYXN5bmMgZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgdmFyIHN3ID0gYXdhaXQgZnMucmVhZEZpbGUoJ25vZGVfbW9kdWxlcy9zZXJ2aWNlLXdvcmtlci1hZG1pbi9kaXN0L3NlcnZpY2Utd29ya2VyLXdvLW1hbmlmZXN0LmpzJywgJ3V0ZjgnKTtcclxuICAgICAgICAgICAgdmFyIG1hbmlmZXN0ID0gYmUuY3JlYXRlUmVzb3VyY2VzRm9yQ2FjaGVKc29uKCk7XHJcbiAgICAgICAgICAgIHZhciBzd01hbmlmZXN0ID0gc3dcclxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiJy8qdmVyc2lvbiovJ1wiLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC52ZXJzaW9uKSlcclxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiJy8qYXBwTmFtZSovJ1wiLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5hcHBOYW1lKSlcclxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFtcXHMqXFwvXFwqdXJsc1RvQ2FjaGVcXCpcXC9cXHMqXFxdLywgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QuY2FjaGUpKVxyXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcW1xccypcXC9cXCpmYWxsYmFja3NcXCpcXC9cXHMqXFxdLywgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QuZmFsbGJhY2sgfHwgW10pKTtcclxuICAgICAgICAgICAgICAgIC8vLnJlcGxhY2UoXCIvI0NBQ0hFJC9cIiwgXCIvKGFcXFxcZCttXFxcXGQrcFxcXFxkK3RcXFxcZCtfZXN0cnVjdHVyYS5qcyl8KGFcXFxcZCttXFxcXGQrcFxcXFxkK3RcXFxcZCtfaGRyLmpzb24pL1wiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHN3TWFuaWZlc3RcclxuICAgICAgICB9XHJcbiAgICAgICAgbWFpbkFwcC5nZXQoYmFzZVVybCtgL3N3LW1hbmlmZXN0LmpzYCwgYXN5bmMgZnVuY3Rpb24ocmVxLCByZXMsIG5leHQpe1xyXG4gICAgICAgICAgICB0cnl7XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KGF3YWl0IGNyZWF0ZVNlcnZpY2VXb3JrZXIoKSwnYXBwbGljYXRpb24vamF2YXNjcmlwdCcpKHJlcSxyZXMpO1xyXG4gICAgICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUVycihyZXEscmVzLG5leHQpKHVuZXhwZWN0ZWQoZXJyKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsK2AvY2FyZ2EtZG0vd2ViLW1hbmlmZXN0LndlYm1hbmlmZXN0YCwgYXN5bmMgZnVuY3Rpb24ocmVxLCByZXMsIG5leHQpe1xyXG4gICAgICAgICAgICBjb25zdCBBUFBfTkFNRSA9IChhd2FpdCBiZS5pblRyYW5zYWN0aW9uKG51bGwsIChjbGllbnQ6cGcuQ2xpZW50KT0+XHJcbiAgICAgICAgICAgICAgICBjbGllbnQucXVlcnkoXCJzZWxlY3Qgb3BlcmF0aXZvIGZyb20gcGFyYW1ldHJvcyB3aGVyZSB1bmljb19yZWdpc3Ryb1wiKS5mZXRjaFVuaXF1ZVZhbHVlKClcclxuICAgICAgICAgICAgKSkudmFsdWU7XHJcbiAgICAgICAgICAgIHZhciBzdWZpam8gPSBiYXNlVXJsLmluY2x1ZGVzKCd0ZXN0JykgfHwgYmFzZVVybC5pbmNsdWRlcygnL3ByJyk/J190ZXN0JzpcclxuICAgICAgICAgICAgICAgIGJhc2VVcmwuaW5jbHVkZXMoJ2NhcGEnKT8nX2NhcGEnOicnO1xyXG4gICAgICAgICAgICB0cnl7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgICBcIm5hbWVcIjogYCR7QVBQX05BTUV9JHtzdWZpam99IFByb2dyZXNzaXZlIFdlYiBBcHBgLFxyXG4gICAgICAgICAgICAgICAgICBcInNob3J0X25hbWVcIjogYCR7QVBQX05BTUV9JHtzdWZpam99IFBXQWAsXHJcbiAgICAgICAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogYFByb2dyZXNzaXZlIFdlYiBBcHAgZm9yICR7QVBQX05BTUV9JHtzdWZpam99LmAsXHJcbiAgICAgICAgICAgICAgICAgIFwiaWNvbnNcIjogW1xyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS0zMiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaXplc1wiOiBcIjMyeDMyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTQ4JHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNpemVzXCI6IFwiNDh4NDhcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tNjQke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCI2NHg2NFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS03MiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaXplc1wiOiBcIjcyeDcyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTE5MiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaXplc1wiOiBcIjE5MngxOTJcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tNTEyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNpemVzXCI6IFwiNTEyeDUxMlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgIC4uLmJlLmdldENvbG9yc0pzb24oc3VmaWpvIGFzIFN1Zmlqb3NBbWJpZW50ZSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZVRleHQoSlNPTi5zdHJpbmdpZnkoY29udGVudCksICdhcHBsaWNhdGlvbi9qc29uJykocmVxLHJlcyk7XHJcbiAgICAgICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRXJyKHJlcSwgcmVzLCBuZXh0KSh1bmV4cGVjdGVkKGVycikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBnZXRDb2xvcnNKc29uKF9zdWZpam86IFN1Zmlqb3NBbWJpZW50ZSl7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgXCJzdGFydF91cmxcIjogXCIuLi9jYW1wb1wiLFxyXG4gICAgICAgICAgICBcImRpc3BsYXlcIjogXCJzdGFuZGFsb25lXCIsXHJcbiAgICAgICAgICAgIFwidGhlbWVfY29sb3JcIjogXCIjM0Y1MUI1XCIsXHJcbiAgICAgICAgICAgIFwiYmFja2dyb3VuZF9jb2xvclwiOiBcIiM2ZDYwZWRcIlxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGFkZExvZ2dlZFNlcnZpY2VzKCl7XHJcbiAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICBzdXBlci5hZGRMb2dnZWRTZXJ2aWNlcygpO1xyXG4gICAgICAgIGJlLmFwcC5nZXQoJy9tYW5pZmVzdC5tYW5pZmVzdCcsIGFzeW5jIGZ1bmN0aW9uKHJlcTpSZXF1ZXN0LCByZXM6UmVzcG9uc2UsIF9uZXh0Ok5leHRGdW5jdGlvbil7XHJcbiAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUoJ3NyYy9jbGllbnQvbWFuaWZlc3QubWFuaWZlc3QnLHt9KShyZXEscmVzKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFwcC5nZXQoJy9maWxlJywgYXN5bmMgZnVuY3Rpb24ocmVxOlJlcXVlc3QscmVzOlJlc3BvbnNlKXtcclxuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGJlLmluVHJhbnNhY3Rpb24ocmVxLCBcclxuICAgICAgICAgICAgICAgIChjbGllbnQ6cGcuQ2xpZW50KT0+XHJcbiAgICAgICAgICAgICAgICBjbGllbnQucXVlcnkoXCJzZWxlY3QgcnV0YSBmcm9tIGFkanVudG9zIHdoZXJlIGlkX2FkanVudG8gPSAkMVwiLFtyZXEucXVlcnkuaWRfYWRqdW50b10pXHJcbiAgICAgICAgICAgICAgICAuZmV0Y2hVbmlxdWVWYWx1ZSgpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHZhciBwYXRoID0gcmVzdWx0LnZhbHVlO1xyXG4gICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVGaWxlKHBhdGgse30pKHJlcSxyZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYXBwLmdldCgnL2ltYWdlbmVzJywgYXN5bmMgZnVuY3Rpb24ocmVxOlJlcXVlc3QscmVzOlJlc3BvbnNlKXtcclxuICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRmlsZSgnbG9jYWwtaW1hZ2VzLycrcmVxLnF1ZXJ5LnBkZix7fSkocmVxLHJlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hcHAuZ2V0KCcvZG93bmxvYWQvYWxsJyxhc3luYyBmdW5jdGlvbihyZXE6UmVxdWVzdCwgcmVzOlJlc3BvbnNlLCBuZXh0OigpPT52b2lkKXtcclxuICAgICAgICAgICAgaWYocmVxLnVzZXI9PW51bGwgfHwgcmVxLnVzZXIucm9sIT0nYWRtaW4nKXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdubyBlc3TDoSBhdXRvcml6YWRvIGEgYmFqYXJzZSB0b2RvJyxyZXEudXNlcilcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHppcCA9IG5ldyB5YXpsLlppcEZpbGUoKTtcclxuICAgICAgICAgICAgemlwLm91dHB1dFN0cmVhbS5waXBlKHJlcyk7XHJcbiAgICAgICAgICAgIGxldCBiYXNlID0gJ2xvY2FsLWF0dGFjaG1lbnRzJ1xyXG4gICAgICAgICAgICBsZXQgZmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKGJhc2UpO1xyXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChmaWxlcy5tYXAoYXN5bmMgZnVuY3Rpb24oZmlsZU5hbWU6c3RyaW5nKXtcclxuICAgICAgICAgICAgICAgIHZhciBwYXRoID0gYmFzZSsnLycrZmlsZU5hbWU7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3RhdCA9IGF3YWl0IGZzLnN0YXQocGF0aCk7XHJcbiAgICAgICAgICAgICAgICBpZihzdGF0LmlzRmlsZSgpKXtcclxuICAgICAgICAgICAgICAgICAgICB6aXAuYWRkRmlsZShwYXRoLGZpbGVOYW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB6aXAuZW5kKCk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGFzeW5jIHBvc3RDb25maWcoKXtcclxuICAgICAgICBhd2FpdCBzdXBlci5wb3N0Q29uZmlnKCk7XHJcbiAgICAgICAgdmFyIGJlPXRoaXM7XHJcbiAgICAgICAgYmUuY2FjaGVzLm1ldGFFbmNJbmNsdWlyQ2FzaWxsZXJvc1NhbHRvUkVMID0gZmFsc2U7XHJcbiAgICAgICAgYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihudWxsLCBhc3luYyBmdW5jdGlvbihjbGllbnQ6cGcuQ2xpZW50KXtcclxuICAgICAgICAgICAgdmFyIHFQZXJtaXNvcz1gXHJcbiAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHIucm9sLGpzb25iX2J1aWxkX29iamVjdCgnc3VwZXJ1c2VyJyxyLnN1cGVydXNlciwncHVlZGUnLChcclxuICAgICAgICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2cocnAucGVybWlzbywoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHJwYS5hY2Npb24scnBhLmhhYmlsaXRhZG8pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSByb2xlc19wZXJtaXNvcyBycGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBycGEucm9sPXJwLnJvbCBBTkQgcnBhLnBlcm1pc289cnAucGVybWlzb1xyXG4gICAgICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICAgICAgICAgRlJPTSByb2xlc19wZXJtaXNvcyBycFxyXG4gICAgICAgICAgICAgICAgICAgIFdIRVJFIHJwLnJvbD1yLnJvbCAjY29uZEhhYmlsaXRhZG8jXHJcbiAgICAgICAgICAgICAgKSkpXHJcbiAgICAgICAgICAgICAgRlJPTSByb2xlcyByXHJcbiAgICAgICAgICAgIGA7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHRzID0gW1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KHFQZXJtaXNvcy5yZXBsYWNlKCcjY29uZEhhYmlsaXRhZG8jJywnJykpLmZldGNoVW5pcXVlVmFsdWUoKSxcclxuICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5xdWVyeShxUGVybWlzb3MucmVwbGFjZSgnI2NvbmRIYWJpbGl0YWRvIycsYCBhbmQgcnAuJHtwZy5xdW90ZUlkZW50KCdoYWJpbGl0YWRvJyl9YCkpLmZldGNoVW5pcXVlVmFsdWUoKSxcclxuICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2cocGVybWlzbywoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKGFjY2lvbix0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcGVybWlzb3MgcGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBwYS5wZXJtaXNvPXAucGVybWlzb1xyXG4gICAgICAgICAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgICAgICAgICAgIEZST00gcGVybWlzb3MgcFxyXG4gICAgICAgICAgICAgICAgYCkuZmV0Y2hVbmlxdWVWYWx1ZSgpXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIGJlLmNhY2hlcy5wZXJtaXNvc1JvbD1yZXN1bHRzWzBdLnZhbHVlO1xyXG4gICAgICAgICAgICBiZS5jYWNoZXMucGVybWlzb3NSb2xTb2xvVHJ1ZT1yZXN1bHRzWzFdLnZhbHVlO1xyXG4gICAgICAgICAgICBiZS5jYWNoZXMucGVybWlzb3NTdXBlcnVzZXI9cmVzdWx0c1syXS52YWx1ZTtcclxuICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zUGFyYU5hZGllPWxpa2VBcihiZS5jYWNoZXMucGVybWlzb3NTdXBlcnVzZXIpLm1hcChwPT5saWtlQXIocCkubWFwKF89PmZhbHNlKS5wbGFpbigpKS5wbGFpbigpXHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kaXIoYmUuY2FjaGVzLnBlcm1pc29zUm9sU29sb1RydWUse2RlcHRoOjl9KTtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRpcihiZS5jYWNoZXMucGVybWlzb3NTdXBlcnVzZXIse2RlcHRoOjl9KTtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRpcihiZS5jYWNoZXMucGVybWlzb3NQYXJhTmFkaWUse2RlcHRoOjl9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hDYWNoZXMoKTtcclxuICAgICAgICBhd2FpdCByZWdpc3RyYXJDcm9uSm9iUGFzYXJBUHJvaWUoYmUpO1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgY29uZmlnU3RhdGljQ29uZmlnKCl7XHJcbiAgICAgICAgc3VwZXIuY29uZmlnU3RhdGljQ29uZmlnKCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0aWNDb25maWcoZGVmQ29uZmlnKTtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGNsaWVudEluY2x1ZGVzKHJlcTpSZXF1ZXN0LCBvcHRzOk9wdHNDbGllbnRQYWdlKTpDbGllbnRNb2R1bGVEZWZpbml0aW9uW10ge1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHVubG9nZ2VkID0gb3B0cyAmJiBvcHRzLm9mZmxpbmVGaWxlO1xyXG4gICAgICAgIHZhciBtZW51ZWRSZXNvdXJjZXM6Q2xpZW50TW9kdWxlRGVmaW5pdGlvbltdPSB1bmxvZ2dlZD9bXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3VubG9nZ2VkLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICBdOltcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vY2xpZW50L2NsaWVudCcsIGZpbGU6ICdjbGllbnQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgaWYob3B0cyAmJiBvcHRzLmV4dHJhRmlsZXMpe1xyXG4gICAgICAgICAgICBtZW51ZWRSZXNvdXJjZXMgPSBtZW51ZWRSZXNvdXJjZXMuY29uY2F0KG9wdHMuZXh0cmFGaWxlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBleHRlcm5hbFJlc291cmNlczpDbGllbnRNb2R1bGVEZWZpbml0aW9uW10gPSBbXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVhY3QnLCBtb2RQYXRoOiAndW1kJywgZmlsZURldmVsb3BtZW50OidyZWFjdC5kZXZlbG9wbWVudC5qcycsIGZpbGU6J3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlYWN0LWRvbScsIG1vZFBhdGg6ICd1bWQnLCBmaWxlRGV2ZWxvcG1lbnQ6J3JlYWN0LWRvbS5kZXZlbG9wbWVudC5qcycsIGZpbGU6J3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuICAgICAgICAgICAgLy97IHR5cGU6ICdqcycsIG1vZHVsZTogJ0BtYXRlcmlhbC11aS9jb3JlJywgbW9kUGF0aDogJ3VtZCcsIGZpbGVEZXZlbG9wbWVudDonbWF0ZXJpYWwtdWkuZGV2ZWxvcG1lbnQuanMnLCBmaWxlOidtYXRlcmlhbC11aS5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdAbXVpL21hdGVyaWFsJywgbW9kUGF0aDogJy4uL3VtZCcsIGZpbGVEZXZlbG9wbWVudDonbWF0ZXJpYWwtdWkuZGV2ZWxvcG1lbnQuanMnLCBmaWxlOidtYXRlcmlhbC11aS5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVkdXgnLCBtb2RQYXRoOicuLi9kaXN0JywgZmlsZURldmVsb3BtZW50OidyZWR1eC5qcycsIGZpbGU6J3JlZHV4Lm1pbi5qcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWFjdC1yZWR1eCcsIG1vZFBhdGg6Jy4uL2Rpc3QnLCBmaWxlRGV2ZWxvcG1lbnQ6J3JlYWN0LXJlZHV4LmpzJywgZmlsZToncmVhY3QtcmVkdXgubWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ21lbW9pemUtb25lJywgIGZpbGU6J21lbW9pemUtb25lLmpzJyB9LFxyXG4gICAgICAgICAgICAvL3sgdHlwZTogJ2pzJywgbW9kdWxlOiAncXJjb2RlJywgbW9kUGF0aDogJy4uL2J1aWxkJywgZmlsZTogJ3FyY29kZS5qcyd9LFxyXG4gICAgICAgICAgICAuLi5zdXBlci5jbGllbnRJbmNsdWRlcyhyZXEsIG9wdHMpLmZpbHRlcihtPT5tLmZpbGUhPSdmb3JtdWxhcmlvcy5jc3MnKVxyXG4gICAgICAgICAgICAuZmlsdGVyKG09PiF1bmxvZ2dlZCB8fCB0cnVlXHJcbiAgICAgICAgICAgICAgICAmJiBtLmZpbGUhPSd2YXItY2FsLmpzJ1xyXG4gICAgICAgICAgICAgICAgJiYgbS5maWxlIT0ndmFyLWNhbC5qcycgICAgIFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3NlcnZpY2Utd29ya2VyLWFkbWluJywgIGZpbGU6J3NlcnZpY2Utd29ya2VyLWFkbWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlZHV4LXR5cGVkLXJlZHVjZXInLCBtb2RQYXRoOicuLi9kaXN0JywgZmlsZToncmVkdXgtdHlwZWQtcmVkdWNlci5qcycgfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdmFyIHJlc291cmNlczpDbGllbnRNb2R1bGVEZWZpbml0aW9uW10gPSBbXHJcbiAgICAgICAgICAgIC4uLmV4dGVybmFsUmVzb3VyY2VzLFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdhZGFwdC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3RpcG9zLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYnlwYXNzLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZWR1eC1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWdlbmVyYWwuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZW5kZXItZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2FicmlyLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdjc3MnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vY2xpZW50L2NsaWVudC9jc3MnLCBmaWxlOiAnbWVudS5jc3MnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdjc3MnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQvY3NzJywgZmlsZTogJ2Zvcm11bGFyaW8tcmVhY3QuY3NzJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnY3NzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkL2NzcycsIGZpbGU6ICdib290c3RyYXAubWluLmNzcycsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ3R0ZicsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZC9jc3MnLCBmaWxlOiAnUm9ib3RvLVJlZ3VsYXIudHRmJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgLi4uIG1lbnVlZFJlc291cmNlcyxcclxuICAgICAgICBdXHJcbiAgICAgICAgcmV0dXJuIHJlc291cmNlc1xyXG4gICAgICAgIC8vIC5tYXAobT0+KHsuLi5tLCBmaWxlOm0uZmlsZURldmVsb3BtZW50fHxtLmZpbGV9KSk7XHJcbiAgICB9XHJcbiAgICBhc3luYyByZWZyZXNoQ2FjaGVzKCl7XHJcbiAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50ID0gdGhpcy5jYWNoZXMudGFibGVDb250ZW50IHx8IHt9O1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaW5EYkNsaWVudChudWxsLCBhc3luYyAoY2xpZW50KT0+e1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhID0gKGF3YWl0IGNsaWVudC5xdWVyeShgc2VsZWN0ICogZnJvbSBub19yZWEgb3JkZXIgYnkgbm9fcmVhYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhY2hlcycsdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYSlcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHMgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgIHNlbGVjdCBncnVwbywganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYSByIGdyb3VwIGJ5IGdydXBvIG9yZGVyIGJ5IDFcclxuICAgICAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHMwID0gKGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgICAgICBzZWxlY3QgZ3J1cG8wIGFzIGdydXBvLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhIHIgZ3JvdXAgYnkgZ3J1cG8wIG9yZGVyIGJ5IDFcclxuICAgICAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXAgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBzZWxlY3QgKiBmcm9tIG5vX3JlYV9zdXAgb3JkZXIgYnkgbm9fcmVhX3N1cGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjYWNoZXMnLHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwKVxyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX3N1cF9ncm91cHMgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgc2VsZWN0IGdydXBvX3N1cCwganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYV9zdXAgciBncm91cCBieSBncnVwb19zdXAgb3JkZXIgYnkgMVxyXG4gICAgICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX3N1cF9ncm91cHMwID0gKGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBncnVwbzBfc3VwIGFzIGdydXBvLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhX3N1cCByIGdyb3VwIGJ5IGdydXBvMF9zdXAgb3JkZXIgYnkgMVxyXG4gICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyID0gKGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBjb25fcmVhX2hvZ2FyLG9wZXJhdGl2bywgY29uZmlnX3NvcnRlbyBmcm9tIG9wZXJhdGl2b3Mgam9pbiBwYXJhbWV0cm9zIHVzaW5nIChvcGVyYXRpdm8pIHdoZXJlIHVuaWNvX3JlZ2lzdHJvXHJcbiAgICAgICAgICAgICBgKS5mZXRjaFVuaXF1ZVJvdygpKS5yb3c7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ2NhY2hlcyAnLHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhciApXHJcbiAgICAgICAgfSlcclxuICAgICAgICBjb25zb2xlLmxvZygnY2FjaGVzIG9rJyk7XHJcbiAgICB9XHJcbiAgICAvL3NxbE5vcmVhQ2FzZShjYW1wb05lY2VzYXJpbzpzdHJpbmcpe1xyXG4gICAgLy8gICAgdmFyIGJlPXRoaXM7XHJcbiAgICAvLyAgICByZXR1cm4gYENBU0UgJHtiZS5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYS5tYXAoeD0+XHJcbiAgICAvLyAgICAgICAgYCBXSEVOIG5vcmVhICA9ICR7YmUuZGIucXVvdGVMaXRlcmFsKHgubm9fcmVhKX06OmludGVnZXIgVEhFTiAke2JlLmRiLnF1b3RlTGl0ZXJhbCh4W2NhbXBvTmVjZXNhcmlvXSl9YFxyXG4gICAgLy8gICAgKS5qb2luKCcnKX0gV0hFTiBUUlVFIFRIRU4gTlVMTCBFTkRgXHJcbiAgICAvL30gICAgXHJcbiAgICBvdmVycmlkZSBnZXRDb250ZXh0KHJlcTpSZXF1ZXN0KTpDb250ZXh0e1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIGZhdGhlckNvbnRleHQgPSBzdXBlci5nZXRDb250ZXh0KHJlcSk7XHJcbiAgICAgICAgaWYoZmF0aGVyQ29udGV4dC51c2VyKXtcclxuICAgICAgICAgICAgaWYocmVxLnVzZXI/LnJvbCAhPW51bGwgJiYgYmUuY2FjaGVzLnBlcm1pc29zUm9sW3JlcS51c2VyLnJvbF0/LnN1cGVydXNlcil7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge3N1cGVydXNlcjp0cnVlLCBwdWVkZTogYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyLCAuLi5mYXRoZXJDb250ZXh0fVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7cHVlZGU6IGJlLmNhY2hlcy5wZXJtaXNvc1JvbFtyZXEudXNlci5yb2xdPy5wdWVkZSwgLi4uZmF0aGVyQ29udGV4dH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge3B1ZWRlOmJlLmNhY2hlcy5wZXJtaXNvc1BhcmFOYWRpZSwgLi4uZmF0aGVyQ29udGV4dH07XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBnZXRDb250ZXh0Rm9yRHVtcCgpOkNvbnRleHR7XHJcbiAgICAgICAgdmFyIGZhdGhlckNvbnRleHQgPSBzdXBlci5nZXRDb250ZXh0Rm9yRHVtcCgpO1xyXG4gICAgICAgIHJldHVybiB7c3VwZXJ1c2VyOnRydWUsIHB1ZWRlOiB0aGlzLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlciwgLi4uZmF0aGVyQ29udGV4dH07XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhc3luYyBnZXRDbGllbnRTZXR1cEZvclNlbmRUb0Zyb250RW5kKHJlcTpSZXF1ZXN0KXtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi4oYXdhaXQgc3VwZXIuZ2V0Q2xpZW50U2V0dXBGb3JTZW5kVG9Gcm9udEVuZChyZXEpKSxcclxuICAgICAgICAgICAgaWRwZXI6IHJlcS51c2VyPy5pZHBlclxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNyZWF0ZVJlc291cmNlc0ZvckNhY2hlSnNvbigpe1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIGpzb25SZXN1bHQgPSB7XHJcbiAgICAgICAgICAgIHZlcnNpb246IEFQUF9ETV9WRVJTSU9OLFxyXG4gICAgICAgICAgICBhcHBOYW1lOiAnZG1lbmN1JyxcclxuICAgICAgICAgICAgY2FjaGU6IFtcclxuICAgICAgICAgICAgICAgIFwiY2FtcG9cIixcclxuICAgICAgICAgICAgICAgIFwib2ZmbGluZVwiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvcmVhY3QucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbWF0ZXJpYWwtdWkucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3JlZHV4Lm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvcmVhY3QtcmVkdXgubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9tZW1vaXplLW9uZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgLy9cImxpYi9xcmNvZGUuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3JlcXVpcmUtYnJvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9jYXN0LWVycm9yLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9saWtlLWFyLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9iZXN0LWdsb2JhbHMuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2pzb240YWxsLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9qcy10by1odG1sLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9yZWR1eC10eXBlZC1yZWR1Y2VyLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImRtZW5jdS9hZGFwdC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkbWVuY3UvdW5sb2dnZWQuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2pzLXlhbWwuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3hsc3guY29yZS5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2xhenktc29tZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvc3FsLXRvb2xzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImRpYWxvZy1wcm9taXNlL2RpYWxvZy1wcm9taXNlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcIm1vbWVudC9taW4vbW9tZW50LmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcInBpa2FkYXkvcGlrYWRheS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvcG9seWZpbGxzLWJyby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvYmlnLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi90eXBlLXN0b3JlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi90eXBlZC1jb250cm9scy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvYWpheC1iZXN0LXByb21pc2UuanNcIixcclxuICAgICAgICAgICAgICAgIFwibXktYWpheC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJteS1zdGFydC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbXktbG9jYWxkYi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbXktd2Vic3FsZGIuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LWxvY2FsZGIuanMubWFwXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9teS13ZWJzcWxkYi5qcy5tYXBcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LXRoaW5ncy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbXktdGFibGVzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9teS1pbmZvcm0tbmV0LXN0YXR1cy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbXktbWVudS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbXktc2tpbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvY2xpZW50ZS1lbi1jYXN0ZWxsYW5vLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9zZXJ2aWNlLXdvcmtlci1hZG1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvcmVkdXgtdHlwZWQtcmVkdWNlci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9vcGVyYXRpdm9zLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL3ZhcmNhbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9mb3JtLXN0cnVjdHVyZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9tZXRhLWVuYy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9kYXRvcy1leHQuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvY29uc2lzdGVuY2lhcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9wcm9jZXNhbWllbnRvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImRtZW5jdS90aXBvcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkbWVuY3UvYnlwYXNzLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgIFwiZG1lbmN1L3JlZHV4LWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgIFwiZG1lbmN1L3JlbmRlci1nZW5lcmFsLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImRtZW5jdS9yZW5kZXItZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkbWVuY3UvYWJyaXItZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9yb3ctdmFsaWRhdG9yLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNsaWVudC9tZW51LmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImltZy9sb2dvLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgLy9cImltZy9sb2dvLWRtLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvbG9nby0xMjgucG5nXCIsXHJcbiAgICAgICAgICAgICAgICBcImltZy9tYWluLWxvYWRpbmcuZ2lmXCIsXHJcbiAgICAgICAgICAgICAgICBcImltZy9ib3JyYXItdmFsb3IucG5nXCIsXHJcbiAgICAgICAgICAgICAgICBcImltZy9mb25kby1zYWx0ZWFkby1lcnJvci5wbmdcIixcclxuICAgICAgICAgICAgICAgIFwiaW1nL2ZvbmRvLXNhbHRlYWRvLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvYmFja2dyb3VuZC10ZXN0LnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgLy9cImNsaWVudC1zZXR1cFwiLFxyXG4gICAgICAgICAgICAgICAgXCJjc3MvYm9vdHN0cmFwLm1pbi5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwiY3NzL2Zvcm11bGFyaW8tcmVhY3QuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcInBpa2FkYXkvcGlrYWRheS5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwiZGlhbG9nLXByb21pc2UvZGlhbG9nLXByb21pc2UuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcInJlbC1lbmMvZXN0YWRvcy5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwiY3NzL215LXRhYmxlcy5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwiY3NzL215LW1lbnUuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNzcy9teS10aGluZ3MuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNzcy9tZW51LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJyZWwtZW5jL215LXRoaW5nczIuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNzcy9mb3JtdWxhcmlvLXJlYWN0LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjc3MvUm9ib3RvLVJlZ3VsYXIudHRmXCJcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgZmFsbGJhY2s6IFtcclxuICAgICAgICAgICAgICAgIHtcInBhdGhcIjpcImxvZ2luXCIsIFwiZmFsbGJhY2tcIjpcIm9mZmxpbmVcIn0sXHJcbiAgICAgICAgICAgICAgICB7XCJwYXRoXCI6XCJsb2dvdXRcIiwgXCJmYWxsYmFja1wiOlwib2ZmbGluZVwifSxcclxuICAgICAgICAgICAgICAgIHtcInBhdGhcIjpcImxvZ2luI2k9c2luY3Jvbml6YXJcIiwgXCJmYWxsYmFja1wiOlwib2ZmbGluZVwifSxcclxuICAgICAgICAgICAgICAgIHtcInBhdGhcIjpcIm1lbnUjaT1zaW5jcm9uaXphclwiLCBcImZhbGxiYWNrXCI6XCJvZmZsaW5lXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wicGF0aFwiOlwibG9naW4jaT1jYW1iaWFyX21vZG9fZG1cIiwgXCJmYWxsYmFja1wiOlwib2ZmbGluZVwifSxcclxuICAgICAgICAgICAgICAgIHtcInBhdGhcIjpcIm1lbnUjaT1jYW1iaWFyX21vZG9fZG1cIiwgXCJmYWxsYmFja1wiOlwib2ZmbGluZVwifVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4ganNvblJlc3VsdFxyXG4gICAgfVxyXG4gICAgZ2V0TWVudUNvbnRyb2xlcyhjb250ZXh0OkNvbnRleHQpIHsgcmV0dXJuIFtcclxuICAgICAgICB7bWVudVR5cGU6J3Byb2MnLCBuYW1lOidlbmN1ZXN0YXNfcHJvY2VzYW1pZW50b19wYXNhcicsIGxhYmVsOiAncGFzYXIgZW5jdWVzdGFzIGEgcHJvY2VzYW1pZW50byd9LFxyXG4gICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidyZXN1bWVuJywgdGFibGU6J2NvbnRyb2xfcmVzdW1lbicsIHNlbGVjdGVkQnlEZWZhdWx0OnRydWV9LFxyXG4gICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidkb21pbmlvJywgdGFibGU6J2NvbnRyb2xfY2FtcG9fZG9taW5pbyd9LFxyXG4gICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid6b25hJyAgICwgdGFibGU6J2NvbnRyb2xfY2FtcG9fem9uYScgIH0sXHJcbiAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2NvbXVuYScgLCB0YWJsZTonY29udHJvbF9jYW1wb19jb211bmEnfSxcclxuICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonw6FyZWEnICAgLCB0YWJsZTonY29udHJvbF9jYW1wb19hcmVhJyAgfSxcclxuICAgIF19O1xyXG4gICAgZ2V0TWVudVZhcmlvcyhjb250ZXh0OkNvbnRleHQpIHsgXHJcbiAgICAgICAgbGV0IHN1Ym1lbnVWYXJpb3M6TWVudUluZm9CYXNlW10gPSBbe21lbnVUeXBlOiAnYWJyaXJfZW5jdWVzdGEnLCBuYW1lOiAnYWJyaXJfZW5jdWVzdGEnfV1cclxuICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYW1wbz8uZWRpdGFyKXtcclxuICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHttZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2hvamFfcnV0YScsIHRhYmxlOiAnZ3JpbGxhX2hvamFfcnV0YScsIGxhYmVsOiAnaG9qYSBkZSBydXRhJ30pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcil7XHJcbiAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7bWVudVR5cGU6J3Byb2MnLCBuYW1lOidlbmN1ZXN0YWRvcl9kbXNfbW9zdHJhcicsIGxhYmVsOidmb3J6YXIgZGVzY2FyZ2EgZW5jdWVzdGFzIERNJ30pO1xyXG4gICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goe21lbnVUeXBlOidwcm9jJywgbmFtZTonZW5jdWVzdGFfYmxhbnF1ZWFyX3ByZXZpc3VhbGl6YXInLCBsYWJlbDonYmxhbnF1ZWFyIGVuY3Vlc3RhJ30pO1xyXG4gICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goe21lbnVUeXBlOidwcm9jJywgbmFtZTonZW5jdWVzdGFfYm9ycmFyX3ByZXZpc3VhbGl6YXInLCBsYWJlbDoncXVpdGFyIGVuY3Vlc3RhIGRlIGxhIG11ZXN0cmEnfSk7XHJcbiAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7bWVudVR5cGU6J3Byb2MnLCBuYW1lOidlbmN1ZXN0YXNfY2FwYWNpdGFjaW9uX2JvcnJhcicsIGxhYmVsOidxdWl0YXIgZW5jdWVzdGFzIGRlIGNhcGEgZGUgbGEgbXVlc3RyYSd9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcil7XHJcbiAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7bWVudVR5cGU6J3Byb2MnLCBuYW1lOidpbnRlcmNhbWJpYXJfZW5jdWVzdGFzJ30pO1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgcmV0dXJuIHttZW51VHlwZTogJ21lbnUnLCBuYW1lOiAndmFyaW9zJywgbWVudUNvbnRlbnQ6IHN1Ym1lbnVWYXJpb3N9XHJcbiAgICB9XHJcbiAgICBnZXRNZW51QXNpZ25hY2lvbihjb250ZXh0OkNvbnRleHQpIHsgXHJcbiAgICAgICAgbGV0IGZpbHRyb1JlY2VwY2lvbmlzdGEgPSBjb250ZXh0LnVzZXIucm9sPT0ncmVjZXBjaW9uaXN0YScgPyB7cmVjZXBjaW9uaXN0YTogY29udGV4dC51c2VyLmlkcGVyfSA6IHt9O1xyXG4gICAgICAgIGxldCBzdWJtZW51QXNpZ25hY2lvbjpNZW51SW5mb0Jhc2VbXSA9IFtdO1xyXG4gICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpIHtcclxuICAgICAgICAgICAgc3VibWVudUFzaWduYWNpb24ucHVzaCh7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZ2VuZXJhbCcsIHRhYmxlOiAnYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsJyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3VibWVudUFzaWduYWNpb24ucHVzaChcclxuICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2VuY3Vlc3RhZG9yJywgdGFibGU6ICd0X2VuY3VfYXJlYXMnLCBmZjogeyB0YXJlYTogJ2VuY3UnLCAuLi5maWx0cm9SZWNlcGNpb25pc3RhIH0gfSxcclxuICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2luZ3Jlc2Fkb3InLCAgdGFibGU6ICd0X2luZ3JfYXJlYXMnLCBmZjogeyB0YXJlYTogJ2luZ3InLCAuLi5maWx0cm9SZWNlcGNpb25pc3RhIH0gfSxcclxuICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JlY3VwZXJhZG9yJywgdGFibGU6ICd0YXJlYXNfdGVtX2FzaWduYWNpb25fcmVjdScsIGZmOiB7IHRhcmVhX2FjdHVhbDogJ3JlY3UnLCB0YXJlYTogJ3JlY3UnLCAuLi5maWx0cm9SZWNlcGNpb25pc3RhIH0gfSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcil7XHJcbiAgICAgICAgICAgIHN1Ym1lbnVBc2lnbmFjaW9uLnB1c2goXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnc3VwZXJ2aXNvcicgLCB0YWJsZTogJ3RhcmVhc190ZW1fYXNpZ25hY2lvbl9zdXBlJywgZmY6IHsgdGFyZWFfYWN0dWFsOiAnc3VwZScsIHRhcmVhOiAnc3VwZScsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHttZW51VHlwZTonbWVudScsIG5hbWU6J2FzaWduYWNpb24nLCBsYWJlbDonYXNpZ25hY2nDs24nICxtZW51Q29udGVudDogc3VibWVudUFzaWduYWNpb259XHJcbiAgICB9XHJcbiAgICBnZXRNZW51UmVjZXBjaW9uKGNvbnRleHQ6Q29udGV4dCkgeyBcclxuICAgICAgICBsZXQgc3VibWVudVJlY2VwY2lvbjpNZW51SW5mb0Jhc2VbXSA9IFtdXHJcbiAgICAgICAgc3VibWVudVJlY2VwY2lvbi5wdXNoKFxyXG4gICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonZW5jdWVzdGFkb3InLCB0YWJsZTonZW5jdWVzdGFkb3Jlc19hc2lnbmFkb3MnfSxcclxuICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3JlY3VwZXJhZG9yJywgdGFibGU6J3JlY3VwZXJhZG9yZXNfYXNpZ25hZG9zJ30sXHJcbiAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidpbmdyZXNhZG9yJywgdGFibGU6J2luZ3Jlc2Fkb3Jlc19hc2lnbmFkb3MnfSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcil7XHJcbiAgICAgICAgICAgIHN1Ym1lbnVSZWNlcGNpb24ucHVzaChcclxuICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidzdXBlcnZpc29yJyAsIHRhYmxlOidzdXBlcnZpc29yZXNfYXNpZ25hZG9zJyB9LFxyXG4gICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6ICdtaXNfc3VwZXJ2aXNvcmVzJyAsIHRhYmxlOiAnbWlzX3N1cGVydmlzb3Jlc19hc2lnbmFkb3MnfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge21lbnVUeXBlOidtZW51JywgbmFtZToncmVjZXBjaW9uJywgbGFiZWw6J3JlY2VwY2nDs24nICxtZW51Q29udGVudDpzdWJtZW51UmVjZXBjaW9ufVxyXG4gICAgfVxyXG5cclxuICAgIGdldE1lbnVDYXJ0byhjb250ZXh0OkNvbnRleHQpIHtcclxuICAgICAgICBsZXQgc3VibWVudUNhcnRvOk1lbnVJbmZvQmFzZVtdID0gW11cclxuICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpe1xyXG4gICAgICAgICAgICBzdWJtZW51Q2FydG8ucHVzaChcclxuICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidjb211bmFzJyAgICAsIHRhYmxlOidjb211bmFzJ30sXHJcbiAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonYmFycmlvcycgICAgLCB0YWJsZTonYmFycmlvcyd9LFxyXG4gICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2ZyYWNjaW9uZXMnICwgdGFibGU6J2ZyYWNjaW9uZXMnfSxcclxuICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidyYWRpb3MnICAgICAsIHRhYmxlOidyYWRpb3MnIH0sXHJcbiAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonbWFuemFuYXMnICAgLCB0YWJsZTonbWFuemFuYXMnfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICByZXR1cm4ge21lbnVUeXBlOidtZW51JyAgLCBuYW1lOidjYXJ0bycsIGxhYmVsOidjYXJ0b2dyYWbDrWEnLCBtZW51Q29udGVudDpzdWJtZW51Q2FydG99XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TWVudShjb250ZXh0OkNvbnRleHQpe1xyXG4gICAgICAgIGxldCBtZW51Ok1lbnVJbmZvQmFzZVtdID0gW107XHJcbiAgICAgICAgaWYodGhpcy5jb25maWcuc2VydmVyLnBvbGljeT09J3dlYicpe1xyXG4gICAgICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXMucmVsZXZhcil7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmNvbmZpZ1snY2xpZW50LXNldHVwJ10uYW1iaWVudGU9PSdkZW1vJyB8fCB0aGlzLmNvbmZpZ1snY2xpZW50LXNldHVwJ10uYW1iaWVudGU9PSd0ZXN0JyB8fCB0aGlzLmNvbmZpZ1snY2xpZW50LXNldHVwJ10uYW1iaWVudGU9PSdjYXBhJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHttZW51VHlwZTonZGVtbycsIG5hbWU6J2RlbW8nLCBzZWxlY3RlZEJ5RGVmYXVsdDp0cnVlfSlcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7bWVudVR5cGU6J3BhdGgnLCBuYW1lOidyZWxldmFtaWVudG8nLCBwYXRoOicvY2FtcG8nfSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3NpbmNyb25pemFyX2RtJywgbmFtZTonc2luY3Jvbml6YXInfSxcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J2NhbWJpYXJfbW9kb19kbScsIG5hbWU6J2NhbWJpYXJfbW9kbyd9LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYW1wbz8uZWRpdGFyKXtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE1lbnVBc2lnbmFjaW9uKGNvbnRleHQpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TWVudVJlY2VwY2lvbihjb250ZXh0KVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcil7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHttZW51VHlwZTondGFibGUnLCBuYW1lOid0YXJlYXNfdGVtX2Zpbl9jYW1wbycsIGxhYmVsOidlc3BlcmEgZmluIGRlIGNhbXBvJ30pXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHttZW51VHlwZTondGFibGUnLCBuYW1lOid0YXJlYXNfdGVtX2FuYWxpc2lzX2NhbXBvJywgbGFiZWw6J2Fuw6FsaXNpcyBkZSBjYW1wbyd9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonbWVudScsIG5hbWU6J3N1cGVydmlzaW9uJywgbGFiZWw6J3N1cGVydmlzacOzbicgLG1lbnVDb250ZW50OltcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3N1cGVydmlzYXInICwgdGFibGU6J3RhcmVhc190ZW1faW5ncmVzbycsIGZmOnt0YXJlYTonc3VwZScsIGFzaWduYWRvOmNvbnRleHQudXNlci5pZHBlciB9IH1cclxuICAgICAgICAgICAgICAgICAgICBdfVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmNhbXBvPy5lZGl0YXJ8fGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcnx8Y29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcil7XHJcbiAgICAgICAgICAgICAgICBtZW51LnB1c2godGhpcy5nZXRNZW51VmFyaW9zKGNvbnRleHQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXJ8fGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpe1xyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonbWVudScsIG5hbWU6J2NvbnRyb2wnLCBtZW51Q29udGVudDogIHRoaXMuZ2V0TWVudUNvbnRyb2xlcyhjb250ZXh0KSB9ICkgIDtcclxuICAgICAgICAgICAgICAgICAvKnttZW51VHlwZTondGFibGUnLCBuYW1lOidwYXJ0aWNpcGFjaW9uJyAgICAgICAgLCB0YWJsZTonY29udHJvbF9jYW1wb19wYXJ0aWNpcGFjaW9uJyAgfSwqL1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKXtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidwcm9jZXNhcicsIG1lbnVDb250ZW50OltcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3ZhcmlhYmxlcycgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3ZhcmlhYmxlc19jdWVzdGlvbmFyaW8nICAgICAsIHRhYmxlOidjYXNpbGxlcm9zJywgdGQ6IHtlZGl0YWJsZTpmYWxzZSwgYWxsb3c6e3VwZGF0ZTpmYWxzZSwgaW1wb3J0OiBmYWxzZSwgZGVsZXRlOmZhbHNlLCBpbnNlcnQ6ZmFsc2V9fSwgZmM6W3tjb2x1bW46J3Zhcl9uYW1lJywgb3BlcmF0b3I6JyE9XFx1MjIwNScsIHZhbHVlOm51bGx9XX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidjb25zaXN0ZW5jaWFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidjb25zaXN0ZW5jaWFzX2N1ZXN0aW9uYXJpbycgLCB0YWJsZTonY2FzaWxsZXJvcycsIGZmOnt0aXBvYzonQ09OUyd9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2luY29uc2lzdGVuY2lhcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGFibGFfZGF0b3MnICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonZGljY2lvbmFyaW8nICAsIGxhYmVsOidkaWNjaW9uYXJpb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0YXJlYXNfdGVtX3Byb2Nlc2FtaWVudG8nLCBsYWJlbDonZW5jdWVzdGFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgXX0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBtZW51Q29uZmlndXJhcjpNZW51SW5mb0Jhc2VbXSA9IFtdO1xyXG4gICAgICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXJ8fGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpe1xyXG4gICAgICAgICAgICAgICAgbGV0IHN1Ym1lbnVNdWVzdHJhOk1lbnVJbmZvQmFzZVtdID0gW1xyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0ZW0nLCBsYWJlbDogJ1RFTSd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZToncHJvYycsICBuYW1lOidtdWVzdHJhX2dlbmVyYXInLCBsYWJlbDonZ2VuZXJhciBtdWVzdHJhJ30sXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3NlbWFuYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonYXJlYV9lbmNfcHJveGltYXMnfSxcclxuICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTonbXVlc3RyYScsIGxhYmVsOidtdWVzdHJhJywgbWVudUNvbnRlbnQ6c3VibWVudU11ZXN0cmF9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmNhc2lsbGVyb3NfdGV4dG8/LmVkaXRhcil7XHJcbiAgICAgICAgICAgICAgICBtZW51Q29uZmlndXJhci5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonbWVudScsIG5hbWU6J21ldGFkYXRvcycsIG1lbnVDb250ZW50OltcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J29wZXJhdGl2b3MnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2Zvcm11bGFyaW9zJyAgICwgdGFibGU6J2Nhc2lsbGVyb3NfcHJpbmNpcGFsZXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3BsYW5vJyAgICAgICAgICwgdGFibGU6J2Nhc2lsbGVyb3MnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3ZhcmlhYmxlcycgICAgICwgdGFibGU6J2Nhc2lsbGVyb3MnLCBmYzpbe2NvbHVtbjondmFyX25hbWUnLCBvcGVyYXRvcjonIT1cXHUyMjA1JywgdmFsdWU6bnVsbH1dfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RpcG9jJyAgICAgICAgICwgbGFiZWw6J3RpcG9zIGRlIGNlbGRhcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGlwb2NfdGlwb2MnICAgLCBsYWJlbDonaW5jbHVzaW9uZXMgZGUgY2VsZGFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgXX0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQuc3VwZXJ1c2VyKXtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTonZXN0YWRvc19hY2Npb25lc190YXJlYXMnLCBsYWJlbDonZXN0YWRvcy9hY2Npb25lcy90YXJlYXMnLCBtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0YXJlYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2VzdGFkb3MnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2FjY2lvbmVzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidlc3RhZG9zX2FjY2lvbmVzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0YXJlYXNfcHJveGltYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICBdfSxcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonbW9tZW50b3NfY29uc2lzdGVuY2lhJ30sXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3BhcmFtZXRyb3MnfSxcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonbW9kb3NfZG0nfSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIgfHwgY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcil7XHJcbiAgICAgICAgICAgICAgICBtZW51Q29uZmlndXJhci5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonbWVudScsIG5hbWU6J3VzdWFyaW9zJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondXN1YXJpb3MnLCBzZWxlY3RlZEJ5RGVmYXVsdDp0cnVlfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3JvbGVzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidwZXJtaXNvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncm9sZXNfcGVybWlzb3MnfSxcclxuICAgICAgICAgICAgICAgICAgICBdfSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihtZW51Q29uZmlndXJhci5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKHttZW51VHlwZTonbWVudScsIG5hbWU6J2NvbmZpZ3VyYXInLCBtZW51Q29udGVudDptZW51Q29uZmlndXJhcn0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG1lbnVDYXJ0byA9IHRoaXMuZ2V0TWVudUNhcnRvKGNvbnRleHQpO1xyXG4gICAgICAgICAgICBpZihtZW51Q2FydG8pe1xyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKG1lbnVDYXJ0byk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHttZW51fTtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIHByZXBhcmVHZXRUYWJsZXMoKXtcclxuICAgICAgICB2YXIgYmU9dGhpcztcclxuICAgICAgICBzdXBlci5wcmVwYXJlR2V0VGFibGVzKCk7XHJcbiAgICAgICAgdGhpcy5nZXRUYWJsZURlZmluaXRpb249e1xyXG4gICAgICAgICAgICAuLi50aGlzLmdldFRhYmxlRGVmaW5pdGlvblxyXG4gICAgICAgICAgICAsIHJvbGVzXHJcbiAgICAgICAgICAgICwgdXN1YXJpb3NcclxuICAgICAgICAgICAgLCBwZXJzb25hbFxyXG4gICAgICAgICAgICAsIHJlY2VwY2lvbmlzdGFzXHJcbiAgICAgICAgICAgICwgZW5jdWVzdGFkb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgLCBpbmdyZXNhZG9yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICwgcmVjdXBlcmFkb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgLCBzdXBlcnZpc29yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICwgbWlzX3N1cGVydmlzb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgLCBtaXNfZW5jdWVzdGFkb3Jlc1xyXG4gICAgICAgICAgICAsIHJlY3VwZXJhZG9yZXNcclxuICAgICAgICAgICAgLCBzdXBlcnZpc29yZXNcclxuICAgICAgICAgICAgLCBwZXJzb25hbF9yb2xcclxuICAgICAgICAgICAgLCBwZXJtaXNvc1xyXG4gICAgICAgICAgICAsIHJvbGVzX3Blcm1pc29zXHJcbiAgICAgICAgICAgICwgcm9sZXNfc3Vib3JkaW5hZG9zXHJcbiAgICAgICAgICAgICwgbm9fcmVhXHJcbiAgICAgICAgICAgICwgbm9fcmVhX3N1cFxyXG4gICAgICAgICAgICAsIHNlbWFuYXNcclxuICAgICAgICAgICAgLCBlc3RhZG9zXHJcbiAgICAgICAgICAgICwgYWNjaW9uZXNcclxuICAgICAgICAgICAgLCBlc3RhZG9zX2FjY2lvbmVzXHJcbiAgICAgICAgICAgICwgdGFyZWFzX3Byb3hpbWFzXHJcbiAgICAgICAgICAgICwgdGVtXHJcbiAgICAgICAgICAgICwgaGlzdG9yaWFsX3RlbVxyXG4gICAgICAgICAgICAsIG1vZG9zX2RtXHJcbiAgICAgICAgICAgICwgcGFyYW1ldHJvc1xyXG4gICAgICAgICAgICAsIG9wZXJhY2lvbmVzXHJcbiAgICAgICAgICAgICwgY29tdW5hc1xyXG4gICAgICAgICAgICAsIGFyZWFzXHJcbiAgICAgICAgICAgICwgc2luY3Jvbml6YWNpb25lc1xyXG4gICAgICAgICAgICAsIHRhcmVhc1xyXG4gICAgICAgICAgICAsIHRhcmVhc190ZW1cclxuICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2FzaWduYWNpb25fZW5jdVxyXG4gICAgICAgICAgICAsIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9yZWN1XHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX3N1cGVcclxuICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2FzaWduYWNpb25faW5nclxyXG4gICAgICAgICAgICAsIHRhcmVhc19hcmVhc1xyXG4gICAgICAgICAgICAsIGFyZWFzX2FzaWduYWNpb25fZ2VuZXJhbFxyXG4gICAgICAgICAgICAsIGdyaWxsYV9ob2phX3J1dGFcclxuICAgICAgICAgICAgLCB0X2VuY3VfYXJlYXNcclxuICAgICAgICAgICAgLCB0X3JlY3VfYXJlYXNcclxuICAgICAgICAgICAgLCB0X3N1cGVfYXJlYXNcclxuICAgICAgICAgICAgLCB0X2luZ3JfYXJlYXNcclxuICAgICAgICAgICAgLCBtaXNfdGFyZWFzXHJcbiAgICAgICAgICAgICwgdGVtX2FzaWduYWNpb25cclxuICAgICAgICAgICAgLCB0YXJlYXNfdGVtX3JlY2VwY2lvblxyXG4gICAgICAgICAgICAsIHRhcmVhc190ZW1faW5ncmVzb1xyXG4gICAgICAgICAgICAsIHRhcmVhc190ZW1fZmluX2NhbXBvXHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9wcm9jZXNhbWllbnRvXHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hbmFsaXNpc19jYW1wb1xyXG4gICAgICAgICAgICAsIG1pc190YXJlYXNfYXJlYXNcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvXHJcbiAgICAgICAgICAgICwgY29udHJvbF9yZXN1bWVuXHJcbiAgICAgICAgICAgICwgY29udHJvbF9jYW1wb196b25hOiBjb250ZXh0PT5jb250cm9sX2NhbXBvKGNvbnRleHQsIFxyXG4gICAgICAgICAgICAgICAge25vbWJyZTonY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTonY29udHJvbCBjYW1wbyB4IHpvbmEgc29sbyBjZW1lbnRvJywgY2FtcG9zQ29ydGU6W3tuYW1lOid6b25hJywgdHlwZU5hbWU6J3RleHQnfV0sIHNpbmhvZ2ZpbjohY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIsZmlsdHJvV2hlcmU6J2RvbWluaW89MycgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgICwgY29udHJvbF9jYW1wb19jb211bmE6IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggY29tdW5hIHNvbG8gY2VtZW50bycsIGNhbXBvc0NvcnRlOlt7bmFtZTonem9uYScsIHR5cGVOYW1lOid0ZXh0J30se25hbWU6J25yb2NvbXVuYScsIHR5cGVOYW1lOid0ZXh0J31dLCBzaW5ob2dmaW46IWNvbnRleHQuYmUuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhci5jb25fcmVhX2hvZ2FyLGZpbHRyb1doZXJlOidkb21pbmlvPTMnIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fYXJlYTogY29udGV4dD0+Y29udHJvbF9jYW1wbyhjb250ZXh0LCBcclxuICAgICAgICAgICAgICAgIHtub21icmU6J2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6J2NvbnRyb2wgY2FtcG8geCBhcmVhJywgY2FtcG9zQ29ydGU6W3tuYW1lOid6b25hJywgdHlwZU5hbWU6J3RleHQnfSx7bmFtZTonbnJvY29tdW5hJywgdHlwZU5hbWU6J3RleHQnfSx7bmFtZTonYXJlYScsIHR5cGVOYW1lOidpbnRlZ2VyJ30se25hbWU6J3BhcnRpY2lwYWNpb25fYScsIHR5cGVOYW1lOid0ZXh0J30se25hbWU6J2NsYXNlX2EnLCB0eXBlTmFtZTondGV4dCd9XSAsc2luaG9nZmluOiFjb250ZXh0LmJlLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIuY29uX3JlYV9ob2dhcn1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fcGFydGljaXBhY2lvbjogY29udGV4dD0+Y29udHJvbF9jYW1wbyhjb250ZXh0LCBcclxuICAgICAgICAgICAgICAgIHtub21icmU6J2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6J2NvbnRyb2wgY2FtcG8geCBwYXJ0aWNpcGFjaW9uJywgY2FtcG9zQ29ydGU6W3tuYW1lOidwYXJ0aWNpcGFjaW9uJywgdHlwZU5hbWU6J2JpZ2ludCd9XSxzaW5ob2dmaW46IWNvbnRleHQuYmUuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhci5jb25fcmVhX2hvZ2FyfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgICwgY29udHJvbF9jYW1wb19kb21pbmlvOiBjb250ZXh0PT5jb250cm9sX2NhbXBvKGNvbnRleHQsIFxyXG4gICAgICAgICAgICAgICAge25vbWJyZTonY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTonY29udHJvbCBjYW1wbyB4IGRvbWluaW8nLCBjYW1wb3NDb3J0ZTpbe25hbWU6J2RvbWluaW8nLCB0eXBlTmFtZTonaW50ZWdlcid9XSxzaW5ob2dmaW46IWNvbnRleHQuYmUuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhci5jb25fcmVhX2hvZ2FyfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgICwgY29udHJvbF9kaWFzX2NhcmdhXHJcbiAgICAgICAgICAgICwgdml2aWVuZGFzXHJcbiAgICAgICAgICAgICwgdmlzaXRhc1xyXG4gICAgICAgICAgICAsIGhvZ2FyZXNcclxuICAgICAgICAgICAgLCBwZXJzb25hc1xyXG4gICAgICAgICAgICAsIHZpc2l0YXNfc3VwXHJcbiAgICAgICAgICAgICwgaG9nYXJlc19zdXBcclxuICAgICAgICAgICAgLCBwZXJzb25hc19zdXBcclxuICAgICAgICAgICAgLCBkaWNjaW9uYXJpb1xyXG4gICAgICAgICAgICAsIGRpY3ZhclxyXG4gICAgICAgICAgICAsIGRpY3RyYVxyXG4gICAgICAgICAgICAsIGluY29uc2lzdGVuY2lhc19jdW1wbGVuX2NvbmRpY2lvblxyXG4gICAgICAgICAgICAsIHRlbV9ib3JyYWRhc1xyXG4gICAgICAgICAgICAsIGJhcnJpb3NcclxuICAgICAgICAgICAgLCBmcmFjY2lvbmVzXHJcbiAgICAgICAgICAgICwgcmFkaW9zXHJcbiAgICAgICAgICAgICwgbWFuemFuYXNcclxuICAgICAgICAgICAgLCBhcmVhX2VuY19wcm94aW1hc1xyXG4gICAgICAgIH1cclxuICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignY29uc2lzdGVuY2lhcycsZnVuY3Rpb24odGFibGVEZWYsIGNvbnRleHQpe1xyXG4gICAgICAgICAgICB0YWJsZURlZi5lZGl0YWJsZT10YWJsZURlZi5lZGl0YWJsZSB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyO1xyXG4gICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuZm9yRWFjaChmdW5jdGlvbihmaWVsZCl7XHJcbiAgICAgICAgICAgICAgICBpZihmaWVsZC5uYW1lPT0nZXJyb3JfY29tcGlsYWNpb24nKXtcclxuICAgICAgICAgICAgICAgICAgICBpZihmaWVsZC52aXNpYmxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignKioqKioqKioqKioqIFFVSVRBUiBFU1RPIGVycm9yX2NvbXBpbGFjaW9uIHlhIGVzIHZpc2libGUnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudmlzaWJsZT10cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ2luY29uc2lzdGVuY2lhcycsZnVuY3Rpb24odGFibGVEZWYsIGNvbnRleHQpe1xyXG4gICAgICAgICAgICB0YWJsZURlZi5zcWw9ey4uLnRhYmxlRGVmLnNxbCwgaXNUYWJsZTp0cnVlfTtcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnNwbGljZSgyLDAsXHJcbiAgICAgICAgICAgICAgICB7bmFtZTondml2aWVuZGEnICAgICwgdHlwZU5hbWU6J3RleHQnICAgICAsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgICAgICB7bmFtZTonaG9nYXInICAgICAgICwgdHlwZU5hbWU6J2JpZ2ludCcgICAsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgICAgICB7bmFtZToncGVyc29uYScgICAgICwgdHlwZU5hbWU6J2JpZ2ludCcgICAsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgICAgICB7bmFtZTondmlzaXRhJyAgICAgICwgdHlwZU5hbWU6J2JpZ2ludCcgICAsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmVkaXRhYmxlPXRhYmxlRGVmLmVkaXRhYmxlIHx8IGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcy5qdXN0aWZpY2FyO1xyXG4gICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuZm9yRWFjaChmdW5jdGlvbihmaWVsZCl7XHJcbiAgICAgICAgICAgICAgICBpZihmaWVsZC5uYW1lPT0ncGtfaW50ZWdyYWRhJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudmlzaWJsZT1mYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKGZpZWxkLm5hbWU9PSdqdXN0aWZpY2FjaW9uJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQuZWRpdGFibGU9Y29udGV4dD8uZm9yRHVtcCB8fCBjb250ZXh0Py5wdWVkZT8uZW5jdWVzdGFzLmp1c3RpZmljYXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcz10YWJsZURlZi5maWVsZHMuY29uY2F0KFsndGFyZWFfYWN0dWFsJywndGFyZWFfYW50ZXJpb3InXS5tYXAoZm49PntcclxuICAgICAgICAgICAgICAgIHJldHVybiB7bmFtZTogZm4gICAsIHR5cGVOYW1lOiAndGV4dCcgICwgZWRpdGFibGU6IGZhbHNlLCBpblRhYmxlOiBmYWxzZX1cclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgIC8vc2FjYXIgY2FtcG9zIGRlIHZpdGFsZXMhIFxyXG4gICAgICAgICAgICBjb25zdCByZWdFeHBGaWVsZHNWaXRhPSBuZXcgUmVnRXhwKCdeKGNvbXB8aW5mZXxjb2RfY2F1c2F8ZG9taSkkJyk7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcyA9IHRhYmxlRGVmLmZpZWxkcy5maWx0ZXIoZj0+IShyZWdFeHBGaWVsZHNWaXRhLnRlc3QoZi5uYW1lKSkpXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgdmFyIHFfaW5jb25zaXN0PSB0YWJsZURlZi5zcWwhLmZyb21cclxuICAgICAgICAgICAgdGFibGVEZWYuc3FsIS5mcm9tPWBcclxuICAgICAgICAgICAgICAgIChzZWxlY3QgaS4qLCB0LnRhcmVhX2FjdHVhbCwgdGFyZWFfYW50ZXJpb3JcclxuICAgICAgICAgICAgICAgICAgZnJvbSAke3FfaW5jb25zaXN0fSBpIFxyXG4gICAgICAgICAgICAgICAgICBqb2luIHRlbSB0IG9uIGkudml2aWVuZGE9dC5lbmMgYW5kIGkub3BlcmF0aXZvPXQub3BlcmF0aXZvIFxyXG4gICAgICAgICAgICAgICAgICBsZWZ0IGpvaW4gdGFyZWFzX3RlbSB0dCBvbiB0Lm9wZXJhdGl2bz10dC5vcGVyYXRpdm8gYW5kIHQuZW5jPXR0LmVuYyBhbmQgdC50YXJlYV9hY3R1YWw9dHQudGFyZWEgXHJcbiAgICAgICAgICAgICAgICAgIGxlZnQgam9pbiBsYXRlcmFsIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0IHRhcmVhIGFzIHRhcmVhX2FudGVyaW9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGhpc3RvcmlhbF90ZW0gaHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHQub3BlcmF0aXZvID0gaHQub3BlcmF0aXZvIGFuZCB0LmVuYyA9IGh0LmVuY1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgYnkgdHNfc2FsaWRhIGRlc2NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0IDFcclxuICAgICAgICAgICAgICAgICAgICApIGFzIHRhIG9uIHRydWVcclxuICAgICAgICAgICAgICAgICkgICBcclxuICAgICAgICAgICAgYFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ29wZXJhdGl2b3MnLGZ1bmN0aW9uKHRhYmxlRGVmLCBjb250ZXh0KXtcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnNwbGljZSgyLDAse1xyXG4gICAgICAgICAgICAgICAgbmFtZTonY29uZmlnX3NvcnRlbycsIFxyXG4gICAgICAgICAgICAgICAgdHlwZU5hbWU6J2pzb25iJyxcclxuICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICB9LHtcclxuICAgICAgICAgICAgICAgIG5hbWU6J2hhYmlsaXRhY2lvbl9ib3Rvbl9mb3JtdWxhcmlvJywgXHJcbiAgICAgICAgICAgICAgICB0eXBlTmFtZTonanNvbmInLFxyXG4gICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0se1xyXG4gICAgICAgICAgICAgICAgbmFtZTonZGlzZm9ybV9jZXJyYWRvJywgXHJcbiAgICAgICAgICAgICAgICB0eXBlTmFtZTonYm9vbGVhbicsIFxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSwgXHJcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogY29udGV4dD8uZm9yRHVtcHx8WydhZG1pbicsJ2Rpc19jb25jZXB0dWFsJ10uaW5jbHVkZXMoY29udGV4dC51c2VyLnJvbClcclxuICAgICAgICAgICAgfSx7XHJcbiAgICAgICAgICAgICAgICBuYW1lOidjb25fcmVhX2hvZ2FyJywgXHJcbiAgICAgICAgICAgICAgICB0eXBlTmFtZTonYm9vbGVhbicsIFxyXG4gICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdERiVmFsdWU6ICd0cnVlJ1xyXG4gICAgICAgICAgICB9LHtcclxuICAgICAgICAgICAgICAgIG5hbWU6J3Blcm1pdGVfZ2VuZXJhcl9tdWVzdHJhJywgXHJcbiAgICAgICAgICAgICAgICB0eXBlTmFtZTonYm9vbGVhbicsIFxyXG4gICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdERiVmFsdWU6ICdmYWxzZSdcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbigndmFyaWFibGVzJyxmdW5jdGlvbih0YWJsZURlZiwgY29udGV4dCl7XHJcbiAgICAgICAgICAgIHZhciBlc0FkbWluPSBjb250ZXh0Py51c2VyLnJvbD09PSdhZG1pbic7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmVkaXRhYmxlPXRhYmxlRGVmLmVkaXRhYmxlIHx8IGNvbnRleHQ/LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyO1xyXG4gICAgICAgICAgICB0YWJsZURlZi5hbGxvdz17ZGVsZXRlOiBlc0FkbWlufTsgICAgICAgICAgICBcclxuICAgICAgICB9KVxyXG4gICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdtb21lbnRvc19jb25zaXN0ZW5jaWEnLGZ1bmN0aW9uKHRhYmxlRGVmLCBfY29udGV4dCl7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5wdXNoKFxyXG4gICAgICAgICAgICAgICAge25hbWU6J2NvbmRpY2lvbicsIHR5cGVOYW1lOid0ZXh0JyAsICBudWxsYWJsZTogZmFsc2UsIGRlZmF1bHREYlZhbHVlOid0cnVlJ30sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbigncGFyYW1ldHJvcycsZnVuY3Rpb24odGFibGVEZWYpe1xyXG4gICAgICAgICAgICB0YWJsZURlZi5maWVsZHMucHVzaChcclxuICAgICAgICAgICAgICAgIHtuYW1lOidtb2RvX2RtX2RlZmVjdG8nICAsIHR5cGVOYW1lOid0ZXh0JyAgLCBlZGl0YWJsZTogdHJ1ZSwgbnVsbGFibGU6IGZhbHNlLCBkZWZhdWx0RGJWYWx1ZTpcIidjYXBhJ1wifSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGFibGVEZWYuZm9yZWlnbktleXMgPSB0YWJsZURlZi5mb3JlaWduS2V5cyB8fCBbXTtcclxuICAgICAgICAgICAgdGFibGVEZWYuZm9yZWlnbktleXMucHVzaChcclxuICAgICAgICAgICAgICAgIHtyZWZlcmVuY2VzOidtb2Rvc19kbScsIGZpZWxkczpbe3NvdXJjZTonbW9kb19kbV9kZWZlY3RvJywgdGFyZ2V0Oidtb2RvX2RtJ31dfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIEFwcERtRW5jdSA9IGVtZXJnZUFwcERtRW5jdShlbWVyZ2VBcHBQcm9jZXNhbWllbnRvKGVtZXJnZUFwcENvbnNpc3RlbmNpYXMoZW1lcmdlQXBwVmFyQ2FsKGVtZXJnZUFwcERhdG9zRXh0KGVtZXJnZUFwcE9wZXJhdGl2b3MoQXBwQmFja2VuZCkpKSkpKTtcclxuZXhwb3J0IHR5cGUgQXBwQXBwRG1FbmN1VHlwZSA9IEluc3RhbmNlVHlwZTx0eXBlb2YgQXBwRG1FbmN1PjsiXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const defConfig = "\nserver:\n port: 3068\n base-url: /dmencu\n session-store: memory\ndb:\n user: dmencu_admin\n motor: postgresql\n host: localhost\n database: dmencu_db\n schema: base\n search_path: [base, comun, his]\ninstall:\n dump:\n db:\n owner: dmencu_owner\n apply-generic-user-replaces: true\n admin-can-create-tables: true\n enances: inline\n skip-content: true\n scripts:\n prepare:\n - ../node_modules/operativos/install/rel_tabla_relacionada.sql\n - esquema_comun.sql\n - esquema_comun_sin_dato.sql\n - esquema_comun_nsnc.sql\n - ../node_modules/meta-enc/install/prepare.sql\n - ../node_modules/varcal/install/wrappers.sql\n - ../node_modules/operativos/install/sql2tabla_datos.sql\n post-adapt: \n - para-install.sql\n - ../node_modules/pg-triggers/lib/recreate-his.sql\n - ../node_modules/pg-triggers/lib/table-changes.sql\n - ../node_modules/pg-triggers/lib/function-changes-trg.sql\n - ../node_modules/pg-triggers/lib/enance.sql\n - ../node_modules/datos-ext/install/controlar_modificacion_estructura_cerrada.sql\n - ../node_modules/meta-enc/install/casilleros_orden_total_fun.sql\n - ../node_modules/meta-enc/install/casilleros_jerarquizados_fun.sql\n - ../node_modules/consistencias/install/try_sql.sql\n - esquema_dbo.sql \n - varcal_manual/estructura.sql\n - varcal_manual/funcion_update.sql\n - fun_validar_tipodato.sql\n - desintegrarpk.sql\n - agregar_adjunto_carto_trg\n - sincro_tareas_areas_tareas_tem_trg.sql\n - sincronizacion_tareas_tem.sql\n - sincronizacion_tem.sql\n - control_disform_cerrado_trg.sql\n - control_cargado_tareas_tem_trg.sql\n - generador_accion_cumple_condicion.sql\n - tarea_cumple_condicion.sql\n - momento_consistencia_cumple_condicion.sql\n - agregar_historial_tem_trg.sql\n - carga_inicial_tareas_tem.sql\n - validar_tareas_tem_trg.sql\n - asignar_desasignar_tareas_tem_trg.sql\n - desverificar_tarea_trg.sql\n - inicial_update_varcal_por_encuesta.sql\n - diccionario_func.sql\nlogin:\n infoFieldList: [usuario, rol, idper, muestra_encuestas_prod, muestra_encuestas_capa]\n table: usuarios\n userFieldName: usuario\n passFieldName: md5clave\n rolFieldName: rol\n activeClausule: activo\n lockedClausule: not activo\n plus:\n maxAge-5-sec: 5000 \n maxAge: 864000000\n maxAge-10-day: 864000000\n allowHttpLogin: true\n fileStore: false\n skipCheckAlreadyLoggedIn: true\n loginForm:\n formTitle: dmencu\n usernameLabel: usuario\n passwordLabel: clave\n buttonLabel: entrar\n formImg: img/login-lock-icon.png\n chPassForm:\n usernameLabel: usuario\n oldPasswordLabel: clave anterior\n newPasswordLabel: nueva clave\n repPasswordLabel: repetir nueva clave\n buttonLabel: Cambiar\n formTitle: Cambio de clave\n messages:\n userOrPassFail: el nombre de usuario no existe o la clave no corresponde\n lockedFail: el usuario se encuentra bloqueado\n inactiveFail: es usuario est\u00E1 marcado como inactivo\nclient-setup:\n title: SIEH 2.0\n cursors: true\n lang: es\n menu: true\n background-img: ../img/background-test.png\n grid-row-retain-moved-or-deleted: true\n deviceWidthForMobile: device-width\n user-scalable: no\n";
|
|
1
|
+
export declare const defConfig = "\nserver:\n port: 3068\n base-url: /dmencu\n session-store: memory\ndb:\n user: dmencu_admin\n motor: postgresql\n host: localhost\n database: dmencu_db\n schema: base\n search_path: [base, comun, his]\ninstall:\n dump:\n db:\n owner: dmencu_owner\n apply-generic-user-replaces: true\n admin-can-create-tables: true\n enances: inline\n skip-content: true\n scripts:\n prepare:\n - ../node_modules/operativos/install/rel_tabla_relacionada.sql\n - esquema_comun.sql\n - esquema_comun_sin_dato.sql\n - esquema_comun_nsnc.sql\n - ../node_modules/meta-enc/install/prepare.sql\n - ../node_modules/varcal/install/wrappers.sql\n - ../node_modules/operativos/install/sql2tabla_datos.sql\n post-adapt: \n - para-install.sql\n - ../node_modules/pg-triggers/lib/recreate-his.sql\n - ../node_modules/pg-triggers/lib/table-changes.sql\n - ../node_modules/pg-triggers/lib/function-changes-trg.sql\n - ../node_modules/pg-triggers/lib/enance.sql\n - ../node_modules/datos-ext/install/controlar_modificacion_estructura_cerrada.sql\n - ../node_modules/meta-enc/install/casilleros_orden_total_fun.sql\n - ../node_modules/meta-enc/install/casilleros_jerarquizados_fun.sql\n - ../node_modules/consistencias/install/try_sql.sql\n - esquema_dbo.sql \n - varcal_manual/estructura.sql\n - varcal_manual/funcion_update.sql\n - fun_validar_tipodato.sql\n - desintegrarpk.sql\n - agregar_adjunto_carto_trg\n - sincro_tareas_areas_tareas_tem_trg.sql\n - sincronizacion_tareas_tem.sql\n - sincronizacion_tem.sql\n - control_disform_cerrado_trg.sql\n - control_cargado_tareas_tem_trg.sql\n - generador_accion_cumple_condicion.sql\n - tarea_cumple_condicion.sql\n - momento_consistencia_cumple_condicion.sql\n - agregar_historial_tem_trg.sql\n - carga_inicial_tareas_tem.sql\n - validar_tareas_tem_trg.sql\n - asignar_desasignar_tareas_tem_trg.sql\n - desverificar_tarea_trg.sql\n - inicial_update_varcal_por_encuesta.sql\n - diccionario_func.sql\n - obtener_siguiente_contador_area.sql\nlogin:\n infoFieldList: [usuario, rol, idper, muestra_encuestas_prod, muestra_encuestas_capa]\n table: usuarios\n userFieldName: usuario\n passFieldName: md5clave\n rolFieldName: rol\n activeClausule: activo\n lockedClausule: not activo\n plus:\n maxAge-5-sec: 5000 \n maxAge: 864000000\n maxAge-10-day: 864000000\n allowHttpLogin: true\n fileStore: false\n skipCheckAlreadyLoggedIn: true\n loginForm:\n formTitle: dmencu\n usernameLabel: usuario\n passwordLabel: clave\n buttonLabel: entrar\n formImg: img/login-lock-icon.png\n chPassForm:\n usernameLabel: usuario\n oldPasswordLabel: clave anterior\n newPasswordLabel: nueva clave\n repPasswordLabel: repetir nueva clave\n buttonLabel: Cambiar\n formTitle: Cambio de clave\n messages:\n userOrPassFail: el nombre de usuario no existe o la clave no corresponde\n lockedFail: el usuario se encuentra bloqueado\n inactiveFail: es usuario est\u00E1 marcado como inactivo\nclient-setup:\n title: SIEH 2.0\n cursors: true\n lang: es\n menu: true\n background-img: ../img/background-test.png\n grid-row-retain-moved-or-deleted: true\n deviceWidthForMobile: device-width\n user-scalable: no\n";
|