dmencu 1.0.32 → 1.0.34

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.
Files changed (29) hide show
  1. package/dist/server/server/Copiar (1) procedures-dmencu.d.ts +11 -0
  2. package/dist/server/server/Copiar (1) procedures-dmencu.js +1531 -0
  3. package/dist/server/server/Copiar (2) procedures-dmencu.d.ts +11 -0
  4. package/dist/server/server/Copiar (2) procedures-dmencu.js +1655 -0
  5. package/dist/server/server/app-dmencu.js +8 -8
  6. package/dist/server/server/procedures-dmencu.js +18 -5
  7. package/dist/server/server/procedures-dmencu_raquel.d.ts +11 -0
  8. package/dist/server/server/procedures-dmencu_raquel.js +1655 -0
  9. package/dist/server/server/table-varcal.d.ts +1 -0
  10. package/dist/server/server/table-varcal.js +25 -0
  11. package/dist/server/server/table-variables_c.d.ts +2 -0
  12. package/dist/server/server/table-variables_c.js +23 -0
  13. package/install/roles.tab +4 -2
  14. package/install/roles_permisos.tab +22 -0
  15. package/package.json +1 -1
  16. package/dist/server/server/table-inconsistencias_no_cumple_condicion.d.ts +0 -2
  17. package/dist/server/server/table-inconsistencias_no_cumple_condicion.js +0 -31
  18. package/dist/server/server/table-inconsistencias_no_cumplen_condicion.d.ts +0 -3
  19. package/dist/server/server/table-inconsistencias_no_cumplen_condicion.js +0 -38
  20. package/dist/server/server/table-momento_consistencia_tarea_rol.d.ts +0 -2
  21. package/dist/server/server/table-momento_consistencia_tarea_rol.js +0 -34
  22. package/dist/server/server/table-momento_consistencia_tarea_roles.d.ts +0 -2
  23. package/dist/server/server/table-momento_consistencia_tarea_roles.js +0 -33
  24. package/dist/server/server/table-roles copy.d.ts +0 -2
  25. package/dist/server/server/table-roles copy.js +0 -33
  26. package/dist/server/server/table-tareas_tem_fin_campo copy.d.ts +0 -3
  27. package/dist/server/server/table-tareas_tem_fin_campo copy.js +0 -46
  28. package/dist/server/server/table-tem copy.d.ts +0 -3
  29. package/dist/server/server/table-tem copy.js +0 -238
@@ -1,238 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "procesamiento", "sql-tools"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.getDomicilioFields = void 0;
13
- exports.tem = tem;
14
- const procesamiento_1 = require("procesamiento");
15
- const sqlTools = require("sql-tools");
16
- var getDomicilioFields = () => [
17
- { name: 'codcalle', typeName: 'integer', editable: false },
18
- { name: 'nomcalle', typeName: 'text', editable: false },
19
- { name: 'nrocatastral', typeName: 'integer', editable: false },
20
- { name: 'piso', typeName: 'text', editable: false },
21
- { name: 'departamento', typeName: 'text', editable: false },
22
- { name: 'habitacion', typeName: 'text', editable: false },
23
- { name: 'sector', typeName: 'text', editable: false },
24
- { name: 'edificio', typeName: 'text', editable: false },
25
- { name: 'entrada', typeName: 'text', editable: false },
26
- { name: 'barrio', typeName: 'text', editable: false },
27
- ];
28
- exports.getDomicilioFields = getDomicilioFields;
29
- function tem(context, opts) {
30
- var _a, _b, _c, _d, _e, _f;
31
- var opts = opts || {};
32
- var recepcion = opts.recepcion ? '_recepcion' : '';
33
- var be = context.be;
34
- var puedeEditarCampo = context.forDump || ((_b = (_a = context.puede) === null || _a === void 0 ? void 0 : _a.campo) === null || _b === void 0 ? void 0 : _b.administrar) || context.user.rol === 'recepcionista';
35
- var puedeEditarProc = context.forDump || ((_d = (_c = context.puede) === null || _c === void 0 ? void 0 : _c.encuestas) === null || _d === void 0 ? void 0 : _d.procesar);
36
- var columnasAreasParaLaTem = ['obs_recepcionista', 'verificado_rec', 'recepcionista'];
37
- var columnasNoRea = [
38
- { name: 'gru_no_rea', expr: 'grupo' }
39
- ];
40
- var columnasSoloTem = [
41
- 'enc_original', 'json_encuesta', 'json_backup', 'fecha_modif_encuesta', 'fecha_backup',
42
- 'h4', 'x', 'y', 'fexp'
43
- ];
44
- var def = {
45
- name: `tem${recepcion}`,
46
- tableName: 'tem',
47
- muestraAbrirEnTodasLasTareas: true,
48
- allow: {
49
- insert: false,
50
- delete: context.forDump,
51
- },
52
- editable: puedeEditarCampo || puedeEditarProc,
53
- hiddenColumns: [
54
- 'seleccionado_ant', 'cita', 'notas', 'cluster',
55
- 'codviviendaparticular', 'casa', 'obsdatosdomicilio', 'obsconjunto', 'reserva', 'rotacion_etoi', 'rotacion_eah',
56
- 'trimestre', 'procedencia', 'sel_etoi_villa', 'marco', 'semana', 'periodicidad',
57
- 'cargado_dm', 'estados__permite_editar_encuesta'
58
- ],
59
- "fields": [
60
- { name: 'operativo', typeName: 'text', editable: false, nullable: false, defaultValue: 'etoi211' },
61
- { name: 'enc', typeName: 'text', editable: false, nullable: false },
62
- { name: "abrir", typeName: 'text', editable: false, inTable: false, clientSide: 'abrir' },
63
- { name: "consistir", typeName: 'text', editable: false, inTable: false, clientSide: 'consistir' },
64
- { name: "cluster", typeName: 'integer', editable: false, isName: true },
65
- { name: 'tarea_actual', typeName: 'text', editable: false },
66
- { name: "habilitar", typeName: "text", editable: false, inTable: false, clientSide: 'habilitar' },
67
- { name: "habilitada", typeName: 'boolean', editable: puedeEditarCampo, nullable: false },
68
- { name: 'area', typeName: 'integer', editable: false },
69
- { name: 'zona', typeName: 'text', editable: false },
70
- { name: 'enc_ant', typeName: 'text', editable: false },
71
- { name: 'area_ant', typeName: 'integer', editable: false },
72
- { name: 'seleccionado_ant', typeName: 'text', editable: false },
73
- { name: 'cita', typeName: 'text', editable: true },
74
- { name: 'rea', typeName: 'integer', editable: false },
75
- { name: 'norea', typeName: 'integer', editable: false },
76
- { name: 'cant_h', typeName: 'integer', editable: false },
77
- { name: 'cant_p', typeName: 'integer', editable: false },
78
- { name: 'seleccionado', typeName: 'text', editable: false },
79
- // {name:'sexo_sel' , typeName:'integer' , editable: false },
80
- // {name:'edad_sel' , typeName:'integer' , editable: false },
81
- { name: 'resultado', typeName: 'text', editable: false },
82
- { name: 'gru_no_rea', typeName: 'text', editable: false, inTable: false },
83
- { name: 'resumen_estado', typeName: 'text', editable: false },
84
- { name: 'cargado', typeName: 'boolean', editable: false, inTable: false },
85
- //{name:'encu_habilitada' , typeName:'boolean' , editable: false , inTable: false },
86
- //{name:'encu_cargado' , typeName:'boolean' , editable: false , inTable: false },
87
- { name: 'encuestador', typeName: 'text', editable: false, inTable: false },
88
- { name: 'nombre_enc', typeName: 'text', inTable: false },
89
- { name: 'apellido_enc', typeName: 'text', inTable: false },
90
- //{name:'recu_habilitada' , typeName:'boolean' , editable: false , inTable: false },
91
- //{name:'recu_cargado' , typeName:'boolean' , editable: false , inTable: false },
92
- { name: 'recuperador', typeName: 'text', editable: false, inTable: false },
93
- { name: 'nombre_rec', typeName: 'text', inTable: false },
94
- { name: 'apellido_rec', typeName: 'text', inTable: false },
95
- //{name:'supe_habilitada' , typeName:'boolean' , editable: false , inTable: false },
96
- //{name:'supe_cargado' , typeName:'boolean' , editable: false , inTable: false },
97
- { name: 'supervisor', typeName: 'text', editable: false, inTable: false },
98
- { name: 'nombre_sup', typeName: 'text', inTable: false },
99
- { name: 'apellido_sup', typeName: 'text', inTable: false },
100
- { name: 'rea_sup', typeName: 'integer', editable: false },
101
- { name: 'norea_sup', typeName: 'integer', editable: false },
102
- { name: 'resumen_estado_sup', typeName: 'text', editable: false },
103
- { name: 'pre_sorteo', typeName: 'integer', editable: false, visible: false },
104
- { name: 'supervision_aleatoria', typeName: 'integer', editable: false },
105
- { name: 'supervision_dirigida', typeName: 'integer', editable: false },
106
- { name: 'supervision', typeName: 'integer', editable: false },
107
- { name: 'result_sup', typeName: 'integer', editable: puedeEditarCampo },
108
- { name: 'fin_campo', typeName: 'text', editable: puedeEditarCampo },
109
- { name: 'proie', typeName: 'text', editable: puedeEditarCampo || puedeEditarProc },
110
- { name: 'pase_tabla', typeName: 'text', editable: false },
111
- ...(0, exports.getDomicilioFields)(),
112
- //{name: "verificar" , typeName:'boolean', editable:true, inTable:false, clientSide:'verificarCaso'},
113
- //{name: "finalizar_campo" , typeName:'boolean', editable:true, inTable:false, clientSide:'finalizarCampo'}, //fin_de_campo
114
- //{name: "procesamiento" , typeName:'boolean', editable:true, inTable:false, clientSide:'pasarAProcesamiento', label: 'pasar a procesamiento'}, //procesamiento
115
- { name: 'fexp', typeName: 'integer', editable: false },
116
- { name: 'areaup', typeName: 'text', editable: false },
117
- { name: 'codpos', typeName: 'integer', editable: false },
118
- { name: 'dominio', typeName: 'integer', editable: false },
119
- { name: 'estrato_ing', typeName: 'integer', editable: false },
120
- { name: 'id_marco', typeName: 'bigint', editable: false },
121
- { name: 'obs', typeName: 'text', editable: false },
122
- { name: 'nrocomuna', typeName: 'integer', editable: false },
123
- { name: 'nrofraccion', typeName: 'integer', editable: false },
124
- { name: 'nroradio', typeName: 'integer', editable: false },
125
- { name: 'nromanzana', typeName: 'integer', editable: false },
126
- { name: 'nrolado', typeName: 'integer', editable: false },
127
- { name: 'usodomicilio', typeName: 'integer', editable: false },
128
- { name: 'orden_relevamiento', typeName: 'integer', editable: false },
129
- { name: 'mapa', typeName: 'integer', editable: false },
130
- { name: "consistido", typeName: 'timestamp', editable: false, inTable: false },
131
- { name: 'cargado_dm', typeName: 'text', editable: false, inTable: false },
132
- { name: 'participacion', typeName: 'integer', editable: false, visible: true },
133
- { name: 'rotacion', typeName: 'integer', editable: false, visible: true },
134
- { name: 'clase', typeName: 'text', editable: false, visible: true },
135
- { name: 'panel', typeName: 'integer', editable: false, visible: true },
136
- //vacios o poco interesantes
137
- { name: 'codviviendaparticular', typeName: 'text', editable: false },
138
- { name: 'casa', typeName: 'text', editable: false },
139
- { name: 'obsdatosdomicilio', typeName: 'text', editable: false },
140
- { name: 'obsconjunto', typeName: 'text', editable: false },
141
- { name: 'reserva', typeName: 'integer', editable: false },
142
- { name: 'rotacion_etoi', typeName: 'integer', editable: false, visible: false },
143
- { name: 'rotacion_eah', typeName: 'integer', editable: false, visible: false },
144
- { name: 'trimestre', typeName: 'integer', editable: false, visible: false },
145
- { name: 'procedencia', typeName: 'text', editable: false, visible: false },
146
- { name: 'sel_etoi_villa', typeName: 'integer', editable: false, visible: false },
147
- { name: 'marco', typeName: 'integer', editable: false, visible: false },
148
- { name: 'semana', typeName: 'integer', editable: false, visible: false },
149
- { name: 'periodicidad', typeName: 'text', editable: false, visible: false },
150
- //solo tem
151
- { name: 'fecha_modif_encuesta', typeName: "timestamp", editable: false },
152
- { name: 'json_encuesta', typeName: 'jsonb', editable: false },
153
- { name: 'fecha_backup', typeName: "timestamp", editable: false },
154
- { name: "json_backup", typeName: 'jsonb', editable: false, visible: false },
155
- { name: "token_autogenerado_dm", typeName: 'text', editable: false, visible: false },
156
- { name: "enc_autogenerado_dm", typeName: 'text', editable: false },
157
- { name: "h4", typeName: 'text', editable: false },
158
- { name: "x", typeName: 'decimal', editable: false },
159
- { name: "y", typeName: 'decimal', editable: false },
160
- { name: 'notas', typeName: 'text', editable: false, inTable: false },
161
- { name: "modificado", typeName: 'timestamp', editable: false },
162
- { name: "libre", typeName: "boolean", defaultDbValue: "true", visible: false, editable: false },
163
- { name: "fecha_bloqueo", typeName: "timestamp", visible: false, editable: false }
164
- //{name:'obs_sup' , typeName:'text' , editable: isSupervisor },
165
- //{name:'obs_coor' , typeName:'text' , editable: isCoordinador || isSubCoordinador },
166
- ],
167
- "primaryKey": ["operativo", "enc"],
168
- foreignKeys: [
169
- { references: 'areas', fields: ['operativo', 'area'] },
170
- {
171
- references: 'tareas',
172
- fields: [
173
- { source: 'operativo', target: 'operativo' },
174
- { source: 'tarea_actual', target: 'tarea' }
175
- ],
176
- alias: 'taract'
177
- },
178
- // {references:'usuarios', fields:[{source:'carga_persona', target:'idper'}], displayFields:['apellido','nombre']},
179
- ],
180
- softForeignKeys: [
181
- { references: 'tokens', fields: [{ source: 'cargado_dm', target: 'token' }], displayFields: ['username'], displayAfterFieldName: 'cargado' }
182
- ],
183
- "detailTables": [
184
- { table: "inconsistencias", abr: "I", fields: [{ source: 'operativo', target: 'operativo' }, { source: 'enc', target: 'vivienda' }] },
185
- { table: "historial_tem", abr: "H", fields: ['operativo', 'enc'] }
186
- ],
187
- constraints: [
188
- { constraintType: 'check', consName: "vresult_sup_ck", expr: "(result_sup between 1 and 9 or result_sup in (11,12,21,22 ) or result_sup between 60 and 68)" },
189
- { constraintType: 'unique', consName: "autogenerado_dm_uk", fields: ['token_autogenerado_dm', 'enc_autogenerado_dm'] }
190
- ]
191
- };
192
- if (opts.recepcion) {
193
- def.fields = def.fields.filter(f => !columnasSoloTem.includes(f.name));
194
- def.hiddenColumns = [...def.hiddenColumns, ...columnasAreasParaLaTem.map(x => `areas__${x}`)];
195
- def.foreignKeys = (_e = def.foreignKeys) === null || _e === void 0 ? void 0 : _e.map(function (f) { if (f.references == 'areas') {
196
- f.displayFields = columnasAreasParaLaTem;
197
- } ; return f; });
198
- }
199
- else {
200
- (_f = def.detailTables) === null || _f === void 0 ? void 0 : _f.unshift({ table: "tareas_tem", abr: "T", fields: ['operativo', 'enc'], label: 'tareas' });
201
- def.fields = def.fields.filter(f => !columnasNoRea.map(fn => fn.name).includes(f.name));
202
- }
203
- ;
204
- const q = context.be.db.quoteIdent;
205
- def.sql = {
206
- isTable: !opts.recepcion, //TODO: resolver como sacarlo del dump
207
- isReferable: true,
208
- from: `
209
- (select
210
- ${def.fields.filter(f => f.inTable == undefined && !f.clientSide).map(f => 't.' + q(f.name)).join(',')}
211
- , tt.cargado, tt.cargado_dm
212
- , tt.etareas->'encu'->>'asignado' as encuestador
213
- , tt.etareas->'recu'->>'asignado' as recuperador
214
- , tt.etareas->'supe'->>'asignado' as supervisor
215
- , null notas
216
- , aux.consistido
217
- , usu_enc.nombre as nombre_enc
218
- , usu_enc.apellido as apellido_enc
219
- , usu_rec.nombre as nombre_rec
220
- , usu_rec.apellido as apellido_rec
221
- , usu_sup.nombre as nombre_sup
222
- , usu_sup.apellido as apellido_sup
223
- ${opts.recepcion ? columnasNoRea.map(v => '\n , ' + v.expr + ' as ' + v.name).join('') : ''}
224
- from tem t left join (
225
- select tt.operativo, tt.enc, bool_or(cargado) cargado, string_agg(cargado_dm,',') cargado_dm,jsonb_object_agg(tarea,jsonb_build_object('asignado',asignado,'cargado',cargado,'cargado_dm',cargado_dm))etareas
226
- from tareas_tem tt group by tt.operativo, tt.enc )tt on t.operativo=tt.operativo and t.enc=tt.enc
227
- left join no_rea y on y.no_rea::integer=t.norea
228
- left join ${sqlTools.quoteIdent(procesamiento_1.OperativoGenerator.mainTD)} aux on aux.operativo=t.operativo and aux.${sqlTools.quoteIdent(procesamiento_1.OperativoGenerator.mainTDPK)}=t.enc
229
- left join usuarios usu_enc on usu_enc.idper = tt.etareas->'encu'->>'asignado'
230
- left join usuarios usu_rec on usu_rec.idper = tt.etareas->'recu'->>'asignado'
231
- left join usuarios usu_sup on usu_sup.idper = tt.etareas->'supe'->>'asignado'
232
- )
233
- `
234
- };
235
- return def;
236
- }
237
- });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdGVtIGNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL3RhYmxlLXRlbSBjb3B5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztJQUFBLFlBQVksQ0FBQzs7O0lBb0JiLGtCQTRNSztJQTdOTCxpREFBa0Q7SUFDbEQsc0NBQXNDO0lBRy9CLElBQUksa0JBQWtCLEdBQUcsR0FBcUIsRUFBRSxDQUFDO1FBQ3BELEVBQUMsSUFBSSxFQUFDLFVBQVUsRUFBZSxRQUFRLEVBQUMsU0FBUyxFQUFHLFFBQVEsRUFBRSxLQUFLLEVBQUc7UUFDdEUsRUFBQyxJQUFJLEVBQUMsVUFBVSxFQUFlLFFBQVEsRUFBQyxNQUFNLEVBQU0sUUFBUSxFQUFFLEtBQUssRUFBRztRQUN0RSxFQUFDLElBQUksRUFBQyxjQUFjLEVBQVcsUUFBUSxFQUFDLFNBQVMsRUFBRyxRQUFRLEVBQUUsS0FBSyxFQUFHO1FBQ3RFLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBbUIsUUFBUSxFQUFDLE1BQU0sRUFBTSxRQUFRLEVBQUUsS0FBSyxFQUFHO1FBQ3RFLEVBQUMsSUFBSSxFQUFDLGNBQWMsRUFBVyxRQUFRLEVBQUMsTUFBTSxFQUFNLFFBQVEsRUFBRSxLQUFLLEVBQUc7UUFDdEUsRUFBQyxJQUFJLEVBQUMsWUFBWSxFQUFhLFFBQVEsRUFBQyxNQUFNLEVBQU0sUUFBUSxFQUFFLEtBQUssRUFBRztRQUN0RSxFQUFDLElBQUksRUFBQyxRQUFRLEVBQWlCLFFBQVEsRUFBQyxNQUFNLEVBQU0sUUFBUSxFQUFFLEtBQUssRUFBRztRQUN0RSxFQUFDLElBQUksRUFBQyxVQUFVLEVBQWUsUUFBUSxFQUFDLE1BQU0sRUFBTSxRQUFRLEVBQUUsS0FBSyxFQUFHO1FBQ3RFLEVBQUMsSUFBSSxFQUFDLFNBQVMsRUFBZ0IsUUFBUSxFQUFDLE1BQU0sRUFBTSxRQUFRLEVBQUUsS0FBSyxFQUFHO1FBQ3RFLEVBQUMsSUFBSSxFQUFDLFFB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QUMvRCxXQUFXLEVBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUM7O3NCQUVLLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQSxFQUFFLENBQUEsQ0FBQyxDQUFDLE9BQU8sSUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxFQUFFLENBQUEsSUFBSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDOzs7Ozs7Ozs7Ozs7O3NCQWE1RixJQUFJLENBQUMsU0FBUyxDQUFBLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxFQUFFLENBQUEsV0FBVyxHQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUUsTUFBTSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLEVBQUU7Ozs7O3dDQUtwRSxRQUFRLENBQUMsVUFBVSxDQUFDLGtDQUFrQixDQUFDLE1BQU0sQ0FBQyw2Q0FBNkMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxrQ0FBa0IsQ0FBQyxRQUFRLENBQUM7Ozs7O2FBS3RLO1NBQ0osQ0FBQztRQUNGLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuaW1wb3J0IHtUYWJsZURlZmluaXRpb24sIENvbnRleHRGb3JEdW1wLCBGaWVsZERlZmluaXRpb259IGZyb20gXCIuL3R5cGVzLWRtZW5jdVwiO1xyXG5pbXBvcnQge09wZXJhdGl2b0dlbmVyYXRvciB9IGZyb20gXCJwcm9jZXNhbWllbnRvXCI7XHJcbmltcG9ydCAqIGFzIHNxbFRvb2xzIGZyb20gJ3NxbC10b29scyc7XHJcblxyXG5cclxuZXhwb3J0IHZhciBnZXREb21pY2lsaW9GaWVsZHMgPSAoKTpGaWVsZERlZmluaXRpb25bXSA9PiBbXHJcbiAgICB7bmFtZTonY29kY2FsbGUnICAgICAgICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG4gICAge25hbWU6J25vbWNhbGxlJyAgICAgICAgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgIHtuYW1lOiducm9jYXRhc3RyYWwnICAgICAgICAgLCB0eXBlTmFtZTonaW50ZWdlcicgLCBlZGl0YWJsZTogZmFsc2UgIH0sXHJcbiAgICB7bmFtZToncGlzbycgICAgICAgICAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG4gICAge25hbWU6J2RlcGFydGFtZW50bycgICAgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgIHtuYW1lOidoYWJpdGFjaW9uJyAgICAgICAgICAgLCB0eXBlTmFtZTondGV4dCcgICAgLCBlZGl0YWJsZTogZmFsc2UgIH0sXHJcbiAgICB7bmFtZTonc2VjdG9yJyAgICAgICAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG4gICAge25hbWU6J2VkaWZpY2lvJyAgICAgICAgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgIHtuYW1lOidlbnRyYWRhJyAgICAgICAgICAgICAgLCB0eXBlTmFtZTondGV4dCcgICAgLCBlZGl0YWJsZTogZmFsc2UgIH0sXHJcbiAgICB7bmFtZTonYmFycmlvJyAgICAgICAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG5dXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdGVtKGNvbnRleHQ6Q29udGV4dEZvckR1bXAsIG9wdHM/OmFueSk6VGFibGVEZWZpbml0aW9uIHtcclxuICAgIHZhciBvcHRzPW9wdHN8fHt9O1xyXG4gICAgdmFyIHJlY2VwY2lvbj1vcHRzLnJlY2VwY2lvbj8nX3JlY2VwY2lvbic6Jyc7XHJcbiAgICB2YXIgYmU9Y29udGV4dC5iZTtcclxuICAgIHZhciBwdWVkZUVkaXRhckNhbXBvID0gY29udGV4dC5mb3JEdW1wIHx8IGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcnx8Y29udGV4dC51c2VyLnJvbD09PSdyZWNlcGNpb25pc3RhJztcclxuICAgIHZhciBwdWVkZUVkaXRhclByb2MgPSBjb250ZXh0LmZvckR1bXAgfHwgY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcjtcclxuXHJcbiAgICB2YXIgY29sdW1uYXNBcmVhc1BhcmFMYVRlbT1bJ29ic19yZWNlcGNpb25pc3RhJywndmVyaWZpY2Fkb19yZWMnLCdyZWNlcGNpb25pc3RhJ107XHJcblxyXG4gICAgdmFyIGNvbHVtbmFzTm9SZWE9W1xyXG4gICAgICAgIHtuYW1lOidncnVfbm9fcmVhJywgZXhwcjogJ2dydXBvJyB9XHJcbiAgICBdO1xyXG4gICAgdmFyIGNvbHVtbmFzU29sb1RlbT1bXHJcbiAgICAgICAgICAnZW5jX29yaWdpbmFsJyAgICwgJ2pzb25fZW5jdWVzdGEnICAgICAgLCAnanNvbl9iYWNrdXAnLCAnZmVjaGFfbW9kaWZfZW5jdWVzdGEnLCAnZmVjaGFfYmFja3VwJ1xyXG4gICAgICAgICwgJ2g0JyAgICAgICAgICAgICAsICd4JyAgICAgICAsICd5JyAgICAgICwgJ2ZleHAnXHJcbiAgICBdO1xyXG4gICAgdmFyIGRlZjogVGFibGVEZWZpbml0aW9uPSB7XHJcbiAgICAgICAgbmFtZTpgdGVtJHtyZWNlcGNpb259YCxcclxuICAgICAgICB0YWJsZU5hbWU6J3RlbScsXHJcbiAgICAgICAgbXVlc3RyYUFicmlyRW5Ub2Rhc0xhc1RhcmVhczp0cnVlLFxyXG4gICAgICAgIGFsbG93OntcclxuICAgICAgICAgICAgaW5zZXJ0OmZhbHNlLFxyXG4gICAgICAgICAgICBkZWxldGU6Y29udGV4dC5mb3JEdW1wLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZWRpdGFibGU6IHB1ZWRlRWRpdGFyQ2FtcG98fHB1ZWRlRWRpdGFyUHJvYyxcclxuICAgICAgICBoaWRkZW5Db2x1bW5zOltcclxuICAgICAgICAgICAgJ3NlbGVjY2lvbmFkb19hbnQnLCdjaXRhJywnbm90YXMnLCAnY2x1c3RlcicsXHJcbiAgICAgICAgICAgICdjb2R2aXZpZW5kYXBhcnRpY3VsYXInLCAnY2FzYScsICdvYnNkYXRvc2RvbWljaWxpbycsICdvYnNjb25qdW50bycsICdyZXNlcnZhJywgJ3JvdGFjaW9uX2V0b2knLCAncm90YWNpb25fZWFoJ1xyXG4gICAgICAgICAgICAsICd0cmltZXN0cmUnICAgLCAncHJvY2VkZW5jaWEnLCAnc2VsX2V0b2lfdmlsbGEnICAgLCAnbWFyY28nICAgICAgLCAnc2VtYW5hJyAsICdwZXJpb2RpY2lkYWQnIFxyXG4gICAgICAgICAgICAsICdjYXJnYWRvX2RtJywgJ2VzdGFkb3NfX3Blcm1pdGVfZWRpdGFyX2VuY3Vlc3RhJ1xyXG4gICAgICAgIF0sXHJcbiAgICAgICAgXCJmaWVsZHNcIjogW1xyXG4gICAgICAgICAgICB7bmFtZTonb3BlcmF0aXZvJyAgICAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgZWRpdGFibGU6IGZhbHNlICAsIG51bGxhYmxlOiBmYWxzZSwgZGVmYXVsdFZhbHVlOiAnZXRvaTIxMSd9LFxyXG4gICAgICAgICAgICB7bmFtZTonZW5jJyAgICAgICAgICAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgZWRpdGFibGU6IGZhbHNlICAsIG51bGxhYmxlOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge25hbWU6IFwiYWJyaXJcIiAgICAgICAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgZWRpdGFibGU6IGZhbHNlICAsIGluVGFibGU6ZmFsc2UsIGNsaWVudFNpZGU6J2FicmlyJ30sXHJcbiAgICAgICAgICAgIHtuYW1lOlwiY29uc2lzdGlyXCIgICAgICAgICAgICAsIHR5cGVOYW1lOiAndGV4dCcgICAsIGVkaXRhYmxlOiBmYWxzZSAgLCBpblRhYmxlOmZhbHNlLCBjbGllbnRTaWRlOidjb25zaXN0aXInfSxcclxuICAgICAgICAgICAge25hbWU6IFwiY2x1c3RlclwiICAgICAgICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInICwgZWRpdGFibGU6IGZhbHNlLCBpc05hbWU6dHJ1ZX0sXHJcbiAgICAgICAgICAgIHtuYW1lOid0YXJlYV9hY3R1YWwnICAgICAgICAgLCB0eXBlTmFtZTondGV4dCcgICAgLCBlZGl0YWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOlwiaGFiaWxpdGFyXCIgICAgICAgICAgICAsIHR5cGVOYW1lOiBcInRleHRcIiAgICwgZWRpdGFibGU6ZmFsc2UgICAsIGluVGFibGU6ZmFsc2UsIGNsaWVudFNpZGU6J2hhYmlsaXRhcid9LFxyXG4gICAgICAgICAgICB7bmFtZTpcImhhYmlsaXRhZGFcIiAgICAgICAgICAgLCB0eXBlTmFtZTogJ2Jvb2xlYW4nLCBlZGl0YWJsZTpwdWVkZUVkaXRhckNhbXBvLCBudWxsYWJsZTogZmFsc2V9LFxyXG4gICAgICAgICAgICB7bmFtZTonYXJlYScgICAgICAgICAgICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonem9uYScgICAgICAgICAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonZW5jX2FudCcgICAgICAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonYXJlYV9hbnQnICAgICAgICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonc2VsZWNjaW9uYWRvX2FudCcgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonY2l0YScgICAgICAgICAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgZWRpdGFibGU6IHRydWUgICB9LFxyXG4gICAgICAgICAgICB7bmFtZToncmVhJyAgICAgICAgICAgICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonbm9yZWEnICAgICAgICAgICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonY2FudF9oJyAgICAgICAgICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonY2FudF9wJyAgICAgICAgICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonc2VsZWNjaW9uYWRvJyAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG4vLyAgICAgICAgICAgIHtuYW1lOidzZXhvX3NlbCcgICAgICAgICAgICAgLCB0eXBlTmFtZTonaW50ZWdlcicgLCBlZGl0YWJsZTogZmFsc2UgIH0sXHJcbi8vICAgICAgICAgICAge25hbWU6J2VkYWRfc2VsJyAgICAgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J3Jlc3VsdGFkbycgICAgICAgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J2dydV9ub19yZWEnICAgICAgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGVkaXRhYmxlOiBmYWxzZSAsIGluVGFibGU6ZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidyZXN1bWVuX2VzdGFkbycgICAgICAgLCB0eXBlTmFtZTondGV4dCcgICAgLCBlZGl0YWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidjYXJnYWRvJyAgICAgICAgICAgICAgLCB0eXBlTmFtZTonYm9vbGVhbicgLCBlZGl0YWJsZTogZmFsc2UgLCBpblRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAgLy97bmFtZTonZW5jdV9oYWJpbGl0YWRhJyAgICAgICwgdHlwZU5hbWU6J2Jvb2xlYW4nICwgZWRpdGFibGU6IGZhbHNlICwgaW5UYWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIC8ve25hbWU6J2VuY3VfY2FyZ2FkbycgICAgICAgICAsIHR5cGVOYW1lOidib29sZWFuJyAsIGVkaXRhYmxlOiBmYWxzZSAsIGluVGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonZW5jdWVzdGFkb3InICAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgZWRpdGFibGU6IGZhbHNlICwgaW5UYWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidub21icmVfZW5jJyAgICAgICAgICAgLCB0eXBlTmFtZTondGV4dCcgICAgLCBpblRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J2FwZWxsaWRvX2VuYycgICAgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGluVGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICAvL3tuYW1lOidyZWN1X2hhYmlsaXRhZGEnICAgICAgLCB0eXBlTmFtZTonYm9vbGVhbicgLCBlZGl0YWJsZTogZmFsc2UgLCBpblRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAgLy97bmFtZToncmVjdV9jYXJnYWRvJyAgICAgICAgICwgdHlwZU5hbWU6J2Jvb2xlYW4nICwgZWRpdGFibGU6IGZhbHNlICwgaW5UYWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidyZWN1cGVyYWRvcicgICAgICAgICAgLCB0eXBlTmFtZTondGV4dCcgICAgLCBlZGl0YWJsZTogZmFsc2UgLCBpblRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J25vbWJyZV9yZWMnICAgICAgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGluVGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonYXBlbGxpZG9fcmVjJyAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgaW5UYWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIC8ve25hbWU6J3N1cGVfaGFiaWxpdGFkYScgICAgICAsIHR5cGVOYW1lOidib29sZWFuJyAsIGVkaXRhYmxlOiBmYWxzZSAsIGluVGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICAvL3tuYW1lOidzdXBlX2NhcmdhZG8nICAgICAgICAgLCB0eXBlTmFtZTonYm9vbGVhbicgLCBlZGl0YWJsZTogZmFsc2UgLCBpblRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J3N1cGVydmlzb3InICAgICAgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGVkaXRhYmxlOiBmYWxzZSAsIGluVGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonbm9tYnJlX3N1cCcgICAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgaW5UYWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidhcGVsbGlkb19zdXAnICAgICAgICAgLCB0eXBlTmFtZTondGV4dCcgICAgLCBpblRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J3JlYV9zdXAnICAgICAgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAgICAgLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICAgICAgICB7bmFtZTonbm9yZWFfc3VwJyAgICAgICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInICAgICAsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHtuYW1lOidyZXN1bWVuX2VzdGFkb19zdXAnICAgLCB0eXBlTmFtZTondGV4dCcgICAgICAgICwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAge25hbWU6J3ByZV9zb3J0ZW8nICAgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAgICAgLCBlZGl0YWJsZTogZmFsc2UsIHZpc2libGU6IGZhbHNlfSxcclxuICAgICAgICAgICAge25hbWU6J3N1cGVydmlzaW9uX2FsZWF0b3JpYScsIHR5cGVOYW1lOidpbnRlZ2VyJyAgICAgLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICAgICAgICB7bmFtZTonc3VwZXJ2aXNpb25fZGlyaWdpZGEnICwgdHlwZU5hbWU6J2ludGVnZXInICAgICAsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHtuYW1lOidzdXBlcnZpc2lvbicgICAgICAgICAgLCB0eXBlTmFtZTonaW50ZWdlcicgICAgICwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAge25hbWU6J3Jlc3VsdF9zdXAnICAgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAgICAgLCBlZGl0YWJsZTogcHVlZGVFZGl0YXJDYW1wb30sXHJcbiAgICAgICAgICAgIHtuYW1lOidmaW5fY2FtcG8nICAgICAgICAgICAgLCB0eXBlTmFtZTondGV4dCcgICAgLCBlZGl0YWJsZTogcHVlZGVFZGl0YXJDYW1wbyAgfSxcclxuICAgICAgICAgICAge25hbWU6J3Byb2llJyAgICAgICAgICAgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGVkaXRhYmxlOiBwdWVkZUVkaXRhckNhbXBvfHxwdWVkZUVkaXRhclByb2MgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidwYXNlX3RhYmxhJyAgICAgICAgICAgLCB0eXBlTmFtZTondGV4dCcgICAgLCBlZGl0YWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIC4uLmdldERvbWljaWxpb0ZpZWxkcygpLFxyXG4gICAgICAgICAgICAvL3tuYW1lOiBcInZlcmlmaWNhclwiICAgICAgICwgdHlwZU5hbWU6J2Jvb2xlYW4nLCBlZGl0YWJsZTp0cnVlLCBpblRhYmxlOmZhbHNlLCBjbGllbnRTaWRlOid2ZXJpZmljYXJDYXNvJ30sXHJcbiAgICAgICAgICAgIC8ve25hbWU6IFwiZmluYWxpemFyX2NhbXBvXCIgLCB0eXBlTmFtZTonYm9vbGVhbicsIGVkaXRhYmxlOnRydWUsIGluVGFibGU6ZmFsc2UsIGNsaWVudFNpZGU6J2ZpbmFsaXphckNhbXBvJ30sIC8vZmluX2RlX2NhbXBvXHJcbiAgICAgICAgICAgIC8ve25hbWU6IFwicHJvY2VzYW1pZW50b1wiICAgLCB0eXBlTmFtZTonYm9vbGVhbicsIGVkaXRhYmxlOnRydWUsIGluVGFibGU6ZmFsc2UsIGNsaWVudFNpZGU6J3Bhc2FyQVByb2Nlc2FtaWVudG8nLCBsYWJlbDogJ3Bhc2FyIGEgcHJvY2VzYW1pZW50byd9LCAvL3Byb2Nlc2FtaWVudG9cclxuICAgICAgICAgICAge25hbWU6J2ZleHAnICAgICAgICAgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J2FyZWF1cCcgICAgICAgICAgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J2NvZHBvcycgICAgICAgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J2RvbWluaW8nICAgICAgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J2VzdHJhdG9faW5nJyAgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J2lkX21hcmNvJyAgICAgICAgICAgICAsIHR5cGVOYW1lOidiaWdpbnQnICAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J29icycgICAgICAgICAgICAgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J25yb2NvbXVuYScgICAgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J25yb2ZyYWNjaW9uJyAgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J25yb3JhZGlvJyAgICAgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J25yb21hbnphbmEnICAgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J25yb2xhZG8nICAgICAgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J3Vzb2RvbWljaWxpbycgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J29yZGVuX3JlbGV2YW1pZW50bycgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J21hcGEnICAgICAgICAgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6IFwiY29uc2lzdGlkb1wiICAgICAgICAgICwgdHlwZU5hbWU6ICd0aW1lc3RhbXAnLCBlZGl0YWJsZTogZmFsc2UgLCBpblRhYmxlOmZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonY2FyZ2Fkb19kbScgICAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgZWRpdGFibGU6IGZhbHNlICwgaW5UYWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidwYXJ0aWNpcGFjaW9uJyAgICAgICAgLCB0eXBlTmFtZTonaW50ZWdlcicgLCBlZGl0YWJsZTogZmFsc2UgICx2aXNpYmxlOiB0cnVlICB9LFxyXG4gICAgICAgICAgICB7bmFtZToncm90YWNpb24nICAgICAgICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInICwgZWRpdGFibGU6IGZhbHNlICAsdmlzaWJsZTogdHJ1ZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J2NsYXNlJyAgICAgICAgICAgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGVkaXRhYmxlOiBmYWxzZSAgLHZpc2libGU6IHRydWUgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidwYW5lbCcgICAgICAgICAgICAgICAgLCB0eXBlTmFtZTonaW50ZWdlcicgLCBlZGl0YWJsZTogZmFsc2UgICx2aXNpYmxlOiB0cnVlICB9LFxyXG4gICAgICAgICAgICAvL3ZhY2lvcyBvIHBvY28gaW50ZXJlc2FudGVzXHJcbiAgICAgICAgICAgIHtuYW1lOidjb2R2aXZpZW5kYXBhcnRpY3VsYXInLCB0eXBlTmFtZTondGV4dCcgICAgLCBlZGl0YWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidjYXNhJyAgICAgICAgICAgICAgICAgLCB0eXBlTmFtZTondGV4dCcgICAgLCBlZGl0YWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidvYnNkYXRvc2RvbWljaWxpbycgICAgLCB0eXBlTmFtZTondGV4dCcgICAgLCBlZGl0YWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidvYnNjb25qdW50bycgICAgICAgICAgLCB0eXBlTmFtZTondGV4dCcgICAgLCBlZGl0YWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidyZXNlcnZhJyAgICAgICAgICAgICAgLCB0eXBlTmFtZTonaW50ZWdlcicgLCBlZGl0YWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidyb3RhY2lvbl9ldG9pJyAgICAgICAgLCB0eXBlTmFtZTonaW50ZWdlcicgLCBlZGl0YWJsZTogZmFsc2UgICx2aXNpYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J3JvdGFjaW9uX2VhaCcgICAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgLHZpc2libGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTondHJpbWVzdHJlJyAgICAgICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInICwgZWRpdGFibGU6IGZhbHNlICAsdmlzaWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidwcm9jZWRlbmNpYScgICAgICAgICAgLCB0eXBlTmFtZTondGV4dCcgICAgLCBlZGl0YWJsZTogZmFsc2UgICx2aXNpYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J3NlbF9ldG9pX3ZpbGxhJyAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJyAsIGVkaXRhYmxlOiBmYWxzZSAgLHZpc2libGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonbWFyY28nICAgICAgICAgICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInICwgZWRpdGFibGU6IGZhbHNlICAsdmlzaWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOidzZW1hbmEnICAgICAgICAgICAgICAgLCB0eXBlTmFtZTonaW50ZWdlcicgLCBlZGl0YWJsZTogZmFsc2UgICx2aXNpYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J3BlcmlvZGljaWRhZCcgICAgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGVkaXRhYmxlOiBmYWxzZSAgLHZpc2libGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICAvL3NvbG8gdGVtIFxyXG4gICAgICAgICAgICB7bmFtZTonZmVjaGFfbW9kaWZfZW5jdWVzdGEnICwgdHlwZU5hbWU6IFwidGltZXN0YW1wXCIsIGVkaXRhYmxlOmZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTonanNvbl9lbmN1ZXN0YScgICAgICAgICwgdHlwZU5hbWU6J2pzb25iJyAgICAgLCBlZGl0YWJsZTpmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J2ZlY2hhX2JhY2t1cCcgICAgICAgICAsIHR5cGVOYW1lOiBcInRpbWVzdGFtcFwiLCBlZGl0YWJsZTpmYWxzZX0sXHJcbiAgICAgICAgICAgIHtuYW1lOlwianNvbl9iYWNrdXBcIiAgICAgICAgICAsIHR5cGVOYW1lOidqc29uYicgICAsIGVkaXRhYmxlOiBmYWxzZSwgdmlzaWJsZTpmYWxzZX0sXHJcbiAgICAgICAgICAgIHtuYW1lOlwidG9rZW5fYXV0b2dlbmVyYWRvX2RtXCIsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGVkaXRhYmxlOiBmYWxzZSwgdmlzaWJsZTpmYWxzZX0sXHJcbiAgICAgICAgICAgIHtuYW1lOlwiZW5jX2F1dG9nZW5lcmFkb19kbVwiICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6XCJoNFwiICAgICAgICAgICAgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICAgICwgZWRpdGFibGU6IGZhbHNlICB9LFxyXG4gICAgICAgICAgICB7bmFtZTpcInhcIiAgICAgICAgICAgICAgICAgICAgLCB0eXBlTmFtZTonZGVjaW1hbCcgLCBlZGl0YWJsZTogZmFsc2UgIH0sXHJcbiAgICAgICAgICAgIHtuYW1lOlwieVwiICAgICAgICAgICAgICAgICAgICAsIHR5cGVOYW1lOidkZWNpbWFsJyAsIGVkaXRhYmxlOiBmYWxzZSAgfSxcclxuICAgICAgICAgICAge25hbWU6J25vdGFzJyAgICAgICAgICAgICAgICAsIHR5cGVOYW1lOid0ZXh0JyAgICAsIGVkaXRhYmxlOiBmYWxzZSwgaW5UYWJsZTpmYWxzZX0sXHJcbiAgICAgICAgICAgIHtuYW1lOlwibW9kaWZpY2Fkb1wiICAgICAgICAgICAsIHR5cGVOYW1lOiAndGltZXN0YW1wJywgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAge25hbWU6IFwibGlicmVcIiAsIHR5cGVOYW1lOiBcImJvb2xlYW5cIiwgZGVmYXVsdERiVmFsdWU6XCJ0cnVlXCIgICwgdmlzaWJsZTpmYWxzZSwgZWRpdGFibGU6ZmFsc2V9LFxyXG4gICAgICAgICAgICB7bmFtZTogXCJmZWNoYV9ibG9xdWVvXCIsIHR5cGVOYW1lOiBcInRpbWVzdGFtcFwiLCB2aXNpYmxlOmZhbHNlLCBlZGl0YWJsZTpmYWxzZX1cclxuICAgICAgICAgICAgLy97bmFtZTonb2JzX3N1cCcgICAgICAgICwgdHlwZU5hbWU6J3RleHQnICwgZWRpdGFibGU6IGlzU3VwZXJ2aXNvciAgICAgfSxcclxuICAgICAgICAgICAgLy97bmFtZTonb2JzX2Nvb3InICAgICAgICwgdHlwZU5hbWU6J3RleHQnICwgZWRpdGFibGU6IGlzQ29vcmRpbmFkb3IgfHwgaXNTdWJDb29yZGluYWRvciB9LCAgXHJcbiAgICAgICAgXSxcclxuICAgICAgICBcInByaW1hcnlLZXlcIjogWyBcIm9wZXJhdGl2b1wiLCBcImVuY1wiIF0sXHJcbiAgICAgICAgZm9yZWlnbktleXM6W1xyXG4gICAgICAgICAgICB7cmVmZXJlbmNlczonYXJlYXMnICAgLCBmaWVsZHM6WydvcGVyYXRpdm8nLCAnYXJlYSddfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlczondGFyZWFzJyAsIFxyXG4gICAgICAgICAgICAgICAgZmllbGRzOltcclxuICAgICAgICAgICAgICAgICAgICB7c291cmNlOidvcGVyYXRpdm8nLCB0YXJnZXQ6J29wZXJhdGl2byd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtzb3VyY2U6J3RhcmVhX2FjdHVhbCcsIHRhcmdldDondGFyZWEnfVxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIGFsaWFzOid0YXJhY3QnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgLy8gICAge3JlZmVyZW5jZXM6J3VzdWFyaW9zJywgZmllbGRzOlt7c291cmNlOidjYXJnYV9wZXJzb25hJywgdGFyZ2V0OidpZHBlcid9XSwgZGlzcGxheUZpZWxkczpbJ2FwZWxsaWRvJywnbm9tYnJlJ119LFxyXG4gICAgICAgIF0sICAgICAgICBcclxuICAgICAgICBzb2Z0Rm9yZWlnbktleXM6W1xyXG4gICAgICAgICAgICB7cmVmZXJlbmNlczondG9rZW5zJywgZmllbGRzOlt7c291cmNlOidjYXJnYWRvX2RtJywgdGFyZ2V0Oid0b2tlbid9XSwgZGlzcGxheUZpZWxkczpbJ3VzZXJuYW1lJ10sIGRpc3BsYXlBZnRlckZpZWxkTmFtZTonY2FyZ2Fkbyd9XHJcbiAgICAgICAgXSxcclxuICAgICAgICBcImRldGFpbFRhYmxlc1wiOiBbXHJcbiAgICAgICAgICAgIHt0YWJsZTogXCJpbmNvbnNpc3RlbmNpYXNcIiwgYWJyOiBcIklcIiwgZmllbGRzOiBbe3NvdXJjZTonb3BlcmF0aXZvJywgdGFyZ2V0OidvcGVyYXRpdm8nfSx7c291cmNlOidlbmMnLCB0YXJnZXQ6J3ZpdmllbmRhJ31dfSxcclxuICAgICAgICAgICAge3RhYmxlOiBcImhpc3RvcmlhbF90ZW1cIiwgYWJyOiBcIkhcIiwgZmllbGRzOiBbJ29wZXJhdGl2bycsJ2VuYyddfVxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgY29uc3RyYWludHM6W1xyXG4gICAgICAgICAgICB7Y29uc3RyYWludFR5cGU6J2NoZWNrJywgY29uc05hbWU6XCJ2cmVzdWx0X3N1cF9ja1wiLCBleHByOlwiKHJlc3VsdF9zdXAgYmV0d2VlbiAxIGFuZCA5IG9yIHJlc3VsdF9zdXAgaW4gKDExLDEyLDIxLDIyICkgb3IgcmVzdWx0X3N1cCBiZXR3ZWVuIDYwIGFuZCA2OClcIn0sXHJcbiAgICAgICAgICAgIHtjb25zdHJhaW50VHlwZTondW5pcXVlJywgY29uc05hbWU6XCJhdXRvZ2VuZXJhZG9fZG1fdWtcIiwgZmllbGRzOlsndG9rZW5fYXV0b2dlbmVyYWRvX2RtJywnZW5jX2F1dG9nZW5lcmFkb19kbSddfVxyXG4gICAgICAgIF1cclxuICAgIH07XHJcbiAgICBpZiAob3B0cy5yZWNlcGNpb24pIHtcclxuICAgICAgICBkZWYuZmllbGRzPWRlZi5maWVsZHMuZmlsdGVyKGY9PiFjb2x1bW5hc1NvbG9UZW0uaW5jbHVkZXMoZi5uYW1lKSApXHJcbiAgICAgICAgZGVmLmhpZGRlbkNvbHVtbnM9Wy4uLmRlZi5oaWRkZW5Db2x1bW5zLCAuLi5jb2x1bW5hc0FyZWFzUGFyYUxhVGVtLm1hcCh4PT5gYXJlYXNfXyR7eH1gKV1cclxuICAgICAgICBkZWYuZm9yZWlnbktleXM9ZGVmLmZvcmVpZ25LZXlzPy5tYXAoZnVuY3Rpb24gKGYpIHtpZiAoZi5yZWZlcmVuY2VzPT0nYXJlYXMnKXtmLmRpc3BsYXlGaWVsZHM9Y29sdW1uYXNBcmVhc1BhcmFMYVRlbX07IHJldHVybiBmfSkgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRlZi5kZXRhaWxUYWJsZXM/LnVuc2hpZnQoe3RhYmxlOiBcInRhcmVhc190ZW1cIiwgYWJyOiBcIlRcIiwgZmllbGRzOiBbJ29wZXJhdGl2bycsICdlbmMnXSwgbGFiZWw6J3RhcmVhcyd9KVxyXG4gICAgICAgIGRlZi5maWVsZHM9ZGVmLmZpZWxkcy5maWx0ZXIoZj0+IWNvbHVtbmFzTm9SZWEubWFwKGZuPT5mbi5uYW1lKS5pbmNsdWRlcyhmLm5hbWUpIClcclxuICAgIH07XHJcbiAgICBjb25zdCBxPWNvbnRleHQuYmUuZGIucXVvdGVJZGVudDtcclxuICAgIGRlZi5zcWw9IHtcclxuICAgICAgICAgICAgaXNUYWJsZTohb3B0cy5yZWNlcGNpb24sIC8vVE9ETzogcmVzb2x2ZXIgY29tbyBzYWNhcmxvIGRlbCBkdW1wXHJcbiAgICAgICAgICAgIGlzUmVmZXJhYmxlOnRydWUsXHJcbiAgICAgICAgICAgIGZyb206YFxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICR7ZGVmLmZpZWxkcy5maWx0ZXIoZj0+Zi5pblRhYmxlPT11bmRlZmluZWQgJiYgIWYuY2xpZW50U2lkZSkubWFwKGY9Pid0LicrcShmLm5hbWUpKS5qb2luKCcsJyl9XHJcbiAgICAgICAgICAgICAgICAgICAgLCB0dC5jYXJnYWRvLCB0dC5jYXJnYWRvX2RtXHJcbiAgICAgICAgICAgICAgICAgICAgLCB0dC5ldGFyZWFzLT4nZW5jdSctPj4nYXNpZ25hZG8nIGFzIGVuY3Vlc3RhZG9yXHJcbiAgICAgICAgICAgICAgICAgICAgLCB0dC5ldGFyZWFzLT4ncmVjdSctPj4nYXNpZ25hZG8nIGFzIHJlY3VwZXJhZG9yXHJcbiAgICAgICAgICAgICAgICAgICAgLCB0dC5ldGFyZWFzLT4nc3VwZSctPj4nYXNpZ25hZG8nIGFzIHN1cGVydmlzb3JcclxuICAgICAgICAgICAgICAgICAgICAsIG51bGwgbm90YXNcclxuICAgICAgICAgICAgICAgICAgICAsIGF1eC5jb25zaXN0aWRvXHJcbiAgICAgICAgICAgICAgICAgICAgLCB1c3VfZW5jLm5vbWJyZSBhcyBub21icmVfZW5jXHJcbiAgICAgICAgICAgICAgICAgICAgLCB1c3VfZW5jLmFwZWxsaWRvIGFzIGFwZWxsaWRvX2VuY1xyXG4gICAgICAgICAgICAgICAgICAgICwgdXN1X3JlYy5ub21icmUgYXMgbm9tYnJlX3JlY1xyXG4gICAgICAgICAgICAgICAgICAgICwgdXN1X3JlYy5hcGVsbGlkbyBhcyBhcGVsbGlkb19yZWNcclxuICAgICAgICAgICAgICAgICAgICAsIHVzdV9zdXAubm9tYnJlIGFzIG5vbWJyZV9zdXBcclxuICAgICAgICAgICAgICAgICAgICAsIHVzdV9zdXAuYXBlbGxpZG8gYXMgYXBlbGxpZG9fc3VwXHJcbiAgICAgICAgICAgICAgICAgICAgJHtvcHRzLnJlY2VwY2lvbj8gY29sdW1uYXNOb1JlYS5tYXAodj0+J1xcbiAgICAgLCAnKyB2LmV4cHIgKycgYXMgJysgdi5uYW1lKS5qb2luKCcnKSA6Jyd9XHJcbiAgICAgICAgICAgICAgICAgICAgZnJvbSB0ZW0gdCBsZWZ0IGpvaW4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgdHQub3BlcmF0aXZvLCB0dC5lbmMsIGJvb2xfb3IoY2FyZ2FkbykgY2FyZ2Fkbywgc3RyaW5nX2FnZyhjYXJnYWRvX2RtLCcsJykgY2FyZ2Fkb19kbSxqc29uYl9vYmplY3RfYWdnKHRhcmVhLGpzb25iX2J1aWxkX29iamVjdCgnYXNpZ25hZG8nLGFzaWduYWRvLCdjYXJnYWRvJyxjYXJnYWRvLCdjYXJnYWRvX2RtJyxjYXJnYWRvX2RtKSlldGFyZWFzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0YXJlYXNfdGVtIHR0IGdyb3VwIGJ5IHR0Lm9wZXJhdGl2bywgdHQuZW5jICApdHQgb24gdC5vcGVyYXRpdm89dHQub3BlcmF0aXZvIGFuZCB0LmVuYz10dC5lbmNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgam9pbiBub19yZWEgeSBvbiB5Lm5vX3JlYTo6aW50ZWdlcj10Lm5vcmVhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0IGpvaW4gJHtzcWxUb29scy5xdW90ZUlkZW50KE9wZXJhdGl2b0dlbmVyYXRvci5tYWluVEQpfSBhdXggb24gYXV4Lm9wZXJhdGl2bz10Lm9wZXJhdGl2byBhbmQgYXV4LiR7c3FsVG9vbHMucXVvdGVJZGVudChPcGVyYXRpdm9HZW5lcmF0b3IubWFpblREUEspfT10LmVuYyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgam9pbiB1c3VhcmlvcyB1c3VfZW5jIG9uIHVzdV9lbmMuaWRwZXIgPSB0dC5ldGFyZWFzLT4nZW5jdSctPj4nYXNpZ25hZG8nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0IGpvaW4gdXN1YXJpb3MgdXN1X3JlYyBvbiB1c3VfcmVjLmlkcGVyID0gdHQuZXRhcmVhcy0+J3JlY3UnLT4+J2FzaWduYWRvJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCBqb2luIHVzdWFyaW9zIHVzdV9zdXAgb24gdXN1X3N1cC5pZHBlciA9IHR0LmV0YXJlYXMtPidzdXBlJy0+Pidhc2lnbmFkbydcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgYCAgICAgXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gZGVmO1xyXG4gICAgfVxyXG4gICAgIl19