From 0e32974d66379d14aee79856076b5a176940bcfb Mon Sep 17 00:00:00 2001 From: Alessandro Date: Thu, 30 Jan 2020 13:00:13 +0100 Subject: [PATCH 01/26] Sistemato caso d'uso uc1 e corretto primo diagramma riassuntivo --- .../analisi_requisiti/res/configurazione.tex | 2 ++ esterni/analisi_requisiti/res/images/uc1.png | Bin 37581 -> 91901 bytes .../res/sections/Sez3-CasiDUso/CasiDUso.tex | 9 ++---- .../res/sections/Sez3-CasiDUso/uc1.tex | 30 +++++++++++------- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/esterni/analisi_requisiti/res/configurazione.tex b/esterni/analisi_requisiti/res/configurazione.tex index 6cca1d1..1706de0 100644 --- a/esterni/analisi_requisiti/res/configurazione.tex +++ b/esterni/analisi_requisiti/res/configurazione.tex @@ -25,6 +25,8 @@ \usepackage{tikz} \usepackage{titlesec} \usepackage{amsmath} +\usepackage{grffile} + % Impostazione sottotitolo di quarto livello e quinto livello diff --git a/esterni/analisi_requisiti/res/images/uc1.png b/esterni/analisi_requisiti/res/images/uc1.png index bb429e38744fadf651d09c438a84b25e525eba76..08e82222e1a21761c14d22783520a54f3d8ff698 100644 GIT binary patch literal 91901 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

$yq**Gy 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≪)?K0gd5|RaQnEe!`f>@ffzG21MM8+la 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 Bp9$fnCr*F7KdA7$ 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 diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex index c5e1911..61b79ac 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex @@ -4,13 +4,10 @@ \section{Casi d'uso} % (NICE > OK) % [log_13-01-2020] Lasciate ogni speranza a voi che entrate. In questa terra proibita in data Lun 13 gennaio 2019 si è consumato il caos che ha portato alla creazione di 136 casi d'uso. Non sappiamo ancora se saremo salvi dallo sciagurato esito del RR. L'inverno sta arrivando. Il freddo è tra noi. La pazzia si dilata dalle nostre ossa. Scappate finche siete in tempo. Scappate! - \subsection{Contesto riassuntivo per l'accesso alla web app} + + + - \begin{figure}[H] - \centering - \includegraphics[scale=0.6]{res/images/webapp-accesso} - \caption{Diagramma riassuntivo che illustra la parte di autenticazione alla web app.} - \end{figure} % ================= % UC 1 [NICE] diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc1.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc1.tex index 940c1bc..567d1af 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc1.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc1.tex @@ -17,12 +17,6 @@ \item L'utente inserisce le proprie credenziali (UC 1.1); \item Viene eseguito il controllo delle credenziali inserite (UC 1.4). \end{enumerate} - \item \textbf{Estensioni}: - \begin{itemize} - \item Visualizzazione errore: email e/o una password errati (UC 17); - \item Visualizzazione errore: l'account non è autorizzato (UC 18). - \item Visualizzazione errore: codice di autenticazione a due fattori errato (UC 19). - \end{itemize} \end{itemize} @@ -42,6 +36,10 @@ \begin{itemize} \item Controllo credenziali (UC 1.4). \end{itemize} + \item \textbf{Estensioni}: + \begin{itemize} + \item Visualizzazione errore: email e/o una password errati (UC 17). + \end{itemize} \end{itemize} \subsubsection{UC 1.2 - Inserimento credenziali per autenticazione base} @@ -103,11 +101,15 @@ \item \textbf{Precondizione}: L'utente non è autenticato nella web app. \item \textbf{Postcondizione}: L'utente ha inserito le credenziali richieste. \item \textbf{Scenario Principale}: - \begin{enumerate} - \item L'utente inserisce la email (UC 1.3.1); - \item L'utente inserisce la password (UC 1.3.2); - \item L'utente inserisce un codice temporaneo ricevuto tramite \glock{Telegram} (UC 1.3.3). - \end{enumerate} + \begin{enumerate} + \item L'utente inserisce la email (UC 1.3.1); + \item L'utente inserisce la password (UC 1.3.2); + \item L'utente inserisce un codice temporaneo ricevuto tramite \glock{Telegram} (UC 1.3.3). + \end{enumerate} + \item \textbf{Estensioni}: + \begin{itemize} + \item Visualizzazione errore: codice di autenticazione a due fattori errato (UC 19). + \end{itemize} \end{itemize} \paragraph{UC 1.3.1 - Inserimento email} @@ -158,5 +160,9 @@ \begin{enumerate} \item L'utente ha inserito le credenziali richieste; \item Le credenziali inserite vengono controllate dal sistema. - \end{enumerate} + \end{enumerate} + \item \textbf{Estensioni}: + \begin{itemize} + \item Visualizzazione errore: l'account non è autorizzato (UC 18). + \end{itemize} \end{itemize} From 7e2b173694373252ac224b571d795c3309978e0f Mon Sep 17 00:00:00 2001 From: Maxelweb Date: Thu, 30 Jan 2020 13:04:53 +0100 Subject: [PATCH 02/26] Modifica requisiti prestazionali in normali (manca sul secondo tracciamento) --- .../ClassificazioneRequisiti.tex | 12 ++++++++---- .../res/sections/Sez5-Tracciamento/Tracciamento.tex | 10 ++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex index 0a0a0d3..c1b662b 100644 --- a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex +++ b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex @@ -176,10 +176,7 @@ \section{Requisiti} \endfoot \endlastfoot - \req{A}{P}{1} & La web app deve essere compatibile il browser \glock{Firefox} dalla versione 69.0 {\small \color{white}{nice}} & Capitolato \autism - \req{A}{P}{2} & La web app deve essere compatibile con il browser \glock{Chrome} dalla versione 75.0 & Capitolato \autism - \req{A}{P}{3} & La web app deve essere compatibile con il browser \glock{Safari} dalla versione 13.0 & Capitolato \autism - \req{B}{P}{4} & La web app deve essere compatibile con il browser \glock{Edge} dalla versione 42.0 & Capitolato \autism + \req{A}{P}{5} & I tempi di risposta della web app per disegnare grafici devono essere inferiori a 7.5 secondi & Interna \autism \req{A}{P}{6} & Il sistema deve poter gestire un carico di almeno 30 utenti connessi contemporaneamente nella web app & Capitolato \autism @@ -254,6 +251,13 @@ \section{Requisiti} \req{A}{V}{10} & Il sistema deve permettere di inviare un input a un dispositivo & Capitolato \autism \req{A}{V}{11} & Il sistema deve permettere di censire un dispositivo & Capitolato \autism + % SPOSTAMENTO DA REQUISITI PRESTAZIONALI + \req{A}{V}{12} & La web app deve essere compatibile il browser \glock{Firefox} dalla versione 69.0 {\small \color{white}{nice}} & Capitolato \autism + \req{A}{V}{13} & La web app deve essere compatibile con il browser \glock{Chrome} dalla versione 75.0 & Capitolato \autism + \req{A}{V}{14} & La web app deve essere compatibile con il browser \glock{Safari} dalla versione 13.0 & Capitolato \autism + \req{B}{V}{15} & La web app deve essere compatibile con il browser \glock{Edge} dalla versione 42.0 & Capitolato \autism + + \caption{Requisiti di vincolo con le relative descrizioni e le relative fonti} \end{longtable} diff --git a/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex b/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex index ef3f8af..e262f70 100644 --- a/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex +++ b/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex @@ -128,10 +128,7 @@ \section{Tracciamento dei requisiti} \req{A}{F}{69} & Capitolato \\ \hline \req{A}{F}{70} & Capitolato \\ \hline %prestazionali - \req{A}{P}{1} & Capitolato \\ \hline - \req{A}{P}{2} & Capitolato \\ \hline - \req{A}{P}{3} & Capitolato \\ \hline - \req{B}{P}{4} & Capitolato \\ \hline + \req{A}{P}{5} & Interna, Verbale \#9 VE-9.6, Verbale \#9 VE-9.7\\ \hline \req{A}{P}{6} & Capitolato, Verbale \#9 VE-9.8 \\ \hline %Qualita @@ -161,6 +158,11 @@ \section{Tracciamento dei requisiti} \req{A}{V}{9} & Capitolato \\ \hline \req{A}{V}{10} & Capitolato \\ \hline \req{A}{V}{11} & Capitolato \\ \hline + % SPOSTAMENTO DA REQUISITI PRESTAZIONALI + \req{A}{V}{12} & Capitolato \\ \hline + \req{A}{V}{13} & Capitolato \\ \hline + \req{A}{V}{14} & Capitolato \\ \hline + \req{B}{V}{15} & Capitolato \\ \hline \caption{Tracciamento requisiti-fonti} \end{longtable} From b604886f097f320d7e6eabd6f0b2d077aa3ed364 Mon Sep 17 00:00:00 2001 From: Maxelweb Date: Thu, 30 Jan 2020 14:18:32 +0100 Subject: [PATCH 03/26] Fix prestazionali --- .../ClassificazioneRequisiti.tex | 4 ++-- .../Sez5-Tracciamento/Tracciamento.tex | 23 ++++++++++--------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex index c1b662b..04af008 100644 --- a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex +++ b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex @@ -177,8 +177,8 @@ \section{Requisiti} \endlastfoot - \req{A}{P}{5} & I tempi di risposta della web app per disegnare grafici devono essere inferiori a 7.5 secondi & Interna \autism - \req{A}{P}{6} & Il sistema deve poter gestire un carico di almeno 30 utenti connessi contemporaneamente nella web app & Capitolato \autism + \req{A}{P}{1} & I tempi di risposta della web app per disegnare grafici devono essere inferiori a 7.5 secondi & Interna \autism + \req{A}{P}{2} & Il sistema deve poter gestire un carico di almeno 30 utenti connessi contemporaneamente nella web app & Capitolato \autism \caption{Requisiti prestazionali con le relative descrizioni e le relative fonti} diff --git a/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex b/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex index e262f70..2389896 100644 --- a/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex +++ b/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex @@ -129,8 +129,8 @@ \section{Tracciamento dei requisiti} \req{A}{F}{70} & Capitolato \\ \hline %prestazionali - \req{A}{P}{5} & Interna, Verbale \#9 VE-9.6, Verbale \#9 VE-9.7\\ \hline - \req{A}{P}{6} & Capitolato, Verbale \#9 VE-9.8 \\ \hline + \req{A}{P}{1} & Interna, Verbale \#9 VE-9.6, Verbale \#9 VE-9.7\\ \hline + \req{A}{P}{2} & Capitolato, Verbale \#9 VE-9.8 \\ \hline %Qualita \req{A}{Q}{1} & Capitolato, Verbale \#8 VE-8.1 \\ \hline \req{A}{Q}{2} & Capitolato, Verbale \#8 VE-8.1 \\ \hline @@ -274,11 +274,7 @@ \section{Tracciamento dei requisiti} & \req{A}{F}{68} \\ & \req{A}{F}{69} \\ & \req{A}{F}{70} \\ - & \req{A}{P}{1} \\ & \req{A}{P}{2} \\ - & \req{A}{P}{3} \\ - & \req{B}{P}{4} \\ - & \req{A}{P}{6} \\ & \req{A}{Q}{1} \\ & \req{A}{Q}{2} \\ & \req{A}{Q}{3} \\ @@ -300,7 +296,12 @@ \section{Tracciamento dei requisiti} & \req{A}{V}{8} \\ & \req{A}{V}{9} \\ & \req{A}{V}{10} \\ - & \req{A}{V}{11} \\ \hline + & \req{A}{V}{11} \\ + & \req{A}{V}{12} \\ + & \req{A}{V}{13} \\ + & \req{A}{V}{14} \\ + & \req{B}{V}{15} + \\ \hline \multirow{15}{*}{Interna} & \sreq{A}{F}{1.1} \\ & \sreq{A}{F}{1.2} \\ & \req{A}{F}{51} \\ @@ -309,7 +310,7 @@ \section{Tracciamento dei requisiti} & \req{A}{F}{54} \\ & \req{A}{F}{59} \\ & \req{A}{F}{62} \\ - & \req{A}{P}{5} \\ + & \req{A}{P}{1} \\ & \req{A}{Q}{8} \\ & \req{A}{Q}{9} \\ & \req{B}{Q}{10} \\ @@ -332,9 +333,9 @@ \section{Tracciamento dei requisiti} & \req{A}{F}{57} \\ & \req{A}{F}{59} \\ & \req{A}{F}{62} \\ \hline - Verbale \#9 VE-9.6 & \req{A}{P}{5} \\ \hline - Verbale \#9 VE-9.7 & \req{A}{P}{5} \\ \hline - Verbale \#9 VE-9.8 & \req{A}{P}{6} \\ \hline + Verbale \#9 VE-9.6 & \req{A}{P}{1} \\ \hline + Verbale \#9 VE-9.7 & \req{A}{P}{1} \\ \hline + Verbale \#9 VE-9.8 & \req{A}{P}{2} \\ \hline \caption{Tracciamento fonti-requisiti} \end{longtable} \end{center} From 8b40d0eddf9518a681f10004c5ae932b0266f9f1 Mon Sep 17 00:00:00 2001 From: Lorenzo Dei Negri Date: Thu, 30 Jan 2020 14:26:18 +0100 Subject: [PATCH 04/26] Fix RAV-1 e sotto-casi --- .../ClassificazioneRequisiti.tex | 34 +++++++++--------- .../Sez5-Tracciamento/Tracciamento.tex | 36 +++++++++---------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex index c1b662b..f2ffc96 100644 --- a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex +++ b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex @@ -153,6 +153,9 @@ \section{Requisiti} \req{A}{F}{68} & La base di dati si deve interfacciare con \glock{Kafka} per la scrittura e lettura dei dati & Capitolato \autism \req{A}{F}{69} & I \glock{Gateway} comunicano con \glock{Kafka} tramite \glock{topic} con il modello \glock{Producer-Consumer} & Capitolato \autism \req{A}{F}{70} & I dispositivi comunicano con i \glock{Gateway} i dati da inviare & Capitolato \autism + \req{A}{F}{71} & La web app deve essere accessibile da browser a tutte le sue funzioni nelle modalità Desktop e Tablet & Capitolato \autism + \sreq{A}{F}{71.1} & La web app deve permettere di vedere grafici e dati da browser in modalità Mobile & Capitolato \autism + \sreq{B}{F}{71.2} & La web app deve permettere di compilare moduli interni da browser in modalità Mobile & Capitolato \autism \caption{Requisiti funzionali con le relative descrizioni e le relative fonti} @@ -237,25 +240,22 @@ \section{Requisiti} \endfoot \endlastfoot - \req{A}{V}{1} & La web app deve essere accessibile da browser a tutte le sue funzioni nelle modalità Desktop e Tablet & Capitolato \autism - \sreq{A}{V}{1.1} & La web app deve permettere di vedere grafici e dati da browser in modalità Mobile & Capitolato \autism - \sreq{B}{V}{1.2} & La web app deve permettere di compilare moduli interni da browser in modalità Mobile & Capitolato \autism - \req{A}{V}{2} & Le istanze del sistema dovranno essere gestite tramite \glock{Docker} & Interna \autism - \req{A}{V}{3} & La ricezione degli alert deve avvenire attraverso un bot \glock{Telegram} & Capitolato \autism - \req{A}{V}{4} & Il sistema deve fare uso dell'ecosistema \glock{Kafka} & Capitolato \autism - \req{A}{V}{5} & Il sistema deve fare uso di un time-series database (TimescaleDB) & Capitolato \autism - \req{A}{V}{6} & Il sistema deve fare uso di un protocollo per comunicare con il \glock{Gatweay} & Capitolato \autism - \req{A}{V}{7} & Il sistema deve fare uso di \glock{API} per la comunicazione con le applicazioni & Capitolato \autism - \req{A}{V}{8} & Il sistema deve mostrare almeno una correlazione tra due dati & Capitolato \autism - \req{A}{V}{9} & Il sistema deve permettere di visualizzare dati inviati da un dispositivo & Capitolato \autism - \req{A}{V}{10} & Il sistema deve permettere di inviare un input a un dispositivo & Capitolato \autism - \req{A}{V}{11} & Il sistema deve permettere di censire un dispositivo & Capitolato \autism + \req{A}{V}{1} & Le istanze del sistema dovranno essere gestite tramite \glock{Docker} & Interna \autism + \req{A}{V}{2} & La ricezione degli alert deve avvenire attraverso un bot \glock{Telegram} & Capitolato \autism + \req{A}{V}{3} & Il sistema deve fare uso dell'ecosistema \glock{Kafka} & Capitolato \autism + \req{A}{V}{4} & Il sistema deve fare uso di un time-series database (TimescaleDB) & Capitolato \autism + \req{A}{V}{5} & Il sistema deve fare uso di un protocollo per comunicare con il \glock{Gatweay} & Capitolato \autism + \req{A}{V}{6} & Il sistema deve fare uso di \glock{API} per la comunicazione con le applicazioni & Capitolato \autism + \req{A}{V}{7} & Il sistema deve mostrare almeno una correlazione tra due dati & Capitolato \autism + \req{A}{V}{8} & Il sistema deve permettere di visualizzare dati inviati da un dispositivo & Capitolato \autism + \req{A}{V}{9} & Il sistema deve permettere di inviare un input a un dispositivo & Capitolato \autism + \req{A}{V}{10} & Il sistema deve permettere di censire un dispositivo & Capitolato \autism % SPOSTAMENTO DA REQUISITI PRESTAZIONALI - \req{A}{V}{12} & La web app deve essere compatibile il browser \glock{Firefox} dalla versione 69.0 {\small \color{white}{nice}} & Capitolato \autism - \req{A}{V}{13} & La web app deve essere compatibile con il browser \glock{Chrome} dalla versione 75.0 & Capitolato \autism - \req{A}{V}{14} & La web app deve essere compatibile con il browser \glock{Safari} dalla versione 13.0 & Capitolato \autism - \req{B}{V}{15} & La web app deve essere compatibile con il browser \glock{Edge} dalla versione 42.0 & Capitolato \autism + \req{A}{V}{11} & La web app deve essere compatibile il browser \glock{Firefox} dalla versione 69.0 {\small \color{white}{nice}} & Capitolato \autism + \req{A}{V}{12} & La web app deve essere compatibile con il browser \glock{Chrome} dalla versione 75.0 & Capitolato \autism + \req{A}{V}{13} & La web app deve essere compatibile con il browser \glock{Safari} dalla versione 13.0 & Capitolato \autism + \req{B}{V}{14} & La web app deve essere compatibile con il browser \glock{Edge} dalla versione 42.0 & Capitolato \autism \caption{Requisiti di vincolo con le relative descrizioni e le relative fonti} diff --git a/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex b/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex index e262f70..d0c8053 100644 --- a/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex +++ b/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex @@ -127,6 +127,9 @@ \section{Tracciamento dei requisiti} \req{A}{F}{68} & Capitolato \\ \hline \req{A}{F}{69} & Capitolato \\ \hline \req{A}{F}{70} & Capitolato \\ \hline + \req{A}{F}{71} & Capitolato \\ \hline + \sreq{A}{F}{71.1} & Capitolato \\ \hline + \sreq{B}{F}{71.2} & Capitolato \\ \hline %prestazionali \req{A}{P}{5} & Interna, Verbale \#9 VE-9.6, Verbale \#9 VE-9.7\\ \hline @@ -145,24 +148,21 @@ \section{Tracciamento dei requisiti} \req{B}{Q}{10} & Interna \\ \hline \req{A}{Q}{11} & Interna, Capitolato \\ \hline %vincolo - \req{A}{V}{1} & Capitolato \\ \hline - \sreq{A}{V}{1.1} & Capitolato \\ \hline - \sreq{B}{V}{1.2} & Capitolato \\ \hline - \req{A}{V}{2} & Interna, Capitolato \\ \hline + \req{A}{V}{1} & Interna, Capitolato \\ \hline + \req{A}{V}{2} & Capitolato \\ \hline \req{A}{V}{3} & Capitolato \\ \hline - \req{A}{V}{4} & Capitolato \\ \hline - \req{A}{V}{5} & Interna, Capitolato \\ \hline + \req{A}{V}{4} & Interna, Capitolato \\ \hline + \req{A}{V}{5} & Capitolato \\ \hline \req{A}{V}{6} & Capitolato \\ \hline \req{A}{V}{7} & Capitolato \\ \hline \req{A}{V}{8} & Capitolato \\ \hline \req{A}{V}{9} & Capitolato \\ \hline \req{A}{V}{10} & Capitolato \\ \hline - \req{A}{V}{11} & Capitolato \\ \hline % SPOSTAMENTO DA REQUISITI PRESTAZIONALI + \req{A}{V}{11} & Capitolato \\ \hline \req{A}{V}{12} & Capitolato \\ \hline \req{A}{V}{13} & Capitolato \\ \hline - \req{A}{V}{14} & Capitolato \\ \hline - \req{B}{V}{15} & Capitolato \\ \hline + \req{B}{V}{14} & Capitolato \\ \hline \caption{Tracciamento requisiti-fonti} \end{longtable} @@ -274,6 +274,9 @@ \section{Tracciamento dei requisiti} & \req{A}{F}{68} \\ & \req{A}{F}{69} \\ & \req{A}{F}{70} \\ + & \req{A}{F}{71} \\ + & \sreq{A}{F}{71.1} \\ + & \sreq{B}{F}{71.2} \\ & \req{A}{P}{1} \\ & \req{A}{P}{2} \\ & \req{A}{P}{3} \\ @@ -289,18 +292,15 @@ \section{Tracciamento dei requisiti} & \req{A}{Q}{7} \\ & \req{A}{Q}{11} \\ & \req{A}{V}{1} \\ - & \sreq{A}{V}{1.1} \\ - & \sreq{B}{V}{1.2} \\ & \req{A}{V}{2} \\ & \req{A}{V}{3} \\ - & \req{A}{V}{4} \\ - & \req{A}{V}{5} \\ \pagebreak + & \req{A}{V}{4} \\ \pagebreak + & \req{A}{V}{5} \\ & \req{A}{V}{6} \\ & \req{A}{V}{7} \\ & \req{A}{V}{8} \\ & \req{A}{V}{9} \\ - & \req{A}{V}{10} \\ - & \req{A}{V}{11} \\ \hline + & \req{A}{V}{10} \\ \hline \multirow{15}{*}{Interna} & \sreq{A}{F}{1.1} \\ & \sreq{A}{F}{1.2} \\ & \req{A}{F}{51} \\ @@ -314,8 +314,8 @@ \section{Tracciamento dei requisiti} & \req{A}{Q}{9} \\ & \req{B}{Q}{10} \\ & \req{A}{Q}{11} \\ - & \req{A}{V}{2} \\ - & \req{A}{V}{5} \\ \hline + & \req{A}{V}{1} \\ + & \req{A}{V}{4} \\ \hline Verbale \#1 VI-1.5 & \req{A}{Q}{7} \\ \hline \multirow{4}{*}{Verbale \#8 VE-8.1} & \req{A}{Q}{1} \\ & \req{A}{Q}{2} \\ @@ -339,5 +339,5 @@ \section{Tracciamento dei requisiti} \end{longtable} \end{center} \subsection{Conclusioni} - I requisiti potranno subire variazioni durante il ciclo di vita del prodotto, per apportare miglioramenti e/o aggirnamenti. Il gruppo considererà, in caso ci sia un'abbondanza di risorse, di prendere in carico nuovi requisiti per migliorare ed aumentare il valore del prodotto. + I requisiti potranno subire variazioni durante il ciclo di vita del prodotto, per apportare miglioramenti e/o aggiornamenti. Il gruppo considererà, in caso ci sia un'abbondanza di risorse, di prendere in carico nuovi requisiti per migliorare ed aumentare il valore del prodotto. Quindi eventuali aggiornamenti verranno presi in considerazione in futuro. From 30a844dddbf10916cc92e47075c3a0dfac6d2925 Mon Sep 17 00:00:00 2001 From: Maxelweb Date: Thu, 30 Jan 2020 14:44:58 +0100 Subject: [PATCH 05/26] =?UTF-8?q?Fix=20requisito=2015=20vincolo=20(da=2011?= =?UTF-8?q?=20qualit=C3=A0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ClassificazioneRequisiti.tex | 2 +- .../res/sections/Sez5-Tracciamento/Tracciamento.tex | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex index c538373..1caa88e 100644 --- a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex +++ b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex @@ -216,7 +216,6 @@ \section{Requisiti} \req{A}{Q}{8} & Devono essere realizzati test di unità e di integrazione per verificare le singole componenti del prodotto & Interna \autism \req{A}{Q}{9} & La parte di progettazione e di codifica deve essere conforme con quanto riportato nel \dext{Piano di Qualifica v1.0.0} & Interna \autism \req{B}{Q}{10} & La web app dovrà rispettare la validazione \glock{W3C} & Interna \autism - \req{A}{Q}{11} & La web app dovrà essere sviluppata utilizzando il framework \glock{Bootstrap} & Interna \autism \caption{Requisiti di qualità con le relative descrizioni e le relative fonti} @@ -256,6 +255,7 @@ \section{Requisiti} \req{A}{V}{12} & La web app deve essere compatibile con il browser \glock{Chrome} dalla versione 75.0 & Capitolato \autism \req{A}{V}{13} & La web app deve essere compatibile con il browser \glock{Safari} dalla versione 13.0 & Capitolato \autism \req{B}{V}{14} & La web app deve essere compatibile con il browser \glock{Edge} dalla versione 42.0 & Capitolato \autism + \req{A}{V}{15} & La web app dovrà essere sviluppata utilizzando il framework \glock{Bootstrap} & Interna, Capitolato \autism \caption{Requisiti di vincolo con le relative descrizioni e le relative fonti} diff --git a/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex b/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex index 7764075..7c0a5a4 100644 --- a/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex +++ b/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex @@ -146,7 +146,6 @@ \section{Tracciamento dei requisiti} \req{A}{Q}{8} & Interna \\ \hline \req{A}{Q}{9} & Interna \\ \hline \req{B}{Q}{10} & Interna \\ \hline - \req{A}{Q}{11} & Interna, Capitolato \\ \hline %vincolo \req{A}{V}{1} & Interna, Capitolato \\ \hline \req{A}{V}{2} & Capitolato \\ \hline @@ -163,6 +162,7 @@ \section{Tracciamento dei requisiti} \req{A}{V}{12} & Capitolato \\ \hline \req{A}{V}{13} & Capitolato \\ \hline \req{B}{V}{14} & Capitolato \\ \hline + \req{A}{V}{15} & Interna, Capitolato \\ \hline \caption{Tracciamento requisiti-fonti} \end{longtable} @@ -287,7 +287,6 @@ \section{Tracciamento dei requisiti} & \req{A}{Q}{5} \\ & \req{A}{Q}{6} \\ & \req{A}{Q}{7} \\ - & \req{A}{Q}{11} \\ & \req{A}{V}{1} \\ & \req{A}{V}{2} \\ & \req{A}{V}{3} \\ @@ -301,7 +300,8 @@ \section{Tracciamento dei requisiti} & \req{A}{V}{11} \\ & \req{A}{V}{12} \\ & \req{A}{V}{13} \\ - & \req{A}{V}{14} \\ \hline + & \req{A}{V}{14} \\ + & \req{A}{V}{15} \\ \hline \multirow{15}{*}{Interna} & \sreq{A}{F}{1.1} \\ & \sreq{A}{F}{1.2} \\ & \req{A}{F}{51} \\ @@ -314,9 +314,11 @@ \section{Tracciamento dei requisiti} & \req{A}{Q}{8} \\ & \req{A}{Q}{9} \\ & \req{B}{Q}{10} \\ - & \req{A}{Q}{11} \\ & \req{A}{V}{1} \\ - & \req{A}{V}{4} \\ \hline + & \req{A}{V}{4} + \\ + & \req{A}{V}{15} + \\ \hline Verbale \#1 VI-1.5 & \req{A}{Q}{7} \\ \hline \multirow{4}{*}{Verbale \#8 VE-8.1} & \req{A}{Q}{1} \\ & \req{A}{Q}{2} \\ From e044c0def35718ca1806f23394d0b7fdf707b690 Mon Sep 17 00:00:00 2001 From: fmouad Date: Thu, 30 Jan 2020 14:53:35 +0100 Subject: [PATCH 06/26] arrivato a RAF12 con le fonti dei requisiti prestazionali --- .../ClassificazioneRequisiti.tex | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex index 0a0a0d3..5302d8d 100644 --- a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex +++ b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex @@ -36,34 +36,34 @@ \section{Requisiti} \endfoot \endlastfoot % autenticazione - \req{A}{F}{1} & L'utente deve potersi autenticare per accedere alla web app & UC \autism - \sreq{A}{F}{1.1} & L'utente deve poter usufruire dell'autenticazione a due fattori & UC \autism - \sreq{A}{F}{1.2} & L'utente deve poter ricevere un codice di autenticazione a due fattori tramite \glock{Telegram} & UC \autism - \req{A}{F}{2} & L'utente autenticato deve avere accesso alla web app e deve poter navigare al suo interno & UC \autism + \req{A}{F}{1} & L'utente deve potersi autenticare per accedere alla web app & UC1 \autism + \sreq{A}{F}{1.1} & L'utente deve poter usufruire dell'autenticazione a due fattori & UC1.3, UC14, Interna \autism + \sreq{A}{F}{1.2} & L'utente deve poter ricevere un codice di autenticazione a due fattori tramite \glock{Telegram} & UC1.3.3, Interna, Verbale #8 VE-8.3 \autism + \req{A}{F}{2} & L'utente autenticato deve avere accesso alla web app e deve poter navigare al suo interno & UC1.4 \autism % dashboard - \req{A}{F}{3} & L'utente autenticato deve avere accesso a una Dashboard & UC \autism - \sreq{A}{F}{3.1} & La dashboard deve mettere a disposizione le informazioni dell'utente autenticato & UC \autism - \sreq{A}{F}{3.2} & La dashboard deve mettere a disposizione i contatti di supporto tecnico & UC \autism - \sreq{B}{F}{3.3} & La dashboard deve mettere a disposizione le statistiche generali del sistema & UC \autism + \req{A}{F}{3} & L'utente autenticato deve avere accesso a una Dashboard & UC2 \autism + \sreq{A}{F}{3.1} & La dashboard deve mettere a disposizione le informazioni dell'utente autenticato & UC2 \autism + \sreq{A}{F}{3.2} & La dashboard deve mettere a disposizione i contatti di supporto tecnico & UC2 \autism + \sreq{B}{F}{3.3} & La dashboard deve mettere a disposizione le statistiche generali del sistema & UC2 \autism % lista dispositivi - \req{A}{F}{4} & Il membro deve poter visualizzare i dispositivi autorizzati per il suo ente & UC \autism - \req{A}{F}{5} & Il moderatore ente deve poter visualizzare i dispositivi autorizzati per il suo ente & UC \autism - \req{A}{F}{6} & L'amministratore deve poter visualizzare i dispositivi censiti nel sistema & UC \autism + \req{A}{F}{4} & Il membro deve poter visualizzare i dispositivi autorizzati per il suo ente & UC5.1 \autism + \req{A}{F}{5} & Il moderatore ente deve poter visualizzare i dispositivi autorizzati per il suo ente & UC5.1 \autism + \req{A}{F}{6} & L'amministratore deve poter visualizzare i dispositivi censiti nel sistema & UC5.1 \autism % impostazioni - \req{A}{F}{7} & L'utente autenticato deve poter visualizzare le proprie impostazioni account & UC \autism - \req{A}{F}{8} & L'utente autenticato deve poter modificare le proprie impostazioni account & UC \autism - \sreq{A}{F}{8.1} & L'utente autenticato deve poter modificare la propria password & UC \autism - \sreq{A}{F}{8.2} & L'utente autenticato deve poter modificare la propria email & UC \autism - \sreq{A}{F}{8.3} & L'utente autenticato deve poter modificare il proprio username \glock{Telegram} & UC \autism - \sreq{B}{F}{8.4} & L'utente autenticato deve poter attivare l'autenticazione a due fattori tramite \glock{Telegram} & UC \autism - \sreq{B}{F}{8.5} & L'utente autenticato deve poter disattivare l'autenticazione a due fattori tramite \glock{Telegram} & UC \autism - \sreq{B}{F}{8.6} & L'utente autenticato deve poter modificare la preferenza di notifica di uno specifico alert, in base a quelli disponibili & UC \autism + \req{A}{F}{7} & L'utente autenticato deve poter visualizzare le proprie impostazioni account & UC4 \autism + \req{A}{F}{8} & L'utente autenticato deve poter modificare le proprie impostazioni account & UC4.1, UC4.2 \autism + \sreq{A}{F}{8.1} & L'utente autenticato deve poter modificare la propria password & UC4.1 \autism + \sreq{A}{F}{8.2} & L'utente autenticato deve poter modificare la propria email & UC4.2.1 \autism + \sreq{A}{F}{8.3} & L'utente autenticato deve poter modificare il proprio username \glock{Telegram} & UC4.2.2 \autism + \sreq{B}{F}{8.4} & L'utente autenticato deve poter attivare l'autenticazione a due fattori tramite \glock{Telegram} & UC4.2.3 \autism + \sreq{B}{F}{8.5} & L'utente autenticato deve poter disattivare l'autenticazione a due fattori tramite \glock{Telegram} & UC4.2.3 \autism + \sreq{B}{F}{8.6} & L'utente autenticato deve poter modificare la preferenza di notifica di uno specifico alert, in base a quelli disponibili & UC4.3, Verbale #9 VE-9.2 \autism % info dispositivi - \req{A}{F}{9} & Il membro e il moderatore ente devono poter visualizzare la lista dei sensori di un dispositivo abilitati al loro ente & UC \autism - \req{A}{F}{10} & L'amministratore deve poter visualizzare la lista completa dei sensori di un qualunque dispositivo censito nel sistema & UC \autism - \req{A}{F}{11} & Il membro e il moderatore ente devono poter visualizzare i dati in tempo reale di un sensore abilitato al loro ente & UC \autism - \sreq{B}{F}{11.1} & Il membro e il moderatore ente possono visualizzare i dati di un sensore tramite un grafico & UC \autism - \req{A}{F}{12} & L'amministratore deve poter visualizzare i dati in tempo reale di tutti i sensori appartenenti a un dispositivo censito nel sistema & UC \autism + \req{A}{F}{9} & Il membro e il moderatore ente devono poter visualizzare la lista dei sensori di un dispositivo abilitati al loro ente & UC5.2 \autism + \req{A}{F}{10} & L'amministratore deve poter visualizzare la lista completa dei sensori di un qualunque dispositivo censito nel sistema & UC5.8 \autism + \req{A}{F}{11} & Il membro e il moderatore ente devono poter visualizzare i dati in tempo reale di un sensore abilitato al loro ente & UC5.2 \autism + \sreq{B}{F}{11.1} & Il membro e il moderatore ente possono visualizzare i dati di un sensore tramite un grafico & UC6.2 \autism + \req{A}{F}{12} & L'amministratore deve poter visualizzare i dati in tempo reale di tutti i sensori appartenenti a un dispositivo censito nel sistema & UC5.2, Verbale #9 VE-9.1 \autism \sreq{B}{F}{12.1} & L'amministratore deve poter visualizzare i dati di un sensore tramite un grafico & UC \autism \req{A}{F}{13} & L'amministratore deve poter visualizzare a quali enti è stata autorizzata la lettura di un sensore & UC \autism \req{A}{F}{14} & L'amministratore deve poter assegnare a un ente la lettura di un sensore di un qualunque dispositivo censito nel sistema & UC \autism From e67d8277ccd85f45065efcaa12f1e7bf7b986d91 Mon Sep 17 00:00:00 2001 From: Alessandro Date: Thu, 30 Jan 2020 14:55:21 +0100 Subject: [PATCH 07/26] Creato diagramma caso d'uso 6.5 AGGIUNGERE L'IMMAGINE --- .../analisi_requisiti/res/images/uc6.5.png | Bin 0 -> 54110 bytes .../res/sections/Sez3-CasiDUso/CasiDUso.tex | 12 ++-- .../res/sections/Sez3-CasiDUso/uc6.tex | 52 +++++++++++++++++- 3 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 esterni/analisi_requisiti/res/images/uc6.5.png diff --git a/esterni/analisi_requisiti/res/images/uc6.5.png b/esterni/analisi_requisiti/res/images/uc6.5.png new file mode 100644 index 0000000000000000000000000000000000000000..ceda5c1ac06b2cbba1b73ecf2f6c82860a7fa4ca GIT binary patch literal 54110 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 literal 0 HcmV?d00001 diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex index 61b79ac..0e3b822 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex @@ -16,13 +16,13 @@ \section{Casi d'uso} - \subsection{Contesto riassuntivo per le interazioni nella web app} + %\subsection{Contesto riassuntivo per le interazioni nella web app} - \begin{figure}[H] - \centering - \includegraphics[scale=0.6]{res/images/webapp} - \caption{Diagramma riassuntivo che illustra le interazioni principali all'interno della web app.} - \end{figure} + %\begin{figure}[H] + % \centering + % \includegraphics[scale=0.6]{res/images/webapp} + % \caption{Diagramma riassuntivo che illustra le interazioni principali all'interno della web app.} + %\end{figure} % ================= diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex index 106b444..76c01f2 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex @@ -125,8 +125,9 @@ \paragraph{UC 6.5.3 - Selezione correlazione} \begin{itemize} \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e sta selezionando la correlazione tra i dati da visualizzare. Il campo è opzionale. Le correlazioni disponibili sono: + \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e sta selezionando la correlazione tra i dati da visualizzare. Le correlazioni disponibili sono: \begin{itemize} + \item Nessuna correlazione; \item Covarianza; \item Correlazione di Pearson; \item Correlazione di Spearman. @@ -139,6 +140,55 @@ \end{enumerate} \end{itemize} + \subparagraph{UC 6.5.3.1 - Nessuna correlazione} + \begin{itemize} + \item \textbf{Attori Primari}: Utente autenticato. + \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e ha selezionato "Nessuna correlazione". + \item \textbf{Precondizione}: L'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}. + \item \textbf{Postcondizione}: L'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}. + \item \textbf{Scenario Principale}: + \begin{enumerate} + \item{L'utente seleziona la correlazione da visualizzare insieme al grafico.} + \end{enumerate} + \end{itemize} + + \subparagraph{UC 6.5.3.2 - Correlazione covarianza} + \begin{itemize} + \item \textbf{Attori Primari}: Utente autenticato. + \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e ha selezionato la correlazione covarianza. + \item \textbf{Precondizione}: L'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}. + \item \textbf{Postcondizione}: L'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}. + \item \textbf{Scenario Principale}: + \begin{enumerate} + \item{L'utente seleziona la correlazione da visualizzare insieme al grafico.} + \end{enumerate} + \end{itemize} + + \subparagraph{UC 6.5.3.3 - Correlazione di Pearson} + \begin{itemize} + \item \textbf{Attori Primari}: Utente autenticato. + \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e ha selezionato correlazione di Pearson. + \item \textbf{Precondizione}: L'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}. + \item \textbf{Postcondizione}: L'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}. + \item \textbf{Scenario Principale}: + \begin{enumerate} + \item{L'utente seleziona la correlazione da visualizzare insieme al grafico.} + \end{enumerate} + \end{itemize} + + \subparagraph{UC 6.5.3.4 - Correlazione di Spearman} + \begin{itemize} + \item \textbf{Attori Primari}: Utente autenticato. + \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e ha selezionato correlazione di Spearman. + \item \textbf{Precondizione}: L'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}. + \item \textbf{Postcondizione}: L'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}. + \item \textbf{Scenario Principale}: + \begin{enumerate} + \item{L'utente seleziona la correlazione da visualizzare insieme al grafico.} + \end{enumerate} + \end{itemize} + + \subsubsection{UC 6.6 - Rimozione grafico pagina view} \begin{itemize} \item \textbf{Attori Primari}: Utente autenticato. From 11671deb0e315077c8947b141f09f7d940ad2886 Mon Sep 17 00:00:00 2001 From: Lorenzo Dei Negri Date: Thu, 30 Jan 2020 17:00:10 +0100 Subject: [PATCH 08/26] Aggiunti requisiti riguardanti i manuali --- .../ClassificazioneRequisiti.tex | 5 ++++- .../res/sections/Sez5-Tracciamento/Tracciamento.tex | 10 ++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex index 1caa88e..ccf4a25 100644 --- a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex +++ b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex @@ -255,7 +255,10 @@ \section{Requisiti} \req{A}{V}{12} & La web app deve essere compatibile con il browser \glock{Chrome} dalla versione 75.0 & Capitolato \autism \req{A}{V}{13} & La web app deve essere compatibile con il browser \glock{Safari} dalla versione 13.0 & Capitolato \autism \req{B}{V}{14} & La web app deve essere compatibile con il browser \glock{Edge} dalla versione 42.0 & Capitolato \autism - \req{A}{V}{15} & La web app dovrà essere sviluppata utilizzando il framework \glock{Bootstrap} & Interna, Capitolato \autism + \req{A}{V}{15} & La web app dovrà essere sviluppata utilizzando il framework \glock{Bootstrap} & Interna, Capitolato \autism + \req{A}{V}{16} & Tutta la documentazione relativa al software deve essere scritta in lingua italiana, in modo da essere consistente con la lingua utilizzata per la codifica & Capitolato \autism + \sreq{A}{V}{16.1} & Il software deve essere accompagnato da un manuale amministratore, contenente tutte le informazioni utili per la distribuzione e l'installazione del prodotto & Capitolato \autism + \sreq{A}{V}{16.2} & Il software deve essere accompagnato da un manuale utente, contenente tutte le informazioni utili per l'utilizzo del prodotto da parte degli utenti e dei moderatori degli enti & Capitolato \autism \caption{Requisiti di vincolo con le relative descrizioni e le relative fonti} diff --git a/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex b/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex index 7c0a5a4..db523a3 100644 --- a/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex +++ b/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex @@ -163,6 +163,9 @@ \section{Tracciamento dei requisiti} \req{A}{V}{13} & Capitolato \\ \hline \req{B}{V}{14} & Capitolato \\ \hline \req{A}{V}{15} & Interna, Capitolato \\ \hline + \req{B}{V}{16} & Capitolato \\ \hline + \sreq{B}{V}{16.1} & Capitolato \\ \hline + \sreq{B}{V}{16.2} & Capitolato \\ \hline \caption{Tracciamento requisiti-fonti} \end{longtable} @@ -300,8 +303,11 @@ \section{Tracciamento dei requisiti} & \req{A}{V}{11} \\ & \req{A}{V}{12} \\ & \req{A}{V}{13} \\ - & \req{A}{V}{14} \\ - & \req{A}{V}{15} \\ \hline + & \req{A}{V}{14} \\ + & \req{A}{V}{15} \\ + & \req{A}{V}{16} \\ + & \sreq{A}{V}{16.1} \\ + & \sreq{A}{V}{16.2} \\ \hline \multirow{15}{*}{Interna} & \sreq{A}{F}{1.1} \\ & \sreq{A}{F}{1.2} \\ & \req{A}{F}{51} \\ From 420fec43c58030df2ab660e1ed51e27e4ffd85d7 Mon Sep 17 00:00:00 2001 From: fmouad Date: Thu, 30 Jan 2020 17:07:49 +0100 Subject: [PATCH 09/26] specificati gli UC di ogni requisito nella tabella sotto la sezione classificazione dei requisiti --- .../ClassificazioneRequisiti.tex | 128 +++++++++--------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex index da1b86e..2dd5ea5 100644 --- a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex +++ b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex @@ -64,80 +64,80 @@ \section{Requisiti} \req{A}{F}{11} & Il membro e il moderatore ente devono poter visualizzare i dati in tempo reale di un sensore abilitato al loro ente & UC5.2 \autism \sreq{B}{F}{11.1} & Il membro e il moderatore ente possono visualizzare i dati di un sensore tramite un grafico & UC6.2 \autism \req{A}{F}{12} & L'amministratore deve poter visualizzare i dati in tempo reale di tutti i sensori appartenenti a un dispositivo censito nel sistema & UC5.2, Verbale #9 VE-9.1 \autism - \sreq{B}{F}{12.1} & L'amministratore deve poter visualizzare i dati di un sensore tramite un grafico & UC \autism - \req{A}{F}{13} & L'amministratore deve poter visualizzare a quali enti è stata autorizzata la lettura di un sensore & UC \autism - \req{A}{F}{14} & L'amministratore deve poter assegnare a un ente la lettura di un sensore di un qualunque dispositivo censito nel sistema & UC \autism - \req{A}{F}{15} & L'amministratore deve poter rimuovere da un ente la lettura di un sensore di un qualunque dispositivo censito nel sistema & UC \autism + \sreq{B}{F}{12.1} & L'amministratore deve poter visualizzare i dati di un sensore tramite un grafico & UC6.2, Verbale #9 VE-9.1 \autism + \req{A}{F}{13} & L'amministratore deve poter visualizzare a quali enti è stata autorizzata la lettura di un sensore & UC5.2 \autism + \req{A}{F}{14} & L'amministratore deve poter assegnare a un ente la lettura di un sensore di un qualunque dispositivo censito nel sistema & UC5.6 \autism + \req{A}{F}{15} & L'amministratore deve poter rimuovere da un ente la lettura di un sensore di un qualunque dispositivo censito nel sistema & UC5.7 \autism % lista membri mod - \req{A}{F}{16} & Un moderatore ente deve poter visualizzare la lista dei membri appartenenti al suo ente & UC \autism - \req{A}{F}{17} & Un moderatore ente deve poter visualizzare le informazioni di un membro appartenente al suo ente & UC \autism - \req{B}{F}{18} & Un moderatore ente deve poter modificare l'account di un membro appartenente al suo ente & UC \autism - \sreq{B}{F}{18.1} & Un moderatore ente deve poter modificare la email di un membro appartenente al suo ente & UC \autism - \sreq{B}{F}{18.2} & Un moderatore ente deve poter modificare il nome di un membro appartenente al suo ente & UC \autism - \sreq{B}{F}{18.3} & Un moderatore ente deve poter modificare il cognome di un membro appartenente al suo ente & UC \autism - \req{A}{F}{19} & Un moderatore ente deve poter rimuovere un membro appartenente al suo ente & UC \autism - \req{A}{F}{20} & Un moderatore ente deve poter creare un nuovo account per un nuovo membro che apparterrà solo al suo ente & UC \autism + \req{A}{F}{16} & Un moderatore ente deve poter visualizzare la lista dei membri appartenenti al suo ente & UC7.1 \autism + \req{A}{F}{17} & Un moderatore ente deve poter visualizzare le informazioni di un membro appartenente al suo ente & UC7.3 \autism + \req{B}{F}{18} & Un moderatore ente deve poter modificare l'account di un membro appartenente al suo ente & UC7.4 \autism + \sreq{B}{F}{18.1} & Un moderatore ente deve poter modificare la email di un membro appartenente al suo ente & UC7.4.1 \autism + \sreq{B}{F}{18.2} & Un moderatore ente deve poter modificare il nome di un membro appartenente al suo ente & UC7.4.2 \autism + \sreq{B}{F}{18.3} & Un moderatore ente deve poter modificare il cognome di un membro appartenente al suo ente & UC7.4.3 \autism + \req{A}{F}{19} & Un moderatore ente deve poter rimuovere un membro appartenente al suo ente & UC7.5 \autism + \req{A}{F}{20} & Un moderatore ente deve poter creare un nuovo account per un nuovo membro che apparterrà solo al suo ente & UC7.2 \autism % lista membri admin - \req{A}{F}{21} & Un amministratore deve poter visualizzare la lista degli utenti registrati nel sistema & UC \autism - \req{A}{F}{22} & Un amministratore deve poter visualizzare le informazioni di un utente qualunque & UC \autism - \req{A}{F}{23} & Un amministratore deve poter disattivare un account di un utente qualunque & UC \autism - \req{B}{F}{24} & Un amministratore deve poter modificare le impostazioni di un utente qualunque & UC \autism - \sreq{B}{F}{24.1} & Un amministratore deve poter modificare la email di un utente qualunque & UC \autism - \sreq{B}{F}{24.2} & Un amministratore deve poter modificare il nome di un utente qualunque & UC \autism - \sreq{B}{F}{24.3} & Un amministratore deve poter modificare il cognome di un utente qualunque & UC \autism - \sreq{B}{F}{24.4} & Un amministratore deve poter modificare il lo username \glock{Telegram} di un utente qualunque & UC \autism - \sreq{B}{F}{24.5} & Un amministratore deve poter attivare l'autenticazione a due fattori tramite \glock{Telegram} di un utente qualunque & UC \autism - \sreq{B}{F}{24.6} & Un amministratore deve poter disattivare l'autenticazione a due fattori tramite \glock{Telegram} di un utente qualunque & UC \autism - \req{A}{F}{25} & Un amministratore deve poter riassegnare un membro o un moderatore ente a ente differente & UC \autism - \req{A}{F}{26} & Un amministratore deve poter resettare la password a un membro o a un moderatore ente & UC \autism - \req{A}{F}{27} & Un amministratore deve poter creare un account per un nuovo membro & UC \autism + \req{A}{F}{21} & Un amministratore deve poter visualizzare la lista degli utenti registrati nel sistema & UC11.1 \autism + \req{A}{F}{22} & Un amministratore deve poter visualizzare le informazioni di un utente qualunque & UC11.3 \autism + \req{A}{F}{23} & Un amministratore deve poter disattivare un account di un utente qualunque & UC11.6 \autism + \req{B}{F}{24} & Un amministratore deve poter modificare le impostazioni di un utente qualunque & UC11.4 \autism + \sreq{B}{F}{24.1} & Un amministratore deve poter modificare la email di un utente qualunque & UC11.4.1 \autism + \sreq{B}{F}{24.2} & Un amministratore deve poter modificare il nome di un utente qualunque & UC11.4.2 \autism + \sreq{B}{F}{24.3} & Un amministratore deve poter modificare il cognome di un utente qualunque & UC11.4.3 \autism + \sreq{B}{F}{24.4} & Un amministratore deve poter modificare il lo username \glock{Telegram} di un utente qualunque & UC11.4.4 \autism + \sreq{B}{F}{24.5} & Un amministratore deve poter attivare l'autenticazione a due fattori tramite \glock{Telegram} di un utente qualunque & UC11.4.7 \autism + \sreq{B}{F}{24.6} & Un amministratore deve poter disattivare l'autenticazione a due fattori tramite \glock{Telegram} di un utente qualunque & UC11.4.7 \autism + \req{A}{F}{25} & Un amministratore deve poter riassegnare un membro o un moderatore ente a ente differente & UC11.4.5 \autism + \req{A}{F}{26} & Un amministratore deve poter resettare la password a un membro o a un moderatore ente & UC11.5 \autism + \req{A}{F}{27} & Un amministratore deve poter creare un account per un nuovo membro & UC11.2 \autism % lista alert - \req{A}{F}{28} & Un moderatore ente deve poter visualizzare la lista degli alert attivi per il suo ente & UC \autism - \req{A}{F}{29} & Un moderatore ente deve poter aggiungere un alert di un particolare sensore per il suo ente & UC \autism - \req{A}{F}{30} & Un moderatore ente deve poter rimuovere un alert di un particolare sensore per il suo ente & UC \autism - \req{A}{F}{31} & Un amministratore deve poter visualizzare la lista degli alert attivi per tutti gli enti & UC \autism - \req{A}{F}{32} & Un amministratore deve poter rimuovere un alert di un particolare sensore & UC \autism - \req{A}{F}{33} & I membri e i moderatori ente devono poter ricevere notifiche \glock{Telegram} sulla base delle soglie impostate negli alert attivi per il loro ente & UC \autism + \req{A}{F}{28} & Un moderatore ente deve poter visualizzare la lista degli alert attivi per il suo ente & UC8.1 \autism + \req{A}{F}{29} & Un moderatore ente deve poter aggiungere un alert di un particolare sensore per il suo ente & UC8.2 \autism + \req{A}{F}{30} & Un moderatore ente deve poter rimuovere un alert di un particolare sensore per il suo ente & UC8.3 \autism + \req{A}{F}{31} & Un amministratore deve poter visualizzare la lista degli alert attivi per tutti gli enti & UC12.1 \autism + \req{A}{F}{32} & Un amministratore deve poter rimuovere un alert di un particolare sensore & UC12.2 \autism + \req{A}{F}{33} & I membri e i moderatori ente devono poter ricevere notifiche \glock{Telegram} sulla base delle soglie impostate negli alert attivi per il loro ente & UC15.1 \autism % logout - \req{A}{F}{34} & L'utente autenticato deve poter eseguire il logout dalla web app & UC \autism + \req{A}{F}{34} & L'utente autenticato deve poter eseguire il logout dalla web app & UC3 \autism % view page - \req{A}{F}{35} & L'utente autenticato deve poter visualizzare la lista delle proprie pagine \textit{View} & UC \autism - \req{A}{F}{36} & L'utente autenticato deve poter creare delle proprie pagine \textit{View} & UC \autism - \req{A}{F}{37} & L'utente autenticato deve poter cancellare le proprie pagine \textit{View} & UC \autism - \req{A}{F}{38} & L'utente autenticato deve poter aggiungere grafici in una propria pagina \textit{View} & UC \autism - \req{A}{F}{39} & L'utente autenticato deve poter visualizzare due dati in un grafico inserito in una propria pagina \textit{View} & UC \autism - \sreq{A}{F}{39.1} & I grafici nelle pagine \textit{View} devono permettere di visualizzare almeno una correlazione tra due dati & UC \autism - \sreq{B}{F}{39.2} & I grafici nelle pagine \textit{View} devono permettere di visualizzare almeno tre correlazioni tra due dati & UC \autism - \req{A}{F}{40} & L'utente autenticato deve poter cancellare grafici da una propria pagina \textit{View} & UC \autism + \req{A}{F}{35} & L'utente autenticato deve poter visualizzare la lista delle proprie pagine \textit{View} & UC6.1 \autism + \req{A}{F}{36} & L'utente autenticato deve poter creare delle proprie pagine \textit{View} & UC6.3 \autism + \req{A}{F}{37} & L'utente autenticato deve poter cancellare le proprie pagine \textit{View} & UC6.4 \autism + \req{A}{F}{38} & L'utente autenticato deve poter aggiungere grafici in una propria pagina \textit{View} & UC6.5 \autism + \req{A}{F}{39} & L'utente autenticato deve poter visualizzare due dati in un grafico inserito in una propria pagina \textit{View} & UC6.5, UC6.2 \autism + \sreq{A}{F}{39.1} & I grafici nelle pagine \textit{View} devono permettere di visualizzare almeno una correlazione tra due dati & UC6.5 \autism + \sreq{B}{F}{39.2} & I grafici nelle pagine \textit{View} devono permettere di visualizzare almeno tre correlazioni tra due dati & UC6.5 \autism + \req{A}{F}{40} & L'utente autenticato deve poter cancellare grafici da una propria pagina \textit{View} & UC6.6 \autism % logs - \req{C}{F}{41} & Il moderatore ente deve poter visualizzare la lista logs degli utenti del suo ente & UC \autism - \req{C}{F}{42} & L'amministratore deve poter visualizzare la lista logs degli utenti di sistema & UC \autism + \req{C}{F}{41} & Il moderatore ente deve poter visualizzare la lista logs degli utenti del suo ente & UC9 \autism + \req{C}{F}{42} & L'amministratore deve poter visualizzare la lista logs degli utenti di sistema & UC13 \autism % input e comandi - \req{A}{F}{43} & Il moderatore ente deve poter visualizzare la lista dispositivi autorizzati all'invio dei comandi & UC \autism - \req{A}{F}{44} & Il moderatore ente deve poter inviare comandi ai singoli dispositivi autorizzati per il loro ente & UC \autism - \sreq{B}{F}{44.1} & L'invio dei comandi deve avvenire tramite un bot \glock{Telegram} & UC \autism + \req{A}{F}{43} & Il moderatore ente deve poter visualizzare la lista dispositivi autorizzati all'invio dei comandi & UC16.4 \autism + \req{A}{F}{44} & Il moderatore ente deve poter inviare comandi ai singoli dispositivi autorizzati per il loro ente & UC16.5.5 \autism + \sreq{B}{F}{44.1} & L'invio dei comandi deve avvenire tramite un bot \glock{Telegram} & UC16.5.5 \autism % configurazione - \req{A}{F}{45} & Un amministratore deve poter visualizzare la configurazione dei dispositivi censiti nel sistema & UC \autism - \req{A}{F}{46} & Un amministratore deve poter censire un nuovo dispositivo & UC \autism - \req{A}{F}{47} & Un amministratore deve poter decidere quali dati ricevere da un dispositivo & UC \autism - \req{A}{F}{48} & Un amministratore deve poter decidere con quale frequenza ricevere i dati di un dispositivo & UC \autism - \req{A}{F}{49} & Un amministratore deve poter rimuovere un dispositivo censito & UC \autism - \req{A}{F}{50} & Un amministratore deve poter modificare le configurazione di un dispositivo già censito & UC \autism + \req{A}{F}{45} & Un amministratore deve poter visualizzare la configurazione dei dispositivi censiti nel sistema & UC5.2 \autism + \req{A}{F}{46} & Un amministratore deve poter censire un nuovo dispositivo & UC5.3 \autism + \req{A}{F}{47} & Un amministratore deve poter decidere quali dati ricevere da un dispositivo & UC5.3.4 \autism + \req{A}{F}{48} & Un amministratore deve poter decidere con quale frequenza ricevere i dati di un dispositivo & UC5.3.3, Verbale #9 VE-9.3 \autism + \req{A}{F}{49} & Un amministratore deve poter rimuovere un dispositivo censito & UC5.5 \autism + \req{A}{F}{50} & Un amministratore deve poter modificare le configurazione di un dispositivo già censito & UC5.4 \autism \hline % sistema - \req{A}{F}{51} & Il sistema deve rimuovere automaticamente gli alert attivi di un dispositivo non più censito & Interna \autism - \req{A}{F}{52} & Il sistema deve rimuovere automaticamente i sensori dei dispositivi autorizzati agli enti che non sono più esistenti & Interna \autism - \req{A}{F}{53} & Il sistema deve rimuovere automaticamente i grafici creati dagli utenti nella pagina \textit{View} se viene rimosso un sensore dal sistema & UC \autism - \req{A}{F}{54} & Il sistema deve disattivare automaticamente gli utenti che fanno parte di un ente, qualora l'ente venga disabilitato da un amministratore & Interna \autism - \req{A}{F}{55} & Un amministratore deve poter creare un nuovo ente & UC \autism - \req{A}{F}{56} & Un amministratore deve poter modificare le informazioni di un ente esistente & UC \autism - \req{A}{F}{57} & Un amministratore deve poter disattivare un ente & UC \autism - \req{A}{F}{58} & Un amministratore deve poter visualizzare gli enti attivi nel sistema & UC \autism - \req{A}{F}{59} & Il sistema deve disattivare automaticamente gli alert attivi per un utente, qualora l'utente venga disattivato & Interna \autism - \req{A}{F}{60} & Il sistema non deve permettere l'accesso a utenti non amministratori che non fanno parte di un ente & UC \autism - \req{A}{F}{61} & Il sistema non deve permettere l'accesso a utenti disattivati & UC \autism - \req{A}{F}{62} & Il sistema non deve permettere notifica degli alert agli utenti disattivati & Interna \autism - \req{A}{F}{63} & Il sistema deve permettere notifica degli alert in base alle preferenze indicate nelle impostazioni di un utente & UC \autism + \req{A}{F}{51} & Il sistema deve rimuovere automaticamente gli alert attivi di un dispositivo non più censito & Interna, Verbale #9 VE-9.4 \autism + \req{A}{F}{52} & Il sistema deve rimuovere automaticamente i sensori dei dispositivi autorizzati agli enti che non sono più esistenti & Interna, Verbale #9 VE-9.4 \autism + \req{A}{F}{53} & Il sistema deve rimuovere automaticamente i grafici creati dagli utenti nella pagina \textit{View} se viene rimosso un sensore dal sistema & Interna \autism + \req{A}{F}{54} & Il sistema deve disattivare automaticamente gli utenti che fanno parte di un ente, qualora l'ente venga disabilitato da un amministratore & Interna, Verbale #9 VE-9.4 \autism + \req{A}{F}{55} & Un amministratore deve poter creare un nuovo ente & UC10.3 \autism + \req{A}{F}{56} & Un amministratore deve poter modificare le informazioni di un ente esistente & UC10.4 \autism + \req{A}{F}{57} & Un amministratore deve poter disattivare un ente & UC10.5, Verbale #9 VE-9.4 \autism + \req{A}{F}{58} & Un amministratore deve poter visualizzare gli enti attivi nel sistema & UC10.1 \autism + \req{A}{F}{59} & Il sistema deve disattivare automaticamente gli alert attivi per un utente, qualora l'utente venga disattivato & Interna, Verbale #9 VE-9.4 \autism + \req{A}{F}{60} & Il sistema non deve permettere l'accesso a utenti non amministratori che non fanno parte di un ente & UC18, UC1.4 \autism + \req{A}{F}{61} & Il sistema non deve permettere l'accesso a utenti disattivati & UC18, UC1.4 \autism + \req{A}{F}{62} & Il sistema non deve permettere notifica degli alert agli utenti disattivati & Interna, Verbale #9 VE-9.4 \autism + \req{A}{F}{63} & Il sistema deve permettere notifica degli alert in base alle preferenze indicate nelle impostazioni di un utente & UC15.1, UC4.3 \autism \req{A}{F}{64} & I dati usati nel sistema devono essere salvati all'interno di una base di dati & Capitolato \autism \sreq{A}{F}{64.1} & I dati ricevuti dai gateway e usati per la creazione dei grafici vanno salvati all'interno di un time-series database (non relazionale) & Capitolato \autism \sreq{A}{F}{64.2} & I dati utilizzati per gli account utenti devono essere salvati in un database relazionale. & Capitolato \autism From 2972720bce3147aaca7e56c1b4a53860c9aa54e4 Mon Sep 17 00:00:00 2001 From: Lorenzo Dei Negri Date: Thu, 30 Jan 2020 18:26:00 +0100 Subject: [PATCH 10/26] Fix decisioni verbali Aggiunta data --- .../ClassificazioneRequisiti.tex | 22 ++++---- .../Sez5-Tracciamento/Tracciamento.tex | 56 +++++++++---------- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex index dacd2c0..94a3518 100644 --- a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex +++ b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex @@ -38,7 +38,7 @@ \section{Requisiti} % autenticazione \req{A}{F}{1} & L'utente deve potersi autenticare per accedere alla web app & UC1 \autism \sreq{A}{F}{1.1} & L'utente deve poter usufruire dell'autenticazione a due fattori & UC1.3, UC14, Interna \autism - \sreq{A}{F}{1.2} & L'utente deve poter ricevere un codice di autenticazione a due fattori tramite \glock{Telegram} & UC1.3.3, Interna, Verbale #8 VE-8.3 \autism + \sreq{A}{F}{1.2} & L'utente deve poter ricevere un codice di autenticazione a due fattori tramite \glock{Telegram} & UC1.3.3, Interna, VE\_2020-01-03\_8.3 \autism \req{A}{F}{2} & L'utente autenticato deve avere accesso alla web app e deve poter navigare al suo interno & UC1.4 \autism % dashboard \req{A}{F}{3} & L'utente autenticato deve avere accesso a una Dashboard & UC2 \autism @@ -57,14 +57,14 @@ \section{Requisiti} \sreq{A}{F}{8.3} & L'utente autenticato deve poter modificare il proprio username \glock{Telegram} & UC4.2.2 \autism \sreq{B}{F}{8.4} & L'utente autenticato deve poter attivare l'autenticazione a due fattori tramite \glock{Telegram} & UC4.2.3 \autism \sreq{B}{F}{8.5} & L'utente autenticato deve poter disattivare l'autenticazione a due fattori tramite \glock{Telegram} & UC4.2.3 \autism - \sreq{B}{F}{8.6} & L'utente autenticato deve poter modificare la preferenza di notifica di uno specifico alert, in base a quelli disponibili & UC4.3, Verbale #9 VE-9.2 \autism + \sreq{B}{F}{8.6} & L'utente autenticato deve poter modificare la preferenza di notifica di uno specifico alert, in base a quelli disponibili & UC4.3, VE\_2020-01-10\_9.2 \autism % info dispositivi \req{A}{F}{9} & Il membro e il moderatore ente devono poter visualizzare la lista dei sensori di un dispositivo abilitati al loro ente & UC5.2 \autism \req{A}{F}{10} & L'amministratore deve poter visualizzare la lista completa dei sensori di un qualunque dispositivo censito nel sistema & UC5.8 \autism \req{A}{F}{11} & Il membro e il moderatore ente devono poter visualizzare i dati in tempo reale di un sensore abilitato al loro ente & UC5.2 \autism \sreq{B}{F}{11.1} & Il membro e il moderatore ente possono visualizzare i dati di un sensore tramite un grafico & UC6.2 \autism - \req{A}{F}{12} & L'amministratore deve poter visualizzare i dati in tempo reale di tutti i sensori appartenenti a un dispositivo censito nel sistema & UC5.2, Verbale #9 VE-9.1 \autism - \sreq{B}{F}{12.1} & L'amministratore deve poter visualizzare i dati di un sensore tramite un grafico & UC6.2, Verbale #9 VE-9.1 \autism + \req{A}{F}{12} & L'amministratore deve poter visualizzare i dati in tempo reale di tutti i sensori appartenenti a un dispositivo censito nel sistema & UC5.2, VE\_2020-01-10\_9.1 \autism + \sreq{B}{F}{12.1} & L'amministratore deve poter visualizzare i dati di un sensore tramite un grafico & UC6.2, VE\_2020-01-10\_9.1 \autism \req{A}{F}{13} & L'amministratore deve poter visualizzare a quali enti è stata autorizzata la lettura di un sensore & UC5.2 \autism \req{A}{F}{14} & L'amministratore deve poter assegnare a un ente la lettura di un sensore di un qualunque dispositivo censito nel sistema & UC5.6 \autism \req{A}{F}{15} & L'amministratore deve poter rimuovere da un ente la lettura di un sensore di un qualunque dispositivo censito nel sistema & UC5.7 \autism @@ -120,23 +120,23 @@ \section{Requisiti} \req{A}{F}{45} & Un amministratore deve poter visualizzare la configurazione dei dispositivi censiti nel sistema & UC5.2 \autism \req{A}{F}{46} & Un amministratore deve poter censire un nuovo dispositivo & UC5.3 \autism \req{A}{F}{47} & Un amministratore deve poter decidere quali dati ricevere da un dispositivo & UC5.3.4 \autism - \req{A}{F}{48} & Un amministratore deve poter decidere con quale frequenza ricevere i dati di un dispositivo & UC5.3.3, Verbale #9 VE-9.3 \autism + \req{A}{F}{48} & Un amministratore deve poter decidere con quale frequenza ricevere i dati di un dispositivo & UC5.3.3, VE\_2020-01-10\_9.3 \autism \req{A}{F}{49} & Un amministratore deve poter rimuovere un dispositivo censito & UC5.5 \autism \req{A}{F}{50} & Un amministratore deve poter modificare le configurazione di un dispositivo già censito & UC5.4 \autism \hline % sistema - \req{A}{F}{51} & Il sistema deve rimuovere automaticamente gli alert attivi di un dispositivo non più censito & Interna, Verbale #9 VE-9.4 \autism - \req{A}{F}{52} & Il sistema deve rimuovere automaticamente i sensori dei dispositivi autorizzati agli enti che non sono più esistenti & Interna, Verbale #9 VE-9.4 \autism + \req{A}{F}{51} & Il sistema deve rimuovere automaticamente gli alert attivi di un dispositivo non più censito & Interna, VE\_2020-01-10\_9.4 \autism + \req{A}{F}{52} & Il sistema deve rimuovere automaticamente i sensori dei dispositivi autorizzati agli enti che non sono più esistenti & Interna, VE\_2020-01-10\_9.4 \autism \req{A}{F}{53} & Il sistema deve rimuovere automaticamente i grafici creati dagli utenti nella pagina \textit{View} se viene rimosso un sensore dal sistema & Interna \autism - \req{A}{F}{54} & Il sistema deve disattivare automaticamente gli utenti che fanno parte di un ente, qualora l'ente venga disabilitato da un amministratore & Interna, Verbale #9 VE-9.4 \autism + \req{A}{F}{54} & Il sistema deve disattivare automaticamente gli utenti che fanno parte di un ente, qualora l'ente venga disabilitato da un amministratore & Interna, VE\_2020-01-10\_9.4 \autism \req{A}{F}{55} & Un amministratore deve poter creare un nuovo ente & UC10.3 \autism \req{A}{F}{56} & Un amministratore deve poter modificare le informazioni di un ente esistente & UC10.4 \autism - \req{A}{F}{57} & Un amministratore deve poter disattivare un ente & UC10.5, Verbale #9 VE-9.4 \autism + \req{A}{F}{57} & Un amministratore deve poter disattivare un ente & UC10.5, VE\_2020-01-10\_9.4 \autism \req{A}{F}{58} & Un amministratore deve poter visualizzare gli enti attivi nel sistema & UC10.1 \autism - \req{A}{F}{59} & Il sistema deve disattivare automaticamente gli alert attivi per un utente, qualora l'utente venga disattivato & Interna, Verbale #9 VE-9.4 \autism + \req{A}{F}{59} & Il sistema deve disattivare automaticamente gli alert attivi per un utente, qualora l'utente venga disattivato & Interna, VE\_2020-01-10\_9.4 \autism \req{A}{F}{60} & Il sistema non deve permettere l'accesso a utenti non amministratori che non fanno parte di un ente & UC18, UC1.4 \autism \req{A}{F}{61} & Il sistema non deve permettere l'accesso a utenti disattivati & UC18, UC1.4 \autism - \req{A}{F}{62} & Il sistema non deve permettere notifica degli alert agli utenti disattivati & Interna, Verbale #9 VE-9.4 \autism + \req{A}{F}{62} & Il sistema non deve permettere notifica degli alert agli utenti disattivati & Interna, VE\_2020-01-10\_9.4 \autism \req{A}{F}{63} & Il sistema deve permettere notifica degli alert in base alle preferenze indicate nelle impostazioni di un utente & UC15.1, UC4.3 \autism \req{A}{F}{64} & I dati usati nel sistema devono essere salvati all'interno di una base di dati & Capitolato \autism \sreq{A}{F}{64.1} & I dati ricevuti dai gateway e usati per la creazione dei grafici vanno salvati all'interno di un time-series database (non relazionale) & Capitolato \autism diff --git a/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex b/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex index db523a3..d33978c 100644 --- a/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex +++ b/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex @@ -14,7 +14,7 @@ \section{Tracciamento dei requisiti} % autenticazione \req{A}{F}{1} & UC 1 \\ \hline \sreq{A}{F}{1.1} & UC 1.3, UC 14, Interna \\ \hline - \sreq{A}{F}{1.2} & UC 1.3.3, Interna, Verbale \#8 VE-8.3 \\ \hline + \sreq{A}{F}{1.2} & UC 1.3.3, Interna, VE\_2020-01-03\_8.3 \\ \hline \req{A}{F}{2} & UC 1.4 \\ \hline % dashboard \req{A}{F}{3} & UC 2 \\ \hline @@ -33,14 +33,14 @@ \section{Tracciamento dei requisiti} \sreq{A}{F}{8.3} & UC 4.2.2\\ \hline \sreq{B}{F}{8.4} & UC 4.2.3\\ \hline \sreq{B}{F}{8.5} & UC 4.2.3\\ \hline - \sreq{B}{F}{8.6} & UC 4.3, Verbale \#9 VE-9.2\\ \hline + \sreq{B}{F}{8.6} & UC 4.3, VE\_2020-01-10\_9.2\\ \hline % info dispositivi \req{A}{F}{9} & UC 5.2\\ \hline \req{A}{F}{10} & UC 5.8\\ \hline \req{A}{F}{11} & UC 5.2 \\ \hline \sreq{B}{F}{11.1} & UC 6.2\\ \hline - \req{A}{F}{12} & UC 5.2, Verbale \#9 VE-9.1\\ \hline - \sreq{B}{F}{12.1} & UC 6.2, Verbale \#9 VE-9.1\\ \hline + \req{A}{F}{12} & UC 5.2, VE\_2020-01-10\_9.1\\ \hline + \sreq{B}{F}{12.1} & UC 6.2, VE\_2020-01-10\_9.1\\ \hline \req{A}{F}{13} & UC 5.2\\ \hline \req{A}{F}{14} & UC 5.6\\ \hline \req{A}{F}{15} & UC 5.7\\ \hline @@ -96,22 +96,22 @@ \section{Tracciamento dei requisiti} \req{A}{F}{45} & UC 5.2\\ \hline \req{A}{F}{46} & UC 5.3\\ \hline \req{A}{F}{47} & UC 5.3.4\\ \hline - \req{A}{F}{48} & UC 5.3.3, Verbale \#9 VE-9.3\\ \hline + \req{A}{F}{48} & UC 5.3.3, VE\_2020-01-10\_9.3\\ \hline \req{A}{F}{49} & UC 5.5\\ \hline \req{A}{F}{50} & UC 5.4\\ \hline % sistema - \req{A}{F}{51} & Interna, Verbale \#9 VE-9.4 \\ \hline - \req{A}{F}{52} & Interna, Verbale \#9 VE-9.4 \\ \hline + \req{A}{F}{51} & Interna, VE\_2020-01-10\_9.4 \\ \hline + \req{A}{F}{52} & Interna, VE\_2020-01-10\_9.4 \\ \hline \req{A}{F}{53} & Interna \\ \hline - \req{A}{F}{54} & Interna, Verbale \#9 VE-9.4 \\ \hline + \req{A}{F}{54} & Interna, VE\_2020-01-10\_9.4 \\ \hline \req{A}{F}{55} & UC 10.3\\ \hline \req{A}{F}{56} & UC 10.4\\ \hline - \req{A}{F}{57} & UC 10.5, Verbale \#9 VE-9.4\\ \hline + \req{A}{F}{57} & UC 10.5, VE\_2020-01-10\_9.4\\ \hline \req{A}{F}{58} & UC 10.1\\ \hline - \req{A}{F}{59} & Interna, Verbale \#9 VE-9.4 \\ \hline + \req{A}{F}{59} & Interna, VE\_2020-01-10\_9.4 \\ \hline \req{A}{F}{60} & UC 18, UC 1.4\\ \hline \req{A}{F}{61} & UC 18, UC 1.4\\ \hline - \req{A}{F}{62} & Interna, Verbale \#9 VE-9.4 \\ \hline + \req{A}{F}{62} & Interna, VE\_2020-01-10\_9.4 \\ \hline \req{A}{F}{63} & UC 15.1, UC 4.3\\ \hline \req{A}{F}{64} & Capitolato\\ \hline \sreq{A}{F}{64.1} & Capitolato \\ \hline @@ -132,17 +132,17 @@ \section{Tracciamento dei requisiti} \sreq{B}{F}{71.2} & Capitolato \\ \hline %prestazionali - \req{A}{P}{1} & Interna, Verbale \#9 VE-9.6, Verbale \#9 VE-9.7\\ \hline - \req{A}{P}{2} & Capitolato, Verbale \#9 VE-9.8 \\ \hline + \req{A}{P}{1} & Interna, VE\_2020-01-10\_9.6, VE\_2020-01-10\_9.7\\ \hline + \req{A}{P}{2} & Capitolato, VE\_2020-01-10\_9.8 \\ \hline %Qualita - \req{A}{Q}{1} & Capitolato, Verbale \#8 VE-8.1 \\ \hline - \req{A}{Q}{2} & Capitolato, Verbale \#8 VE-8.1 \\ \hline - \req{A}{Q}{3} & Capitolato, Verbale \#8 VE-8.1 \\ \hline - \req{A}{Q}{4} & Capitolato, Verbale \#8 VE-8.1 \\ \hline + \req{A}{Q}{1} & Capitolato, VE\_2020-01-03\_8.1 \\ \hline + \req{A}{Q}{2} & Capitolato, VE\_2020-01-03\_8.1 \\ \hline + \req{A}{Q}{3} & Capitolato, VE\_2020-01-03\_8.1 \\ \hline + \req{A}{Q}{4} & Capitolato, VE\_2020-01-03\_8.1 \\ \hline \sreq{A}{Q}{4.1} & Capitolato \\ \hline \req{A}{Q}{5} & Capitolato \\ \hline \req{A}{Q}{6} & Capitolato \\ \hline - \req{A}{Q}{7} & Capitolato, Verbale \#1 VI-1.5 \\ \hline + \req{A}{Q}{7} & Capitolato, VI\_2019-11-18\_1.5 \\ \hline \req{A}{Q}{8} & Interna \\ \hline \req{A}{Q}{9} & Interna \\ \hline \req{B}{Q}{10} & Interna \\ \hline @@ -325,25 +325,25 @@ \section{Tracciamento dei requisiti} \\ & \req{A}{V}{15} \\ \hline - Verbale \#1 VI-1.5 & \req{A}{Q}{7} \\ \hline - \multirow{4}{*}{Verbale \#8 VE-8.1} & \req{A}{Q}{1} \\ + VI\_2019-11-18\_1.5 & \req{A}{Q}{7} \\ \hline \pagebreak + \multirow{4}{*}{VE\_2020-01-03\_8.1} & \req{A}{Q}{1} \\ & \req{A}{Q}{2} \\ & \req{A}{Q}{3} \\ & \req{A}{Q}{4} \\ \hline - Verbale \#8 VE-8.3 & \sreq{A}{F}{1.2} \\ \hline - \multirow{2}{*}{Verbale \#9 VE-9.1} & \req{A}{F}{12} \\ + VE\_2020-01-03\_8.3 & \sreq{A}{F}{1.2} \\ \hline + \multirow{2}{*}{VE\_2020-01-10\_9.1} & \req{A}{F}{12} \\ & \sreq{B}{F}{12.1} \\ \hline - Verbale \#9 VE-9.2 & \sreq{B}{F}{8.6} \\ \hline - Verbale \#9 VE-9.3 & \req{A}{F}{48} \\ \hline \pagebreak - \multirow{6}{*}{Verbale \#9 VE-9.4} & \req{A}{F}{51} \\ + VE\_2020-01-10\_9.2 & \sreq{B}{F}{8.6} \\ \hline + VE\_2020-01-10\_9.3 & \req{A}{F}{48} \\ \hline + \multirow{6}{*}{VE\_2020-01-10\_9.4} & \req{A}{F}{51} \\ & \req{A}{F}{52} \\ & \req{A}{F}{54} \\ & \req{A}{F}{57} \\ & \req{A}{F}{59} \\ & \req{A}{F}{62} \\ \hline - Verbale \#9 VE-9.6 & \req{A}{P}{1} \\ \hline - Verbale \#9 VE-9.7 & \req{A}{P}{1} \\ \hline - Verbale \#9 VE-9.8 & \req{A}{P}{2} \\ \hline + VE\_2020-01-10\_9.6 & \req{A}{P}{1} \\ \hline + VE\_2020-01-10\_9.7 & \req{A}{P}{1} \\ \hline + VE\_2020-01-10\_9.8 & \req{A}{P}{2} \\ \hline \caption{Tracciamento fonti-requisiti} \end{longtable} \end{center} From 03a517cb3252f169160996082055e43585f050bb Mon Sep 17 00:00:00 2001 From: Alessandro Date: Thu, 30 Jan 2020 20:07:43 +0100 Subject: [PATCH 11/26] Aggiunto diagramma uc6.5 --- .../analisi_requisiti/res/images/uc6.5.png | Bin 54110 -> 54100 bytes .../res/sections/Sez3-CasiDUso/uc6.tex | 7 +++++++ 2 files changed, 7 insertions(+) diff --git a/esterni/analisi_requisiti/res/images/uc6.5.png b/esterni/analisi_requisiti/res/images/uc6.5.png index ceda5c1ac06b2cbba1b73ecf2f6c82860a7fa4ca..01696961b5b8d45ccb94947daf939349bc348dc2 100644 GIT binary patch literal 54100 zcmeFZc{tSn`#;JU*^050U1KXPmN5(pG4_4m%RbhzZ)1=pTSzLQl6I{^%D(SOw1_D} zk&3d5P@Vhby?j33-}#;EoaKquXJi zuWd<3hw6c!BIa%IPW?%>Yw(9Y%ud=wDm>Fec7^8D*#c{zDGX*rxUUd|e)B8k_O zQ-oiNiZTQhoa0~DyLpoW|8C19i0VrwyGhFHD$2+~Q&J{w9=?I$L18|Ucp|(u2n;8Y z;V--mzs;=Rmp%O81C8^6(ErzGO=Z4f72OgfHOmGIBBs@RpUEms_as|7Zdk8!6n)`|n}9P@~-p zTs#$Q?Uaq}n$RY4P2}ILZOsl&UWOn8?;;OTnkc9o)k>6!?}4F*abvK1z39;dPP!*u!6dV zfjUZ7jucyRu)Rl^oTfJ(A3)XC(l!Y)w)Ql~nJSprE88k6SeSYnnuYl&5hEx%nt>4! zK@k+kFfDI=8)GYZ2Q9}S8-oxJ8*@_=a~p5J@JQ1DD??uke3-w1znLA$$~YoaD?rb~ z(bvw_)F;T^I|ObU5@oAQunGv!B03T*$Rq;=iklp=Xu%2r9=a+97DOX^Wix^vHNqC} zXlbi&=`U}fB(F~~G!OGIw8z=%DC;Ze1S=R)?X088glMvlUT7G>*jq)36zCCY=O_V_=m&Ta zls!Cb{Osj$ga9{xvYe)Zy_JuTO0aRL7tWNZtm#G8^CY|JfF~mR8>I(#<|FNRKLSscTQB5De^0ElpL7sfsFY zW^$(TDsDtuk}t)^(my0B)WF*uZ>nr)Z4hRwr|qt%;uoQ>MG186pjMcXb)=^yj5AU*Jlw>K zWN2e-tK(+s?Gxe?j#rG(wX;+v*ctdbl5GS0qkX)!Nwy9aVJZfu&_(!?b|le9ks3tS zj0!QuyPNogfc-_7>NwcCDeFaBS=gCG8@d}S;mPtA1f@`%iFvrcv8gt}-^5Zr+Ji*Y zCHooq>Fb%;1erQ&>)8?YLoLjG75v=n<&_P{@;2Ib4(22S`>0?=1?vzyBWw9k11&|8 zRj_=JrW{4iS|70i)9`Ss2uiSVxUHuyB^o;AV?tH5SN0$hjRFn5E#!!HI$ma0N}ASW zQwsxKoV>rTK3pW{O%3wb3N#>Sf|n!e2Sk$$jNL55?c6DzKH+xItevBYo*~{h$j;ly zlcZ;;8)!zf^Vc`@aJM0btN0mHy>&x0tG{oZ|e{}{YYzje-kT$ zHDW*TphOxXi)pXtsTg4CZ=`P)Wv*hYplcSQs~v1h(lszrG&Yu#*N%(|4AHbua!}DT zcZiTTF%2Ra`dJ3c=__jMTj@Did&>nAG2W*26tNC_kb*aW-#o0%F@LrBV@zJ3G~3o}h` zogfQXY-lV%FWN`bOv_sv3`19ws3+%OV~A{W6?1uQGd;YUqF0w6E^YiiWhA<2+i|A_;W$h!csp6rnU>$(>_r+_6>Dz}W`2`rkQ+rFCJXzb{$I^>r6GDhK zi@;%Oo7!RrKnx6-7e)1WiZ*0iS3f4j_5pSAM4 ztEu}q*&#!l_z^2=lq>CdO5)kh>w*!_LQ{^O*WYIuYIXOU(cAp9m=Bhr7I_}~jPl41 zk33I({uA4{`X@^ztgn#Nr`q4Ey7aTb*~6>oQ&oNZn2P$+<+-^HBkuwod$Rb85+|kM zX|E0m4b;DnADq=s8}B((=#0OQ8hhfrcmaJqPh)Phf%J`5ZgKcHdm&ms0j-aH#N7P$ zg8HM{-qEvkEII!^67XoL+{+(&ZIO%qd5C4vrGzG%@YNap=Qa}K+v!c#%&+wbmEiG&%^$--q2J#r#^!Szy4WXQ-!{un+kM== zD0b1ncdW5N^#{%4QRH{W{AXUqxY~vYn@Q%a%6$xcC_t zz34gjn!aJQHsbzc{~=S6xMd5?CP76%36IV!PUe`pXM#cXqGui-_&8JAB=h`|(vU0< zWwgxggp2lA{GW!$J}+D6qQ|)JHjJ(wZ`}LWkQ03*U=(Jvz5vkSAr- zFZLXGM1CuO;YfU=>hcS%brBISN`6S-($w=;_iPT-gnr7{E=cIDGK~Av!RyjpQZ>5& zmQnto-Wf3+t_GP~OdsCQzPX=2aK}Qc@%OraoW}OP%ZKgMH@;Qm+H%iFV7~B$N#x$Q zEA4r8%jnbhst+{+SL8`O-Sw?mJQVp&>H^-Io%Oo!>tcfsttp>&|5;1BX_Rj|Q~&4p#;vHi(a_lu zmAF5fOZ`UQ-#uX*U5fv`bj9+4Judq5DdkMlrn3W!|5_)IIj7av^^1H#}k>_og^l_n4d0xeSIH8{djV(b%K`i?OWJA{BdR4 zk8F6gh3XrmVt#x(!*OKOyeoL)d)56fIxg$WUvFF&x&D3rLmLWr$ZtR@@s7};@H-jn zcdc&w37-;F8qDENzN|5S-T2=C#N!3&BX2}txmCBO0jFf-#I$X z8)Kt?StgV_sA7FYCq=*Ds+u+zGn?5syuOSTn_ODXXNY~-tk`(V{2Fn(rYc)&^2Ghs zmEWByF$*MgJ$CZtkM)(AC-)Tn2k)#^O@G4w?e(-75(Q;CeE3S9b^1h;DoD?!qC7Dd zj{I6am*L9nnSO}*;AZ>WG3X4_5`*eaHwtJsenPQkrJ>>&TyY_?xVO6GEs-`>fALBW9XXo&$9^YKhn|tkkii1hC_JHjJDF`QLj{IKJ zYV#WZ*+sFKFI4omjXM>;OV;^;n_T?H@Yu3_>URFgFE4KtEj7x{OVWvK;Jy347p}HDd;BszJqo z7B&mt=*ygKSyu)*L&v3aMN=_D*5m;am7(VClz_5Je) zuc*b?dgPYWa>eKhReVzEie{#HbY({;H_WN|+&8^^XgZ}!sEvEh>8t>+JB{=8cJ=f$ z-3?~R7TFz7pH~GP9*l`?Spx_D^-N{L{Dr>|h&!{Ku1eNz)=?wMVK7pUUl&HX95Dy& z6;e^BWr*B42B=o%q#bWD!6Fyf$2E1S%E^)%;o?TywD%_~5m~TF=H^NtDWW+Tu7nQf zd2H+9ug6{xhz#@dr^0?TvX>4&_Pv2?N-s~*<96Sf$?+j^W!I0vxcTGm_4BD(^P2TX zR!73tb?7IOm@2LBTE4SOme82jN){dEEpki_($M~xD9dB3x$9)?&&99T)r8V$+VKx$ z83!X8`_oHPHT3uxM0}VQ8X6f3n|Z&B6|Vw*m~YS?)AGC#mz|@1iw)uGA4u&GBv^}{e86V^EfsaA~p^$^*={xg4(ap!5i4 zOV6(w_6&>qS}%w+Ee)r)LS+dY*LU7scmTVP)t)iny8VjB(fKK{AMd!{jE3|M#*OyR z7kc1CchRodA8aUX@%OyAHhIo$U?VHKC7=kN#yXtuKH0t!>M(gn*^xQoA%=%4m)i^yLCdPh%HLp|7 zQ?cj&U?)+&Y%MSSj-0od5B(cvGV>>f7b`t$I()$MeW+Pmcb@CXtB)t7D%hWWBWR5)v5}}sO^aB&&)p?``tWQTpRs}FSP9Mdz-Gs)dh-6OrpYY{(!2Uw zxC?1sxN6>|1X)JR^t{{+mvj}gd(D@!em3*oa?Q=nI#BZ6wQ-)2-NB)(JLezhD|V7j zK}fBKQ{DsPX0S6|XRg|1%%3yguY+!*Xz4h|LSEtRHyi7@^{H}|s@?l)L_8AhMyi^{ zze?L$4V$G;v`?=DbZw}u&%Q5SRhdzIHQsV*?12M*$5)MF7D~deok6m)$;U&*_*d+k zuxt16Pr9t+9}WzDjZxE*i9I>5wiWR-ZgO5V&wkAB5#N?gSGirUfZ^4A3)}DC8*?%8 zXOoY43r}OTWQ0)9z5a4wWJ!%{GZk!V9+TE9shY6wAO;arEZ-J#&A- zUS>sl)=%dBbi;e;^D(a7DMowFw*8e=%tJ=-|3ab=90*42Z4&&bvflbh8(XvXlQiol1v+onSs^bLQVnj*g`|jV|R;%+y)& z|4yfv#bB!c|8D*>q2vGmZ2rHt&FX#W5#{^;+KtTE;FW0`m6#t73J*ugJn!cV%ob9S z@a`-0J>FM<^FY7w;5A4McW(X%z5 zm*b3$v)USroWd}(^8ynV6<*KL=Pw_LcWz>~cVSiEoY#trUtjjUYkl{u^?h5Dd$uL} z0UhU~7+EE%uP|*52m?Dm(R@M;@i60bi2&8R@7dh4OGoX=6B|8RQY0{LVj=VNdkGW*qBlZ z%cGC&05@WlmBEY9Hwg{shsWxQuLl9OlGFvs?i(xCmQ_f7?tNC!O5Oe=QmoZ4O|QYN zEp=UEs0C9L8Cyg7^K12%RvNqI!=oy`FRmu4V;?`2Yu$6xD`|qs<3CUxrC|xQA|s-ZkU`z(^lVD9kXS-Tl9}2{uDZ;z+M5>? zr=DNh8&toLsv%Y7`&!qrDo|P{gD2#U9yt{zwvYv~fTeF`LC|eZ6S~X=NOz^r?KR62 zJ{+n4EKiz5D|54~iwx*|n%dI)k&TroH?Kj)tMnppF<@7KioBVp-|8qw_=K^QE}?6HnaUZX4Oag$YJ$6v3oc6T;+cz#e?Dd6ti zF_`Q6P|myHaIfeTS6B}bHennr_>G`G6?fRig3L#2LUq)-y1!=fkVwz+&R>cD?V#2J z#1(H~Kbax?(!KVhZhiCqbW@nHlPVn}ABX6B71>yFG{PZBXJ6*fi74e8IN z)m%~VJ^KztP6Bk+9EUDgX^ji(;e-fE({^2*eZP*6J$kgzt5ic5O%ZUoevYn^%cX(( zq*Gpe%#TcdkR_yIX_za;d09i*k1JS|o|=11`K}NbOh+&aWLTQp*oCB!4J@GO$DAx5 z`rT53DL+hNaGPL)bn_lp!7@%7D>)VJj9moN(EBYEiU!jla5WFUn&)vpmm}>|so!+` zS9QtbQ}yCc{K$&z!wILFZC&wY!nMIuKilhJ+-$Ud7||)-un3z7lU(>fGQ7Ieo1L z+d}a{35-aYF)Vq(s}N8(V%-51!yk?uNtuQM*+hGepQOx>+P?U^|4t9m)3c%?IB_cdgHMDP%o3d zp@E#cpJ1BLDsWOg(gDARCXg1Qv{o+EzFsA0NF$=N9!pTy!LJjqe^43;y;%@ zSCuQ;nxI%%nx|Z2$}}nYZs(8`?}Hx1kIkuMH8FawvNO%V*51^~+;w)ZnF!)=JfEKJ z=p3|HWLeuwH+*78>n^u*WhThF&x---bzW*21>%pUPv^k&?uq~HR?k;A4MJa=94&Se z5463ELX~OK#MVB~8S6DFOB8!0`Ey z1b3Uxpe9UVC0gcaH8x8G7i2 z0#bA+-~ z-X+Rc=0=l8{GJa&?W7)dl7uC^&|DodaZ@7^h4As0oZMF=Tsi1zGGxBWUc^KMU`nrj z=(9z(jzq%u1eciaiu~%a)u&3z{J6@l&>`1JKm6|fe3w2J2iKmo_<(~RrSFk*YenBZ zTJy*n`0ndnocH=XCNjY{beDT{5#KOYZu~*Jwv~}+3ecZ~C0OXo-hI2aZsN+9+8O!d z`|wbwtyt-Fng~_DDE{|Pitt!NOclbe1J7LCWmc#xdRlcceX{q06@oabMydA)9v*XI z7g8Rt2?DC~Rk?>=4bbo;2!T*zk?dEQ>41_8666;|X!>m~Z=d+*50tu$jeWgygxyKE zUY>jjai?xinIt2ie!vj;*;VKYF1TUNJCv#SKZ z?vQb+GzLPp^zQO(?Tn1D>Dx!7Pv^|kEpV|=XW+-VCqre1hyXG*7ogEqj&D+uuC-a6 zy8Maya2r+tFED{&-nx7@hY9P?WOS zIPB0xD9Xsa)}i|{@$sWV8<9*V*Vi4ezH`-GMK4?Ek$1mH!!~D9vgdfwwjBcPbs|C7 zTtKZ4aUW^f(LlMMELPSk8fRqN)eR*Xu7MVY1r{vBHnJe04+(if5H>&CS4eJcZZfS* zlXcfYDG2>_&!uZh*P*!OPY$&dKVhz0tph;k77$tjOR53y9;2%?q;53dI9lSU`1ReB z`}GT*f-Daw5_7o|Oxh~lCXgN1$2mTCtgqb5XloVi>mo~d$bxemwZ0- zpi5(HC{$tY?Oj_Pi|3uAd_?Hx-@oSK+1$^TFX({BT~XVgaq{FDFdC>`9Q*iYW1(xe z5wOk@PL*V;kmxSJ!DsE9qa{ZpV$U5yl?Bk0cR4-+?*>&vk$>uoOw42m5gs1GKKnmj zlsZ=XIN@}Z<`?ZE)#w4MlR0b$zbrjB#X+fz|H$$B$>*2skT?dYc*#2CnRL~cB-Q@J zKk>MjALL^^KEi2C0;?4_PtkpBjQcDXptu+a+iVgx@?O34&#-aCQk(ma{5cpk78ljN zJoGeM42^O)2*7#fsn5dn{Zc<4^m^hq9;kAiqi5LGeNoYWSs;BXk%7suD)7BT-1;(j zV(yjg;$4e?#7U4eyec*k6yB!V3AM+8p-f)c!GYlP+d6ley|2VgofKScG?kq?vTqOF zaO$ZFWY7>5-l`0ePj30RGiK|JnJb?(peTbIH2WM4LIP7;-AgWM{YqB3GG)~z2nV)jn9_W(SDNK1~bu`?@Tr5 zD^wA;r(>pPH(MV2{X?mwZR3!d>+cgs`wl+kP6%l0bbu&YD4x@|dG{25Z@}aZv+b(N zh(-M1?mjD-i7npMfAA!CLbZVQLq*P9pYV~5t%SI}iOMzbR|-0vqPSDq}eZ_T_$TL{i2G?y~^20gFFc}dQmW7C@4 zVEQ!7uT<~y-G;6x)LE`Q)r7lC2A7SVHAKF-^iKU4z*KqfzN}&UO^imL`%RM3Jz(uM zUN`@&o60^sJ0G=wG=$kVZ=CZ#Ljf8_$iLE)t2vbsAs62)?&G{ZI&{<4wRn0j$BuisZ&9^m_4t*&C`qj6%=L{vN>Cll}|ep$>D-<V6S9iQxrT80{qx^_1!u3Z}}&Hs82DCTD?Iw1h(f(C3y z5@ce8s>P=1eDIx6ku*1xUt|PF=d625K$2F%{%P{*xmT3|P9|-UkVigyM0)l+>c&tL z=6O)VN?yip=BuJwsb7)|$x|UvTIcLW~t z&R>hqWQ~y2FGdH-tBR$#zFRk4^tEgos1ZB=&|Y%XEyS&VyO3Zmj$D)_qxtZN2X91?~fK zDHq(Rc@s~ZN}bi(MnY)?pa*bc)o(kROoB3DmmFh-Tjz!8CtleR;&u;@c0yrqN7%4; z+sM>g3V7+P3h#b_sldo}KD<|!o6I4_BFaaWhOS;CGUUUr)*!Xt9+r4Nu?goTmAddk zi-Z6C0Xu?m&=a=|qscC%-W|GGr;q%m$%W1NHQZ@-X?nc)=g;TOpG(xHeL1HfukMj! zEUqMVcKiLYsQM|Xx$)~$zKZ|=;Gx4Mkx>677ogr)rPZ9c5-P8>`{hjU4ukLqe3!n8 z4hKhM!d>C&z(IW+6 zr>Ae^>~Q+YlQ<9q{E>LdNygdsE&v^pb@QFci)caif6Wl{qKUpwVP``L`1ryY)=$aC z6bWT??{kIi>7w{NyzVw z`EM}Slr4q?jWr$v*tViJU*RlHObQV{&rj4h zpBJb@iGBOneMUTq=5-&d&=xZ?7}6ehMLC4%?%}~0hhwa8ZOfgkj$Un97Mh`zrx1ul zV~!`Op{`xlS>h_$1zPtdh8{*-7Va&>AHVETE9^F|g^yHq8=?%T?MORRqBe(gWhmwNHkk#(ja(bQd^7n&P@8mTGL-L8u!MVtytwPT^W;``S{MJ3?D+L)zgpN-)`}$|X!JoV7t`6EBeTN~Z=;qN z*Xdfezx;mrGCFerc$30_Dbtk!t+b`AWi#wj#X6Z8(H*qS0UMTqnzukUBuk!8PlLO9CenSsS4%@gV3X6CN zJu1L;>=*k$AMobhd4!7`+kGfpYP4ZqM$Dw}iALb!j~Uw)}K&Da@u z@k5hAuq0m_BODccU^GI|6jR3wrk+s=^E$SimO_$B&+oXd z#$&Z9Fttau*1V5rVEx@PMF1j5(O_nO#)`%-sq~5tclCDJOKRo`iD?%#F$TKM#U zfk)8Fsh_96J{|O+%$2$fKA}{CjNwYAPI~&%chK=Te|#S=q>&}RtN+?sWv2QBmFKnA zL)H0r%UHo;bH!dc)?=}&%?uor>JRlcy^q6cX`Gq6%fE24t(${KQ<;Zdw!_)4g{XB< zUqLD5Wk*5*2Y#|uuFZBkeni|Ldu?M!q^-fdV>1GWi`<@-`9khb@69qEq;W{$YZ>A6 zy{U0d&4WVEcA(bwo%4!1!Q{etg-$g^(kPE-vp&%KkaSpiK|$uK0vT0jDt3IZ4k4t} z%Jmbcf~?rv54Q=P>Td^i;P<$g3}5cN1h&*3-kK(EaPnZj|VELU2G{G z`J_l?BLxO?zI#e|{o4Sz7REpMWe6fRqPudqQ|j=uLd3+C0dAFa-*k=IwmmI%!Uu03 zoVMoQ?og4OO-JS>YjEgF32$Q1n2WY6ySO}8-r*?S_QLZuh$ zXckgwfzECfWyfe`LHcH2s2zC**mXz)^u`Lq+9fcGXurV+`)J4ch9xUG72n(0vpG}&Bj`g8v4>)VH42wZ|PC3nJqQ5Kl^laW3ft%HzR=wrX2 zd&AvoPwD|)jKH(cy`M@NG(>hT8`7v-`o`g zIP4RW6kGeTD?Ht!k9~vAnc^U@I;A{EQl;b~;K;swPEZ4A8l0d3X;!=8lL)BCFgbd1 zOXP&2$_#EMo;cNNi@^F;gixdOGQ<%C znZ*{}1ocZH^{|#AxC_m=d1Q|xhz9Yvstdcq>PRiK!NB<$Zm~^du1Xd`5;FS;w*7$T z{l)@Ym;wFB^QqX<=YBi4q${=MB{(*g`ctAZg2Kpi4}vqD!)r4#u&tFdqG4Pew9S{po{vO zmt`DII#mv9qs2ZMk%OjZzFb|cywCCRom^QL=XhdM?9WiHsCjDzt^^Zo zJ&J&GN_=iEp?5N00Wo!?}{%>6^IhgfpF3AbKm7#Aj+#X_lIDOew*E$V2sWR%@S*S=BrTt9+z8}X3B6gU9MXEtxs1P#*_9oa zUtrZMJ;fLH{)Qe$%Lu{}R9}L^e%HrL+yCT zR4@MpwU|n(1R|406o0C}*Cvqa)bFEncB zGdZ(EOn- z?GwnEUkUSm(0m9wT(2^XU2J3?#5goiyXbwCSxK3xCjAhkS}djZdbWzcG#ZE06kHkC z&Oi$A)MZ|_KD4rHz#Lm4NVy?6NiOtTL6z5Y0a87blvTpNzSaNQed~&DEX*rQJ|tz2*4C?_$RGuig7??zPjV zJiT^pFaHvVRCtkWF!z9+X;WThoMBle9xrY+CE(=BJlkWu-yG*aBm$=Aa)61E4-yNyenk7ZRoN z_gU!z5?@IiqJTTRd9x?IW(p?%QQSskTzf|ciwK3|+IF+Us&i|oM6x&|D^GesNcjzz zXYj7Xw}~~^%uSgu5LHCEMMM)dn2$CcKL(WbXU@}@Y)lRaJI@xXg!NpG8olu4hHFbw zQooz>&IbpMgifY^dtayYvg>Vy_bpKG70EKJxhKe?VVce@f31D%{;{Ff>Tzy*RYt|Rzm zAiTT+amD{UOhFS7nV~QYdlKyMuSdERcrs4KW8V(`w*<)wDIbVEk3`z~=OG4z3)ME^ zJ^Vk8e(=EFzO7#&{GS%Vq{Se<{(s(0B^~Raw+>tPNmSrQn3qCOqQdEg{3-A7J;0uy zg$lXC5pO6@Jcoo388yZj2G?@)Y3*$jQk@CZew+ zb7F0x!~}CPz6XVA$FxEnDj&jL{}L!BtVgJseGsi<&^}Opl?0%nsfDB?PxED6E>7eB zZ}lbI)KTNDNXq(2Vtk$lS)pX^MC1SfQ0%ftHs?=(<1-}$j!3~Viv{K`I6=@8)~|MZ z&cofk_3q5mAB?TS&K|0OUoVWW1NNHXrJpfsfp~al&g_c1G^j()g6zWppwcbs%CzNG zjYRb7(w1xtO@x{x#;<?Mrz&;>fnzPotO@#x_`9H3WhF7yaxLz` zZsMF(>)DbQVZ1AuZM1TaTTm;rtPXa&Ygbw{o~c#h_(TGjsL`rGP@5bz)wcgWe@BT-GvEE?5MS%-Y+2s9 zraz70UtVZJ@Y%aVK;Z>bGJ#*0CQ(r*fgz&4_EyV@Cx5SN{2KVamZe_kpc3==UfYZB zcZkI9e2+FQQiT&%2hTv2^((&q8YTi0&#bAjDQh&2mT_r32zbMya&0kDC&hIbDEzoS zsDqE6UowS`+HohO-Y~C>&e)gBjVd-b?M~Lap4p7>`@c7TuCGBo;}-Bn`$q(n0w3UN zU+T2IeJLi`ZRZkq%f;CC;n96N_gm-el6L%Z!{_DozQ|N0k4aYC3J1w6Jmq0vvw@<) z|JO>B4(Yb-8zHXc<5p&Bw@yP5#nb41bh{>=7pXbzF)KQFIPzN#oOkIdb8EW^Y;o4P9SoP6d3lmu#}jE@lmZZI z?E}Iu52CP9SGMq{@-C4H_hz|*17Pw*orJf;S~^AF!3S06(OFij{hU0PB-8}{G*3Nl zy*sGsSMkiwoKuOJPg{egaeE5{AM9%Zv4~t$fmW~NR4xKI|C3!oO%PKJN0zABXI}H} z>*>jpK5*pEW(74D=3Hi^=Ct5CTUdF=|S5@HAt2iYT z){g+WKm^DYxnySpklTYw_Z5btV7Uh!EW>^vCoIBtE5Xs0JHuMT197&O3{l;KC;lTf zabqZBgpSZhfiyGnbA6~aEFXc(zA?7u_x2+pAGLvr&MuC=Z(n}>l=P$NV6lW6UFs18 z0gCdMu^?Yu<#ZinTYbJy47NHO?_vXrpL5*T^Q0+?W*7^wRNz@w?EUic za-{mX&*HjvIO@Y4gXR=SDk4AJ4AqDGwnzqlXl3MA4!&w#>U_*^;11YB_Y1`uST@)cn*d*ELA z8)X2>2ug2`+|plM($FW$eysd{?pKq@xg&q-r6A~@zaBLrR!+*)AsB24P;AhqP)Jsz zF6V$Y{Yz2_xTIRYSfMO6G!!H6T)>slN|7>dz&nNKIW60ze$0E7NVqD|>#6m)#MPMA z9#OR1lfB^>*)E*xq1Qi+ADvL{LvU`6#vK;dYlCX5BjPD+ym^q(u<3-}@s?P8mj=Ca z)hd&u@gQ~hNzUN*8?oQtMMQ5r@1NZK`RvtolJGuzsd$v79{V2||DjC@C#AVFyv}6r z*`uHCq?*0hEdu^0T^$7#@!QMOZ;U{jaEt9RCJ6KriCj?CyT5(6`q3(xxq-XqQr)uz z6ni!$6=Sa2EULo-rm-kr*A+b*RJ-q->JQ2S#>CE@!uUbfGrZ-O%iuHLbzNb0?^TA~nm zQ9k7I#oB0T#OKYl5g&x!~P@7rzc~sl>33IhS35@Z)(Jso{0`Bv&)9 zJWU8m?43Lj62J^q$x6DJP`5G|OMgme^}}(*^0}A^iQq7%Q3no=ZomOLiTK~iY*{DX z@0k&&58BG`$(T_RO#)fcHO?{{DRHyVse>0#0*bS3zmSX^3GF~`oCRm954B%UND<+n zVxFsQe=QH|!XC#sqscpaXvUL^x0;Vzw#HRo0Urc2tMlKQ8LvFy;e228 z{h0?{x6lYtkWQlQA#ZuBSZ3P(-13RhmpAsJ1f>7%z(G{^nXD_dw~a5jPxwt{EI*1@=4cLRKUgc- zLADq!Z?~ktlAK3J=BZ@8l=6Lxk;zN=PULTk`Op!$IOJmI`J)~5c`fVfd3-cw)p7t?Q(s#~4eF*IXz^w~2g_P5fI z!sDJYS6$t!@_1Xzph2?<8dgypU`l?8Q&p|6y^s+Ph7ZUUB-Me^h&UYA%Sz%5OGi{z zLYzH=FGQ0Tnvn)QU#)e#x@#mJU2Q;;8L7Z7ATuw8{=GgU8~x+0_lh@YMZ%bFnc5Oj zra<3`p&1DEzOVNb%ZIb70vO(n%1(A(dwlmgZBc0A!dvNBmIXK;q2b7q1+qg{9w{s! z7ejxW`YUK6k*<x2+SfZUn}k`s~?tC$0&N-VDb3VFK4+y94(=atZn`ncgz zF5W8H@uL2V3jrFdot?YR$&==ozc`OV+!%L8rMmf$_onD80oM;Y zJfcjuXM!lzu)j!cLU;y_F<#|p{M5#ABo{PYM02KT07(}rzsDR?Xqp?YDpdsxu-J?5 z*9X1Ub$-S!Q&cwhRlT<%ljIzTtEMQB$&`5Z7eQbeFV-0?TwweNC~-6m-DN(Xr3Wm_ z^Ml%YBtRPLR!1JCG}mo{lwmqT8FJ>ZPs0r{Q3w$NS(0vl^q-2b&!#P^*p3S;-B*q@ ztxB#_;V}DRE1Rr79FD#TzHM`A;WPeo@#6sxA?rkyK3Y|z{8|}uc?LANY*6FR;-Ys|L063TyV*(8{r$fH zE)h(&ZRZ=0@f~PN16>X9+JY+wnL%730ZPbokKgWs?v!lltdC6KU+YZcx;i?1Q&VU( z8b!(Oj=5$>DDZADiE7jx^*w-=32n0<2e^giwk_>QUW8OxQCH}iAc%aFl+LX`Ta`z! z04u35L2m=mp+hxvPjxnvc10CdoALjlTF3~bA?JknlI2^aGj>Vu2MvMU88(ixphRqBEcuRyT*6(#$fSfzR|72@i)RHZn z*^ku!v57ZX9vrK)<-H;qXA@qelQj?V{Ns*MLzO&P7xkK@zQb?0H-S{lj8a_yo?g_R zF1^5$k^+q2-8l;j(9O#%&j2i~ry}PBpXP|3@O+kMa{3R*%H;hA4@Q4FZ};(7ni6x9 z&(OomG73P{?v4m?OUk5Zurwd$5WGEfd7CDPnZP#xmDbQ&wwIS5WMRpbIp!EeSyDgo z;-qTy;vHTQQC{ZwH3&}ivS&c?=#!TTDl|hlm43^<+`VY2Y9urhG-o|aqtw6kL=A|Z zXd@5GSTn?ymJ>|(>9n`8?*dica9Icv^gcsQez@zRG=P4Z@i>&`^6KUqho@}CDyYdC z*i1%wljd_-Lr^`xm#XWk-EEpUK(^OMsHBE%*ZD)*A;bcu@!ANqJ_GnHp=TSbb3nNi z>jSdjVg6fHglPu;@CC&&nKc$1Uy(3ZLn(6n{3awNwHiCF#{nY<9-zrbcyq5P{r{#4 zO5j!o#%k|a>2njEqbq>ma)CECgnt>KD1pLtrW+K2OxpY4?zrVM*oh7X4%MqeSdyS+ z+sc=hTBScfANh0l8Ydj4JWb8x%y3INW?ZOj!HAQI{dy}ORE78?#stjxytcTWe8y^o zef{biI~M~uaiGfa_$lc1CLjHyd%|A+X*K+Z%lFVw@$FlL)9h#Y!lPSQar5J4 zBiMxGpP~wNg2EpT3~@FW?@YhD@}90Og2ALM0ULORqXzQ$lc`!){cgq{j$JFuaG#u8 zk#73EexI7jIaD~XjSorwL7VL7lNKZ#dxeUk(d~(v9jWCso}QZ$2550tl5PiYdFIdg zbD|&LiCuGbV>60HLG3j=K4DHD%ZvtMQw*RzJJDpe+PM}VC;S$x1~ z=0$m8CrEoOKOIbEj2SoxnhG^@2F7F4G!I-147EdSf7&mAMgAv>nR~7 zDolwUj!aDdTa}uA zKqcUjtB)6j~yV^U_ z**Zq~-|msCaIEJMaLHF6BZTX7eAXenSMQyg6i%l<<0m-$eqkbznj0%`dOpa3B=#?t zMKcjLq(GSSIPkrrRp~VpdEhU75VqX|v}TAz$w$zB*%1^o-}N9|cmgRy6^c+_>=v(8 z>4qW8bf2uJuK20tzdA13;RNw0qRwv;=Uf}^`)Jjpf-UO^@E5PDLp)l%#H13Jx!(#F z#r<%2-UVD`oQcEj^OFAudv6()RkwzX0-|(?gmepvASfx)(gLCq(jC&>ol1y+bci%a zcY}z8fJnD=mkJ07_}$BQzk9#?`*D7q^XH5`1_Q@oW}@=y)Mtn^$GIRs)Vz~>H*}p%km4yitocn7-ZHbM z@=CsbMK5uweR^_&vmGrQ25iceNawWrzMz2M>sRsajAZCrPgo|*lYSK3ZOmNl)2eYl zgXOwOf?FWoovc>QpgjE-I_<=L?h$n!srozWxde~RD08BCd#^r0DD~@f5rFoSuT&37 z0dj<^Ws%d){h-Y{K}WKkIJC>hhWpvDj4rg$#ABOBXWt!XJ@t1|OcOGgK7#BO@6K?0 z?RNDP?$8zMqlT}&EtUy_?c^&vo_DKZ!9~8Z0;^$QHoxw3ddvrrIo<=XUankt_dFe3 zQM*1rXI$`p$VVtwJyXdv{ha2G#h*MSL}&f%Jx(rg z0Wv4t9=?p*^9H0Y`jF+)&-nwpFzOQ&8`zppbTY&*wofnj5A{O|O!&q~;iiW?YjOr< z@cK6u)E8G)Nc%Ki)-@!pHYv?6aT1980hF?I~ANZ<+;IvW!Ku#8@S` zlN-LS3t);56&94lY{cg>{J4l-vTnuGTa<}+C)r=$TFoi}hx9D+)5gn=(dnrB7tf$% zys%*kxhEq3w#fP_|H?LJ<>o6)( zT%5l&?oV+sgK)eG@1j0o_W{mW;(`)_CggN#J@{Oe;QzFg{CUf-%SpcM`Ik5R{2vkx zeJaqrkz1WE<6weqkguE>JR0OfnC9=_5iL8COP2UM;jJ>lT+({(`31kM1bHFfB8mfX zpq9Er1;D>Xb<7_xl&$3Cs)Mj?^tn&z^A|imt}mS*Mq8-el4}?FqZ4|Lyn_O0^jCV0 zE(96~3Gx|LBUQHv+KSTJZS%n_Zi35Pt>8fTIedYh4-#hjhAiC!o!In0Fe5n$w1jeq zJZROuky9wrz};17jIJr3{5^drA3$Z53G*O&c<|Y=@z>rZG}0-%bU~MX2mG))x>@B@ ztZS8tS}nFBfd|l)vdY>*SGR|9U%qhn`I$Uxc??zNMP0gwoN;5iKH4>PidG_J?NsG_ zbMk>I4_>}&eqcR4dN7A*PD0n8k`7T89|!dj;u}X=JlJgt`2_{;a-wP47tJ#}`EZQp z*tt(wZPAD&hfvJCAJ{6|+5g|%E)p}Hxv+N-hr@46Xr)Lo>$7iWH5 zJ&y5al8F(5SDtJJuNHg!6o+msWB;S8+cchDU^jb}PZiT0kC+M+;0W&r#O zbljdCxg!PbP*#(6p75>Bf7p%i%mlY;)%DrQ^Cuoqn5z+#lV8iAG1+I!UcBT`*<{#> z-CPJes!X(!%bl)fPDBPPD1J;U;sP#SD z5MxRXg~DYEy*7$19&kEPNQVb$gla;`{0-2nOq}xvx3Zgs-S_j-K7q`Q!?m4qC??-2 zLFY+(Z;D=m`3mmMQ}L$emw-*1r*M#tWgv@CvbT^ab2X>-@IyPpC}~-RDwhMV1?@NC zeD9}Yi*ArIQh)VwS)Y2WSykfjnMuLD3yZC;Wu>2c_ur^o8dQ2bN0FoUbW=Pv2XnYA zQ{3mk+)(E?vSRC5j?=XMQr~-v!=03C$|NE5kYu`)pNRQ7GLn8I{q$IGC^9I`3S zrU{MopZ6AhTbvITxKA%=1}h+IU{K^xa8M_4|5g`N1zxxj*H!=BY36F?qiQX#iE5|x za5tM`T#tt2;~|xB!!z3gde`fvMI0bi0+sCJ-H`}J@Yc66`(9l@LZ(32Hk6`>Bhtbs zOqPK$`gv2;=JMU(DAZGOo}f%8{xsRtV z?Y*Zv9FL!9)YN^uGPp&~X54wGYdrTRGR?JQsezVU4N;b|{G}{CLf^aS1ds+r3&rW= zQ%0~cpk(lNwM6`uM@G~XX5Y`LnOr@pTK0vbRSOaOUq*k+&wX}Xc2z$@Y@&GRgf3xQ z=xtrTuY#@jREaPX{!7=?8F*X#X56hQ*3Un^Z~Bd0#nH6&>?l{DcyXD6*zz@uSqkV; z8@T!H!0TjBFivyxMs}Q`N6Di91HbTP6eqXq4waD7DsSO8qUvL)&pb;h3RMDgLt|D0cVkpVet^YQ00X%g`7QbaP9=_C+Y6{fI<%20ppKj4EaXlO0B#ZDbck?KJBKB<$q;BfI|^bueD-l z8AKm7B3d}_#iWOWI?iNyWqnTXUxv0;(u|ZOIPB`xlC77xFaMamQ8alC4RI`Ky1T}ckS`Rjnkp`7R4`Dd=|dqfMc)@P_kYp4=E8Q zGwL`U`0cO&wEF|M5%|5qSr%Q0KAYG3$87={(*;DjO2S;OwPiPW$TH{cHQTtoH`S<;w}o-sfuCy)6I#C@Rl6fIovVj?6&MbO!KQskEZ zf>$w<9^ykE5V`lC$G{wQ{qZ#~c?AIJDJ^f47we7NRjJH|W47 zxh2!*1jJe;SVm>(Xi&$AEpgDut1l%Z9SqY4&78Ey`2+K>_K&W{K1QyPW(XY@6bMdJ zdPdZFK)ZOtmo_ho{u$#-X`iofMmgEwPYB7SRZjFzy5GCIFi|JGxM=g&+A;j8E_`+X)E6coR8A~&&f);{xB)@Q6?FuOOGS6R5mpt zBd`AZJX>@FZzXXi8r>=&7fq&y=%do|O{ORcv{G_Q3A{h2_`|8ZY*jGdw(n2r_Yst8 zv}c`EU}KwwpcFy@bg-wgAc2JN9?FgtYiENs;x;7KT~{yFTf+4ha!P4^#VDNxx@#n% z&<(z7HhAJAfBNA8ABO%?G)btZZ4=w#59G4Ph>~%IjEn_N^%_pQsk8=VE`Cd7ximd9 zO0uZyMN4!LQ)S5Dug8|!5n*D3g6xf+5i`79*4My(%oqv1y3&L^vcQP&eNg^ZH%MgJVHpv7g+-Bn7>C!84E1k164X;%s|g+m zz~gcSme@Z}?H!@v@Gp0P$;WYPT-hfWH0p0Hr>YeYkKv4^0YFIhpvVkye{V7m0yfw@rGl zLdc&d_U@c90w)lLtb>y=9m*KLI_a^j(|K9Fmrc^{UAfgu^8~}cf;Hupa$$?fJz=z0B zMDsA0dS1&Ls;d=gFjMkcKHObGQV9Wl`9AzuY2Dk|B~>W5Rd%!2gb^83TIz`pVwS_ z213iJ1FDTqf2>%5Gu0z$gl@1XrNsh!u|Zo2aG{6-gBIJ02+{^~gnrflk z(zj`SWV)Wp;9h)}NJ7DD$qMgXEMRCM+P@j|CC0gIz;@W<3T2f2+5kQ36hHuldWcSe z2`|J8Jjk{QzE3am9`adPX=hmh{O!w>gG_IUWL0 zWC76K*NULvSpr)Pg~%cFc=LBx8~ea0GEd7Uo@*Gj7&uzl%mti(8_s0-Y12K+2ujoQb|Tw zL->JzRnva8pB+|=BM)&>0$Mw0`3ptqSX699um|_&Oy!9KwVC4FB$U3>BFtu}EgGRK zrbzpR<)d$lH_+)Z%T_L=J;pRX?Td(r7{Sn4L=6c@#xAF|0>ca~kp2D`vx^WwFgfog zEkiq4O9GjL3KFZx+#oIkHxz!h^(}^870d9YhpWr)gAyNe?`~uWkD8+{yRG{78cTrH z?mH~8qF|jZ2UhJf{I4g^FFVa?RE9`iMS@5W#2pN(IT>VHuJdH{O7IwKLs8J_-uJ%? z>hHQ8xNl4tP8hj&&rqLRd<=;(-Q+6`ZvW{gX*qh!Vcs9(cLh!0R&fD9VCqv@4jXEknT;jo-bfTLw&jOJdU{WI*4f@?C$FSa z5n(b!U=jL?-p8b*v87VKh(<9%O~+54^)38KY8*|2oDuHQn`t2M%YY=9)E&5oa^ad3J)iNwlHrV~7(am4KZ<@;$b)9}{P1qX$hAv?y z0{a-k66jRW=gjs<3jLa;+n-~tE!}r9SpD`J9Y#A~3vp1*YJG)zW&=tMf}37GE%~wh z$+YQ-jW5aPErA4ovN)NK*}&61CUC&EUPLBd_<0WUzmBgeyDde}wLVJx8Qu@jqjki{ z4qP$+7Ue;k%g|{cu_2qi4%2@f_t$S(P^Bmm5hx*J_1{1D+5FyME`x5U8-kd)OYGm! zy`m)-+|IbEQOT-+bFlI`y=2M&W0DN&ynmhwYBZVc0P3iBDcyd0+8_h7HjMBn+Z+Z; z4lQ45w{6EqCg{UI@N78Nk4T0t_SH&}^h=tg8Y0=5Uk973`IN~4fKqk*plP6||I+mO z^n5;qHV%+=?7_M!t0~nVItHK2w1RKFrRH!XLeQKmfYrLXtVYi zcf!6n`-~}0`Y;@u$i256;J74n`>`*zecWe%yIL*uXj- zi!OKq0(sesj^G7E9|It{%j2LLvv^B%&p=G+(mlX3B%2Qc>% z5-+sCt(vb|lw{4`1R((j@5KovSbwqA(jaA_{ob6|Q;;2b0#52*KW8Pi#r1)Ymr3lr zAN=cDF8&~;Z$ajyXe66;v$(+ssH8__29goV)ssn3o9u5-sks~kpoli{BPIKjGYJq(j`6s?SX^%|Q*#nU2ui5h#3A&#TE-T>~V2(^K_cg{Qa^VH#Vm z`4wd#`BH)#V!hW?K>!)Iw(|_~A4fmUf2pd@`N&}jnEK-k+{L2Ibt*IHfPlWuo7|olA3iG{^(*AL$BDB3 zTpyAyH|e`^WQhIpT}{`07WydVQY$BeDZ+NaaDP`ri_T_F{oiQR-U^kB6`$I}2Q+T%=9-V!_t8H=pwtz%KeLh3PW;T_pD7whoCK^c8>a+3d zaC@kV;XjFEK?9XENaR@KM|ZqWuP%pYz-0Aw>{V7a$EgomXK2lv&XSl>k5H@7!|`$T zwiEJAa`C%fC+MH71_w!IDKDZQOddkRRSBy#h+OE|X0)_nQbJqQ(vhzYKtnBdt9 zxs&hxmV@mA#*XxnBp~qI-tNGV_}{wlm*U18ea~eVYOS%01DGmP5IcRYT@h#qed)l4 zX}0sjhx@~Obkp-~A2T6$8|x&pRPZKE=LKEt(o2_05VfhgdL*GJzcXQ++Fv?TQO7HD zrXlI6z9OhOoDpihk`7W}fWW(R^L;I30Y!i;k=%qoSl^vJ97cjE&ff{-IfOhQth7v^ z(Qemr%>AjB|EPmgP(LBfq`lYBGC|}Ec}{#AXG_sl6RlF6ABf|4g;q?-1JNE-2VF3s zs;mxhw@p0`Q7rid|A~8NR(+}$AUJ)FouNh9gCD@&k2NPG-ohOUu$;E*qzeeL0r%!q-d$>g;~X105#-e}Ax2c1j3Pc& zDr^Mh@GhWY!PaweU5GvWV3u!JtXE;RXEWsKL;z;*KOZ84+; zQ2Z;zt+gzG>Rd1E7M=PN%<8VUfu^78uDIef-gyFDyDa{mh#&)T&*5aks3O=5ZvS;U zZIIAS;wleejQZ)}T?|YnAI$leuy%oL@IMJ|eC5x+ybYSuXBTy;mbPT)ffLH&70u~T zMx;|?FV9Urd|Rc=%JM-R?i1@}Z8}Q%t{&Gu%wOCVgrovBmJ^SF%VB|xY&#KOPAdAr z7>0^Vyj3R)VYiik#+;`qEWkL&*gM1f;+rf{0exDEyE=6$1&$Ct4&}&#nSs(g~$xZsBU6^ zz^_=@a9Npi(c3thutO=2P^jImxPaGrbDNg}w-5@aP#UyxEaEgnqntIEURGj%AFrm5 zWQKe05O=>a#6i43-gvE420kdg*H=g#!s|@1Xi&YK{X1_D^VEH-Xn#k>t4Si%gM~Vj ziL~8)4n(-ugV@nP5i^j!33NI;B*WW2bZHLLy1TP3@JJ)+IO$@tm440BE&N|#h}3oo zb^6SjN{uBV*#8}0#p2cJM257$6V-NSm`WJZP!_&}DTf8rd&8bhm=&TYT!HFypXkEC z@$@gPuJ~=lxHXO@--ESR5o51vU3+^_L=d;hHh{z)7v983BGDZ5)Bj6zo9U%zn8EmO z%`FIE^<>jfL{|)|Z-W8f*ygE>c>KLlzRKE2I||7LY|=(q+HdMLOSz zfg4B`5?H53)lE+CQ&Lj0At(S5v)ui)(5+2g5y8WlG3&?U^*L{sOuF9IGF6 z{H|8N3p|@*u%3Ft$~eX$S)MsW7#GoYNe}1fJNgu2u9}3%!d5c2aePb6YV_n6!S6pSa`%=u z8RFJ_#uw^2?B}z9)odu;|FfF5)X6PZF_oLx5UhpKLLP^rg}76{jwZ0C@}GA_1`U~p z&@6{?(>ue`j&A(F6toM@9c`DWIu7P>$Skps1N03`dH6`You|2z=Xv66kG8-&6R%Lp z2VH`mj?-b~0ba>fPCegnS`i%s0|W5^9Nu*kw7*=IBJAxe(+}Z=X}=l#^Q!pSg#MbO z>lB6uk~qkSYFTvGY=BPNwhH#yxUSpW7*SOAjEKg3{8doV#DKm>+9*lP+u5v7 z@e1Y$+_Q16Y0@?#=)dU4rdFJ1)~5R5Pfi?u*wg2cigP&R0DFe~KGhF<^#q<>)`Y#9 zuEaNZ?9TCccHD5w*XfYBL~XsGi!xt5e?-8p6e1U0z7Y{&0`U1qPrG~D@-`8+h~O(u z`JJ82AsE<(3`{~4}ysWhl^jMVH1~sYhlUzgVIxN(^A(q zl4Fojajl#^G7kN15=uEfvS&$9cb06-QciO11I7Y82HZ;ol!5HxH`{sjGw0Re;dDNI zz9TGf05=?IEx5QQOILvT&-^(0f{*=e!M9LBbvxK2NfjxyY|27q8sufaP$7}=KoH)t zP;4}rzMzDMr^Bfb(3E%e4hFdZx*mktjk8+vq`>!@=ce2WyM@{yB6vFUC7vJIS)>+n zsfoP5b&xrAHi62u&f1eIN)WS^7c81=fLBBVs$fo0_wZ$SdMc6`t%QXtC?dGenrn2) z6%YFG2clZrdH+gSTa-H4!feOrOtt0eNa*`VB3nB1kks2*TsGY*H_lfZX^`Q5^b(}| zvi>Jhj#l~1#55CLJrYgrc4vvF&=AaC)zp}%g2FHWVH#a?1x!TrKH)!-F+{yI6@=Fw zmwNMbi(fX`YC?=IAwBiC#je)e&eeVqVR{CcEIW(*M`N*s*UzrRt7=78%3QqsLhhWk zAapcaMMJXcMQomYhtSSjh0unU(6|?sdGh`rvt^XU!*ijr^7HJN;()RK)mxQdlw} z*`LhW?IO0hCk?dHNznSrsi~IVRkGTPqM#`-+8!^*Czp6GvzZJj@L6f3N%qL#=px$m zmGs}IrmqT8yX)oP1cU3`MAcW)Z#xsEtFZN3#%<5B*1SDny@Ez46D~@K&QbjXvQZV@ zh2Jx2T#OV;5nkE27Ztmp3&VyFotDOrdul>06x&DDG#pbI-n> zuJBQRl^_rr27;1l)jD%~`<74l5y0bc{_X&Ej+XNw*i~YA@3e*$sJ`@7BTFoI+YO8WiO8D1PJU z#my(r?!c}k0xqlC`lzTy2U=FeieU8RG zahFCwlUG0`x)%6QXhh?wHK=t{BZFL~oyN3ROhtYr3aq^enBI}+sQZ9qQSD6bxq0#` z=4Ma9TFc9TzckgX@@dT#q45o?enr7;qgn4?+iTb)bGS1E6lK)zu{dv-o?J$gq~C)? zghT+RZx2aQ;|aqmh_7876a<1=Lbh|Ft2Y5jnz{$O2JKKC++bsp7|Y|Uz1OV__~TbSZ1M6}Ly$ZR%(YkAfaGL86p z-Da?2rsz}StmQjnWX2Wm6+ErJ(s5MSscGXa6Nbh8Opw1P?CEzbG{PzWzoJ1xh3HsPu* z(E);X3m@=TH^UYpc`Sl;+|D=DTI`!LKy$j`nD+Hsh{$Oh-qqNcn<0r$5`7&t@21^< z?<|~=q$a4`6(pW;IPIX6%jlk&Ie-(y_bR;M*02TKnHeEE-2g8-!p|;f7FMoYqO{ce zz>>00Q3vEzaqc5}GKv8;VZjbOzG*#uF}^IqfqEZpBs zSZ33fnB*}|zbg5hJpQqK%V)wXew$Qiq&!uIw;IDQmd+2@2>!O|ABj~eJ)YQ+!-*_< zhWr6Or;D_S@f9j)Y0i`8ZMQ$&% zK~sm)rD*wjhwV4Xt%^#k{foM$XwPWZUHKtky*JB+TCDemDu=zWFhh zMG$LhW`P2|4d6R6%ev*bdF`Nct#0Q9lve~}3M^9YLn#mWP!B%jVT4pB_>%IAZj=6) zd;9}4FaA+UY8A7}wKx2ReIbpL&kCKeL-y3ndiXX`l3_^w-1l|!=dW#`kX-nF`7b0H ze;yeGKuhnP;f}aqL272Ld507mz;f;?f)QtNzVB6tJBx};u#Z8sXHDb2M$c!u0}n;J zQ;7;h)U){Xx9#Ti1*xy=vrxM&ooS9c*FPdVw&m~9rdRE(&cav_pB$xu?XNFhvg^bI2fa|nJnJK=+W z7_)0i?p!(K4)JxAFZqtuWQMO~-%aYbw`q6~Wj;F{qjqCm%1?P4THmeeO- zi~i+eCh=SK;$aRyr06UKwO^&uEEf+fOy^vt6RtC7?amALU9jeH$*V3>e9`pYHYYohCo%hjo_YBz<$1SCi+=B}XAMLD1)t^NcU$J(4-QRv`F zMgQH+TJw!1Pc!Q|AkMfRUF*B!3Cc&wG`00WC^z|~^9RcscZPhq+0P%^L|@4XdN6ri zwkCUVK1(cvvT1(i|(5CsYszl(GCXWMw0RK$dXV?*Mo>vG7xh-R;|uZ&Y-xR50ndcwVBbcsd8E?|D^-Ukz?qU<7bB0FBmuVyD^O$`=l$hxa3y|j<6UUc%FuC=qqZpe<; znJg2A3PE02=M#31Xl+@=^o6c$2SBEtnZ7K~XDhCKuRGgTEHAhnlJ_+c5?Uuu zk2*!130MkBX1R}+H!aqyXmFpT72lf{3eJ?-e9j8;;uuyyqq*okq)l zkZIZaB`+vjWz~qurD@j9Y^bwa-<{ne?sP7QGxwpB#Uj#cdxbt9&4b>92>}RSLkOip%J*zoE5Wyc@n{t>oUO?(a$Jni9>K z)1AdfuiVLQOjU6c4Qd z-KG@wa>Tg%6Bu&*cZ) zI_=L~P`F`0o!)wPYv%{3+I0%zsaZ+GsRemUzvcUFke?TyOsIYH)3)a;<(qp0M3SFV z651vw2Crksaz?pjql;cDWqixgTJ3h?&2JAUc&+)44r^Mri@yj!@lJ4lGS*Vh`^Bcr zY50QR9Q(r=E1RlC6PrlCR0{S4PJREFz8YzsI;|D<6PB5{NS0U8mDKBr5gEldoY|XH z1PdW;Cb%N``)<{iq?I*>VV!-|QLxuT+;ez#cZI4IZS-hQ(J0Fw4bo4%>M3V?aF=>) zfnBa@U(-FOL&xZIxtO+%>6{%7txAPq{Ce*1t$^YoP4+EA+IttejdOoFNH=MRd>&iP z`$|4hyY$ezoP1)1IbLg_JU?g5Amb#>?jyM$UJO>HOw>=^N)>O7=_S}sJC*yPcBn!cdQ253a9y?$fhni*P5gLxT{X3Tu7=7>i)Aw*PK844{ki2Rj$sU^xMw1 zi%e0h6w=?3GKzQO(9TWPff{;7L09k$Plb>Fb$)V*5{N5smMVLctgas8-JwE%aI-a*wD0Zh|Bb%~7X?_>BVX*stzOLl+ zJ!IyEx3l*geq?#ifIxM~jnc4ebmX6sE%~vob(qCM0wH>;_H0&Jcq1=Uu6)f`+k5Ku zbyKZr%Ukx>(_slUCZJlibR#w8JH~qDpPE!|(Am<)TQ6R`1bLhXk!6$G`KKQ29$(JJ z1bd*`FY~2}SH;8V?np-4Lp=|}8R3aAm)Pu|Bk&xZVFguhv9z~IKfrND zGaOy`B=77E#=Z3-rD`(4LFLi9DsNLGoI{1!&w~>!+j#iT)~i(4Du?juE%rq{pfs$< zu-+!@jNqNji%sA9$YHwMT-fhkdvIv>Rj&?1k@}r+%}DKQZ1aT>DNAW5QyOCrHF}sZ zw#7tCQeYn(>#c|Zb&Tr=a@U2Qln~cUSqrLFZ^Ni^lZRDWpTNDz(u2QGU^Qhia>~Px z@`#M|Nd|G!mB|+2F#$R3mH|;#yu&ZJ7}cwteesmdssWdHSRV#pc@3I&$WBqFCUc3+ zW5^|$s$~$%*)0uPJn2(^Jw;noD zOkLO(XL{dRss2hFZ!4M3koHDNyz^F!ldIr(h_}ewN5i|} z#Wnpd*D2Q<4ccHd&AIx-_5IK0pF*8-^D6UxnX@KdIrDclr6+<)))It0eubA$+0vvX ze{M;flClc9x@=N?$qibbouw3rBJ!#BAtHe#+~0d4A~#oNZlvSybEjqF?GHHaqDCm!v-po$> z{QmWo#G^EtR3ad-QX}cow>1-b0gjea`>~jYj}#UOfTcEw-M2s7H(fLbk<2z-Tz}a- zsubgt6QlCyvP%u?75!rh55gX-eJm0Ym=`wZjJnj3|5N7INLVhal}6}W)fbHM#bZxg z3SL@o!PxI2G(~YU>kOv-#29JC`b&h6C5%+t{9KYY8ZpDU4=N2VHpd4|H+C-e69(oHpayX69BuZo|A z)YuPobe3NiN{Kc(75l6t|;V9$(6s`+a|XNanJTKKMrjp2bj`bc}cAh815HX2{+xy#g zQ=q9}vhIAI^(~-Mu&!}3xG=T2xj?&pubCrK{lW;bQl3$2tzL`*uU){Wt%zx_YQ8%z zy@yA&ZJs9v9#6DsC~oGq2{|VTkm;K5(p&quTC95DNxh`ernqVBp{m{c#_Kh?`f5Ef z?Yji|4viC|RZD!P%t!2X$Q%4oIiP^4VX2CqV5jsF&LrU_HQf%HXLM29XU?7P4+bN@ z@4k3lUE(#N3RRkt<(t| z?T=ly3yp3~mi#J-ybdHxff3mY$#|Nn?B<#D_--4kyx6eyF*>1ajT3gEp}D*1#A7!- zR0^)ei>PUK9Nm~zGq#v+gK!)<=j+<klc;|*i zt@51gL1L}fgMcWky4OEp$%YuBkyPDtx!S?1$=p4h4(9>|?jVg6V(DW3V{ZF?s7*KA zx3ceOj|8~)C=5Dh8E(`)QOYKz#rk<7H|oAWI>r^*B!fYWV?jHrMNqNdcDGtMENRO9 zKrmA4hPuA`v#++N_6mMmZO>ZnI6Gq_kY+>O2uZQAY501S3Qtp<)hB!sdx?t$CD6 z`)x+`b=GYwdC?04+#MOI0SywN@)RT=od@5fXpsX-uVkONO1Ek<1&o(~nd5!Hx;Gg0 zFgCBUH@Gjok{*pmRTFz7iJnz4sJ(8>MpQk7y%9TsizYAG@a69;fWB&gy-g~y-2nDZ zWY$xwx5rT)e_eN*jnQ9>?ty51LC52)h9bCQw)Mx(Lg>+@)Z(``%(0670058>Wvs5s z>x2zJrWvlxlN8!N#zJSuMQwOefm1i&`6Z&4cK}y!T=5QTw6q3#bUC1;L(jx|;7ARr z)_(1+xSSa%nP!Of*{=lp(?1OG&0&j)d`51(Zb?d19TTJ~8qA6&JBc4@PwW*bfr4fw z2GBLWE!(hp0eexaq`zn!rVLAVa?+q&eNuMdwoyJ$RCbE!V0A#ImSV~-H2xG(Y2gF% z28vWo?D{XuPp3$UNaRy}9hE=D$n#}qK85c@s(CSSu#}q0cpn#ykQEoT2t8-Lx^f{_ zJ9xybik%2uLss-It9GoS9N#CkLW^w6`SP+*9TQC-ZBS_aO^VTamgAjISX15ho5b?f+*TOUb?Wt!R`e*S@_LEJ zaa<5>;apNra^)^$R@RErsh|xCtf#$a&k7stzQ<(ALQph3dppMpz{~9-rD1$D!aQ+g z1+s!*dVowfk#n0xA#`9tO1Cv8cf7Bo!d;e`7<@UhAF-vW_o`Gqx+k##=(oN_{gxNn zgbdShbF?qTzUTT%e9LKevguPr94s_hqNqr7MVs{$N2R+7oq^j+Wh39&9SSW&E=qqd z;*%jj#pL#Dg02b-JK7dG*%H99sc8zZ4 z6~1hI*5g6;b#=jOmbuiLRZdPl(Fh%*NWe-CXf&(eWk#t4fC{I3Qw7J^nct}`GhsRg z`8rB{5|Izdk{`@xV6x1`EK0GYt}qe&z{)Z;yM%xfv8{4!MMlL=IBrhp3V|!VkWFSmwd=Z+M_7|o?82+yJPdXg8x(Y8YbFRk`!M@(R#YnC~LF5 zSB{c*C2mJvs1CUHgdvJ-YTe}Ga(we69A5LU^dS(rTEF)8+OibVD@gyC_pJ*`ct+LR zQ=CShnuM`ecloP#McwuT=xdzHp_j`91Xw13QJ92KJIg%vKP7PiBr*ws5n%Th%BgPM zA3O>RjpLD?{1BNox@82RyTn1QAY|x+mP|Ka`=ltXjLv_3 z{hb6@du?{8%Z!uS9k9DPbW*zzM!)jBlcnRY(_COR^6{AkyGT*>n5a_U%Lgx%L>oWg zO+Ej7^Rwy7j5B7FjQTJ5b(M2Mg3cI?CDk!H`TM5F*I#K4362%JAftK;dy>>aZciU* zrz2FO??QBDA1DaYWi+C;j=Y@?_xnP?9+N9bHWJ52+ z=^2me`gqlhe*op50m$^*4Md*>XcQC;n`p2ar8p3M6JSOrl+MoIwyUq zcwHA{CEen4LfzZ2J&>7FD)l8Zg;TFQMDzu^r_Fc3ls4p48dG)Jf9WjSD?|6Bb^uy4 z@%a^&BxHw=Er1bCKmlR0H`mr!d@E#RVHXM3P~Jj9Rm^}*wB#MvyRb@Z!C4)bYBKFn zj~BR|^{L_2V8KKr4L6{?Lo%c6Evmv)k@oNVeE)T2IrQP=###4G@`zC#ARpwjdz5Kz z8-)tMHARAHV!L zX>qFpAR>xBGbGt3p~U;3(0XG1>-k~L3ZO;qC*qIZQu2pw8_8dOYssQHIC={&(*A7A zK=*kj6(tFaINcCBLXq)>e*SsQLw}^uv*&tl0E51yc9Z2n6Pfxo?ajp z+^&pyYE?DjIcj-@ZVz@>N`hf_rl>ZLW(ksl>&b6&hXs*hW95R8<8$B3MsU*9uYWb^ zO}H%FyGlyf>a2lsHpI|iAXpSrUdO!1$`^0iF>M>mW}wf4ZZ9cXLdugm0-Ams)u+ZJ zKLDCaM5qvJ5?+-hD6w5WX%_x0E0lEuo<+OgZpisyM9t+68!jbpuO&e9CJYNvYHM~J!LF(_17tkkyaAdxV=b)Gl7WK}aWdJp1HilyC<;@av#$#(;( zqVvFQrYW?8NyYL<*~x;D_SlVfv5$QpTqcxB^mS(ffv)H3G;f8Oz!E5e9RoU-hLJo) zlYuv4);De|NLNpoBwwDQLe;|MS%bY1&3BZVS|RPR%;RWa*c#pkx0}Jue8)f;yD)Ez zw2+cys0qA9)o{EzWlrT;VVP?uTOM-(u4(0$nSy5Y!dJ8hJ=#9@Q(*?G0wjp~bgz2= z%+U)B^tviq>;?AR5?GQi$CGUQ0-MoHdk~d+$4d(=^Mf9?Lrns*4U(M=-?z3l<*HGS z5tbUSspnXk-IArgD7rLt?a>dXOK_#_pnqR!5V_L9M@k!h>4*3kR1ya%J<7Ad7-`?M zf*Ebb)N2>C-N(yy=f!pTkm|5~4!Tj}{oLL9iNaiM0(=cQEdnC!m*z~@O|-aHoB1YI zvvrKw@4i(#&+@$7>O5GM>S-=nS;^n?C7eR|f^?mJpb?5+?`5;snOgYbO(~FtV9@Or zyU2?19d_>Hf#I+*IaT70W9;vu`i+7dQ1>oRRP8t9!1jAEivTP1@Y^mRo;(0+IS`wV^Re^ETr7aEPd$&!jiJ$7XZ1-&n@{^kvMFuFo;Fu#D}i50LKlVksJSuZGXj zOH&VR7K?`;3Tyo=)@rRo7TR=CUTF5LB)NqxC0^SWspz8{PnY|jW$)Tovu*#3EQ-uG zt&hH-z2hk#m-i!1<5|99dHDr2b0V2f&PEb)%DfqiP#seY)ZL_7?td_T0Trow!kTw3(-!;$Xl~aAZccUI33%H*+t^zC_ElyxatqiGMC}HUZA9v} z%0GpxvNHj!LTDz921V3(!7z~1zM}8Zy`g$Y9#RzS+k*9X@X<`5evA;%!?)1_bt-X% zE<(jg*u{c+aLqz27Kfv@)ohYop^q2#SpSju+4EXDiTE>2D4A6-2QsxT;x<4z2RC{f z{`?cysAwikp`9?MrRXg8p{a9hYFze}M= z3)rv+H~x9ze|?@$*s82}@lMdc{^ZY9BH(+^YT&y4X`jCieMApa1hxq_tONc&VHYJT z)pBFi)$ihe{R#4UmN;C2q?Z_G|G!Td#RpH&&4Ozw=s$v4a-<^Qj}s*jj$VGc@yK<#fB z0poW$VbkCzPO@a}}kiL8rPQUU) zehyX~+$W4;bR2$2d6xp2yLL*ejp0||U3a}euTzcLo6Prl3u5tBLK!2w;`C%x6&Ci$P|1-#KjLJ_(>Ud25@dI`x8xFZo9jo$%k|gfe=lawNkCyMGJ_;zX^= z97Yw7&HwQkD-1b*G2wp?Ru5(1qaaJ?8+iX2zz8K_IDA3a`Hz7VTNXvSE~-y4`yZdZ zg)vR~@&fGLyhr`MQABpn{z7GD+XQ2$fnN*UY zi~ktqf|z_WwYp4l2mkSzG7N^9n08eE8Ajhk!ACd~TTdwd^BLU>7^sQq5hUmDV~L~T zBl_f2xqp0iA4c2%H5yVzA(QI=8ts2Q?axs0zt{8s%Q0=BDXJ=GFoLge4<_HA1KBJuV#sv^g-$PIWCJC=^&3$R4-&-v{+3^<4LHMt7VooX zX>7091g4jNt@NjAj$Hq_T3q@b+XPmFJ9{;w8WwfC(ZvAI zyfw*wt@?~rgo5b9JmfkGumh- zrBahsFK?kWm?hnw2(O<=b{go#?Ji{WlfW1Fpyl{QlG^1vJFg$#tZO@h>#jgk@Z2dN1p zjc^yfE0?1w2n@#~YNauWr->{Jx%4_ef}@k8G%RcQDS|aUaun$!ldiMyMYL!R5Id6$ zcA~l#*tfewz~3Ho`KopE@k+n)jz;meQ#I8xB&F74Ui5UQ_!Y8;@8ZZHmq7T3? z3)p0ANar<&nN?}XT5u=LTk@(Y@^MMWFaxqL;R`8#nN%T<0#@f($1WX#yjvi5cc)>O z_rwDdnNuZhhA8=L2x!}PGh3KG+RHS^OLP8ho00YtptEsY>bt{d>+@*A#}A3NGQK&# zr=c)SsG=$j`>2WDkoS^4(%x&j-jO8I-c$?84@Df&y@1`URBzzDehe{joB;YvUG4ZC zy}<%HPTB+v8rRmck@k>FBrmohvSX_nL|q1Fi4Mj?Sb78s(v$QOTNxK3r#;&^qOERh zG0^BzExV>r+{KYTzT$bSX+IjtQTpYvRo2-HA<3&$HL1>%-Db`hkL=O8DUsCC9hwKQ zM6|wyPh|$O`T6rvEr-4(>}#t9=%pbAW<(;sLQIjhJ7}e0^7A9y;TsrpD9mUY zNrQVqmlwp@xA~@R1HKTc+zh~`mz;b3ubyLfbif22N;ii?BBp% z62Q)kI@eNE$WXU3I4qy*1PU>|;8R^0m%RBPKP^!E=EsQ4#so=&^cO3v7Ev8Q9T;6x zOff@Tu&Y;J!bS+lHUaz-A1dE9hm%y~(5wJ1^`*;hRxbdr7xYRtQjt{MdaWl>&h^+H zYk^D^f~6t*NtYUAUOHtmlgw}|wUa9lNXtdGLKCNGt&sN|BVuMw!1P)bXGo#7XxbnT zlnRL^kRW1^V@G?&R+TuZXq8v}BsqG6(N}1=lbuaXpP;)E-T4*nSfxGtTkWn8L-$%K z+8Typn^hWP3+@%LC-5N!Y0{6e8?mrapJO|Y-F>=c+xO_OtB-;MfL}?Fl~Y@n559DZ z!&wiTA&4Ugl<#*r{6FoTX*`r|-1iG536-KOqwJDtvu`Qcvt=vHMAorp8#{?qME0^} ziR_Gh8AB@Bw-JW1WN$La#30mjoUZ%2?(4ok&+_JZ^L#!}Z+cPZoZE4p=W+ahzwhr) zP;MfYrK}T_C9bYft=QM3=a-AK35OIqMdZV)tzJ?99Kv&VQ5sWeM2FtMzGptgNY+#r z>Cbs4&XBJ?RO4V(T|H**tovR4fd9Alw}@s-7KGzHa<*e5#Se`oJ_)E3piobRHkR;Z z-p$pzg!@ulJL%`ri`*%k>R$GOBeWrzw@uVdk- z6f9X<@dwD~k^a!JRd?M}!7$#ubaHqY&48-|4|xxGVw}P2(;4_;FV=dxfB4p}7)n=l z^6Qm0E-SW+cP#*NxoCU2BlGq1NO0eyrP&WzuyCg`V8OxWPmOiJL79FUp*E>}33wq{ z1AeAX9UH!9m;SytTIrd}QQ7zn-t|K5eZ@mvEg}x{G`q@k*N<%!CNDt#5O1->P!)+d z?x+8y4R>avX3b_Hj8*3{FyQBo0>+~UgfEYqWBqz=UXVOUdb9vQ6m_W_KKyCYZLAb*chQVJ|DQe$K5W9Mj<_UGjl)Z za^g>j3G<~7RLm_W848iJCQPfhH$);7eB237gj#CYLTWIKQ`)_fXK8$o;$BO+B7c;) z28v>6YiKwfla3vCcQ&KJpCv_msy8HThAGV94w;DtV@E^to+ErtIxU@#k;0x^&mOkY zYl+qd0D%)Q!++MHwS@)mx>bUTH2aGKL(U06)N0`4j)QCDQBp8Z8*9wbb1p*uKMczm zbssz9=qUE=-G2J6j%|(brAp*3kWwVoxV;kU|NP#W;AM@F61b76Ps5_H9%B|@3p6i@ z#WauTdoK0!96eVPm&%_SUS=j_{^9nt0HzaL@DOls4P(<&;mRklt!{r%jdIV$GvG4U= z&|QoC*X3}p7|WzV?phC!xE7Kw^gjRgESZ%C#QwN92yhQBNs`QsS*bBYNhqFriZ#m{ zS@g69Mms_YM$Y!XlPEOhbQ06DxsVgDb9KbrBdQ+g2HhYHszOBgPBl{qFcT5sw!RQ& zqN}ixAOp&4*DB-qsQr=-NvRRmVAR}#PAZix46noV{WCld9f91E! z)Q;eN3~SHvfYe>j@*xI)doRXQwYwL=6=B-nSTdw|>`=7(SW1631=JY-oZ0w>();`e zTQ@I?D#1)ot2bf1eD ztUKVJXw>S5IAR}er+B@GADHHf7cFbVd#>u-_50A?q4@Zbr(T1w-Mt18Zf#LZ7F6uJ zv^qLd6bn*y|2$69+`};T(Ws5a+Ygp3s1Fyd0Kv2KV*Om4v#C~Lq7)6Z?~DuyvF-Aw zRq6&hCP%6|VT~`KaW1JvXX?!U=1_En&_KAE_RhQ4dbsaMhl1QOOt_&)A6-s7UYnHf zDM12Hy!Pu|&hs%f3O@Jt$0r*@RVVzzMIRQPcLS;!)d@dd2Cehe&LBaG)>yu+VQ%^n zbt%Zk#aZ&T7Dy8HsJXa&9%>Ao5yeR|q>9|q6$L#hmAB71V}{j0`KgCeL1u!SKF zv*Tt1S>%5_g1)-GV6Na{&Uot*ZwT;@k2p21eYP#bQLhr6Dzy!cgO7KMx}ey(m@tJc z2MhK$bi~FJ>Uelzd8S%DM>5ySpVi<$j?8l8%bOfK*D|(mGdn(NR}nmyZgeEv^KQeq zJ(yPrv~QH~_dEIj@M_sVe*TyQ#24uJBXxSC5q_jx+e9PdE8yF&*2}MEek9 z4=_c04L-!;pHHWOCWEPic=_ zi0zn)7#n5!n|`SZ=Dt4nE31Ek3pYp$?=EEc5=WOP*>T?OMDVUT&kw;V}efN z6E0(m3ja`Z7JcF=>)^-Mtb{d>zmd%sTBD|Ge-oRFTmUEirSls2lH1J#)>?bdA~6;r zGN7Y<&$APJFZ?PKKsdDBq|YqVrp&G`05(-1U~_sRU2*Ea0Gs9i0yaDT08{*n-sMSd zk7FLOI$E_Lu4U)PN_!tcnV&b_#=j0gVH3nGaIq$g=0F6$IP`^(0iT+;qQjr(iebD$x}3XeC142Q;vVdc3C=#WB<| zum?uEQ>1lE_9M3pzK6>{A0u8Qs*LYwEOXRM4XBcN z;Y?ifbval4CV>Z@-P>UM1A9}9K11dCVW6)foZQ7wbHab7S%NS74HXe=d1igzAEfuJ zyB%E-=a(>lnaAgANUtyCksq6upHeRV3DF1pVC3ayFZx>&&FXpcmo?f>8^DAtS=@xr zf@|Hcq$9voGekU7O)3lCTk<*WI9vI>oc<*(_6NU%Yo!zWxbB5o1Rq*ormffix&BHw zzllF&o~Z;Gkqep&{9#5fet?HTu(7H$}W)&^PF5nk&SNny-(vz0nvi0SOea=Bcy~tY z{;#-!_xEtImYrR?pxrd}>+)f&JquP(tS-Z+1ld?J0%u#)+hL7%cUDZkURY0e`jXjt z75JW^F z@E1bb9NZ%@;yJRjI_6MwY~ma4w%_*+589`FvmVYgc;`M0H93Q;6{a{HW9JXO&&Cg! zJ&EsV8QlGmqkF`22qrH@o?$)dTg|v4gp3z;U8;`ktoNFXd^?`3QA*uMN15-HhUq8~ zKr^EH5I>G9t9DiWO0vr)c=9QbJL#>^0DYe1)O0Fm&QFBRXkD}fR@yg~8*I%Gm-;Vi zwEA^qoXcDaOvf$QFBdW=BpNHP??a>QGQV3d1zCc+h2yD=VpJ(uxvc7J*K_X{sVlK? z;@9dJ{I|jk-z;11Zmrp3muoyir8h7|B<||1V;yx&aG?_sdy@Rfa5lwC+p*Ns#c zrOe#)Gkui~9U<)<&GhjI`PhGBMP(4QOLGl<;N|IKkym;labu_~NCH##OfKE-J`X** zci}zrEsw>q8}uRRZ%PM!U7qgQsYzfx_PlFC2AxSh<6#OH1rtsDG3PY}I5%o`!AZNh zwI1EoXtqRvQGFDQ>c{8G(E3Y36?N#=UBfcOrz`=UXn|tvuKhqYV;u5>scuR{-tpYL^^OzHv^4hWdO;o5`ffM^)kk z=Ba}o&G5yM-R*8&f48)dJM%w^0jN<&s6J{5ka1lD8MUv0+C7d_{{fH(N!zuU>#Z zxRI$vC$5m;DevNts{qxcT*42_NsE`(rO}7LPkbv>*y=Vzu~*Rd@aG(|R!?MrnoYa> z!gs2Ta;jt^vCle3c-r)-{O%1y4z8x%yo?>aCoQY`L)aL8bo5fb&gAVmpo6XxTj|7~ z{si8|S|2rb#i+B_K9}$lo@lvy74E+Wsz1QQM^=G`vj?7OPv8!V5|nm1}+cLVXtab3!nVqM!X3%>qmO~~*Jp}+zYySXa+taP+CRD=PQ z5;rsBGVrcDpX1Dq??IqPTgAF_?wRb4Q@rQM#F z@(`nDwH_DG9Rpe%O57+l?pQFW+Iiy+HgrHvV2MrW`z>jycB{8ODcyJs(6{MtuR>;z zZ*3xZX*1NN3@$oulWj0n@nnolU=CL_58N0keWkZJTAwt*f@5BKsu`b3+>Y&$YFc9w zs-+U^WhQ0>KseN8z+G?31+vqNd6#e|{pL52;hZj`iA=oo>zEg#(#XKbN;GB%XJdkB~sV!5H9r6N*v=SzU-4ARKTt<=38(8Ty%n`=9ZvOMFODqAK` zT7G*MC2@Dc&XcF&=PGuvaMW6YxgkFda0`>)VY{abXL&q5k=0We(@i$SE91fu_=7Gx z*MuB827cVvXI|>G{-Nra!)ujETxg?`ubH9DM?p#Q459wQ#A9ybv$WW&>1Ogb86SVE z^9rL~`f_L(g+4^cn|%*o<06a@T0rF)2L29NK6|8ad1Qu%ifZ6b!(|<&E|8jvjxCAP zp$kY~F&~*dBH0@$ouVP>j#n^Q=UdL&rA>DZ+&rH+)&}3?AdHx`02CBr=6Y3# zm+a%_-y3BvH;yB$T-!tTvKXuKpU-_!95P^x2UyWwdK2+9Z7AraLN}c3?LNxW_;sZD zcXhl8<3)l=xWs&A**p!FCUd7!3Re5=QB>Da^2aAdZ_{}%W6D+^gX*Gue?5A8$^r-s zN6GPMi{RZfr{Qw%41vl;q*m$4akiis9gV-9Zm!(2p*tn$aw+c-xTMoZlFGKXcJ}=q zWR5F(jMt>t%bs@U+^OBQm%+!#wAL2fEO}aJBWzr+x^7Me+Djvkwt_a7RagE>4BWI$ z5yN7>Qn`*SNZ}re>q2ainoGxGaanRZ2~olwwl+^Y)oLE3hrU;&la>)k^%3a^BFnd| zY`*{eT&_M(Hv>8NM*by8!&z(rs|a)0g^x`qgs-r&CjJ4L6~sh?s7krlc<_Uv?4r)t z<6V70)XJu<2%_m+G)5V6JvRkSLt9cK}!+(a7A zxAE3j$|=-n3YcHg?A`5%sjf)(P5^QEAbB*j5pR z0)IqTEXOhifheA&-fCR20Qajwy^d&y4x`TYp!~LIr_~e>$%L0&whFr<3SgPplJR>z zPpP-chcrFZr0?EleckW!dWW1`HCY2~<=?$4&;nWyo6QuY`)v({=62TNGFBRedvm)_ z{?dD?;G>VPVI&QJdhB9kSzSr4|GYEDZx?^7^k^-f0K8^_`wwg7-?b%4z26!%oylH# z!>)l669odVUKyCl4ihCKI)Qy&L_i zcKuhZ8OoTY&`-T&e=y9@X-(hfL!VHS-y1&ZXITyJ>wv#>3Wso4rmNS6FuhUb;Y&zo zhszndM^9ruFS5n-zo)}R7~I)49)iD{f{hf2Tc{{iKM#An{t{!El2u zED|xw<1X~lx-I`bgllwJX+cf_{=+xmX4DZr= zS$#6o_+7QBlCXM+r1~ar+0UJ~A6=^;}Mr4BkR^->Z26l2~k&rKZxxMBy5n@h7^#9@UH1{_J34Jw{s<_ zBdUADCiwI^chuLKn}WLvs*<+p$orl>%RpmV`OGgOI3oLOMKPPvVbuB*eV@^$^OI}H zhb@QTbayNhjuM~!Vk$zr7Tk*!ggJeJ&qVA`rNa9R^qQBqI}*YomW-UnSb~0p#+g$| zLj>4usjnKLZ^UyWRYgP>^tANGMi4Ibh}JixcfxrMV?j~7)wtH&#=zUzQ&~KHlpKOK zr-Ow{^B#K9Jj{kML$poh`kZ3Ni3&@Wm8aTQw{v(z#h8kGqy#!n=}fN{Vjt)mx$cpk zE(7_8C1d4qh*7*NXd_|^{N@j%t?IAk++KfMlp6EkPe5Ei#5JSB1*gxkU5l@%#7pX~ zzK8hn2EW&Mrja~Mul;=iIfzFsX^UPzkpJ4K8aKn^RcTDosYr@4;j-VFzS$<)an@#a zUeeP4RYGFq_LopHKm|-M2t`z4FHZ+={KvancSo>~eYFO!+$tv8TT|4qNWA+iFXy$} zAOFIw-;{e64x|?|eqBU@%`ejRQRkAWUz!c9Ch(q^w^OJ+q$tYlx6)d{nRH3V;_~ov z*P{~|9AF&Qbx!M`puT}7aMP*oH?r_rQOj~!5Q;bnPgrI ztF#xYtR~+_9TGFIDk>yHA^iLwKx=@BfE21x%r%{j7o8$WS*YZ8k6xKJrp(IoCtNa9 zzZ*I?AI=@UYq4qdjz?jmMpaHVDSq!%!qj~Wf|HkCHdpTh@0 zo$hJ4E@@pR+PonjCWjAweE0|IYk^-!;L94n`VB<%<3QXB8R1o&SU74>;`r$Xj^HOe zlxY=Mn`K#wC~_-Jyk8kD@qh&xF1~!zId@8{`Yp^yeCbKrCC+zqL4#hw`D&Yn?6~J& zh}Ss77go3>e~;}k6WuO16}p&d+Z9&3ZO!-vEzNf3h9vsw^>e~T)0p&~?B6kWAi4yL z+>VTxWO&`ja~kyA;YEO?ve*8{QFBtojW2A2UBeNd;zV>_9A5mQtF$JD;%AZ{c=X0t zP%iaxq!x2m<}Wi9&(Q6v`&XX*a&i6c(jU7#;gv^xb6AR?y=KF)zCf>TL@YaaOm<}Q zE-h2|9WsWeJ5O44XV(0r^4jYQZNHTcQxor5-0x_(-l}&&ut)Y=uE)j=w;m3zZ}VKB z8f%em$UbOmSN(7&@#&16#3N0O4a13m3x7(bo#gteIFH%$92>V|YS*hMBO+e7OKdyo zR*4!=!v35ZlmtA_Nl_y0!r^LyNoxr1MBw7GYi64`vbXj){&=A~KULkFf(zSl1dvTG+N8LI+(PYcxPB>q zY7A&mkIplpLHb2|ui&XoxLN-J6Jq6Dv{5A=cd_6r?2p0V4MHrunvanF#?kzdE;VbI zR7@C~oO>T`U+1H_V_Ii@9RyT4^YlB8Vacj)`HBUKV~h0azR0o8Hwj?U@5^8B`~}wN zgc^Ht_%*3^u=0y*b>QF`0=mWD!Su$+cPQwi!-QF3$7uInPer8ZRT-Xl!wg)GX^+n3#m=>( z-W{2+u6QHL|j;1Gt>`Dh2@zgvmWHGn{#eF-bP?YwT0=J*Zl{(@!T32SO+bz_*(0! z;M-HQ|5~i;{>l1M^_{m=!#Cc1XRL)q-lfwU$oI^hhwGAY^#yK#asIY80eR|b(saxB>s?|P<% zG~v&ZySNX^wMLnBf6(cfW&7B#>CJz{I`PrMGAO_2o8Y z1Mn0t0Wz>kiu=q-`&>AZU%#_5p#WtZ5GroYRlmM;?J?0$MPx8lO zfcqlH41a}WIt<(j8*H6r0lroAx}4B$l}uG~A@h<}*0VwWd4D7YT^?HWc*xjHOd6E) zLIDofynA`-{PD;~o@%oEh&Y{j2}>4V=X$4(2{`p@!2{^Fs2-W?0LG<(x8r2BoU{cg z&_d}a0O3;WJr)~s!!`=j=t4@5$Mo83n3G~WHDnV{_HVN^9mRotU3g?i{ma70GKinF1@f3J5IDp^>e^)p+};L| z^H}4sVObGf4lACC^b7#Xd=seJFoi0!NI`>)Y(i+>Q|QM4bnyj;0qr}z5g@g152bhv`y!ZU>7!kq*h<-~5_&8EjqwI2h)yGEE}Jj~BQXB?u= zA*xGEr4d*JQ@}(p1(e-FV_pdU=rLvU8_lUP;w&nu-mMz@4T@#%Kl$vmC#&XLV0gjF zF$(6X&u)37PukdgF$U4DLEU87K8k;WRu4n+k4G$@^wVb;%vOo)2KcEfl(<*b5Y5f~ z-H+466qT!)S9wY3zZ%qrIR0%=OZ$>3@!$bV$@Ck~0)nztSb5~3xPf!7qye#jX(-9T04Hm} zIm@rMbcA}mNBEMR1xt^k2szvLqFK6u{_cs}&-}|Vqa~r4FQD-0Rer6Fco8)&Vu+!n3-M}Je4GIM-Ty}>xH-Q%? z;6jE0FXrL&&9|{6_ZJ{d{`I+n&s}#^WQ|uA4_s)vMQ(|2pJc<@BfvfqM`wji7VuwiAPdy339Q!_Km?+DbZQNFk{eR*S%SU- zwxFtT1)PlMVkChz^^x&SKads1H47ehB9xHuti%|PN4K6fd6CX8B&d79Up?sxHRj?} zj(ZzCj(10+iJ&6iB;C0tE#b)q1kr$qV8G+Qi&f5R1`QeTkds&Y%3GAJB+=>GgH%U8 z@dx=gyg}xhM=<0G{x>%)bBynd?fhkGzmJv$OVqV)Q)Yt7tk`43m$u_-^@=WthNEir zT6HfD`$AP#fxJ~Isa7llOwSc=U2~|thKc;f2AM}%WoXr8m~#*JfpCmtU%?SgbKQ^$b3ZoZ zaY4-&h_~Xv2<;vGtGF3_86=GFel8sz{{lMDp@Tu|@vFZEz4s0j{=)`CUggg@YH9pO zELaH2C;bvP<;xk#ydvD6^>reggnn?y!03&X52gj_iBOAwE7L z7!vbAD!3Udzde%8bl@AP&|SL(a;saLAwxRoy->D(Ig_4N;W(5q<7jN2D4fbKFK}?8A*eVRrfrD;PUw{3K{c5}?N=iDBW?n= z7dK^OE0Qh1`dwH z)7OCGKlMl@9SG>m$vO^2@B9tWAOK25qP!FTXTt*_X@FDh)lfb!_^(YHz#azYwNd|U zcz{L*;#A|qZ{Ggbrk;SM%IiwS|4mJS-MB-Xsu0tY*Zd=39{Y4^fAwdYjx;RglLLKllFdB^ty{?PKY)AuqqMjeIUX;Bo(z9=f> z68Ogh|4^tsw<%D2;3oz0-fhZ%Kc#$qd(VG<&qXdQJAA4fnivb!whIj)dHLc!QDU;1 ze}5B`k@g8BhKk8*iOI-BL_|n>gy141eFNby_$VOI!`I8#)8p^QGSV{A64Gc1S!pY@ zteC8ZJo2BktfZ{Gg2UhIao(PUf7&t*B>Up=I58O=c}Zz#>aa1+-Iov=Nc0ht#lqkE zgiudB{DimRe^X2N&kp{frCreSE;2{pSB;<`yr-?Fo1t$gw1SbAmqbgV<>7Db-$0JPN-%rj~#uH-~8sZydW1|qNWE&D-ps65-Huem&*9ezI z<4C4@UK)lzIuSm0GI&c(PpwE#16?muD_sY7Y=F0-EsS3}AkvPE@saZm(v#L8*m=vE z%bH^~y|p5}!{tc+1Z%veoUWy&udM~iz&Fr<5b93|wG1U=?2U9xjBF#V3@x?g^g~R7 z6%F(aGy+U)v~6^QuvSLFp}}r)dOAABn(kIIJ{pP^a^|u@u#{Mmt+q57XRf7W9*!{~ z68)va$wnIXR`z6lg@8ye2Lox#07H_IKEWKiX0B-xWT6pkDjya~3Nm+7Gz^wAGmW&D z^}yH%=@Wv9L@-Ys2bf_Q9SyKeEZB@rSXgL~w|#gB#;Vwf8 z*HO?m^|B(8gOteHo}T!S5QhMbFmHD}F(lB=04EcSbTG)!(kjy4GAvx%+tb$A!WbI0 zx3}}e=_+AmY}|DGiD<1rJzHbrNE3{wkuEYOa|c5QGYdsxkTqOuA#dfY?`J0yH^d)%U0*Jb95ts;bU&{~!qN0g=q+X!4 zkFJ}NiJ7~fMko=MTnC4>l=iSOB^m44`jG=Qf(?8u3_Lt=1~%}Sx2-0Is7Tf`CK1Cl zEiHU70k$NZy^o%$rL{THGt$FNM$T4C$)12#w9tc&`gqGK;&5bnw?Gfg;NSpzUwx|x zcw1T@;~!vXK{Bzh_wcd|l-BdNwhxf^Pz*E<4s~Y`CYMgHA|TxOIdg+M0-# z4e~;3E0W11!$6|DwYxMa0I!4dx35cdeLNXu}%Ripvl zGR&P2;su)%t4|Jb*D@jL`)Di38=Hi>hsitWnOeJ@gUQ^!i)!OY#nG)O+cnuOJs2{*%=m@1OJ zbnJ`_9gJc6EiD86-7M|#asaohqY+7P*OI{-de~@t*~x_Aq_xl* zWCgzf6D9LdD@83CGcDaPMIARQXiMKj-y+Ds%pGsztt78#rx@Z9Y@(p$VHKdI7lgOL z5b(yn4v|(tI<|^ta+aY+y1_mQ4ww*ri6 zN_rvT4psyYKMQz3kiAPcfkfNsy-c~-0XpICJA2|g~NU%*nDB0c`P4o-1$NMM|d}K}BLru-? zq|uf}!GVa=z{=^O!=woo;UOMorUXrUg1Mnih!>IQZDr#d7HS+8Nk(HLwTyx>7zHB} zxd<&oO|3u+MLBH~PeV71xrdyshL?S)7unjv$1}i43$}!goVk*{Qc$Q2$=)3stnFrQ zqG)8SXAvAgw#6AJ`H=l}!wJ&XwsH!F2HtMcm{1+1K=AWA_Ga!_j7*4;v|9vG*Hcpu z;|+a_46)M-^)UzvA!B5$&Gk%mEUfi{<#CE6&j2M{DBjA~#8Spri44fXUu zf|@(lOWHhC4(%5%8%*-ER){o{m-o|-lr{Aw=^5!8E0LARW~PYu^a8K%E3Ip+;iDNu zHizfw;K;h(_WD}ZdVyhD7#Z*!#+rVL_MU$75%#tk$mh@}TN#B2d5DHsD?>X!2VYNJ zC37PSjYv5gV{>gAc_V@cTxV-!=Zm%sH}Ng%@wngo3r%}9F!oSuqz_T5O{ z$1T&kS=vQB<6qfz(mM~ASJyq{ztFY5`gLu{zjXEB(6F~a-tR|KTcvbusq`97 zQH{(REtE(;trS(K{IA!@J_>qIZ^fqv*aRv5^SaJ@+bp~{wLjaR7*BZ$=)*YSCHRfb>~QkZektc#JO1dE4^*nBe|Cs_ek{}{^C_oy zWy>4xtX0Rhm15(ba@X+9Wu>5 zURwL}{1iIitK34`9&%muR=Dr*%Q}^{UibJI1;T(`Ynp%*%UbyL9_J|IfoI3Q6_>s| z`Zho7p>vw^;^$;J~S;%y%Z>1J3Tz}D|ff2u~c_5P>CU2T_?1p`Cq=; z+L-No>bbe{(ZzT(f!X(DB^A$78%bogDo}E0u|H$R%oBea)%pXSqma}2yQ{Q3QJwZ~;QQn&Jwf!b;(=Z zzZ&*1w-dWm#W^LN-miC^+rpChl%AGlIEL^e!R)rwl5AG~XD?I?Nv zp>?sx{6O`Idm$6Aed`oyoPRbaGq=siCQN>P?jLrXWt(NLKsPP(R86@4&i1cstXTp5 z6~@|Iry>ULV&%Qx-TYclf8gl%wEd)+>&NZygel;A%}zwj&vIY*BB&)n^^xOanSPr6dr3rMGIb z^M*+M&SvpGK1DN=T$LkdX_zw!gD-wCA6&sLPrfA|cRqVs^Ph!aHHzi;W~RiK`bgM>&3#$Ei1vy!{*qN+l!i!(?$2G+`c!`2<#8cNWCB=`su!DDfat0 z@mwDMz=Tev9 zv0z;z=_af9X;XP;oX;4=9-vp5_1WX>yS`2`t}=z27?f@Mq2gniR&&@&LnBgKNa}CI}uEantP@;GO>yD zMN>m3m@=44hNiZ7IZIxpu`b4^>-K}w`24W@vE%)3!w;`_{o~767^!wbj_5S|h~QH* zZ81@6voX4RGk$?BKcr1kPkL~+p-CcUfztdOC9_!VLzd6QwxyZp*u|%xcULbCH1(%Y znx`b!$M3vqY1!E7CDyvPUHW*}kn_OIq61d3t+n;xb-w7>^nmxb<5uPe9h(gV6NGjI z$IZY{?{%>xa!J)b;W}#_K0i>@bYPS}Vjws{`X@A`_)zYDjZ>+M z{5hTh6EiIl8CZJ!(x@y6Wgb4;E40WH#YyXypem@toxk6%cdy2&I&#>rGk+HT_}aBT zt{j@KF4Vcm!!w-f`1|mp-_DH7pO5K#7wjf}El)AKcjb*Sf_fY! z^&`velbZWQ_+A~&65pS)+(M7lVOfilW+C+mg$LJFR;?*WrXF1SktNW{JITqvQB|e5 z+8UK6QeJW8MADMi>#IkKEH}9SiO2~DDd;E4axT}ONU*bQxhu^7g{`>Cm^uG!*T^-k zRLLhIByaUt6rZeDYU^9lJW70@Jp~hIX<0U`NA8(?iQtFe|xpOC$r@H)8pIF$L@|DS=vY}o9!0k; zwrphQRA3MG+^;(r81Av3RrA=dMZ0tSs#*rX>!~ z9|p=FiAiJO9AIq}*5vqSZw0YakYRc%1hs@xSt#RbUmRw++#a@1>X<=+&P6Ld;TcMf zntb(fK`}o17V)2)B4c~_7iS&vgsxJc+f&XwK2=lUWgA<`PF*<~+^;G@EzBF{N|7^h zO}maO?LgDWK?}+y#&RZ&^T!X;`m6K%(mK#a(fS)9sq4*zU*e zzFd85$62ptnm6t_|DLwxptudoP%M{AilvK`^t)tEwhN0vsvlc^9a|(f6{K=GCmf(E zXjs0Wh@*9R7MLi!QOxVEQAO9pS=&Zw`6_sYQBC;0ZHn$f8Pl1tZ&ee)ZL2J2j~w}4 zb3i#Dv3|oj*^K)0Iccu4SKpLK@$CJ__x8B)FBYJ%2l>5L7|>Jt2S``Y0vq}JQ!if* zzWe-OCudB9&@l!M?kE4?^Vl3(_2v%+vzNKg(i%QgKTdA@y_tKV%IetO-gVi9b(X-6 zNQb&E(++=H_cv#6US39XkX}VIs9YX$lYjm@LDA%q^Kf|WaKXY*0Qrnpoeqx*X*oyU z|DMpnb~y^>vifgx6N&FlO+*X$XPDyaPgq8&h>aNp+NaL9}u?e{p@;HMsgQ$v#q!CDyk0bv_^C zm@y%hwpu-tp(P_Ks_RP4rM$oGrmI)6x^`a(%3)ngrgAcg72=f4QxDJkn{8;uV*Ad< zO934JXwX1kt-hDdt6J}vvGZRb$>IlLBtMs;!jzH~3pcXLWbp0Xb)T`x@OT<(7nr}o zM3koFM{HWp|9v``T28uUaOY6VE`=ZHP3aGo0}t z{gd>}!6$ZQ&?C%qz^B5i-*-%JeNS09HY>C(;WaXlmv z`S%sC7mHQ;|F8TzZ~y-+{U2>1g6=FcZq|RXw4`9r@69l!Gds0TRY5{;ySNCD^@-V* zIQhoByL#jb!}szFaN!3nu>NeX9CtAawiJ3wg}|Y!kWajR8NKE4XXp23YESoA=M7nY zT+Y>Y39AR`SC3jB?I2Rfp&RF-W+5ky(XI}gN7Ao|;pm83-Ey~AE2^89PpSsS>m*VT z(?wZyV2?NZ$n@?q7MM9={lu)PbeReOS3gt7`#`w#Ur(S%P zyEa~J|HLEX^sk>{ktQJmJV`=rmkutcM5b(BJ7!BBYTm>2fuEQ6nCI)OODdXrmg?fV z*AcHrWdK7l3#q+?>}|e7K|ja!f6dn{jBhQ}UuWdSv`@ax5epouxbyofHrTF^G zv~%Zzt0H{;nVJqdyQ}zpd3f#ilM9?u)65hzx{#HfzP$i}^B6odbNWlMAtciXK(@H8 z9!J%)yt`khu<%G0zuKhTM+yeb4=C9`^}6`T;kki8GSfi|AzBT^pb_;V02TC}G%whG z9unL}JFC<(B>Zf>$h(@{oIuB32>8#UDhOBPQvY%!S#$2|bFql|fuZY*@`&py%mNDH zy!nzAf3O#%atqw(oZ+y;#u~ou=MX^UcRYBEChPP;zg+MkIzL{o)HGKFHkhQmh@7y0oe2k zWIhmC0fZY%IaPYoWB;C#c)ogA;cGF!H#;&!bVKVXpP+-#_8Z2klT^gB@?u%XI=LsA zh$+=AHxXQ-B>;i+dk*nZ7O;YQDS-yF>_UfZ3TxZ*c;b=NIjpgZ~4s!h}^weDD-1k z?90GK`Mn#0Me>~=0~4kRi}J~N(dB2Uk5Z;_BV@QS5ihE|&59bYOp+)=dU6PQ(tgwS z(s}5K4kZwSpZgar?-^x4Qt6*v3G>+3D_qPZPMPIjxZXTqdh3LB00jmyM3zXZtX1Kk zlUGHA!SK&Dq(ljOj+f5W-tVaH+g_~=ZuKyn z*Wg&?HTTNi*7|sycpMxt|AbF=z@=-zk!n+wnH2+bg7}5L7h%O_qW5WeO@9iba^mJ1 zl3WeTjv#r-I_quSzGz}AKRCZ$tr3K51;70|Ti!o3j^mrLy`G>MC0NZBAZ&hgPk`6$ zHcKscZ!@^Wr$qVqat|!4B0^Lp$30boe)=P4sB%f)=q}n5`kvgK z?Jd_#V&rX=J1fV;M(YksnY=V!<_}A`##$9Vm#zLxP`MECJbOi9(bYGA zRcESK!ll6&@uEQ!uMhZsxRW>z-09@ITgSlBJTI5GF{a$1YgltVTc+JBioXKOE?7$o zYV>at6KR$_RChfyiwodB{dQ!PwDAPZd7V)~|n?2lMf^hrsGW`$%Xq6}m zC$UC{31QyAYmEQK(daegpzv%Jbi9d=cgIdcF%+>cEz%W1_ju9R#|boyJcY{h6Yp;I zw`SVO(@~kADt`T%$}@yOa~Fu&Y#qtPuOu;;0cqOz1$_I?KROG;!qYju2-OGnQ@r;? zRp^h8xPH^{R4R28hTbvpZBw{CG>$cdVLaRJI{`c9E!AEoz6bq#Bfh_HoXoUSrK3tl z;SV^TYX0}ie9rudu5M&&h?WrsPuN!l<>QB64z}7LJ<4mS3LYy&B2-0yW07^S%_6Vs zMHu%HVfD0-^U_PAVC$8v8_Qj46F0nbKlJwk!4>Sd-Zy+$9F?O@yBE(@(TR8r9wcuW zeP@F_=8&}SN6{l@w_~6AeR;jxrCv=`1p{xA1mYkQlEC@xdWpx9p!%v+1S6wQg3VRIuGIR40Kw28QCi)kCX}FJrXUQ{_vqz%z^k z`;tFR+5cOOvJBTNgU?1>LL~I(ovb$kvoLJZ`!wB^p*Rxger&#Yb2M2X(>pI38A40Pf`|5XP4Qj&#gb4oikjf6f51nOx#nM}Cg*^ZcX{3U0NS zT9~j`%QsfPf$e;RZB1gv7mk+B4%IpG$oY&cj6G0ea@47n!RH`du}8Y{(+k-_81@aI zDn+4gWAW6>IL9%>c9q2*f?sNnuOVraJMErv&g-SIwh18hK05wx=b&8p>7J%~uV<75 zapxLBC3tpbp^s*cS^K?2!iXz>`nOK-D* z-s0SR57)ms{l#$BonHhA9w^nK?8+Y3W@XFD>Fc{ZbVx+;ipqZSEX-mo85Fa7SC_^u{7p z*rNJr%Jx`_{-leDWhv@{dsOPipMy#FqRhbrTn6U+H8A$RM8gc*-+fQLn?SXT6BFPDjLf*3IOBPR)c|3rj*M`gsT3+zTF>Ke=b60X`%j)BorM= z1P^iZx;(@8SqvB4$;#qFfKKR4w}f+@K=ew6M|--)6Ys8)HdZ%u#Jp4FkGt2u-D*=P z5<$VJ-1EhdpeRfA-Ta>dV^C~Eri7y$raSJQQ;!xHFZJnK2CVqc$+yM11_@5C8hL@? z=V7F8#yhS|064q`@XruZ0~PCm@cw`of?dRsKhB*w3Z|UY4sD}xt*ggj1q)Upv9ae73mOv1Y(Fo)_2!PCS4EA2V$RmH5 zRYV6Vh}{=rO+o9t9EWNTdG8ABYf`sey) zrpuY%)=#AbOO%de)Igo0BU2(LDSV^5alJ@9_U$RyO;^4jk}4{_XbaXWstaiQ!mrB( zEnNXZu@{*ac_oTyx_$`=&}J0!SBd3*p4vF>@U9vnut&$`R~$JPuNq`LKA-Tt%hk6J$z%~1%fsJ`~cx*p#rbHw~k0{L==R27uVWx{9e8VO;C@0;djLQj2p zDropg>Nbz;mg*Vmb`pJJ#x5#YZL6ag1x`B2HoD5Dfv=Dn+T*BOQ2X=su@`+b&RsWT zbrtM1PL2b(XZTo=?^^sFx@OKFInMgl`NK0`%eVfiT^1ju3WbWz3zE*Cnf;zTh@_w? zZ#*F%h~IqQ1NG_ed%3vw(0|n~@jM*^rPt|6F{ty*aw>8Th3@wts1v+McNjR1ABL({ zI@Gymyodg{s@yseX2Gl?6LuVOTeY<|Mu9uSy&=4jcRtXpd^+0eN_{h!kGJSH|Nb+4 zF43#js-=*EWS==v6#f`9dpaqgxfOvVe4?%~OZIrt#m|6oe+>>Y0=Vuh7 zX6Y$;F?eYsjR`#$kica1>F={l<+&# zky00jUw?iRm%eG&4ef7lwRMU1%%ZgHmvQ%a{^vpecE;`BJ3rq@UEKb)Jaf&ara6gG z)+lbesCl5#ROv=e+V{xGB+(N#sc%=(XZ$~DE(}sf50<;@7DO&jwr;M@Ty(A@b0Y=K zOI-pAPE;qo$jTGHI%T_j1egw{8d+g?Ph;0i)(vE*W>FvyQ>S&u=)J zkAcgUo$h|@pVf!4GShgF&9IdURdwy*Gh1_&xyOvt9xko*2ez@lK5)!NuJhJUm8pFP zPkfeEy_37nQg`ouuXNpu)XLW%abz{CV%J zbIVs|uTOa_CyHHtJ9ketS!fe<13y?_Pu>&Tyisa~sjTiEn_T;{IpzxDoXr>r+DChr zS_fuZq&2Nq6nD^d!%MAh(XlU#0&7`0IlZ$k9AYFI1~jjz@ahNe5g=A-Jf@6p7#KOh z_a;}hhWu&#+bgX#v<(6pw>P?SN483yyH9gymuHO^S4n<+KDMekS zC_XhGeVZ+R1rpx=uPh<9InFL<)yyY;Uyfch$7mNyip~z#*8`iO+ppVB9pW}tPMk7P z3jU^58*}51jnUGqQrk)kJqMiwHICz6kLAff+eEbL?QUH3Q2m*DtH%ysh>swaZGQD@ zjSV#j$M^IeV8L+$E5zP{ zaiq@Y9vZ8-Br?ARWCt72YTqv$$)e`HC))P5hIu5Z+?^pHAt8(3k8z^mQW2MK2p>Ax zM!)3LjEZtD?o(MnuOb2th~P|bxxdXs_Mo8aPzmR!C?9`AmcV-vrk&}i0GeMptOcnw zEr%<(b^6NPlj;3Z{94vd{$BY+9@wOr5=!F88;kQ-+nSaA&4qr?@(zdw1FNf8m27_V z;-jZpQey0yKHHkz*tx!c{msJ_2$tQ3NLEa5$k*Vdv2#AKW@sv(nWd9uaHvneOpmer z)l2H~k6tO~2-O!!fgT4Mv#xwgIwANmn&I26w`CkkG22zG(un@3?@-%^s7D>oXZpRQ zhY`@Y8>`s#HhNn6*7|r5{*CHdEH}MS@2?MRTUn3TPyDjr6R4aY>5>=`MXeGT~tKvJfe=_IBs{FVYaOOU8*LB>^(beQI*?|9iCqX zHgRSP(ZbYl3~3jhd&~*DtlgTe#aF4BO=h)iv$}@wBAd>@RL&I0sWun;x6;j2 zb*8hSn`H_CmC{YiHEV~)iE(OTbC++A zZ%;7;MSX&V`#@O$f+D?v-B5m$^LQ82p!n5g=dC(>?HnDm(e6onN+DWLodjp7pRhJq zo;RZ(m`@hxVjdU@{QMvT;G%J5pzfdJQes#Jme#nLMMw-Udp(!tL_H)WRcXd}sXUUV zopDHz%wkw>acU8#eXRbSM&{IQQspS4P*F@|o_F02I6~Ntv5wqv4)YN?*D#!{Y&PlF33BcE%eU%rL6)>v8^q5uqpo! z`HgMkAygWz+o;`+ZiCZc=~CiAQ#J=qoPtCT(fmkN9l`sA1hG78{&jNMIZz(?Y(HAB z5PW}cBbMhSO-o!Bov~I03qV?%mouaJ zJL5^72~M|%gtgCaJpSrr_dw|Qh`;3L<(r(e3JD?GKv+)CCA+Rk9+}|Ms~MUrTw6up zbP13Jsym;%o0lPfwE)^v(tTQL>;T{sQI;Vp!NVh`v}2rQ$KnERY1>g#RoACXWiQx(m)7 z>UK6rYfQqu+23(QtaVvWunL$fR;S!Y7Xf)2(F)!>aAW`MyI9sk&5V8uWg|>WJt|HY!alJW&%r1&IcM=$~P&idA&RM3fhpF%8x>dEsi1bQs}Rd=R1}N!bzV z3_-E#unVaAncZtVIM|@F-g_L+iP=rzParA0dsik*0iWPvD{o-?nLk@DH{|^@_dG7A zW7AWn=sk+(sCa{<`wo<~dF&25_*=WFmR(hnu?l3qw;5(0$@yax-T;vzNIBU(!V?0i z2YuY!E<2J5so+0M1fO8+XSdS&ofn8yFx%j5+@U@yy25PK$L&TPTydE_LR`IP2U6%a zUl|Ro0uxKaBwO#z0@$h{P*|aH@L(5B51}m6?>&UyU-2605kFGwaOdx3fNe%Yn|e^$ zCL+7p=0orCghZ;QI24{0bM6$&|40I1Xn#QlG68YmV>QvcaX#p{D2oAQnMSYhF1G{l zm5o*a=4MoubCwPq?jEW#<$g%3tg}XJ6e{GsgyPItV&@w73SGusDKp;X+=PL>bzW{9 zLXuK-R6m83U731dn8=}(%HbH|ZEK7MVl_UghFB* zgwW@c_DMdFrzq1kw5EUJ#nAMhW!zl_DGGuj+e>0|E^>#~$WoiY_1<2)i=4lKnD7{= z3T9(xA2XZ5AL5~PswJ6MT0q_REK*aMli+E6i@qG&PxroHc8%NP512_j7KP>R-zzes z4x+>HnuV7P26c}Ts1S}6p&%<-5zN8_!Re0o^2j&HZVKdz_t_>(e z54cC-={Y@7RDT>}W2UQRnM5xaG6_*&wl&@*y_T?~$+QR)Q9&3yn#?TF{Wu}G7!orJ zO%&#Azyq9SnON_BFbN9)T4&@%}_k(6Kns zsOdwg&GYx>>QAIv1Ho_L#QwD$=&GoCn#|kXI`w5iR6aW=r#PVAYl!epVg&?Vhk~iq z&I8vUsFR=z-l$b(^aFwBUiuJhQ$e}B-*9QLxPXq zC-Oa@92>zJ%h*|pMu_~*7Yb{VpT7dB ztoiuq4KwxzC--3fN&a2leYZ%!j}!@VEH9<(E>HWp3)(UD+dnT5w70((q!|Fz^@L1) zUq?`E{U>9=7E0m;rB)~RE#FR6JgTAr*?2c#ja>dL@(YSo20&R&Af^wGSPZW_yPR?P9$}zL z2$3`bkJb(rQV7iJ(evWQ*`iSLGSNSvk_;}I65{v2g^f`S6eR=t5s6QQWcDeAkzd7* ziBC}w;HKqhs0;4#%{6JK zIM6g%4F1m2y8Am`e%{EXx^o@8><8s_J|*z`DYULr6(^%NzmI_{c>?+B;L#`u>quqe z?W6Y(%te6k%>*_>=2}5-T^;pJo~qML-ml#$?#Q+) zyo9+h=P5mv+!JN>P^{iqB$RLYDaezZ+y_2_0q<84d}#UeX0MXZG6X70p_$*azrU`_ z4zG7tR}O?2s^HQV=@M?LF9Kzi65pHcis%p(b-??eKjXm>#8TZ9LQz~)Jf#AVI-lyI z+mw<^d3JA9%3RAO$0m-h!{_LHT$V1r6pe7cXLN&Y4l)zI8p%6iWH$lb? zM6F1%&Et=4`I^aAv{)8!)MgKD9zVqP#g!z~($SttCrjccNUkauCf zq?6rrPpQ<#s98;TK*ufR%5|~RP(gv(7!>Dkx>>1YAUkDNENHBi@jx`>e4Hv3fx{)a z7PK!x7XNTc4vLCv;Z2^;n+t}(*GAu-aiuj?j&Z7mfCxn+-6OUoH|5}5g#gP}kMB?P zy(07l6ObK5n`eydpoSlx?t4N#200QEoush;4q;<)lqWuR!zJ@7dn|2*N*73XEx^2NrwuJ!37S96>~sg zdORoEkSI$94Qs@ZG`|k{=CPTopu7^p#hX?ka(!!m+=L>KozJ%p5%C^MT5$f*8l%O9YXw9 z9a2kP^}8YKeF@4`+6LDpC4kes3@03jXjiVz17Pp@!VR-?`NCb{fLnz#Q5IEUb6>5~ z$0A^or1u3N^W3S zytGa=;l`?M?LYco8JXKu;O&vZ?w11Cr^L~&gU2oNl@i z&}~`%ol29rP>~RPf*_H#?T}Dt5yPr(G*hU5r4T}S_R|O;+OoHx)Yhso$p7`;{L`;i zYz^hpd19py}rBjsQT5J6h+yQ#F}iQKw?Nt*b;SeoYhPCA5-p zP(kZR7t-7nctKe-&P=D|)cNs|kZ|{aGKyYGJY@w1Z`}WYk$d$}j)u*aDaKeZqC>!F zvk;C2hy-1?Va$mQ_>0PWnUJ)ghAu&LMVQbQqqI0f2M1c-To%#A93l4vusK#_)#yK2 zhe>4B9s$a2A!?QD6nIygXi*}WWFtFwKUUhi%eam!>;yy72v zbd75E(8vSbU&T@idR^je?N{~xWafQi>NqzxwaUE^%$J80C6P_%ns1Xxf1ogEwCPFM zj7`2C(`sr}X>{*CJPn4*G2XZwG5WMv5&j7{m-9NO^vqFCDd%e(5;F#k*kA1FC&E`0 z?Ca-s`(B2Xs;E7vt0rD6;5n&rhJ?i2P1x=jlzfk^J;DHLJVD0_yo}%H z!-Fqs0r>KqM?-O9*~IUXdhvJ|43>#KNb4e26b>udJE#o_nrEb#2 z-0YH0-9P$GA0DA0DDC}@kFk_Xg;Zvgt77lw<`!>utXMFvp0?qht792D!Lwl!$$Fad zV(0QXFL0Lh1YP)i`+^QPK{tMm88qdM+}e3NDDKi^_knh*d?Wz!gC&_QPt8lOu9yuX^^htt{@wIRJXw< zKUJl}{)rcp&*v(pp1WpyQes+XMz<~gz_Yl~v zI*GN+`mnofMzJkr&E15VAXRu1XweI(Crr-*hn*8Uz+&GXSFVuyL~GMyZ<@ds%h<#r zl!?nJGv6f#gj|cwS}#SlrRCB4Jo`@v%4h|3We8z#V05taORkXJmnZyedO!pT<3GM0 zyLIn12@cV!n<1kwmsm|?xK5RGuJGQ-X{WY;$CjEGrvUtmYNLv(S=i4z4&IRQG?=!E z(V@J=9&6kLBAYVn-6snoPiD!fd{Cr3f7h$3H=nr&u^2??;(BZp4#IVSoK6x3&!lq= zL@)6mj6qa1OM~TIR22mY4LklI zC}ny;2baRqW9O(`i+iVe{w26B9sl(%U8rs!-_MA_OdjQVoGk0Oz7D;jM`c5kYKy4I zKz#1_dmbuB@i;x<|E8-^y`1!_T#F(O5&eObq!13@SOE4o%!N+Yqa4+5V9m!f9u($c zo~=rLt98%B`RJ`0`OJFxqNc4Eu2c`}y z?b-|*8+TOme#6s)Y>Pr8dfyXGbB>;u=tAe-7;L)Ef}Ct9yw-pO14vaq!r{7SHm_#% z1x2Y`{~H^apmjLe>j557yE)Lh{zrjxKtgj;5zZ4KT%$yZNNBv$qcU;em)0y>m|)cl zGaI08Ds27GDg(5Gch@X(1KAo{IYHiegoye(6E@F~| zGYzVF%3C?HB^NJB9P)fUbm0B-T1YYkL+H4Y^2=}S=UAHB0B*W_g@lMDrp~HHt?5Bd z8dmO(s8JB744nQisK1F3Cp)1Ye4q$U^cVqY4~Kg1^gMR1b5Lk$cn)0U@apy>`={jT zmJ4v0(-2OWemgh=K<+m4%ZanhC)1Gw!Dckm{s2xY=AxYC>KCB;6ACCGH)hipj@h1) zD;Vk3ZwLm(oARZbj4j8{;)}A99qYeT7(^mQj7k%!M&(~)~Hxj>B zA*xk!u|OYoP&xkOIde?YmRFG0GbCBfu~QsoXU-QMn}2<6;SsB&2U~g{X>DSAz(Ku zXV{*MH5sMB|0JsXR&S-zO4W^irB;7r^9IsOe5CEgtPDvTWN|bHUOysFtBqf#o$M9iO>^69}Ez@^1!=rcH-G zfg(oe=+z|(m9N8R{?u6&+ekD* zI7&SZ8sv_+|1R`7P`!xS;-K~1-*N;3`>C-km#8`U;ZLC%Uk^qM2(9tx}qOP9oVey?;j|*tDv8^!&MV9};5*UxZz-U4X)~D012q80VQK z5#3AeP*s}%`s92B|B&GJo#?H#7w;F71!CU6N~AOSMj?h;P{H4Hj^Lp}6i)n}Q+7|q zuAp{AS|lxxi@MTK^uny$v#}k994&r<|F0IvnUvrpxIGFH>QclKJV*Y`D>!9(6pFf; zaNaudWc^%4|2Sx1bJx2sKp6UQM}0+(vz|^Wmr$4L z`pqOQ!B#GG2Z;SvQzt+bzu%*l1Zm|eUm;%8uWG0+YDVeL_LQ2u+#QerPuuGpPC5{d z_I$nnK#Ss1BBygYpeZ^I6gIY*{UTq-;h`zq(h#Tx#2_DCR(XHO@EcY78=k+ldcL^O z$;TCc#6E_W7@Haf2=E?#swOZQDR53|FwDe`aYp@;w4k$@AD>AspXQVi^>)XuIyvIlG0ygQqfV- z^e2k#kiM&L z{uNqK?w6(TuvG+~_1+>#xToZX2z`}%w$j;iTmVf(w%QyIT5Z;(;#6+(qy?+o}&#q2Z7UZsincHAd-Y% z-!4c!V=T0I1ZP;*3V_T+iUz8ePJp=3e2{Pao$|u|aV=-i>c?b$j1hX}c;Dn!XpP@E z+8N}JPkP*+GNh`(nHM+~l17VR*PtuRYad!f)F~$?f&TG%ed6))bDNL49#2WtZ(ArF zi>s{n{d6yP5QTi-2w<>J`$^0yi?NSDM=GU%K1YrJyEum+d^^P4iDXE~786EY4Sn$o zj4>k%rKgJPeWO7x#E)P+kPGdYGulViP8bUL_ZKC-eZ*-ZKXE?XC?A*g=SS6@(%Hf- zTKE=-MrmzBvlE2#M@4{5NveMS6qiKJg|KCv2j^76a(;baw3Oz7z$e=&k;5oE&_n{d zdW9(4^Emg+cspxzrwBevh&t(r7Ng|~&pn@RV&~w@K4RO6=qzl%bmB8y>usKUBzaIB zK?>e1U3m)ww23tp_Km2sp+I!74=a^%RRUjGI zGH0>SRNYnq%;Uljc_%9yt;d}ULZe*LiV^T>QkoToIQCMzlNB&8?76>A^_%5#59S?O zJa(}$Q+DZEpkiF|ZG&Z%#%xsLcWYE31Q5lkwZ-3v*6D|R`&onGc@a0{X=VV?%il*e zcWyB^26K}hCC=9-DL6~GYD3KZ!?XlLVykYaNBhCY7vvu2?y{tq^O`p{JlUS%&iwdx zZZiJa9>IS}FcyLyl2V$0Bn69`;Hj~M;QFZZ;c^3TC*BpYf;-^xuw2I!>W2?p-?2+$ z1|b>2)>VH5Yj)Sd%EI#@YSWs4Jv;d_xO8 zJ%}@dm>HHSrdFuo_~5osBLFX#WGDi8WNKgi%JjW-+rmrZhpXz@H+7RX|D{{6%Y$FJ z))|_qaSiR1;5ol}`O#7Pta>JmGOj55F*GeI@*4A zm>vr~G-K#m1aI`;0>YGu&1_9KS7XQ2xi>;)8oy`Xih4Wqih!T!P^5MQsC>LOy?|nj zH(px0%RPF8`YcYp#Y>9fH>&&JWKME4!U5dZ4)30f79h1ClYy6iK0;#kJ3r+U2xL#W z_ld36Y2zqk-0ddRhHSapEa+~w(znTEoX$Eu3y$Jp33|T4 zO*-z(USL3CBlmgNEAYC3l2xErHeJHogPP5xf#MzJv5eHGTF|#FcKt*fSeR{4ZKC>P zLvdB2z#;+Cx}Sby5+8)X>DE_ z4by(erA}CePh|`~6^aHtT_dDd7$w;k$a9X8qcu8$mx@qrWq44(lQiGW6uvbqErYw) z5pY55hh$$Qpih@DLChp&S6l*W7SHn-TIkyqEP z_A2tuoFT`kjn_XNJ~lb#iXyzGVhMQuj%cD&!P^a3r5>ZGQMV&<{VBuR-F|fOonA-} zw*A8vSE4hKI{yC3+BNU{T7{$ATN{Lg@e*sIT=(HcYSAQ1R;{92&Z~FdpmBY_o;7t0 z=w%UeBfylZh04_0RR#eZOP$v$m|u8Ec{i5!3PBk}?2$`fv?LVF(rumL2cjo#X@2$4 z+Yz4jNoWDK9}XW@7Ow<|0T)^n+({Ji*_h6xE{b^_#2~Vu=R{0-VBYhB`=sSV#Oogi zy%7W?c_Yu(1&oWtdez47=gp;q#>XpWm<#I%SMFn0YJrqoTTGuJPs9O%tjn4px{iG8 zrNs52lt=phP0({v-)%hlV)%pj`!ia0FaYZ@V=iKT=SHla(1$w18}R_47jD!02R$s17rd94er>Ab>86zCvA<={r5kC2M5%dc^gwlU3#gb|=8#TKUbOcx_Ts6>9}l-mNhQYR9nJ^{dR#R9 zvl_7M$noya!U@o7-;k;U%464+=@%YaZ|APLP2DgXG23DIz&y#hlck*2@rNuU#}Fm9oovO&~LesjCh1> z@%S~Z7lzLAcgfUME(LeTvM4%!@4XPtyxY9Rk?D7Hi0}1G@W$}eN$VOp#%X;ibKxi2 zzqKRUXzv_0-sQ#5o&NmDIk2?G+$V7&dfjyJYCQG)&%q;i@#I+hLoR#$Zo%2B@^ep< zJN0D0D(Ko-yd5IU=8jRQ?Uq7wyDW+82t}+ZaNRAH3xno&Lq}!T16-dhZVE{C67u*< zNF}Ho9kqXcx=|wEg-j_)JRZT=W4;@7f#p!^<566M)=UotF5NSDAq@7DdW7 z#*gxMGQuYiR6_YEB5#~f-n6V~Yt>7+VQhPz+>y0EuwS)@2bZM4r29%Ti}f@Xl>u*Y zDW8#$>;I6OqOeQ@waWCWwO{yDxS~~ZlQb+Hm0Z>3yTZW7GK1ugjF%-#c=PbL<{K-` zqC@kl9dE|oM@g0WH@YEsE#Y!&5u&Z~_cmX~ zv@>Q{UuTphP;nvX~}7j#zz9mSk`OE8@|mLM|-*@ z;nZ~TBO7Sm=XR)6gA={S3Ldb&d_0lEfK&-}q#F+v5 z_8r#^(-kl=Fu8x21Pz7zKhMZE@;MY1}(CElf0og?U?45AjKVV|G zin6Uxaonmf2c~N0om9qb;x~o{_8#w zRpmt-lJ#=Cw}IzCV-5g-O9AL+h@`NS9Z~PWdkWZNAmq!TifA(N^B}9-j>e5fkhME> zfFSYsoVXM}tbCykFaY!oNGvo!wXQ0Q(r_vL*&p=v4|c0aXCWn|1#gjy`@gS55xeu6sW+W0 z(YWy_CT$B^nwFpgjh7Vtqt`^|vBBg2(^Wf1AG?{b6RLC=61hKc-nSMUhZ`Tc-MR;(Pes z5YRXtg+$W_?f~fuAQVqrGA>C#vZ;oyYdySj+5bP%R-kP~AZHRo&eS44tEE$4yt5v9 zxiaFICnEzdsx!VsE zusW_2KKiR^#1bbh%w&@RTs3IBv5;v4gHMu?xDP1httXqM%^d_Uq;B@4L7$T>_;P>O z>WnG~E&mcFS2++gprs>P9|s9AbNo3VD zASEioi|QofN1gYN{6nw8N9a|lN>PFE^z>*@FC;_h2MsU%JkVM;t5^d%gkL{mCUpS%M4PLV z_O1KD=a)NaU&5q$63Fjc+z!;Bw4yU8&L>7yBuMUNpYGWE#Y6ry2wnetaAiEf*a^U( zQHaN!4m&15CNK~JA@@XD)w7W2iUYvOY~OZVumGht;+T*s==hRK%xfa&gN!||0q&GR z)PJdADQtgME|dU1d&3=qFNirM#KFs$bD%LE?4|X)2^eGoqQVX0u(MwoN>u~1OCh|` znMV68L{N(8CCG(cijZ~1ZxPh0dXK#KW&6_wD!)1%Km{@gZXI+AqvIe@I^HPET88j+ zIE{xaVsrsj4E~w(;Mw*`<(ECw@`u0|>6r`?s;Ms|Uf~u|dbm2hi?}#N~ z1Qe!{c}`oRQ-6c}dSpx%Gz&bCj|@tq$4Gzh6EW}#zNaHHh{xTTwokLb7{8LSt1bHsSdBE!OV%5hyYJ(e;#2u94+fcr1;~ zLB7SON%EAyvCe^PsTRm{#s0zTU5gDC9Ok1hCTU3t-_EcS=qhxvMdL|U^<11+;vEr8 zV-GZD4yZ$JE16YIuJ!@Keg~cq>(0fu?C9L$-`NqfLYPq2MHj`Nb#&7TmP*nwYdDBu zj~y&EFkyFc5Dm8G(0-#u=7ob0DyC>))~5i_04rX7N*Jj19d(oyYRA z_#ZJysj=U%0FgB4uz72Ug zgPaUN=@v(be=X{^f1o#k7rpBlt@{{IsrM?lHE-4w5s7sHlDb}Ch(sQF`W~?i3 zJD*DYji&|qt)T|>||HQ(?JjH zKjb~hYv^Bf*_2*@xq)Om7pca_`Mwa$aNF}B(IwJE>1zdFE3WB^qSvX-^ePIU& za^e4;o-QC8(=_k!4Zecr$g*Trg?6o6V|7pcj4N`(0qVKa20tb8q!5_opF2X*YevEW zh3`|q6B*Whp7#|2IVU2AZ$l=z>KVNl6SMx|j_>cr_Op9Yv=ST&Yf}~aBEwIfvlp_z zZwB)PG1Bye1<$q2r;&>AFQxNQ*G73-2WCRiTh0upS+97M#%j^b^4`!aV*!3v4$aT$ zQAFqreBoti-^9V%U_B=sfl<61ql*9KwiV-_xc<-GDTGNrJ#fIxK{(PKZ0X#_a-NXz zKpUu1#@%|$$ zrkLnnfDHdQ0Z^?Uh{P8~j$Aj!WYwOmQ-IJ#aP^kd=9+HYTCVc?XxR)V)D1E}& z)r@GwAVJ7wJ*G_Wm1^7Bq3&({J${Bmvd@&1addubfISt6+&%-!)mXW%0JJot7eEbO z1ChBH++KTFbZzf}#2bO+TTX8KKL$pxK$${G*32T7u8lO=ec+?K@H_YP1V`(-JBW`J zi*DdC@D&Md(VIRg)C~*vQr<*6{fZu*_XMOY3Dr3m4Z$B^+5K9C!JV!J=|=F^s!AjWpvmbM6Lf4Yb5kzBo4ud!4wcN8!3oeyCQX z>gp!kZ+WBlb!34IWr&#}nVLGB^ibX)nVR9JNSD!WS!ZgvK)a-^tMWwRNqbL)AFPIl zEtJ`=6}u!;M^E(2w7BgIsU1lu+Ae%{XZBvZt}X@!2ETr6F+*)ce99dpKc#E(GM=!H zWu`&6da?2owcPF2>U!gk_a)948yDTu!Tv*^$D}Vit8h6Bnt)rh{g458C}%+q;nniV zRJkOp31u1*Fg-9CUw`Eb-H*+UL#ic2T0`W(ih5eu=J(rIpN)u=bj=f5W{qLGnD@5c zXWzasYF##6MMeIG%nN3o3$>!oX6J8ahX@ZGuZ7II57IW$bzlUHJvFK|N;n1v5?Xfg zNfmo@EOZ^a%H)#|ProwSZ({}Ww3Y+;T{AX9)F*JnpjaJ#fN*gJvd>eHYVOw>SQ3`0-opD8$q5y%Lj`nn%2 zVjWQ$V2^ur>+zX`@Vtww>skaP+|w3dk!~1lOja=6>G6G70PlNrsv-7+FR}78+;^iZ z3^|&|w}3EWm6FMI_kOM6DmVX-u1oNSDc8_rwqSD7vNdn$tOg&;zZ?G`@XX|nvQ0h6&R&lxx=qTM6U6Tzt?oOP8 ztH-n8;}DH4htFAsFT4hxo9T`BK$F!tMO#5{{IOdCx|Cvv3k}(7^pjj@_Q(O51^0VY zrlBwot}}hzKG>(vb5Wz^Y(LVf!@FdFdfniHTtSyyY5+A^4H#+py2oWX!(Zm;c**#M z$0atWPQ8_!3pLV0UI#@Sn_Zl~3+K&XX!ggugy$X(hCL5rI|eitN2U&k+HoE!zj+!B|Mgy7l;1wCnK?X!mq{bRZE1c*Q;{$8-FF0yKMrxY0A zZ~4|ZGZJE>VcK?`!~nr^>%u3iy@XD+2n^A}De6|0gHb%&r{K|saDp*JcUPlvU$Z^O zRW9HS#$Du!E#78m7b!+h>f3-1G7t?fxkyFX<3=<(VsR%fguQYkdK85o<4#k|UCqGy z0@jwYmk`9{{-Wk~V0BbKqdGSTr=?m- zOeyD3(eea2dDD24W};V-&EY;6$CwH*z`GcjPCiz^-TYp$JN3aA{0(R?=S$qxtb9~X zsa+4?)m{}zw#Ybf0}&<+GFlEvhV{$+7U>)+s(Hm461Y1LmV__gms-~8{kKK5aDhx? zGfWXEI|4ku1Yj>H0og1ULxwE!%7$XB_JwpEA83}`NC5Pj4dfnZJ;O9OWxXM^Qa>`*diR%vg~Ncad)f?4JM2$*iI zQaO(j2_mn;d@Y!5|0gF=o5+;`yDI)epoi0KgQn9J_E$jsM~0`v^(A6`aYfRvt%)j` zT<-V}rFYq~XQAto0nSZUW{86W+OnOgcE7&@z4z%=CtN`3qlh}J>=%Nwcud2FvLqgl zw*mvJ|Gjus^}EX*dJL~=|5kG`-iL=-CYSw2Zg={XYfF|r-?sLe> z(_W*IUtSl(zhU%H14^%3+J9NNMXLYT!tGOuqu_gOU-yjc?HBwD2a7rKvtn-DFQC8) z4DEoogRpZ{bLH@gwQCC`Ss11{WSv5LGrYUebtvrX-sxtgH(Tv+@)bmrcZiJ&;TE3WLkX|`+Wy;j_<4)z zAc=m$)op&Q$1X%21ROJ0zF~Cr7+A-uA1yx5o5iiH4(xIdkrHaPdHNdCP)yVS$gV6r zx|iNOGX?V)kZKY?eN@%2a2+N6sqLE{2WxVEQmmklnF=Z0doIafJ?TxL$Z%gJc<2O0M9uRbx%v2dx+~w`t#V?<=M9cYe*9UiN z#gIb&4`uc$d!I7+0AC7Qu1ZN|Q!qfy$1^@7gbsB|;7niGmJWJ;RM63WAt z3^8bk10rGp=YQ}Y3ph20tM};xmj38p4W8|BbX{LmIa+k=x+&{Mn|Y3W_YGo>2(4Wl z9nsDqa3kpU1^|^|0_vW)`5rr#AlQi^hI0ry{YejE)!OXyiZ-ER_|&2}=095~(v@J* zZApSwMk57UnHoH1%RG@q{GnWAqBevLnAN!Rfsw(+@Sds6nVNqsPatF5yc3bj98h%4 zpQ^uUQVdWVgp#fvnfVOwF&bFT~iKVTa9!!(yi(ZwR5;8Sp47|axLe;XNn zAq*F-Y8dzddREgF>`=x`@j2ztkhhBgM+L!Ynh4SU*I7?1SGj_< zV!plzzMH5pX2&1l^o$(~4jh&@+MuS?QGvV&EAyvo$oCu80li$;`6XzfHBWsCvmKkYyRgeR&@0x<@7gir6$&3vTB zUNIOY+=A*169)}y<&)n#nOFIW-a12iMMrexE95SbzBS!4#yuLz&LIKfT3w zMcmCshCElFyf9x)o zajnR)CjX|&j3is#vn>G_QsXV3C6!;Kmj;qbs6 z#=?k9M)S#tjK~^lsui;d8dE70wBpO5FZ;UPK>8(I&m$$ek1w)q5GA}>g#Yq4Y!bl( zghJl?qWgjK=iv2~3P|ku&DtRzGe|21*vjkT$oVW{5JxfWUQo^tM^Fik*}PgwT7_Ea z762Zc+utQV`2MnW?m)$GIU1Lt=vJ(*D$H;Si?xA}#zTDlF3U(~GZUS@W^0X$$Z+5e zSz&m&0W;KI4MLDSj;klrjVxl$zj=WFvg9)KKoss6z{U$^a6Nuq+j@;L>A7oJ8QD;D z)OFQ+^(rZy0qM|g6=XlWkecWHny7p)HDT2N+`*PFbv`gC4&Kp%pD}^fO15^>U9eam z*`p<5^R{%xar@PWdewsILi=xthoL_(3;}QvlK@;i1V96~olvb7(HTxOu!<@eRIL_-iAJHrtI@YfW+%;W@2)szmR+d%1AwPA8L8wmv4ZEz>HXoQ8Sf6gRvfWwQ$m0-(-a z&0tLNdYxjs$(4K_yU-lAJgg8dJm8f^%_Jnb?B8KY}I{Rq;TaPFfINs*`V ze4F8Wvat%t7C!)1tm4#LN&a5@N{#tnEE#Q>$tPRq`w4vaE|{l_d~GtW!LfR#_hSw} z%88N%D;YDujXwK+6kBC$&GA@r+XP4QLe&MFwTRk%nA4PZBF8Ask40?OL9(TmFF z%@XC1z6YAB;ol(KWb%5?Sr)nuOapGwtO?=u|{TBFLHtz2G;q7bhRKDVrLs;N*INQ4s+P2Pe zAob}U`ag5J~#j39^wDFEqsfsp`{{gW<<(6XYTnUuOFRHU~;#R&Va-)4cx)rdjs!% zcj9>?hb-2?l9vsJywJNl@-~=~*}MUW@!iPrW@`vLcECFp5>h>f+lDeYu6g5bOp(gf z08O@#EW+QTE3xCJ<5}kuRK7=_%wlCpxLdw9mp&M*(h2`T*!DS$Z3q|uTT#<)VtI+k zhFa4(3XYX0d49vUrmuYN@oA$G^J*d_4>AEHp|_j)_wlG7KQObhL@<5}6Tb@&a%olf z0x6MxuR{IEbX-+t(1cVivHg9gxT{}wfBV8MrdRs@D7DjXnEzTFx1(-qtV^iCN+h^l z)uk%>#G|mmSVZm+PeAldtRN;De=zR}aMh^;%Z3TRfzeoGlAedP#ji8)IFO^X zsk)t0R_S-P6-%xAO05m%07H#2zkE1HbJ3u+$fAs!hj4PVUnW+OZ{C;vgZJ{Zviw(i zY#+Y<;PEALfAP7Wu}D@fcE9pxx1YyXW!}>Qjoc!fy&=@zYU^XZ4Ko(uvBP3Qb&0^e z;54ivCOLM&ydd-|(?$5VDR48<1LTNR*z%36>KPNSXA2rfhO`dcD0RUO*^{^E6WBsY zhYm&a{*yDecEqc2VI3#TdMc1i>AD{ihc9BYj_I#$K`3z!s> z->N?fE+$2lK1&i7yEA=N;;Tp%N88couNUPVKQ!dO+AB1!<1nXh6FaAz-zYMiQIx02 zsqELx`%=$HwW3qxh>K2#f{H0gXN>0cZi``0S!8F~sMqg!@Uff4`)P4X{-x`I4{)k8 zp5^(GKgRC9O-F_%IPgYYV++%3{GLFn>y&n(D@Q0>KOU+OwiOe@!8HMmr*wFXbZ1Fl ze!=oMcM8e|0Rr)(?Bn;*z9w!nh8PdSt?lO0Tfxc+}I3{&(D#sx6l@PxNrJ=6(jg`!fa>5%hYJ8 zpKMphQcH1FN9Ye*h#1MrQ#r~!Byc_k-@U26DB?%s)jz0AdTXQdTJ9unH&6Y#D^?Ta zZNoaR=p^>-6PaG+W+^&39ZG--W*MxgtHp&ctkRke&20Ei{LM{cdTg1GBDT zKU2*f-RB+TFcnc;dGkQ|PM9~LzvNdeo0|UXW*~OC7q6CkdB!mya#^J>h+1L>FX$-J z-n*+mFQlQsB}wh2#QY8QZ?`M3B>46NsOP8dDVBbkOW=DIa{Y4X?|!Um<24GQ;5*pX zbI^{>q;k7yoGXrcN4PK;f7}8q?V>$o4E(-MVR=rL6M?(lYa(`+s!%UnN|89*xc_xw z)1-jBLsQ3+iTOK7IqeUQwGd?R1x zSdSei@@*()1o>Kr*)qAhjQi$;+T#OWPC@f5G#G|)+&n~>?hRyrn%vf^vr8Zl%0Sdr z^T{$C$=qFjW40TbuNZxsgLPEX8os#tLjGfiDH#-|FanWf`ko1c=itT;h?n#p&4z8Z zdFb~h)spUf-+=A$xM0m}EH&TArgF`Py|k+0@iYC-kL`>|`^%SqR3`Y&SBGW#4!$sX z7&l(X=)}64`0&xj_5*&`S<~d>E|D2m!`!n6JL1N=o5S~gzY+g*dU@FfAE3z2gCB_p zI-Hl9X%^js31}Zx(Yg{&zLkcCtgE3!O*-xQUP#3wm*M6@q$_0?DnI#t(f#Aj+aC*I zJDMVFj?NeYM~`pK7i(p_z8$B^D7h{h<{)$nJq#0kXT@spwck%|YwkRIAEY<4k~_ z#jwTKBI?%D(l_F?c3zgdb3L`H+WkG$`ne3zqGLWi4QhLG>9!5pd95Imb26bm>}x2H zIZ3dgy%g(uWzqf~|L0L%#fqnUhao;k&7<#ylb0LtqtmNorc11=qoQ#xyt5Z6u>aI- zvo^2}%Tkn$w^iO&MCI1W_CZZ-rjtMofx%Dh55o6iT~io>a#@ORQtnb~uk~a;_OAQb zaF@iR$i`<%0wTsD_W&+v3}Ut1lcwF8N3ue%HN;Azru5zQ%>}x*61QbtEB0`h?zI^{zQQp7 z?d!pe@atHg{qSwRuNSGmofw#>xbW9Np3rQ}w$XSnB%C|)!t`0(57?5>jhHsE*4TY) z^n8|7zpycFrnk*QE^aX7kw;6^+Vrl~Px9HO<#)#>yfwYB+V*7@WIPHFs`wefI}!>A z$+<#2y610MrOf;B=`0!j&SPh?^mKFPg$>c$cQZMn2?%bOHxlJh2{4;r|F){9cHd#` z>tZ!VZ++R#zfTP1$aDWp#*Xg#wu3Px)z^3bH2WLKWE&VX zKQX!mKJDDr{_vn7hcebS-!UqKXD*5BCtc0BC~4HV^nLCZUh8bf7$r0gH`E9oX90@3 zmZ2%s=#*v~UOdm#J0bEiarxWY`>}=-IrB_cO~ZJaxUjQvHxVLf!xr28NE@7d-D%g2 zfK4^;#i*ZK%V&_8th%?5pZP+_c6CV52>v!hQqrfK^x3Fmhxu10x0BZjRo`qHYy&y} zmD+TEwwx~9ZDylUKh>$Hd$_@dWTX~Y86v$Uae6^RTy0LW}Y8-WHR}{*T0Er&Nhwg`}bz<@Xz|wv^;;gaRc3Zrt8yodz z>#dt5r3>6%IbzE((hE3^{GnfhDebfbv$lJb&3C6nY;;aZksKR3Y&YHM(6veH9 zAhGrDHMXBzq@S=p^C5AexbYz8N`vgcx{fyu`&Hj+xQR5R%8B$a(DjYj=~(%80X>RS7<11`36gH?|(Zn=3{;Sx%J1azLWJ-orh{lkdX^5SmG$x{(Ao0){xWWr;U2B zs`s}m)emeunOD;Tjls; zRqj)>98|QAD@{0qE^HGFqgd(+N7_QAMYQij!77t;=};*qeUYn;^SST*l)8K0weXvt z5ALs(GA3`&FmLU-RS_&ol;p$op|;Q5?X-NWTD_Eb&&Y`3y)rBrR(`bq4y zJ^n3$x0Tvm6|CEeitVp`G;8ONg!tIZ%NZIxQU}<#>Zy$q24hV{z*LAa-~zs2#|+7f zg1!ne1HAE-_|FkL<~~1Bs@Oa2P7J%bPVnz}IapGB_NZa6kgE<8j}E@2I+SJf8}?|h zhW#K`sjlN)*33A_p1$&-L8HD(DO2mTt1%-!pQp4xA0wN_#);3nhJD@)n(HHPs>}I( zYqwN31}Ef%2=|w#H7eph%b)!iAlIaF5oKK+Ymg+r_q?2JuxUKc&!6oZ zy(A^bdMo|K<`>2jZepQL#g%VsLq@EbNp^*)V>Q&10U1U@rTckW4`1hLjO+d;T8WOV zd{{%8^_WwZ|7PczBGA;Y-j}C#O&GWCUbhN;?Gg83@cnj}@758lRaqnDPoCXJTA3(ilwC>Jt#vQl!W_l&WRuMAzw; zdu+a2WzJhyQL$lqt~b!uOY@{@>-{qyXv$QW>ShMj>8r6S(Fkp9N`fG6Nee6Auf$b{ z{kc=qk0lM9R$+0({*@YEWvfo-LiamgFZc3Iip$a~vkq84zhx&AmG@@iXUddUZOW{R zkXgzQCDNO}(z|ox;j1r{ul0Yh=zn{BgTlwxudU8TUOD-Z%Qo|q!f3D5ahyCIwIBJ} zny(WV#uil%iQJdfU+4teDmdv;egfHEBetx7<=LH%jp#a<^5x!JIswx-anuE=)+;(UO1H z{o&V%s=iKPm4o8S0e=O?fL?2bZT`0G{EyQ~@qD0;T-lbYULP}#6x->|I&`wMl+M?S zs1e>^)fltiNEMzw&TBH8EmakI<^72L>X%ZF$BCuB7zjc%lkf6=-t{yECP6pL&z1CQ&)Mz+(2Y`g#){Y z(cKWW#BuA{hHaHkbTyZ$OLI=k)aE}ORg_IwH|n#N3feQ+$cs}&IdRWks{FztK*mz| z47SG!YovrtMylDVv7+fH(Z9({8uGfKU&u9A)Wn+a4|5S-@sQUxrfqb#3f$@YN@8gq zss|DLT{HUjo?OL6)qPJ!%s>Un=2F4?8%{}ZM4a1~LDj;$-P~|Q-j2)mhuIPJS8nhI z@-bO%O4iEGdT0u$W$x}Ts*?71*WE;Ql^iDwal`$JPtT#P$JG#japhp(XsWR-@k9Rw zLFZiC5Rw&?8`PKSQ3B>LEiw%6wUlfmDiUHo_jl23))m!s)13C-F_BGkqPUm+zTsK! z!aBw0nx%NwY-+$yEDqX8)|Os=wnsX zQk+)BSWy8e=uhdhY39==j6rDW5`Xutc^UTVHNrYu%$ede{l1`{@Cx&~06CN{H;UV_ z&L*;S?DILYLZuXWRPc#6UngGk9(cSC0{M8JqjNPeO;tl!3Z%EhUb(0Vr}YNzELUsBu;Kt* zE;kCraRa?Up|fk3tz{3Z2wv%X8(l_BzIcBZm1dUA2^EL2_oCNrn4{~*KJb{D!Zmiv z&Gp34=b|K|X~c$rX_RUF^8O+~`1T@~^c=)76@KPDbBfE49~%~BwqYKvAAeM1igYe^ z@^$st(di7ZZoXQMGXuW*SG7hXDX5(9HA&K`p^XV`yy#@l3m@wzBx)d*Vy|zA(4Gg} z*LsWiAqFaD0)5rd=kRp4il$B*sM*byIs#U!duiC><$NF!Q|;D0zWQ<#?X-}bP=6|$OFK{ zMfFXv_z-~2%p6aqux+X`HH*5vA4}IFU#9mK#u!+0l3$L=Ewg+!+2R*}kDnVf%93(S zYIjSCV>lEG^K{3!H+0yTYzh;tcpp#4VZcinNmi!AgZD0jwyEU`SX&w}XuEJ}#TTeR zl(-5`0X8pXu2A!!ZbZ2#G&5$#*(vtwa2tx0Yn2YS6o}5ksC_^1kAo?ZK|}^*X-~ij zhhfu;1@+Dob>*j$4>1+Y`Oa$p9BUO4xKk(1Uic)^vljBN@pAhSd{j*II|e~lHMt-y zs88jyj1z){dPq~()^tSl``udDAp*loHZ=2M0Q~zTf|M-y{XScb_B+j;h3d4Hh5wp}mm5!2dCi7d`Ps)6%;iOx1%s1R^WXuA=`CkaoS(!41fi0xrNSgB*GIy;t>5on zk>#>-MjH!&&5A@aW9*8)$GXT0OY=lYSMP+9Hav3+G!j`X%U;+}o0x{7ThMcObCETv zqZo##>`%XCyKY?B4C!SUe(?T2TuT!0%}H_z-2M1qf@h>cwzu?V6?o)pwN4aE>E6md-WrP~Q5w@F z-_2im_P8EQ9QEZbqrX+6Ht8mqR~%uV$jF(;&mm>Crh&gMtR4{drE~x)VhJ60>#whW zK5~X0Nh&}FV-{AEKxIg=u6#X}0dH}+N^<2#QmqzunWb@oxYH+2X+Z^2|@%>PUKuR z!IJ*y6KUHb--?;;Ru{vDF%`~fz#M$obj@`=j@JiJ)mJ37An;6sZIfniHq00WiJtax z1^{<-rk*C6QefnsKzYdNt!ce4!I(pp6Xo>e4a9C@B=b>iZAI@50QScG)*1Q$zh(}0 z1S7N{K^0Q+IXQ3~sWeduVXTj1xx(<`K&1%^@?mJF?NXVz9_Tezj5mQucGvDJeCC*odZ!2293V(;eN&~QHaT_|16~tN)LB08t$ca)U z{MwwOnD3?-*u7dI5jfw6E{8QV)o5!$7t}&Z;dA@ll?j0bhi8gpX(A(8-48pyWIGqAFM}e&V0nq7rtjLwzQ#g{ zPDVVV(7+~cQ9Dwk+CXV*=M;uC0Ly9yZYV0>enEkS>;bb1?NR4UuEKlitHDR(m?S6T zGW7dbqUC@02(*0?r>Ax3K;6H2I+B9Y5YN4*<)~ksIb(SH_uB^}*(VMOy#9A#6Lo)o z;eu1d%_jjk=5)>gx~0Oq8n;zb`eIdDt~rx+&BP76N)M~izNO6a8BFX2L6zAnw z`LPncI8A4MBascK%1O7e#2fRqUs%jLDCLDN^j$#>xK6kZO3kgk{1NZSJJ`D^;BXi# zUDyr)_yR7K;5#8Jrz!qL7qza!-vf2sDqju;swY1}OMY06(sucg_yJnYtXVpf5t;qH zL#DBkZN+8#=Q|URnImg5Pnh~g$>FJsaHv*r>D18C(_qrdzdGXi;PX=-FwCDP80nP!>{Pxm2EDsDaESSGY?;EYVm*7Uq*lam~7+c4X6vt_$R z-{|F5RJ7e^f&z`%_`csYvkmcnQayQwBJ_Ih4^7@a_=;Ul@%=N)G-gy6U5qoDHY5O; z&YyQh@XJ^1?>rIbWXkYsIKfSj-tqJ;6!FABOU(i$Suna}H5? zMT)MjBILEs98=aKx`S&uv5K3D;xzhQI;^ZTJ`i=C+HY-V^$cIvoc)Bk`gp1#o|#K~ zPWeSe%jKFS7J;WmiOx$b4^iLR!P1dU4k_e~d%5NGDa%{~o(F@lgWTL7DgY2q@sXNfT z|Hl>eQ#uvWrWa&bGCoI%eB}b+nAE4%{a;Nf;l0qWQSTd#-ou1MNSmlXe#gXfQ9B_h zHv@I$2#^2SXBIRlghM51s8*bkZ!k-WO{~}q#B#U^fAn0VUQ@89vN-E6=BQU^TR@EL z09;=0qyX)g{gk#jwet{nZ&S=A>fAi~Z_9l>$@?F>e}zr^d;n*dig;sAc`f{QxeMU?_c?F2HjK6@f9lp)$oUn!JyG~I0hmvt z?I=oSh29t0;bRCvtP1#`8B$64gMQd>V=kWWA#DD<9E-v};8}Ln1TZ(c7-BTUY=+WS z3cp4!lkU%*Ged7}M}1z84Mr(|gHVO-o7#P`pl1sg%}jzIzYRx$#Bh@N;RWRO4AC`V zE2!YiaAM?8Or-dxpQ7MFfDeB-J&bamGK##A>)R_xd+$HL5?({4S|PN?OGOfk|NN-R z?4O$2{yr7l^#s-u zOJP(B+MlN4Ussi4^v|U-DyQfDtJ8@5D7lFakz4*Q>c1{PPt@@Mzj`VL%t8LX6*^ZK zkYa`clz&}-5H1j+W!;DS&jZlK2*XoNTvq$*vH#qlWGGxfy6l!o@PB_)$b_fb3}yY# zSRf-nCj%Gw-?07jvi>)0|NGkh`!W3gFiD$3Sor>qSv8DRkPVw@Q<+}8yM!cSWAYEK z>}k+7Lx9>=tO}GwLxc3bz!T{5!`Zi=4XG-zCoW;u)ZGXG;>hE2FH60Lmjl4n2*D{g$}?{J4i-Wa%7|HRq>@c@auqbWrHygw9lG$isGrBUi}kMy zpdyjCYK-vTk=F+T;|6a5`oAuK0vEv0vJCxqZ|4q{WFJhZyEtbp!lNUaR+Pq*7Y!)tc zj08bdhIeB1yv|0L%b^G@%myjEeyUWuBTfow0T(dROq2Dez^if)Ddui*k^=RN>VZ^( z8~r=XCmvAS4FL_+VnpJ%w>i#_nSe%y?HqkRuB_=<%$9fG^TAQ904y?YNszXR9WlAR z*YkPvz>dT3jy)l&P-SK7w=hrG^?L|GVv)^c&d7Ep^uH)d_tBD%6s2F=R9FJtvjD<-?TsvBy1oY_L0#0WB})T35<6J(#{#c+Q=);-QkVApsn-LAP9=l2W%mBS>uHimE@aVHbK zF{t)JW`mNAw{w(Dt#Z1makj6qyCxBYT4S`?Suw^@$SHh?-lSa{4IbqW(^;GpVTh8&8H%WM0Z5Plt$y) zqyfR?7WI>&k)lZ_1JX(BD=kGMEQ>>{G8DS%-zBDU7(S<<5yFO zpB1mTyq6^{_m1QL$QEp6`ID2>%JZW|ZsZU`pwD{50h*vV1A-sZ#D^*pU9Fj@Ek*5e zRpE1F0B`h^E6IOiaqsy7NM}08LdWkyHY9XS&y991 zZ2`$DLe1-QeB^ibV;Bfy!=Q@az}2E0Q>$_G z6+6b@Fk={!@BWP{^Vr_+moA^xL{T69A_-Xk+-%+`NPh`n@v?%HOtFk4;H7Gd#rPV@ zC2Fd+FeYNaH=GGq>sA;Th>GKYm&h=ej_ zmYI-w$vmsbJj60CLu8(#LdM?X>Ur+xdA4_ZzwiC~+qUoCw*I?a>l)7Myw3C3_uqab zC%oswe@PhB8|&knZMrUQSYKqI9p*51!Q4i0e$=K&2thgeUcJ*v?~*>rptW<0UOT)* z%$x}6uUvibtrKA_CPoGzueyu?=yexVQd6ATO;Q=LB(+B!N-rg%S)y#kTq8p6KCB*X z=6k5oGbL0&Z4iAE-mf-PYXn2#m6Fm)xr&T?W|lG?KJ0R4N>VO)HQEgMIPHZztfm6d zh^zu*VNHMprqH4|7`I6#6^5d- zY<8giXKGESB%e12Iuq89|1NtXgJndo!dy?jE+2dFUuqd41YW7Pd6(y|~lrAHsG2uq3^Yl(|bJ^GPt0fqBx zz|6!T-8L`T=%(r^uBl3)(j4Qm&g0K4JqK~6KMyWzFrn~Q&1fH^xDawEz1wLqt4}Y^ zO^=#SbWaUIXqJdlo9Rmli?EwVkKe?|^P|r8YRw>j&mJAo^HBerj!F&tYWkpc`Q~sx z-}Y3y2~7%dr!ujABcG>$XeWl`8I{K-w40NkJeU_@88hK2DYjTT_N9OqC?}SQ2y&%3 z8TAp_MWGSHU4w2$an;}FaLTuL^=WUga*?!Mg#&b`o98j!4JvN(iHA`$fXIe+@;;q~ zaXuLN8Wx5~5Z`1}M`Uw^;x1Pkv@?op|2_tfFXh@(4SwswwP&q!UIW3uz_vYq^5#!p zWbPbiJs%{(CY@$Pgai#IdRl@iVBAPnct72Wvq?0gqnoZ<8vZt`20kEfqW zL26Gj$bdhpRZ(%n&m?BcE%X&|;j16+wjw8Cb(Z7q;lH zg7HdA7DJ@iwuBpVF)ZOHu^T17N1Da?wkY)T6JbuJLRaR#2`&31A8Qn4hfhWI(&yy2 zKcXX?_qd5O{qS<4op{xyhdOYCAi+6Sw%*&=jlX{1ggVMLKlI}ZH#$;o1@j5Xmq@x8 zLuu6lzHxSa`LiW5EKKNVwY^Qf(#Xrd{}$sfRl542^Eq-4zTZkCxPH-_;>4cgtr~di z5JWndz21Dmpx{JNxC&W3qV97s#Ngh*-76z?J_1F@j>1R>x%hYmqVAI58>bqYTCK`@ z9aPznmRKX*Rh6qHofW+?j$DPeq-qc#vlUaO~Q5>b!A3-92|Gks1U&O)o-P{lHZOB12QQut9_a&DW+wEY)-ZlTo?|t= z@0O_XC^5ba(m|15KJ71c!Bry&Ca$a;;<_~ux&)9IXAt!szt{C$TvME)c=FSafGi9U z5v&3*xB#a2jC4;Uq6B@V=(eZ$kJoOn-V2atQmy4|eR^Te$&6_H=*h30C-V>+j!7+k zx8cuE{P@K4@gCyLQnC->AyXt{?zu^d)#eoOQ!IOkKhVXZe(+jmX#Y++*k}(#?onHA!)wr!Ae0R2gDr z-M({Pn7o78SAN9r-PPYW73C{GD#v!=+n0wLxLcfQUU5bqxx1so4FOR}X+47N&B%O; ze7A|K+arbks9#h9(6F3+m0462{^eWD+CGzbTwQ!h{q^2CSd-<%i_%%q4C0O}RMVv& z+g{1=c_0QWa0Z{UrRP;hsV5^0mDkjcBwodX9up7o!HsrLU@_GN60=pTo&{~`?tEfm zjE;W$X*$8SI#5deXCVH^LOzV%s$$$p#Ti!Y3DD1;W_$NCl7=EW<#QZ$V1*Bv&b;^j zu9|4GVg+PT#FL(9r?Omndjy?H5~0CGaZ`mWI)YCn+h%vlU*cl6GxJyzWal_QxrwF} zl!C;YfNfbopQ|-%vh|vk;*%8QwIpMFHGATlTc0~RMM_pno`mFOA%lThAhK|kCw)4=-Nf5&Mg#1oYxMqkV-it2i6>zr!9RIC| z?O$GYa%!?oa!tNW(x+$()@&ah)XNW}e{nSg1_=>_^C(AU*o zoe>%Dg*Y+)9@-S}A&7qO66i)E(e+D__zX)#>Dv)IQs*5^kXuJ=`VQ+q_94bk@ZHa5 z{w|;embcNc44DTU*QK>Z05O0HcZ}7G&0k!&0xnet_#kd}Yd3ja=kHYlVKCpb?6MyloQ+!Mgzo4|6Z__QYH7a+GTRcAM zPKRR(EI2;`e#AQuJ#Bl6qq}MB5LQ(1H!Di{+h3tK)B=mVp>oQ6?Okv{IWu2`#J(qi z2l^2i;^3*Fq4*2|h#B{PfmaaYgm{~oOBY`U|29*LHj))y{L4%+`@7ZZ6zqZ8=Mbxj z*qX!enPq|}u(@;Xt69!TfKB96 zJ*dZ4O~nD@nj#NuN7&L5`gvJ$(T}1)%n* z*OGwiXXOwlOLl3yYA_FW3y;~JkM6P}$-npoLCKnOsRIkj8p(KGfuCSZv=mYpEds?6 z?6C`UJ(Y~L<*UWRM%Z{nwtKjJS+ojv1}ovlJV9bZIkbDT-xDVfT0#vZ{z0JrDLT1) zjgzB#;^t*6yHXrrIgjzrz#~juBf)tvjYzZ_t$JP&CT*SmTcg_84Oc&OSpa&G`*F(S z!Xr<;e6*)`K*u|nP`|ey8ilguJSMoR!(OA|Z17{eWf^2M)#@nu8!igiZ!S^|qur9h z2By*l?vStgp2PY!g^gSdFl^~u%6QZer^5=>Vr5Zr3*GwTcepJ1&R)OIotc$JH-#UG zUw+4PKHMG~5aY}@9xQQnma;?wNuI>{6*jidPFZ)_)%TInfQ+rSGidOBE`?OH? zj}o0)POpj{1IK7F0aEKucv$KS;V0NIWQ`Ds*XuHH_oe&I*ZwHHRc)kv_6S%G(7{Lw z)55nlD;@F7OLsgYFiB8bOnU9OwA$3NJ8R(m44ay`*40x5i-1dP zw0$mV4Azd2q?vv-v2KJ#<&@NGGK9{_-pM@+!W%`bf7IJ5wnnk9nlR^vuYG~oNMQ&H zFI@SU8;3sgHK*NDv1MYV_5no-Ei!FrVN-s3*bkfQrk+R7n;8)Pjigc$F7~vAC4^hk zrYDWN9t5r4wvP}Z+OafcU=g#HllF8hnW3WD9=kF74+1stxwE_NMR_xYdygQv4;IJD zzm2F~uD6HVP}S=@uzjW@r00{Fdx4Dba+PCRZFhBHrY(#>PY8R+SG0zqBz##y%{gCM zy*ZXonA=*p%90JhP9`b#XOdRV_I=rCGT~)AcYtvZ4jM;)#;u#6i%-5JgYWfgPOaLU zAL6?Q%cI|Q3tc0g#d_X&^LG7PzT7amB9_di-io_NMWE#Pb)WWGfHP?G=lAG(B8+5|~&JpTrrvFB!UH|#&CerhvG5-Y>VRY4v+GZ)u4f5o)? z?Wv-($a<#Yim(3K6)sp%Wo9}hAcP%{=rcXFX1S{*m=`_)3sGSls@-LQh%F+t_r6#l zJ9V5V<>EPC+^FA8cY!sT?X-wzg1)D71%KP4&KT=^@Ehcx%^Bp&OCJ8(3g#ptv~`7u zszpSgnZk=}35!xu#6Qgx+#hZBdkc%bOP*UG77X|f-_x6uz5d3KxZor}>iQ)-tptHJ zmF^0xN}C=+(W1rzz6ma-3Hjf@AY0VP7Hy9DipLEsVK*9qB%FNVpnQOZgdvNp7#-!L zn`I%(Y57XD`qy0s8O8l9Mw%f$)qH#0SzUxB&tfRL=M0@7=itI10?(yLAJx>>*v76u z^t3!9rr#qx_(I)remQvdR|7y|H7|;5JVFbhI8dwDL8Ktcm79b_v2JyNDIn(564jle zMAKZt0v8hkfY!MatuGBtD$ zMz*cdP#dkUzjwwsZ`>nAsCy{csbXpE5FCGQEW%c1?4ff-1XIZ9*$i+#z4i=72!7=w zaGu=RyMpB_FdsOxOjI^(@rv|MfWavFb~A;u>UMfNrC{c$FupjKk!X=oV}ffJIV zsD`_qKfRrLFw4Qd{=7|exU63p3a|doTCi_36b=f&`J#y$4Xa1aVv;2Yj+s0@YTr7KiHbw^P4wVxNgisJ?nkfqX5DPp z>XKjJ;z(te)Ho$`psqF=D)RXu##z?`ylCA}eEVuvIwPKle1Gj|oXc0AN3cturJ0)Ij7rM=%oD($`8 zNCvhDm4(G12CF>l_MCQa&&bcemeikcx8<5#XjXRG%UrS%TB}>Xgtt*u`ua(uC*?QU zpL)1z*%J10y{bJI3w5;#N5@P34yraqT4AMeEWzgRN_R$=qmclPrBVxt!9z8xrZXZ} z7iS^xhs-4}cK*Qx53YaO#jAW^R+a8gWQYiI7u|55;2WY{lCMUEt*BLFy+kK8cEN@( zshU;_E9{Hi#QFTP4XF|A0h<-Mp3O?emz$MKKP-!8EQB*WnKb9IjGDW#nDzh%i@kj8 zrfyEylRk|Gr=7RTpDr-OY3B_>>aFGF=u9foOo=bgT@+dNeH1szB2)F9M)b;G%Th=P z(p|eRW!9R9Iq!PUJY=;CWB-jrmE`r|(AltpyEJ;)1nT>fVJu?J&Sp1F6(;vT?_AlZ z6)WLAu2H>~aM0ACO7pCgVxUb@e4?h~t(vS^c0yQ~_%}rn_YY7WrY96%V7WwhF4?h# z7Dum2rJ3iwiYbaXtfNMjh<#xEX2E8J7WAJzgdOOk^G_Eq?n{NOhVtPv*(2|cVUiPG z&B8unsm$K;bVw{14BJrO)%dVY!QT60lPGtg4^I!x?rBKw>+zKc9ILsxKjj!jK2lZC z)?ip=QzlC+zx^Fu28KJi4x8*>p-}2BZfmeo*q&c7D-EmP=Y@C~Whd$>;mtsdGAc#T z+>TRZ&7SS1HmNNuy`mvbT#*H`Zf zzh+I0VOSO~pY%AgK3+F$EKFD6M|ZT8-7N1D%a>5W;d^RxQ%(0Oc-@*44qL_lE($+^knPp z;cAw-E724Kzn9Cg_Oh#~^p7T3J@MUBU>!I8;dl9fsf1U++u2Mk=fpFJyA>J zZ=F^ZycYJgNl$)V%Viz5%(fbpLGeO11c$2LnBQRyCBdq@GuV{ z_(!K$2Yg>$SiNG8-_KTZ^SJ-6m&(lJXmxR@$JEm8Qo@Mpmz$z zmz^HXpdFe2=*oV^1+kJsn;t^1`|P!qIrSxoOn-g^sSa{ZZ<H)n5THL4RNUIO2MMhV(8|)4-yLpa$NmsKjmyh_-u-VjxGj0L!L}Tov zr?eBaBG_PWV457Ja@iAqJJ)H$O!nxrj*=zDFc-C5b9c$eSj`O>u(<)et2KuIzQ++4 z;YI%V7OP{l%gdc79%uVho@%ls7JOvx(f+iS6|2v^xB2qPszt(JaGsGS&qNcqghA4M z+JpR7zR2gK2dx3BQ^N2M$(Eam%jUXwz@&R$Ci@`H+0{0 zO~nnkzt+;c_h09~8xn=EC(-|d?B1)E}Qai4& zuTH5ALYjfoSG@3BZH!*r<_b!4dCg%ByWI{o8>IfyoCR&Dw`x@T$3%wu+yqSQAy;SJ z=!^NlU-mZMSRrgl|AYO49^r!p2fG1|$73>I%{BzAb*2q(XawD~E z|EYoX1-;^O-n2If>(s-!#>4J0WjJi^k;SJJbk%Tm^0u*1GM9Gi(TMfVo@Pyy7N5(w zPTR95Ep06Y{VTz^Dx@-lPGxPL)j!!Mp@5NshurePdC=M5OUOd9TgoY4t&3TW!g&)- z9TEoIMvBMXhD>Rcn!!q=%-y<6HQ-?2?ZlQo?LnQm-E{frEmNEqR;c1cKX8EA9A}nZ z8+8PU4p2pJJI5v3>lRyjaCYSKRiY)H*x5LK8JA@5bLj0Zy}{+$A3*mC_AuR|G>(L6 z_qnP?`SmDz=1bdC_O_Aj91{hCLIu+k(X4mHn}=Q2g5(BWR@6l*pgJR*GT}nR!!ZdP z?QV$kOPaa2dU}bqW@(u@bL3_!YwGmvm=4iIC4kyHJrK6mO~~AeVwx}eo|=|8SC|Gr z^WZWYjs+#zVAO8pspoOFu)dluG}@WEGvvg z)(@>i4-`E9(CW%tHrjmYagWEHL$AMuhg|T;Dg7{Ow!q?Rv#^Ol9EO|bdoB$D(y6QN zs0sC~zmNVkXiZ^MP_QN=z7{8LTxXz6L0wsJV+^;PQe?W68u_5*@K9^>usP$s7M`|w z>%wrc*plThvr3q_voIXFhIGsdJ601#F=bc1(|_I$Q40oTZ(@Yse_efhG+(W|tp|W~Fsqa6HhUz!T#Dh@x7XF=>tCpp+X|`Np-ugK z8=U$&lqS%d&R$$~pR0{FTVH;Ts5d&Li_vao{F2FTa?9O5twOLkSfmJ!g@l>l38>|8Icqxf3}Dum9D*e6!dd(0v58uNzhh^{WH-U8cG*ijbNV&6`CL4(#Tn2 zG|yFYGo%hlwioTi{o^5e5K2;Q&)sdPp9eF)<@^{7Z2Gzd<6(c5>IlG#{M$A zjc=sVXPlQD`G<2-}d z{&*)B`kPg;STD`$fnrU5vb{!@#8T!Um(T&`Y98dXySXyxAQAVYSt}!2Q8(Z;?X=OY zFP z@3=>KbQ}*IW7J(^(@Xlkw_~I@|Mxl(L(zxLZFn zvFx{BElD+-NPWOb9c97rL&oUvj$tY4q=%>*R4Lm~xqNTB!>qqltk4IgYMvze z{xyTjPP+%)_mq+9^qZ?|U%;vVsCcKrKJ(o+TON}~wTH%d z9qQ9htvcM=+$tN+m_bD;KtojFB?`Ou+z`~g0!b`5npw=_S}PTEyCy~>U76je1E z%T`&G#9(D9T0QQYdYIoFhRIp`u>QmFkjS%yzg*3-d8mS2LHJfv^WD);jVJau-PtO= zq>CPYExFX3zL&YuCp;rT^kE-h6WGQz7oI?53+|nd@ptqiE1hoI%`7TA<(8I&E%a z-B})&I@IcmLOZLg<+ZaFtWGiF*Rnzpd83#SlT}r)CVhG^USZ21@4E@_)^t&2QvJ_E zePxcUPUY?3rz;nibvK?xQN|FB zWgD$6OIezJHC%{#|50IFm?JIB3XfiTv`KQNJnaLcb$ZKncjn%Q*o|R-MB0;O4UdHc zP~Qy07ivEHf_0H^G=|E`0D`_Hh2ojuWn`&Iv3bw9oZed8%^Dsc@pA==>ZGyh!280f zzSrPWV4qq`;5mZo{a>!^xjsciePclTYQx{!VHz3fRHMIVsWPd8jA@Eo;vEt*6Pm1h z7<%6ZE%J&J3J}#b!(RGU_Ip+PHNk!cQX+S@G)FONr}Rz7|ErFtAFZNct?)Kb}r(>rHWKK>1>flU_PyIB3s+Apft*?J0ijk42MJ`X4>l`?A+T%c|TMbh2`1 zX9D%QLn&5GS)>%i&!LZ8MfASnBYtsbkkc1VluB8Z0qHQY@GNc2J1Ao(fW}p&J`qIf z1^Xlc?)V2xZ^M0nNX~wA>VMU+&v&4a5+S6Dnt;1VOyJR!)OYZ42uYI#K|%pu=r^9s ziMDlZWK2LGUo-G#gaXT-zeU^xDf_i6SF)6+z`3ombx;m@F)O%W#1jTh3vfesAJG$^ zI~yLRG@R+|4ic!5&6}-RvJZ^nF32d47xt|i_4mBNPT#&4!^JTNeWLyc(z)ve=6N3( z@#iPMyhLK)$o<`5A4_VO+p2jRST}TgrHwjL;_)&RRzLj3OT;_^vaZ#j_pybT-@NmT z``^6tF-?{SB*d92c&?>b%6Ww> z-%Y1VxSBlVYD#p7q(|i>98S<1BujDfc5Lz>A*vYwFba$U?VJHEs@NKWCn*=;roaTL-8qA+{uMMJ z%V{o3=v?9cW9b=2_P-s=P`!5KpU2`k`|t!fK0#yH`(8kJLCbB@t5Ou4M5;wb^!2=h9_Shi?|V6x-oKoAa@O609>X(X2BA+||>r%p8Q99J4%%H2TbE zJtCZVE0h=IxNal)lc1dyib7YfP>bQ>dRes13>iB&l33F$4%{O#rP#V%X z@|ET=!*m5A)!v2>W<&52wDeS&4;er4TA=FGGXf1>wk~tLJw##_r`$pIOd?vYe}e(6 ztPyWq8-JStfkMk2ZaiO^m_gtAKY`7nJ!I=&p&hh1&pUxD*Pa}CW~3}Rg@B&%->GIx zRyphiKZ)6*&&7fB!=$c#2Pn?iW3@k%NW#7?T-Dqk>YL9W#|=N3xzzREV$NJ8y-z_9*kJ<^?bcE3h}`#O;#$sbMulp@ zxB&ZRjrEZ4Ajb)VlArB7USbXqY% zM!)b|(BV*LGpNY2mUS0$ombO6*XTCB_p9F&0`=VU zgM0K0=gDtiHWvnmd59j^&{U2J0Y-mgP-%ZAJk2q?H$=XuVJ{DHiYp(1g8=)+_?@?Z z+#mH97ya)SmJj_Ee6=w%AvFKRqfgHy?o)iRcJPQagCbh1 zs7Af(90tLECI5l{?trU(QC-a?(mYrE9QJdayF6qb(*8o%6+NCBF+RAxbB6 zrDNE(NMUn-nPasiS#L^WqNG}F-S5)<2Vca5fHJw9A0ZF^Z+fOJ7WkryI<7PS!52{i zU*xMr^#J0=|3;n6RDhZ?_#FM`ztK@j5&)Q_xXG^n2bNXB23QuagRjHeFD&VS0=Txo!J{0_bFPQhqGhb6ekmBEj7?S~972(?(!T3;$7*u+f$ diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex index 76c01f2..82bf0da 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex @@ -84,6 +84,13 @@ \end{itemize} \subsubsection{UC 6.5 - Creazione grafici view} + + \begin{figure}[H] + \centering + \includegraphics[scale=0.60]{res/images/uc6.5} + \caption{Diagramma che contiene le possibili selezioni alla creazione di un grafico.} + \end{figure} + \begin{itemize} \item \textbf{Attori Primari}: Utente autenticato. \item \textbf{Descrizione}: L'utente può inserire un nuovo grafico all'interno di una pagina \glock{view} andando a selezionare uno o due dati da visualizzare e il tipo di correlazione tra essi. From 52bf7c087c361ed1841a8cc3bbdd163f613ded38 Mon Sep 17 00:00:00 2001 From: Alessandro Date: Tue, 11 Feb 2020 16:45:31 +0100 Subject: [PATCH 12/26] Tolto diagramma riassuntivo figura 6 --- .../analisi_requisiti/res/sections/Sez3-CasiDUso/uc5.tex | 6 ------ 1 file changed, 6 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc5.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc5.tex index bc56417..6942da8 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc5.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc5.tex @@ -1,11 +1,5 @@ \subsection{UC 5 - Gestione dispositivi} - \begin{figure}[H] - \centering - \includegraphics[scale=0.60]{res/images/uc5} - \caption{Diagramma che riassume la gestione dei dispositivi all'interno della web app.} - \end{figure} - \begin{itemize} \item \textbf{Attori Primari}: Membro, Moderatore ente, Amministratore. \item \textbf{Descrizione}: L'utente può gestire i dispositivi a cui ha accesso a livello di permessi ed eseguire aggiunte, modifiche o rimozioni. From d125c6223e4b4aaea38701d253bf922be3e71eed Mon Sep 17 00:00:00 2001 From: Alessandro Date: Tue, 11 Feb 2020 16:49:49 +0100 Subject: [PATCH 13/26] Rimozione caso d'uso 1.4 --- .../res/sections/Sez3-CasiDUso/uc1.tex | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc1.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc1.tex index 567d1af..3ddfe2b 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc1.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc1.tex @@ -150,19 +150,3 @@ \end{enumerate} \end{itemize} - \subsubsection{UC 1.4 - Controllo credenziali} - \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Descrizione}: L'utente vuole autenticarsi nella web app e il sistema controlla che le credenziali inserite siano valide. - \item \textbf{Precondizione}: L'utente non è autenticato nella web app e ha inserito le credenziali richieste. - \item \textbf{Postcondizione}: L'utente ha inserito delle credenziali valide ed effettua l'autenticazione. - \item \textbf{Scenario Principale}: - \begin{enumerate} - \item L'utente ha inserito le credenziali richieste; - \item Le credenziali inserite vengono controllate dal sistema. - \end{enumerate} - \item \textbf{Estensioni}: - \begin{itemize} - \item Visualizzazione errore: l'account non è autorizzato (UC 18). - \end{itemize} - \end{itemize} From 9bc9c97f6f3aa81e5c1e74ce3d6e5ff4b0efdd6e Mon Sep 17 00:00:00 2001 From: Alessandro Date: Tue, 11 Feb 2020 17:55:41 +0100 Subject: [PATCH 14/26] Modifica casi UC 16 --- .../res/sections/Sez3-CasiDUso/uc16.tex | 204 ++++-------------- 1 file changed, 41 insertions(+), 163 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex index 43e342c..542b9a2 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex @@ -32,13 +32,6 @@ \subsection{UC16 - Telegram - Interazioni} \item L'utente esegue una interazione con \glock{Telegram}. \item L'utente riceve dei messaggi di risposta da parte del \glock{Bot} di \glock{Telegram}. \end{enumerate} - \item \textbf{Specializzazioni}: - \begin{itemize} - \item Comando di inizio (UC 16.1.1); - \item Comando per le informazioni (UC 16.1.2); - \item Comando per l'aiuto (UC 16.1.3); - \item Comando di interazione con i dispositivi (UC 16.1.4). - \end{itemize} \item \textbf{Estensioni}: \begin{itemize} \item Nessuna risposta dopo una interazione con Telegram (UC 20). @@ -62,39 +55,10 @@ \subsection{UC16 - Telegram - Interazioni} \item \textbf{Scenario Principale}: \begin{enumerate} \item L'utente sta usando l'applicazione di \glock{Telegram}. - \item L'utente invia il comando (UC 16.2.1). + \item L'utente invia il comando. \end{enumerate} \end{itemize} - \paragraph{UC 16.2.1 - Invio comando} - \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente invia il comando di inizio nell'applicazione \glock{Telegram}. - \item \textbf{Precondizione}: L'utente sta usando l'applicazione di \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. - \item \textbf{Scenario Principale}: - \begin{enumerate} - \item L'utente invia il comando di inizio al \glock{Bot} di \glock{Telegram}. - \end{enumerate} - \item \textbf{Inclusioni}: - \begin{enumerate} - \item L'utente riceve un messaggio di ritorno da \glock{Telegram} (UC 16.2.2). - \end{enumerate} - \end{itemize} - - \paragraph{UC 16.2.2 - Messaggio di ritorno} - \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, illustrando le informazioni dell'account autenticato. - \item \textbf{Precondizione}: L'utente sta usando l'applicazione di \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. - \item \textbf{Scenario Principale}: - \begin{enumerate} - \item L'utente riceve un messaggio al \glock{Bot} di \glock{Telegram}. - \end{enumerate} - \end{itemize} \subsubsection{UC 16.3 - Comando di informazioni} @@ -114,39 +78,10 @@ \subsection{UC16 - Telegram - Interazioni} \item \textbf{Scenario Principale}: \begin{enumerate} \item L'utente sta usando l'applicazione di \glock{Telegram}. - \item L'utente invia il comando (UC 16.3.1). + \item L'utente invia il comando. \end{enumerate} \end{itemize} - \paragraph{UC 16.3.1 - Invio comando} - \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente invia il comando di \textit{informazioni} nell'applicazione \glock{Telegram}. - \item \textbf{Precondizione}: L'utente sta usando l'applicazione di \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. - \item \textbf{Scenario Principale}: - \begin{enumerate} - \item L'utente invia il comando di \textit{informazioni} al \glock{Bot} di \glock{Telegram}. - \end{enumerate} - \item \textbf{Inclusioni}: - \begin{enumerate} - \item L'utente riceve un messaggio di ritorno da \glock{Telegram} (UC 16.3.2). - \end{enumerate} - \end{itemize} - - \paragraph{UC 16.3.2 - Messaggio di ritorno} - \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, illustrante la versione del bot, le info del sistema e l'account con cui si è autenticati. - \item \textbf{Precondizione}: L'utente ha iniziato a interagire con l'applicazione di \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. - \item \textbf{Scenario Principale}: - \begin{enumerate} - \item L'utente riceve un messaggio dal \glock{Bot} di \glock{Telegram}. - \end{enumerate} - \end{itemize} \subsubsection{UC 16.4 - Comando per l'aiuto} @@ -166,90 +101,63 @@ \subsection{UC16 - Telegram - Interazioni} \item \textbf{Scenario Principale}: \begin{enumerate} \item L'utente sta usando l'applicazione di \glock{Telegram}. - \item L'utente invia il comando (UC 16.4.1). + \item L'utente invia il comando. \end{enumerate} \end{itemize} - \paragraph{UC 16.4.1 - Invio comando} - \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente invia il comando di \textit{aiuto} nell'applicazione \glock{Telegram}. - \item \textbf{Precondizione}: L'utente sta usando l'applicazione di \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. - \item \textbf{Scenario Principale}: - \begin{enumerate} - \item L'utente invia il comando di \textit{aiuto} al \glock{Bot} di \glock{Telegram}. - \end{enumerate} - \item \textbf{Inclusioni}: - \begin{enumerate} - \item L'utente riceve un messaggio di ritorno da \glock{Telegram} (UC 16.4.2). - \end{enumerate} - \end{itemize} - - \paragraph{UC 16.4.2 - Messaggio di ritorno} - \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, illustrante la lista dei comandi disponibili con una relativa descrizione. - \item \textbf{Precondizione}: L'utente ha iniziato a interagire con l'applicazione di \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. - \item \textbf{Scenario Principale}: - \begin{enumerate} - \item L'utente riceve un messaggio dal \glock{Bot} di \glock{Telegram}. - \end{enumerate} - \end{itemize} - \subsubsection{UC 16.5 - Comando di interazione con i dispositivi} - \begin{figure}[H] - \centering - \includegraphics[scale=0.60]{res/images/uc16.5} - \caption{Diagramma che descrive l'interazione con il comando per interagire con i dispositivi remoti tramite Telegram.} - \end{figure} - \begin{itemize} \item \textbf{Attori Primari}: Moderatore ente. \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente esegue una interazione per richiedere di visualizzare i dispositivi attivi e di inviare input a un dispositivo remoto. + \item \textbf{Descrizione}: L'utente esegue una interazione per inviare un input testuale ad un dispositivo attivo. \item \textbf{Precondizione}: L'utente ha iniziato a interagire con \glock{Telegram} e l'utente è autenticato come Moderatore ente. \item \textbf{Postcondizione}: L'utente ha eseguito una interazione con \glock{Telegram}. \item \textbf{Scenario Principale}: \begin{enumerate} \item L'utente sta usando l'applicazione di \glock{Telegram}.; - \item L'utente invia il comando (UC 16.5.1). + \item L'utente invia il comando. \end{enumerate} - \item \textbf{Inclusioni}: - \begin{itemize} - \item L'utente riceve la lista dei dispositivi attivi (UC 16.5.2) - \end{itemize} \end{itemize} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \paragraph{UC 16.5.1 - Invio comando per la lista dispositivi} - \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. + \subsubsection{UC 16.6 - Visualizzazione risposta comando } + + \begin{itemize} + \item \textbf{Attori Primari}: Utente autenticato. + \item \textbf{Attori Secondari}: \glock{Telegram}. + \item \textbf{Descrizione}: L'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando. + \item \textbf{Precondizione}: L'utente ha iniziato a interagire con \glock{Telegram} e l'utente è autenticato come Moderatore ente. + \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. + \item \textbf{Scenario Principale}: + \begin{enumerate} + \item L'utente riceve un messaggio dal \glock{Bot} di \glock{Telegram}. + \end{enumerate} + \end{itemize} + + \subsubsection{UC 16.7 - Visualizzazione risposta comando di inizio } + + \begin{itemize} + \item \textbf{Attori Primari}: Utente autenticato. \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente invia il comando per lista dispositivi nell'applicazione \glock{Telegram}. + \item \textbf{Descrizione}: L'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, illustrando le informazioni dell'account autenticato. \item \textbf{Precondizione}: L'utente sta usando l'applicazione di \glock{Telegram}. \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. \item \textbf{Scenario Principale}: \begin{enumerate} - \item L'utente invia il comando di per la lista dispositivi al \glock{Bot} di \glock{Telegram}. - \end{enumerate} - \item \textbf{Inclusioni}: - \begin{enumerate} - \item L'utente riceve una lista dei dispositivi da \glock{Telegram} (UC 16.5.2). + \item L'utente riceve un messaggio al \glock{Bot} di \glock{Telegram}. \end{enumerate} \end{itemize} - \paragraph{UC 16.5.2 - Ricezione lista dei dispositivi attivi} - \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. + \subsubsection{UC 16.8 - Visualizzazione risposta comando informazioni} + + \begin{itemize} + \item \textbf{Attori Primari}: Utente autenticato. \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, illustrante la lista dei dispositivi remoti disponibili e pronti alla ricezione di un input. - \item \textbf{Precondizione}: L'utente ha iniziato a interagire con l'applicazione di \glock{Telegram} e ha inviato un comando. + \item \textbf{Descrizione}: L'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, illustrante la versione del bot, le info del sistema e l'account con cui si è autenticati. + \item \textbf{Precondizione}: L'utente ha iniziato a interagire con l'applicazione di \glock{Telegram}. \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. \item \textbf{Scenario Principale}: \begin{enumerate} @@ -257,30 +165,13 @@ \subsection{UC16 - Telegram - Interazioni} \end{enumerate} \end{itemize} + \subsubsection{UC 16.9 - Visualizzazione risposta comando d'aiuto } - \paragraph{UC 16.5.3 - Invio comando di selezione del dispositivo} - \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente invia il comando per la selezione di un dispositivo remoto nell'applicazione \glock{Telegram}. - \item \textbf{Precondizione}: L'utente sta usando l'applicazione di \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. - \item \textbf{Scenario Principale}: - \begin{enumerate} - \item L'utente invia il comando di per la selezione di un dispositivo remoto al \glock{Bot} di \glock{Telegram}. - \end{enumerate} - \item \textbf{Inclusioni}: - \begin{enumerate} - \item L'utente riceve una lista degli input inviabili al dispositivo da \glock{Telegram} (UC 16.5.4). - \end{enumerate} - \end{itemize} - - \paragraph{UC 16.5.4 - Ricezione dei possibili comandi da inviare al dispositivo } - \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. + \begin{itemize} + \item \textbf{Attori Primari}: Utente autenticato. \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, illustrante la lista degli input disponibili per un dato dispositivo richiesto. - \item \textbf{Precondizione}: L'utente ha iniziato a interagire con l'applicazione di \glock{Telegram} e ha inviato un comando. + \item \textbf{Descrizione}: L'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, illustrante la lista dei comandi disponibili con una relativa descrizione. + \item \textbf{Precondizione}: L'utente ha iniziato a interagire con l'applicazione di \glock{Telegram}. \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. \item \textbf{Scenario Principale}: \begin{enumerate} @@ -288,24 +179,9 @@ \subsection{UC16 - Telegram - Interazioni} \end{enumerate} \end{itemize} - \paragraph{UC 16.5.5 - Invio comando al dispositivo} - \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente invia il comando con un input per un dispositivo remoto preciso, nell'applicazione \glock{Telegram}. - \item \textbf{Precondizione}: L'utente sta usando l'applicazione di \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. - \item \textbf{Scenario Principale}: - \begin{enumerate} - \item L'utente invia un comando di input per un dispositivo remoto al \glock{Bot} di \glock{Telegram}. - \end{enumerate} - \item \textbf{Inclusioni}: - \begin{enumerate} - \item L'utente riceve un messaggio di ritorno da \glock{Telegram} (UC 16.5.6). - \end{enumerate} - \end{itemize} - \paragraph{UC 16.5.6 - Messaggio di ritorno } + \subsubsection{UC 16.10 - Visualizzazione risposta interazione dispositivi} + \begin{itemize} \item \textbf{Attori Primari}: Moderatore ente. \item \textbf{Attori Secondari}: \glock{Telegram}. @@ -318,6 +194,8 @@ \subsection{UC16 - Telegram - Interazioni} \end{enumerate} \end{itemize} + + From 105de28756dd53d6622c670d4f44f145acfcb085 Mon Sep 17 00:00:00 2001 From: Alessandro Date: Tue, 11 Feb 2020 17:58:10 +0100 Subject: [PATCH 15/26] Eliminati diagrammi inutili UC16 --- .../res/sections/Sez3-CasiDUso/uc16.tex | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex index 542b9a2..e39d709 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex @@ -40,11 +40,6 @@ \subsection{UC16 - Telegram - Interazioni} \subsubsection{UC 16.2 - Comando di inizio} - \begin{figure}[H] - \centering - \includegraphics[scale=0.60]{res/images/uc16.2} - \caption{Diagramma che descrive l'interazione con il comando di inizio tramite Telegram.} - \end{figure} \begin{itemize} \item \textbf{Attori Primari}: Utente autenticato. @@ -63,12 +58,6 @@ \subsection{UC16 - Telegram - Interazioni} \subsubsection{UC 16.3 - Comando di informazioni} - \begin{figure}[H] - \centering - \includegraphics[scale=0.60]{res/images/uc16.3} - \caption{Diagramma che descrive l'interazione con il comando per reperire informazioni tramite Telegram.} - \end{figure} - \begin{itemize} \item \textbf{Attori Primari}: Utente autenticato. \item \textbf{Attori Secondari}: \glock{Telegram}. @@ -86,11 +75,6 @@ \subsection{UC16 - Telegram - Interazioni} \subsubsection{UC 16.4 - Comando per l'aiuto} - \begin{figure}[H] - \centering - \includegraphics[scale=0.60]{res/images/uc16.4} - \caption{Diagramma che descrive l'interazione con il comando per reperire la lista dei comandi tramite Telegram.} - \end{figure} \begin{itemize} \item \textbf{Attori Primari}: Utente autenticato. From 8aebe43c0f9931bacea7807f785fe6dd7264e1ac Mon Sep 17 00:00:00 2001 From: Alessandro Date: Wed, 12 Feb 2020 18:43:20 +0100 Subject: [PATCH 16/26] Sistemato requisito RAV11 e UC 9.1 e 13.1 --- .../res/sections/Sez3-CasiDUso/CasiDUso.tex | 31 ++++++++++++++----- .../ClassificazioneRequisiti.tex | 2 +- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex index 0e3b822..61ac4d6 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex @@ -99,6 +99,17 @@ \section{Casi d'uso} \end{enumerate} \end{itemize} + \subsection{UC 9.1 - Visualizzazione informazioni log membro} + \begin{itemize} + \item \textbf{Attori Primari}: Moderatore ente. + \item \textbf{Descrizione}:. + \item \textbf{Precondizione}: L'utente è autenticato e fa parte di un ente in qualità di moderatore ente. + \item \textbf{Postcondizione}: L'utente visualizza le informazioni relative ad un log di un membro. + \item \textbf{Scenario Principale}: + \begin{enumerate} + \item Nella web app, l'utente può navigare per giungere alla visualizzazione di un log di un membro del proprio ente. + \end{enumerate} + \end{itemize} % ================= % UC 10 - [NICE] @@ -130,15 +141,19 @@ \section{Casi d'uso} \item Nella web app, l'utente può navigare per giungere alla visualizzazione logs utenti. \end{enumerate} \end{itemize} - - - \subsection{Contesto riassuntivo per le interazioni con Telegram} - \begin{figure}[H] - \centering - \includegraphics[scale=0.6]{res/images/telegram} - \caption{Diagramma riassuntivo che illustra le interazioni principali con Telegram.} - \end{figure} + \subsection{UC 13.1 - Amministrazione - Visualizzazione informazioni log utente} + \begin{itemize} + \item \textbf{Attori Primari}: Amministratore. + \item \textbf{Descrizione}: . + \item \textbf{Precondizione}: L'utente è autenticato in qualità di amministratore. + \item \textbf{Postcondizione}: L'utente visualizza le informazioni relative ad un log di un utente del sistema. + \item \textbf{Scenario Principale}: + \begin{enumerate} + \item Nella web app, l'utente può navigare per giungere alla visualizzazione di un log di un utente. + \end{enumerate} + \end{itemize} + % ================= % UC 14 - [NICE] diff --git a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex index 94a3518..2009eee 100644 --- a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex +++ b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex @@ -251,7 +251,7 @@ \section{Requisiti} \req{A}{V}{10} & Il sistema deve permettere di censire un dispositivo & Capitolato \autism % SPOSTAMENTO DA REQUISITI PRESTAZIONALI - \req{A}{V}{11} & La web app deve essere compatibile il browser \glock{Firefox} dalla versione 69.0 {\small \color{white}{nice}} & Capitolato \autism + \req{A}{V}{11} & La web app deve essere compatibile il browser \glock{Firefox} dalla versione 69.0 & Capitolato \autism \req{A}{V}{12} & La web app deve essere compatibile con il browser \glock{Chrome} dalla versione 75.0 & Capitolato \autism \req{A}{V}{13} & La web app deve essere compatibile con il browser \glock{Safari} dalla versione 13.0 & Capitolato \autism \req{B}{V}{14} & La web app deve essere compatibile con il browser \glock{Edge} dalla versione 42.0 & Capitolato \autism From c10af09c097f0ac72d4cf215c083ed7ec51e2eeb Mon Sep 17 00:00:00 2001 From: Alessandro Date: Wed, 12 Feb 2020 18:51:30 +0100 Subject: [PATCH 17/26] Aggiunto diagramma UC16 --- esterni/analisi_requisiti/res/images/uc16.png | Bin 63407 -> 110940 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/esterni/analisi_requisiti/res/images/uc16.png b/esterni/analisi_requisiti/res/images/uc16.png index 36817a0dcba480082cdad2a1044c47554bbac6a7..629ae893046156bfc7fea1984b7e2a86277c1a26 100644 GIT binary patch literal 110940 zcmd?QdAQT$+C9t>1q1|f02IX|I5VYf+9nEO(Oi`HWlF@f+#9_ z6vbI_9&rW-MiCrvo)s13C?3a+if#nqcL(&m@B59{@6Yf0xc0?vlRU{Y-1oZIT2J<+ ziJ1SefyWN))2Gj2!GMqM)90YxK7IP$KcF8R(Jo0H(x=a)txb|^RyqYm&G$Lk;XUx_ zWIG~jjpoS?-^q4+yWO6cs|)RkiU!}{R7J}v1tp(5aN3U8kqL->g3Zn#wv!zm#0me| z-4hYq%^$d4DCVnw-Ycqg6;%~Zwo}fD2;Ay4&IWA=_{55>YO{6Vb401OI&iFmxu(0& z1IOwH+}3TMh@1{5{CTMiouTZA4S^pU9HNwZzMw%X%DU*lgY!+Hc%YLdtZ24u&FNXW zl#ny3P2*h71J@Y&dPC8w2QIVOC%PuO51eS4dj7!CqNWwq{DGr745o45u**8)AYsyS zicqWz73hWX=cJ@!6LJ}x%!D;t1PxULjda1xS(8^4Du3RV_1gZtg*)95C1(Sr5~!_O zMNAK>MDjtC!F^%3gSCrXGkmh0;3HmI6xnQ^rR=EDb*W-8OAw_;+N98nnlsZsh|Gyx<5#P)sg`MIX)^RlB>{A)*CeGnBEptd6H5 z-EJ}hp-0$a@HNt|=#Dsii&r=Svngs;w4Puulr>vbi!@8R60xDIQG`o0uZ(bAPe=-g zj(D`w>Xz$SrIQhuNQ)Hf&>w=Y+q=$i9wrvP_?r?QrxCo%!~!^?JKC6%_ea#MU2nGv zT&CKHg@ZC&m(8>k7M|&CdDLPj36VranG7p7OPJbdW1dL39xjM@yJTa^a1MS-&Qz)> z7b0bQ#Hls-d^b{#%CrRcqO>~0In1z`^f6MyTjzCqEnEyGz5Zl8FO^K*SMG+LMYa)_ zh^WMOlzfD5#!FH+j+C2)tS_CTD|N}N1tJP7+bf*cRP2qC%_Djviop6^K{Ah*x{(qp zcbk6biEIx={cJXCww>`3mvu;%)*gcmea$@Zle+r~bU&~6)jzd&JB%~OTa#I3M zHf?+vGjz@-M;dyXDy9N4uZARoxd^7nyi-rwyrozqN>&Ai48Uk8F|8+jX&cG8tJYL0 zDa1&|(iODG=FmcSCWbFWrOwMT+wipeTd=-H%$($`kVD`3g!&;N{$AW zXjFZETZGlLsxRG2;pi+)S5R<%V0SH<5VD zUUM^?lT-XCS|N(gc&lB{+ekJ=dqf)@bqCUjLCTcF#xmV-MGv*h8P=1B@gp^}<;r&v zC29{4{uqw>5}MM$su{7<3R1R2G#?MvNip1N;*t>x<|U2`wc}_`s26-%I+$W{BhdCn zgH1he>vZGokWr-}Jp`r_^kyLCpn6iYlZ!M1URMQ^s!_opqNue@rI6Uk_!WRb!c``kC8W7xW+zu$U(iO)WWS~-LKPLPmQ4+L?c(1a*&N&CC%p2 zO1Ne!ZYD=zraL5hvYr@4v79IDA(FO0)9Qz}oXNVCc!+QMi5ilQM$HsFSY^6tnoZ|e zLUlxA@i5d->QHG8dO#k?(6rz&ZOr;TOT(t2XxKqNVRJDRfjWI0J%ElF>E#}*dB9&NGb4DRWiIC$370cmO`%T*o01I6W#)a>qd=m)YL#c%j*@V zOPBF-(bm#Ceu0!6b<)r~71iH#rF3_w<8kt4CSUg215(eG0v!=%8F|?8hCCjYZYSlZA zwjn`0OL2=TSZhE*;Uk-2#cLH06m=JMpTV-ha3?2qlWnohr)sF~5Gr0*kWrfjw=YMi zoid|EJ?=CeP3Qb(E@|g8Vj@(b6ID**JxJEi1iD@^&z1|QDJOH;S^)0t@t9Rs)Dk{# z%B(i?WsCp@k}hD9Kbnxjn3MBkj96)l-Ad3%!<;n2yjsCb_+(89S~aTCb_Z>^8AA_1 zD^0f0(T|!moTf}EN&|}^u%w%Fx&mI3$_Kl+l^cZ!q0z8bL|oG_#uQj79^}1gjF#I4 zrcmt$n_1RZ5enJ1WOw?SQqFGAIqC@Aa;OZ>0_54;iYJyTvT`E8C$+NdL7RYDt&Uv{ zv~mcRsd%DxUIpgC)G_ED<&R_{wvNw-YGg*om`JH9*zt;x*RVpo3oO#tDum(%wkVYA znvy7V>M=JL$cbzbke%`(O_dKvX!ywbD-tcV+s#N3DrnhF;W;Bih^c0Pv)6)#tP66S z^yLCI&LIZNiA<%Mv!;!2=ITzQR&Y{$sZ->{T8ZscT5`rIBVnPI*UFi8OpW*gyshqy zL>eA{UQXHtu~^h{t#+zfWvGaPsH#Ok@~mB}S8QcG)-I%+&UP9>-BHnKhf$BNQE@*8 z%Sxf%c$o}UlcMI=?YVj_k<&A^KoZZg!AwJt8i@{TQgxwd=apQx81BTJF*0ChgRnM4 zticCm#o$X0Rga_+X_p*Ji6R1=yHRS2bW1ndExz4oSE_m3f|q91D>%AAwOL^}57Vf% zf^nNG@52%h&ppc9fD>R97*+|-HNHtrsV6Pf=waa9xWR}V~ zOE_7fm_z|XXh#C|fvABI{iSREZ$ysA5h_yU>1Nl|{ZcJfV4v~x@__s6%kS-jc!bp zDjB(6q@)^GbohWmR1y|RY<8G%(!@Yq5Mn)F&Zr3t&y<4-DXBrH4`G@fQL9zyYM8Z$ zQ{lWti--_tN&{(`!3xQnP_sM5AeD>+S|X7TwaFsIp>mT*X=F1WR46^zRJ(+V%bYzN z&b8dpxC0L*ZRxy`iHFLLlpfMkm>lpEwAJ$nhn1OP*+8R}bRu7(m9P=5djlnjGKv+f z?jd8rq*Tu`;Yyv0#ygpKmrCK8q*D<~Av2>QX-dlw5Vy@@mm_dtxRn#&WjZ-zw@37@` zLjXSS@YHLbB+Jq$mmshZN_u&r(^8nQ3o#uIn?2!@t5r|Al>`k%HDW@;UN_W|t;JA< zs4UfM#XyH=NVfvyi%NjJBM>9eVuFYf@%r()84{}^t*~~F(q??JZp|!24<))4tKJZ) z7D=|UJ_fTFNLgyCkTrxm)Rv_d<|##kqN^0mhl6B|G<9c}VZCy(l_P!bN~;}l>WT}; z3j~dEeh-&Yn{gjkrn!JOs?cSdE9$EhTs6rNjv=j5JA*p}6$wXTl}MmVro%;54xp(Z zAJ(%mx+)dBCBG+0m_;<=3s#YG!RlK+D#z;%96X=Wezg^-;~b3{mhWPzu2>@AD1{K4 ztB^*!`CvBXjWaY31Edml3@K@-<|upOb*E@$Rj3suwqSY_wm?N< z{DqR510q4mbqOz|d5B^hEkqR(xj;`eEEq1g%br9h*s_Aj?Jy~W(wRzI?j|*NT*|8rZzEMuYb{x==>E7K zLA%{rsFQRthD}k#w!>k?Z$=4+%B;PqS8C;WID+%BiWrC+MY8U*@;u{J(`kekW6{O|CIn!Jni` zOqQf8fleT8Ey#h=QWDu#6l9@YNQA;>2n;dGOc9}CB@@n8G8qS@yXJGfkx>0T1<52`b%mw9`b{4^T;%v6Q0PI5Cw* zZJt0T6wczPm)s8&Ry=l6;dF(H77Yx(QJUF_*GdJ^Q8T3!TTw;Ql?s{3RI4M9b(2Sf z*>uvGD&-<(iR;!3Oad68gGr3A>{SOE0v`~pOezNm4OK4$MXy6uxl%fi(Sk(|#>wRk8QOE@TC!b@ zV=28=@>R5?;Am5Xhi$TE*>7g~Vm+L8Yssod_I484aL0us!K9F78%8Y|j`E7P>5u1| zu~ZXoN!ewI57#Kw0)HIg6Zx1eAh5NnW;9rwL=iEphHFj_#df{zFcwQTDJNh?4dKul zDu<0wObG=uDW0k({oz#5<%-4HDNivU@OXXhtP>s(lfg@dnt(H+7*)w~(;Eo0yev~r zpPNS*hfy%&4J+z8tqMXV#DW-Tx!gvwo?zghRN|=UlN^60r9#d7a zndV{`DOMRxu}OK*c}<2$`%@+>MCzR3ttEV>fM>b39?a+&v>GXJO*1bjstd|2PkXxM z9GPlmL{}%uVXcTq4_4werW8wAwr48P<})mbW$X??gPu@fRSEN^CjbtwfRUyuN{s@Z z_9)$W28a~^OT*~28jM{QyM~=)jc_1o8nlk$P0mra$CN@gXL#L)->u_vM+;`0#jMn@ z*c$KfIa`rZ($u3|mF&iJSu~}3qShqCK?Tmci`{Atjpu!Wr{VXLvL`RZ-HMmfa$(TO zZs>QZX!+PF9;;yr-_~7JxQKaOY0_KNB?jw2`67rQ=g*~Ez9`2us)0~O=yKsI#nvR+ zFY!DPbk$nXc%qvn8L{SfmcazWnl=l*G1AB6Bl$d6)60)7~VlU@jY7%Q-O|6)dbT!d}S# z7QDj*|95ydRot1eN6HhLE~3a6DH~!3$oW$_G_4I1OF2}HX4z-@U`;6>Wv|9us*sW# zri6elqPTFW=;?%sOqj%?2Gl)5Z4r52EGh~)Thxh^6t>_N0+3^woWsd>lhLM%lRhPq zfX4o0BdDriuZCK>GphpP+R6;>Zvj~+lGU~^&3eiLB@=Y9fgzTV4>fCDx~OH#Hd~QO zNiJTe$^~CQ5z62ZN4;&*q6=c$rkhkE<@15G@%Y+Q1?W0O8~%o#HBb(mgpwhXe5a5p zFx9l=_6n{vY;2UHNw>3EjLWuUvPtCgW=6@lLm9G`52U4HldIuI%*466gUCQnB6fHb zQE?lQl4`H2?s!(ROn_{fAggM{=7Mir#;HEWlf3_?RvqZAcSJ)yh#YT3TqICGpO=5la1(v$Tjq22rnT% ze>$aiSY2Qd-i0gR&Sy$e$Q|~n&RjPe&6mV#yqnDiQ(QLJX_cjd*MkMqkw%i`j7-TT z#Q6+eS7ed2yG5j#FmwKh;w!PuG#bmQ2*bu1dX#Io6tJ6_bw&T13X1BDbF zDo?BRybJ}1N4;UgMY<`p<}S)kLntM>Y=C8GDWK3(f5-b%vDrloQs?ROU3PJ23*l}S3!o5`@^D|Ew1(MPsiF0tThux45}z`cm! zwCR&$e9qk|ST>KxS7D<~MB*ifJDJVG0CflzDodnXTGb!P+qpojlGpiW&~ohJj3?@p z;e0+H%(eWjJcrgR8B{tzm8nLlY|x|^G25|9tVp@zwkn;XZQi6IhG>r?z@i1B?a3u6 zy_@tzq>{6cBqTWjAToE%5WxygaTVkh|H*L)n>%&Xtb-BdDs;-bTpy(a4qfU8zMz(Jl<(2?M^A- zRPsq@sTMNDAehBWoWjG_nA>sF!@?kgZl49{4mAP5LXqXH5~mV4WWVJBIt!V0l5BON zbb)Xs0&U4twVc341Zf01zG}Uj@8nA{EbPy9J7O#f=O~xI-2oC3=P~$FsY-^yVxl7( zD|FCA%U18YX(1oO@xlyZX+727ye)Dq5lJi2lDjaK|a~xQx2EQMRWF~+94xyL7jd8 zRuEz?6qZ(sCl5i{#c8FI z0QZ6Fr~!wO$_Le4q3NrePJf4pAa$;gigVJrvdw!<=H%AiXQ0wv$(=7*{piHNhr|l)r^rhowkc@#$_cQj>>3;Cdi6IX)wXC$~c_isy`Kt+oIKm6BjXWGJ-f0)tW$} zc!O^!9G=P$3=#&v52M4ROOmbVOwzbZ4P*q`+jNB!6h-G{8PRAuQfNcLWwNCzpGj80 z>#VvMrs(JDSjI{eE!~LL2@`3f4uvm5&FByW6L7@sq|&W7e4!Far&+liDY2-YjJ7M7 zkQ8#V&XcmHg>x>%g^O*Jm0SkoGEiWGsDr&%A`~k)GGwCS3&^cpx*fHAmRzJ}Y5|@~ zs{1*uyBNy_VvRK8_WK%2q?t)YOD;81v?p^;KE-sD9MN`Vn0A#6w=zyGkg9-tT5wiP zwOlj>362m+my~suO($Wi#Dhg0Y@8+uMh5FsVmMidrm%b_{3mfV39-?qCPbim(nCLr60jIYyy zU!|PgX?M#cE*M1=w#Pi85Ekg9OMtSVv}J_$IGwQ?m8_-lN~6{&$7`8pKAMx=CgP!; zp+Z0mN7P234Et5t4iYVvI}sD~AIuW$_SlLQFT+{>g`3Y*bM<(!4SPlmA7xu?H0lT- zz|oTBsD(>D#ig2=a62DzXM=vD+!k$W&5LTN$IG%hlkwzP)|MoVtSi<6`hbCJ)Ar}n zHjfoDAvze40$Pi&g{ophv#6L?ltquj5eUab#G}a3s0&lNs;T-3p^^+YqIRTh%29_= z#)42aN&=d|a*lYZ5vrF^kKLleR>lyqjy+nJVqyq4;gC1ohAm~>Bn%n$=^A+`SA@M# zE!ZSq2CraN6}03B=e5a5&?o|vz+wSgkQC8KJRPvrA%Uruzf!;gO?RI3CzOPQ2i-Qk z>J#~BAf{&>koc5bRn)j2Acv?6DJ9`ED%EOK(YhcIoTUn8v|I=c)Rjgcm$g#FQLp*h zse)jkV!S3utPSpAx6(c0^@_oQBUKa{O`C*At6DrE1jBaL8KLP|E{fu$R%*dckh2&F z8Lp6mx;k>Yn#pn{BcmaBhjZsR#_P&(nN$tOgY~fKsQJv6q1M8{-}I)<1S0Na_iw@( zR3sa7Bpo%3tXET{t>K~RI$IJoC00h&m?M}C5-43}e5RSRz>KYi39TK87E@lq2MJ7g znpWC*npr96%eNbLEX3zy_O{|gnXK6@b=vM$#ZM{$aAFzS;vgAEvDIzxX#>w2M%kND zTd6XU^tIjTj2%O1RPr`ht&q!ik_rooUV|-LOZfY`ZqyN?Q%$%9&>U-{glT7_YDFUJ zJb|j5-Pep8Wu(qzL4r2zF>lo6RN?)jd^&9;n=Zb}G@J>GFhnVj?vOamT@7;qRxlX8 zp?d7yMw2&8H{Na}BzL@CF5qpifXl9EA?KrQMiFI!o?xoSl_hRUHvB&VbiTPMOaBC<1q!<$gK0*xgK_B@Mq0c;Yy%g2gU)uBYeUP$4B z&rb?u8;$2^6IE+CZ%f6kS%)8+t*Sb?O4C&bD5LOn)v#BrM3d?<7ee4t(k}w##@lzos?2Q;SsAB_o*ZWg1~vP4uXbP;&F#p#YZ z9T7*mn~HQ0o)332ko`fp2449Hp;Wm|dBi}ZX^)t+PxohR(WZ`9RYVUos|=rr=i8ZX zCxjwNe;PLGi7JnqiAYp-MEni45X5U45*D0jr;tEYqEg`!S#Qe$tQbp&B5GImw)k*5 zSVnb}k?Y=aT+o$L*+;A8QrIO5)mT{5vPIatuX%Z=Hx;X=;4L}Q0&A@qv9v%6x`|S4 zBj)K=?9ODOTq&ki5Sa>Iq+^n;TtM25T0Y9EE_=Cwu%xJ>dDY?f2Rh}hGu9!i4!jX{ zS2?#^q2X4wRxFW4`Dm#{(Xw@aPK{Z=^6)}SrH0cwACdhG;|*hE!ZOp z1G?csv{F!LL{gH}V2VDZ!=!zB($s2!Jj-{x2{J5z9L?fvv}SPonJ7|jh$&w5q72rM zi$T4{;K@)I4>1HAt#iSWK#5V3307+rAudQr9@kPuQ1Z#D7)hZ{Hc;g;rR}5>M#fvF zjZ(3q!#k5cYhDs+EY8~UT(y~Km1sFF#WPC4j|kaJuA$NH4izK)@OGCFhL=J-aaQnn z3r#hb?vUYJJlPVO0p0J_G8!AA3|}mlPos#Mhz5vYBu6ES?Xu8n1*npNGO(@FE;Z!< z<jpST&j^1 z6FBQ^s<7wQM!`%dNsUr9?BczoON&cdKw}$pvCyn#6gq`t)kqBEb7(eHC3&r)X^P() zN(LkKP))VTwJ^{OO4s1kt7hEp%C&8lot<}6lA)nO+LTO@)#?ZoV%ptKV|Bv;Z%a~4 z6>}NBxVx3N`C5%IqLGQ1N~;Q5b`_1dUozboEf|4vLe+xc@|#45%9p|+ENf!%62S*5 zyqk6^C4-fd))uO+n-(dc%Ne~JgzkW=#zaLnPlNYr&70Ds#hC6+3W09L$J4ATMcVeD zjz$F7NvlwWL=j6D6qagW;X++XKns6{=z4*eC+v-;zZ@fJcRp;{16iYD!Kqm(N|IVB zGTxNGk&@d9jO2ql7V*e_RdoO$QX1@Y(P7>Kj*Q0(f|I~IWWjAK*7B%O0>dSmGb7=g z8;nt|8YftaQe5FuL2#y{WSM~XKcq}n#2gJxR@{`YLE$p$EYex0opwl0$`uCiCzNCY zVQ4cM3k6A|fRwYM!7(!QkMNKZ>d3lLFPaOA_IjB1B2qaXQv1V-ge;yf5OISyiFqPnp}nQ7sF(qeSw=_-(7hSa&$~W8|TY?f5 z!y&0+l2E#ZxR+L1u(@tlI7D_Wm8WylbJ@Ga9Xq3X(JLWHBs!A-FYxp zVsQlP(lHjUV~V;fi=nwv7xoqC7Sn39^m;T|l00xyX~ULwK<-dz$Q4P#s}7AO>hm=n zts0!9jY>kZ$27zfm5T{Fo-UYD8wcY`kfi-DprMJRQ!G*l?D~P@YN7#JWSw0*nxNf? z<}W1S9`Iri*UUL8X2&R|Q95P-S!yHks^Q7oy7_1kE~#a_ZMSYQz$}?zj4l>(J4J*} zcKtr9FvA-FaziP|u6V0}djko*9*ek34!qT=G&qh(+5>c5gm=POK7r>EAjnqrg)pc7 zFLu@7=$~)%JIHrO^%>fy&)@q5eIBNB^LL+`)2=Z0ZQQZ0QVs7u?d3N=yq-Z*zb#nG zEPs6PDIXo1zkj^rn0_~mPcE@-nsHk0mhtX))+5p&N7Z*qxSnCo2rj(Lwc*;&R!^Ng zZS|F}{QIs)zGZ&gzHP^alYclfeB0|6zJ^cAe1Km+@arqyf8@MDLx&EXIPsBwPY<8K zpR{Z6H28N#<>7Oe$G&;8d=zun=yN_YJDuBCtXQ&e;e&G~z{U69cK(6|#~y$7Zy+ZH}3OkDNS;lnOn^v23BW^8$N?V9ahl$I=JBkIa9jcZ}C}(%Jvtztw4}E&coTTeorJz3YBE{`li-yMD@V z{r0~5PV1Pa(6eRjqsy0XyzJ<4S1n$Aa^t3@OUJBu_SrEmSNf~nQ}_0coj>%1E7#8L zKNdj}TaURncFRDAl2--|1KW zKD;;c$h0|6J>?__;;JP}7JU1`GU=6TPq!~WYxdsB!zZ0T*x_*8ux4uGtHIQw(N}!< zA-8!&t?$!MKfR)}V=3V{yZg(48*aGarA?dGzj=pu*yzy{XP(D#+`lW|c(&g6 zjw6pb=9mSG7Hz!z7{{aXTT4r1&O2bwD0g+so?Sox^V3xmhfmKfSg?NM_Va5<&zJXU zbEf8BIqJI)AM<|o(*?i%u=e%WV;?SDec^87;DZld^Y+{HDLvaa-7xn~|Du7@Pd)kM z6DLe~c*D*fuzH(*lNe*E#V=bwN6iu#uWFI$-JJ9W~ep?ml4ee|iPUhLhm zZO1$DsfR9KZG3+$#PSSDntQ^m-oL&6`s;y6Wc{iOclUhS{#d4^Q~@`%f;pVw8K``|l4Q>%Y<$ ziA3goK6dit;5Js&KazUT%=am<7Xhh2U3)sH^**sxjd3of|e;(7B<96PoztWEEh zxkE2rv;48g)-Ia5cLA*V)(@u7e(}EKo%;6Ik3Z?;lh=Oq(J`y{{Iu}!Uby`WFI+No z$Iov}ePPq4!4Rl^!*D&na^<*B%X_<9?!D(8$g}D;pn+^!Ph4rKr{b^1NS`F{t^0j z5J{5nJ-hmYzMsGS_7T^d8sG5RP43#(b%zW-#(wbXeS0ssV*7*>dV|5>NPBLTuA@N3-%A1q(@BV_HBL(lH*^Zxtq zKl=FN7u|5fF~=Qu+*P;UdgT{ih@A^A7>lCJioMHL@4f8b@7$Xipp)-^JIBh%t&cy` z*gkOIjMHcDW2YF8J@(j0WJaG`Cz}^RvwwZ{)tD1c{M(B!zS!B*Yg@JZhqE@_Hg)<} z+i#n4!EjhYf1z;7WefLBeN+4F`9mQ9g;C?qIAh%sn{@cFVRHattl;0ZYu9NLXFYT8 z?04@=+LvGd`|3M>`X8m^-Fw%}{^jdon>KB_>gubLThBZ-cJn!+xOCHR=MSAZYSgG3 zq#vx%`^P{2G4QuMggIpL<;USaU15dmtJhE3_QKGq>#sV|dvU%}xdO5kW{qJEZZsMn ze*E#k5007KLDG**yY$UB6Ps>w$G_V9@WT(!TQmJ>^@jbk+`DU+u%~xNPfyQPyUG_Y zTD0i!jnLcPo)?DB`()ny`RQYN0iY;R9CO5xN7i=#TCvi7q)Qz+aL}Nw-+XgM<20IK zu08x|_K>}|PPyP>uQ25JGnuVFeb9H`OIMFwm;ZVD8_N#w)edC6xPHLaU+2x6_u;dx zansH_Z|hfI&4*QZ_25~h(is3IJGS38d*J669R2n7*Kc{@-TPDd!Y$77@L9XQ9I<}G zhA*})nmT;d38O~6y5`g|V~#lh_(Spo_guL9S9Zy%Q(-~4-yf4Urm-hafk+=deE894 z+qUmq)2`L7K6DSj+N$?%nhv0J%USK*uX~0Al7|#}KqOo&eYSAn!mFW@J<)&l%*ns+-YxC=>C1Js-@@08H@{so`;U=(PL1C>VA1`{ zm%C@}-BsNB_~)~BANI~Y(Idw^?)r7h>Kk|MT=wecv)M)G?Rpc^bpvz^nYE|0HSx%8 zv-f5P?78TogCaM%4qLl+?a@!K%v{iO$zh{T`FY=+07Dbcf1caA9kFt(^bV zSzh^M{{5+Yzkty$xbn*RD_5@UIpyUWANpy|bdDP^V#Ek&-T$MHKEf{i9ewDbhagcV z9@+a~X4(8ji-x}a&O5bl-=Ba%McVvK8J+ z-h-KKfTmdOi-R9}_~BtAM=n^pbm_7E_dXbZ>*Y0Ka_AsobiWxT>mKzW#avT)gVNhnCI0EH-oIyPe-AAR)l%*$SXaLLn;KTdZh&1&^s zy&vLNj{Xcnb;;Qmp85N4KMu`gGB*PfU3uk|0|pJ6d*_{F$B!RBLs3qDXk6xzmnLs` z>#etXe|aY^D9WXW9(l^&&p6|Ow{N?1)0`7vk$}4WNpt(HvIy*H=WcPozxbA0Cj7i; z9@K@wqbIL;<&F2ZfAK(x^!aAIdffzi>QjdgbA|@bwCK%@E#o%6^4e?j?!No(p80Qo z`dnLj|Do(Z-*}PTH+=fE1q<$aVf&0fFMH!mh%V~#k$(dyTk+g;gHA1e@x=o_d~pZv z^Sv!@S@<7+E+_^)=eCRy$7 znmn@iFJk_{=L;vD;`6;S_l=kTb7=L#OTIdM*y$tw>+aud-`|B-{tOd~tN#vMo$%c? zvv>1(QcXN^Z6T)%eB^>as!88&QK^7|Q?ORY(8`^JnJv-IP&j~oGH zc1U#rwDUbR_q>y>v2Q;7QfOG}|6B+}1-|0MBcS1XLyX1Ny6N7Npy30@e|Ls8;s3vQ zpmXP*U5&f$x@*fTi^pN+PbUH2f7JZB@DTshz_ZUj8;WngQ(`wS5MG$S_LWx#j-@U? zXVK^>Z{8gq(fsbiVg35`d-J{b<~{wi>)m(XeRC-}2ra)qcy7PLh$jlKSzqtF|9;Q8 z=Z<>z*=G?1IcMXQ$G-&)A({KeVlm(p>w31nV5@!M+jKL2Bs`0Is&uqV`|R?ot~&hY z$>tFNR)J{rMSz#PXT1a~JxBU$Z6DYKq^kD)$Ij!VvdgH}FH^sM>lHAI!^Ps+cA8Y@3{&8m+gMs;N1oe9O zh!K}ueDT57JOD=px=K{56M^mb{POSAwbx$Tr%xypvOXVm)KPzTyGLZR*-p=vztJ>( z)m2yhW5o&#ip4fy=~(xd(|-No(}h6UB*1m6JeEs#8ELbq$yUouW z3AA&hyL#N&dwRTbx$I4)j{M{IopYhsS+wNGRlA4m{_V$&P<5@k_Wbjc@87uWYWQUp zeW*JhF4s-~)_=+3ahY|%o~@Si=l5$in^x~&`Yhaqx(KOq@aU=)jc1%4@H? zZa&1rwr`iM-mw1CBL!6*41e4XwN?bZI$+3<4c~vV{O-}$ELd>Ty1(FH=edG#V(iw* zm*!u+ZtZ8EjfMc2fA!VF?up-aCDe~G6DP*L88&JjEUTsIfQxvcmv`KAPd`v7K=QT% zqdM)3Gyd5HkU8RSf5FK6Q%6jkwg!qG%;pf#xEO{FI5Ep{r|s+ zVzK|AL4(Gh_v}&EPdx9R-N}G9WB)>%`}X|vnrns~b=1YlJE=RMYZh}(Kg7*>>7~H^ z{;`Kld!~K}R73y1y??y*06XsT(Nm5+_i5D=3SIW@oq&B4gun9R%O+@~-rc+JjNf)P z;&jft{`wK1D}daO-zhVLF1zfq9!o2|^UjgL_~u=D>7fT5bddhr59h%%#w=aF=C4V5 zWh_v2sC*a06<`z0e{tb{(MT^M$E+}aK4s>G7rymWIkV)(8^!k?U_mQi+Z{h<41M@t z^AY+M8hrS?>A3lpTdcI7x%0gYw7chB>FSHCn^(*M+I0s6KY+a_k+|yJu`mMXUopQF zedN67EJk}LNK-3+e|tA|_tHD>-1_C0ha7$M(VcGh3(&~)A_!IOKmGk;;Gu`Ez2t;h z3ugWCy8wYhFY@ku>ADH$&M1`z0)zkVljZSmYJek0{59RDU3u6j*A`IsFG6zEc7DU& zzwwUlc)R_GpTBx-?jw&(oYlLv|NR?J9J93kpCqV0eBN`zk3II--aS9RvE%Ev#zKpJ zCyg67=!xPR^C1%~MPs!X14U__Rg}a}2MioYEF3-o(LS3z+5E}(P3^wFz542_FIb3` zewY`&eg9$Tr|;eS{u;XY{j<$~AJP5wyF+Kso;~@(-x+8z>~xSpKYjVCkjq^R3lf+z zWLWaf^?$9?Q`=yo^>*8e3s9Qlc4F@?cyayuHJ~I@_r?}?kFxmNU#0K!^JV$88&TyV zi1W~tfmhGi{pxBioV%eQ_1{S~!s8-i2%B^LwBoC~lLn$i!R z{GS^n%}-3{l>PS^biEd{>U0UW@*1m{~E)CKY~vG`s1e_ zd{;VrRAd{qWh!-5b7rapT4pK!5*x%x$BV&Kxpi2=Iiv z-jz;!_?v@QEna*y)Ra>jCP&sha{joEH!D|ave9Z;c=D(%iUT|7wsOq%u z<9GMMDs<(vrO?!(9P3-_$mbXz#yY9<&GaA*y|LTt1&aVAZ_* z@}b>s*Wyni{Fx^xqu$t;5`pNe8uL?)9&Ax=z>|(yM5}u?AG!3 z8-@YMbx@xrOP2f{jOMR?g5}$@?Sy^j%$)iBrr)Ly-Gev2dg5hFv?*z5bQsCwH#e zsAW>1vbsCJnFk)>Q9E|*uz26cPnDtMp7Px-Q)lhLfLwLePG(Q{QKXRLPKFnr{|oT``__5a4AWS zTVk#Gd*uVG077>-fc}GTRgUR>Wsx?SiPY=%vv>XL$S0L|`jtv0i>m_2<{xSNuo?d3 zHtRX>yyJiW{r4sI{J_yuy3E#9U@rBsYTe+&4!Z;9^B6~Az$Ghy{v5jR_#1D!$qSBN zfo+{OlwI$>_Q+u?rvNN|Grngw*d5@1t)`ZLdE%L`yz%<$L+*{=b{)*wTNeF=G@}=J ze9SVa49VhtlfmnK;n+`qUHRK*+ip@9PXj`6#vc#0md-x|oJ@dotL4(}71nJ3v1HSY z$8ESno!xKQ!ozj|DLQ({;`_7*@7dQG`@kEKX!PWL+MqkdR>>I2gNgOWUd z#?FyU9O-#6dGDN|&tGmp1OnAuwWGUS`<%M%>dl)oBYPKbv-Q6FVb92!OJA|| z1c!m*t&)-!H9Y){Ob ze^yeuUA<)J5vLF8clPNQfg6!LXy4-7X8nHX3A6XuAXNH$z1}Cw9}EGzo%!a-ACaDM zBfu~RL4W_o&bZ97^XJW-+xN+*o&qqn(CA;=w}+=(clpLeCqT1p5C5WfdmfDjC_9HrAM9`nsVdi9}nIG8x|K| zeDUAUI_um6Pk~6?w&?~3d;a;K?!JGK-Ql?7-g{5Ao^$De=j@mDt4rXRt%Y5oyGGwh z0q~!3b7X?kd35EIr;q;ii%aIuUwZEHY9f=_2o^c)8y(WeV!nXyTfhE#Kr|Y)JTgHL z)?IqfkmImETk<{KPUjrxqQ!ilc;bnk(ML|1GUaBhcF@Z1&WrB3=blaDEgv1o!CR{? zyx<|&-5X%_dVKcrgCXwUeCM4PK7@aH+8e;HoOjzz zmi_8lw(5itBl?5EW0{@nrhokUty2c|0c5!dMo6bpfEOn|RCw*iwV!EPF8eK#%mmmN0R0KDIB&`YzYc!jfd{m~uY=nt%ktl0Zv~un9kwsP ze*fF^gZBXM`vQEt6&L(A@kX~cM+lSHGU0u6hzEgvD=9KmBwBsK^)7 z6^-pf zfUQHKT()M-nt@MDn!f5d*klQWLIf1%Uv}<1df*<5;K3tL1KSd!y5}wb34iO|w`S5L zST>l&6|??$cGDlv|9i)Si*CO8=5M~A{@{Xdj_rHfQES(XuuO}7dv5}&00v$78{1L; zgdMoAUb|`aj%}Q^1rWJ)a<=zOsPh(u0_ePG?%a7Z`t^ZQu?GyQKK}qEYl+`JS6y?> zT&VSZ&N=`5(Q2hK&;7r+d+)fO_y7O@)zA{McPT3?WRHeKG7d$uBkS1NNs}m&BxI+u zSN3cvggC~rqh863l!l_z_j=EGJLmKH{yyK!_xH!|a`}D!IiL4AuU@a`cs%aoHtvsR z@87*k&wOx5;eFzS>D#w&8}UrZ$LzwYAB$gH39wSK1FKzJlvT~7$AY(d0Cp{J&USWQ z2Fak~q^YiMT%(9^XxyTOisJI+%e$au6fHG8ZEdyT8IMye>J;YfO^S-$(s@=ru1VhE zv>)#<+F^3>moK*S?4=rc`t{o@XJzsmz(CMmO1*l{j{ilJj;+#LL~b14kz+Z(yZK+>#GjbrB|6lQ>=>6S#re%0X% zLcjRkJ5;>n?+nMVlHBCB1-Vhfteu^eAw~dIN`3ckb&7H~ZrVh~v*hKF@$J)dHvK0< z_Kf8n!F*jG1CG}L_+VI%oT)cAs|+4I80Jk)v3KAWqv}PkCKf(;H2?L@OA&nne6yX1 zIa8{XvMg65TlGejdS{nT+_nP;TKuu2dsBCI<#aBz#G>9oosyg!m*~ROr8O&$ZV{&m z$UEBmlGaZxK$Q8kM@JjpzGK@2rv2Aa@+@f5ym=zD1y4E)#&gKfp}heeq}!x$psNKR z4L^KXchxGmjXUvAPEHLD4b|+@rHk~Kih~V{BKrm|1E8m`2T{==o=A5|5V{c`2N(>5 zAPmjn!>u2uqzEXXI5zdRetzbI0bTdT%}I+j^-GGb1_D4A1`%yQO=blaG^0~a2UF8K zN5}TqZs8Ssqx@+*otl%TKW*AHGT-j}Iz_v+eqxM=+O}w+y`%fW^=@mXQ$IA|w|5;q zTA9o*m;#VgH4_UK?1e>HI-NRog3__?x-<5Ik3r3vE6C86g9cTacy-OC)R?8=hYkf0 zd|Rp+C_2x4OzE#yr%s*mTuy?MP5%J{(%-)iI5R87%F(g56a@K07myRA6P4Qnxb8b- z$dDr%rL?EJD9YI2+R4|iANU@+G#hqbU^#vIK`M&}6?NV1)yb+LjCG1u+YTIf*fDr; z{smy3MopXcp|{Db^dpg#Ya6a?+^}KSw7>U4P}9uoIi&0v5W4H&!5c#i?e%_tkGEJ% z(%1nNNn>|D_RH(~`Ppe@fd)JJTW_5BeSwy1D!h7d{fW)P+!I`k_6!>}YBe36^QC1K z=+lPH`8}@2#gH>C9UN*>^oH=Am)LE0PE8vMI5v<@Ewj`2>s;$rw+MV%N^$Fv^p!^n zipLxq-z!q5#1Yt}vb@?03kPJ{?XP-qZiWW*+az=CRsPf0e$QZ$<1{>J(wcT#K6} zaC=&H>vsMg&uiGb{{8yxU-10=d`$|j5JST}KG*HovEwngOM3U|Eipr3W1#&2sPwj;nu`-xX|_a8i%keH}O!xie*#NO)B z(Xok?uktEyZtYaDef##{CHLR{c%J1cb-*0p2f-65TaS;wr0S{Kzi}bdp)-Pmw~voE zz8Yi@q*RVSU}H4>{_mS{qYYJ!EIoSvaMl9pBYo$$zD6xu>JXYQ6KR8lIG*wFa5*?N zv1(QRy3Wt7ym6?#eKk}nfrt?js2F&FiQ&Ed)`f+&6?jV4035V)=KTZY>Xp#Wv87*U zJiEAfaOPeAx1E09S2wc3YN>OmU^?7?@St2XA>{*0Xt#b~4VOp%2tCP6rK+=xKO(xtl^;$0E(}>Zd2Ykw?nGhe9 zMy<5E!_>dx)6xuJneN=bZ%yb@e*CzWrD6!)*>+s?I=7n|Su`8|t5#j2vleQXq|kf7 zfQrIPX=zDx{siuFAgM`2y&ow_&n)L#Ny)L9PfqBRjUL%Pr~XdCF2Rfc-Zwbu*o4G8 zyKSrIe|%nFq!PgVbMxQY#rm9FN&J`pS2Q$Nu2dk$ScNnj)DCVL5@tN>2N6lA+d!j( zeSX|hghnalw%vrNZ`_$A)PQa)t?Cp7CW5feRmQ6b#8=1My=(VHAGCvUxPoH)UjLWm+lMQI9d}Q|Q*@C684BOL~7JdEt!lLX;71_hKW+qi1 zwEtQ2tHmAc@~~xI{n>Sk0v##Uj*g32%@tLJP)pox8zL1}FCw=TwO|*01M98e#f+y& zD*BXUF!yWzG-6amI9mH4r^fu_+`{*@{s=PLIjCpV7WIF=5!JZvNl#n7|5T*we(*r;w&R37@n5~#3T%f)!<#qZ%;N{| zX>VTqp#ybmU1`{;D|2`wiR^yZP8&MeoYbY+;cS9CcklXKxX^vnsXu*a3#8)y^WovT z{7;pI3l~zb?&33oV%<3~wE2SU)P{Zg_LatsFO)YY-;XSy8~U_0on|~7Pk8IZ(m-8t^U(}f8?aU)SQB2@@}~HG*=4~MCQjTU#MTSTHh&ZW>SXebNmlp{T|ot z_H`N?VwQVj(Z4@lt7y*rfib2HgKmqS;^2=G-e!lo=d2Ga95-crstb`~?eHTx?+=NO zI+F2rW4f!mhB=t`gCAjNdd#jF^KV}?ZSb$JIile?wn2}!1@eTUG!Oplphqbmy-How zA}DF9vU=634uL=J>7i=e(V)=KO!@W)_j${~>(?&>GgiL59>OlXL=$m*`h%9BQ{%yO z5eONrtW;kEYG+NI_Nr!X`IfK}caBfAp(wIsCp~@olv?pn{=hSo{dXQdTnQ|$tE(%Y zSn%#%1^&Q0B&52)knG!m+q+gJxS@QhLSeLm4A{6y6Lr)b){`bRq1pQc(RjeX)aan! z&wJjp^~&Q!lLzIi=l}Pd-tL({ZacMm&Xt~h$E}u?5$H&32IYKg{+mCDd(O|!%@x5A zAW|i&Y}uCx5l5V#*Hoy54{31*D0+I&oY^`zH+Q#wTwnenR39+;gtScQ$iucu|sp2vqwKJyw%Rz}eVbeWTC-LIb( zaG^JeS#Z5kqegA+zOW^*DNLTXnr3AsO{8dk+$Pz+dij#vR}JRT#?n&3N7^IR1gDOG zU8>W4fpIO9F(Uae>fXH`aH)OJKVE$GSyIlLHEY^=d|e<i9AMAlL)d;l(HiJ-EUmYuF~%X^rQbv;?G|3dli>E07!qx5Isp+ zRN&6>-YO%GJ6E9Z-6N&Us~a_clqEKYh940LBgwu3=!JbyUpTPeO3$e6AD^99gFKQb z4w93Tn`=evUmXy@7ftVFXIE8ZR#0dWbY?u@Uc59={#FHlTIbjMy(f7U47Dv>@#V|v z&o3-Y1Rf9((}5(Ts?VaA2o((n(+V_E0!ou+&H9_ws_Mgwo$y0X;xvkCCZ2$k{^7$K zld%_+hoWK=2nu`j1DY(zxLT?8s8d?NmMa4SDxzuHt-or&-R})d=+)CR9?84uIPIP~ zVddpcw}ZpbVUjaxy;SL?*(<#>gOQg1e${hV`1&eQ@ma@tev`!{oZckr1K~m031C9a z3%dTRg6>Ku=)E}2qc;2K3ORm{zF+2Xx)VfxRbWzz()|o}>-+7$^fQFdRd$*6w1&2} zwrN@lifd{>mFSYz^9Bq^K3nfEG{5QT>2nqu%n9&uIxB+tN|h?PmwtKUn*TPKK0s~# z#*Hhe;iRHV^C;YLKSQt6h~KN)g^i7kwc3n26(7AMFX!d;>cTO$MzHMU{;9&K)6-Xw zQ~R4$wp*U~BQG`g3EQ@m~YD5s#tE z5TznGj-cf^@NyFDA(1Xo_ogeA3ND#dAF$}m01eOoBSI3^=KJLs-q06-qE5YfM%1%~ z*=c?&R#bpsRz&N%)7XGRG^UeBn=Sm5cUjtUr{Tjz049w1;GI1${k5ZqAm}9}C0o}z z&C)G-D#R2KA(H;bKQM43ZQ^C(gh+7_<3VBCE&s9l4f`uEqBf?TNGPDHYcu9HMJ+u@ zRg?N1rs$T#o@HtlO`BHWm6{H2#GNJq?@sUTdAfbh|1&MRf838Zuh%qZ)~s28mMT2% zx9{GCBcWppspOdEaHnmb`2_?FSP>uRlCHY7^Q@N7#sMl4gdrZs4@!#atWlcs>GS8S z=jLYY)?dEAzW@>t&wyn6Q-9R)`{yd(XJ!t6ygYW^tN!QCol~r9K`V)E)<%CNN|9!?NE z5ZMluhk!odQWLU^x2bxu*ah)s9f*8EKG^rxEM?A|vDOk;`6%IOS{A~2|7ZGUf<9S2)kslv`f z0rY=|vw$Lgf6g})JBev&PDNkIh%PQJ-iV<@W*2eTeej z6r~aoU%YssV-a=gR1NS~*TUzE?^1ZXL(REQd{$p}Pq%I(xzG*zzb6TIud;7l`1U>e zy{9=e&uKgMf;v^g%%`WcuV24T*}V)l7PXe~m@?=DBmsU<$pb}F*_-Vx`Ky0_9b~2H zZ{9ejzsX9CsZZx~nPxkOrr!#(+pluNgUi#-rMrI1Sh8xr(eH8f3*v9Vx1T?62s2PC_H%CT z`Y&5sel2+9l>YK%6CpW%l&<9@N7?@cxx2l;h1D6JqhuQ=uWu_*#a0K2FXAU=lm>LF z_8*S7MVsI5sN~?DefuV&dPN10|FVK7x@?$&aapymp}ha!(7Et>mVNqEfSN1mcWrvT z&ND}xE>r1y|M8Di678T2wbR?gsY%G$MR zS@AVXmMp1xw0f;t!_xzIMroG9HBVZ59wx;GwNYAEK}oKzZCG*6oH-S|wq3nW1wtAV znZusT-$QNqFdr`@1OV~tcR*d$;+MRLclOgt7zelBR}vG@JkV9qp@o{#~0+WmoD2 zgY3S|%tZYWZ2uE+P%Voq`_`87NwSBCDMb3FP{Q0GX4adXlldM}SwbX|H;EfJZrnH~ zNLIai5%Aq3&bfr^bp)Y*O#alU+(6)hH3k;?#D)u~2Zw5l z`1x{DQe#*bVAB=o&yFoF{ojD#4zB6$W;y>8ryLVQj`W5EN~fF!SBCj9xQf5RS&8X-9XGpW;K(TDnPT3ZZYseoYWVc6iI zZ%Jvj+Q+F|?582^`I@4aA%mr-C*_NPlNNo$`M-p=pFFvOwAAn4i>-^=#BN2gn^}&^ zcwl4FiZ5Yo%FWG&(bpehEAcM^^>WX>-dw`%#q8Jspz84b`}eQ)%vk9+$GG{y2H&HU zpI#B{eZsz(C12l1fuE=i`4+zzQVx-~@B1C*9`!JYDaNfV#y8`eEXwr{2clZ%v>kKK znq}A^{(=}sz zRQ4sFS@qdr1W!WhgSU-U-aGdOj&F^;C$qq`W5>e!IDb=E1=la3D_LJwut8$WBS{46%ZhTbQecl^$v^ZO~o?#_r}lBgj$IQe0q@=kmlx&)2a#ZN$D&;4{D9m zi^@)?qpJmchO~y0sz#Z1^mD=B?OlBqr!KMiSRlm-8cO$1S8C7cFz(2KkIxn^EPgZy zS+LF81_w?TM}7_PX&dmpS^gmcpmN4PvgCd75~xo=GqamJ&FYt7G?NktRgfAj)m2`| z^a=N#+BvCNz*4~Chb)Z&N<{KGblSN6hk7g?`#d%pVmQ6hH)~z@k-v8z4x@>`h)zE} zEIhg3oxQGs`Iy&BNv)RjQ@$A`hq`xQAYi*Gw|7>uv9S>~+S60ha7$GG<7XFrgunw^w%}0NR(AY&l zZ;gb6JvCy=>?L{skyJDT%y&#L^c?*|;4tG=?Ecb;zZP6MX&1#%M-A*9Jp8}oyu2Fp zbUk(>Ic>p|7l0bb>8hctxym-Yi?|&_S_Fv}Fkl%_w?eru%+rb;B0c+t4K*N)v_CmL z*s{r~PxhC*H^E4x*$CP`28g%eLzS#fB!nxWmyyD^y7}?lJ8f*p;u-8WU_c_~q?|8r z!qgO0E$tV)9fC^_p&kn#rcktt2p#$(!K?(R_d(XMt{CGe~|Qyn$Nc}@=r3>>uL3F~`u z>gFZizAhAfl43j=Jmu`1ilH8mB_RGbW5zUKuLPnLbo}ZXty9AL%|QNCHP#6;CLVhw zZIX0|qRQjWsVt#;h|xdD|P2gpBhv+DyTL7;-1I5}OOfRV3= zkIHO)UophqewmM&rjFmE4Ph6%=WQt4QIMa{WAUOv8}+4C%}%ZVwUU0wL3Uj|Tlo2N zt;*+@>;Xq5!JsZpu77*rnCJ0fIB786t;o2vuU!7IamPM!l_#XPicdb-Jrp3M^yV$H zX+pO;H}cp*WbYMGk&%&i&&(RFXq(s-*}yr0f!Ja567wCDNR*R%nh=@w{;F-4`W}1l zr-Q9?d_tGrOupTj#{;#7+Q{2;Pj{cPy(fpLwN1M%dwGk$mq!)Pg>Merik}0;w<6A8 zul>K$+F;mSsJIymQZNc5gPzD`7QvwVA@>nFOXOd4`>C!|USw*NqBnz17YQk)uc+QI zZyUF2b;vY_Ytv%ULVifS3g8OgsjfhirU}(pZSA{kQgr9p&qky#=6-o@39N_4?a!yDS{xm7-l)KM{Y2#> z12So~RK=kDX8(D#P~ub}T<1QW=3VUj>XvK;!1lq$?DE)l;+6O)gCBC1uwbhP*e9-h zZ*vW8l|hhGnEfk)EBMjF*|xV5%5?Sr9|DNlAc@a1^B8cnmTlIp`hW(6_*59H| zl%y6rZt&p8;uiJk+cyGPc}`wl?_RxpzHcwH^ZvfarM3iyzwz;^ssH#l(SBn3Xrv9IuUV&|jSA?7v2?Oie?7xYdLJ|Z z-EVBCcJb(l!o! z27kPYlBvvK>0*7yiK%5(dcI5EvFYywTjv``ty>Je|EyW3xyi8|4FgY1*>XL%k#%^x zhZ8iKn?AVKwaeL6DbKE%@7_NxSg*|=RogtZi_9u0PK=t-pv{{GnPa9du`meAbM2b4 zFeWNve(IYCZ^pd2fWran^OQzSn)qg|_h0|y)U@iDP@b6do-!o9`TAYnZ5!6e>BB#I zsH>{*t}9dXqN}S&8Vldz(UeG|fY;0a@T5AR$`wM*x*a=iEgETUYZqU;uS!_IWva0Y zhQ!zQQH`BRyOn^ltsQelHgDTDF*SOLxD{?BCqFR>JSA1Y6bTvq1(0vVAEtSjTHqqIPCJcI17M`$0mXOl;q#X$0n%3 z$;YR=2D|hy^GaV8r&5T!`gG>Y5KGWvDqp_z z<$Y$5360ydnS8OQ>aN|p)geHahlLq5XxI<{QJr`^Gc~#{+}+Gjn|=Yt%8HTRgPZhH zaq4cY46syjigg%1`~{L1EnQt-QUgjwF=sFlCLPH)HiJGu)+v))o+1SA-n;h&!)hpB zt&x486Re1-ALLB*vS_QEFAlW2%th9z;BKU?Q*@8tP}eD1-MmekN+bqpF+@y3l_66q zM0W!e>hk%+$ge7IY^rIgOUnSwrF{Kb;CcDJ1YhkD$HuGR%*(+^b|$&W%aGq5&iA)A zPqZ9G?&dsFKXGUR4MD|niN1(8$ekFOwUFFL?Aqm>HE-m`urN`4NFC0&6Zr@QholmW zlY*|H#3@2k6G-iIY^;glk+rI^?R1K)tJTQavs^V+t47X7M_@^s(jTgz@yJ(2&vR~! zNyko|${ni+EVgx-L$>PS0%SDi!UAoYj^4N_Q(k#(NJy|kr&Wc>pU^h0WEtJwM9`%2 zDKk~{sVFL;Dv1BOS4E?OI{)}sb3=O`=s%zB?iN7#0$EcRT*~-#44M(8 zOgvqKSd94<6p}i44$xO6rli!DXU-;;k0GCXfnJBPxm`uy!xRQ1NT&k_4uEr2MTI0z z-j}al0byyqdi84m;ltKI0*YNYJaKUuw{2?!UIJbxAEWn4=R#$vfU=3;2pWS&I}yH} zMRob0!=YnnWCr3I0?5ZGVuiew3tLT3G9LMg%c4bByQH}CR*L_%~4iX6SpGDuBk7X*!q zaSI2L6iQY~74!q3Ap-hcx}<`31K`f@J2N4GgIKUd?!`KvfL{-aDM7xCNiq}=pJd(< zLQ^^vrc;z)tgLQ3BtEqA!_mfwOsVF*cI_XL)ipP5+~|{-er#CP;M%_yt+t_Wbdaj~F$~?v zTC|>%%S}trP_%Ziep%rkzZ~gZ_E+)AqK-=kU+(jdUock2<(0NJzm-~jt{wNJQ)EQ+ z_0`KY*D3P)`|jOdAm;qH76?*X*Rk|n>OI>KFO~{REZ`+J}1+i zu-7<4bI9Ni#2F%I#E`Cm=KTsCj_9`G=jf#jn>Y6}-=$qOBwE8g)7H9{yxi{(Vi2jg z5A=u_rl~Asev6C+pxn|PI&>&Fy&(Fc)ug!-H-`C132iiXv6yKFA6QErrut1Pi=21hC#)F~*`q9``{QTj`a&ex6 zj=C1*7$Q!7Y*H49L|e%SmvhV$6IABW+nJA#sX#D6CGxJ-BwM|{KyszNc^X|g)AoKy4V7Pu`ii5IQxMiW`fpW& z+*Mu+^^*G7v14!U=usPWGD2h3u-i7wSwa8t#AJ&DPBj03fJAZ$K69XtwoojZRDo|( zV|swGsZmXUH0x5A?~jU_dU2AKIVH*8N>uUapDT_fAuOkSKa+W3e{5y~rof#)e!Iw1Jhr+qUMu@L0A03+aUn>$Rc%=8H% zL&%2K&L}ilRkIgd#DK1@dZ~GvZEp4{;X9iwHC7JLtl(bNSebm5HSVcueoU>#p ziD#5=OsA^BDw`R)zXpT5#P2Q@k4*Q$&m&U7na|Eug$%jOZ9Opw)(a+6Vr{rO22v)8 zAlP)2MnRJ&mS(HWZq&=Eu3uZJe77{`)$@eeo~94gla!V(&6=2-{25YkyjD(DR+i{u zzDK{@=E$7D@x9RoV-0SPP-pM7IJbh;S-D!?t5@rciFOUv?uMp|*>fv?)=WX`nt5~$ zX#4Sl8NX>`X6v@0jk3&PY=ByDq2AnX)k8yc<~j~pm0vQdNyV0P+aK4nX*>Caa?7yj zBL`+YD6lUt?>VWw}}*dkT(bYH-wls#3og$ejkSHTmtL!YItsoA(k zk8N4^v?g@C`Qj`g(ag5}kipaI->8w3HvEzE{1H80+;cKCi#zjVz_W~b>MN7ZPQSMA zd-0cF^hpHj&SW=m9$(-u67;9nx9Xo6(D;awimfQ?Y}zs0J2D-J0URtsD|!nqr0Jt} z0cGiOn^*dp9Vjp!5Fe$fm!BNwnjf+Eic6ZylA`E(qdmV=KT=TLr9Ae8Hbl=VTMg^= z9k5@?ffO7QFSa(S0I#-!LJ;<(BKi>#se;1K4DGXFSYq(Z{momn&9pTbJW{pvctDWe zlJ{Fiq{pVuYx%WBQK-S$8(&*Ubr?3594P`(z~Q_51{>gWtIW4fzSue;0>`Ly-w4-M zZrfJhwWoec)2dCa%vQPkyRDzJ!BF0h-$K8MO?3(@g`U3De*e*L`C}KB*PLMu>CL4c z1h|rDyR~NHLH%uQeRxj9IC(C>b|=SHvm0_h#J}tQ=BxJVs#tW(Xu5XXjgtM|WdnwF zw>KTR_)7(`ypHTs8+tiW_VN3?qdqLkdRn2f-*TBU($>lItE0VdM?!P_ zy*&fOQ-hM=7}r+)en`L3;XCu!nyQz)%(p6;*FK~1;=9)^`|oX#9no9G>AaeGP?7*1 zGO&cELoWU>RXr639!3r7jmwL=S@*RYY;-T;gPCnz)zXyA?uVs9)~K+}nFilZK6p5|ycG!h$XpPFh<$Kcr|i*7=sNGE7BAf8_076` zg?(SMRo9Frzq7qjEk|Y7g}s%xCBB$jJhx9kdgeV{ zYRVm1rdrb;^1a8MujrgfZe-62yw<%>wk_M#XR%?K^4+ioF&kC{tg6t@Emz~+m(%hO zJM9WZOyT5tW zB@x%mY@eulF6Y(d{I%P8mWys@-)C2!D(mF@k(T&;c-I3CLq}9BVjVIXx%KEnwd+@K zzaHaJTnlX68v2miHaY|CLfwgXdu5h=zgCfC*5HWGO(s_=${u~;joY@U@2y7DJenR< zszKc0mp{c>HDyY(l*#Lc%N_RU^WL^bP77r+9o7qs_cj#UPfV7t8~pI()WM9=@Xa#4 z)|_`zV}(&c6P=pr{B>ne*(N3PNaL!vrh|j3AtLd@ocoV+lMGhPN=Mhtg74 zrQ*+P^ zs)Z)gtG;h|W=%iMg58_0_aA)l(4pQmIFP2}$B)0GG5Vlujqv6z`o~*%jrQKN^r+Xf zSAIe6sXO0y^%~u1`1d8y_9;Uks@AM|Wl>$z0o$wmUA1xF@q|;W!Z$Bp?gCi5x#kJ` z=J=%R)fQylw|$$4SRsaIHRWjSnl%l?r(m2 z;BYs4DRo=-MQOXrEKUO-B{gS-f1VKdc3~ADR1a+Ymd#t9UQ`8ehDIa zGnOFa=P_W1^kLowmB@0L;_~FgWSX;?x#!)@4Pf=+q5BEk)6x@G0E$hysB6?L(>CI| z{b1G9tUsve-E&iU4Xs?`4G^5*{kl~SE5t1kA)2pt^~WZ?U$6Sw?iO?O0F#F}wN14( zF)wMy+HH-pOb@Hz{rkg&iyd)t%Am+MHEY!p)Q+;{idSi#flg613i0iaC-@!nb6f8^ zX;1S`M2~JuKK@#%w@|G0M#9UR?`dbSm*#aD8K0`Ko>?wCGm=f6U?dK{M14G-4Zk9j64HpDDla2=yA%;W= z@#v8sTrFsD{Hu8uONuu@ma4=IpXdGG-{7Dgj3opjwPA9$SB&z>7P6^ZC`|J+DVUJqu(wV1ppZ2ktm!C1{GweYm7#Xs9@se(H*DYvr z{hIyY2=B7FFHbkOBTu%iZmjHbi+PeS*VHpy-Gtf{s)VJwXTy#il@P!R5y05z>$?V< ztun5^BN#~LG^m6LE*U3M0=+J@YRrfTGGFzn@yG+v^ zqcioKA06hAHX1Kr*^omUJ*r*3ddP6Ev0A|kH*MNPh@r?{ijT| zsnu8A@PqTA=79~mtuNRa|9Q`z4p#%LRGc*KIBgvi`NTA0=F5d=23B?ND!Sa2_?~FD zl?+vihqL^774vFVaNlC7c6{2YxK?(Zb1%dlGWt`i$UvjGkhFcH@3^JaUbWOIGWF4L z{u|JGOGeY`5xOr6{A;e>m2TX9P=#U*>Yfww%FeHrSLXBh6duA$iHXazOfRno!lHk? z1klx>vL;OdW`*`ClRG)1qNF4nK0_=kg6XhTG5((_dd%z>lt}(1$K7!>BO4xda^P@j z_E0lV;IYeKn_AhSiv~~cnu2$HT0l@h`S4DUZI2p%EDm;$rn{R6uQW6C(z@R+sVD49 zjhZ!&kL??P2b0WEMd11>`aLbFWMO4}dHs=~JXyKE*X-k=OZ;~392XD-jmUsUb$kY+ z-M1U5b2;wa|2W%V-IT%WPkXnO-|IP2rzrPXh_NGJf_6u}ZD%JWYJgyF$ub@FGCMnn z#;oG=;glm}qA6a_xl4)?Vbw^~{rdG&ExaEr1;P2xQ?m%a0C~#+6uUO4%>41cw$I!P_QqVRa`=YQ6mR+KB`{uH(KBJf ze)@LcnMx{g0BU83l@$u8Krsqo(!BI)9tgkjsl(CHJ!htzsf3N-W>%#~w|Df=tn8jt$QDAvo%Y|+z8bt0wTSAc%(iO zM;GRJVX~J12LKR{*jf?YBjgaRs7!;J|9W7w>nGLti{oUvv1o(f{GSw#1>oV%=GzS& zx*YeCcU)Rfo0!|9GHr?fS4f$c(p{uyL}}Uad=|a2G;dU^G7lN)!>%vmZv28LMM#e{ zV9?G!7r6^^YK73`6+S*H^N%jybS4QIEbY3e8M`n3sH-2uwA#+Q2q>af`j{41#d3kc zMI;v3r=@5>3ZSNF*{YS8@PJtoo;_8o}e=6K0wrkJEmJ_R~g8BN-spG$#S#4E(e2P^d63~dn2 zbqS!o05tqtX`LexU?3QS%@pq;Fu!=;fovFtD8q}27$}^R`)YuYwzv({b3P_6U=pLA zmO673mmxD?60bk8-AiaVdCU zf{7>uuSljjGhJfhrU&-%n!ZzW5PJx=(i3Tds*i%0N#a!6d`s*9H(1r=(v+4)&v)ie zh<}7}7&K10+r#5x>XCCb8}(c+L!k)}+Zh%siq&&2hOu8WTPd>LR$%Is=mh3aD{XNl zm}t>^Fr-A`6=yKoEv(a{5GgqsJk3f*$z}*lK^_Kju03ihr4tLd{DFh#zZ=}9z+OK{ zlg%lE|M(pjbQk2W`Z0S^hh5@HiVc`GX^E^6#o?T}O9fAX-(me{uxb&^_|PCzV9Jm% zcQob->%!y6aRgW+!LA^50*Wk`Il#<0XJ!)-MmAmb9QIR1#H`VjxR}9wfzd#BEIh`q zvfcTg=$=ehOn`r45;>BUN=GpBWFb?#6Y&cb6ci}DzkYRt8%>AoW-WOmsOoU>)%*9Y z@|QOQw5OH^;(I|wr|^bGtSHi48g1{z276Jpj^EjV!S*>{+_xhdr97B8JL=%UWo$Vt z%byT-jt6?X=|Ryf;>KCCjtt2nL;(a&njS^<%}=2qnc(c4aC3}GJc6^$bz3pxZA#(a z9u~?juIL$gCWM8U7(SUd$Y-|-I_g!Z*e2>P1{G7}dJyj|i2DgqqaJQ*HZBQrA-A@cHV+qT`&)*J1Xrjp&PxlH0_ZmcdA>)GVfeo%1N} z%wRlkSRDJe=Fnig3A(Fx2KN*kf6zSt^iectFp}K#v4!u4>(=iqemd4?4V@x%3R8Dx zKy#UgRblzk2!t1WCc>bjz%$>+($f2m2SxDoj!To?TatRDP^l z>bJY*o+Yl$hN%78u5^+j8wr2fwZR{eb1c8Oo1eURw|G?Mo}T)H-=5r%l+mef4%Wxp zA0Fn#eh=`h#Q2LAZcoq7x!u#Gb?Y_SMG;>|Bp$WTj$2EDWGjrHjUcM4Ox0xrf_?t+ zHYl7Xq~rNPM+Q}O`&m3i{E5zq*+kA4*EIW5RMhcl%%0d-eZnxUPhS)|jEHQJZ#WIO zQ+V_b-eLuS3F}aN-GGr~6rt`#(O%zxcW*itDRMq%jfN&@-=PR0-AxbL12)dYDVp_p zvCK1T|7ZsGUWRnaRB<{nA#XmmYSE$>iN-t5B6{n+Vewr$b?QUAnK$7fNOLo_QbPEa zH?7A-pL z89DCmz2c9=e4><1VVCB7^msUC@QrKN^tSqFre>WTH*#c)Q)^im6Rxc@yjie* zeKiJnMqL^Ab;7PWCgp+c1r0Qlm4Fh;I_P_eSK8Ch zPo|0pQ*m7_mZF}&Pvz}i zl`{?&wO`kiz&$6|&)eGk)WX5*nk9zfN6D zc#%>I*8cAPy(!r<_nv@om_}_DWXOF3Nzvlg!;4E?>4x7#v37y`aX10GOg0%K%&I zogq8|vb~fMXmJNs*)%-D7`STwgV>Pk=XU1nE*;$L^gA~&*j*pg?5dH@#Ql*nxucPu zmO$QEPfTt6&MnT?pYH_)OBq`kN}Aev!;{)WpLwU{M7HN~ODsc+=|_NrRoVKjT?KFU zmm0an7jY!e#xk#O@11ViEf6*gB-IKVCo}gadFFgIhbd(c%Xs`0DBUhIcSE$Q3ULgH zUK%MJm*9-(?q*(-N=2ANZ`!q?vPsX*t^$u1J{c4<9gplXcv{pA$7eh;X{JnK$`&F= z=yFTWaiO0;+2ZJOe$3%9=k1#XMdUr18rI%M!!Y+yo2Bc|sl-J`%jA-&Q?~O4FV00Fc$suazF`KfX&GiIx1QQefFI%967+O1wwIXr?>YHRHyp%{cPcd z{LHX=MKb(OmSi8~^IU~f6py?vwJt*6;Nwyaq*wN2Q7jESgSdX3b4 zvG32#eS-b+8eHq3Q*@*i_ESix84FGs8I=jPxqH8v?a28K^DPd~I%M$dM6Dc)vXc3) z-}e}~_psWhp%1`79zGoY=Oev)7mSr>cS2eva>~$K&1KfdhYU8#wGLjo-t_gsO;a+r zZGAFF!1*CpeI9QW7#oRli%B6yxlt7SEQQPHMV^?f=%-!K#3*?Kklg5_)uuWXpLuKm zLZNk|vtEiwqGj$?19SJyS@v2JB%+|x5{6X%ur7ZXuwhU07DJD&pR_3UbYT*(!ZOoJ zm(O(eDs{)&qSf%yO1)_q##fRehW*jM_oVv#NyQCE%Kv0R+1H29zW-K7y*-8|CY6y( zBv2o3`Fmw`qe^%wksbT(*)ut0YI2hstK6zh2si;gd)>jHL*ulq#Ti58VQNI2!bok& z;%59~;2*oK`psxb-A)}+k=TWMLco4I8u?SkO9$Jp98=Ju`2N|4r9iQLhOG3twijSj z425|9W`BM;z}I~ZdrCwar1;<`Ctp>2(%Wp+shXL#*~V^1rw5KKddSl`?ac_UAtfl! zXC4_hbG5nNWMQaf!Ncn}>fCt~yhMY5RjYhx(J1OP^n;S%3jP3eII_ZReY-xl9gdtf z__oi)kH;*3T?y@kOqi#0KuN!@@?@LK_M=A!utCu8HIM-(h+%Fm;s`Zfu)%Ur-5T8- zPrnX!F)!E#9A{*lYq?=E-5yiitFn;%&=xjoaiCzZYOj}0(Bagzekkk&&_o?F`C^lZ zT`aS?Lk3qHWH;Yobc5v5p_^>UGkqHR=f0#`-^?i!)c402<+i8$Q^m9ow=K#)te7J&765EKFO;UIwti#4g7QaH`0@N&BxB1=?l1c428hfK0~YF1D3){ zX3F#UWMVnQsqkP83Yxs?WA-kih4azrw=y1`eV7Y)y31e9uKd^$@}uBFq>A=ceMgD!SMmz*k+YmdcIM1g1|$WcPCYiZp5dT~ox2}{_3HOYb~xgp@pP~I%`WQl z)=&BD_m}x_)vBq|IS71!2uuX-0|)AsbC8VQ`9X}*YSZP-Xn+Qjsg3-mzcqZFMyBno z-of)6Mt@kGHtM}|8zn$j@)gg3)gARVUST^5vjZ4%32!FToJYiYnt@gO-Me?@TdQsU z`~C-I*rAA>O^V^HgCbrYJo79&w%dC5(dCb|uK$gL$PPH{tQYtZlbogTR#DRsXdb&x zUw9y@+{Y$E!yi0&fcLN_(6J1!l=DK!?o{fHuc)aK~3br~PbgdogE* z>PIR!?x<^z9uuLc-`?9(5hhmTGKeQJmQ7?1lL+r*MvWYl1$@B+NJ7>tGvJxCBySmC ziq-JpwZwA|Pz4egPHH7V14^hUz{^Fd!hYcx0IPB1^yOoCWTkpWWQKDyfeWfyx9%zm zW6IVlbTx9gg$z^?^)PXeGjgPg;=*J$zLa`s0*YR5ntjG25~BkR*o%h0#u83s?vpcKV12-B@snmdR8<3G#aQo<{;E2rC@EV6EpyY3Ja?bc|9 zqg{ORMpR>z+riEo+eDIad+N&7SZ_@Yi#4Kh2$ixVNr9na!jT+?8%dh77E>BD!k9Qe=!-Sm%3@nBq zVEULG6^MXKp#UI6$m|RbD^=CFXjc{R6@eL&UqO4X8!3lYFx=`BRbV)ckQ}|i2pm-+ z4L%$tvsMVq!TZXe%&F5*>@v_^pc*(oIQ!%hfeWbfoiAD&CBAIo=ut;TF-T>{3zp^t zH1D#blSc(*wl~6{Du`{r&;8Uz@hUFbB}=+7VqO|YF<5gh3Mc?%0^cgGDbTNDP>CXq z#K$L?0{%#Uwv!@TwN$kGfNJ72mCgm?liTxQZ8A$}eT=sSFcw?!_-VJ}*Z(em@4M6C za&OYP_Icaguubs3F$EKTAu#V@Yh`R0n_{zf7(|OnXsZPgopHWnQJcu{8rgmGiz&N& zRZHnPw-n2cr4HUJqAoP;Dz3G2LPA1R6mo_Kyxf*I=PzF5_@_0hvBtR_^^h3qO)GY( ztzk9FXz=;WL~jF(Lo^HMS=-fS0t1-xGVLPHhvH`-n8(|c1;+CWsFl~YpWxy4R&n+p8iC7%&%^VV|*XDEq$W=R}sk4;> zR6S>`|GpmjLERf^FS+4hpi#nZiloU9I)L@foB{=@SK*bt+zBEAZH18$h)^yDv~n?;0GB^cbs8XY!9WlZ>Xhp{&hnS?%OT+>%a6TjofSO z;CMn7?k?ycY%#q-u<}Z1yd+u)Ku(CET2bj(S$Zefa`0$x$YMF;k|RF6RXq=_`~BV~ z|K%Vv{+Iwg-^|=xpXrISPMAnpmsh@?tiutChu=J(NoCBJxt5l6OO5pq)RPh_a?ryo zPcMSvuJ3j^sP)j-SvwMmoF|Z|Kd^dv1Ri%mJ9DS zj95DNdWy>WSMFprt$Qsm_n)DQ7!s`hk8ru9M$W1x#*VfkcKfqYHG(C^iU83&otgc7wamxE zOvIFsBuEmO`Y2{AH4R-$ViPr~E+8$9CX&)#bOG!v5ToTxQJ3V$GW>t9Hq~VQ)a2r( zjeU*v{_%J=j>gL)M~0=E?)ft-V*@1dE6_GG-c)idkc=-?%L11FM*W+U&?8WU&8@7faB@;NjO2|?CjK}6? z^hKyyHOeV&%0+7{L`>o-`MK-t7WE;iKuU1fgb&s`jNrG_ua~9wOf)q3Ehph4EmCD&=69gsH`TF z=4GB2*$l>8&?P~D(N5D6-VtQp%p-;W=Lm zX2|SXA*?`lQ~`rvTMf<3cAx__bdLDPU4F#~d~9-ZEndnlAav=sD3X#e7wIrAt|F@` zKP#m+#F?By%9#aEOak=oss3Xp?};Q(plA0+`z*sx!RxPInbWafitQhN$aa-MPYj9m zNy<1rwwmE?#8bb8yE8|qC7BFhfNE_7^Fwdl4{5e%_wIOZiFGHpKw5obvPv(v>>si8 zac6Klv9BkRV_9EQE;cZ-f!AbAuQpp%CX*oW^S}3xcY1sw4Q3S?oxluO2B+QzSXhhp zd;*8JkQ|DjVji3L>FwDAQv2e>JC-vWvMN>m5-&+%jJ)T> z*vfW|aH5a6u%HET;W&jUVn^$D|5&6&)96;yz1w`EIq8) z^`4t!7Dmo%`Y0nKL-fi-{7ZN4=;3A&TGH(g4-YdUEh7Y)Ehv^+mXJirg95Dcl7uMe zV_CA$7n4lj?f%?zWP<@MkesXyuSAirx1!wc^)nqt6v;pvU_wF>BE(jgwTtLOMNfmt zk8L2w>7h!CfBt;Ok`jgwayYr1_!aIghpZw`Wp5cVvzvotn$oyF{?h}CnuHrJ@9G#T zx~Jma6-lV*MnuPg#u!K3dLIE#*j`V+`C4FP=Ydo9rdeHqN1XN3yA~7&$xX(995{EzHDZR>q}8b$yK+{A1~lM%-3` ze)Gfgi=kQeBbv8VI{sVjrs74kl#&hAz9=r3N_qHtS{Fe@&~eEVME@`CAWfo2$;uY% zsN55;Ue%z7ni*>4pYSu9i0Bw{pKRKPyoV()eo+h4Uc=&Vf7iKPHaEQKr;^+=@zqZ) zfENXhaQW0%GL;p_ii}7O+Na#JlsQ*uywDJ~yMw zK%WBaljTlFU8|S%{t-?Sh=C%pIFr22R@k@>9TLUM#h2rj(PY0bLtNIOhs+*7AHjiDB^GB^D1Fg69mnRY;YKMU9L4qttzh1Xh)PUWA5W18z6w$EEHxAKqI0$RY3rbcv8 zw?*5jR#iOJ<&sOid#}Y0$`H%_1d8I=`O!D<77b0h7^w;k@$xT{Y#@E2d; z@Zk@ew@qTE21sJ<3rEP}RFgLi^kjq}bAWb%q9EMpVAFvH@Dc`q^cOEwp|@mSDo^dE zb{J)%_u^g)Id6i{?t{b>hsBoay+C^nTesE~!=MO6F+PjuQX$qonTtk%OQOcu;_U=X zFN4ZSLr~_@yn`6kpEY{&C&ZZgEjR!>5#<+tz8Z-#9$suc{R8+<}|4&a1|#YwvwrH z$B)a1EroYdhMWo{bCO_iSs%!FPWDZH^~sf@We?D(!C(z^l9U^L=gw`9hv^f_Ej7T59+-fTC2&-BL+O^# z-bpnqc6T6sg}1x`!2^kJIL0e+dPlP{GCcLa$hL(0q_L+%)R4)dz=X||HrCeSLlk8u z7#FnfT>h-@={by{M4ljL=W?4Ue4FYNG5u7^Ls1#gCQmHNNmrn~`fov|E3K2Er=flO z(*6n0N+;A9m|D&fle`uh+Wb^0GGjPYG4sZ!sl@G>HTz?y!%>O*2HIqnm9KuJLsU(Ze>svu>atI~bT!t*m`6@(c5Qka$ zZfB;%Ybu!PJA8C4!_{l4B79H0X*q2|8|5}+O~?dl0PETgyCQ4ARp&gb=KSoQY5BugKAVB?1`uK!>*B7_Ai(`dyI3QJ6y0b<{mLyE<&pNy|t#*mC*CUN!Tub7_U(ls#lczWKKn;-jTi?}nk zBzHh~3N3H^n>m4>Cz5{Uxre; zw!8SOBi2km;BlH7(Za?5{ddUuC<-5J-mI{yJ(O+n4GVOO15lyBQc+c>C|fgY<$Gos zR)6{`1JV*@jOY(Mc$$1m@5osv8Q6pxYRh||4LlTaWj4L%t5`H?V*R$@z<*>r3&n5M zv*&j0{bUJe)l!NCAqk*Iv>)V^>Uz#EUnjxAh8@+aL>KoykX~4&lGGxGy;rt-G@yU~ zW9UOLzeR#oTis@iFGX0%UE^~D8Y{B_dZ>2}doAr-`@*&4SEyBX&x!Vb{KM*r1w5?# zLLCMNghg)$L6!)PIYiFjX3WhpPV2ZtXa-1Ss9!T8w)pgs3_)tiA<&9Oi{is@MzVo8 z1bGcE0yHEXYkBOt-ZPhP$UBAb0D|GXZ;|=(9~BCO3bj!$wlB`FQrFb_&$F8}(45Ng zl7#)a*{Np0^k<Myei7$_j4JyH1!vBS{M)^ZpFWhr?>6B0_`06sHh)ELb!ULkmyiGCrwZ|q`DN=y$rx_pi(DkwOZZUK(8FpQ_r#Gm(Hy2X^ z|1N0xysvf_W%DLYB-9Hof(cFFFCambfF0}qp)wv*7W%Yha1b(4o{@9p*BT801{P#J ztqD3T)`?u>?*G<=L=V?4;;JS6bXe{wWBWk$h)9SECVAHXl-?ai19+9;Z!+5i!Xc64 zpg4a-pcNFL^Xu{e6zP#~JD$DOCT1li5LRhR7V>yref~DzLTTI4jERy3fp#N3EtH-Y z{z3=Bw6b5)m@w=^lk3};NxsUE61lKQXe_Hw{SFujXcie>R@Ljv#nhzAn41tI1 z_b_>nF`(DV4N7Hm@HvQZK4r4r|03_r<8t2Hcke4HV}@jzizM?r4;6|sMuupi%w!B1 z(nyj>=4nx)P$3~hs7PAImNb}4A<9q`P3n1{C0h6I_dKut?EUQh&+~ij*X!Q*t-7x3 zdwo9VaGb|+oN*b&)Y5Sm$1_b*`Sr(2CQ>ICDR$Qx635Bur_Q9y6mRgH>1MJp1gLeTUl{vc< z-J-|+C&;`r9Zw_Z^)R#`9}lt4baZm~T*ZE@E!4K3<)m4_xQPzno>V#LECyE{+xXYp z{cF$u{Q>bUoKTOwD=v9_<@=?BwM$CUb{{kCm$c%Tc3+Jl@#od17;Pj*K& zbg0@ly^DUgXDgQGSse(?pL9}f|D(s6bBlhwN-wyS`07Py?3*8* z^gdsFR_K*EH7VEeTJm3ZE2e(Vba?Xg2BDqr*dx;Eo81TEn3&B$`p^1ws;z#2qG2K!9uBx@U%vOPAy zxNZU!NloO02jTN_Z*S1%TdOz%JBtq>pha^AX?UrEoK_K9BK;U-ao(6*I1wk&Pi})l z2sSHHeG0`W#BEu4H!3UGPPR!Xm1oY3$=(=s?wRr~pX*Lx`Y;bTAlvS~Q8*Li#m`Og z&kSV)E&_EaUNk#oN%$WdS*xlVu26N1dcCYKwImB2hw^ss;}0#W<>-&NYlluuNq_tH z2uPk32V+^gfrytzra8`Z6nn#u-;zZ#f{#Pp_W-YMpD1qEG@^uoZMSC$-og7HGj-~z zs>^*Nt2h%j+vw+Cq~P-S`svRZDIi&z7#EPpwwJ!CO}wewcg`}N0;}C={nhhU!}sjasa*J*LXaDr&1d&juih#z4T==&jZv*E{x{_p0Uqg2HH6t_ln_` z3mzR)s~XtN-e(<`@si>>`dtt17}q%2;owsF$-ls=oZ8(SUf0*9ZL- z-u8b##Yvu)g39@WJVbhA&qPMAaac^B88M_K0@8`p(7Y;K7>E!lP}PYiqyn zDjV~-BPDCq)z$w&dm^%Q(u0}T(UoE~jH*EBpiWradel~|ZJY=h7ej${d=fDM1dgc( zL7pk3A&0JR)220XS7P_+*t%~NQf&x0Nr)GMloZz@Mx=BRV{K`?K#AKg`uu(*4;U)U zi8woj7@Hu?Ik}>G!sf=Z@Nm+Fg^l2zilHFe0kx0JEx*(y$qSRioAI{=UIBUZ(==XI zM!nx=x21s@wYYx4yOv}{*(Sp(Ln9+wRtDqZ%U7dGc9G3?jAgP1>o0iD{*T-%%*V0C z`3Jkl==M#FjN*HgKN|C3WXPcTGq|_RU{A)Uxo>p|)(4}Lm*(NpyS8AdiBWu2tkg^< z?%{$BwX+Kw|JRZps>NSr7a2s=BcN9BT$a?`o8(tA75D+4oJx>0#S4q&XWQ*`w6)EY z%1?EAd!7`fj>tm+mfc7M0mesk-$9v|t=Hnk&NRJUr$NJwjPA4Sp=nKf7T;xy3j?Mm z(uiZlv|44?AD?jk5b^@9-CY<7`PXjHQv1kTxz!SC!t=;CLRn#udbG?JzJR$V?(weWzj~gbL&)M6{lxuD+(URrE0wP>O>=g-5-CuL3ySvWK z(hb83<%oRhg(wh{u83`}<|h70org}hJM1rMG%*(YqIS?}96Ts`un>@FSqBT7V*O7^ zt%M5h`u)`U{dn&U%Fj-NyE1!)sf{|IAuqZSJ2%>_E(8p!xtY-(_3=Es!8jF;dh^^% zJMOU96Neh1*R!rqw$t(cozabF7LpH?b?8 zh#14RfYC2ukR}q6poAPjLWCxa)Yl!Jt8C5_(^WnZSZn9(?X9(sG^ksC&DEj%i{a~( zOG}jqZic`B!YBZ-vw{qp_wJ}y7gRJ?e|&o;=bUSyMx0sk>3JidDA5#JF^VHhgXG9G zpGK!)7b}HqXUB7otwpq5*W=>UWg#J#N32S~4~%VV!8a!EhUpK-FE?G5-c9m6s?(u}@(zwKC zzPj7(%8waq{j|+$m+mjE)KHfB8D*3$>1Kl$zh$DwR%ok~8dkE2uWkU#yZ`;VhG)+* z%D)L&&i{Y^D>2(?399$M`!kj1v5L=9zS=o+j+N$||4*OZe|aU4Rp3as{{ycC1O}S9 zqqOM!Upxc<{uHH&=f6L2EhbNX`s7KA{{8<9yx*H$lK%te>woxfmlj&TK8Q~HyW~q& zIvD>ScqJs^A_O&C6#npk;s*Usf5H)BmVjS#*(Y=rf-c>e^x7E1i{l5CmDoH9T837* z>*D8qBoDqz3f2!3WOHzxAc!O@Xth{Yvr zGa(++Y`Te&3Bb3w_)+hLy#mnk>2M0<0#B`9SpDNUwBjvI1Jxc}WE;1_iWeE#Q#~I4!2}(rilNv#@B4 zT5{`$4-2X2@eNgwpM=MW%)G_kyGn{>mxbocL;Uo7~?G zDX&FJqRoNkKqO{RxPWN6iM3bGdu8a0vX2*fjTpR%{~T@kE9|UqQP~M%50`6%UU9M+ zzYX9ddrrlMn-PpSD9U6;5*-*7XtY>}@R%qo8`3b|lnTVmOq*@KM)4!di)|+xFz6I! zT2iA>!*)SaA>SzoTbSWrA64NQPJYei%1)QcOWc$`~~w;*4LK87>!Uv;A}Im zCmpD~M3Qhz>R6^(V)rSeCTc=JXjk%H8vU;gliUs=0=#?YPH&yYnc|1khr@lsUPe~vN;yr%z+QGEqmq{8^+jwFKP?rxjPxPl z*&p-H*u@rKM%(be2I}r)pUq_UUb??qQeM=Q*i(}FVpbs%JC2ermf%~Ah7P@P|GpZS zITs?BHIsF>S1hEYpBk&J*oiQfa=87mp>Tm+uta>~4o!j^5B?(U5ve?E*7C+Z?4VkRsj zq_E>NY~HC%Hi&B@B;aWA4Z$P~dtzD42^>o_g8@x9HYxsoN8{9fq` zc$XJpmOXje`!I%~QkPAs0WozGkgmhb{L3N}48@D_PxMFl7h*_=<+`}^g3;rMz3UV4 zMH$ElK49BZ1`Y*1P)Mi%cMv!NAJi_g1910c3B!3<7DGp^ePS=;T$WQ13ibd`X&01~ zKhfSV8MMhzo927Co`+83da??O7;p<8=xrQqQjGBE#6v2z5VnW7?h>U8+h#G57S~GJ zRG~JZwupg*X1(Y$`I3-3u7jwiA|gtbKTdlqSORNm#KqKKvm)A)+()dle0+T3XPN|d zbxDR#1jDMGgC0B;IC>s)vrBS=on-1g@6j<&vlIyPjWEshct&4=I&|UEV?>rzdR^mT z!)_0i*wV)r#H1#-{}UjgrM6TCLFF_cSK^;U&rtiVU+ z?>EcXI;m}K!#A|;WQS8HPcFq|H=tMYyqZN}tp1B)uUSUd0~)@O%+8z{EP!b(a4+Q6|6lH^15MewNvq>)lTbDcgAK>|)6_ z*d*CZ9uPBc8LJT1Il)s39bM9}$GkeU5DEoxog`>pAY`&>cJEu!uC+f^vLMB&C_84j zixY%rXmyGGO##juovFn1Vkw5XEIQM+?pl7%+FyaC&$!oL^XM=*AL2Hh#eQ0C2L0e* zk8u#A7SV`(pheyQoZ{t->EBUlbRqf^pHCzP^mkG#!gJ>5IyfV6FJdP+?EKF;H6mZW3{MPdZDf>VU)~Ru1aqmNR}Sa-ok#a1SnRxK7drCFLSz$) zV0<0bAp~-C&I~8>(Jdc;zO6`cihuR%He|U`*y$Z?B}0!%cgSVgozIEf`^9sk3={x4CNKEGlajq?!UNmsd zJL6C8y!%E}6(B8G z`kTqDzJl8@{DK2Unf~T=gvLp6jWJV8rV9i;RRxafLLec)sBv`JOI{=8c94RxsYju~ z+Cn@G2;MFrubkfc-`DgK3!dgXZ;OKx$t3y+q#_92@mIoqW0FZ&aSp^ifmfl)4>q5DBup@v0lG%|aVtxEAZF%7~K1($2pq@?e8u?1XjsUZM1 z{eNuo@DS&F8BO4vbe;Up`&D>XE@oOZcG|S96z0N2BtHNQ2}lld2V1}9{*e>Y+m43V zz{FN^9|57UZPVG^8VN}wBfc$7QjI0y`MP3MaCu5C9z=LIm&P2fZOZPm_zN2T*`|Px<3``^u9SjrT3@MNx9-*A@f<`=Pd)f7e6pZ1{ zAYh;@kRhcpwe0tgRAtZ$UAPKq+`~Y#N%bOxKupwp!@?RvK;qGKQ1ob;M{5!sUeHb- z*}i|@Obg58Gy|HPj`)|z!m!Y9F+fE8Su^|3bQu~>?>HaLDbf}2R+WL9f$s8XP)|7yX_zO{%Q`N4>OgPefu^71mOLSz4wU8E0Zu) zR9+a}h>5>KY$!Yy={Lz695ZYoH6Wx~0a>##3t#r?#t0Co`Wfc8D3PyYtl}Q-cZ5kE3^GI4IIiq|U)PdH4X} zRV2eH3OuX1bD@G&ku%~{oZnjUCUVKUKEqlttD;wCm;}vpM9V!)oUSF-t7ep2c0UGg zDXE*hI!%o#w#Sp%?CFmE(XhuX0Azvx#5i93={#~{-QNFqcu=xo7h~*zCGJ3;!qYRDE%KJAd8?!yRJUt_v_7*8$fy zLJ%b6K!_OIm}b!i&=D%lalm?~YPjn;0Y_A9@0r_3?k=uO<ny`C1G-E~$6G~avo72$|B z+?O3^@IA$k09?8k8#vJ_$)J!j7NGkvIv(fNgP`0zPqEo?hX@5xaM0}wrt!~Nm|Xu? z`m3Vo-u;|Kti|S!hgQ8D+b^lfm|Bk@Qi}AL1PBp+!p)^TvX}N>M*$g&riCev5v*UH zewPJ_9k{zkX=0^er#xWo&-s4JP8=%=Wn9O+XEb6@^EG)OjH8dzP!9i|&r)3LsY6-= z1W+6^EiksSIvh7)MMib_(e`;=a4@V+zj8JERuhljq5478h@T~KNXNqm>%zJq))RW+ zX&3Dv{^RtcD2V^eHYOG|5@Q+u2Zqq1)$v%K^`oc=hhE&@J?y-8Y7i7#IjOjuxXgy& zcIAbQLEl5K-?yq2Fnh=CSs;E)5YrdKZ^Gu$p9-jFdp2~clo!gakNYxXADq$EWN^n; zSvUyl<_AqMy050}GrqhbDgj%pO5`E%w;UYf=y2FSQ72 zUOHkbvE*`d)3@A*#(U4(N9#7rG!46{1@&?@=f&_qJ)ucB}!gUgNNOiBWPFXr4jX^#`QPIj=F5CtsMdRjU%`{vbQ2;h&zbVcMa#-4Cjl$Zq zD9?sUN$eAF9<4N{(D1xMylI_}9&IVTyykJ=w4`0pF)@bY#_b$5*pJO~zi*A(?KjJW z4v4L`nU`5G#xkjNxZ|EX7K}U(uLFGAe^La50SqFPSF7jYR;Tbjxa!k~4=3}&0o&Ss z+UxDT6$38{-ZW^7|I|ge zv=Vq3m+$(P&R4ej&2Dpzi}Ytzi4wajCC9`VXNStdhHm?7lI(G{`-4RxOIfsN;q~aB z>;-{|!Irh9=r%RdJyP=Xns1yn`w3xNH8yt<7uvI4!-noOVZp=P#sQOM4oHXwq<|A= z_I&ink>hU$d3t(kub`22<8!wQUs9Bp?QzBvCmnVYh%j&L(V=Zs!V$oy>c_f;P`LpS zpU!(q{#K(hlTHLw!u-I)n3yV*Kf^O=X1f5D``bcPZb!*lVhJZazENp~7E#;}SR>Q^ zpxaix6KBT8(K*_e{P^ziObiI|1Hc+9gz05;0k17k zyP|P}JO~!zJHT{QA?otsE+q>;=&yZ784MUY!F~}B8g@-HGIg=ZGN2-uRwvIJa2&@U z{G_ZvIkAod#c%a^S7KNAB+?RX9{6nFiu}JL^w-Np8qQgK$P(`&tRUC~m@}At(7&Q| z(Bh2v0NFCfDA-?9MUjQ?Lfe-n2X^hM%pHaNk_v5A=$c}jCRWk#TxEBIQjbnq8zdLMXLhs*8S`k-gc16d!iCVbK;^?5SVaN3B`JvF22+WUAqX!;LaxB3n=R)w=%& z&1T1gFKqL$2Y;Y96b7pPkDPG|)6vfag6F>yGqLMEv7&x6avaI2l{he1L5rc;VTq!h3!d$% zFuw%vhovE;n2xFyeh27s$xC4fv3%!f;_QZ-iW`W$fPUyHm&tE*U2W^O6{BYce@_*z zmMqEPy9B1RzJ>g`>)Z!Tr905p9-Lw0Zovx8(nNXt&KHdPWkGYOs?`g?U-34f}*lHw~qhZ!g1{p&AZYS#FpLrVQI7MIYJ%_NkZK{3K)=nRi6 zz*zf8zuyHIzqS{6lDbgT)r@f?Z)~WMf6uXo4U{JcbFfvENIJrsL@LrTcal-OqQaXE z|6ifu^i;3#XUqc@PeQjOds?8;UHVc#IHHS;o7fcDuSuZ3G8`9yvO)qzL( zxFOr!MD6Dv1pTHwos)h0Sk0ohzK|}!zKj8;A(KmwG>V z!y2S`2B3}@E{oSQ0fOO<73+%unfUL@*!|9{8{~I8$fPMGICXG#qTx{WVLL zw8dzS2%AkG`ig*hlhI=c9^mpz+$1p)1`y!#s6dMquOG-igXo(eH~VS&xF4uf;k`KC zod|23W&)dJFuqFMhK&%q5v{mV>>UM&5y}$=2{SsTEQ$yY2$gRJk8m2A{? z+YrwIJPXIBd-rX)PmsW_VJq9Wz9qRL|YwGRazu$x%CM2yL zJ9e%BD2^|0Pxf-jyRB_dREH}qUetB# z)f1f=U7uxYOH-r!Di!XKkE;N3@Q206hOuiMxPK!0!mU6g&B92OMUdQ%USJ8?cmYIF z(F$Ksm^Na;fN20SEI?bq2=IqugPfr0Vn2==Z_b=K(hY;MU}#rGC_OOmAXjdnkdXDe zbXYT?S;=eB4m$JF+U&#Pnnp3x5*1JQlYQ>-U~-!c%um1s_(hvZ@TyR^!z&qY@bg=| zeJ2i-n5R|7{e`^{s8#U;yStxotZ>rp@pCVz7!&D){*?g#-~0inl+dQp5bi0bfc!td zcEJ@{g+Up9u>Y!BtR$r)9gHkWDq@-XQ)vka;H6z=M*+rJ1TzpQ4`{C{DPLyHxDog|suUNN=%?N`55u|6`YO+Lpcj!$9 z5yhtSicHC5XPuUPmXh!o5D!nM+!6o_i>M7+j(JLm_ik}*h>S3~h<<2&eA24o9j7o&Oz<$&-usnrQ-8Gi9C-^K$;waFc zygB-Oy7VPh@Seo5o5n>xiMV%AJg94}(YCg(m>D{nqmvX0G-qC$_8+pUSo;dEgJ6zE zaynKa?0->1^Wh4d))?Evn*ubKG>uX7Uxuz2-VipE*;REFnnHPZv>P z?h-5J*yJ8h4?y6B+BT2biVzTl{wWHyG8-I$xJcFF9xMA&!A1Nu_q%(ytPlx{H@Bt( z6=FWE?W?pjEuCJ{hNwAeIexNwR_2!%-y>t`?f{*=|YT~fZ84`X1 zaKS!?d@Lm1${N4YbmRFuU9!q^PWBEKU#}5TB;Em%1ZX40eN2eDs2Nv&dcFzNHNbdb zU0Kg3R)gb?jTAQ(Ix3k|2@9N(KAPI!UvvAv!3f8%Ur7sA@8kUCVM8pCxyTTciQ~tc z=xHhmb%h*L-)XfPYy|KhVQ^El`D=Q)kB_WS3NI-DvJkSSusuPuR(}jll3f#^T~LGr z#1|d>r4=(}(aNuSxuyzO7v9NxC^xJtewh*T!!TY$^eXgq{7i&hNrQ|y%_aWm_QoO> zWR%#9Srne#)qq5VkjuH#fhqqqrM+va^-D}KLPtJbY&(k{r{63v7s z_z-oVH6i#ngcB!S*Rj!us^jg%Oi*%fl zL4JD@>R~KwWF$^kEEV>&)fFOqQThUUc*YnvxLY>gKTQpY@oiwj=#5pAD%>CTgA9}3 zfm8px`%kAp&o$#OhgCh-URk)v)*Elg^@a5|2iq)f8hRq3;%lOZW zPXaIv@qM(sM#BoPVV}z)HQ@(AP}u+z$wY7K2@w$z*yAlwm#*edwOQO+S9b>DG>PSi zN8$TZJRDo$gN+K{gm%Y{qvrph@PCK`3siF^U!$#KN)jr3VRs2HmLS8YH-uhu;M>`J znOcGL>zaDYFuil-3TLUfWHDnes+$`?KmM9S)IF;e<>jr0OEnW2C@>FcqJd0nNgJcH ze^AuM@ZJe&z8ZOq2Eat+770`guR%E5p%*T)gjfdpkZ_<37}45cTXQG7%*CzlyB)kZt-=#r#}Vo?*wB^>S& zvF7U>pvyLk8^Eff@=pAQfkbVvCMl&D9*J%+xSMhcTZ*HR_4sM7Kk?*elMbxOL0xdj z@gI$@StZ`|q&H}3AW*~AxLr-9nAr^5us1PD9jfOIBx06giZvz!%7*<`w1MQ4g`_E| zu-FX*6f?%gf*(`Y5KW6;j=p9Esv)_DCpAJoZ?<}`5ai1RLb{(4%$;a@$gxkaykQkN>5-)-~8NflNiKbIoaLxLk z9j$b9#J*$MM=B&)1^v(Fg&xkaUQdy z({X*jQ+usv_13AFFWK3H#*g2X`i)99<a8 z)Y>puzzJOeZc?A*^A*Z!AHE2Vu;e-+r?JN;p&&XxDbfI9r(kC^%3`%bV@HZr$$I^z z)M~}s{?a5MAhdIvAT`Po4-rJCH}7G{j4yPWUW+47D~7`xa8zmnS3>59BU5C(T>Dun za&gY#3}-<>Z08UQ3GpG9Nahk{mX0@Q{}<>bS}JQPs9ZqA#fBXV%&FPB&o}}t*j5?2 z)1XJ0A=M^fV4a(D{{|n+=aFVaL*SM*wso|T()@~D_R~RG22GiAuoRs4GAMTE&%nwV zyYuHQlbG7D;bANfN@HrobhZu4#(+}R!gl5fTeiSGIHJ3`!t=I_5I7yb7|0Vj&#ysw z^(;PE>Bt_pfBg&&38X3uFn{kW5CE-^&hhi{Iu+~d%(*yGt^NLqcl2<%`Is>Z=D>nN z@2L1FZ42o%WN#q*kfc#}dTX9WNDn45=Tt7$O=*OG{dZk%)d`0y zK(ZdS-Oy;ulqWviGi*TckNFt~{%VC)U9Ad7)ys9>G^>70uX?H!Re$f1etnrVfPG%h~drECD6d)^?!{Xo6n z7cit!iNK1X5Oz;Ictgiy+iBV5tBGbD+jN8xQ`5l##w`dKK}W?=%YW`Q%7GeU*R(-> zY%?@aoq-W}Qu|2rq!23uDx=?0Q)UXml_=%fek%F!@m~Xn@z2wrL^2g{hPg;J4+NsI znGXb`Yux7oH%$@S4*&iTm>!6C*SF)SeFZEb$<#s&o#Rcxad)4f&VUN&eB2!&G+ z_TY{G-f4l$A0{TA4n1$35cpuoh!H^#hKw6`F7b%3@7M()7cV+}it%qD&U*B{^)CYE zc|s$sm=k{$E9w$9~<0-;D z$gD7W_|}>_9&h{WOl4uQsxT0S3oU~LFsdQYtD#{CIS?fJFoisiN4&UcMP_xIeCT)| zS{2Fc5b~f1&o6!2;x&bUb14P*)%>@AiJddYR+y-$a%Cw;w{GenzIk{>X8T|x0unDK zExbE1FyFGJrs7U)O7FLQHZkZs^}wliU?>oZiIt@*7(U81(%Oz@ThxC z*i+y*E%0o7?($2gYVU=>%WF8J=|O-FIfvydapR>7r8v^eOuM=ZodPYs^bd^QaYj*?`wka zh%WsM9FwB2J|*K%I`taK%+wWA4GAPvF$}?t7BB7uAhi+FaI}M90x%R{*$jfziwB^> znaZoWYB4aBAWItc>$knnXLr-oQa~5?@HO1nPVY)_(%dY{o>O^GdE0__C`!}{j(fv7 zbm*@;a^K-emPAWZx<$k`pBJNNdL1398%5Qp@txs<3-bwPY)Fd_pBIH$5u+Bl0}!ah zs}{MjG-KdTkxt5%&{JH@ANn3|n0M!2ndw=ClL6jAtq#$YXmF~8ZgB8Gr8XM_gja9s zy@lM?0u~X$=MpY*Og3bsi-4MuiIxzF;UUl@{kO9n%eg7(Z{EmmHIR{s2Tq0Os_7L| zep$i%SYdlO;!`a7e-qc>6 zm1nRX+97)BZTOJ2Fmw~~Ugl`4hU{9Tu8}(_AZtN|39Q<96{{KK~mijVKHPBdXGjG zn#_plkpEGGQVs7g8BtZH?QLGR99X$aR*6T2@1gTO#;z0-J0OsT7Bcq8Z&yFzMx=Sg zCaZziO+vn=zB22-U_qvZR@I?5|NSFN4#L!hbUQ+C=+0gYu>5OpP+wM7Tvc_nWUDE9 z23K-oap$yvQ8UvWr+qhX@KZg-N3AyF*GDZ?I`*E%JRe)N<}@LD0$rSdc7epqvkGOv zwtr;eEXV7;R(?vib+Q%0BsWs$kjsHi|9-aN)(91KHWzWjUJ*MtAifS;@qQiPmqNxf zGTuNwe;ol9)<_CxAjK%gIrIUN8)aG}F7*TtI2Go0LkA#sLP|oTQtV`y!bor;C@0pPK-Pr3vudtE+5BAT085@%}K(qhc zPU#L04t!5fAj7zj?z(6Gb>P6ADGS7Eit*jdN^<8*JsPd8#pr?N`Q%xH-NA;Ik5(e% zQUzWYV_)Q~JwLS{<2bd5y6><6Qu$w6)l^f1*y=%C7gux{lE@kcx?EvB(lscYVNKKn zHJY#NwXs^3xE%uZ0Q9D?H_oU ziW$!7yW22v8Rjr1a&DEmx6d*R8|l1ljz(6dsgAm=f}@w6VS9y-6a_}bFp&MoD}|0m z`68+_S$Bw~zbx=U7B`fU4AI&5@L^}lKk>_?>Jg(Q<{)GyoUdU1u7~3zPVvz8#H5(= zM*MnqRawF_5yT7p7w46FA)9e!fzdyCliZ=F-dv`zv-HJ?(EsaCr?gkHOWykE9hCR=9*axo|+#XFedrx znsEzDK)#fA`FwwQZm#Lua7xfrItq%(?9TXr5j)|Y zvAscCmKr}#fBpJqKnI+lK0tKSNf4k_l96YpG<%KONW8dukT-+DPVF>%lS>#J6-oRbJ7W;l8B{(K$Z z8|g|BVILI}=JIWtr}!wQ`gT&12Mcm_Z+=fUj?}4<2LLA?F*gSnrFYM>J+<+pa|8?K zm`%Jw_c|)PW878VebV!oE^(LIq?}{P4@;ez#B$HYQyTGA@7tNC><7S?NT&3J9(-aw zxfR!$AEJg5KXQ2CNaspdvIAC=b!Px876aF( zL0O%bbh;TYWPS3Ae(st2Sr}PQCq1nkP))91>g(AxTY9dqq~9O+u7OGsHqp0k9f3hh z=B?A;;96GzFe}`$#+aKM3v~y)T=B*{iI!0cYJ>$sT2-7_9vPfx76buIrm-X*@eHCU z4^{n4Wp9PPSI|NR$?%x(O&OAoU&p)Wm%Afj5TX<>G5(2U3Rz=Qbb;u1?lcvl`;`utt` zvF6uoX-SCr`LX7U8yu)5GZCxsh9gYI3C2sQjLTpM{;H?%wz#iQvA6ls$8EdYQRi3| z>Zp&2Tw)MtC#gn5+FJo{Y!}7~S5Yw!hqIV~>^^S<$z@HXNFP4{`rKYt4}z zLCxD1bUz6LM`$)7%1~}ypk;vST>ZC%f;tZnc=N%O2RpYNGg7i_>N(v{|JRAW+<^6DRjO1$+*B71 z;gR--|Gq5Shhb*QL;;?x@DccP%jQsX%j76&wu#!mUVcPv-!bkCAMvcNiGfn7HT{RX zn?RBTZ-mlW+Bc!x4bl2X+jSJr?jeuv*YUILM{cQ!uyhb0qPVyNe2cpaW73qc9&uHn z2aC;~Oj?eGBEttV|>3CpoTx##o$B_f};4=K+v1AcWA~d9Fw%r zTyTABaj)1pGaZBoJz-i{kHI%3QvLixDIcch)0w{l`kJyR`~i!By*U#z`1nlvZ_55W zX3HI*%S!(Y;UVcwT?J_wyi*iKHxf4v&zq9 zTkp;2=vS0z5Cvt&w2VaYyp;W1!o|YxP4-)z#4C-)Kqfh|{S85o%~Z$r{KqSrY1tAh z+ebL6(bE#at+Mr27c(u5tS9X0V4s6u zKhBLIGdT()rrI@OqGA$%11}qd^@HIC_yTDCbZsGS@XRHWp`{{khrmY@u@zxnN>}zq zY(|9(a9UNCdf?^14N@(92~y-?$i8G+MRWB{V>l|@Z3vWNUrhRno|V z@@A-u*>!@CXC1DuyeQjg7(4zG;pB9F(X&5b=FEE$)>HU2bVfy)mL)gPT?^rc49}1^ zh1qgbtu=!$8UJUL7-lHP5Hc2R_${~*j5@X=A(qF@5tgY_%InvzWTGfqd+yCfx^a;V zKx#aX|DQxdLMonczM!yp^iZo0g1AZC6umzGB+g}U7z8PWv9*C;r;Mlq>ql1bfaHl` zmS7~5qyoV*?U2zdLbCNl=ZAYes|B>Ia0d=vYY*hViDYaOn%|GT7WhndtDYxzMA8C; zJadhAD^C+Xbq1Tv=2-I0r-#*iAPzoaTL7ADHB0?^{YK?nfLY_;M6g3P)^?MT$5`5d z(#TtHaMgg3FO~Hbkdr3lzlucB#m2#{?X=IX``6#s$P$u$R8*AV!WZaH)=_uwYzFlCDRSa<(fjP4^Lf~zf4!+K zm5L2yV+vLq4?pMyu>SQ!N{7jTCr$vix|iiC96ooCjVv*y27CM9Q2TmmeYe;8^}2q( z92Vi72rnKam&7jai(=-$*Ds7FAuY(2UXH=%gPDWt^M z{lFQh!aqp^i*&2i8d|OsX z!ypvau#h=~ro+jyA!HCYaT90+2T064sF~>0WmmWco{c){N(y=pCMMbZFRx#}Ccf1} zK`1U3$e}=*#koX?K0wjTT5rkrK|D90Id;j#&rO!BiuX8vws4sq!i}*1{$f=g-C+oB zk{?)EEkkEWGExxZFy*>7u3=U{>$;PF#r4h+vQQMd8#gryaUZdzA@2Y3bivYzahU0A z3Xc%fOXhK@Or}?}-Gtw|+$mxZ|B)@bk(gf^Z*6*=D<(8TAdsU@CB-RU^M&CCp-ML9 z!BLl0Q?NEBIOe!*dz%UY3B-Fnct7CdKS=*TkUcM71N*Tr$_u%jdDz=XFQD(?@&mf0 z7|P#L*i1scpjekuo1G6;X=5dm!+H@a2`Qv5p_WGV^oY0PshCNZ*}U%=KaCBj#AQez zUO6&bVD?-~OMeT6FRNi}rgm##`2kbSb^Om_4tGJ^)lf&yJi2(Zo!O5uraQ2R{~5FI zo6>yaC?=>V4wm%EN)81%Le&;3)j`~a`5ve2ZM&1T5Ss|DVn`z=ToMF=Gk!(HufpHd z9I!glcE4-IM zo0@pswQ1|^cC0w;eY08F#lA4_VI}6><>d;nHZ^i>R$Pip4|1YM=aa9kjj>%*Ig+Z( z28UtY*Fvvj`c6|KZe`RkW~XB3W@q+WYsyC$YdWKLd2SA#cg}E?z)F?F}Y60O8I&Rp`ckR+{PWFPot{wM|AHaTApp>6qN8EcZEYuSt znEq153oH#E1qn!L$@enC$qO1)Gi-dZr#JM`cR0g3paE;XxMs$=9}L{-{KZ`L5T+qUrZ`{v>zI{8y5zqVB{ZKJ+?zGpQ=9p*ooHL!w!4vNZU|~ z1n6I3MlPGeWf*^D)n|GIZ9|U#1_Zn}2p?SASF{f!+0U#tL@&UOCwhJIS(FfNCOWCs zUu{_})J&$`2vs~Of>7UV&0OYQbF-(X&|>iZJp&j*=hMx@PJMod_?91s5vJ5jxXNVv0a$;@U9z1c^s&TVsYIOcG zS{UqGN2(@DSFx~po6XT&w|R4o)dRdATOD9Bio}C~pC%cnVXuV^nKuP4T!PY3G^E5V z*(`?MLY9<`IumnNS{4=|$lyH5zs{bqraQKJk57uZU1QDr-w)SPmbH)?rtG~Q5LWXT zo`KPX`sh!lqecz+tJk7^jn2uo3z49aDsHMilG5b05F*YPk8e3%=D<6m4491 zWTUioeDa{DvZ&7g=rrYT+eWUf;&=KTZ=H~9^X1s(?>c1xs9oE(zJ7kLrIkgITYg@4 zOZWt5ATFIA@#>)8^&DzKth4aLn{#MdEb_I5T@JDQTNu~)^&h5&%!3pYsJHhqRs|&R zLCo`~ML2q*Gn)?Vq?Q~qXO?i>diUPDDfw-4HAB7kT5)kZGYa~wi9fhjz5Mn#{*cXB zI4a3%)g*rtm0{}{znl6VIbxRn^_79vNMp~&;$?$3kW8?W9Sb{xPE2{Th8es}u4sS{ znmWytmm!x7G|ZU?;GD#~Ae`fhVecRRCO zdGTBuzcsn?)s_LZVXUWfW3?(T?a#auY)HAJASps#LPQ-*)h2nfRuOnH>+BaX48!;c3H0bM0i#>vzU;7Z4Q*d>T&V4mrVO$ z(6&L~%_qB!8#b#-uHS)SBTNH7+V};&jr;v%TD33RX~Vng2@)ZOro;~rZB=m^E5W*J zhS%j~Z>sa(s>AW+MXbo>#JEwrlM3v+s5tWihhZg%; zq2HPL%eqCr+>A{`-O~pQe}|6X7j!+ZKxepDJsNTF=zeUbss^;o80L3*XKv}AJlJXk z?fd?`eVZyd-iK7Wf%)+=c1Mj`%okxBuG{BTty~@L&a*DJ{uRuV?ok{(MNMw%95+sLR=#xSF4e=n=>K40>p zfD<=(pJ#3{fa3qA>}_#TWV@L^;&-}V-JbCK^IPimig>-82Mj)Ge%byhJ;FbbW+)Wv z4$!QPPGn)uqObY(Ao8z3{TS5DJ{sX@dtjN}iFlH6fAyt{HQRC1;E4@+(DMc2NjICu-u*Bw_kFt!3AyqHJG3#`h%@hrFLyE>-GA7>AhdhnWyNT@p}A3g)V$_b+>MU38^Jg~bOc3d z=!nUaC-3&}2eQU!XYx+1zp6vYaG|qbUdXs>%!CQipv?*e<9N~30Kki52@g!xlmc@o z?ii>rWU=zL%wNerf)7$rtFY{bvcJ2}ALA>_N(0$Xp%9N9x>x?6EYyxkYtgxL@U7gQ z*BqHoeO;~ZQ=7&e6x01{0NbHhfMAuyG(-^zpuuQg zE)bM*gfC%F(+*GuL1n=~MC_JISrH&0Qau9YP_atrcK%{nCG`AxS4tL`9$g``i$Dm) zE0A;y7KHnfUS3|_n#oT#INfws+TSY)dYTaq=Un*Y(qcfKW&}7gGWdO;Gj9lcvPgc? z3*ENnb+g*rYvyd;ym|8HVLt45(I~9^igHl!azr@M1;)&MMYn^&jhqdrf|bVbhJTW9v}d99ewdDA;8En6fJAwNj!SdeK! z;fD?(l4ZVMCv`rHBqxrA_3V< zIG)y~PF3MLNdZo?CYu;&W1J5ZT8v6_BMp#vWUUuvRMP5$m$ZZQSUcChPmMf=NIl(* z=iitZDRsqeVu}A#eo(%}rDhoGE(WT9LvB15Ww?XnJ`U1vHiq=L9q%K?I3r;p56pKy z%|t~YQsy5_wrJV~G-6NdIx$Vee?vA^Fc0kh_XJr}46#>~E_gC^3+|}CN#3FCErB8Z zICMb+@j)SANOR8vd3l-nWIWQKoS#G7O_d3^Y7hrr93-=iNALQXFKt&p;?|(@_md* z)2$XQy8oQTIQn0!EO}E*(BDc%Z`r8LDHH&Ms+_k_ z)gmxWWO0q9E($w z6fI6T^T-7L=+UT}tMSgBk?sscHMot27%KqoRZ-X%{Vr5j+lKire?s3!0~2&P2spR$CjZyuL}CWL_fGO0HVE^vvUkSP!LQx)WLMfkFK_vJbxHBR|*z4Z(ML*DfZX5`oTW z-{XEvJ>ZaHK{fe9AJ~!FUAk<$ya>RNq7Ti#;D%z@4i}o6*71+5prHPo7lL^GXNzgN zI1QGWHddQYdVhY}l(ZMS-eL9>@Aa0`U;n-RG3lhZAhR>>DlThG%|B_OP@QzfN{KI4 zav9b($|o9UQ4ZXHz7@hTrK@VKrd8LjE$pXKlum+*Oe4Tl+^2g?bw%M zv0@{y+;iZYy5~T0o^kx;_?%FPfozxY$Zcb5o7?XAd(cL}P`{@i6XgcFJdW_BRTLrz zqosh5;DjEF6{$)Q7t(I3O#b-0XiI=mUav;L!qvq^eevd%R8zBImw_L`JzUa|&Z4Fm zLYx%64pD(8mWD9|4568tPzr2xQ;4=rD!DlK{V|s^n5#)e4<0Yl#Th+0eixGP(b6un zPx)Z|y>**5RT)0tE8qr;-@cCeghv0gUyL8x=KJH7B0)QYrfhfz&N$K*7Ui377_tt!2JfmJCFCoDJCLb$T_D!}NKfW?e!yMI!V`-6p zOujZ_$nr5Z^$%sNb5QAI7ncs~B^D{NI6`vB{@mS#V#F*wakfX$$qhn&N1Y_XLpZ1V z(?wjv-R6L8gy%~CuC&W3VyGEr4Z-6}52R?C#m!>IxlEtfl#Om~-M$~{W3#UBBEK)I zHnmHJ=Hd0Y@G_;rVBa&tb@S|J_;-pK+q{ky7GC$3%T5-+RSQYFs#&IydsiI1)VwU! zmJQSG1Pj1_CG%M`OfEqP#j`jhx4v==NnO0kFjj5Rs+9^)L*PU}W0)rbX)^s6^Tv^p zJ`ASdZV4HPxr`wE40H&9393an-Xi)wdne|0&r`wgbICEKR#p7v3E$4maQg2k1KQ39 z)-R*o#Fc3?!=Wze;gBFEHu^vfCR-R7Mrk8U#q?I-cxFvj>??$71xramP8v+4gGQw~Ef+;1#|^$90hANWK#YWM{>Ee4?(gY1_Q-JaYqO(_ zL%KpI)yT4>jUq;+aYac!>mwo}9=AT3u;}<{`KAXly1;TpnpFBYh9iG2une02TyaO) z5w^#vm`&{~hRy}Yf`a~R)uUG^P3O9pv_Wk&JWd5S>_d{4^)BM<#}onrn-R&Ff(s3x z62TdFtR@sJGgWti$R1_NLI)iwS{6d7A#`E19SN%TC<`Ei0i=0Oh9S0KishrsVBD1l zXqtY=W;=`eGp)l#kKAae8LTLiCT2cJ4{qB=Ig*Y*{L!R{CCQ+=4*a&7JS#R%hGm1G~N&tv>;TegxPb#x7`O4lfD%&`y(}|uYJJR8DxLteP-rnpvZwd zAu%#De;CjyMfpwggbZ8(@JAHJc~?v8QztLLcC*o_T3P0XAW?@AxiRpkX7pJz+ScLJ zF&kwC?scNjqkv7ITyB21v|KK`!*k#U-FtJh>ih>-r@A5FUOrWIyR)5oK%Tzo^44WP z*=NL_v+CAuQ<7v6H|W6|X|(Q_@`FbU5dx3sexsZFe*y=4PtvP`ag_el0&eNZFzwxrg9|4n>mjaA{%{8l5O|gEIJ6I{=6DXM~BVJgNZR;zQ zP%M>tnuXAI%eh%LDkGKw<1$8G18E_XW^e1vU+e|WeX?&UxHM1m_StGmV=er|Hd4jmvAsghK5+fb<9VDeAI5q&3h zywa|cmm8qblS){=vKcP9c%^eeoWsKUvFj}I>Nl?2bhek{yjfl94e7pjIX!s-6Bh!3 ztUnOOYoR@*v`{XHj3UEFPru*U39Ae7D8NQi*au%1JpOX>a@nKMzkPPon8;uQpaUKs z+Q-eAW_}M=B|B^cdKOnv?(qgV06Z3jbN(w`cb$v=qg21$3n*2e7`SxVWBir`*| zx&ud8H@z$r=5OGrLcioKfLO`I4p!bE9y4VhE|{ubF`~f|1nJ0;b;OHTfXWEAXE>gh zbI(J#wBo(`*Qiw#*Aj4H-69Xi1zd%w%}9iFk%l!a-=)m;>CE<7yqU1PwB~tub;s;_ zP+Gb`h5*4QMJfaBdQyCzXX*v#batX=!>;S9<<*~db@lZDL)&N!CVm5-C^EFNVjv@8 zWz)s0Kf7d@h~@K+6g%|j zSqOBbpMBzx^mjQIfHu9(CPbe&+A`Md9?Ws5N)gIJV`+&MS??dUrcUTJgQ%xSPR^GM%PTz#J7?X%mtLEQ*- zdF;eHFnecUFoeN&=HEn2s-C4aV6`(@P^PyH4IJ$cRVpT*1*zrnm@WZ^d}T{epAa9% zy{q`j#b|>q7&mR(y0-d~xU;;x&Wt_Oe4_ISF&a{W#IT+CcxJg3Xz z{5*-kT{FS$f+`mQ1h?$bW7lPk10f+cp-Rat@?FFDY`OKp>$TO?W^1nE0#U2>ykG0i zK9EwOU=usuhH2dBwkBg3xUq1^_C14*C5}>30pmR$Vz7eShl6NnzbZvUYItf}`kEFq zkbx_ky5i8Ci>8PAZ6FnP&y+pfzP{J*rO;}0|2}(eIiK|M&b_7R=KcPYd%*zmoGZ@$ z1PsRTmpg6fPP^<(JBs*cwD*8&_3Q6$r^Lc`$?t}AgLt@>u;Tm`8p+C3jJ5F*gWtkc z$p%qIyF0K$3caV6Vkxvr=~7Ak!YJUAoPjO0a+Sp$ZbuYlPzU=u`8u`r0%%q_PDAF+ zYr_t>u1j7Hkfk2n4uY9Dq)~aCfypY2A9Pc;wen;jNDU;*B=+rVD580|N*sxvszqF9 z+1tW6T5ct*a+*fKR4<@8tEhq<>|4ifOFECFqPbH7QeIVpRcb; zBHmck>aN`p=j8Ju1OXN%Wf`9iHyLu^CH-~^tGKB{@BWxS%@!akojMP2Nb_SxJiWb)8!jJ-Kt{pm%TNM6^~bt|3o;zzuZ zjWZV(ZI;pWf6RH?-#&Zdb-h~2PuC@X{uK2lX71AT*-eWdtak3-d8W<#hw~3!y3&AG zJaWm;-E&#ShDr>hX~H4eNwJCz*RH=tJlWnE-@gBbl)8=rrE12oo)Brb>YDC}Zsl|4 zhlkc;|L2j(jcQv@SzK+2RbhRDfExK4S(mp{c@pd;7h&sx?66Z(tGaDhpqCT}JU|^8 zO)~owvMY1yfEpRYcJLsL>$Sey?Zed!ubVlAp>Bm9Z;CV5K312(FSmT^N-D_YV-Y^m3i$xtRK5?LHuflY+=klQMoM@dO6o(%3&lWAQZ&PeCz~cB) z%MhcNCH0TjyK&&`Nju~UdWaABcB;r~Hf$oYQ=@xq)@_Yhyc&^T7HLu!h(8SS$s4wl zjYi)uW42J#H7w&3Y}FmHX9$nt{SotPHyonRzPj3a_;CL;ix+GLegw@#*g@ia1Xe9f zU2NyKawAWVXz3~T!hFG^?~u_6mv%Y z$&cRN@g^#1)zZ{Y;i@V{$%{Wlb}m`) zeDrhsl_3GcgBn!NJDbj>m=tc`w?oH{0{Y?2-Bjp;5PWIhg^nU2llZO-H$yrDSqjx{ zR#n6|E(Dg-cU$^d)IayVzP?X%aJ5_=sc!WslX=B2Z_m}J>IE^bfkxI}qY)}&I_F9x z6>1N+87N~tBX-#!$ZP>^@Up3M&P}wi@Zi5;IuiNhNh4tyGO1t*r%+3#gxfcw9DW@( zab)vP6m!0}Wd8+S6KO7dZKKav!MUUI|TlFnvY`;TC3=a&YF=6EI zC4?RVH~60s*orK671z9O-FAd`NEpaa2$vioI|*S#?1Jb6$wIU`?WNeDuCtk{+amW{ z{s)H*VGmN1-0aLA`FiU(lzp4CZEm-&JT+(Wn8@VSuafIL+`F*aW(K3qSy@X35@Gq3 z3u0RdM|enLfdz4>Imj@)EpY7DVN*uWo;9mE*fy|>xZFd}6|+fcx~Ti)x6zYq)ztHd zC@KCcb6K_d8k`Pca1$GKFHpp!K(MmT`8d`zuz$v|v&4k{2YO5%`m(?Kqwi6ftM=b> zwakwB5jAS^L?Y5&OHlw}Z-h9jGEx&Uj>7=O4Szae`*Mth&Dnn9$x=@xyat7A$+$xH zaU{LzZNh)x|LMi9ffSGE2$w{bIPgho+ihvb>kfVgxc2)km(1`)pL?)EbZVzg*iAW-#4f*_;W(r=dG`L7-xk#A49&> zCS_*^a*|ritZ|zj$TB0@amfool$8W017!#vjGWL>s6r~C_>P3DK$8KD=_Wx!Kv-IV zR8poyG;k+bzcK)7JAB=NRF>pw)_XcrBvN22oK18Fb8gAiA{)!eS%K!Jl5l`ga&6nU z&z+fo{3&@e?QffnH*;-y@j~j&Lk^d6-t|}V`tsZ@2Vf+o%a*O-si{?k>EmCMl zXx4ccRCN4myNX|~P}yROMn*Ut_Jyo!h7vJl@vaWz4(#$SkJZSl(ZYSSMdk8lWPHeW z;CRxnXy~-$(f{lx`uW$<&tVk*oDy4wM5u#p__mq(gJ}_)^|!=$OBLtdkS7S4D(ObM zx4oOW^U7aB%il`inV;Jqncy^%1Mz9T`K^M|tcT;5JPYeLWJ*>4OPLqipD{IgG5)*0 zy0X(x-LIDa)zH4@i;s4aYndrM0~I1^$2!F_UXNn`o;1INKgm+E5YyZGnpfP|Pl;L! z_ic%fUI#8iil!X;Kqb)` z;w00Th)E*jb@gh+s9(t63^W(lX$#3iEDSBZlpYG{P2-}%(a~&e+}n+mS%wHBpBux6gOxlP~fzg-gcX`I^3&=eb1@n#iP2{9ut@lU*7sP!zF6ljYAF%B`O z3}g~|i29?5q>%mLZ|)fBQhq46UJcRf|GS|_e~suIA-9-C7f<#ENoKXpsUq~L`<6Gq zN7-kuX{0z|B36{@c%MG|atl;~c?e4kJhzwrbzJOr29RKzC;XE%f>N<>Kt%3~d4Foq z_SNBdtz%B8hU5_DdaC&NQafjfhIjI=+lBLNPOsmpFsFB4Fv?b9f*o}+F}A1Eq%P)x z%tK?2!5k%IZV8ONRzuVT?Jl$U1Oy#2aui|kh?usoRXO7Zo>wglmgQAtHWgSi}x3x+9p5&{l5|Udj8#Z=k=Tl>RXK_ z3n@)j$F0f@Xn=mZf48qkZCHT>=c+ylQlN(3A+_n<_rELUDK^^TJRb;i^W^H9o~hY& z8=WI(7jJAdFw(9r`rH3gr{8(8s;h9kq+x)Ds3oMDQz=#8h2aj$LS%5mq4&{7HZ-1* zUL!xNyZ0|q8VM-#NJvpxD_O8}=yLaMhgFans#3mzIgsyk|My-MUoL6dfu@slWs=&Q z8u1^x87il6)c~WV=4*kp`L@mrCx(Pa~*ZamOOg7XTIQsqs`Gv z&*1>`I0!w+PS1~ziH5;tgy_BJQP{rV;H^+z(;>oHkv~u{OK#T50pA5eIl!uN-9KKX{9NG=2#<_Ad zLm*Acj0q35<^`3gUg8j8o}mi0&(mEEI}UH9tRS(SM$zA4bx2axGMc@VoBCA8?@Mfa z2#(eLlNil0(>pZZv0~2DliqJ>t>AjKDikzn^8T)CXWUS9&qDWg!hJ2B6uez{lr?@350@JUnFgq{dr zMCRT7amzW?OmTokWjottjp9}4u7+lK<@a^( z!QD3s^QnOG{<_lpB?ybzw&EF7OxbEP28N9GtH!ewAynZWroM<}$DJ|DWvBynBU)HT zehA}BD@mDWI`#FNkbDv|pvm6sUgz@tV^6B(8;#2_uRs#OF9-1aXfbh*j&^C;O!=wU zHL7@+QQH~0p-NQvo6er<-z2K+jBcO1#`)@ngFeG6+nuAzK}~4!B+o}2&i!!C7TKWK ziy;%3X8MT$;R&A_z*#K02?oN{O~+(6&U;^_42o_FF2qu>efMzShand!p7&Z?df`cy zDVHs6qTm>@qeddJbXgNcDZ@C9Jlr)%lZu*bW^}bWqEtRIc&B~;nXiLB%DdX}^w~4a z**E2ORhhG#Nte|zOumllHu3lB6&7drfl>NHbFxOo{9j0fx9j|l#~zq$%Yo3nSZ+QZBT|>OZURBUqcE!Mwsn8 zg1DfxUe~E~Lbp9NyIFp^QAk!28;gk((=1+DIP9D2a&$=q+hk0q`g$GTs%9Up@*DGMcbw4UYe|8vEP&|M zxZp_hZ`-s6H9ctTuz+YdKMV&K-W#E6)z|l$VA|xjX(9j8>OLI(y`^`W-Cc3FsMFyv{mAO zQA3tCz1g^4t%n8!8(-EA92DHk^^Q*Sht{LgOMYbd{K&q!ctCz*&!Q5i$IaH*etsD_ ztMGus$EUXoZ_Dj&zZw?@!fg(#IG6s7lcnXbj}Nnc3Oq z)RqsuH@R~8GIrbjX=U$1uMG-6*pEuWG-F~E6SIy3fekIa(}S5MXLL`hU4j%VtSYbonH`oW#3#*M6dMRrtKMq2c$-w;@puMHtatarriG zK!wk<0qw)bNSmvhzfVE2snz{vI>lEqE}QyY`Oq@dr>t0~*kiiAeNbxYI2fm}u&{Fk zgH@2AN{3qexY@L)R$8ttz`QOdYxDwiWPpchQW?&2a+J=@l!hO;xs#+=g^mbBxF zwbnUFNq}n$z$;Ru)bOT&_m|G!7qAIP@Q%`yBOUy!Iu!G7ty{KSPczi05S#9g=60w4 z)38w^ne>Bi=8|R0+F#iG5DfwkYX+^8^ivwAtX;lrS^UkL8@Nw!%X-V8X^P@}T2VG! zdbxTt90`tiH;6fdxLBF%C>q5@SHCu(RNRX48n|C zo12o;iL`Fbr-I}m`o=4RCtodHwp+XVT%(o26VAU`wwvEH9>c%3p@Fh=SVGtSj*4b& z-qulfdXZ=AZ@Kou$=oZZQ7XW`J*eclKnGRpu?8Wov2BksNr;;zs8FkO!)CX-Xr9(?2`qeXVpg@M|M<`HdY(%bvrg1M(c=m#x+FF;|SWS>pS2wL|M-K!pCdAePPQ z-1YumNQk5pgX-T=*6t>&H(C#o{B)zx4x9Lnh90^@`}T{q3tt>?t})gLhzrY0l3cKg z$s1LpjA{{?u1~%GOL8~&F*PbPlh#}BPu)vGk8?K4DEX%=$X4z5lLc6${=u_DeUn#E z5J=6Q9oqhSOw8fFJr9DtAD$d@$}G2I#r_jkEqf21m?y`EBoe{SUbyh6S2P3wLZob5 zuA!FQk-ijAKRHiJHiUDf*)^S)6b)`RsF_p0y6!mxmF#-nOkLRVt&Tc4ck{u6lP>GY z3M2Q|SG?3n@MMn3xpUJDz|Ku*MzfM&|h(r;kMv`i~#)G8#6ZaUr7R zZVR3naPcQb9arP9t3+X9o~8mQTJUUMDBhK))$OL{ZZp|vlj=V|7SMg< z+ybt_a%HelKvK&^j>wQ@8sG%~ojd!ZPjc07S(5Ac?EBj{Z*EY1_nS`N)$HftT`&;I zVY+wf37L6<)OZQ)DzbrDto+q+b|tT0v)D8?b%p;I*DZl9RowCv8`5*DsXKKnRJYOi ztpymQ)8HQbA58Rvd9@%*ADx-BA8NGyq)~lGS$+KYu@TulZ2+RDVlpLt%9|ix_{wZ# z6ryW0n3L>|dYVP%$^0u+_Si|&Xk$hV<5ps#-srsg_3F)jcA*``pobemPJF$7upDe| zu;``j^yP=!hR(u#j4ozRBp2$0DU_Q!>biP-t ze#HvNe}5`;>6<%^I6lrY3F*a)gZ!w>`P$WCf*EYJ^!vdCWwSV_rpYKZA4)RxG{I=t z^N3@n$I?#N@teuJ&7@)l)Y;yLII}V~ty|@{ux@OsTdQdgIK?z)hdu5NU#-3NYQIrd z@o{m*>Fev97;~xt3Fx>Py-1V%EX{!|bUV(Zyhg>q8;LrzXS#ImoK9EVHDVjo3tcO! znhG+55kZ!kqytBMSwEVWqrwYe8xHKAyn1lf9&)KGF}i)28)mTZ`5quu{&g+8*;@if z?Mbhyptc)Xc+XH?4v(X~e%PDizn?@GPI{>4;Blc%@s)0Y<9zQoP)bLML)1vDOX}@9 zbO=Y_wX!a8PnK3L%Vthwj_)6b3<2D3XIJ3E@&1RFQa{~O?2mv}8^*n>Rx)~Szj|k9 z(~J{RYl-gYVXz}#UXB@}#fJ7`iu^mnTK#l)Zb(;c-7nIz=gs3IRd;MK-??pDU#N_) zO*{_|)Z3h1^gdd~5c{k0Ix;6sFQ(6;H(V*At(tQM@vHi)m{gMmjFz z1pm^+v$=|yhZ%Q0dhnn@hb{f|oJ!vvSMK5b?dh!1!6QA8UDi8j5N+#Q?aGd`aoYws zt%mxF{bNyNKx)Ix%uIwGn;-vJ?l&qRAb=9kTaVPjRwbtEkuZ&Fvn5%%B=@#{@v}_4 zLvJJ{g~k|FDm~1pi=Jx8tEt@E=w8=OE${D#-1g+S&|!oKzx)ds`SW+P9FKF<>lDY0 zT1IHRYUx~dHjU1Zy?6lNRe+VyIyO0eckyfpBJokyA7&HlxW7VX-pRbn&2>zQ*8xe| z=XC4QVC=1xlVa zd-fne1GU(PCuXr4WOu^~W8qa*%BA$h8}mlcKDlvh%yAl4D81>_(d8N;fQ0GF?j{D| zcQhj4#P;=E#7cG$n+U!drzlrMWxIJMjCZl(dxYQ18-In2dnnii5A2!jFUucHd66Na zk&1%b@F&a+Qt>WjEf3`uW{y63i(K+IS{TXS%IO+Bv~$ z$2Q~KCwPH54Uv=_z$8t#<1aSBLu^ z6h-!9M7@p(4_}PmC~RgwUN!Rjgrp>& zORt>w^V-Dg34jL#Q5x~-I?q>f^V>9d8@#W2w}B$^D<)FM(8g?Pj`(6H#a7*-es*py zsPn-FmMd0VocvzPJ$XRLSgqcL%a)`a^3-Zq3{$0DU+c~B@C9Zia(wB!MNf^dM%!HQ ze3^m+2-uWPV6KWP8N($QZy~Uz;E2`t!BTOML}Re*%^i+fZ}v+ek!Z)EL-+m#aoZKB zYiL~KY8#q3h3i<9*q`o|f!O;fA?d@jFqEQ?baFe@*s&q$1`t@fqLCgwo^y40&8Vwa zubx{#-=oJHU*Md}kFUGW$-IsHf`TedRcDo%WS|mjVQ9D?1tW~&s3|KRvZD_6e7R~p z(*C})GfX|=zM0~leG-l49fBMdseOxnDcGv@ug&PFLLOE3MyzXesZ6gj5zsCf;@b zkg?0KpMhyNc)vbQxmh|rc4MOkTqS5F8b98h?oxQSCnAuIMk<^wZNF%r1YkG5dP3N*`J8TDT2eXyrpyv9z^yqN|jL&2(O|-A+ zXBWRIZ`QA-`lQJ!Fxzm6PT}*n+Y6t?eYP`^_w*doqxOjBx?Gc zC4Nt|d(6MN=JVBY=~ozia(Ttaedi=G(0XRxmd+yf?L&?RG++a<`r_4dT+cnQ2uH@A2Rj0%IM?xaekMGl1eeJ}NU|77%Qt;W4Z^llTXY&WsxWOnxW@Wn0W zhV8>aYKM%!TL+Zs2CV>wqrdPEZgz~4DN6t&QC~p3R&n=`zjtUIW~50|95b_I>PlaA z1>u9q=D|zy+J{CW#x>i%bP4jx$*bSBHXnw|qvV@JRirU{iHz+MXwLYPs)HC3vwt}& zJ;(^;CEn!wl<+yIc#S1s>R_8NJ(jw2hJ$gtV#g{!UN0>>F!%B4y%zqt8+O&Yt0YNKB6=NA#j^Ua(4 zaO~yLQm=a(_D)&Jly0z%#+-)yTtjpjLCU6r;GAg|R^ZEuxN7*3GR~1{_V(9lt*D`< z)~0P+FAiX)Rm#>Q-y7b#n070fWa7jo1A>OcIOMuDb5U#uSZ>55Vrbj1HR3k6A)%EJ z&(9fuy_o6Tx>lV!Ibo@jkFdP7Yd3Lp3k^{ZC4;aWcL<>bV{Y!U4TG(ZRKr{%v5TIc z<&iqhNTi|DWw@;Jl`5K-hUzvGs8~DJE@DMT4zihmIuhQ-eUB)+(BYow%JPsM1~k`f zr^OzRhc7T-}D{Ti{(pqO>@>M@dCc?#KcRTX!DW65KLQ@ z>Bn+H3mH8rBnTEe!w&T72j08PT5w%mp#PcUm?(_Awmawy_sUD2b#tUX#5WJXSqM47 zQ5ZaBrE>DNM<>T@=EaiDZ9#9rBR;EBj0h=%g{&aggr$|Co*Ypk9^rmla;nIIMr_!L zOojxBb=8Kr5jHP1nYyZ(vT5_?eOs!nQVhSsa*m{jPlhMNI7APUd>%k$u~5a#Txe%n znvV=fyYRzu_JRc=%MFre9nXe%(h>Pao*_Ro+PC}%H@uZcb ztxF;;yPYUd9(H9NBBHoIOF-IuIfnE-J{ouED>6UQ;?@F2eM z(dh|0c?-G%nY0~_9X%=)GZf+p9Obb*TS9&e#_w#&3@8_c4Q(of~j z0WvDudF{)!MU!x~R8^6Bff!xGI*FOMpQV`ez_T1iJdOet?S%~nwL84o!$QOW#Q-!wjb6Vk^}XGrwYozYeYdCE zEY|1p=B--2_IT7nrE~^qA(Eh-432q}w&}ZHXI1%H8Eit?6B`YcbHd#sbBWjomCAi9z4a!jv8Sb4&5LQWAd9S*Kc2E zPRZGG=VZig03gHC?nhfwh2xO}k})DKlors3=j?}2RW+Ca7Fjj2`KFT*tp@2tHAD*D zpJaV+=c#5JqnFnR8Zx)XeC>4YIDI)FhdkP_+hsz~$c#5{EC8nPrhyD|({^jtpn(MoP_@a% zij%#sq>fe>NeP|Kij^D*cRoZ)?pj4*qNTZ}0{K5DN`IoKpIwPkK-ct~oCFu-=w@DV zPD|w)*d+dPaIR8pUIlda-Q`SP8?+|#VUNsgJGxoGtDXqyk^vLPhWnpUk!soXv_;WF zQBb=+*__tKw;B1=dX=aKt<)VvhtZdt=1EkcUiEloFTYKj+7wf*6pwd<1a%YJo_yU{ca|~dNk}lS3@8_gxna<%9=|3 zR=)N=(N<-+0GtY@BCu=%rl{gFxo3|I=So!3^*aD>yc4hQWL`RbF-SbUqx#o#xAazt z8d2}Bd%mqkVOgRErVs@T-R!)!bord8p{5xE$&sa>D+JFz;s zb%2$MbJ^2Qx3za{u-^&5r=)S0^);ML(uixNYSNsM#jgTt1ocH91X(zXYNZI}7^5Tw z?S(HRgFoNr)7*1p1#C#42h;GOJ|`z>kniB5gy=Y$CNPQejp|?DGKK_eFMdV<2qxCj z9_>lm@T{xhGcTUsh^3Mc2dm0Zl2xCt7Onc4GOkgdz602qD#v9Td6FYp^up1mZ zgwvh-_HDwlK+mrx#5vheTST@zKskIkODfO4n7(G!s=NmSo5^HdNE>fZJN>x2cRLSp zZ#Avt4fz|KfeICPtoeiOqD?@=J!qY8Ct=0N$ae2R>s4I$7Bt60{ z_f_Ke(o}ur~s|o;yAERPdw-p|VNk&&__IW1mK*@brp9 z`@`*u$=em+qeN$JlkD}BLA*RFP4W0XPnR%unnQUg!DB~lO zByvxYipXqK0x?aHBPbV0S1*y2_q1)}T%`cF7H;~!N|Irpbo)%fh1?h1Ja!X-lL8G_ zB>lMUztg|epswO?Z0(oDT-haGm2hL8p~^dwqZuH0mz6 z8pZ?NB84rMBLX&pJVT5Y==qSjUee{n%Im#2y%OL9@^$d54Ac4~E4GoVw$lvuC#S7| zP3ntDO!S$}83S?`83{Un?hi4|3^FqLD&#S1z4YOYe3w*glbX(`o1r0JQ&@d|b&VFP z7#U@LcuZc^Dpe{8%^}sC-o5t<0=zIg7NM7A#Us_#upkrUfD&WJ+}ztlWEf*<&b=@% zbt`Q7NM0s4EuBFCB784oEGo*3O_cOl9mD7uJvp{JVGW zo=2=4UeZWG=;q&iNE0cE!LgzL-p4Lkj0G4hLyg+Cvtf|A5HXXH23NiUi~;u1f*u| ziEP2~7iO!Yu$uNfd3E2E_P&ZzVYt)GF?zOc!TgK#L?W;Geemw zPc#n%(ntX3A5&+{7{D`hWTfq?EbpEI{aKO{{{a`>7_%hv4ygI;#W0(kS;UP}{(-?+ z`ssOZknL;x>HX>+s_}09uMO7bMy&pAE?e&Y!EYY7;wZMR%h9~a;x}bmL8MBkYOWIW zcgU&uZ?kvJf77+P^7n2d`UqN~!tncp|Du!s@n`>QU#5XM+Zyq2=dGly)HUlZ#LeH= zTQid_1+z5)(E=$798}*|Eox*}`im`Q+xELZ1F&;vUw75wXp>^jh8Y+zuik2#^c=9zoKyS(F@B; za+*zM_-)Yjb2`4X2#wp*mDH@}D6sGCq3W?(hcy4bo)gc7P@p1NL8Xr(EANVhfVYF4 zb4hDl!BR&JFmwFJJ?iz;DRvvti{mr>e3Hp@oRDa(@uX;A^Pl@X@tg;2_CQJos11EN z?Q;z^0uKD+P5J$y?$l4W>E2sof0FV)-|&dbT%da<|5p*Wej*F*X+WNGz^Vax9y|W~ z33c6*`~Uq8Dz1+u;`Ptx!S50a>-_Vk<>K=Hvn{fqZ^ ztGF5J8ODD>9p!+fE#350uD4wKKirCLQ}thEkDu%Gf4m?wM-hNXK5f}<7h)3u>_xqn zPvTF%9J~iN-}kRC^C)m9s!j+C|XD+_%PRle9P!5fy$tn9NUi{?AX(4YT2M zAs85U7$l!d(WnL!EpBNk1&sa+C2Azr*C`IN(>tGjDrN3=r+)1LC!}GyhPD3rihbJ- z$n%euY6M3RW$`im!veY%JKYCsY_D`GSvI&;bSCnS0i1%^W4&Q)nfM>!K)eU2C~XV` z5)sAHipzu<>2!GMR5%os)a=Kn8*x8@U<%UR5%Ss4bbPi{#Rz0V<3pr9V1Mw_tH72d zwzUZ>*W=>ch$kFHap6m{#MmFsldPaS6umy$=RNd&v(JuvPHPoe=^xML+D^C6pFbzH z^>-59hHyNU>>UY(-##Vq$TXZ(Z9;A!WniGP?$U-D8l$JIowJ*K%H+qFQS{&RBmba1 zO`;)5;~)rRC1B>uv^fL8DJ3rj@sT;*qU(tuA?)kUo$(ysv_ZAPAswUwKpsLl z3$=1Kc?59p02zTgma%|^33RE^%i~1NkY?J7UeVXD2S9(7FpAln_k~Ge>t@cyEvRLN zM?{>5{Ez?zp+bDUU-Yqo<%YlZ?TAA+_3g>hvX1zeWYWllN6iurMLL|H^8QrS6`W4X zpd+fd`MdC_k&AX?5G=wE@C{KJ2ITv5H@iI_8nh|K+8m?O?XW)ClXE)GBJI(Q)w-oW z5$qwqCwU_)zyqYt9hu1Lq2>e!C6i?tKNyRVExz_`d-d7_iuXI!q9bl#gBVXvdUoU0 zD}P4VitP$q!T@GZNL8GiI9rC^gD_dgXEAU^|9hG8R8+iH&A(4m-QlkXPdKy+>BL+W z8~o|;wb)cwALferXruKs#aINW@ak1FemUDjf5N$ko9aCH ztp#w0_a=@Grs-R7aB}hv=|Hnj)PUBf(nEJ*y981oN%`APgRs!Gk3O#HwB6|kL&|RP zqr!c#_Orn=@r*ShpWX)OQX*X;>18&pF1A#qYU6Umc7=Q94+XnXpA^3a9zBq=9~DD} zNzH&fW8J+od~WIU&xN`395iEQdisd@stafb6O&;0T}+&^;Bmo%8rFCS^#Ln4?zMOw z{l(Z5#Yue*W(3H}j_%5-UB#_@#^#kTO97arMW2(%45UL$b~J-mUc=?dpfY$VXk&9~ zKO9qUb`Ce`7cv$CemK(9g6x(qp!2>Pm0vO0hGq%AMUV+sW0~t>U3BC`14W<`lZMq8 z06~vrUkG@1{-~(&*;)!RqpfIZ4p3R8b96mw8FWR6qNYxtE|WnSj3?@k{&^uGAy3Ii zkUU8>27jz|kegCTW=B#DAFU+j0{DVRjtb~T&;*n&By~h{9aT>?YEaqcY-#|sqf6e0 zW6lZEMGj1iqy4Ghb8ZY;zWhQ|e21Q5)wtMsk_gXd-#qGBUGWJrvaDR80?u{c(#|339gHsPyXT(+LyA z4-Y1X!j0w{Q%k*K0;`;Ki5Izlcqfj?M|BlYl`_Hn!zHvqW6#*$N)8%Qf*jfJD>d%a zx(bC$8gx>2sw=f~BCDT%8_K=Xz!_$97t>2A-7J01)pS2|sg;}l4!hMn&hu<-bPua? z4z4Vgk@lFDqI%5WK9ldhR$g56X%f22IOxtsou^cy$SS37!cZPbDizTqpX;_a_zRMN z9)>5v3|`~?sScXJy5hNUvTL%by*sr=Nw#Tp&c=eBnMSy5dz&Z_b`I}YEQb%|iFW>$ zCWgCsNlL-`*DQw3xF%4RryxAO ze_mnPR#upH@+XuNwmhEl`IM0BvhmiTaUeS^3ZSBOs_&e-zRh1tPRmxbpjcCCpQ*B*Oq3BqQqKQ_s zgYY8_DwYm$H1%yC-@SWp@skLYl4r+WI)9$b>W@Tcie%ElmX#Hsd403rS4KOttRlZd ziBNr=Mr($pODW%+Yn5kS;J=lbN_wAHB3-Ep0FX8|2!O9m_Ki?t%f6=TSbAe9el(%- z4-9GHa(?7rWS2ENX!kjqeUrHZdyRvfr$obM@YL3)nyqZvsMq4d$t%-Pmcrz6(;N^a zc~qPmQTc4xZKl;_*3%m!LXPsPs^2U8khAHqWK>U0cdSmaU3$hL#!_ zcl9S!4rw~l;jw3nT9$t`@=kws#X;hO)I%^UkhW$fzlGVHuM>r=m+NVZ`95dgv_*@O z*dV=Deril?!}}a3uSUkJmv477B}%iuH~RR9&O-tuYmTXH%XNx%N<5aan}w!8U>gq| za}Urb`SX`1yYjYtU^E9+PyvY0z7xoik>r%BowC*WE1&djTQFn-hXjxL2L0|(8@T<& zL-wB7u$1^Dy@QOu)LpJ|Fiy!XWUN35X@+NDB1$tNm1f-}o*wIfS#;ZOlmag8ZOf=^ z=>1S^uCK_nc;L8e_k47BxAFfx`{$qOkpKEXtCZEI1$IdfRibP{-oP@@CXL7H4R*ZW z>H<|~SaD)AcRG!Mzg=t|P&pic$Br1wBAB<_eX6apDXlVs2pw`ouJ;sm3Qvur`(O=@ zartXGtnD}aHji5V1O~WJ$F946(6ga74Vlw&FRKGv|0fq@T7D!!?&GYX}7@BKb2ttM%GW2>@1(Q*ZjIyP?cC{ z;fX~VB6(#mv)<76V&VMKrF<>V>`Rkjdk+Viv`o~lpy4YLtdUt*Hdwm{t4s!Nx%H#2$+8OgSm1K{j;quw3nOzuse9iY;&)6>U2`lZ4JBw~sY&Vdm8 zJffiNj@9ttv%u-JTrR^nlgh>D5tuaz>DUM}r3x%I@VIZ$tO1Tc)p9>CVf*%eAS;Nh zKB0!8zV@-EE@eh+srD=U1C`3DYe=Cpsdd`3ie1OdGHhXN^@`3InRY{OCMrZZHz8Cy z4kR7ely0C?>c+Jp!)v}{_p%YIlP_&LJafhjj8Vktj7t7#l;~kLLjm%{FOfje{%KP3 zx<1kJi*5e==i%Goj*=OF%HJ zbDDn7(Z_yhDkD^^4)jtVK0K*P{k50F!>241Q}?>Wg=U@+ zH#=#K1wmq&VMU~e06h+PVQB+NEhs7zR}sSmj12aT_O=1dhbV6Q4b5Y-a1u@721?b; zPaMT;L%V(ZQTaFUdm^3pl34$`B?so5E=<-;s6w0f!PmN~$Z66Vv%zddI6si#z&q zcv;j2W;Zq^CBRb8LCsI;;{Hlqecys_TXaMJ!pB+)L9`tsc_^a?Ea8B}+0G_ejIt-bbBp^_<*9iqA3`9E)5zrKCfF3Jzhap!}bP-SJWUfqZ4 zQ4ZlDNyCTejDx=QReW==c84tTzJGZqPH?Q)6()uck(JPJGCT(en3+VV4Jx z4;?hl*?ResB^gBR#ES$!`?Q^FV>iG5TPsYv!njt*Q z`faT4_woXaQcqiTY!#)6lNUzj+**1lJ>tq0VUa9@%z{Reg^ikRTKZoE96ml)e_?rB zWpb|b>(Z-NtCsoc)8rExS}P8s^;(kp71)dB-Hp446B>Qb&n}Nyd3$>;(V?x5bHlp7 z>}|@Dx+2@u^G@HtfB$)~(poR;H}~5J$PWPCLN|D?rHDoPtCUXI$)Z4+*rQIJI!t#M z&Y49F?~3_lC8>=dVenu%YppWR-U$nW9boY1&XZNLvm05z{2hvJ>K8jsD}G(@9~A93 zK2J3b)yur+k&Zi=AkPR4@%sh8Kuu+$hyCEs3`a_u9MG$et&)PRcLN2zDSB?EkY?V6 zK}U~jtgbEgl>2)Qf9Ga^r@*wI+gcH6QdF{g_<>%okXPqS(CPxgjKgGoQ7xi;rOsN0 zzTr?B_dZF#n1q@96lnw$9?XTwru2ks*DwOIZKqVudVX|joDY^X?+tysZtM~3&qnoM z`)$J69Q+#JFt59EbDB&6u#^(%IZ%S+N`7*Qt&G$)P$TqkCIhkuu!WFPKVGRDWI4gb zVzkEZGnD1}r* z*}_k3L(E~7uT;G{wVb=SL18F7l~a3DI-UXk@(Jqdu|OVdz!DM?j>mMD(1F1NJws3N z?PnA&0c!^-xmm?yv&h4e4D;CQFj}OjOes2X;jO8+JTc7Vn2O*C{<~#RmRzTOn1Y2w6avo0r1lZBz$8&jln|s7I!%~Q~>2z`# z#(9X|Hn1N#(G`ekvjA$BZkW&tz`gDomZ!Omb5Nv0!-j2*>ff$=VnMe+o!@~w-@whE z0|N0dwLjyUO~T$dDwV?pZ26<78Uc@+qWn0zG@Z0G2QlVGSRrA2(Ww3)5@W?qIs^ui zVT|P8CsKUA|4F;9$fL!mJTFi8i#darN8s)u6B&8?Gl|CpPDu8enu^SCF50o(q>HGKWfg59QCK}P45qtagkm)ao zy~xz7P2t8w1<$EA??X4z_5%kFRFda{M1ADsD|cIl))C=fB^g!Al@i#ZPuvdfY#Xt{ z8)E7m-yU$GDe9| zb3F68^P&Ccinp8~%p>C#>K_ zHJkh_T4irkROsFrFk*&gnWLf)tPlKXBYKn&cFzsd<`9wu5r>pvobGT#eAyOuI|WZl zL$Obv?xp%@-aFJXD3c@y^=@5|wD`-|gtVau54Q#I9frn3#0hi5-t@|YGqF0@N0T2z z$}yyG-*t}*-{|wTv@UL7H3g0gmMRi!d|-&P(V;R(a(W;-c0N=_Y6;BjaPAO|(Xi~i z+8Z=+0ZQ;pPvpO9UOW8pC1RHia6xRL2~!;TTA*q(b~I+57y@ir>O-?v97uqO*$SWp z4&pU<0MmFgiD5?Vior=T&R%{6B#xU2ON=zQD`tL-_f15CAVU9#W+<-lgz^P~$SE8yrh--dnmI zb@hnK7_JLW1 zhF-Bp%FbweL&UZKZ?hnqw5td$b9nAVg?Sz9t}Gw?u6|RzQegnu-PWJBb9TbEyaB|s z2Oi)kOtIl62$0x~QO%_hv6n7hY=dPAIRSueJ=2XSl1TPI9Yh36LV_{C=oV15y}4=` zXtjji2-$g&Bcwt?5%NnDi;eA6lQtx-`^^FzO8@@-dm%+K-DE%J^&+<-F~uZU#%gj? zzGJ_&RgPxA;HT6+jSJl51wQfkb?0{ixfd$D(OS&pX{1=5SI`C19*+(=&_6(6I7zWtr*a{$j4_&x?ESXp^6^Vi8J% zQx5|DFGbQ6LOSBRfMi&jh)`W)WEYr!$c;xPq-j9~=yvWt>t18oR`$IiMmSJ^lH6LX zphO4g|7`+yYQ|E!>P79SL&`E5$RE&5M#<6O@&0}LAWa^O3>mUp#AteBPBN1F^!Yvu z=Fex!UHYlW_@2hbL_sBT^j1D9M5o;R zV9{WCppV91f<_cmL)T=bNREWmX30sYUZ zUMxpkaD($NL4AyV&q*_tUK-^0Wi?K+72Yy{mVPX;G|~P}f(*|cW7(ouf7+ME2;!;N z#InV^Ki<7k+7IZ88-6^#)28&@Y66?Nng8KoCW@0$17rauN@C){0c)wGCz;?$UmtbF2@d)_eEV z=uD!7*qbq$l{kTU&k`~7q}`b(GA)&Rm2Tvqt%}>IVCmO!B^|ZCv~UuMt#pu8qVRYe zs4RMRX^zNQQ;!6N(%ul5aBwbSvhlaF;xg&pXI!ioAdarS4Lf(r9aUmFR3-p2AfN?E zC64zIJd3oLj$Yh$-is$26|{tZ>nt&V=JWf*9*W$J)WPG16Vntq_a&jecWzi_AwgIHc}Z`FC(MijBq`47mjPfgA5S$YUaJ22m%pyNp+4=Quui2-Qag zlT*UEWCet?9Ki6{luhB<2A!>kwspKXWf4jQn^W0E-aGqdE?WLQv|6%yiI;r#OD|iw0DfyBmVMm<_DPJl5--Z&jk4$@BgY1 zh?)brcpzjTn8Bn$Qcp%wnjpDRsaaEpiFo7_9JYX zdMh*z&br*w@is|$0OCLfDGYVA3+No1#9&AEnhXNRVb9BJpsUu_LM0b=B;Lp@*jv2z z!D}tHwfn6F7&gp8%DClJzR42~Naf^nlh@JrHt7}XpHzO8mbM>HLlK7q>0Ha}D;R%@ z%4q;Oa5hI!qwAmbqdJk9(qwPwY?$>5PH+GIA?!coJjLCv|7i8B zqQ%GZD#;Sq4#LlhvRGd6?kaE$(n9iMqEVe>H+>DS-_XU}|5guLd;KhtYaP{?lo;2o z(EMv`(YJ4&<*6^PT9}XNG^KIdu#wyMr`HafzAvc5`C8k8X0MM|@tC9!7UFDZrZu?bv31pT9);P_H7?Ieb#i$7%7|I`Iqk zd#`D@%6Z<^X4UrY-JS7ul8fivmzBhTn!^I>Pt}!Ka~|NrY0Q+2V``=-53sD24r2}^ znFUA?s&xNT!o+H2^amfUUku(4%3B2N)~rG+TBD_x8xt@_==n9N=4@@f{oVpU%al(} zq+!dqt_;Piu4)~lN+Dx6S8uwiZ;sbKN~kTVrBqs+9#ffgTn1voKWjNpnccKl)zVaIj?su<390+9HZ|AKGZ0#^e4p#R`Ea; z1s9PUxwBR!s18Pf_UByFYu}y(%%yq9j-u4Za(Hf0780j;AgOzTBU29@szjG$G#z?r zjGiXg$0Oc~nD=;UdQa0@$KI`2Q-}~RX8)q7c23TdCpRV3)Jnf+m~q!-B4nu83UhEw z?Znh5hR|qMx#F1a)5Nd=vA}G;57Vy3q>mdjCL^|bGY#jem7dr5d~9VNk>C1Y>RLp> zoP=+U??$wy8VcxDxdbvANPKe>>v8_kEeuU`6@(!pUK^ z6z|{91q1}bp^5h*N2fOxXl*JN>RWI1=-HF}O?>q^5jQa!5^>oP&ITr$jErEy;MN;p zA#9~QSqsXr6za7Vk&#AX>kfM@&39)}i&3r!b8K<+Tik`KC5XHZQ{0vz-pm}8L6EQ> zm11_Z9>NiB%dKwr%k8EQ=a$?N11DKBoD2SHf562(b6u=-+TDb|ii zCg?PeOgW%gQ<)Wa_`z(k9X0xLzkghpVjtsg4Joi&PnzUS+7$EnaRWTfiVQyQLa88$ z9|qk7;dI$BJrC^q8mt=HIjCqw5L zBSoD<1L`$yNq$k+&$}=d>daY-!a(*iX-%N33s3@eaWyExJv81>$yx7OwYvCuFEB~C z`u^eZq_w>blYTsI^lihZb*}nus@u2JsOleo|H%0ddo6?NfxkQtS?sP`x9(y)wJw)m zZE<+HG7EQuYmC#ZW$e8sdBV31XSV+Qy}_f>_3=c-wSB=>vgaQ09eVU=z|QQps`-jt zLg>-u0gpF0NALW|EhJW%h@bmoJPuEura17X5Cd{E8=HNxcHKfQ7Alp|kfur=-hcR! zA)OzO=<(R`l{frsCQ;h+&<*2v9o7sOmk^^B>oMrY(RO)@o`<_KcoBd7O!&ls78ah1 zBTD>c?5|TT>eK9+3VJ$(i%HJ8cjwMEii3S>Dc%%LOTUD>(i|j5244)e96IZH?(DsZ zR)8e<>xFOUJU@T$!ocPBwVc##H_Whl)@MKh^%)YuxQ~!(wM8W}qidtdYd&@tC~|+U zLsh#Y4`^JKa*a$`0#~(tUe4BygX?Xv`}SD|sOb7x;w;>NM@^`3y7pOy%&8Yr$SruA=Im4Xw;B$ z1&_04v^Oje*|e)wn|MGhQLn@E;Q=F>ck5Ok%HPwf&BNY{))va>6$mX6h)B}nYuOqT zRfl`l$c_eceS%IArpvgc3pO1glk%Yd;?vUpsOeFKRJ*?OHo8n2(|gz%Eg{nUN))&? zf2`hjFU@ZJcoiTa83c|^7}bvf(MdD_T>8qTCYu0=p>uL(CK-I85?MUMh za?rWZQmKp`w3xF9HFJX`PoR%d=lH!W9R~ zsi?znzP8-&`szW^CBteal}K+HdHv-6!{*7N{R88s+<#a+q)%GY2V=VAnJ;d!ql>z# z0)*B#V8q+T$Fg#AyrdGNRK~He{H3|ircH4?XORWd75d)&EUp!Gi|_i3(eKo$!I?)V zM+T=8tPo!HduN&GDUMK%$zjtXI!*6;(Gr4vQsfd1qE^J5ea3yNgM=Kn&APuZE-nd zhCA~h89v-?=AFLuN#{x3O57a!C|284b1v*#hy6o6`{#p*;6Y#xr9v$^O5f+>>(`Io zf9SK|9SpO!w)UsnjrToDO_h%I9KEm`7HxLQq|>`%>DuFSeN9b|!-t!1oTYb_zCCql z#x7qB%Ff*jAGqB7*WSNYr5ybao*(WQRJoevS34tpJSLW<*aTtpBGG@f0QJEu|c(#y6vWl~B-ru(dxVk^6`H!%?~jgjpA z?^%fIYiccjzd^&*g;ZYjn5^pP(4=LiFCrc5W08L1^yzCHybPDodA`s&`{|o2{nK%Y zt32E&-#y@XfYw0=pSN>=VYv;;Wo%)Gm)4Kxezr9_85n4m)5Hl(WP5q3c`-!_`n5fX z%hJ|Uyb7n}dxphBV}ny(I%@rpC!pqq*6E|2n&OSmE5$_)t-YVUnmKPEdwb!Kew+;e zM?DZtb1xZ?f8(Lfsv7o(P6qHL!LWtUIvO1M8O$ld{`Wn4)OAm0(Z{W zv3hG8RI-x!*Tix`qa4+WnilR0~yY?efw%s)e@~3 zCGAS(ilzfZ|RQRSPv;Y`=eKhLrt7ud431x91H;B1;FEyH8J+QZOk`u2LCNySl_aIc5!4szH_zoZSJuASI4|Z;n8CQ#I~& zK{aRAzmzk0+&|NgsT?;aLPAp3q(|d}Bdqe0C0%3)8ljaq7NMr#*Fk;)1$8@iG$*y> z&<3G1fDzI>RxAU=Od04&*O^(mKEaLm6PNoH^S8rSu4qe0qg1iDR+RMp>gkn@PWSTg zkVpdc5C<7=J$m$`ndvLP{IE}d<>MsejXkBDSH3cD z|Fn;&hxvOI6_s^n0hJcFjYK9cAVCNtZY93{a3hfbWq|<`K=sQzEmf|>nz;^Tv=~{; zR5bz=OtC8?9-*HBo33m-D87NKnqpxhJ@|b3w%gec; zk#MD)g*TumC4kKiyE5xRJAM5GK1p@2l?=x@*ewYjc4V)KNDgbEaK)Ybx!!mv8dVBt zQtn!W{Q{Gd>UfyBimK8$Z-}L39==~0c&S}i)sI|9F1KQRR7gzf+%P#ex)956&giPh zYE~Y@EDxI|fy-zSrF&dba;Qw{D7x^>(CaOQ@v5v~3^1;P-gFvw^#!tH&_Zdh5gSyi ztZDkfsxC;8A*bBPidm!XpU174^ z5$}e&HpA~37^hOiWl^W9BY7ekeON@*@?&F9S=-puti=20+f#afoX$vI=wgrd_j=sz z7c{a3YAce1xP;rcZ%b{6t^rjlFO=--mMs9Vvm|5S$+wayyl-4n>e*z0@0{)eepeOT zYU`24%7e$lUPK&{?>~8>8(9r*SMHos2GgZBjgKuyg7%>Quzl5?2QHh}w3zeeJ_r24 zl`s3D?|_>}x1j432`vDDW0wBvWA3Ni-1fHpF1=gSbf4PBQrwRmCKpD(C+IYU4ukRz zx|HytR-f;Hn$AB#&E;3)&S7AmS~4|&&B?($ujqN{3wywx%na#XY}6;d^Dg62@DlF% zSLZe=9_p25@M2-3VnCuiFkH}DZQ(SQ{mad-LN(_8ecafwaWvGB!pLirU00=?YmQ|d zG*@yc%wcbKmze$rbA3A~Prz=jlRs1~UC8TL?q~%^&00v!fn4~$;{kDZhlCB8y!qIx zN8NLn(#N0ZFis7cH9RjL6m6!Alw8Yj#-`L`I%%Ym5yDsgoQckNw0-7$5B-n@^HJQoHi*;YI z6ZaNT+1h+O81FQhhS(Mc-MV(|jG^(^oc@c-)SL@*V7Wy#2-31K9{%uS1!YsUj!-sn z`8h+GE-Cw5FkdXaATmoFzG`$%8Hsf~#OFliAO5xF3{f;uKuu;!;cD-GizCwQNAzNq zT)ASC(?p&?kctAqfy28|5!w%%PQCLBa6JFa-u!%^#Y`fuoOkGn5kgJLJ7Mr;N_x3V z!?Z(<*eo+XLnr-QEUIu2d@7ixK1td~PKEiK}1&YUac^b3rBe0eCoka;VWV5dTy zH^5r0N72sx;1_7(ScT68sO8(_BHU5FYZueCC%XkhzqLs|Q)_Km;L~~R zuN84r#Yv5cj9otMMT5&z>f<%%c}PTU1-?=>;06es*Rf-1MsG?3u}Pr)#r@&Ri?!~8 z9Yn?28Sa5Y_Ux>rrXnQ(DR<#Oox(+tMa;ag`X1O?B0nFs3i#-em6)dLR7nQy(tIlQ zU)X9)_CoH4ekV|hI{_L4RWdD&1`Vo&FI#c&A6&+(R*ICE&$Acattz3JgNjn)HKLw) z1Z0$P2sJcZ(LvP2*fa{YF*mIAj9n3{?$xCjJ6^sIaX#PzoTx)U2X%J1tIW{`At2i zd|2at_7_PN7n9TZ%UiuQZ#V}wkl;?GKoEC*-_7tQ7%)QpyHOvIZXBTeU=uIMc`Tsf zQc}kBate-kr?+OntY5@O#T7kB`F01SOIkLaro~=N1PD0Z-$D;3GaemD%QXrPv);aI zIC@-K%RcRYrP{Te)cX6JxiZTczLb=C9b!t7Kz?l7cH|h>NOwe7M$fAD>OKd}#=U6S z=Z}B=X4I@6lk!)A4W3|n99uqUXCHqCWyy3j7BZYOR9drI#zDh^PJLECs9e=fNlT|u z{c0v&0RvY)?Z&u~t?c8eZ|?_SEy`S4&w%3ts(m9{p9Z)`K4(t%+@{T&Yx4oY5g*h& zZ~TnzDOZ$)UVZQSw5 zHDfdFUwg7)abwS>&$~?|MbSq3tVTV_C@-d}^i#{cNLKV8tLHx2$|{%&?B9cEl07F~ zvV@&1WNV&>_C3gI+M@QqudB(t`SY(4x<#yS^zF%X8DmMFEJ`Cl^}YKKb1xPY6v#YZ z=pMA(4Iwn8p_9hYTE=0WywwAQWew3 z&R;Yl4xos@EC|f_A%=J2k$%H1-kD?elKNj>?Wdm#N#N$TjaV>8j<6vLtg zjL>Do#d;pvRKliEC1?urz?zL#@3Y84gd!8Guu1fS2%N_1kz55vG#|*C1)4r_@?_U9 z1`(Qne@Q0P1wL_VYU^u%+FQC3;WKD19igNlP%t0o?rH2i*&~Rx#P%A+PIER68L#J| zGp|9c_|zCyb#(#h7QjjTDs@vAbPmz&z zo@I;fcSNCEpZXSD-as5v$e!3=DiC5Qf2YvCGoDrnd=Js9deGDe+{)l?PlSf{{PKUa zclIm^M^P9zC~c@ghlZlEni2|yh8Bn7Z)HJXIaDNM4dN2!(hDf$5C#<)L2H2&B1mnK zAWBrWxwQyE&=3V_IHU;nJ2v_9PMrvxrwz;h3sFL2D z%jZ+a{j)~?ktpi|I3dMv>DWY)$1bj|5AK~PBQgOB_?g}CeCM2WCDQZcEEbE<2T8)K zr!x_pn+;jaQfVuj@O6l;kL(gUbjvN?~q~MiFC2udwi#wCh zE^($ayTR#lX;>WgR>O5DZ!6)CY2zf*hLav%dugnUrJApz;Z*f#D~e+ud_i7yfC@Yj zk)|i<9n>Cmqz7^-Q1yZ4^UmVn1Km-L{_=)+4jCJSDZ0XN=IC0tfX`@sWX=$emG!`# zks@}FZJEe36K!khh(lmox(cRWy;#8tBa50CT>zv;o$~)>eqFFI@#mA(&1>6wGIpe{ zUV%W*kpHqaXC>TS+a9gwa`2ZX!6_w)`UD+u0n0rpV@MFgPG+@jDw1dH$!%D-m*KSD9$48j4%4(TbVxvoe EALYOm`2YX_ literal 63407 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 z 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 OF&;B%biCmV|NjHloGAhT From de8c31aaf938265c91bd9098a20b290ffdfe3589 Mon Sep 17 00:00:00 2001 From: Alessandro Date: Thu, 13 Feb 2020 10:41:33 +0100 Subject: [PATCH 18/26] Aggiunte informazioni mancani descrizioni UC close #247 --- .../res/sections/Sez3-CasiDUso/CasiDUso.tex | 41 +++++++++++++++++-- .../res/sections/Sez3-CasiDUso/uc10.tex | 4 +- .../res/sections/Sez3-CasiDUso/uc11.tex | 4 +- .../res/sections/Sez3-CasiDUso/uc5.tex | 6 +-- .../res/sections/Sez3-CasiDUso/uc6.tex | 4 +- .../res/sections/Sez3-CasiDUso/uc7.tex | 4 +- .../res/sections/Sez3-CasiDUso/uc8.tex | 2 +- 7 files changed, 49 insertions(+), 16 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex index 61ac4d6..c83a4b2 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex @@ -90,7 +90,7 @@ \section{Casi d'uso} \subsection{UC 9 - Ente - Visualizzazione logs membri} \begin{itemize} \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: Il moderatore ente intende visualizzare gli accessi e i movimenti effettuati dai membri appartenenti al proprio ente. + \item \textbf{Descrizione}: Il moderatore ente intende visualizzare le logs composte da nome, cognome, azione, data-ora ed indirizzo IP dei membri appartenenti al proprio ente. \item \textbf{Precondizione}: L'utente è autenticato e fa parte di un ente in qualità di moderatore ente. \item \textbf{Postcondizione}: L'utente visualizza i logs relativi agli utenti appartenenti al proprio ente. \item \textbf{Scenario Principale}: @@ -102,7 +102,15 @@ \section{Casi d'uso} \subsection{UC 9.1 - Visualizzazione informazioni log membro} \begin{itemize} \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}:. + \item \textbf{Descrizione}: L'utente visualizza una entry composta da nome, cognome, azione, data-ora ed indirizzo IP di un membro appartenente al proprio ente. Le azioni sotto audit sono le seguenti: + \begin{itemize} + \item login #ID_utente; + \item logout manuale #ID_utente; + \item modifica impostazioni #ID_utente; + \item modifica password #ID_utente; + \item ricezione codice Telegram #ID_utente; + \item modifica notifiche alert #ID_utente. + \end{itemize} \item \textbf{Precondizione}: L'utente è autenticato e fa parte di un ente in qualità di moderatore ente. \item \textbf{Postcondizione}: L'utente visualizza le informazioni relative ad un log di un membro. \item \textbf{Scenario Principale}: @@ -133,7 +141,7 @@ \section{Casi d'uso} \subsection{UC 13 - Amministrazione - Visualizzazione logs utenti} \begin{itemize} \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'amministratore vuole visualizzare gli accessi e i movimenti degli utenti presenti all'interno del sistema. + \item \textbf{Descrizione}: L'amministratore vuole visualizzare le logs composte da nome, cognome, mail, azione, data-ora, indirizzo IP, ente e rank degli utenti presenti all'interno del sistema. \item \textbf{Precondizione}: L'utente è autenticato in qualità di amministratore. \item \textbf{Postcondizione}: L'utente visualizza la lista delle logs di tutti gli utenti del sistema. \item \textbf{Scenario Principale}: @@ -145,7 +153,32 @@ \section{Casi d'uso} \subsection{UC 13.1 - Amministrazione - Visualizzazione informazioni log utente} \begin{itemize} \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: . + \item \textbf{Descrizione}: L'utente visualizza una entry composta da nome, cognome, azione, data-ora, indirizzo IP, ente e rank degli utenti presenti all'interno del sistema. + Le azioni sotto audit sono le seguenti: + \begin{itemize} + \item login #ID_utente; + \item logout manuale #ID_utente; + \item modifica delle impostazioni #ID_utente; + \item modifica della password #ID_utente; + \item ricezione codice Telegram #ID_utente; + \item modifica notifiche alert #ID_utente; + \item creazione utente #ID_utente; + \item creazione utente #ID_utente; + \item modifica utente #ID_utente; + \item disattivazione utente #ID_utente; + \item reset password utente #ID_utente; + \item creazione alert #ID_sensore; + \item modifica alert #ID_sensore; + \item rimozione alert #ID_sensore; + \item creazione ente #ID_ente; + \item modifica ente #ID_ente; + \item disattivazione ente #IDD_ente; + \item aggiunta dispositivo #IDD_dispositivo; + \item modifica dispositivo #IDD_dispositivo; + \item rimozione dispositivo #ID_dispositivo; + \item modifica sensori_ente #ID_ente; + \item invio input Telegram #ID_dispositivo. + \end{itemize} \item \textbf{Precondizione}: L'utente è autenticato in qualità di amministratore. \item \textbf{Postcondizione}: L'utente visualizza le informazioni relative ad un log di un utente del sistema. \item \textbf{Scenario Principale}: diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc10.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc10.tex index 7681376..6280b26 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc10.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc10.tex @@ -20,7 +20,7 @@ \subsection{UC 10 - Amministrazione - Gestione enti} \subsubsection{UC 10.1 - Visualizzazione lista enti } \begin{itemize} \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può visualizzare la lista degli enti attivi censiti nel sistema. + \item \textbf{Descrizione}: L'utente può visualizzare una lista con nome e luogo della sede degli enti attivi censiti nel sistema. \item \textbf{Precondizione}: L'utente naviga nella gestione enti per l'amministrazione. \item \textbf{Postcondizione}: L'utente ha visualizzato la lista degli enti presenti nel sistema. \item \textbf{Scenario Principale}: @@ -32,7 +32,7 @@ \subsection{UC 10 - Amministrazione - Gestione enti} \subsubsection{UC 10.2 - Visualizzazione informazioni ente} \begin{itemize} \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può visualizzare le informazioni riguardanti uno specifico ente, quali il suo nome, il nome per esteso e il luogo della sede. + \item \textbf{Descrizione}: L'utente può visualizzare le informazioni riguardanti uno specifico ente, quali il suo nome, il luogo della sede ed una lista con nome, cognome e mail degli utenti appartenenti a quell'ente. \item \textbf{Precondizione}: L'utente naviga nella gestione enti per l'amministrazione. \item \textbf{Postcondizione}: L'utente visualizza le informazioni di un ente selezionato. \item \textbf{Scenario Principale}: diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex index 2eccc08..c8253a4 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex @@ -20,7 +20,7 @@ \subsubsection{UC 11 - Amministrazione - Gestione utenti} \subsubsection{UC 11.1 - Visualizzazione lista utenti completa} \begin{itemize} \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può visualizzare la lista completa di tutti gli utenti censiti nel sistema. + \item \textbf{Descrizione}: L'utente può visualizzare una lista con nome, cognome, mail ed ente di appartenenza di tutti gli utenti censiti nel sistema. \item \textbf{Precondizione}: L'utente naviga nella gestione utenti per amministratori. \item \textbf{Postcondizione}: L'utente visualizza la lista degli utenti registrati al sistema. \item \textbf{Scenario Principale}: @@ -119,7 +119,7 @@ \subsubsection{UC 11 - Amministrazione - Gestione utenti} \subsubsection{UC 11.3 - Visualizzazione profilo utente} \begin{itemize} \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente vuole visualizzare il profilo di un utente presente nel sistema. + \item \textbf{Descrizione}: L'utente vuole visualizzare le informazioni del profilo di un utente presente nel sistema, quali: nome, cognome, username Telegram (se presente), opzione di autenticazione a due fattori (attiva o meno) ed ente di appartenenza. \item \textbf{Precondizione}: L'utente naviga all'interno della gestione utenti. \item \textbf{Postcondizione}: L'utente ha visualizzato le informazioni dell'utente selezionato. \item \textbf{Scenario Principale}: diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc5.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc5.tex index 6942da8..ff4b160 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc5.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc5.tex @@ -16,7 +16,7 @@ \subsubsection{UC 5.1 - Visualizzazione lista dispositivi ente} \begin{itemize} \item \textbf{Attori Primari}: Membro, Moderatore ente. - \item \textbf{Descrizione}: L'utente può visualizzare i dispositivi abilitati per il proprio ente. + \item \textbf{Descrizione}: L'utente può visualizzare una lista con ID, nome, numero sensori e nome ente per ogni dispositivo abilitato per il proprio ente. \item \textbf{Precondizione}: L'utente naviga nella gestione dispositivi del sistema. \item \textbf{Postcondizione}: L'utente ha visualizzato i dispositivi. \item \textbf{Scenario Principale}: @@ -28,7 +28,7 @@ \subsubsection{UC 5.2 - Visualizza info dispositivo} \begin{itemize} \item \textbf{Attori Primari}: Membro, Moderatore Ente, Amministratore. - \item \textbf{Descrizione}: L'utente può visualizzare le informazioni riguardanti il dispositivo selezionato. + \item \textbf{Descrizione}: L'utente può visualizzare ID, nome, frequenza di aggiornamento dei dati e dati dei sensori in forma tabellare o grafica riguardanti il dispositivo selezionato. \item \textbf{Precondizione}: L'utente naviga nella gestione dispositivi del sistema. \item \textbf{Postcondizione}: L'utente ha visualizzato le informazioni del dispositivo selezionato. \item \textbf{Scenario Principale}: @@ -204,7 +204,7 @@ \subsubsection{UC 5.8 - Visualizzazione lista dispositivi completa} \begin{itemize} \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può visualizzare la lista dei dispositivi completa. + \item \textbf{Descrizione}: L'utente può visualizzare una lista con ID, nome, numero di sensori e nome dell'ente per ogni dispositivo presente nel sistema. \item \textbf{Precondizione}: L'utente naviga nella gestione dispositivi del sistema. \item \textbf{Postcondizione}: L'utente ha visualizzato la lista di tutti i dispositivi. \item \textbf{Scenario Principale}: diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex index 82bf0da..6f444f0 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex @@ -21,7 +21,7 @@ \subsubsection{UC 6.1 - Visualizzazione lista pagine view} \begin{itemize} \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente può visualizzare tutte le proprie \glock{view}. + \item \textbf{Descrizione}: L'utente può visualizzare una lista con i nomi dele proprie \glock{view} create fino a quel momento. \item \textbf{Precondizione}: L'utente naviga all'interno delle proprie \glock{view}. \item \textbf{Postcondizione}: L'utente ha visualizzato le proprie \glock{view}. \item \textbf{Scenario Principale}: @@ -33,7 +33,7 @@ \subsubsection{UC 6.2 - Visualizzazione pagina view} \begin{itemize} \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente può aprire e visualizzare una pagina \glock{view}. + \item \textbf{Descrizione}: L'utente può aprire e visualizzare una pagina \glock{view} in cui sono presenti zero o più grafici con l'andamento di uno o due sensori ed eventualmente la/le relativa/e correlazione/i. \item \textbf{Precondizione}: L'utente naviga all'interno delle proprie \glock{view} e ha almeno una pagina \glock{view} attiva. \item \textbf{Postcondizione}: L'utente visualizza una pagina \glock{view} specifica. \item \textbf{Scenario Principale}: diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc7.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc7.tex index 4ef6341..da916c7 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc7.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc7.tex @@ -20,7 +20,7 @@ \subsubsection{UC 7.1 - Visualizzazione utenti ente} \begin{itemize} \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente può visualizzare gli utenti del proprio ente. + \item \textbf{Descrizione}: L'utente può visualizzare una lista con nome, cognome e mail degli utenti del proprio ente. \item \textbf{Precondizione}: L'utente naviga nella gestione utenti per l'ente associato. \item \textbf{Postcondizione}: L'utente ha visualizzato la lista degli utenti appartenenti al proprio ente. \item \textbf{Scenario Principale}: @@ -89,7 +89,7 @@ \subsubsection{UC 7.3 - Visualizzazione profilo di un membro dell'ente} \begin{itemize} \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente può visualizzare i dati dell'utente selezionato dalla lista degli utenti del proprio ente. + \item \textbf{Descrizione}: L'utente può visualizzare nome, cognome, mail, username Telegram (se presente) e l'opzione di autenticazione a due fattori (attiva o meno) dell'utente selezionato dalla lista degli utenti del proprio ente. \item \textbf{Precondizione}: L'utente naviga nella gestione utenti per l'ente associato e visualizza i propri membri. \item \textbf{Postcondizione}: L'utente ha visualizzato i dati dell'utente selezionato appartenente al proprio ente. \item \textbf{Scenario Principale}: diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc8.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc8.tex index 830a17c..e478125 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc8.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc8.tex @@ -21,7 +21,7 @@ \subsubsection{UC 8.1 - Visualizzazione alert ente} \begin{itemize} \item \textbf{Attori Primari}: Membro, Moderatore ente. - \item \textbf{Descrizione}: L'utente può visualizzare gli \glock{alert} appartenenti al proprio ente. + \item \textbf{Descrizione}: L'utente può visualizzare il nome del sensore e la soglia degli \glock{alert} appartenenti al proprio ente. \item \textbf{Precondizione}: L'utente naviga all'interno della gestione \glock{alert}. \item \textbf{Postcondizione}: L'utente ha visualizzato la lista degli \glock{alert} del proprio ente. \item \textbf{Scenario Principale}: From 27d63c43a46243f3558dc51ec1b61bd334e4926c Mon Sep 17 00:00:00 2001 From: Alessandro Date: Thu, 13 Feb 2020 10:46:44 +0100 Subject: [PATCH 19/26] Sistemata subsubsection UC 11 e 18-23 cambiata subsubsection in subsection #246 --- .../res/sections/Sez3-CasiDUso/CasiDUso.tex | 12 ++++++------ .../res/sections/Sez3-CasiDUso/uc11.tex | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex index c83a4b2..b0be4f0 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex @@ -223,7 +223,7 @@ \section{Casi d'uso} % ================= % UC 18 errore auth - [NICE] - \subsubsection{UC 18 - Visualizzazione errore: account non autorizzato} + \subsection{UC 18 - Visualizzazione errore: account non autorizzato} \begin{itemize} \item \textbf{Attori Primari}: Utente non autenticato. \item \textbf{Descrizione}: Dopo aver tentato di eseguire l'autenticazione nella web app, viene visualizzato un errore che segnala che l'account con cui si sta tentando di accedere risulta essere disattivato, pertanto l'utente non è autorizzato ad accedere alla web app. @@ -240,7 +240,7 @@ \section{Casi d'uso} % ================= % UC 19 errore auth - [NICE] - \subsubsection{UC 19 - Visualizzazione errore: codice di autenticazione a due fattori errato} + \subsection{UC 19 - Visualizzazione errore: codice di autenticazione a due fattori errato} \begin{itemize} \item \textbf{Attori Primari}: Utente non autenticato. \item \textbf{Descrizione}: Dopo aver tentato di eseguire l'autenticazione, viene visualizzato un errore che segnala che il codice di autenticazione a due fattori inserito è errato. @@ -258,7 +258,7 @@ \section{Casi d'uso} % ================= % UC 20 errore - [NICE] - \subsubsection{UC 20 - Nessuna risposta dopo una interazione con Telegram} + \subsection{UC 20 - Nessuna risposta dopo una interazione con Telegram} \begin{itemize} \item \textbf{Attori Primari}: Utente autenticato, Utente non autenticato. \item \textbf{Attori Secondari}: Telegram. @@ -276,7 +276,7 @@ \section{Casi d'uso} % ================= % UC 21 errore - [NICE] - \subsubsection{UC 21 - Visualizzazione errore: email non valida} + \subsection{UC 21 - Visualizzazione errore: email non valida} \begin{itemize} \item \textbf{Attori Primari}: Utente autenticato. \item \textbf{Descrizione}: L'utente ha compilato un campo per l'email, ma l'email è già censita nel sistema, oppure è in un formato non corretto. @@ -293,7 +293,7 @@ \section{Casi d'uso} % ================= % UC 22 errore - [NICE] - \subsubsection{UC 22 - Visualizzazione errore: username Telegram non valido} + \subsection{UC 22 - Visualizzazione errore: username Telegram non valido} \begin{itemize} \item \textbf{Attori Primari}: Utente autenticato. \item \textbf{Descrizione}: L'utente ha compilato un campo per l'username di \glock{Telegram}, ma lo username inserito o è già censito nel sistema, oppure è in un formato non corretto. @@ -311,7 +311,7 @@ \section{Casi d'uso} % ================= % UC 23 errore - [NICE] - \subsubsection{UC 23 - Visualizzazione errore: formato nome o cognome non valido} + \subsection{UC 23 - Visualizzazione errore: formato nome o cognome non valido} \begin{itemize} \item \textbf{Attori Primari}: Utente autenticato. \item \textbf{Descrizione}: L'utente ha compilato i campi per il nome o per il cognome, ma il formato di uno di questi due non è valido. diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex index c8253a4..2cfa23c 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex @@ -1,4 +1,4 @@ -\subsubsection{UC 11 - Amministrazione - Gestione utenti} +\subsection{UC 11 - Amministrazione - Gestione utenti} \begin{figure}[H] \centering From 12939870eda374f0b7e0a915106d0e61e67d81ea Mon Sep 17 00:00:00 2001 From: Alessandro Date: Thu, 13 Feb 2020 10:47:39 +0100 Subject: [PATCH 20/26] Sistemata mancanza di "UC" in UC 4.x #246 --- .../res/sections/Sez3-CasiDUso/uc4.tex | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc4.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc4.tex index 4ab4dd4..ba48bdd 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc4.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc4.tex @@ -29,9 +29,9 @@ \item \textbf{Scenario Principale}: \begin{enumerate} \item L'utente deve inserire dei campi obbligatori per proseguire; - \item L'utente inserisce il campo per la password attuale (4.1.1); - \item L'utente inserisce il campo per la nuova password (4.1.2); - \item L'utente inserisce il campo per la conferma della nuova password (4.1.3); + \item L'utente inserisce il campo per la password attuale (UC 4.1.1); + \item L'utente inserisce il campo per la nuova password (UC 4.1.2); + \item L'utente inserisce il campo per la conferma della nuova password (UC 4.1.3); \item L'utente ha cambiato la propria password. \end{enumerate} \item \textbf{Estensioni}: @@ -87,9 +87,9 @@ \item \textbf{Scenario Principale}: \begin{enumerate} \item L'utente deve inserire dei campi per proseguire; - \item L'utente modifica il campo relativo alla propria email (4.2.1); - \item L'utente modifica il campo relativo allo username di \glock{Telegram} (4.2.2); - \item L'utente seleziona la preferenza per l'abilitazione dell'autenticazione a due fattori (4.2.3); + \item L'utente modifica il campo relativo alla propria email (UC 4.2.1); + \item L'utente modifica il campo relativo allo username di \glock{Telegram} (UC 4.2.2); + \item L'utente seleziona la preferenza per l'abilitazione dell'autenticazione a due fattori (UC 4.2.3); \item L'utente ha cambiato le proprie informazioni associate al suo account. \end{enumerate} \item \textbf{Estensioni}: From a448df9edcc0e6420e814526ce32e208bcb68432 Mon Sep 17 00:00:00 2001 From: Alessandro Date: Thu, 13 Feb 2020 10:50:59 +0100 Subject: [PATCH 21/26] Rimossi RA-V-(7-10) #222 #246 --- .../ClassificazioneRequisiti.tex | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex index 2009eee..9f2387f 100644 --- a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex +++ b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex @@ -245,20 +245,15 @@ \section{Requisiti} \req{A}{V}{4} & Il sistema deve fare uso di un time-series database (TimescaleDB) & Capitolato \autism \req{A}{V}{5} & Il sistema deve fare uso di un protocollo per comunicare con il \glock{Gatweay} & Capitolato \autism \req{A}{V}{6} & Il sistema deve fare uso di \glock{API} per la comunicazione con le applicazioni & Capitolato \autism - \req{A}{V}{7} & Il sistema deve mostrare almeno una correlazione tra due dati & Capitolato \autism - \req{A}{V}{8} & Il sistema deve permettere di visualizzare dati inviati da un dispositivo & Capitolato \autism - \req{A}{V}{9} & Il sistema deve permettere di inviare un input a un dispositivo & Capitolato \autism - \req{A}{V}{10} & Il sistema deve permettere di censire un dispositivo & Capitolato \autism - % SPOSTAMENTO DA REQUISITI PRESTAZIONALI - \req{A}{V}{11} & La web app deve essere compatibile il browser \glock{Firefox} dalla versione 69.0 & Capitolato \autism - \req{A}{V}{12} & La web app deve essere compatibile con il browser \glock{Chrome} dalla versione 75.0 & Capitolato \autism - \req{A}{V}{13} & La web app deve essere compatibile con il browser \glock{Safari} dalla versione 13.0 & Capitolato \autism - \req{B}{V}{14} & La web app deve essere compatibile con il browser \glock{Edge} dalla versione 42.0 & Capitolato \autism - \req{A}{V}{15} & La web app dovrà essere sviluppata utilizzando il framework \glock{Bootstrap} & Interna, Capitolato \autism - \req{A}{V}{16} & Tutta la documentazione relativa al software deve essere scritta in lingua italiana, in modo da essere consistente con la lingua utilizzata per la codifica & Capitolato \autism - \sreq{A}{V}{16.1} & Il software deve essere accompagnato da un manuale amministratore, contenente tutte le informazioni utili per la distribuzione e l'installazione del prodotto & Capitolato \autism - \sreq{A}{V}{16.2} & Il software deve essere accompagnato da un manuale utente, contenente tutte le informazioni utili per l'utilizzo del prodotto da parte degli utenti e dei moderatori degli enti & Capitolato \autism + \req{A}{V}{7} & La web app deve essere compatibile il browser \glock{Firefox} dalla versione 69.0 & Capitolato \autism + \req{A}{V}{8} & La web app deve essere compatibile con il browser \glock{Chrome} dalla versione 75.0 & Capitolato \autism + \req{A}{V}{9} & La web app deve essere compatibile con il browser \glock{Safari} dalla versione 13.0 & Capitolato \autism + \req{B}{V}{10} & La web app deve essere compatibile con il browser \glock{Edge} dalla versione 42.0 & Capitolato \autism + \req{A}{V}{11} & La web app dovrà essere sviluppata utilizzando il framework \glock{Bootstrap} & Interna, Capitolato \autism + \req{A}{V}{12} & Tutta la documentazione relativa al software deve essere scritta in lingua italiana, in modo da essere consistente con la lingua utilizzata per la codifica & Capitolato \autism + \sreq{A}{V}{12.1} & Il software deve essere accompagnato da un manuale amministratore, contenente tutte le informazioni utili per la distribuzione e l'installazione del prodotto & Capitolato \autism + \sreq{A}{V}{12.2} & Il software deve essere accompagnato da un manuale utente, contenente tutte le informazioni utili per l'utilizzo del prodotto da parte degli utenti e dei moderatori degli enti & Capitolato \autism \caption{Requisiti di vincolo con le relative descrizioni e le relative fonti} From 746b5b161cd7eee9aaacdc9efa6f506e5463b6c0 Mon Sep 17 00:00:00 2001 From: Alessandro Date: Thu, 13 Feb 2020 12:27:38 +0100 Subject: [PATCH 22/26] Aggiunti contenuti dashboard caso d'uso 2 --- .../res/sections/Sez3-CasiDUso/CasiDUso.tex | 81 ++++++++++++------- 1 file changed, 52 insertions(+), 29 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex index b0be4f0..3f7fb3a 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex @@ -32,7 +32,26 @@ \section{Casi d'uso} \begin{itemize} \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente ha eseguito l'autenticazione e vuole visualizzare una dashboard con all'interno le proprie informazioni account, alcune statistiche del sito e le informazioni di supporto tecnico. + \item \textbf{Descrizione}: L'utente ha eseguito l'autenticazione e vuole visualizzare una dashboard con all'interno le proprie informazioni account: + \begin{itemize} + \item avatar; + \item nome; + \item cognome; + \item mail; + \item ente di appartenenza; + \item indirizzo IP. + \end{itemize} + Alcune statistiche del sito: + \begin{itemize} + \item utenti attivi nel sistema; + \item utenti attivi appartenenti al proprio ente; + \item numero totale di utenti nel sistema; + \item numero totale di utenti nel proprio ente; + \item dispositivi censiti nel sistema; + \item dispositivi censiti nel proprio ente; + \item numero totale di enti. + \end{itemize} + Una descrizione con i contatti per il supporto tecnico. \item \textbf{Precondizione}: L'utente è autenticato nella web app. \item \textbf{Postcondizione}: L'utente visualizza la dashboard con le proprie informazioni. \item \textbf{Scenario Principale}: @@ -103,14 +122,16 @@ \section{Casi d'uso} \begin{itemize} \item \textbf{Attori Primari}: Moderatore ente. \item \textbf{Descrizione}: L'utente visualizza una entry composta da nome, cognome, azione, data-ora ed indirizzo IP di un membro appartenente al proprio ente. Le azioni sotto audit sono le seguenti: + \begin{itemize} - \item login #ID_utente; - \item logout manuale #ID_utente; - \item modifica impostazioni #ID_utente; - \item modifica password #ID_utente; - \item ricezione codice Telegram #ID_utente; - \item modifica notifiche alert #ID_utente. + \item login ed ID utente; + \item logout manuale ed ID utente; + \item modifica impostazioni ed ID utente; + \item modifica password ed ID utente; + \item ricezione codice Telegram ed ID utente; + \item modifica notifiche alert ed ID utente. \end{itemize} + \item \textbf{Precondizione}: L'utente è autenticato e fa parte di un ente in qualità di moderatore ente. \item \textbf{Postcondizione}: L'utente visualizza le informazioni relative ad un log di un membro. \item \textbf{Scenario Principale}: @@ -155,30 +176,32 @@ \section{Casi d'uso} \item \textbf{Attori Primari}: Amministratore. \item \textbf{Descrizione}: L'utente visualizza una entry composta da nome, cognome, azione, data-ora, indirizzo IP, ente e rank degli utenti presenti all'interno del sistema. Le azioni sotto audit sono le seguenti: + \begin{itemize} - \item login #ID_utente; - \item logout manuale #ID_utente; - \item modifica delle impostazioni #ID_utente; - \item modifica della password #ID_utente; - \item ricezione codice Telegram #ID_utente; - \item modifica notifiche alert #ID_utente; - \item creazione utente #ID_utente; - \item creazione utente #ID_utente; - \item modifica utente #ID_utente; - \item disattivazione utente #ID_utente; - \item reset password utente #ID_utente; - \item creazione alert #ID_sensore; - \item modifica alert #ID_sensore; - \item rimozione alert #ID_sensore; - \item creazione ente #ID_ente; - \item modifica ente #ID_ente; - \item disattivazione ente #IDD_ente; - \item aggiunta dispositivo #IDD_dispositivo; - \item modifica dispositivo #IDD_dispositivo; - \item rimozione dispositivo #ID_dispositivo; - \item modifica sensori_ente #ID_ente; - \item invio input Telegram #ID_dispositivo. + \item login ed ID utente; + \item logout manuale ed ID utente; + \item modifica delle impostazioni ed ID utente; + \item modifica della password ed ID utente; + \item ricezione codice Telegram ed ID utente; + \item modifica notifiche alert ed ID utente; + \item creazione utente ed ID utente; + \item creazione utente ed ID utente; + \item modifica utente ed ID utente; + \item disattivazione utente ed ID utente; + \item reset password utente ed ID utente; + \item creazione alert ed ID sensore; + \item modifica alert ed ID sensore; + \item rimozione alert ed ID sensore; + \item creazione ente ed ID ente; + \item modifica ente ed ID ente; + \item disattivazione ente ed ID ente; + \item aggiunta dispositivo ed ID dispositivo; + \item modifica dispositivo ed ID dispositivo; + \item rimozione dispositivo ed ID dispositivo; + \item modifica sensori ente ed ID ente; + \item invio input Telegram ed ID dispositivo. \end{itemize} + \item \textbf{Precondizione}: L'utente è autenticato in qualità di amministratore. \item \textbf{Postcondizione}: L'utente visualizza le informazioni relative ad un log di un utente del sistema. \item \textbf{Scenario Principale}: From d41b1e3338cb3b5672513463cac73119951bbe3f Mon Sep 17 00:00:00 2001 From: Alessandro Date: Thu, 13 Feb 2020 12:28:01 +0100 Subject: [PATCH 23/26] Sistemato tracciamento dopo rimozione di RAV7-10 --- .../Sez5-Tracciamento/Tracciamento.tex | 26 +++++++------------ 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex b/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex index d33978c..4a7a5ec 100644 --- a/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex +++ b/esterni/analisi_requisiti/res/sections/Sez5-Tracciamento/Tracciamento.tex @@ -153,19 +153,15 @@ \section{Tracciamento dei requisiti} \req{A}{V}{4} & Interna, Capitolato \\ \hline \req{A}{V}{5} & Capitolato \\ \hline \req{A}{V}{6} & Capitolato \\ \hline + % SPOSTAMENTO DA REQUISITI PRESTAZIONALI \req{A}{V}{7} & Capitolato \\ \hline \req{A}{V}{8} & Capitolato \\ \hline \req{A}{V}{9} & Capitolato \\ \hline - \req{A}{V}{10} & Capitolato \\ \hline - % SPOSTAMENTO DA REQUISITI PRESTAZIONALI - \req{A}{V}{11} & Capitolato \\ \hline - \req{A}{V}{12} & Capitolato \\ \hline - \req{A}{V}{13} & Capitolato \\ \hline - \req{B}{V}{14} & Capitolato \\ \hline - \req{A}{V}{15} & Interna, Capitolato \\ \hline - \req{B}{V}{16} & Capitolato \\ \hline - \sreq{B}{V}{16.1} & Capitolato \\ \hline - \sreq{B}{V}{16.2} & Capitolato \\ \hline + \req{B}{V}{10} & Capitolato \\ \hline + \req{A}{V}{11} & Interna, Capitolato \\ \hline + \req{B}{V}{12} & Capitolato \\ \hline + \sreq{B}{V}{12.1} & Capitolato \\ \hline + \sreq{B}{V}{12.2} & Capitolato \\ \hline \caption{Tracciamento requisiti-fonti} \end{longtable} @@ -299,15 +295,11 @@ \section{Tracciamento dei requisiti} & \req{A}{V}{7} \\ & \req{A}{V}{8} \\ & \req{A}{V}{9} \\ - & \req{A}{V}{10} \\ + & \req{B}{V}{10} \\ & \req{A}{V}{11} \\ & \req{A}{V}{12} \\ - & \req{A}{V}{13} \\ - & \req{A}{V}{14} \\ - & \req{A}{V}{15} \\ - & \req{A}{V}{16} \\ - & \sreq{A}{V}{16.1} \\ - & \sreq{A}{V}{16.2} \\ \hline + & \sreq{A}{V}{12.1} \\ + & \sreq{A}{V}{12.2} \\ \hline \multirow{15}{*}{Interna} & \sreq{A}{F}{1.1} \\ & \sreq{A}{F}{1.2} \\ & \req{A}{F}{51} \\ From 839705bf594b5a356ef615fe052fbeabbfb9d35b Mon Sep 17 00:00:00 2001 From: Lorenzo Dei Negri Date: Sat, 15 Feb 2020 23:55:41 +0100 Subject: [PATCH 24/26] Fix maiuscole Fix maiuscole. Fix elenchi. Fix minori. --- esterni/analisi_requisiti/main.tex | 2 +- .../Sez1-Introduzione/Introduzione.tex | 20 +- .../AnalisiDelProdotto.tex | 26 +- .../res/sections/Sez3-CasiDUso/CasiDUso.tex | 2 +- .../res/sections/Sez3-CasiDUso/uc1.tex | 134 +++++----- .../res/sections/Sez3-CasiDUso/uc10.tex | 160 ++++++------ .../res/sections/Sez3-CasiDUso/uc11.tex | 194 +++++++------- .../res/sections/Sez3-CasiDUso/uc12.tex | 38 +-- .../res/sections/Sez3-CasiDUso/uc14.tex | 78 +++--- .../res/sections/Sez3-CasiDUso/uc15.tex | 52 ++-- .../res/sections/Sez3-CasiDUso/uc16.tex | 180 +++++++------ .../res/sections/Sez3-CasiDUso/uc4.tex | 200 +++++++-------- .../res/sections/Sez3-CasiDUso/uc5.tex | 239 +++++++++--------- .../res/sections/Sez3-CasiDUso/uc6.tex | 208 +++++++-------- .../res/sections/Sez3-CasiDUso/uc7.tex | 176 ++++++------- .../res/sections/Sez3-CasiDUso/uc8.tex | 132 +++++----- .../ClassificazioneRequisiti.tex | 16 +- 17 files changed, 923 insertions(+), 934 deletions(-) diff --git a/esterni/analisi_requisiti/main.tex b/esterni/analisi_requisiti/main.tex index 06ecff3..5c3f922 100644 --- a/esterni/analisi_requisiti/main.tex +++ b/esterni/analisi_requisiti/main.tex @@ -16,7 +16,7 @@ \newcommand{\docVersione}{1.0.0\docBaseline} \newcommand{\docNomeProgetto}{ ThiReMa Project } \newcommand{\docStatus}{Approvato} -\newcommand{\docUso}{esterno} +\newcommand{\docUso}{Esterno} \newcommand{\docDescrizione}{ Il documento contiene una analisi formale approfondita di tutti i requisiti e i casi d'uso richiesti dal progetto. } diff --git a/esterni/analisi_requisiti/res/sections/Sez1-Introduzione/Introduzione.tex b/esterni/analisi_requisiti/res/sections/Sez1-Introduzione/Introduzione.tex index 3fef1d8..bfd1540 100644 --- a/esterni/analisi_requisiti/res/sections/Sez1-Introduzione/Introduzione.tex +++ b/esterni/analisi_requisiti/res/sections/Sez1-Introduzione/Introduzione.tex @@ -1,23 +1,23 @@ \section{Introduzione} \subsection{Scopo del documento} - Lo scopo di questo documento è la candidatura del gruppo RedRoundRobin allo svolgimento del progetto relativo al capitolato C6 - ThiReMa. + Lo scopo di questo documento è la candidatura del gruppo Red Round Robin allo svolgimento del progetto relativo al capitolato C6 - ThiReMa. All'interno di questa analisi è possibile seguire la classificazione, il tracciamento e la descrizione dettagliata dei requisiti individuati dall'analisi del capitolato scelto. - \subsection{Glossario e Documenti esterni} - Per evitare possibili ambiguità relative alle terminologie (che andranno indicate in \textsc{maiuscoletto})utilizzate nei vari documenti, verranno utilizzate due simboli: + \subsection{Glossario e documenti esterni} + Per evitare possibili ambiguità relative alle terminologie (che andranno indicate in \textsc{maiuscoletto}) utilizzate nei vari documenti, verranno utilizzate due simboli: \begin{itemize} - \item Una \textit{D} al pedice per indicare il nome di un particolare documento. - \item Una \textit{G} al pedice per indicare un termine che sarà presente nel \dext{Glossario v1.0.0}. + \item una \textit{D} al pedice per indicare il nome di un particolare documento; + \item una \textit{G} al pedice per indicare un termine che sarà presente nel \dext{Glossario v1.0.0}. \end{itemize} \subsection{Riferimenti} \subsubsection{Normativi} \begin{itemize} - \item \textbf{Norme di Progetto: }\dext{Norme di Progetto v1.0.0} - \item \textbf{Capitolato C6 - ThiReMa: }\url{https://www.math.unipd.it/~tullio/IS-1/2019/Progetto/C6.pdf} + \item \textbf{norme di progetto: }\dext{Norme di Progetto v1.0.0} + \item \textbf{capitolato C6 - ThiReMa: }\url{https://www.math.unipd.it/~tullio/IS-1/2019/Progetto/C6.pdf} \end{itemize} \subsubsection{Informativi} \begin{itemize} - \item \textbf{Presentazione seminario capitolato C6 - ThiReMa: }\url{https://www.math.unipd.it/~tullio/IS-1/2019/Progetto/C6a.pdf} - \item \textbf{Slide Ingegneria del Software - Analisi dei requisiti: }\url{https://www.math.unipd.it/~tullio/IS-1/2019/Dispense/L08.pdf} - \item \textbf{Slide Ingegneria del Software - Diagrammi dei casi d'uso: }\url{https://www.math.unipd.it/~tullio/IS-1/2019/Dispense/E03.pdf} + \item \textbf{presentazione seminario capitolato C6 - ThiReMa: }\url{https://www.math.unipd.it/~tullio/IS-1/2019/Progetto/C6a.pdf} + \item \textbf{slide Ingegneria del Software - Analisi dei requisiti: }\url{https://www.math.unipd.it/~tullio/IS-1/2019/Dispense/L08.pdf} + \item \textbf{slide Ingegneria del Software - Diagrammi dei casi d'uso: }\url{https://www.math.unipd.it/~tullio/IS-1/2019/Dispense/E03.pdf} \end{itemize} \ No newline at end of file diff --git a/esterni/analisi_requisiti/res/sections/Sez2-AnalisiDelProdotto/AnalisiDelProdotto.tex b/esterni/analisi_requisiti/res/sections/Sez2-AnalisiDelProdotto/AnalisiDelProdotto.tex index c4285c4..3df7dec 100644 --- a/esterni/analisi_requisiti/res/sections/Sez2-AnalisiDelProdotto/AnalisiDelProdotto.tex +++ b/esterni/analisi_requisiti/res/sections/Sez2-AnalisiDelProdotto/AnalisiDelProdotto.tex @@ -5,22 +5,22 @@ \section{Analisi del prodotto} \subsection{Analisi della struttura} La struttura del prodotto sarà divisa in: \begin{itemize} - \item \textbf{Interfaccia di gestione}: L'interfaccia di gestione ed interrogazione permetterà agli utenti di seguire l'andamento di uno o più sensori, di controllarli, attivandoli o disattivandoli ed infine, agli utenti con maggiori privilegi, di aggiungere o rimuovere altri utenti o gruppi. + \item \textbf{interfaccia di gestione:} l'interfaccia di gestione ed interrogazione permetterà agli utenti di seguire l'andamento di uno o più sensori, di controllarli, attivandoli o disattivandoli ed infine, agli utenti con maggiori privilegi, di aggiungere o rimuovere altri utenti o gruppi. Tramite questa interfaccia deve essere possibile inviare dei comandi al giusto gateway tramite un apposito \glock{topic} di Kafka per controllare gli \glock{edge data point}. - L'interfaccia di gestione dovrà dare la possibilità agli utenti di gestire i propri dati (quale ad esempio la password di accesso). - \item \textbf{Database}: Si è pensato di utilizzare due tipi di database in base ai dati da memorizzare: + L'interfaccia di gestione dovrà dare la possibilità agli utenti di gestire i propri dati (quale ad esempio la password di accesso); + \item \textbf{database:} Si è pensato di utilizzare due tipi di database in base ai dati da memorizzare: \begin{itemize} - \item Un database di tipo \glock{Time-Series} per memorizzare i dati temporali ricevuti dai sensori; - \item Un database relazionale, per memorizzare i metadati relativi ai sensori (ad esempio il loro censimento) o relativi agli utenti che andranno ad utilizzare l'interfaccia di gestione. + \item un database di tipo \glock{Time-Series} per memorizzare i dati temporali ricevuti dai sensori; + \item un database relazionale, per memorizzare i metadati relativi ai sensori (ad esempio il loro censimento) o relativi agli utenti che andranno ad utilizzare l'interfaccia di gestione; \end{itemize} - \item \textbf{Gateway}: I dispositivi (o edge data point) che invieranno i dati dei loro sensori, non si interfacceranno direttamente con i database o con il cluster Kafka (descritto in seguito) bensì dialogheranno con un \glock{gateway} tramite degli appositi protocolli. + \item \textbf{gateway:} i dispositivi (o edge data point) che invieranno i dati dei loro sensori, non si interfacceranno direttamente con i database o con il cluster Kafka (descritto in seguito) bensì dialogheranno con un \glock{gateway} tramite degli appositi protocolli. Saranno presenti diversi gateway suddivisi per struttura, con almeno un gateway per sede, in modo tale da facilitare l'individuazione di uno specifico edge data point. - Le configurazioni di invio dei dati (quale ad esempio la frequenza di invio) per ogni singolo dispositivo dovranno essere inviate dalla web app, che tramite un apposito topic di kafka, vengono salvate nell'apposito gateway, che poi si occuperà di filtrare i dati inviati dai dispositivi ed eventualmente trasformarli in formato JSON. + Le configurazioni di invio dei dati (quale ad esempio la frequenza di invio) per ogni singolo dispositivo dovranno essere inviate dalla web app, che tramite un apposito topic di Kafka, vengono salvate nell'apposito gateway, che poi si occuperà di filtrare i dati inviati dai dispositivi ed eventualmente trasformarli in formato JSON; - \item \textbf{Dispositivo (Edge Data Point)}: I dispositivi dopo essere stati censiti, invieranno dati al proprio gateway, senza essere consci della propria configurazione. + \item \textbf{dispositivo (edge data point):} i dispositivi dopo essere stati censiti, invieranno dati al proprio gateway, senza essere consci della propria configurazione; - \item \textbf{Cluster Apache Kafka}: Tramite Kafka e le sue API verranno ricevuti i dati dai sensori, passando da un gateway, verranno manipolati tramite degli stream ed infine salvati nel database e/o mostrati agli utenti che li richiedono. L'interfaccia di gestione ed il database contenente le misurazioni dei sensori si interfacceranno quindi con Kafka e non direttamente tra loro. + \item \textbf{cluster Apache Kafka:} tramite Kafka e le sue API verranno ricevuti i dati dai sensori, passando da un gateway, verranno manipolati tramite degli stream ed infine salvati nel database e/o mostrati agli utenti che li richiedono. L'interfaccia di gestione ed il database contenente le misurazioni dei sensori si interfacceranno quindi con Kafka e non direttamente tra loro. \end{itemize} \subsection{Attori} @@ -31,19 +31,19 @@ \section{Analisi del prodotto} \caption{Diagramma riassuntivo degli attori con le relative generalizzazioni.} \end{figure} - Gli attori individuati dopo un'attenta analisi del capitolato sono i seguenti: + Gli attori individuati dopo un'attenta analisi del capitolato sono i seguenti \subsubsection{Attori principali} \begin{itemize} - \item \textbf{Utente non autenticato}: utente che non ha accesso alle sezioni private del sito poiché deve ancora eseguire l'autenticazione con le proprie credenziali. Inoltre, non ha ancora effettuato una prima autenticazione con il bot di \glock{Telegram}. + \item \textbf{Utente non autenticato}: utente che non ha accesso alle sezioni private del sito poiché deve ancora eseguire l'autenticazione con le proprie credenziali. Inoltre, non ha ancora effettuato una prima autenticazione con il bot di \glock{Telegram}; \item \textbf{Utente autenticato}: utente che ha eseguito l'accesso al sito e ha accesso alle sezioni private del sito in base ai suoi permessi. Può gestire il proprio account attraverso le impostazioni e si è autenticato il bot di \glock{Telegram}. Si differenzia in tre tipologie: \begin{itemize} - \item \textbf{Membro}: utente che può accedere alle sezioni del sito in base al suo ente di appartenenza. Questo tipo di utente deve appartenere a uno e un solo ente, ossia un gruppo che ha il permesso di visualizzare (in tabella o con un grafico) le misurazioni dei sensori. Può ricevere notifiche dal bot di \glock{Telegram}. + \item \textbf{Membro}: utente che può accedere alle sezioni del sito in base al suo ente di appartenenza. Questo tipo di utente deve appartenere a uno e un solo ente, ossia un gruppo che ha il permesso di visualizzare (in tabella o con un grafico) le misurazioni dei sensori. Può ricevere notifiche dal bot di \glock{Telegram}; \item \textbf{Moderatore ente}: Un moderatore ente ha tutti i permessi di un utente autorizzato e può gestire (visualizzare, modificare, rimuovere o aggiungere) i membri del proprio ente. Di questi ultimi, può visualizzare le relative attività (logs). Questo attore può impostare dei valori soglia, che quando superati provocano l'invio di notifiche a tutti i membri dell'ente. - Possono essere presenti uno o più moderatori ente per ogni singolo ente. + Possono essere presenti uno o più moderatori ente per ogni singolo ente; \item \textbf{Amministratore}: L'amministratore rappresenta un utente con il più alto livello di privilegi. Questo attore può infatti gestire (modificare, creare e rimuovere) gli enti, i loro membri e i dispositivi a loro assegnati. Non fa parte di un ente specifico, ma può visualizzare i dati di qualunque dispositivo censito. L'amministratore può inoltre vedere tutte le attività di ogni singolo utente e può gestire l'invio della configurazione al gateway, decidendo quali dispositivi censire. diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex index 3f7fb3a..1162951 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex @@ -28,7 +28,7 @@ \section{Casi d'uso} % ================= % UC 2 [NICE] - \subsection{UC 2 - Visualizzazione Dashboard} + \subsection{UC 2 - Visualizzazione dashboard} \begin{itemize} \item \textbf{Attori Primari}: Utente autenticato. diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc1.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc1.tex index 3ddfe2b..34f67aa 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc1.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc1.tex @@ -7,15 +7,15 @@ \end{figure} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente vuole autenticarsi nella web app, per poter accedere alle funzionalità del sito. - \item \textbf{Precondizione}: L'utente non è autenticato nella web app. - \item \textbf{Postcondizione}: L'utente effettua l'autenticazione nella web app. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente vuole autenticarsi nella web app, per poter accedere alle funzionalità del sito; + \item \textbf{precondizione:} l'utente non è autenticato nella web app; + \item \textbf{postcondizione:} l'utente effettua l'autenticazione nella web app; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente inserisce le proprie credenziali (UC 1.1); - \item Viene eseguito il controllo delle credenziali inserite (UC 1.4). + \item l'utente inserisce le proprie credenziali (UC 1.1); + \item viene eseguito il controllo delle credenziali inserite (UC 1.4). \end{enumerate} \end{itemize} @@ -23,20 +23,20 @@ \subsubsection{UC 1.1 - Inserimento credenziali} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Descrizione}: L'utente vuole autenticarsi nella web app e deve inserire alcuni campi obbligatori per procedere. - \item \textbf{Precondizione}: L'utente non è autenticato nella web app. - \item \textbf{Postcondizione}: L'utente ha inserito le credenziali richieste. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{descrizione:} l'utente vuole autenticarsi nella web app e deve inserire alcuni campi obbligatori per procedere; + \item \textbf{precondizione:} l'utente non è autenticato nella web app; + \item \textbf{postcondizione:} l'utente ha inserito le credenziali richieste; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente inserisce le credenziali per l'autenticazione base (UC 1.2); - \item L'utente inserisce le credenziali per l'autenticazione a due fattori (UC 1.3); + \item l'utente inserisce le credenziali per l'autenticazione base (UC 1.2); + \item l'utente inserisce le credenziali per l'autenticazione a due fattori (UC 1.3); \end{enumerate} - \item \textbf{Inclusioni}: + \item \textbf{inclusioni:} \begin{itemize} - \item Controllo credenziali (UC 1.4). + \item Controllo credenziali (UC 1.4); \end{itemize} - \item \textbf{Estensioni}: + \item \textbf{estensioni:} \begin{itemize} \item Visualizzazione errore: email e/o una password errati (UC 17). \end{itemize} @@ -51,38 +51,38 @@ \end{figure} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Descrizione}: L'utente vuole autenticarsi nella web app ed inserisce i campi obbligatori per l'autenticazione base. - \item \textbf{Precondizione}: L'utente non è autenticato nella web app. - \item \textbf{Postcondizione}: L'utente ha inserito le credenziali richieste. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{descrizione:} l'utente vuole autenticarsi nella web app ed inserisce i campi obbligatori per l'autenticazione base; + \item \textbf{precondizione:} l'utente non è autenticato nella web app; + \item \textbf{postcondizione:} l'utente ha inserito le credenziali richieste; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente inserisce la email (UC 1.2.1); - \item L'utente inserisce la password (UC 1.2.2). + \item l'utente inserisce la email (UC 1.2.1); + \item l'utente inserisce la password (UC 1.2.2). \end{enumerate} \end{itemize} \paragraph{UC 1.2.1 - Inserimento email} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Descrizione}: L'utente vuole autenticarsi nella web app e inserisce uno dei campi obbligatori per l'autenticazione base. - \item \textbf{Precondizione}: L'utente non è autenticato nella web app. - \item \textbf{Postcondizione}: L'utente ha inserito la credenziale richiesta. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{descrizione:} l'utente vuole autenticarsi nella web app e inserisce uno dei campi obbligatori per l'autenticazione base; + \item \textbf{precondizione:} l'utente non è autenticato nella web app; + \item \textbf{postcondizione:} l'utente ha inserito la credenziale richiesta; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente compila il campo email. + \item l'utente compila il campo email. \end{enumerate} \end{itemize} \paragraph{UC 1.2.2 - Inserimento password} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Descrizione}: L'utente vuole autenticarsi nella web app e inserisce uno dei campi obbligatori per l'autenticazione base. - \item \textbf{Precondizione}: L'utente non è autenticato nella web app. - \item \textbf{Postcondizione}: L'utente ha inserito la credenziale richiesta. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{descrizione:} l'utente vuole autenticarsi nella web app e inserisce uno dei campi obbligatori per l'autenticazione base; + \item \textbf{precondizione:} l'utente non è autenticato nella web app; + \item \textbf{postcondizione:} l'utente ha inserito la credenziale richiesta; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente compila il campo password. + \item l'utente compila il campo password. \end{enumerate} \end{itemize} @@ -95,18 +95,18 @@ \end{figure} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente vuole autenticarsi nella web app ed inserisce i campi obbligatori per l'autenticazione a due fattori. - \item \textbf{Precondizione}: L'utente non è autenticato nella web app. - \item \textbf{Postcondizione}: L'utente ha inserito le credenziali richieste. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente vuole autenticarsi nella web app ed inserisce i campi obbligatori per l'autenticazione a due fattori; + \item \textbf{precondizione:} l'utente non è autenticato nella web app; + \item \textbf{postcondizione:} l'utente ha inserito le credenziali richieste; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente inserisce la email (UC 1.3.1); - \item L'utente inserisce la password (UC 1.3.2); - \item L'utente inserisce un codice temporaneo ricevuto tramite \glock{Telegram} (UC 1.3.3). + \item l'utente inserisce la email (UC 1.3.1); + \item l'utente inserisce la password (UC 1.3.2); + \item l'utente inserisce un codice temporaneo ricevuto tramite \glock{Telegram} (UC 1.3.3); \end{enumerate} - \item \textbf{Estensioni}: + \item \textbf{estensioni:} \begin{itemize} \item Visualizzazione errore: codice di autenticazione a due fattori errato (UC 19). \end{itemize} @@ -114,39 +114,39 @@ \paragraph{UC 1.3.1 - Inserimento email} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Descrizione}: L'utente vuole autenticarsi nella web app e inserisce uno dei campi obbligatori per l'autenticazione a due fattori. - \item \textbf{Precondizione}: L'utente non è autenticato nella web app. - \item \textbf{Postcondizione}: L'utente ha inserito la credenziale richiesta. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{descrizione:} l'utente vuole autenticarsi nella web app e inserisce uno dei campi obbligatori per l'autenticazione a due fattori; + \item \textbf{precondizione:} l'utente non è autenticato nella web app; + \item \textbf{postcondizione:} l'utente ha inserito la credenziale richiesta; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente compila il campo email. + \item l'utente compila il campo email. \end{enumerate} \end{itemize} \paragraph{UC 1.3.2 - Inserimento password} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Descrizione}: L'utente vuole autenticarsi nella web app e inserisce uno dei campi obbligatori per l'autenticazione a due fattori. - \item \textbf{Precondizione}: L'utente non è autenticato nella web app. - \item \textbf{Postcondizione}: L'utente ha inserito la credenziale richiesta. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{descrizione:} l'utente vuole autenticarsi nella web app e inserisce uno dei campi obbligatori per l'autenticazione a due fattori; + \item \textbf{precondizione:} l'utente non è autenticato nella web app; + \item \textbf{postcondizione:} l'utente ha inserito la credenziale richiesta; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente compila il campo password. + \item l'utente compila il campo password. \end{enumerate} \end{itemize} \paragraph{UC 1.3.3 - Inserimento codice temporaneo} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente vuole autenticarsi nella web app e inserisce uno dei campi obbligatori per l'autenticazione a due fattori. - \item \textbf{Precondizione}: L'utente non è autenticato nella web app. - \item \textbf{Postcondizione}: L'utente ha inserito la credenziale richiesta. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente vuole autenticarsi nella web app e inserisce uno dei campi obbligatori per l'autenticazione a due fattori; + \item \textbf{precondizione:} l'utente non è autenticato nella web app; + \item \textbf{postcondizione:} l'utente ha inserito la credenziale richiesta; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente riceve una notifica tramite \glock{Telegram} con un codice temporaneo; - \item L'utente compila il campo codice temporaneo. + \item l'utente riceve una notifica tramite \glock{Telegram} con un codice temporaneo; + \item l'utente compila il campo codice temporaneo. \end{enumerate} \end{itemize} diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc10.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc10.tex index 6280b26..b26ca7c 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc10.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc10.tex @@ -7,151 +7,151 @@ \subsection{UC 10 - Amministrazione - Gestione enti} \end{figure} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può gestire gli enti del sistema, visualizzando la lista completa, aggiungendone di nuovi, modificandone di esistenti e rimuovendone all'occorrenza. - \item \textbf{Precondizione}: L'utente naviga nella gestione enti per l'amministrazione. - \item \textbf{Postcondizione}: L'utente ha visualizzato o gestito gli enti all'interno del sistema. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente può gestire gli enti del sistema, visualizzando la lista completa, aggiungendone di nuovi, modificandone di esistenti e rimuovendone all'occorrenza; + \item \textbf{precondizione:} l'utente naviga nella gestione enti per l'amministrazione; + \item \textbf{postcondizionetcondizione:} l'utente ha visualizzato o gestito gli enti all'interno del sistema; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente visualizza o gestisce gli enti all'interno del sistema.} + \item{l'utente visualizza o gestisce gli enti all'interno del sistema.} \end{enumerate} \end{itemize} \subsubsection{UC 10.1 - Visualizzazione lista enti } \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può visualizzare una lista con nome e luogo della sede degli enti attivi censiti nel sistema. - \item \textbf{Precondizione}: L'utente naviga nella gestione enti per l'amministrazione. - \item \textbf{Postcondizione}: L'utente ha visualizzato la lista degli enti presenti nel sistema. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente può visualizzare una lista con nome e luogo della sede degli enti attivi censiti nel sistema; + \item \textbf{precondizione:} l'utente naviga nella gestione enti per l'amministrazione; + \item \textbf{postcondizione:} l'utente ha visualizzato la lista degli enti presenti nel sistema; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente visualizza la lista enti attualmente attivi e disponibili.} + \item{l'utente visualizza la lista enti attualmente attivi e disponibili.} \end{enumerate} \end{itemize} \subsubsection{UC 10.2 - Visualizzazione informazioni ente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può visualizzare le informazioni riguardanti uno specifico ente, quali il suo nome, il luogo della sede ed una lista con nome, cognome e mail degli utenti appartenenti a quell'ente. - \item \textbf{Precondizione}: L'utente naviga nella gestione enti per l'amministrazione. - \item \textbf{Postcondizione}: L'utente visualizza le informazioni di un ente selezionato. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente può visualizzare le informazioni riguardanti uno specifico ente, quali il suo nome, il luogo della sede ed una lista con nome, cognome e mail degli utenti appartenenti a quell'ente; + \item \textbf{precondizione:} l'utente naviga nella gestione enti per l'amministrazione; + \item \textbf{postcondizione:} l'utente visualizza le informazioni di un ente selezionato; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona dalla lista un ente} - \item{L'utente visualizza le informazioni riguardanti l'utente selezionato} + \item{l'utente seleziona dalla lista un ente;} + \item{l'utente visualizza le informazioni riguardanti l'utente selezionato.} \end{enumerate} \end{itemize} \subsubsection{UC 10.3 - Aggiunta nuovo ente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può aggiungere un nuovo ente al sistema, inserendo le apposite informazioni richieste. - \item \textbf{Precondizione}: L'utente naviga nella gestione enti per l'amministrazione. - \item \textbf{Postcondizione}: L'utente ha creato un nuovo ente. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente può aggiungere un nuovo ente al sistema, inserendo le apposite informazioni richieste; + \item \textbf{precondizione:} l'utente naviga nella gestione enti per l'amministrazione; + \item \textbf{postcondizione:} l'utente ha creato un nuovo ente; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente deve compilare dei campi per proseguire con l'inserimento di un nuovo ente;} - \item L'utente inserisce il nome ente (UC 10.3.1); - \item L'utente inserisce la sede (luogo) in cui risiede l'ente (UC 10.3.2); - \item{L'ente viene creato dall'utente con le informazioni fornite.} + \item{l'utente deve compilare dei campi per proseguire con l'inserimento di un nuovo ente;} + \item l'utente inserisce il nome ente (UC 10.3.1); + \item l'utente inserisce la sede (luogo) in cui risiede l'ente (UC 10.3.2); + \item{l'ente viene creato dall'utente con le informazioni fornite;} \end{enumerate} - \item \textbf{Estensioni}: + \item \textbf{estensioni:} \begin{itemize} - \item Errore: il nome ente inserito è già presente (UC 10.6) + \item Errore: il nome ente inserito è già presente (UC 10.6). \end{itemize} \end{itemize} \paragraph{UC 10.3.1 - Inserimento nome ente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo ente al sistema e deve compilare il campo per il nome dell'ente. - \item \textbf{Precondizione}: L'utente sta aggiungendo un nuovo ente e deve compilare un campo specifico. - \item \textbf{Postcondizione}: L'utente ha compilato il campo specifico. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta aggiungendo un nuovo ente al sistema e deve compilare il campo per il nome dell'ente; + \item \textbf{precondizione:} l'utente sta aggiungendo un nuovo ente e deve compilare un campo specifico; + \item \textbf{postcondizione:} l'utente ha compilato il campo specifico; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente inserisce il nome ente. + \item l'utente inserisce il nome ente. \end{enumerate} \end{itemize} \paragraph{UC 10.3.2 - Inserimento della sede} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo ente al sistema e deve compilare il campo per la sede dell'ente. - \item \textbf{Precondizione}: L'utente sta aggiungendo un nuovo ente e deve compilare un campo specifico. - \item \textbf{Postcondizione}: L'utente ha compilato il campo specifico. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta aggiungendo un nuovo ente al sistema e deve compilare il campo per la sede dell'ente; + \item \textbf{precondizione:} l'utente sta aggiungendo un nuovo ente e deve compilare un campo specifico; + \item \textbf{postcondizione:} l'utente ha compilato il campo specifico; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente inserisce la sede in cui risiede l'ente. + \item l'utente inserisce la sede in cui risiede l'ente. \end{enumerate} \end{itemize} \subsubsection{UC 10.4 - Modifica ente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può modificare un ente esistente nel sistema, inserendo le apposite informazioni richieste. - \item \textbf{Precondizione}: L'utente naviga nella gestione enti per l'amministrazione. - \item \textbf{Postcondizione}: L'utente ha modificato l'ente che aveva selezionato. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente può modificare un ente esistente nel sistema, inserendo le apposite informazioni richieste; + \item \textbf{precondizione:} l'utente naviga nella gestione enti per l'amministrazione; + \item \textbf{postcondizione:} l'utente ha modificato l'ente che aveva selezionato; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente seleziona un ente specifico da quelli disponibili; - \item{L'utente deve compilare dei campi per proseguire con la modifica di un ente esistente;} - \item L'utente modifica il nome ente (UC 10.4.1); - \item L'utente modifica la sede (luogo) in cui risiede l'ente (UC 10.4.2); - \item{L'ente viene creato dall'utente con le informazioni fornite.} + \item l'utente seleziona un ente specifico da quelli disponibili; + \item{l'utente deve compilare dei campi per proseguire con la modifica di un ente esistente;} + \item l'utente modifica il nome ente (UC 10.4.1); + \item l'utente modifica la sede (luogo) in cui risiede l'ente (UC 10.4.2); + \item{l'ente viene creato dall'utente con le informazioni fornite;} \end{enumerate} - \item \textbf{Estensioni}: + \item \textbf{estensioni:} \begin{itemize} - \item Errore: il nome ente inserito è già presente (UC 10.6) + \item Errore: il nome ente inserito è già presente (UC 10.6). \end{itemize} \end{itemize} \paragraph{UC 10.4.1 - Modifica nome ente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta modificando un ente presente nel sistema e deve compilare il campo per il nome dell'ente. - \item \textbf{Precondizione}: L'utente sta modificando un ente e deve compilare un campo specifico. - \item \textbf{Postcondizione}: L'utente ha compilato il campo specifico. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta modificando un ente presente nel sistema e deve compilare il campo per il nome dell'ente; + \item \textbf{precondizione:} l'utente sta modificando un ente e deve compilare un campo specifico; + \item \textbf{postcondizione:} l'utente ha compilato il campo specifico; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente modifica il nome ente. + \item l'utente modifica il nome ente. \end{enumerate} \end{itemize} \paragraph{UC 10.4.2 - Modifica della sede} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta modificando un ente presente nel sistema e deve compilare il campo per la sede dell'ente. - \item \textbf{Precondizione}: L'utente sta modificando un ente e deve compilare un campo specifico. - \item \textbf{Postcondizione}: L'utente ha compilato il campo specifico. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta modificando un ente presente nel sistema e deve compilare il campo per la sede dell'ente; + \item \textbf{precondizione:} l'utente sta modificando un ente e deve compilare un campo specifico; + \item \textbf{postcondizione:} l'utente ha compilato il campo specifico; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente modifica la sede in cui risiede l'ente. + \item l'utente modifica la sede in cui risiede l'ente. \end{enumerate} \end{itemize} \subsubsection{UC 10.5 - Disabilitazione ente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può disabilitare un ente dal sistema dal sistema. - \item \textbf{Precondizione}: L'utente visualizza la lista degli enti appartenenti al sistema. - \item \textbf{Postcondizione}: L'utente ha disabilitato l'ente selezionato. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente può disabilitare un ente dal sistema dal sistema; + \item \textbf{precondizione:} l'utente visualizza la lista degli enti appartenenti al sistema; + \item \textbf{postcondizione:} l'utente ha disabilitato l'ente selezionato; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona l'ente da disabilitare;} - \item{L'utente non visualizza più l'ente selezionato.} + \item{l'utente seleziona l'ente da disabilitare;} + \item{l'utente non visualizza più l'ente selezionato.} \end{enumerate} \end{itemize} \subsubsection{UC 10.6 - Errore: nome ente già presente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente, dopo aver compilando il campo per il nome di un ente, visualizza un errore che segnala che il nome ente è già censito nel sistema. - \item \textbf{Precondizione}: L'utente ha compilato il nome dell'ente. - \item \textbf{Postcondizione}: L'utente visualizza un errore specifico e non porta a termine l'azione intrapresa. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente, dopo aver compilando il campo per il nome di un ente, visualizza un errore che segnala che il nome ente è già censito nel sistema; + \item \textbf{precondizione:} l'utente ha compilato il nome dell'ente; + \item \textbf{postcondizione:} l'utente visualizza un errore specifico e non porta a termine l'azione intrapresa; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente conferma i campi compilati, tra cui quello per il nome ente;} - \item{Viene visualizzato un errore che segnala la presenza all'interno del sistema di un ente con lo stesso nome.} + \item{l'utente conferma i campi compilati, tra cui quello per il nome ente;} + \item{viene visualizzato un errore che segnala la presenza all'interno del sistema di un ente con lo stesso nome.} \end{enumerate} \end{itemize} \ No newline at end of file diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex index 2cfa23c..f7cd4e3 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex @@ -7,11 +7,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \end{figure} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può navigare nell'area gestionale di tutti gli utenti del sistema. Può visualizzare e gestire questi utenti. - \item \textbf{Precondizione}: L'utente risulta autenticato nella web app e naviga nella gestione utenti per amministratori. - \item \textbf{Postcondizione}: L'utente ha visualizzato o gestito gli utenti all'interno del sistema. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente può navigare nell'area gestionale di tutti gli utenti del sistema. Può visualizzare e gestire questi utenti. + \item \textbf{Precondizione:} L'utente risulta autenticato nella web app e naviga nella gestione utenti per amministratori. + \item \textbf{Postcondizione:} L'utente ha visualizzato o gestito gli utenti all'interno del sistema. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente visualizza o gestisce gli utenti censiti dal sistema} \end{enumerate} @@ -19,11 +19,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \subsubsection{UC 11.1 - Visualizzazione lista utenti completa} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può visualizzare una lista con nome, cognome, mail ed ente di appartenenza di tutti gli utenti censiti nel sistema. - \item \textbf{Precondizione}: L'utente naviga nella gestione utenti per amministratori. - \item \textbf{Postcondizione}: L'utente visualizza la lista degli utenti registrati al sistema. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente può visualizzare una lista con nome, cognome, mail ed ente di appartenenza di tutti gli utenti censiti nel sistema. + \item \textbf{Precondizione:} L'utente naviga nella gestione utenti per amministratori. + \item \textbf{Postcondizione:} L'utente visualizza la lista degli utenti registrati al sistema. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente visualizza la lista degli utenti registrati al sistema} \end{enumerate} @@ -31,11 +31,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \subsubsection{UC 11.2 - Creazione nuovo account} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può creare un nuovo account che viene inserito nel sistema e assegnato a un ente. - \item \textbf{Precondizione}: L'utente naviga nella gestione utenti per amministratori. - \item \textbf{Postcondizione}: L'utente ha creato un nuovo account. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente può creare un nuovo account che viene inserito nel sistema e assegnato a un ente. + \item \textbf{Precondizione:} L'utente naviga nella gestione utenti per amministratori. + \item \textbf{Postcondizione:} L'utente ha creato un nuovo account. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente deve compilare dei campi con i dati dell'utente da aggiungere;} \item{L'utente compila il campo per la email;} @@ -45,7 +45,7 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \item{L'utente seleziona la tipologia di utente;} \item{L'utente ha aggiunto un nuovo utente al sistema.} \end{enumerate} - \item \textbf{Estensioni}: + \item \textbf{Estensioni:} \begin{itemize} \item L'utente inserisce un email non valida (UC 21) \item L'utente inserisce un nome o cognome non validi (UC 23) @@ -54,11 +54,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \paragraph{UC 11.2.1 - Inserimento email} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo per la email. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo per la email. Il campo è obbligatorio. + \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. + \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente compila il campo per la email;} \end{enumerate} @@ -66,11 +66,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \paragraph{UC 11.2.2 - Inserimento nome} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo per il nome. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo per il nome. Il campo è obbligatorio. + \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. + \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente compila il campo per il nome;} \end{enumerate} @@ -78,11 +78,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \paragraph{UC 11.2.3 - Inserimento cognome} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo per il cognome. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo per il cognome. Il campo è obbligatorio. + \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. + \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente compila il campo per il cognome;} \end{enumerate} @@ -90,11 +90,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \paragraph{UC 11.2.4 - Selezione ente per il nuovo utente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo che richiede a quale ente assegnare l'utente, tra quelli disponibili. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo che richiede a quale ente assegnare l'utente, tra quelli disponibili. Il campo è obbligatorio. + \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. + \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente seleziona l'ente a cui assegnare il nuovo account tra quelli disponibili;} \end{enumerate} @@ -102,15 +102,15 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \paragraph{UC 11.2.5 - Selezione tipologia utente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo che richiede a quale tipologia assegnare l'utente. Il campo è obbligatorio. Le tipologie disponibili sono: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo che richiede a quale tipologia assegnare l'utente. Il campo è obbligatorio. Le tipologie disponibili sono: \begin{itemize} \item Membro; \item Moderatore ente. \end{itemize} - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. + \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente seleziona la tipologia di utente per il nuovo account;} \end{enumerate} @@ -118,11 +118,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \subsubsection{UC 11.3 - Visualizzazione profilo utente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente vuole visualizzare le informazioni del profilo di un utente presente nel sistema, quali: nome, cognome, username Telegram (se presente), opzione di autenticazione a due fattori (attiva o meno) ed ente di appartenenza. - \item \textbf{Precondizione}: L'utente naviga all'interno della gestione utenti. - \item \textbf{Postcondizione}: L'utente ha visualizzato le informazioni dell'utente selezionato. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente vuole visualizzare le informazioni del profilo di un utente presente nel sistema, quali: nome, cognome, username Telegram (se presente), opzione di autenticazione a due fattori (attiva o meno) ed ente di appartenenza. + \item \textbf{Precondizione:} L'utente naviga all'interno della gestione utenti. + \item \textbf{Postcondizione:} L'utente ha visualizzato le informazioni dell'utente selezionato. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente seleziona un utente dalla lista degli utenti;} \item{L'utente visualizza le informazioni dell'utente selezionato.} @@ -132,11 +132,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \subsubsection{UC 11.4 - Modifica profilo utente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente modifica il profilo dell'utente selezionato dalla lista degli utenti. - \item \textbf{Precondizione}: L'utente naviga all'interno della gestione utenti. - \item \textbf{Postcondizione}: L'utente ha modificato l'utente selezionato. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente modifica il profilo dell'utente selezionato dalla lista degli utenti. + \item \textbf{Precondizione:} L'utente naviga all'interno della gestione utenti. + \item \textbf{Postcondizione:} L'utente ha modificato l'utente selezionato. + \item \textbf{Scenario Principale:} \begin{enumerate} \item L'utente seleziona un account utente che vuole modificare; \item L'utente deve compilare alcuni campi per proseguire nella modifica dell'utente selezionato; @@ -149,7 +149,7 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \item{L'utente seleziona la preferenza per l'autenticazione a due fattori di quell'account (UC 11.4.7);} \item{L'utente ha compilato tutti i campi e conferma.} \end{enumerate} - \item \textbf{Estensioni}: + \item \textbf{Estensioni:} \begin{itemize} \item L'utente inserisce una email non valida (UC 21); \item L'utente inserisce un nome o cognome non validi (UC 23). @@ -158,11 +158,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \paragraph{UC 11.4.1 - Modifica email} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per la email. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per la email. Il campo è obbligatorio. + \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per la modifica di un utente. + \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente compila il campo per la email.} \end{enumerate} @@ -170,11 +170,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \paragraph{UC 11.4.2 - Modifica nome} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per il nome. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per il nome. Il campo è obbligatorio. + \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per la modifica di un utente. + \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente compila il campo per il nome.} \end{enumerate} @@ -182,11 +182,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \paragraph{UC 11.4.3 - Modifica cognome} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per il cognome. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per il cognome. Il campo è obbligatorio. + \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per la modifica di un utente. + \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente compila il campo per il cognome.} \end{enumerate} @@ -194,11 +194,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \paragraph{UC 11.4.4 - Modifica username Telegram} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per lo username \glock{Telegram}. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per lo username \glock{Telegram}. Il campo è obbligatorio. + \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per la modifica di un utente. + \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente compila il campo per lo username \glock{Telegram}.} \end{enumerate} @@ -206,11 +206,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \paragraph{UC 11.4.5 - Modifica ente di appartenenza} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per assegnare quell'utente a uno degli enti censiti da sistema. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per assegnare quell'utente a uno degli enti censiti da sistema. Il campo è obbligatorio. + \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per la modifica di un utente. + \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente seleziona l'ente a cui assegnare il nuovo account tra quelli disponibili.} \end{enumerate} @@ -218,15 +218,15 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \paragraph{UC 11.4.6 - Modifica tipologia di utente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per assegnare la tipologia di account per un dato utente. Il campo è obbligatorio. Le tipologie disponibili sono: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per assegnare la tipologia di account per un dato utente. Il campo è obbligatorio. Le tipologie disponibili sono: \begin{itemize} \item Membro; \item Moderatore ente. \end{itemize} - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per la modifica di un utente. + \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente seleziona la tipologia di account da assegnare per un utente in base a quelli disponibili.} \end{enumerate} @@ -234,15 +234,15 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \paragraph{UC 11.4.7 - Modifica preferenza per l'autenticazione a due fattori} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per la preferenza di attivazione dell'autenticazione a due fattori con \glock{Telegram}. Il campo è obbligatorio. Le preferenze disponibili sono: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per la preferenza di attivazione dell'autenticazione a due fattori con \glock{Telegram}. Il campo è obbligatorio. Le preferenze disponibili sono: \begin{itemize} \item Abilitata; \item Disabilitata. \end{itemize} - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per la modifica di un utente. + \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente seleziona la preferenza per l'autenticazione a due fattori.} \end{enumerate} @@ -252,11 +252,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \subsubsection{UC 11.5 - Reset password account} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente vuole resettare la password di un account utente censito nel sistema. - \item \textbf{Precondizione}: L'utente naviga all'interno della gestione utenti per l'amministrazione. - \item \textbf{Postcondizione}: L'utente ha resettato la password dell'account selezionato. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente vuole resettare la password di un account utente censito nel sistema. + \item \textbf{Precondizione:} L'utente naviga all'interno della gestione utenti per l'amministrazione. + \item \textbf{Postcondizione:} L'utente ha resettato la password dell'account selezionato. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente seleziona un utente diverso tra quelli disponibili cui vuole resettare la password;} \item{L'utente ha resettato la password all'utente di sistema.} @@ -266,11 +266,11 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \subsubsection{UC 11.6 - Disattivazione utente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente vuole disattivare l'account di un utente attualmente attivo. - \item \textbf{Precondizione}: L'utente naviga all'interno della gestione utenti per l'amministrazione. - \item \textbf{Postcondizione}: L'utente ha disattivato l'account dell'utente selezionato. - \item \textbf{Scenario Principale}: + \item \textbf{Attori Primari:} Amministratore. + \item \textbf{Descrizione:} L'utente vuole disattivare l'account di un utente attualmente attivo. + \item \textbf{Precondizione:} L'utente naviga all'interno della gestione utenti per l'amministrazione. + \item \textbf{Postcondizione:} L'utente ha disattivato l'account dell'utente selezionato. + \item \textbf{Scenario Principale:} \begin{enumerate} \item{L'utente seleziona un utente tra quelli disponibili da disattivare;} \item{L'utente ha disattivato l'utente dal sistema.} diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc12.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc12.tex index de9b289..6833113 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc12.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc12.tex @@ -7,37 +7,37 @@ \end{figure} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente navigando nella gestione degli \glock{alert} impostati dagli enti all'interno del sistema. - \item \textbf{Precondizione}: L'utente è autenticato nella web app. - \item \textbf{Postcondizione}: L'utente ha visualizzato o gestito gli \glock{alert} all'interno del sistema. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente navigando nella gestione degli \glock{alert} impostati dagli enti all'interno del sistema; + \item \textbf{precondizione:} l'utente è autenticato nella web app; + \item \textbf{postcondizione:} l'utente ha visualizzato o gestito gli \glock{alert} all'interno del sistema; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente, navigando nella gestione \glock{alert}, ha visualizzato o gestito gli \glock{alert} impostati dagli enti all'interno del sistema} + \item{l'utente, navigando nella gestione \glock{alert}, ha visualizzato o gestito gli \glock{alert} impostati dagli enti all'interno del sistema.} \end{enumerate} \end{itemize} \subsubsection{UC 12.1 - Visualizzazione lista completa degli alert attivi} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente vuole visualizzare la lista degli \glock{alert} per tutti gli enti attivi nel sistema. - \item \textbf{Precondizione}: L'utente sta navigando all'interno della gestione \glock{alert}. - \item \textbf{Postcondizione}: L'utente sta visualizzando gli \glock{alert} presenti nel sistema. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente vuole visualizzare la lista degli \glock{alert} per tutti gli enti attivi nel sistema; + \item \textbf{precondizione:} l'utente sta navigando all'interno della gestione \glock{alert}; + \item \textbf{postcondizione:} l'utente sta visualizzando gli \glock{alert} presenti nel sistema; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente visualizza la lista degli \glock{alert} attivi nel sistema.} + \item{l'utente visualizza la lista degli \glock{alert} attivi nel sistema.} \end{enumerate} \end{itemize} \subsubsection{UC 12.2 - Rimozione singolo alert} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente vuole rimuovere un qualsiasi \glock{alert} dalla lista degli \glock{alert} attivi. - \item \textbf{Precondizione}: L'utente sta navigando all'interno della gestione \glock{alert} e visualizza almeno un \glock{alert} - \item \textbf{Postcondizione}: L'utente ha rimosso dal sistema l'\glock{alert} selezionato. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente vuole rimuovere un qualsiasi \glock{alert} dalla lista degli \glock{alert} attivi; + \item \textbf{precondizione:} l'utente sta navigando all'interno della gestione \glock{alert} e visualizza almeno un \glock{alert}; + \item \textbf{postcondizione:} l'utente ha rimosso dal sistema l'\glock{alert} selezionato; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona un \glock{alert} dalla lista degli \glock{alert} e lo rimuove;} - \item{L'utente non visualizza più l'\glock{alert} precedentemente selezionato.} + \item{l'utente seleziona un \glock{alert} dalla lista degli \glock{alert} e lo rimuove;} + \item{l'utente non visualizza più l'\glock{alert} precedentemente selezionato.} \end{enumerate} \end{itemize} \ No newline at end of file diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc14.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc14.tex index d6144a8..0928d1f 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc14.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc14.tex @@ -7,70 +7,70 @@ \subsection{UC14 - Telegram - Autenticazione} \end{figure} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente tenta di autenticarsi con il \glock{\glock{bot}} \glock{Telegram}, per farlo entra all'interno dell'applicazione e inizia la chat con il \glock{bot}. Attraverso \glock{Telegram}, viene segnalato al \glock{bot} il nome utente e il \glock{bot} verifica se questo è censito all'interno del sistema. Se viene riconosciuto, viene registrata l'apertura e l'autenticazione del canale di comunicazione tra il \glock{bot} e l'utente, diventando quest'ultimo autenticato. - \item \textbf{Precondizione}: L'utente è nell'applicazione di \glock{Telegram} e non ha una chat autenticata con il \glock{bot}. - \item \textbf{Postcondizione}: L'utente effettua l'autenticazione e il canale di comunicazione tra utente e \glock{bot} viene salvato nel sistema. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente tenta di autenticarsi con il \glock{bot} \glock{Telegram}, per farlo entra all'interno dell'applicazione e inizia la chat con il \glock{bot}. Attraverso \glock{Telegram}, viene segnalato al \glock{bot} il nome utente e il \glock{bot} verifica se questo è censito all'interno del sistema. Se viene riconosciuto, viene registrata l'apertura e l'autenticazione del canale di comunicazione tra il \glock{bot} e l'utente, diventando quest'ultimo autenticato; + \item \textbf{precondizione:} l'utente è nell'applicazione di \glock{Telegram} e non ha una chat autenticata con il \glock{bot}; + \item \textbf{postcondizione:} l'utente effettua l'autenticazione e il canale di comunicazione tra utente e \glock{bot} viene salvato nel sistema; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente seleziona nell'applicazione di \glock{Telegram} il \glock{bot} di sistema dal pannello di ricerca - \item L'utente tenta di aprire una conversazione con il \glock{bot} - \item L'utente viene autenticato e la chat viene salvata nel sistema + \item l'utente seleziona nell'applicazione di \glock{Telegram} il \glock{bot} di sistema dal pannello di ricerca; + \item l'utente tenta di aprire una conversazione con il \glock{bot}; + \item l'utente viene autenticato e la chat viene salvata nel sistema. \end{enumerate} \end{itemize} \subsubsection{UC 14.1 - Richiesta di riconoscimento} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Descrizione}: L'utente invia una richiesta al \glock{bot} di volersi autenticare per poter aprire il canale di comunicazione. - \item \textbf{Precondizione}: L'utente è nell'applicazione di \glock{Telegram} e non ha una chat autenticata con il \glock{bot}. - \item \textbf{Postcondizione}: L'utente invia il comando per richiedere l'autenticazione. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{descrizione:} l'utente invia una richiesta al \glock{bot} di volersi autenticare per poter aprire il canale di comunicazione; + \item \textbf{precondizione:} l'utente è nell'applicazione di \glock{Telegram} e non ha una chat autenticata con il \glock{bot}; + \item \textbf{postcondizione:} l'utente invia il comando per richiedere l'autenticazione; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente seleziona nell'applicazione di \glock{Telegram} il \glock{bot} del sistema. - \item L'utente tenta di aprire una conversazione con il \glock{bot}. - \item Per attivare la conversazione con il \glock{bot} ed autenticarsi, l'utente invia il comando predefinito. + \item l'utente seleziona nell'applicazione di \glock{Telegram} il \glock{bot} del sistema; + \item l'utente tenta di aprire una conversazione con il \glock{bot}; + \item per attivare la conversazione con il \glock{bot} ed autenticarsi, l'utente invia il comando predefinito; \end{enumerate} - \item \textbf{Inclusioni}: + \item \textbf{inclusioni:} \begin{itemize} - \item Controllo credenziali (UC 14.2) + \item Controllo credenziali (UC 14.2). \end{itemize} \end{itemize} \subsubsection{UC 14.2 - Controllo credenziali} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: Si deve verificare se il nome utente è stato censito da parte del sistema, così da abilitare la chat di comunicazione ed autenticare l'utente. - \item \textbf{Precondizione}: L'utente, tramite \glock{Telegram}, ha inviato al \glock{bot} una richiesta di avvio conversazione con il comando predefinito. - \item \textbf{Postcondizione}: L'utente effettua il riconoscimento con il sistema e viene autenticato. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} si deve verificare se il nome utente è stato censito da parte del sistema, così da abilitare la chat di comunicazione ed autenticare l'utente; + \item \textbf{precondizione:} l'utente, tramite \glock{Telegram}, ha inviato al \glock{bot} una richiesta di avvio conversazione con il comando predefinito; + \item \textbf{postcondizione:} l'utente effettua il riconoscimento con il sistema e viene autenticato; + \item \textbf{scenario principale:} \begin{enumerate} - \item Il \glock{bot} \glock{Telegram} riceve in input il comando che viene inoltrato al sistema, insieme alle informazioni relative alla chat e all'autore del messaggio. - \item Viene mostrato un messaggio di benvenuto dal \glock{bot}, attraverso \glock{Telegram}, che conferma le credenziali dell'utente. - \item L'utente viene autenticato e la chat viene salvata nel sistema. + \item il \glock{bot} \glock{Telegram} riceve in input il comando che viene inoltrato al sistema, insieme alle informazioni relative alla chat e all'autore del messaggio; + \item viene mostrato un messaggio di benvenuto dal \glock{bot}, attraverso \glock{Telegram}, che conferma le credenziali dell'utente; + \item l'utente viene autenticato e la chat viene salvata nel sistema; \end{enumerate} - \item \textbf{Estensioni}: + \item \textbf{estensioni:} \begin{itemize} - \item Errore: nome utente \glock{Telegram} non riconosciuto (UC 14.3) - \item Nessuna risposta dopo una interazione con \glock{Telegram} (UC 20) + \item Errore: nome utente \glock{Telegram} non riconosciuto (UC 14.3); + \item Nessuna risposta dopo una interazione con \glock{Telegram} (UC 20). \end{itemize} \end{itemize} \subsubsection{UC 14.3 - Errore: nome utente Telegram non riconosciuto} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Descrizione}: L'autenticazione della chat tra il \glock{bot} e l'utente non va a buon fine dal momento che il nome utente associato all'account di \glock{Telegram} non è censito nel sistema. - \item \textbf{Precondizione}: L'utente, tramite \glock{Telegram}, sta tentando di autenticarsi con l'invio del comando predefinito. - \item \textbf{Postcondizione}: L'utente non viene autenticato e viene mostrato un messaggio di errore. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{descrizione:} l'autenticazione della chat tra il \glock{bot} e l'utente non va a buon fine dal momento che il nome utente associato all'account di \glock{Telegram} non è censito nel sistema; + \item \textbf{precondizione:} l'utente, tramite \glock{Telegram}, sta tentando di autenticarsi con l'invio del comando predefinito; + \item \textbf{postcondizione:} l'utente non viene autenticato e viene mostrato un messaggio di errore; + \item \textbf{scenario principale:} \begin{enumerate} - \item Il \glock{bot} \glock{Telegram} riceve in input il comando che viene inoltrato al sistema, insieme alle informazioni relative alla chat e all'autore del messaggio. - \item Viene mostrato un messaggio di errore che segnala che il nome utente associato all'utente \glock{Telegram} non è censito nel sistema. - \item L'utente non viene autenticato. + \item il \glock{bot} \glock{Telegram} riceve in input il comando che viene inoltrato al sistema, insieme alle informazioni relative alla chat e all'autore del messaggio; + \item viene mostrato un messaggio di errore che segnala che il nome utente associato all'utente \glock{Telegram} non è censito nel sistema; + \item l'utente non viene autenticato. \end{enumerate} \end{itemize} \ No newline at end of file diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc15.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc15.tex index c2ff4a6..1b7c5e8 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc15.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc15.tex @@ -1,5 +1,5 @@ -\subsection{UC15 - Telegram - Notifiche Push} - +\subsection{UC15 - Telegram - Notifiche push} + \begin{figure}[H] \centering \includegraphics[scale=0.60]{res/images/uc15} @@ -7,44 +7,44 @@ \subsection{UC15 - Telegram - Notifiche Push} \end{figure} \begin{itemize} - \item \textbf{Attori Primari}: Membro, Moderatore ente, Amministratore. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: Un utente, con l'applicazione di \glock{Telegram} attiva o in background, riceve una notifica push in base a un evento nel sistema. - \item \textbf{Precondizione}: L'utente ha l'applicazione di \glock{Telegram} attiva o in background e ha una chat autenticata con il \glock{bot}. - \item \textbf{Postcondizione}: L'utente riceve una notifica da parte di \glock{Telegram}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Membro, Moderatore ente, Amministratore; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} un utente, con l'applicazione di \glock{Telegram} attiva o in background, riceve una notifica push in base a un evento nel sistema; + \item \textbf{precondizione:} l'utente ha l'applicazione di \glock{Telegram} attiva o in background e ha una chat autenticata con il \glock{bot}; + \item \textbf{postcondizione:} l'utente riceve una notifica da parte di \glock{Telegram}; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente ha l'applicazione di \glock{Telegram} attiva o in background. - \item L'utente riceve una notifica push come messaggio di testo nella chat autorizzata con il \glock{bot}. + \item l'utente ha l'applicazione di \glock{Telegram} attiva o in background; + \item l'utente riceve una notifica push come messaggio di testo nella chat autorizzata con il \glock{bot}. \end{enumerate} \end{itemize} \subsubsection{UC 15.1 - Ricezione notifica alert} \begin{itemize} - \item \textbf{Attori Primari}: Membro, Moderatore ente, Amministratore. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente riceve una notifica sulla chat con il \glock{bot} di \glock{Telegram} relativa ad un \glock{\glock{alert}} in cui un sensore ha superato una soglia prevista. - \item \textbf{Precondizione}: L'utente ha l'applicazione di \glock{Telegram} attiva o in background e ha una chat autenticata con il \glock{bot}. - \item \textbf{Postcondizione}: L'utente riceve una notifica come messaggio di testo in chat con le informazioni relative all'\glock{alert}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Membro, Moderatore ente, Amministratore; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente riceve una notifica sulla chat con il \glock{bot} di \glock{Telegram} relativa ad un \glock{alert} in cui un sensore ha superato una soglia prevista; + \item \textbf{precondizione:} l'utente ha l'applicazione di \glock{Telegram} attiva o in background e ha una chat autenticata con il \glock{bot}; + \item \textbf{postcondizione:} l'utente riceve una notifica come messaggio di testo in chat con le informazioni relative all'\glock{alert}; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente ha l'applicazione di \glock{Telegram} attiva o in background. - \item L'utente riceve una notifica che riguarda un \glock{alert} nella chat con il \glock{bot}. + \item l'utente ha l'applicazione di \glock{Telegram} attiva o in background; + \item l'utente riceve una notifica che riguarda un \glock{alert} nella chat con il \glock{bot}. \end{enumerate} \end{itemize} \subsubsection{UC 15.2 - Ricezione codice di autenticazione a due fattori} \begin{itemize} - \item \textbf{Attori Primari}: Membro, Moderatore ente, Amministratore. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente riceve una notifica sulla chat con il \glock{bot} di \glock{Telegram} relativa al codice per l'autenticazione a due fattori, mentre sta svolgendo l'autenticazione nella \glock{web application}. - \item \textbf{Precondizione}: L'utente ha l'applicazione di \glock{Telegram} attiva o in background e ha una chat autenticata con il \glock{bot}. - \item \textbf{Postcondizione}: L'utente riceve una notifica come messaggio di testo in chat con le informazioni relative al codice per l'autenticazione a due fattori. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Membro, Moderatore ente, Amministratore; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente riceve una notifica sulla chat con il \glock{bot} di \glock{Telegram} relativa al codice per l'autenticazione a due fattori, mentre sta svolgendo l'autenticazione nella \glock{web application}; + \item \textbf{precondizione:} l'utente ha l'applicazione di \glock{Telegram} attiva o in background e ha una chat autenticata con il \glock{bot}; + \item \textbf{postcondizione:} l'utente riceve una notifica come messaggio di testo in chat con le informazioni relative al codice per l'autenticazione a due fattori; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente ha l'applicazione di \glock{Telegram} attiva o in background. - \item L'utente riceve una notifica che riguarda il codice di autenticazione a due fattori da usare come credenziale per accedere alla \glock{web application}. + \item l'utente ha l'applicazione di \glock{Telegram} attiva o in background; + \item l'utente riceve una notifica che riguarda il codice di autenticazione a due fattori da usare come credenziale per accedere alla \glock{web application}. \end{enumerate} \end{itemize} \ No newline at end of file diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex index e39d709..5fded59 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex @@ -3,36 +3,36 @@ \subsection{UC16 - Telegram - Interazioni} \begin{figure}[H] \centering \includegraphics[scale=0.60]{res/images/uc16} - \caption{Diagramma che descrive il processo di interazione con il Bot tramite Telegram.} + \caption{Diagramma che descrive il processo di interazione con il bot tramite Telegram.} \end{figure} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato, Moderatore Ente. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente mentre è nell'applicazione di \glock{Telegram} può eseguire delle interazioni per gestire dispositivi remoti nel sistema o ricevere informazioni particolari. - \item \textbf{Precondizione}: L'utente sta usando l'applicazione di \glock{Telegram} e ha eseguito l'autenticazione. - \item \textbf{Postcondizione}: L'utente riceve un messaggio di risposta dal \glock{Bot} di \glock{Telegram}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato, Moderatore ente; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente mentre è nell'applicazione di \glock{Telegram} può eseguire delle interazioni per gestire dispositivi remoti nel sistema o ricevere informazioni particolari; + \item \textbf{precondizione:} l'utente sta usando l'applicazione di \glock{Telegram} e ha eseguito l'autenticazione; + \item \textbf{postcondizione:} l'utente riceve un messaggio di risposta dal \glock{bot} di \glock{Telegram}; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente esegue una interazione con il \glock{Bot} di \glock{Telegram}. + \item l'utente esegue una interazione con il \glock{bot} di \glock{Telegram}. \end{enumerate} \end{itemize} \subsubsection{UC 16.1 - Interazione con comando} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato, Moderatore Ente. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente esegue una interazione con \glock{Telegram} e riceve una risposta in base al comando che ha inviato. - \item \textbf{Precondizione}: L'utente sta usando l'applicazione di \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente riceve un messaggio di risposta dopo aver eseguito una interazione con \glock{Telegram}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato, Moderatore ente; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente esegue una interazione con \glock{Telegram} e riceve una risposta in base al comando che ha inviato; + \item \textbf{precondizione:} l'utente sta usando l'applicazione di \glock{Telegram}; + \item \textbf{postcondizione:} l'utente riceve un messaggio di risposta dopo aver eseguito una interazione con \glock{Telegram}; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente sta usando l'applicazione di \glock{Telegram} e ha una chat aperta e autenticata con il bot. - \item L'utente esegue una interazione con \glock{Telegram}. - \item L'utente riceve dei messaggi di risposta da parte del \glock{Bot} di \glock{Telegram}. + \item l'utente sta usando l'applicazione di \glock{Telegram} e ha una chat aperta e autenticata con il bot; + \item l'utente esegue una interazione con \glock{Telegram}; + \item l'utente riceve dei messaggi di risposta da parte del \glock{bot} di \glock{Telegram}; \end{enumerate} - \item \textbf{Estensioni}: + \item \textbf{estensioni:} \begin{itemize} \item Nessuna risposta dopo una interazione con Telegram (UC 20). \end{itemize} @@ -40,34 +40,32 @@ \subsection{UC16 - Telegram - Interazioni} \subsubsection{UC 16.2 - Comando di inizio} - \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente esegue una interazione con il comando di inizio per recuperare le informazioni sull'autenticazione. - \item \textbf{Precondizione}: L'utente sta usando l'applicazione di \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione con \glock{Telegram}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente esegue una interazione con il comando di inizio per recuperare le informazioni sull'autenticazione; + \item \textbf{precondizione:} l'utente sta usando l'applicazione di \glock{Telegram}; + \item \textbf{postcondizione:} l'utente ha eseguito una interazione con \glock{Telegram}; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente sta usando l'applicazione di \glock{Telegram}. - \item L'utente invia il comando. + \item l'utente sta usando l'applicazione di \glock{Telegram}; + \item l'utente invia il comando. \end{enumerate} \end{itemize} - \subsubsection{UC 16.3 - Comando di informazioni} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente esegue una interazione con il comando di \textit{informazioni} per recuperare la versione del bot, le info del sistema e l'account con cui si è autenticati. - \item \textbf{Precondizione}: L'utente ha iniziato a interagire con \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione con \glock{Telegram}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente esegue una interazione con il comando di \textit{informazioni} per recuperare la versione del bot, le info del sistema e l'account con cui si è autenticati; + \item \textbf{precondizione:} l'utente ha iniziato a interagire con \glock{Telegram}; + \item \textbf{postcondizione:} l'utente ha eseguito una interazione con \glock{Telegram}; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente sta usando l'applicazione di \glock{Telegram}. - \item L'utente invia il comando. + \item l'utente sta usando l'applicazione di \glock{Telegram}; + \item l'utente invia il comando. \end{enumerate} \end{itemize} @@ -77,15 +75,15 @@ \subsection{UC16 - Telegram - Interazioni} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente esegue una interazione con il comando di \textit{aiuto} per recuperare la lista dei comandi disponibili. - \item \textbf{Precondizione}: L'utente ha iniziato a interagire con \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione con \glock{Telegram}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente esegue una interazione con il comando di \textit{aiuto} per recuperare la lista dei comandi disponibili; + \item \textbf{precondizione:} l'utente ha iniziato a interagire con \glock{Telegram}; + \item \textbf{postcondizione:} l'utente ha eseguito una interazione con \glock{Telegram}; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente sta usando l'applicazione di \glock{Telegram}. - \item L'utente invia il comando. + \item l'utente sta usando l'applicazione di \glock{Telegram}; + \item l'utente invia il comando. \end{enumerate} \end{itemize} @@ -93,15 +91,15 @@ \subsection{UC16 - Telegram - Interazioni} \subsubsection{UC 16.5 - Comando di interazione con i dispositivi} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente esegue una interazione per inviare un input testuale ad un dispositivo attivo. - \item \textbf{Precondizione}: L'utente ha iniziato a interagire con \glock{Telegram} e l'utente è autenticato come Moderatore ente. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione con \glock{Telegram}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente esegue una interazione per inviare un input testuale ad un dispositivo attivo; + \item \textbf{precondizione:} l'utente ha iniziato a interagire con \glock{Telegram} e l'utente è autenticato come Moderatore ente. + \item \textbf{postcondizione:} l'utente ha eseguito una interazione con \glock{Telegram}; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente sta usando l'applicazione di \glock{Telegram}.; - \item L'utente invia il comando. + \item l'utente sta usando l'applicazione di \glock{Telegram}; + \item l'utente invia il comando. \end{enumerate} \end{itemize} @@ -110,56 +108,56 @@ \subsection{UC16 - Telegram - Interazioni} \subsubsection{UC 16.6 - Visualizzazione risposta comando } \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando. - \item \textbf{Precondizione}: L'utente ha iniziato a interagire con \glock{Telegram} e l'utente è autenticato come Moderatore ente. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando; + \item \textbf{precondizione:} l'utente ha iniziato a interagire con \glock{Telegram} e l'utente è autenticato come Moderatore ente; + \item \textbf{postcondizione:} l'utente ha eseguito una interazione da \glock{Telegram}; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente riceve un messaggio dal \glock{Bot} di \glock{Telegram}. + \item l'utente riceve un messaggio dal \glock{bot} di \glock{Telegram}. \end{enumerate} \end{itemize} \subsubsection{UC 16.7 - Visualizzazione risposta comando di inizio } \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, illustrando le informazioni dell'account autenticato. - \item \textbf{Precondizione}: L'utente sta usando l'applicazione di \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, illustrando le informazioni dell'account autenticato; + \item \textbf{precondizione:} l'utente sta usando l'applicazione di \glock{Telegram}; + \item \textbf{postcondizione:} l'utente ha eseguito una interazione da \glock{Telegram}; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente riceve un messaggio al \glock{Bot} di \glock{Telegram}. + \item l'utente riceve un messaggio al \glock{bot} di \glock{Telegram}. \end{enumerate} \end{itemize} \subsubsection{UC 16.8 - Visualizzazione risposta comando informazioni} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, illustrante la versione del bot, le info del sistema e l'account con cui si è autenticati. - \item \textbf{Precondizione}: L'utente ha iniziato a interagire con l'applicazione di \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, illustrante la versione del bot, le info del sistema e l'account con cui si è autenticati; + \item \textbf{precondizione:} l'utente ha iniziato a interagire con l'applicazione di \glock{Telegram}; + \item \textbf{postcondizione:} l'utente ha eseguito una interazione da \glock{Telegram}; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente riceve un messaggio dal \glock{Bot} di \glock{Telegram}. + \item l'utente riceve un messaggio dal \glock{bot} di \glock{Telegram}. \end{enumerate} \end{itemize} \subsubsection{UC 16.9 - Visualizzazione risposta comando d'aiuto } \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, illustrante la lista dei comandi disponibili con una relativa descrizione. - \item \textbf{Precondizione}: L'utente ha iniziato a interagire con l'applicazione di \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, illustrante la lista dei comandi disponibili con una relativa descrizione; + \item \textbf{precondizione:} l'utente ha iniziato a interagire con l'applicazione di \glock{Telegram}; + \item \textbf{postcondizione:} l'utente ha eseguito una interazione da \glock{Telegram}; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente riceve un messaggio dal \glock{Bot} di \glock{Telegram}. + \item l'utente riceve un messaggio dal \glock{bot} di \glock{Telegram}. \end{enumerate} \end{itemize} @@ -167,21 +165,13 @@ \subsection{UC16 - Telegram - Interazioni} \subsubsection{UC 16.10 - Visualizzazione risposta interazione dispositivi} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Attori Secondari}: \glock{Telegram}. - \item \textbf{Descrizione}: L'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, che segnala l'invio corretto dell'input al dispositivo. - \item \textbf{Precondizione}: L'utente ha iniziato a interagire con l'applicazione di \glock{Telegram} e ha inviato un comando. - \item \textbf{Postcondizione}: L'utente ha eseguito una interazione da \glock{Telegram}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente riceve un messaggio di ritorno su \glock{Telegram}, dopo aver inviato il comando, che segnala l'invio corretto dell'input al dispositivo; + \item \textbf{precondizione:} l'utente ha iniziato a interagire con l'applicazione di \glock{Telegram} e ha inviato un comando; + \item \textbf{postcondizione:} l'utente ha eseguito una interazione da \glock{Telegram}; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente riceve un messaggio dal \glock{Bot} di \glock{Telegram}. + \item l'utente riceve un messaggio dal \glock{bot} di \glock{Telegram}. \end{enumerate} \end{itemize} - - - - - - - - diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc4.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc4.tex index ba48bdd..c10bb94 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc4.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc4.tex @@ -1,4 +1,4 @@ - \subsection{UC 4 - Impostazioni Account} + \subsection{UC 4 - Impostazioni account} \begin{figure}[H] \centering @@ -7,92 +7,92 @@ \end{figure} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente ha la possibilità di gestire le proprie impostazioni account, tra cui la modifica della password, le preferenze di notifica e le informazioni a lui associate. - \item \textbf{Precondizione}: L'utente risulta autenticato all'interno della web app. - \item \textbf{Postcondizione}: L'utente ha aggiornato le proprie impostazioni. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente ha la possibilità di gestire le proprie impostazioni account, tra cui la modifica della password, le preferenze di notifica e le informazioni a lui associate; + \item \textbf{precondizione:} l'utente risulta autenticato all'interno della web app; + \item \textbf{postcondizione:} l'utente ha aggiornato le proprie impostazioni; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente naviga all'interno delle impostazioni del proprio account} - \item{L'utente modifica le proprie impostazioni} - \item{L'utente ha aggiornato le proprie impostazioni} + \item{l'utente naviga all'interno delle impostazioni del proprio account;} + \item{l'utente modifica le proprie impostazioni;} + \item{l'utente ha aggiornato le proprie impostazioni.} \end{enumerate} \end{itemize} \subsubsection{UC 4.1 - Modifica password account} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente può cambiare la password associata al proprio account. - \item \textbf{Precondizione}: L'utente naviga all'interno delle sue impostazioni. - \item \textbf{Postcondizione}: L'utente ha cambiato la propria password. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente può cambiare la password associata al proprio account; + \item \textbf{precondizione:} l'utente naviga all'interno delle sue impostazioni; + \item \textbf{postcondizione:} l'utente ha cambiato la propria password; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente deve inserire dei campi obbligatori per proseguire; - \item L'utente inserisce il campo per la password attuale (UC 4.1.1); - \item L'utente inserisce il campo per la nuova password (UC 4.1.2); - \item L'utente inserisce il campo per la conferma della nuova password (UC 4.1.3); - \item L'utente ha cambiato la propria password. + \item l'utente deve inserire dei campi obbligatori per proseguire; + \item l'utente inserisce il campo per la password attuale (UC 4.1.1); + \item l'utente inserisce il campo per la nuova password (UC 4.1.2); + \item l'utente inserisce il campo per la conferma della nuova password (UC 4.1.3); + \item l'utente ha cambiato la propria password; \end{enumerate} - \item \textbf{Estensioni}: + \item \textbf{estensioni:} \begin{itemize} - \item Errore modifica password: password attuale errata (UC 4.4) - \item Errore modifica password: nuova password non valida (UC 4.5) - \item Errore modifica password: la password da confermare non coincide con la nuova password (UC 4.6) + \item Errore modifica password: password attuale errata (UC 4.4); + \item Errore modifica password: nuova password non valida (UC 4.5); + \item Errore modifica password: la password da confermare non coincide con la nuova password (UC 4.6). \end{itemize} \end{itemize} \paragraph{UC 4.1.1 - Inserimento password attuale} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: Per proseguire nella modifica password, l'utente deve inserire la sua password attuale associata all'account. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente è all'interno delle sue impostazioni account. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} per proseguire nella modifica password, l'utente deve inserire la sua password attuale associata all'account. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente è all'interno delle sue impostazioni account; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente compila il campo per la password attuale. + \item l'utente compila il campo per la password attuale. \end{enumerate} \end{itemize} \paragraph{UC 4.1.2 - Inserimento nuova password} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: Per proseguire nella modifica password, l'utente deve scegliere e inserire una nuova password. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente è all'interno delle sue impostazioni account. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} per proseguire nella modifica password, l'utente deve scegliere e inserire una nuova password. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente è all'interno delle sue impostazioni account; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente compila il campo per la nuova password. + \item l'utente compila il campo per la nuova password. \end{enumerate} \end{itemize} \paragraph{UC 4.1.3 - Inserimento conferma nuova password} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: Per proseguire nella modifica password, l'utente deve ripetere la nuova password scelta. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente è all'interno delle sue impostazioni account. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} per proseguire nella modifica password, l'utente deve ripetere la nuova password scelta. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente è all'interno delle sue impostazioni account; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente compila il campo per la conferma della nuova password. + \item l'utente compila il campo per la conferma della nuova password. \end{enumerate} \end{itemize} \subsubsection{UC 4.2 - Modifica informazioni account} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente può modificare le proprie informazioni associate all'account. - \item \textbf{Precondizione}: L'utente naviga all'interno delle sue impostazioni. - \item \textbf{Postcondizione}: L'utente ha cambiato le proprie informazioni account. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente può modificare le proprie informazioni associate all'account; + \item \textbf{precondizione:} l'utente naviga all'interno delle sue impostazioni; + \item \textbf{postcondizione:} l'utente ha cambiato le proprie informazioni account; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente deve inserire dei campi per proseguire; - \item L'utente modifica il campo relativo alla propria email (UC 4.2.1); - \item L'utente modifica il campo relativo allo username di \glock{Telegram} (UC 4.2.2); - \item L'utente seleziona la preferenza per l'abilitazione dell'autenticazione a due fattori (UC 4.2.3); - \item L'utente ha cambiato le proprie informazioni associate al suo account. + \item l'utente deve inserire dei campi per proseguire; + \item l'utente modifica il campo relativo alla propria email (UC 4.2.1); + \item l'utente modifica il campo relativo allo username di \glock{Telegram} (UC 4.2.2); + \item l'utente seleziona la preferenza per l'abilitazione dell'autenticazione a due fattori (UC 4.2.3); + \item l'utente ha cambiato le proprie informazioni associate al suo account; \end{enumerate} - \item \textbf{Estensioni}: + \item \textbf{estensioni:} \begin{itemize} \item L'utente inserisce un'email non valida (UC 21); \item L'utente inserisce uno username \glock{Telegram} non valido (UC 22). @@ -101,81 +101,81 @@ \paragraph{UC 4.2.1 - Modifica della propria email} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: Per proseguire nella modifica delle informazioni, l'utente deve modificare il campo della propria email. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente è all'interno delle sue impostazioni account. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} per proseguire nella modifica delle informazioni, l'utente deve modificare il campo della propria email. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente è all'interno delle sue impostazioni account; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente compila il campo per la email. + \item l'utente compila il campo per la email. \end{enumerate} \end{itemize} \paragraph{UC 4.2.2 - Modifica dello username Telegram} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: Per proseguire nella modifica delle informazioni, l'utente deve modificare il proprio username \glock{Telegram}. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente è all'interno delle sue impostazioni account. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} per proseguire nella modifica delle informazioni, l'utente deve modificare il proprio username \glock{Telegram}. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente è all'interno delle sue impostazioni account; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente compila il campo dello username \glock{Telegram}. + \item l'utente compila il campo dello username \glock{Telegram}. \end{enumerate} \end{itemize} \paragraph{UC 4.2.3 - Modifica delle preferenze per l'autenticazione a due fattori} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: Per proseguire nella modifica delle informazioni, l'utente deve selezionare le preferenze per l'abilitazione o meno dell'autenticazione a due fattori con \glock{Telegram}. Le preferenze disponibili sono: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} per proseguire nella modifica delle informazioni, l'utente deve selezionare le preferenze per l'abilitazione o meno dell'autenticazione a due fattori con \glock{Telegram}. Le preferenze disponibili sono: \begin{itemize} - \item Abilitata; - \item Disabilitata. + \item abilitata; + \item disabilitata; \end{itemize} - \item \textbf{Precondizione}: L'utente è all'interno delle sue impostazioni account. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{precondizione:} l'utente è all'interno delle sue impostazioni account; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente seleziona la preferenza per l'autenticazione a due fattori. + \item l'utente seleziona la preferenza per l'autenticazione a due fattori. \end{enumerate} \end{itemize} \subsubsection{UC 4.3 - Modifica preferenze notifiche alert} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente può modificare le preferenze dei singoli alert che gli sono stati attivati. - \item \textbf{Precondizione}: L'utente naviga all'interno delle sue impostazioni. - \item \textbf{Postcondizione}: L'utente ha cambiato le proprie preferenze per gli alert. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente può modificare le preferenze dei singoli alert che gli sono stati attivati; + \item \textbf{precondizione:} l'utente naviga all'interno delle sue impostazioni; + \item \textbf{postcondizione:} l'utente ha cambiato le proprie preferenze per gli alert; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona la preferenza di uno o più alert, in base a quelli disponibili;} - \item{Le preferenze alert dell'utente vengono aggiornate.} + \item{l'utente seleziona la preferenza di uno o più alert, in base a quelli disponibili;} + \item{le preferenze alert dell'utente vengono aggiornate.} \end{enumerate} \end{itemize} \subsubsection{UC 4.4 Errore modifica password: password attuale errata} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: Durante la modifica della password, il sistema rileva che la password attualmente associata all'account non è valida. - \item \textbf{Precondizione}: L'utente ha compilato i campi richiesti e il sistema elabora la richiesta. - \item \textbf{Postcondizione}: Viene visualizzato un messaggio di errore specifico. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} durante la modifica della password, il sistema rileva che la password attualmente associata all'account non è valida; + \item \textbf{precondizione:} l'utente ha compilato i campi richiesti e il sistema elabora la richiesta; + \item \textbf{postcondizione:} viene visualizzato un messaggio di errore specifico; + \item \textbf{scenario principale:} \begin{enumerate} - \item Il sistema sta elaborando la richiesta; - \item Viene visualizzato un messaggio di errore che segnala che la password attuale è errata. + \item il sistema sta elaborando la richiesta; + \item viene visualizzato un messaggio di errore che segnala che la password attuale è errata. \end{enumerate} \end{itemize} \subsubsection{UC 4.5 Errore modifica password: nuova password non valida} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: Durante la modifica della password, il sistema rileva che la nuova password scelta non è valida, dal momento che potrebbe essere uguale a quella attuale o troppo corta. - \item \textbf{Precondizione}: L'utente ha compilato i campi richiesti e il sistema elabora la richiesta. - \item \textbf{Postcondizione}: Viene visualizzato un messaggio di errore specifico. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} durante la modifica della password, il sistema rileva che la nuova password scelta non è valida, dal momento che potrebbe essere uguale a quella attuale o troppo corta; + \item \textbf{precondizione:} l'utente ha compilato i campi richiesti e il sistema elabora la richiesta; + \item \textbf{postcondizione:} viene visualizzato un messaggio di errore specifico; + \item \textbf{scenario principale:} \begin{enumerate} - \item Il sistema sta elaborando la richiesta; - \item Viene visualizzato un messaggio di errore che segnala che la nuova password non è valida per uno dei seguenti motivi: + \item il sistema sta elaborando la richiesta; + \item viene visualizzato un messaggio di errore che segnala che la nuova password non è valida per uno dei seguenti motivi: \begin{itemize} \item è troppo corta (è composta da meno di 6 caratteri); \item è uguale alla password attuale. @@ -185,14 +185,14 @@ \subsubsection{UC 4.6 - Errore modifica password: la password da confermare non coincide} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: Durante la modifica della password, il sistema rileva che la nuova password scelta non coincide con la password riportata in conferma password. - \item \textbf{Precondizione}: L'utente ha compilato i campi richiesti e il sistema elabora la richiesta. - \item \textbf{Postcondizione}: Viene visualizzato un messaggio di errore specifico. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} durante la modifica della password, il sistema rileva che la nuova password scelta non coincide con la password riportata in conferma password; + \item \textbf{precondizione:} l'utente ha compilato i campi richiesti e il sistema elabora la richiesta; + \item \textbf{postcondizione:} viene visualizzato un messaggio di errore specifico; + \item \textbf{scenario principale:} \begin{enumerate} - \item Il sistema sta elaborando la richiesta; - \item Viene visualizzato un messaggio di errore che segnala che la password attuale è errata. + \item il sistema sta elaborando la richiesta; + \item viene visualizzato un messaggio di errore che segnala che la password attuale è errata. \end{enumerate} \end{itemize} diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc5.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc5.tex index ff4b160..736db61 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc5.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc5.tex @@ -1,126 +1,125 @@ \subsection{UC 5 - Gestione dispositivi} \begin{itemize} - \item \textbf{Attori Primari}: Membro, Moderatore ente, Amministratore. - \item \textbf{Descrizione}: L'utente può gestire i dispositivi a cui ha accesso a livello di permessi ed eseguire aggiunte, modifiche o rimozioni. - \item \textbf{Precondizione}: L'utente è autenticato e naviga nella gestione dispositivi del sistema. - \item \textbf{Postcondizione}: L'utente ha visualizzato o gestito i dispositivi. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Membro, Moderatore ente, Amministratore; + \item \textbf{descrizione:} l'utente può gestire i dispositivi a cui ha accesso a livello di permessi ed eseguire aggiunte, modifiche o rimozioni; + \item \textbf{precondizione:} l'utente è autenticato e naviga nella gestione dispositivi del sistema; + \item \textbf{postcondizione:} l'utente ha visualizzato o gestito i dispositivi; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente naviga all'interno della gestione dispositivi del sistema;} - \item{L'utente visualizza o gestisce i dispositivi a cui ha accesso.} + \item{l'utente naviga all'interno della gestione dispositivi del sistema;} + \item{l'utente visualizza o gestisce i dispositivi a cui ha accesso.} \end{enumerate} \end{itemize} \subsubsection{UC 5.1 - Visualizzazione lista dispositivi ente} \begin{itemize} - \item \textbf{Attori Primari}: Membro, Moderatore ente. - \item \textbf{Descrizione}: L'utente può visualizzare una lista con ID, nome, numero sensori e nome ente per ogni dispositivo abilitato per il proprio ente. - \item \textbf{Precondizione}: L'utente naviga nella gestione dispositivi del sistema. - \item \textbf{Postcondizione}: L'utente ha visualizzato i dispositivi. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Membro, Moderatore ente; + \item \textbf{descrizione:} l'utente può visualizzare una lista con ID, nome, numero sensori e nome ente per ogni dispositivo abilitato per il proprio ente; + \item \textbf{precondizione:} l'utente naviga nella gestione dispositivi del sistema; + \item \textbf{postcondizione:} l'utente ha visualizzato i dispositivi; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente visualizza i dispositivi abilitati per il proprio ente} + \item{l'utente visualizza i dispositivi abilitati per il proprio ente.} \end{enumerate} \end{itemize} \subsubsection{UC 5.2 - Visualizza info dispositivo} \begin{itemize} - \item \textbf{Attori Primari}: Membro, Moderatore Ente, Amministratore. - \item \textbf{Descrizione}: L'utente può visualizzare ID, nome, frequenza di aggiornamento dei dati e dati dei sensori in forma tabellare o grafica riguardanti il dispositivo selezionato. - \item \textbf{Precondizione}: L'utente naviga nella gestione dispositivi del sistema. - \item \textbf{Postcondizione}: L'utente ha visualizzato le informazioni del dispositivo selezionato. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Membro, Moderatore Ente, Amministratore; + \item \textbf{descrizione:} l'utente può visualizzare ID, nome, frequenza di aggiornamento dei dati e dati dei sensori in forma tabellare o grafica riguardanti il dispositivo selezionato; + \item \textbf{precondizione:} l'utente naviga nella gestione dispositivi del sistema; + \item \textbf{postcondizione:} l'utente ha visualizzato le informazioni del dispositivo selezionato; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona il dispositivo dalla lista dispositivi;} - \item{L'utente visualizza le informazioni del dispositivo.} + \item{l'utente seleziona il dispositivo dalla lista dispositivi;} + \item{l'utente visualizza le informazioni del dispositivo.} \end{enumerate} \end{itemize} \subsubsection{UC 5.3 - Aggiunta dispositivo} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore - \item \textbf{Descrizione}: L'utente può aggiungere, e quindi censire, un nuovo dispositivo nel sistema. - \item \textbf{Precondizione}: L'utente naviga nella gestione dispositivi del sistema. - \item \textbf{Postcondizione}: L'utente ha aggiunto un nuovo dispositivo al sistema. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente può aggiungere, e quindi censire, un nuovo dispositivo nel sistema; + \item \textbf{precondizione:} l'utente naviga nella gestione dispositivi del sistema; + \item \textbf{postcondizione:} l'utente ha aggiunto un nuovo dispositivo al sistema; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente deve inserire dei campi obbligatori per aggiungere un nuovo dispositivo;} - \item{L'utente compila il campo \textit{identificativo dispositivo} (UC 5.3.1);} - \item{L'utente compila il campo \textit{nome dispositivo} (UC 5.3.2);} - \item{L'utente compila il campo \textit{tempo di frequenza ricezione dati} (UC 5.3.3);} - \item{L'utente compila il campo \textit{dati sensori}( UC 5.3.4); } - \item{L'utente ha aggiunto un nuovo dispositivo al sistema.} + \item{l'utente deve inserire dei campi obbligatori per aggiungere un nuovo dispositivo;} + \item{l'utente compila il campo \textit{identificativo dispositivo} (UC 5.3.1);} + \item{l'utente compila il campo \textit{nome dispositivo} (UC 5.3.2);} + \item{l'utente compila il campo \textit{tempo di frequenza ricezione dati} (UC 5.3.3);} + \item{l'utente compila il campo \textit{dati sensori}( UC 5.3.4);} + \item{l'utente ha aggiunto un nuovo dispositivo al sistema;} \end{enumerate} - \item \textbf{Estensioni}: + \item \textbf{estensioni:} \begin{itemize} - \item Dispositivo non valido (UC 5.9) + \item Dispositivo non valido (UC 5.9). \end{itemize} \end{itemize} \paragraph{UC 5.3.1 - Inserimento identificativo dispositivo} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore - \item \textbf{Descrizione}: Per proseguire nella aggiunta di un nuovo dispositivo, l'utente deve inserire l'identificativo del dispositivo. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta inserendo le informazioni per aggiungere un nuovo dispositivo. - \item \textbf{Postcondizione}: L'utente ha compilato un campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} per proseguire nella aggiunta di un nuovo dispositivo, l'utente deve inserire l'identificativo del dispositivo. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta inserendo le informazioni per aggiungere un nuovo dispositivo; + \item \textbf{postcondizione:} l'utente ha compilato un campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila il campo \textit{identificativo dispositivo};} + \item{l'utente compila il campo \textit{identificativo dispositivo}.} \end{enumerate} \end{itemize} \paragraph{UC 5.3.2 - Inserimento nome dispositivo} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore - \item \textbf{Descrizione}: Per proseguire nella aggiunta di un nuovo dispositivo, l'utente deve inserire un nome con cui associare il dispositivo. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta inserendo le informazioni per aggiungere un nuovo dispositivo. - \item \textbf{Postcondizione}: L'utente ha compilato un campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} per proseguire nella aggiunta di un nuovo dispositivo, l'utente deve inserire un nome con cui associare il dispositivo. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta inserendo le informazioni per aggiungere un nuovo dispositivo; + \item \textbf{postcondizione:} l'utente ha compilato un campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila il campo \textit{nome dispositivo};} + \item{l'utente compila il campo \textit{nome dispositivo}.} \end{enumerate} \end{itemize} \paragraph{UC 5.3.3 - Inserimento tempo di frequenza ricezione dati} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore - \item \textbf{Descrizione}: Per proseguire nella aggiunta di un nuovo dispositivo, l'utente deve inserire il tempo di frequenza per la ricezione dati nel sistema. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta inserendo le informazioni per aggiungere un nuovo dispositivo. - \item \textbf{Postcondizione}: L'utente ha compilato un campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} per proseguire nella aggiunta di un nuovo dispositivo, l'utente deve inserire il tempo di frequenza per la ricezione dati nel sistema. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta inserendo le informazioni per aggiungere un nuovo dispositivo; + \item \textbf{postcondizione:} l'utente ha compilato un campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila il campo \textit{tempo di frequenza ricezione dati};} + \item{l'utente compila il campo \textit{tempo di frequenza ricezione dati}.} \end{enumerate} \end{itemize} \paragraph{UC 5.3.4 - Inserimento dati sensori} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore - \item \textbf{Descrizione}: Per proseguire nella aggiunta di un nuovo dispositivo, l'utente deve inserire i dati dei sensori del dispositivo di cui vuole ricevere letture. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta inserendo le informazioni per aggiungere un nuovo dispositivo. - \item \textbf{Postcondizione}: L'utente ha compilato un campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} per proseguire nella aggiunta di un nuovo dispositivo, l'utente deve inserire i dati dei sensori del dispositivo di cui vuole ricevere letture. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta inserendo le informazioni per aggiungere un nuovo dispositivo; + \item \textbf{postcondizione:} l'utente ha compilato un campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila il campo \textit{dati sensori};} + \item{l'utente compila il campo \textit{dati sensori}.} \end{enumerate} \end{itemize} - \subsubsection{UC 5.4 - Modifica dispositivo} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente modifica i dispositivi che gli interessano e la nuova configurazione viene gestita dal sistema. - \item \textbf{Precondizione}: L'utente naviga nella gestione dispositivi del sistema e ha almeno un dispositivo disponibile. - \item \textbf{Postcondizione}: L'utente ha modificato il dispositivo selezionato. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente modifica i dispositivi che gli interessano e la nuova configurazione viene gestita dal sistema; + \item \textbf{precondizione:} l'utente naviga nella gestione dispositivi del sistema e ha almeno un dispositivo disponibile; + \item \textbf{postcondizione:} l'utente ha modificato il dispositivo selezionato; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona un dispositivo da modificare;} - \item{L'utente modifica il campo \textit{nome dispositivo} (UC 5.4.1);} - \item{L'utente modifica il campo \textit{tempo di frequenza ricezione dati} (UC 5.4.2);} - \item{L'utente modifica i \textit{dati sensori} (UC 5.4.3);} - \item{L'utente ha modificato il dispositivo selezionato.} + \item{l'utente seleziona un dispositivo da modificare;} + \item{l'utente modifica il campo \textit{nome dispositivo} (UC 5.4.1);} + \item{l'utente modifica il campo \textit{tempo di frequenza ricezione dati} (UC 5.4.2);} + \item{l'utente modifica i \textit{dati sensori} (UC 5.4.3);} + \item{l'utente ha modificato il dispositivo selezionato.} \end{enumerate} \end{itemize} @@ -128,100 +127,100 @@ \paragraph{UC 5.4.1 - Modifica nome dispositivo} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore - \item \textbf{Descrizione}: Per proseguire nella modifica di un dispositivo, l'utente deve modificare il nome con cui associare il dispositivo. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta modificando le informazioni di dispositivo già censito. - \item \textbf{Postcondizione}: L'utente ha compilato un campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} Per proseguire nella modifica di un dispositivo, l'utente deve modificare il nome con cui associare il dispositivo. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta modificando le informazioni di dispositivo già censito; + \item \textbf{postcondizione:} l'utente ha compilato un campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila il campo \textit{nome dispositivo};} + \item{l'utente compila il campo \textit{nome dispositivo}.} \end{enumerate} \end{itemize} \paragraph{UC 5.4.2 - Modifica tempo di frequenza ricezione dati} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore - \item \textbf{Descrizione}: Per proseguire nella modifica di un dispositivo, l'utente deve modificare il tempo di frequenza per la ricezione dati nel sistema. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta modificando le informazioni di dispositivo già censito. - \item \textbf{Postcondizione}: L'utente ha compilato un campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} Per proseguire nella modifica di un dispositivo, l'utente deve modificare il tempo di frequenza per la ricezione dati nel sistema. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta modificando le informazioni di dispositivo già censito; + \item \textbf{postcondizione:} l'utente ha compilato un campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila il campo \textit{tempo di frequenza ricezione dati};} + \item{l'utente compila il campo \textit{tempo di frequenza ricezione dati}.} \end{enumerate} \end{itemize} \paragraph{UC 5.4.3 - Modifica dati sensori} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore - \item \textbf{Descrizione}: Per proseguire nella modifica di un dispositivo, l'utente deve modificare i dati dei sensori del dispositivo di cui vuole ricevere letture. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta modificando le informazioni di dispositivo già censito. - \item \textbf{Postcondizione}: L'utente ha compilato un campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} Per proseguire nella modifica di un dispositivo, l'utente deve modificare i dati dei sensori del dispositivo di cui vuole ricevere letture. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta modificando le informazioni di dispositivo già censito; + \item \textbf{postcondizione:} l'utente ha compilato un campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila il campo \textit{dati sensori};} + \item{l'utente compila il campo \textit{dati sensori}.} \end{enumerate} \end{itemize} \subsubsection{UC 5.5 - Rimozione dispositivo} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può rimuovere dal sistema un dispositivo in base ai dispositivi censiti a sistema. - \item \textbf{Precondizione}: L'utente naviga nella gestione dispositivi del sistema e ha almeno un dispositivo disponibile. - \item \textbf{Postcondizione}: L'utente ha rimosso il dispositivo selezionato dal sistema. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente può rimuovere dal sistema un dispositivo in base ai dispositivi censiti a sistema; + \item \textbf{precondizione:} l'utente naviga nella gestione dispositivi del sistema e ha almeno un dispositivo disponibile; + \item \textbf{postcondizione:} l'utente ha rimosso il dispositivo selezionato dal sistema; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona un dispositivo da rimuovere tra quelli disponibili;} - \item{L'utente ha rimosso il dispositivo selezionato dal sistema.} + \item{l'utente seleziona un dispositivo da rimuovere tra quelli disponibili;} + \item{l'utente ha rimosso il dispositivo selezionato dal sistema.} \end{enumerate} \end{itemize} \subsubsection{UC 5.6 - Aggiunta sensori ad ente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può aggiungere i permessi di lettura e monitoraggio dei dati di un dispositivo a un particolare ente. - \item \textbf{Precondizione}: L'utente naviga nella gestione dispositivi del sistema. - \item \textbf{Postcondizione}: L'utente ha concesso il monitoraggio di un sensore ad un ente. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente può aggiungere i permessi di lettura e monitoraggio dei dati di un dispositivo a un particolare ente; + \item \textbf{precondizione:} l'utente naviga nella gestione dispositivi del sistema; + \item \textbf{postcondizione:} l'utente ha concesso il monitoraggio di un sensore ad un ente; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona un sensore di un particolare dispositivo e lo abilita a un ente} - \item{L'utente ha permesso il monitoraggio del sensore all'ente selezionato} + \item{l'utente seleziona un sensore di un particolare dispositivo e lo abilita a un ente;} + \item{l'utente ha permesso il monitoraggio del sensore all'ente selezionato.} \end{enumerate} \end{itemize} \subsubsection{UC 5.7 - Rimozione sensori da un ente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può rimuovere i permessi di monitoraggio dei dati del dispositivo selezionato all'ente selezionato. - \item \textbf{Precondizione}: L'utente visualizza le informazioni del dispositivo. - \item \textbf{Postcondizione}: L'utente ha rimosso il permesso di monitoraggio del dato del dispositivo all'ente selezionato. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente può rimuovere i permessi di monitoraggio dei dati del dispositivo selezionato all'ente selezionato; + \item \textbf{precondizione:} l'utente visualizza le informazioni del dispositivo; + \item \textbf{postcondizione:} l'utente ha rimosso il permesso di monitoraggio del dato del dispositivo all'ente selezionato; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente rimuove un sensore di un particolare dispositivo a un ente} - \item{L'utente ha rimosso il permesso di monitoraggio del sensore all'ente selezionato} + \item{l'utente rimuove un sensore di un particolare dispositivo a un ente;} + \item{l'utente ha rimosso il permesso di monitoraggio del sensore all'ente selezionato.} \end{enumerate} \end{itemize} \subsubsection{UC 5.8 - Visualizzazione lista dispositivi completa} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente può visualizzare una lista con ID, nome, numero di sensori e nome dell'ente per ogni dispositivo presente nel sistema. - \item \textbf{Precondizione}: L'utente naviga nella gestione dispositivi del sistema. - \item \textbf{Postcondizione}: L'utente ha visualizzato la lista di tutti i dispositivi. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente può visualizzare una lista con ID, nome, numero di sensori e nome dell'ente per ogni dispositivo presente nel sistema; + \item \textbf{precondizione:} l'utente naviga nella gestione dispositivi del sistema; + \item \textbf{postcondizione:} l'utente ha visualizzato la lista di tutti i dispositivi; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente visualizza tutti i dispositivi presenti nel sistema.} + \item{l'utente visualizza tutti i dispositivi presenti nel sistema.} \end{enumerate} \end{itemize} \subsubsection{UC 5.9 - Errore formato identificativo dispositivo} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente visualizza un errore che segnala che il campo identificativo di un dispositivo non è valido. - \item \textbf{Precondizione}: L'utente ha inserito un formato dell'identificativo di dispositivo errato. - \item \textbf{Postcondizione}: L'utente visualizza un errore specifico. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente visualizza un errore che segnala che il campo identificativo di un dispositivo non è valido; + \item \textbf{precondizione:} l'utente ha inserito un formato dell'identificativo di dispositivo errato; + \item \textbf{postcondizione:} l'utente visualizza un errore specifico; + \item \textbf{scenario principale:} \begin{enumerate} - \item Il sistema sta elaborando la richiesta; - \item Viene visualizzato un errore che spiega che il formato utilizzato per l'identificativo del dispositivo non è corretto. + \item il sistema sta elaborando la richiesta; + \item viene visualizzato un errore che spiega che il formato utilizzato per l'identificativo del dispositivo non è corretto. \end{enumerate} \end{itemize} \ No newline at end of file diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex index 6f444f0..5f41521 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc6.tex @@ -7,79 +7,79 @@ \end{figure} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente può gestire le proprie pagine \glock{view}, attraverso cui può andare a visualizzare grafici con correlazioni sulla base dei sensori disponibili per l'ente. - \item \textbf{Precondizione}: L'utente è autenticato e naviga all'interno delle proprie \glock{view}. - \item \textbf{Postcondizione}: L'utente ha visualizzato o gestito le proprie \glock{view}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente può gestire le proprie pagine \glock{view}, attraverso cui può andare a visualizzare grafici con correlazioni sulla base dei sensori disponibili per l'ente; + \item \textbf{precondizione:} l'utente è autenticato e naviga all'interno delle proprie \glock{view}; + \item \textbf{postcondizione:} l'utente ha visualizzato o gestito le proprie \glock{view}; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente naviga all'interno delle proprie \glock{view};} - \item{L'utente visualizza o gestisce le \glock{view} da lui create.} + \item{l'utente naviga all'interno delle proprie \glock{view};} + \item{l'utente visualizza o gestisce le \glock{view} da lui create.} \end{enumerate} \end{itemize} \subsubsection{UC 6.1 - Visualizzazione lista pagine view} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente può visualizzare una lista con i nomi dele proprie \glock{view} create fino a quel momento. - \item \textbf{Precondizione}: L'utente naviga all'interno delle proprie \glock{view}. - \item \textbf{Postcondizione}: L'utente ha visualizzato le proprie \glock{view}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente può visualizzare una lista con i nomi dele proprie \glock{view} create fino a quel momento; + \item \textbf{precondizione:} l'utente naviga all'interno delle proprie \glock{view}; + \item \textbf{postcondizione:} l'utente ha visualizzato le proprie \glock{view}; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente visualizza l'elenco completo delle sue pagine \glock{view}.} + \item{l'utente visualizza l'elenco completo delle sue pagine \glock{view}.} \end{enumerate} \end{itemize} \subsubsection{UC 6.2 - Visualizzazione pagina view} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente può aprire e visualizzare una pagina \glock{view} in cui sono presenti zero o più grafici con l'andamento di uno o due sensori ed eventualmente la/le relativa/e correlazione/i. - \item \textbf{Precondizione}: L'utente naviga all'interno delle proprie \glock{view} e ha almeno una pagina \glock{view} attiva. - \item \textbf{Postcondizione}: L'utente visualizza una pagina \glock{view} specifica. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente può aprire e visualizzare una pagina \glock{view} in cui sono presenti zero o più grafici con l'andamento di uno o due sensori ed eventualmente la/le relativa/e correlazione/i; + \item \textbf{precondizione:} l'utente naviga all'interno delle proprie \glock{view} e ha almeno una pagina \glock{view} attiva; + \item \textbf{postcondizione:} l'utente visualizza una pagina \glock{view} specifica; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente visualizza l'elenco completo delle sue pagine \glock{view};} - \item{L'utente seleziona una pagina view \glock{view}.} + \item{l'utente visualizza l'elenco completo delle sue pagine \glock{view};} + \item{l'utente seleziona una pagina view \glock{view}.} \end{enumerate} \end{itemize} \subsubsection{UC 6.3 - Aggiunta pagina view} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente aggiunge una pagina \glock{view} attraverso un form che deve compilare. - \item \textbf{Precondizione}: L'utente naviga all'interno delle proprie \glock{view}. - \item \textbf{Postcondizione}: L'utente ha aggiunto una pagina \glock{view}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente aggiunge una pagina \glock{view} attraverso un form che deve compilare; + \item \textbf{precondizione:} l'utente naviga all'interno delle proprie \glock{view}; + \item \textbf{postcondizione:} l'utente ha aggiunto una pagina \glock{view}; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente inserisce il nome della pagina view compilando un campo (UC 6.3.1);} - \item{L'utente ha aggiunto una nuova pagina \glock{view}.} + \item{l'utente inserisce il nome della pagina view compilando un campo (UC 6.3.1);} + \item{l'utente ha aggiunto una nuova pagina \glock{view}.} \end{enumerate} \end{itemize} \paragraph{UC 6.3.1 - Inserimento nome pagina view} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente compila un form per aggiungere una pagina \glock{view}. - \item \textbf{Precondizione}: L'utente sta aggiungendo una nuova pagina \glock{view}. - \item \textbf{Postcondizione}: L'utente ha compilato il nome della pagina \glock{view}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente compila un form per aggiungere una pagina \glock{view}; + \item \textbf{precondizione:} l'utente sta aggiungendo una nuova pagina \glock{view}; + \item \textbf{postcondizione:} l'utente ha compilato il nome della pagina \glock{view}; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente sta compilando il form di aggiunta pagina \glock{view};} - \item{L'utente compila il nome della pagina \glock{view};} - \item{L'utente ha aggiunto una nuova pagina \glock{view}.} + \item{l'utente sta compilando il form di aggiunta pagina \glock{view};} + \item{l'utente compila il nome della pagina \glock{view};} + \item{l'utente ha aggiunto una nuova pagina \glock{view}.} \end{enumerate} \end{itemize} \subsubsection{UC 6.4 - Eliminazione pagina view} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente elimina una pagina \glock{view} a lui disponibile. - \item \textbf{Precondizione}: L'utente naviga all'interno delle proprie \glock{view}. - \item \textbf{Postcondizione}: L'utente ha eliminato una pagina \glock{view}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente elimina una pagina \glock{view} a lui disponibile; + \item \textbf{precondizione:} l'utente naviga all'interno delle proprie \glock{view}; + \item \textbf{postcondizione:} l'utente ha eliminato una pagina \glock{view}; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente seleziona una pagina \glock{view} e la rimuove; - \item L'utente non visualizza più la pagina \glock{view} rimossa e i grafici a essa associati. + \item l'utente seleziona una pagina \glock{view} e la rimuove; + \item l'utente non visualizza più la pagina \glock{view} rimossa e i grafici a essa associati. \end{enumerate} \end{itemize} @@ -92,119 +92,119 @@ \end{figure} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente può inserire un nuovo grafico all'interno di una pagina \glock{view} andando a selezionare uno o due dati da visualizzare e il tipo di correlazione tra essi. - \item \textbf{Precondizione}: L'utente naviga all'interno di una \glock{view} che ha selezionato. - \item \textbf{Postcondizione}: L'utente visualizza il grafico con i dati di uno o due sensori e la correlazione tra i dati - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente può inserire un nuovo grafico all'interno di una pagina \glock{view} andando a selezionare uno o due dati da visualizzare e il tipo di correlazione tra essi; + \item \textbf{precondizione:} l'utente naviga all'interno di una \glock{view} che ha selezionato; + \item \textbf{postcondizione:} l'utente visualizza il grafico con i dati di uno o due sensori e la correlazione tra i dati; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona il primo sensore di cui visualizzare i dati (UC 6.5.1);} - \item{L'utente seleziona il secondo sensore di cui visualizzare i dati (UC 6.5.2);} - \item{L'utente seleziona il tipo di correlazione tra i dati che intende visualizzare (UC 6.5.3);} - \item{L'utente conferma il grafico e visualizza quanto richiesto.} + \item{l'utente seleziona il primo sensore di cui visualizzare i dati (UC 6.5.1);} + \item{l'utente seleziona il secondo sensore di cui visualizzare i dati (UC 6.5.2);} + \item{l'utente seleziona il tipo di correlazione tra i dati che intende visualizzare (UC 6.5.3);} + \item{l'utente conferma il grafico e visualizza quanto richiesto.} \end{enumerate} \end{itemize} \paragraph{UC 6.5.1 - Selezione primo sensore} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e sta selezionando un dato di cui visualizzare l'andamento. Il campo è obbligatorio. - \item \textbf{Precondizione}: L'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}. - \item \textbf{Postcondizione}: L'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e sta selezionando un dato di cui visualizzare l'andamento. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}; + \item \textbf{postcondizione:} l'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona un sensore da cui reperire i dati da far visualizzare nel grafico.} + \item{l'utente seleziona un sensore da cui reperire i dati da far visualizzare nel grafico.} \end{enumerate} \end{itemize} \paragraph{UC 6.5.2 - Selezione secondo sensore} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e sta selezionando un dato di cui visualizzare l'andamento. Il campo è opzionale. - \item \textbf{Precondizione}: L'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}. - \item \textbf{Postcondizione}: L'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e sta selezionando un dato di cui visualizzare l'andamento. Il campo è opzionale; + \item \textbf{precondizione:} l'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}; + \item \textbf{postcondizione:} l'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona un sensore da cui reperire i dati da far visualizzare nel grafico.} + \item{l'utente seleziona un sensore da cui reperire i dati da far visualizzare nel grafico.} \end{enumerate} \end{itemize} \paragraph{UC 6.5.3 - Selezione correlazione} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e sta selezionando la correlazione tra i dati da visualizzare. Le correlazioni disponibili sono: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e sta selezionando la correlazione tra i dati da visualizzare. Le correlazioni disponibili sono: \begin{itemize} - \item Nessuna correlazione; - \item Covarianza; - \item Correlazione di Pearson; - \item Correlazione di Spearman. + \item nessuna correlazione; + \item covarianza; + \item correlazione di Pearson; + \item correlazione di Spearman; \end{itemize} - \item \textbf{Precondizione}: L'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}. - \item \textbf{Postcondizione}: L'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}. - \item \textbf{Scenario Principale}: + \item \textbf{precondizione:} l'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}; + \item \textbf{postcondizione:} l'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona la correlazione da visualizzare insieme al grafico.} + \item{l'utente seleziona la correlazione da visualizzare insieme al grafico.} \end{enumerate} \end{itemize} \subparagraph{UC 6.5.3.1 - Nessuna correlazione} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e ha selezionato "Nessuna correlazione". - \item \textbf{Precondizione}: L'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}. - \item \textbf{Postcondizione}: L'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e ha selezionato "Nessuna correlazione"; + \item \textbf{precondizione:} l'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}; + \item \textbf{postcondizione:} l'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona la correlazione da visualizzare insieme al grafico.} + \item{l'utente seleziona la correlazione da visualizzare insieme al grafico.} \end{enumerate} \end{itemize} \subparagraph{UC 6.5.3.2 - Correlazione covarianza} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e ha selezionato la correlazione covarianza. - \item \textbf{Precondizione}: L'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}. - \item \textbf{Postcondizione}: L'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e ha selezionato la correlazione covarianza; + \item \textbf{precondizione:} l'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}; + \item \textbf{postcondizione:} l'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona la correlazione da visualizzare insieme al grafico.} + \item{l'utente seleziona la correlazione da visualizzare insieme al grafico.} \end{enumerate} \end{itemize} \subparagraph{UC 6.5.3.3 - Correlazione di Pearson} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e ha selezionato correlazione di Pearson. - \item \textbf{Precondizione}: L'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}. - \item \textbf{Postcondizione}: L'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e ha selezionato correlazione di Pearson; + \item \textbf{precondizione:} l'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}; + \item \textbf{postcondizione:} l'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona la correlazione da visualizzare insieme al grafico.} + \item{l'utente seleziona la correlazione da visualizzare insieme al grafico.} \end{enumerate} \end{itemize} \subparagraph{UC 6.5.3.4 - Correlazione di Spearman} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e ha selezionato correlazione di Spearman. - \item \textbf{Precondizione}: L'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}. - \item \textbf{Postcondizione}: L'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente sta aggiungendo un nuovo grafico alla sua pagina \glock{view} e ha selezionato correlazione di Spearman; + \item \textbf{precondizione:} l'utente sta aggiungendo una nuovo grafico a una pagina \glock{view}; + \item \textbf{postcondizione:} l'utente ha compilato un campo per l'aggiunta del grafico in una pagina \glock{view}; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona la correlazione da visualizzare insieme al grafico.} + \item{l'utente seleziona la correlazione da visualizzare insieme al grafico.} \end{enumerate} \end{itemize} \subsubsection{UC 6.6 - Rimozione grafico pagina view} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente può rimuovere un grafico che viene visualizzato su una pagina \glock{view}. - \item \textbf{Precondizione}: L'utente naviga all'interno di una \glock{view} che ha selezionato e sta visualizzando almeno un grafico. - \item \textbf{Postcondizione}: L'utente ha eliminato un grafico dalla pagina \glock{view} . - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente può rimuovere un grafico che viene visualizzato su una pagina \glock{view}; + \item \textbf{precondizione:} l'utente naviga all'interno di una \glock{view} che ha selezionato e sta visualizzando almeno un grafico; + \item \textbf{postcondizione:} l'utente ha eliminato un grafico dalla pagina \glock{view}; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona un grafico dalla pagina \glock{view} e lo rimuove.} - \item{L'utente non visualizza più quel grafico in quella pagina.} + \item{l'utente seleziona un grafico dalla pagina \glock{view} e lo rimuove;} + \item{l'utente non visualizza più quel grafico in quella pagina.} \end{enumerate} \end{itemize} \ No newline at end of file diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc7.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc7.tex index da916c7..6064b07 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc7.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc7.tex @@ -7,166 +7,166 @@ \end{figure} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente può gestire gli utenti del proprio ente, eseguendo modifiche e cancellazioni di account esistenti o aggiunte di nuovi account. - \item \textbf{Precondizione}: L'utente è autenticato e naviga nella gestione utenti per l'ente associato. - \item \textbf{Postcondizione}: L'utente ha visualizzato o gestito gli utenti appartenenti al proprio ente. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente può gestire gli utenti del proprio ente, eseguendo modifiche e cancellazioni di account esistenti o aggiunte di nuovi account; + \item \textbf{precondizione:} l'utente è autenticato e naviga nella gestione utenti per l'ente associato; + \item \textbf{postcondizione:} l'utente ha visualizzato o gestito gli utenti appartenenti al proprio ente; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente visualizza o gestisce gli utenti appartenenti al proprio ente.} + \item{l'utente visualizza o gestisce gli utenti appartenenti al proprio ente.} \end{enumerate} \end{itemize} \subsubsection{UC 7.1 - Visualizzazione utenti ente} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente può visualizzare una lista con nome, cognome e mail degli utenti del proprio ente. - \item \textbf{Precondizione}: L'utente naviga nella gestione utenti per l'ente associato. - \item \textbf{Postcondizione}: L'utente ha visualizzato la lista degli utenti appartenenti al proprio ente. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente può visualizzare una lista con nome, cognome e mail degli utenti del proprio ente; + \item \textbf{precondizione:} l'utente naviga nella gestione utenti per l'ente associato; + \item \textbf{postcondizione:} l'utente ha visualizzato la lista degli utenti appartenenti al proprio ente; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente visualizza la lista degli utenti appartenenti al proprio ente.} + \item{l'utente visualizza la lista degli utenti appartenenti al proprio ente.} \end{enumerate} \end{itemize} \subsubsection{UC 7.2 - Creazione account membro ente} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente può creare un nuovo membro per il proprio ente. - \item \textbf{Precondizione}: L'utente naviga nella gestione utenti per l'ente associato. - \item \textbf{Postcondizione}: L'utente ha creato un nuovo account associato al proprio ente. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente può creare un nuovo membro per il proprio ente; + \item \textbf{precondizione:} l'utente naviga nella gestione utenti per l'ente associato; + \item \textbf{postcondizione:} l'utente ha creato un nuovo account associato al proprio ente; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente deve compilare dei campi obbligatori per aggiungere un nuovo utente;} - \item{L'utente compila il campo email (UC 7.2.1);} - \item{L'utente compila il campo nome (UC 7.2.2);} - \item{L'utente compila il campo cognome (UC 7.2.3);} - \item{L'utente ha aggiunto un nuovo utente appartenente al proprio ente.} + \item{l'utente deve compilare dei campi obbligatori per aggiungere un nuovo utente;} + \item{l'utente compila il campo email (UC 7.2.1);} + \item{l'utente compila il campo nome (UC 7.2.2);} + \item{l'utente compila il campo cognome (UC 7.2.3);} + \item{l'utente ha aggiunto un nuovo utente appartenente al proprio ente;} \end{enumerate} - \item \textbf{Estensioni}: + \item \textbf{estensioni:} \begin{itemize} - \item L'utente inserisce un email non valida (UC 21) - \item L'utente inserisce un nome o cognome non validi (UC 23) + \item l'utente inserisce un email non valida (UC 21); + \item l'utente inserisce un nome o cognome non validi (UC 23). \end{itemize} \end{itemize} \paragraph{UC 7.2.1 - Inserimento email} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo utente e gli viene richiesto di compilare il campo obbligatorio per la email. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto per la creazione di un nuovo membro. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente sta aggiungendo un nuovo utente e gli viene richiesto di compilare il campo obbligatorio per la email; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto per la creazione di un nuovo membro; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente ha compilato la email per il nuovo utente.} + \item{l'utente ha compilato la email per il nuovo utente.} \end{enumerate} \end{itemize} \paragraph{UC 7.2.2 - Inserimento nome} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo utente e gli viene richiesto di compilare il campo obbligatorio per il nome. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto per la creazione di un nuovo membro. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente sta aggiungendo un nuovo utente e gli viene richiesto di compilare il campo obbligatorio per il nome; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto per la creazione di un nuovo membro; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente ha compilato il nome per il nuovo utente.} + \item{l'utente ha compilato il nome per il nuovo utente.} \end{enumerate} \end{itemize} \paragraph{UC 7.2.3 - Inserimento cognome} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente sta aggiungendo un nuovo utente e gli viene richiesto di compilare il campo obbligatorio per il cognome. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto per la creazione di un nuovo membro. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente sta aggiungendo un nuovo utente e gli viene richiesto di compilare il campo obbligatorio per il cognome; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto per la creazione di un nuovo membro; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente ha compilato il cognome per il nuovo utente.} + \item{l'utente ha compilato il cognome per il nuovo utente.} \end{enumerate} \end{itemize} \subsubsection{UC 7.3 - Visualizzazione profilo di un membro dell'ente} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente può visualizzare nome, cognome, mail, username Telegram (se presente) e l'opzione di autenticazione a due fattori (attiva o meno) dell'utente selezionato dalla lista degli utenti del proprio ente. - \item \textbf{Precondizione}: L'utente naviga nella gestione utenti per l'ente associato e visualizza i propri membri. - \item \textbf{Postcondizione}: L'utente ha visualizzato i dati dell'utente selezionato appartenente al proprio ente. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente può visualizzare nome, cognome, mail, username Telegram (se presente) e l'opzione di autenticazione a due fattori (attiva o meno) dell'utente selezionato dalla lista degli utenti del proprio ente; + \item \textbf{precondizione:} l'utente naviga nella gestione utenti per l'ente associato e visualizza i propri membri; + \item \textbf{postcondizione:} l'utente ha visualizzato i dati dell'utente selezionato appartenente al proprio ente; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona un utente dalla lista degli utenti del proprio ente;} - \item{L'utente visualizza i dati dell'utente selezionato.} + \item{l'utente seleziona un utente dalla lista degli utenti del proprio ente;} + \item{l'utente visualizza i dati dell'utente selezionato.} \end{enumerate} \end{itemize} \subsubsection{UC 7.4 - Modifica account membro ente} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente può modificare un membro del proprio ente. - \item \textbf{Precondizione}: L'utente naviga nella gestione utenti per l'ente associato. - \item \textbf{Postcondizione}: L'utente ha modificato un nuovo account associato al proprio ente. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente può modificare un membro del proprio ente; + \item \textbf{precondizione:} l'utente naviga nella gestione utenti per l'ente associato; + \item \textbf{postcondizione:} l'utente ha modificato un nuovo account associato al proprio ente; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente deve compilare dei campi obbligatori per modificare un utente;} - \item{L'utente compila il campo email (UC 7.4.1);} - \item{L'utente compila il campo nome (UC 7.4.2);} - \item{L'utente compila il campo cognome (UC 7.4.3);} - \item{L'utente ha modificato un utente appartenente al proprio ente.} + \item{l'utente deve compilare dei campi obbligatori per modificare un utente;} + \item{l'utente compila il campo email (UC 7.4.1);} + \item{l'utente compila il campo nome (UC 7.4.2);} + \item{l'utente compila il campo cognome (UC 7.4.3);} + \item{l'utente ha modificato un utente appartenente al proprio ente;} \end{enumerate} - \item \textbf{Estensioni}: + \item \textbf{estensioni:} \begin{itemize} - \item L'utente inserisce un email non valida (UC 21) - \item L'utente inserisce un nome o cognome non validi (UC 23) + \item l'utente inserisce un email non valida (UC 21); + \item l'utente inserisce un nome o cognome non validi (UC 23). \end{itemize} \end{itemize} \paragraph{UC 7.4.1 - Modifica campo email} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente sta modificando un utente e gli viene richiesto di compilare il campo obbligatorio per la email. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto per la modifica di un membro. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente sta modificando un utente e gli viene richiesto di compilare il campo obbligatorio per la email; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per la modifica di un utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto per la modifica di un membro; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente ha compilato la email dell'utente.} + \item{l'utente ha compilato la email dell'utente.} \end{enumerate} \end{itemize} \paragraph{UC 7.4.2 - Modifica campo nome} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente sta modificando un utente e gli viene richiesto di compilare il campo obbligatorio per il nome. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto per la modifica di un membro. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente sta modificando un utente e gli viene richiesto di compilare il campo obbligatorio per il nome; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per la modifica di un utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto per la modifica di un membro; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente ha compilato il nome dell'utente.} + \item{l'utente ha compilato il nome dell'utente.} \end{enumerate} \end{itemize} \paragraph{UC 7.4.3 - Modifica campo cognome} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente sta modificando un utente e gli viene richiesto di compilare il campo obbligatorio per il cognome. - \item \textbf{Precondizione}: L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto per la modifica di un membro. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente sta modificando un utente e gli viene richiesto di compilare il campo obbligatorio per il cognome; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per la modifica di un utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto per la modifica di un membro; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente ha compilato il cognome dell'utente.} + \item{l'utente ha compilato il cognome dell'utente.} \end{enumerate} \end{itemize} \subsubsection{UC 7.5 - Rimozione utente dall'ente} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente rimuove l'utente selezionato dalla lista degli utenti appartenenti al suo ente. - \item \textbf{Precondizione}: L'utente naviga nella gestione utenti per l'ente associato e seleziona un utente. - \item \textbf{Postcondizione}: L'utente ha rimosso l'utente selezionato appartenente al proprio ente. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente rimuove l'utente selezionato dalla lista degli utenti appartenenti al suo ente; + \item \textbf{precondizione:} l'utente naviga nella gestione utenti per l'ente associato e seleziona un utente; + \item \textbf{postcondizione:} l'utente ha rimosso l'utente selezionato appartenente al proprio ente; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona un utente appartenente al proprio ente da rimuovere;} - \item{L'utente ha rimosso l'utente selezionato appartenente al proprio ente dal sistema.} + \item{l'utente seleziona un utente appartenente al proprio ente da rimuovere;} + \item{l'utente ha rimosso l'utente selezionato appartenente al proprio ente dal sistema.} \end{enumerate} \end{itemize} diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc8.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc8.tex index e478125..a1c9712 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc8.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc8.tex @@ -7,124 +7,124 @@ \end{figure} \begin{itemize} - \item \textbf{Attori Primari}: Membro, Moderatore ente. - \item \textbf{Descrizione}: L'utente gestisce gli \glock{alert} del proprio ente, impostandone le soglie oltre il quale scatenare le notifiche per gli utenti. - \item \textbf{Precondizione}: L'utente è autenticato e naviga all'interno della gestione \glock{alert}. - \item \textbf{Postcondizione}: L'utente ha visualizzato o gestito gli \glock{alert} del proprio ente. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Membro, Moderatore ente; + \item \textbf{descrizione:} l'utente gestisce gli \glock{alert} del proprio ente, impostandone le soglie oltre il quale scatenare le notifiche per gli utenti; + \item \textbf{precondizione:} l'utente è autenticato e naviga all'interno della gestione \glock{alert}; + \item \textbf{postcondizione:} l'utente ha visualizzato o gestito gli \glock{alert} del proprio ente; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente naviga all'interno della gestione \glock{alert} del proprio ente;} - \item{L'utente ha visualizzato o gestito gli \glock{alert} del proprio ente.} + \item{l'utente naviga all'interno della gestione \glock{alert} del proprio ente;} + \item{l'utente ha visualizzato o gestito gli \glock{alert} del proprio ente.} \end{enumerate} \end{itemize} \subsubsection{UC 8.1 - Visualizzazione alert ente} \begin{itemize} - \item \textbf{Attori Primari}: Membro, Moderatore ente. - \item \textbf{Descrizione}: L'utente può visualizzare il nome del sensore e la soglia degli \glock{alert} appartenenti al proprio ente. - \item \textbf{Precondizione}: L'utente naviga all'interno della gestione \glock{alert}. - \item \textbf{Postcondizione}: L'utente ha visualizzato la lista degli \glock{alert} del proprio ente. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Membro, Moderatore ente; + \item \textbf{descrizione:} l'utente può visualizzare il nome del sensore e la soglia degli \glock{alert} appartenenti al proprio ente; + \item \textbf{precondizione:} l'utente naviga all'interno della gestione \glock{alert}; + \item \textbf{postcondizione:} l'utente ha visualizzato la lista degli \glock{alert} del proprio ente; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente visualizza la lista degli \glock{alert} del proprio ente.} + \item{l'utente visualizza la lista degli \glock{alert} del proprio ente.} \end{enumerate} \end{itemize} \subsubsection{UC 8.2 - Inserimento alert ente} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente può inserire un nuovo \glock{alert} per il proprio ente. - \item \textbf{Precondizione}: L'utente naviga all'interno della gestione \glock{alert}. - \item \textbf{Postcondizione}: L'utente ha inserito un nuovo \glock{alert} per gli utenti appartenenti al proprio ente. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente può inserire un nuovo \glock{alert} per il proprio ente; + \item \textbf{precondizione:} l'utente naviga all'interno della gestione \glock{alert}; + \item \textbf{postcondizione:} l'utente ha inserito un nuovo \glock{alert} per gli utenti appartenenti al proprio ente; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila i campi con i dati dell'\glock{alert} da inserire;} - \item L'utente seleziona un sensore tra quelli disponibile su cui eseguire il controllo (UC 8.2.1); - \item L'utente inserisce una soglia da controllare per il sensore (UC 8.2.2); - \item{L'utente ha inserito un nuovo \glock{alert} per gli utenti appartenenti al proprio ente.} + \item{l'utente compila i campi con i dati dell'\glock{alert} da inserire;} + \item l'utente seleziona un sensore tra quelli disponibile su cui eseguire il controllo (UC 8.2.1); + \item l'utente inserisce una soglia da controllare per il sensore (UC 8.2.2); + \item{l'utente ha inserito un nuovo \glock{alert} per gli utenti appartenenti al proprio ente;} \end{enumerate} - \item \textbf{Estensioni}: + \item \textbf{estensioni:} \begin{itemize} - \item L'utente inserisce dei valori soglia non validi (UC 8.4). + \item l'utente inserisce dei valori soglia non validi (UC 8.4). \end{itemize} \end{itemize} \paragraph{UC 8.2.1 - Selezione sensore per nuovo alert} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente compila un campo per l'inserimento di un nuovo \glock{alert} e in particolare seleziona un sensore su cui eseguire il controllo. - \item \textbf{Precondizione}: L'utente sta inserendo i dati per un nuovo \glock{alert}. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente compila un campo per l'inserimento di un nuovo \glock{alert} e in particolare seleziona un sensore su cui eseguire il controllo; + \item \textbf{precondizione:} l'utente sta inserendo i dati per un nuovo \glock{alert}; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona il sensore disponibile da verificare tra un elenco di quelli disponibili.} + \item{l'utente seleziona il sensore disponibile da verificare tra un elenco di quelli disponibili.} \end{enumerate} \end{itemize} \paragraph{UC 8.2.2 - Inserimento soglia per nuovo alert} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente compila un campo per l'inserimento di un nuovo \glock{alert} e in particolare seleziona la soglia da controllare. - \item \textbf{Precondizione}: L'utente sta inserendo i dati per un nuovo \glock{alert}. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente compila un campo per l'inserimento di un nuovo \glock{alert} e in particolare seleziona la soglia da controllare; + \item \textbf{precondizione:} l'utente sta inserendo i dati per un nuovo \glock{alert}; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente inserisce la soglia del sensore da verificare.} + \item{l'utente inserisce la soglia del sensore da verificare.} \end{enumerate} \end{itemize} \subsubsection{UC 8.3 - Rimozione alert ente} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente può rimuovere un \glock{alert} selezionandolo dalla lista degli \glock{alert} attivi del proprio ente. - \item \textbf{Precondizione}: L'utente naviga all'interno della gestione \glock{alert} e ha disponibile almeno un alert. - \item \textbf{Postcondizione}: L'utente ha rimosso l'\glock{alert} selezionato del proprio ente dal sistema. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente può rimuovere un \glock{alert} selezionandolo dalla lista degli \glock{alert} attivi del proprio ente; + \item \textbf{precondizione:} l'utente naviga all'interno della gestione \glock{alert} e ha disponibile almeno un alert; + \item \textbf{postcondizione:} l'utente ha rimosso l'\glock{alert} selezionato del proprio ente dal sistema; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona un \glock{alert} dalla lista degli \glock{alert} del proprio ente e lo rimuove;} - \item{L'utente non visualizza più l'\glock{alert} selezionato.} + \item{l'utente seleziona un \glock{alert} dalla lista degli \glock{alert} del proprio ente e lo rimuove;} + \item{l'utente non visualizza più l'\glock{alert} selezionato.} \end{enumerate} \end{itemize} \subsubsection{UC 8.4 - Errore valore soglia} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: Dopo aver premuto il bottone per confermare i campi inseriti, viene visualizzato il messaggio di errore che segnala un valore soglia non valido. - \item \textbf{Precondizione}: L'utente ha inserito i campi richiesti e il sistema sta elaborando la richiesta. - \item \textbf{Postcondizione}: Visualizzazione messaggio di errore specifico. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} dopo aver premuto il bottone per confermare i campi inseriti, viene visualizzato il messaggio di errore che segnala un valore soglia non valido; + \item \textbf{precondizione:} l'utente ha inserito i campi richiesti e il sistema sta elaborando la richiesta; + \item \textbf{postcondizione:} visualizzazione messaggio di errore specifico; + \item \textbf{scenario principale:} \begin{enumerate} - \item{Il sistema elabora la richiesta;} - \item{Viene visualizzato il messaggio di errore che spiega che il valore soglia inserito per un \glock{alert} non è valido. } + \item{il sistema elabora la richiesta;} + \item{viene visualizzato il messaggio di errore che spiega che il valore soglia inserito per un \glock{alert} non è valido.} \end{enumerate} \end{itemize} \subsubsection{UC 8.5 - Modifica alert ente} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente può modificare \glock{alert} esistente per il proprio ente. - \item \textbf{Precondizione}: L'utente naviga all'interno della gestione \glock{alert}. - \item \textbf{Postcondizione}: L'utente ha inserito un nuovo \glock{alert} per gli utenti appartenenti al proprio ente. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente può modificare \glock{alert} esistente per il proprio ente; + \item \textbf{precondizione:} l'utente naviga all'interno della gestione \glock{alert}; + \item \textbf{postcondizione:} l'utente ha inserito un nuovo \glock{alert} per gli utenti appartenenti al proprio ente; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila i campi con i dati dell'\glock{alert} da inserire;} - \item L'utente modifica la soglia da controllare per il sensore (UC 8.5.1); - \item{L'utente ha inserito un nuovo \glock{alert} per gli utenti appartenenti al proprio ente.} + \item{l'utente compila i campi con i dati dell'\glock{alert} da inserire;} + \item l'utente modifica la soglia da controllare per il sensore (UC 8.5.1); + \item{l'utente ha inserito un nuovo \glock{alert} per gli utenti appartenenti al proprio ente;} \end{enumerate} - \item \textbf{Estensioni}: + \item \textbf{estensioni:} \begin{itemize} - \item L'utente inserisce dei valori soglia non validi (UC 8.4). + \item l'utente inserisce dei valori soglia non validi (UC 8.4). \end{itemize} \end{itemize} \paragraph{UC 8.5.1 - Modifica soglia per alert} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente compila un campo per la modifica di un \glock{alert} e in particolare inserisce la soglia da controllare. - \item \textbf{Precondizione}: L'utente sta inserendo i dati per modificare un \glock{alert}. - \item \textbf{Postcondizione}: L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente compila un campo per la modifica di un \glock{alert} e in particolare inserisce la soglia da controllare; + \item \textbf{precondizione:} l'utente sta inserendo i dati per modificare un \glock{alert}; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente inserisce la soglia del sensore da verificare.} + \item{l'utente inserisce la soglia del sensore da verificare.} \end{enumerate} \end{itemize} \ No newline at end of file diff --git a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex index 9f2387f..09cac9f 100644 --- a/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex +++ b/esterni/analisi_requisiti/res/sections/Sez4-ClassificazioneRequisiti/ClassificazioneRequisiti.tex @@ -20,7 +20,7 @@ \section{Requisiti} % Le API devono inviare o ricevere dati sui o dai topic di kafka. OK - \subsection{Requisiti Funzionali} + \subsection{Requisiti funzionali} \begin{center} \rowcolors{2}{white}{lightest-grayest} @@ -41,7 +41,7 @@ \section{Requisiti} \sreq{A}{F}{1.2} & L'utente deve poter ricevere un codice di autenticazione a due fattori tramite \glock{Telegram} & UC1.3.3, Interna, VE\_2020-01-03\_8.3 \autism \req{A}{F}{2} & L'utente autenticato deve avere accesso alla web app e deve poter navigare al suo interno & UC1.4 \autism % dashboard - \req{A}{F}{3} & L'utente autenticato deve avere accesso a una Dashboard & UC2 \autism + \req{A}{F}{3} & L'utente autenticato deve avere accesso a una dashboard & UC2 \autism \sreq{A}{F}{3.1} & La dashboard deve mettere a disposizione le informazioni dell'utente autenticato & UC2 \autism \sreq{A}{F}{3.2} & La dashboard deve mettere a disposizione i contatti di supporto tecnico & UC2 \autism \sreq{B}{F}{3.3} & La dashboard deve mettere a disposizione le statistiche generali del sistema & UC2 \autism @@ -153,9 +153,9 @@ \section{Requisiti} \req{A}{F}{68} & La base di dati si deve interfacciare con \glock{Kafka} per la scrittura e lettura dei dati & Capitolato \autism \req{A}{F}{69} & I \glock{Gateway} comunicano con \glock{Kafka} tramite \glock{topic} con il modello \glock{Producer-Consumer} & Capitolato \autism \req{A}{F}{70} & I dispositivi comunicano con i \glock{Gateway} i dati da inviare & Capitolato \autism - \req{A}{F}{71} & La web app deve essere accessibile da browser a tutte le sue funzioni nelle modalità Desktop e Tablet & Capitolato \autism - \sreq{A}{F}{71.1} & La web app deve permettere di vedere grafici e dati da browser in modalità Mobile & Capitolato \autism - \sreq{B}{F}{71.2} & La web app deve permettere di compilare moduli interni da browser in modalità Mobile & Capitolato \autism + \req{A}{F}{71} & La web app deve essere accessibile da browser a tutte le sue funzioni nelle modalità desktop e tablet & Capitolato \autism + \sreq{A}{F}{71.1} & La web app deve permettere di vedere grafici e dati da browser in modalità mobile & Capitolato \autism + \sreq{B}{F}{71.2} & La web app deve permettere di compilare moduli interni da browser in modalità mobile & Capitolato \autism \caption{Requisiti funzionali con le relative descrizioni e le relative fonti} @@ -163,7 +163,7 @@ \section{Requisiti} \end{center} - \subsection{Requisiti Prestazionali} + \subsection{Requisiti prestazionali} \begin{center} \rowcolors{2}{white}{lightest-grayest} @@ -188,7 +188,7 @@ \section{Requisiti} \end{longtable} \end{center} - \subsection{Requisiti di Qualità} + \subsection{Requisiti di qualità} \begin{center} \rowcolors{2}{white}{lightest-grayest} @@ -223,7 +223,7 @@ \section{Requisiti} \end{center} - \subsection{Requisiti di Vincolo} + \subsection{Requisiti di vincolo} \begin{center} \rowcolors{2}{lightest-grayest}{white} From 34164bec839b9a9ee133dac90781a3c36c9bfdb2 Mon Sep 17 00:00:00 2001 From: Lorenzo Dei Negri Date: Sun, 16 Feb 2020 17:40:17 +0100 Subject: [PATCH 25/26] Fix maiuscole Fix maiuscole Fix elenchi Fix minori --- .../res/sections/Sez3-CasiDUso/CasiDUso.tex | 207 +++++++------ .../res/sections/Sez3-CasiDUso/uc11.tex | 284 +++++++++--------- 2 files changed, 245 insertions(+), 246 deletions(-) diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex index 1162951..c68bf8a 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/CasiDUso.tex @@ -31,32 +31,32 @@ \section{Casi d'uso} \subsection{UC 2 - Visualizzazione dashboard} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente ha eseguito l'autenticazione e vuole visualizzare una dashboard con all'interno le proprie informazioni account: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente ha eseguito l'autenticazione e vuole visualizzare una dashboard con all'interno le proprie informazioni account: \begin{itemize} \item avatar; \item nome; \item cognome; \item mail; \item ente di appartenenza; - \item indirizzo IP. + \item indirizzo IP; \end{itemize} - Alcune statistiche del sito: - \begin{itemize} - \item utenti attivi nel sistema; - \item utenti attivi appartenenti al proprio ente; + alcune statistiche del sito: + \begin{itemize} + \item utenti attivi nel sistema; + \item utenti attivi appartenenti al proprio ente; \item numero totale di utenti nel sistema; \item numero totale di utenti nel proprio ente; \item dispositivi censiti nel sistema; \item dispositivi censiti nel proprio ente; - \item numero totale di enti. - \end{itemize} - Una descrizione con i contatti per il supporto tecnico. - \item \textbf{Precondizione}: L'utente è autenticato nella web app. - \item \textbf{Postcondizione}: L'utente visualizza la dashboard con le proprie informazioni. - \item \textbf{Scenario Principale}: + \item numero totale di enti; + \end{itemize} + una descrizione con i contatti per il supporto tecnico; + \item \textbf{precondizione:} l'utente è autenticato nella web app; + \item \textbf{postcondizione:} l'utente visualizza la dashboard con le proprie informazioni; + \item \textbf{scenario principale:} \begin{enumerate} - \item Nella web app, l'utente può navigare per giungere alla visualizzazione della dashboard. + \item nella web app, l'utente può navigare per giungere alla visualizzazione della dashboard. \end{enumerate} \end{itemize} @@ -65,14 +65,14 @@ \section{Casi d'uso} \subsection{UC 3 - Logout} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente vuole eseguire l'uscita dalla web app. - \item \textbf{Precondizione}: L'utente risulta essere autenticato nella web app. - \item \textbf{Postcondizione}: L'utente non è più autenticato nella web app. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente vuole eseguire l'uscita dalla web app; + \item \textbf{precondizione:} l'utente risulta essere autenticato nella web app; + \item \textbf{postcondizione:} l'utente non è più autenticato nella web app; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente effettua il logout; - \item L'utente ritorna alla schermata di autenticazione per l'accesso alla web app. + \item l'utente effettua il logout; + \item l'utente ritorna alla schermata di autenticazione per l'accesso alla web app. \end{enumerate} \end{itemize} @@ -108,20 +108,20 @@ \section{Casi d'uso} \subsection{UC 9 - Ente - Visualizzazione logs membri} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: Il moderatore ente intende visualizzare le logs composte da nome, cognome, azione, data-ora ed indirizzo IP dei membri appartenenti al proprio ente. - \item \textbf{Precondizione}: L'utente è autenticato e fa parte di un ente in qualità di moderatore ente. - \item \textbf{Postcondizione}: L'utente visualizza i logs relativi agli utenti appartenenti al proprio ente. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} il moderatore ente intende visualizzare le logs composte da nome, cognome, azione, data-ora ed indirizzo IP dei membri appartenenti al proprio ente; + \item \textbf{precondizione:} l'utente è autenticato e fa parte di un ente in qualità di moderatore ente; + \item \textbf{postcondizione:} l'utente visualizza i logs relativi agli utenti appartenenti al proprio ente; + \item \textbf{scenario principale:} \begin{enumerate} - \item Nella web app, l'utente può navigare per giungere alla visualizzazione logs dei membri del proprio ente. + \item nella web app, l'utente può navigare per giungere alla visualizzazione logs dei membri del proprio ente. \end{enumerate} \end{itemize} \subsection{UC 9.1 - Visualizzazione informazioni log membro} \begin{itemize} - \item \textbf{Attori Primari}: Moderatore ente. - \item \textbf{Descrizione}: L'utente visualizza una entry composta da nome, cognome, azione, data-ora ed indirizzo IP di un membro appartenente al proprio ente. Le azioni sotto audit sono le seguenti: + \item \textbf{attori primari:} Moderatore ente; + \item \textbf{descrizione:} l'utente visualizza una entry composta da nome, cognome, azione, data-ora ed indirizzo IP di un membro appartenente al proprio ente. Le azioni sotto audit sono le seguenti: \begin{itemize} \item login ed ID utente; @@ -129,14 +129,14 @@ \section{Casi d'uso} \item modifica impostazioni ed ID utente; \item modifica password ed ID utente; \item ricezione codice Telegram ed ID utente; - \item modifica notifiche alert ed ID utente. + \item modifica notifiche alert ed ID utente; \end{itemize} - \item \textbf{Precondizione}: L'utente è autenticato e fa parte di un ente in qualità di moderatore ente. - \item \textbf{Postcondizione}: L'utente visualizza le informazioni relative ad un log di un membro. - \item \textbf{Scenario Principale}: + \item \textbf{precondizione:} l'utente è autenticato e fa parte di un ente in qualità di moderatore ente; + \item \textbf{postcondizione:} l'utente visualizza le informazioni relative ad un log di un membro; + \item \textbf{scenario principale:} \begin{enumerate} - \item Nella web app, l'utente può navigare per giungere alla visualizzazione di un log di un membro del proprio ente. + \item nella web app, l'utente può navigare per giungere alla visualizzazione di un log di un membro del proprio ente. \end{enumerate} \end{itemize} % ================= @@ -161,21 +161,20 @@ \section{Casi d'uso} \subsection{UC 13 - Amministrazione - Visualizzazione logs utenti} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'amministratore vuole visualizzare le logs composte da nome, cognome, mail, azione, data-ora, indirizzo IP, ente e rank degli utenti presenti all'interno del sistema. - \item \textbf{Precondizione}: L'utente è autenticato in qualità di amministratore. - \item \textbf{Postcondizione}: L'utente visualizza la lista delle logs di tutti gli utenti del sistema. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'amministratore vuole visualizzare le logs composte da nome, cognome, mail, azione, data-ora, indirizzo IP, ente e rank degli utenti presenti all'interno del sistema; + \item \textbf{precondizione:} l'utente è autenticato in qualità di amministratore; + \item \textbf{postcondizione:} l'utente visualizza la lista delle logs di tutti gli utenti del sistema; + \item \textbf{scenario principale:} \begin{enumerate} - \item Nella web app, l'utente può navigare per giungere alla visualizzazione logs utenti. + \item nella web app, l'utente può navigare per giungere alla visualizzazione logs utenti. \end{enumerate} \end{itemize} \subsection{UC 13.1 - Amministrazione - Visualizzazione informazioni log utente} \begin{itemize} - \item \textbf{Attori Primari}: Amministratore. - \item \textbf{Descrizione}: L'utente visualizza una entry composta da nome, cognome, azione, data-ora, indirizzo IP, ente e rank degli utenti presenti all'interno del sistema. - Le azioni sotto audit sono le seguenti: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente visualizza una entry composta da nome, cognome, azione, data-ora, indirizzo IP, ente e rank degli utenti presenti all'interno del sistema. Le azioni sotto audit sono le seguenti: \begin{itemize} \item login ed ID utente; @@ -199,14 +198,14 @@ \section{Casi d'uso} \item modifica dispositivo ed ID dispositivo; \item rimozione dispositivo ed ID dispositivo; \item modifica sensori ente ed ID ente; - \item invio input Telegram ed ID dispositivo. + \item invio input Telegram ed ID dispositivo; \end{itemize} - \item \textbf{Precondizione}: L'utente è autenticato in qualità di amministratore. - \item \textbf{Postcondizione}: L'utente visualizza le informazioni relative ad un log di un utente del sistema. - \item \textbf{Scenario Principale}: + \item \textbf{precondizione:} l'utente è autenticato in qualità di amministratore; + \item \textbf{postcondizione:} l'utente visualizza le informazioni relative ad un log di un utente del sistema; + \item \textbf{scenario principale:} \begin{enumerate} - \item Nella web app, l'utente può navigare per giungere alla visualizzazione di un log di un utente. + \item nella web app, l'utente può navigare per giungere alla visualizzazione di un log di un utente. \end{enumerate} \end{itemize} @@ -231,15 +230,15 @@ \section{Casi d'uso} \subsection{UC 17 - Visualizzazione errore: email e/o password sbagliati} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Descrizione}: Dopo aver tentato di eseguire l'autenticazione nella web app, viene visualizzato un errore che segnala email e/o password errati. - \item \textbf{Precondizione}: L'utente non è autenticato nella web app e sta tentando di autenticarsi. - \item \textbf{Postcondizione}: L'utente rimane non autenticato. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{descrizione:} dopo aver tentato di eseguire l'autenticazione nella web app, viene visualizzato un errore che segnala email e/o password errati; + \item \textbf{precondizione:} l'utente non è autenticato nella web app e sta tentando di autenticarsi; + \item \textbf{postcondizione:} l'utente rimane non autenticato; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente ha inserito le credenziali richieste; - \item Il sistema verifica le credenziali richieste; - \item Viene visualizzato un errore che segnala email e/o password errati. + \item l'utente ha inserito le credenziali richieste; + \item il sistema verifica le credenziali richieste; + \item viene visualizzato un errore che segnala email e/o password errati. \end{enumerate} \end{itemize} @@ -248,15 +247,15 @@ \section{Casi d'uso} \subsection{UC 18 - Visualizzazione errore: account non autorizzato} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Descrizione}: Dopo aver tentato di eseguire l'autenticazione nella web app, viene visualizzato un errore che segnala che l'account con cui si sta tentando di accedere risulta essere disattivato, pertanto l'utente non è autorizzato ad accedere alla web app. - \item \textbf{Precondizione}: L'utente non è autenticato nella web app e sta tentando di autenticarsi. - \item \textbf{Postcondizione}: L'utente rimane non autenticato. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{descrizione:} dopo aver tentato di eseguire l'autenticazione nella web app, viene visualizzato un errore che segnala che l'account con cui si sta tentando di accedere risulta essere disattivato, pertanto l'utente non è autorizzato ad accedere alla web app; + \item \textbf{precondizione:} l'utente non è autenticato nella web app e sta tentando di autenticarsi; + \item \textbf{postcondizione:} l'utente rimane non autenticato; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente ha inserito le credenziali richieste; - \item Il sistema verifica le credenziali richieste; - \item Viene visualizzato il messaggio di errore che segnala l'errore di account non autorizzato; + \item l'utente ha inserito le credenziali richieste; + \item il sistema verifica le credenziali richieste; + \item viene visualizzato il messaggio di errore che segnala l'errore di account non autorizzato. \end{enumerate} \end{itemize} @@ -265,15 +264,15 @@ \section{Casi d'uso} \subsection{UC 19 - Visualizzazione errore: codice di autenticazione a due fattori errato} \begin{itemize} - \item \textbf{Attori Primari}: Utente non autenticato. - \item \textbf{Descrizione}: Dopo aver tentato di eseguire l'autenticazione, viene visualizzato un errore che segnala che il codice di autenticazione a due fattori inserito è errato. - \item \textbf{Precondizione}: L'utente non è autenticato nella web app e sta tentando di autenticarsi. - \item \textbf{Postcondizione}: L'utente rimane non autenticato. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente non autenticato; + \item \textbf{descrizione:} dopo aver tentato di eseguire l'autenticazione, viene visualizzato un errore che segnala che il codice di autenticazione a due fattori inserito è errato; + \item \textbf{precondizione:} l'utente non è autenticato nella web app e sta tentando di autenticarsi; + \item \textbf{postcondizione:} l'utente rimane non autenticato; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente ha inserito le credenziali richieste; - \item Il sistema verifica le credenziali richieste; - \item Viene visualizzato il messaggio di errore che segnala codice errato; + \item l'utente ha inserito le credenziali richieste; + \item il sistema verifica le credenziali richieste; + \item viene visualizzato il messaggio di errore che segnala codice errato. \end{enumerate} \end{itemize} @@ -283,15 +282,15 @@ \section{Casi d'uso} \subsection{UC 20 - Nessuna risposta dopo una interazione con Telegram} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato, Utente non autenticato. - \item \textbf{Attori Secondari}: Telegram. - \item \textbf{Descrizione}: L'utente, dopo aver eseguito una interazione con il bot \glock{Telegram}, non visualizza nessuna risposta di ritorno che si attendeva. - \item \textbf{Precondizione}: L'utente ha eseguito una interazione con \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente non riesce a portare a termine la sua interazione e non visualizza alcun risultato. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato, Utente non autenticato; + \item \textbf{attori secondari:} \glock{Telegram}; + \item \textbf{descrizione:} l'utente, dopo aver eseguito una interazione con il bot \glock{Telegram}, non visualizza nessuna risposta di ritorno che si attendeva; + \item \textbf{precondizione:} l'utente ha eseguito una interazione con \glock{Telegram}; + \item \textbf{postcondizione:} l'utente non riesce a portare a termine la sua interazione e non visualizza alcun risultato; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente ha tentato di eseguire una interazione su \glock{Telegram}; - \item L'utente non visualizza nessuna risposta di ritorno. + \item l'utente ha tentato di eseguire una interazione su \glock{Telegram}; + \item l'utente non visualizza nessuna risposta di ritorno. \end{enumerate} \end{itemize} @@ -301,15 +300,15 @@ \section{Casi d'uso} \subsection{UC 21 - Visualizzazione errore: email non valida} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente ha compilato un campo per l'email, ma l'email è già censita nel sistema, oppure è in un formato non corretto. - \item \textbf{Precondizione}: L'utente ha compilato il campo per l'email. - \item \textbf{Postcondizione}: L'utente visualizza un messaggio di errore specifico e non porta a termine l'azione. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente ha compilato un campo per l'email, ma l'email è già censita nel sistema, oppure è in un formato non corretto; + \item \textbf{precondizione:} l'utente ha compilato il campo per l'email; + \item \textbf{postcondizione:} l'utente visualizza un messaggio di errore specifico e non porta a termine l'azione; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente ha inserito il campo per la email; - \item Il sistema elabora la richiesta; - \item Viene visualizzato un errore che segnala che l'email non è valida. + \item l'utente ha inserito il campo per la email; + \item il sistema elabora la richiesta; + \item viene visualizzato un errore che segnala che l'email non è valida. \end{enumerate} \end{itemize} @@ -318,15 +317,15 @@ \section{Casi d'uso} \subsection{UC 22 - Visualizzazione errore: username Telegram non valido} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente ha compilato un campo per l'username di \glock{Telegram}, ma lo username inserito o è già censito nel sistema, oppure è in un formato non corretto. - \item \textbf{Precondizione}: L'utente ha compilato il campo per lo username di \glock{Telegram}. - \item \textbf{Postcondizione}: L'utente visualizza un messaggio di errore specifico e non porta a termine l'azione. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente ha compilato un campo per l'username di \glock{Telegram}, ma lo username inserito è già censito nel sistema, oppure è in un formato non corretto; + \item \textbf{precondizione:} l'utente ha compilato il campo per lo username di \glock{Telegram}; + \item \textbf{postcondizione:} l'utente visualizza un messaggio di errore specifico e non porta a termine l'azione; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente ha inserito il campo per lo username \glock{Telegram}; - \item Il sistema elabora la richiesta; - \item Viene visualizzato un errore che segnala che lo username \glock{Telegram} non è valido. + \item l'utente ha inserito il campo per lo username \glock{Telegram}; + \item il sistema elabora la richiesta; + \item viene visualizzato un errore che segnala che lo username \glock{Telegram} non è valido. \end{enumerate} \end{itemize} @@ -336,14 +335,14 @@ \section{Casi d'uso} \subsection{UC 23 - Visualizzazione errore: formato nome o cognome non valido} \begin{itemize} - \item \textbf{Attori Primari}: Utente autenticato. - \item \textbf{Descrizione}: L'utente ha compilato i campi per il nome o per il cognome, ma il formato di uno di questi due non è valido. - \item \textbf{Precondizione}: L'utente ha compilato il campo per il nome e per il cognome. - \item \textbf{Postcondizione}: L'utente visualizza un messaggio di errore specifico e non porta a termine l'azione. - \item \textbf{Scenario Principale}: + \item \textbf{attori primari:} Utente autenticato; + \item \textbf{descrizione:} l'utente ha compilato i campi per il nome o per il cognome, ma il formato di uno di questi due non è valido; + \item \textbf{precondizione:} l'utente ha compilato il campo per il nome e per il cognome; + \item \textbf{postcondizione:} l'utente visualizza un messaggio di errore specifico e non porta a termine l'azione; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente ha inserito il campo il nome e per il cognome; - \item Il sistema elabora la richiesta; - \item Viene visualizzato un errore che segnala che il formato di nome o cognome non sono validi. + \item l'utente ha inserito il campo il nome e per il cognome; + \item il sistema elabora la richiesta; + \item viene visualizzato un errore che segnala che il formato di nome o cognome non sono validi. \end{enumerate} \end{itemize} \ No newline at end of file diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex index f7cd4e3..3e0a9e8 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc11.tex @@ -7,244 +7,244 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \end{figure} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente può navigare nell'area gestionale di tutti gli utenti del sistema. Può visualizzare e gestire questi utenti. - \item \textbf{Precondizione:} L'utente risulta autenticato nella web app e naviga nella gestione utenti per amministratori. - \item \textbf{Postcondizione:} L'utente ha visualizzato o gestito gli utenti all'interno del sistema. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente può navigare nell'area gestionale di tutti gli utenti del sistema. Può visualizzare e gestire questi utenti; + \item \textbf{precondizione:} l'utente risulta autenticato nella web app e naviga nella gestione utenti per amministratori; + \item \textbf{postcondizione:} l'utente ha visualizzato o gestito gli utenti all'interno del sistema; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente visualizza o gestisce gli utenti censiti dal sistema} + \item{l'utente visualizza o gestisce gli utenti censiti dal sistema.} \end{enumerate} \end{itemize} \subsubsection{UC 11.1 - Visualizzazione lista utenti completa} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente può visualizzare una lista con nome, cognome, mail ed ente di appartenenza di tutti gli utenti censiti nel sistema. - \item \textbf{Precondizione:} L'utente naviga nella gestione utenti per amministratori. - \item \textbf{Postcondizione:} L'utente visualizza la lista degli utenti registrati al sistema. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente può visualizzare una lista con nome, cognome, mail ed ente di appartenenza di tutti gli utenti censiti nel sistema; + \item \textbf{precondizione:} l'utente naviga nella gestione utenti per amministratori; + \item \textbf{postcondizione:} l'utente visualizza la lista degli utenti registrati al sistema; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente visualizza la lista degli utenti registrati al sistema} + \item{l'utente visualizza la lista degli utenti registrati al sistema.} \end{enumerate} \end{itemize} \subsubsection{UC 11.2 - Creazione nuovo account} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente può creare un nuovo account che viene inserito nel sistema e assegnato a un ente. - \item \textbf{Precondizione:} L'utente naviga nella gestione utenti per amministratori. - \item \textbf{Postcondizione:} L'utente ha creato un nuovo account. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente può creare un nuovo account che viene inserito nel sistema e assegnato a un ente; + \item \textbf{precondizione:} l'utente naviga nella gestione utenti per amministratori; + \item \textbf{postcondizione:} l'utente ha creato un nuovo account; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente deve compilare dei campi con i dati dell'utente da aggiungere;} - \item{L'utente compila il campo per la email;} - \item{L'utente compila il campo per il nome;} - \item{L'utente compila il campo per il cognome;} - \item{L'utente seleziona l'ente a cui assegnare il nuovo account tra quelli disponibili;} - \item{L'utente seleziona la tipologia di utente;} - \item{L'utente ha aggiunto un nuovo utente al sistema.} + \item{l'utente deve compilare dei campi con i dati dell'utente da aggiungere;} + \item{l'utente compila il campo per la email;} + \item{l'utente compila il campo per il nome;} + \item{l'utente compila il campo per il cognome;} + \item{l'utente seleziona l'ente a cui assegnare il nuovo account tra quelli disponibili;} + \item{l'utente seleziona la tipologia di utente;} + \item{l'utente ha aggiunto un nuovo utente al sistema;} \end{enumerate} - \item \textbf{Estensioni:} + \item \textbf{estensioni:} \begin{itemize} - \item L'utente inserisce un email non valida (UC 21) - \item L'utente inserisce un nome o cognome non validi (UC 23) + \item l'utente inserisce un email non valida (UC 21); + \item l'utente inserisce un nome o cognome non validi (UC 23). \end{itemize} \end{itemize} \paragraph{UC 11.2.1 - Inserimento email} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo per la email. Il campo è obbligatorio. - \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. - \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo per la email. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila il campo per la email;} + \item{l'utente compila il campo per la email.} \end{enumerate} \end{itemize} \paragraph{UC 11.2.2 - Inserimento nome} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo per il nome. Il campo è obbligatorio. - \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. - \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo per il nome. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila il campo per il nome;} + \item{l'utente compila il campo per il nome.} \end{enumerate} \end{itemize} \paragraph{UC 11.2.3 - Inserimento cognome} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo per il cognome. Il campo è obbligatorio. - \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. - \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo per il cognome. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila il campo per il cognome;} + \item{l'utente compila il campo per il cognome.} \end{enumerate} \end{itemize} \paragraph{UC 11.2.4 - Selezione ente per il nuovo utente} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo che richiede a quale ente assegnare l'utente, tra quelli disponibili. Il campo è obbligatorio. - \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. - \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo che richiede a quale ente assegnare l'utente, tra quelli disponibili. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona l'ente a cui assegnare il nuovo account tra quelli disponibili;} + \item{l'utente seleziona l'ente a cui assegnare il nuovo account tra quelli disponibili.} \end{enumerate} \end{itemize} \paragraph{UC 11.2.5 - Selezione tipologia utente} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo che richiede a quale tipologia assegnare l'utente. Il campo è obbligatorio. Le tipologie disponibili sono: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta creando un nuovo account che verrà inserito nel sistema e deve compilare un campo che richiede a quale tipologia assegnare l'utente. Il campo è obbligatorio. Le tipologie disponibili sono: \begin{itemize} \item Membro; - \item Moderatore ente. + \item Moderatore ente; \end{itemize} - \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente. - \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale:} + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per l'aggiunta di un nuovo utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona la tipologia di utente per il nuovo account;} + \item{l'utente seleziona la tipologia di utente per il nuovo account.} \end{enumerate} \end{itemize} \subsubsection{UC 11.3 - Visualizzazione profilo utente} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente vuole visualizzare le informazioni del profilo di un utente presente nel sistema, quali: nome, cognome, username Telegram (se presente), opzione di autenticazione a due fattori (attiva o meno) ed ente di appartenenza. - \item \textbf{Precondizione:} L'utente naviga all'interno della gestione utenti. - \item \textbf{Postcondizione:} L'utente ha visualizzato le informazioni dell'utente selezionato. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente vuole visualizzare le informazioni del profilo di un utente presente nel sistema, quali: nome, cognome, username \glock{Telegram} (se presente), opzione di autenticazione a due fattori (attiva o meno) ed ente di appartenenza; + \item \textbf{precondizione:} l'utente naviga all'interno della gestione utenti; + \item \textbf{postcondizione:} l'utente ha visualizzato le informazioni dell'utente selezionato; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona un utente dalla lista degli utenti;} - \item{L'utente visualizza le informazioni dell'utente selezionato.} + \item{l'utente seleziona un utente dalla lista degli utenti;} + \item{l'utente visualizza le informazioni dell'utente selezionato.} \end{enumerate} \end{itemize} \subsubsection{UC 11.4 - Modifica profilo utente} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente modifica il profilo dell'utente selezionato dalla lista degli utenti. - \item \textbf{Precondizione:} L'utente naviga all'interno della gestione utenti. - \item \textbf{Postcondizione:} L'utente ha modificato l'utente selezionato. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente modifica il profilo dell'utente selezionato dalla lista degli utenti; + \item \textbf{precondizione:} l'utente naviga all'interno della gestione utenti; + \item \textbf{postcondizione:} l'utente ha modificato l'utente selezionato; + \item \textbf{scenario principale:} \begin{enumerate} - \item L'utente seleziona un account utente che vuole modificare; - \item L'utente deve compilare alcuni campi per proseguire nella modifica dell'utente selezionato; - \item{L'utente modifica il campo per la email (UC 11.4.1);} - \item{L'utente modifica il campo per il nome (UC 11.4.2);} - \item{L'utente modifica il campo per il cognome (UC 11.4.3);} - \item{L'utente modifica il campo Username \glock{Telegram} (UC 11.4.4);} - \item{L'utente seleziona l'ente a cui assegnare il nuovo account tra quelli disponibili (UC 11.4.5);} - \item{L'utente seleziona la tipologia di utente (UC 11.4.6);} - \item{L'utente seleziona la preferenza per l'autenticazione a due fattori di quell'account (UC 11.4.7);} - \item{L'utente ha compilato tutti i campi e conferma.} + \item l'utente seleziona un account utente che vuole modificare; + \item l'utente deve compilare alcuni campi per proseguire nella modifica dell'utente selezionato; + \item{l'utente modifica il campo per la email (UC 11.4.1);} + \item{l'utente modifica il campo per il nome (UC 11.4.2);} + \item{l'utente modifica il campo per il cognome (UC 11.4.3);} + \item{l'utente modifica il campo username \glock{Telegram} (UC 11.4.4);} + \item{l'utente seleziona l'ente a cui assegnare il nuovo account tra quelli disponibili (UC 11.4.5);} + \item{l'utente seleziona la tipologia di utente (UC 11.4.6);} + \item{l'utente seleziona la preferenza per l'autenticazione a due fattori di quell'account (UC 11.4.7);} + \item{l'utente ha compilato tutti i campi e conferma;} \end{enumerate} - \item \textbf{Estensioni:} + \item \textbf{estensioni:} \begin{itemize} - \item L'utente inserisce una email non valida (UC 21); - \item L'utente inserisce un nome o cognome non validi (UC 23). + \item l'utente inserisce una email non valida (UC 21); + \item l'utente inserisce un nome o cognome non validi (UC 23). \end{itemize} \end{itemize} \paragraph{UC 11.4.1 - Modifica email} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per la email. Il campo è obbligatorio. - \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta modificando un account esistente censito a sistema e deve compilare un campo per la email. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per la modifica di un utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila il campo per la email.} + \item{l'utente compila il campo per la email.} \end{enumerate} \end{itemize} \paragraph{UC 11.4.2 - Modifica nome} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per il nome. Il campo è obbligatorio. - \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta modificando un account esistente censito a sistema e deve compilare un campo per il nome. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per la modifica di un utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila il campo per il nome.} + \item{l'utente compila il campo per il nome.} \end{enumerate} \end{itemize} \paragraph{UC 11.4.3 - Modifica cognome} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per il cognome. Il campo è obbligatorio. - \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta modificando un account esistente censito a sistema e deve compilare un campo per il cognome. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per la modifica di un utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila il campo per il cognome.} + \item{l'utente compila il campo per il cognome.} \end{enumerate} \end{itemize} \paragraph{UC 11.4.4 - Modifica username Telegram} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per lo username \glock{Telegram}. Il campo è obbligatorio. - \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta modificando un account esistente censito a sistema e deve compilare un campo per lo username \glock{Telegram}. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per la modifica di un utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente compila il campo per lo username \glock{Telegram}.} + \item{l'utente compila il campo per lo username \glock{Telegram}.} \end{enumerate} \end{itemize} \paragraph{UC 11.4.5 - Modifica ente di appartenenza} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per assegnare quell'utente a uno degli enti censiti da sistema. Il campo è obbligatorio. - \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta modificando un account esistente censito a sistema e deve compilare un campo per assegnare quell'utente a uno degli enti censiti da sistema. Il campo è obbligatorio; + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per la modifica di un utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona l'ente a cui assegnare il nuovo account tra quelli disponibili.} + \item{l'utente seleziona l'ente a cui assegnare il nuovo account tra quelli disponibili.} \end{enumerate} \end{itemize} \paragraph{UC 11.4.6 - Modifica tipologia di utente} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per assegnare la tipologia di account per un dato utente. Il campo è obbligatorio. Le tipologie disponibili sono: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta modificando un account esistente censito a sistema e deve compilare un campo per assegnare la tipologia di account per un dato utente. Il campo è obbligatorio. Le tipologie disponibili sono: \begin{itemize} \item Membro; - \item Moderatore ente. + \item Moderatore ente; \end{itemize} - \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale:} + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per la modifica di un utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona la tipologia di account da assegnare per un utente in base a quelli disponibili.} + \item{l'utente seleziona la tipologia di account da assegnare per un utente in base a quelli disponibili.} \end{enumerate} \end{itemize} \paragraph{UC 11.4.7 - Modifica preferenza per l'autenticazione a due fattori} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente sta modificando un account esistente censito a sistema e deve compilare un campo per la preferenza di attivazione dell'autenticazione a due fattori con \glock{Telegram}. Il campo è obbligatorio. Le preferenze disponibili sono: + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente sta modificando un account esistente censito a sistema e deve compilare un campo per la preferenza di attivazione dell'autenticazione a due fattori con \glock{Telegram}. Il campo è obbligatorio. Le preferenze disponibili sono: \begin{itemize} - \item Abilitata; - \item Disabilitata. + \item abilitata; + \item disabilitata; \end{itemize} - \item \textbf{Precondizione:} L'utente sta compilando i campi richiesti per la modifica di un utente. - \item \textbf{Postcondizione:} L'utente ha compilato il campo richiesto. - \item \textbf{Scenario Principale:} + \item \textbf{precondizione:} l'utente sta compilando i campi richiesti per la modifica di un utente; + \item \textbf{postcondizione:} l'utente ha compilato il campo richiesto; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona la preferenza per l'autenticazione a due fattori.} + \item{l'utente seleziona la preferenza per l'autenticazione a due fattori.} \end{enumerate} \end{itemize} @@ -252,28 +252,28 @@ \subsection{UC 11 - Amministrazione - Gestione utenti} \subsubsection{UC 11.5 - Reset password account} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente vuole resettare la password di un account utente censito nel sistema. - \item \textbf{Precondizione:} L'utente naviga all'interno della gestione utenti per l'amministrazione. - \item \textbf{Postcondizione:} L'utente ha resettato la password dell'account selezionato. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente vuole resettare la password di un account utente censito nel sistema; + \item \textbf{precondizione:} l'utente naviga all'interno della gestione utenti per l'amministrazione; + \item \textbf{postcondizione:} l'utente ha resettato la password dell'account selezionato; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona un utente diverso tra quelli disponibili cui vuole resettare la password;} - \item{L'utente ha resettato la password all'utente di sistema.} + \item{l'utente seleziona un utente diverso tra quelli disponibili cui vuole resettare la password;} + \item{l'utente ha resettato la password all'utente di sistema.} \end{enumerate} \end{itemize} \subsubsection{UC 11.6 - Disattivazione utente} \begin{itemize} - \item \textbf{Attori Primari:} Amministratore. - \item \textbf{Descrizione:} L'utente vuole disattivare l'account di un utente attualmente attivo. - \item \textbf{Precondizione:} L'utente naviga all'interno della gestione utenti per l'amministrazione. - \item \textbf{Postcondizione:} L'utente ha disattivato l'account dell'utente selezionato. - \item \textbf{Scenario Principale:} + \item \textbf{attori primari:} Amministratore; + \item \textbf{descrizione:} l'utente vuole disattivare l'account di un utente attualmente attivo; + \item \textbf{precondizione:} l'utente naviga all'interno della gestione utenti per l'amministrazione; + \item \textbf{postcondizione:} l'utente ha disattivato l'account dell'utente selezionato; + \item \textbf{scenario principale:} \begin{enumerate} - \item{L'utente seleziona un utente tra quelli disponibili da disattivare;} - \item{L'utente ha disattivato l'utente dal sistema.} + \item{l'utente seleziona un utente tra quelli disponibili da disattivare;} + \item{l'utente ha disattivato l'utente dal sistema.} \end{enumerate} \end{itemize} From 77a7854d927e599cabe3d05454ecf2e1962f61a4 Mon Sep 17 00:00:00 2001 From: Lorenzo Dei Negri Date: Fri, 21 Feb 2020 17:06:33 +0100 Subject: [PATCH 26/26] Fix UC16 --- .gitignore | 1 + .../res/sections/Sez3-CasiDUso/uc16.tex | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 9fd2e0d..c4160ae 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ *.out *.sublime-workspace *.pdf +*.lot diff --git a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex index 5fded59..4c721b5 100644 --- a/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex +++ b/esterni/analisi_requisiti/res/sections/Sez3-CasiDUso/uc16.tex @@ -32,9 +32,12 @@ \subsection{UC16 - Telegram - Interazioni} \item l'utente esegue una interazione con \glock{Telegram}; \item l'utente riceve dei messaggi di risposta da parte del \glock{bot} di \glock{Telegram}; \end{enumerate} - \item \textbf{estensioni:} + \item \textbf{specializzazioni:} \begin{itemize} - \item Nessuna risposta dopo una interazione con Telegram (UC 20). + \item Comando di inizio (UC16.2); + \item Comando per le informazioni (UC16.3); + \item Comando per l'aiuto (UC16.4); + \item Comando di interazione con i dispositivi (UC16.5). \end{itemize} \end{itemize} @@ -117,6 +120,17 @@ \subsection{UC16 - Telegram - Interazioni} \begin{enumerate} \item l'utente riceve un messaggio dal \glock{bot} di \glock{Telegram}. \end{enumerate} + \item \textbf{estensioni:} + \begin{itemize} + \item Nessuna risposta dopo una interazione con Telegram (UC 20); + \end{itemize} + \item \textbf{specializzazioni:} + \begin{itemize} + \item Visualizzazione risposta comando di inizio (UC16.7); + \item Visualizzazione risposta comando informazioni (UC16.8); + \item Visualizzazione risposta comando d'aiuto (UC16.9); + \item Visualizzazione risposta interazione dispositivi (UC16.10). + \end{itemize} \end{itemize} \subsubsection{UC 16.7 - Visualizzazione risposta comando di inizio }