dmencu 2.0.34 → 2.1.1
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/client/client/client.js +9 -1
- package/dist/server/server/app-dmencu.js +8 -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 +141 -76
- 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";
|
|
@@ -586,6 +587,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
586
587
|
submenuVarios.push({ menuType: 'proc', name: 'encuesta_blanquear_previsualizar', label: 'blanquear encuesta' });
|
|
587
588
|
submenuVarios.push({ menuType: 'proc', name: 'encuesta_borrar_previsualizar', label: 'quitar encuesta de la muestra' });
|
|
588
589
|
submenuVarios.push({ menuType: 'proc', name: 'encuestas_capacitacion_borrar', label: 'quitar encuestas de capa de la muestra' });
|
|
590
|
+
submenuVarios.push({ menuType: 'proc', name: 'operativo_migrar', label: 'migrar operativo' });
|
|
591
|
+
submenuVarios.push({ menuType: 'proc', name: 'encuesta_capa_a_prod_pasar', label: 'pasar encuestas de capa a prod' });
|
|
589
592
|
}
|
|
590
593
|
if ((_f = (_e = context.puede) === null || _e === void 0 ? void 0 : _e.encuestas) === null || _f === void 0 ? void 0 : _f.procesar) {
|
|
591
594
|
submenuVarios.push({ menuType: 'proc', name: 'intercambiar_encuestas' });
|
|
@@ -674,6 +677,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
674
677
|
{ menuType: 'table', name: 'tem', label: 'TEM' },
|
|
675
678
|
{ menuType: 'proc', name: 'muestra_generar', label: 'generar muestra' },
|
|
676
679
|
{ menuType: 'table', name: 'semanas' },
|
|
680
|
+
{ menuType: 'table', name: 'area_enc_proximas' },
|
|
677
681
|
];
|
|
678
682
|
menuConfigurar.push({ menuType: 'menu', name: 'muestra', label: 'muestra', menuContent: submenuMuestra });
|
|
679
683
|
}
|
|
@@ -794,7 +798,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
794
798
|
barrios: table_barrios_1.barrios,
|
|
795
799
|
fracciones: table_fracciones_1.fracciones,
|
|
796
800
|
radios: table_radios_1.radios,
|
|
797
|
-
manzanas: table_manzanas_1.manzanas
|
|
801
|
+
manzanas: table_manzanas_1.manzanas,
|
|
802
|
+
area_enc_proximas: table_area_enc_proximas_1.area_enc_proximas
|
|
798
803
|
};
|
|
799
804
|
be.appendToTableDefinition('consistencias', function (tableDef, context) {
|
|
800
805
|
var _a, _b;
|
|
@@ -889,4 +894,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
889
894
|
}
|
|
890
895
|
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
896
|
});
|
|
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==
|
|
897
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRtZW5jdS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvYXBwLWRtZW5jdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFlBQVksQ0FBQzs7O0lBcUliLDBDQTZ5QkM7SUEvNkJELGlEQUEwTDtJQUMxTCwyREFBNkY7SUFFN0Ysd0NBQXdDO0lBRXhDLHdDQUF3QztJQVF4QywyQ0FBd0M7SUFFeEMsNkJBQTZCO0lBRTdCLGtDQUFrQztJQUNsQyxtQ0FBbUM7SUFFbkMsMkJBQW1DO0lBRW5DLCtDQUFvRDtJQUNwRCxxREFBdUQ7SUFDdkQsaUVBQTZEO0lBQzdELCtEQUF3RjtJQUN4RiwrREFBZ0U7SUFDaEUsK0RBQWdFO0lBQ2hFLCtEQUFvRTtJQUNwRSx1RUFBZ0U7SUFDaEUsK0RBQTREO0lBQzVELDZEQUEyRDtJQUMzRCw2REFBMkQ7SUFDM0QscURBQXVEO0lBQ3ZELGlFQUE2RDtJQUM3RCxxREFBdUQ7SUFDdkQseURBQXlEO0lBQ3pELHlFQUFpRTtJQUVqRSxpREFBcUQ7SUFDckQseURBQXlEO0lBQ3pELDJDQUFrRDtJQUNsRCxtREFBc0Q7SUFDdEQscURBQXVEO0lBQ3ZELDJEQUEwRDtJQUMxRCxtREFBc0Q7SUFDdEQsK0NBQW9EO0lBQ3BELHFFQUErRDtJQUMvRCxpREFBcUQ7SUFDckQseURBSW9FO0lBQ3BFLDZEQUEyRDtJQUMzRCxxRkFBNEU7SUFDNUUscUVBQStEO0lBQy9ELDZEQUEyRDtJQUMzRCw2REFBMkQ7SUFDM0QsNkRBQTJEO0lBQzNELDZEQUEyRDtJQUMzRCx5REFBeUQ7SUFDekQsaUVBQTZEO0lBQzdELDZFQUFtRTtJQUNuRSx5RUFBK0Q7SUFDL0QsNkVBQW1FO0lBQ25FLHFGQUEyRTtJQUMzRSx1RkFBNkU7SUFDN0UscUVBQStEO0lBQy9ELCtEQUE0RDtJQUM1RCxtRUFBOEQ7SUFDOUQseUVBQWlFO0lBQ2pFLHVEQUF3RDtJQUN4RCxt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LENBQ2hCLEVBQUMsSUFBSSxFQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUMsTUFBTSxFQUFJLFFBQVEsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFDLE1BQU0sRUFBQyxDQUNoRixDQUFBO2dCQUNMLENBQUMsQ0FBQyxDQUFBO2dCQUVGLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUMsVUFBUyxRQUFRO29CQUNyRCxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDaEIsRUFBQyxJQUFJLEVBQUMsaUJBQWlCLEVBQUksUUFBUSxFQUFDLE1BQU0sRUFBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFDLFFBQVEsRUFBQyxDQUMxRyxDQUFDO29CQUNGLFFBQVEsQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7b0JBQ2xELFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNyQixFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLENBQUMsRUFBQyxNQUFNLEVBQUMsaUJBQWlCLEVBQUUsTUFBTSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsQ0FDakYsQ0FBQztnQkFDTixDQUFDLENBQUMsQ0FBQTtZQUNOLENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVVLFFBQUEsU0FBUyxHQUFHLGVBQWUsQ0FBQyxJQUFBLHNDQUFzQixFQUFDLElBQUEsc0NBQXNCLEVBQUMsSUFBQSwrQkFBZSxFQUFDLElBQUEsaUNBQWlCLEVBQUMsSUFBQSxtQ0FBbUIsRUFBQywwQkFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgKiBhcyBwcm9jZXNhbWllbnRvIGZyb20gXCJwcm9jZXNhbWllbnRvXCI7XHJcbmltcG9ydCB7ZW1lcmdlQXBwUHJvY2VzYW1pZW50bywgZW1lcmdlQXBwQ29uc2lzdGVuY2lhcywgZW1lcmdlQXBwVmFyQ2FsLCBlbWVyZ2VBcHBEYXRvc0V4dCwgZW1lcmdlQXBwT3BlcmF0aXZvcywgQXBwQmFja2VuZCwgQ2xpZW50TW9kdWxlRGVmaW5pdGlvbiwgT3B0c0NsaWVudFBhZ2V9IGZyb20gXCJwcm9jZXNhbWllbnRvXCI7XHJcbmltcG9ydCB7QUNDSU9OX1BBU0FSX1BST0lFLCBnZXRPcGVyYXRpdm9BY3R1YWwsIFByb2NlZHVyZXNEbUVuY3V9IGZyb20gXCIuL3Byb2NlZHVyZXMtZG1lbmN1XCI7XHJcblxyXG5pbXBvcnQgKiBhcyBwZyBmcm9tIFwicGctcHJvbWlzZS1zdHJpY3RcIjtcclxuaW1wb3J0IHtqc29ufSBmcm9tIFwicGctcHJvbWlzZS1zdHJpY3RcIjtcclxuaW1wb3J0ICogYXMgbWluaVRvb2xzIGZyb20gXCJtaW5pLXRvb2xzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBDbGllbnQsIENvbnRleHQsIENvcmVGdW5jdGlvblBhcmFtZXRlcnMsIFxyXG4gICAgTWVudUluZm9CYXNlLCBcclxuICAgIFJlcXVlc3QsIFJlc3BvbnNlLFxyXG4gICAgU3VmaWpvc0FtYmllbnRlLFxyXG59IGZyb20gXCIuL3R5cGVzLWRtZW5jdVwiO1xyXG5cclxuaW1wb3J0IHsgdW5leHBlY3RlZCB9IGZyb20gXCJjYXN0LWVycm9yXCI7XHJcblxyXG5pbXBvcnQgKiBhcyB5YXpsIGZyb20gXCJ5YXpsXCI7XHJcbmltcG9ydCB7IE5leHRGdW5jdGlvbiB9IGZyb20gXCJleHByZXNzLXNlcnZlLXN0YXRpYy1jb3JlXCI7XHJcbmltcG9ydCAqIGFzIGxpa2VBciBmcm9tIFwibGlrZS1hclwiO1xyXG5pbXBvcnQgKiBhcyBleHByZXNzIGZyb20gXCJleHByZXNzXCI7XHJcblxyXG5pbXBvcnQge3Byb21pc2VzIGFzIGZzIH0gZnJvbSBcImZzXCI7XHJcblxyXG5pbXBvcnQgeyByb2xlcyAgICAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtcm9sZXNcIjtcclxuaW1wb3J0IHsgcGVyc29uYWwgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXBlcnNvbmFsXCI7XHJcbmltcG9ydCB7IHJlY2VwY2lvbmlzdGFzICAgICAgfSBmcm9tIFwiLi90YWJsZS1yZWNlcGNpb25pc3Rhc1wiO1xyXG5pbXBvcnQgeyBlbmN1ZXN0YWRvcmVzX2FzaWduYWRvcywgaW5ncmVzYWRvcmVzX2FzaWduYWRvcyB9IGZyb20gXCIuL3RhYmxlLWVuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgcmVjdXBlcmFkb3Jlc19hc2lnbmFkb3MgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IHN1cGVydmlzb3Jlc19hc2lnbmFkb3MgIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBtaXNfc3VwZXJ2aXNvcmVzX2FzaWduYWRvcyAgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IG1pc19lbmN1ZXN0YWRvcmVzICAgfSBmcm9tIFwiLi90YWJsZS1taXNfZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyByZWN1cGVyYWRvcmVzICAgICAgIH0gZnJvbSBcIi4vdGFibGUtcmVjdXBlcmFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBzdXBlcnZpc29yZXMgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtc3VwZXJ2aXNvcmVzXCI7XHJcbmltcG9ydCB7IHBlcnNvbmFsX3JvbCAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1wZXJzb25hbF9yb2xcIjtcclxuaW1wb3J0IHsgcGVybWlzb3MgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXBlcm1pc29zXCI7XHJcbmltcG9ydCB7IHJvbGVzX3Blcm1pc29zICAgICAgfSBmcm9tIFwiLi90YWJsZS1yb2xlc19wZXJtaXNvc1wiO1xyXG5pbXBvcnQgeyBtb2Rvc19kbSAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtbW9kb3NfZG1cIjtcclxuaW1wb3J0IHsgcGFyYW1ldHJvcyAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXBhcmFtZXRyb3NcIjtcclxuaW1wb3J0IHsgcm9sZXNfc3Vib3JkaW5hZG9zICB9IGZyb20gXCIuL3RhYmxlLXJvbGVzX3N1Ym9yZGluYWRvc1wiO1xyXG5cclxuaW1wb3J0IHtub19yZWEgICAgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLW5vX3JlYVwiO1xyXG5pbXBvcnQge25vX3JlYV9zdXAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtbm9fcmVhX3N1cFwiO1xyXG5pbXBvcnQge3RlbSAgICAgICAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtdGVtXCI7XHJcbmltcG9ydCB7c2VtYW5hcyAgICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1zZW1hbmFzXCI7XHJcbmltcG9ydCB7IHVzdWFyaW9zICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXVzdWFyaW9zJztcclxuaW1wb3J0IHsgb3BlcmFjaW9uZXMgICAgICAgICB9IGZyb20gJy4vdGFibGUtb3BlcmFjaW9uZXMnO1xyXG5pbXBvcnQgeyBjb211bmFzICAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1jb211bmFzJztcclxuaW1wb3J0IHsgYXJlYXMgICAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtYXJlYXMnO1xyXG5pbXBvcnQgeyBzaW5jcm9uaXphY2lvbmVzICAgIH0gZnJvbSAnLi90YWJsZS1zaW5jcm9uaXphY2lvbmVzJztcclxuaW1wb3J0IHsgdGFyZWFzICAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbSwgXHJcbiAgICAgICAgIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9lbmN1LCBcclxuICAgICAgICAgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX3JlY3UsIFxyXG4gICAgICAgICB0YXJlYXNfdGVtX2FzaWduYWNpb25fc3VwZSxcclxuICAgICAgICAgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX2luZ3IgICAgIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtJztcclxuaW1wb3J0IHsgdGFyZWFzX2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsIH0gZnJvbSAnLi90YWJsZS1hcmVhc19hc2lnbmFjaW9uX2dlbmVyYWwnO1xyXG5pbXBvcnQgeyBncmlsbGFfaG9qYV9ydXRhICAgIH0gZnJvbSAnLi90YWJsZS1ncmlsbGFfaG9qYV9ydXRhJztcclxuaW1wb3J0IHsgdF9lbmN1X2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9yZWN1X2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9zdXBlX2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9pbmdyX2FyZWFzICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgbWlzX3RhcmVhcyAgICAgICAgICB9IGZyb20gJy4vdGFibGUtbWlzX3RhcmVhcyc7XHJcbmltcG9ydCB7IHRlbV9hc2lnbmFjaW9uICAgICAgfSBmcm9tICcuL3RhYmxlLXRlbV9hc2lnbmFjaW9uJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9yZWNlcGNpb259IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9yZWNlcGNpb24nO1xyXG5pbXBvcnQgeyB0YXJlYXNfdGVtX2luZ3Jlc299IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9pbmdyZXNvJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9maW5fY2FtcG99IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9maW5fY2FtcG8nO1xyXG5pbXBvcnQgeyB0YXJlYXNfdGVtX3Byb2Nlc2FtaWVudG99IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9wcm9jZXNhbWllbnRvJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9hbmFsaXNpc19jYW1wb30gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtX2FuYWxpc2lzX2NhbXBvJztcclxuaW1wb3J0IHsgbWlzX3RhcmVhc19hcmVhcyAgICB9IGZyb20gJy4vdGFibGUtbWlzX3RhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IGNvbnRyb2xfY2FtcG8gICAgICAgfSBmcm9tICcuL3RhYmxlLWNvbnRyb2xfY2FtcG8nO1xyXG5pbXBvcnQgeyBjb250cm9sX3Jlc3VtZW4gICAgIH0gZnJvbSAnLi90YWJsZS1jb250cm9sX3Jlc3VtZW4nO1xyXG5pbXBvcnQgeyBjb250cm9sX2RpYXNfY2FyZ2EgIH0gZnJvbSAnLi90YWJsZS1jb250cm9sX2RpYXNfY2FyZ2EnO1xyXG5pbXBvcnQgeyB2aXZpZW5kYXMgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS12aXZpZW5kYXMnO1xyXG5pbXBvcnQgeyB2aXNpdGFzICAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS12aXNpdGFzJztcclxuaW1wb3J0IHsgaG9nYXJlcyAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtaG9nYXJlcyc7XHJcbmltcG9ydCB7IHBlcnNvbmFzICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXBlcnNvbmFzJztcclxuaW1wb3J0IHsgdmlzaXRhc19zdXAgICAgICAgICB9IGZyb20gJy4vdGFibGUtdmlzaXRhc19zdXAnO1xyXG5pbXBvcnQgeyBob2dhcmVzX3N1cCAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1ob2dhcmVzX3N1cCc7XHJcbmltcG9ydCB7IHBlcnNvbmFzX3N1cCAgICAgICAgfSBmcm9tICcuL3RhYmxlLXBlcnNvbmFzX3N1cCc7XHJcbmltcG9ydCB7IGRpY2Npb25hcmlvICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWRpY2Npb25hcmlvJztcclxuaW1wb3J0IHsgZGljdHJhICAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtZGljdHJhJztcclxuaW1wb3J0IHsgZGljdmFyICAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtZGljdmFyJztcclxuXHJcbmltcG9ydCB7IGVzdGFkb3MgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWVzdGFkb3MnO1xyXG5pbXBvcnQgeyBhY2Npb25lcyAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1hY2Npb25lcyc7XHJcbmltcG9ydCB7IGVzdGFkb3NfYWNjaW9uZXMgICAgfSBmcm9tICcuL3RhYmxlLWVzdGFkb3NfYWNjaW9uZXMnO1xyXG5pbXBvcnQgeyB0YXJlYXNfcHJveGltYXMgICAgIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfcHJveGltYXMnO1xyXG5pbXBvcnQgeyBoaXN0b3JpYWxfdGVtICAgICAgIH0gZnJvbSAnLi90YWJsZS1oaXN0b3JpYWxfdGVtJztcclxuaW1wb3J0IHsgaW5jb25zaXN0ZW5jaWFzX2N1bXBsZW5fY29uZGljaW9uICAgICAgIH0gZnJvbSAnLi90YWJsZS1pbmNvbnNpc3RlbmNpYXNfY3VtcGxlbl9jb25kaWNpb24nO1xyXG5pbXBvcnQgeyB0ZW1fYm9ycmFkYXMgICAgICAgIH0gZnJvbSAnLi90YWJsZS10ZW1fYm9ycmFkYXMnO1xyXG5pbXBvcnQgeyBiYXJyaW9zICAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtYmFycmlvc1wiO1xyXG5pbXBvcnQgeyBmcmFjY2lvbmVzICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtZnJhY2Npb25lc1wiO1xyXG5pbXBvcnQgeyByYWRpb3MgICAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtcmFkaW9zXCI7XHJcbmltcG9ydCB7IG1hbnphbmFzICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1tYW56YW5hc1wiO1xyXG5pbXBvcnQgeyBhcmVhX2VuY19wcm94aW1hcyAgIH0gZnJvbSBcIi4vdGFibGUtYXJlYV9lbmNfcHJveGltYXNcIjtcclxuXHJcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzLWRtZW5jdVwiO1xyXG5pbXBvcnQge2RlZkNvbmZpZ30gZnJvbSBcIi4vZGVmLWNvbmZpZ1wiXHJcbmltcG9ydCB7IFByb2NlZHVyZURlZiB9IGZyb20gXCJiYWNrZW5kLXBsdXNcIjtcclxuaW1wb3J0IHsgdGFibGUgfSBmcm9tIFwiY29uc29sZVwiO1xyXG5cclxuY29uc3QgQVBQX0RNX1ZFUlNJT049XCIjMjItMTItMTVcIjtcclxuXHJcbmNvbnN0IHJlZ2lzdHJhckNyb25Kb2JQYXNhckFQcm9pZSA9IGFzeW5jIChiZTpBcHBCYWNrZW5kKSA9PiB7XHJcbiAgICBsZXQgcHJvY2VkdXJlcyA9IGF3YWl0IGJlLmdldFByb2NlZHVyZXMoKVxyXG4gICAgdmFyIHByb2NQYXNhciA9IHByb2NlZHVyZXMuZmluZCgocHJvYzpQcm9jZWR1cmVEZWYpPT5wcm9jLmFjdGlvbiA9PSBBQ0NJT05fUEFTQVJfUFJPSUUpXHJcbiAgICB2YXIgY29udGV4dCA9IGJlLmdldENvbnRleHRGb3JEdW1wKCk7XHJcbiAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKGFzeW5jICgpPT57XHJcbiAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnaW5pY2lhIGNyb24gcG9zYWplIGEgcHJvaWUnKVxyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihudWxsLCBhc3luYyAoY2xpZW50KT0+e1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5jbGllbnQ9Y2xpZW50O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHByb2NQYXNhci5jb3JlRnVuY3Rpb24oY29udGV4dCxbXSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwicmVzdWx0IHByb2MgcGFzYWplIGEgcHJvaWU6IFwiLCByZXN1bHQpXHJcbiAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBlcnJvciBwYXNhamUgYSBwcm9pZS4gJHtlcnIubWVzc2FnZX1gKTtcclxuICAgICAgICB9ZmluYWxseXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3Rlcm1pbmEgY3JvbiBwcm9pZScpXHJcbiAgICAgICAgfVxyXG4gICAgfSwxMDAwKjYwKjYwKVxyXG4gICAgYmUuc2h1dGRvd25DYWxsYmFja0xpc3RBZGQoe1xyXG4gICAgICAgIG1lc3NhZ2U6J2FwYWdhIGNyb24gcGFzYXIgYSBwcm9pZScsXHJcbiAgICAgICAgZnVuOmFzeW5jIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBlbWVyZ2VBcHBEbUVuY3U8VCBleHRlbmRzIHByb2Nlc2FtaWVudG8uQ29uc3RydWN0b3I8cHJvY2VzYW1pZW50by5BcHBQcm9jZXNhbWllbnRvVHlwZT4+KEJhc2U6VCl7XHJcbiAgcmV0dXJuIGNsYXNzIEFwcERtRW5jdSBleHRlbmRzIEJhc2V7XHJcbiAgICBjb25zdHJ1Y3RvciguLi5hcmdzOmFueVtdKXsgXHJcbiAgICAgICAgc3VwZXIoYXJncyk7IFxyXG4gICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudCA9IHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudCB8fCB7fTtcclxuICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhPVtdXHJcbiAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHM9W11cclxuICAgICAgICB0aGlzLmNhY2hlcy5tZXRhRW5jSW5jbHVpckNhc2lsbGVyb3NTYWx0b1JFTCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FjaGVzLnRpbWVzdGFtcEVzdHJ1Y3R1cmEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIgPSB7fTtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGFzeW5jIGNhbkNoYW5nZVBhc3MocmVxT3JDb250ZXh0LCB1c2VyVG9DaGFuZ2VQYXNzKXtcclxuICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBiZS5pbkRiQ2xpZW50KG51bGwsIGFzeW5jIChjbGllbnQpPT57XHJcbiAgICAgICAgICAgIHZhciBxID0gYmUuZGIucXVvdGVMaXRlcmFsO1xyXG4gICAgICAgICAgICB2YXIgcm9sID0gcmVxT3JDb250ZXh0LnVzZXIucm9sO1xyXG4gICAgICAgICAgICByZXR1cm4gKGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgICAgICBzZWxlY3QgKiBcclxuICAgICAgICAgICAgICAgICAgZnJvbSB1c3VhcmlvcyBcclxuICAgICAgICAgICAgICAgICAgd2hlcmUgcm9sIGluIChzZWxlY3Qgcm9sX3N1Ym9yZGluYWRvIGZyb20gcm9sZXNfc3Vib3JkaW5hZG9zIHdoZXJlIHJvbCA9ICR7cShyb2wpfSlgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdmFyIHB1ZWRlID0gISFyZXN1bHQuZmluZCgodXNlcik9PnVzZXIudXN1YXJpbyA9PSB1c2VyVG9DaGFuZ2VQYXNzKTtcclxuICAgICAgICB2YXIgaXNBZG1pbiA9IGJlLmlzQWRtaW4ocmVxT3JDb250ZXh0KTtcclxuICAgICAgICByZXR1cm4gaXNBZG1pbiB8fCBwdWVkZVxyXG4gICAgICAgIFxyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgYXN5bmMgZ2V0UHJvY2VkdXJlcygpe1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHByb2NlZGltaWVudG9BUmVlbXBsYXphcj1bXCJjYXNvX2d1YXJkYXJcIixcImNhc29fdHJhZXJcIl07XHJcbiAgICAgICAgdmFyIHBhcmVudFByb2MgPSBhd2FpdCBzdXBlci5nZXRQcm9jZWR1cmVzKCk7XHJcbiAgICAgICAgcGFyZW50UHJvYyA9IHBhcmVudFByb2MuZmlsdGVyKChwcm9jZWR1cmU6YW55KSA9PiAhcHJvY2VkaW1pZW50b0FSZWVtcGxhemFyLmluY2x1ZGVzKHByb2NlZHVyZS5hY3Rpb24pKTtcclxuICAgICAgICBwYXJlbnRQcm9jID0gcGFyZW50UHJvYy5tYXAocHJvY0RlZj0+e1xyXG4gICAgICAgICAgICBpZihwcm9jRGVmLmFjdGlvbiA9PSAndGFibGVfcmVjb3JkX3NhdmUnIHx8IHByb2NEZWYuYWN0aW9uID09ICd0YWJsZV9yZWNvcmRfZGVsZXRlJyl7XHJcbiAgICAgICAgICAgICAgICB2YXIgY29yZUZ1bmN0aW9uSW50ZXJubyA9IHByb2NEZWYuY29yZUZ1bmN0aW9uO1xyXG4gICAgICAgICAgICAgICAgcHJvY0RlZi5jb3JlRnVuY3Rpb24gPSBhc3luYyBmdW5jdGlvbihjb250ZXh0OkNvbnRleHQsIHBhcmFtZXRlcnM6Q29yZUZ1bmN0aW9uUGFyYW1ldGVycyl7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IGNvcmVGdW5jdGlvbkludGVybm8oY29udGV4dCwgcGFyYW1ldGVycylcclxuICAgICAgICAgICAgICAgICAgICBpZihwYXJhbWV0ZXJzLnRhYmxlID09ICdjYXNpbGxlcm9zJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlLmNhY2hlcy50aW1lc3RhbXBFc3RydWN0dXJhID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzZSB0b2PDsyBsYSBlc3RydWN0dXJhJywgYmUuY2FjaGVzLnRpbWVzdGFtcEVzdHJ1Y3R1cmEpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHByb2NEZWY7XHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm4gcGFyZW50UHJvYy5jb25jYXQoUHJvY2VkdXJlc0RtRW5jdSk7XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBhc3luYyBjaGVja0RhdGFiYXNlU3RydWN0dXJlKF9jbGllbnQ6Q2xpZW50KXtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGFkZFNjaHLDtmRpbmdlclNlcnZpY2VzKG1haW5BcHA6cHJvY2VzYW1pZW50by5FeHByZXNzLCBiYXNlVXJsOnN0cmluZyl7XHJcbiAgICAgICAgbGV0IGJlPXRoaXM7XHJcbiAgICAgICAgc3VwZXIuYWRkU2NocsO2ZGluZ2VyU2VydmljZXMobWFpbkFwcCwgYmFzZVVybCk7XHJcbiAgICAgICAgLy9wZXJtaXRvIGxldmFudGFyIG1pcyBpbWFnZW5lcyBlbiBhcGxpY2FjaW9uZXMgZGVwZW5kaWVudGVzXHJcbiAgICAgICAgYmUuYXBwLnVzZSgnL2ltZycsIGV4cHJlc3Muc3RhdGljKCdub2RlX21vZHVsZXMvZG1lbmN1L2Rpc3QvdW5sb2dnZWQvdW5sb2dnZWQvaW1nJykpXHJcbiAgICAgICAgbWFpbkFwcC51c2UoZnVuY3Rpb24ocmVxOlJlcXVlc3QsX3JlczpSZXNwb25zZSwgbmV4dDpOZXh0RnVuY3Rpb24pe1xyXG4gICAgICAgICAgICBpZihyZXEuc2Vzc2lvbiAmJiAhcmVxLnNlc3Npb24uaW5zdGFsbCl7XHJcbiAgICAgICAgICAgICAgICByZXEuc2Vzc2lvbi5pbnN0YWxsPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5yZXBsYWNlKCcuJywnJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbmV4dCgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbWFpbkFwcC5nZXQoYmFzZVVybCsnL3NhbHZhcicsYXN5bmMgZnVuY3Rpb24ocmVxLHJlcyxfbmV4dCl7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgc8OpIHF1ZSB2b3kgYSByZWNpYmlyIHVzZXJhZ2VudCBwb3IgbG9zIG1pZGRsZXdhcmVzIGRlIEJhY2tlbmQtcGx1c1xyXG4gICAgICAgICAgICB2YXIge3VzZXJhZ2VudH0gPSByZXE7XHJcbiAgICAgICAgICAgIHZhciBodG1sTWFpbj1iZS5tYWluUGFnZSh7dXNlcmFnZW50fSwgZmFsc2UsIHtza2lwTWVudTp0cnVlLCBvZmZsaW5lRmlsZTp0cnVlfSkudG9IdG1sRG9jKCk7XHJcbiAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZVRleHQoaHRtbE1haW4sJ2h0bWwnKShyZXEscmVzKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsKycvY2FtcG8nLGFzeW5jIGZ1bmN0aW9uKHJlcSxyZXMsX25leHQpe1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIHPDqSBxdWUgdm95IGEgcmVjaWJpciB1c2VyYWdlbnQgcG9yIGxvcyBtaWRkbGV3YXJlcyBkZSBCYWNrZW5kLXBsdXNcclxuICAgICAgICAgICAgdmFyIHt1c2VyYWdlbnQsIHVzZXJ9ID0gcmVxO1xyXG4gICAgICAgICAgICBpZih1c2VyKXtcclxuICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7e3R5cGU6J2pzJywgc3JjOnN0cmluZ31bXX0gKi9cclxuICAgICAgICAgICAgICAgIHZhciB3ZWJNYW5pZmVzdFBhdGggPSAnY2FyZ2EtZG0vd2ViLW1hbmlmZXN0LndlYm1hbmlmZXN0JztcclxuICAgICAgICAgICAgICAgIHZhciBodG1sTWFpbj1iZS5tYWluUGFnZSh7dXNlcmFnZW50LCB1c2VyfSwgZmFsc2UsIHtza2lwTWVudTp0cnVlLCB3ZWJNYW5pZmVzdFBhdGgsIG9mZmxpbmVGaWxlOnRydWV9KS50b0h0bWxEb2MoKTtcclxuICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChodG1sTWFpbiwnaHRtbCcpKHJlcSxyZXMpO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHJlcy5yZWRpcmVjdCg0MDEsIGJhc2VVcmwrJy9sb2dpbiN3PXBhdGgmcGF0aD0vY2FtcG8nKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdmFyIGNyZWF0ZVNlcnZpY2VXb3JrZXIgPSBhc3luYyBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICB2YXIgc3cgPSBhd2FpdCBmcy5yZWFkRmlsZSgnbm9kZV9tb2R1bGVzL3NlcnZpY2Utd29ya2VyLWFkbWluL2Rpc3Qvc2VydmljZS13b3JrZXItd28tbWFuaWZlc3QuanMnLCAndXRmOCcpO1xyXG4gICAgICAgICAgICB2YXIgbWFuaWZlc3QgPSBiZS5jcmVhdGVSZXNvdXJjZXNGb3JDYWNoZUpzb24oKTtcclxuICAgICAgICAgICAgdmFyIHN3TWFuaWZlc3QgPSBzd1xyXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoXCInLyp2ZXJzaW9uKi8nXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LnZlcnNpb24pKVxyXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoXCInLyphcHBOYW1lKi8nXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmFwcE5hbWUpKVxyXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcW1xccypcXC9cXCp1cmxzVG9DYWNoZVxcKlxcL1xccypcXF0vLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5jYWNoZSkpXHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxzKlxcL1xcKmZhbGxiYWNrc1xcKlxcL1xccypcXF0vLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5mYWxsYmFjayB8fCBbXSkpO1xyXG4gICAgICAgICAgICAgICAgLy8ucmVwbGFjZShcIi8jQ0FDSEUkL1wiLCBcIi8oYVxcXFxkK21cXFxcZCtwXFxcXGQrdFxcXFxkK19lc3RydWN0dXJhLmpzKXwoYVxcXFxkK21cXFxcZCtwXFxcXGQrdFxcXFxkK19oZHIuanNvbikvXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gc3dNYW5pZmVzdFxyXG4gICAgICAgIH1cclxuICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsK2Avc3ctbWFuaWZlc3QuanNgLCBhc3luYyBmdW5jdGlvbihyZXEsIHJlcywgbmV4dCl7XHJcbiAgICAgICAgICAgIHRyeXtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZVRleHQoYXdhaXQgY3JlYXRlU2VydmljZVdvcmtlcigpLCdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JykocmVxLHJlcyk7XHJcbiAgICAgICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRXJyKHJlcSxyZXMsbmV4dCkodW5leHBlY3RlZChlcnIpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwrYC9jYXJnYS1kbS93ZWItbWFuaWZlc3Qud2VibWFuaWZlc3RgLCBhc3luYyBmdW5jdGlvbihyZXEsIHJlcywgbmV4dCl7XHJcbiAgICAgICAgICAgIGNvbnN0IEFQUF9OQU1FID0gKGF3YWl0IGJlLmluVHJhbnNhY3Rpb24obnVsbCwgKGNsaWVudDpwZy5DbGllbnQpPT5cclxuICAgICAgICAgICAgICAgIGNsaWVudC5xdWVyeShcInNlbGVjdCBvcGVyYXRpdm8gZnJvbSBwYXJhbWV0cm9zIHdoZXJlIHVuaWNvX3JlZ2lzdHJvXCIpLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICApKS52YWx1ZTtcclxuICAgICAgICAgICAgdmFyIHN1ZmlqbyA9IGJhc2VVcmwuaW5jbHVkZXMoJ3Rlc3QnKSB8fCBiYXNlVXJsLmluY2x1ZGVzKCcvcHInKT8nX3Rlc3QnOlxyXG4gICAgICAgICAgICAgICAgYmFzZVVybC5pbmNsdWRlcygnY2FwYScpPydfY2FwYSc6Jyc7XHJcbiAgICAgICAgICAgIHRyeXtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBgJHtBUFBfTkFNRX0ke3N1Zmlqb30gUHJvZ3Jlc3NpdmUgV2ViIEFwcGAsXHJcbiAgICAgICAgICAgICAgICAgIFwic2hvcnRfbmFtZVwiOiBgJHtBUFBfTkFNRX0ke3N1Zmlqb30gUFdBYCxcclxuICAgICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBgUHJvZ3Jlc3NpdmUgV2ViIEFwcCBmb3IgJHtBUFBfTkFNRX0ke3N1Zmlqb30uYCxcclxuICAgICAgICAgICAgICAgICAgXCJpY29uc1wiOiBbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTMyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNpemVzXCI6IFwiMzJ4MzJcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tNDgke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCI0OHg0OFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS02NCR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaXplc1wiOiBcIjY0eDY0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTcyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNpemVzXCI6IFwiNzJ4NzJcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tMTkyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNpemVzXCI6IFwiMTkyeDE5MlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS01MTIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCI1MTJ4NTEyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgLi4uYmUuZ2V0Q29sb3JzSnNvbihzdWZpam8gYXMgU3VmaWpvc0FtYmllbnRlKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChKU09OLnN0cmluZ2lmeShjb250ZW50KSwgJ2FwcGxpY2F0aW9uL2pzb24nKShyZXEscmVzKTtcclxuICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVFcnIocmVxLCByZXMsIG5leHQpKHVuZXhwZWN0ZWQoZXJyKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGdldENvbG9yc0pzb24oX3N1ZmlqbzogU3VmaWpvc0FtYmllbnRlKXtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBcInN0YXJ0X3VybFwiOiBcIi4uL2NhbXBvXCIsXHJcbiAgICAgICAgICAgIFwiZGlzcGxheVwiOiBcInN0YW5kYWxvbmVcIixcclxuICAgICAgICAgICAgXCJ0aGVtZV9jb2xvclwiOiBcIiMzRjUxQjVcIixcclxuICAgICAgICAgICAgXCJiYWNrZ3JvdW5kX2NvbG9yXCI6IFwiIzZkNjBlZFwiXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgYWRkTG9nZ2VkU2VydmljZXMoKXtcclxuICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgIHN1cGVyLmFkZExvZ2dlZFNlcnZpY2VzKCk7XHJcbiAgICAgICAgYmUuYXBwLmdldCgnL21hbmlmZXN0Lm1hbmlmZXN0JywgYXN5bmMgZnVuY3Rpb24ocmVxOlJlcXVlc3QsIHJlczpSZXNwb25zZSwgX25leHQ6TmV4dEZ1bmN0aW9uKXtcclxuICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRmlsZSgnc3JjL2NsaWVudC9tYW5pZmVzdC5tYW5pZmVzdCcse30pKHJlcSxyZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYXBwLmdldCgnL2ZpbGUnLCBhc3luYyBmdW5jdGlvbihyZXE6UmVxdWVzdCxyZXM6UmVzcG9uc2Upe1xyXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihyZXEsIFxyXG4gICAgICAgICAgICAgICAgKGNsaWVudDpwZy5DbGllbnQpPT5cclxuICAgICAgICAgICAgICAgIGNsaWVudC5xdWVyeShcInNlbGVjdCBydXRhIGZyb20gYWRqdW50b3Mgd2hlcmUgaWRfYWRqdW50byA9ICQxXCIsW3JlcS5xdWVyeS5pZF9hZGp1bnRvXSlcclxuICAgICAgICAgICAgICAgIC5mZXRjaFVuaXF1ZVZhbHVlKClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdmFyIHBhdGggPSByZXN1bHQudmFsdWU7XHJcbiAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUocGF0aCx7fSkocmVxLHJlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hcHAuZ2V0KCcvaW1hZ2VuZXMnLCBhc3luYyBmdW5jdGlvbihyZXE6UmVxdWVzdCxyZXM6UmVzcG9uc2Upe1xyXG4gICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVGaWxlKCdsb2NhbC1pbWFnZXMvJytyZXEucXVlcnkucGRmLHt9KShyZXEscmVzKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFwcC5nZXQoJy9kb3dubG9hZC9hbGwnLGFzeW5jIGZ1bmN0aW9uKHJlcTpSZXF1ZXN0LCByZXM6UmVzcG9uc2UsIG5leHQ6KCk9PnZvaWQpe1xyXG4gICAgICAgICAgICBpZihyZXEudXNlcj09bnVsbCB8fCByZXEudXNlci5yb2whPSdhZG1pbicpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25vIGVzdMOhIGF1dG9yaXphZG8gYSBiYWphcnNlIHRvZG8nLHJlcS51c2VyKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5leHQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgemlwID0gbmV3IHlhemwuWmlwRmlsZSgpO1xyXG4gICAgICAgICAgICB6aXAub3V0cHV0U3RyZWFtLnBpcGUocmVzKTtcclxuICAgICAgICAgICAgbGV0IGJhc2UgPSAnbG9jYWwtYXR0YWNobWVudHMnXHJcbiAgICAgICAgICAgIGxldCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIoYmFzZSk7XHJcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGZpbGVzLm1hcChhc3luYyBmdW5jdGlvbihmaWxlTmFtZTpzdHJpbmcpe1xyXG4gICAgICAgICAgICAgICAgdmFyIHBhdGggPSBiYXNlKycvJytmaWxlTmFtZTtcclxuICAgICAgICAgICAgICAgIHZhciBzdGF0ID0gYXdhaXQgZnMuc3RhdChwYXRoKTtcclxuICAgICAgICAgICAgICAgIGlmKHN0YXQuaXNGaWxlKCkpe1xyXG4gICAgICAgICAgICAgICAgICAgIHppcC5hZGRGaWxlKHBhdGgsZmlsZU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIHppcC5lbmQoKTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgYXN5bmMgcG9zdENvbmZpZygpe1xyXG4gICAgICAgIGF3YWl0IHN1cGVyLnBvc3RDb25maWcoKTtcclxuICAgICAgICB2YXIgYmU9dGhpcztcclxuICAgICAgICBiZS5jYWNoZXMubWV0YUVuY0luY2x1aXJDYXNpbGxlcm9zU2FsdG9SRUwgPSBmYWxzZTtcclxuICAgICAgICBhd2FpdCBiZS5pblRyYW5zYWN0aW9uKG51bGwsIGFzeW5jIGZ1bmN0aW9uKGNsaWVudDpwZy5DbGllbnQpe1xyXG4gICAgICAgICAgICB2YXIgcVBlcm1pc29zPWBcclxuICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2coci5yb2wsanNvbmJfYnVpbGRfb2JqZWN0KCdzdXBlcnVzZXInLHIuc3VwZXJ1c2VyLCdwdWVkZScsKFxyXG4gICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhycC5wZXJtaXNvLChcclxuICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2cocnBhLmFjY2lvbixycGEuaGFiaWxpdGFkbylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIHJvbGVzX3Blcm1pc29zIHJwYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHJwYS5yb2w9cnAucm9sIEFORCBycGEucGVybWlzbz1ycC5wZXJtaXNvXHJcbiAgICAgICAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgICAgICAgICBGUk9NIHJvbGVzX3Blcm1pc29zIHJwXHJcbiAgICAgICAgICAgICAgICAgICAgV0hFUkUgcnAucm9sPXIucm9sICNjb25kSGFiaWxpdGFkbyNcclxuICAgICAgICAgICAgICApKSlcclxuICAgICAgICAgICAgICBGUk9NIHJvbGVzIHJcclxuICAgICAgICAgICAgYDtcclxuICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBbXHJcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkocVBlcm1pc29zLnJlcGxhY2UoJyNjb25kSGFiaWxpdGFkbyMnLCcnKSkuZmV0Y2hVbmlxdWVWYWx1ZSgpLFxyXG4gICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KHFQZXJtaXNvcy5yZXBsYWNlKCcjY29uZEhhYmlsaXRhZG8jJyxgIGFuZCBycC4ke3BnLnF1b3RlSWRlbnQoJ2hhYmlsaXRhZG8nKX1gKSkuZmV0Y2hVbmlxdWVWYWx1ZSgpLFxyXG4gICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhwZXJtaXNvLChcclxuICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2coYWNjaW9uLHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZXJtaXNvcyBwYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHBhLnBlcm1pc289cC5wZXJtaXNvXHJcbiAgICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZXJtaXNvcyBwXHJcbiAgICAgICAgICAgICAgICBgKS5mZXRjaFVuaXF1ZVZhbHVlKClcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zUm9sPXJlc3VsdHNbMF0udmFsdWU7XHJcbiAgICAgICAgICAgIGJlLmNhY2hlcy5wZXJtaXNvc1JvbFNvbG9UcnVlPXJlc3VsdHNbMV0udmFsdWU7XHJcbiAgICAgICAgICAgIGJlLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlcj1yZXN1bHRzWzJdLnZhbHVlO1xyXG4gICAgICAgICAgICBiZS5jYWNoZXMucGVybWlzb3NQYXJhTmFkaWU9bGlrZUFyKGJlLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlcikubWFwKHA9Pmxpa2VBcihwKS5tYXAoXz0+ZmFsc2UpLnBsYWluKCkpLnBsYWluKClcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRpcihiZS5jYWNoZXMucGVybWlzb3NSb2xTb2xvVHJ1ZSx7ZGVwdGg6OX0pO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlcix7ZGVwdGg6OX0pO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLmNhY2hlcy5wZXJtaXNvc1BhcmFOYWRpZSx7ZGVwdGg6OX0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaENhY2hlcygpO1xyXG4gICAgICAgIGF3YWl0IHJlZ2lzdHJhckNyb25Kb2JQYXNhckFQcm9pZShiZSk7XHJcbiAgICB9XHJcbiAgICBvdmVycmlkZSBjb25maWdTdGF0aWNDb25maWcoKXtcclxuICAgICAgICBzdXBlci5jb25maWdTdGF0aWNDb25maWcoKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRpY0NvbmZpZyhkZWZDb25maWcpO1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgY2xpZW50SW5jbHVkZXMocmVxOlJlcXVlc3QsIG9wdHM6T3B0c0NsaWVudFBhZ2UpOkNsaWVudE1vZHVsZURlZmluaXRpb25bXSB7XHJcbiAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICB2YXIgdW5sb2dnZWQgPSBvcHRzICYmIG9wdHMub2ZmbGluZUZpbGU7XHJcbiAgICAgICAgdmFyIG1lbnVlZFJlc291cmNlczpDbGllbnRNb2R1bGVEZWZpbml0aW9uW109IHVubG9nZ2VkP1tcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAndW5sb2dnZWQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgIF06W1xyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi9jbGllbnQvY2xpZW50JywgZmlsZTogJ2NsaWVudC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgICBpZihvcHRzICYmIG9wdHMuZXh0cmFGaWxlcyl7XHJcbiAgICAgICAgICAgIG1lbnVlZFJlc291cmNlcyA9IG1lbnVlZFJlc291cmNlcy5jb25jYXQob3B0cy5leHRyYUZpbGVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGV4dGVybmFsUmVzb3VyY2VzOkNsaWVudE1vZHVsZURlZmluaXRpb25bXSA9IFtcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWFjdCcsIG1vZFBhdGg6ICd1bWQnLCBmaWxlRGV2ZWxvcG1lbnQ6J3JlYWN0LmRldmVsb3BtZW50LmpzJywgZmlsZToncmVhY3QucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVhY3QtZG9tJywgbW9kUGF0aDogJ3VtZCcsIGZpbGVEZXZlbG9wbWVudDoncmVhY3QtZG9tLmRldmVsb3BtZW50LmpzJywgZmlsZToncmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG4gICAgICAgICAgICAvL3sgdHlwZTogJ2pzJywgbW9kdWxlOiAnQG1hdGVyaWFsLXVpL2NvcmUnLCBtb2RQYXRoOiAndW1kJywgZmlsZURldmVsb3BtZW50OidtYXRlcmlhbC11aS5kZXZlbG9wbWVudC5qcycsIGZpbGU6J21hdGVyaWFsLXVpLnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ0BtdWkvbWF0ZXJpYWwnLCBtb2RQYXRoOiAnLi4vdW1kJywgZmlsZURldmVsb3BtZW50OidtYXRlcmlhbC11aS5kZXZlbG9wbWVudC5qcycsIGZpbGU6J21hdGVyaWFsLXVpLnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG5cclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWR1eCcsIG1vZFBhdGg6Jy4uL2Rpc3QnLCBmaWxlRGV2ZWxvcG1lbnQ6J3JlZHV4LmpzJywgZmlsZToncmVkdXgubWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlYWN0LXJlZHV4JywgbW9kUGF0aDonLi4vZGlzdCcsIGZpbGVEZXZlbG9wbWVudDoncmVhY3QtcmVkdXguanMnLCBmaWxlOidyZWFjdC1yZWR1eC5taW4uanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnbWVtb2l6ZS1vbmUnLCAgZmlsZTonbWVtb2l6ZS1vbmUuanMnIH0sXHJcbiAgICAgICAgICAgIC8veyB0eXBlOiAnanMnLCBtb2R1bGU6ICdxcmNvZGUnLCBtb2RQYXRoOiAnLi4vYnVpbGQnLCBmaWxlOiAncXJjb2RlLmpzJ30sXHJcbiAgICAgICAgICAgIC4uLnN1cGVyLmNsaWVudEluY2x1ZGVzKHJlcSwgb3B0cykuZmlsdGVyKG09Pm0uZmlsZSE9J2Zvcm11bGFyaW9zLmNzcycpXHJcbiAgICAgICAgICAgIC5maWx0ZXIobT0+IXVubG9nZ2VkIHx8IHRydWVcclxuICAgICAgICAgICAgICAgICYmIG0uZmlsZSE9J3Zhci1jYWwuanMnXHJcbiAgICAgICAgICAgICAgICAmJiBtLmZpbGUhPSd2YXItY2FsLmpzJyAgICAgXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnc2VydmljZS13b3JrZXItYWRtaW4nLCAgZmlsZTonc2VydmljZS13b3JrZXItYWRtaW4uanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVkdXgtdHlwZWQtcmVkdWNlcicsIG1vZFBhdGg6Jy4uL2Rpc3QnLCBmaWxlOidyZWR1eC10eXBlZC1yZWR1Y2VyLmpzJyB9XHJcbiAgICAgICAgXTtcclxuICAgICAgICB2YXIgcmVzb3VyY2VzOkNsaWVudE1vZHVsZURlZmluaXRpb25bXSA9IFtcclxuICAgICAgICAgICAgLi4uZXh0ZXJuYWxSZXNvdXJjZXMsXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2FkYXB0LmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAndGlwb3MuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdieXBhc3MtZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3JlZHV4LWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZW5kZXItZ2VuZXJhbC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3JlbmRlci1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYWJyaXItZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2NzcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi9jbGllbnQvY2xpZW50L2NzcycsIGZpbGU6ICdtZW51LmNzcycsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2NzcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZC9jc3MnLCBmaWxlOiAnZm9ybXVsYXJpby1yZWFjdC5jc3MnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdjc3MnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQvY3NzJywgZmlsZTogJ2Jvb3RzdHJhcC5taW4uY3NzJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAndHRmJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkL2NzcycsIGZpbGU6ICdSb2JvdG8tUmVndWxhci50dGYnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICAuLi4gbWVudWVkUmVzb3VyY2VzLFxyXG4gICAgICAgIF1cclxuICAgICAgICByZXR1cm4gcmVzb3VyY2VzXHJcbiAgICAgICAgLy8gLm1hcChtPT4oey4uLm0sIGZpbGU6bS5maWxlRGV2ZWxvcG1lbnR8fG0uZmlsZX0pKTtcclxuICAgIH1cclxuICAgIGFzeW5jIHJlZnJlc2hDYWNoZXMoKXtcclxuICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgPSB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgfHwge307XHJcbiAgICAgICAgYXdhaXQgdGhpcy5pbkRiQ2xpZW50KG51bGwsIGFzeW5jIChjbGllbnQpPT57XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWEgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBzZWxlY3QgKiBmcm9tIG5vX3JlYSBvcmRlciBieSBub19yZWFgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY2FjaGVzJyx0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhKVxyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX2dyb3VwcyA9IChhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0IGdydXBvLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhIHIgZ3JvdXAgYnkgZ3J1cG8gb3JkZXIgYnkgMVxyXG4gICAgICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX2dyb3VwczAgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgIHNlbGVjdCBncnVwbzAgYXMgZ3J1cG8sIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWEgciBncm91cCBieSBncnVwbzAgb3JkZXIgYnkgMVxyXG4gICAgICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX3N1cCA9IChhd2FpdCBjbGllbnQucXVlcnkoYHNlbGVjdCAqIGZyb20gbm9fcmVhX3N1cCBvcmRlciBieSBub19yZWFfc3VwYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhY2hlcycsdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXApXHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwX2dyb3VwcyA9IChhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgZ3J1cG9fc3VwLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhX3N1cCByIGdyb3VwIGJ5IGdydXBvX3N1cCBvcmRlciBieSAxXHJcbiAgICAgICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwX2dyb3VwczAgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgc2VsZWN0IGdydXBvMF9zdXAgYXMgZ3J1cG8sIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWFfc3VwIHIgZ3JvdXAgYnkgZ3J1cG8wX3N1cCBvcmRlciBieSAxXHJcbiAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgc2VsZWN0IGNvbl9yZWFfaG9nYXIsb3BlcmF0aXZvLCBjb25maWdfc29ydGVvIGZyb20gb3BlcmF0aXZvcyBqb2luIHBhcmFtZXRyb3MgdXNpbmcgKG9wZXJhdGl2bykgd2hlcmUgdW5pY29fcmVnaXN0cm9cclxuICAgICAgICAgICAgIGApLmZldGNoVW5pcXVlUm93KCkpLnJvdztcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnY2FjaGVzICcsdGhpcy5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyIClcclxuICAgICAgICB9KVxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdjYWNoZXMgb2snKTtcclxuICAgIH1cclxuICAgIC8vc3FsTm9yZWFDYXNlKGNhbXBvTmVjZXNhcmlvOnN0cmluZyl7XHJcbiAgICAvLyAgICB2YXIgYmU9dGhpcztcclxuICAgIC8vICAgIHJldHVybiBgQ0FTRSAke2JlLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhLm1hcCh4PT5cclxuICAgIC8vICAgICAgICBgIFdIRU4gbm9yZWEgID0gJHtiZS5kYi5xdW90ZUxpdGVyYWwoeC5ub19yZWEpfTo6aW50ZWdlciBUSEVOICR7YmUuZGIucXVvdGVMaXRlcmFsKHhbY2FtcG9OZWNlc2FyaW9dKX1gXHJcbiAgICAvLyAgICApLmpvaW4oJycpfSBXSEVOIFRSVUUgVEhFTiBOVUxMIEVORGBcclxuICAgIC8vfSAgICBcclxuICAgIG92ZXJyaWRlIGdldENvbnRleHQocmVxOlJlcXVlc3QpOkNvbnRleHR7XHJcbiAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICB2YXIgZmF0aGVyQ29udGV4dCA9IHN1cGVyLmdldENvbnRleHQocmVxKTtcclxuICAgICAgICBpZihmYXRoZXJDb250ZXh0LnVzZXIpe1xyXG4gICAgICAgICAgICBpZihyZXEudXNlcj8ucm9sICE9bnVsbCAmJiBiZS5jYWNoZXMucGVybWlzb3NSb2xbcmVxLnVzZXIucm9sXT8uc3VwZXJ1c2VyKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7c3VwZXJ1c2VyOnRydWUsIHB1ZWRlOiBiZS5jYWNoZXMucGVybWlzb3NTdXBlcnVzZXIsIC4uLmZhdGhlckNvbnRleHR9XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtwdWVkZTogYmUuY2FjaGVzLnBlcm1pc29zUm9sW3JlcS51c2VyLnJvbF0/LnB1ZWRlLCAuLi5mYXRoZXJDb250ZXh0fVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7cHVlZGU6YmUuY2FjaGVzLnBlcm1pc29zUGFyYU5hZGllLCAuLi5mYXRoZXJDb250ZXh0fTtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGdldENvbnRleHRGb3JEdW1wKCk6Q29udGV4dHtcclxuICAgICAgICB2YXIgZmF0aGVyQ29udGV4dCA9IHN1cGVyLmdldENvbnRleHRGb3JEdW1wKCk7XHJcbiAgICAgICAgcmV0dXJuIHtzdXBlcnVzZXI6dHJ1ZSwgcHVlZGU6IHRoaXMuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyLCAuLi5mYXRoZXJDb250ZXh0fTtcclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGFzeW5jIGdldENsaWVudFNldHVwRm9yU2VuZFRvRnJvbnRFbmQocmVxOlJlcXVlc3Qpe1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLihhd2FpdCBzdXBlci5nZXRDbGllbnRTZXR1cEZvclNlbmRUb0Zyb250RW5kKHJlcSkpLFxyXG4gICAgICAgICAgICBpZHBlcjogcmVxLnVzZXI/LmlkcGVyXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY3JlYXRlUmVzb3VyY2VzRm9yQ2FjaGVKc29uKCl7XHJcbiAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICB2YXIganNvblJlc3VsdCA9IHtcclxuICAgICAgICAgICAgdmVyc2lvbjogQVBQX0RNX1ZFUlNJT04sXHJcbiAgICAgICAgICAgIGFwcE5hbWU6ICdkbWVuY3UnLFxyXG4gICAgICAgICAgICBjYWNoZTogW1xyXG4gICAgICAgICAgICAgICAgXCJjYW1wb1wiLFxyXG4gICAgICAgICAgICAgICAgXCJvZmZsaW5lXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9tYXRlcmlhbC11aS5wcm9kdWN0aW9uLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvcmVkdXgubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9yZWFjdC1yZWR1eC5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL21lbW9pemUtb25lLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAvL1wibGliL3FyY29kZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvcmVxdWlyZS1icm8uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2Nhc3QtZXJyb3IuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2xpa2UtYXIuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2Jlc3QtZ2xvYmFscy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvanNvbjRhbGwuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL2pzLXRvLWh0bWwuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3JlZHV4LXR5cGVkLXJlZHVjZXIuanNcIixcclxuICAgICAgICAgICAgICAgIFwiZG1lbmN1L2FkYXB0LmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImRtZW5jdS91bmxvZ2dlZC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvanMteWFtbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIveGxzeC5jb3JlLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbGF6eS1zb21lLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9zcWwtdG9vbHMuanNcIixcclxuICAgICAgICAgICAgICAgIFwiZGlhbG9nLXByb21pc2UvZGlhbG9nLXByb21pc2UuanNcIixcclxuICAgICAgICAgICAgICAgIFwibW9tZW50L21pbi9tb21lbnQuanNcIixcclxuICAgICAgICAgICAgICAgIFwicGlrYWRheS9waWthZGF5LmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9wb2x5ZmlsbHMtYnJvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9iaWcuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3R5cGUtc3RvcmUuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3R5cGVkLWNvbnRyb2xzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9hamF4LWJlc3QtcHJvbWlzZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJteS1hamF4LmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcIm15LXN0YXJ0LmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9teS1sb2NhbGRiLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9teS13ZWJzcWxkYi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbXktbG9jYWxkYi5qcy5tYXBcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LXdlYnNxbGRiLmpzLm1hcFwiLFxyXG4gICAgICAgICAgICAgICAgXCJsaWIvbXktdGhpbmdzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9teS10YWJsZXMuanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL215LWluZm9ybS1uZXQtc3RhdHVzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9teS1tZW51LmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9teS1za2luLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9jbGllbnRlLWVuLWNhc3RlbGxhbm8uanNcIixcclxuICAgICAgICAgICAgICAgIFwibGliL3NlcnZpY2Utd29ya2VyLWFkbWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImxpYi9yZWR1eC10eXBlZC1yZWR1Y2VyLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL29wZXJhdGl2b3MuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvdmFyY2FsLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL2Zvcm0tc3RydWN0dXJlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL21ldGEtZW5jLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL2RhdG9zLWV4dC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9jb25zaXN0ZW5jaWFzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL3Byb2Nlc2FtaWVudG8uanNcIixcclxuICAgICAgICAgICAgICAgIFwiZG1lbmN1L3RpcG9zLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImRtZW5jdS9ieXBhc3MtZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkbWVuY3UvcmVkdXgtZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkbWVuY3UvcmVuZGVyLWdlbmVyYWwuanNcIixcclxuICAgICAgICAgICAgICAgIFwiZG1lbmN1L3JlbmRlci1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImRtZW5jdS9hYnJpci1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL3Jvdy12YWxpZGF0b3IuanNcIixcclxuICAgICAgICAgICAgICAgIFwiY2xpZW50L21lbnUuanNcIixcclxuICAgICAgICAgICAgICAgIFwiaW1nL2xvZ28ucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAvL1wiaW1nL2xvZ28tZG0ucG5nXCIsXHJcbiAgICAgICAgICAgICAgICBcImltZy9sb2dvLTEyOC5wbmdcIixcclxuICAgICAgICAgICAgICAgIFwiaW1nL21haW4tbG9hZGluZy5naWZcIixcclxuICAgICAgICAgICAgICAgIFwiaW1nL2JvcnJhci12YWxvci5wbmdcIixcclxuICAgICAgICAgICAgICAgIFwiaW1nL2ZvbmRvLXNhbHRlYWRvLWVycm9yLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgXCJpbWcvZm9uZG8tc2FsdGVhZG8ucG5nXCIsXHJcbiAgICAgICAgICAgICAgICBcImltZy9iYWNrZ3JvdW5kLXRlc3QucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAvL1wiY2xpZW50LXNldHVwXCIsXHJcbiAgICAgICAgICAgICAgICBcImNzcy9ib290c3RyYXAubWluLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjc3MvZm9ybXVsYXJpby1yZWFjdC5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwicGlrYWRheS9waWthZGF5LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkaWFsb2ctcHJvbWlzZS9kaWFsb2ctcHJvbWlzZS5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwicmVsLWVuYy9lc3RhZG9zLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjc3MvbXktdGFibGVzLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgXCJjc3MvbXktbWVudS5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwiY3NzL215LXRoaW5ncy5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwiY3NzL21lbnUuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcInJlbC1lbmMvbXktdGhpbmdzMi5jc3NcIixcclxuICAgICAgICAgICAgICAgIFwiY3NzL2Zvcm11bGFyaW8tcmVhY3QuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBcImNzcy9Sb2JvdG8tUmVndWxhci50dGZcIlxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBmYWxsYmFjazogW1xyXG4gICAgICAgICAgICAgICAge1wicGF0aFwiOlwibG9naW5cIiwgXCJmYWxsYmFja1wiOlwib2ZmbGluZVwifSxcclxuICAgICAgICAgICAgICAgIHtcInBhdGhcIjpcImxvZ291dFwiLCBcImZhbGxiYWNrXCI6XCJvZmZsaW5lXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wicGF0aFwiOlwibG9naW4jaT1zaW5jcm9uaXphclwiLCBcImZhbGxiYWNrXCI6XCJvZmZsaW5lXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wicGF0aFwiOlwibWVudSNpPXNpbmNyb25pemFyXCIsIFwiZmFsbGJhY2tcIjpcIm9mZmxpbmVcIn0sXHJcbiAgICAgICAgICAgICAgICB7XCJwYXRoXCI6XCJsb2dpbiNpPWNhbWJpYXJfbW9kb19kbVwiLCBcImZhbGxiYWNrXCI6XCJvZmZsaW5lXCJ9LFxyXG4gICAgICAgICAgICAgICAge1wicGF0aFwiOlwibWVudSNpPWNhbWJpYXJfbW9kb19kbVwiLCBcImZhbGxiYWNrXCI6XCJvZmZsaW5lXCJ9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBqc29uUmVzdWx0XHJcbiAgICB9XHJcbiAgICBnZXRNZW51Q29udHJvbGVzKGNvbnRleHQ6Q29udGV4dCkgeyByZXR1cm4gW1xyXG4gICAgICAgIHttZW51VHlwZToncHJvYycsIG5hbWU6J2VuY3Vlc3Rhc19wcm9jZXNhbWllbnRvX3Bhc2FyJywgbGFiZWw6ICdwYXNhciBlbmN1ZXN0YXMgYSBwcm9jZXNhbWllbnRvJ30sXHJcbiAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3Jlc3VtZW4nLCB0YWJsZTonY29udHJvbF9yZXN1bWVuJywgc2VsZWN0ZWRCeURlZmF1bHQ6dHJ1ZX0sXHJcbiAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2RvbWluaW8nLCB0YWJsZTonY29udHJvbF9jYW1wb19kb21pbmlvJ30sXHJcbiAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3pvbmEnICAgLCB0YWJsZTonY29udHJvbF9jYW1wb196b25hJyAgfSxcclxuICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonY29tdW5hJyAsIHRhYmxlOidjb250cm9sX2NhbXBvX2NvbXVuYSd9LFxyXG4gICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOifDoXJlYScgICAsIHRhYmxlOidjb250cm9sX2NhbXBvX2FyZWEnICB9LFxyXG4gICAgXX07XHJcbiAgICBnZXRNZW51VmFyaW9zKGNvbnRleHQ6Q29udGV4dCkgeyBcclxuICAgICAgICBsZXQgc3VibWVudVZhcmlvczpNZW51SW5mb0Jhc2VbXSA9IFt7bWVudVR5cGU6ICdhYnJpcl9lbmN1ZXN0YScsIG5hbWU6ICdhYnJpcl9lbmN1ZXN0YSd9XVxyXG4gICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmNhbXBvPy5lZGl0YXIpe1xyXG4gICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goe21lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnaG9qYV9ydXRhJywgdGFibGU6ICdncmlsbGFfaG9qYV9ydXRhJywgbGFiZWw6ICdob2phIGRlIHJ1dGEnfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKXtcclxuICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHttZW51VHlwZToncHJvYycsIG5hbWU6J2VuY3Vlc3RhZG9yX2Rtc19tb3N0cmFyJywgbGFiZWw6J2ZvcnphciBkZXNjYXJnYSBlbmN1ZXN0YXMgRE0nfSk7XHJcbiAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7bWVudVR5cGU6J3Byb2MnLCBuYW1lOidlbmN1ZXN0YV9ibGFucXVlYXJfcHJldmlzdWFsaXphcicsIGxhYmVsOidibGFucXVlYXIgZW5jdWVzdGEnfSk7XHJcbiAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7bWVudVR5cGU6J3Byb2MnLCBuYW1lOidlbmN1ZXN0YV9ib3JyYXJfcHJldmlzdWFsaXphcicsIGxhYmVsOidxdWl0YXIgZW5jdWVzdGEgZGUgbGEgbXVlc3RyYSd9KTtcclxuICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHttZW51VHlwZToncHJvYycsIG5hbWU6J2VuY3Vlc3Rhc19jYXBhY2l0YWNpb25fYm9ycmFyJywgbGFiZWw6J3F1aXRhciBlbmN1ZXN0YXMgZGUgY2FwYSBkZSBsYSBtdWVzdHJhJ30pO1xyXG4gICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goe21lbnVUeXBlOidwcm9jJywgbmFtZTonb3BlcmF0aXZvX21pZ3JhcicsIGxhYmVsOidtaWdyYXIgb3BlcmF0aXZvJ30pO1xyXG4gICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goe21lbnVUeXBlOidwcm9jJywgbmFtZTonZW5jdWVzdGFfY2FwYV9hX3Byb2RfcGFzYXInLCBsYWJlbDoncGFzYXIgZW5jdWVzdGFzIGRlIGNhcGEgYSBwcm9kJ30pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKXtcclxuICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHttZW51VHlwZToncHJvYycsIG5hbWU6J2ludGVyY2FtYmlhcl9lbmN1ZXN0YXMnfSk7XHJcbiAgICAgICAgfSBcclxuICAgICAgICByZXR1cm4ge21lbnVUeXBlOiAnbWVudScsIG5hbWU6ICd2YXJpb3MnLCBtZW51Q29udGVudDogc3VibWVudVZhcmlvc31cclxuICAgIH1cclxuICAgIGdldE1lbnVBc2lnbmFjaW9uKGNvbnRleHQ6Q29udGV4dCkgeyBcclxuICAgICAgICBsZXQgZmlsdHJvUmVjZXBjaW9uaXN0YSA9IGNvbnRleHQudXNlci5yb2w9PSdyZWNlcGNpb25pc3RhJyA/IHtyZWNlcGNpb25pc3RhOiBjb250ZXh0LnVzZXIuaWRwZXJ9IDoge307XHJcbiAgICAgICAgbGV0IHN1Ym1lbnVBc2lnbmFjaW9uOk1lbnVJbmZvQmFzZVtdID0gW107XHJcbiAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcikge1xyXG4gICAgICAgICAgICBzdWJtZW51QXNpZ25hY2lvbi5wdXNoKHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdnZW5lcmFsJywgdGFibGU6ICdhcmVhc19hc2lnbmFjaW9uX2dlbmVyYWwnIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdWJtZW51QXNpZ25hY2lvbi5wdXNoKFxyXG4gICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZW5jdWVzdGFkb3InLCB0YWJsZTogJ3RfZW5jdV9hcmVhcycsIGZmOiB7IHRhcmVhOiAnZW5jdScsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnaW5ncmVzYWRvcicsICB0YWJsZTogJ3RfaW5ncl9hcmVhcycsIGZmOiB7IHRhcmVhOiAnaW5ncicsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVjdXBlcmFkb3InLCB0YWJsZTogJ3RhcmVhc190ZW1fYXNpZ25hY2lvbl9yZWN1JywgZmY6IHsgdGFyZWFfYWN0dWFsOiAncmVjdScsIHRhcmVhOiAncmVjdScsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKXtcclxuICAgICAgICAgICAgc3VibWVudUFzaWduYWNpb24ucHVzaChcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdzdXBlcnZpc29yJyAsIHRhYmxlOiAndGFyZWFzX3RlbV9hc2lnbmFjaW9uX3N1cGUnLCBmZjogeyB0YXJlYV9hY3R1YWw6ICdzdXBlJywgdGFyZWE6ICdzdXBlJywgLi4uZmlsdHJvUmVjZXBjaW9uaXN0YSB9IH0sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4ge21lbnVUeXBlOidtZW51JywgbmFtZTonYXNpZ25hY2lvbicsIGxhYmVsOidhc2lnbmFjacOzbicgLG1lbnVDb250ZW50OiBzdWJtZW51QXNpZ25hY2lvbn1cclxuICAgIH1cclxuICAgIGdldE1lbnVSZWNlcGNpb24oY29udGV4dDpDb250ZXh0KSB7IFxyXG4gICAgICAgIGxldCBzdWJtZW51UmVjZXBjaW9uOk1lbnVJbmZvQmFzZVtdID0gW11cclxuICAgICAgICBzdWJtZW51UmVjZXBjaW9uLnB1c2goXHJcbiAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidlbmN1ZXN0YWRvcicsIHRhYmxlOidlbmN1ZXN0YWRvcmVzX2FzaWduYWRvcyd9LFxyXG4gICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncmVjdXBlcmFkb3InLCB0YWJsZToncmVjdXBlcmFkb3Jlc19hc2lnbmFkb3MnfSxcclxuICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2luZ3Jlc2Fkb3InLCB0YWJsZTonaW5ncmVzYWRvcmVzX2FzaWduYWRvcyd9LFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKXtcclxuICAgICAgICAgICAgc3VibWVudVJlY2VwY2lvbi5wdXNoKFxyXG4gICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3N1cGVydmlzb3InICwgdGFibGU6J3N1cGVydmlzb3Jlc19hc2lnbmFkb3MnIH0sXHJcbiAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTogJ21pc19zdXBlcnZpc29yZXMnICwgdGFibGU6ICdtaXNfc3VwZXJ2aXNvcmVzX2FzaWduYWRvcyd9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidyZWNlcGNpb24nLCBsYWJlbDoncmVjZXBjacOzbicgLG1lbnVDb250ZW50OnN1Ym1lbnVSZWNlcGNpb259XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TWVudUNhcnRvKGNvbnRleHQ6Q29udGV4dCkge1xyXG4gICAgICAgIGxldCBzdWJtZW51Q2FydG86TWVudUluZm9CYXNlW10gPSBbXVxyXG4gICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcil7XHJcbiAgICAgICAgICAgIHN1Ym1lbnVDYXJ0by5wdXNoKFxyXG4gICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2NvbXVuYXMnICAgICwgdGFibGU6J2NvbXVuYXMnfSxcclxuICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidiYXJyaW9zJyAgICAsIHRhYmxlOidiYXJyaW9zJ30sXHJcbiAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonZnJhY2Npb25lcycgLCB0YWJsZTonZnJhY2Npb25lcyd9LFxyXG4gICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3JhZGlvcycgICAgICwgdGFibGU6J3JhZGlvcycgfSxcclxuICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidtYW56YW5hcycgICAsIHRhYmxlOidtYW56YW5hcyd9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIHJldHVybiB7bWVudVR5cGU6J21lbnUnICAsIG5hbWU6J2NhcnRvJywgbGFiZWw6J2NhcnRvZ3JhZsOtYScsIG1lbnVDb250ZW50OnN1Ym1lbnVDYXJ0b31cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGxcclxuICAgIH1cclxuXHJcbiAgICBnZXRNZW51KGNvbnRleHQ6Q29udGV4dCl7XHJcbiAgICAgICAgbGV0IG1lbnU6TWVudUluZm9CYXNlW10gPSBbXTtcclxuICAgICAgICBpZih0aGlzLmNvbmZpZy5zZXJ2ZXIucG9saWN5PT0nd2ViJyl7XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcy5yZWxldmFyKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuY29uZmlnWydjbGllbnQtc2V0dXAnXS5hbWJpZW50ZT09J2RlbW8nIHx8IHRoaXMuY29uZmlnWydjbGllbnQtc2V0dXAnXS5hbWJpZW50ZT09J3Rlc3QnIHx8IHRoaXMuY29uZmlnWydjbGllbnQtc2V0dXAnXS5hbWJpZW50ZT09J2NhcGEnKXtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goe21lbnVUeXBlOidkZW1vJywgbmFtZTonZGVtbycsIHNlbGVjdGVkQnlEZWZhdWx0OnRydWV9KVxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHttZW51VHlwZToncGF0aCcsIG5hbWU6J3JlbGV2YW1pZW50bycsIHBhdGg6Jy9jYW1wbyd9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonc2luY3Jvbml6YXJfZG0nLCBuYW1lOidzaW5jcm9uaXphcid9LFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonY2FtYmlhcl9tb2RvX2RtJywgbmFtZTonY2FtYmlhcl9tb2RvJ30sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmNhbXBvPy5lZGl0YXIpe1xyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TWVudUFzaWduYWNpb24oY29udGV4dCksXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRNZW51UmVjZXBjaW9uKGNvbnRleHQpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKXtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goe21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RhcmVhc190ZW1fZmluX2NhbXBvJywgbGFiZWw6J2VzcGVyYSBmaW4gZGUgY2FtcG8nfSlcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goe21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RhcmVhc190ZW1fYW5hbGlzaXNfY2FtcG8nLCBsYWJlbDonYW7DoWxpc2lzIGRlIGNhbXBvJ30pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTonc3VwZXJ2aXNpb24nLCBsYWJlbDonc3VwZXJ2aXNpw7NuJyAsbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonc3VwZXJ2aXNhcicgLCB0YWJsZTondGFyZWFzX3RlbV9pbmdyZXNvJywgZmY6e3RhcmVhOidzdXBlJywgYXNpZ25hZG86Y29udGV4dC51c2VyLmlkcGVyIH0gfVxyXG4gICAgICAgICAgICAgICAgICAgIF19XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmVkaXRhcnx8Y29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyfHxjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKXtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaCh0aGlzLmdldE1lbnVWYXJpb3MoY29udGV4dCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcnx8Y29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcil7XHJcbiAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTonY29udHJvbCcsIG1lbnVDb250ZW50OiAgdGhpcy5nZXRNZW51Q29udHJvbGVzKGNvbnRleHQpIH0gKSAgO1xyXG4gICAgICAgICAgICAgICAgIC8qe21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3BhcnRpY2lwYWNpb24nICAgICAgICAsIHRhYmxlOidjb250cm9sX2NhbXBvX3BhcnRpY2lwYWNpb24nICB9LCovXHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpe1xyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonbWVudScsIG5hbWU6J3Byb2Nlc2FyJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondmFyaWFibGVzJyAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondmFyaWFibGVzX2N1ZXN0aW9uYXJpbycgICAgICwgdGFibGU6J2Nhc2lsbGVyb3MnLCB0ZDoge2VkaXRhYmxlOmZhbHNlLCBhbGxvdzp7dXBkYXRlOmZhbHNlLCBpbXBvcnQ6IGZhbHNlLCBkZWxldGU6ZmFsc2UsIGluc2VydDpmYWxzZX19LCBmYzpbe2NvbHVtbjondmFyX25hbWUnLCBvcGVyYXRvcjonIT1cXHUyMjA1JywgdmFsdWU6bnVsbH1dfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2NvbnNpc3RlbmNpYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2NvbnNpc3RlbmNpYXNfY3Vlc3Rpb25hcmlvJyAsIHRhYmxlOidjYXNpbGxlcm9zJywgZmY6e3RpcG9jOidDT05TJ319LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonaW5jb25zaXN0ZW5jaWFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0YWJsYV9kYXRvcycgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidkaWNjaW9uYXJpbycgICwgbGFiZWw6J2RpY2Npb25hcmlvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RhcmVhc190ZW1fcHJvY2VzYW1pZW50bycsIGxhYmVsOidlbmN1ZXN0YXMnfSxcclxuICAgICAgICAgICAgICAgICAgICBdfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIG1lbnVDb25maWd1cmFyOk1lbnVJbmZvQmFzZVtdID0gW107XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcnx8Y29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcil7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3VibWVudU11ZXN0cmE6TWVudUluZm9CYXNlW10gPSBbXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RlbScsIGxhYmVsOiAnVEVNJ30sXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidwcm9jJywgIG5hbWU6J211ZXN0cmFfZ2VuZXJhcicsIGxhYmVsOidnZW5lcmFyIG11ZXN0cmEnfSxcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonc2VtYW5hcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidhcmVhX2VuY19wcm94aW1hcyd9LFxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgbWVudUNvbmZpZ3VyYXIucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidtdWVzdHJhJywgbGFiZWw6J211ZXN0cmEnLCBtZW51Q29udGVudDpzdWJtZW51TXVlc3RyYX1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FzaWxsZXJvc190ZXh0bz8uZWRpdGFyKXtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTonbWV0YWRhdG9zJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonb3BlcmF0aXZvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonZm9ybXVsYXJpb3MnICAgLCB0YWJsZTonY2FzaWxsZXJvc19wcmluY2lwYWxlcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncGxhbm8nICAgICAgICAgLCB0YWJsZTonY2FzaWxsZXJvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondmFyaWFibGVzJyAgICAgLCB0YWJsZTonY2FzaWxsZXJvcycsIGZjOlt7Y29sdW1uOid2YXJfbmFtZScsIG9wZXJhdG9yOichPVxcdTIyMDUnLCB2YWx1ZTpudWxsfV19LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGlwb2MnICAgICAgICAgLCBsYWJlbDondGlwb3MgZGUgY2VsZGFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0aXBvY190aXBvYycgICAsIGxhYmVsOidpbmNsdXNpb25lcyBkZSBjZWxkYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICBdfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoY29udGV4dC5zdXBlcnVzZXIpe1xyXG4gICAgICAgICAgICAgICAgbWVudUNvbmZpZ3VyYXIucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidlc3RhZG9zX2FjY2lvbmVzX3RhcmVhcycsIGxhYmVsOidlc3RhZG9zL2FjY2lvbmVzL3RhcmVhcycsIG1lbnVDb250ZW50OltcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RhcmVhcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonZXN0YWRvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonYWNjaW9uZXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2VzdGFkb3NfYWNjaW9uZXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RhcmVhc19wcm94aW1hcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgIF19LFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidtb21lbnRvc19jb25zaXN0ZW5jaWEnfSxcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncGFyYW1ldHJvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidtb2Rvc19kbSd9LFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhciB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKXtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTondXN1YXJpb3MnLCBtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid1c3VhcmlvcycsIHNlbGVjdGVkQnlEZWZhdWx0OnRydWV9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncm9sZXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3Blcm1pc29zJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidyb2xlc19wZXJtaXNvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgIF19LFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKG1lbnVDb25maWd1cmFyLmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICBtZW51LnB1c2goe21lbnVUeXBlOidtZW51JywgbmFtZTonY29uZmlndXJhcicsIG1lbnVDb250ZW50Om1lbnVDb25maWd1cmFyfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbWVudUNhcnRvID0gdGhpcy5nZXRNZW51Q2FydG8oY29udGV4dCk7XHJcbiAgICAgICAgICAgIGlmKG1lbnVDYXJ0byl7XHJcbiAgICAgICAgICAgICAgICBtZW51LnB1c2gobWVudUNhcnRvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge21lbnV9O1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgcHJlcGFyZUdldFRhYmxlcygpe1xyXG4gICAgICAgIHZhciBiZT10aGlzO1xyXG4gICAgICAgIHN1cGVyLnByZXBhcmVHZXRUYWJsZXMoKTtcclxuICAgICAgICB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbj17XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0VGFibGVEZWZpbml0aW9uXHJcbiAgICAgICAgICAgICwgcm9sZXNcclxuICAgICAgICAgICAgLCB1c3Vhcmlvc1xyXG4gICAgICAgICAgICAsIHBlcnNvbmFsXHJcbiAgICAgICAgICAgICwgcmVjZXBjaW9uaXN0YXNcclxuICAgICAgICAgICAgLCBlbmN1ZXN0YWRvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAsIGluZ3Jlc2Fkb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgLCByZWN1cGVyYWRvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAsIHN1cGVydmlzb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgLCBtaXNfc3VwZXJ2aXNvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAsIG1pc19lbmN1ZXN0YWRvcmVzXHJcbiAgICAgICAgICAgICwgcmVjdXBlcmFkb3Jlc1xyXG4gICAgICAgICAgICAsIHN1cGVydmlzb3Jlc1xyXG4gICAgICAgICAgICAsIHBlcnNvbmFsX3JvbFxyXG4gICAgICAgICAgICAsIHBlcm1pc29zXHJcbiAgICAgICAgICAgICwgcm9sZXNfcGVybWlzb3NcclxuICAgICAgICAgICAgLCByb2xlc19zdWJvcmRpbmFkb3NcclxuICAgICAgICAgICAgLCBub19yZWFcclxuICAgICAgICAgICAgLCBub19yZWFfc3VwXHJcbiAgICAgICAgICAgICwgc2VtYW5hc1xyXG4gICAgICAgICAgICAsIGVzdGFkb3NcclxuICAgICAgICAgICAgLCBhY2Npb25lc1xyXG4gICAgICAgICAgICAsIGVzdGFkb3NfYWNjaW9uZXNcclxuICAgICAgICAgICAgLCB0YXJlYXNfcHJveGltYXNcclxuICAgICAgICAgICAgLCB0ZW1cclxuICAgICAgICAgICAgLCBoaXN0b3JpYWxfdGVtXHJcbiAgICAgICAgICAgICwgbW9kb3NfZG1cclxuICAgICAgICAgICAgLCBwYXJhbWV0cm9zXHJcbiAgICAgICAgICAgICwgb3BlcmFjaW9uZXNcclxuICAgICAgICAgICAgLCBjb211bmFzXHJcbiAgICAgICAgICAgICwgYXJlYXNcclxuICAgICAgICAgICAgLCBzaW5jcm9uaXphY2lvbmVzXHJcbiAgICAgICAgICAgICwgdGFyZWFzXHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbVxyXG4gICAgICAgICAgICAsIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9lbmN1XHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX3JlY3VcclxuICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2FzaWduYWNpb25fc3VwZVxyXG4gICAgICAgICAgICAsIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9pbmdyXHJcbiAgICAgICAgICAgICwgdGFyZWFzX2FyZWFzXHJcbiAgICAgICAgICAgICwgYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsXHJcbiAgICAgICAgICAgICwgZ3JpbGxhX2hvamFfcnV0YVxyXG4gICAgICAgICAgICAsIHRfZW5jdV9hcmVhc1xyXG4gICAgICAgICAgICAsIHRfcmVjdV9hcmVhc1xyXG4gICAgICAgICAgICAsIHRfc3VwZV9hcmVhc1xyXG4gICAgICAgICAgICAsIHRfaW5ncl9hcmVhc1xyXG4gICAgICAgICAgICAsIG1pc190YXJlYXNcclxuICAgICAgICAgICAgLCB0ZW1fYXNpZ25hY2lvblxyXG4gICAgICAgICAgICAsIHRhcmVhc190ZW1fcmVjZXBjaW9uXHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9pbmdyZXNvXHJcbiAgICAgICAgICAgICwgdGFyZWFzX3RlbV9maW5fY2FtcG9cclxuICAgICAgICAgICAgLCB0YXJlYXNfdGVtX3Byb2Nlc2FtaWVudG9cclxuICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2FuYWxpc2lzX2NhbXBvXHJcbiAgICAgICAgICAgICwgbWlzX3RhcmVhc19hcmVhc1xyXG4gICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9cclxuICAgICAgICAgICAgLCBjb250cm9sX3Jlc3VtZW5cclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX3pvbmE6IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggem9uYSBzb2xvIGNlbWVudG8nLCBjYW1wb3NDb3J0ZTpbe25hbWU6J3pvbmEnLCB0eXBlTmFtZTondGV4dCd9XSwgc2luaG9nZmluOiFjb250ZXh0LmJlLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIuY29uX3JlYV9ob2dhcixmaWx0cm9XaGVyZTonZG9taW5pbz0zJyB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2NvbXVuYTogY29udGV4dD0+Y29udHJvbF9jYW1wbyhjb250ZXh0LCBcclxuICAgICAgICAgICAgICAgIHtub21icmU6J2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6J2NvbnRyb2wgY2FtcG8geCBjb211bmEgc29sbyBjZW1lbnRvJywgY2FtcG9zQ29ydGU6W3tuYW1lOid6b25hJywgdHlwZU5hbWU6J3RleHQnfSx7bmFtZTonbnJvY29tdW5hJywgdHlwZU5hbWU6J3RleHQnfV0sIHNpbmhvZ2ZpbjohY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIsZmlsdHJvV2hlcmU6J2RvbWluaW89MycgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgICwgY29udHJvbF9jYW1wb19hcmVhOiBjb250ZXh0PT5jb250cm9sX2NhbXBvKGNvbnRleHQsIFxyXG4gICAgICAgICAgICAgICAge25vbWJyZTonY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTonY29udHJvbCBjYW1wbyB4IGFyZWEnLCBjYW1wb3NDb3J0ZTpbe25hbWU6J3pvbmEnLCB0eXBlTmFtZTondGV4dCd9LHtuYW1lOiducm9jb211bmEnLCB0eXBlTmFtZTondGV4dCd9LHtuYW1lOidhcmVhJywgdHlwZU5hbWU6J2ludGVnZXInfSx7bmFtZToncGFydGljaXBhY2lvbl9hJywgdHlwZU5hbWU6J3RleHQnfSx7bmFtZTonY2xhc2VfYScsIHR5cGVOYW1lOid0ZXh0J31dICxzaW5ob2dmaW46IWNvbnRleHQuYmUuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhci5jb25fcmVhX2hvZ2FyfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgICwgY29udHJvbF9jYW1wb19wYXJ0aWNpcGFjaW9uOiBjb250ZXh0PT5jb250cm9sX2NhbXBvKGNvbnRleHQsIFxyXG4gICAgICAgICAgICAgICAge25vbWJyZTonY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTonY29udHJvbCBjYW1wbyB4IHBhcnRpY2lwYWNpb24nLCBjYW1wb3NDb3J0ZTpbe25hbWU6J3BhcnRpY2lwYWNpb24nLCB0eXBlTmFtZTonYmlnaW50J31dLHNpbmhvZ2ZpbjohY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXJ9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2RvbWluaW86IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggZG9taW5pbycsIGNhbXBvc0NvcnRlOlt7bmFtZTonZG9taW5pbycsIHR5cGVOYW1lOidpbnRlZ2VyJ31dLHNpbmhvZ2ZpbjohY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXJ9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2RpYXNfY2FyZ2FcclxuICAgICAgICAgICAgLCB2aXZpZW5kYXNcclxuICAgICAgICAgICAgLCB2aXNpdGFzXHJcbiAgICAgICAgICAgICwgaG9nYXJlc1xyXG4gICAgICAgICAgICAsIHBlcnNvbmFzXHJcbiAgICAgICAgICAgICwgdmlzaXRhc19zdXBcclxuICAgICAgICAgICAgLCBob2dhcmVzX3N1cFxyXG4gICAgICAgICAgICAsIHBlcnNvbmFzX3N1cFxyXG4gICAgICAgICAgICAsIGRpY2Npb25hcmlvXHJcbiAgICAgICAgICAgICwgZGljdmFyXHJcbiAgICAgICAgICAgICwgZGljdHJhXHJcbiAgICAgICAgICAgICwgaW5jb25zaXN0ZW5jaWFzX2N1bXBsZW5fY29uZGljaW9uXHJcbiAgICAgICAgICAgICwgdGVtX2JvcnJhZGFzXHJcbiAgICAgICAgICAgICwgYmFycmlvc1xyXG4gICAgICAgICAgICAsIGZyYWNjaW9uZXNcclxuICAgICAgICAgICAgLCByYWRpb3NcclxuICAgICAgICAgICAgLCBtYW56YW5hc1xyXG4gICAgICAgICAgICAsIGFyZWFfZW5jX3Byb3hpbWFzXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdjb25zaXN0ZW5jaWFzJyxmdW5jdGlvbih0YWJsZURlZiwgY29udGV4dCl7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmVkaXRhYmxlPXRhYmxlRGVmLmVkaXRhYmxlIHx8IGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXI7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uKGZpZWxkKXtcclxuICAgICAgICAgICAgICAgIGlmKGZpZWxkLm5hbWU9PSdlcnJvcl9jb21waWxhY2lvbicpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGZpZWxkLnZpc2libGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCcqKioqKioqKioqKiogUVVJVEFSIEVTVE8gZXJyb3JfY29tcGlsYWNpb24geWEgZXMgdmlzaWJsZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBmaWVsZC52aXNpYmxlPXRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignaW5jb25zaXN0ZW5jaWFzJyxmdW5jdGlvbih0YWJsZURlZiwgY29udGV4dCl7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLnNxbD17Li4udGFibGVEZWYuc3FsLCBpc1RhYmxlOnRydWV9O1xyXG4gICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuc3BsaWNlKDIsMCxcclxuICAgICAgICAgICAgICAgIHtuYW1lOid2aXZpZW5kYScgICAgLCB0eXBlTmFtZTondGV4dCcgICAgICwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAgICAgIHtuYW1lOidob2dhcicgICAgICAgLCB0eXBlTmFtZTonYmlnaW50JyAgICwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAgICAgIHtuYW1lOidwZXJzb25hJyAgICAgLCB0eXBlTmFtZTonYmlnaW50JyAgICwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAgICAgIHtuYW1lOid2aXNpdGEnICAgICAgLCB0eXBlTmFtZTonYmlnaW50JyAgICwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGFibGVEZWYuZWRpdGFibGU9dGFibGVEZWYuZWRpdGFibGUgfHwgY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzLmp1c3RpZmljYXI7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uKGZpZWxkKXtcclxuICAgICAgICAgICAgICAgIGlmKGZpZWxkLm5hbWU9PSdwa19pbnRlZ3JhZGEnKXtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZC52aXNpYmxlPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYoZmllbGQubmFtZT09J2p1c3RpZmljYWNpb24nKXtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZC5lZGl0YWJsZT1jb250ZXh0Py5mb3JEdW1wIHx8IGNvbnRleHQ/LnB1ZWRlPy5lbmN1ZXN0YXMuanVzdGlmaWNhcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzPXRhYmxlRGVmLmZpZWxkcy5jb25jYXQoWyd0YXJlYV9hY3R1YWwnLCd0YXJlYV9hbnRlcmlvciddLm1hcChmbj0+e1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtuYW1lOiBmbiAgICwgdHlwZU5hbWU6ICd0ZXh0JyAgLCBlZGl0YWJsZTogZmFsc2UsIGluVGFibGU6IGZhbHNlfVxyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgLy9zYWNhciBjYW1wb3MgZGUgdml0YWxlcyEgXHJcbiAgICAgICAgICAgIGNvbnN0IHJlZ0V4cEZpZWxkc1ZpdGE9IG5ldyBSZWdFeHAoJ14oY29tcHxpbmZlfGNvZF9jYXVzYXxkb21pKSQnKTtcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzID0gdGFibGVEZWYuZmllbGRzLmZpbHRlcihmPT4hKHJlZ0V4cEZpZWxkc1ZpdGEudGVzdChmLm5hbWUpKSlcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB2YXIgcV9pbmNvbnNpc3Q9IHRhYmxlRGVmLnNxbCEuZnJvbVxyXG4gICAgICAgICAgICB0YWJsZURlZi5zcWwhLmZyb209YFxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdCBpLiosIHQudGFyZWFfYWN0dWFsLCB0YXJlYV9hbnRlcmlvclxyXG4gICAgICAgICAgICAgICAgICBmcm9tICR7cV9pbmNvbnNpc3R9IGkgXHJcbiAgICAgICAgICAgICAgICAgIGpvaW4gdGVtIHQgb24gaS52aXZpZW5kYT10LmVuYyBhbmQgaS5vcGVyYXRpdm89dC5vcGVyYXRpdm8gXHJcbiAgICAgICAgICAgICAgICAgIGxlZnQgam9pbiB0YXJlYXNfdGVtIHR0IG9uIHQub3BlcmF0aXZvPXR0Lm9wZXJhdGl2byBhbmQgdC5lbmM9dHQuZW5jIGFuZCB0LnRhcmVhX2FjdHVhbD10dC50YXJlYSBcclxuICAgICAgICAgICAgICAgICAgbGVmdCBqb2luIGxhdGVyYWwgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgdGFyZWEgYXMgdGFyZWFfYW50ZXJpb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gaGlzdG9yaWFsX3RlbSBodFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdC5vcGVyYXRpdm8gPSBodC5vcGVyYXRpdm8gYW5kIHQuZW5jID0gaHQuZW5jXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciBieSB0c19zYWxpZGEgZGVzY1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQgMVxyXG4gICAgICAgICAgICAgICAgICAgICkgYXMgdGEgb24gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgKSAgIFxyXG4gICAgICAgICAgICBgXHJcbiAgICAgICAgfSlcclxuICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignb3BlcmF0aXZvcycsZnVuY3Rpb24odGFibGVEZWYsIGNvbnRleHQpe1xyXG4gICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuc3BsaWNlKDIsMCx7XHJcbiAgICAgICAgICAgICAgICBuYW1lOidjb25maWdfc29ydGVvJywgXHJcbiAgICAgICAgICAgICAgICB0eXBlTmFtZTonanNvbmInLFxyXG4gICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0se1xyXG4gICAgICAgICAgICAgICAgbmFtZTonaGFiaWxpdGFjaW9uX2JvdG9uX2Zvcm11bGFyaW8nLCBcclxuICAgICAgICAgICAgICAgIHR5cGVOYW1lOidqc29uYicsXHJcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSx7XHJcbiAgICAgICAgICAgICAgICBuYW1lOidkaXNmb3JtX2NlcnJhZG8nLCBcclxuICAgICAgICAgICAgICAgIHR5cGVOYW1lOidib29sZWFuJywgXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLCBcclxuICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBjb250ZXh0Py5mb3JEdW1wfHxbJ2FkbWluJywnZGlzX2NvbmNlcHR1YWwnXS5pbmNsdWRlcyhjb250ZXh0LnVzZXIucm9sKVxyXG4gICAgICAgICAgICB9LHtcclxuICAgICAgICAgICAgICAgIG5hbWU6J2Nvbl9yZWFfaG9nYXInLCBcclxuICAgICAgICAgICAgICAgIHR5cGVOYW1lOidib29sZWFuJywgXHJcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0RGJWYWx1ZTogJ3RydWUnXHJcbiAgICAgICAgICAgIH0se1xyXG4gICAgICAgICAgICAgICAgbmFtZToncGVybWl0ZV9nZW5lcmFyX211ZXN0cmEnLCBcclxuICAgICAgICAgICAgICAgIHR5cGVOYW1lOidib29sZWFuJywgXHJcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0RGJWYWx1ZTogJ2ZhbHNlJ1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCd2YXJpYWJsZXMnLGZ1bmN0aW9uKHRhYmxlRGVmLCBjb250ZXh0KXtcclxuICAgICAgICAgICAgdmFyIGVzQWRtaW49IGNvbnRleHQ/LnVzZXIucm9sPT09J2FkbWluJztcclxuICAgICAgICAgICAgdGFibGVEZWYuZWRpdGFibGU9dGFibGVEZWYuZWRpdGFibGUgfHwgY29udGV4dD8ucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXI7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmFsbG93PXtkZWxldGU6IGVzQWRtaW59OyAgICAgICAgICAgIFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ21vbWVudG9zX2NvbnNpc3RlbmNpYScsZnVuY3Rpb24odGFibGVEZWYsIF9jb250ZXh0KXtcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnB1c2goXHJcbiAgICAgICAgICAgICAgICB7bmFtZTonY29uZGljaW9uJywgdHlwZU5hbWU6J3RleHQnICwgIG51bGxhYmxlOiBmYWxzZSwgZGVmYXVsdERiVmFsdWU6J3RydWUnfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdwYXJhbWV0cm9zJyxmdW5jdGlvbih0YWJsZURlZil7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5wdXNoKFxyXG4gICAgICAgICAgICAgICAge25hbWU6J21vZG9fZG1fZGVmZWN0bycgICwgdHlwZU5hbWU6J3RleHQnICAsIGVkaXRhYmxlOiB0cnVlLCBudWxsYWJsZTogZmFsc2UsIGRlZmF1bHREYlZhbHVlOlwiJ2NhcGEnXCJ9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0YWJsZURlZi5mb3JlaWduS2V5cyA9IHRhYmxlRGVmLmZvcmVpZ25LZXlzIHx8IFtdO1xyXG4gICAgICAgICAgICB0YWJsZURlZi5mb3JlaWduS2V5cy5wdXNoKFxyXG4gICAgICAgICAgICAgICAge3JlZmVyZW5jZXM6J21vZG9zX2RtJywgZmllbGRzOlt7c291cmNlOidtb2RvX2RtX2RlZmVjdG8nLCB0YXJnZXQ6J21vZG9fZG0nfV19XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgQXBwRG1FbmN1ID0gZW1lcmdlQXBwRG1FbmN1KGVtZXJnZUFwcFByb2Nlc2FtaWVudG8oZW1lcmdlQXBwQ29uc2lzdGVuY2lhcyhlbWVyZ2VBcHBWYXJDYWwoZW1lcmdlQXBwRGF0b3NFeHQoZW1lcmdlQXBwT3BlcmF0aXZvcyhBcHBCYWNrZW5kKSkpKSkpO1xyXG5leHBvcnQgdHlwZSBBcHBBcHBEbUVuY3VUeXBlID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBBcHBEbUVuY3U+OyJdfQ==
|