dmencu 0.4.7 → 0.4.8

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.
@@ -0,0 +1,37 @@
1
+ --set search_path = base;
2
+ --set role dmencu_owner;
3
+
4
+ CREATE OR REPLACE FUNCTION control_cargado_tareas_tem_trg()
5
+ RETURNS trigger
6
+ LANGUAGE 'plpgsql'
7
+ AS $BODY$
8
+ declare
9
+ cant_cargado integer;
10
+ tarea_cargado text;
11
+ cant_cargar integer;
12
+ tarea_cargar text;
13
+ begin
14
+ if new.operacion='cargar' then
15
+ select count(*)filter (where tt.cargado_dm is not null), min(tarea) filter (where tt.cargado_dm is not null)
16
+ , count(*)filter (where tt.operacion='cargar'), min(tarea) filter (where tt.operacion='cargar')
17
+ into cant_cargado, tarea_cargado,cant_cargar,tarea_cargar
18
+ from tareas_tem tt join parametros using(operativo)
19
+ where tt.enc=old.enc and tt.tarea is distinct from new.tarea
20
+ and unico_registro;
21
+ if cant_cargado >0 then
22
+ raise exception 'Error: la encuesta % ya esta cargada en dm para la tarea %', old.enc, tarea_cargada;
23
+ end if;
24
+ if cant_cargar >0 then
25
+ raise exception 'Error: la encuesta % ya tiene operacion cargar para la tarea %', old.enc, tarea_cargar;
26
+ end if;
27
+
28
+ end if;
29
+ return new;
30
+ end;
31
+ $BODY$;
32
+
33
+ CREATE TRIGGER control_cargado_tareas_tem_trg
34
+ BEFORE UPDATE OF operacion
35
+ ON tareas_tem
36
+ FOR EACH ROW
37
+ EXECUTE PROCEDURE control_cargado_tareas_tem_trg();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dmencu",
3
3
  "description": "DM Encu - Encuestas en dispositivo móvil",
4
- "version": "0.4.7",
4
+ "version": "0.4.8",
5
5
  "author": "Codenautas <codenautas@googlegroups.com>",
6
6
  "license": "MIT",
7
7
  "main": "dist/server/server/app-dmencu.js",
@@ -1,3 +0,0 @@
1
- /// <reference types="backend-plus" />
2
- import { TableDefinition, TableContext } from "./types-dmencu";
3
- export declare function tem_asignacion(context: TableContext): TableDefinition;
@@ -1,57 +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", "./table-tem"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.tem_asignacion = void 0;
13
- const table_tem_1 = require("./table-tem");
14
- function tem_asignacion(context) {
15
- var tareas = ['encu', 'recu', 'supe'];
16
- var tareas_fields = [
17
- { name: 'recepcionista_tarea', prefijo: 'rec' },
18
- { name: 'asignado', prefijo: 'per' },
19
- { name: 'estado', prefijo: 'est' }
20
- ];
21
- var extraFields = [];
22
- var extraFrom = '';
23
- var extraSelect = '\n';
24
- var otherTableDefs = {};
25
- tareas.forEach(t => {
26
- tareas_fields.forEach(f => {
27
- extraFields.push({ name: `${f.prefijo}_${t}`, typeName: 'text', table: `tem_${t}`, nameForUpsert: f.name });
28
- extraSelect += `, tem_${t}.${f.name} as ${f.prefijo}_${t}`;
29
- });
30
- extraFrom += `
31
- left join tareas_tem as tem_${t} on tem_${t}.operativo = t.operativo and tem_${t}.enc = t.enc and tem_${t}.tarea = '${t}'`;
32
- otherTableDefs[`tem_${t}`] = {
33
- name: 'tareas_tem',
34
- tableName: 'tareas_tem',
35
- prefilledField: { tarea: t }
36
- };
37
- });
38
- var tableDef = (0, table_tem_1.tem)(context, {});
39
- tableDef.name = `tem_asignacion`;
40
- // setCommonDefinition(tableDef);
41
- tableDef.primaryKey = ['operativo', 'enc'];
42
- tableDef.fields = tableDef.fields.filter((field) => ['operativo', 'enc', 'tarea_actual', 'estado_actual', 'habilitada', 'area', 'tarea_proxima', 'cargado_dm']
43
- .includes(field.name)).concat(extraFields);
44
- /*
45
- tableDef.softForeignKeys=[
46
- {references:'tokens', fields:[{source:'cargado_dm', target:'token'}], displayFields:['username'], displayAfterFieldName:'cargado'},
47
- ],
48
- tableDef.hiddenColumns=['cargado_dm','notas'];
49
- */
50
- tableDef.sql.from = `(select t.* ${extraSelect} from (${tableDef.sql.from}) t ${extraFrom})`,
51
- tableDef.sql.otherTableDefs = otherTableDefs;
52
- // tableDef.sql!.where = `(tarea_actual="tareas_tem".tarea or tarea_actual is null)`;
53
- return tableDef;
54
- }
55
- exports.tem_asignacion = tem_asignacion;
56
- });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdGFyZWFzX3RlbV9hc2lnbmFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci90YWJsZS10YXJlYXNfdGVtX2FzaWduYWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0lBQUEsWUFBWSxDQUFDOzs7SUFJYiwyQ0FBa0M7SUFHbEMsU0FBZ0IsY0FBYyxDQUFDLE9BQW9CO1FBQy9DLElBQUksTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxJQUFJLGFBQWEsR0FBRztZQUNoQixFQUFDLElBQUksRUFBQyxxQkFBcUIsRUFBRSxPQUFPLEVBQUMsS0FBSyxFQUFDO1lBQzNDLEVBQUMsSUFBSSxFQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUMsS0FBSyxFQUFDO1lBQ2hDLEVBQUMsSUFBSSxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUMsS0FBSyxFQUFDO1NBQ2pDLENBQUE7UUFDRCxJQUFJLFdBQVcsR0FBcUIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxjQUFjLEdBQWtCLEVBQUUsQ0FBQTtRQUV0QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQSxFQUFFO1lBQ2QsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUEsRUFBRTtnQkFDckIsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7Z0JBQ3RHLFdBQVcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0QsQ0FBQyxDQUFDLENBQUE7WUFDRixTQUFTLElBQUk7MENBQ3FCLENBQUMsV0FBVyxDQUFDLG9DQUFvQyxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUM7WUFDL0gsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRztnQkFDekIsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLFNBQVMsRUFBQyxZQUFZO2dCQUN0QixjQUFjLEVBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDO2FBQzNCLENBQUE7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksUUFBUSxHQUFHLElBQUEsZUFBRyxFQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoQyxRQUFRLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDO1FBQ2pDLGlDQUFpQztRQUNqQyxRQUFRLENBQUMsVUFBVSxHQUFHLENBQUMsV0FBVyxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUMsRUFBRSxDQUM5QyxDQUFDLFdBQVcsRUFBQyxLQUFLLEVBQUMsY0FBYyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxZQUFZLENBQUM7YUFDdkcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FDeEIsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEI7Ozs7O1VBS0U7UUFDRixRQUFRLENBQUMsR0FBSSxDQUFDLElBQUksR0FBSSxlQUFlLFdBQVcsVUFBVSxRQUFRLENBQUMsR0FBSSxDQUFDLElBQUksT0FBTyxTQUFTLEdBQUc7WUFDL0YsUUFBUSxDQUFDLEdBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFBO1FBQzdDLHFGQUFxRjtRQUNyRixPQUFPLFFBQVEsQ0FBQTtJQUNuQixDQUFDO0lBNUNELHdDQTRDQyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuaW1wb3J0IHtUYWJsZURlZmluaXRpb24sIFRhYmxlQ29udGV4dCwgRmllbGREZWZpbml0aW9uLCBPdGhlclRhYmxlRGVmc30gZnJvbSBcIi4vdHlwZXMtZG1lbmN1XCI7XHJcblxyXG5pbXBvcnQgeyB0ZW0gfSBmcm9tIFwiLi90YWJsZS10ZW1cIjtcclxuaW1wb3J0IHsgc2V0Q29tbW9uRGVmaW5pdGlvbiB9IGZyb20gXCIuL3RhYmxlLXRhcmVhc190ZW1fcmVjZXBjaW9uXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdGVtX2FzaWduYWNpb24oY29udGV4dDpUYWJsZUNvbnRleHQpOlRhYmxlRGVmaW5pdGlvbiB7XHJcbiAgICB2YXIgdGFyZWFzID0gWydlbmN1JywncmVjdScsJ3N1cGUnXTtcclxuICAgIHZhciB0YXJlYXNfZmllbGRzID0gW1xyXG4gICAgICAgIHtuYW1lOidyZWNlcGNpb25pc3RhX3RhcmVhJywgcHJlZmlqbzoncmVjJ30sXHJcbiAgICAgICAge25hbWU6J2FzaWduYWRvJywgcHJlZmlqbzoncGVyJ30sXHJcbiAgICAgICAge25hbWU6J2VzdGFkbycsIHByZWZpam86J2VzdCd9XHJcbiAgICBdXHJcbiAgICB2YXIgZXh0cmFGaWVsZHM6RmllbGREZWZpbml0aW9uW10gPSBbXTtcclxuICAgIHZhciBleHRyYUZyb20gPSAnJztcclxuICAgIHZhciBleHRyYVNlbGVjdCA9ICdcXG4nO1xyXG4gICAgdmFyIG90aGVyVGFibGVEZWZzOk90aGVyVGFibGVEZWZzID0ge31cclxuXHJcbiAgICB0YXJlYXMuZm9yRWFjaCh0PT57XHJcbiAgICAgICAgdGFyZWFzX2ZpZWxkcy5mb3JFYWNoKGY9PntcclxuICAgICAgICAgICAgZXh0cmFGaWVsZHMucHVzaCh7bmFtZTpgJHtmLnByZWZpam99XyR7dH1gLCB0eXBlTmFtZTondGV4dCcsIHRhYmxlOmB0ZW1fJHt0fWAsIG5hbWVGb3JVcHNlcnQ6Zi5uYW1lfSk7XHJcbiAgICAgICAgICAgIGV4dHJhU2VsZWN0ICs9IGAsIHRlbV8ke3R9LiR7Zi5uYW1lfSBhcyAke2YucHJlZmlqb31fJHt0fWA7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBleHRyYUZyb20gKz0gYCBcclxuICAgICAgICAgICAgbGVmdCBqb2luIHRhcmVhc190ZW0gYXMgdGVtXyR7dH0gb24gdGVtXyR7dH0ub3BlcmF0aXZvID0gdC5vcGVyYXRpdm8gYW5kIHRlbV8ke3R9LmVuYyA9IHQuZW5jIGFuZCB0ZW1fJHt0fS50YXJlYSA9ICcke3R9J2A7IFxyXG4gICAgICAgIG90aGVyVGFibGVEZWZzW2B0ZW1fJHt0fWBdID0ge1xyXG4gICAgICAgICAgICBuYW1lOiAndGFyZWFzX3RlbScsIFxyXG4gICAgICAgICAgICB0YWJsZU5hbWU6J3RhcmVhc190ZW0nLCBcclxuICAgICAgICAgICAgcHJlZmlsbGVkRmllbGQ6e3RhcmVhOnR9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgIFxyXG4gICAgdmFyIHRhYmxlRGVmID0gdGVtKGNvbnRleHQsIHt9KTtcclxuICAgIHRhYmxlRGVmLm5hbWUgPSBgdGVtX2FzaWduYWNpb25gO1xyXG4gICAgLy8gc2V0Q29tbW9uRGVmaW5pdGlvbih0YWJsZURlZik7XHJcbiAgICB0YWJsZURlZi5wcmltYXJ5S2V5ID0gWydvcGVyYXRpdm8nLCdlbmMnXTtcclxuICAgIHRhYmxlRGVmLmZpZWxkcyA9IHRhYmxlRGVmLmZpZWxkcy5maWx0ZXIoKGZpZWxkKT0+XHJcbiAgICAgICAgWydvcGVyYXRpdm8nLCdlbmMnLCd0YXJlYV9hY3R1YWwnLCAnZXN0YWRvX2FjdHVhbCcsICdoYWJpbGl0YWRhJywgJ2FyZWEnLCAndGFyZWFfcHJveGltYScsICdjYXJnYWRvX2RtJ11cclxuICAgICAgICAuaW5jbHVkZXMoZmllbGQubmFtZSlcclxuICAgICkuY29uY2F0KGV4dHJhRmllbGRzKTtcclxuICAgIC8qXHJcbiAgICB0YWJsZURlZi5zb2Z0Rm9yZWlnbktleXM9W1xyXG4gICAgICAgIHtyZWZlcmVuY2VzOid0b2tlbnMnLCBmaWVsZHM6W3tzb3VyY2U6J2NhcmdhZG9fZG0nLCB0YXJnZXQ6J3Rva2VuJ31dLCBkaXNwbGF5RmllbGRzOlsndXNlcm5hbWUnXSwgZGlzcGxheUFmdGVyRmllbGROYW1lOidjYXJnYWRvJ30sXHJcbiAgICBdLFxyXG4gICAgdGFibGVEZWYuaGlkZGVuQ29sdW1ucz1bJ2NhcmdhZG9fZG0nLCdub3RhcyddO1xyXG4gICAgKi9cclxuICAgIHRhYmxlRGVmLnNxbCEuZnJvbSA9ICBgKHNlbGVjdCB0LiogJHtleHRyYVNlbGVjdH0gZnJvbSAoJHt0YWJsZURlZi5zcWwhLmZyb219KSB0ICR7ZXh0cmFGcm9tfSlgLFxyXG4gICAgdGFibGVEZWYuc3FsIS5vdGhlclRhYmxlRGVmcyA9IG90aGVyVGFibGVEZWZzXHJcbiAgICAvLyB0YWJsZURlZi5zcWwhLndoZXJlID0gYCh0YXJlYV9hY3R1YWw9XCJ0YXJlYXNfdGVtXCIudGFyZWEgb3IgdGFyZWFfYWN0dWFsIGlzIG51bGwpYDtcclxuICAgIHJldHVybiB0YWJsZURlZlxyXG59XHJcblxyXG4iXX0=
@@ -1,3 +0,0 @@
1
- /// <reference types="backend-plus" />
2
- import { TableDefinition, TableContext } from "./types-dmencu";
3
- export declare function tem_asignacion(context: TableContext): TableDefinition;
@@ -1,51 +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", "./table-tem"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.tem_asignacion = void 0;
13
- const table_tem_1 = require("./table-tem");
14
- function tem_asignacion(context) {
15
- var tareas = ['encu', 'recu', 'supe'];
16
- var tareas_fields = [
17
- { name: 'recepcionista', prefijo: 'rec', editable: true },
18
- { name: 'asignado', prefijo: 'per', editable: true },
19
- { name: 'estado', prefijo: 'est', editable: false }
20
- ];
21
- var extraFields = [];
22
- var extraFrom = '';
23
- var extraSelect = '\n';
24
- var otherTableDefs = {};
25
- tareas.forEach(t => {
26
- tareas_fields.forEach(f => {
27
- extraFields.push({ name: `${f.prefijo}_${t}`, typeName: 'text', table: `tem_${t}`, nameForUpsert: f.name, editable: f.editable });
28
- extraSelect += `, tem_${t}.${f.name} as ${f.prefijo}_${t}`;
29
- });
30
- extraFrom += `
31
- left join tareas_tem as tem_${t} on tem_${t}.operativo = t.operativo and tem_${t}.enc = t.enc and tem_${t}.tarea = '${t}'`;
32
- otherTableDefs[`tem_${t}`] = {
33
- name: 'tareas_tem',
34
- tableName: 'tareas_tem',
35
- prefilledField: { tarea: t }
36
- };
37
- });
38
- var tableDef = (0, table_tem_1.tem)(context, {});
39
- tableDef.name = `tem_asignacion`;
40
- tableDef.fields = tableDef.fields.filter((field) => ['operativo', 'enc', 'tarea_actual', 'estado_actual', /*'abrir'*/ , 'habilitar', 'habilitada', 'area', 'tarea_proxima', 'cargado', 'cargado_dm']
41
- .includes(field.name)).concat(extraFields);
42
- tableDef.refrescable = true;
43
- tableDef.sql.isTable = false;
44
- tableDef.sql.from = `(select t.* ${extraSelect} from (${tableDef.sql.from}) t ${extraFrom})`,
45
- tableDef.sql.otherTableDefs = otherTableDefs;
46
- tableDef.detailTables = tableDef.detailTables.filter((detailTable) => ['tareas_tem'].includes(detailTable.table));
47
- return tableDef;
48
- }
49
- exports.tem_asignacion = tem_asignacion;
50
- });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdGVtX2FzaWduYWNpb24gY29weS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvdGFibGUtdGVtX2FzaWduYWNpb24gY29weS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7SUFBQSxZQUFZLENBQUM7OztJQUliLDJDQUFrQztJQUdsQyxTQUFnQixjQUFjLENBQUMsT0FBb0I7UUFDL0MsSUFBSSxNQUFNLEdBQWMsQ0FBQyxNQUFNLEVBQUMsTUFBTSxFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLElBQUksYUFBYSxHQUFHO1lBQ2hCLEVBQUMsSUFBSSxFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBQyxJQUFJLEVBQUM7WUFDcEQsRUFBQyxJQUFJLEVBQUMsVUFBVSxFQUFFLE9BQU8sRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLElBQUksRUFBQztZQUMvQyxFQUFDLElBQUksRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUMsS0FBSyxFQUFDO1NBQ2pELENBQUE7UUFDRCxJQUFJLFdBQVcsR0FBcUIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxjQUFjLEdBQWtCLEVBQUUsQ0FBQTtRQUV0QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQSxFQUFFO1lBQ2QsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUEsRUFBRTtnQkFDckIsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBQyxDQUFDLENBQUM7Z0JBQzNILFdBQVcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0QsQ0FBQyxDQUFDLENBQUE7WUFDRixTQUFTLElBQUk7MENBQ3FCLENBQUMsV0FBVyxDQUFDLG9DQUFvQyxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUM7WUFDL0gsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRztnQkFDekIsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLFNBQVMsRUFBQyxZQUFZO2dCQUN0QixjQUFjLEVBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDO2FBQzNCLENBQUE7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksUUFBUSxHQUFHLElBQUEsZUFBRyxFQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoQyxRQUFRLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDO1FBQ2pDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUMsRUFBRSxDQUM5QyxDQUFDLFdBQVcsRUFBQyxLQUFLLEVBQUMsY0FBYyxFQUFFLGVBQWUsRUFBRSxXQUFXLENBQUEsQUFBWixFQUFhLFdBQVcsRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUMsWUFBWSxDQUFDO2FBQ3pJLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQ3hCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RCLFFBQVEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQzVCLFFBQVEsQ0FBQyxHQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUM5QixRQUFRLENBQUMsR0FBSSxDQUFDLElBQUksR0FBSSxlQUFlLFdBQVcsVUFBVSxRQUFRLENBQUMsR0FBSSxDQUFDLElBQUksT0FBTyxTQUFTLEdBQUc7WUFDL0YsUUFBUSxDQUFDLEdBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQzlDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUMsRUFBRSxDQUFBLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hILE9BQU8sUUFBUSxDQUFBO0lBQ25CLENBQUM7SUF0Q0Qsd0NBc0NDIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQge1RhYmxlRGVmaW5pdGlvbiwgVGFibGVDb250ZXh0LCBGaWVsZERlZmluaXRpb24sIE90aGVyVGFibGVEZWZzfSBmcm9tIFwiLi90eXBlcy1kbWVuY3VcIjtcclxuXHJcbmltcG9ydCB7IHRlbSB9IGZyb20gXCIuL3RhYmxlLXRlbVwiO1xyXG5pbXBvcnQgeyBJZFRhcmVhIH0gZnJvbSBcIi4uL3VubG9nZ2VkL3RpcG9zXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdGVtX2FzaWduYWNpb24oY29udGV4dDpUYWJsZUNvbnRleHQpOlRhYmxlRGVmaW5pdGlvbiB7XHJcbiAgICB2YXIgdGFyZWFzOiBJZFRhcmVhW10gPSBbJ2VuY3UnLCdyZWN1Jywnc3VwZSddO1xyXG4gICAgdmFyIHRhcmVhc19maWVsZHMgPSBbXHJcbiAgICAgICAge25hbWU6J3JlY2VwY2lvbmlzdGEnLCBwcmVmaWpvOidyZWMnLCBlZGl0YWJsZTp0cnVlfSxcclxuICAgICAgICB7bmFtZTonYXNpZ25hZG8nLCBwcmVmaWpvOidwZXInLCBlZGl0YWJsZTp0cnVlfSxcclxuICAgICAgICB7bmFtZTonZXN0YWRvJywgcHJlZmlqbzonZXN0JywgZWRpdGFibGU6ZmFsc2V9XHJcbiAgICBdXHJcbiAgICB2YXIgZXh0cmFGaWVsZHM6RmllbGREZWZpbml0aW9uW10gPSBbXTtcclxuICAgIHZhciBleHRyYUZyb20gPSAnJztcclxuICAgIHZhciBleHRyYVNlbGVjdCA9ICdcXG4nO1xyXG4gICAgdmFyIG90aGVyVGFibGVEZWZzOk90aGVyVGFibGVEZWZzID0ge31cclxuXHJcbiAgICB0YXJlYXMuZm9yRWFjaCh0PT57XHJcbiAgICAgICAgdGFyZWFzX2ZpZWxkcy5mb3JFYWNoKGY9PntcclxuICAgICAgICAgICAgZXh0cmFGaWVsZHMucHVzaCh7bmFtZTpgJHtmLnByZWZpam99XyR7dH1gLCB0eXBlTmFtZTondGV4dCcsIHRhYmxlOmB0ZW1fJHt0fWAsIG5hbWVGb3JVcHNlcnQ6Zi5uYW1lLCBlZGl0YWJsZTpmLmVkaXRhYmxlfSk7XHJcbiAgICAgICAgICAgIGV4dHJhU2VsZWN0ICs9IGAsIHRlbV8ke3R9LiR7Zi5uYW1lfSBhcyAke2YucHJlZmlqb31fJHt0fWA7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBleHRyYUZyb20gKz0gYCBcclxuICAgICAgICAgICAgbGVmdCBqb2luIHRhcmVhc190ZW0gYXMgdGVtXyR7dH0gb24gdGVtXyR7dH0ub3BlcmF0aXZvID0gdC5vcGVyYXRpdm8gYW5kIHRlbV8ke3R9LmVuYyA9IHQuZW5jIGFuZCB0ZW1fJHt0fS50YXJlYSA9ICcke3R9J2A7IFxyXG4gICAgICAgIG90aGVyVGFibGVEZWZzW2B0ZW1fJHt0fWBdID0ge1xyXG4gICAgICAgICAgICBuYW1lOiAndGFyZWFzX3RlbScsIFxyXG4gICAgICAgICAgICB0YWJsZU5hbWU6J3RhcmVhc190ZW0nLCBcclxuICAgICAgICAgICAgcHJlZmlsbGVkRmllbGQ6e3RhcmVhOnR9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgIFxyXG4gICAgdmFyIHRhYmxlRGVmID0gdGVtKGNvbnRleHQsIHt9KTtcclxuICAgIHRhYmxlRGVmLm5hbWUgPSBgdGVtX2FzaWduYWNpb25gO1xyXG4gICAgdGFibGVEZWYuZmllbGRzID0gdGFibGVEZWYuZmllbGRzLmZpbHRlcigoZmllbGQpPT5cclxuICAgICAgICBbJ29wZXJhdGl2bycsJ2VuYycsJ3RhcmVhX2FjdHVhbCcsICdlc3RhZG9fYWN0dWFsJywgLyonYWJyaXInKi8sJ2hhYmlsaXRhcicsJ2hhYmlsaXRhZGEnLCAnYXJlYScsICd0YXJlYV9wcm94aW1hJywgJ2NhcmdhZG8nLCdjYXJnYWRvX2RtJ11cclxuICAgICAgICAuaW5jbHVkZXMoZmllbGQubmFtZSlcclxuICAgICkuY29uY2F0KGV4dHJhRmllbGRzKTtcclxuICAgIHRhYmxlRGVmLnJlZnJlc2NhYmxlID0gdHJ1ZTtcclxuICAgIHRhYmxlRGVmLnNxbCEuaXNUYWJsZSA9IGZhbHNlO1xyXG4gICAgdGFibGVEZWYuc3FsIS5mcm9tID0gIGAoc2VsZWN0IHQuKiAke2V4dHJhU2VsZWN0fSBmcm9tICgke3RhYmxlRGVmLnNxbCEuZnJvbX0pIHQgJHtleHRyYUZyb219KWAsXHJcbiAgICB0YWJsZURlZi5zcWwhLm90aGVyVGFibGVEZWZzID0gb3RoZXJUYWJsZURlZnM7XHJcbiAgICB0YWJsZURlZi5kZXRhaWxUYWJsZXMgPSB0YWJsZURlZi5kZXRhaWxUYWJsZXMuZmlsdGVyKChkZXRhaWxUYWJsZSk9PlsndGFyZWFzX3RlbSddLmluY2x1ZGVzKGRldGFpbFRhYmxlLnRhYmxlKSk7XHJcbiAgICByZXR1cm4gdGFibGVEZWZcclxufVxyXG5cclxuIl19