X-Git-Url: https://git.llucax.com/z.facultad/75.10/miklolife.git/blobdiff_plain/29250339e4e74bacfc1be0a287a5b291e317dfaa..578ef6526819b1714439c350243aa762deb1cb72:/diagramas/clases.dia?ds=sidebyside
diff --git a/diagramas/clases.dia b/diagramas/clases.dia
index 272a0e0..03cb6cc 100644
--- a/diagramas/clases.dia
+++ b/diagramas/clases.dia
@@ -28,7 +28,7 @@
-
+
@@ -71,19 +71,19 @@
-
+
-
+
-
+
-
+
-
+
#Promotor#
@@ -163,54 +163,7 @@
-
-
-
- #cap#
-
-
- #Cap#
-
-
- ##
-
-
- #CAP al que pertenece.#
-
-
-
-
-
-
-
-
-
-
-
-
-
- #disponibilidad#
-
-
- #Horario#
-
-
- ##
-
-
- #Horario en que está disponible para atender Solicitantes (un objeto? como lo representamos? texto libre?)#
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -219,19 +172,19 @@
-
+
-
+
-
+
-
+
-
+
#Persona#
@@ -385,98 +338,6 @@
#apellido#
-
- ##
-
-
- ##
-
-
- #Apellido completo.#
-
-
-
-
-
-
-
-
-
-
-
-
-
- #telefono#
-
-
- #Telefono#
-
-
- ##
-
-
- #Número de teléfono (con código de paÃs? provincia? es una clase?).#
-
-
-
-
-
-
-
-
-
-
-
-
-
- #calle#
-
-
- #string#
-
-
- ##
-
-
- #Calle del domicilio de la persona.#
-
-
-
-
-
-
-
-
-
-
-
-
-
- #numero#
-
-
- #int#
-
-
- ##
-
-
- #Número del domicilio de la persona.#
-
-
-
-
-
-
-
-
-
-
-
-
-
- #departamento#
-
#string#
@@ -484,53 +345,7 @@
##
- #Piso y departamento del domicilio de la persona.#
-
-
-
-
-
-
-
-
-
-
-
-
-
- #codigoPostal#
-
-
- #string(8)#
-
-
- ##
-
-
- #Código postal del domicilio de la persona.#
-
-
-
-
-
-
-
-
-
-
-
-
-
- #provincia#
-
-
- #enum([provincias])#
-
-
- ##
-
-
- #Provincia donde se encuentra el domicilio de la persona.#
+ #Apellido completo.#
@@ -590,7 +405,7 @@
- #Sexo#
+ #sexo#
#enum(M,F)#
@@ -599,7 +414,7 @@
##
- ##
+ #Género de la persona#
@@ -620,19 +435,19 @@
-
+
-
+
-
+
-
+
#Afiliado#
@@ -656,7 +471,7 @@
-
+
@@ -715,7 +530,7 @@
- #nroAfiliado#
+ #codigo#
#int#
@@ -761,16 +576,16 @@
- #plan#
+ #fechaBaja#
- #Plan#
+ #Fecha#
##
- #Plan de la obra social al que está adherido.#
+ #Fecha en la que el afiliado solicita la baja#
@@ -784,16 +599,16 @@
- #titular#
+ #moroso#
- #Afiliado#
+ #int#
##
- #Titular del grupo familiar (si pertenece a un grupo familiar). Si no pertenece a un grupo familiar o el afiliado es el titular, es NULL.#
+ #Indica cuantos meses adeuda.#
@@ -805,54 +620,99 @@
-
+
+
+
- #activo#
+ #existe#
-
- #bool#
-
-
+
##
-
- #True si está en actividad (afiliado). (No convendrÃa poner Plan = NULL en caso de no estar más afiliado?)#
+
+ #bool#
+
+ #Devuelve True si el afiliado existe y carga el resto de los datos correspondientes. Si no existe devuelve False. Si existe más de uno, se pueden obtener con getNext().#
+
+
+
+
+
+
+
+
-
+
- #moroso#
+ #getNext#
+
+
+ ##
#bool#
-
- ##
+
+
- #True si está activo pero es moroso (debe más de 3 meses).#
+ #Si encontró uno nuevo, devuelve True y lo carga. Si no devuelve False y queda intacto.#
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #guardar#
+
+
+ ##
+
+
+ #bool#
+
+ #Guarda los datos del afiliado en la DB y retorna True si no hubo error#
+
+
+
+
+
+
+
+
-
@@ -860,19 +720,19 @@
-
+
-
+
-
+
-
+
-
+
#Prestacion#
@@ -955,16 +815,16 @@
- #nombre#
+ #codigo#
- #string#
+ #int#
##
- #Nombre de la prestación (descripción breve).#
+ #Código de la prestación según el codificador#
@@ -978,16 +838,16 @@
- #codigo#
+ #nombre#
- #int#
+ #string#
##
- #Identificador único de la prestación (esto está por el codificador? o porque nos pintó a nosotros?)#
+ #Nombre de la prestación (descripción breve).#
@@ -999,25 +859,48 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ #fechaBaja#
+
+
+ #Fecha#
+
+
+ ##
+
+
+ #Fecha en la que fue dado de baja (o NULL si está activo)#
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
@@ -1106,13 +989,13 @@
#codigo#
- ##
+ #int#
##
- ##
+ #Codigo de plan (nomenclador).#
@@ -1126,16 +1009,16 @@
- #precio#
+ #categorÃa#
- ##
+ #int#
##
- ##
+ #CategorÃa a la que pertenece (nomenclador).#
@@ -1152,13 +1035,13 @@
#descripcion#
- ##
+ #string#
##
- ##
+ #Una breve descripción del plan.#
@@ -1172,16 +1055,16 @@
- #fecha_de_inicio#
+ #permanenciaMinima#
- ##
+ #Tiempo#
##
- ##
+ #Permanencia mÃnima que debe cumplir en el plan antes de pasarse a otro.#
@@ -1195,16 +1078,16 @@
- #permanencia_minima#
+ #fechaBaja#
- ##
+ #Fecha#
##
- ##
+ #Fecha en la que el afiliado solicita la baja#
@@ -1225,19 +1108,19 @@
-
+
-
+
-
+
-
+
-
+
#Prestador#
@@ -1320,53 +1203,7 @@
- #direccion#
-
-
- #Direccion#
-
-
- ##
-
-
- #Domicilio (de nuevo, representación???)#
-
-
-
-
-
-
-
-
-
-
-
-
-
- #zona#
-
-
- #Zona#
-
-
- ##
-
-
- #Zona en la que se encuentra ubicado.#
-
-
-
-
-
-
-
-
-
-
-
-
-
- #codigo#
+ #cuit#
#int#
@@ -1375,7 +1212,7 @@
##
- #Identificador único (para nosotros? o por codificador o algo?).#
+ #Número de CUIT (lo necesitamos!?!?!).#
@@ -1412,16 +1249,16 @@
- #cuit#
+ #fechaBaja#
- #int#
+ #Fecha#
##
- #Número de CUIT (lo necesitamos!?!?!).#
+ #Fecha en la que fue dado de baja (o NULL si está activo)#
@@ -1442,19 +1279,19 @@
-
+
-
+
-
+
-
+
-
+
#Cap#
@@ -1535,29 +1372,6 @@
-
-
- #telefono#
-
-
- #int#
-
-
- ##
-
-
- #Teléfono de contacto (de nuevo, formato???).#
-
-
-
-
-
-
-
-
-
-
-
#responsable#
@@ -1583,16 +1397,16 @@
- #direccion#
+ #horario#
- #Direccion#
+ #string#
##
- #Domicilio fÃsico del CAP (como lo representamos?!?! Objeto? texto libre?)#
+ #Horario de atención (deberÃa volar!?!?!?).#
@@ -1606,16 +1420,16 @@
- #horario#
+ #codigo#
- #Horario#
+ #string#
##
- #Horario de atención (representación!?!?!?).#
+ #Código único para identificar al Cap (se usa para referirse al Cap en listados, etc)#
@@ -1636,19 +1450,19 @@
-
+
-
+
-
+
-
+
-
+
#Autorizacion#
@@ -1672,7 +1486,7 @@
-
+
@@ -1754,39 +1568,16 @@
- #tipo#
-
-
- #enum(manual,auto)#
-
-
- ##
-
-
- #Tipo de autorización. (esto si tenemos subclases no deberÃa existir)#
-
-
-
-
-
-
-
-
-
-
-
-
-
- #afiliado#
+ #porcentajeCobertura#
- #Afiliado#
+ #int#
##
- #Afiliado que solicitó la autorización.#
+ #Porcentaje de la prestacion cubierto por la Autorizacion#
@@ -1823,7 +1614,7 @@
- #fechaAprobacion#
+ #fechaRealizacion#
#Fecha#
@@ -1832,7 +1623,7 @@
##
- #Fecha en la que se aprobó la autorización.#
+ #Fecha en que efectivizada la autorización. Es decir el dia en que se rechazo o el dia en que el afiliado la utilizo.#
@@ -1855,7 +1646,7 @@
##
- ##
+ #Fecha en que vence la autorización.#
@@ -1869,16 +1660,16 @@
- #estado#
+ #aprobada#
- #enum(emitida, pendiente, aprobada, rechazada)#
+ #bool#
##
- #True si fue aproba, False si no (no convendrÃa poner NULL en fechaAprobación?)#
+ #Indica si la autorizacion fue aprobada o no.#
@@ -1892,16 +1683,16 @@
- #prestacion#
+ #fundamentosResolucion#
- #Prestacion#
+ #string#
##
- #Prestación (no serÃa Cobertura???) para la cual se pidió autorización.#
+ #Una descripcion coloquial del por qué se aprueba o rechaza la autorización#
@@ -1913,194 +1704,86 @@
-
+
+
+
- #porcentajeCobertura#
-
-
- #int#
+ #getEstado#
-
+
##
-
- ##
+
+ #int#
-
-
-
-
-
-
-
-
-
- #observaciones#
-
-
- #string#
-
-
- ##
-
- #Observaciones sobre la autorización (deberÃa ir sólo en Manual o no?)#
-
-
-
+ ##
-
-
-
-
-
-
- #descripcion_rechazo#
-
-
- #string#
-
-
- ##
-
-
- ##
-
-
-
+
+
-
+
+
-
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
-
-
+
+
- ##
+ #Zona#
##
-
-
-
-
-
-
-
-
-
-
-
+
+ #Región geográfica, cuya mÃnima unidad es un barrio.#
-
-
-
-
-
+
+
-
-
-
-
+
+
-
+
-
-
+
+
-
- ##
+
+
-
- ##
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #Zona#
-
-
- ##
-
-
- #Región geográfica, cuya mÃnima unidad es un barrio.#
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -2156,62 +1839,16 @@
- #pais#
-
-
- #enum([paises])#
-
-
- ##
-
-
- #PaÃs en donde se encuentra.#
-
-
-
-
-
-
-
-
-
-
-
-
-
- #provincia#
-
-
- #enum(?)#
-
-
- ##
-
-
- #Provincia a la que pertenece, si es NULL la región comprende un paÃs entero.#
-
-
-
-
-
-
-
-
-
-
-
-
-
- #ciudad#
+ #nombre#
- #enum(?)#
+ #string#
##
- #Ciudad a la que pertenece, si es NULL la región comprende una provincia entera.#
+ #Nombre de la Zona#
@@ -2225,16 +1862,16 @@
- #barrio#
+ #descripcion#
- #enum(?)#
+ #string#
##
- #Barrio al que pertenece, si es NULL la región comprende una ciudad entera.#
+ #Descripción de la Zona#
@@ -2253,21 +1890,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
#Solicitante#
@@ -2291,7 +1928,7 @@
-
+
@@ -2353,7 +1990,7 @@
#disponibilidad#
- #Fecha/Hora#
+ #string#
##
@@ -2428,84 +2065,170 @@
##
+ #Indica si el solicitante fue visitado o no.#
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #existe#
+
+
+ ##
+
+
+ #bool#
+
+
+
+
+
+ #Devuelve True si el afiliado existe y carga el resto de los datos correspondientes. Si no existe devuelve False. Si existe más de uno, se pueden obtener con getNext().#
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #getNext#
+
+
+ ##
+
+
+ #bool#
+
+
+
+
+
+ #Si encontró uno nuevo, devuelve True y lo carga. Si no devuelve False y queda intacto.#
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #guardar#
+
+
+ ##
+
+
+ #bool#
+
+
+
+
+
+ #Guarda los datos del solicitante en la DB y retorna True si no hubo error#
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #borrar#
+
+
##
+
+ #bool#
+
+
+ #Borra el solicitante de la DB y retorna True si no hubo error#
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ##
-
-
- ##
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
- #PrestacionRealizada#
+ #AutorizacionManual#
##
- #Prestación concretada por el Afiliado.#
+ #Autorización que debe ser aprobada manualmente, a través de un auditor médico.#
@@ -2579,16 +2302,39 @@
- #fecha#
+ #observaciones#
- #Fecha#
+ #string#
+
+
+ ##
+
+
+ #Una descripcion coloquial del por qué se solicita la autorización#
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #fechaResolucion#
+
+
+ #fecha#
##
- #Fecha en la que se hizo efectiva la prestación.#
+ #Fecha en la que se aprobo/rechazo la autorizacion.#
@@ -2607,30 +2353,30 @@
-
+
-
+
-
+
-
+
-
+
- #AutorizacionManual#
+ #AutorizacionAutomatica#
##
- #Autorización que debe ser aprobada manualmente, a través de un auditor médico.#
+ ##
@@ -2708,65 +2454,30 @@
-
+
-
+
-
+
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
- ##
-
-
- ##
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
- #Automatica#
+ #Cobertura#
##
- ##
+ #Limitaciones de cobertura para un Plan y una Prestación determinada.#
@@ -2775,7 +2486,7 @@
-
+
@@ -2837,72 +2548,130 @@
-
+
+
+
+ #carencia#
+
+
+ #Tiempo#
+
+
+ ##
+
+
+ #Antigüedad que debe tener el afiliado en el plan para ser cubierto. (años? meses?)#
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #porcentaje#
+
+
+ #int#
+
+
+ ##
+
+
+ #Porcentaje de la prestación cubierto.#
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #limiteAnual#
+
+
+ #int#
+
+
+ ##
+
+
+ #Cantidad de prestaciones que se puede realizar por año (cero indica que no hay lÃmite).#
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #tipoAutorizacion#
+
+
+ #enum(manual,auto)#
+
+
+ ##
+
+
+ #Indica el tipo de autorización que necesita para realizarse la prestación.#
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ##
-
-
- ##
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
- #Cobertura#
+ #Categoria#
##
- #Limitaciones de cobertura para un Plan y una Prestación determinada.#
+ #Clasificación de las Prestaciones. (esto lo necesitamos por el codificador, no?)#
@@ -2911,7 +2680,7 @@
-
+
@@ -2976,30 +2745,7 @@
- #tiempoPermanencia#
-
-
- #Tiempo#
-
-
- ##
-
-
- #Antigüedad que debe tener el afiliado en el plan para ser cubierto. (años? meses?)#
-
-
-
-
-
-
-
-
-
-
-
-
-
- #porcentaje#
+ #codigo#
#int#
@@ -3008,7 +2754,7 @@
##
- #Porcentaje de la prestación cubierto.#
+ #Código de la categorÃa según el codificador#
@@ -3022,16 +2768,16 @@
- #limiteAnual#
+ #nombre#
- #int#
+ #string#
##
- #Cantidad de prestaciones que se puede realizar por año (cero indica que no hay lÃmite).#
+ #Nombre de la categorÃa.#
@@ -3045,16 +2791,16 @@
- #tipoAutorizacion#
+ #fechaBaja#
- #emun(manual,auto)#
+ #Fecha#
##
- #Indica el tipo de autorización que necesita para realizarse la prestación.#
+ #Fecha en la que fue dado de baja (o NULL si está activo)#
@@ -3073,58 +2819,30 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
- #Categoria#
+ #HistoriaPlan#
##
- #Clasificación de las Prestaciones. (esto lo necesitamos por el codificador, no?)#
+ #Representa el perÃodo de tiempo que un afiliado estuvo en un plan.#
@@ -3198,16 +2916,16 @@
- #codigo#
+ #fechaIngreso#
- #int#
+ #Fecha#
##
- #Identificador único (por codificador, no?)#
+ #Fecha en que se dio de alta el plan#
@@ -3221,16 +2939,16 @@
- #nombre#
+ #fechaEgreso#
- #string#
+ #Fecha#
##
- #Nombre de la categorÃa.#
+ #Fecha en la que el plan no rige mas para el afiliado#
@@ -3249,780 +2967,38 @@
-
+
-
+
-
-
-
-
-
-
-
+
-
-
-
-
+
+
-
-
+
+
-
-
+
+
- ##
+ #Direccion#
##
-
-
-
-
-
-
-
-
-
-
-
+
+ ##
-
-
-
-
-
+
+
-
-
-
-
+
+
-
-
-
-
- ##
-
-
-
-
-
-
-
- ##
-
-
- # *#
-
-
-
-
-
-
-
-
-
-
- ##
-
-
- #1#
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ##
-
-
-
-
-
-
-
- ##
-
-
- # 1#
-
-
-
-
-
-
-
-
-
-
- ##
-
-
- #1#
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ##
-
-
-
-
-
-
-
- ##
-
-
- #* #
-
-
-
-
-
-
-
-
-
-
- ##
-
-
- #1#
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ##
-
-
-
-
-
-
-
- ##
-
-
- #*#
-
-
-
-
-
-
-
-
-
-
- ##
-
-
- #1#
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ##
-
-
-
-
-
-
-
- ##
-
-
- #* #
-
-
-
-
-
-
-
-
-
-
- ##
-
-
- # 1#
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ##
-
-
-
-
-
-
-
- ##
-
-
- # *#
-
-
-
-
-
-
-
-
-
-
- ##
-
-
- #1#
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ##
-
-
-
-
-
-
-
- ##
-
-
- # * #
-
-
-
-
-
-
-
-
-
-
- ##
-
-
- #1#
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #No deberia
-asociarse
-con
-Cobertura?#
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ##
-
-
-
-
-
-
-
- ##
-
-
- #* #
-
-
-
-
-
-
-
-
-
-
- ##
-
-
- #1#
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ##
-
-
-
-
-
-
-
- ##
-
-
- #* #
-
-
-
-
-
-
-
-
-
-
- ##
-
-
- #*#
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ##
-
-
-
-
-
-
-
- ##
-
-
- ##
-
-
-
-
-
-
-
-
-
-
- ##
-
-
- ##
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #Hoja de Ruta#
-
-
- ##
-
-
- ##
-
-
-
-
-
-
-
-
+
@@ -4035,10 +3011,10 @@ Cobertura?#
-
+
-
+
@@ -4088,17 +3064,109 @@ Cobertura?#
- #visitado#
+ #calle#
- #bool#
+ #string#
+
+
+ ##
+
+
+ #Calle del domicilio#
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #numero#
+
+
+ #int#
+
+
+ ##
+
+
+ #Número del domicilio#
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #piso#
+
+
+ #int#
+
+
+ ##
+
+
+ #Piso del domicilio#
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #departamento#
+
+
+ #string#
##
+ #Departamento del domicilio#
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #codigoPostal#
+
+
+ #string(8)#
+
+
##
+
+ #Código postal del domicilio#
+
@@ -4111,17 +3179,40 @@ Cobertura?#
- #prioridad#
+ #provincia#
- #enum(ALTA,MEDIANA,BAJA)#
+ #enum([provincias])#
##
+ #Provincia donde se encuentra el domicilio#
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #telefono#
+
+
+ #string#
+
+
##
+
+ #Teléfono del domicilio#
+
@@ -4139,18 +3230,18 @@ Cobertura?#
-
+
-
+
-
+
-
-
-
-
+
+
+
+
@@ -4158,7 +3249,42 @@ Cobertura?#
-
+
+
+
+
+
+
+ ##
+
+
+ ##
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -4170,66 +3296,113 @@ Cobertura?#
##
-
+
+
-
+
-
+
-
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ##
+
+
+ ##
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
##
-
+
+ ##
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
- ##
-
-
- ##
-
-
-
-
-
-
-
-
-
-
- ##
-
-
- ##
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ ##
+
+
+ ##
-
-
+
+