@manticore-labs/nest 0.0.59 → 0.0.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.circleci/config.yml +47 -47
- package/.idea/codeStyles/Project.xml +37 -37
- package/.idea/codeStyles/codeStyleConfig.xml +4 -4
- package/.idea/encodings.xml +3 -3
- package/.idea/inspectionProfiles/Project_Default.xml +5 -5
- package/.idea/manticore-labs-nest.iml +11 -11
- package/.idea/misc.xml +5 -5
- package/.idea/modules.xml +7 -7
- package/.idea/vcs.xml +5 -5
- package/.idea/workspace.xml +207 -353
- package/.npmignore +14 -0
- package/LICENSE +8 -8
- package/README.1.md +116 -116
- package/README.md +1 -1
- package/build/main/index.d.ts +39 -39
- package/build/main/index.js +22 -22
- package/build/main/lib/auth0/actualizar-usuario-cuenta-dto/actualizar-usuario-cuenta-dto.d.ts +5 -5
- package/build/main/lib/auth0/actualizar-usuario-cuenta-dto/actualizar-usuario-cuenta-dto.js +24 -24
- package/build/main/lib/auth0/actualizar-usuario-dto/actualizar-usuario-dto.d.ts +5 -5
- package/build/main/lib/auth0/actualizar-usuario-dto/actualizar-usuario-dto.js +24 -24
- package/build/main/lib/auth0/auth0.controller.d.ts +37 -37
- package/build/main/lib/auth0/auth0.controller.js +514 -514
- package/build/main/lib/auth0/auth0.service.d.ts +42 -42
- package/build/main/lib/auth0/auth0.service.js +513 -513
- package/build/main/lib/auth0/crear-usuario-dto/crear-usuario-dto.d.ts +5 -5
- package/build/main/lib/auth0/crear-usuario-dto/crear-usuario-dto.js +25 -25
- package/build/main/lib/auth0/interfaces/busqueda-nombre.d.ts +3 -3
- package/build/main/lib/auth0/interfaces/busqueda-nombre.js +2 -2
- package/build/main/lib/auth0/interfaces/funciones-seguridad.d.ts +10 -10
- package/build/main/lib/auth0/interfaces/funciones-seguridad.js +2 -2
- package/build/main/lib/auth0/interfaces/mensajes-controlador.d.ts +5 -5
- package/build/main/lib/auth0/interfaces/mensajes-controlador.js +2 -2
- package/build/main/lib/expresiones-regulares/letras-espacios-tildes-enie.d.ts +1 -1
- package/build/main/lib/expresiones-regulares/letras-espacios-tildes-enie.js +3 -3
- package/build/main/lib/funciones-util/buscar-registro.d.ts +1 -1
- package/build/main/lib/funciones-util/buscar-registro.js +147 -147
- package/build/main/lib/funciones-util/buscar-un-registro-por-id.d.ts +1 -1
- package/build/main/lib/funciones-util/buscar-un-registro-por-id.js +25 -25
- package/build/main/lib/funciones-util/buscar-where-or.d.ts +1 -1
- package/build/main/lib/funciones-util/buscar-where-or.js +33 -33
- package/build/main/lib/funciones-util/contar-registros.d.ts +1 -1
- package/build/main/lib/funciones-util/contar-registros.js +41 -41
- package/build/main/lib/funciones-util/crear-un-registro.d.ts +1 -1
- package/build/main/lib/funciones-util/crear-un-registro.js +24 -24
- package/build/main/lib/funciones-util/editar-un-registro.d.ts +1 -1
- package/build/main/lib/funciones-util/editar-un-registro.js +24 -24
- package/build/main/lib/funciones-util/eliminar-uno.d.ts +1 -1
- package/build/main/lib/funciones-util/eliminar-uno.js +35 -35
- package/build/main/lib/funciones-util/typeorm/valor-esta-dentro-del-arreglo.d.ts +2 -2
- package/build/main/lib/funciones-util/typeorm/valor-esta-dentro-del-arreglo.js +21 -21
- package/build/main/lib/interfaces-util/arreglo-funciones-booleanas.d.ts +4 -4
- package/build/main/lib/interfaces-util/arreglo-funciones-booleanas.js +2 -2
- package/build/main/lib/interfaces-util/broadcast-join.gateway.d.ts +14 -14
- package/build/main/lib/interfaces-util/broadcast-join.gateway.js +2 -2
- package/build/main/lib/interfaces-util/campos-a-buscar.d.ts +9 -9
- package/build/main/lib/interfaces-util/campos-a-buscar.js +9 -9
- package/build/main/lib/interfaces-util/delete-service.d.ts +12 -12
- package/build/main/lib/interfaces-util/delete-service.js +2 -2
- package/build/main/lib/interfaces-util/dto.d.ts +4 -4
- package/build/main/lib/interfaces-util/dto.js +2 -2
- package/build/main/lib/interfaces-util/find-where-relations.d.ts +9 -9
- package/build/main/lib/interfaces-util/find-where-relations.js +2 -2
- package/build/main/lib/interfaces-util/funciones-seguridad.d.ts +13 -13
- package/build/main/lib/interfaces-util/funciones-seguridad.js +2 -2
- package/build/main/lib/interfaces-util/funciones.gateway.d.ts +5 -5
- package/build/main/lib/interfaces-util/funciones.gateway.js +2 -2
- package/build/main/lib/interfaces-util/mensajes-controller.d.ts +6 -6
- package/build/main/lib/interfaces-util/mensajes-controller.js +2 -2
- package/build/main/lib/interfaces-util/politicas-de-seguridad.d.ts +17 -17
- package/build/main/lib/interfaces-util/politicas-de-seguridad.js +2 -2
- package/build/main/lib/interfaces-util/respuesta-general.gateway.d.ts +5 -5
- package/build/main/lib/interfaces-util/respuesta-general.gateway.js +2 -2
- package/build/main/lib/menu/entities/menu-entity.d.ts +13 -13
- package/build/main/lib/menu/entities/menu-entity.js +93 -93
- package/build/main/lib/one-signal/interfaces/funciones-seguridad.d.ts +9 -9
- package/build/main/lib/one-signal/interfaces/funciones-seguridad.js +2 -2
- package/build/main/lib/one-signal/interfaces/one-signal-device.d.ts +19 -19
- package/build/main/lib/one-signal/interfaces/one-signal-device.js +2 -2
- package/build/main/lib/one-signal/interfaces/one-signal-notification.d.ts +15 -15
- package/build/main/lib/one-signal/interfaces/one-signal-notification.js +2 -2
- package/build/main/lib/one-signal/interfaces/one-signal-notifications.d.ts +7 -7
- package/build/main/lib/one-signal/interfaces/one-signal-notifications.js +2 -2
- package/build/main/lib/one-signal/interfaces/one-signal-ok-create-notification-no-players.d.ts +5 -5
- package/build/main/lib/one-signal/interfaces/one-signal-ok-create-notification-no-players.js +2 -2
- package/build/main/lib/one-signal/interfaces/one-signal-ok-create-notification.d.ts +4 -4
- package/build/main/lib/one-signal/interfaces/one-signal-ok-create-notification.js +2 -2
- package/build/main/lib/one-signal/interfaces/one-signal-success.d.ts +3 -3
- package/build/main/lib/one-signal/interfaces/one-signal-success.js +2 -2
- package/build/main/lib/one-signal/interfaces/one-signal-tags.d.ts +3 -3
- package/build/main/lib/one-signal/interfaces/one-signal-tags.js +2 -2
- package/build/main/lib/one-signal/interfaces/one-signal-view-devices.d.ts +7 -7
- package/build/main/lib/one-signal/interfaces/one-signal-view-devices.js +2 -2
- package/build/main/lib/one-signal/one-signal.controller.d.ts +15 -15
- package/build/main/lib/one-signal/one-signal.controller.js +250 -250
- package/build/main/lib/one-signal/one-signal.service.d.ts +32 -32
- package/build/main/lib/one-signal/one-signal.service.js +84 -84
- package/build/main/lib/principal.controller.d.ts +20 -20
- package/build/main/lib/principal.controller.js +309 -309
- package/build/main/lib/principal.dto.d.ts +5 -5
- package/build/main/lib/principal.dto.js +21 -21
- package/build/main/lib/principal.entity.d.ts +7 -7
- package/build/main/lib/principal.entity.js +42 -42
- package/build/main/lib/principal.find-many-options.d.ts +14 -14
- package/build/main/lib/principal.find-many-options.js +48 -48
- package/build/main/lib/principal.find-many-where-or.d.ts +10 -10
- package/build/main/lib/principal.find-many-where-or.js +28 -28
- package/build/main/lib/principal.gateway.d.ts +35 -35
- package/build/main/lib/principal.gateway.js +399 -399
- package/build/main/lib/principal.id.d.ts +3 -3
- package/build/main/lib/principal.id.js +16 -16
- package/build/main/lib/principal.resolver.d.ts +21 -21
- package/build/main/lib/principal.resolver.js +343 -343
- package/build/main/lib/principal.service.d.ts +38 -38
- package/build/main/lib/principal.service.js +255 -255
- package/build/main/lib/seguridad/aplicar-politicas-de-seguridad.d.ts +4 -4
- package/build/main/lib/seguridad/aplicar-politicas-de-seguridad.js +16 -16
- package/build/main/lib/seguridad/funciones/convertir-arreglo-en-arreglo-de-observables.d.ts +3 -3
- package/build/main/lib/seguridad/funciones/convertir-arreglo-en-arreglo-de-observables.js +26 -26
- package/build/main/lib/seguridad/funciones/index.d.ts +6 -6
- package/build/main/lib/seguridad/funciones/index.js +12 -12
- package/build/main/lib/seguridad/funciones/obtener-reflector-seguridad.d.ts +1 -1
- package/build/main/lib/seguridad/funciones/obtener-reflector-seguridad.js +6 -6
- package/build/main/lib/seguridad/funciones/obtener-request.d.ts +1 -1
- package/build/main/lib/seguridad/funciones/obtener-request.js +6 -6
- package/build/main/lib/seguridad/funciones/obtener-response.d.ts +1 -1
- package/build/main/lib/seguridad/funciones/obtener-response.js +6 -6
- package/build/main/lib/seguridad/funciones/tiene-acceso-permitido.d.ts +2 -2
- package/build/main/lib/seguridad/funciones/tiene-acceso-permitido.js +13 -13
- package/build/main/lib/seguridad/seguridad.decorator.d.ts +1 -1
- package/build/main/lib/seguridad/seguridad.decorator.js +4 -4
- package/build/module/index.d.ts +39 -39
- package/build/module/index.js +17 -17
- package/build/module/lib/auth0/actualizar-usuario-cuenta-dto/actualizar-usuario-cuenta-dto.d.ts +5 -5
- package/build/module/lib/auth0/actualizar-usuario-cuenta-dto/actualizar-usuario-cuenta-dto.js +21 -21
- package/build/module/lib/auth0/actualizar-usuario-dto/actualizar-usuario-dto.d.ts +5 -5
- package/build/module/lib/auth0/actualizar-usuario-dto/actualizar-usuario-dto.js +21 -21
- package/build/module/lib/auth0/auth0.controller.d.ts +37 -37
- package/build/module/lib/auth0/auth0.controller.js +512 -512
- package/build/module/lib/auth0/auth0.service.d.ts +42 -42
- package/build/module/lib/auth0/auth0.service.js +511 -511
- package/build/module/lib/auth0/crear-usuario-dto/crear-usuario-dto.d.ts +5 -5
- package/build/module/lib/auth0/crear-usuario-dto/crear-usuario-dto.js +22 -22
- package/build/module/lib/auth0/interfaces/busqueda-nombre.d.ts +3 -3
- package/build/module/lib/auth0/interfaces/funciones-seguridad.d.ts +10 -10
- package/build/module/lib/auth0/interfaces/mensajes-controlador.d.ts +5 -5
- package/build/module/lib/expresiones-regulares/letras-espacios-tildes-enie.d.ts +1 -1
- package/build/module/lib/expresiones-regulares/letras-espacios-tildes-enie.js +1 -1
- package/build/module/lib/funciones-util/buscar-registro.d.ts +1 -1
- package/build/module/lib/funciones-util/buscar-registro.js +144 -144
- package/build/module/lib/funciones-util/buscar-un-registro-por-id.d.ts +1 -1
- package/build/module/lib/funciones-util/buscar-un-registro-por-id.js +22 -22
- package/build/module/lib/funciones-util/buscar-where-or.d.ts +1 -1
- package/build/module/lib/funciones-util/buscar-where-or.js +30 -30
- package/build/module/lib/funciones-util/contar-registros.d.ts +1 -1
- package/build/module/lib/funciones-util/contar-registros.js +38 -38
- package/build/module/lib/funciones-util/crear-un-registro.d.ts +1 -1
- package/build/module/lib/funciones-util/crear-un-registro.js +21 -21
- package/build/module/lib/funciones-util/editar-un-registro.d.ts +1 -1
- package/build/module/lib/funciones-util/editar-un-registro.js +21 -21
- package/build/module/lib/funciones-util/eliminar-uno.d.ts +1 -1
- package/build/module/lib/funciones-util/eliminar-uno.js +32 -32
- package/build/module/lib/funciones-util/typeorm/valor-esta-dentro-del-arreglo.d.ts +2 -2
- package/build/module/lib/funciones-util/typeorm/valor-esta-dentro-del-arreglo.js +18 -18
- package/build/module/lib/interfaces-util/arreglo-funciones-booleanas.d.ts +4 -4
- package/build/module/lib/interfaces-util/broadcast-join.gateway.d.ts +14 -14
- package/build/module/lib/interfaces-util/campos-a-buscar.d.ts +9 -9
- package/build/module/lib/interfaces-util/campos-a-buscar.js +6 -6
- package/build/module/lib/interfaces-util/delete-service.d.ts +12 -12
- package/build/module/lib/interfaces-util/dto.d.ts +4 -4
- package/build/module/lib/interfaces-util/find-where-relations.d.ts +9 -9
- package/build/module/lib/interfaces-util/funciones-seguridad.d.ts +13 -13
- package/build/module/lib/interfaces-util/funciones.gateway.d.ts +5 -5
- package/build/module/lib/interfaces-util/mensajes-controller.d.ts +6 -6
- package/build/module/lib/interfaces-util/politicas-de-seguridad.d.ts +17 -17
- package/build/module/lib/interfaces-util/respuesta-general.gateway.d.ts +5 -5
- package/build/module/lib/menu/entities/menu-entity.d.ts +13 -13
- package/build/module/lib/menu/entities/menu-entity.js +90 -90
- package/build/module/lib/one-signal/interfaces/funciones-seguridad.d.ts +9 -9
- package/build/module/lib/one-signal/interfaces/one-signal-device.d.ts +19 -19
- package/build/module/lib/one-signal/interfaces/one-signal-notification.d.ts +15 -15
- package/build/module/lib/one-signal/interfaces/one-signal-notifications.d.ts +7 -7
- package/build/module/lib/one-signal/interfaces/one-signal-ok-create-notification-no-players.d.ts +5 -5
- package/build/module/lib/one-signal/interfaces/one-signal-ok-create-notification.d.ts +4 -4
- package/build/module/lib/one-signal/interfaces/one-signal-success.d.ts +3 -3
- package/build/module/lib/one-signal/interfaces/one-signal-tags.d.ts +3 -3
- package/build/module/lib/one-signal/interfaces/one-signal-view-devices.d.ts +7 -7
- package/build/module/lib/one-signal/one-signal.controller.d.ts +15 -15
- package/build/module/lib/one-signal/one-signal.controller.js +248 -248
- package/build/module/lib/one-signal/one-signal.service.d.ts +32 -32
- package/build/module/lib/one-signal/one-signal.service.js +82 -82
- package/build/module/lib/principal.controller.d.ts +20 -20
- package/build/module/lib/principal.controller.js +306 -306
- package/build/module/lib/principal.dto.d.ts +5 -5
- package/build/module/lib/principal.dto.js +18 -18
- package/build/module/lib/principal.entity.d.ts +7 -7
- package/build/module/lib/principal.entity.js +39 -39
- package/build/module/lib/principal.find-many-options.d.ts +14 -14
- package/build/module/lib/principal.find-many-options.js +45 -45
- package/build/module/lib/principal.find-many-where-or.d.ts +10 -10
- package/build/module/lib/principal.find-many-where-or.js +25 -25
- package/build/module/lib/principal.gateway.d.ts +35 -35
- package/build/module/lib/principal.gateway.js +396 -396
- package/build/module/lib/principal.id.d.ts +3 -3
- package/build/module/lib/principal.id.js +13 -13
- package/build/module/lib/principal.resolver.d.ts +21 -21
- package/build/module/lib/principal.resolver.js +340 -340
- package/build/module/lib/principal.service.d.ts +38 -38
- package/build/module/lib/principal.service.js +252 -252
- package/build/module/lib/seguridad/aplicar-politicas-de-seguridad.d.ts +4 -4
- package/build/module/lib/seguridad/aplicar-politicas-de-seguridad.js +13 -13
- package/build/module/lib/seguridad/funciones/convertir-arreglo-en-arreglo-de-observables.d.ts +3 -3
- package/build/module/lib/seguridad/funciones/convertir-arreglo-en-arreglo-de-observables.js +23 -23
- package/build/module/lib/seguridad/funciones/index.d.ts +6 -6
- package/build/module/lib/seguridad/funciones/index.js +6 -6
- package/build/module/lib/seguridad/funciones/obtener-reflector-seguridad.d.ts +1 -1
- package/build/module/lib/seguridad/funciones/obtener-reflector-seguridad.js +3 -3
- package/build/module/lib/seguridad/funciones/obtener-request.d.ts +1 -1
- package/build/module/lib/seguridad/funciones/obtener-request.js +3 -3
- package/build/module/lib/seguridad/funciones/obtener-response.d.ts +1 -1
- package/build/module/lib/seguridad/funciones/obtener-response.js +3 -3
- package/build/module/lib/seguridad/funciones/tiene-acceso-permitido.d.ts +2 -2
- package/build/module/lib/seguridad/funciones/tiene-acceso-permitido.js +10 -10
- package/build/module/lib/seguridad/seguridad.decorator.d.ts +1 -1
- package/build/module/lib/seguridad/seguridad.decorator.js +2 -2
- package/package.json +1 -1
|
@@ -1,400 +1,400 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
const websockets_1 = require("@nestjs/websockets");
|
|
10
|
-
const aplicar_politicas_de_seguridad_1 = require("./seguridad/aplicar-politicas-de-seguridad");
|
|
11
|
-
const rxjs_1 = require("rxjs");
|
|
12
|
-
const operators_1 = require("rxjs/operators");
|
|
13
|
-
const buscar_registro_1 = require("./funciones-util/buscar-registro");
|
|
14
|
-
const principal_find_many_options_1 = require("./principal.find-many-options");
|
|
15
|
-
const buscar_un_registro_por_id_1 = require("./funciones-util/buscar-un-registro-por-id");
|
|
16
|
-
const principal_id_1 = require("./principal.id");
|
|
17
|
-
const crear_un_registro_1 = require("./funciones-util/crear-un-registro");
|
|
18
|
-
const eliminar_uno_1 = require("./funciones-util/eliminar-uno");
|
|
19
|
-
const editar_un_registro_1 = require("./funciones-util/editar-un-registro");
|
|
20
|
-
const contar_registros_1 = require("./funciones-util/contar-registros");
|
|
21
|
-
const buscar_where_or_1 = require("./funciones-util/buscar-where-or");
|
|
22
|
-
const io = require('socket.io-client');
|
|
23
|
-
class PrincipalGateway {
|
|
24
|
-
constructor(_ip, _namespace, _secreto, _funciones, _configuracionBroadcast, _funcionesSeguridad, _servicio, _dto, _skip = 0, _take = 30, _mensajes = {
|
|
25
|
-
encontrarUno: 'Id incorrecto',
|
|
26
|
-
crearUno: 'Registro inválido',
|
|
27
|
-
actualizarUno: 'Error al actualizar',
|
|
28
|
-
eliminarUno: 'Error al eliminar'
|
|
29
|
-
}, contexto) {
|
|
30
|
-
this._ip = _ip;
|
|
31
|
-
this._namespace = _namespace;
|
|
32
|
-
this._secreto = _secreto;
|
|
33
|
-
this._funciones = _funciones;
|
|
34
|
-
this._configuracionBroadcast = _configuracionBroadcast;
|
|
35
|
-
this._funcionesSeguridad = _funcionesSeguridad;
|
|
36
|
-
this._servicio = _servicio;
|
|
37
|
-
this._dto = _dto;
|
|
38
|
-
this._skip = _skip;
|
|
39
|
-
this._take = _take;
|
|
40
|
-
this._mensajes = _mensajes;
|
|
41
|
-
this.contexto = contexto;
|
|
42
|
-
}
|
|
43
|
-
afterInit(server) {
|
|
44
|
-
console.log('Init ' + this._namespace);
|
|
45
|
-
if (this._funciones.afterInit) {
|
|
46
|
-
console.info('Ejecutando funcion init');
|
|
47
|
-
this._funciones.afterInit(server);
|
|
48
|
-
}
|
|
49
|
-
this.socket = io(this._ip + this._namespace);
|
|
50
|
-
this.socket.on('connect', () => {
|
|
51
|
-
this.socket
|
|
52
|
-
.emit('solicitarEstablecerSocketId', { secreto: this._secreto }, (respuesta) => {
|
|
53
|
-
console.log(respuesta);
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
this.socket.on('error', (e) => {
|
|
57
|
-
console.log('Error', e);
|
|
58
|
-
});
|
|
59
|
-
this.socket.on('updatedOne', (registroActualizado) => {
|
|
60
|
-
console.info('updatedOne: ', registroActualizado);
|
|
61
|
-
});
|
|
62
|
-
this.socket.on('createdOne', (registroCreado) => {
|
|
63
|
-
console.info('createdOne: ', registroCreado);
|
|
64
|
-
});
|
|
65
|
-
this.socket.on('deletedOne', (registroEliminado) => {
|
|
66
|
-
console.info('deletedOne: ', registroEliminado);
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
handleConnection(client, ...args) {
|
|
70
|
-
console.info(this._namespace + ': conexion de cliente: ', client.id, args);
|
|
71
|
-
if (this._funciones.handleConnection) {
|
|
72
|
-
console.log('Ejecutando funcion handleConnection');
|
|
73
|
-
this._funciones.handleConnection(client, ...args);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
handleDisconnect(client) {
|
|
77
|
-
console.info('Empresa: desconexion de cliente: ', client.id);
|
|
78
|
-
if (this._funciones.handleDisconnect) {
|
|
79
|
-
console.log('Ejecutando funcion handleDisconnect');
|
|
80
|
-
this._funciones.handleConnection(client);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
solicitarEstablecerSocketId(socketCliente, datos) {
|
|
84
|
-
const secreto = datos.secreto;
|
|
85
|
-
if (secreto) {
|
|
86
|
-
if (secreto === this._secreto) {
|
|
87
|
-
this.socketId = socketCliente.id;
|
|
88
|
-
return { mensaje: 'ok' };
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
console.error('No envia secreto correcto', socketCliente.id);
|
|
92
|
-
return { error: 400, mensaje: 'Peticion invalida' };
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
console.error('No envia secreto', socketCliente.id);
|
|
97
|
-
return { error: 400, mensaje: 'Peticion invalida' };
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
requestFindAll(socketCliente, datos) {
|
|
101
|
-
const tipoPoliticaSeguridad = {
|
|
102
|
-
socketio: {
|
|
103
|
-
datos,
|
|
104
|
-
socketCliente
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
const objetoPoliticasDeSeguridad = {
|
|
108
|
-
funciones: this._funcionesSeguridad.findAll ? this._funcionesSeguridad.findAll : []
|
|
109
|
-
};
|
|
110
|
-
const puedeRealizarAccion$ = aplicar_politicas_de_seguridad_1.aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
|
|
111
|
-
return puedeRealizarAccion$
|
|
112
|
-
.pipe(operators_1.mergeMap((puedeRealizarAccion) => {
|
|
113
|
-
if (puedeRealizarAccion) {
|
|
114
|
-
return rxjs_1.from(buscar_registro_1.buscarVariosRegistros(datos.criterioBusqueda, principal_find_many_options_1.PrincipalFindManyOptions, this._skip, this._take, this._servicio));
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
return rxjs_1.of({ error: 403, mensaje: 'No tiene permisos' });
|
|
118
|
-
}
|
|
119
|
-
}), operators_1.map((respuesta) => {
|
|
120
|
-
if (respuesta.error) {
|
|
121
|
-
return respuesta;
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
return { data: respuesta };
|
|
125
|
-
}
|
|
126
|
-
}));
|
|
127
|
-
}
|
|
128
|
-
requestFindWhereOr(socketCliente, datos) {
|
|
129
|
-
const tipoPoliticaSeguridad = {
|
|
130
|
-
socketio: {
|
|
131
|
-
datos,
|
|
132
|
-
socketCliente
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
const objetoPoliticasDeSeguridad = {
|
|
136
|
-
funciones: this._funcionesSeguridad.findWhereOr ? this._funcionesSeguridad.findWhereOr : []
|
|
137
|
-
};
|
|
138
|
-
const puedeRealizarAccion$ = aplicar_politicas_de_seguridad_1.aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
|
|
139
|
-
return puedeRealizarAccion$
|
|
140
|
-
.pipe(operators_1.mergeMap((puedeRealizarAccion) => {
|
|
141
|
-
if (puedeRealizarAccion) {
|
|
142
|
-
return rxjs_1.from(buscar_where_or_1.buscarWhereOr(datos.criterioBusqueda, principal_find_many_options_1.PrincipalFindManyOptions, this._skip, this._take, this._servicio));
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
return rxjs_1.of({ error: 403, mensaje: 'No tiene permisos' });
|
|
146
|
-
}
|
|
147
|
-
}), operators_1.map((respuesta) => {
|
|
148
|
-
if (respuesta.error) {
|
|
149
|
-
return respuesta;
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
return { data: respuesta };
|
|
153
|
-
}
|
|
154
|
-
}));
|
|
155
|
-
}
|
|
156
|
-
count(socketCliente, datos) {
|
|
157
|
-
const tipoPoliticaSeguridad = {
|
|
158
|
-
socketio: {
|
|
159
|
-
datos,
|
|
160
|
-
socketCliente
|
|
161
|
-
}
|
|
162
|
-
};
|
|
163
|
-
const objetoPoliticasDeSeguridad = {
|
|
164
|
-
funciones: this._funcionesSeguridad.count ? this._funcionesSeguridad.count : []
|
|
165
|
-
};
|
|
166
|
-
const puedeRealizarAccion$ = aplicar_politicas_de_seguridad_1.aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
|
|
167
|
-
return puedeRealizarAccion$
|
|
168
|
-
.pipe(operators_1.mergeMap((puedeRealizarAccion) => {
|
|
169
|
-
if (puedeRealizarAccion) {
|
|
170
|
-
return rxjs_1.from(contar_registros_1.contarRegistros(datos.criterioBusqueda, principal_find_many_options_1.PrincipalFindManyOptions, this._skip, this._take, this._servicio));
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
return rxjs_1.of({ error: 403, mensaje: 'No tiene permisos' });
|
|
174
|
-
}
|
|
175
|
-
}), operators_1.map((respuesta) => {
|
|
176
|
-
if (respuesta.error) {
|
|
177
|
-
return respuesta;
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
return { data: respuesta };
|
|
181
|
-
}
|
|
182
|
-
}));
|
|
183
|
-
}
|
|
184
|
-
requestFindOne(socketCliente, datos) {
|
|
185
|
-
try {
|
|
186
|
-
if (!datos.id || typeof datos.id !== 'string' || Number(datos.id).toString() === "NaN") {
|
|
187
|
-
return rxjs_1.of({ error: 400, mensaje: this._mensajes.encontrarUno });
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
catch (e) {
|
|
191
|
-
console.error(e);
|
|
192
|
-
return rxjs_1.of({ error: 400, mensaje: this._mensajes.encontrarUno });
|
|
193
|
-
}
|
|
194
|
-
const tipoPoliticaSeguridad = {
|
|
195
|
-
socketio: {
|
|
196
|
-
datos,
|
|
197
|
-
socketCliente
|
|
198
|
-
}
|
|
199
|
-
};
|
|
200
|
-
const objetoPoliticasDeSeguridad = {
|
|
201
|
-
funciones: this._funcionesSeguridad.findOne ? this._funcionesSeguridad.findOne : []
|
|
202
|
-
};
|
|
203
|
-
const puedeRealizarAccion$ = aplicar_politicas_de_seguridad_1.aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
|
|
204
|
-
return puedeRealizarAccion$
|
|
205
|
-
.pipe(operators_1.mergeMap((puedeRealizarAccion) => {
|
|
206
|
-
if (puedeRealizarAccion) {
|
|
207
|
-
return rxjs_1.from(buscar_un_registro_por_id_1.buscarRegistroPorId(principal_id_1.PrincipalId, datos.id, this._servicio, this._mensajes.encontrarUno, true));
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
return rxjs_1.of({ error: 403, mensaje: 'No tiene permisos' });
|
|
211
|
-
}
|
|
212
|
-
}), operators_1.map((respuesta) => {
|
|
213
|
-
if (respuesta.error) {
|
|
214
|
-
return respuesta;
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
return { data: respuesta };
|
|
218
|
-
}
|
|
219
|
-
}));
|
|
220
|
-
}
|
|
221
|
-
requestCreateOne(socketCliente, datos) {
|
|
222
|
-
if (!datos.nuevoRegistro || typeof datos.nuevoRegistro !== 'object') {
|
|
223
|
-
return rxjs_1.of({ error: 400, mensaje: this._mensajes.crearUno });
|
|
224
|
-
}
|
|
225
|
-
const tipoPoliticaSeguridad = {
|
|
226
|
-
socketio: {
|
|
227
|
-
datos,
|
|
228
|
-
socketCliente
|
|
229
|
-
}
|
|
230
|
-
};
|
|
231
|
-
const objetoPoliticasDeSeguridad = {
|
|
232
|
-
funciones: this._funcionesSeguridad.createOne ? this._funcionesSeguridad.createOne : []
|
|
233
|
-
};
|
|
234
|
-
const puedeRealizarAccion$ = aplicar_politicas_de_seguridad_1.aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
|
|
235
|
-
return puedeRealizarAccion$
|
|
236
|
-
.pipe(operators_1.mergeMap((puedeRealizarAccion) => {
|
|
237
|
-
if (puedeRealizarAccion) {
|
|
238
|
-
return rxjs_1.from(crear_un_registro_1.crearUnRegistro(datos.nuevoRegistro, this._servicio, this._dto.CreateDto, this._mensajes.crearUno, true));
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
return rxjs_1.of({ error: 403, mensaje: 'No tiene permisos' });
|
|
242
|
-
}
|
|
243
|
-
}), operators_1.map((respuesta) => {
|
|
244
|
-
if (respuesta.error) {
|
|
245
|
-
return respuesta;
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
const tieneConfiguracionDeBroadcast = this._configuracionBroadcast.createOne;
|
|
249
|
-
if (tieneConfiguracionDeBroadcast) {
|
|
250
|
-
const hacerBroadcast = this._configuracionBroadcast.createOne.broadcast;
|
|
251
|
-
const tieneFuncionRoom = this._configuracionBroadcast.createOne.funcionJoin;
|
|
252
|
-
if (hacerBroadcast && !tieneFuncionRoom) {
|
|
253
|
-
console.info('Ejecutando broadcast');
|
|
254
|
-
socketCliente
|
|
255
|
-
.broadcast
|
|
256
|
-
.emit('createdOne', { data: respuesta });
|
|
257
|
-
}
|
|
258
|
-
if (tieneFuncionRoom) {
|
|
259
|
-
console.info('Ejecutando funcion join');
|
|
260
|
-
tieneFuncionRoom(socketCliente, datos, this.contexto);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
return { data: respuesta };
|
|
264
|
-
}
|
|
265
|
-
}));
|
|
266
|
-
}
|
|
267
|
-
requestDeleteOne(socketCliente, datos) {
|
|
268
|
-
try {
|
|
269
|
-
if (!datos.id || typeof datos.id !== 'string' || Number(datos.id).toString() === "NaN") {
|
|
270
|
-
return rxjs_1.of({ error: 400, mensaje: this._mensajes.encontrarUno });
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
catch (e) {
|
|
274
|
-
console.error(e);
|
|
275
|
-
return rxjs_1.of({ error: 400, mensaje: this._mensajes.encontrarUno });
|
|
276
|
-
}
|
|
277
|
-
const tipoPoliticaSeguridad = {
|
|
278
|
-
socketio: {
|
|
279
|
-
datos,
|
|
280
|
-
socketCliente
|
|
281
|
-
}
|
|
282
|
-
};
|
|
283
|
-
const objetoPoliticasDeSeguridad = {
|
|
284
|
-
funciones: this._funcionesSeguridad.deleteOne ? this._funcionesSeguridad.deleteOne : []
|
|
285
|
-
};
|
|
286
|
-
const puedeRealizarAccion$ = aplicar_politicas_de_seguridad_1.aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
|
|
287
|
-
return puedeRealizarAccion$
|
|
288
|
-
.pipe(operators_1.mergeMap((puedeRealizarAccion) => {
|
|
289
|
-
if (puedeRealizarAccion) {
|
|
290
|
-
return rxjs_1.from(eliminar_uno_1.eliminarUno(datos.id, principal_id_1.PrincipalId, this._servicio, this._mensajes.eliminarUno, true));
|
|
291
|
-
}
|
|
292
|
-
else {
|
|
293
|
-
return rxjs_1.of({ error: 403, mensaje: 'No tiene permisos' });
|
|
294
|
-
}
|
|
295
|
-
}), operators_1.map((respuesta) => {
|
|
296
|
-
if (respuesta.error) {
|
|
297
|
-
return respuesta;
|
|
298
|
-
}
|
|
299
|
-
else {
|
|
300
|
-
const tieneConfiguracionDeBroadcast = this._configuracionBroadcast.deleteOne;
|
|
301
|
-
if (tieneConfiguracionDeBroadcast) {
|
|
302
|
-
const hacerBroadcast = this._configuracionBroadcast.deleteOne.broadcast;
|
|
303
|
-
const tieneFuncionRoom = this._configuracionBroadcast.deleteOne.funcionJoin;
|
|
304
|
-
if (hacerBroadcast && !tieneFuncionRoom) {
|
|
305
|
-
console.info('Ejecutando broadcast');
|
|
306
|
-
socketCliente
|
|
307
|
-
.broadcast
|
|
308
|
-
.emit('deletedOne', { data: respuesta });
|
|
309
|
-
}
|
|
310
|
-
if (tieneFuncionRoom) {
|
|
311
|
-
console.info('Ejecutando funcion join');
|
|
312
|
-
tieneFuncionRoom(socketCliente, datos, this.contexto);
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
return { data: respuesta };
|
|
316
|
-
}
|
|
317
|
-
}));
|
|
318
|
-
}
|
|
319
|
-
requestUpdateOne(socketCliente, datos) {
|
|
320
|
-
if (!datos.registroaActualizar || typeof datos.registroaActualizar !== 'object') {
|
|
321
|
-
return rxjs_1.of({ error: 400, mensaje: this._mensajes.crearUno });
|
|
322
|
-
}
|
|
323
|
-
try {
|
|
324
|
-
if (!datos.id || typeof datos.id !== 'string' || Number(datos.id).toString() === "NaN") {
|
|
325
|
-
return rxjs_1.of({ error: 400, mensaje: this._mensajes.encontrarUno });
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
catch (e) {
|
|
329
|
-
console.error(e);
|
|
330
|
-
return rxjs_1.of({ error: 400, mensaje: this._mensajes.encontrarUno });
|
|
331
|
-
}
|
|
332
|
-
const tipoPoliticaSeguridad = {
|
|
333
|
-
socketio: {
|
|
334
|
-
datos,
|
|
335
|
-
socketCliente
|
|
336
|
-
}
|
|
337
|
-
};
|
|
338
|
-
const objetoPoliticasDeSeguridad = {
|
|
339
|
-
funciones: this._funcionesSeguridad.updateOne ? this._funcionesSeguridad.updateOne : []
|
|
340
|
-
};
|
|
341
|
-
const puedeRealizarAccion$ = aplicar_politicas_de_seguridad_1.aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
|
|
342
|
-
return puedeRealizarAccion$
|
|
343
|
-
.pipe(operators_1.mergeMap((puedeRealizarAccion) => {
|
|
344
|
-
if (puedeRealizarAccion) {
|
|
345
|
-
return rxjs_1.from(editar_un_registro_1.editarUnRegistro(datos.id, datos.registroaActualizar, this._servicio, this._dto.UpdateDto, this._mensajes.actualizarUno, true));
|
|
346
|
-
}
|
|
347
|
-
else {
|
|
348
|
-
return rxjs_1.of({ error: 403, mensaje: 'No tiene permisos' });
|
|
349
|
-
}
|
|
350
|
-
}), operators_1.map((respuesta) => {
|
|
351
|
-
if (respuesta.error) {
|
|
352
|
-
return respuesta;
|
|
353
|
-
}
|
|
354
|
-
else {
|
|
355
|
-
const tieneConfiguracionDeBroadcast = this._configuracionBroadcast.updateOne;
|
|
356
|
-
if (tieneConfiguracionDeBroadcast) {
|
|
357
|
-
const hacerBroadcast = this._configuracionBroadcast.updateOne.broadcast;
|
|
358
|
-
const tieneFuncionRoom = this._configuracionBroadcast.updateOne.funcionJoin;
|
|
359
|
-
if (hacerBroadcast && !tieneFuncionRoom) {
|
|
360
|
-
console.info('Ejecutando broadcast');
|
|
361
|
-
socketCliente
|
|
362
|
-
.broadcast
|
|
363
|
-
.emit('updatedOne', { data: respuesta });
|
|
364
|
-
}
|
|
365
|
-
if (tieneFuncionRoom) {
|
|
366
|
-
console.info('Ejecutando funcion join');
|
|
367
|
-
tieneFuncionRoom(socketCliente, datos, this.contexto);
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
return { data: respuesta };
|
|
371
|
-
}
|
|
372
|
-
}));
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
__decorate([
|
|
376
|
-
websockets_1.SubscribeMessage('solicitarEstablecerSocketId')
|
|
377
|
-
], PrincipalGateway.prototype, "solicitarEstablecerSocketId", null);
|
|
378
|
-
__decorate([
|
|
379
|
-
websockets_1.SubscribeMessage('requestFindAll')
|
|
380
|
-
], PrincipalGateway.prototype, "requestFindAll", null);
|
|
381
|
-
__decorate([
|
|
382
|
-
websockets_1.SubscribeMessage('requestFindWhereOr')
|
|
383
|
-
], PrincipalGateway.prototype, "requestFindWhereOr", null);
|
|
384
|
-
__decorate([
|
|
385
|
-
websockets_1.SubscribeMessage('requestCount')
|
|
386
|
-
], PrincipalGateway.prototype, "count", null);
|
|
387
|
-
__decorate([
|
|
388
|
-
websockets_1.SubscribeMessage('requestFindOne')
|
|
389
|
-
], PrincipalGateway.prototype, "requestFindOne", null);
|
|
390
|
-
__decorate([
|
|
391
|
-
websockets_1.SubscribeMessage('requestCreateOne')
|
|
392
|
-
], PrincipalGateway.prototype, "requestCreateOne", null);
|
|
393
|
-
__decorate([
|
|
394
|
-
websockets_1.SubscribeMessage('requestDeleteOne')
|
|
395
|
-
], PrincipalGateway.prototype, "requestDeleteOne", null);
|
|
396
|
-
__decorate([
|
|
397
|
-
websockets_1.SubscribeMessage('requestUpdateOne')
|
|
398
|
-
], PrincipalGateway.prototype, "requestUpdateOne", null);
|
|
399
|
-
exports.PrincipalGateway = PrincipalGateway;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const websockets_1 = require("@nestjs/websockets");
|
|
10
|
+
const aplicar_politicas_de_seguridad_1 = require("./seguridad/aplicar-politicas-de-seguridad");
|
|
11
|
+
const rxjs_1 = require("rxjs");
|
|
12
|
+
const operators_1 = require("rxjs/operators");
|
|
13
|
+
const buscar_registro_1 = require("./funciones-util/buscar-registro");
|
|
14
|
+
const principal_find_many_options_1 = require("./principal.find-many-options");
|
|
15
|
+
const buscar_un_registro_por_id_1 = require("./funciones-util/buscar-un-registro-por-id");
|
|
16
|
+
const principal_id_1 = require("./principal.id");
|
|
17
|
+
const crear_un_registro_1 = require("./funciones-util/crear-un-registro");
|
|
18
|
+
const eliminar_uno_1 = require("./funciones-util/eliminar-uno");
|
|
19
|
+
const editar_un_registro_1 = require("./funciones-util/editar-un-registro");
|
|
20
|
+
const contar_registros_1 = require("./funciones-util/contar-registros");
|
|
21
|
+
const buscar_where_or_1 = require("./funciones-util/buscar-where-or");
|
|
22
|
+
const io = require('socket.io-client');
|
|
23
|
+
class PrincipalGateway {
|
|
24
|
+
constructor(_ip, _namespace, _secreto, _funciones, _configuracionBroadcast, _funcionesSeguridad, _servicio, _dto, _skip = 0, _take = 30, _mensajes = {
|
|
25
|
+
encontrarUno: 'Id incorrecto',
|
|
26
|
+
crearUno: 'Registro inválido',
|
|
27
|
+
actualizarUno: 'Error al actualizar',
|
|
28
|
+
eliminarUno: 'Error al eliminar'
|
|
29
|
+
}, contexto) {
|
|
30
|
+
this._ip = _ip;
|
|
31
|
+
this._namespace = _namespace;
|
|
32
|
+
this._secreto = _secreto;
|
|
33
|
+
this._funciones = _funciones;
|
|
34
|
+
this._configuracionBroadcast = _configuracionBroadcast;
|
|
35
|
+
this._funcionesSeguridad = _funcionesSeguridad;
|
|
36
|
+
this._servicio = _servicio;
|
|
37
|
+
this._dto = _dto;
|
|
38
|
+
this._skip = _skip;
|
|
39
|
+
this._take = _take;
|
|
40
|
+
this._mensajes = _mensajes;
|
|
41
|
+
this.contexto = contexto;
|
|
42
|
+
}
|
|
43
|
+
afterInit(server) {
|
|
44
|
+
console.log('Init ' + this._namespace);
|
|
45
|
+
if (this._funciones.afterInit) {
|
|
46
|
+
console.info('Ejecutando funcion init');
|
|
47
|
+
this._funciones.afterInit(server);
|
|
48
|
+
}
|
|
49
|
+
this.socket = io(this._ip + this._namespace);
|
|
50
|
+
this.socket.on('connect', () => {
|
|
51
|
+
this.socket
|
|
52
|
+
.emit('solicitarEstablecerSocketId', { secreto: this._secreto }, (respuesta) => {
|
|
53
|
+
console.log(respuesta);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
this.socket.on('error', (e) => {
|
|
57
|
+
console.log('Error', e);
|
|
58
|
+
});
|
|
59
|
+
this.socket.on('updatedOne', (registroActualizado) => {
|
|
60
|
+
console.info('updatedOne: ', registroActualizado);
|
|
61
|
+
});
|
|
62
|
+
this.socket.on('createdOne', (registroCreado) => {
|
|
63
|
+
console.info('createdOne: ', registroCreado);
|
|
64
|
+
});
|
|
65
|
+
this.socket.on('deletedOne', (registroEliminado) => {
|
|
66
|
+
console.info('deletedOne: ', registroEliminado);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
handleConnection(client, ...args) {
|
|
70
|
+
console.info(this._namespace + ': conexion de cliente: ', client.id, args);
|
|
71
|
+
if (this._funciones.handleConnection) {
|
|
72
|
+
console.log('Ejecutando funcion handleConnection');
|
|
73
|
+
this._funciones.handleConnection(client, ...args);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
handleDisconnect(client) {
|
|
77
|
+
console.info('Empresa: desconexion de cliente: ', client.id);
|
|
78
|
+
if (this._funciones.handleDisconnect) {
|
|
79
|
+
console.log('Ejecutando funcion handleDisconnect');
|
|
80
|
+
this._funciones.handleConnection(client);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
solicitarEstablecerSocketId(socketCliente, datos) {
|
|
84
|
+
const secreto = datos.secreto;
|
|
85
|
+
if (secreto) {
|
|
86
|
+
if (secreto === this._secreto) {
|
|
87
|
+
this.socketId = socketCliente.id;
|
|
88
|
+
return { mensaje: 'ok' };
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
console.error('No envia secreto correcto', socketCliente.id);
|
|
92
|
+
return { error: 400, mensaje: 'Peticion invalida' };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
console.error('No envia secreto', socketCliente.id);
|
|
97
|
+
return { error: 400, mensaje: 'Peticion invalida' };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
requestFindAll(socketCliente, datos) {
|
|
101
|
+
const tipoPoliticaSeguridad = {
|
|
102
|
+
socketio: {
|
|
103
|
+
datos,
|
|
104
|
+
socketCliente
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
const objetoPoliticasDeSeguridad = {
|
|
108
|
+
funciones: this._funcionesSeguridad.findAll ? this._funcionesSeguridad.findAll : []
|
|
109
|
+
};
|
|
110
|
+
const puedeRealizarAccion$ = aplicar_politicas_de_seguridad_1.aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
|
|
111
|
+
return puedeRealizarAccion$
|
|
112
|
+
.pipe(operators_1.mergeMap((puedeRealizarAccion) => {
|
|
113
|
+
if (puedeRealizarAccion) {
|
|
114
|
+
return rxjs_1.from(buscar_registro_1.buscarVariosRegistros(datos.criterioBusqueda, principal_find_many_options_1.PrincipalFindManyOptions, this._skip, this._take, this._servicio));
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
return rxjs_1.of({ error: 403, mensaje: 'No tiene permisos' });
|
|
118
|
+
}
|
|
119
|
+
}), operators_1.map((respuesta) => {
|
|
120
|
+
if (respuesta.error) {
|
|
121
|
+
return respuesta;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
return { data: respuesta };
|
|
125
|
+
}
|
|
126
|
+
}));
|
|
127
|
+
}
|
|
128
|
+
requestFindWhereOr(socketCliente, datos) {
|
|
129
|
+
const tipoPoliticaSeguridad = {
|
|
130
|
+
socketio: {
|
|
131
|
+
datos,
|
|
132
|
+
socketCliente
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
const objetoPoliticasDeSeguridad = {
|
|
136
|
+
funciones: this._funcionesSeguridad.findWhereOr ? this._funcionesSeguridad.findWhereOr : []
|
|
137
|
+
};
|
|
138
|
+
const puedeRealizarAccion$ = aplicar_politicas_de_seguridad_1.aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
|
|
139
|
+
return puedeRealizarAccion$
|
|
140
|
+
.pipe(operators_1.mergeMap((puedeRealizarAccion) => {
|
|
141
|
+
if (puedeRealizarAccion) {
|
|
142
|
+
return rxjs_1.from(buscar_where_or_1.buscarWhereOr(datos.criterioBusqueda, principal_find_many_options_1.PrincipalFindManyOptions, this._skip, this._take, this._servicio));
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
return rxjs_1.of({ error: 403, mensaje: 'No tiene permisos' });
|
|
146
|
+
}
|
|
147
|
+
}), operators_1.map((respuesta) => {
|
|
148
|
+
if (respuesta.error) {
|
|
149
|
+
return respuesta;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
return { data: respuesta };
|
|
153
|
+
}
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
count(socketCliente, datos) {
|
|
157
|
+
const tipoPoliticaSeguridad = {
|
|
158
|
+
socketio: {
|
|
159
|
+
datos,
|
|
160
|
+
socketCliente
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
const objetoPoliticasDeSeguridad = {
|
|
164
|
+
funciones: this._funcionesSeguridad.count ? this._funcionesSeguridad.count : []
|
|
165
|
+
};
|
|
166
|
+
const puedeRealizarAccion$ = aplicar_politicas_de_seguridad_1.aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
|
|
167
|
+
return puedeRealizarAccion$
|
|
168
|
+
.pipe(operators_1.mergeMap((puedeRealizarAccion) => {
|
|
169
|
+
if (puedeRealizarAccion) {
|
|
170
|
+
return rxjs_1.from(contar_registros_1.contarRegistros(datos.criterioBusqueda, principal_find_many_options_1.PrincipalFindManyOptions, this._skip, this._take, this._servicio));
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
return rxjs_1.of({ error: 403, mensaje: 'No tiene permisos' });
|
|
174
|
+
}
|
|
175
|
+
}), operators_1.map((respuesta) => {
|
|
176
|
+
if (respuesta.error) {
|
|
177
|
+
return respuesta;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
return { data: respuesta };
|
|
181
|
+
}
|
|
182
|
+
}));
|
|
183
|
+
}
|
|
184
|
+
requestFindOne(socketCliente, datos) {
|
|
185
|
+
try {
|
|
186
|
+
if (!datos.id || typeof datos.id !== 'string' || Number(datos.id).toString() === "NaN") {
|
|
187
|
+
return rxjs_1.of({ error: 400, mensaje: this._mensajes.encontrarUno });
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch (e) {
|
|
191
|
+
console.error(e);
|
|
192
|
+
return rxjs_1.of({ error: 400, mensaje: this._mensajes.encontrarUno });
|
|
193
|
+
}
|
|
194
|
+
const tipoPoliticaSeguridad = {
|
|
195
|
+
socketio: {
|
|
196
|
+
datos,
|
|
197
|
+
socketCliente
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
const objetoPoliticasDeSeguridad = {
|
|
201
|
+
funciones: this._funcionesSeguridad.findOne ? this._funcionesSeguridad.findOne : []
|
|
202
|
+
};
|
|
203
|
+
const puedeRealizarAccion$ = aplicar_politicas_de_seguridad_1.aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
|
|
204
|
+
return puedeRealizarAccion$
|
|
205
|
+
.pipe(operators_1.mergeMap((puedeRealizarAccion) => {
|
|
206
|
+
if (puedeRealizarAccion) {
|
|
207
|
+
return rxjs_1.from(buscar_un_registro_por_id_1.buscarRegistroPorId(principal_id_1.PrincipalId, datos.id, this._servicio, this._mensajes.encontrarUno, true));
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
return rxjs_1.of({ error: 403, mensaje: 'No tiene permisos' });
|
|
211
|
+
}
|
|
212
|
+
}), operators_1.map((respuesta) => {
|
|
213
|
+
if (respuesta.error) {
|
|
214
|
+
return respuesta;
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
return { data: respuesta };
|
|
218
|
+
}
|
|
219
|
+
}));
|
|
220
|
+
}
|
|
221
|
+
requestCreateOne(socketCliente, datos) {
|
|
222
|
+
if (!datos.nuevoRegistro || typeof datos.nuevoRegistro !== 'object') {
|
|
223
|
+
return rxjs_1.of({ error: 400, mensaje: this._mensajes.crearUno });
|
|
224
|
+
}
|
|
225
|
+
const tipoPoliticaSeguridad = {
|
|
226
|
+
socketio: {
|
|
227
|
+
datos,
|
|
228
|
+
socketCliente
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
const objetoPoliticasDeSeguridad = {
|
|
232
|
+
funciones: this._funcionesSeguridad.createOne ? this._funcionesSeguridad.createOne : []
|
|
233
|
+
};
|
|
234
|
+
const puedeRealizarAccion$ = aplicar_politicas_de_seguridad_1.aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
|
|
235
|
+
return puedeRealizarAccion$
|
|
236
|
+
.pipe(operators_1.mergeMap((puedeRealizarAccion) => {
|
|
237
|
+
if (puedeRealizarAccion) {
|
|
238
|
+
return rxjs_1.from(crear_un_registro_1.crearUnRegistro(datos.nuevoRegistro, this._servicio, this._dto.CreateDto, this._mensajes.crearUno, true));
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
return rxjs_1.of({ error: 403, mensaje: 'No tiene permisos' });
|
|
242
|
+
}
|
|
243
|
+
}), operators_1.map((respuesta) => {
|
|
244
|
+
if (respuesta.error) {
|
|
245
|
+
return respuesta;
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
const tieneConfiguracionDeBroadcast = this._configuracionBroadcast.createOne;
|
|
249
|
+
if (tieneConfiguracionDeBroadcast) {
|
|
250
|
+
const hacerBroadcast = this._configuracionBroadcast.createOne.broadcast;
|
|
251
|
+
const tieneFuncionRoom = this._configuracionBroadcast.createOne.funcionJoin;
|
|
252
|
+
if (hacerBroadcast && !tieneFuncionRoom) {
|
|
253
|
+
console.info('Ejecutando broadcast');
|
|
254
|
+
socketCliente
|
|
255
|
+
.broadcast
|
|
256
|
+
.emit('createdOne', { data: respuesta });
|
|
257
|
+
}
|
|
258
|
+
if (tieneFuncionRoom) {
|
|
259
|
+
console.info('Ejecutando funcion join');
|
|
260
|
+
tieneFuncionRoom(socketCliente, datos, this.contexto);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return { data: respuesta };
|
|
264
|
+
}
|
|
265
|
+
}));
|
|
266
|
+
}
|
|
267
|
+
requestDeleteOne(socketCliente, datos) {
|
|
268
|
+
try {
|
|
269
|
+
if (!datos.id || typeof datos.id !== 'string' || Number(datos.id).toString() === "NaN") {
|
|
270
|
+
return rxjs_1.of({ error: 400, mensaje: this._mensajes.encontrarUno });
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
catch (e) {
|
|
274
|
+
console.error(e);
|
|
275
|
+
return rxjs_1.of({ error: 400, mensaje: this._mensajes.encontrarUno });
|
|
276
|
+
}
|
|
277
|
+
const tipoPoliticaSeguridad = {
|
|
278
|
+
socketio: {
|
|
279
|
+
datos,
|
|
280
|
+
socketCliente
|
|
281
|
+
}
|
|
282
|
+
};
|
|
283
|
+
const objetoPoliticasDeSeguridad = {
|
|
284
|
+
funciones: this._funcionesSeguridad.deleteOne ? this._funcionesSeguridad.deleteOne : []
|
|
285
|
+
};
|
|
286
|
+
const puedeRealizarAccion$ = aplicar_politicas_de_seguridad_1.aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
|
|
287
|
+
return puedeRealizarAccion$
|
|
288
|
+
.pipe(operators_1.mergeMap((puedeRealizarAccion) => {
|
|
289
|
+
if (puedeRealizarAccion) {
|
|
290
|
+
return rxjs_1.from(eliminar_uno_1.eliminarUno(datos.id, principal_id_1.PrincipalId, this._servicio, this._mensajes.eliminarUno, true));
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
return rxjs_1.of({ error: 403, mensaje: 'No tiene permisos' });
|
|
294
|
+
}
|
|
295
|
+
}), operators_1.map((respuesta) => {
|
|
296
|
+
if (respuesta.error) {
|
|
297
|
+
return respuesta;
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
const tieneConfiguracionDeBroadcast = this._configuracionBroadcast.deleteOne;
|
|
301
|
+
if (tieneConfiguracionDeBroadcast) {
|
|
302
|
+
const hacerBroadcast = this._configuracionBroadcast.deleteOne.broadcast;
|
|
303
|
+
const tieneFuncionRoom = this._configuracionBroadcast.deleteOne.funcionJoin;
|
|
304
|
+
if (hacerBroadcast && !tieneFuncionRoom) {
|
|
305
|
+
console.info('Ejecutando broadcast');
|
|
306
|
+
socketCliente
|
|
307
|
+
.broadcast
|
|
308
|
+
.emit('deletedOne', { data: respuesta });
|
|
309
|
+
}
|
|
310
|
+
if (tieneFuncionRoom) {
|
|
311
|
+
console.info('Ejecutando funcion join');
|
|
312
|
+
tieneFuncionRoom(socketCliente, datos, this.contexto);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return { data: respuesta };
|
|
316
|
+
}
|
|
317
|
+
}));
|
|
318
|
+
}
|
|
319
|
+
requestUpdateOne(socketCliente, datos) {
|
|
320
|
+
if (!datos.registroaActualizar || typeof datos.registroaActualizar !== 'object') {
|
|
321
|
+
return rxjs_1.of({ error: 400, mensaje: this._mensajes.crearUno });
|
|
322
|
+
}
|
|
323
|
+
try {
|
|
324
|
+
if (!datos.id || typeof datos.id !== 'string' || Number(datos.id).toString() === "NaN") {
|
|
325
|
+
return rxjs_1.of({ error: 400, mensaje: this._mensajes.encontrarUno });
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
catch (e) {
|
|
329
|
+
console.error(e);
|
|
330
|
+
return rxjs_1.of({ error: 400, mensaje: this._mensajes.encontrarUno });
|
|
331
|
+
}
|
|
332
|
+
const tipoPoliticaSeguridad = {
|
|
333
|
+
socketio: {
|
|
334
|
+
datos,
|
|
335
|
+
socketCliente
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
const objetoPoliticasDeSeguridad = {
|
|
339
|
+
funciones: this._funcionesSeguridad.updateOne ? this._funcionesSeguridad.updateOne : []
|
|
340
|
+
};
|
|
341
|
+
const puedeRealizarAccion$ = aplicar_politicas_de_seguridad_1.aplicarPoliticasDeSeguridad(tipoPoliticaSeguridad, objetoPoliticasDeSeguridad, this.contexto);
|
|
342
|
+
return puedeRealizarAccion$
|
|
343
|
+
.pipe(operators_1.mergeMap((puedeRealizarAccion) => {
|
|
344
|
+
if (puedeRealizarAccion) {
|
|
345
|
+
return rxjs_1.from(editar_un_registro_1.editarUnRegistro(datos.id, datos.registroaActualizar, this._servicio, this._dto.UpdateDto, this._mensajes.actualizarUno, true));
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
return rxjs_1.of({ error: 403, mensaje: 'No tiene permisos' });
|
|
349
|
+
}
|
|
350
|
+
}), operators_1.map((respuesta) => {
|
|
351
|
+
if (respuesta.error) {
|
|
352
|
+
return respuesta;
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
const tieneConfiguracionDeBroadcast = this._configuracionBroadcast.updateOne;
|
|
356
|
+
if (tieneConfiguracionDeBroadcast) {
|
|
357
|
+
const hacerBroadcast = this._configuracionBroadcast.updateOne.broadcast;
|
|
358
|
+
const tieneFuncionRoom = this._configuracionBroadcast.updateOne.funcionJoin;
|
|
359
|
+
if (hacerBroadcast && !tieneFuncionRoom) {
|
|
360
|
+
console.info('Ejecutando broadcast');
|
|
361
|
+
socketCliente
|
|
362
|
+
.broadcast
|
|
363
|
+
.emit('updatedOne', { data: respuesta });
|
|
364
|
+
}
|
|
365
|
+
if (tieneFuncionRoom) {
|
|
366
|
+
console.info('Ejecutando funcion join');
|
|
367
|
+
tieneFuncionRoom(socketCliente, datos, this.contexto);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
return { data: respuesta };
|
|
371
|
+
}
|
|
372
|
+
}));
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
__decorate([
|
|
376
|
+
websockets_1.SubscribeMessage('solicitarEstablecerSocketId')
|
|
377
|
+
], PrincipalGateway.prototype, "solicitarEstablecerSocketId", null);
|
|
378
|
+
__decorate([
|
|
379
|
+
websockets_1.SubscribeMessage('requestFindAll')
|
|
380
|
+
], PrincipalGateway.prototype, "requestFindAll", null);
|
|
381
|
+
__decorate([
|
|
382
|
+
websockets_1.SubscribeMessage('requestFindWhereOr')
|
|
383
|
+
], PrincipalGateway.prototype, "requestFindWhereOr", null);
|
|
384
|
+
__decorate([
|
|
385
|
+
websockets_1.SubscribeMessage('requestCount')
|
|
386
|
+
], PrincipalGateway.prototype, "count", null);
|
|
387
|
+
__decorate([
|
|
388
|
+
websockets_1.SubscribeMessage('requestFindOne')
|
|
389
|
+
], PrincipalGateway.prototype, "requestFindOne", null);
|
|
390
|
+
__decorate([
|
|
391
|
+
websockets_1.SubscribeMessage('requestCreateOne')
|
|
392
|
+
], PrincipalGateway.prototype, "requestCreateOne", null);
|
|
393
|
+
__decorate([
|
|
394
|
+
websockets_1.SubscribeMessage('requestDeleteOne')
|
|
395
|
+
], PrincipalGateway.prototype, "requestDeleteOne", null);
|
|
396
|
+
__decorate([
|
|
397
|
+
websockets_1.SubscribeMessage('requestUpdateOne')
|
|
398
|
+
], PrincipalGateway.prototype, "requestUpdateOne", null);
|
|
399
|
+
exports.PrincipalGateway = PrincipalGateway;
|
|
400
400
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGFsLmdhdGV3YXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3ByaW5jaXBhbC5nYXRld2F5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsbURBQXNEO0FBSXRELCtGQUF5RjtBQUd6RiwrQkFBNEM7QUFDNUMsOENBQStDO0FBQy9DLHNFQUF5RTtBQUN6RSwrRUFBeUU7QUFDekUsMEZBQWlGO0FBQ2pGLGlEQUE2QztBQUU3QywwRUFBcUU7QUFHckUsZ0VBQTREO0FBQzVELDRFQUF1RTtBQUN2RSx3RUFBb0U7QUFDcEUsc0VBQWlFO0FBQ2pFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBR3ZDO0lBS0ksWUFBNkIsR0FBVyxFQUNuQixVQUFrQixFQUNsQixRQUFnQixFQUNoQixVQUE0QixFQUM1Qix1QkFBc0QsRUFDdEQsbUJBQXVDLEVBQ3ZDLFNBQVMsRUFDVCxJQUFrQixFQUNsQixRQUFRLENBQUMsRUFDVCxRQUFRLEVBQUUsRUFDVixZQUFnQztRQUM3QyxZQUFZLEVBQUUsZUFBZTtRQUM3QixRQUFRLEVBQUUsbUJBQW1CO1FBQzdCLGFBQWEsRUFBRSxxQkFBcUI7UUFDcEMsV0FBVyxFQUFFLG1CQUFtQjtLQUNuQyxFQUNTLFFBQWE7UUFoQkUsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUErQjtRQUN0RCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLGNBQVMsR0FBVCxTQUFTLENBQUE7UUFDVCxTQUFJLEdBQUosSUFBSSxDQUFjO1FBQ2xCLFVBQUssR0FBTCxLQUFLLENBQUk7UUFDVCxVQUFLLEdBQUwsS0FBSyxDQUFLO1FBQ1YsY0FBUyxHQUFULFNBQVMsQ0FLekI7UUFDUyxhQUFRLEdBQVIsUUFBUSxDQUFLO0lBQzNCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBVztRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTtZQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDckM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQyxNQUFNO2lCQUNOLElBQUksQ0FBQyw2QkFBNkIsRUFDL0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUMxQixDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0IsQ0FBQyxDQUNKLENBQUE7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDNUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUE7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO1lBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFFUCxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsTUFBVyxFQUFFLEdBQUcsSUFBVztRQUN4QyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcseUJBQXlCLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7WUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDckQ7SUFDTCxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsTUFBVztRQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7WUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBS0QsMkJBQTJCLENBQUMsYUFBYSxFQUFFLEtBQUs7UUFDNUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM5QixJQUFJLE9BQU8sRUFBRTtZQUNULElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUM1QjtpQkFBTTtnQkFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUE7YUFDdEQ7U0FDSjthQUFNO1lBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUE7U0FDdEQ7SUFDTCxDQUFDO0lBR0QsY0FBYyxDQUFDLGFBQWEsRUFBRSxLQUFLO1FBRS9CLE1BQU0scUJBQXFCLEdBQXlCO1lBQ2hELFFBQVEsRUFBRTtnQkFDTixLQUFLO2dCQUNMLGFBQWE7YUFDaEI7U0FDSixDQUFBO1FBQ0QsTUFBTSwwQkFBMEIsR0FBOEI7WUFDMUQsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDdEYsQ0FBQTtRQUVELE1BQU0sb0JBQW9CLEdBQUcsNERBQTJCLENBQUMscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNILE9BQU8sb0JBQW9CO2FBQ3RCLElBQUksQ0FDRCxvQkFBUSxDQUNKLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUNwQixJQUFJLG1CQUFtQixFQUFFO2dCQUNyQixPQUFPLFdBQUksQ0FBQyx1Q0FBcUIsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsc0RBQXdCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2FBQ2hJO2lCQUFNO2dCQUNILE9BQU8sU0FBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFBO2FBQzFEO1FBQ0wsQ0FBQyxDQUNKLEVBQ0QsZUFBRyxDQUNDLENBQUMsU0FBYyxFQUFFLEVBQUU7WUFDZixJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pCLE9BQU8sU0FBUyxDQUFDO2FBQ3BCO2lCQUFNO2dCQUNILE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7YUFDOUI7UUFDTCxDQUFDLENBQ0osQ0FDSixDQUFBO0lBQ1QsQ0FBQztJQUlELGtCQUFrQixDQUFDLGFBQWEsRUFBRSxLQUFLO1FBRW5DLE1BQU0scUJBQXFCLEdBQXlCO1lBQ2hELFFBQVEsRUFBRTtnQkFDTixLQUFLO2dCQUNMLGFBQWE7YUFDaEI7U0FDSixDQUFBO1FBQ0QsTUFBTSwwQkFBMEIsR0FBOEI7WUFDMUQsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDOUYsQ0FBQTtRQUVELE1BQU0sb0JBQW9CLEdBQUcsNERBQTJCLENBQUMscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNILE9BQU8sb0JBQW9CO2FBQ3RCLElBQUksQ0FDRCxvQkFBUSxDQUNKLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUNwQixJQUFJLG1CQUFtQixFQUFFO2dCQUNyQixPQUFPLFdBQUksQ0FBQywrQkFBYSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxzREFBd0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDeEg7aUJBQU07Z0JBQ0gsT0FBTyxTQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUE7YUFDMUQ7UUFDTCxDQUFDLENBQ0osRUFDRCxlQUFHLENBQ0MsQ0FBQyxTQUFjLEVBQUUsRUFBRTtZQUNmLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRTtnQkFDakIsT0FBTyxTQUFTLENBQUM7YUFDcEI7aUJBQU07Z0JBQ0gsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzthQUM5QjtRQUNMLENBQUMsQ0FDSixDQUNKLENBQUE7SUFDVCxDQUFDO0lBSUQsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLO1FBRXRCLE1BQU0scUJBQXFCLEdBQXlCO1lBQ2hELFFBQVEsRUFBRTtnQkFDTixLQUFLO2dCQUNMLGFBQWE7YUFDaEI7U0FDSixDQUFBO1FBQ0QsTUFBTSwwQkFBMEIsR0FBOEI7WUFDMUQsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDbEYsQ0FBQTtRQUVELE1BQU0sb0JBQW9CLEdBQUcsNERBQTJCLENBQUMscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNILE9BQU8sb0JBQW9CO2FBQ3RCLElBQUksQ0FDRCxvQkFBUSxDQUNKLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUNwQixJQUFJLG1CQUFtQixFQUFFO2dCQUNyQixPQUFPLFdBQUksQ0FBQyxrQ0FBZSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxzREFBd0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDMUg7aUJBQU07Z0JBQ0gsT0FBTyxTQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUE7YUFDMUQ7UUFDTCxDQUFDLENBQ0osRUFDRCxlQUFHLENBQ0MsQ0FBQyxTQUFjLEVBQUUsRUFBRTtZQUNmLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRTtnQkFDakIsT0FBTyxTQUFTLENBQUM7YUFDcEI7aUJBQU07Z0JBQ0gsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzthQUM5QjtRQUNMLENBQUMsQ0FDSixDQUNKLENBQUE7SUFDVCxDQUFDO0lBR0QsY0FBYyxDQUFDLGFBQWEsRUFBRSxLQUFLO1FBRS9CLElBQUk7WUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxFQUFFO2dCQUNwRixPQUFPLFNBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTthQUNsRTtTQUNKO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sU0FBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFBO1NBQ2xFO1FBRUQsTUFBTSxxQkFBcUIsR0FBeUI7WUFDaEQsUUFBUSxFQUFFO2dCQUNOLEtBQUs7Z0JBQ0wsYUFBYTthQUNoQjtTQUNKLENBQUE7UUFDRCxNQUFNLDBCQUEwQixHQUE4QjtZQUMxRCxTQUFTLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUN0RixDQUFBO1FBRUQsTUFBTSxvQkFBb0IsR0FBRyw0REFBMkIsQ0FBQyxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0gsT0FBTyxvQkFBb0I7YUFDdEIsSUFBSSxDQUNELG9CQUFRLENBQ0osQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO1lBQ3BCLElBQUksbUJBQW1CLEVBQUU7Z0JBQ3JCLE9BQU8sV0FBSSxDQUFDLCtDQUFtQixDQUFDLDBCQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDOUc7aUJBQU07Z0JBQ0gsT0FBTyxTQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUE7YUFDMUQ7UUFDTCxDQUFDLENBQ0osRUFDRCxlQUFHLENBQ0MsQ0FBQyxTQUFjLEVBQUUsRUFBRTtZQUNmLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRTtnQkFDakIsT0FBTyxTQUFTLENBQUM7YUFDcEI7aUJBQU07Z0JBQ0gsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzthQUM5QjtRQUNMLENBQUMsQ0FDSixDQUNKLENBQUE7SUFDVCxDQUFDO0lBR0QsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLEtBQUs7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksT0FBTyxLQUFLLENBQUMsYUFBYSxLQUFLLFFBQVEsRUFBRTtZQUNqRSxPQUFPLFNBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtTQUM5RDtRQUVELE1BQU0scUJBQXFCLEdBQXlCO1lBQ2hELFFBQVEsRUFBRTtnQkFDTixLQUFLO2dCQUNMLGFBQWE7YUFDaEI7U0FDSixDQUFBO1FBQ0QsTUFBTSwwQkFBMEIsR0FBOEI7WUFDMUQsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDMUYsQ0FBQTtRQUVELE1BQU0sb0JBQW9CLEdBQUcsNERBQTJCLENBQUMscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNILE9BQU8sb0JBQW9CO2FBQ3RCLElBQUksQ0FDRCxvQkFBUSxDQUNKLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUNwQixJQUFJLG1CQUFtQixFQUFFO2dCQUNyQixPQUFPLFdBQUksQ0FBQyxtQ0FBZSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3pIO2lCQUFNO2dCQUNILE9BQU8sU0FBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFBO2FBQzFEO1FBQ0wsQ0FBQyxDQUNKLEVBQ0QsZUFBRyxDQUNDLENBQUMsU0FBYyxFQUFFLEVBQUU7WUFDZixJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pCLE9BQU8sU0FBUyxDQUFDO2FBQ3BCO2lCQUFNO2dCQUNILE1BQU0sNkJBQTZCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQztnQkFDN0UsSUFBSSw2QkFBNkIsRUFBRTtvQkFDL0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQ3hFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7b0JBRTVFLElBQUksY0FBYyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7d0JBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQTt3QkFDcEMsYUFBYTs2QkFDUixTQUFTOzZCQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztxQkFDaEQ7b0JBQ0QsSUFBSSxnQkFBZ0IsRUFBRTt3QkFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO3dCQUN2QyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDekQ7aUJBQ0o7Z0JBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzthQUM5QjtRQUNMLENBQUMsQ0FDSixDQUNKLENBQUE7SUFDVCxDQUFDO0lBS0QsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLEtBQUs7UUFDakMsSUFBSTtZQUNBLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUUsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxLQUFLLEVBQUU7Z0JBQ3BGLE9BQU8sU0FBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFBO2FBQ2xFO1NBQ0o7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsT0FBTyxTQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUE7U0FDbEU7UUFFRCxNQUFNLHFCQUFxQixHQUF5QjtZQUNoRCxRQUFRLEVBQUU7Z0JBQ04sS0FBSztnQkFDTCxhQUFhO2FBQ2hCO1NBQ0osQ0FBQTtRQUNELE1BQU0sMEJBQTBCLEdBQThCO1lBQzFELFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQzFGLENBQUE7UUFFRCxNQUFNLG9CQUFvQixHQUFHLDREQUEyQixDQUFDLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzSCxPQUFPLG9CQUFvQjthQUN0QixJQUFJLENBQ0Qsb0JBQVEsQ0FDSixDQUFDLG1CQUFtQixFQUFFLEVBQUU7WUFDcEIsSUFBSSxtQkFBbUIsRUFBRTtnQkFDckIsT0FBTyxXQUFJLENBQUMsMEJBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLDBCQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3JHO2lCQUFNO2dCQUNILE9BQU8sU0FBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFBO2FBQzFEO1FBQ0wsQ0FBQyxDQUNKLEVBQ0QsZUFBRyxDQUNDLENBQUMsU0FBYyxFQUFFLEVBQUU7WUFDZixJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pCLE9BQU8sU0FBUyxDQUFDO2FBQ3BCO2lCQUFNO2dCQUNILE1BQU0sNkJBQTZCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQztnQkFDN0UsSUFBSSw2QkFBNkIsRUFBRTtvQkFDL0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7b0JBQ3hFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7b0JBRTVFLElBQUksY0FBYyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7d0JBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQTt3QkFDcEMsYUFBYTs2QkFDUixTQUFTOzZCQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztxQkFDaEQ7b0JBQ0QsSUFBSSxnQkFBZ0IsRUFBRTt3QkFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO3dCQUN2QyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDekQ7aUJBQ0o7Z0JBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzthQUM5QjtRQUNMLENBQUMsQ0FDSixDQUNKLENBQUE7SUFDVCxDQUFDO0lBSUQsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLEtBQUs7UUFFakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxPQUFPLEtBQUssQ0FBQyxtQkFBbUIsS0FBSyxRQUFRLEVBQUU7WUFDN0UsT0FBTyxTQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7U0FDOUQ7UUFFRCxJQUFJO1lBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksT0FBTyxLQUFLLENBQUMsRUFBRSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEtBQUssRUFBRTtnQkFDcEYsT0FBTyxTQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUE7YUFDbEU7U0FDSjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixPQUFPLFNBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTtTQUNsRTtRQUVELE1BQU0scUJBQXFCLEdBQXlCO1lBQ2hELFFBQVEsRUFBRTtnQkFDTixLQUFLO2dCQUNMLGFBQWE7YUFDaEI7U0FDSixDQUFBO1FBQ0QsTUFBTSwwQkFBMEIsR0FBOEI7WUFDMUQsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDMUYsQ0FBQTtRQUVELE1BQU0sb0JBQW9CLEdBQUcsNERBQTJCLENBQUMscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNILE9BQU8sb0JBQW9CO2FBQ3RCLElBQUksQ0FDRCxvQkFBUSxDQUNKLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUNwQixJQUFJLG1CQUFtQixFQUFFO2dCQUNyQixPQUFPLFdBQUksQ0FBQyxxQ0FBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDL0k7aUJBQU07Z0JBQ0gsT0FBTyxTQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUE7YUFDMUQ7UUFDTCxDQUFDLENBQ0osRUFDRCxlQUFHLENBQ0MsQ0FBQyxTQUFjLEVBQUUsRUFBRTtZQUNmLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRTtnQkFDakIsT0FBTyxTQUFTLENBQUM7YUFDcEI7aUJBQU07Z0JBQ0gsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDO2dCQUM3RSxJQUFJLDZCQUE2QixFQUFFO29CQUMvQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDeEUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztvQkFFNUUsSUFBSSxjQUFjLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTt3QkFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO3dCQUNwQyxhQUFhOzZCQUNSLFNBQVM7NkJBQ1QsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO3FCQUNoRDtvQkFDRCxJQUFJLGdCQUFnQixFQUFFO3dCQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUE7d0JBQ3ZDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUN6RDtpQkFDSjtnQkFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO2FBQzlCO1FBQ0wsQ0FBQyxDQUNKLENBQ0osQ0FBQTtJQUNULENBQUM7Q0FFSjtBQWhYRztJQURDLDZCQUFnQixDQUFDLDZCQUE2QixDQUFDO21FQWUvQztBQUdEO0lBREMsNkJBQWdCLENBQUMsZ0JBQWdCLENBQUM7c0RBb0NsQztBQUlEO0lBREMsNkJBQWdCLENBQUMsb0JBQW9CLENBQUM7MERBb0N0QztBQUlEO0lBREMsNkJBQWdCLENBQUMsY0FBYyxDQUFDOzZDQW9DaEM7QUFHRDtJQURDLDZCQUFnQixDQUFDLGdCQUFnQixDQUFDO3NEQTZDbEM7QUFHRDtJQURDLDZCQUFnQixDQUFDLGtCQUFrQixDQUFDO3dEQXVEcEM7QUFLRDtJQURDLDZCQUFnQixDQUFDLGtCQUFrQixDQUFDO3dEQTREcEM7QUFJRDtJQURDLDZCQUFnQixDQUFDLGtCQUFrQixDQUFDO3dEQWlFcEM7QUExYkwsNENBNGJDIn0=
|