dmencu 0.3.53 → 0.3.55

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.
@@ -25,6 +25,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
25
25
  const bypass_formulario_1 = require("../unlogged/bypass-formulario");
26
26
  const abrir_formulario_1 = require("../unlogged/abrir-formulario");
27
27
  //TODO GENERALIZAR
28
+ const ABRIR_TAB = "_abrir";
28
29
  const TAREA_DEFAULT = 'encu';
29
30
  var OPERATIVO_DEFAULT = null;
30
31
  myOwn.autoSetupFunctions.push(() => __awaiter(void 0, void 0, void 0, function* () {
@@ -39,15 +40,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
39
40
  parameters: [
40
41
  { name: 'operativo', typeName: 'text', defaultValue: OPERATIVO_DEFAULT, references: 'operativos' },
41
42
  { name: 'tarea', typeName: 'text', defaultValue: TAREA_DEFAULT, references: 'tareas' },
42
- { name: 'encuesta', typeName: 'integer', defaultValue: 130031 }
43
+ { name: 'enc', typeName: 'integer', defaultValue: 130031 }
43
44
  ],
44
45
  autoproced: true,
45
46
  mainAction: (params) => __awaiter(void 0, void 0, void 0, function* () {
46
47
  var _c;
47
48
  // antes: abrirDirecto
48
- var { operativo, encuesta, tarea } = params;
49
+ var { operativo, enc, tarea } = params;
49
50
  var estructura = (0, bypass_formulario_1.getEstructura)();
50
- var carga = yield my.ajax.dm_forpkraiz_cargar({ operativo, vivienda: encuesta, tarea });
51
+ var carga = yield my.ajax.dm_forpkraiz_cargar({ operativo, vivienda: enc, tarea });
51
52
  if (!estructura || ((_c = estructura.timestamp) !== null && _c !== void 0 ? _c : 0) < carga.timestampEstructura || estructura.operativo != operativo || my.config.config.devel) {
52
53
  estructura = yield (0, redux_formulario_1.traerEstructura)({ operativo });
53
54
  (0, abrir_formulario_1.cargarEstructura)(estructura);
@@ -55,7 +56,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
55
56
  //@ts-ignore
56
57
  var state = {};
57
58
  inicializarState(state);
58
- var forPkRaiz = { formulario: carga.informacionHdr[encuesta].tarea.main_form, vivienda: encuesta };
59
+ var forPkRaiz = { formulario: carga.informacionHdr[enc].tarea.main_form, vivienda: enc };
59
60
  (0, bypass_formulario_1.setPersistirDatosByPass)(function persistirDatosByPassEnBaseDeDatos(persistentes) {
60
61
  return __awaiter(this, void 0, void 0, function* () {
61
62
  if (persistentes.soloLectura) {
@@ -78,31 +79,31 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
78
79
  mainAction: (_params) => __awaiter(void 0, void 0, void 0, function* () {
79
80
  // antes: abrirDirecto
80
81
  var { operativo, tarea } = { operativo: OPERATIVO_DEFAULT, tarea: TAREA_DEFAULT };
81
- let encuesta = parseInt(yield my.ajax.get_random_free_case({ operativo }));
82
- yield myOwn.wScreens.abrir_encuesta.mainAction({ operativo, encuesta, tarea });
82
+ let enc = parseInt(yield my.ajax.get_random_free_case({ operativo }));
83
+ yield myOwn.wScreens.abrir_encuesta.mainAction({ operativo, enc, tarea });
83
84
  })
84
85
  };
85
86
  myOwn.wScreens.consistir_encuesta = {
86
87
  parameters: [
87
88
  { name: 'operativo', typeName: 'text', defaultValue: OPERATIVO_DEFAULT, references: 'operativos' },
88
89
  { name: 'tarea', typeName: 'text' },
89
- { name: 'encuesta', typeName: 'integer' }
90
+ { name: 'enc', typeName: 'integer' }
90
91
  ],
91
92
  autoproced: true,
92
93
  mainAction: (params) => __awaiter(void 0, void 0, void 0, function* () {
93
- var { operativo, tarea, encuesta } = params;
94
+ var { operativo, tarea, enc } = params;
94
95
  var result = yield myOwn.ajax.consistir_encuesta({
95
96
  operativo: operativo,
96
- id_caso: encuesta
97
+ id_caso: enc
97
98
  });
98
99
  if (result.ok) {
99
100
  var fixedFields = [];
100
101
  fixedFields.push({ fieldName: 'operativo', value: operativo });
101
- fixedFields.push({ fieldName: 'vivienda', value: encuesta });
102
+ fixedFields.push({ fieldName: 'vivienda', value: enc });
102
103
  var mainLayout = document.getElementById('main_layout');
103
104
  var divGrilla = js_to_html_1.html.div({ id: 'inconsistencias' }).create();
104
105
  mainLayout.insertBefore(divGrilla, mainLayout.firstChild);
105
- mainLayout.insertBefore(crearBotonVerAbrirEncuesta(operativo, tarea, encuesta, `ir a encuesta ${encuesta}`), mainLayout.firstChild);
106
+ mainLayout.insertBefore(crearBotonVerAbrirEncuesta(operativo, tarea, enc, `ir a encuesta ${enc}`), mainLayout.firstChild);
106
107
  my.tableGrid("inconsistencias", divGrilla, { tableDef: {}, fixedFields: fixedFields });
107
108
  }
108
109
  else {
@@ -295,9 +296,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
295
296
  var up = {
296
297
  operativo: operativo,
297
298
  tarea: tarea,
298
- encuesta: encuesta
299
+ enc: encuesta
299
300
  };
300
- let ver = my.createForkeableButton({ w: 'abrir_encuesta', up, autoproced: true, label }, {});
301
+ let ver = js_to_html_1.html.button({}, label).create();
302
+ ver.onclick = () => window.open(location.origin + location.pathname + my.menuSeparator + `w=abrir_encuesta&up=${JSON.stringify(up)}&autoproced=true`, ABRIR_TAB);
301
303
  return ver;
302
304
  };
303
305
  var crearBotonesVerAbrirTareas = (depot, fieldName, label) => __awaiter(void 0, void 0, void 0, function* () {
@@ -380,6 +382,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
380
382
  console.log(result);
381
383
  var grid = depot.manager;
382
384
  grid.retrieveRowAndRefresh(depot);
385
+ if (action.nombre_wscreen) {
386
+ //TODO acomodar esto en algun momento
387
+ let params = depot.row;
388
+ params.enc = Number(params.enc);
389
+ window.open(location.origin + location.pathname + my.menuSeparator + `w=${action.nombre_wscreen}&up=${JSON.stringify(params)}&autoproced=true`, ABRIR_TAB);
390
+ }
383
391
  }
384
392
  catch (err) {
385
393
  alertPromise(err.message);
@@ -538,4 +546,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
538
546
  return [].concat.apply([], arrays);
539
547
  }
540
548
  });
541
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsMkNBQWdDO0lBQ2hDLG1FQUE2RDtJQUk3RCxrQ0FBa0M7SUFDbEMscUVBQW9GO0lBQ3BGLG1FQUFrSjtJQUtsSixrQkFBa0I7SUFFbEIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDO0lBQzdCLElBQUksaUJBQWlCLEdBQWMsSUFBSSxDQUFDO0lBRXhDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBUSxFQUFFO1FBQ3BDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNmLElBQUc7WUFDQyxpQkFBaUIsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZEO1FBQUEsT0FBTSxHQUFHLEVBQUM7WUFDUCxpQkFBaUIsR0FBQyxJQUFJLENBQUM7U0FDMUI7UUFDRCxLQUFLLENBQUMsUUFBUSxDQUFDLGNBQWMsR0FBQztZQUMxQixVQUFVLEVBQUM7Z0JBQ1AsRUFBQyxJQUFJLEVBQUMsV0FBVyxFQUFHLFFBQVEsRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBQyxZQUFZLEVBQUM7Z0JBQzdGLEVBQUMsSUFBSSxFQUFDLE9BQU8sRUFBTyxRQUFRLEVBQUMsTUFBTSxFQUFFLFlBQVksRUFBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQztnQkFDdEYsRUFBQyxJQUFJLEVBQUMsVUFBVSxFQUFJLFFBQVEsRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sRUFBQzthQUMvRDtZQUNELFVBQVUsRUFBQyxJQUFJO1lBQ2YsVUFBVSxFQUFDLENBQU8sTUFBTSxFQUFDLEVBQUU7O2dCQUN2QixzQkFBc0I7Z0JBQ3RCLElBQUksRUFBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQyxHQUFHLE1BQU0sQ0FBQztnQkFDMUMsSUFBSSxVQUFVLEdBQUcsSUFBQSxpQ0FBYSxHQUFFLENBQUM7Z0JBQ2pDLElBQUksS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQyxDQUE0QixDQUFDO2dCQUNoSCxJQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsTUFBQSxVQUFVLENBQUMsU0FBUyxtQ0FBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsbUJBQW9CLElBQUksVUFBVSxDQUFDLFNBQVMsSUFBSSxTQUFTLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFDO29CQUNwSSxVQUFVLEdBQUcsTUFBTSxJQUFBLGtDQUFlLEVBQUMsRUFBQyxTQUFTLEVBQUMsQ0FBQyxDQUFBO29CQUMvQyxJQUFBLG1DQUFnQixFQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNoQztnQkFDRCxZQUFZO2dCQUNaLElBQUksS0FBSyxHQUFhLEVBQUUsQ0FBQTtnQkFDeEIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksU0FBUyxHQUFHLEVBQUMsVUFBVSxFQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBaUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFDLFFBQVEsRUFBQyxDQUFDO2dCQUN4RyxJQUFBLDJDQUF1QixFQUNuQixTQUFlLGlDQUFpQyxDQUFDLFlBQW9DOzt3QkFDakYsSUFBRyxZQUFZLENBQUMsV0FBVyxFQUFDOzRCQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLCtGQUErRixDQUFDLENBQUE7eUJBQ25IO3dCQUNELE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsQ0FBQyxDQUFDO29CQUNwRSxDQUFDO2lCQUFBLENBQ0osQ0FBQTtnQkFDRCxJQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVMsQ0FBQyxFQUFDO29CQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixTQUFTLENBQUMsUUFBUyxFQUFFLENBQUMsQ0FBQztpQkFDekU7Z0JBQ0QsSUFBQSxtQ0FBZ0Isa0NBQUssS0FBSyxLQUFFLGtCQUFrQixFQUFDLFNBQVMsSUFBRSxDQUFDO2dCQUMzRCxhQUFhO2dCQUNiLHlCQUF5QixDQUFDLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUE7U0FDSixDQUFDO1FBQ0YsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsR0FBQztZQUM1QixVQUFVLEVBQUMsRUFBRTtZQUNiLFVBQVUsRUFBQyxJQUFJO1lBQ2YsVUFBVSxFQUFDLENBQU8sT0FBTyxFQUFDLEVBQUU7Z0JBQ3hCLHNCQUFzQjtnQkFDdEIsSUFBSSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsR0FBRyxFQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFDLENBQUM7Z0JBQzlFLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLE1BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1lBQ2pGLENBQUMsQ0FBQTtTQUNKLENBQUM7UUFDRixLQUFLLENBQUMsUUFBUSxDQUFDLGtCQUFrQixHQUFDO1lBQzlCLFVBQVUsRUFBQztnQkFDUCxFQUFDLElBQUksRUFBQyxXQUFXLEVBQUcsUUFBUSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFDLFlBQVksRUFBQztnQkFDN0YsRUFBQyxJQUFJLEVBQUMsT0FBTyxFQUFPLFFBQVEsRUFBQyxNQUFNLEVBQUM7Z0JBQ3BDLEVBQUMsSUFBSSxFQUFDLFVBQVUsRUFBSSxRQUFRLEVBQUMsU0FBUyxFQUFDO2FBQzFDO1lBQ0QsVUFBVSxFQUFDLElBQUk7WUFDZixVQUFVLEVBQUMsQ0FBTyxNQUFNLEVBQUMsRUFBRTtnQkFDdkIsSUFBSSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDO2dCQUMzQyxJQUFJLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7b0JBQzdDLFNBQVMsRUFBRSxTQUFTO29CQUNwQixPQUFPLEVBQUUsUUFBUTtpQkFDcEIsQ0FBQyxDQUFDO2dCQUNILElBQUcsTUFBTSxDQUFDLEVBQUUsRUFBQztvQkFDVCxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7b0JBQ3JCLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDO29CQUM3RCxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztvQkFDM0QsSUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUUsQ0FBQztvQkFDekQsSUFBSSxTQUFTLEdBQUcsaUJBQUksQ0FBQyxHQUFHLENBQUMsRUFBQyxFQUFFLEVBQUMsaUJBQWlCLEVBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUMxRCxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFELFVBQVUsQ0FBQyxZQUFZLENBQ25CLDBCQUEwQixDQUN0QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFFBQVEsRUFDUixpQkFBaUIsUUFBUSxFQUFFLENBQzlCLEVBQ0QsVUFBVSxDQUFDLFVBQVUsQ0FDeEIsQ0FBQztvQkFDRixFQUFFLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBQyxFQUFDLFFBQVEsRUFBQyxFQUFFLEVBQUMsV0FBVyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7aUJBQ3JGO3FCQUFJO29CQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNuQztZQUNMLENBQUMsQ0FBQTtTQUNKLENBQUE7SUFDTCxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBR0gscUdBQXFHO0lBQ3JHLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQzNFLE1BQUEsTUFBQSxRQUFRLENBQUMsQ0FBQyxDQUFDLDBDQUFFLFVBQVUsMENBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWxELFNBQVMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHO1FBQ3pDLE9BQU8sS0FBSyxDQUFBLENBQUMsQ0FBQSxPQUFPLENBQUEsQ0FBQyxDQUFBLEdBQUcsQ0FBQztJQUM3QixDQUFDO0lBQUEsQ0FBQztJQUVGLElBQUksTUFBTSxHQUFPLElBQUksQ0FBQztJQUV0QixTQUFTLFVBQVUsQ0FBQyxHQUFVO1FBQzFCLE9BQU8saUJBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUMsUUFBUSxFQUFDLEVBQUMsRUFBRSxHQUFDLENBQUMsR0FBRyxhQUFILEdBQUcsY0FBSCxHQUFHLEdBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBRUQsSUFBSSxrQkFBa0IsR0FBRyxDQUFPLFlBQW9DLEVBQUUsRUFBRTtRQUNwRSxJQUFJLEVBQUMsa0JBQWtCLEVBQUMsR0FBRyxZQUFZLENBQUE7UUFDbkMsSUFBRyxrQkFBa0IsSUFBRSxPQUFPLEVBQUM7WUFDM0IsRUFBRSxDQUFDLFdBQVcsQ0FBQyxxQ0FBa0IsRUFBRSxZQUFZLENBQUMsQ0FBQTtTQUNuRDthQUFJO1lBQ0QsRUFBRSxDQUFDLGFBQWEsQ0FBQyxxQ0FBa0IsRUFBRSxZQUFZLENBQUMsQ0FBQTtTQUNyRDtRQUNELEVBQUUsQ0FBQyxhQUFhLENBQUMsb0NBQWlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtJQUMvRCxDQUFDLENBQUEsQ0FBQTtJQUVELFNBQWUsZ0JBQWdCLENBQUMsWUFBeUM7O1lBQ3JFLElBQUksS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO1lBQ3pELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDaEMsa0JBQWtCLGlDQUFLLEtBQUssS0FBRSxrQkFBa0IsRUFBQyxPQUFPLElBQUUsQ0FBQztZQUMzRCxJQUFJLFVBQVUsR0FBRyxNQUFNLElBQUEsa0NBQWUsRUFBQyxFQUFDLFNBQVMsRUFBQyxDQUFDLENBQUE7WUFDbkQsRUFBRSxDQUFDLFdBQVcsQ0FBQyxvQ0FBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUM5QyxFQUFFLENBQUMsY0FBYyxDQUFDLDBCQUFPLENBQUMsQ0FBQztZQUMzQixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0tBQUE7SUFJRCxJQUFJLGdCQUFnQixHQUFHLENBQUMsY0FBNkIsRUFBRSxNQUFhLEVBQUUsU0FBcUIsRUFBRSxjQUF1QixFQUFDLEVBQUU7UUFDbkgsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxxQ0FBa0IsQ0FBQyxDQUFDO1FBQ3JELElBQUcsV0FBVyxFQUFDO1lBQ1gsY0FBYyxDQUFDLE1BQU0sQ0FBQyxpQkFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUUsRUFBQyxjQUFjLEVBQUMsRUFBRTtnQkFDaEQsU0FBUyxDQUFBLENBQUMsQ0FBQSxpQkFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixFQUFFLGlCQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFBLElBQUk7Z0JBQ3RGLGlCQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQztnQkFDZixpQkFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFDLFVBQVUsRUFBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUN2SCxpQkFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBQyxZQUFZLENBQUMsQ0FBQztnQkFDMUYsY0FBYyxDQUFBLENBQUMsQ0FBQSxpQkFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxTQUFTLEVBQUMsRUFBQyxDQUFDLGlCQUFJLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQSxJQUFJO2FBQ2hGLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ2hCO2FBQUk7WUFDRCxjQUFjLENBQUMsV0FBVyxDQUFDLGlCQUFJLENBQUMsR0FBRyxDQUFDLEVBQUMsS0FBSyxFQUFDLE9BQU8sRUFBQyxFQUFDO2dCQUNoRCxpQkFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUM7Z0JBQ3hCLGlCQUFJLENBQUMsQ0FBQyxDQUFDLG1DQUFtQyxDQUFDO2dCQUMzQyxpQkFBSSxDQUFDLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQzthQUM1QyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNoQjtJQUNMLENBQUMsQ0FBQTtJQUNELElBQUksaUJBQWlCLEdBQUcsQ0FBTyxNQUF3QixFQUFFLGNBQTZCLEVBQUMsRUFBRTtRQUNyRixNQUFNLENBQUMsUUFBUSxHQUFDLElBQUksQ0FBQztRQUNyQixNQUFNLENBQUMsU0FBUyxHQUFDLG9CQUFvQixDQUFDO1FBQ3RDLGNBQWMsQ0FBQyxTQUFTLEdBQUMsRUFBRSxDQUFDO1FBQzVCLElBQUc7WUFDQyxJQUFJLFdBQVcsR0FBMkIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxxQ0FBa0IsQ0FBQyxDQUFDO1lBQzdFLElBQUksS0FBSyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDaEQsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7U0FDOUU7UUFBQSxPQUFNLEdBQUcsRUFBQztZQUNQLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDekIsTUFBTSxHQUFHLENBQUE7U0FDWjtnQkFBTztZQUNKLE1BQU0sQ0FBQyxRQUFRLEdBQUMsS0FBSyxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxTQUFTLEdBQUMseUJBQXlCLENBQUM7U0FDOUM7SUFDTCxDQUFDLENBQUEsQ0FBQTtJQUNELEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFDOztZQUMxQixJQUFJLFVBQVUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBRSxDQUFDO1lBQ3pELElBQUksY0FBYyxHQUFHLGlCQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsS0FBSyxFQUFDLHlCQUF5QixFQUFDLEVBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUYsSUFBSSxjQUFjLEdBQWdCLGlCQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEQsZ0JBQWdCLENBQUMsVUFBNEIsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDdkYsVUFBVSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN2QyxVQUFVLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3ZDLGNBQWMsQ0FBQyxPQUFPLEdBQUcsR0FBRSxFQUFFLENBQUEsaUJBQWlCLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFBO1FBQ2xGLENBQUM7S0FBQSxDQUFDO0lBRUYsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFnQjtRQUN0QyxLQUFLLENBQUMsSUFBSSxHQUFHO1lBQ1QsSUFBSSxFQUFFLEtBQUs7U0FDZCxDQUFDO1FBQ0YsMEVBQTBFO1FBQzFFLEtBQUssQ0FBQyxRQUFRLEdBQUc7WUFDYixVQUFVLEVBQUUsSUFBSTtZQUNoQixLQUFLLEVBQUUsSUFBSTtZQUNYLFNBQVMsRUFBRSxFQUFFO1lBQ2IsY0FBYyxFQUFFLGNBQWM7WUFDOUIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLGVBQWUsRUFBRSxJQUFJO1NBQ3hCLENBQUM7UUFDRixZQUFZO1FBQ1osS0FBSyxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXVDRTtJQUNGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXlDRTtJQUVGLElBQUksMEJBQTBCLEdBQUcsQ0FBQyxTQUFxQixFQUFDLEtBQWEsRUFBQyxRQUFlLEVBQUUsS0FBWSxFQUFDLEVBQUU7UUFDbEcsSUFBSSxFQUFFLEdBQUc7WUFDTCxTQUFTLEVBQUMsU0FBUztZQUNuQixLQUFLLEVBQUMsS0FBSztZQUNYLFFBQVEsRUFBQyxRQUFRO1NBQ3BCLENBQUE7UUFDRCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUMsRUFBQyxDQUFDLEVBQUMsZ0JBQWdCLEVBQUMsRUFBRSxFQUFFLFVBQVUsRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFDLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkYsT0FBTyxHQUFHLENBQUE7SUFDZCxDQUFDLENBQUE7SUFFRCxJQUFJLDBCQUEwQixHQUFHLENBQU8sS0FBaUIsRUFBRSxTQUFnQixFQUFFLEtBQW1CLEVBQUMsRUFBRTtRQUMvRixNQUFNLEdBQUcsTUFBTSxDQUFBLENBQUMsQ0FBQSxNQUFNLENBQUEsQ0FBQyxDQUFBLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUN4RixJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsU0FBUyxJQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBRSxLQUFLLENBQUEsQ0FBQyxDQUFBLElBQUksQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVLLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFDLEVBQUUsQ0FBQztRQUMxQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBMkQsRUFBQyxFQUFFO1lBQzdFLElBQUksV0FBVyxHQUFHLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1QyxJQUFJLEdBQUcsR0FBRywwQkFBMEIsQ0FDaEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUF3QixFQUNsQyxLQUFLLENBQUMsS0FBZ0IsRUFDdEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQ3JCLFdBQVcsQ0FDZCxDQUFDO1lBQ0YsR0FBRyxDQUFDLEtBQUssR0FBQyxpQkFBaUIsQ0FBQztZQUM1QixLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQSxDQUFBO0lBRUQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxLQUFpQixFQUFDLFVBQWlCLEVBQUMsRUFBRSxDQUN0RCxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFBLENBQUMsQ0FBQSxPQUFPLENBQUE7SUFHeEYsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUM7UUFDcEIsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxFQUFFLEdBQUMsQ0FBQztRQUNqQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFDLEVBQUU7WUFDeEIsSUFBSSxLQUFLLEdBQWlCLFlBQVksQ0FBQyxLQUFLLEVBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEQsMEJBQTBCLENBQUMsS0FBSyxFQUFDLFNBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDBDQUEwQztRQUNqRyxDQUFDO0tBQ0osQ0FBQztJQUVGLEtBQUssQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFDO1FBQzdCLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsRUFBRSxHQUFDLENBQUM7UUFDakMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxFQUFFO1lBQ3hCLElBQUksS0FBSyxHQUFpQixZQUFZLENBQUMsS0FBSyxFQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hELDBCQUEwQixDQUFDLEtBQUssRUFBQyxTQUFTLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQywwQ0FBMEM7UUFDakcsQ0FBQztLQUNKLENBQUM7SUFFRixLQUFLLENBQUMsV0FBVyxDQUFDLFdBQVcsR0FBQztRQUMxQixPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLEVBQUUsR0FBQyxDQUFDO1FBQ2pDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsRUFBRTtZQUN4QixJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLEVBQUUsQ0FBQyxTQUFTLEdBQUMsRUFBRSxDQUFDO1lBQ2hCLElBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUM7Z0JBQ3hCLElBQUksR0FBRyxHQUFHLGlCQUFJLENBQUMsR0FBRyxDQUFDO29CQUNmLEtBQUssRUFBQyxjQUFjO2lCQUN2QixFQUFDO29CQUNFLGlCQUFJLENBQUMsSUFBSSxDQUFDO3dCQUNOLENBQUMsRUFBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWM7cUJBQzdCLENBQUM7aUJBQ0wsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNaLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN4QyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZCO1FBQ0wsQ0FBQztLQUNKLENBQUM7SUFFRixJQUFJLFFBQVEsR0FBRyxDQUFDLElBQVcsRUFBQyxLQUFTLEVBQUUsRUFBRTtRQUNyQyxJQUFJLEdBQUcsR0FBRyxpQkFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFDO1lBQzNCLGlCQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNOLENBQUMsRUFBQyxJQUFJO2FBQ1QsQ0FBQztTQUNMLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sR0FBRyxDQUFBO0lBQ2QsQ0FBQyxDQUFBO0lBQ0QsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsTUFBbUIsRUFBQyxFQUFFO1FBQzdELElBQUssZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hELElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFDLEVBQUMsS0FBSyxFQUFDLGNBQWMsRUFBQyxDQUFDLENBQUE7UUFDaEUsSUFBRyxNQUFNLENBQUMsZUFBZSxFQUFDO1lBQ3RCLE9BQU8saUJBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUMsa0JBQWtCLEVBQUMsRUFBQyxDQUFDLGdCQUFnQixFQUFFLEdBQTZCLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO1NBQzFHO1FBQ0QsSUFBSSxNQUFNLEdBQUcsaUJBQUksQ0FBQyxNQUFNLENBQUM7WUFDckIsS0FBSyxFQUFDLDZCQUE2QixNQUFNLENBQUMsaUJBQWlCLEVBQUU7U0FDaEUsRUFBQztZQUNFLEdBQUcsZ0JBQWdCLEVBQUU7WUFDckIsK0JBQStCO1lBQy9CLE1BQU0sQ0FBQyxjQUFjLENBQUEsQ0FBQyxDQUFBLEdBQUcsQ0FBQSxDQUFDLENBQUEsSUFBSTtTQUNqQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUUsRUFBRTtZQUNqQixJQUFJLFNBQVMsR0FBRyxHQUFRLEVBQUU7Z0JBQ3RCLE1BQU0sQ0FBQyxRQUFRLEdBQUMsSUFBSSxDQUFDO2dCQUNyQixJQUFHO29CQUNDLElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQzt3QkFDbEQsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUzt3QkFDOUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSzt3QkFDdEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRzt3QkFDbEIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO3dCQUMzQixNQUFNLEVBQUUsTUFBTTtxQkFDakIsQ0FBQyxDQUFDO29CQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7b0JBQ25CLElBQUksSUFBSSxHQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtpQkFDcEM7Z0JBQUEsT0FBTSxHQUFHLEVBQUM7b0JBQ1AsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDekIsTUFBTSxHQUFHLENBQUE7aUJBQ1o7d0JBQU87b0JBQ0oscUhBQXFIO29CQUNySCwwRUFBMEU7b0JBQzFFLFVBQVUsQ0FBQyxHQUFFLEVBQUUsQ0FBQSxNQUFNLENBQUMsUUFBUSxHQUFDLEtBQUssRUFBQyxJQUFJLENBQUMsQ0FBQTtpQkFDN0M7WUFDTCxDQUFDLENBQUEsQ0FBQTtZQUVELElBQUksa0JBQWtCLEdBQWtCLEVBQUUsQ0FBQTtZQUMxQyxJQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUM7Z0JBQ2Ysa0JBQWtCLENBQUMsY0FBYyxHQUFHLHFCQUFxQixDQUFDLENBQUMsNkNBQTZDO2dCQUN4RyxJQUFJLFVBQVUsR0FBRztvQkFDYixFQUFDLEtBQUssRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFDLElBQUksRUFBQztvQkFDeEIsRUFBQyxLQUFLLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBQyxLQUFLLEVBQUM7aUJBQzVCLENBQUE7Z0JBQ0QsY0FBYyxDQUFDLG9CQUFvQixnQkFBZ0IsSUFBSSxrQ0FBTSxrQkFBa0IsS0FBRSxVQUFVLElBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDakg7aUJBQUk7Z0JBQ0QsU0FBUyxFQUFFLENBQUM7YUFDZjtRQUNMLENBQUMsQ0FBQTtRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2pCLENBQUMsQ0FBQTtJQUVELElBQUksb0JBQW9CLEdBQUcsQ0FBTyxJQUFzRSxFQUFDLEVBQUU7UUFDdkcsSUFBSSxFQUFDLEtBQUssRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3ZDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsRUFBRSxDQUFDLFNBQVMsR0FBQyxFQUFFLENBQUM7UUFDaEIsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsSUFBRSxFQUFFLENBQUM7YUFDM0MsTUFBTSxDQUFDLENBQUMsTUFBbUIsRUFBQyxFQUFFLENBQUEsTUFBTSxDQUFDLGlCQUFpQixJQUFFLFNBQVMsQ0FBQzthQUNsRSxPQUFPLENBQUMsQ0FBQyxNQUFtQixFQUFDLEVBQUUsQ0FBQSxFQUFFLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQyxDQUFBLENBQUE7SUFFRCxJQUFJLFdBQVcsR0FBRyxDQUFDLElBQW1HLEVBQUMsRUFBRTtRQUNySCxJQUFJLFFBQVEsR0FBRyxpQkFBSSxDQUFDLEtBQUssQ0FBQyxFQUFDLElBQUksRUFBQyxVQUFVLEVBQUUsT0FBTyxFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVFLFFBQVEsQ0FBQyxPQUFPLEdBQUcsR0FBTyxFQUFFO1lBQ3hCLElBQUc7Z0JBQ0MsUUFBUSxDQUFDLFFBQVEsR0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO2FBQzFCO1lBQUEsT0FBTSxHQUFHLEVBQUM7Z0JBQ1AsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtnQkFDekIsTUFBTSxHQUFHLENBQUE7YUFDWjtvQkFBTztnQkFDSixRQUFRLENBQUMsUUFBUSxHQUFDLEtBQUssQ0FBQzthQUMzQjtRQUNMLENBQUMsQ0FBQSxDQUFBO1FBQ0QsT0FBTyxpQkFBSSxDQUFDLEtBQUssQ0FBQyxFQUFDLEtBQUssRUFBQyxRQUFRLEVBQUMsRUFBQztZQUMvQixRQUFRO1lBQ1IsaUJBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQSxPQUFPLENBQUEsQ0FBQyxDQUFBLEVBQUUsRUFBRSxFQUFDLENBQUM7U0FDdkQsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUMsQ0FBQTtJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFDO1FBQ3hCLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsRUFBRSxHQUFDLENBQUM7UUFDakMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxFQUFFO1lBQ3hCLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEMsRUFBRSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDbEIsRUFBRSxDQUFDLFdBQVcsQ0FDVixXQUFXLENBQUM7Z0JBQ1IsS0FBSyxFQUFDLElBQUk7Z0JBQ1YsT0FBTyxFQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVTtnQkFDNUIsVUFBVSxFQUFFLEdBQVEsRUFBRTtvQkFDbEIsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDO3dCQUMxQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTO3dCQUM5QixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHO3FCQUNyQixDQUFDLENBQUM7b0JBQ0gsSUFBSSxJQUFJLEdBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztvQkFDdkIsVUFBVSxDQUFDLEdBQUUsRUFBRSxDQUFBLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLDJCQUEyQjtnQkFDckYsQ0FBQyxDQUFBO2FBQ0osQ0FBQyxDQUNMLENBQUM7UUFDTixDQUFDO0tBQ0osQ0FBQztJQUVGLEtBQUssQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFDO1FBQzdCLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsRUFBRSxHQUFDLENBQUM7UUFDakMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxFQUFFO1lBQ3hCLG9CQUFvQixDQUFDLEVBQUMsS0FBSyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDO0tBQ0osQ0FBQztJQUVGLEtBQUssQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEdBQUM7UUFDaEMsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxFQUFFLEdBQUMsQ0FBQztRQUNqQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFDLEVBQUU7WUFDeEIsb0JBQW9CLENBQUMsRUFBQyxLQUFLLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7S0FDSixDQUFDO0lBRUYsS0FBSyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBQztRQUMvQixPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLEVBQUUsR0FBQyxDQUFDO1FBQ2pDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsRUFBRTtZQUN4QixvQkFBb0IsQ0FBQyxFQUFDLEtBQUssRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFVBQVUsRUFBQyxDQUFDLENBQUM7UUFDakUsQ0FBQztLQUNKLENBQUM7SUFFRixTQUNBLHVCQUF1QixDQUFDLElBQTRFO1FBQ2hHLE9BQU87WUFDSCxPQUFPLEVBQUUsVUFBVSxLQUFrQixFQUFFLFNBQWlCO2dCQUNwRCxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLEtBQUssR0FBRyxpQkFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ25ELEVBQUUsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO2dCQUNsQixFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QixJQUFJLGNBQWMsR0FBRztvQkFDakIsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztvQkFDckMsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO2dCQUNyQyxDQUFDLENBQUE7Z0JBRUQsS0FBSyxDQUFDLE9BQU8sR0FBRztvQkFDWixLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztvQkFDdEIsS0FBSyxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUM7b0JBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQWUsTUFBTTs7NEJBQzFDLElBQUcsTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxJQUFJLElBQUksTUFBTSxFQUFDO2dDQUN0RCxJQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUM7b0NBQ1QsSUFBSSxJQUFJLEdBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztvQ0FDdkIsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7b0NBQ3hDLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUM7d0NBQ3JDLEtBQUssQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDO3FDQUNuRTtvQ0FDRCxLQUFLLENBQUMsV0FBVyxHQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUM7b0NBQ3BDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO29DQUNyQixLQUFLLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUM7aUNBQ3hDO3FDQUFJO29DQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lDQUNuQzs2QkFDSjs0QkFDRCxVQUFVLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUNyQyxDQUFDO3FCQUFBLEVBQUUsVUFBVSxHQUFHO3dCQUNaLEtBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO3dCQUM1QixLQUFLLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUM7d0JBQ3JDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzlCLENBQUMsQ0FBQyxDQUFBO2dCQUNOLENBQUMsQ0FBQTtnQkFDRCxzS0FBc0s7Z0JBQ3RLLHdDQUF3QztnQkFDeEMsR0FBRztZQUNQLENBQUM7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUdELEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLHVCQUF1QixDQUFDO1FBQ2xELFdBQVcsRUFBRSxXQUFXO1FBQ3hCLE9BQU8sRUFBRSxVQUFVLEtBQWtCO1lBQ2pDLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBRSxLQUFLLENBQUEsQ0FBQyxDQUFBLEtBQUssQ0FBQSxDQUFDLENBQUEsU0FBUyxDQUFDO1lBQ3hFLElBQUksU0FBUyxHQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUN6RixPQUFPLFNBQVMsQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztnQkFDNUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUztnQkFDOUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRzthQUN6QixDQUFDLENBQUEsQ0FBQyxDQUFDLFlBQVksQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1FBQ25GLENBQUM7S0FDSixDQUFDLENBQUM7SUFFSCxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksR0FBQyxVQUFlLFdBQVc7O1lBQzFDLDhDQUE4QztZQUM5QyxNQUFNLENBQUMseUJBQXlCLENBQUMsRUFBQyxRQUFRLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO0tBQUEsQ0FBQTtJQUVELFNBQVMsU0FBUyxDQUFJLE1BQVk7UUFDOUIsT0FBUSxFQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aHRtbH0gZnJvbSBcImpzLXRvLWh0bWxcIjtcclxuaW1wb3J0IHt0cmFlckVzdHJ1Y3R1cmF9IGZyb20gXCIuLi91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvXCI7XHJcbmltcG9ydCB7IENhc29TdGF0ZSwgIFxyXG4gICAgSWRGb3JtdWxhcmlvLCBEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcywgSWRFbmMsIElkT3BlcmF0aXZvLCBJZFRhcmVhLCBFc3RhZG9BY2Npb24sIERpcmVjY2lvbkFjY2lvbixcclxufSBmcm9tIFwiLi4vdW5sb2dnZWQvdGlwb3NcIjtcclxuaW1wb3J0ICogYXMgbGlrZUFyIGZyb20gXCJsaWtlLWFyXCI7XHJcbmltcG9ydCB7Z2V0RXN0cnVjdHVyYSwgc2V0UGVyc2lzdGlyRGF0b3NCeVBhc3N9IGZyb20gXCIuLi91bmxvZ2dlZC9ieXBhc3MtZm9ybXVsYXJpb1wiXHJcbmltcG9ydCB7QkFDS1VQUywgY2FyZ2FyRXN0cnVjdHVyYSwgY2FyZ2FySG9qYURlUnV0YSwgR0xPVkFSX0RBVE9TQllQQVNTLCBHTE9WQVJfRVNUUlVDVFVSQSwgR0xPVkFSX01PRE9CWVBBU1N9IGZyb20gXCIuLi91bmxvZ2dlZC9hYnJpci1mb3JtdWxhcmlvXCJcclxuaW1wb3J0IHsgT3BlcmF0aXZvIH0gZnJvbSBcIm1ldGEtZW5jXCI7XHJcbmltcG9ydCB7c2xlZXAsIGNvYWxlc2NlfSBmcm9tIFwiYmVzdC1nbG9iYWxzXCI7XHJcblxyXG5cclxuLy9UT0RPIEdFTkVSQUxJWkFSXHJcblxyXG5jb25zdCBUQVJFQV9ERUZBVUxUID0gJ2VuY3UnO1xyXG52YXIgT1BFUkFUSVZPX0RFRkFVTFQ6c3RyaW5nfG51bGw9IG51bGw7XHJcblxyXG5teU93bi5hdXRvU2V0dXBGdW5jdGlvbnMucHVzaChhc3luYyAoKT0+e1xyXG4gICAgdmFyIG15ID0gbXlPd247ICAgIFxyXG4gICAgdHJ5e1xyXG4gICAgICAgIE9QRVJBVElWT19ERUZBVUxUID0gYXdhaXQgbXkuYWpheC5vcGVyYXRpdm9fZ2V0KHt9KTtcclxuICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgIE9QRVJBVElWT19ERUZBVUxUPW51bGw7XHJcbiAgICB9XHJcbiAgICBteU93bi53U2NyZWVucy5hYnJpcl9lbmN1ZXN0YT17XHJcbiAgICAgICAgcGFyYW1ldGVyczpbXHJcbiAgICAgICAgICAgIHtuYW1lOidvcGVyYXRpdm8nICwgdHlwZU5hbWU6J3RleHQnLCBkZWZhdWx0VmFsdWU6T1BFUkFUSVZPX0RFRkFVTFQsIHJlZmVyZW5jZXM6J29wZXJhdGl2b3MnfSxcclxuICAgICAgICAgICAge25hbWU6J3RhcmVhJyAgICAgLCB0eXBlTmFtZTondGV4dCcsIGRlZmF1bHRWYWx1ZTpUQVJFQV9ERUZBVUxULCByZWZlcmVuY2VzOiAndGFyZWFzJ30sXHJcbiAgICAgICAgICAgIHtuYW1lOidlbmN1ZXN0YScgICwgdHlwZU5hbWU6J2ludGVnZXInLCBkZWZhdWx0VmFsdWU6MTMwMDMxfVxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgYXV0b3Byb2NlZDp0cnVlLFxyXG4gICAgICAgIG1haW5BY3Rpb246YXN5bmMgKHBhcmFtcyk9PntcclxuICAgICAgICAgICAgLy8gYW50ZXM6IGFicmlyRGlyZWN0b1xyXG4gICAgICAgICAgICB2YXIge29wZXJhdGl2bywgZW5jdWVzdGEsIHRhcmVhfSA9IHBhcmFtcztcclxuICAgICAgICAgICAgdmFyIGVzdHJ1Y3R1cmEgPSBnZXRFc3RydWN0dXJhKCk7XHJcbiAgICAgICAgICAgIHZhciBjYXJnYSA9IGF3YWl0IG15LmFqYXguZG1fZm9ycGtyYWl6X2Nhcmdhcih7b3BlcmF0aXZvLCB2aXZpZW5kYTplbmN1ZXN0YSwgdGFyZWF9KSBhcyBEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcztcclxuICAgICAgICAgICAgaWYoIWVzdHJ1Y3R1cmEgfHwgKGVzdHJ1Y3R1cmEudGltZXN0YW1wPz8wKSA8IGNhcmdhLnRpbWVzdGFtcEVzdHJ1Y3R1cmEhIHx8IGVzdHJ1Y3R1cmEub3BlcmF0aXZvICE9IG9wZXJhdGl2byB8fCBteS5jb25maWcuY29uZmlnLmRldmVsKXtcclxuICAgICAgICAgICAgICAgIGVzdHJ1Y3R1cmEgPSBhd2FpdCB0cmFlckVzdHJ1Y3R1cmEoe29wZXJhdGl2b30pXHJcbiAgICAgICAgICAgICAgICBjYXJnYXJFc3RydWN0dXJhKGVzdHJ1Y3R1cmEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB2YXIgc3RhdGU6Q2Fzb1N0YXRlID0ge31cclxuICAgICAgICAgICAgaW5pY2lhbGl6YXJTdGF0ZShzdGF0ZSk7XHJcbiAgICAgICAgICAgIHZhciBmb3JQa1JhaXogPSB7Zm9ybXVsYXJpbzpjYXJnYS5pbmZvcm1hY2lvbkhkcltlbmN1ZXN0YSBhcyBJZEVuY10udGFyZWEubWFpbl9mb3JtLCB2aXZpZW5kYTplbmN1ZXN0YX07XHJcbiAgICAgICAgICAgIHNldFBlcnNpc3RpckRhdG9zQnlQYXNzKFxyXG4gICAgICAgICAgICAgICAgYXN5bmMgZnVuY3Rpb24gcGVyc2lzdGlyRGF0b3NCeVBhc3NFbkJhc2VEZURhdG9zKHBlcnNpc3RlbnRlczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocGVyc2lzdGVudGVzLnNvbG9MZWN0dXJhKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXN0w6EgaW50ZW50YW5kbyBtb2RpZmljYXIgdW5hIGVuY3Vlc3RhIGFiaWVydGEgY29tbyBzb2xvIGxlY3R1cmEsIG5vIHNlIGd1YXJkYXJvbiBsb3MgY2FtYmlvc1wiKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBteS5hamF4LmRtX2ZvcnBrcmFpel9kZXNjYXJnYXIoe29wZXJhdGl2bywgcGVyc2lzdGVudGVzfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgaWYoIWNhcmdhLnJlc3B1ZXN0YXMudml2aWVuZGFzW2ZvclBrUmFpei52aXZpZW5kYSFdKXtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gc2UgZW5jdWVudHJhIGxhIHZpdmllbmRhICR7Zm9yUGtSYWl6LnZpdmllbmRhIX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXJnYXJIb2phRGVSdXRhKHsuLi5jYXJnYSwgbW9kb0FsbWFjZW5hbWllbnRvOidzZXNzaW9uJ30pO1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIGRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwoe29wZXJhdGl2bywgbW9kb0RlbW86ZmFsc2UsIGZvclBrUmFpen0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBteU93bi53U2NyZWVucy5vYnRlbmVyX3RlbGVmb25vPXtcclxuICAgICAgICBwYXJhbWV0ZXJzOltdLFxyXG4gICAgICAgIGF1dG9wcm9jZWQ6dHJ1ZSxcclxuICAgICAgICBtYWluQWN0aW9uOmFzeW5jIChfcGFyYW1zKT0+e1xyXG4gICAgICAgICAgICAvLyBhbnRlczogYWJyaXJEaXJlY3RvXHJcbiAgICAgICAgICAgIHZhciB7b3BlcmF0aXZvLCB0YXJlYX0gPSB7b3BlcmF0aXZvOiBPUEVSQVRJVk9fREVGQVVMVCwgdGFyZWE6IFRBUkVBX0RFRkFVTFR9O1xyXG4gICAgICAgICAgICBsZXQgZW5jdWVzdGEgPSBwYXJzZUludChhd2FpdCBteS5hamF4LmdldF9yYW5kb21fZnJlZV9jYXNlKHtvcGVyYXRpdm99KSk7IFxyXG4gICAgICAgICAgICBhd2FpdCBteU93bi53U2NyZWVucy5hYnJpcl9lbmN1ZXN0YS5tYWluQWN0aW9uKHtvcGVyYXRpdm8sIGVuY3Vlc3RhLCB0YXJlYX0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBteU93bi53U2NyZWVucy5jb25zaXN0aXJfZW5jdWVzdGE9e1xyXG4gICAgICAgIHBhcmFtZXRlcnM6W1xyXG4gICAgICAgICAgICB7bmFtZTonb3BlcmF0aXZvJyAsIHR5cGVOYW1lOid0ZXh0JywgZGVmYXVsdFZhbHVlOk9QRVJBVElWT19ERUZBVUxULCByZWZlcmVuY2VzOidvcGVyYXRpdm9zJ30sXHJcbiAgICAgICAgICAgIHtuYW1lOid0YXJlYScgICAgICwgdHlwZU5hbWU6J3RleHQnfSxcclxuICAgICAgICAgICAge25hbWU6J2VuY3Vlc3RhJyAgLCB0eXBlTmFtZTonaW50ZWdlcid9XHJcbiAgICAgICAgXSxcclxuICAgICAgICBhdXRvcHJvY2VkOnRydWUsXHJcbiAgICAgICAgbWFpbkFjdGlvbjphc3luYyAocGFyYW1zKT0+e1xyXG4gICAgICAgICAgICB2YXIge29wZXJhdGl2bywgdGFyZWEsIGVuY3Vlc3RhIH0gPSBwYXJhbXM7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBteU93bi5hamF4LmNvbnNpc3Rpcl9lbmN1ZXN0YSh7XHJcbiAgICAgICAgICAgICAgICBvcGVyYXRpdm86IG9wZXJhdGl2byxcclxuICAgICAgICAgICAgICAgIGlkX2Nhc286IGVuY3Vlc3RhXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZihyZXN1bHQub2spe1xyXG4gICAgICAgICAgICAgICAgdmFyIGZpeGVkRmllbGRzID0gW107XHJcbiAgICAgICAgICAgICAgICBmaXhlZEZpZWxkcy5wdXNoKHtmaWVsZE5hbWU6ICdvcGVyYXRpdm8nLCB2YWx1ZTogb3BlcmF0aXZvfSk7XHJcbiAgICAgICAgICAgICAgICBmaXhlZEZpZWxkcy5wdXNoKHtmaWVsZE5hbWU6ICd2aXZpZW5kYScsIHZhbHVlOiBlbmN1ZXN0YX0pO1xyXG4gICAgICAgICAgICAgICAgdmFyIG1haW5MYXlvdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbl9sYXlvdXQnKSE7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGl2R3JpbGxhID0gaHRtbC5kaXYoe2lkOidpbmNvbnNpc3RlbmNpYXMnfSkuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgICAgICBtYWluTGF5b3V0Lmluc2VydEJlZm9yZShkaXZHcmlsbGEsIG1haW5MYXlvdXQuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICBtYWluTGF5b3V0Lmluc2VydEJlZm9yZShcclxuICAgICAgICAgICAgICAgICAgICBjcmVhckJvdG9uVmVyQWJyaXJFbmN1ZXN0YShcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJlYSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW5jdWVzdGEsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBgaXIgYSBlbmN1ZXN0YSAke2VuY3Vlc3RhfWBcclxuICAgICAgICAgICAgICAgICAgICApLCBcclxuICAgICAgICAgICAgICAgICAgICBtYWluTGF5b3V0LmZpcnN0Q2hpbGRcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBteS50YWJsZUdyaWQoXCJpbmNvbnNpc3RlbmNpYXNcIiwgZGl2R3JpbGxhLHt0YWJsZURlZjp7fSxmaXhlZEZpZWxkczogZml4ZWRGaWVsZHN9KTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KTtcclxuXHJcblxyXG4vL3F1aXRhIGJvb3RzdHJhcCBkZWwgaGVhZCBwYXJhIHF1ZSBubyByb21wYSBsb3MgZXN0aWxvcyBkZSBCRVBsdXMgKHNvbG8gc2UgdXNhIGJvb3RzdHJhcCBlbiBlbCBmb3JtKVxyXG52YXIgbGlua05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaHJlZj1cImNzcy9ib290c3RyYXAubWluLmNzc1wiXScpO1xyXG5saW5rTm9kZVswXT8ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQobGlua05vZGVbMF0pO1xyXG5cclxuZnVuY3Rpb24gY29uc2lzdGlyX2ZpbHRybyh0YXJlYSwgcmVhX3RlbSwgcmVhKXtcclxuICAgIHJldHVybiB0YXJlYT9yZWFfdGVtOnJlYTtcclxufTtcclxuXHJcbnZhciB0YXJlYXM6YW55ID0gbnVsbDtcclxuXHJcbmZ1bmN0aW9uIGh0bWxOdW1lcm8obnVtOm51bWJlcil7XHJcbiAgICByZXR1cm4gaHRtbC5zcGFuKHtjbGFzczonbnVtZXJvJ30sJycrKG51bT8/JycpKVxyXG59XHJcblxyXG52YXIgcGVyc2lzdGlyRW5NZW1vcmlhID0gYXN5bmMgKHBlcnNpc3RlbnRlczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcykgPT4ge1xyXG4gICAgdmFyIHttb2RvQWxtYWNlbmFtaWVudG99ID0gcGVyc2lzdGVudGVzXHJcbiAgICAgICAgaWYobW9kb0FsbWFjZW5hbWllbnRvPT0nbG9jYWwnKXtcclxuICAgICAgICAgICAgbXkuc2V0TG9jYWxWYXIoR0xPVkFSX0RBVE9TQllQQVNTLCBwZXJzaXN0ZW50ZXMpXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIG15LnNldFNlc3Npb25WYXIoR0xPVkFSX0RBVE9TQllQQVNTLCBwZXJzaXN0ZW50ZXMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG15LnNldFNlc3Npb25WYXIoR0xPVkFSX01PRE9CWVBBU1MsIG1vZG9BbG1hY2VuYW1pZW50bylcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gc2luY3Jvbml6YXJEYXRvcyhwZXJzaXN0ZW50ZXM6RGF0b3NCeVBhc3NQZXJzaXN0aWJsZXN8bnVsbCl7XHJcbiAgICB2YXIgZGF0b3MgPSBhd2FpdCBteS5hamF4LmRtX3NpbmNyb25pemFyKHtwZXJzaXN0ZW50ZXN9KTtcclxuICAgIHZhciBvcGVyYXRpdm8gPSBkYXRvcy5vcGVyYXRpdm87XHJcbiAgICBwZXJzaXN0aXJFbk1lbW9yaWEoey4uLmRhdG9zLCBtb2RvQWxtYWNlbmFtaWVudG86J2xvY2FsJ30pO1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmEgPSBhd2FpdCB0cmFlckVzdHJ1Y3R1cmEoe29wZXJhdGl2b30pXHJcbiAgICBteS5zZXRMb2NhbFZhcihHTE9WQVJfRVNUUlVDVFVSQSwgZXN0cnVjdHVyYSk7XHJcbiAgICBteS5yZW1vdmVMb2NhbFZhcihCQUNLVVBTKTtcclxuICAgIHJldHVybiBkYXRvcztcclxufVxyXG5cclxuXHJcblxyXG52YXIgbW9zdHJhckluZm9Mb2NhbCA9IChkaXZBdmlzb1NpbmNybzpIVE1MRGl2RWxlbWVudCwgdGl0dWxvOnN0cmluZywgbnJvU2luY3JvOm51bWJlcnxudWxsLCBtb3N0cmFyTGlua0hkcjogYm9vbGVhbik9PntcclxuICAgIGxldCBkYXRvc0J5UGFzcyA9IG15LmdldExvY2FsVmFyKEdMT1ZBUl9EQVRPU0JZUEFTUyk7XHJcbiAgICBpZihkYXRvc0J5UGFzcyl7XHJcbiAgICAgICAgZGl2QXZpc29TaW5jcm8uYXBwZW5kKGh0bWwuZGl2KHtpZDonYXZpc28tc2luY3JvJ30sIFtcclxuICAgICAgICAgICAgbnJvU2luY3JvP2h0bWwucChbXCJOw7ptZXJvIGRlIHNpbmNyb25pemFjacOzbjogXCIsIGh0bWwuYihcIlwiK25yb1NpbmNyby50b1N0cmluZygpKV0pOm51bGwsXHJcbiAgICAgICAgICAgIGh0bWwuaDQodGl0dWxvKSxcclxuICAgICAgICAgICAgaHRtbC5wKFtodG1sTnVtZXJvKGxpa2VBcihkYXRvc0J5UGFzcy5jYXJnYXMpLmFycmF5KCkubGVuZ3RoKSwnIGFyZWFzOiAnLGxpa2VBcihkYXRvc0J5UGFzcy5jYXJnYXMpLmtleXMoKS5qb2luKCcsICcpXSksXHJcbiAgICAgICAgICAgIGh0bWwucChbaHRtbE51bWVybyhsaWtlQXIoZGF0b3NCeVBhc3MucmVzcHVlc3Rhcy52aXZpZW5kYXMpLmFycmF5KCkubGVuZ3RoKSwnIHZpdmllbmRhcyddKSxcclxuICAgICAgICAgICAgbW9zdHJhckxpbmtIZHI/aHRtbC5hKHtocmVmOicuL2NhbXBvJ30sW2h0bWwuYignSVIgQSBMQSBIT0pBIERFIFJVVEEnKV0pOm51bGxcclxuICAgICAgICBdKS5jcmVhdGUoKSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgICBkaXZBdmlzb1NpbmNyby5hcHBlbmRDaGlsZChodG1sLmRpdih7Y2xhc3M6J2F2aXNvJ30sW1xyXG4gICAgICAgICAgICBodG1sLmg0KCdTaXN0ZW1hIHZhY8OtbycpLFxyXG4gICAgICAgICAgICBodG1sLnAoJ05vIGhheSBpbmZvcm1hY2nDs24gZGUgZm9ybXVsYXJpb3MnKSxcclxuICAgICAgICAgICAgaHRtbC5wKCdObyBoYXkgaW5mb3JtYWNpw7NuIGRlIHZpdmllbmRhcycpXHJcbiAgICAgICAgXSkuY3JlYXRlKCkpO1xyXG4gICAgfVxyXG59XHJcbnZhciBwcm9jZWRlclNpbmNyb0Z1biA9IGFzeW5jIChidXR0b246SFRNTEJ1dHRvbkVsZW1lbnQsIGRpdkF2aXNvU2luY3JvOkhUTUxEaXZFbGVtZW50KT0+e1xyXG4gICAgYnV0dG9uLmRpc2FibGVkPXRydWU7XHJcbiAgICBidXR0b24uY2xhc3NOYW1lPSdkb3dubG9hZC1kbS1idXR0b24nO1xyXG4gICAgZGl2QXZpc29TaW5jcm8uaW5uZXJIVE1MPScnO1xyXG4gICAgdHJ5e1xyXG4gICAgICAgIHZhciBkYXRvc0J5UGFzczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcyA9IG15LmdldExvY2FsVmFyKEdMT1ZBUl9EQVRPU0JZUEFTUyk7XHJcbiAgICAgICAgdmFyIGRhdG9zID0gYXdhaXQgc2luY3Jvbml6YXJEYXRvcyhkYXRvc0J5UGFzcyk7XHJcbiAgICAgICAgbW9zdHJhckluZm9Mb2NhbChkaXZBdmlzb1NpbmNybywgJ2RhdG9zIHJlY2liaWRvcycsIGRhdG9zLm51bV9zaW5jcm8sIHRydWUpXHJcbiAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpXHJcbiAgICAgICAgdGhyb3cgZXJyXHJcbiAgICB9ZmluYWxseXtcclxuICAgICAgICBidXR0b24uZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgYnV0dG9uLmNsYXNzTmFtZT0nZG93bmxvYWQtZG0tYnV0dG9uLWNvbnQnO1xyXG4gICAgfVxyXG59XHJcbm15T3duLndTY3JlZW5zLnNpbmNyb25pemFyX2RtPWFzeW5jIGZ1bmN0aW9uKCl7XHJcbiAgICB2YXIgbWFpbkxheW91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluX2xheW91dCcpITtcclxuICAgIHZhciBwcm9jZWRlckJ1dHRvbiA9IGh0bWwuYnV0dG9uKHtjbGFzczonZG93bmxvYWQtZG0tYnV0dG9uLWNvbnQnfSwncHJvY2VkZXIg4oeSJykuY3JlYXRlKCk7XHJcbiAgICB2YXIgZGl2QXZpc29TaW5jcm86SFRNTERpdkVsZW1lbnQ9aHRtbC5kaXYoKS5jcmVhdGUoKTtcclxuICAgIG1vc3RyYXJJbmZvTG9jYWwobWFpbkxheW91dCBhcyBIVE1MRGl2RWxlbWVudCwgJ2luZm9ybWFjacOzbiBhIHRyYW5zbWl0aXInLCBudWxsLCBmYWxzZSlcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQocHJvY2VkZXJCdXR0b24pO1xyXG4gICAgbWFpbkxheW91dC5hcHBlbmRDaGlsZChkaXZBdmlzb1NpbmNybyk7XHJcbiAgICBwcm9jZWRlckJ1dHRvbi5vbmNsaWNrID0gKCk9PnByb2NlZGVyU2luY3JvRnVuKHByb2NlZGVyQnV0dG9uLCBkaXZBdmlzb1NpbmNybylcclxufTtcclxuXHJcbmZ1bmN0aW9uIGluaWNpYWxpemFyU3RhdGUoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgc3RhdGUubW9kbyA9IHtcclxuICAgICAgICBkZW1vOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIC8vIE9KTyBzdGF0ZS5vcGNpb25lcyBzZSBtb2RpZmljYSBhY8OhIHkgZW4gb3RybyBsYWRvIGNvbiBlc3RlIG1pc21vIGNhcnRlbFxyXG4gICAgc3RhdGUub3BjaW9uZXMgPSB7XHJcbiAgICAgICAgYmllbnZlbmlkbzogdHJ1ZSxcclxuICAgICAgICBmb3JQazogbnVsbCxcclxuICAgICAgICBwaWxhRm9yUGs6IFtdLFxyXG4gICAgICAgIG1vZG9EZXNwbGllZ3VlOiBcInJlbGV2YW1pZW50b1wiLFxyXG4gICAgICAgIG1vZG9EaXJlY3RvOiBmYWxzZSxcclxuICAgICAgICBtb2RvQm9ycmFyUmVzcHVlc3RhOiBudWxsLFxyXG4gICAgICAgIGNvbkNhbXBvT3BjaW9uZXM6IGZhbHNlLFxyXG4gICAgICAgIHNhbHRvQXV0b21hdGljbzogdHJ1ZSxcclxuICAgIH07XHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHN0YXRlLmZlZWRiYWNrUm93VmFsaWRhdG9yID0ge307XHJcbn1cclxuLypcclxuZnVuY3Rpb24gbW9zdHJhckRhdG9zUGVyc29uYShoYXlEYXRvczpib29sZWFuLCBkYXRvczphbnksIGRpdlJlc3VsdDpIVE1MRGl2RWxlbWVudCl7XHJcbiAgICAvL1RPRE86IEVWQUxVQVIgU0kgQ09OVklFTkUgVFJBRVJMTyBERSBMQSBCQVNFXHJcbiAgICB2YXIgdGlwb3NEb2N1bWVudG8gPSBbJ0ROSSBhcmdlbnRpbm8nLCAnRG9jdW1lbnRvIGV4dHJhbmplcm8nLCAnTm8gdGllbmUgZG9jdW1lbnRvJywgJ090cm8nXTtcclxuICAgIHZhciBwYWlzRG9jdW1lbnRvID0gWydVcnVndWF5JywgJ1BhcmFndWF5JywgJ0JyYXNpbCcsICdCb2xpdmlhJywgJ0NoaWxlJywgJ1BlcsO6JywgJ1ZlbmV6dWVsYScsICdPdHJvJ107XHJcbiAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgaGF5RGF0b3M/XHJcbiAgICAgICAgICAgIGh0bWwuZGl2KHtjbGFzczonZGF0b3MtcGVyc29uYS1jYXJnYWRhJ30sW1xyXG4gICAgICAgICAgICAgICAgaHRtbC5oMihcIkRhdG9zIHBlcnNvbmFcIiksXHJcbiAgICAgICAgICAgICAgICBodG1sLmRpdih7Y2xhc3M6J2ZpY2hhLXBlcnNvbmEnfSxbXHJcbiAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoW2h0bWwubGFiZWwoJ0FwZWxsaWRvOiAnKSwgZGF0b3MuYXBlbGxpZG9dKSxcclxuICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbaHRtbC5sYWJlbCgnTm9tYnJlczogJyksIGRhdG9zLm5vbWJyZXNdKSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy50aXBvRG9jdW1lbnRvP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLmxhYmVsKCdUaXBvIGRvY3VtZW50bzogJyksIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlwb3NEb2N1bWVudG9bZGF0b3MudGlwb0RvY3VtZW50by0xXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdG9zLnRpcG9Eb2N1bWVudG89PTQgJiYgZGF0b3MudGlwb0RvY3VtZW50b0VzcGVjaWZpY2Fkbz8nICgnKyBkYXRvcy50aXBvRG9jdW1lbnRvRXNwZWNpZmljYWRvKycpJzonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgICAgICA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLnRpcG9Eb2N1bWVudG89PTIgJiYgZGF0b3MucGFpc0RvY3VtZW50bz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5sYWJlbCgnUGFpczogJyksIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFpc0RvY3VtZW50b1tkYXRvcy5wYWlzRG9jdW1lbnRvLTFdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0b3MucGFpc0RvY3VtZW50bz09OCAmJiBkYXRvcy5wYWlzRG9jdW1lbnRvRXNwZWNpZmljYWRvPycgKCcrZGF0b3MucGFpc0RvY3VtZW50b0VzcGVjaWZpY2FkbysnKSc6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgICAgICAgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy50aXBvRG9jdW1lbnRvIT0zICYmIGRhdG9zLnRpcG9Eb2N1bWVudG8/aHRtbC5kaXYoW2h0bWwubGFiZWwoJ07CuiBEb2N1bWVudG86ICcpLCBkYXRvcy5kb2N1bWVudG9dKTonJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy5jZWx1bGFyP2h0bWwuZGl2KFtodG1sLmxhYmVsKCdDZWwuOiAnKSwgZGF0b3MuY2VsdWxhcl0pOicnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLmVtYWlsP2h0bWwuZGl2KFtodG1sLmxhYmVsKCdFbWFpbDogJyksIGRhdG9zLmVtYWlsXSk6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MudGVsZWZvbm9BbHRlcm5hdGl2bz9odG1sLmRpdihbaHRtbC5sYWJlbCgnVGVsLiBhbHRlcm5hdGl2bzogJyksIGRhdG9zLnRlbGVmb25vQWx0ZXJuYXRpdm9dKTonJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy5vYnNlcnZhY2lvbmVzP2h0bWwuZGl2KFtodG1sLmxhYmVsKCdPYnNlcnZhY2lvbmVzOiAnKSwgZGF0b3Mub2JzZXJ2YWNpb25lc10pOicnLFxyXG4gICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgXSkuY3JlYXRlKClcclxuICAgICAgICA6XHJcbiAgICAgICAgICAgIGh0bWwucChcIk5vIHNlIGVuY29udHLDsyB1bmEgZW5jdWVzdGEgcGFyYSBsYSBldGlxdWV0YSBjYXJnYWRhXCIpLmNyZWF0ZSgpXHJcbiAgICApXHJcbn1cclxuKi9cclxuLypteU93bi5jbGllbnRTaWRlcy50YXJlYXNUZW1Sb3c9e1xyXG4gICAgdXBkYXRlOihkZXBvdCk9PntcclxuICAgICAgICB2YXIgdGFyZWE6J25hZGEnfCdwcmVhc2lnbmFyJ3wnY2FyZ2FyJ3wncmVhbGl6YXInfCd2ZXJpZmljYXInPSduYWRhJztcclxuICAgICAgICB2YXIgcm93PWRlcG90LnJvdztcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgdmFyIGlkcGVyPW15LmNvbmZpZy5pZHBlcjtcclxuICAgICAgICB2YXIgZXNwZXJhcjpib29sZWFuPWZhbHNlO1xyXG4gICAgICAgIGlmKHJvdy5oYWJpbGl0YWRhKXtcclxuICAgICAgICAgICAgaWYoIXJvdy5yZWNlcGNpb25pc3RhICYmICFyb3cuYXNpZ25hZG8pe1xyXG4gICAgICAgICAgICAgICAgdGFyZWE9J3ByZWFzaWduYXInO1xyXG4gICAgICAgICAgICAgICAgZXNwZXJhcj10cnVlO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZighcm93LmFzaWduYWRvIHx8ICFyb3cuZmVjaGFfYXNpZ25hY2lvbiB8fCAhcm93Lm9wZXJhY2lvbil7XHJcbiAgICAgICAgICAgICAgICB0YXJlYT0nY2FyZ2FyJztcclxuICAgICAgICAgICAgICAgIGVzcGVyYXI9cm93LnJlY2VwY2lvbmlzdGEhPWlkcGVyO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZighcm93LnJlYSl7XHJcbiAgICAgICAgICAgICAgICB0YXJlYT0ncmVhbGl6YXInO1xyXG4gICAgICAgICAgICAgICAgZXNwZXJhcj1yb3cuYXNpZ25hZG8hPWlkcGVyO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZighcm93LnZlcmlmaWNhZG8pe1xyXG4gICAgICAgICAgICAgICAgdGFyZWE9J3ZlcmlmaWNhcic7XHJcbiAgICAgICAgICAgICAgICBlc3BlcmFyPXJvdy5yZWNlcGNpb25pc3RhIT1pZHBlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgcG9uZXI9e1xyXG4gICAgICAgICAgICByZWNlcGNpb25pc3RhICAgICAgICAgIDp0YXJlYT09J3ByZWFzaWduYXInICYmIChlc3BlcmFyPydlc3BlcmFyJzonbm9ybWFsJyksXHJcbiAgICAgICAgICAgIGFzaWduYWRvICAgICAgICAgICA6dGFyZWE9PSdjYXJnYXInICAgICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBmZWNoYV9hc2lnbmFjaW9uICAgOnRhcmVhPT0nY2FyZ2FyJyAgICAgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidub3JtYWwnKSxcclxuICAgICAgICAgICAgb3BlcmFjaW9uICAgICAgICAgIDp0YXJlYT09J2NhcmdhcicgICAgICYmIChlc3BlcmFyPydlc3BlcmFyJzonbm9ybWFsJyksXHJcbiAgICAgICAgICAgIGNhcmdhX29ic2VydmFjaW9uZXM6KHRhcmVhPT0nY2FyZ2FyJyAgICAgfHwgdGFyZWE9PSdyZWFsaXphcicgJiYgIXJvdy5jYXJnYWRvICYmICFyb3cucmVhICkgJiYgcm93LnJlY2VwY2lvbmlzdGE9PWlkcGVyICYmICdvcHRhdGl2bycsXHJcbiAgICAgICAgICAgIHZlcmlmaWNhZG8gICAgICAgICA6dGFyZWE9PSd2ZXJpZmljYXInICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBvYnNfdmVyaWZpY2FkbyAgICAgOnRhcmVhPT0ndmVyaWZpY2FyJyAgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidvcHRhdGl2bycpLFxyXG4gICAgICAgIH1cclxuICAgICAgICBsaWtlQXIocG9uZXIpLmZvckVhY2goKHZhbG9yLCBjYW1wbyk9PntcclxuICAgICAgICAgICAgaWYoIXZhbG9yKXtcclxuICAgICAgICAgICAgICAgIGRlcG90LnJvd0NvbnRyb2xzW2NhbXBvXS5yZW1vdmVBdHRyaWJ1dGUoJ215LW1hbmRhdG9yeScpXHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbY2FtcG9dLnNldEF0dHJpYnV0ZSgnbXktbWFuZGF0b3J5Jyx2YWxvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfSxcclxuICAgIHByZXBhcmU6IGZ1bmN0aW9uKCl7fVxyXG59XHJcbiovXHJcblxyXG52YXIgY3JlYXJCb3RvblZlckFicmlyRW5jdWVzdGEgPSAob3BlcmF0aXZvOklkT3BlcmF0aXZvLHRhcmVhOklkVGFyZWEsZW5jdWVzdGE6bnVtYmVyLCBsYWJlbDpzdHJpbmcpPT57XHJcbiAgICB2YXIgdXAgPSB7XHJcbiAgICAgICAgb3BlcmF0aXZvOm9wZXJhdGl2byxcclxuICAgICAgICB0YXJlYTp0YXJlYSxcclxuICAgICAgICBlbmN1ZXN0YTplbmN1ZXN0YVxyXG4gICAgfVxyXG4gICAgbGV0IHZlciA9IG15LmNyZWF0ZUZvcmtlYWJsZUJ1dHRvbih7dzonYWJyaXJfZW5jdWVzdGEnLHVwLCBhdXRvcHJvY2VkOnRydWUsIGxhYmVsfSx7fSk7XHJcbiAgICByZXR1cm4gdmVyXHJcbn1cclxuXHJcbnZhciBjcmVhckJvdG9uZXNWZXJBYnJpclRhcmVhcyA9IGFzeW5jIChkZXBvdDpteU93bi5EZXBvdCwgZmllbGROYW1lOnN0cmluZywgbGFiZWw6J2FicmlyJ3wndmVyJyk9PntcclxuICAgIHRhcmVhcyA9IHRhcmVhcz90YXJlYXM6KGF3YWl0IG15T3duLmFqYXgudGFibGVfZGF0YSh7dGFibGU6IGB0YXJlYXNgLCBmaXhlZEZpZWxkczpbXX0pKTtcclxuICAgIHZhciBtaXNUYXJlYXMgPSB0YXJlYXMuZmlsdGVyKCh0YXJlYSk9PiEhdGFyZWEubWFpbl9mb3JtICYmIHRhcmVhLm9wZXJhdGl2bz09ZGVwb3Qucm93Lm9wZXJhdGl2byAmJiBkZXBvdC5tYW5hZ2VyLmRlZi50YWJsZU5hbWU9PSd0ZW0nP3RydWU6ZGVwb3Qucm93LnRhcmVhID09IHRhcmVhLnRhcmVhKTtcclxuICAgIGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV0uaW5uZXJIVE1MPScnO1xyXG4gICAgbWlzVGFyZWFzLmZvckVhY2goKHRhcmVhOnt0YXJlYTpzdHJpbmcsIG5vbWJyZTpzdHJpbmcsIG1haW5fZm9ybTpJZEZvcm11bGFyaW99KT0+e1xyXG4gICAgICAgIGxldCBidXR0b25MYWJlbCA9IGAke2xhYmVsfSAke3RhcmVhLnRhcmVhfWA7XHJcbiAgICAgICAgbGV0IHZlciA9IGNyZWFyQm90b25WZXJBYnJpckVuY3Vlc3RhKFxyXG4gICAgICAgICAgICBkZXBvdC5yb3cub3BlcmF0aXZvIGFzIElkT3BlcmF0aXZvLFxyXG4gICAgICAgICAgICB0YXJlYS50YXJlYSBhcyBJZFRhcmVhLCBcclxuICAgICAgICAgICAgTnVtYmVyKGRlcG90LnJvdy5lbmMpLFxyXG4gICAgICAgICAgICBidXR0b25MYWJlbFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdmVyLnN0eWxlPSdtYXJnaW46MHB4IDJweDsnO1xyXG4gICAgICAgIGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV0uYXBwZW5kQ2hpbGQodmVyKTtcclxuICAgIH0pXHJcbn1cclxuXHJcbnZhciBnZXRBYnJpck92ZXIgPSAoZGVwb3Q6bXlPd24uRGVwb3QsX2ZpZWxkTmFtZTpzdHJpbmcpPT5cclxuICAgIGRlcG90LnJvdy5jYXJnYWRvX2RtIHx8ICFkZXBvdC5yb3dbJ2VzdGFkb3NfX3Blcm1pdGVfZWRpdGFyX2VuY3Vlc3RhJ10/J3Zlcic6J2FicmlyJ1xyXG5cclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmFicmlyPXtcclxuICAgIHByZXBhcmU6IChfZGVwb3QsIF9maWVsZE5hbWUpPT57fSxcclxuICAgIHVwZGF0ZTogKGRlcG90LCBmaWVsZE5hbWUpPT57XHJcbiAgICAgICAgdmFyIGxhYmVsOid2ZXInfCdhYnJpcicgPSBnZXRBYnJpck92ZXIoZGVwb3QsZmllbGROYW1lKTtcclxuICAgICAgICBjcmVhckJvdG9uZXNWZXJBYnJpclRhcmVhcyhkZXBvdCxmaWVsZE5hbWUsbGFiZWwpOyAvL25vIGVzcGVybyBwcm9tZXNhIHBvcnF1ZSBubyBlcyBuZWNlc2FyaW9cclxuICAgIH1cclxufTtcclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmFicmlyUmVjZXBjaW9uPXtcclxuICAgIHByZXBhcmU6IChfZGVwb3QsIF9maWVsZE5hbWUpPT57fSxcclxuICAgIHVwZGF0ZTogKGRlcG90LCBmaWVsZE5hbWUpPT57XHJcbiAgICAgICAgdmFyIGxhYmVsOid2ZXInfCdhYnJpcicgPSBnZXRBYnJpck92ZXIoZGVwb3QsZmllbGROYW1lKTtcclxuICAgICAgICBjcmVhckJvdG9uZXNWZXJBYnJpclRhcmVhcyhkZXBvdCxmaWVsZE5hbWUsbGFiZWwpOyAvL25vIGVzcGVybyBwcm9tZXNhIHBvcnF1ZSBubyBlcyBuZWNlc2FyaW9cclxuICAgIH1cclxufTtcclxuXHJcbm15T3duLmNsaWVudFNpZGVzLnZlckljb25vU3ZnPXtcclxuICAgIHByZXBhcmU6IChfZGVwb3QsIF9maWVsZE5hbWUpPT57fSxcclxuICAgIHVwZGF0ZTogKGRlcG90LCBmaWVsZE5hbWUpPT57XHJcbiAgICAgICAgbGV0IHRkID0gZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXTtcclxuICAgICAgICB0ZC5pbm5lckhUTUw9Jyc7XHJcbiAgICAgICAgaWYoZGVwb3Qucm93LnBhdGhfaWNvbm9fc3ZnKXtcclxuICAgICAgICAgICAgdmFyIHN2ZyA9IGh0bWwuc3ZnKHtcclxuICAgICAgICAgICAgICAgIGNsYXNzOlwic3ZnLWFjY2lvbmVzXCJcclxuICAgICAgICAgICAgfSxbXHJcbiAgICAgICAgICAgICAgICBodG1sLnBhdGgoe1xyXG4gICAgICAgICAgICAgICAgICAgIGQ6ZGVwb3Qucm93LnBhdGhfaWNvbm9fc3ZnXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBdKS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgc3ZnLnNldEF0dHJpYnV0ZShcInZpZXdCb3hcIixcIjAgMCA1MCA1MFwiKTtcclxuICAgICAgICAgICAgdGQuYXBwZW5kQ2hpbGQoc3ZnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcblxyXG52YXIgY3JlYXJTVkcgPSAocGF0aDpzdHJpbmcscHJvcHM6YW55KSA9PiB7XHJcbiAgICB2YXIgc3ZnID0gaHRtbC5zdmcocHJvcHMgfHwge30sW1xyXG4gICAgICAgIGh0bWwucGF0aCh7XHJcbiAgICAgICAgICAgIGQ6cGF0aFxyXG4gICAgICAgIH0pXHJcbiAgICBdKS5jcmVhdGUoKTtcclxuICAgIHN2Zy5zZXRBdHRyaWJ1dGUoXCJ2aWV3Qm94XCIsXCIwIDAgNTAgNTBcIik7XHJcbiAgICByZXR1cm4gc3ZnXHJcbn1cclxudmFyIGNyZWFyQm90b25BY2Npb24gPSAoZGVwb3Q6bXlPd24uRGVwb3QsIGFjdGlvbjpFc3RhZG9BY2Npb24pPT57XHJcbiAgICBsZXQgIGFjY2lvblNpbkd1aW9uZXMgPSBhY3Rpb24uZWFjY2lvbi5yZXBsYWNlKCdfJywnICcpO1xyXG4gICAgdmFyIHN2ZyA9IGNyZWFyU1ZHKGFjdGlvbi5wYXRoX2ljb25vX3N2Zyx7Y2xhc3M6XCJzdmctYWNjaW9uZXNcIn0pXHJcbiAgICBpZihhY3Rpb24uZGVzYWN0aXZhX2JvdG9uKXtcclxuICAgICAgICByZXR1cm4gaHRtbC5zcGFuKHtjbGFzczpgc2luLWJvdG9uLWFjY2lvbmB9LFthY2Npb25TaW5HdWlvbmVzLCBzdmcgYXMgdW5rbm93biBhcyBIVE1MRWxlbWVudF0pLmNyZWF0ZSgpXHJcbiAgICB9XHJcbiAgICBsZXQgYnV0dG9uID0gaHRtbC5idXR0b24oe1xyXG4gICAgICAgIGNsYXNzOmBib3Rvbi1hY2Npb24gYm90b24tYWNjaW9uLSR7YWN0aW9uLmVhY2Npb25fZGlyZWNjaW9ufWBcclxuICAgIH0sW1xyXG4gICAgICAgIGAke2FjY2lvblNpbkd1aW9uZXN9YCxcclxuICAgICAgICAvL0B0cy1pZ25vcmUgc3ZnIGVzIGh0bWxlbGVtZW50XHJcbiAgICAgICAgYWN0aW9uLnBhdGhfaWNvbm9fc3ZnP3N2ZzpudWxsLFxyXG4gICAgXSkuY3JlYXRlKCk7XHJcbiAgICBidXR0b24ub25jbGljayA9ICgpPT4ge1xyXG4gICAgICAgIHZhciBhY3Rpb25GdW4gPSBhc3luYyAoKT0+e1xyXG4gICAgICAgICAgICBidXR0b24uZGlzYWJsZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IG15LmFqYXguYWNjaW9uX3RhcmVhc190ZW1fZWplY3V0YXIoe1xyXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdGl2bzogZGVwb3Qucm93Lm9wZXJhdGl2byxcclxuICAgICAgICAgICAgICAgICAgICB0YXJlYTogZGVwb3Qucm93LnRhcmVhLFxyXG4gICAgICAgICAgICAgICAgICAgIGVuYzogZGVwb3Qucm93LmVuYyxcclxuICAgICAgICAgICAgICAgICAgICBjb25kaWNpb246IGFjdGlvbi5jb25kaWNpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgYWNjaW9uOiBhY3Rpb25cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KVxyXG4gICAgICAgICAgICAgICAgdmFyIGdyaWQ9ZGVwb3QubWFuYWdlcjtcclxuICAgICAgICAgICAgICAgIGdyaWQucmV0cmlldmVSb3dBbmRSZWZyZXNoKGRlcG90KVxyXG4gICAgICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgICAgIGFsZXJ0UHJvbWlzZShlcnIubWVzc2FnZSlcclxuICAgICAgICAgICAgICAgIHRocm93IGVyclxyXG4gICAgICAgICAgICB9ZmluYWxseXtcclxuICAgICAgICAgICAgICAgIC8vcmV0cmFzbyBsYSBoYWJpbGl0YWNpw7NuIHBvcnF1ZSBhIHZlY2VzIHRhcmRhIGVuIHJlZGlidWphcnNlIGxhIGJvdG9uZXJhIHkgcHVlZGUgdHJhZXIgcHJvYmxlbWFzIHNpIGRhbiBkb2JsZSBjbGljayBcclxuICAgICAgICAgICAgICAgIC8veWEgcXVlIGVqZWN1dGEgbnVldmFtZW50ZSB1bmEgYWNjacOzbiBxdWUgeWEgc2UgZWplY3V0w7MgKHkgdGVybWluw7MpIGFudGVzXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT5idXR0b24uZGlzYWJsZWQ9ZmFsc2UsMzAwMClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB2YXIgY29uZmlybVByb21pc2VPcHRzOiBEaWFsb2dPcHRpb25zID0ge31cclxuICAgICAgICBpZihhY3Rpb24uY29uZmlybWEpe1xyXG4gICAgICAgICAgICBjb25maXJtUHJvbWlzZU9wdHMuYXNrRm9yTm9SZXBlYXQgPSAnbm8gdm9sdmVyIGEgbW9zdHJhcic7IC8vbXVlc3RyYSBtZW5zYWplIHBvciBkZWZhdWx0IHBlcm8gYW5kYSBpZ3VhbFxyXG4gICAgICAgICAgICB2YXIgYnV0dG9uc0RlZiA9IFtcclxuICAgICAgICAgICAgICAgIHtsYWJlbDonc8OtJywgdmFsdWU6dHJ1ZX0sXHJcbiAgICAgICAgICAgICAgICB7bGFiZWw6J25vJywgdmFsdWU6ZmFsc2V9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgY29uZmlybVByb21pc2UoYGNvbmZpcm1hIGFjY2nDs24gXCIke2FjY2lvblNpbkd1aW9uZXN9XCI/YCwgey4uLmNvbmZpcm1Qcm9taXNlT3B0cywgYnV0dG9uc0RlZn0pLnRoZW4oYWN0aW9uRnVuKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgYWN0aW9uRnVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJ1dHRvblxyXG59XHJcblxyXG52YXIgY3JlYXJCb3RvbmVzQWNjaW9uZXMgPSBhc3luYyAob3B0czp7ZGVwb3Q6bXlPd24uRGVwb3QsIGZpZWxkTmFtZTpzdHJpbmcsIGRpcmVjY2lvbjogRGlyZWNjaW9uQWNjaW9ufSk9PntcclxuICAgIGxldCB7ZGVwb3QsZmllbGROYW1lLGRpcmVjY2lvbn0gPSBvcHRzO1xyXG4gICAgbGV0IHRkID0gZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXTtcclxuICAgIHRkLmlubmVySFRNTD0nJztcclxuICAgIChkZXBvdC5yb3dDb250cm9scy5hY2Npb25lcy5nZXRUeXBlZFZhbHVlKCl8fFtdKVxyXG4gICAgICAgIC5maWx0ZXIoKGFjdGlvbjpFc3RhZG9BY2Npb24pPT5hY3Rpb24uZWFjY2lvbl9kaXJlY2Npb249PWRpcmVjY2lvbilcclxuICAgICAgICAuZm9yRWFjaCgoYWN0aW9uOkVzdGFkb0FjY2lvbik9PnRkLmFwcGVuZENoaWxkKGNyZWFyQm90b25BY2Npb24oZGVwb3QsIGFjdGlvbikpKTtcclxufVxyXG5cclxudmFyIGNyZWFyU3dpdGNoID0gKG9wdHM6e3JvdW5kPzpib29sZWFuLCBkaXNhYmxlZD86Ym9vbGVhbiwgY2hlY2tlZD86Ym9vbGVhbiwgb25DbGlja0Z1bjpGdW5jdGlvbiwgb25FcnJGdW4/OkZ1bmN0aW9ufSk9PntcclxuICAgIHZhciBjaGVja2JveCA9IGh0bWwuaW5wdXQoe3R5cGU6J2NoZWNrYm94JywgY2hlY2tlZDpvcHRzLmNoZWNrZWR9KS5jcmVhdGUoKTtcclxuICAgIGNoZWNrYm94Lm9uY2xpY2sgPSBhc3luYygpPT57XHJcbiAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICBjaGVja2JveC5kaXNhYmxlZD10cnVlO1xyXG4gICAgICAgICAgICBhd2FpdCBvcHRzLm9uQ2xpY2tGdW4oKVxyXG4gICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpXHJcbiAgICAgICAgICAgIHRocm93IGVyclxyXG4gICAgICAgIH1maW5hbGx5e1xyXG4gICAgICAgICAgICBjaGVja2JveC5kaXNhYmxlZD1mYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaHRtbC5sYWJlbCh7Y2xhc3M6J3N3aXRjaCd9LFtcclxuICAgICAgICBjaGVja2JveCxcclxuICAgICAgICBodG1sLnNwYW4oe2NsYXNzOmBzbGlkZXIgJHtvcHRzLnJvdW5kPydyb3VuZCc6Jyd9YH0pLFxyXG4gICAgXSkuY3JlYXRlKCk7XHJcbn1cclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmhhYmlsaXRhcj17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIHZhciB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICAgICAgdGQuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICB0ZC5hcHBlbmRDaGlsZChcclxuICAgICAgICAgICAgY3JlYXJTd2l0Y2goe1xyXG4gICAgICAgICAgICAgICAgcm91bmQ6dHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNoZWNrZWQ6ZGVwb3Qucm93LmhhYmlsaXRhZGEsXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrRnVuOiBhc3luYyAoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IG15LmFqYXguZW5jdWVzdGFfaGFiaWxpdGFyX2Rlc2hhYmlsaXRhcih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGl2bzogZGVwb3Qucm93Lm9wZXJhdGl2byxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW5jOiBkZXBvdC5yb3cuZW5jXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGdyaWQ9ZGVwb3QubWFuYWdlcjtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT5ncmlkLnJldHJpZXZlUm93QW5kUmVmcmVzaChkZXBvdCksMzAwKTsvL3BhcmEgcXVlIHNlIHZlYSBlbCBlZmVjdG9cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59O1xyXG5cclxubXlPd24uY2xpZW50U2lkZXMuYWNjaW9uZXNBdmFuY2U9e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICBjcmVhckJvdG9uZXNBY2Npb25lcyh7ZGVwb3QsZmllbGROYW1lLGRpcmVjY2lvbjonYXZhbmNlJ30pO1xyXG4gICAgfVxyXG59O1xyXG5cclxubXlPd24uY2xpZW50U2lkZXMuYWNjaW9uZXNSZXRyb2Nlc289e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICBjcmVhckJvdG9uZXNBY2Npb25lcyh7ZGVwb3QsZmllbGROYW1lLGRpcmVjY2lvbjoncmV0cm9jZXNvJ30pO1xyXG4gICAgfVxyXG59O1xyXG5cclxubXlPd24uY2xpZW50U2lkZXMuYWNjaW9uZXNCbGFucXVlbz17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIGNyZWFyQm90b25lc0FjY2lvbmVzKHtkZXBvdCxmaWVsZE5hbWUsZGlyZWNjaW9uOidibGFucXVlbyd9KTtcclxuICAgIH1cclxufTtcclxuXHJcbmZ1bmN0aW9uIFxyXG5ib3RvbkNsaWVudFNpZGVFbkdyaWxsYShvcHRzOiB7IG5vbWJyZUJvdG9uOiBzdHJpbmcsIGxsYW1hZGE6IChkZXBvdDogbXlPd24uRGVwb3QpID0+IFByb21pc2U8YW55PiB9KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHByZXBhcmU6IGZ1bmN0aW9uIChkZXBvdDogbXlPd24uRGVwb3QsIGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHZhciB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICAgICAgICAgIHZhciBib3RvbiA9IGh0bWwuYnV0dG9uKG9wdHMubm9tYnJlQm90b24pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICB0ZC5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgICAgICAgICB0ZC5hcHBlbmRDaGlsZChib3Rvbik7XHJcbiAgICAgICAgICAgIHZhciByZXN0YXVyYXJCb3RvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGJvdG9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBib3Rvbi50ZXh0Q29udGVudCA9IG9wdHMubm9tYnJlQm90b247XHJcbiAgICAgICAgICAgICAgICBib3Rvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnJztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYm90b24ub25jbGljayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGJvdG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJvdG9uLnRleHRDb250ZW50ID0gJ3Byb2Nlc2FuZG8uLi4nO1xyXG4gICAgICAgICAgICAgICAgb3B0cy5sbGFtYWRhKGRlcG90KS50aGVuKGFzeW5jIGZ1bmN0aW9uKHJlc3VsdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQgPT09ICdvYmplY3QnICYmICdvaycgaW4gcmVzdWx0KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzdWx0Lm9rKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBncmlkPWRlcG90Lm1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBncmlkLnJldHJpZXZlUm93QW5kUmVmcmVzaChkZXBvdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVwb3QuZGV0YWlsQ29udHJvbHMuaW5jb25zaXN0ZW5jaWFzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBvdC5kZXRhaWxDb250cm9scy5pbmNvbnNpc3RlbmNpYXMuZm9yY2VEaXNwbGF5RGV0YWlsR3JpZCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdG9uLnRleHRDb250ZW50ID0gIHJlc3VsdC5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90b24udGl0bGUgPSByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3Rvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnIzhGOCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJlc3RhdXJhckJvdG9uLCAyNTAwKTtcclxuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBib3Rvbi50ZXh0Q29udGVudCA9ICdlcnJvcic7XHJcbiAgICAgICAgICAgICAgICAgICAgYm90b24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNGRjgnO1xyXG4gICAgICAgICAgICAgICAgICAgIGFsZXJ0UHJvbWlzZShlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vaWYgKChkZXBvdC5yb3cuY29uc2lzdGlkbz09bnVsbCAgJiYgZGVwb3Qucm93LnJlYSE9bnVsbCkgfHwgZGVwb3Qucm93Lm1vZGlmaWNhZG8hPW51bGwgJiYgZGVwb3Qucm93LmNvbnNpc3RpZG8hPW51bGwgJiYgZGVwb3Qucm93Lm1vZGlmaWNhZG8gPmRlcG90LnJvdy5jb25zaXN0aWRvKXtcclxuICAgICAgICAgICAgLy8gICAgYm90b24uc3R5bGUuYmFja2dyb3VuZENvbG9yPScjOENGJ1xyXG4gICAgICAgICAgICAvL31cclxuICAgICAgICB9ICAgICAgICBcclxuICAgIH07XHJcbn1cclxuXHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5jb25zaXN0aXIgPSBib3RvbkNsaWVudFNpZGVFbkdyaWxsYSh7XHJcbiAgICBub21icmVCb3RvbjogJ2NvbnNpc3RpcicsXHJcbiAgICBsbGFtYWRhOiBmdW5jdGlvbiAoZGVwb3Q6IG15T3duLkRlcG90KSB7XHJcbiAgICAgICAgdmFyIG15UmVhRmllbGROYW1lID0gZGVwb3QubWFuYWdlci5kZWYudGFibGVOYW1lPT1cInRlbVwiPydyZWEnOid1bHRfcmVhJztcclxuICAgICAgICB2YXIgZmlsdHJvUmVhPWNvbnNpc3Rpcl9maWx0cm8oZGVwb3Qucm93LnRhcmVhLCBkZXBvdC5yb3dbbXlSZWFGaWVsZE5hbWVdLCBkZXBvdC5yb3cucmVhKVxyXG4gICAgICAgIHJldHVybiBmaWx0cm9SZWE/IG15T3duLmFqYXguY29uc2lzdGlyX2VuY3Vlc3RhKHtcclxuICAgICAgICAgICAgb3BlcmF0aXZvOiBkZXBvdC5yb3cub3BlcmF0aXZvLFxyXG4gICAgICAgICAgICBpZF9jYXNvOiBkZXBvdC5yb3cuZW5jXHJcbiAgICAgICAgfSk6IGFsZXJ0UHJvbWlzZSgnTGEgZW5jdWVzdGEgZGViZSB0ZW5lciBkYXRvIGVuIHJlYSBwYXJhIHBvZGVyIGNvbnNpc3RpcmxhLicpO1xyXG4gICAgfVxyXG59KTtcclxuXHJcbm15T3duLndTY3JlZW5zLmRlbW89YXN5bmMgZnVuY3Rpb24oX2FkZHJQYXJhbXMpe1xyXG4gICAgLy8gQHRzLWlnbm9yZSBkZXNwbGVnYXJGb3JtdWxhcmlvQWN0dWFsIGdsb2JhbFxyXG4gICAgd2luZG93LmRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwoe21vZG9EZW1vOnRydWV9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gYXJyYXlGbGF0PFQ+KGFycmF5czpUW11bXSk6VFtde1xyXG4gICAgcmV0dXJuIChbXSBhcyBUW10pLmNvbmNhdC5hcHBseShbXSwgYXJyYXlzKTtcclxufVxyXG4iXX0=
549
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsMkNBQWdDO0lBQ2hDLG1FQUE2RDtJQUk3RCxrQ0FBa0M7SUFDbEMscUVBQW9GO0lBQ3BGLG1FQUFrSjtJQUtsSixrQkFBa0I7SUFFbEIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzNCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQztJQUM3QixJQUFJLGlCQUFpQixHQUFjLElBQUksQ0FBQztJQUV4QyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQVEsRUFBRTtRQUNwQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDZixJQUFHO1lBQ0MsaUJBQWlCLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN2RDtRQUFBLE9BQU0sR0FBRyxFQUFDO1lBQ1AsaUJBQWlCLEdBQUMsSUFBSSxDQUFDO1NBQzFCO1FBQ0QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEdBQUM7WUFDMUIsVUFBVSxFQUFDO2dCQUNQLEVBQUMsSUFBSSxFQUFDLFdBQVcsRUFBRyxRQUFRLEVBQUMsTUFBTSxFQUFFLFlBQVksRUFBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUMsWUFBWSxFQUFDO2dCQUM3RixFQUFDLElBQUksRUFBQyxPQUFPLEVBQU8sUUFBUSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUM7Z0JBQ3RGLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBUyxRQUFRLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBQyxNQUFNLEVBQUM7YUFDL0Q7WUFDRCxVQUFVLEVBQUMsSUFBSTtZQUNmLFVBQVUsRUFBQyxDQUFPLE1BQU0sRUFBQyxFQUFFOztnQkFDdkIs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QUFJLFNBQVMsR0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDekYsT0FBTyxTQUFTLENBQUEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7Z0JBQzVDLFNBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVM7Z0JBQzlCLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUc7YUFDekIsQ0FBQyxDQUFBLENBQUMsQ0FBQyxZQUFZLENBQUMsNERBQTRELENBQUMsQ0FBQztRQUNuRixDQUFDO0tBQ0osQ0FBQyxDQUFDO0lBRUgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUMsVUFBZSxXQUFXOztZQUMxQyw4Q0FBOEM7WUFDOUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEVBQUMsUUFBUSxFQUFDLElBQUksRUFBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztLQUFBLENBQUE7SUFFRCxTQUFTLFNBQVMsQ0FBSSxNQUFZO1FBQzlCLE9BQVEsRUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2h0bWx9IGZyb20gXCJqcy10by1odG1sXCI7XHJcbmltcG9ydCB7dHJhZXJFc3RydWN0dXJhfSBmcm9tIFwiLi4vdW5sb2dnZWQvcmVkdXgtZm9ybXVsYXJpb1wiO1xyXG5pbXBvcnQgeyBDYXNvU3RhdGUsICBcclxuICAgIElkRm9ybXVsYXJpbywgRGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMsIElkRW5jLCBJZE9wZXJhdGl2bywgSWRUYXJlYSwgRXN0YWRvQWNjaW9uLCBEaXJlY2Npb25BY2Npb24sXHJcbn0gZnJvbSBcIi4uL3VubG9nZ2VkL3RpcG9zXCI7XHJcbmltcG9ydCAqIGFzIGxpa2VBciBmcm9tIFwibGlrZS1hclwiO1xyXG5pbXBvcnQge2dldEVzdHJ1Y3R1cmEsIHNldFBlcnNpc3RpckRhdG9zQnlQYXNzfSBmcm9tIFwiLi4vdW5sb2dnZWQvYnlwYXNzLWZvcm11bGFyaW9cIlxyXG5pbXBvcnQge0JBQ0tVUFMsIGNhcmdhckVzdHJ1Y3R1cmEsIGNhcmdhckhvamFEZVJ1dGEsIEdMT1ZBUl9EQVRPU0JZUEFTUywgR0xPVkFSX0VTVFJVQ1RVUkEsIEdMT1ZBUl9NT0RPQllQQVNTfSBmcm9tIFwiLi4vdW5sb2dnZWQvYWJyaXItZm9ybXVsYXJpb1wiXHJcbmltcG9ydCB7IE9wZXJhdGl2byB9IGZyb20gXCJtZXRhLWVuY1wiO1xyXG5pbXBvcnQge3NsZWVwLCBjb2FsZXNjZX0gZnJvbSBcImJlc3QtZ2xvYmFsc1wiO1xyXG5cclxuXHJcbi8vVE9ETyBHRU5FUkFMSVpBUlxyXG5cclxuY29uc3QgQUJSSVJfVEFCID0gXCJfYWJyaXJcIjtcclxuY29uc3QgVEFSRUFfREVGQVVMVCA9ICdlbmN1JztcclxudmFyIE9QRVJBVElWT19ERUZBVUxUOnN0cmluZ3xudWxsPSBudWxsO1xyXG5cclxubXlPd24uYXV0b1NldHVwRnVuY3Rpb25zLnB1c2goYXN5bmMgKCk9PntcclxuICAgIHZhciBteSA9IG15T3duOyAgICBcclxuICAgIHRyeXtcclxuICAgICAgICBPUEVSQVRJVk9fREVGQVVMVCA9IGF3YWl0IG15LmFqYXgub3BlcmF0aXZvX2dldCh7fSk7XHJcbiAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICBPUEVSQVRJVk9fREVGQVVMVD1udWxsO1xyXG4gICAgfVxyXG4gICAgbXlPd24ud1NjcmVlbnMuYWJyaXJfZW5jdWVzdGE9e1xyXG4gICAgICAgIHBhcmFtZXRlcnM6W1xyXG4gICAgICAgICAgICB7bmFtZTonb3BlcmF0aXZvJyAsIHR5cGVOYW1lOid0ZXh0JywgZGVmYXVsdFZhbHVlOk9QRVJBVElWT19ERUZBVUxULCByZWZlcmVuY2VzOidvcGVyYXRpdm9zJ30sXHJcbiAgICAgICAgICAgIHtuYW1lOid0YXJlYScgICAgICwgdHlwZU5hbWU6J3RleHQnLCBkZWZhdWx0VmFsdWU6VEFSRUFfREVGQVVMVCwgcmVmZXJlbmNlczogJ3RhcmVhcyd9LFxyXG4gICAgICAgICAgICB7bmFtZTonZW5jJyAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJywgZGVmYXVsdFZhbHVlOjEzMDAzMX1cclxuICAgICAgICBdLFxyXG4gICAgICAgIGF1dG9wcm9jZWQ6dHJ1ZSxcclxuICAgICAgICBtYWluQWN0aW9uOmFzeW5jIChwYXJhbXMpPT57XHJcbiAgICAgICAgICAgIC8vIGFudGVzOiBhYnJpckRpcmVjdG9cclxuICAgICAgICAgICAgdmFyIHtvcGVyYXRpdm8sIGVuYywgdGFyZWF9ID0gcGFyYW1zO1xyXG4gICAgICAgICAgICB2YXIgZXN0cnVjdHVyYSA9IGdldEVzdHJ1Y3R1cmEoKTtcclxuICAgICAgICAgICAgdmFyIGNhcmdhID0gYXdhaXQgbXkuYWpheC5kbV9mb3Jwa3JhaXpfY2FyZ2FyKHtvcGVyYXRpdm8sIHZpdmllbmRhOmVuYywgdGFyZWF9KSBhcyBEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcztcclxuICAgICAgICAgICAgaWYoIWVzdHJ1Y3R1cmEgfHwgKGVzdHJ1Y3R1cmEudGltZXN0YW1wPz8wKSA8IGNhcmdhLnRpbWVzdGFtcEVzdHJ1Y3R1cmEhIHx8IGVzdHJ1Y3R1cmEub3BlcmF0aXZvICE9IG9wZXJhdGl2byB8fCBteS5jb25maWcuY29uZmlnLmRldmVsKXtcclxuICAgICAgICAgICAgICAgIGVzdHJ1Y3R1cmEgPSBhd2FpdCB0cmFlckVzdHJ1Y3R1cmEoe29wZXJhdGl2b30pXHJcbiAgICAgICAgICAgICAgICBjYXJnYXJFc3RydWN0dXJhKGVzdHJ1Y3R1cmEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB2YXIgc3RhdGU6Q2Fzb1N0YXRlID0ge31cclxuICAgICAgICAgICAgaW5pY2lhbGl6YXJTdGF0ZShzdGF0ZSk7XHJcbiAgICAgICAgICAgIHZhciBmb3JQa1JhaXogPSB7Zm9ybXVsYXJpbzpjYXJnYS5pbmZvcm1hY2lvbkhkcltlbmMgYXMgSWRFbmNdLnRhcmVhLm1haW5fZm9ybSwgdml2aWVuZGE6ZW5jfTtcclxuICAgICAgICAgICAgc2V0UGVyc2lzdGlyRGF0b3NCeVBhc3MoXHJcbiAgICAgICAgICAgICAgICBhc3luYyBmdW5jdGlvbiBwZXJzaXN0aXJEYXRvc0J5UGFzc0VuQmFzZURlRGF0b3MocGVyc2lzdGVudGVzOkRhdG9zQnlQYXNzUGVyc2lzdGlibGVzKXtcclxuICAgICAgICAgICAgICAgICAgICBpZihwZXJzaXN0ZW50ZXMuc29sb0xlY3R1cmEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFc3TDoSBpbnRlbnRhbmRvIG1vZGlmaWNhciB1bmEgZW5jdWVzdGEgYWJpZXJ0YSBjb21vIHNvbG8gbGVjdHVyYSwgbm8gc2UgZ3VhcmRhcm9uIGxvcyBjYW1iaW9zXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IG15LmFqYXguZG1fZm9ycGtyYWl6X2Rlc2Nhcmdhcih7b3BlcmF0aXZvLCBwZXJzaXN0ZW50ZXN9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBpZighY2FyZ2EucmVzcHVlc3Rhcy52aXZpZW5kYXNbZm9yUGtSYWl6LnZpdmllbmRhIV0pe1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzZSBlbmN1ZW50cmEgbGEgdml2aWVuZGEgJHtmb3JQa1JhaXoudml2aWVuZGEhfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhcmdhckhvamFEZVJ1dGEoey4uLmNhcmdhLCBtb2RvQWxtYWNlbmFtaWVudG86J3Nlc3Npb24nfSk7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgZGVzcGxlZ2FyRm9ybXVsYXJpb0FjdHVhbCh7b3BlcmF0aXZvLCBtb2RvRGVtbzpmYWxzZSwgZm9yUGtSYWl6fSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIG15T3duLndTY3JlZW5zLm9idGVuZXJfdGVsZWZvbm89e1xyXG4gICAgICAgIHBhcmFtZXRlcnM6W10sXHJcbiAgICAgICAgYXV0b3Byb2NlZDp0cnVlLFxyXG4gICAgICAgIG1haW5BY3Rpb246YXN5bmMgKF9wYXJhbXMpPT57XHJcbiAgICAgICAgICAgIC8vIGFudGVzOiBhYnJpckRpcmVjdG9cclxuICAgICAgICAgICAgdmFyIHtvcGVyYXRpdm8sIHRhcmVhfSA9IHtvcGVyYXRpdm86IE9QRVJBVElWT19ERUZBVUxULCB0YXJlYTogVEFSRUFfREVGQVVMVH07XHJcbiAgICAgICAgICAgIGxldCBlbmMgPSBwYXJzZUludChhd2FpdCBteS5hamF4LmdldF9yYW5kb21fZnJlZV9jYXNlKHtvcGVyYXRpdm99KSk7IFxyXG4gICAgICAgICAgICBhd2FpdCBteU93bi53U2NyZWVucy5hYnJpcl9lbmN1ZXN0YS5tYWluQWN0aW9uKHtvcGVyYXRpdm8sIGVuYywgdGFyZWF9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgbXlPd24ud1NjcmVlbnMuY29uc2lzdGlyX2VuY3Vlc3RhPXtcclxuICAgICAgICBwYXJhbWV0ZXJzOltcclxuICAgICAgICAgICAge25hbWU6J29wZXJhdGl2bycgLCB0eXBlTmFtZTondGV4dCcsIGRlZmF1bHRWYWx1ZTpPUEVSQVRJVk9fREVGQVVMVCwgcmVmZXJlbmNlczonb3BlcmF0aXZvcyd9LFxyXG4gICAgICAgICAgICB7bmFtZTondGFyZWEnICAgICAsIHR5cGVOYW1lOid0ZXh0J30sXHJcbiAgICAgICAgICAgIHtuYW1lOidlbmMnICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInfVxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgYXV0b3Byb2NlZDp0cnVlLFxyXG4gICAgICAgIG1haW5BY3Rpb246YXN5bmMgKHBhcmFtcyk9PntcclxuICAgICAgICAgICAgdmFyIHtvcGVyYXRpdm8sIHRhcmVhLCBlbmMgfSA9IHBhcmFtcztcclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IG15T3duLmFqYXguY29uc2lzdGlyX2VuY3Vlc3RhKHtcclxuICAgICAgICAgICAgICAgIG9wZXJhdGl2bzogb3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgaWRfY2FzbzogZW5jXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZihyZXN1bHQub2spe1xyXG4gICAgICAgICAgICAgICAgdmFyIGZpeGVkRmllbGRzID0gW107XHJcbiAgICAgICAgICAgICAgICBmaXhlZEZpZWxkcy5wdXNoKHtmaWVsZE5hbWU6ICdvcGVyYXRpdm8nLCB2YWx1ZTogb3BlcmF0aXZvfSk7XHJcbiAgICAgICAgICAgICAgICBmaXhlZEZpZWxkcy5wdXNoKHtmaWVsZE5hbWU6ICd2aXZpZW5kYScsIHZhbHVlOiBlbmN9KTtcclxuICAgICAgICAgICAgICAgIHZhciBtYWluTGF5b3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW5fbGF5b3V0JykhO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRpdkdyaWxsYSA9IGh0bWwuZGl2KHtpZDonaW5jb25zaXN0ZW5jaWFzJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgbWFpbkxheW91dC5pbnNlcnRCZWZvcmUoZGl2R3JpbGxhLCBtYWluTGF5b3V0LmZpcnN0Q2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgbWFpbkxheW91dC5pbnNlcnRCZWZvcmUoXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXJCb3RvblZlckFicmlyRW5jdWVzdGEoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGl2byxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZWEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBpciBhIGVuY3Vlc3RhICR7ZW5jfWBcclxuICAgICAgICAgICAgICAgICAgICApLCBcclxuICAgICAgICAgICAgICAgICAgICBtYWluTGF5b3V0LmZpcnN0Q2hpbGRcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBteS50YWJsZUdyaWQoXCJpbmNvbnNpc3RlbmNpYXNcIiwgZGl2R3JpbGxhLHt0YWJsZURlZjp7fSxmaXhlZEZpZWxkczogZml4ZWRGaWVsZHN9KTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KTtcclxuXHJcblxyXG4vL3F1aXRhIGJvb3RzdHJhcCBkZWwgaGVhZCBwYXJhIHF1ZSBubyByb21wYSBsb3MgZXN0aWxvcyBkZSBCRVBsdXMgKHNvbG8gc2UgdXNhIGJvb3RzdHJhcCBlbiBlbCBmb3JtKVxyXG52YXIgbGlua05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaHJlZj1cImNzcy9ib290c3RyYXAubWluLmNzc1wiXScpO1xyXG5saW5rTm9kZVswXT8ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQobGlua05vZGVbMF0pO1xyXG5cclxuZnVuY3Rpb24gY29uc2lzdGlyX2ZpbHRybyh0YXJlYSwgcmVhX3RlbSwgcmVhKXtcclxuICAgIHJldHVybiB0YXJlYT9yZWFfdGVtOnJlYTtcclxufTtcclxuXHJcbnZhciB0YXJlYXM6YW55ID0gbnVsbDtcclxuXHJcbmZ1bmN0aW9uIGh0bWxOdW1lcm8obnVtOm51bWJlcil7XHJcbiAgICByZXR1cm4gaHRtbC5zcGFuKHtjbGFzczonbnVtZXJvJ30sJycrKG51bT8/JycpKVxyXG59XHJcblxyXG52YXIgcGVyc2lzdGlyRW5NZW1vcmlhID0gYXN5bmMgKHBlcnNpc3RlbnRlczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcykgPT4ge1xyXG4gICAgdmFyIHttb2RvQWxtYWNlbmFtaWVudG99ID0gcGVyc2lzdGVudGVzXHJcbiAgICAgICAgaWYobW9kb0FsbWFjZW5hbWllbnRvPT0nbG9jYWwnKXtcclxuICAgICAgICAgICAgbXkuc2V0TG9jYWxWYXIoR0xPVkFSX0RBVE9TQllQQVNTLCBwZXJzaXN0ZW50ZXMpXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIG15LnNldFNlc3Npb25WYXIoR0xPVkFSX0RBVE9TQllQQVNTLCBwZXJzaXN0ZW50ZXMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG15LnNldFNlc3Npb25WYXIoR0xPVkFSX01PRE9CWVBBU1MsIG1vZG9BbG1hY2VuYW1pZW50bylcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gc2luY3Jvbml6YXJEYXRvcyhwZXJzaXN0ZW50ZXM6RGF0b3NCeVBhc3NQZXJzaXN0aWJsZXN8bnVsbCl7XHJcbiAgICB2YXIgZGF0b3MgPSBhd2FpdCBteS5hamF4LmRtX3NpbmNyb25pemFyKHtwZXJzaXN0ZW50ZXN9KTtcclxuICAgIHZhciBvcGVyYXRpdm8gPSBkYXRvcy5vcGVyYXRpdm87XHJcbiAgICBwZXJzaXN0aXJFbk1lbW9yaWEoey4uLmRhdG9zLCBtb2RvQWxtYWNlbmFtaWVudG86J2xvY2FsJ30pO1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmEgPSBhd2FpdCB0cmFlckVzdHJ1Y3R1cmEoe29wZXJhdGl2b30pXHJcbiAgICBteS5zZXRMb2NhbFZhcihHTE9WQVJfRVNUUlVDVFVSQSwgZXN0cnVjdHVyYSk7XHJcbiAgICBteS5yZW1vdmVMb2NhbFZhcihCQUNLVVBTKTtcclxuICAgIHJldHVybiBkYXRvcztcclxufVxyXG5cclxuXHJcblxyXG52YXIgbW9zdHJhckluZm9Mb2NhbCA9IChkaXZBdmlzb1NpbmNybzpIVE1MRGl2RWxlbWVudCwgdGl0dWxvOnN0cmluZywgbnJvU2luY3JvOm51bWJlcnxudWxsLCBtb3N0cmFyTGlua0hkcjogYm9vbGVhbik9PntcclxuICAgIGxldCBkYXRvc0J5UGFzcyA9IG15LmdldExvY2FsVmFyKEdMT1ZBUl9EQVRPU0JZUEFTUyk7XHJcbiAgICBpZihkYXRvc0J5UGFzcyl7XHJcbiAgICAgICAgZGl2QXZpc29TaW5jcm8uYXBwZW5kKGh0bWwuZGl2KHtpZDonYXZpc28tc2luY3JvJ30sIFtcclxuICAgICAgICAgICAgbnJvU2luY3JvP2h0bWwucChbXCJOw7ptZXJvIGRlIHNpbmNyb25pemFjacOzbjogXCIsIGh0bWwuYihcIlwiK25yb1NpbmNyby50b1N0cmluZygpKV0pOm51bGwsXHJcbiAgICAgICAgICAgIGh0bWwuaDQodGl0dWxvKSxcclxuICAgICAgICAgICAgaHRtbC5wKFtodG1sTnVtZXJvKGxpa2VBcihkYXRvc0J5UGFzcy5jYXJnYXMpLmFycmF5KCkubGVuZ3RoKSwnIGFyZWFzOiAnLGxpa2VBcihkYXRvc0J5UGFzcy5jYXJnYXMpLmtleXMoKS5qb2luKCcsICcpXSksXHJcbiAgICAgICAgICAgIGh0bWwucChbaHRtbE51bWVybyhsaWtlQXIoZGF0b3NCeVBhc3MucmVzcHVlc3Rhcy52aXZpZW5kYXMpLmFycmF5KCkubGVuZ3RoKSwnIHZpdmllbmRhcyddKSxcclxuICAgICAgICAgICAgbW9zdHJhckxpbmtIZHI/aHRtbC5hKHtocmVmOicuL2NhbXBvJ30sW2h0bWwuYignSVIgQSBMQSBIT0pBIERFIFJVVEEnKV0pOm51bGxcclxuICAgICAgICBdKS5jcmVhdGUoKSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgICBkaXZBdmlzb1NpbmNyby5hcHBlbmRDaGlsZChodG1sLmRpdih7Y2xhc3M6J2F2aXNvJ30sW1xyXG4gICAgICAgICAgICBodG1sLmg0KCdTaXN0ZW1hIHZhY8OtbycpLFxyXG4gICAgICAgICAgICBodG1sLnAoJ05vIGhheSBpbmZvcm1hY2nDs24gZGUgZm9ybXVsYXJpb3MnKSxcclxuICAgICAgICAgICAgaHRtbC5wKCdObyBoYXkgaW5mb3JtYWNpw7NuIGRlIHZpdmllbmRhcycpXHJcbiAgICAgICAgXSkuY3JlYXRlKCkpO1xyXG4gICAgfVxyXG59XHJcbnZhciBwcm9jZWRlclNpbmNyb0Z1biA9IGFzeW5jIChidXR0b246SFRNTEJ1dHRvbkVsZW1lbnQsIGRpdkF2aXNvU2luY3JvOkhUTUxEaXZFbGVtZW50KT0+e1xyXG4gICAgYnV0dG9uLmRpc2FibGVkPXRydWU7XHJcbiAgICBidXR0b24uY2xhc3NOYW1lPSdkb3dubG9hZC1kbS1idXR0b24nO1xyXG4gICAgZGl2QXZpc29TaW5jcm8uaW5uZXJIVE1MPScnO1xyXG4gICAgdHJ5e1xyXG4gICAgICAgIHZhciBkYXRvc0J5UGFzczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcyA9IG15LmdldExvY2FsVmFyKEdMT1ZBUl9EQVRPU0JZUEFTUyk7XHJcbiAgICAgICAgdmFyIGRhdG9zID0gYXdhaXQgc2luY3Jvbml6YXJEYXRvcyhkYXRvc0J5UGFzcyk7XHJcbiAgICAgICAgbW9zdHJhckluZm9Mb2NhbChkaXZBdmlzb1NpbmNybywgJ2RhdG9zIHJlY2liaWRvcycsIGRhdG9zLm51bV9zaW5jcm8sIHRydWUpXHJcbiAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpXHJcbiAgICAgICAgdGhyb3cgZXJyXHJcbiAgICB9ZmluYWxseXtcclxuICAgICAgICBidXR0b24uZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgYnV0dG9uLmNsYXNzTmFtZT0nZG93bmxvYWQtZG0tYnV0dG9uLWNvbnQnO1xyXG4gICAgfVxyXG59XHJcbm15T3duLndTY3JlZW5zLnNpbmNyb25pemFyX2RtPWFzeW5jIGZ1bmN0aW9uKCl7XHJcbiAgICB2YXIgbWFpbkxheW91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluX2xheW91dCcpITtcclxuICAgIHZhciBwcm9jZWRlckJ1dHRvbiA9IGh0bWwuYnV0dG9uKHtjbGFzczonZG93bmxvYWQtZG0tYnV0dG9uLWNvbnQnfSwncHJvY2VkZXIg4oeSJykuY3JlYXRlKCk7XHJcbiAgICB2YXIgZGl2QXZpc29TaW5jcm86SFRNTERpdkVsZW1lbnQ9aHRtbC5kaXYoKS5jcmVhdGUoKTtcclxuICAgIG1vc3RyYXJJbmZvTG9jYWwobWFpbkxheW91dCBhcyBIVE1MRGl2RWxlbWVudCwgJ2luZm9ybWFjacOzbiBhIHRyYW5zbWl0aXInLCBudWxsLCBmYWxzZSlcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQocHJvY2VkZXJCdXR0b24pO1xyXG4gICAgbWFpbkxheW91dC5hcHBlbmRDaGlsZChkaXZBdmlzb1NpbmNybyk7XHJcbiAgICBwcm9jZWRlckJ1dHRvbi5vbmNsaWNrID0gKCk9PnByb2NlZGVyU2luY3JvRnVuKHByb2NlZGVyQnV0dG9uLCBkaXZBdmlzb1NpbmNybylcclxufTtcclxuXHJcbmZ1bmN0aW9uIGluaWNpYWxpemFyU3RhdGUoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgc3RhdGUubW9kbyA9IHtcclxuICAgICAgICBkZW1vOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIC8vIE9KTyBzdGF0ZS5vcGNpb25lcyBzZSBtb2RpZmljYSBhY8OhIHkgZW4gb3RybyBsYWRvIGNvbiBlc3RlIG1pc21vIGNhcnRlbFxyXG4gICAgc3RhdGUub3BjaW9uZXMgPSB7XHJcbiAgICAgICAgYmllbnZlbmlkbzogdHJ1ZSxcclxuICAgICAgICBmb3JQazogbnVsbCxcclxuICAgICAgICBwaWxhRm9yUGs6IFtdLFxyXG4gICAgICAgIG1vZG9EZXNwbGllZ3VlOiBcInJlbGV2YW1pZW50b1wiLFxyXG4gICAgICAgIG1vZG9EaXJlY3RvOiBmYWxzZSxcclxuICAgICAgICBtb2RvQm9ycmFyUmVzcHVlc3RhOiBudWxsLFxyXG4gICAgICAgIGNvbkNhbXBvT3BjaW9uZXM6IGZhbHNlLFxyXG4gICAgICAgIHNhbHRvQXV0b21hdGljbzogdHJ1ZSxcclxuICAgIH07XHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHN0YXRlLmZlZWRiYWNrUm93VmFsaWRhdG9yID0ge307XHJcbn1cclxuLypcclxuZnVuY3Rpb24gbW9zdHJhckRhdG9zUGVyc29uYShoYXlEYXRvczpib29sZWFuLCBkYXRvczphbnksIGRpdlJlc3VsdDpIVE1MRGl2RWxlbWVudCl7XHJcbiAgICAvL1RPRE86IEVWQUxVQVIgU0kgQ09OVklFTkUgVFJBRVJMTyBERSBMQSBCQVNFXHJcbiAgICB2YXIgdGlwb3NEb2N1bWVudG8gPSBbJ0ROSSBhcmdlbnRpbm8nLCAnRG9jdW1lbnRvIGV4dHJhbmplcm8nLCAnTm8gdGllbmUgZG9jdW1lbnRvJywgJ090cm8nXTtcclxuICAgIHZhciBwYWlzRG9jdW1lbnRvID0gWydVcnVndWF5JywgJ1BhcmFndWF5JywgJ0JyYXNpbCcsICdCb2xpdmlhJywgJ0NoaWxlJywgJ1BlcsO6JywgJ1ZlbmV6dWVsYScsICdPdHJvJ107XHJcbiAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgaGF5RGF0b3M/XHJcbiAgICAgICAgICAgIGh0bWwuZGl2KHtjbGFzczonZGF0b3MtcGVyc29uYS1jYXJnYWRhJ30sW1xyXG4gICAgICAgICAgICAgICAgaHRtbC5oMihcIkRhdG9zIHBlcnNvbmFcIiksXHJcbiAgICAgICAgICAgICAgICBodG1sLmRpdih7Y2xhc3M6J2ZpY2hhLXBlcnNvbmEnfSxbXHJcbiAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoW2h0bWwubGFiZWwoJ0FwZWxsaWRvOiAnKSwgZGF0b3MuYXBlbGxpZG9dKSxcclxuICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbaHRtbC5sYWJlbCgnTm9tYnJlczogJyksIGRhdG9zLm5vbWJyZXNdKSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy50aXBvRG9jdW1lbnRvP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLmxhYmVsKCdUaXBvIGRvY3VtZW50bzogJyksIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlwb3NEb2N1bWVudG9bZGF0b3MudGlwb0RvY3VtZW50by0xXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdG9zLnRpcG9Eb2N1bWVudG89PTQgJiYgZGF0b3MudGlwb0RvY3VtZW50b0VzcGVjaWZpY2Fkbz8nICgnKyBkYXRvcy50aXBvRG9jdW1lbnRvRXNwZWNpZmljYWRvKycpJzonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgICAgICA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLnRpcG9Eb2N1bWVudG89PTIgJiYgZGF0b3MucGFpc0RvY3VtZW50bz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5sYWJlbCgnUGFpczogJyksIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFpc0RvY3VtZW50b1tkYXRvcy5wYWlzRG9jdW1lbnRvLTFdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0b3MucGFpc0RvY3VtZW50bz09OCAmJiBkYXRvcy5wYWlzRG9jdW1lbnRvRXNwZWNpZmljYWRvPycgKCcrZGF0b3MucGFpc0RvY3VtZW50b0VzcGVjaWZpY2FkbysnKSc6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgICAgICAgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy50aXBvRG9jdW1lbnRvIT0zICYmIGRhdG9zLnRpcG9Eb2N1bWVudG8/aHRtbC5kaXYoW2h0bWwubGFiZWwoJ07CuiBEb2N1bWVudG86ICcpLCBkYXRvcy5kb2N1bWVudG9dKTonJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy5jZWx1bGFyP2h0bWwuZGl2KFtodG1sLmxhYmVsKCdDZWwuOiAnKSwgZGF0b3MuY2VsdWxhcl0pOicnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLmVtYWlsP2h0bWwuZGl2KFtodG1sLmxhYmVsKCdFbWFpbDogJyksIGRhdG9zLmVtYWlsXSk6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MudGVsZWZvbm9BbHRlcm5hdGl2bz9odG1sLmRpdihbaHRtbC5sYWJlbCgnVGVsLiBhbHRlcm5hdGl2bzogJyksIGRhdG9zLnRlbGVmb25vQWx0ZXJuYXRpdm9dKTonJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy5vYnNlcnZhY2lvbmVzP2h0bWwuZGl2KFtodG1sLmxhYmVsKCdPYnNlcnZhY2lvbmVzOiAnKSwgZGF0b3Mub2JzZXJ2YWNpb25lc10pOicnLFxyXG4gICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgXSkuY3JlYXRlKClcclxuICAgICAgICA6XHJcbiAgICAgICAgICAgIGh0bWwucChcIk5vIHNlIGVuY29udHLDsyB1bmEgZW5jdWVzdGEgcGFyYSBsYSBldGlxdWV0YSBjYXJnYWRhXCIpLmNyZWF0ZSgpXHJcbiAgICApXHJcbn1cclxuKi9cclxuLypteU93bi5jbGllbnRTaWRlcy50YXJlYXNUZW1Sb3c9e1xyXG4gICAgdXBkYXRlOihkZXBvdCk9PntcclxuICAgICAgICB2YXIgdGFyZWE6J25hZGEnfCdwcmVhc2lnbmFyJ3wnY2FyZ2FyJ3wncmVhbGl6YXInfCd2ZXJpZmljYXInPSduYWRhJztcclxuICAgICAgICB2YXIgcm93PWRlcG90LnJvdztcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgdmFyIGlkcGVyPW15LmNvbmZpZy5pZHBlcjtcclxuICAgICAgICB2YXIgZXNwZXJhcjpib29sZWFuPWZhbHNlO1xyXG4gICAgICAgIGlmKHJvdy5oYWJpbGl0YWRhKXtcclxuICAgICAgICAgICAgaWYoIXJvdy5yZWNlcGNpb25pc3RhICYmICFyb3cuYXNpZ25hZG8pe1xyXG4gICAgICAgICAgICAgICAgdGFyZWE9J3ByZWFzaWduYXInO1xyXG4gICAgICAgICAgICAgICAgZXNwZXJhcj10cnVlO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZighcm93LmFzaWduYWRvIHx8ICFyb3cuZmVjaGFfYXNpZ25hY2lvbiB8fCAhcm93Lm9wZXJhY2lvbil7XHJcbiAgICAgICAgICAgICAgICB0YXJlYT0nY2FyZ2FyJztcclxuICAgICAgICAgICAgICAgIGVzcGVyYXI9cm93LnJlY2VwY2lvbmlzdGEhPWlkcGVyO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZighcm93LnJlYSl7XHJcbiAgICAgICAgICAgICAgICB0YXJlYT0ncmVhbGl6YXInO1xyXG4gICAgICAgICAgICAgICAgZXNwZXJhcj1yb3cuYXNpZ25hZG8hPWlkcGVyO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZighcm93LnZlcmlmaWNhZG8pe1xyXG4gICAgICAgICAgICAgICAgdGFyZWE9J3ZlcmlmaWNhcic7XHJcbiAgICAgICAgICAgICAgICBlc3BlcmFyPXJvdy5yZWNlcGNpb25pc3RhIT1pZHBlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgcG9uZXI9e1xyXG4gICAgICAgICAgICByZWNlcGNpb25pc3RhICAgICAgICAgIDp0YXJlYT09J3ByZWFzaWduYXInICYmIChlc3BlcmFyPydlc3BlcmFyJzonbm9ybWFsJyksXHJcbiAgICAgICAgICAgIGFzaWduYWRvICAgICAgICAgICA6dGFyZWE9PSdjYXJnYXInICAgICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBmZWNoYV9hc2lnbmFjaW9uICAgOnRhcmVhPT0nY2FyZ2FyJyAgICAgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidub3JtYWwnKSxcclxuICAgICAgICAgICAgb3BlcmFjaW9uICAgICAgICAgIDp0YXJlYT09J2NhcmdhcicgICAgICYmIChlc3BlcmFyPydlc3BlcmFyJzonbm9ybWFsJyksXHJcbiAgICAgICAgICAgIGNhcmdhX29ic2VydmFjaW9uZXM6KHRhcmVhPT0nY2FyZ2FyJyAgICAgfHwgdGFyZWE9PSdyZWFsaXphcicgJiYgIXJvdy5jYXJnYWRvICYmICFyb3cucmVhICkgJiYgcm93LnJlY2VwY2lvbmlzdGE9PWlkcGVyICYmICdvcHRhdGl2bycsXHJcbiAgICAgICAgICAgIHZlcmlmaWNhZG8gICAgICAgICA6dGFyZWE9PSd2ZXJpZmljYXInICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBvYnNfdmVyaWZpY2FkbyAgICAgOnRhcmVhPT0ndmVyaWZpY2FyJyAgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidvcHRhdGl2bycpLFxyXG4gICAgICAgIH1cclxuICAgICAgICBsaWtlQXIocG9uZXIpLmZvckVhY2goKHZhbG9yLCBjYW1wbyk9PntcclxuICAgICAgICAgICAgaWYoIXZhbG9yKXtcclxuICAgICAgICAgICAgICAgIGRlcG90LnJvd0NvbnRyb2xzW2NhbXBvXS5yZW1vdmVBdHRyaWJ1dGUoJ215LW1hbmRhdG9yeScpXHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbY2FtcG9dLnNldEF0dHJpYnV0ZSgnbXktbWFuZGF0b3J5Jyx2YWxvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfSxcclxuICAgIHByZXBhcmU6IGZ1bmN0aW9uKCl7fVxyXG59XHJcbiovXHJcblxyXG52YXIgY3JlYXJCb3RvblZlckFicmlyRW5jdWVzdGEgPSAob3BlcmF0aXZvOklkT3BlcmF0aXZvLHRhcmVhOklkVGFyZWEsZW5jdWVzdGE6bnVtYmVyLCBsYWJlbDpzdHJpbmcpPT57XHJcbiAgICB2YXIgdXAgPSB7XHJcbiAgICAgICAgb3BlcmF0aXZvOm9wZXJhdGl2byxcclxuICAgICAgICB0YXJlYTp0YXJlYSxcclxuICAgICAgICBlbmM6ZW5jdWVzdGFcclxuICAgIH1cclxuICAgIGxldCB2ZXIgPSBodG1sLmJ1dHRvbih7fSxsYWJlbCkuY3JlYXRlKCk7XHJcbiAgICB2ZXIub25jbGljayA9ICgpPT4gd2luZG93Lm9wZW4obG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lK215Lm1lbnVTZXBhcmF0b3IrYHc9YWJyaXJfZW5jdWVzdGEmdXA9JHtKU09OLnN0cmluZ2lmeSh1cCl9JmF1dG9wcm9jZWQ9dHJ1ZWAsIEFCUklSX1RBQilcclxuICAgIHJldHVybiB2ZXJcclxufVxyXG5cclxudmFyIGNyZWFyQm90b25lc1ZlckFicmlyVGFyZWFzID0gYXN5bmMgKGRlcG90Om15T3duLkRlcG90LCBmaWVsZE5hbWU6c3RyaW5nLCBsYWJlbDonYWJyaXInfCd2ZXInKT0+e1xyXG4gICAgdGFyZWFzID0gdGFyZWFzP3RhcmVhczooYXdhaXQgbXlPd24uYWpheC50YWJsZV9kYXRhKHt0YWJsZTogYHRhcmVhc2AsIGZpeGVkRmllbGRzOltdfSkpO1xyXG4gICAgdmFyIG1pc1RhcmVhcyA9IHRhcmVhcy5maWx0ZXIoKHRhcmVhKT0+ISF0YXJlYS5tYWluX2Zvcm0gJiYgdGFyZWEub3BlcmF0aXZvPT1kZXBvdC5yb3cub3BlcmF0aXZvICYmIGRlcG90Lm1hbmFnZXIuZGVmLnRhYmxlTmFtZT09J3RlbSc/dHJ1ZTpkZXBvdC5yb3cudGFyZWEgPT0gdGFyZWEudGFyZWEpO1xyXG4gICAgZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXS5pbm5lckhUTUw9Jyc7XHJcbiAgICBtaXNUYXJlYXMuZm9yRWFjaCgodGFyZWE6e3RhcmVhOnN0cmluZywgbm9tYnJlOnN0cmluZywgbWFpbl9mb3JtOklkRm9ybXVsYXJpb30pPT57XHJcbiAgICAgICAgbGV0IGJ1dHRvbkxhYmVsID0gYCR7bGFiZWx9ICR7dGFyZWEudGFyZWF9YDtcclxuICAgICAgICBsZXQgdmVyID0gY3JlYXJCb3RvblZlckFicmlyRW5jdWVzdGEoXHJcbiAgICAgICAgICAgIGRlcG90LnJvdy5vcGVyYXRpdm8gYXMgSWRPcGVyYXRpdm8sXHJcbiAgICAgICAgICAgIHRhcmVhLnRhcmVhIGFzIElkVGFyZWEsIFxyXG4gICAgICAgICAgICBOdW1iZXIoZGVwb3Qucm93LmVuYyksXHJcbiAgICAgICAgICAgIGJ1dHRvbkxhYmVsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB2ZXIuc3R5bGU9J21hcmdpbjowcHggMnB4Oyc7XHJcbiAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXS5hcHBlbmRDaGlsZCh2ZXIpO1xyXG4gICAgfSlcclxufVxyXG5cclxudmFyIGdldEFicmlyT3ZlciA9IChkZXBvdDpteU93bi5EZXBvdCxfZmllbGROYW1lOnN0cmluZyk9PlxyXG4gICAgZGVwb3Qucm93LmNhcmdhZG9fZG0gfHwgIWRlcG90LnJvd1snZXN0YWRvc19fcGVybWl0ZV9lZGl0YXJfZW5jdWVzdGEnXT8ndmVyJzonYWJyaXInXHJcblxyXG5cclxubXlPd24uY2xpZW50U2lkZXMuYWJyaXI9e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICB2YXIgbGFiZWw6J3Zlcid8J2FicmlyJyA9IGdldEFicmlyT3ZlcihkZXBvdCxmaWVsZE5hbWUpO1xyXG4gICAgICAgIGNyZWFyQm90b25lc1ZlckFicmlyVGFyZWFzKGRlcG90LGZpZWxkTmFtZSxsYWJlbCk7IC8vbm8gZXNwZXJvIHByb21lc2EgcG9ycXVlIG5vIGVzIG5lY2VzYXJpb1xyXG4gICAgfVxyXG59O1xyXG5cclxubXlPd24uY2xpZW50U2lkZXMuYWJyaXJSZWNlcGNpb249e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICB2YXIgbGFiZWw6J3Zlcid8J2FicmlyJyA9IGdldEFicmlyT3ZlcihkZXBvdCxmaWVsZE5hbWUpO1xyXG4gICAgICAgIGNyZWFyQm90b25lc1ZlckFicmlyVGFyZWFzKGRlcG90LGZpZWxkTmFtZSxsYWJlbCk7IC8vbm8gZXNwZXJvIHByb21lc2EgcG9ycXVlIG5vIGVzIG5lY2VzYXJpb1xyXG4gICAgfVxyXG59O1xyXG5cclxubXlPd24uY2xpZW50U2lkZXMudmVySWNvbm9Tdmc9e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICBsZXQgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgIHRkLmlubmVySFRNTD0nJztcclxuICAgICAgICBpZihkZXBvdC5yb3cucGF0aF9pY29ub19zdmcpe1xyXG4gICAgICAgICAgICB2YXIgc3ZnID0gaHRtbC5zdmcoe1xyXG4gICAgICAgICAgICAgICAgY2xhc3M6XCJzdmctYWNjaW9uZXNcIlxyXG4gICAgICAgICAgICB9LFtcclxuICAgICAgICAgICAgICAgIGh0bWwucGF0aCh7XHJcbiAgICAgICAgICAgICAgICAgICAgZDpkZXBvdC5yb3cucGF0aF9pY29ub19zdmdcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIF0pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICBzdmcuc2V0QXR0cmlidXRlKFwidmlld0JveFwiLFwiMCAwIDUwIDUwXCIpO1xyXG4gICAgICAgICAgICB0ZC5hcHBlbmRDaGlsZChzdmcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbnZhciBjcmVhclNWRyA9IChwYXRoOnN0cmluZyxwcm9wczphbnkpID0+IHtcclxuICAgIHZhciBzdmcgPSBodG1sLnN2Zyhwcm9wcyB8fCB7fSxbXHJcbiAgICAgICAgaHRtbC5wYXRoKHtcclxuICAgICAgICAgICAgZDpwYXRoXHJcbiAgICAgICAgfSlcclxuICAgIF0pLmNyZWF0ZSgpO1xyXG4gICAgc3ZnLnNldEF0dHJpYnV0ZShcInZpZXdCb3hcIixcIjAgMCA1MCA1MFwiKTtcclxuICAgIHJldHVybiBzdmdcclxufVxyXG52YXIgY3JlYXJCb3RvbkFjY2lvbiA9IChkZXBvdDpteU93bi5EZXBvdCwgYWN0aW9uOkVzdGFkb0FjY2lvbik9PntcclxuICAgIGxldCAgYWNjaW9uU2luR3Vpb25lcyA9IGFjdGlvbi5lYWNjaW9uLnJlcGxhY2UoJ18nLCcgJyk7XHJcbiAgICB2YXIgc3ZnID0gY3JlYXJTVkcoYWN0aW9uLnBhdGhfaWNvbm9fc3ZnLHtjbGFzczpcInN2Zy1hY2Npb25lc1wifSlcclxuICAgIGlmKGFjdGlvbi5kZXNhY3RpdmFfYm90b24pe1xyXG4gICAgICAgIHJldHVybiBodG1sLnNwYW4oe2NsYXNzOmBzaW4tYm90b24tYWNjaW9uYH0sW2FjY2lvblNpbkd1aW9uZXMsIHN2ZyBhcyB1bmtub3duIGFzIEhUTUxFbGVtZW50XSkuY3JlYXRlKClcclxuICAgIH1cclxuICAgIGxldCBidXR0b24gPSBodG1sLmJ1dHRvbih7XHJcbiAgICAgICAgY2xhc3M6YGJvdG9uLWFjY2lvbiBib3Rvbi1hY2Npb24tJHthY3Rpb24uZWFjY2lvbl9kaXJlY2Npb259YFxyXG4gICAgfSxbXHJcbiAgICAgICAgYCR7YWNjaW9uU2luR3Vpb25lc31gLFxyXG4gICAgICAgIC8vQHRzLWlnbm9yZSBzdmcgZXMgaHRtbGVsZW1lbnRcclxuICAgICAgICBhY3Rpb24ucGF0aF9pY29ub19zdmc/c3ZnOm51bGwsXHJcbiAgICBdKS5jcmVhdGUoKTtcclxuICAgIGJ1dHRvbi5vbmNsaWNrID0gKCk9PiB7XHJcbiAgICAgICAgdmFyIGFjdGlvbkZ1biA9IGFzeW5jICgpPT57XHJcbiAgICAgICAgICAgIGJ1dHRvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgICAgICAgICB0cnl7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgbXkuYWpheC5hY2Npb25fdGFyZWFzX3RlbV9lamVjdXRhcih7XHJcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aXZvOiBkZXBvdC5yb3cub3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgICAgIHRhcmVhOiBkZXBvdC5yb3cudGFyZWEsXHJcbiAgICAgICAgICAgICAgICAgICAgZW5jOiBkZXBvdC5yb3cuZW5jLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbmRpY2lvbjogYWN0aW9uLmNvbmRpY2lvbixcclxuICAgICAgICAgICAgICAgICAgICBhY2Npb246IGFjdGlvblxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpXHJcbiAgICAgICAgICAgICAgICB2YXIgZ3JpZD1kZXBvdC5tYW5hZ2VyO1xyXG4gICAgICAgICAgICAgICAgZ3JpZC5yZXRyaWV2ZVJvd0FuZFJlZnJlc2goZGVwb3QpXHJcbiAgICAgICAgICAgICAgICBpZihhY3Rpb24ubm9tYnJlX3dzY3JlZW4pe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vVE9ETyBhY29tb2RhciBlc3RvIGVuIGFsZ3VuIG1vbWVudG9cclxuICAgICAgICAgICAgICAgICAgICBsZXQgcGFyYW1zID0gZGVwb3Qucm93O1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcy5lbmMgPSBOdW1iZXIocGFyYW1zLmVuYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4obG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lK215Lm1lbnVTZXBhcmF0b3IrYHc9JHthY3Rpb24ubm9tYnJlX3dzY3JlZW59JnVwPSR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX0mYXV0b3Byb2NlZD10cnVlYCwgQUJSSVJfVEFCKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgICAgIGFsZXJ0UHJvbWlzZShlcnIubWVzc2FnZSlcclxuICAgICAgICAgICAgICAgIHRocm93IGVyclxyXG4gICAgICAgICAgICB9ZmluYWxseXtcclxuICAgICAgICAgICAgICAgIC8vcmV0cmFzbyBsYSBoYWJpbGl0YWNpw7NuIHBvcnF1ZSBhIHZlY2VzIHRhcmRhIGVuIHJlZGlidWphcnNlIGxhIGJvdG9uZXJhIHkgcHVlZGUgdHJhZXIgcHJvYmxlbWFzIHNpIGRhbiBkb2JsZSBjbGljayBcclxuICAgICAgICAgICAgICAgIC8veWEgcXVlIGVqZWN1dGEgbnVldmFtZW50ZSB1bmEgYWNjacOzbiBxdWUgeWEgc2UgZWplY3V0w7MgKHkgdGVybWluw7MpIGFudGVzXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT5idXR0b24uZGlzYWJsZWQ9ZmFsc2UsMzAwMClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB2YXIgY29uZmlybVByb21pc2VPcHRzOiBEaWFsb2dPcHRpb25zID0ge31cclxuICAgICAgICBpZihhY3Rpb24uY29uZmlybWEpe1xyXG4gICAgICAgICAgICBjb25maXJtUHJvbWlzZU9wdHMuYXNrRm9yTm9SZXBlYXQgPSAnbm8gdm9sdmVyIGEgbW9zdHJhcic7IC8vbXVlc3RyYSBtZW5zYWplIHBvciBkZWZhdWx0IHBlcm8gYW5kYSBpZ3VhbFxyXG4gICAgICAgICAgICB2YXIgYnV0dG9uc0RlZiA9IFtcclxuICAgICAgICAgICAgICAgIHtsYWJlbDonc8OtJywgdmFsdWU6dHJ1ZX0sXHJcbiAgICAgICAgICAgICAgICB7bGFiZWw6J25vJywgdmFsdWU6ZmFsc2V9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgY29uZmlybVByb21pc2UoYGNvbmZpcm1hIGFjY2nDs24gXCIke2FjY2lvblNpbkd1aW9uZXN9XCI/YCwgey4uLmNvbmZpcm1Qcm9taXNlT3B0cywgYnV0dG9uc0RlZn0pLnRoZW4oYWN0aW9uRnVuKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgYWN0aW9uRnVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJ1dHRvblxyXG59XHJcblxyXG52YXIgY3JlYXJCb3RvbmVzQWNjaW9uZXMgPSBhc3luYyAob3B0czp7ZGVwb3Q6bXlPd24uRGVwb3QsIGZpZWxkTmFtZTpzdHJpbmcsIGRpcmVjY2lvbjogRGlyZWNjaW9uQWNjaW9ufSk9PntcclxuICAgIGxldCB7ZGVwb3QsZmllbGROYW1lLGRpcmVjY2lvbn0gPSBvcHRzO1xyXG4gICAgbGV0IHRkID0gZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXTtcclxuICAgIHRkLmlubmVySFRNTD0nJztcclxuICAgIChkZXBvdC5yb3dDb250cm9scy5hY2Npb25lcy5nZXRUeXBlZFZhbHVlKCl8fFtdKVxyXG4gICAgICAgIC5maWx0ZXIoKGFjdGlvbjpFc3RhZG9BY2Npb24pPT5hY3Rpb24uZWFjY2lvbl9kaXJlY2Npb249PWRpcmVjY2lvbilcclxuICAgICAgICAuZm9yRWFjaCgoYWN0aW9uOkVzdGFkb0FjY2lvbik9PnRkLmFwcGVuZENoaWxkKGNyZWFyQm90b25BY2Npb24oZGVwb3QsIGFjdGlvbikpKTtcclxufVxyXG5cclxudmFyIGNyZWFyU3dpdGNoID0gKG9wdHM6e3JvdW5kPzpib29sZWFuLCBkaXNhYmxlZD86Ym9vbGVhbiwgY2hlY2tlZD86Ym9vbGVhbiwgb25DbGlja0Z1bjpGdW5jdGlvbiwgb25FcnJGdW4/OkZ1bmN0aW9ufSk9PntcclxuICAgIHZhciBjaGVja2JveCA9IGh0bWwuaW5wdXQoe3R5cGU6J2NoZWNrYm94JywgY2hlY2tlZDpvcHRzLmNoZWNrZWR9KS5jcmVhdGUoKTtcclxuICAgIGNoZWNrYm94Lm9uY2xpY2sgPSBhc3luYygpPT57XHJcbiAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICBjaGVja2JveC5kaXNhYmxlZD10cnVlO1xyXG4gICAgICAgICAgICBhd2FpdCBvcHRzLm9uQ2xpY2tGdW4oKVxyXG4gICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpXHJcbiAgICAgICAgICAgIHRocm93IGVyclxyXG4gICAgICAgIH1maW5hbGx5e1xyXG4gICAgICAgICAgICBjaGVja2JveC5kaXNhYmxlZD1mYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaHRtbC5sYWJlbCh7Y2xhc3M6J3N3aXRjaCd9LFtcclxuICAgICAgICBjaGVja2JveCxcclxuICAgICAgICBodG1sLnNwYW4oe2NsYXNzOmBzbGlkZXIgJHtvcHRzLnJvdW5kPydyb3VuZCc6Jyd9YH0pLFxyXG4gICAgXSkuY3JlYXRlKCk7XHJcbn1cclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmhhYmlsaXRhcj17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIHZhciB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICAgICAgdGQuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICB0ZC5hcHBlbmRDaGlsZChcclxuICAgICAgICAgICAgY3JlYXJTd2l0Y2goe1xyXG4gICAgICAgICAgICAgICAgcm91bmQ6dHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNoZWNrZWQ6ZGVwb3Qucm93LmhhYmlsaXRhZGEsXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrRnVuOiBhc3luYyAoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IG15LmFqYXguZW5jdWVzdGFfaGFiaWxpdGFyX2Rlc2hhYmlsaXRhcih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGl2bzogZGVwb3Qucm93Lm9wZXJhdGl2byxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW5jOiBkZXBvdC5yb3cuZW5jXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGdyaWQ9ZGVwb3QubWFuYWdlcjtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT5ncmlkLnJldHJpZXZlUm93QW5kUmVmcmVzaChkZXBvdCksMzAwKTsvL3BhcmEgcXVlIHNlIHZlYSBlbCBlZmVjdG9cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59O1xyXG5cclxubXlPd24uY2xpZW50U2lkZXMuYWNjaW9uZXNBdmFuY2U9e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICBjcmVhckJvdG9uZXNBY2Npb25lcyh7ZGVwb3QsZmllbGROYW1lLGRpcmVjY2lvbjonYXZhbmNlJ30pO1xyXG4gICAgfVxyXG59O1xyXG5cclxubXlPd24uY2xpZW50U2lkZXMuYWNjaW9uZXNSZXRyb2Nlc289e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICBjcmVhckJvdG9uZXNBY2Npb25lcyh7ZGVwb3QsZmllbGROYW1lLGRpcmVjY2lvbjoncmV0cm9jZXNvJ30pO1xyXG4gICAgfVxyXG59O1xyXG5cclxubXlPd24uY2xpZW50U2lkZXMuYWNjaW9uZXNCbGFucXVlbz17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIGNyZWFyQm90b25lc0FjY2lvbmVzKHtkZXBvdCxmaWVsZE5hbWUsZGlyZWNjaW9uOidibGFucXVlbyd9KTtcclxuICAgIH1cclxufTtcclxuXHJcbmZ1bmN0aW9uIFxyXG5ib3RvbkNsaWVudFNpZGVFbkdyaWxsYShvcHRzOiB7IG5vbWJyZUJvdG9uOiBzdHJpbmcsIGxsYW1hZGE6IChkZXBvdDogbXlPd24uRGVwb3QpID0+IFByb21pc2U8YW55PiB9KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHByZXBhcmU6IGZ1bmN0aW9uIChkZXBvdDogbXlPd24uRGVwb3QsIGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHZhciB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICAgICAgICAgIHZhciBib3RvbiA9IGh0bWwuYnV0dG9uKG9wdHMubm9tYnJlQm90b24pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICB0ZC5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgICAgICAgICB0ZC5hcHBlbmRDaGlsZChib3Rvbik7XHJcbiAgICAgICAgICAgIHZhciByZXN0YXVyYXJCb3RvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGJvdG9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBib3Rvbi50ZXh0Q29udGVudCA9IG9wdHMubm9tYnJlQm90b247XHJcbiAgICAgICAgICAgICAgICBib3Rvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnJztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYm90b24ub25jbGljayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGJvdG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJvdG9uLnRleHRDb250ZW50ID0gJ3Byb2Nlc2FuZG8uLi4nO1xyXG4gICAgICAgICAgICAgICAgb3B0cy5sbGFtYWRhKGRlcG90KS50aGVuKGFzeW5jIGZ1bmN0aW9uKHJlc3VsdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQgPT09ICdvYmplY3QnICYmICdvaycgaW4gcmVzdWx0KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzdWx0Lm9rKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBncmlkPWRlcG90Lm1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBncmlkLnJldHJpZXZlUm93QW5kUmVmcmVzaChkZXBvdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVwb3QuZGV0YWlsQ29udHJvbHMuaW5jb25zaXN0ZW5jaWFzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBvdC5kZXRhaWxDb250cm9scy5pbmNvbnNpc3RlbmNpYXMuZm9yY2VEaXNwbGF5RGV0YWlsR3JpZCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdG9uLnRleHRDb250ZW50ID0gIHJlc3VsdC5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90b24udGl0bGUgPSByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3Rvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnIzhGOCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJlc3RhdXJhckJvdG9uLCAyNTAwKTtcclxuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBib3Rvbi50ZXh0Q29udGVudCA9ICdlcnJvcic7XHJcbiAgICAgICAgICAgICAgICAgICAgYm90b24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNGRjgnO1xyXG4gICAgICAgICAgICAgICAgICAgIGFsZXJ0UHJvbWlzZShlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vaWYgKChkZXBvdC5yb3cuY29uc2lzdGlkbz09bnVsbCAgJiYgZGVwb3Qucm93LnJlYSE9bnVsbCkgfHwgZGVwb3Qucm93Lm1vZGlmaWNhZG8hPW51bGwgJiYgZGVwb3Qucm93LmNvbnNpc3RpZG8hPW51bGwgJiYgZGVwb3Qucm93Lm1vZGlmaWNhZG8gPmRlcG90LnJvdy5jb25zaXN0aWRvKXtcclxuICAgICAgICAgICAgLy8gICAgYm90b24uc3R5bGUuYmFja2dyb3VuZENvbG9yPScjOENGJ1xyXG4gICAgICAgICAgICAvL31cclxuICAgICAgICB9ICAgICAgICBcclxuICAgIH07XHJcbn1cclxuXHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5jb25zaXN0aXIgPSBib3RvbkNsaWVudFNpZGVFbkdyaWxsYSh7XHJcbiAgICBub21icmVCb3RvbjogJ2NvbnNpc3RpcicsXHJcbiAgICBsbGFtYWRhOiBmdW5jdGlvbiAoZGVwb3Q6IG15T3duLkRlcG90KSB7XHJcbiAgICAgICAgdmFyIG15UmVhRmllbGROYW1lID0gZGVwb3QubWFuYWdlci5kZWYudGFibGVOYW1lPT1cInRlbVwiPydyZWEnOid1bHRfcmVhJztcclxuICAgICAgICB2YXIgZmlsdHJvUmVhPWNvbnNpc3Rpcl9maWx0cm8oZGVwb3Qucm93LnRhcmVhLCBkZXBvdC5yb3dbbXlSZWFGaWVsZE5hbWVdLCBkZXBvdC5yb3cucmVhKVxyXG4gICAgICAgIHJldHVybiBmaWx0cm9SZWE/IG15T3duLmFqYXguY29uc2lzdGlyX2VuY3Vlc3RhKHtcclxuICAgICAgICAgICAgb3BlcmF0aXZvOiBkZXBvdC5yb3cub3BlcmF0aXZvLFxyXG4gICAgICAgICAgICBpZF9jYXNvOiBkZXBvdC5yb3cuZW5jXHJcbiAgICAgICAgfSk6IGFsZXJ0UHJvbWlzZSgnTGEgZW5jdWVzdGEgZGViZSB0ZW5lciBkYXRvIGVuIHJlYSBwYXJhIHBvZGVyIGNvbnNpc3RpcmxhLicpO1xyXG4gICAgfVxyXG59KTtcclxuXHJcbm15T3duLndTY3JlZW5zLmRlbW89YXN5bmMgZnVuY3Rpb24oX2FkZHJQYXJhbXMpe1xyXG4gICAgLy8gQHRzLWlnbm9yZSBkZXNwbGVnYXJGb3JtdWxhcmlvQWN0dWFsIGdsb2JhbFxyXG4gICAgd2luZG93LmRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwoe21vZG9EZW1vOnRydWV9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gYXJyYXlGbGF0PFQ+KGFycmF5czpUW11bXSk6VFtde1xyXG4gICAgcmV0dXJuIChbXSBhcyBUW10pLmNvbmNhdC5hcHBseShbXSwgYXJyYXlzKTtcclxufVxyXG4iXX0=
@@ -284,7 +284,7 @@ export declare const dispatchers: import("redux-typed-reducer").ReturnsTheSameTh
284
284
  export declare function replaceSpecialWords(text: string, nombre: string, apellido: string, resultado: string): string;
285
285
  export declare function gotoSincronizar(): void;
286
286
  export declare function gotoCampo(): void;
287
- export declare function gotoConsistir(operativo: IdOperativo, tarea: IdTarea, encuesta: IdEnc): void;
287
+ export declare function gotoConsistir(operativo: IdOperativo, tarea: IdTarea, enc: IdEnc): void;
288
288
  export declare function getCacheVersion(): any;
289
289
  export declare function traerEstructura(params: {
290
290
  operativo: string;
@@ -208,9 +208,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
208
208
  location.reload();
209
209
  }
210
210
  exports.gotoCampo = gotoCampo;
211
- function gotoConsistir(operativo, tarea, encuesta) {
211
+ function gotoConsistir(operativo, tarea, enc) {
212
212
  // TODO-2023-03: probar con esto:
213
- history.replaceState(null, '', `${location.origin + location.pathname}/../menu#w=consistir_encuesta&up=${JSON4all.toUrl({ operativo, tarea, encuesta })}&autoproced=true`);
213
+ history.replaceState(null, '', `${location.origin + location.pathname}/../menu#w=consistir_encuesta&up=${JSON4all.toUrl({ operativo, tarea, enc })}&autoproced=true`);
214
214
  // history.replaceState(null, '', `${location.origin+location.pathname}/../menu#w=consistir_encuesta&up={"operativo":"${operativo}","tarea":"${tarea}","encuesta":${encuesta}}&autoproced=true`);
215
215
  location.reload();
216
216
  }
@@ -315,4 +315,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
315
315
  }
316
316
  exports.dmTraerDatosFormulario = dmTraerDatosFormulario;
317
317
  });
318
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtZm9ybXVsYXJpby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLGlDQUFvQztJQUNwQyxtQ0FVaUI7SUFDakIsNkRBQW9GO0lBRXBGLGtDQUFrQztJQUNsQyw0Q0FBNEM7SUFDNUMscUNBQXFDO0lBSXJDLElBQUksRUFBRSxHQUFDLEtBQUssQ0FBQztJQUViLE1BQU0sd0JBQXdCLEdBQUUsV0FBVyxDQUFDO0lBRTVDLFNBQVMsVUFBVSxDQUFDLEtBQWdCLEVBQUUsU0FBaUI7UUFDbkQsSUFBSSxVQUFVLEdBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUUsUUFBUSxDQUFDLE1BQU0sSUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRSxLQUFLLENBQUMsaUJBQWlCLGlDQUNoQixVQUFVLEtBQ2IsV0FBVyxFQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBQSxvQkFBWSxFQUFDLEtBQUssQ0FBQyxFQUN4RCxlQUFlLEVBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUN2RCxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQUksUUFBUSxHQUFDO1FBQ1QsZUFBZSxFQUFFLENBQUMsT0FBd0MsRUFBRSxFQUFFLENBQzFELFVBQVMsS0FBZ0I7WUFDckIsdUNBQ08sS0FBSyxLQUNSLFFBQVEsa0NBQ0QsS0FBSyxDQUFDLFFBQVEsS0FDakIsY0FBYyxFQUFDLE9BQU8sQ0FBQyxjQUFjLE9BRTVDO1FBQ0wsQ0FBQztRQUNMLGtCQUFrQixFQUFFLENBQUMsT0FBNEMsRUFBRSxFQUFFLENBQ2pFLFVBQVMsS0FBZ0I7WUFDckIsSUFBSSxLQUFLLEdBQUcsT0FB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QyxDQUFDO3FCQUNsRTtvQkFDRCxJQUFHLFVBQVUsQ0FBQyxlQUFlLEVBQUM7d0JBQzFCLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFFLFVBQVUsQ0FBQyxlQUEwQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLEVBQUUsQ0FBQSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQy9HO29CQUNELE9BQU8sWUFBWSxDQUFDO2dCQUN4QixDQUFDO2FBQUEsQ0FBQTtZQUNELElBQUksU0FBUyxHQUFHLFNBQVMsU0FBUyxDQUFDLEtBQWU7Z0JBQzlDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUE7WUFDRCw0QkFBNEI7WUFDNUIsSUFBSSxZQUFZLEdBQWEsTUFBTSxTQUFTLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFVBQVUsR0FBRyxJQUFBLG1DQUFhLEVBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3pELGdDQUFnQztZQUNoQywrQkFBK0I7WUFDL0Isb0JBQW9CO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUEsbUJBQVcsRUFBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEQsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQ1gsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsd0JBQXdCO1lBQ3hCLHNCQUFzQjtZQUN0QixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0tBQUE7SUE3REQsd0RBNkRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tIFwicmVkdXhcIjtcclxuaW1wb3J0IHsgQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIENhc29TdGF0ZSwgXHJcbiAgICBFc3RhZG9DYXJnYSwgRXN0cnVjdHVyYVJvd1ZhbGlkYXRvciwgXHJcbiAgICBGb3JtdWxhcmlvLCBGb3JQaywgRm9yUGtSYWl6LCBcclxuICAgIElkQ2FyZ2EsIElkRGVzdGlubywgSWRGb3JtdWxhcmlvLCBJZFZhcmlhYmxlLCBJZE9wZXJhdGl2bywgXHJcbiAgICBNb2RvRGVzcGxpZWd1ZSwgXHJcbiAgICBPcGNpb24sXHJcbiAgICB0b1BsYWluRm9yUGssXHJcbiAgICBJZEZpbixcclxuICAgIElkRW5jLFxyXG4gICAgSWRUYXJlYSxcclxufSBmcm9tIFwiLi90aXBvc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVSZWR1Y2VyLCBjcmVhdGVEaXNwYXRjaGVycywgQWN0aW9uc0Zyb20gfSBmcm9tIFwicmVkdXgtdHlwZWQtcmVkdWNlclwiO1xyXG5pbXBvcnQgeyBNb2RvQWxtYWNlbmFtaWVudG8gfSBmcm9tIFwiLi90aXBvc1wiXHJcbmltcG9ydCAqIGFzIGxpa2VBciBmcm9tIFwibGlrZS1hclwiO1xyXG5pbXBvcnQgKiBhcyBiZXN0R2xvYmFscyBmcm9tIFwiYmVzdC1nbG9iYWxzXCI7XHJcbmltcG9ydCAqIGFzIEpTT040YWxsIGZyb20gXCJqc29uNGFsbFwiO1xyXG5cclxuaW1wb3J0IHsgT3BjaW9uIGFzIFJvd1ZhbGlkYXRvck9wY2lvbiB9IGZyb20gXCJyb3ctdmFsaWRhdG9yXCI7XHJcblxyXG52YXIgbXk9bXlPd247XHJcblxyXG5jb25zdCBMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUgPSdoZHItc3RhdGUnO1xyXG5cclxuZnVuY3Rpb24gZm9yUGtUb1VybChmb3JQazpGb3JQa3xudWxsLCBwaWxhRm9yUGs6Rm9yUGtbXSl7XHJcbiAgICB2YXIgYWRkclBhcmFtcz1teU93bi5VcmlTZWFyY2hUb09iamVjdChsb2NhdGlvbi5oYXNofHxsb2NhdGlvbi5zZWFyY2h8fCcnKTtcclxuICAgIG15T3duLnJlcGxhY2VBZGRyUGFyYW1zKHtcclxuICAgICAgICAuLi5hZGRyUGFyYW1zLCBcclxuICAgICAgICBzdGF0ZV9mb3JQazpmb3JQayA9PSBudWxsID8gJ251bGwnIDogdG9QbGFpbkZvclBrKGZvclBrKSwgXHJcbiAgICAgICAgc3RhdGVfcGlsYUZvclBrOnBpbGFGb3JQay5tYXAodG9QbGFpbkZvclBrKS5qb2luKCd8JylcclxuICAgIH0pO1xyXG59XHJcblxyXG52YXIgcmVkdWNlcnM9e1xyXG4gICAgTU9ET19ERVNQTElFR1VFOiAocGF5bG9hZDoge21vZG9EZXNwbGllZ3VlOk1vZG9EZXNwbGllZ3VlfSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOntcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBtb2RvRGVzcGxpZWd1ZTpwYXlsb2FkLm1vZG9EZXNwbGllZ3VlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgQ0FNQklBUl9GT1JNVUxBUklPOiAocGF5bG9hZDoge2ZvclBrOkZvclBrLCBhcGlsYXJWdWVsdGE6Ym9vbGVhbn0pID0+IFxyXG4gICAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICB2YXIgZm9yUGsgPSBwYXlsb2FkLmZvclBrO1xyXG4gICAgICAgICAgICB2YXIgcGlsYUZvclBrID0gcGF5bG9hZC5hcGlsYXJWdWVsdGE/KFxyXG4gICAgICAgICAgICAgICAgc3RhdGUub3BjaW9uZXMuZm9yUGs9PW51bGw/W106Wy4uLnN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQaywgc3RhdGUub3BjaW9uZXMuZm9yUGtdXHJcbiAgICAgICAgICAgICk6c3RhdGUub3BjaW9uZXMucGlsYUZvclBrO1xyXG4gICAgICAgICAgICBmb3JQa1RvVXJsKGZvclBrLCBwaWxhRm9yUGspO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczp7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgVk9MVkVSX0RFX0ZPUk1VTEFSSU86ICh7bWFnbml0dWRSZXRyb2Nlc299OiB7bWFnbml0dWRSZXRyb2Nlc286bnVtYmVyfSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHZhciBmb3JQayA9IHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQa1tzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsubGVuZ3RoLW1hZ25pdHVkUmV0cm9jZXNvXXx8bnVsbDtcclxuICAgICAgICAgICAgdmFyIHBpbGFGb3JQayA9IHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQay5zbGljZSgwLHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQay5sZW5ndGgtbWFnbml0dWRSZXRyb2Nlc28pO1xyXG4gICAgICAgICAgICBmb3JQa1RvVXJsKGZvclBrLCBwaWxhRm9yUGspO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczp7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgRVNUQURPX0NBUkdBOiAocGF5bG9hZDoge2lkQ2FyZ2E6SWRDYXJnYSwgZXN0YWRvX2NhcmdhOkVzdGFkb0NhcmdhfSkgPT5cclxuICAgICAgICBmdW5jdGlvbihzdGF0ZTogQ2Fzb1N0YXRlKXtcclxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlXHJcbiAgICAgICAgICAgIC8vREVTQUNUSVZBRE9cclxuICAgICAgICAgICAgLy9yZXR1cm4ge1xyXG4gICAgICAgICAgICAvLyAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgLy8gICAgZGF0b3M6e1xyXG4gICAgICAgICAgICAvLyAgICAgICAgLi4uc3RhdGUuZGF0b3MsXHJcbiAgICAgICAgICAgIC8vICAgICAgICBjYXJnYXM6e1xyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgIC4uLnN0YXRlLmRhdG9zLmNhcmdhcyxcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICBbcGF5bG9hZC5pZENhcmdhXToge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAuLi5zdGF0ZS5kYXRvcy5jYXJnYXNbcGF5bG9hZC5pZENhcmdhXSxcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgZXN0YWRvX2NhcmdhOiBwYXlsb2FkLmVzdGFkb19jYXJnYVxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gICAgICAgIH1cclxuICAgICAgICAgICAgLy8gICAgfVxyXG4gICAgICAgICAgICAvL31cclxuICAgICAgICB9LFxyXG4gICAgVk9MVkVSX0hEUjogKF9wYXlsb2FkOiB7fSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHZhciBmb3JQayA9IG51bGw7XHJcbiAgICAgICAgICAgIHZhciBwaWxhRm9yUGs6Rm9yUGtbXSA9IFtdO1xyXG4gICAgICAgICAgICBmb3JQa1RvVXJsKGZvclBrLCBwaWxhRm9yUGspO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczp7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgU0VUX09QQ0lPTjogKHBheWxvYWQ6IHtvcGNpb246a2V5b2YgQ2Fzb1N0YXRlWydvcGNpb25lcyddLCB2YWxvcjphbnl9KSA9PiBcclxuICAgICAgICBmdW5jdGlvbihzdGF0ZTogQ2Fzb1N0YXRlKXtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6e1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIFtwYXlsb2FkLm9wY2lvbl06IHBheWxvYWQudmFsb3JcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBSRVNFVF9PUENJT05FUzogKF9wYXlsb2FkOiB7fSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOntcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQazogbnVsbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFJFSU5JQ0lBUl9ERU1POiAoX3BheWxvYWQ6IHt9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICBpZighc3RhdGUubW9kby5kZW1vKSByZXR1cm4gc3RhdGU7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgY29waW8gbG9zIGRhdG9zIGluaWNpYWxlc1xyXG4gICAgICAgICAgICAgICAgZGF0b3M6YmVzdEdsb2JhbHMuZGVlcENvcHkoc3RhdGUubW9kby5kZW1vKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIENPTkZJUk1BUl9CT1JSQVJfUkVTUFVFU1RBOiAocGF5bG9hZDoge2ZvclBrOkZvclBrLCB2YXJpYWJsZTpJZFZhcmlhYmxlfG51bGx9KSA9PiBcclxuICAgICAgICBmdW5jdGlvbihzdGF0ZTogQ2Fzb1N0YXRlKXtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6e1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrOnBheWxvYWQuZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kb0JvcnJhclJlc3B1ZXN0YTogcGF5bG9hZC52YXJpYWJsZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQWN0aW9uRm9ybXVsYXJpb1N0YXRlID0gQWN0aW9uc0Zyb208dHlwZW9mIHJlZHVjZXJzPjtcclxuLyogRklOIEFDQ0lPTkVTICovXHJcblxyXG5leHBvcnQgY29uc3QgZGlzcGF0Y2hlcnMgPSBjcmVhdGVEaXNwYXRjaGVycyhyZWR1Y2Vycyk7XHJcblxyXG5pbnRlcmZhY2UgSURhdGFTZXBhcmFkYTxUIGV4dGVuZHMge3RpcG9jOnN0cmluZ30+IHtcclxuICAgIGRhdGE6VCxcclxuICAgIGNoaWxkczpJRGF0YVNlcGFyYWRhPFQ+W11cclxufVxyXG5cclxudHlwZSBJRGF0YUNvbkNhc2lsbGVyb3M8VD4gPSBUICYge1xyXG4gICAgY2FzaWxsZXJvczpyZWFkb25seSBJRGF0YUNvbkNhc2lsbGVyb3M8VD5bXVxyXG59XHJcblxyXG5jb25zdCBjYXNpbGxlcm9WYWNpbz17c2FsdG86bnVsbCwgZGVzcGxpZWd1ZTpudWxsLCBhY2xhcmFjaW9uOm51bGwsIHZlcl9pZDpudWxsLCBjYXNpbGxlcm9zOltdLCBsZWVyOm51bGwsXHJcbiAgICBkZXNwbGllZ3VlRW5jYWJlemFkbzpudWxsLCBkZXNwbGllZ3VlQ29udGVuaWRvOm51bGwsIGRlc3BsaWVndWVPY3VsdGE6bnVsbCwgZGVzcGxpZWd1ZVRpcG9JbnB1dDpudWxsXHJcbn1cclxuXHJcbmNvbnN0IG9wY2lvbmVzU2lObzogT3BjaW9uW10gPSBbXHJcbiAgICB7Li4uY2FzaWxsZXJvVmFjaW8sIGNhc2lsbGVybzoxLCB0aXBvYzonTycsIG5vbWJyZTonU8OtJ30sXHJcbiAgICB7Li4uY2FzaWxsZXJvVmFjaW8sIGNhc2lsbGVybzoyLCB0aXBvYzonTycsIG5vbWJyZTonTm8nfSxcclxuXVxyXG5cclxudHlwZSBDYXJhY2VyaXphY2lvbkVzdGFkb1Jvd1ZhbGlkYXRvcj17XHJcbiAgICBjb3JyZWN0bzpib29sZWFuLFxyXG4gICAgY29uVmFsb3I6Ym9vbGVhbnxudWxsLCAvLyBudWxsID0gdW5rbm93blxyXG59XHJcblxyXG5mdW5jdGlvbiBhcGxhbmFyTGFDdXJ2YTxUIGV4dGVuZHMge3RpcG9jOnN0cmluZywgZGVzcGxpZWd1ZT86c3RyaW5nfT4oY2FzaWxsZXJvc0RhdGE6SURhdGFTZXBhcmFkYTxUPik6SURhdGFDb25DYXNpbGxlcm9zPFR8T3BjaW9uPntcclxuICAgIHZhciBkYXRhID0gY2FzaWxsZXJvc0RhdGEuZGF0YVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5kYXRhLFxyXG4gICAgICAgIGRlc3BsaWVndWVDb250ZW5pZG86IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ2hvcml6b250YWwnKT8naG9yaXpvbnRhbCc6ZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygndmVydGljYWwnKT8ndmVydGljYWwnOm51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZUVuY2FiZXphZG86IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ2xhdGVyYWwnKT8nbGF0ZXJhbCc6ZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygnc3VwZXJpb3InKT8nc3VwZXJpb3InOm51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZU9jdWx0YTogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygnb2N1bHRhcicpPz9udWxsLFxyXG4gICAgICAgIGRlc3BsaWVndWVUaXBvSW5wdXQ6IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ3RlbGVmb25vJyk/J3RlbCc6bnVsbCxcclxuICAgICAgICBjYXNpbGxlcm9zOiAhY2FzaWxsZXJvc0RhdGEuY2hpbGRzLmxlbmd0aCAmJiBjYXNpbGxlcm9zRGF0YS5kYXRhLnRpcG9jPT0nT00nID8gb3BjaW9uZXNTaU5vIDpcclxuICAgICAgICAgICAgIGNhc2lsbGVyb3NEYXRhLmNoaWxkcy5tYXAoY2FzaWxsZXJvPT5hcGxhbmFyTGFDdXJ2YShjYXNpbGxlcm8pKVxyXG4gICAgfVxyXG59XHJcblxyXG4vLyB0eXBlIEFueVJlZjxUIGV4dGVuZHMge30+PVtULCBrZXlvZiBUXTtcclxuXHJcbmZ1bmN0aW9uIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbzpJZEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmE6RXN0cnVjdHVyYVJvd1ZhbGlkYXRvciwgY2FzaWxsZXJvOkNhc2lsbGVyb3NJbXBsZW1lbnRhZG9zLCB1bmlkYWRBbmFsaXNpcz86c3RyaW5nfG51bGwsXHJcbiAgICBzdWJvcmRpbmFkYVZhcj86SWRWYXJpYWJsZSwgc3Vib3JkaW5hZGFWYWxvcj86YW55XHJcbil7XHJcbiAgICBpZihjYXNpbGxlcm8udmFyX25hbWUgIT0gbnVsbCB8fCBjYXNpbGxlcm8udGlwb2M9PSdGSUxUUk8nKXtcclxuICAgICAgICB2YXIgdmFyX25hbWU6SWRWYXJpYWJsZVxyXG4gICAgICAgIGlmKGNhc2lsbGVyby50aXBvYz09J0ZJTFRSTycpe1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIHBvbmdvIGNvbW8gbm9tYnJlIGRlIHZhcmlhYmxlIGVsIGZpbHRybztcclxuICAgICAgICAgICAgdmFyX25hbWUgPSBjYXNpbGxlcm8uY2FzaWxsZXJvO1xyXG4gICAgICAgIH1lbHNlIGlmKGNhc2lsbGVyby52YXJfbmFtZS5lbmRzV2l0aCgnIScpKXtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBsYXMgdmFyaWFibGVzIGVzcGVqbyBzb24gbGFzIHF1ZSB0ZXJtaW5hbiBlbiAhXHJcbiAgICAgICAgICAgIHZhcl9uYW1lID0gY2FzaWxsZXJvLnZhcl9uYW1lX2VzcGVjaWFsLnJlcGxhY2UoLyErJC8sJycpO1xyXG4gICAgICAgICAgICBjYXNpbGxlcm8udmFyX25hbWUgPSB2YXJfbmFtZTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdmFyX25hbWUgPSBjYXNpbGxlcm8udmFyX25hbWVcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHZhcmlhYmxlRGVmPXtcclxuICAgICAgICAgICAgdGlwbzpjYXNpbGxlcm8udGlwb2M9PSdGSUxUUk8nPydmaWx0cm8nOmNhc2lsbGVyby50aXBvYz09J09NJyB8fCBjYXNpbGxlcm8udGlwb3Zhcj09J3NpX25vJz8nb3BjaW9uZXMnOmNhc2lsbGVyby50aXBvdmFyLFxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIG9wdGF0aXZvIHBvZHLDrWEgbm8gZXhpc3RpciwgcXVlZGFyw6EgbnVsbC5cclxuICAgICAgICAgICAgb3B0YXRpdmE6Y2FzaWxsZXJvLm9wdGF0aXZvISxcclxuICAgICAgICAgICAgb3BjaW9uZXM6KGNhc2lsbGVyby50aXBvYz09J09NJyB8fCBjYXNpbGxlcm8udGlwb3Zhcj09J29wY2lvbmVzJyB8fCBjYXNpbGxlcm8udGlwb3Zhcj09J3NpX25vJz9cclxuICAgICAgICAgICAgICAgIGxpa2VBci5jcmVhdGVJbmRleChjYXNpbGxlcm8uY2FzaWxsZXJvcywgJ2Nhc2lsbGVybycpOnt9KSBhcyB1bmtub3duIGFzIHsgW2tleTogc3RyaW5nXTogUm93VmFsaWRhdG9yT3BjaW9uPElkVmFyaWFibGU+IH0sXHJcbiAgICAgICAgICAgIHNhbHRvOmNhc2lsbGVyby5zYWx0byBhcyBJZFZhcmlhYmxlLFxyXG4gICAgICAgICAgICBzYWx0b05zTnI6J3NhbHRvX25zX25jJyBpbiBjYXNpbGxlcm8gJiYgY2FzaWxsZXJvLnNhbHRvX25zX25jIHx8IG51bGwsXHJcbiAgICAgICAgICAgIGZ1bmNpb25IYWJpbGl0YXI6Y2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJfanMsXHJcbiAgICAgICAgICAgIGZ1bmNpb25BdXRvSW5ncmVzYXI6Y2FzaWxsZXJvLmV4cHJlc2lvbl9hdXRvaW5ncmVzYXJfanMsXHJcbiAgICAgICAgICAgIGNhbGN1bGFkYTpcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLy8gVE9ETy4gQXZlcmlndWFyIHNpIGxhcyBwcmVndW50YXMgeSBmaWx0cm9zIHB1ZWRlbiB0ZW5lciB1bmlkYWQgZGUgYW7DoWxpc2lzXHJcbiAgICAgICAgICAgICAgICBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzICYmIGNhc2lsbGVyby51bmlkYWRfYW5hbGlzaXMhPXVuaWRhZEFuYWxpc2lzIFxyXG4gICAgICAgICAgICAgICAgfHwgY2FzaWxsZXJvLmNhbGN1bGFkYSxcclxuICAgICAgICAgICAgbGlicmU6Y2FzaWxsZXJvLmxpYnJlXHJcbiAgICAgICAgfSBhcyAodHlwZW9mIGVzdHJ1Y3R1cmEudmFyaWFibGVzKVtJZFZhcmlhYmxlXVxyXG4gICAgICAgIGlmKHN1Ym9yZGluYWRhVmFsb3IgIT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgdmFyaWFibGVEZWYuc3Vib3JkaW5hZGFWYXIgPSBzdWJvcmRpbmFkYVZhcjtcclxuICAgICAgICAgICAgdmFyaWFibGVEZWYuc3Vib3JkaW5hZGFWYWxvciA9IHN1Ym9yZGluYWRhVmFsb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVzdHJ1Y3R1cmEudmFyaWFibGVzW3Zhcl9uYW1lXT12YXJpYWJsZURlZjtcclxuICAgIH0gZWxzZSBpZiAoY2FzaWxsZXJvLnRpcG9jPT0nQkYnKXtcclxuICAgICAgIC8vIHZhciB2YXJfbmFtZSA9ICckQi5GOicrY2FzaWxsZXJvLnNhbHRvIGFzIElkVmFyaWFibGU7ICAgIC8vb3JpZ2luYWxcclxuICAgICAgICB2YXIgc2FsdG9Ob21icmU9Y2FzaWxsZXJvLnNhbHRvIS5zdWJzdHIoMCwyKT09J0Y6Jz9jYXNpbGxlcm8uc2FsdG8hLnNsaWNlKDIpOmNhc2lsbGVyby5zYWx0bztcclxuICAgICAgICB2YXIgdmFyX25hbWUgPSAnJEIuRjonK3NhbHRvTm9tYnJlIGFzIElkVmFyaWFibGU7XHJcbiAgICAgICAgY2FzaWxsZXJvLnZhcl9uYW1lX0JGID0gdmFyX25hbWU7XHJcbiAgICAgICAgbGV0IHZhcmlhYmxlRGVmPXtcclxuICAgICAgICAgICAgdGlwbzondGV4dG8nLFxyXG4gICAgICAgICAgICBsaWJyZTp0cnVlLFxyXG4gICAgICAgICAgICAuLi4oY2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXI/e2Z1bmNpb25IYWJpbGl0YXI6YHZhbG9yZXNbJyR7Y2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJ9J10gIT09MCBgfTp7fSksXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVzdHJ1Y3R1cmEudmFyaWFibGVzW3Zhcl9uYW1lXT12YXJpYWJsZURlZjtcclxuICAgIH1cclxuICAgIGlmKGNhc2lsbGVyby5jYXNpbGxlcm9zKXtcclxuICAgICAgICBjYXNpbGxlcm8uY2FzaWxsZXJvcy5mb3JFYWNoKChjYXNpbGxlcm9IaWpvOkNhc2lsbGVyb3NJbXBsZW1lbnRhZG9zKT0+XHJcbiAgICAgICAgICAgIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbywgZXN0cnVjdHVyYSwgY2FzaWxsZXJvSGlqbywgdW5pZGFkQW5hbGlzaXMsIGNhc2lsbGVyby52YXJfbmFtZT9jYXNpbGxlcm8udmFyX25hbWU6Y2FzaWxsZXJvLnRpcG9jPT0nTyc/c3Vib3JkaW5hZGFWYXI6dW5kZWZpbmVkLGNhc2lsbGVyby50aXBvYz09J08nP2Nhc2lsbGVyby5jYXNpbGxlcm86dW5kZWZpbmVkKVxyXG4gICAgICAgIClcclxuICAgIH1cclxufVxyXG5cclxudHlwZSBSZWdpc3Ryb0Rlc3Rpbm9zPXtbZGVzdGlubyBpbiBJZERlc3Rpbm9dOklkVmFyaWFibGV8bnVsbH07XHJcblxyXG5mdW5jdGlvbiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybzpDYXNpbGxlcm9zSW1wbGVtZW50YWRvcywgZGVzdGlub3M/OlJlZ2lzdHJvRGVzdGlub3MpOlJlZ2lzdHJvRGVzdGlub3N7XHJcbiAgICBpZihkZXN0aW5vcz09bnVsbCkgcmV0dXJuIG9idGVuZXJEZXN0aW5vc0Nhc2lsbGVyb3MoY2FzaWxsZXJvLCB7fSBhcyBSZWdpc3Ryb0Rlc3Rpbm9zKTtcclxuICAgIGlmKGNhc2lsbGVyby50aXBvYz09J0ZJTFRSTycpe1xyXG4gICAgICAgIGRlc3Rpbm9zW2Nhc2lsbGVyby5jYXNpbGxlcm9dPWNhc2lsbGVyby5jYXNpbGxlcm8gYXMgSWRWYXJpYWJsZTtcclxuICAgIH1lbHNlIGlmKGNhc2lsbGVyby50aXBvYyE9J0YnICYmIGNhc2lsbGVyby50aXBvYyE9J08nICYmIGNhc2lsbGVyby50aXBvYyE9J09NJyl7XHJcbiAgICAgICAgZGVzdGlub3NbY2FzaWxsZXJvLmNhc2lsbGVyb109Y2FzaWxsZXJvLnByaW1lcmFfdmFyaWFibGV8fG51bGxcclxuICAgIH1cclxuICAgIGlmKGNhc2lsbGVyby5jYXNpbGxlcm9zKXtcclxuICAgICAgICBjYXNpbGxlcm8uY2FzaWxsZXJvcy5mb3JFYWNoKGM9Pm9idGVuZXJEZXN0aW5vc0Nhc2lsbGVyb3MoYyxkZXN0aW5vcykpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlc3Rpbm9zO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZWxsZW5hckRlc3Rpbm9zKGVzdHJ1Y3R1cmE6RXN0cnVjdHVyYVJvd1ZhbGlkYXRvciwgZGVzdGlub3M6UmVnaXN0cm9EZXN0aW5vcyk6RXN0cnVjdHVyYVJvd1ZhbGlkYXRvcntcclxuICAgIGZ1bmN0aW9uIG9idGVuZXJEZXN0aW5vKGlkVmFyaWFibGVRdWVUaWVuZVVuRGVzdGlubzpJZFZhcmlhYmxlfG51bGx8dW5kZWZpbmVkfElkRmluKTpJZFZhcmlhYmxlfG51bGx7XHJcbiAgICAgICAgcmV0dXJuIGlkVmFyaWFibGVRdWVUaWVuZVVuRGVzdGlubz09J2ZpbicgYXMgSWRWYXJpYWJsZSA/ICdmaW4nIGFzIElkVmFyaWFibGUgOiBpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm8hPW51bGwgJiYgZGVzdGlub3NbaWRWYXJpYWJsZVF1ZVRpZW5lVW5EZXN0aW5vIGFzIElkRGVzdGlub10gfHwgbnVsbFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5lc3RydWN0dXJhLFxyXG4gICAgICAgIHZhcmlhYmxlczpsaWtlQXIoZXN0cnVjdHVyYS52YXJpYWJsZXMpLm1hcCh2YXJpYWJsZURlZj0+KHtcclxuICAgICAgICAgICAgLi4udmFyaWFibGVEZWYsXHJcbiAgICAgICAgICAgIHNhbHRvOm9idGVuZXJEZXN0aW5vKHZhcmlhYmxlRGVmLnNhbHRvKSxcclxuICAgICAgICAgICAgc2FsdG9Oc05yOm9idGVuZXJEZXN0aW5vKHZhcmlhYmxlRGVmLnNhbHRvTnNOciksXHJcbiAgICAgICAgICAgIG9wY2lvbmVzOnZhcmlhYmxlRGVmLm9wY2lvbmVzIT1udWxsID8gbGlrZUFyKHZhcmlhYmxlRGVmLm9wY2lvbmVzKS5tYXAob3BjaW9uRGVmPT4oe3NhbHRvOm9idGVuZXJEZXN0aW5vKG9wY2lvbkRlZi5zYWx0byl9KSkucGxhaW4oKTp1bmRlZmluZWRcclxuICAgICAgICB9KSkucGxhaW4oKVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZW5lcmFyRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcihjYXNpbGxlcm86Q2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIGlkRm9ybXVsYXJpbzogSWRGb3JtdWxhcmlvKTpFc3RydWN0dXJhUm93VmFsaWRhdG9ye1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmFJbmNvbXBsZXRhOkVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I9e3ZhcmlhYmxlczp7fSwgbWFyY2FGaW46J2Zpbid9IGFzIHVua25vd24gYXMgRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjtcclxuICAgIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbywgZXN0cnVjdHVyYUluY29tcGxldGEsIGNhc2lsbGVybywgXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZSB2ZXIgc2kgY3VhbHF1aWVyIGNvc2EgcHVlZGUgdGVuZXIgdW5pZGFkX2FuYWxpc2lzXHJcbiAgICAgICAgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpc1xyXG4gICAgKTtcclxuICAgIHZhciBkZXN0aW5vcz1vYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybyk7XHJcbiAgICByZXR1cm4gcmVsbGVuYXJEZXN0aW5vcyhlc3RydWN0dXJhSW5jb21wbGV0YSwgZGVzdGlub3MpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVNwZWNpYWxXb3Jkcyh0ZXh0OnN0cmluZywgbm9tYnJlOnN0cmluZywgYXBlbGxpZG86c3RyaW5nLCByZXN1bHRhZG86c3RyaW5nKTpzdHJpbmd7XHJcbiAgICBmdW5jdGlvbiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIodGV4dDpzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleHQuc2xpY2UoMSk7XHJcbiAgICB9XHJcbiAgICB2YXIgc2ltcGxpZmljYXRlZENoYXJzOntbazpzdHJpbmddOnN0cmluZ309e1xyXG4gICAgICAgIFwiI25vbWJyZVwiOmNhcGl0YWxpemVGaXJzdExldHRlcihub21icmUpLFxyXG4gICAgICAgIFwiI2FwZWxsaWRvXCI6Y2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGFwZWxsaWRvKSxcclxuICAgICAgICBcIiNyZXN1bHRhZG9cIjpyZXN1bHRhZG8sXHJcbiAgICB9O1xyXG4gICAgdmFyIHJlID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhzaW1wbGlmaWNhdGVkQ2hhcnMpLmpvaW4oXCJ8XCIpLFwiZ2lcIik7XHJcblxyXG4gICAgcmV0dXJuIHRleHQucmVwbGFjZShyZSwgZnVuY3Rpb24obWF0Y2hlZCl7XHJcbiAgICAgICAgcmV0dXJuIHNpbXBsaWZpY2F0ZWRDaGFyc1ttYXRjaGVkLnRvTG93ZXJDYXNlKCldO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnb3RvU2luY3Jvbml6YXIoKXtcclxuICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL21lbnUjaT1zaW5jcm9uaXphcmApO1xyXG4gICAgbG9jYXRpb24ucmVsb2FkKCk7ICAgXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnb3RvQ2FtcG8oKXtcclxuICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL2NhbXBvYCk7XHJcbiAgICBsb2NhdGlvbi5yZWxvYWQoKTsgICBcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdvdG9Db25zaXN0aXIob3BlcmF0aXZvOklkT3BlcmF0aXZvLHRhcmVhOklkVGFyZWEsIGVuY3Vlc3RhOklkRW5jKXtcclxuICAgIC8vIFRPRE8tMjAyMy0wMzogcHJvYmFyIGNvbiBlc3RvOlxyXG4gICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAke2xvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZX0vLi4vbWVudSN3PWNvbnNpc3Rpcl9lbmN1ZXN0YSZ1cD0ke0pTT040YWxsLnRvVXJsKHtvcGVyYXRpdm8sIHRhcmVhLCBlbmN1ZXN0YX0pfSZhdXRvcHJvY2VkPXRydWVgKTtcclxuICAgIC8vIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL21lbnUjdz1jb25zaXN0aXJfZW5jdWVzdGEmdXA9e1wib3BlcmF0aXZvXCI6XCIke29wZXJhdGl2b31cIixcInRhcmVhXCI6XCIke3RhcmVhfVwiLFwiZW5jdWVzdGFcIjoke2VuY3Vlc3RhfX0mYXV0b3Byb2NlZD10cnVlYCk7XHJcbiAgICBsb2NhdGlvbi5yZWxvYWQoKTsgICBcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENhY2hlVmVyc2lvbigpe1xyXG4gICAgcmV0dXJuIG15LmdldExvY2FsVmFyKCdhcHAtY2FjaGUtdmVyc2lvbicpO1xyXG59XHJcblxyXG52YXIgcmVkaXJlY3RJZk5vdExvZ2dlZCA9IGZ1bmN0aW9uIHJlZGlyZWN0SWZOb3RMb2dnZWQoZXJyOkVycm9yKXtcclxuICAgIGlmKGVyci5tZXNzYWdlID09IG15Lm1lc3NhZ2VzLm5vdExvZ2dlZCl7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lfS8uLi9sb2dpbiR7bG9jYXRpb24uaGFzaH1gKTtcclxuICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7ICAgXHJcbiAgICAgICAgfSwxNTAwKVxyXG4gICAgICAgIFxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhZXJFc3RydWN0dXJhKHBhcmFtczp7b3BlcmF0aXZvOiBzdHJpbmd9KXtcclxuICAgIHZhciBlc3RydWN0dXJhID0gIGF3YWl0IG15LmFqYXgub3BlcmF0aXZvX2VzdHJ1Y3R1cmFfY29tcGxldGEocGFyYW1zKTtcclxuICAgIHZhciBjYXNpbGxlcm9zT3JpZ2luYWxlczp7fSA9IGVzdHJ1Y3R1cmEuZm9ybXVsYXJpb3M7XHJcbiAgICAvL1RPRE86IEdFTkVSQUxJWkFSXHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIC8vIGNhc2lsbGVyb3NPcmlnaW5hbGVzWydGOkYyX3BlcnNvbmFzJ109Y2FzaWxsZXJvc09yaWdpbmFsZXNbJ0Y6RjInXS5jaGlsZHMuZmluZChjYXNpbGxlcm89PmNhc2lsbGVyby5kYXRhLmNhc2lsbGVybz09J0xQJyk7XHJcbiAgICB2YXIgbWFpbkZvcm06SWRGb3JtdWxhcmlvfHVuZGVmaW5lZDtcclxuICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgdmFyIGNhc2lsbGVyb3NUb2Rvc0Zvcm11bGFyaW9zOntbZiBpbiBJZEZvcm11bGFyaW9dOntjYXNpbGxlcm9zOkZvcm11bGFyaW8sIGVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I6RXN0cnVjdHVyYVJvd1ZhbGlkYXRvcn19PVxyXG4gICAgICAgIGxpa2VBcihjYXNpbGxlcm9zT3JpZ2luYWxlcykubWFwKFxyXG4gICAgICAgICAgICAoY2FzaWxsZXJvc0plcmFycXVpemFkb3M6YW55LCBpZEZvcm11bGFyaW8pPT57XHJcbiAgICAgICAgICAgICAgICB2YXIgY2FzaWxsZXJvc0FwbGFuYWRvczpDYXNpbGxlcm9zSW1wbGVtZW50YWRvcyA9IGFwbGFuYXJMYUN1cnZhKGNhc2lsbGVyb3NKZXJhcnF1aXphZG9zKTtcclxuICAgICAgICAgICAgICAgIGlmKGNhc2lsbGVyb3NBcGxhbmFkb3MudGlwb2M9PSdGJyAmJiBjYXNpbGxlcm9zQXBsYW5hZG9zLmZvcm11bGFyaW9fcHJpbmNpcGFsKXtcclxuICAgICAgICAgICAgICAgICAgICBtYWluRm9ybT1pZEZvcm11bGFyaW87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2lsbGVyb3M6IGNhc2lsbGVyb3NBcGxhbmFkb3MsXHJcbiAgICAgICAgICAgICAgICAgICAgZXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjogZ2VuZXJhckVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IoY2FzaWxsZXJvc0FwbGFuYWRvcywgaWRGb3JtdWxhcmlvKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKS5wbGFpbigpO1xyXG4gICAgZXN0cnVjdHVyYS5mb3JtdWxhcmlvcyA9IGNhc2lsbGVyb3NUb2Rvc0Zvcm11bGFyaW9zXHJcbiAgICByZXR1cm4gZXN0cnVjdHVyYTtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRtVHJhZXJEYXRvc0Zvcm11bGFyaW8ob3B0czp7b3BlcmF0aXZvOklkT3BlcmF0aXZvLCBtb2RvRGVtbzpib29sZWFuLCBmb3JQa1JhaXo/OkZvclBrUmFpen0pe1xyXG4gICAgdmFyIGdldENhc29TdGF0ZT0oKTpDYXNvU3RhdGU9PiBteU93bi5nZXRMb2NhbFZhcihMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUpO1xyXG4gICAgdmFyIHNldENhc29TdGF0ZT0oY2Fzb1N0YXRlOkNhc29TdGF0ZSk9PiBteU93bi5zZXRMb2NhbFZhcihMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUsIGNhc29TdGF0ZSk7XHJcbiAgICBcclxuICAgIHZhciBsb2FkU3RhdGUgPSBhc3luYyBmdW5jdGlvbiBsb2FkU3RhdGUoKTpQcm9taXNlPENhc29TdGF0ZT57XHJcbiAgICAgICAgdmFyIGNhc29TdGF0ZTpDYXNvU3RhdGV8bnVsbCA9IGdldENhc29TdGF0ZSgpO1xyXG4gICAgICAgIHZhciBpbml0aWFsU3RhdGUgPSB7XHJcbiAgICAgICAgICAgIG9wY2lvbmVzOntcclxuICAgICAgICAgICAgICAgIGZvclBrOm51bGwsXHJcbiAgICAgICAgICAgICAgICBwaWxhRm9yUGs6W10sXHJcbiAgICAgICAgICAgICAgICBtb2RvRGVzcGxpZWd1ZToncmVsZXZhbWllbnRvJyxcclxuICAgICAgICAgICAgICAgIG1vZG9EaXJlY3RvOmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY29uQ2FtcG9PcGNpb25lczpmYWxzZSxcclxuICAgICAgICAgICAgICAgIHNhbHRvQXV0b21hdGljbzp0cnVlLCBcclxuICAgICAgICAgICAgICAgIGJpZW52ZW5pZG86dHJ1ZSxcclxuICAgICAgICAgICAgICAgIG1vZG9Cb3JyYXJSZXNwdWVzdGE6bnVsbCxcclxuICAgICAgICAgICAgfSBhcyBDYXNvU3RhdGVbXCJvcGNpb25lc1wiXSwgLy8gcG9uZXIgbG9zIHZhbG9yZXMgcG9yIGRlZmVjdG8gbcOhcyBhYmFqb1xyXG4gICAgICAgICAgICBtb2RvOntcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZSBlcyB1biBib29sZWFubyBwZXJvIHBvbmdvIGFow60gbG9zIGRhdG9zIGRlIGRlbW8hXHJcbiAgICAgICAgICAgICAgICBkZW1vOiBcclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgbXlPd24uY29uZmlnLmNvbmZpZy5hbWJpZW50ZT09J3Rlc3QnIHx8IG15T3duLmNvbmZpZy5jb25maWcuYW1iaWVudGU9PSdkZW1vJyxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gYXMgQ2Fzb1N0YXRlO1xyXG4gICAgICAgIGlmKGNhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IHtcclxuICAgICAgICAgICAgICAgIC4uLmluaXRpYWxTdGF0ZSwgXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczpjYXNvU3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYob3B0cy5mb3JQa1JhaXope1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMuZm9yUGs9b3B0cy5mb3JQa1JhaXo7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5tb2RvRGlyZWN0bz0hIW9wdHMuZm9yUGtSYWl6O1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMucGlsYUZvclBrPVtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYWRkclBhcmFtcz1teU93bi5VcmlTZWFyY2hUb09iamVjdChsb2NhdGlvbi5oYXNofHxsb2NhdGlvbi5zZWFyY2h8fCcnKTtcclxuICAgICAgICBpZihhZGRyUGFyYW1zLnN0YXRlX2ZvclBrKXtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLmZvclBrPUpTT04ucGFyc2UoYWRkclBhcmFtcy5zdGF0ZV9mb3JQayk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGFkZHJQYXJhbXMuc3RhdGVfcGlsYUZvclBrKXtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQaz0oYWRkclBhcmFtcy5zdGF0ZV9waWxhRm9yUGsgYXMgc3RyaW5nKS5zcGxpdCgnfCcpLm1hcChqPT5KU09ONGFsbC5wYXJzZShqKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XHJcbiAgICB9XHJcbiAgICB2YXIgc2F2ZVN0YXRlID0gZnVuY3Rpb24gc2F2ZVN0YXRlKHN0YXRlOkNhc29TdGF0ZSl7XHJcbiAgICAgICAgc2V0Q2Fzb1N0YXRlKHN0YXRlKTtcclxuICAgIH1cclxuICAgIC8qIERFRklOSUNJT04gQ09OVFJPTEFET1IgKi9cclxuICAgIHZhciBpbml0aWFsU3RhdGU6Q2Fzb1N0YXRlID0gYXdhaXQgbG9hZFN0YXRlKCk7XHJcbiAgICBjb25zdCBoZHJSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihyZWR1Y2VycywgaW5pdGlhbFN0YXRlKTtcclxuICAgIC8qIEZJTiBERUZJTklDSU9OIENPTlRST0xBRE9SICovXHJcbiAgICAvKiBDQVJHQSBZIEdVQVJEQURPIERFIFNUQVRFICovXHJcbiAgICAvKiBDUkVBQ0lPTiBTVE9SRSAqL1xyXG4gICAgY29uc3Qgc3RvcmUgPSBjcmVhdGVTdG9yZShoZHJSZWR1Y2VyLCBpbml0aWFsU3RhdGUpOyBcclxuICAgIHNhdmVTdGF0ZShzdG9yZS5nZXRTdGF0ZSgpKTtcclxuICAgIHN0b3JlLnN1YnNjcmliZShmdW5jdGlvbigpe1xyXG4gICAgICAgICBzYXZlU3RhdGUoc3RvcmUuZ2V0U3RhdGUoKSk7XHJcbiAgICB9KTtcclxuICAgIC8qIEZJTiBDUkVBQ0lPTiBTVE9SRSAqL1xyXG4gICAgLy9IRFIgQ09OIFNUT1JFIENSRUFET1xyXG4gICAgcmV0dXJuIHN0b3JlO1xyXG59Il19
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtZm9ybXVsYXJpby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLGlDQUFvQztJQUNwQyxtQ0FVaUI7SUFDakIsNkRBQW9GO0lBRXBGLGtDQUFrQztJQUNsQyw0Q0FBNEM7SUFDNUMscUNBQXFDO0lBSXJDLElBQUksRUFBRSxHQUFDLEtBQUssQ0FBQztJQUViLE1BQU0sd0JBQXdCLEdBQUUsV0FBVyxDQUFDO0lBRTVDLFNBQVMsVUFBVSxDQUFDLEtBQWdCLEVBQUUsU0FBaUI7UUFDbkQsSUFBSSxVQUFVLEdBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUUsUUFBUSxDQUFDLE1BQU0sSUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRSxLQUFLLENBQUMsaUJBQWlCLGlDQUNoQixVQUFVLEtBQ2IsV0FBVyxFQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBQSxvQkFBWSxFQUFDLEtBQUssQ0FBQyxFQUN4RCxlQUFlLEVBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUN2RCxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQUksUUFBUSxHQUFDO1FBQ1QsZUFBZSxFQUFFLENBQUMsT0FBd0MsRUFBRSxFQUFFLENBQzFELFVBQVMsS0FBZ0I7WUFDckIsdUNBQ08sS0FBSyxLQUNSLFFBQVEsa0NBQ0QsS0FBSyxDQUFDLFFBQVEsS0FDakIsY0FBYyxFQUFDLE9BQU8sQ0FBQyxjQUFjLE9BRTVDO1FBQ0wsQ0FBQztRQUNMLGtCQUFrQixFQUFFLENBQUMsT0FBNEMsRUFBRSxFQUFFLENBQ2pFLFVBQVMsS0FBZ0I7WUFDckIsSUFBSSxLQUFLLEdBQUcsT0FB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QyxDQUFDO3FCQUNsRTtvQkFDRCxJQUFHLFVBQVUsQ0FBQyxlQUFlLEVBQUM7d0JBQzFCLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFFLFVBQVUsQ0FBQyxlQUEwQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLEVBQUUsQ0FBQSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQy9HO29CQUNELE9BQU8sWUFBWSxDQUFDO2dCQUN4QixDQUFDO2FBQUEsQ0FBQTtZQUNELElBQUksU0FBUyxHQUFHLFNBQVMsU0FBUyxDQUFDLEtBQWU7Z0JBQzlDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUE7WUFDRCw0QkFBNEI7WUFDNUIsSUFBSSxZQUFZLEdBQWEsTUFBTSxTQUFTLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFVBQVUsR0FBRyxJQUFBLG1DQUFhLEVBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3pELGdDQUFnQztZQUNoQywrQkFBK0I7WUFDL0Isb0JBQW9CO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUEsbUJBQVcsRUFBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEQsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQ1gsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsd0JBQXdCO1lBQ3hCLHNCQUFzQjtZQUN0QixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0tBQUE7SUE3REQsd0RBNkRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tIFwicmVkdXhcIjtcclxuaW1wb3J0IHsgQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIENhc29TdGF0ZSwgXHJcbiAgICBFc3RhZG9DYXJnYSwgRXN0cnVjdHVyYVJvd1ZhbGlkYXRvciwgXHJcbiAgICBGb3JtdWxhcmlvLCBGb3JQaywgRm9yUGtSYWl6LCBcclxuICAgIElkQ2FyZ2EsIElkRGVzdGlubywgSWRGb3JtdWxhcmlvLCBJZFZhcmlhYmxlLCBJZE9wZXJhdGl2bywgXHJcbiAgICBNb2RvRGVzcGxpZWd1ZSwgXHJcbiAgICBPcGNpb24sXHJcbiAgICB0b1BsYWluRm9yUGssXHJcbiAgICBJZEZpbixcclxuICAgIElkRW5jLFxyXG4gICAgSWRUYXJlYSxcclxufSBmcm9tIFwiLi90aXBvc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVSZWR1Y2VyLCBjcmVhdGVEaXNwYXRjaGVycywgQWN0aW9uc0Zyb20gfSBmcm9tIFwicmVkdXgtdHlwZWQtcmVkdWNlclwiO1xyXG5pbXBvcnQgeyBNb2RvQWxtYWNlbmFtaWVudG8gfSBmcm9tIFwiLi90aXBvc1wiXHJcbmltcG9ydCAqIGFzIGxpa2VBciBmcm9tIFwibGlrZS1hclwiO1xyXG5pbXBvcnQgKiBhcyBiZXN0R2xvYmFscyBmcm9tIFwiYmVzdC1nbG9iYWxzXCI7XHJcbmltcG9ydCAqIGFzIEpTT040YWxsIGZyb20gXCJqc29uNGFsbFwiO1xyXG5cclxuaW1wb3J0IHsgT3BjaW9uIGFzIFJvd1ZhbGlkYXRvck9wY2lvbiB9IGZyb20gXCJyb3ctdmFsaWRhdG9yXCI7XHJcblxyXG52YXIgbXk9bXlPd247XHJcblxyXG5jb25zdCBMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUgPSdoZHItc3RhdGUnO1xyXG5cclxuZnVuY3Rpb24gZm9yUGtUb1VybChmb3JQazpGb3JQa3xudWxsLCBwaWxhRm9yUGs6Rm9yUGtbXSl7XHJcbiAgICB2YXIgYWRkclBhcmFtcz1teU93bi5VcmlTZWFyY2hUb09iamVjdChsb2NhdGlvbi5oYXNofHxsb2NhdGlvbi5zZWFyY2h8fCcnKTtcclxuICAgIG15T3duLnJlcGxhY2VBZGRyUGFyYW1zKHtcclxuICAgICAgICAuLi5hZGRyUGFyYW1zLCBcclxuICAgICAgICBzdGF0ZV9mb3JQazpmb3JQayA9PSBudWxsID8gJ251bGwnIDogdG9QbGFpbkZvclBrKGZvclBrKSwgXHJcbiAgICAgICAgc3RhdGVfcGlsYUZvclBrOnBpbGFGb3JQay5tYXAodG9QbGFpbkZvclBrKS5qb2luKCd8JylcclxuICAgIH0pO1xyXG59XHJcblxyXG52YXIgcmVkdWNlcnM9e1xyXG4gICAgTU9ET19ERVNQTElFR1VFOiAocGF5bG9hZDoge21vZG9EZXNwbGllZ3VlOk1vZG9EZXNwbGllZ3VlfSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOntcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBtb2RvRGVzcGxpZWd1ZTpwYXlsb2FkLm1vZG9EZXNwbGllZ3VlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgQ0FNQklBUl9GT1JNVUxBUklPOiAocGF5bG9hZDoge2ZvclBrOkZvclBrLCBhcGlsYXJWdWVsdGE6Ym9vbGVhbn0pID0+IFxyXG4gICAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICB2YXIgZm9yUGsgPSBwYXlsb2FkLmZvclBrO1xyXG4gICAgICAgICAgICB2YXIgcGlsYUZvclBrID0gcGF5bG9hZC5hcGlsYXJWdWVsdGE/KFxyXG4gICAgICAgICAgICAgICAgc3RhdGUub3BjaW9uZXMuZm9yUGs9PW51bGw/W106Wy4uLnN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQaywgc3RhdGUub3BjaW9uZXMuZm9yUGtdXHJcbiAgICAgICAgICAgICk6c3RhdGUub3BjaW9uZXMucGlsYUZvclBrO1xyXG4gICAgICAgICAgICBmb3JQa1RvVXJsKGZvclBrLCBwaWxhRm9yUGspO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczp7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgVk9MVkVSX0RFX0ZPUk1VTEFSSU86ICh7bWFnbml0dWRSZXRyb2Nlc299OiB7bWFnbml0dWRSZXRyb2Nlc286bnVtYmVyfSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHZhciBmb3JQayA9IHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQa1tzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsubGVuZ3RoLW1hZ25pdHVkUmV0cm9jZXNvXXx8bnVsbDtcclxuICAgICAgICAgICAgdmFyIHBpbGFGb3JQayA9IHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQay5zbGljZSgwLHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQay5sZW5ndGgtbWFnbml0dWRSZXRyb2Nlc28pO1xyXG4gICAgICAgICAgICBmb3JQa1RvVXJsKGZvclBrLCBwaWxhRm9yUGspO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczp7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgRVNUQURPX0NBUkdBOiAocGF5bG9hZDoge2lkQ2FyZ2E6SWRDYXJnYSwgZXN0YWRvX2NhcmdhOkVzdGFkb0NhcmdhfSkgPT5cclxuICAgICAgICBmdW5jdGlvbihzdGF0ZTogQ2Fzb1N0YXRlKXtcclxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlXHJcbiAgICAgICAgICAgIC8vREVTQUNUSVZBRE9cclxuICAgICAgICAgICAgLy9yZXR1cm4ge1xyXG4gICAgICAgICAgICAvLyAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgLy8gICAgZGF0b3M6e1xyXG4gICAgICAgICAgICAvLyAgICAgICAgLi4uc3RhdGUuZGF0b3MsXHJcbiAgICAgICAgICAgIC8vICAgICAgICBjYXJnYXM6e1xyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgIC4uLnN0YXRlLmRhdG9zLmNhcmdhcyxcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICBbcGF5bG9hZC5pZENhcmdhXToge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAuLi5zdGF0ZS5kYXRvcy5jYXJnYXNbcGF5bG9hZC5pZENhcmdhXSxcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgZXN0YWRvX2NhcmdhOiBwYXlsb2FkLmVzdGFkb19jYXJnYVxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gICAgICAgIH1cclxuICAgICAgICAgICAgLy8gICAgfVxyXG4gICAgICAgICAgICAvL31cclxuICAgICAgICB9LFxyXG4gICAgVk9MVkVSX0hEUjogKF9wYXlsb2FkOiB7fSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHZhciBmb3JQayA9IG51bGw7XHJcbiAgICAgICAgICAgIHZhciBwaWxhRm9yUGs6Rm9yUGtbXSA9IFtdO1xyXG4gICAgICAgICAgICBmb3JQa1RvVXJsKGZvclBrLCBwaWxhRm9yUGspO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczp7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgU0VUX09QQ0lPTjogKHBheWxvYWQ6IHtvcGNpb246a2V5b2YgQ2Fzb1N0YXRlWydvcGNpb25lcyddLCB2YWxvcjphbnl9KSA9PiBcclxuICAgICAgICBmdW5jdGlvbihzdGF0ZTogQ2Fzb1N0YXRlKXtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6e1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIFtwYXlsb2FkLm9wY2lvbl06IHBheWxvYWQudmFsb3JcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBSRVNFVF9PUENJT05FUzogKF9wYXlsb2FkOiB7fSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOntcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQazogbnVsbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFJFSU5JQ0lBUl9ERU1POiAoX3BheWxvYWQ6IHt9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICBpZighc3RhdGUubW9kby5kZW1vKSByZXR1cm4gc3RhdGU7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgY29waW8gbG9zIGRhdG9zIGluaWNpYWxlc1xyXG4gICAgICAgICAgICAgICAgZGF0b3M6YmVzdEdsb2JhbHMuZGVlcENvcHkoc3RhdGUubW9kby5kZW1vKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIENPTkZJUk1BUl9CT1JSQVJfUkVTUFVFU1RBOiAocGF5bG9hZDoge2ZvclBrOkZvclBrLCB2YXJpYWJsZTpJZFZhcmlhYmxlfG51bGx9KSA9PiBcclxuICAgICAgICBmdW5jdGlvbihzdGF0ZTogQ2Fzb1N0YXRlKXtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6e1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrOnBheWxvYWQuZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kb0JvcnJhclJlc3B1ZXN0YTogcGF5bG9hZC52YXJpYWJsZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQWN0aW9uRm9ybXVsYXJpb1N0YXRlID0gQWN0aW9uc0Zyb208dHlwZW9mIHJlZHVjZXJzPjtcclxuLyogRklOIEFDQ0lPTkVTICovXHJcblxyXG5leHBvcnQgY29uc3QgZGlzcGF0Y2hlcnMgPSBjcmVhdGVEaXNwYXRjaGVycyhyZWR1Y2Vycyk7XHJcblxyXG5pbnRlcmZhY2UgSURhdGFTZXBhcmFkYTxUIGV4dGVuZHMge3RpcG9jOnN0cmluZ30+IHtcclxuICAgIGRhdGE6VCxcclxuICAgIGNoaWxkczpJRGF0YVNlcGFyYWRhPFQ+W11cclxufVxyXG5cclxudHlwZSBJRGF0YUNvbkNhc2lsbGVyb3M8VD4gPSBUICYge1xyXG4gICAgY2FzaWxsZXJvczpyZWFkb25seSBJRGF0YUNvbkNhc2lsbGVyb3M8VD5bXVxyXG59XHJcblxyXG5jb25zdCBjYXNpbGxlcm9WYWNpbz17c2FsdG86bnVsbCwgZGVzcGxpZWd1ZTpudWxsLCBhY2xhcmFjaW9uOm51bGwsIHZlcl9pZDpudWxsLCBjYXNpbGxlcm9zOltdLCBsZWVyOm51bGwsXHJcbiAgICBkZXNwbGllZ3VlRW5jYWJlemFkbzpudWxsLCBkZXNwbGllZ3VlQ29udGVuaWRvOm51bGwsIGRlc3BsaWVndWVPY3VsdGE6bnVsbCwgZGVzcGxpZWd1ZVRpcG9JbnB1dDpudWxsXHJcbn1cclxuXHJcbmNvbnN0IG9wY2lvbmVzU2lObzogT3BjaW9uW10gPSBbXHJcbiAgICB7Li4uY2FzaWxsZXJvVmFjaW8sIGNhc2lsbGVybzoxLCB0aXBvYzonTycsIG5vbWJyZTonU8OtJ30sXHJcbiAgICB7Li4uY2FzaWxsZXJvVmFjaW8sIGNhc2lsbGVybzoyLCB0aXBvYzonTycsIG5vbWJyZTonTm8nfSxcclxuXVxyXG5cclxudHlwZSBDYXJhY2VyaXphY2lvbkVzdGFkb1Jvd1ZhbGlkYXRvcj17XHJcbiAgICBjb3JyZWN0bzpib29sZWFuLFxyXG4gICAgY29uVmFsb3I6Ym9vbGVhbnxudWxsLCAvLyBudWxsID0gdW5rbm93blxyXG59XHJcblxyXG5mdW5jdGlvbiBhcGxhbmFyTGFDdXJ2YTxUIGV4dGVuZHMge3RpcG9jOnN0cmluZywgZGVzcGxpZWd1ZT86c3RyaW5nfT4oY2FzaWxsZXJvc0RhdGE6SURhdGFTZXBhcmFkYTxUPik6SURhdGFDb25DYXNpbGxlcm9zPFR8T3BjaW9uPntcclxuICAgIHZhciBkYXRhID0gY2FzaWxsZXJvc0RhdGEuZGF0YVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5kYXRhLFxyXG4gICAgICAgIGRlc3BsaWVndWVDb250ZW5pZG86IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ2hvcml6b250YWwnKT8naG9yaXpvbnRhbCc6ZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygndmVydGljYWwnKT8ndmVydGljYWwnOm51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZUVuY2FiZXphZG86IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ2xhdGVyYWwnKT8nbGF0ZXJhbCc6ZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygnc3VwZXJpb3InKT8nc3VwZXJpb3InOm51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZU9jdWx0YTogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygnb2N1bHRhcicpPz9udWxsLFxyXG4gICAgICAgIGRlc3BsaWVndWVUaXBvSW5wdXQ6IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ3RlbGVmb25vJyk/J3RlbCc6bnVsbCxcclxuICAgICAgICBjYXNpbGxlcm9zOiAhY2FzaWxsZXJvc0RhdGEuY2hpbGRzLmxlbmd0aCAmJiBjYXNpbGxlcm9zRGF0YS5kYXRhLnRpcG9jPT0nT00nID8gb3BjaW9uZXNTaU5vIDpcclxuICAgICAgICAgICAgIGNhc2lsbGVyb3NEYXRhLmNoaWxkcy5tYXAoY2FzaWxsZXJvPT5hcGxhbmFyTGFDdXJ2YShjYXNpbGxlcm8pKVxyXG4gICAgfVxyXG59XHJcblxyXG4vLyB0eXBlIEFueVJlZjxUIGV4dGVuZHMge30+PVtULCBrZXlvZiBUXTtcclxuXHJcbmZ1bmN0aW9uIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbzpJZEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmE6RXN0cnVjdHVyYVJvd1ZhbGlkYXRvciwgY2FzaWxsZXJvOkNhc2lsbGVyb3NJbXBsZW1lbnRhZG9zLCB1bmlkYWRBbmFsaXNpcz86c3RyaW5nfG51bGwsXHJcbiAgICBzdWJvcmRpbmFkYVZhcj86SWRWYXJpYWJsZSwgc3Vib3JkaW5hZGFWYWxvcj86YW55XHJcbil7XHJcbiAgICBpZihjYXNpbGxlcm8udmFyX25hbWUgIT0gbnVsbCB8fCBjYXNpbGxlcm8udGlwb2M9PSdGSUxUUk8nKXtcclxuICAgICAgICB2YXIgdmFyX25hbWU6SWRWYXJpYWJsZVxyXG4gICAgICAgIGlmKGNhc2lsbGVyby50aXBvYz09J0ZJTFRSTycpe1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIHBvbmdvIGNvbW8gbm9tYnJlIGRlIHZhcmlhYmxlIGVsIGZpbHRybztcclxuICAgICAgICAgICAgdmFyX25hbWUgPSBjYXNpbGxlcm8uY2FzaWxsZXJvO1xyXG4gICAgICAgIH1lbHNlIGlmKGNhc2lsbGVyby52YXJfbmFtZS5lbmRzV2l0aCgnIScpKXtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBsYXMgdmFyaWFibGVzIGVzcGVqbyBzb24gbGFzIHF1ZSB0ZXJtaW5hbiBlbiAhXHJcbiAgICAgICAgICAgIHZhcl9uYW1lID0gY2FzaWxsZXJvLnZhcl9uYW1lX2VzcGVjaWFsLnJlcGxhY2UoLyErJC8sJycpO1xyXG4gICAgICAgICAgICBjYXNpbGxlcm8udmFyX25hbWUgPSB2YXJfbmFtZTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdmFyX25hbWUgPSBjYXNpbGxlcm8udmFyX25hbWVcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHZhcmlhYmxlRGVmPXtcclxuICAgICAgICAgICAgdGlwbzpjYXNpbGxlcm8udGlwb2M9PSdGSUxUUk8nPydmaWx0cm8nOmNhc2lsbGVyby50aXBvYz09J09NJyB8fCBjYXNpbGxlcm8udGlwb3Zhcj09J3NpX25vJz8nb3BjaW9uZXMnOmNhc2lsbGVyby50aXBvdmFyLFxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIG9wdGF0aXZvIHBvZHLDrWEgbm8gZXhpc3RpciwgcXVlZGFyw6EgbnVsbC5cclxuICAgICAgICAgICAgb3B0YXRpdmE6Y2FzaWxsZXJvLm9wdGF0aXZvISxcclxuICAgICAgICAgICAgb3BjaW9uZXM6KGNhc2lsbGVyby50aXBvYz09J09NJyB8fCBjYXNpbGxlcm8udGlwb3Zhcj09J29wY2lvbmVzJyB8fCBjYXNpbGxlcm8udGlwb3Zhcj09J3NpX25vJz9cclxuICAgICAgICAgICAgICAgIGxpa2VBci5jcmVhdGVJbmRleChjYXNpbGxlcm8uY2FzaWxsZXJvcywgJ2Nhc2lsbGVybycpOnt9KSBhcyB1bmtub3duIGFzIHsgW2tleTogc3RyaW5nXTogUm93VmFsaWRhdG9yT3BjaW9uPElkVmFyaWFibGU+IH0sXHJcbiAgICAgICAgICAgIHNhbHRvOmNhc2lsbGVyby5zYWx0byBhcyBJZFZhcmlhYmxlLFxyXG4gICAgICAgICAgICBzYWx0b05zTnI6J3NhbHRvX25zX25jJyBpbiBjYXNpbGxlcm8gJiYgY2FzaWxsZXJvLnNhbHRvX25zX25jIHx8IG51bGwsXHJcbiAgICAgICAgICAgIGZ1bmNpb25IYWJpbGl0YXI6Y2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJfanMsXHJcbiAgICAgICAgICAgIGZ1bmNpb25BdXRvSW5ncmVzYXI6Y2FzaWxsZXJvLmV4cHJlc2lvbl9hdXRvaW5ncmVzYXJfanMsXHJcbiAgICAgICAgICAgIGNhbGN1bGFkYTpcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLy8gVE9ETy4gQXZlcmlndWFyIHNpIGxhcyBwcmVndW50YXMgeSBmaWx0cm9zIHB1ZWRlbiB0ZW5lciB1bmlkYWQgZGUgYW7DoWxpc2lzXHJcbiAgICAgICAgICAgICAgICBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzICYmIGNhc2lsbGVyby51bmlkYWRfYW5hbGlzaXMhPXVuaWRhZEFuYWxpc2lzIFxyXG4gICAgICAgICAgICAgICAgfHwgY2FzaWxsZXJvLmNhbGN1bGFkYSxcclxuICAgICAgICAgICAgbGlicmU6Y2FzaWxsZXJvLmxpYnJlXHJcbiAgICAgICAgfSBhcyAodHlwZW9mIGVzdHJ1Y3R1cmEudmFyaWFibGVzKVtJZFZhcmlhYmxlXVxyXG4gICAgICAgIGlmKHN1Ym9yZGluYWRhVmFsb3IgIT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgdmFyaWFibGVEZWYuc3Vib3JkaW5hZGFWYXIgPSBzdWJvcmRpbmFkYVZhcjtcclxuICAgICAgICAgICAgdmFyaWFibGVEZWYuc3Vib3JkaW5hZGFWYWxvciA9IHN1Ym9yZGluYWRhVmFsb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVzdHJ1Y3R1cmEudmFyaWFibGVzW3Zhcl9uYW1lXT12YXJpYWJsZURlZjtcclxuICAgIH0gZWxzZSBpZiAoY2FzaWxsZXJvLnRpcG9jPT0nQkYnKXtcclxuICAgICAgIC8vIHZhciB2YXJfbmFtZSA9ICckQi5GOicrY2FzaWxsZXJvLnNhbHRvIGFzIElkVmFyaWFibGU7ICAgIC8vb3JpZ2luYWxcclxuICAgICAgICB2YXIgc2FsdG9Ob21icmU9Y2FzaWxsZXJvLnNhbHRvIS5zdWJzdHIoMCwyKT09J0Y6Jz9jYXNpbGxlcm8uc2FsdG8hLnNsaWNlKDIpOmNhc2lsbGVyby5zYWx0bztcclxuICAgICAgICB2YXIgdmFyX25hbWUgPSAnJEIuRjonK3NhbHRvTm9tYnJlIGFzIElkVmFyaWFibGU7XHJcbiAgICAgICAgY2FzaWxsZXJvLnZhcl9uYW1lX0JGID0gdmFyX25hbWU7XHJcbiAgICAgICAgbGV0IHZhcmlhYmxlRGVmPXtcclxuICAgICAgICAgICAgdGlwbzondGV4dG8nLFxyXG4gICAgICAgICAgICBsaWJyZTp0cnVlLFxyXG4gICAgICAgICAgICAuLi4oY2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXI/e2Z1bmNpb25IYWJpbGl0YXI6YHZhbG9yZXNbJyR7Y2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJ9J10gIT09MCBgfTp7fSksXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVzdHJ1Y3R1cmEudmFyaWFibGVzW3Zhcl9uYW1lXT12YXJpYWJsZURlZjtcclxuICAgIH1cclxuICAgIGlmKGNhc2lsbGVyby5jYXNpbGxlcm9zKXtcclxuICAgICAgICBjYXNpbGxlcm8uY2FzaWxsZXJvcy5mb3JFYWNoKChjYXNpbGxlcm9IaWpvOkNhc2lsbGVyb3NJbXBsZW1lbnRhZG9zKT0+XHJcbiAgICAgICAgICAgIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbywgZXN0cnVjdHVyYSwgY2FzaWxsZXJvSGlqbywgdW5pZGFkQW5hbGlzaXMsIGNhc2lsbGVyby52YXJfbmFtZT9jYXNpbGxlcm8udmFyX25hbWU6Y2FzaWxsZXJvLnRpcG9jPT0nTyc/c3Vib3JkaW5hZGFWYXI6dW5kZWZpbmVkLGNhc2lsbGVyby50aXBvYz09J08nP2Nhc2lsbGVyby5jYXNpbGxlcm86dW5kZWZpbmVkKVxyXG4gICAgICAgIClcclxuICAgIH1cclxufVxyXG5cclxudHlwZSBSZWdpc3Ryb0Rlc3Rpbm9zPXtbZGVzdGlubyBpbiBJZERlc3Rpbm9dOklkVmFyaWFibGV8bnVsbH07XHJcblxyXG5mdW5jdGlvbiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybzpDYXNpbGxlcm9zSW1wbGVtZW50YWRvcywgZGVzdGlub3M/OlJlZ2lzdHJvRGVzdGlub3MpOlJlZ2lzdHJvRGVzdGlub3N7XHJcbiAgICBpZihkZXN0aW5vcz09bnVsbCkgcmV0dXJuIG9idGVuZXJEZXN0aW5vc0Nhc2lsbGVyb3MoY2FzaWxsZXJvLCB7fSBhcyBSZWdpc3Ryb0Rlc3Rpbm9zKTtcclxuICAgIGlmKGNhc2lsbGVyby50aXBvYz09J0ZJTFRSTycpe1xyXG4gICAgICAgIGRlc3Rpbm9zW2Nhc2lsbGVyby5jYXNpbGxlcm9dPWNhc2lsbGVyby5jYXNpbGxlcm8gYXMgSWRWYXJpYWJsZTtcclxuICAgIH1lbHNlIGlmKGNhc2lsbGVyby50aXBvYyE9J0YnICYmIGNhc2lsbGVyby50aXBvYyE9J08nICYmIGNhc2lsbGVyby50aXBvYyE9J09NJyl7XHJcbiAgICAgICAgZGVzdGlub3NbY2FzaWxsZXJvLmNhc2lsbGVyb109Y2FzaWxsZXJvLnByaW1lcmFfdmFyaWFibGV8fG51bGxcclxuICAgIH1cclxuICAgIGlmKGNhc2lsbGVyby5jYXNpbGxlcm9zKXtcclxuICAgICAgICBjYXNpbGxlcm8uY2FzaWxsZXJvcy5mb3JFYWNoKGM9Pm9idGVuZXJEZXN0aW5vc0Nhc2lsbGVyb3MoYyxkZXN0aW5vcykpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlc3Rpbm9zO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZWxsZW5hckRlc3Rpbm9zKGVzdHJ1Y3R1cmE6RXN0cnVjdHVyYVJvd1ZhbGlkYXRvciwgZGVzdGlub3M6UmVnaXN0cm9EZXN0aW5vcyk6RXN0cnVjdHVyYVJvd1ZhbGlkYXRvcntcclxuICAgIGZ1bmN0aW9uIG9idGVuZXJEZXN0aW5vKGlkVmFyaWFibGVRdWVUaWVuZVVuRGVzdGlubzpJZFZhcmlhYmxlfG51bGx8dW5kZWZpbmVkfElkRmluKTpJZFZhcmlhYmxlfG51bGx7XHJcbiAgICAgICAgcmV0dXJuIGlkVmFyaWFibGVRdWVUaWVuZVVuRGVzdGlubz09J2ZpbicgYXMgSWRWYXJpYWJsZSA/ICdmaW4nIGFzIElkVmFyaWFibGUgOiBpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm8hPW51bGwgJiYgZGVzdGlub3NbaWRWYXJpYWJsZVF1ZVRpZW5lVW5EZXN0aW5vIGFzIElkRGVzdGlub10gfHwgbnVsbFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5lc3RydWN0dXJhLFxyXG4gICAgICAgIHZhcmlhYmxlczpsaWtlQXIoZXN0cnVjdHVyYS52YXJpYWJsZXMpLm1hcCh2YXJpYWJsZURlZj0+KHtcclxuICAgICAgICAgICAgLi4udmFyaWFibGVEZWYsXHJcbiAgICAgICAgICAgIHNhbHRvOm9idGVuZXJEZXN0aW5vKHZhcmlhYmxlRGVmLnNhbHRvKSxcclxuICAgICAgICAgICAgc2FsdG9Oc05yOm9idGVuZXJEZXN0aW5vKHZhcmlhYmxlRGVmLnNhbHRvTnNOciksXHJcbiAgICAgICAgICAgIG9wY2lvbmVzOnZhcmlhYmxlRGVmLm9wY2lvbmVzIT1udWxsID8gbGlrZUFyKHZhcmlhYmxlRGVmLm9wY2lvbmVzKS5tYXAob3BjaW9uRGVmPT4oe3NhbHRvOm9idGVuZXJEZXN0aW5vKG9wY2lvbkRlZi5zYWx0byl9KSkucGxhaW4oKTp1bmRlZmluZWRcclxuICAgICAgICB9KSkucGxhaW4oKVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZW5lcmFyRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcihjYXNpbGxlcm86Q2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIGlkRm9ybXVsYXJpbzogSWRGb3JtdWxhcmlvKTpFc3RydWN0dXJhUm93VmFsaWRhdG9ye1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmFJbmNvbXBsZXRhOkVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I9e3ZhcmlhYmxlczp7fSwgbWFyY2FGaW46J2Zpbid9IGFzIHVua25vd24gYXMgRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjtcclxuICAgIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbywgZXN0cnVjdHVyYUluY29tcGxldGEsIGNhc2lsbGVybywgXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZSB2ZXIgc2kgY3VhbHF1aWVyIGNvc2EgcHVlZGUgdGVuZXIgdW5pZGFkX2FuYWxpc2lzXHJcbiAgICAgICAgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpc1xyXG4gICAgKTtcclxuICAgIHZhciBkZXN0aW5vcz1vYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybyk7XHJcbiAgICByZXR1cm4gcmVsbGVuYXJEZXN0aW5vcyhlc3RydWN0dXJhSW5jb21wbGV0YSwgZGVzdGlub3MpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVNwZWNpYWxXb3Jkcyh0ZXh0OnN0cmluZywgbm9tYnJlOnN0cmluZywgYXBlbGxpZG86c3RyaW5nLCByZXN1bHRhZG86c3RyaW5nKTpzdHJpbmd7XHJcbiAgICBmdW5jdGlvbiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIodGV4dDpzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleHQuc2xpY2UoMSk7XHJcbiAgICB9XHJcbiAgICB2YXIgc2ltcGxpZmljYXRlZENoYXJzOntbazpzdHJpbmddOnN0cmluZ309e1xyXG4gICAgICAgIFwiI25vbWJyZVwiOmNhcGl0YWxpemVGaXJzdExldHRlcihub21icmUpLFxyXG4gICAgICAgIFwiI2FwZWxsaWRvXCI6Y2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGFwZWxsaWRvKSxcclxuICAgICAgICBcIiNyZXN1bHRhZG9cIjpyZXN1bHRhZG8sXHJcbiAgICB9O1xyXG4gICAgdmFyIHJlID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhzaW1wbGlmaWNhdGVkQ2hhcnMpLmpvaW4oXCJ8XCIpLFwiZ2lcIik7XHJcblxyXG4gICAgcmV0dXJuIHRleHQucmVwbGFjZShyZSwgZnVuY3Rpb24obWF0Y2hlZCl7XHJcbiAgICAgICAgcmV0dXJuIHNpbXBsaWZpY2F0ZWRDaGFyc1ttYXRjaGVkLnRvTG93ZXJDYXNlKCldO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnb3RvU2luY3Jvbml6YXIoKXtcclxuICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL21lbnUjaT1zaW5jcm9uaXphcmApO1xyXG4gICAgbG9jYXRpb24ucmVsb2FkKCk7ICAgXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnb3RvQ2FtcG8oKXtcclxuICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL2NhbXBvYCk7XHJcbiAgICBsb2NhdGlvbi5yZWxvYWQoKTsgICBcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdvdG9Db25zaXN0aXIob3BlcmF0aXZvOklkT3BlcmF0aXZvLHRhcmVhOklkVGFyZWEsIGVuYzpJZEVuYyl7XHJcbiAgICAvLyBUT0RPLTIwMjMtMDM6IHByb2JhciBjb24gZXN0bzpcclxuICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL21lbnUjdz1jb25zaXN0aXJfZW5jdWVzdGEmdXA9JHtKU09ONGFsbC50b1VybCh7b3BlcmF0aXZvLCB0YXJlYSwgZW5jfSl9JmF1dG9wcm9jZWQ9dHJ1ZWApO1xyXG4gICAgLy8gaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAke2xvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZX0vLi4vbWVudSN3PWNvbnNpc3Rpcl9lbmN1ZXN0YSZ1cD17XCJvcGVyYXRpdm9cIjpcIiR7b3BlcmF0aXZvfVwiLFwidGFyZWFcIjpcIiR7dGFyZWF9XCIsXCJlbmN1ZXN0YVwiOiR7ZW5jdWVzdGF9fSZhdXRvcHJvY2VkPXRydWVgKTtcclxuICAgIGxvY2F0aW9uLnJlbG9hZCgpOyAgIFxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FjaGVWZXJzaW9uKCl7XHJcbiAgICByZXR1cm4gbXkuZ2V0TG9jYWxWYXIoJ2FwcC1jYWNoZS12ZXJzaW9uJyk7XHJcbn1cclxuXHJcbnZhciByZWRpcmVjdElmTm90TG9nZ2VkID0gZnVuY3Rpb24gcmVkaXJlY3RJZk5vdExvZ2dlZChlcnI6RXJyb3Ipe1xyXG4gICAgaWYoZXJyLm1lc3NhZ2UgPT0gbXkubWVzc2FnZXMubm90TG9nZ2VkKXtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL2xvZ2luJHtsb2NhdGlvbi5oYXNofWApO1xyXG4gICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsgICBcclxuICAgICAgICB9LDE1MDApXHJcbiAgICAgICAgXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmFlckVzdHJ1Y3R1cmEocGFyYW1zOntvcGVyYXRpdm86IHN0cmluZ30pe1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmEgPSAgYXdhaXQgbXkuYWpheC5vcGVyYXRpdm9fZXN0cnVjdHVyYV9jb21wbGV0YShwYXJhbXMpO1xyXG4gICAgdmFyIGNhc2lsbGVyb3NPcmlnaW5hbGVzOnt9ID0gZXN0cnVjdHVyYS5mb3JtdWxhcmlvcztcclxuICAgIC8vVE9ETzogR0VORVJBTElaQVJcclxuICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgLy8gY2FzaWxsZXJvc09yaWdpbmFsZXNbJ0Y6RjJfcGVyc29uYXMnXT1jYXNpbGxlcm9zT3JpZ2luYWxlc1snRjpGMiddLmNoaWxkcy5maW5kKGNhc2lsbGVybz0+Y2FzaWxsZXJvLmRhdGEuY2FzaWxsZXJvPT0nTFAnKTtcclxuICAgIHZhciBtYWluRm9ybTpJZEZvcm11bGFyaW98dW5kZWZpbmVkO1xyXG4gICAgLy9AdHMtaWdub3JlXHJcbiAgICB2YXIgY2FzaWxsZXJvc1RvZG9zRm9ybXVsYXJpb3M6e1tmIGluIElkRm9ybXVsYXJpb106e2Nhc2lsbGVyb3M6Rm9ybXVsYXJpbywgZXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjpFc3RydWN0dXJhUm93VmFsaWRhdG9yfX09XHJcbiAgICAgICAgbGlrZUFyKGNhc2lsbGVyb3NPcmlnaW5hbGVzKS5tYXAoXHJcbiAgICAgICAgICAgIChjYXNpbGxlcm9zSmVyYXJxdWl6YWRvczphbnksIGlkRm9ybXVsYXJpbyk9PntcclxuICAgICAgICAgICAgICAgIHZhciBjYXNpbGxlcm9zQXBsYW5hZG9zOkNhc2lsbGVyb3NJbXBsZW1lbnRhZG9zID0gYXBsYW5hckxhQ3VydmEoY2FzaWxsZXJvc0plcmFycXVpemFkb3MpO1xyXG4gICAgICAgICAgICAgICAgaWYoY2FzaWxsZXJvc0FwbGFuYWRvcy50aXBvYz09J0YnICYmIGNhc2lsbGVyb3NBcGxhbmFkb3MuZm9ybXVsYXJpb19wcmluY2lwYWwpe1xyXG4gICAgICAgICAgICAgICAgICAgIG1haW5Gb3JtPWlkRm9ybXVsYXJpbztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvczogY2FzaWxsZXJvc0FwbGFuYWRvcyxcclxuICAgICAgICAgICAgICAgICAgICBlc3RydWN0dXJhUm93VmFsaWRhdG9yOiBnZW5lcmFyRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcihjYXNpbGxlcm9zQXBsYW5hZG9zLCBpZEZvcm11bGFyaW8pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBsYWluKCk7XHJcbiAgICBlc3RydWN0dXJhLmZvcm11bGFyaW9zID0gY2FzaWxsZXJvc1RvZG9zRm9ybXVsYXJpb3NcclxuICAgIHJldHVybiBlc3RydWN0dXJhO1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG1UcmFlckRhdG9zRm9ybXVsYXJpbyhvcHRzOntvcGVyYXRpdm86SWRPcGVyYXRpdm8sIG1vZG9EZW1vOmJvb2xlYW4sIGZvclBrUmFpej86Rm9yUGtSYWl6fSl7XHJcbiAgICB2YXIgZ2V0Q2Fzb1N0YXRlPSgpOkNhc29TdGF0ZT0+IG15T3duLmdldExvY2FsVmFyKExPQ0FMX1NUT1JBR0VfU1RBVEVfTkFNRSk7XHJcbiAgICB2YXIgc2V0Q2Fzb1N0YXRlPShjYXNvU3RhdGU6Q2Fzb1N0YXRlKT0+IG15T3duLnNldExvY2FsVmFyKExPQ0FMX1NUT1JBR0VfU1RBVEVfTkFNRSwgY2Fzb1N0YXRlKTtcclxuICAgIFxyXG4gICAgdmFyIGxvYWRTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIGxvYWRTdGF0ZSgpOlByb21pc2U8Q2Fzb1N0YXRlPntcclxuICAgICAgICB2YXIgY2Fzb1N0YXRlOkNhc29TdGF0ZXxudWxsID0gZ2V0Q2Fzb1N0YXRlKCk7XHJcbiAgICAgICAgdmFyIGluaXRpYWxTdGF0ZSA9IHtcclxuICAgICAgICAgICAgb3BjaW9uZXM6e1xyXG4gICAgICAgICAgICAgICAgZm9yUGs6bnVsbCxcclxuICAgICAgICAgICAgICAgIHBpbGFGb3JQazpbXSxcclxuICAgICAgICAgICAgICAgIG1vZG9EZXNwbGllZ3VlOidyZWxldmFtaWVudG8nLFxyXG4gICAgICAgICAgICAgICAgbW9kb0RpcmVjdG86ZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBjb25DYW1wb09wY2lvbmVzOmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc2FsdG9BdXRvbWF0aWNvOnRydWUsIFxyXG4gICAgICAgICAgICAgICAgYmllbnZlbmlkbzp0cnVlLFxyXG4gICAgICAgICAgICAgICAgbW9kb0JvcnJhclJlc3B1ZXN0YTpudWxsLFxyXG4gICAgICAgICAgICB9IGFzIENhc29TdGF0ZVtcIm9wY2lvbmVzXCJdLCAvLyBwb25lciBsb3MgdmFsb3JlcyBwb3IgZGVmZWN0byBtw6FzIGFiYWpvXHJcbiAgICAgICAgICAgIG1vZG86e1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlIGVzIHVuIGJvb2xlYW5vIHBlcm8gcG9uZ28gYWjDrSBsb3MgZGF0b3MgZGUgZGVtbyFcclxuICAgICAgICAgICAgICAgIGRlbW86IFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICBteU93bi5jb25maWcuY29uZmlnLmFtYmllbnRlPT0ndGVzdCcgfHwgbXlPd24uY29uZmlnLmNvbmZpZy5hbWJpZW50ZT09J2RlbW8nLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBhcyBDYXNvU3RhdGU7XHJcbiAgICAgICAgaWYoY2Fzb1N0YXRlKXtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlID0ge1xyXG4gICAgICAgICAgICAgICAgLi4uaW5pdGlhbFN0YXRlLCBcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOmNhc29TdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihvcHRzLmZvclBrUmFpeil7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5mb3JQaz1vcHRzLmZvclBrUmFpejtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLm1vZG9EaXJlY3RvPSEhb3B0cy5mb3JQa1JhaXo7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5waWxhRm9yUGs9W107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBhZGRyUGFyYW1zPW15T3duLlVyaVNlYXJjaFRvT2JqZWN0KGxvY2F0aW9uLmhhc2h8fGxvY2F0aW9uLnNlYXJjaHx8JycpO1xyXG4gICAgICAgIGlmKGFkZHJQYXJhbXMuc3RhdGVfZm9yUGspe1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMuZm9yUGs9SlNPTi5wYXJzZShhZGRyUGFyYW1zLnN0YXRlX2ZvclBrKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoYWRkclBhcmFtcy5zdGF0ZV9waWxhRm9yUGspe1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMucGlsYUZvclBrPShhZGRyUGFyYW1zLnN0YXRlX3BpbGFGb3JQayBhcyBzdHJpbmcpLnNwbGl0KCd8JykubWFwKGo9PkpTT040YWxsLnBhcnNlKGopKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcclxuICAgIH1cclxuICAgIHZhciBzYXZlU3RhdGUgPSBmdW5jdGlvbiBzYXZlU3RhdGUoc3RhdGU6Q2Fzb1N0YXRlKXtcclxuICAgICAgICBzZXRDYXNvU3RhdGUoc3RhdGUpO1xyXG4gICAgfVxyXG4gICAgLyogREVGSU5JQ0lPTiBDT05UUk9MQURPUiAqL1xyXG4gICAgdmFyIGluaXRpYWxTdGF0ZTpDYXNvU3RhdGUgPSBhd2FpdCBsb2FkU3RhdGUoKTtcclxuICAgIGNvbnN0IGhkclJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKHJlZHVjZXJzLCBpbml0aWFsU3RhdGUpO1xyXG4gICAgLyogRklOIERFRklOSUNJT04gQ09OVFJPTEFET1IgKi9cclxuICAgIC8qIENBUkdBIFkgR1VBUkRBRE8gREUgU1RBVEUgKi9cclxuICAgIC8qIENSRUFDSU9OIFNUT1JFICovXHJcbiAgICBjb25zdCBzdG9yZSA9IGNyZWF0ZVN0b3JlKGhkclJlZHVjZXIsIGluaXRpYWxTdGF0ZSk7IFxyXG4gICAgc2F2ZVN0YXRlKHN0b3JlLmdldFN0YXRlKCkpO1xyXG4gICAgc3RvcmUuc3Vic2NyaWJlKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgIHNhdmVTdGF0ZShzdG9yZS5nZXRTdGF0ZSgpKTtcclxuICAgIH0pO1xyXG4gICAgLyogRklOIENSRUFDSU9OIFNUT1JFICovXHJcbiAgICAvL0hEUiBDT04gU1RPUkUgQ1JFQURPXHJcbiAgICByZXR1cm4gc3RvcmU7XHJcbn0iXX0=
@@ -463,6 +463,7 @@ export type EstadoAccion = {
463
463
  eaccion_direccion: DireccionAccion;
464
464
  path_icono_svg: string;
465
465
  nombre_procedure: string;
466
+ nombre_wscreen: string;
466
467
  desactiva_boton: boolean;
467
468
  confirma: boolean;
468
469
  };